技术论坛

 Modbus通讯说明

返回主题列表
作者 主题
wb210xa
侠士

经验值:1394
发帖数:354
精华帖:18
楼主    2011-05-23 18:17:07
主题:Modbus通讯说明 精华帖 
在坛子中看到很多弟兄们在做modbus通讯时遇到很多问题,包括modbus的请求或响应的基本知识,包括编程等等,现将我的一点拙见写出来,供大家参考和批评指正。
modbus协议最早有施耐德旗下的Modicon公司与1978年提出,目前已经称为国际标准和国家、行业标准。
该协议是典型的串行通讯协议,支持CRC或LRC校验。通讯速率支持2.4kbps~115.2kbps,更快也可以,但是误码率较高。支持RTU或ASCII通讯凡是,支持奇/偶/无校验。
RTU通讯时标准通讯参数为支持8个数据位、1个停止位、偶校验;
ASCII通讯时标准通讯参数为支持7个数据位、1个停止位、偶校验;
modbus总线理论上支持的从站个数可达248个(单条总线、不加中继时连接的设备个数与通讯端口和连接的设备有关,有的可连接16个设备,最大连接32个设备),不加中继双绞线距离可达1200米。
modbus通讯时最常用的是RTU通讯方式:
1.通讯时读请求格式如下:
从站地址(1个字节)、功能代码(1个字节)、从站数据起始地址(2个字节)、读数据长度(2个字节)、CRC校验(2个字节)。
2.读响应格式如下:
从站地址(1个字节)、功能代码(1个字节)、读数据长度(1个字节)、数据(长度与数据长度中的字节数相同)、CRC校验(2个字节)。
3. 写请求格式:
从站地址(1个字节)、功能代码(1个字节)、从站数据起始地址(2个字节)、写出数据长度(1个字节)、写出数据(长度与数据长度字节相同)、CRC校验(2个字节)。
4. 写响应格式:
从站地址(1个字节)、功能代码(1个字节)、从站数据起始地址(2个字节)、写数据长度(2个字节)、CRC校验(2个字节)。
如果为RTU通讯,校验方式为CRC校验;ASCII通讯时,校验方式为LRC校验方式。
豆豆
新湖长
侠圣

经验值:3109
发帖数:581
精华帖:15
12楼    2011-05-23 22:37:05
精华帖  主题:回复:Modbus通讯说明
学习。
刚开始应用modbus通讯的时候,犯过错,拿出来分享下。
功能码 03 16 对应的 4***x(寄存器) 应用最多。
一般起始地址对应的40001。 例如仪表的地址是0x1F0 。容易对应成40496 。实际是40497.
哪有狂澜不能力挽
xiangping
游士

经验值:236
发帖数:145
精华帖:2
52楼    2011-06-10 17:57:01
精华帖  主题:回复:Modbus通讯说明
控制器可使用ASCII或RTU通讯模式,在标准modbus上通讯。在配置每台控制器时,用户须选择通讯模式以及串行口的通讯参数。(波特率,奇偶校验等),在modbus总线上的所有设备应具有相同的通讯模式和串行通讯参数。
选择ASCII或RTU模式用于标准的modbus总线。它定义了总线上串行传输信息区的“位”的含义,决定信息打包及解码方法。
ASCII 模式
当控制器以ASCII模式在modbus总线上进行通讯时,一个信息中的每8位字节作为2个ASCII字符传输的,这种模式的主要优点是允许字符之间的时间间隔长达IS,也不会出现错误。
ASCII码每一个字节的格式:
编码系统: 16进制,ASCII字符0-9,A-F 1个16进制
数据位: 1起始位 7位数据,低位先送 奇/偶校验时1位;无奇偶校验时0位
(LRC)1位带校验1停止位;无校验2止位
错误校验区: 纵向冗余校验
RTU模式
控制器以RTU模式在modbus总线上进行通讯时,信息中的每8位字节分成2个4位16进制的字符,该模式的主要优点是在相同波特率下其传输的字符的密度高于ASCII模式,每个信息必须连续传输。
RTU模式中每个字节的格式: 编码系统:8位二进制,十六进制0-9,A-F
数据位: 1起始位 8位数据,低位先送 奇/偶校验时1位;无奇偶校验时0位 停止位1位(带校验);停止位2位(无校验)
带校验时1位停止位;无校验时2位停止位
错误校验区:循环冗余校验(CRC)
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。