【摘 要】 本文介绍了在工业控制系统中广泛使用的ModBus通信协议。以ModBus的ASCII方式为例,剖析了ModBus的指令结构,着重说明基于ModBus通信协议的设备之间如何进行数据通信、如何使用ModBus通信协议把衡器接入PLC系统,并简单介绍了PLC系统与局域网的互联。
【关键词】 ModBus通信协议;PLC可编程控制器;衡器
在衡器行业中,但凡涉及串行通信时,工程师们都会有一种无奈,就是通信协议问题。由于我国衡器厂众多,各自采用自己的通信协议,使得通信协议五花八门,互不兼容。由于是自成一体,也为后续与其他系统联网、维修、仪表配件互换等留有后遗问题。若采用一种工业控制领域的主流协议,各衡器厂的通信协议都与这个主流协议兼容,那么上述问题自然迎刃而解。这个主流协议*ModBus。
一、什么是ModBus
ModBus是一种通信协议,是由Modicon公司发表于1979年,主要用于PLC(可编程逻辑控制器)系统。目前,在工业自动化设备通信连接中,ModBus已是相当常见的一种连接方式。
二、ModBus与其他通信协议比较
1、物理层简单、价廉:ModBus可以在常用且廉价的RS232、RS485等物理媒介上运行,不像CanBus、ProfiBus、BitBus等需昂贵的芯片支持。
2、免费:ModBus是一种公开的,可以无偿使用的协议。而使用ProfiBus则需要向有关组织登记缴费。
3、使用普及:ModBus是当前工业控制中使用zui广的一种通信协议,基于这点,具有ModBus的设备接入工控系统相对容易。
4、维护方便:由于接入ModBus总线相对其他工控总线而言,比较简单。一般具有RS232、RS485等串行口的PC机都可以接入,使用PC机自带的超级终端软件或其他串行控制软件,就能观察ModBus通信过程,可以很方便地查出故障站点。
第十一届称重技术研讨会论文集
2
称重科技 三、ModBus的主要型式
ModBus主要有四种型式:ASCII、RTU、TCP/IP和Plus。
1、ASCII型式:采用ASCII码进行数据交换,使用纵向冗余校验的校验和(LRC)进行数据校验。
2、RTU型式:采用二进制码进行数据交换,使用循环冗余校验的校验和(CRC)进行数据校验。
3、TCP/IP型式:主要用于以太网,不使用校验和进行数据校验。
4、Plus型式:该型式为Modicon公司专有,采用专门的协处理器进行数据处理。
目前,使用zui广泛的型式是ASCII和RTU,主要采用RS232、RS422、RS485进行物理连接,其中RS485使用zui多。
四、ModBus的结构
ModBus协议是一个master(主)/slave(从)架构的协议。有一个节点是master节点,其他使用Modbus协议参与通信的节点是slave节点。每一个slave设备都有一个*的地址。ModBus的通信比较简单,由master发通信指令,指令中含有欲于之通信的slave站号。当master发指令时,所有slave都处于收听状态,一旦slave收听到与自己地址相同的站号时,立刻执行指令的内容,并回传执行的结果。
五、ASCII型式的ModBus通信协议的格式
在ModBus上通信时,各站点的通信参数必须一致,如:波特率、奇偶校验。
通信时,一个信息字节中的每8位分为两个ASCII字符进行传输,允许字符传输间隔在1秒之内。
1、ASCII型式每一字节的格式
16进制编码,ASCII字符(0-9、A-F),即:0x30-0x39、0x41-0x46。
1位开始位、7位数据位(先低后高)、1位奇偶校验(无奇偶校验时为0)、1位停止位。
2、数据错误校验采用纵向冗余校验(LRC)
3、通信帧格式(ModBus命令格式)
开始
地址(站号)
功能
数据
校验(LRC)
结束
:(0x3a)
xx
xx
x...
xx
CR、LF(0x0d、0x0a)
1字符
2字符
2字符
N字符
2字符
2字符
一个基本的ModBus命令,除了开始、校验、结束字符外,还必须有地址项及功能项。地址——也就是站号,想要被操作的对象(slave站号);功能——想要被操作的对象完成的任务。ModBus命令可以没有数据项。
被操作的对象,在完成所要求的操作后,必须回传一帧信息,传递操作结果。回传信息的格式
第十一届称重技术研讨会论文集
2012.5·南京
3
自 动 衡 器 篇
与命令格式相同,只是数据内容为操作的结果。
六、利用ModBus,实现PLC与电子称重设备的通信
为了使大家对Modbus有更进一步的了解,下面用例子方式说明如何把电子称重设备接入PLC控制系统的Modbus总线网络。例子中的称重仪表为上海彩信电子科技有限公司生产的XK311增强型仪表。本例中,1台PLC作为主机(master),10台电子秤作为从机(slave),使用XK311增强型仪表作为电子秤显示仪表,从机地址为70、71、72、....79。通过RS485连接PLC和各仪表,采用ModBus ASCII通信协议。PLC可以对各台仪表进行置零、去皮、读取重量等多项操作。称重系统示意图如图1所示,图中的计算机是在系统调试时接入RS485总线的,用以观察RS485中传输的数据,正常工作时是移除的。
图1 称重系统示意图
上述系统可实现以下功能:
1、正常工作时,PLC每隔10秒轮询一次,获取每台秤的重量。
2、当秤台上重量异常时,PLC会发出警告信息,提示控制室人员注意。
3、控制人员可以通过PLC,对某台秤发出置零、去皮等操作指令。
4、PLC可对各台秤的称量,进行各项统计,生成必要的统计报表。
七、ModBus与局域网互连
现在,很多PLC都具有局域网接口,通过该接口,就可以远程控制称重系统了。当然,也可以通过接在Modbus总线上的PC机,利用PC机的软、硬件资源,编制相应的软件,将重量信号传送到局域网上。若局域网通过路由器接入因特网,很显然重量数据就可以在因特网上传输了。本系统是通过PLC的DH+网络接入局域网的。当然,网络部分使用的协议,*TCP/IP、NetBEUI。Modbus也有相关的TCP/IP型式,这里就不再赘述了,大家可以参考相关的书籍。
上述的称重系统只是PLC的一个子系统,是后期改造的一个项目。其整个PLC系统(见图2)是采用美国ROCKWELL公司的PLC,共有5台PLC机箱(采用PLC5系列)、4台工控机和2台服务器、若干台PC组成的。PLC采用ROCKWELL公司的DH+网络连接,使用DF1协议;其中1
第十一届称重技术研讨会论文集
4
称重科技 台PLC与称重系统采用RS485连接,使用Modbus协议;DH+网络通过1台作为连接桥的工控机,连入局域网。工控机上的监控软件是RSVIEW32,操作人员通过该软件的人机界面,观察各项数据,发出各项指令,当然也包括称重数据及指令。另外,局域网上的PC机也安装了RSVIEW32软件,只不过取消了操作指令,但可以通过该软件观察各项数据,便于其他相关人员关注设备运行情况。
图2 PLC系统图
八、结束语
本文简单介绍了ModBus通信协议,例举了电子秤采用RS485串行接口接入PLC系统,用ModBus通信协议,实现与PLC的实时通信。由于水平有限,如有错误的地方,望谅解。
PLC程序采用的是梯形图,其中有对串行口进行操作的梯形图,设置图中的相关属性,如波特率、奇偶校验,把相关的Modbus操作命令写入其中即可。有关PLC的编程请参阅ROCKWELL公司的《PLC5指令系统与使用说明》。
关于XK311增强型仪表的ModBus协议及指令举例,请看附录。
第十一届称重技术研讨会论文集
5
自 动 衡 器 篇
附录:
XK311增强型仪表的ModBus协议格式
说明
报头
站号
功能码
首址
数据量
数据值
校验码
报尾
指令
:
xx
xx
xxxx
xxxx
xxxx
LRC
\CR\ LF
回传
:
xx
xx
xx
xxxx
LRC
\CR
\ LF
出错回传
:
xx
xx
zui高位置1
xx
错误码
LRC
\CR
\ LF
报头、报尾:所有指令均以冒号(:)开始,以回车符、换行符结束。
站号:2个ASCII码,范围为01-90(16进制:0x01-0x)。
功能码:2个ASCII码。
02:读继电器输出状态;
04:读称量状态(显示值、皮重等);
05:置零操作;
06:皮重操作;
07:通信测试;
08:读定值;
09:写定值。
首址:4个ASCII码,读写数据的位置。
数据量:4个ASCII码,读写数据的数量。
数据值:读写的数据。
校验码:2个ASCII码,采用LRC校验。
LRC校验码运算:报头(:)不参与运算,LRC在数据之后,在\CR\LF之前。参加运算的是报头之后,LRC之前的所有数据。LRC为参加运算的数据之和的补码,舍去进位。
当仪表执行指令出错时,会回传错误码,并将功能码的zui高位置1。
错误码:
00--接收到的功能码出错;
01--数据地址错;
02--数据数量错;
03--数据值错,如:预置皮重大于zui大称量FS;
04--称量为负时去皮;
05--不在称重状态时置零;
06--称量不稳定时置零;
第十一届称重技术研讨会论文集
6
称重科技
07--称量>2%FS时置零;
08--称量<-2%FS时置零。
接下来以地址为78(16进制为4E)号的仪表为例,详述每条指令。PLC作为master,发送指令;电子秤仪表作为slave,接收指令,并回传执行结果。
读取重量数据(功能码:04)
说明
报头
站号
功能码
首址
数据量
数据值
校验码
报尾
指令
:
4E
04
0000
0007
A7
\CR\ LF
回传
:
4E
04
07
120003E70000CA
E1
\CR\ LF
例中:站号4E,即78号;功能码04表示要读取重量数据;仪表的重量数据专门放置在重量数据单元,其地址从0000到0006,共7个字节。其中0000:状态数据;0001-0003:显示值;0004-0006:皮重值。读取重量数据时,可以单独读,也可以2个一起读或全部读。首址0000表示从重量数据的0000地址开始读取;数据量0007表示共要读取7字节数据;校验码A7表示校验和LRC=A7。
当PC发出指令后,每个从站仪表都会接收,只有与指令中的站号相同的仪表,才会响应,回传所需信息。
78号地址的仪表,收到上述指令后,会回传“:4E0407120003E70000CAE1\CR\LF”
其中“120003E70000CA”是PC想得到的78号站的重量信息。
12--状态数据,表示当前显示为正、重量稳定、显示值是净重,当前数据包含2位小数;
0003E7--显示值,同状态数据结合考虑,即:当前的显示是净重9.99kg;
0000CA--皮重值,即:当前的皮重是2.02kg。
数据校验:所有被参与校验的数据+校验码=0(舍去进位)。
0x4E+0x04+0x00+0x00+0x00+0x07+0xA7=0x100,舍去进位1后,等于0,表示数据检验正确。
状态数据:
D7
D6
D5
D4
D3
D2
D1
D0
0:正
1:负
0:不在零位
1:在零位
0:稳定
1:动态
0:毛重
1:净重
恒为0
000:无小数;001:1位小数;
010:2位小数;011:3位小数
如要单独读显示值,可发指令“:4E0400030003A8\CR\LF”
78号仪表回传“:4E04030003E7C1\CR\LF”
如要同时读显示值及皮重,可发指令“:4E0400030006A5\CR\LF”
78号仪表回传“:4E04060003E70000CAF4\CR\LF”
第十一届称重技术研讨会论文集
7
自 动 衡 器 篇
置零操作(功能码:05)
报头
站号
功能码
首址
数据量
数据值
校验码
报尾
指令
:
4E
05
AD
\CR\LF
回传
:
4E
05
AD
\CR\LF
说明
置零成功
回传
:
4E
85
07
26
\CR\LF
说明
置零失败,重量>2%FS
去皮操作(功能码:06)
报头
站号
功能码
首址
数据量
数据值
校验码
报尾
指令
:
4E
06
0004
0003
000064
41
\CR\LF
回传
:
4E
06
03
000064
45
\CR\LF
说明
设置皮重=100,显示净重
指令
:
4E
06
0004
0000
A8
\CR\LF
回传
:
4E
06
03
0000C9
E0
\CR\LF
说明
操作前为毛重状态,操作后,把毛量作为皮重,皮重=201,显示净重为0
指令
:
4E
06
0004
0000
A8
\CR\LF
回传
:
4E
06
03
000000
A9
\CR\LF
说明
操作前为净重状态,操作后,恢复毛量显示,皮重=0
去皮操作正确执行后,回传的数据为去皮操作后的皮重值。
读取定值(功能码:08)
报头
站号
功能码
首址
数据量
数据值
校验码
报尾
指令
:
4E
08
0001
0004
A5
\CR\LF
回传
:
4E
08
04
00006400
45
\CR\LF
说明
首址:0001--1#定值、0005--2#定值、0009--3#定值、000D--4#定值、0011--5#、0015--6#定值;
数据中,前3字节表示定值,例中:000064表示1#定值=100
后1字节厂家保留,这里不用。
指令
:
4E
08
0005
0004
A1
\CR\LF
回传
:
4E
08
04
00012C00
79
\CR\LF
说明
2#定值=300
指令
:
4E
08
000D
0004
99
\CR\LF
回传
:
4E
08
04
0003E800
BB
\CR\LF
说明
4#定值=1000
第十一届称重技术研讨会论文集
请输入账号
请输入密码
请输验证码
以上信息由企业自行提供,信息内容的真实性、准确性和合法性由相关企业负责,环保在线对此不承担任何保证责任。
温馨提示:为规避购买风险,建议您在购买产品前务必确认供应商资质及产品质量。