CAN(Controller Area NetWork)总线技术是一种有效支持分布式控制和实时控制的串行通信网络,广泛应用于工业控制。其硬件连接简单,可靠性好,实时性和性价比高,能够很好地满足计算机联锁系统通信网络对实时性和可靠性的要求。
AVR单片机是由Atmel公司研发的增强型内置Flash的RISC高速8位单片机。本设计使用的是AVR系列新型单片机AT90CAN128,它自带CAN控制器,使得通信部分的硬件电路设计大大简化,因此增强了系统可靠性。
1 CAN总线技术简介
CAN总线是德国Bosch公司20世纪80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议。它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。通信速率可达1 Mbps。
CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等工作。CAN总线具有以下技术特性:
①废除了传统的站地址编码,改为对通信数据块进行编码。采用这种方法的优点是,可使网络内的节点个数在理论上不受限制,数据块的标识码可由11位或29位二进制数组成,因此可以定义211或229个不同的数据块;这种按数据块编码的方式,还可使不同的节点同时接收到相同的数据,这一点在分布式控制系统中非常有用。
②数据段长度最多为8个字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时,8个字节不会占用总线时间过长,从而保证了通信的实时性。CAN协议采用CRC校验并可提供相应的错误处理功能,保证了数据通信的可靠性。
③CAN采用非破坏总线仲裁技术。当多个节点同时向总线发送信息出现冲突时,优先级较低的节点会主动退出发送,而优先级最高的节点可不受影响地继续传输数据,从而大大节省了总线冲突仲裁时间。即使在网络负载很重的情况下,也不会出现网络瘫痪的情况。
2 AT90CAN128功能简介
2.1 基本特性
AT90C2AN128微控制器采用具有先进的RISC结构和低功耗的8位单片机,在一个时钟周期内执行一条指令,因此可以达到接近1 MIPS/MHz的性能。
AT90CAN128具有以下特点:128 KB的可在系统编程/应用编程(ISP/IAP)Flash程序存储器,4 KB SRAM,32个通用工作寄存器,53个通用I/O口,实时时钟计数器(RTC),4个带有比较模式灵活的定时器/计数器,2个可编程的USRAT接口,1个8位面向字节的TWI(I2C)总线接口,8通道单端或差分输入的10位ADC(其中1个差分通道为增益可调的),可编程带内部振荡器的看门狗定时器,1个SPI接口,1个符合2.0A或2.0B的CAN控制器接口,一个兼容IEEE1149.1标准的JTAG接口(用于在线仿真调试和程序下载),6种可通过软件选择的节电模式。
2.2 内置CAN控制器
AT90CAN128内置完全符合CAN2.0A和2.0B标准协议的CAN控制器。采用Mob(消息对象)方式进行数据的发送和接收,共有15个Mob,它们具有相同的属性:有11位标识符(2.0A协议),也可扩展至29位(2.0B协议);最多为8字节数据缓冲(静态分配);Tx、Rx帧缓冲或自动响应配置;时间标识。CAN控制器的结构如图1所示。
Mob用来设置帧格式和存放数据。Mob的数目是0~14,它们相互独立,但在进行总线仲裁时,低位的Mob会获得优先权。每个Mob都被安置在一个页中来保存,页的序号即Mob的序号。
3 控制单元的软硬件设计
3.1 整体结构
开关量控制单元与计算机联锁系统中其他的控制单元以及上位机等节点共同构成CAN通信网络。每一个控制单元都有自己独立的地址,当上位机发出指令时,网络中的CAN节点对指令中的地址信息进行比对,如果与自己的地址一致则接收数据并执行相应的控制命令。AT90CAN128的CAN控制器接口与TJA1050芯片通过光耦相连组成CAN通信通道,接收上位机下发的控制命令,使电子开关吸合或断开,即接通或断开负载。其A/D转换通道对负载电路的电流进行采样,如果电流过载,则单片机停止输出周期性脉冲信号给动态电路,断开与电源相连的继电器组,切断电源供给,以保证系统安全。
开关量控制单元的硬件结构如图2所示。
3.2 硬件设计(CAN通信部分)
AT90CAN128的晶振频率在5 V时可以达到16MHz,其与CAN总线的硬件连接如图3所示。
本设计中,CAN通信采用AT90CAN128内置的CAN控制器与CAN收发器TJA1050经高速光耦6N137相连接。TJA1050速率高,最高可达1 Mbps,提供总线与电源及地之间的短路保护。其引脚8(STB)用于选定工作模式,有两种工作模式可供选择:高速或待机。这里,引脚8接地,选择高速模式,高速模式是TJA1050的正常工作模式。如果引脚接高电平,则TJA1050将进入待机模式,发送器被关闭。高速光耦6N137起隔离控制器与工业现场的作用,可以提高系统的抗干扰能力。电路采用独立的电源供电,有效地避免了外界电压变化对通信的影响。
3.3 软件设计
CAN总线节点要有效、实时地完成通信任务,软件的设计是关键。CAN总线节点的软件设计主要包括CAN控制器的初始化、数据接收和数据发送程序。主程序通过调用函数来实现数据的接收和发送。
3.3.1 CAN初始化
为了正确地实现通信,这一部分要对波特率,标识码寄存器CANIDT、标识码屏蔽寄存器CANIDM,发送与接收Mob的页号,数据长度、中断开启、Mob使能等内容作出设置。本设计采用CAN2.0A协议,即标识符为11位。将标识码寄存器CANIDT1设置为开关量控制单元的地址Addr,其余的标识码寄存器设置为0。该地址只使用一个8位寄存器,因此标识码屏蔽寄存器只需设置CANIDM1为0xFF,其余的标识码屏蔽寄存器设置为0。
由4个标识码寄存器CANIDT、标识码屏蔽寄存器CANIDM组成验收滤波器,信息只有通过它的验收滤波才能被接收。所有验收屏蔽寄存器为0的位,验收码寄存器和CAN信息帧对应位必须相同才能验收通过;而所有验收屏蔽寄存器为1的位,验收码寄存器对应位的验收滤波功能则被屏蔽。本例中只接收ID为Addr的信息。
3.3.2 发送子程序
发送时只需将待发送的数据按特定格式送入发送缓存区中,然后启动发送即可.
3.3.3 接收子程序
消息的接收采用中断方式实现。首先要关闭接收中断,然后设置CANPAGE寄存器来指定接收的页数,随后由CANCDMob寄存器来控制接收动作。当有消息到达时,将触发CANSTMob寄存器中的RXOK中断,消息中的数据将被装载到CANMSG寄存器中。
结 语
本文详细介绍了以AT90CAN128微控制器为核心的开关量控制单元的主要软硬件设计。与目前同类型的单片机相比较,AT90CAN128由于内置CAN控制器,因而可大大降低设备成本,简化硬件结构,提高通信效率、安全性以及可靠性。实践证明,开关量控制单元在计算机联锁系统中运行稳定,能够很好地实现预期的功能。