pcsms_ovmyTMQL 发表于 2019-7-3 15:07:27

如何在宏指令中获取com2口接收的数据

怎么能在宏指令中获取com2口接收的数据?比如我通过SetData指令传输数据,然后我想得到com2口接收的数据(文本格式),好用来比较是否传输成功,是通讯不上,还是数据范围超过下位机数据的限制,请各位指教。

pcsms_xUhbkrku 发表于 2019-11-13 22:39:47

一般一个触摸屏硬件都会有两个COM口,COM1,COM2.
可以接两个硬件进行通讯。
在新版本的编程软件界面菜单-》常用-》系统参数,可以弹出窗口来添加硬件。

硬件的名称就可以在宏指令编辑窗口中使用。
如下为使用了硬件名称的宏指令代码:
macro_command main()
short nValue=0,nValue1=0
GetData(nValue, "FATEK FB/FBs/B1/B1z Series", D, 0, 1)
GetData(nValue1, "FATEK FB/FBs/B1/B1z Series_1", D, 0, 1)
if(nValue == nValue1)then
bool on=true
SetData(on, "Local HMI", LB, 0, 1)
end if
end macro_command


另外还有一种情况,就是一个串口可能会连接多个通讯硬件,

那么这样的话就不能够通过硬件的名称来识别通讯硬件了。
我们得使用另外一种表达形式来实现。
可将PLC站号信息直接设置在地址内容中,。
例如地址格式ABC#Addr 。
其中ABC表示PLC 所使用的站号,必须大于等于0,且小于等于 255。
Addr指定 PLC的地址,两个数据之间以“#”做为区隔。
如我们添加元件时,地址可以按下图填写,表示站号1的硬件地址。


在使用宏指令时,不同站号的PLC可以如下使用。
short nValue=0,nValue1=0
GetData(nValue, "FATEK FB/FBs/B1/B1z Series", D, 1#0, 1)
GetData(nValue, "FATEK FB/FBs/B1/B1z Series", D, 2#0, 1)
分别表示站号1和2的硬件地址D0.


最后威纶还提供一个站号系统寄存器来设置通讯硬件的站号。

在使用时宏代码里形式如下:
short nValue=0,nValue1=0
GetData(nValue, "FATEK FB/FBs/B1/B1z Series", D, var1#0, 1)
GetData(nValue, "FATEK FB/FBs/B1/B1z Series", D, var2#0, 1)
元件地址里形式如下:

这样我们修改对应的,例如VAR1的寄存器LW10001,
就可以指定具体的通讯硬件站号了。
可以看出威纶通的功能还是很丰富的。

希望能帮上你。
页: [1]
查看完整版本: 如何在宏指令中获取com2口接收的数据