吴 琼
(广东理工学院 广东 肇庆 526100)
随着单片微机控制技术、微电子技术和数字通信技术的发展,研制具有通信功能的控制模块受到相关学者的普遍关注。单片机具有实时性强的控制特点,但其相互之间的通信能力较差,传输速率低,易受干扰影响等。近年来,现场总线通信由于具有全数字、双向、多站的通信特点,在工业控制领域得到了广泛应用。相比于其他总线通信,CAN现场总线在进行多机之间的通信时有明显的优势,各极之间用于通信的线路连接会比运用逻辑门组成的同步信号发生电路更加简洁[1],且CAN总线通信具有极高的可靠性、数据传输速率高、传输距离长、实时性强等优点,特别适合工业现场监控设备的互联。因此,本文提出了基于dsPIC芯片和CAN总线的控制模块设计,使控制模块其在具有强大控制功能的同时,具有机间通信的功能。相关实验验证了控制模块之间通信的有效及可靠性。
CAN总线是用于过程控制和现场设备互联的串行通信网络,相比于其他通信电路,CAN通信在控制应用具有以下优点[2]:
(1)可以多主方式工作,CAN总线上的任意节点均可以在任意时刻主动地向CAN总线上的其他节点发送信息。
(2)CAN总线上传输的报文帧可以设置成不同的优先级,满足不同的实时要求。有利于在控制过程中自动确定动作相序,无需增加相序检测模块。
(3)通信速率高,硬件电路简单,只要每个节点引出两路通道连至总线上即可通信,布线简单,扩展灵活。
单片机之间通过CAN通信模块采用SPI通信标准进行通信,通信的硬件部分与单片机的连接是通过SPI的SCK、SO、SI、CS四个引脚,通信的软件部分均在单片机中编写,从单片机中发出指令、地址和数据,传至通信模块,通信模块中的两个芯片起到转换信号的作用,其中CAN控制器将单片机的SPI协议转换为CAN总线适用的协议——CAN报文帧,CAN收发器则把CAN控制器发出的报文帧转换成差分信号送到两条信号线CAN_H和CAN_L,这两条信号线便组成了CAN总线,CAN_H与CAN_L静态时均为2.5V左右,此时状态表示为逻辑1,也可以称做隐形;用CAN_H比CAN_L高表示逻辑0,称为显性,此时通常电压值为CAN_H=3.5V和CAN_L=1.5V。总线与CAN收发器之间的这种差分信号是可以双向传递的,即一条双绞线就可以实现总线上各个节点之间的接收与发送,这一特点便是CAN总线通信接线简单,扩展性强的原因。
通信模块主要由CAN控制器与CAN收发器组成。CAN控制器与单片机的CAN接口直接相连,用于将预收发的信息转化成CAN规范的CAN帧,再通过CAN收发器在总线上交换信息。CAN收发器与CAN控制器直接相连,它将CAN控制器的逻辑电平转换为CAN总线上的差分电平,在两条有差分电压的总线电缆上传输数据。
在多种CAN控制器中,MCP2510是Microchip公司推出的一款独立的CAN协议控制器,是为简化连接CAN总线的应用而开发的。MCP2510与MCU的连接是通过SPI接口来实现的,通过使用标准SPI读写命令对寄存器所有读写操作,从而放宽了MCU的选择范围,使得所有单片机都有接入的可能。
MCP2551是一个可容错的高速CAN器件,同样来自Microchip公司,可作为CAN协议控制器和物理总线接口。MCP2551可为CAN协议控制器提供差分收发能力。CAN系统上的每个节点都必须有一个类似器件,把CAN控制器生成的数字信号转化成为适合总线传输(差分输出)的信号。
CAN总线通信电路的连接如图1,控制器电路的连线如图2。
(1)IC芯片的连接方法:作为一个MCP2510的小系统,其3、4、5、6、10、11引脚均可以空置。当对整个通信系统的实时性要求不太高时,第12引脚(CAN中断引脚)可以悬空。(2)MCP2551的第8引脚决定了该芯片的工作模式,高速模式可以通过与VSS相连来实现(功耗较大),斜率控制模式即在第8引脚和地之间接47K的电阻,这种模式可以通过限制CANH和CANL的上升下降时间来进一步减少EMI。(3)CS、SO、SI、SCK引脚连接到处理器MCU的SPI引脚上。单片机就通过这四个引脚控制MCP2510执行相应的读写操作。(4)MCP2551采用了一些安全和抗干扰措施:MCP2551的CANH和CANL引脚各自通过一个22欧的电阻与CAN总线相连,电阻可起到一定的限流作用,保护MCP2551免受过流的冲击。
图1 CAN总线通信电路连接图
图2 控制器电路
通信模块的实物图如图3所示,由于通信模块与控制器的连接只用到了单片机SPI的四个引脚,因此两个单极接触器用两个单片机的最小系统代替即可测试通信功能。通信电路板上的两个CAN芯片的控制完全由单片机dsPIC实现,所以程序也是C语言形式的,而且烧写至单片机中即可,在MPLAB上编译成功后开始进行硬件软件的结合。为了验证双极之间的通信效果,用1开发板发送数据,2开发板接收数据。1板通过CAN总线发送一连串数组给2板,2板在确认到正确接收到1板的所有数组后,使其一个引脚置高电平,通过此方法来测试整个通信系统硬软件设计是否合理,能否通过CAN总线实现基本的发送与接收功能。
图3 通信模块实物连接图
用实验对CAN总线通信的收发过程进行验证,结果表明:在两个单片机之间设计的CAN协议可以准确稳定地接收和发送报文,以CAN总线传递同步信号,实时性强,布线简单,大大增强了单片机的扩展能力
[1]牛跃听.CAN总线嵌入式开发[M].北京航空航天大学出版社,2012.
[2]王黎明,夏立,劭英,闫晓玲.CAN现场总线系统的设计与应用.北京:电子工业出版社,2008.