基于CAN总线的RS-232串口设备远程通信
1 引言
工业设备通信通常涉及到很多硬件和软件产品以及用于连通标准计算机平台(个人计算机或工作站)和工业自动化应用设备的协议,而且所使用设备和协议的种类繁多。因此,大部分自动化应用设备都希望执行简单的串行命令,并希望这些命令同个人计算机或者附加的串行端口板上的标准串行端口兼容。RS-232是目前PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速率串行通讯中增加通讯距离的单端标准。由于RS-232的发送端与接收端之间有公共信号地,所以它不能使用双端信号,否则,共模噪声会耦合到信号系统中。RS-232标准规定,其最大距离仅为15m,信号传输速率最高为20kbit/s。
CAN,全称为"Controller Area Network",即控制器局域网,是国际上应用最广泛的现场总线之一,一个由CAN总线构成的单一网络受到网络硬件电气特性的限制。CAN作为一种多主方式的串行通讯总线,其基本设计规范要求高位速率和较高的抗电磁干扰性能,而且要能够检测出通讯总线上产生的任何错误。当信号传输距离达10km时,CAN仍可提供高达50kbit/s的数据传输速率。表1为CAN总线上任意两个节点之间最大传输距离与其位速率之间的对应关系。
表1 CAN总线系统任意两节鼎足之势之间的最大距离
位速率/kbps | 1000 | 500 | 250 | 125 | 100 |
最大距离/m | 40 | 130 | 270 | 530 | 620 |
位速率/kbps | 50 | 20 | 10 | 5 | |
最大距离/m | 1300 | 3300 | 6700 | 10000 |
由此可见,无论从实时性、适应性、灵活性,还是可靠性上来看,CAN总线都是一种比RS-232更为优秀的串行总线。当两台串口设备的相距较远,不能直接用RS-232把它们连接起来时,就可以把RS-232转换为CAN,通过CAN总线来实现串口设备的网络互连。
但是,RS-232和CAN在电平和帧格式上都是很大的不同。具体表现如下:
RS-232标准电平采用负逻辑,规定+3V~+15V之间的任意电平为逻辑"0"电平,-3V~-15V之间的任意电平为逻辑"1"电平。而CAN信号则使用差分电压传送,两条信号线称为"CAN_H"和"CAM_L",静态时均为2.5V左右,此时的状态表示为逻辑"1",也可以叫做"隐性";用CAN_H比CAN_L高表示逻辑"0",称为"显性"。显性时,通常电压值为:CAN_H=3.5V,CAN_L=1.5V;
RS-232串口的帧格式为:一位起始位,八位数据位,一位可编程的第九位(此位为发送和接收的地址/数据位),一位停止位。而CAN的数据帧格式为:帧信息+ID+数据(可分为标准帧和扩展帧两种格式)。
因此,设计时就需要有一个微控制器来实现电平和帧格式等的转换。其转换方式如图1所示。 3.4 CAN接收子程序
2 RS-232到CAN转换的硬件设计
在设计RS-232到CAN的转换装置时,用单片机AT89C52作为微处理器;用SJA1000作为CAN微控制器,SJA1000中集成了CAN协议的物理层和数据链路层功能,可被动局面对通信数据的帧处理;AT82C250作为CAN控制器和物理总线之间的接口,用于提供总线的差动发送能力和CAN控制器的差动接收能力,通过AT82C250的引脚3可选择三种不同的工作方式(高速、斜率控制和待机)。其中引脚3接地时为高速方式;高速光隔用6N137实现,其作用是防止串入信号干扰;MAX232用来完成232电平到微控制器接口芯片TTL电平的转换。具体的硬件接口电路参见SJA1000的有关资源,这里不再多做说明。但有以下几点需要注意。
(1)CAN总线两端接有一个120Ω的电阻,其作用是匹配总线阻抗,提高数据通信的抗干扰性及可靠行。但实际上只需保证CAN网络中"CAN_H"和"CAN_L"之间的跨接电阻为60Ω即可。
(2)SJA1000的20引脚RX1在不使用时可接地(具体原因见软件设计),配合CDR.6的置位可使总线长度大大增加。
(3)引脚TX0、TX1的接法决定了串行输出的电平。具体关系可参考输出控制寄存器OCR的设置。
(4)AT82C250的RS引脚与地间接有一个斜率电阻。电阻大小可根据总线通信速度作适当调整,一般在16kΩ~140kΩ之间。
(5)MAX232外围需要四个电解电容C1、C2、C3、C4,这些电容也是内部电源转换所需电容,其取值均为1μF/25V,宜选用钽电容并且位置应用量靠近芯片,电源VCC和地之间要接一个0.1μF的去耦电容。
3 RS-232到CAN转换的软件设计
- 现场总线CANbus与RS-485之间透明转换的实现(01-26)
- 支持CAN总线的电动车辅助逆变电源的设计(02-23)
- 单片机和MCP2510的CAN息线通信模块设计(05-03)
- CAN总线/RS232接口的设计(10-12)
- 机车空调逆变电源控制系统及其实现(06-21)
- 现场总线在并联逆变电源系统中的应用(06-23)