QQ登录

只需一步,快速开始

威伦触摸屏如何用一个字寄存器读取PLC的位组合

[ 复制链接 ]
我想用宏指令的一个字寄存器读取PLC的位组合,这样写宏指令有什么毛病吗?为什么会报错呀?应该要怎么写呀?

我写的宏代码如下图:
193922dne41n4wyzwney1e.png

回答:
函数GetData(IO, "FATEK FB/FBs/B1/B1z Series", X, 50, 32)会报错。
IO是一个整数,X50是一个二进制位。
威纶通的函数指令没有那么智能,可以将32个二进制位,按顺序赋值给一个整数。
所以这里你得更改代码,使用二进制位数组来保存数据。
具体可以如下面代码:
macro_command main()
bool bIO[32]
//int IO
short page
GetData(page, "Local HMI", LW, 0, 1)
if page == 0 then
GetData(bIO[0], "FATEK FB/FBs/B1/B1z Series", X, 50, 32)
SetData(bIO[0], "Local HMI", RW_Bit,12,1)
end if
end macro_command


尽量保证单位一致,
代码里还更改了一行SetData(bIO[0], "Local HMI", RW_Bit,12,1)
虽然你编写的也对,但建议源地址与目标地址存储宽度一致。
另外PLC输入寄存器也有字形式的表达方式,如WX0,就表示一个字宽度,包含X0到X15.
所以也可以这样编写代码:
short IO,IO1
GetData(IO, "FATEK FB/FBs/B1/B1z Series", WX, 0, 1)
GetData(IO1, "FATEK FB/FBs/B1/B1z Series", WX, 1, 1)

这里添加的PLC是永宏的。
也查了下三菱的,也支持WX形式,但并没有双字形式。


威纶通宏指令还是挺丰富的,我也录制了一套视频教程,
可以下载参考学习。

  

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

  

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

  

QQ联系我

微信扫扫联系我

  


回复

使用道具 举报

点击查看
快速回复 返回列表 客服中心 搜索