大神们ModbusRTU轮询通信,读轮询写优先该怎么写程序呢 点击:3164 | 回复:19



SiegeLion007

    
  • 精华:0帖
  • 求助:3帖
  • 帖子:5帖 | 23回
  • 年度积分:73
  • 历史总积分:73
  • 注册:2023年4月04日
发表于:2023-06-01 09:50:12
楼主
求助帖30分-已结帖

大神们ModbusRTU轮询通信,读轮询写优先该怎么写程序呢



楼主最近还看过



zhangleiChina

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 61回
  • 年度积分:681
  • 历史总积分:4504
  • 注册:2022年8月05日
发表于:2023-06-01 11:23:32
1楼

我常用的轮训方式有三种,下面以西门子1200为例

  1. 时间轮训,这种最常用也比较稳定,通讯时间可调,下图中可见;

  2. 移位轮训,本质上是时间轮训,形象点可以理解为流水灯的模式;

  3. DONE、ERROR轮训,就是将第一个通讯的完成位和故障位作为第二个通讯的开始,优点是通讯速度很快,缺电是比较容易通讯卡死。

    image.png

回复本条

    

SiegeLion007

  • 精华:0帖
  • 求助:3帖
  • 帖子:6帖 | 23回
  • 年度积分:80
  • 历史总积分:80
  • 注册:2023年4月04日
发表于:2023-06-01 11:40:26
2楼

"zhangleiChina" 的回复,发表在1楼
        对内容: 【我常用的轮训方式有三种,下面以西门子1200为例1、时间轮训,这种最常用也比较稳定,通讯时间可调,下图中可见;2、移位轮训,本质上是时间轮训,形象点可以理解为流水灯的模式;3、DONE、ERROR轮训...】进行回复:

        -----------------------------------------------------------------


我用的第三中完成位来触发下一个的通信轮询,通信太多读写在一起,有一个通信不上就会卡死,或者说轮询的时间太长,写入指令会要很长时间。

回复本条

    

关育谋

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:767帖 | 5758回
  • 年度积分:16
  • 历史总积分:93501
  • 注册:2004年5月28日
发表于:2023-06-01 22:52:52
3楼

读操作轮询执行,每次读操作执行完成后判断有没有写操作,如果有写操作,优先执行写操作;如果没有写操作,执行下一个读操作,依次循环。那么写操作就要预先暂存,将写操作数据暂存,然后预写标志位置位,这个时候一次读操作完成后就去判断这个预写标志位,如果置位就去把写操作执行标志位置位,去执行写操作;如果没有置位,那就顺序执行下一个读操作。

回复本条

    

请叫我王老湿

  • [版主]
  • 精华:0帖
  • 求助:0帖
  • 帖子:627帖 | 8793回
  • 年度积分:1
  • 历史总积分:354372
  • 注册:2011年4月25日
发表于:2023-06-02 08:28:36
4楼

"zhangleiChina" 的回复,发表在1楼
        对内容: 【我常用的轮训方式有三种,下面以西门子1200为例时间轮训,这种最常用也比较稳定,通讯时间可调,下图中可见;移位轮训,本质上是时间轮训,形象点可以理解为流水灯的模式;DONE、ERROR轮训,就是将第一...】进行回复:

        -----------------------------------------------------------------


初始化完成位用来启动第一个触发,第一个完成位启动第二个触发,第二个触发又去触发第一个,然后就是搞个超时,如果第一个完成位超时就启动第二个,不受第一个通信异常影响

回复本条

    

水边清浅横枝瘦

  • 精华:0帖
  • 求助:4帖
  • 帖子:82帖 | 3506回
  • 年度积分:3
  • 历史总积分:5671
  • 注册:2006年7月11日
发表于:2023-06-02 08:53:45
5楼

写优先难一些,将输入与历史值比较,一样就跳过。不一样就先写。

回复本条

    

121111115

  • [版主]
  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 535回
  • 年度积分:6093
  • 历史总积分:33026
  • 注册:2016年1月20日
发表于:2023-06-02 09:17:54
6楼

你们整这么复杂做什么?写优先每个轮询周期都让他优先不就得了?对于PLC的梯形图扫描周期来讲,他是从上到下从左至右的扫描的,你只要保证写操作在读操作之前被扫描那就是写优先啊。f3864adcc383e8bc0db0f82d740aa8e.png

如上图,先写再读,每个周期都这样,需要写入就写,不需要就原值写入。这优先不优先的不就是谁先被执行吗?

回复本条

    

H42123999

  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 633回
  • 年度积分:3
  • 历史总积分:10743
  • 注册:2012年9月22日
