技术论坛

 分享一个ModbusRTU轮询方式

返回主题列表
作者 主题
众生芸芸
游侠

经验值: 405
发帖数: 31
精华帖: 1
楼主    2022-09-04 18:20:45
主题:分享一个ModbusRTU轮询方式 精华帖 

    分享一个用起来挺好用的轮询方式,首先是轮询的初始化及端口的初始化:


    这里利用了一个循环左移指令,可以根据需要换成字循环左移或者是双字循环左移,如果32个操作还不够用的话,可以利用左移指令相互连接的方式进行扩展。


然后是操作指令:


可以发现,所有操作都用同一个完成位,完成位置1则进行循环移位。

触发操作指令则完成位置0,操作完成后,完成位置1,则下一个周期触发移位。

当移位到未使用的轮询点后,因为该轮询点不能通过操作指令使完成位置0。

所以每个周期会进行一次移位,当循环回第一个位之后,又能通过操作指令

使完成位置0,如此自动循环轮询。

当需要新增操作的时候,只需要将上一个操作复制过来,改一下轮询点地址。

以及从站地址、读写操作、数据地址、数据长度及缓存区即可。完成位地址

和错误信息地址不需要更改。

如果需要提取错误信息则每一个操作后加上以下程序:


提取哪一个操作的错误信息,则用该操作的触发地址加上完成位的上升沿提取。


这种轮询方式,因为完成位用的都是一个地址,所以可以检测这个地址的变化,当该地址为1或者为0超过一定的时间之后,可以重新触发轮询,以防轮询死机。

最后附上程序:

一个是循环移位做的轮询,一个是移位连接做的,用循环移位最多可以做32的操作,如果不够就用移位连接,想连接多少连接多少。

循环移位轮询.zip


四枫院月泽
侠圣

经验值: 4369
发帖数: 1563
精华帖: 1
1楼    2022-09-04 20:42:40
主题:回复:分享一个ModbusRTU轮询方式

   可以哦    8路不够  还能用16位   32位

已经到了儿时羡慕的年纪,却没能成为儿时羡慕的人!
最小
侠客

经验值: 768
发帖数: 95
精华帖: 0
2楼    2022-09-04 21:50:31
主题:回复:分享一个ModbusRTU轮询方式

有创意!很有创意的玩法!

Laohuai
至圣

经验值: 17410
发帖数: 6227
精华帖: 18
3楼    2022-09-04 23:01:17
主题:回复:分享一个ModbusRTU轮询方式

方法不错,比常规的减少了很多程序,每执行一个MSG多一个扫描周期时间,这个时间可以忽略不计。但还要试验来验证。

众生芸芸
游侠

经验值: 405
发帖数: 31
精华帖: 1
4楼    2022-09-04 23:29:54
主题:回复:分享一个ModbusRTU轮询方式

嗯,实际应用过两次了,效果还可以,只要扫描周期不是太长的话。而且,还是因为只有一个完成位地址,可以很方便的在收到完成位完成信号之后,中断读轮询,插入写操作,然后重启读轮询,不让写操作参与轮询,读取效率还高一些。

holdkcsxyz
至圣

经验值: 12949
发帖数: 1803
精华帖: 22
5楼    2022-09-05 09:03:20
主题:回复:分享一个ModbusRTU轮询方式

总体不错,比较简洁,还要实践测试下

芳季
至圣

经验值: 66284
发帖数: 14658
精华帖: 100
6楼    2022-09-05 09:16:46
主题:回复:分享一个ModbusRTU轮询方式

固定轮询可以。

怎么我总遇不上固定轮询的设备的?

你们通讯都是读写些什么设备啊?是30个温度表吗?

怎么都可以优哉游哉地轮询的?

0615317263
至圣

经验值: 18763
发帖数: 4052
精华帖: 2
7楼    2022-09-05 09:26:30
主题:回复:分享一个ModbusRTU轮询方式

