目前工业设备之间的通信广泛使用RS232/RS485信号转换器。但是,由于RS485通信本身的局限性,在实际应用中存在许多不足:总线效率低、系统的实时性差、通信的可靠性低、网络工程调试复杂、传输距离不理想、单总线可挂接的节点少、应用不灵活等。
基于CAN通信的优越性,本文介绍一种可以将RS232通信网络转换成CAN通信网络的方法,以便更好地解决用户建立远程通信网络的问题。
1 CAN总线简介
1.1 CAN总线概述
控制器局域网络CAN(Controller Area Network),属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络, 初由德国Bosch公司于20 世纪80 年代用于汽车内部测试和控制仪器之间的数据通信[1]。CAN协议建立在国际标准组织的开放系统互联模型基础上,但其模型结构只有三层:ISO底层的物理层、数据链路层和应用层;其信号传输介质可采用双绞线、同轴电缆和光纤等;通信距离可达10 km;通信波特率可达1 Mb/s,可挂设备多达110个。CAN总线具有的特点,被广泛地被应用于各种工业现场,而且被公认为是有前途的现场总线之一。
1.2 CAN总线工作机制
1.2.1 CAN的报文类型
CAN系统中节点之间以报文的形式进行通信,其报文有五种类型:数据帧、错误帧、过载帧和帧空间[2]。每种帧都有相应固定的格式,其中数据帧和远程帧与应用密切相关,其他类型帧由CAN控制器根据具体的情况自动传输。帧种类及用途如表1所示。
1.2.2 CAN节点的仲裁机制
只要总线空闲,任何单元都可以开始发送报文。访问总线的节点可获得总线控制权。如果多个节点同时开始传送报文,就会有总线访问冲突,可以使用识别符的位形式仲裁解决这个冲突。仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。如果发送的是隐性电平而监控到的是显性电平,那么这个节点失去了仲裁,必须退出发送状态。ID越小优先权越高,发送高优先级 ID 消息的节点可获得发送权。
1.2.3 CAN节点的报文滤波机制
CAN 控制器监听接收总线上的所有报文,只有通过CAN控制器的报文筛选器筛选的报文才能进入CAN 的报文接收缓冲区,为该节点所接收并传送给应用程序。
1.2.4 CAN节点状态
CAN总线上每个节点都处于“错误主动”、“错误被动”和“总线关闭”三种状态之一。处于错误主动状态的节点,当发现总线上有错误传输时,将向总线上发“主动出错帧”;处于错误被动状态的节点,当发现总线上有错误传输时,将向总线上发“被动出错帧”;当节点进入总线脱离状态时,将完全退出总线操作。
2 硬件电路设计
2.1 硬件设计原理
RS232串口通信与CAN通信是两种不同的传输方式,无论是数据的传输方式还是逻辑电平的电压表示都是不同的,本设计主要完成RS232接口与CAN总线协议之间的转换。设计原理如图1所示。RS232接口端信号经过RS232电平转换成TTL电平,直接输入到微控制器的通用同步/异步串行接口(USART),微控制器控制CAN控制器读出有效的数据经光电隔离的CAN收发器发送到CAN总线上。
本设计采用的RS232电平转换器为MAX232,微控制器为ATmega128,CAN总线控制器采用SJA1000,CAN总线收发器采用高速的具有收发和隔离功能的CTM1050控制器。ATmega128是整个模块的控制中心,控制着RS232接口和CAN总线的通信。器件连接示意图如图2所示。
2.2 主要芯片
RS232用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的TTL器件连接,必须在RS232接口与TTL电路之间进行电平和逻辑关系的变换。MAX232芯片可完成TTL?RS232电平的双向转换。
ATmega128单片机是基于AVR RISC结构的8位低功耗CMOS微处理器,为AVR单片机系列中的高性能单片机。SJA1000是一种独立的CAN控制器,主要用于移动目标和一般工业环境中的区域网络控制,具有新的PeliCAN操作模式,这种模式兼容CAN2.0A 和CAN2.0B 两种技术规范[3]。SJA1000可完成CAN总线的物理层和数据链路层的所有功能,由CAN模块、发送缓冲区、接收FIFO、验收滤波器和接口管理逻辑组成[4]。
CTM1050是一款带隔离的高速CAN收发器芯片,它的主要功能是将CAN 控制器的逻辑电平转换为CAN总线的差分电平并且具有直流2 500 V的隔离功能及ESD 保护作用。该芯片符合ISO 11898标准,可与其他遵从ISO 11898标准的CAN 收发器互连。
3 软件设计
本设计程序主要包括:串口初始化程序、单片机接收串口中断服务子程序、单片机发送数据到串口中断服务子程序、单片机接收CAN数据子程序、单片机发送CAN数据程序以及一些异常错误处理子程序等等。程序流程图如图3所示。
本设计可以将RS232通信网络转换成CAN通信网络,能够很方便地实现RS232多点组网以及远程通信,而且不需要更改原有RS232通信软件,用户可直接嵌入原有的应用领域,从而使系统设计达到更先进的水平。
参考文献
[1] 王黎明,夏立,邵英,等.CAN现场总线系统的设计与应用[M]. 北京:电子工业出版社,2008.
[2] 饶运涛,邹继军,郑勇芸,等.现场总线CAN 原理与应用技术[M].北京:北京航空航天大学出版社,2003.
[3] PHILIPS Corporation.SJA 1000 stand-alone CAN controller product specification[S].2000.
[4] 夏继强.现场总线工业控制网络技术[M].北京:北京航空航天大学出版社,2005.
[5] RS232 datasheet https://www.dzsc.com/datasheet/RS232_585128.html.
[6] TTL datasheet https://www.dzsc.com/datasheet/TTL_1174409.html.
[7] MAX232 datasheet https://www.dzsc.com/datasheet/MAX232_1074207.html.
[8] ATmega128 datasheet https://www.dzsc.com/datasheet/ATmega128_144651.html.
[9] SJA1000 datasheet https://www.dzsc.com/datasheet/SJA1000_609075.html.
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。