工控编程吧
标题:
威伦触摸屏如何用一个字寄存器读取PLC的位组合
[打印本页]
作者:
qq263946146
时间:
2019-11-15 10:53
标题:
威伦触摸屏如何用一个字寄存器读取PLC的位组合
我想用宏指令的一个字寄存器读取PLC的位组合,这样写宏指令有什么毛病吗?
为什么会报错呀?应该要怎么写呀?
我写的宏代码如下图:
(, 下载次数: 3)
上传
点击文件名下载附件
回答:
函数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形式,但并没有双字形式。
威纶通宏指令还是挺丰富的,我也录制了一套视频教程,
可以下载参考学习。
[weilun]1[/weilun]
[weixinlianxi]1[/weixinlianxi]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4