ANY數(shù)據(jù)類型及參數(shù)傳遞
ANY是一種用于傳遞指針的形參數(shù)據(jù)類型,可視為POINTE R 類型的擴(kuò)展,較POINTER 類型為復(fù)雜,長度為10個字節(jié),增加的4 字節(jié),最高字節(jié) (Byte 0) 固定為B#16#10,第二字節(jié) (Byte 1) 為ANY指針?biāo)赶騾^(qū)域的數(shù)據(jù)類型,而接下來的2 字節(jié) (BYTE 3, 4) 組合為一個INT ,為ANY指針?biāo)付▍^(qū)域的長度,稱為重復(fù)系數(shù) (Rep etition factor) 。其余6 字節(jié)作用與POINTE R 類型相同。
編程舉例:
// 冒泡排序程序,算法原理請參考相關(guān)資料
// 此例程僅提供存于DB塊中的INT 類型數(shù)據(jù)排序
// 結(jié)果為INT 數(shù)據(jù)由小到大排列,保存于原DB塊中
//FC3 塊,形參定義如下:
// 輸入?yún)?shù)Dat a(A ny 類型);輸出參數(shù)Error(INT類型)
// 若輸出參數(shù)Error不為0, 則說明排序未進(jìn)行,
//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’復(fù)制到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ū)標(biāo)識部分
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ù)
+關(guān)注
關(guān)注
11文章
1865瀏覽量
32835 -
指針
+關(guān)注
關(guān)注
1文章
484瀏覽量
70973
原文標(biāo)題:ANY數(shù)據(jù)類型及參數(shù)傳遞
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機(jī)器人及PLC自動化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
IEC101協(xié)議可以傳輸什么類型的數(shù)據(jù)
詳解Prometheus的數(shù)據(jù)類型

ip6806芯片的詳細(xì)參數(shù)解析

請問ADS1299使用Test Signals ,獲取到的數(shù)據(jù)類型是什么?
西門子博途新數(shù)據(jù)類型之:SINT(8位整數(shù))

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

評論