RS485屏蔽电缆
RS485应用电路图
1 问题的提出
在应用系统中,RS-485半双工异步通信总线是被各个研发机构广泛使用的数据通信总线,它往往应用在集中控制枢纽与分散控制单元之间系统简图如图1所示
由于实际应用系统中,往往分散控制单元数量较多,分布较远,现场存在各种干扰,所 以通信的可靠性不高,再加上软硬件设计的不完善,使得实际工程应用中如何保障RS-485总线的通信的可靠性成为各研发机构的一块心病
在使用RS-485总线时如果简单地按常规方式设计电路,在实际工程中可能有以下两个问题出现一是通信数据收发的可靠性问题;二是在多机通信方式下,一个节点的故障(如死机),往往会使得整个系统的通信框架崩溃,而且给故障的排查带来困难
针对上述问题,我们对485总线的软硬件采取了具体的改进措施
2 硬件电路的设计
现以8031单片机自带的异步通信口,外接75176芯片转换成485总线为例其中为了实现总线与单片机系统的隔离,在8031的异步通信口与75176之间采用光耦隔离电路原理图如图2所示
充分考虑现场的复杂环境,在电路设计中注意了以下三个问题
2.1 SN75176 485芯片DE控制端的设计
由于应用系统中,主机与分机相隔较远,通信线路的总长度往往超过400米,而分机系统上电或复位又常常不在同一个时刻完成如果在此时某个75176的DE端电位为“1”,那么它的485总线输出将会处于发送状态,也就是占用了通信总线,这样其它的分机就无法与 主机进行通信这种情况尤其表现在某个分机出现异常情况下(死机),会使整个系统通信崩溃因此在电路设计时,应保证系统上电复位时75176的DE端电位为“0"由于8031在复位期间,I/O口输出高电平,故图2电路的接法有效地解决复位期间分机“咬”总线的问题
2.2 隔离光耦电路的参数选取
在应用系统中,由于要对现场情况进行实时监控及响应,通信数据的波特率往往做得较高(通常都在4800波特以上)限制通信波特率提高的“瓶颈”,并不是现场的导线(现场施工一般使用5类非屏蔽的双绞线),而是在与单片机系统进行信号隔离的光耦电路上此处采用TIL117电路设计中可以考虑采用高速光耦,如6N137、6N136等芯片,也可以优化普通光耦电路参数的设计,使之能工作在最佳状态例如:电阻R2、R3如果选取得较大,将会使光耦的发光管由截止进入饱和变得较慢;如果选取得过小,退出饱和也会很慢,所以这两只电阻的数值要精心选取,不同型号的光耦及驱动电路使得这两个电阻的数值略有差异,这一点在电路设计中要特别慎重,不能随意,通常可以由实验来定
2.3 485总线输出电路部分的设计
输出电路的设计要充分考虑到线路上的各种干扰及线路特性阻抗的匹配由于工程环境比较复杂,现场常有各种形式的干扰源,所以485总线的传输端一定要加有保护措施在电路设计中采用稳压管D1、D2组成的吸收回路,也可以选用能够抗浪涌的TVS瞬态杂波抑制器件,或者直接选用能抗雷击的485芯片(如SN75LBC184等)
考虑到线路的特殊情况(如某一台分机的485芯片被击穿短路),为防止总线中其它分机的通信受到影响,在75176的485信号输出端串联了两个20Ω的电阻R10、R11这样本机的硬件故障就不会使整个总线的通信受到影响
在应用系统工程的现场施工中,由于通信载体是双绞线,它的特性阻抗为120Ω左右,所以线路设计时,在RS-485网络传输线的始端和末端各应接1只120Ω的匹配电阻(如图2中R8),以减少线路上传输信号的反射
由于RS-485芯片的特性,接收器的检测灵敏度为± 200mV,即差分输入端VA-VB ≥ +200mV,输出逻辑1,VA-VB ≤-200mV,输出逻辑0;而A、B端电位差的绝对值小于200mV 时,输出为不确定如果在总线上所有发送器被禁止时,接收器输出逻辑0,这会误认为通信帧的起始引起工作不正常解决这个问题的办法是人为地使A端电位高于B两端电位,这样RXD的电平在485总线不发送期间(总线悬浮时)呈现唯一的高电平,8031单片机就不会被误中断而收到乱字符通过在485电路的A、B输出端加接上拉、下拉电阻R7、R9,即可很好地解决这个问题
基于RS485接口的DGL通信协议(修改)
1. 前言
在常见的数字式磁致伸缩液位计中,多采用RS485通信方式。但RS485标准仅对物理层接口进行了明确定义,并没有制定通信协议标准。因此,在RS485的基础上,派生出很多不同的协议,不同公司均可根据自身需要设计符合实际情况的通信协议。并且,RS485允许单总线多机通信,如果通信协议设计不好,就会造成相互干扰和总线闭锁等现象。如果在一条总线上挂接不同类型的产品,由于协议不一样,很容易造成误触发,造成总线阻塞,使得不同产品对总线的兼容性很差。
随着RS485的发展,Modicon公司提出的MODBUS协议逐步得到广泛认可,已在工业领域得到广泛应用。而MODBUS的协议规范比较烦琐,并且每字节数据仅用低4位(范围:0~15),在信息量相同时,对总线占用时间较长。
DGL协议是根据以上问题提出的一种通信协议。在制定该协议时已充分考虑以下几点要求:
a. 兼容于MODBUS 。也就是说,符合该协议的从机均可挂接到同一总线上。
b. 要适应大数据量的通信。如:满足产品在线程序更新的需要(未来功能)。
c. 数据传输需稳定可靠。对不确定因素应加入必要的冗错措施。
d. 降低总线的占用率,保证数据传输的通畅。
2. 协议描述
为了兼容其它协议,现做以下定义:
通信数据均用1字节的16进制数表示。从机的地址范围为:0x80~0xFD,即:MSB=1;命令和数据的数值范围均应控制在0~0x7F之间。即:MSB=0,以区别地址和其它数据。
液位计的编码地址为:0x82~0x9F。其初始地址(出厂默认值)为:0x81。
罐旁表的编织地址为:0xA2~0xBF。其初始地址(出厂默认值)为:0xA1。
其它地址用于连接其它类型的设备,也可用于液位计、罐区表地址不够时的扩充。
液位计的命令范围为:0x01~0x2F,共47条,将分别用于参数设定、实时测量、诊断测试、在线编程等。
通信的基本参数为:4800波特率,1个起始位,1个结束位。字节校验为奇校验。
本协议的数据包是参照MODBUS RTU 通信格式编写,并对其进行了部分修改,以提高数据传输的速度。另外,还部分参照了HART协议。其具体格式如下:
ADDRESS
COMMAND
Byte Count
DATA
Check SUM
地址
命令
字节数
数据
校验和
1 Byte
1 Byte
=n, 1 Byte
n Byte
1 Byte
80~9F
01~2F
00~10
0~7F
0~7F
表中,数据的最大字节数为16个。也就是说,整个数据包最长为20个字节。
“校验和”是其前面所有数据异或得到的数值,然后将该数值MSB位清零,使其满足0~7F的要求。在验证接收数据包的“校验和”是否正确时,可将所有接收数据(包括“校验和”)进行异或操作,得到的数据应=0x80。这是因为,只有“地址”的MSB=1,所以异或结果的MSB也必然等于1。
本协议不支持MODBUS中所规定的广播模式。
3. 时序安排
在上电后,液位计将先延迟10秒,等待电源稳定。然后,用5秒的时间进行自检和测试数据。接着产品进入待机状态并打开RS485通信接口,等待主机的请求。因此,主机应在液位计上电20秒后,再将液位计置为工作状态,进行测量操作。
液位控制器(HMT-900或H-1000)主要用于液位计的供电和防爆安全隔离。主机可通过RTS信号控制(HMT-900或H-1000)供给液位计的电源。当RTS有效时,电源将被打开。因此,液位计的电源是可以通过主机软件控制的。
在现场应用中,主机软件的工作时序一般应遵循以下几个步骤。
1) 在开主机前,并认真检查各相关设备的电源和电缆连接情况。
2) 在启动主机软件时,打开相应串行端口。使能RTS信号,给液位计上电。
3) 软件初始化操作,延迟20秒。
4) 读液位计的相应参数,然后将液位计置为工作状态。
5) 此时,主机可进入正常的轮训、记录、显示、报警等工作
RS485屏蔽电缆