神仙不养鱼
级别: 探索解密
精华主题: 0
发帖数量: 49 个
工控威望: 107 点
下载积分: 1977 分
在线时间: 13(小时)
注册时间: 2020-06-08
最后登录: 2022-12-22
查看神仙不养鱼的 主题 / 回贴
楼主  发表于: 2021-04-24 09:56
图片:
之前提过一个问题,就是让操作者自行输入一个点进行监控,达到设备排查故障时同画面可以监控必要的输入输出点的问题
后来一位大哥提点了一下用宏指令,最近闲余的时候研究了一下,做了一个点实验,功能上基本能完成
但是用PC连接PLC在线模拟的时候发现问题
第一个版本是用的select case 的方式选择输出,由于点太多的话语句太复杂,只做了少量的点。直接关联PLC输入的指示灯和宏指令管来的指示灯都可以迅速反应。
第二个版本用的数组的方式,由于语句比较简单,所以添加了64个点,这时问题就来了。宏指令关联的指示灯对比直接关联PLC的指示灯慢0.5-1秒的样子。这是什么原因呢?
请各位大神指导指导
附上第二版本的指令
macro_command main()
char X1scan = 0
bool Xstate[64]
char i = 0
bool Xled = 0
GetData(X1scan, "Local HMI", LW, 0, 1)
GetData(Xstate[0], "Mitsubishi FX3U/FX3G/FX3GA", X, 0, 64)
i = X1scan
Xled = Xstate
SetData(Xled, "Local HMI", LB, 0, 1)
end macro_command
神仙不养鱼
级别: 探索解密
精华主题: 0
发帖数量: 49 个
工控威望: 107 点
下载积分: 1977 分
在线时间: 13(小时)
注册时间: 2020-06-08
最后登录: 2022-12-22
查看神仙不养鱼的 主题 / 回贴
1楼  发表于: 2021-04-24 09:57
不知道是否是因为读写的数据太多导致程序运行的周期变长了
神仙不养鱼
级别: 探索解密
精华主题: 0
发帖数量: 49 个
工控威望: 107 点
下载积分: 1977 分
在线时间: 13(小时)
注册时间: 2020-06-08
最后登录: 2022-12-22
查看神仙不养鱼的 主题 / 回贴
2楼  发表于: 2021-04-24 09:59
减小到16个点也是有延时
梦雨天涯
微信hui530527   &
级别: 网络英雄
精华主题: 0
发帖数量: 3768 个
工控威望: 7113 点
下载积分: 13021 分
在线时间: 2496(小时)
注册时间: 2016-10-31
最后登录: 2024-05-03
查看梦雨天涯的 主题 / 回贴
3楼  发表于: 2021-04-24 10:15
给你两个字,加油吧
微信hui530527      b站账号,梦雨天涯1991
请不要随意加我,不会随便通过。QQ群942493953
神仙不养鱼
级别: 探索解密
精华主题: 0
发帖数量: 49 个
工控威望: 107 点
下载积分: 1977 分
在线时间: 13(小时)
注册时间: 2020-06-08
最后登录: 2022-12-22
查看神仙不养鱼的 主题 / 回贴
4楼  发表于: 2021-04-24 14:35
来都来了,指点一二呗
神仙不养鱼
级别: 探索解密
精华主题: 0
发帖数量: 49 个
工控威望: 107 点
下载积分: 1977 分
在线时间: 13(小时)
注册时间: 2020-06-08
最后登录: 2022-12-22
查看神仙不养鱼的 主题 / 回贴
5楼  发表于: 2021-04-24 14:45
解决了,宏指令的时间间隔没有调整,之前是10*100ms,改成1*100ms就行了,不过还是有0.1秒的延时,效果要好多了