设想用smart做主站读温湿度传感器,并以此数值作判据,将VB200写入0或1或3,再把VB200作为第二个MSG的地址指针,达到控制485继电器模块的两个继电器输出。全部程序在一个子程序中,块只引出温湿度传感器和继电器站地址,温、湿度值和继电器输出执行位 共五个引脚。
现场实验第一个MSG读取温湿度正常,第二个MSG写操作不成功。单独拿出第二个MSG试验写操作没问题,怀疑轮询但通讯完成位正常,第二个MSG的ereor短时间会报6。请问问题可能出在哪?
最佳答案
1、多站点轮询,只要保证一个时期内只有一个指令是有效的就可以。
、关于200smart PLC调用modbus rtu通讯轮询时的问题:
http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1476188&b_id=64&s_id=0&num=11#anch
2、相关资料:
参考、S7-200的:
、S7-200 modbus 通讯轮询程序:
https://www.99jianzhu.com/wenku/1504972.html
《S7-200基于MODBUS协议与智能仪表之间的通信实现方法》连接:
http://jingyan.baidu.com/article/e75aca857cb779142edac68e.html
提问者对于答案的评价:
你提供的例程给我帮助很大,但有一点不明白的是:为何在MB CTRL初始化前,先写Ctrl完成标志位去置位MSG的启动位,而不是初始化后再写这道指令,看了帖子都说Done与SM0.0是一致的,不能理解这句话,能给解释一下吗?
最佳答案作者回复:
1、转西门子专家置评:摘自:http://www.ad.siemens.com.cn/service/answer/solved_136138_1028.html
2、modbusRTU主站,与多个从站通讯或者与一个从站进行多个读写操作:
建议:调用多个MSG,使用轮询方式,本个MSG的done位触发下一个MSG,并且复位本身MSG的触发条件.
参考https://support.industry.siemens.com/cs/cn/zh/view/84175754
路径:s7-200plc-->通信章节-->modbus通信:
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc347696.html