SMART的MODBUS轮询新方法-更新及说明

已锁定

手机用户20221013861520

  • 帖子

    30
  • 精华

    0
  • 被关注

    4

论坛等级:游士

注册时间:2022-10-13

白金 白金 如何晋级?

SMART的MODBUS轮询新方法-更新及说明

8500

22

2024-01-29 15:50:21

Lib.rar

原贴见:https://www.ad.siemens.com.cn/club/bbs/post_1872900_64_0_31.html#anch



由于原MODBUS轮询库是基于200的源码修改,使用上有一些和SMART原版库不一致的地方(不支持PORT 1,不支持>400000的寄存器地址),现由网友“不欲勿施”提供SMART源码,修改更正发布第二版。已测试。若有问题,请回贴。

此版包含两个库文件,对应原版的两个MODBUS库。也即是说,使用这版如果你的SMART PLC有两个串口,可以两个串口同时作MODBUS 主站,进行通讯。如果没有此需求,可以使用上一版库。

顺便说一下此库编程思路。

此库不维护通讯需要轮询的数组。库中有一个位RING,表示是否有某条MSG正在占用。

CTRL初始化后,程序第一条MSG检查RING,发现未占用,则置位RING,并置位其IN_OUT变量myRING.(为什么要有myRING,各位可以自己思考一下),然后是正常的MODBUS状态机,直到结束。结束后,复位RING,复位myRING.其下一条EN=TRUE的MSG发现RING已未占用。则执行相同的操作。如在过程中,RING=TRUE,且myRING=FALSE,MSG直接RET。此过程和多线程程序编写有异曲同工之处。

若是普通的轮询操作,可以以SM0.0顺序调用MSG指令即可!

若要控制MSG的优先级,可以控制MSG的EN。可利用之处包括:

若某条信息急需处理,则可置一个位,令其它MSG的En不能为TRUE。

若某条信息可以延时处理,则可以在此信息处理过后,延时使其EN=TRUE

注意:myRING=TRUE表示此信息已经在处理中,此时不要(也不能)更改其EN。


SMART的MODBUS轮询新方法-更新及说明 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有8933条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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