恭喜,你发布的帖子
发布于 2020-10-09 11:24:00
15楼
额 我回复下大佬的问题啊 首先呢 我这个并不是完全应用在工程上的 这只是一个开阔思路的小程序.并不是说要在现场设备上实现.
1.这个确实 没有办法直接读取
2.这个解决方案我试过 但是要求是检测plc的运行或停止状态 并不是通讯状态,. 在我的测试中 使用mcgs的设备通讯状态通道只要和plc通讯上了 就算我把plc打回stop状态 通道的值依然是0 即没有断开. 所以我觉得可能是plc虽然停止了 但是并没有断开与屏幕的通讯导致的 所以论坛上咨询下大神们 最后选择了这个心跳信号的方案 而且也解决了
3.这个心跳信号啊 是屏幕脚本做的 而且只读取plc的 run/stop状态 并不参与plc的程序控制 也不控制plc的实际状态 他只是在屏幕上显示出来当前plc的工作状态而已. 可能是我之前没有描述清楚误会了.
哦。
心跳信号真没必要啊,直接把PLC时钟终映射到特殊的DB区,然后触摸屏读取DB的时钟,发现时钟一直不增加且PLC通讯是正常的,说明PLC是STOP状态啊。
MCGS触摸屏本身是没法识别PLC的RUN、STOP状态的,只能等触摸屏厂家后期增加新功能了。
至于软件层硬件层通讯,我是针对MCGS的通讯驱动来说的。
比如SMART的通讯驱动就支持SM、C、T这些硬件层次的存储器访问,1200就不支持。1200只能把需要的数据映射到一个DB,然后触摸屏访问这个DB才能获取得到硬件层次数据的访问。
博途在线查看状态是可以直接看得到系统硬件的实际值的,只是MCGS通讯并不支持这些硬件层次的访问。
再扯淡一个最长见的Modbus RTU硬件层次的访问。大家都知道功能码01、02、03、04、05、06、15、16这些访问都是居于寄存器的访问,其实Modbus还有功能码43 14是访问硬件信息的。还有65~72/100~110这些预留用户自定义功能码都是可以作为用户二次开发硬件层次数据访问的。
请填写推广理由:
分享
只看
楼主