有一网友提出问题:
威纶触发式资料传输通过宏指令触发某个标记位来启动触发传输功能传输后,是否有办法可以确认资料传输OK
宏指令如下:
macro_command main()
bool st = true,rst = false
int Index32
short productid
GetData(productid, "Local HMI", RW, 9600, 1)
Index32 = productid * 10000
//SetData(productid, "Local HMI", LW, 998, 1)//写入偏移量
SetData(Index32, "Local HMI", LW, 9260, 1)//写入偏移量
SetData(st, "Local HMI", LB, 58, 1)//启动数据传送至欲保存位置
DELAY(3000)
SetData(rst, "Local HMI", LB, 58, 1)
end macro_command
数据自RW0开始的100个字 传送至RW(0+LW9260)开始的100个字。
LB 58 位触发传送的标记位 我这里通过延迟 来保证数据传输 ,
想了解是否有其它标记位来确认传输OK??
是否有别的程序设计思路 可以实现确认数据传送完成标志?
其实威纶通触摸屏自带的资料传输可以设置在传输完成后启用通知功能的。
资料传输的两个元件使用,在我录制的101集的视频教程里也作了详细介绍。
资料传输元件属性设置具体如下图。
威纶通触摸屏触发式资料传输如何知道知道资料传输完成?
但经济型触摸屏并不支持通知这个功能,
如上图,我们创建的是TK6071IP这个型号,
通知按钮为灰色不可用状态。
这样的话,那也只能在宏代码里加入一段死循环来等待传输完成了。
构思如下:
传送RW0-RW99 100个字 到PLC内,
已知RW99内有标志字符‘A’或一指定作为参考的常数,当PLC触发传送后 ,
比较RW99对应的PLC目标地址是否已为字符为'A' ,是则认为数据传送OK 。
这里我单独编写了一个宏指令,
指令里加了注释,可以参考与使用。
- macro_command main()
- bool finished=false
- //LB0用于表示正在传输标识,或强制退出死循环。
- SetData(finished, "Local HMI", LB, 0, 1)
- short check=9999,value=0,i=0
- //先将PLC的D99设置为一个数值做参考。
- SetData(check, "FATEK FB/FBs/B1/B1z Series", D, 99, 1)
- //实现99个资料传输
- for i=0 to 99 step 1
- GetData(value, "Local HMI", LW, i, 1)
- SetData(value, "FATEK FB/FBs/B1/B1z Series", D, 99, 1)
- next
- //死循环来判断是否传输完成
- while true
- GetData(value, "FATEK FB/FBs/B1/B1z Series", D, 99, 1)
- if(value <> check)then
- //获取PLC的D99资料与事先设置的不相同,则表示资料传输完成。退出循环。
- break
- end if
- ////由外部强制退出死循环
- GetData(finished, "Local HMI", LB, 0, 1)
- if(finished == true)then
- break
- end if
- wend
- //
- finished = true
- SetData(finished, "Local HMI", LB, 0, 1)
- end macro_command
复制代码 1.在宏代码里面,我们在宏指令里,在开始执行宏指令前,将LB0设置为false,
表示资料正在传输中。
2.然后我们将接收数据的一个PLC寄存器D99设置为资料中不可能重复出现的数据。
这样我们在资料传输后,就可以将传输前后,D99的数据进行比较。
不相同,则表示资料已成功传输。
3.一般资料传输瞬间就可以完成的,但一个健壮的程序都会考虑容错机制。
所以我们在死循环判断里也加入了LB0的判断,被用户设置为ON后,也可以退出死循环。
当然也可以结合延时函数DELAY配合数值累加计时,来退出死循环。这里宏代码就没有额外添加这一功能了,可以自己添加。
这样就通过一个单一的宏代码,实现了资料传输后,将传递完成结果通知出来的功能。
上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例 经历1年的编程与录制点击进入查看
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|