摘要:主要介绍CAN总线的原理及如何用87C196NT单片机实现基于CAN总线的网络通信;对其硬件和软件设计作详细的分析,最后给出下位机程序。
关键词:单片机 CAN总线 87C196NT PCA82C200
1 CAN总线简介
CAN(Controller Area Network)即控制器局域网,主要用于各种设备监测及控制的一种现场总线。CAN总线最初是由德国Bosch公司为汽车的监测、控制系统而设计的。CAN总线具有独特的设计思想,良好的功能特性和极高的可靠性,现场抗干扰能力强。具体来讲,CAN总线具有如下特点:
*结构简单,只有2根线与外部相连,且内部含有错误探测和管理模块。
*通信方式灵活。可以多主方式工作,网络上任意一个节点均可以在任意时刻主动地向网络上的其它节点发送信息,而不分主从。
*可以点对点、点对多点及全局广播方式发送和接收数据。
*CAN总线通信格式采用短帧格式,每帧字节数最多为8个,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时,8个字节也不会占用总线时间过长,从而保证了通信的实时性。
*采用非破坏性总线仲裁技术。当2个节点同时向总线上发送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据。这大大地节省了总线仲裁冲突时间,在网络负载很重的情况下也不会出现网络瘫痪。
*直接通信距离最大可达10km(速率5kb/s以下),最高通信速率可达1Mb/s(此时距离最长为40m);节点数可达110个,通信介质可以是双绞线、网轴电缆或光导纤维。
*CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等多项工作。
*CAN总线采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。
CAN总线的以上特点,为工业控制系统中高可靠性的数据传送提供了一种新的解决方案。其在国外工业测控领域已经有了广泛的应用,现国内的许多工业控制领域也开始使用基于CAN的现场总线。CAN总线已成为最有发展前途的4种现场总线之一。
2 单片机控制系统硬件设计
本设计采用Intel 196系列中的87C196NT单片机。87C196NT具有1MB的寻址空间,本身不带CAN控制器,所以要实现与CAN总线之间的通信,需外加CAN控制器和CAN驱动芯片。在本设计中我们采用LTL-CAN。LTL-CAN是一种CAN总线控制、驱动隔离收发器,由CAN控制器芯片PCA82C200、CAN驱动芯片PCA82C250、16MHz的晶振及光隔电路用厚膜封装而成。它只支持标准信息帧格式,其内部逻辑功能如图1所示。LTC-CAN引脚定义如表1所列。
表1 LTL-CAN引脚定义
引 脚 | 符 号 | 功 能 | 引 脚 | 符 号 | 功 能 |
1 | Vcc | 电源Vcc | 16 | INT | CAN中断 |
2 | GND | 地GND | 17 | NC | 空 |
3 | CS | CAN片选 | 18~27 | NC | 未引出 |
4 | ALE | 地址锁存 | 28 | CANH | CANH |
5 | RD | CAN读 | 29 | CANL | CANL |
6 | WR | CAN写 | 30 | ISOGND | ISO GND |
7~14 | AD7~0 | 数据线 | 31 | ISOVDD | ISO VDD |
15 | RST | CAN复位 | 32 | NC | 空 |
单片机与CAN总线的接口电路如图2所示。图中LTC-CAN是带光隔的CAN控制器和物理总线间的接口,提供对总线的差动发送和接收功能。电阻R1作为CAN终端的匹配电阻。LTL-CAN芯片的片选信号CSCAN通过GAL16V8译码产生,其地址为08000H-08FFFH.87C196NT的P3口是数据/地址复用口,在图2中没有画出地址锁存芯片(74HC573);P1.0接CAN芯片的中断引脚,P1.0为低,表示为CAN中断产生。
3 单片机控制系统软件设计
3.1 CAN信息包格式说明
一个有效的CAN的数据帧由帧起始、仲裁域、控制域、数据域、校验域、应答域和帧结束组成。CAN控制器有2种不同的帧格式:标准格式和扩展格式。它们的主要区别在于仲裁域格式不同:标准帧仲裁域由11位标志符和远程发送请求位RTR组成;扩展帧仲裁域由29位标志符和替代远程请求SRR位、标志位和远程发送请求位RTR组成,如图3所示。
远程发送请求位(RTR)用来确定发送远程帧还是数据帧:当RTR为高电平时,CAN控制器发送远程帧;为低电平时,发送数据帧。
数据长度码(DLC)用来确定每帧发送几字节的数据,最多为8字节。
3.2 CAN控制器PCA82C200介绍
PCA82C200芯片是Philips公司生产的CAN控制器,是一种I/O设备基于内存编址的微控制器。双设备的独立操作是通过像RAM一样的片内寄存器修正来实现的。它只支持标准的信息帧格式。
PCA82C200的地址区包括控制段和信息缓冲区控制段。在初始化载入时可被编程来配置通信参数(例如,位时序)。微控制器也是通过这个段来控制CAN总线上通信的。
PCA82C200有2种工作模式:复位模式和工作模式。在复位模式下可以对接收代码、接收屏蔽、总线时序寄存器0和1以及输出控制寄存器进行设置。一般在CAN初始化时完成对以上寄存器的设置,当CAN进入工作模式后,它们的值就不再变化。在工作模式下可以进行数据的发送和接收。特别要注意的是当硬件复位或控制器掉线时会自动进入复位模式,这样就不能进行正常的CAN通信,这就要求对复位进行监控。当发生硬件复位或控制器掉线而进入复位模式时,就要求把复位位置为0进入工作模式,这样CAN就能正常地发送接收了。
3.3 网络通信规则
CAN总线为多主工作方式,网络上任一节点均可在任意时刻主动向网络上其它节点发送信息,而不分主从。通信方式灵活,且无需占地址等节点信息。为禁止总线冲突,CAN总线采用非破坏性总线仲裁技术,根据需要将各个节点设定为不同的优先级,并以标志符ID标定,其值越小,优先级越高。
在本系统的实际应用中,主站负责整个网络。它向从站发送各种控制命令,从站按照来自主站的命令进行操作。主站可以选择任意一个从站交换数据信息,任一从站一旦被选中,即可以接收来自主站的信息,也可以依据从站的命令和凡站回送信息。当某一从站发生故障时,可以主动向从站发送有关信息。任一从站与主站交换信息时,必须带上从站地址信息。
单片机87C196NT与上位机之间的CAN通信接口程序见本刊网络补充版。(http://www.dpj.com.cn)。单片机向上位机一直以500 Kbps的波特率发送数据,当单片机接收到上位机下传的数据后,又把接收到的数据转发给上位机。用我国台湾研华公司的CAN卡,调试时用它自带的Monitor程序。
结束语
将CAN现场总线应用于电力系统线路分段保护监控单元中,有利于实现电力系统中检测的实时性和可靠性。在现有设备的基础上,进一步提高了电网的自动化监测和管理水平,对提高供电的可靠性、增加电网的经济效益有着重大的意义。