在衡器行业中,但凡涉及串行通信时,工程师们都会有一种无奈,就是通信协议问题。由于我国衡器厂众多,各自采用自己的通信协议,使得通信协议五花八门,互不兼容。由于是自成一体,也为后续与其他系统联网、维修、仪表配件互换等留有后遗问题。若采用一种工业控制领域的主流协议,各衡器厂的通信协议都与这个主流协议兼容,那么上述问题自然迎刃而解。这个主流协议* modbus。
一、什么是 modbus
modbus 是一种通信协议,是由 modicon 公司发表于 1979 年,主要用于 plc(可编程逻辑控制器)系统。目前,在工业自动化设备通信连接中,modbus 已是相当常见的一种连接方式。
二、modbus 与其他通信协议比较
1、物理层简单、价廉:modbus 可以在常用且廉价的 rs232、rs485 等物理媒介上运行,不像canbus、profibus、bitbus 等需昂贵的芯片支持。
2、免费:modbus 是一种公开的,可以无偿使用的协议。而使用 profibus 则需要向有关组织登记缴费。
3、使用普及:modbus 是当前工业控制中使用广的一种通信协议,基于这点,具有 modbus的设备接入工控系统相对容易。
4、维护方便:由于接入 modbus 总线相对其他工控总线而言,比较简单。一般具有 rs232、rs485 等串行口的 pc 机都可以接入,使用 pc 机自带的级终端软件或其他串行控制软件,就能观察 modbus 通信过程,可以很方便地查出故障站点。
三、modbus 的主要型式
modbus 主要有四种型式:ascii、rtu、tcp/ip 和 plus。
1、ascii 型式:采用 ascii 码进行数据交换,使用纵向冗余校验的校验和(lrc)进行数据校验。
2、rtu 型式:采用二进制码进行数据交换,使用循环冗余校验的校验和(crc)进行数据校验。
3、tcp/ip 型式:主要用于以太网,不使用校验和进行数据校验。
4、plus 型式:该型式为 modicon 公司专有,采用专门的协处理器进行数据处理。
目前,使用广泛的型式是 ascii 和 rtu,主要采用 rs232、rs422、rs485 进行物理连接,其中 rs485 使用多。
四、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命令可以没有数据项。
被操作的对象,在完成所要求的操作后,必须回传一帧信息,传递操作结果。回传信息的格式与命令格式相同,只是数据内容为操作的结果。
六、利用 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、正常工作时,plc 每隔 10 秒轮询一次,获取每台秤的重量。
2、当秤台上重量异常时,plc 会发出警告信息,提示控制室人员注意。
3、控制人员可以通过 plc,对某台秤发出置零、去皮等操作指令。
4、plc 可对各台秤的称量,进行各项统计,生成必要的统计报表。
七、modbus 与局域网互连
现在,很多 plc 都具有局域网接口,通过该接口,就可以远程控制称重系统了。当然,也可以通过接在 modbus 总线上的 pc 机,利用 pc 机的软、硬件资源,编制相应的软件,将重量信号传送到局域网上。若局域网通过路由器接入因特网,很显然重量数据就可以在因特网上传输了。本系统是通过 plc 的 dh 网络接入局域网的。当然,网络部分使用的协议,* tcp/ip、netbeui。modbus 也有相关的 tcp/ip 型式,这里就不再赘述了,大家可以参考相关的书籍。
上述的称重系统只是 plc 的一个子系统,是后期改造的一个项目。其整个 plc 系统是采用美国 rockwell 公司的 plc,共有 5 台 plc 机箱(采用 plc5 系列)、4 台工控机和 2 台服务器、若干台 pc 组成的。plc 采用 rockwell 公司的 dh 网络连接,使用 df1 协议;其中 1台 plc 与称重系统采用 rs485 连接,使用 modbus 协议;dh 网络通过 1 台作为连接桥的工控机,连入局域网。工控机上的监控软件是 rsview32,操作人员通过该软件的人机界面,观察各项数据,发出各项指令,当然也包括称重数据及指令。另外,局域网上的 pc 机也安装了 rsview32 软件,只不过取消了操作指令,但可以通过该软件观察各项数据,便于其他相关人员关注设备运行情况。
八、结束语
本文简单介绍了 modbus 通信协议,例举了电子秤采用 rs485 串行接口接入 plc 系统,用modbus 通信协议,实现与 plc 的实时通信。由于水平有限,如有错误的地方,望谅解。
plc 程序采用的是梯形图,其中有对串行口进行操作的梯形图,设置图中的相关属性,如波特率、奇偶校验,把相关的 modbus 操作命令写入其中即可。有关 plc 的编程请参阅 rockwell 公司的《plc5 指令系统与使用说明》。