ANY數(shù)據(jù)類(lèi)型及參數(shù)傳遞
ANY是一種用于傳遞指針的形參數(shù)據(jù)類(lèi)型,可視為POINTE R 類(lèi)型的擴(kuò)展,較POINTER 類(lèi)型為復(fù)雜,長(zhǎng)度為10個(gè)字節(jié),增加的4 字節(jié),最高字節(jié) (Byte 0) 固定為B#16#10,第二字節(jié) (Byte 1) 為ANY指針?biāo)赶騾^(qū)域的數(shù)據(jù)類(lèi)型,而接下來(lái)的2 字節(jié) (BYTE 3, 4) 組合為一個(gè)INT ,為ANY指針?biāo)付▍^(qū)域的長(zhǎng)度,稱(chēng)為重復(fù)系數(shù) (Rep etition factor) 。其余6 字節(jié)作用與POINTE R 類(lèi)型相同。
編程舉例:
// 冒泡排序程序,算法原理請(qǐng)參考相關(guān)資料
// 此例程僅提供存于DB塊中的INT 類(lèi)型數(shù)據(jù)排序
// 結(jié)果為INT 數(shù)據(jù)由小到大排列,保存于原DB塊中
//FC3 塊,形參定義如下:
// 輸入?yún)?shù)Dat a(A ny 類(lèi)型);輸出參數(shù)Error(INT類(lèi)型)
// 若輸出參數(shù)Error不為0, 則說(shuō)明排序未進(jìn)行,
//Error = 1, D ata(ANY 類(lèi)型)輸入指針無(wú)效
//Error = 2, D ata(ANY 類(lèi)型)輸入指針地址非DB地址
//Error = 3, D ata(ANY 類(lèi)型)輸入指針指定區(qū)域類(lèi)型非INT 類(lèi)型
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
// 類(lèi)型為INT
L LB 1
L B#16#5
==I
JCN ERR3
// 打開(kāi)輸入DB塊
OPN DB [LW 4]
// 數(shù)據(jù)起始地址去掉數(shù)據(jù)區(qū)標(biāo)識(shí)部分
L LD 6
L DW#16#FFFFFF
T LD 10
// 計(jì)算最后一個(gè)存儲(chǔ)單元指針保存至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)計(jì)數(shù)LW20 ,循環(huán)次數(shù)為(數(shù)據(jù)個(gè)數(shù)-1)次
L LW 2
L 1
-I
NXT2: T L W 20
L LD 10
LAR1
L LW 20
// 嵌套循環(huán)計(jì)數(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
// 錯(cuò)誤碼1,ANY指針有錯(cuò)
ERR1: L 1
T #Err or
JU EX IT
// 錯(cuò)誤碼2,輸入數(shù)據(jù)區(qū)不是DB塊
ERR2: L 2
T #Err or
JU EX IT
// 錯(cuò)誤碼3,輸入數(shù)據(jù)類(lèi)型不是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個(gè)INT 排序
Error : =MW2
EXIT: NOP 0
編輯:lyn
-
參數(shù)
+關(guān)注
關(guān)注
11文章
1860瀏覽量
32443 -
指針
+關(guān)注
關(guān)注
1文章
481瀏覽量
70612
原文標(biāo)題:ANY數(shù)據(jù)類(lèi)型及參數(shù)傳遞
文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
請(qǐng)問(wèn)ADS1299使用Test Signals ,獲取到的數(shù)據(jù)類(lèi)型是什么?
西門(mén)子博途新數(shù)據(jù)類(lèi)型之:SINT(8位整數(shù))
![西門(mén)子博途新<b class='flag-5'>數(shù)據(jù)類(lèi)型</b>之:SINT(8位整數(shù))](https://file1.elecfans.com/web1/M00/F4/A4/wKgaoWcuwKSAVv28AABkgk4XsXY477.png)
AIC23采集到的數(shù)據(jù)是應(yīng)該用什么數(shù)據(jù)類(lèi)型來(lái)接收?int還是unsigned int?
鴻蒙原生應(yīng)用元服務(wù)開(kāi)發(fā)-倉(cāng)頡基礎(chǔ)數(shù)據(jù)類(lèi)型元組類(lèi)型
labview數(shù)據(jù)類(lèi)型的取值范圍是多少
常見(jiàn)的遙感數(shù)據(jù)類(lèi)型有哪些
人體紅外傳感器的數(shù)據(jù)類(lèi)型及工作原理
技術(shù)干貨驛站 ▏深入理解C語(yǔ)言:基本數(shù)據(jù)類(lèi)型和變量
![技術(shù)干貨驛站 ▏深入理解C語(yǔ)言:基本<b class='flag-5'>數(shù)據(jù)類(lèi)型</b>和變量](https://file1.elecfans.com/web2/M00/FC/CD/wKgZomaWI5uASgBaAABuQHdMO4I302.png)
ESP32-S3是否支持修改控制端點(diǎn)數(shù)據(jù)類(lèi)型?
關(guān)于stm32 unsigned int轉(zhuǎn)float數(shù)據(jù)變化問(wèn)題求解
C語(yǔ)言結(jié)構(gòu)體史上最詳細(xì)的講解【軟件干貨】
C語(yǔ)言實(shí)現(xiàn)Web參數(shù)傳遞
C語(yǔ)言數(shù)據(jù)類(lèi)型有哪些
![C語(yǔ)言<b class='flag-5'>數(shù)據(jù)類(lèi)型</b>有哪些](https://file1.elecfans.com/web2/M00/C5/16/wKgZomX6UKqAb6q4AABHS7gAoYk070.png)
評(píng)論