前面小節(jié)我們介紹了下圖中的數(shù)學(xué)運(yùn)算,
字符串處理,數(shù)據(jù)轉(zhuǎn)換,數(shù)據(jù)操作分類(lèi)函數(shù),
這小節(jié)我們繼續(xù)了解宏控制分類(lèi)下的函數(shù),
通過(guò)編寫(xiě)程序來(lái)實(shí)踐。
宏在編寫(xiě)好后,可以供元件調(diào)用,也可以供其他宏調(diào)用。
威綸提供3個(gè)宏操作的函數(shù)。
1.DELAY。
主要用于在宏指令執(zhí)行過(guò)程當(dāng)中延時(shí)執(zhí)行的功能。
例如DELAY(1000),表示延時(shí)1000ms后,再執(zhí)行后面的宏指令。
macro_command main()
int value=0,n=0
int i=0
for i=0 to 3 step 1
RAND(value)
n=value%255
//延時(shí)500ms再執(zhí)行后面的SetData(n, "Local HMI", LW, 0, 1)
DELAY(500)
SetData(n, "Local HMI", LW, 0, 1)
next
end macro_command
2. ASYNC_TRIG_MACRO。
函數(shù)用于在一個(gè)宏指令中,使用異步的方法調(diào)用其他宏指令。
例如我們編寫(xiě)好了一個(gè)宏,ID為0,名稱(chēng)為macro_0
我們就可以通過(guò)宏ID,或宏名稱(chēng)調(diào)用宏。
ASYNC_TRIG_MACRO(0)
ASYNC_TRIG_MACRO("macro_0")
3. SYNC_TRIG_MACRO。
跟上邊的函數(shù)類(lèi)似,我們可以使用同步方式調(diào)用一個(gè)宏。
在使用上是相同的,也可以傳遞宏ID,或宏名稱(chēng)。
如下
macro_command main()
SYNC_TRIG_MACRO(0)
SYNC_TRIG_MACRO("macro_1")
end macro_command
同步可以理解為函數(shù)必須等被調(diào)用的宏執(zhí)行完才往下繼續(xù)執(zhí)行。
而異步不會(huì)關(guān)心被調(diào)用的宏是否執(zhí)行完,僅觸發(fā)一次調(diào)用就繼續(xù)執(zhí)行后面的代碼。
這里我們可以編寫(xiě)一個(gè)例程來(lái)使用宏指令相關(guān)的函數(shù),同時(shí)查看同步,異步的區(qū)別。
首先編寫(xiě)兩個(gè)宏指令,實(shí)現(xiàn)對(duì)LW0,LW1寄存器數(shù)值的修改,用于被調(diào)用其他宏調(diào)用。
代碼如下
第一個(gè)宏ID為0,名稱(chēng)為 macro_0,實(shí)現(xiàn)了對(duì)地址LW0的隨機(jī)修改。
macro_command main()
int value=0
int i=0
for i=0 to 255 step 10
value = value+10
SetData(value, "Local HMI", LW, 0, 1)
DELAY(100)
next
end macro_command
第二個(gè)宏ID為1,名稱(chēng)為 macro_1,實(shí)現(xiàn)了對(duì)地址LW1的隨機(jī)修改。
macro_command main()
int value=0
int i=0
for i=0 to 255 step 10
value = value+10
SetData(value, "Local HMI", LW, 1, 1)
DELAY(100)
next
end macro_command
然后再編寫(xiě)兩個(gè)宏,對(duì)前面編寫(xiě)好的宏進(jìn)行同步與異步調(diào)用。
第三個(gè)宏,實(shí)現(xiàn)對(duì)第一個(gè),第二個(gè)宏的異步調(diào)用。
可以通過(guò)宏ID或宏名稱(chēng)調(diào)用。
macro_command main()
ASYNC_TRIG_MACRO(0)
ASYNC_TRIG_MACRO("macro_1")
end macro_command
第四個(gè)宏,實(shí)現(xiàn)對(duì)第一個(gè),第二個(gè)宏的同步調(diào)用。
macro_command main()
SYNC_TRIG_MACRO(0)
SYNC_TRIG_MACRO("macro_1")
end macro_command
然后是添加元件,來(lái)顯示宏執(zhí)行的效果。
如下圖,我們添加了一個(gè)棒圖元件,一個(gè)表針元件。
同時(shí)設(shè)置了其讀寫(xiě)地址為L(zhǎng)W0和LW1,以及數(shù)值范圍為0-255.
再添加兩個(gè)位狀態(tài)設(shè)置元件,調(diào)用宏3,宏4.