工控编程吧

标题: 威纶通宏指令里面怎么定义全局变量 [打印本页]

作者: qq263946146    时间: 2019-11-25 11:23
标题: 威纶通宏指令里面怎么定义全局变量
void Read( )
{
        unsigned short wordData;
        unsigned char str1[10];
        unsigned char str[10];
        int result, i = 0;
      
        unsigned int aver,sum = 0;
        unsigned short c;
……
}
全局变量unsigned int WeightAD[16]
是直接写到Read()函数前面吗,结果运行不对啊。


回答:
放在macro_command main()前面就可以了。
据我所知 威纶的宏 全局变量的意思 在这一条宏的全局 并不是每条宏都能访问的。
所以没什么人用他。
例如你编写几个子函数来测试:
int result=0
sub add(int a,int b)
result = a+b
end sub

macro_command main()
add(1,2)
SetData(result, "Local HMI", LW, 0, 1)
end macro_command
通过代码我们可以发现,result变量为宏指令的全局变量,可以在子函数中赋值,
也可以在主函数中使用。
但如果想在另外一个宏指令里调用,就不识别了。

所以这里的全部也并非真正意义的全局。
作用与意义不大,一般也就没人这么使用了。

所以我们全通过另一种方式来使用全局变量,使其在全部宏代码里都能使用。
那就是使用威纶通的寄存器来间接实现。
我们知道威纶通提供大量LW,RW,RW_A类型的字寄存器,或位形式寄存器。
这样我们就可以配合SetData,GetData两函数间接实现全局变量,共享数据的功能。
如上我们编写的函数使用了result变量,我们可以SetData(result, "Local HMI", LW, 0, 1),
将变量保存到LW0里,LW0就表示一个全局的变量。
在其他宏里使用此变量时,就可以int result=0。GetData(result, "Local HMI", LW, 0, 1),
来获取变量值,间接实现全局变量功能。
以上就是对问题的回答。
如果是初次使用威纶通触摸屏,可以参考学习我录制的两套教程。
[weilun]1[/weilun]
[weixinlianxi]1[/weixinlianxi]







欢迎光临 工控编程吧 (https://www.gkbc8.com/) Powered by Discuz! X3.4