回复:1500/1200中的Modbus TCP(MB_CLIENT)可以轮询吗

黑猫警长W

西门子1847工业学习平台

  • 帖子

    2587
  • 精华

    1
  • 被关注

    86

论坛等级:至圣

注册时间:2012-03-29

钻石 钻石 如何晋级?

发布于 2019-09-07 13:50:32

5楼

展开查看
以下是引用yzs在2019-09-07 10:50:42的发言 >2楼

举个简单的Modbus案例

发:01 03 04 4C 00 01 44 ED

其中01是地址,03是功能码,04 4C是寄存器(我们常用的40001在原始码中就是00 00)

00 01是需要读取数据的长度,44 ED是CRC校验。

收:01 03 02 43 DA 08 EF

正确接收数据的格式:01是地址,03是功能码,02是数据长度,43 DA是数据,08 EF是CRC校验。

由于485的干扰问题,很容易出现错误的数据或错误的数值,因此我们接收数据的时候就需要对地址,功能码,数据长度及CRC校验来判断这串接收到的数据是否是我们需要的正确数据。

然而在MB_CLIENT的功能块中我们只能读取到的数据是43 DA,前面的01 03 02是读取不到的,如果MB_CLIENT能够严格的判断读取的数据是否正确,如果数据正确则DONE=1和STATUS=0也可以放心的进行数据轮询。可是通过简单的测试发现MB_CLIENT的功能块只能对数据长度做出一个判断,如果数据长度正确了就认为这串数据是正确了,并没有一个严谨的判断这串数据是否是我需要的正确的数据。

比如我发:01 03 04 4C 00 01 44 ED这时收:02 03 02 43 69 0D 5A那么这时MB_CLIENT接收的数据就是43 69而不是我们需要的43 DA了。

很详细,学习了

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有11139条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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