Modbus通讯地址设定 点击:3562 | 回复:4



原创军团-永远的正方

    
  • 精华:16帖
  • 求助:8帖
  • 帖子:149帖 | 1741回
  • 年度积分:0
  • 历史总积分:9919
  • 注册:2011年9月22日
发表于:2012-08-24 12:08:40
楼主
利用Modbus协议可以实现设备间的数据交换。Modbus通讯理论上支持4种Modicon PLC地址,即0*、1*、3* 和4*四种,分别表示开出(中间线圈)、开入、模入、模出(中间寄存器)等数据地址。与西门子或其它设备中的开入、开出、模入、模出地址完全不对应。可以理解为0*和1*对应位地址的读写操作,3* 和4*字地址的读写操作。
此处0*、1*、3* 和4*表示长度有的为5位数字、有的为6位,其实和Modbus通讯无关,只是和软件的表示方式有关。
按照Modbus通讯时最常用的是RTU读请求格式:
从站地址(1个字节)、功能代码(1个字节)、从站数据起始地址(2个字节)、读数据长度(2个字节)、CRC校验(2个字节)
可见,只需设置起始从站数据区起始地址和通讯长度即可。
特别注意,Modbus地址遵从IEC1的地址标准(最小地址为*1),西门子遵从IEC0的标准(最小地址为0,如M0.0)。因此,不同标准的地址做通讯时需要做地址变换,即加1的操作。



artgood

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 128回
  • 年度积分:0
  • 历史总积分:714
  • 注册:2012年5月25日
发表于:2012-08-24 16:22:11
1楼
介绍得好详细。需要这种模块的可以联系我

余 辉

  • [版主]
  • 精华:53帖
  • 求助:44帖
  • 帖子:3350帖 | 28451回
  • 年度积分:603
  • 历史总积分:131640
  • 注册:2006年4月25日
发表于:2012-08-24 17:17:13
2楼

向楼主学习  自己不懂的地方

LUKAI212

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 10回
  • 年度积分:0
  • 历史总积分:161
  • 注册:2013年1月09日
发表于:2013-01-15 09:50:05
3楼
如果用51系列单片机编程实现通讯          地址起始位需要在程序中写出吗?我下载了一个程序里面没有声明,很不懂,求指教

建议删除该帖

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 580回
  • 年度积分:0
  • 历史总积分:2884
  • 注册:2010年9月08日
发表于:2013-01-15 10:50:34
4楼
引用 LUKAI212 的回复内容:如果用51系列单片机编程实现通讯          地址起始位需要在程序中写出吗?我下载了一个程序里面没有声明,很不懂,求指教



去搜索“WEINVIEW Modbus功能码测试.pdf”,需要注意的是它的位读指令都是从逢8或者0开头,而通用的MODBUS RTU不会这样凑巧的,换到其他的设备可能不兼容

热门招聘
相关主题

官方公众号

智造工程师