目前工业控制现场大量使用了各种智能仪表用于生产过程检测,把智能仪表检测出来的数据传送到监控计算机供显示和分析是非常必要的环节,虽然智能仪表的通信协议种类繁多,但是很多智能仪表都具备RS-232 和RS-485 两种通信接口类型。
RS-232 是美国EIA(Electronic Ingustry Association) 与BELL 等公司一起开发的1969 年公布的通信协议,也是工业控制中应用最广泛的一种串行接口,采取不平衡传输方式,即所谓单端通讯,但是它的传输距离短,最大约为30 米,传输速率低,最高速率为20kb/s,共模抑制能力差,抗噪声干扰性弱的缺点,所以RS-232 只适合本地设备之间的通信。
RS-485 是EIA 为了弥补RS-232 通信距离短、传输速度低等不足之处,于1983 年提出的一种串行数据接口标准,RS-485 采用差分传输方式,也称作平衡传输,具有比较高的噪声抑制能力,最大传输距离约为1200 米,最大传输速率为10Mb/s,还增加了多点、双向通信能力,所以RS-485 成为首选的串行接口。
工业监控计算机一般只具备RS-232 串行接口,而智能仪表安装的位置与监控计算机的距离也经常超过30 米,所以要把智能仪表检测出来的数据传送到监控计算机RS-485 是首选,也就是说要把监控计算机的RS-232 串行接口转换成RS-485 串行接口才能和智能仪表搭建一个RS-485 的网络。
下面以基于RS-485的MODBUS_RTU协议格式,简单说明:
一般组网系统均采用主从总线结构,以监控计算机作为主机发起通信,多台智能仪表等设备作为从机,各从机在进行传输之前必需要等待来自主机的允许信号。主机可以发送和接收来自通信链上从机的信息,而从机则始终处于被动状态,随时准备相应来自主机的通信请求。
网络通讯协议的介绍
主机和从机之间搭建的RS-485 网络,硬件是采用RS-485 接线,主从式半双工通讯,主机呼叫从机地址,从机应答方式通讯。通信协议是MODBUS 通讯协议的RTU(远程终端设备)模式,数据帧10 位,1 个起始位,8 个数据位,1 个停止位,无校验。波特率:9600;19200;38400。
MODBUS 协议共有二十几个功能编码,经常用到MODBUS 协议的03H、06H、83H、86H 等几个功能编码就能够实现基本数据的传送。
例如主机希望读取1 号仪表第1 通道(寄存器地址0010)的瞬时值(假设为130),则只需要调用功能编码03H。主机请求和从机响应的帧格式如下:
主机发送:
第1 字节ARD : 从机地址码(=001~254)
第 2 字节03H : 读寄存器值功能码
第3、4 字节 : 要读的寄存器开始地址
第5、6 字节 : 要读的寄存器数量
第7、8 字节 : 从字节1 到6 的CRC16 校验和
从机回送:
浮点数:43020000 表示整数130 (符合IEEE-754 标准的单精度浮点数)
第1 字节ARD : 从机地址码(=001~254)
第2 字节03H : 返回读功能码
第3 字节 : 字节总数
第4~7 字节 : 寄存器数据
第8、9 字节 : 从字节1 到7 的CRC16 校验和
当从机接收错误时,从机回送:
第1 字节ARD : 从机地址码(=001~254)
第2 字节83H : 读寄存器值出错
第3 字节信息码 : 可查信息码表
第4、5 字节 : 从字节1 到3 的CRC16 校验和
在通信过程中,要确保主机和从机的对应关系正确。此外,用户可以根据实际需要配置合适的传输波特率。