APP下载

基于CAN总线的通信模块组网设计

2012-09-04郑州市信息技术学校电子信息技术部孙娴

河南科技 2012年7期
关键词:链路层物理层应用层

郑州市信息技术学校电子信息技术部 孙娴

河南工程学院电气信息工程系 王刚

基于CAN总线的通信模块组网设计

郑州市信息技术学校电子信息技术部 孙娴

河南工程学院电气信息工程系 王刚

控制器局域网CAN(ControllerAreaNetwork)是一种标准化的现场总线,其结构支持分布式数据通信和实时控制的串行通信网络。目前,CAN协议已被制定为ISO国际标准(ISO11898),它分为物理层、数据链路层和应用层,其中物理层和数据链路层协议已集成在产品的芯片中,可以依靠硬件实现自动传送数据,减少了软件程序编写的工作量。因此,CAN总线尤其适用于工业控制自动化领域,特别是在对低层监测和控制要求可靠性高、实时性强的恶劣条件下的工业控制现场的应用。

一、CAN总线的通信模型

基于CAN总线构建的通信网络,是严格遵守开放系统互联的规范实现层次结构设计的。作为工业现场测控底层网络,其间的数据传输量相对较少,对信息传输的实时性要求较高,网络互联结构也较简单,因此,CAN总线网络在低层仅仅采纳了OSI通信模型的最低2层,即物理层和数据链路层,而在高层只采用了应用层。CAN总线的数据链路层又可分为逻辑链路控制(LLC)子层和媒体访问控制(MAC)子层。物理层定义信号怎样传输,并完成网络设备通信间的电气连接,实现驱动通信总线和传输数据流特性。MAC子层是实现CAN协议的核心层,它的功能主要是制定通信数据的传送规则,即控制帧结构、执行仲裁、错误检测、出错标定和故障界定。LLC子层的功能主要是进行报文滤波、总线超载通知和总线恢复管理。物理层和数据链路层的功能可由CAN接口控制器来完成,而应用层的功能由微处理器或者工控机完成的。CAN网络通信模型如图1所示。

图1 CAN网络通信模型

二、通信网络架构

1.CAN网络拓扑结构。CAN总线是串行式总线,因此由其架构的分布式工业测控网络是按照串行总线式网络实现的。CAN网络的物理电气线路采用屏蔽双绞线。CAN总线是由插在工控机上PCI插槽中的CAN卡驱动的,工业现场测控设备依靠CAN模块挂接在网络总线上。如果工控设备之间的距离比较远,或者挂接在网络上的通信节点比较多,需要在网络中接入中继器,以保证通信的质量。总线式网络拓扑结构需要在总线的终端接入总线终结器,以防止通信信号回波的反射干扰。这在物理上一般用1个与总线介质的特性阻抗相匹配的电阻来实现。在工程应用中,一般要注意通信节点分支长度、相邻节点的距离(S)和无中继时总线驱动的长度(L)等指标,依照CAN总线的国际标准建议,在通信速率为1Mbps时,S到L的距离应小于40m,当通信速率在5Kbps以下时,L的允许值可到10km。组网后的上位机要用VB或VC等开发工具编写相应的应用层程序。CAN总线网络架构如图2所示。

2.CAN网络的通信过程。CAN总线采用时分复用的原则,每个CAN通信节点在自己占用总线的时段内建立其与通信目标节点的物理链路来传输数据,直至数据发送完毕为止。由于CAN总线是多主机通信模式,在CAN总线上的所有通信节点都可以随时地跟总线的其他节点发起通信,所以在多节点同时发出通信请求时,CAN总线有自己的通信仲裁机制,CAN网络节点通信过程如图3所示。

主动通信节点首先在侦听到总线空闲时,发送自己占用总线的请求,经过总线仲裁后,如果不具备通信的资格,那么就进行通信等待,并继续侦听,当具有通信资格时,占有总线并传输数据。若具有占有总线的资格,则占有并驱动总线,并发送数据,其他的节点处于接收数据状态,经过报文滤波,相应的通信目标节点就会接收数据,其他的节点就放弃数据。在通信目标节点收到数据时进行判别,若数据错误,向主通信节点发送错误信息,进行数据错误处理。若数据正确,在数据传输完毕并释放总线资源,主通信节点进入侦听阶段。

三、CAN总线通信模块设计

1.通信模块硬件电路设计。CAN总线通信模块由微处理器80C51、CAN通信控制器SJA1000、高速光电耦合器6N137、CAN总线收发器82C250以及监控接口电路等部分组成。CAN总线通信模块硬件电路如图4所示。

由于SJA1000只需要8位数据/地址线,本文,笔者采用80C51作为CAN总线通信节点模块的微处理器,负责CAN通信控制器SJA1000的初始化和通信数据的处理。80C51和SJA1000分别采用独立的外部时钟。SJA1000采用线选方式实现选通,当80C51的P26为“0”时选通该控制器实现对SJA1000的访问。为了对其他通信模块传来的数据做出实时处理,通信模块工作在中断方式下,当通信控制器接收到总线上传来的数据时,SJA1000的INT引脚就输出1个电平跳变,SIA1000的INT引脚和80C51的中断0引脚相连,80C51初始化时设置为下降沿中断,从而引发微处理器80C51产生中断,通过中断服务子程序接收1帧信息并进行分析处理,以及进行CAN总线错误中断类型的判断和误码纠正。

2.通信模块软件设计。根据CAN总线的网络需要,按照程序模块化设计的思想,CAN通信模块程序主要分为硬件资源的配置(Resoure_align.h)、CAN总线控制器、SJA1000初始化(SJA_Init)、CAN总线数据接收(Canbus_datarecv)、CAN总线数据发送(Canbus_datasedn)等例程。资源分配全部定义在Re⁃soure_align.h这个头文件中,在其他例程中都不存在具体引脚和寄存器的操作,这样方便程序的移植。另外,由于总线数据接收处于被动地位,为了实时处理的需要,使用了微控器的0号中断。CAN总线数据接收(Canbus_datarecv)例程是在中断处理子程序中完成的,而CAN总线数据发送例程是主动通信的。

综上,CAN总线作为一种比较实用的工业现场控制总线,具有高速率、长距离、高可靠性等优点,使得它成为目前工业控制领域最常用的现场总线。目前,CAN总线在汽车运行参数测控仪表组网监控、机器人多运动部件组网监控、集散过程监控、医疗器械、机械制造、传感器等诸多领域都取得了成功的应用。与RS-485串行通信网相比,它具有突出的可靠性、实时性和抗干扰性的特点,其组网方式也非常灵活,因而非常适合于构建复杂现场的实时测控网络。但在工程运用时,应考虑工程现场的集体情况,进行一些抗干扰措施,如恰当的接地、屏蔽等,另外,应用层软件的设计应根据具体工程监控的需要选择合适的开发环境进行编写。

猜你喜欢

链路层物理层应用层
基于K-ML-MPWFRFT的物理层安全传输技术
基于多空间内存共享的数据链路层网络包捕获方法
公路联网电子不停车收费系统路侧单元物理层自动测试软件研发
基于分级保护的OA系统应用层访问控制研究
基于FPGA全功能MVB网络从设备链路层IP核设计
新一代双向互动电力线通信技术的应用层协议研究
多天线物理层安全传输系统性能分析
物联网技术在信息机房制冷系统中的应用
数据链路层的选择重传协议的优化改进
IEEE 1394事务层接口的设计与实现