发表于:2023-06-02 09:42:49
7楼

http://bbs.gongkong.com/d/202109/870478/870478_1.shtml


关注这位大佬  关育谋   都是Modbus相关学习教程!

回复本条

    

太月星辰

  • 精华:0帖
  • 求助:1帖
  • 帖子:5帖 | 410回
  • 年度积分:626
  • 历史总积分:4036
  • 注册:2011年11月02日
发表于:2023-06-02 16:58:36
8楼

"关育谋" 的回复,发表在3楼
        对内容: 【读操作轮询执行,每次读操作执行完成后判断有没有写操作,如果有写操作,优先执行写操作;如果没有写操作,执行下一个读操作,依次循环。那么写操作就要预先暂存,将写操作数据暂存,然后预写标志位置位,这个时候一...】进行回复:

        -----------------------------------------------------------------


不错!我也有遇到这种情况,想不通怎么解决定时读和偶发随机写会导致冲突的问题,这个方法受教了。后续做上位机也需要这种理念,感谢!

回复本条

    

SiegeLion007

  • 精华:0帖
  • 求助:3帖
  • 帖子:6帖 | 23回
  • 年度积分:80
  • 历史总积分:80
  • 注册:2023年4月04日
发表于:2023-06-05 11:30:56
9楼

"请叫我王老湿" 的回复,发表在4楼
        对内容: 【"zhangleiChina" 的回复,发表在1楼        对内容: 【我常用的轮训方式有三种,下面以西门子1200为例时间轮训,这种最常用也比较稳定,通讯时间可调,下图中可见;移位轮训,本质上...】进行回复:

        -----------------------------------------------------------------


没毛病,通信多的话总回有些延时的对吧

回复本条

    

SiegeLion007

  • 精华:0帖
  • 求助:3帖
  • 帖子:6帖 | 23回
  • 年度积分:80
  • 历史总积分:80
  • 注册:2023年4月04日
发表于:2023-06-05 11:32:21
10楼

"关育谋" 的回复,发表在3楼
        对内容: 【读操作轮询执行,每次读操作执行完成后判断有没有写操作,如果有写操作,优先执行写操作;如果没有写操作,执行下一个读操作,依次循环。那么写操作就要预先暂存,将写操作数据暂存,然后预写标志位置位,这个时候一...】进行回复:

        -----------------------------------------------------------------


谢谢,大神讲解,我去研究下程序改怎么写

回复本条

    

SiegeLion007

  • 精华:0帖
  • 求助:3帖
  • 帖子:6帖 | 23回
  • 年度积分:80
  • 历史总积分:80
  • 注册:2023年4月04日
发表于:2023-06-05 11:32:34
11楼

"H42123999" 的回复,发表在7楼
        对内容: 【http://bbs.gongkong.com/d/202109/870478/870478_1.shtml 关注这位大佬  关育谋   都是Modbus相关学习教程!...】进行回复:

        -----------------------------------------------------------------


好的

回复本条

    

SiegeLion007

  • 精华:0帖
  • 求助:3帖
  • 帖子:6帖 | 23回
  • 年度积分:80
  • 历史总积分:80
  • 注册:2023年4月04日
发表于:2023-06-05 11:34:22
12楼

"121111115" 的回复,发表在6楼
        对内容: 【你们整这么复杂做什么?写优先每个轮询周期都让他优先不就得了?对于PLC的梯形图扫描周期来讲,他是从上到下从左至右的扫描的,你只要保证写操作在读操作之前被扫描那就是写优先啊。如上图,先写再读,每个周期都...】进行回复:

        -----------------------------------------------------------------


写操作在读操作的前面?我就是这样子写的,通信多的话轮询下来需要好久

回复本条

    

ac米兰

  • 精华:4帖
  • 求助:0帖
  • 帖子:261帖 | 13014回
  • 年度积分:1242
  • 历史总积分:41993
  • 注册:2004年4月26日
发表于:2023-06-09 16:12:17
13楼
都不如国产的方便。信捷的同时通讯也没有什么问题

回复本条

    

121111115

  • [版主]
  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 535回
  • 年度积分:6093
  • 历史总积分:33026
  • 注册:2016年1月20日
发表于:2023-06-12 11:54:11
14楼

引用 "SiegeLion007" 的回复,发表在12楼
        内容: "121111115" 的回复,发表在6楼        对内容: 【你们整这么复杂做什么?写优先每个轮询周期都让他优先不就得了?对于PLC的梯形图扫描周期来讲,他是从上到下从左至右的扫描的,你只要保...

