回复:关于modbus轮询子程序数据结构的探讨

已锁定

阳春节拍

  • 帖子

    382
  • 精华

    2
  • 被关注

    5

论坛等级:侠士

注册时间:2023-03-01

钻石 钻石 如何晋级?

发布于 2023-08-02 16:29:44

5楼

展开查看
以下是引用迷失中原在2023-07-24 10:34:48的发言 >4楼

你的思路,只能是简化程序,但是并不能简化接收地址区!正常发送是不占用单独的地址区,但是接收必须要有独立的地址区,通讯周期是有可能小于扫描周期的,一个周期可能多次通讯!真想省空间,就用自由口,起码不需要库地址。此外,返回一个浮点数,便准字节不到10个,50组数据500字节足够了!

485主站通讯周期不可能小于扫描周期。1、程序需要下个周期的本指令处才会处理返回的数据,然后释放通讯信道,并置相应done和error;2、一个扫描周期内,不可能有一个以上的msg指令的done位是0。


接收和发送地址区都是可以简化的,比如我最开始提到的目标数据区,配合数据长度和连续站号。


RTU用自由口用点哈哈


你可能没理解我说的数据结构的含义,1K字节地址支持50组数据,每组数据,都可能读或写几K字节数据出来,毕竟一组数据就可以读连续的一百多个从站,每个从站又可以读一二百字节。


如某行为数量3、站号10,长度2、站址40001、目标10,则会依次写站号10、11、12(长度站址相同),写的源数值分别为VW10、VW12、VW14。

如某行数量102、站号10,长度4、站址40001、目标0,则会依次读站号10、11(长度站址相同),并在每次读后返回对应D目标=&VB0、&VB4。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有8941条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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