QQ登录

只需一步,快速开始

威纶通宏指令里面怎么定义全局变量

[ 复制链接 ]
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),
来获取变量值,间接实现全局变量功能。
以上就是对问题的回答。
如果是初次使用威纶通触摸屏,可以参考学习我录制的两套教程。

  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  



回复

使用道具 举报

快速回复 返回列表 客服中心 搜索