设备很多,如果你想让写操作响应更快的话,在访问每个从站时都执行一次写操作,每次读轮训前都写一遍,这样会快很多,但是需要的指令块就更多了,所以你需要研究如何用间接寻址的方式填充从站指令快。

回复本条

    

冲出枪林弹雨

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 67回
  • 年度积分:0
  • 历史总积分:927
  • 注册:2015年9月04日
发表于:2023-06-12 22:17:40
15楼

早前有做一个40多轴的项目,三菱PLC,伺服主要是三菱的光纤型,步进用了13个雷赛的,对步进轴的要求没有伺服高,但要求实时读取轴的位置速度,以及人员操作任意轴没有延时的感觉;实现这个效果,就需要考虑到数据的采集量以及实时响应用户操作上。

1、波特率尽可能的使用硬件允许的最高频率;

2、485使用双脚屏蔽线,接好地线,避免干扰;

程序方面有下面几点。

第一:配合触摸屏,实现选择性的读取数据,例如当前要显示的数据;

第二:优先响应当前操作轴的写入指令;

第三:其他优先级低的待刷新指令;

优先级:操作指令(自动和手动)> 读取当前显示的数据及反馈位置数据 > 其他待刷新数据


回复本条

    

thestarinsky

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 3回
  • 年度积分:0
  • 历史总积分:144
  • 注册:2017年12月25日
发表于:2023-07-10 00:12:36
16楼

引用 "关育谋" 的回复,发表在3楼
        内容: 读操作轮询执行,每次读操作执行完成后判断有没有写操作,如果有写操作,优先执行写操作;如果没有写操作,执行下一个读操作,依次循环。那么写操作就要预先暂存,将写操作数据暂存,然后预写标志位置位,这个时候一...


这个思路比较好,保证周期读取,及时控制就好了,如果有例程,可以分享大家看一下

回复本条

    

Smile-lyc

  • [管理员]
  • 精华:136帖
  • 求助:53帖
  • 帖子:3592帖 | 22889回
  • 年度积分:755
  • 历史总积分:159146
  • 注册:2006年8月04日
发表于:2023-07-14 16:03:44
17楼

感谢求助者和答疑者对求助答疑板块的厚爱,赠人玫瑰,手留余香。

对于求助者要求:

1、请在一个月内自行结贴,把悬赏积分(如果设置积分悬赏求助)发放给答疑者;

2、如果在求助答疑过程中,自己已经有效解决问题,建议大家把解决问题方法在自己求助帖分享,有效分享可以获得50积分奖励。

3、求助答疑板块版主结贴时间一般滞后30~45天,以方便大家对求助问题答疑足够时间,也为了每一个优秀答疑人员都可以获取到自己的积分和MP奖励。

4、2023加油!!


回复本条

    

SiegeLion007

  • 精华:0帖
  • 求助:3帖
  • 帖子:6帖 | 23回
  • 年度积分:80
  • 历史总积分:80
  • 注册:2023年4月04日
发表于:2023-08-13 13:20:13
18楼

"Smile-lyc" 的回复,发表在16楼
        对内容: 【感谢求助者和答疑者对求助答疑板块的厚爱,赠人玫瑰,手留余香。对于求助者要求:1、请在一个月内自行结贴,把悬赏积分(如果设置积分悬赏求助)发放给答疑者;2、如果在求助答疑过程中,自己已经有效解决问题,建...】进行回复:

        -----------------------------------------------------------------


怎么结帖啊

回复本条

    

Smile-lyc

  • [管理员]
  • 精华:136帖
  • 求助:53帖
  • 帖子:3592帖 | 22889回
  • 年度积分:755
  • 历史总积分:159146
  • 注册:2006年8月04日
发表于:2023-08-13 16:52:44
19楼

引用 "SiegeLion007" 的回复,发表在17楼
        内容: "Smile-lyc" 的回复,发表在16楼        对内容: 【感谢求助者和答疑者对求助答疑板块的厚爱,赠人玫瑰,手留余香。对于求助者要求:1、请在一个月内自行结贴,把悬赏积分(如果设置积分悬...



悬赏贴如何结贴?这里看过来!

http://bbs.gongkong.com/d/201810/772613/772613_1.shtml  



回复本条

    

LayOutNo1

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 43回
  • 年度积分:139
  • 历史总积分:869
  • 注册:2021年11月14日
发表于:2023-10-23 10:14:51
20楼

正好自己也在做需要轮询的项目,学习,感谢。

回复本条

    

热门招聘
相关主题

官方公众号

智造工程师