前面小节我们介绍了下图中的数学运算,
字符串处理,数据转换,数据操作分类函数,这小节我们
继续了解宏控制分类下的
函数,通过编写程序来实践。
威纶通触摸屏宏指令,调用宏指令分类函数,详解与实操
宏在编写好后,可以供元件调用,也可以供其他宏调用。
威纶提供3个宏操作的函数。
1.DELAY。
主要用于在宏指令执行过程当中延时执行的功能。
例如DELAY(1000),表示延时1000ms后,再执行后面的宏指令。
macro_command main()
int value=0,n=0
int i=0
for i=0 to 3 step 1
RAND(value)
n=value%255
//延时500ms再执行后面的SetData(n, "Local HMI", LW, 0, 1)
DELAY(500)
SetData(n, "Local HMI", LW, 0, 1)
next
end macro_command
2. ASYNC_TRIG_MACRO。
函数用于在一个宏指令中,使用异步的方法调用其他宏指令。
例如我们编写好了一个宏,ID为0,名称为macro_0
我们就可以通过宏ID,或宏名称调用宏。
ASYNC_TRIG_MACRO(0)
ASYNC_TRIG_MACRO("macro_0")
3. SYNC_TRIG_MACRO。
跟上边的函数类似,我们可以使用同步方式调用一个宏。
在使用上是相同的,也可以传递宏ID,或宏名称。
如下
macro_command main()
SYNC_TRIG_MACRO(0)
SYNC_TRIG_MACRO("macro_1")
end macro_command
同步可以理解为函数必须等被调用的宏执行完才往下继续执行。
而异步不会关心被调用的宏是否执行完,仅触发一次调用就继续执行后面的代码。
这里我们可以编写一个例程来使用宏指令相关的函数,同时查看同步,异步的区别。
首先编写两个宏指令,实现对LW0,LW1寄存器数值的修改,用于被调用其他宏调用。
代码如下
第一个宏ID为0,名称为 macro_0,实现了对地址LW0的随机修改。
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
第二个宏ID为1,名称为 macro_1,实现了对地址LW1的随机修改。
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
然后再编写两个宏,对前面编写好的宏进行同步与异步调用。
第三个宏,实现对第一个,第二个宏的异步调用。
可以通过宏ID或宏名称调用。
macro_command main()
ASYNC_TRIG_MACRO(0)
ASYNC_TRIG_MACRO("macro_1")
end macro_command
第四个宏,实现对第一个,第二个宏的同步调用。
macro_command main()
SYNC_TRIG_MACRO(0)
SYNC_TRIG_MACRO("macro_1")
end macro_command
然后是添加元件,来显示宏执行的效果。
如下图,我们添加了一个棒图元件,一个表针元件。
同时设置了其读写地址为LW0和LW1,以及数值范围为0-255.
再添加两个位状态设置元件,调用宏3,宏4.
威纶通触摸屏宏指令,调用宏指令分类函数,详解与实操
|