第32卷第1期 2006年1月中国测试技术
C HINA MEASUREME NT TECHNOLOGY
Vol . 32 No . 1Jan , 2006
基于R S485物理层的MODBus JBus 现场总线通信协议
阳 军, 唐臻宇, 唐昌建
(四川大学物理科学与技术学院, 四川成都610065)
摘 要:本文描述了在现场总线控制系统中, 按照基于RS485物理层的MODBus JBus 现场总线通信协议, 采用主机 从机原理和远程终端单元(RTU ) 模式, 实现主机和从机之间的数据通信, 通过对从机上相应的内存单元的读写来适时获取和改变设备参数, 以实现工业自动化系统中对设备的适时控制。并通过实验完成了与德国JUMO 公司开发的紧凑型微处理控制器dTRON04. 1的通信, 验证了该协议的可行性和可靠性。
关键词:现场总线控制系统; MODBus JBus ; 通信协议中图分类号:TN911. 23 文献标识码:A 文章编号:1672-4984(2006) 01-0092-03
Field -bus communication protocol of JBus MODBus based on RS 485
YANG Jun , TANG Zhen -yu , TANG Chang -jian
(College of Physical Science and Technology , Sichuan University , Chengdu 610065, China )
Abstract :This paper presented a way to carry out the communication between a PC (master ) and an instrument (slave ) using
MODbus Jbus based on RS485in the FCS (Field -bus control system ) . The communication based on the master -slave principle and the transfer mode of Remote Terminal Unit (RTU ) . B y reading or writing the appropriate memory unit in the slave s EEPROM , it can obtain or change the parameters . So it can carry out the real time control of the instru ment in automation control system in industry . Also the feasibility and reliability of the protocol is validated by experiment of communicating with the compact microprocess or controller dTRON04. 1. Key words :FCS ; MODBus JBus ; Communication protocol
1 引 言
MODBus 协议是美国可编程控制器供应商Modicon 公司制定的一种工业通讯协议, 现在已经被许多工控厂商所支持, 广泛应用于智能仪表、总线控制等领域。其物理层遵循RS —485标准, 主要用于远程控制模块与主机之间的通信, 现已有大量采用MODBus JB us 通信协议的控制模块应用于国内的各种工业控制现场。本文对它们的通信时序, 数据包的格式, 发生通信错误时的处理方法, 校验方法, 主机和从机之间的查询 响应格式, 以及数据流做了详细的介绍和讨论。并利用VB 语言编制了该协议下主机的控制程序, 通过PC 机的RS232接口与一个标准的RS232 RS485转换器, 完成了对德国JUMO 公司开发的dTRON04. 1温度控制模块的控制, 验证了该协议的可行性和可靠性。
JB us , 并遵从主机 从机原理, 数据采用查询 响应的方式。主机控制数据的交换, 从机只具有响应功能。用设备地址对从机进行标识, 有255个不同的从机地址供选用。
2. 2 传输模式
传输模式采用远程终端单元(RTU ) 模式。用二进制格式(十六进制) 传输数据, 有8位、16位整数、32位浮点数。最先传输最低位(LSB ) 。JUMO 数据字节格式(被传输字节的排列形式) 中可以有或没有奇偶校验位, 外加一个停止位(1 2bit ) , 总比特数为9或10。2. 3 设备地址
通过RS422 RS485协议, 由于总线驱动能力有限, 一段总线上最多可以接入31台从机。从机的地址可以被设置为1到31, 地址0是广播地址。主机2 协议描述
2. 1 主机 从机原理
在主机和设备之间的通信采用MODBus 或者
; :16
第32卷第1期
阳 军等:基于RS485物理层的MODBus JBus 现场总线通信协议
93
是指通过对应的从机地址, 主机到从机的查询 响应, 被访问的从机产生应答。广播是指主机通过地
址0对所有从机发送指令, 系统中的从机不产生应答。通过这种方式主机可以把设定值传送到所有的从机, 随后通过对设定值的读出来检查数据是否被从机正确地接收了。2. 4 通信时序
数据包的结束是用传输停顿来标识的。两个连续字符之间所允许的最大时间间隔为字符传输时间(传输一个字符所需时间) 的三倍。若发送完一个字符以后, 总线空闲时间超过了字符传输时间的三倍, 则认为一个数据包已发送完毕。字符传输时间与波特率和所用的的数据字节格式有关。每次数据查询均按照图2中时序进行。
其中, t 0为结束标志, 等于传输3个字符的时间; t 1为从机对数据查询进行处理的时间, 由内部处理程序的需要决定, 但不能超过250ms ; t 2由设备用来将传输状态切换回接收状态, 主机必须等待这段时间然后才能进行新的数据查询。即使是对不同地址的设备进行新的数据查询时, 这段时间也必须维持。一般情况下, t 2≥20ms
。
识所发生的错误的类型。共有五种错误码对发生的错误情况进行描述:(1) 无效的命令; (2) 无效的参数地址; (3) 参数超出有效值的范围之外(参数的合理性未经测试) ; (4) 从机未准备好; (5) 对被保护的参数的写操作。出错情况下从机的应答数据包结构见表2。
表2地址域1字节
功能域XX OR 80h 1字节
错误码1字节
校验域CRC16
2字节
此时, 功能码是与0x80做逻辑“或”运算得到的结果, 即它的最高位是被设置为“1”的。在发生以下错误时从机不产生应答:(1) 校验和(CRC16) 错误; (2) 主机的指令不完整或者是未被定义的指令; (3) 字数或比特数是零。2. 7 MODBus 与JBus 的区别
MODBus 协议与JBus 协议是兼容的, 它们的数据包的结构是相同的。唯一的区别在于它们对数据存储的物理地址的表示相差为“1”。JBus 地址与绝对地址相同, 例如它为1时, MODB us 地址为0。2. 8 校验和(CRC16)
校验和(CRC16) 是用来识别传输错误的。如果在过程中发现了错误, 对应的设备不产生应答。在数据传输时最先传送的是校验和的最低位。CRC 算法NS 图见图3。
在从机进行内部处理和应答期间, 禁止主机进行任何数据查询, 否则数据查询将被从机忽略, 或者将导致在总线上的数据发生冲突。2. 5 数据包的格式
所有的数据包都具有相同的结构, 由四个部分组成, 如表1所示。
表1
地址域
读取n 个字的
命令读取n 个字的
响应写入一个字的命令 响应写入n 个字的命令写入n 个字的响应
1字节
功能域1字节0x03或0x040x03或0x040x060x100x10
首字地址2字节所读字数1字节字地址2字节2字节首字地址2字节数据域n 字节
所读字数(最多为6)
2字节字的值n 字节字的值2字节
字的值n 字节
1字节写入字数校验域2字节
3 数据类型
所支持的数据类型有四种, 分别为:(1) 字符型数据(Char ) :原则上说只有ASCII 字符能被传送。
它们按照在存储器中的存储的先后顺序被传送。(2) 整型数据(Int ) :整型数用2个字节(即1个字) 来表示。在传送时, 高位最先被传送。(3) 浮点型数据(Float ) :浮点数用4个字节(即2个字) 来表示。
首字地址写入字数字节数
2. 6 错误处理
,
94
当主机运行在IEEE -754格式时, 在传送一个浮点数之前, 高字与低字将被交换位置, 以使它们的顺序与MODBus 模式下的表示一致。(4) 字节型数据(B yte ) :此种类型的数据用于表示状态标识符, 它们只能用8bit 的数据来进行传送, 并且在传送时, 要在前面添加一个为零的字节(0x00) 。
中国测试技术
2006年1月
4 主机通信程序
由于JUMO 通信协议简单易行, 用VB 语言编程即可很容易地实现主机的功能。利用VB 的MSC OMM 控件就能很好地监听总线的状态, 完成二进制数据的收发; 利用TI MER 控件可以实现数据帧的识别, 然后交给主控制程序分析。在此仅介
绍一个简单的监控程序, 以实现对总线上数据流的监控, 也可以用其模仿主机向从机发送命令以得到想要的数据或者实现简单的控制。程序NS 图见图4。
题, 使所有设备都能稳定地运行。
参考文献
[1] 张 冰, 苏燕辰. 基于RS485总线技术的微机与智能
仪表的双向通信设计[J ]. 中国测试技术, 2005, 31(1) :84-91.
[2] 王锦标. 现场总线和现场总线控制系统[J ]. 化工自动化及仪表, 1997, 24(2) :3-7. [3] 谢希仁. 计算机网络(第二版) [M ]. 北京:电子工业出
版社, 1999.
[4] JUMO 温度控制器使用手册.
[5] 孟开元. Modbus 通信协议中CRC 校验的快速C 语言算
法[J ]. 福建电脑, 2004, 11:63-64.
[6] 段德权. 现场总线与现场总线控制技术[J ]. 信息技
术, 2003, 27(3) :25-29.
5 结 论
JUMO 通信协议的特点在于对设备参数的读取
和修改是通过直接对相应的存储地址进行操作来完成的, 而且它利用传输停顿来标志帧的结束, 所以该协议简单易行, 很容易实现。另外, 它采用短帧结构, 传输时间短, 受干扰的概率低, 且具有较好的检错效果。采用CRC 校验检错措施, 保证了数据出错率极低。实验证明利用JUMO 通信协议, 能将位于控制系统中心的主站与从站高效、稳定、可靠地连接在一起, 并确保它们之间的通讯和数据交换毫无问
第32卷第1期 2006年1月中国测试技术
C HINA MEASUREME NT TECHNOLOGY
Vol . 32 No . 1Jan , 2006
基于R S485物理层的MODBus JBus 现场总线通信协议
阳 军, 唐臻宇, 唐昌建
(四川大学物理科学与技术学院, 四川成都610065)
摘 要:本文描述了在现场总线控制系统中, 按照基于RS485物理层的MODBus JBus 现场总线通信协议, 采用主机 从机原理和远程终端单元(RTU ) 模式, 实现主机和从机之间的数据通信, 通过对从机上相应的内存单元的读写来适时获取和改变设备参数, 以实现工业自动化系统中对设备的适时控制。并通过实验完成了与德国JUMO 公司开发的紧凑型微处理控制器dTRON04. 1的通信, 验证了该协议的可行性和可靠性。
关键词:现场总线控制系统; MODBus JBus ; 通信协议中图分类号:TN911. 23 文献标识码:A 文章编号:1672-4984(2006) 01-0092-03
Field -bus communication protocol of JBus MODBus based on RS 485
YANG Jun , TANG Zhen -yu , TANG Chang -jian
(College of Physical Science and Technology , Sichuan University , Chengdu 610065, China )
Abstract :This paper presented a way to carry out the communication between a PC (master ) and an instrument (slave ) using
MODbus Jbus based on RS485in the FCS (Field -bus control system ) . The communication based on the master -slave principle and the transfer mode of Remote Terminal Unit (RTU ) . B y reading or writing the appropriate memory unit in the slave s EEPROM , it can obtain or change the parameters . So it can carry out the real time control of the instru ment in automation control system in industry . Also the feasibility and reliability of the protocol is validated by experiment of communicating with the compact microprocess or controller dTRON04. 1. Key words :FCS ; MODBus JBus ; Communication protocol
1 引 言
MODBus 协议是美国可编程控制器供应商Modicon 公司制定的一种工业通讯协议, 现在已经被许多工控厂商所支持, 广泛应用于智能仪表、总线控制等领域。其物理层遵循RS —485标准, 主要用于远程控制模块与主机之间的通信, 现已有大量采用MODBus JB us 通信协议的控制模块应用于国内的各种工业控制现场。本文对它们的通信时序, 数据包的格式, 发生通信错误时的处理方法, 校验方法, 主机和从机之间的查询 响应格式, 以及数据流做了详细的介绍和讨论。并利用VB 语言编制了该协议下主机的控制程序, 通过PC 机的RS232接口与一个标准的RS232 RS485转换器, 完成了对德国JUMO 公司开发的dTRON04. 1温度控制模块的控制, 验证了该协议的可行性和可靠性。
JB us , 并遵从主机 从机原理, 数据采用查询 响应的方式。主机控制数据的交换, 从机只具有响应功能。用设备地址对从机进行标识, 有255个不同的从机地址供选用。
2. 2 传输模式
传输模式采用远程终端单元(RTU ) 模式。用二进制格式(十六进制) 传输数据, 有8位、16位整数、32位浮点数。最先传输最低位(LSB ) 。JUMO 数据字节格式(被传输字节的排列形式) 中可以有或没有奇偶校验位, 外加一个停止位(1 2bit ) , 总比特数为9或10。2. 3 设备地址
通过RS422 RS485协议, 由于总线驱动能力有限, 一段总线上最多可以接入31台从机。从机的地址可以被设置为1到31, 地址0是广播地址。主机2 协议描述
2. 1 主机 从机原理
在主机和设备之间的通信采用MODBus 或者
; :16
第32卷第1期
阳 军等:基于RS485物理层的MODBus JBus 现场总线通信协议
93
是指通过对应的从机地址, 主机到从机的查询 响应, 被访问的从机产生应答。广播是指主机通过地
址0对所有从机发送指令, 系统中的从机不产生应答。通过这种方式主机可以把设定值传送到所有的从机, 随后通过对设定值的读出来检查数据是否被从机正确地接收了。2. 4 通信时序
数据包的结束是用传输停顿来标识的。两个连续字符之间所允许的最大时间间隔为字符传输时间(传输一个字符所需时间) 的三倍。若发送完一个字符以后, 总线空闲时间超过了字符传输时间的三倍, 则认为一个数据包已发送完毕。字符传输时间与波特率和所用的的数据字节格式有关。每次数据查询均按照图2中时序进行。
其中, t 0为结束标志, 等于传输3个字符的时间; t 1为从机对数据查询进行处理的时间, 由内部处理程序的需要决定, 但不能超过250ms ; t 2由设备用来将传输状态切换回接收状态, 主机必须等待这段时间然后才能进行新的数据查询。即使是对不同地址的设备进行新的数据查询时, 这段时间也必须维持。一般情况下, t 2≥20ms
。
识所发生的错误的类型。共有五种错误码对发生的错误情况进行描述:(1) 无效的命令; (2) 无效的参数地址; (3) 参数超出有效值的范围之外(参数的合理性未经测试) ; (4) 从机未准备好; (5) 对被保护的参数的写操作。出错情况下从机的应答数据包结构见表2。
表2地址域1字节
功能域XX OR 80h 1字节
错误码1字节
校验域CRC16
2字节
此时, 功能码是与0x80做逻辑“或”运算得到的结果, 即它的最高位是被设置为“1”的。在发生以下错误时从机不产生应答:(1) 校验和(CRC16) 错误; (2) 主机的指令不完整或者是未被定义的指令; (3) 字数或比特数是零。2. 7 MODBus 与JBus 的区别
MODBus 协议与JBus 协议是兼容的, 它们的数据包的结构是相同的。唯一的区别在于它们对数据存储的物理地址的表示相差为“1”。JBus 地址与绝对地址相同, 例如它为1时, MODB us 地址为0。2. 8 校验和(CRC16)
校验和(CRC16) 是用来识别传输错误的。如果在过程中发现了错误, 对应的设备不产生应答。在数据传输时最先传送的是校验和的最低位。CRC 算法NS 图见图3。
在从机进行内部处理和应答期间, 禁止主机进行任何数据查询, 否则数据查询将被从机忽略, 或者将导致在总线上的数据发生冲突。2. 5 数据包的格式
所有的数据包都具有相同的结构, 由四个部分组成, 如表1所示。
表1
地址域
读取n 个字的
命令读取n 个字的
响应写入一个字的命令 响应写入n 个字的命令写入n 个字的响应
1字节
功能域1字节0x03或0x040x03或0x040x060x100x10
首字地址2字节所读字数1字节字地址2字节2字节首字地址2字节数据域n 字节
所读字数(最多为6)
2字节字的值n 字节字的值2字节
字的值n 字节
1字节写入字数校验域2字节
3 数据类型
所支持的数据类型有四种, 分别为:(1) 字符型数据(Char ) :原则上说只有ASCII 字符能被传送。
它们按照在存储器中的存储的先后顺序被传送。(2) 整型数据(Int ) :整型数用2个字节(即1个字) 来表示。在传送时, 高位最先被传送。(3) 浮点型数据(Float ) :浮点数用4个字节(即2个字) 来表示。
首字地址写入字数字节数
2. 6 错误处理
,
94
当主机运行在IEEE -754格式时, 在传送一个浮点数之前, 高字与低字将被交换位置, 以使它们的顺序与MODBus 模式下的表示一致。(4) 字节型数据(B yte ) :此种类型的数据用于表示状态标识符, 它们只能用8bit 的数据来进行传送, 并且在传送时, 要在前面添加一个为零的字节(0x00) 。
中国测试技术
2006年1月
4 主机通信程序
由于JUMO 通信协议简单易行, 用VB 语言编程即可很容易地实现主机的功能。利用VB 的MSC OMM 控件就能很好地监听总线的状态, 完成二进制数据的收发; 利用TI MER 控件可以实现数据帧的识别, 然后交给主控制程序分析。在此仅介
绍一个简单的监控程序, 以实现对总线上数据流的监控, 也可以用其模仿主机向从机发送命令以得到想要的数据或者实现简单的控制。程序NS 图见图4。
题, 使所有设备都能稳定地运行。
参考文献
[1] 张 冰, 苏燕辰. 基于RS485总线技术的微机与智能
仪表的双向通信设计[J ]. 中国测试技术, 2005, 31(1) :84-91.
[2] 王锦标. 现场总线和现场总线控制系统[J ]. 化工自动化及仪表, 1997, 24(2) :3-7. [3] 谢希仁. 计算机网络(第二版) [M ]. 北京:电子工业出
版社, 1999.
[4] JUMO 温度控制器使用手册.
[5] 孟开元. Modbus 通信协议中CRC 校验的快速C 语言算
法[J ]. 福建电脑, 2004, 11:63-64.
[6] 段德权. 现场总线与现场总线控制技术[J ]. 信息技
术, 2003, 27(3) :25-29.
5 结 论
JUMO 通信协议的特点在于对设备参数的读取
和修改是通过直接对相应的存储地址进行操作来完成的, 而且它利用传输停顿来标志帧的结束, 所以该协议简单易行, 很容易实现。另外, 它采用短帧结构, 传输时间短, 受干扰的概率低, 且具有较好的检错效果。采用CRC 校验检错措施, 保证了数据出错率极低。实验证明利用JUMO 通信协议, 能将位于控制系统中心的主站与从站高效、稳定、可靠地连接在一起, 并确保它们之间的通讯和数据交换毫无问