作者 | 主题 |
---|---|
昔日如诗 侠圣 经验值: 3534 发帖数: 719 精华帖: 3 |
楼主 2019-09-20 18:40:42
主题:Modbus_RTU多站“轮询”,是说这个站的信号没有读写结束,就不能去读写下一站的数据吗?还是...... 我手头的项目是用Modbus_RTU两线多站制,而Modbus_RTU只能做“轮询”。在编程时我就遇到困惑,这个轮询是什么意思,是说这个站的数据读完了,发出一个"Done"的信号,这个“Done”信号传递给下一站,下一站才能做通信;如果上一站因为某种原因,数据没有读完(或者写完),迟迟发不出“Done”的信号,下一站就无法进行通信?如下图左。 比如下图,有三个站,各自需要读写电表功率、马达速度和炉子真空度。“轮询”是不是意味着,如果“电表功率”没有读写完毕,则不能进行“马达速度”的读写;如果“马达速度”没有读写完毕,则不能进行“炉子真空度”读写? 还是Modbus_RTU在访问某一站时,即使数据没有读完(或者写完),但是超过了时限,Modbus_RTU就掉头去下一站做数据的读写?如下图右。即使“电表功率”没有读写完,但是Modbus_RTU依然去读写“马达速度”? 追问:如果有三个从站,是不是就要做三次组态即三次调用“Modbus_Comm_Load”指令?可是我在官网上的教程中只看到多从站但是只调用“Modbus_Comm_Load”一次呀。(官网教程见http://www.ad.siemens.com.cn/productportal/prods/s7-1200_plc_easy_plus/11-Comm/03-Serial/02-Modbus/02-Modbus_RTU.htm) 望大侠指点迷津。
|
--意孤行 奇侠 经验值: 5084 发帖数: 520 精华帖: 7 |
1楼 2019-09-20 19:47:41
主题:回复:Modbus_RTU多站“轮询”,是说这个站的信号没有读写结束,就不能去读写下一站的数据吗?还是...... RS485 半双工通讯,同一总线上的设备,同一时刻只能一个设备发送字符, Modbus_RTU采用主从模式,一条总线上只能有一个主站设备,只有主站设备才能主动发送命令,从站只能根据主站命令被动回复。主站发送命令后,不管是正常接收还是数据错误或者应答超时,都要继续执行下一条指令,依次循环,就是所谓的轮询。 左侧图片基本正确。
认真做事,低调做人
|
--意孤行 奇侠 经验值: 5084 发帖数: 520 精华帖: 7 |
2楼 2019-09-20 19:51:53
主题:回复:Modbus_RTU多站“轮询”,是说这个站的信号没有读写结束,就不能去读写下一站的数据吗?还是...... 应该看看大神的这个帖子 http://www.ad.siemens.com.cn/club/bbs/PostStory.aspx?a_id=1536480&b_id=81&s_id=&num=25#anch
认真做事,低调做人
|
昔日如诗 侠圣 经验值: 3534 发帖数: 719 精华帖: 3 |
3楼 2019-09-20 22:40:15
主题:回复:Modbus_RTU多站“轮询”,是说这个站的信号没有读写结束,就不能去读写下一站的数据吗?还是...... 朋友,带两个从站,要两次调用Modbus_Comm_Load指令吗? |
昔日如诗 侠圣 经验值: 3534 发帖数: 719 精华帖: 3 |
5楼 2019-09-20 23:24:43
主题:回复:Modbus_RTU多站“轮询”,是说这个站的信号没有读写结束,就不能去读写下一站的数据吗?还是...... 受益非浅。谢谢! |
jiajia_lilin 侠士 经验值: 1782 发帖数: 324 精华帖: 0 |
6楼 2019-09-24 09:55:55
主题:回复:Modbus_RTU多站“轮询”,是说这个站的信号没有读写结束,就不能去读写下一站的数据吗?还是...... 轮询通讯感觉就是老师挨个检查作业,可有有多种思路,最常用的就是等待上一条指令的完成位或者故障位去触发吓一条指令的执行位,这个时候程序写起来比较麻烦,思维逻辑要清晰,就像老师检查作业是问每一个同学,完成了没有,需要等同学回答完成或者没有完成后才进行下一步;我个人一般不会那样写,用一个简单的计数器搞定,每个几百ms计一次数,记到一定数后清零计数器,当计数器的值等于某一个特地值时执行一条指令,不管执行情况怎样,就去执行下一条指令,就像老师检查作业不管你有没有回答,直接问下一个;第一种思路对于时间利用率非常充分,能够好不浪费且最大限度的实时采集数据,第二种方法对于数据的实时性采集不够,浪费了时间。具体根据系统对于数据的实时性要求而定吧!
老老实实做人,踏踏实实做事!
|