分享一个ModbusRTU轮询方式

已锁定

众生芸芸

  • 帖子

    31
  • 精华

    1
  • 被关注

    8

论坛等级:游侠

注册时间:2020-09-22

普通 普通 如何晋级?

分享一个ModbusRTU轮询方式

16331

65

2022-09-04 18:20:45

star star star star

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


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


然后是操作指令:


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

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

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

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

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

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

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

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

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


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


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

最后附上程序:

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

循环移位轮询.zip


分享一个ModbusRTU轮询方式 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有7476条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

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