轮询的应用,降低了设备投资成本。这个方法蛮好的。。。

众生芸芸
游侠

经验值: 405
发帖数: 31
精华帖: 1
8楼    2022-09-05 09:28:55
主题:回复:分享一个ModbusRTU轮询方式

哈哈哈,这可就没准了,温度、称重、变频器、仪表、软起都有,这个做成只读的轮询,写操作插队也挺容易的。

200smart没有数组,没有结构体没有UDT,用指针做参数遍历不是太爽,地址还得算算,所以就简单的轮询一下意思意思就行了。

看雪001
至圣

经验值: 19297
发帖数: 2065
精华帖: 72
9楼    2022-09-05 10:04:45
主题:回复:分享一个ModbusRTU轮询方式

就是用移位指令替代复位和置位指令。

不常用的读写通信还是要有中断轮询,插入分支,按任务优先级使用通信资源


大道至简,知易行难
众生芸芸
游侠

经验值: 405
发帖数: 31
精华帖: 1
10楼    2022-09-05 10:30:03
主题:回复:分享一个ModbusRTU轮询方式

完成位统一了,再做写入插队,很简单了。。

天芯
至圣

经验值: 18638
发帖数: 2092
精华帖: 0
11楼    2022-09-05 11:45:30
主题:回复:分享一个ModbusRTU轮询方式

不错哦,跟着学习

芳季
至圣

经验值: 66284
发帖数: 14658
精华帖: 100
12楼    2022-09-05 12:40:12
主题:回复:分享一个ModbusRTU轮询方式

感觉你说这些都是可以固定轮询的。没有什么事是赶紧做的。

hf1
奇侠

经验值: 8029
发帖数: 1390
精华帖: 3
13楼    2022-09-05 14:47:44
主题:回复:分享一个ModbusRTU轮询方式

感谢分享,学习了,用移位指令替代复位和置位指令,提高效率!

众生芸芸
游侠

经验值: 405
发帖数: 31
精华帖: 1
14楼    2022-09-05 15:53:00
主题:回复:分享一个ModbusRTU轮询方式

嗯,重要的数据和操作也不会用RTU做,这些里面也就称重的去皮有可能要求实时性高一点,其他的随意轮询,一般不怎么会用RTU取关键数据。

Ready_OK
至圣

经验值: 15522
发帖数: 1734
精华帖: 0
15楼    2022-09-05 16:17:38
主题:回复:分享一个ModbusRTU轮询方式

 

经典方法,减少了很多程序!

海纳百川,厚德务实!
rain_why
侠士

经验值: 1600
发帖数: 193
精华帖: 1
16楼    2022-09-05 16:49:34
主题:回复:分享一个ModbusRTU轮询方式



感谢楼主分享

好好学习,天天向上
风为友
侠士

经验值: 1956
发帖数: 128
精华帖: 1
17楼    2022-09-06 07:00:19
主题:回复:分享一个ModbusRTU轮询方式

好思路,学习了

日拱一卒
MSF数控维修
侠圣

经验值: 2808
发帖数: 158
精华帖: 0
18楼    2022-09-06 07:54:38
主题:回复:分享一个ModbusRTU轮询方式

有想法,有思路

工控女将
侠圣

经验值: 4232
发帖数: 344
精华帖: 1
19楼    2022-09-06 13:24:06
主题:回复:分享一个ModbusRTU轮询方式


想法不错,值得实际验证一下

理想很丰满,现实很骨感
zzyyw
游民

经验值: 149
发帖数: 1
精华帖: 0
20楼    2022-09-07 08:18:44
主题:回复:分享一个ModbusRTU轮询方式

想法简单方便,需要上机测试

onedayonce
侠客

经验值: 661
发帖数: 39
精华帖: 0
21楼    2022-09-07 17:58:01
主题:回复:分享一个ModbusRTU轮询方式

学习学习,辛苦了

