[应用相关] stm32关于modbus通讯的问题

[复制链接]
1337|10
 楼主| CaLipton 发表于 2018-4-21 11:53 | 显示全部楼层 |阅读模式
stm32 做modbus通讯协议时,当主机给一个从机发信息,其他从机也会收到这条消息吗
hxfxt 发表于 2018-4-21 12:33 | 显示全部楼层
应该会收到,但是地址不一样这个报文就丢弃了
Lewisnx 发表于 2018-4-21 15:03 | 显示全部楼层

会同时收到这帧数据,但是每个从机,会判断自己的地址和主机发送的地址是否相同
CCompton 发表于 2018-4-21 15:12 | 显示全部楼层
如果相同则接受功能位和数据位并进行CRC校验,否则放弃
Richardd 发表于 2018-4-21 15:23 | 显示全部楼层
是做过实验确认每个从机都收到信息了  还是在什么的地方见到过
Mattheww 发表于 2018-4-21 15:36 | 显示全部楼层
当发送00地址时全部都能收到,否则就是发的那个地址,相应的从机作出回应
Erichk 发表于 2018-4-21 15:46 | 显示全部楼层
当发00时,所有的主机都能收到  ,发其他地址时,应该是只有对应从机能响应,但是其他从机不响应,并不代表没有接受到数据,只是地址不对没响应而已,不知道我的理解对不对。
Thorald 发表于 2018-4-21 15:59 | 显示全部楼层
可否分享一下程序源码参考一下
Bjorn 发表于 2018-4-21 16:17 | 显示全部楼层
无论怎么定协议,物理特性上都决定了每一个从机都会收到主机发送的数据,协议可以帮助确定哪些数据需要哪个从机响应,不需要响应的就按兵不动就OK了
Rollo 发表于 2018-4-21 16:55 | 显示全部楼层
if ((buf[0] == 0XAA)&&(buf[3] == Slave_Reg.regSlave[1]))//核对帧头和地址
    {
      crc = GetCRC16(buf, 1+buf[2]);
      crch = crc >> 8;
      crcl = crc & 0xFF;
      if ((buf[len-2] == crch) && (buf[len-1] == crcl))
      {
末日行者 发表于 2018-4-22 21:57 | 显示全部楼层
其他从机也肯定会接收到主机发来了请求报文,这就是为什么请求报文里面会有个设备地址,从机收到不是自己设备地址的请求报文时是不会返回响应的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

126

主题

369

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部