ANY數(shù)據(jù)類型及參數(shù)傳遞
ANY是一種用于傳遞指針的形參數(shù)據(jù)類型,可視為POINTE R 類型的擴展,較POINTER 類型為復雜,長度為10個字節(jié),增加的4 字節(jié),最高字節(jié) (Byte 0) 固定為B#16#10,第二字節(jié) (Byte 1) 為ANY指針所指向區(qū)域的數(shù)據(jù)類型,而接下來的2 字節(jié) (BYTE 3, 4) 組合為一個INT ,為ANY指針所指定區(qū)域的長度,稱為重復系數(shù) (Rep etition factor) 。其余6 字節(jié)作用與POINTE R 類型相同。
編程舉例:
// 冒泡排序程序,算法原理請參考相關資料
// 此例程僅提供存于DB塊中的INT 類型數(shù)據(jù)排序
// 結(jié)果為INT 數(shù)據(jù)由小到大排列,保存于原DB塊中
//FC3 塊,形參定義如下:
// 輸入?yún)?shù)Dat a(A ny 類型);輸出參數(shù)Error(INT類型)
// 若輸出參數(shù)Error不為0, 則說明排序未進行,
//Error = 1, D ata(ANY 類型)輸入指針無效
//Error = 2, D ata(ANY 類型)輸入指針地址非DB地址
//Error = 3, D ata(ANY 類型)輸入指針指定區(qū)域類型非INT 類型
SET
SAVE
L 0
T #Err or
// 將輸入ANY 指針‘Data_ In’復制到LB0~LB9
L D [ AR1,P#0.0]
T LD 0
L D [ AR1,P#4.0]
T LD 4
L W [ AR1,P#8.0]
T LW 8
//ANY 指針 BYTE0 是B#1 6#10
L LB 0
L B#16#10
==I
JCN ERR1
// 輸入數(shù)據(jù)區(qū)是否為DB塊
L LB 6
L B#16#84
==I
JCN ERR2
// 類型為INT
L LB 1
L B#16#5
==I
JCN ERR3
// 打開輸入DB塊
OPN DB [LW 4]
// 數(shù)據(jù)起始地址去掉數(shù)據(jù)區(qū)標識部分
L LD 6
L DW#16#FFFFFF
T LD 10
// 計算最后一個存儲單元指針保存至LD10
L LW 2
L 2
*I
T LD 14
L L#2
-D
SLD 3
L LD 10
+D
T LD 10
// 外循環(huán)計數(shù)LW20 ,循環(huán)次數(shù)為(數(shù)據(jù)個數(shù)-1)次
L LW 2
L 1
-I
NXT2: T L W 20
L LD 10
LAR1
L LW 20
// 嵌套循環(huán)計數(shù)LW18 ,循環(huán)次數(shù)為(LW20)次
NXT1: T L W 18
T A R1
L P#2. 0
-D
LAR1
// 后一單元數(shù)據(jù)小于前一單元數(shù)據(jù)?
L DB W [AR1,P#2.0]
L DB W [AR1,P#0.0]
《i 《/i
JCN L1
// 否,交換2 單元數(shù)據(jù)
L DB W [AR1,P#2.0]
L DB W [AR1,P#0.0]
T DBW [AR1,P#2.0]
POP
T DBW [AR1,P#0.0]
L1: L LW 18
LOOP NXT1
L LW 20
LOOP NXT2
JU EX IT
// 錯誤碼1,ANY指針有錯
ERR1: L 1
T #Err or
JU EX IT
// 錯誤碼2,輸入數(shù)據(jù)區(qū)不是DB塊
ERR2: L 2
T #Err or
JU EX IT
// 錯誤碼3,輸入數(shù)據(jù)類型不是INT
ERR3: L 3
T #Err or
EXIT: SET
SAVE
在OB1程序中調(diào)用舉例:
A M 0.0
F P M 0.1
JCN EXI T
CALL F C 3 //FC3 為上述排序程序
Data : =P#DB3.DBX 0.0 INT 64 // 參數(shù)Data, DB3 中64個INT 排序
Error : =MW2
EXIT: NOP 0
編輯:lyn
-
參數(shù)
+關注
關注
11文章
1864瀏覽量
32570 -
指針
+關注
關注
1文章
483瀏覽量
70706
原文標題:ANY數(shù)據(jù)類型及參數(shù)傳遞
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
請問ADS1299使用Test Signals ,獲取到的數(shù)據(jù)類型是什么?
西門子博途新數(shù)據(jù)類型之:SINT(8位整數(shù))

AIC23采集到的數(shù)據(jù)是應該用什么數(shù)據(jù)類型來接收?int還是unsigned int?
鴻蒙原生應用元服務開發(fā)-倉頡基礎數(shù)據(jù)類型整數(shù)類型
鴻蒙原生應用元服務開發(fā)-倉頡基礎數(shù)據(jù)類型元組類型
labview數(shù)據(jù)類型的取值范圍是多少
常見的遙感數(shù)據(jù)類型有哪些
人體紅外傳感器的數(shù)據(jù)類型及工作原理
技術干貨驛站 ▏深入理解C語言:基本數(shù)據(jù)類型和變量

ESP32-S3是否支持修改控制端點數(shù)據(jù)類型?
關于stm32 unsigned int轉(zhuǎn)float數(shù)據(jù)變化問題求解
C語言結(jié)構(gòu)體史上最詳細的講解【軟件干貨】
C語言實現(xiàn)Web參數(shù)傳遞
C語言數(shù)據(jù)類型有哪些

評論