共同进步
zbhdm
至圣

经验值: 12452
发帖数: 1552
精华帖: 1
22楼    2022-09-08 08:17:27
主题:回复:分享一个ModbusRTU轮询方式

学习了,谢谢楼主!

努力学习西门子
xiatianyun
侠圣

经验值: 4834
发帖数: 735
精华帖: 10
23楼    2022-09-10 20:47:54
主题:回复:分享一个ModbusRTU轮询方式

看你们写得都好简单,我写得怎么这么复杂呢?

Laohuai
至圣

经验值: 17410
发帖数: 6227
精华帖: 18
24楼    2022-09-10 21:41:36
主题:回复:分享一个ModbusRTU轮询方式

这是不是编程序的一个目的?越简单达到目的就是最好。

一世芳华
侠客

经验值: 644
发帖数: 39
精华帖: 0
25楼    2022-09-11 09:03:01
主题:回复:分享一个ModbusRTU轮询方式


这个思路相当好

十十万个为什么
游士

经验值: 232
发帖数: 14
精华帖: 0
26楼    2022-09-12 18:29:21
主题:回复:分享一个ModbusRTU轮询方式

这样会不会卡住,就是通讯报错的时候,还能一左移吗?

秀空
奇侠

经验值: 7767
发帖数: 883
精华帖: 0
27楼    2022-09-14 17:25:36
主题:回复:分享一个ModbusRTU轮询方式

如果通信有问题,完成位没有,是不是了浪费时间。

九漏之鱼
新手

经验值: 43
发帖数: 1
精华帖: 0
28楼    2022-09-14 22:19:35
主题:回复:分享一个ModbusRTU轮询方式

方法很好,感谢分享

wozuile01
侠士

经验值: 1096
发帖数: 123
精华帖: 0
29楼    2022-09-15 17:31:11
主题:回复:分享一个ModbusRTU轮询方式

思路决定出路

LZG123
侠圣

经验值: 4428
发帖数: 36
精华帖: 0
30楼    2022-09-18 08:20:19
主题:回复:分享一个ModbusRTU轮询方式

不错,学习了。有时间试一试

lzm
奇侠

经验值: 8672
发帖数: 1294
精华帖: 8
31楼    2022-09-18 20:36:04
主题:回复:分享一个ModbusRTU轮询方式

可有轮询时间的测试结果?

Querer es poder! 修福粒米藏日月 持慧毫芒有乾坤
兼山艮
游民

经验值: 130
发帖数: 15
精华帖: 0
32楼    2022-09-19 20:36:27
主题:回复:分享一个ModbusRTU轮询方式

这个方法我也用了,最早在B站看到的还挺好用的 。

天雷无妄
聿舟工控
侠士

经验值: 1353
发帖数: 184
精华帖: 2
33楼    2022-09-20 22:46:49
主题:回复:分享一个ModbusRTU轮询方式

轮询的主要问题是速度问题,不同的设备,共用一个COM口,轮询多了之后速度是很慢的

学无止境,永远保持一颗谦虚上进的心。
JeffKwong
游士

经验值: 177
发帖数: 6
精华帖: 0
37楼    2022-09-23 09:49:50
主题:回复:分享一个ModbusRTU轮询方式

整个SCL语言版的话会更好一些,好贴子,学习一下。

向往诗和远方不如立即出发!
手机用户20220315406588
新手

经验值: 29
发帖数: 2
精华帖: 0
38楼    2022-09-26 00:08:23
主题:回复:分享一个ModbusRTU轮询方式

楼主只是分享,好不好用各位自己去验证!在下认为不怎么好用!

倔强萝卜
游士

经验值: 252
发帖数: 9
精华帖: 0
39楼    2022-09-26 09:41:21
主题:回复:分享一个ModbusRTU轮询方式

对于数据要实时精准,轮的误差率较,特别是计量精准不适合。

您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。