基于Can总线的嵌入式网络控制节点的设计与实现
近年来,基于各种总线标准的网络化控制系统已经在工业控制领域内得到广泛应用。网络化控制系统采用了完全分散化的控制节点结构,将控制的权力很大部分交给了处于控制现场的智能节点,系统内各种交互信息通过现场总线传送。
当前已实用化的总线标准有许多种,如WorldFIP, Profibus, LONWORKS, CAN等。其中,CAN(Controller Area Network)是Bosch公司在现代汽车应用技术中领先推出的一种串行通信网络。CAN主线采用多主站工作方式,根据优先权进行总线访问仲裁,能够检测出通信过程产生的任何错误。CAN总线还具有卓越的信号传输性能,当信号传输距离达到l0km时,它仍可提供高达SOKbit/s的数据传输速率。另外,CAN协议废除了站地址编码,而采用对通信数据块编码的方式,这样使得网络内的节点个数在理论上不受限制。目前,CAN总线已经在许多行业得到了广泛的应用,尤其是工业控制领域,并常被认为是最有前途的现场总线之一。
常用的CAN总线节点一般采用的是“单片机+CAN控制器”的结构,这样由于运算能力的限制,这类节点的智能化程度较低,常是作为工控机节点的从节点。而近年来,以ARM为代表的嵌入式32位微处理器技术得到了飞速发展,无论是在功耗、便携性还是在硬件成本上,许多高性能的ARM芯片已经与单片机相差无几,因此在CAN节点设计中,使用ARM芯片取代传统的8/16位单片机已经是一个非常实用的选择。这样设计的CAN节点,不仅保留了低功耗、低成本和小体积的优点,而且性能得到了大幅提高,若辅以大容量的存储器,同时运行功能强大的嵌入式操作系统,它几乎已可以取代原先的工控机节点。本文则从软硬件两方面详细介绍了上述设计方案的具体实现过程。
1 节点的接口电路设计
本文设计的CAN总线节点是某工业控制系统的一个子模块,同时综合考虑其它相关需求和功能扩展,因此选用了AT91 RM9200处理器作为系统的核心处理单元。AT91 RM9200,是ATMEL公司生产的一款高性能的ARM9处理器,它是一款通用工业级ARM芯片,主频为180MHz/200MIPS,已经在工业控制、智能仪器仪表等领域内得到了大量的成功应用。
CAN控制器选用的是SJA 1000芯片,它是Philips公司生产的一款独立CAN总线控制器芯片,专用于移动目标和一般工业环境中控制器局域网络((CAN)。SJA 1000本质上是早期的PCA82C200的升级产品,与后者在管脚、电气特性上完全兼容,而且除具有基本CAN工作模式((BasicCAN)外,还增加了一种新的增强工作模式(PeIiCAN),这种新模式支持具有许多新特性的CAN2.OB协议。
SJAlooo的总线接口采用的是地址总线和数据总线复用的方式,这种方式与s1类似,也采用总线复用架构的处理器,接口很方便,并在读写时序上也很好配合,但当与数据总线和地址总线分离的微处理器接口时,则需要专门的读写逻辑与之配合,并且还相对比较复杂,基于这个原因,目前许多设计都采用诸如SPI等专用接口的CAN总线控制器,但这种方式使应用受到了诸多限制,如要求微处理器必须有SPI接口,同时当系统需要多路CAN总线接口时,会受到SPI端口数的限制等。
ARM架构的数据总线和地址总线是分离的,因此,必须引入专门的控制逻辑,才能实现对SJA1000的操作。
图1和图2分别为SJA 1000读/写操作时序。分析其读/写时序,可以看出,无论是读操作还是写操作,首先必须送出操作寄存器的地址,然后读/写数据。在写地址的过程中,片选信号(/CS )和读(/RD )、写(/WR)均无效(高电平),仅ALE信号有效(高电平),而在读/写数据的过程中,读/写信号有效(低电平),ALE信号无效(低电平),同时,在操作的过程中,还必须满足信号电平的持续时间。
因此,可以采用如图3所示的控制逻辑实现。
图1 SJA1000的读操作时序(Intel模式)
图2 SJA1000的写操作时序(Intel模式)
图3 SJA1000操作时序的实现
在图3所示的SJA1000操作时序的实现中,左端的信号如/CS, /RD, /WR, A7分别为ARM微处理器的片选、读、写控制信号,A7为地址信号(也可以是其它的地址),右端产生的ALE CAN,/CS CAN, /WR_CAN, /RD_ CAN分别与SJA1000对应的信号相连接,当微处理器对SJA100()对应的地址进行读写操作时,即可产生正确的控制逻辑。
2 节点的驱动程序开发
在工业控制应用中,使用嵌入式操作系统已逐渐成为一个流行的选择。目前,市场上的嵌入式操作系统超过100种,其中嵌入式Linux是一种非常理想、经济的选择,因为它不仅具有功能强大、高性能、稳定性好等优点,还是免费并开放源代码的。同时Linux内核采用了模块化设计,具有非常良好的移植性和可定制性。现
Can总线网络控制节 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)