张勤:CAN总线技术及其在船舶监控系统的应用-1-1CAN总线技术及其在船舶监控系统的应用摘要:在CAN总线通信网络的建设中,CAN总线控制器实现了CAN总线协议的大部分内容。首先介绍了CAN总线的概况,简单介绍了CAN总协议的内容,详细介绍了有限状态自动机的组成特点以及利用有限状态自动机实现CAN总线协议的方法,论述智能测控单元CAN通讯接口设计、CAN控制器外围硬件电路和CAN通信软件的实现。关键词:CAN总线;CAN总线协议;控制局域网;船舶监控系统;ApplicationofCANbustechnologyinshipmonitoringSystemAbstract:IntheconstructionofCANbuscommunicationnetwork,CANbuscontrollerimplementsmostofthecontentsoftheCANbusprotocol.FirstintroducedtheCANbus,introducesthegeneralagreementofCANcontent,introducesthemethodofcharacteristicsoffinitestateautomataandtheuseoffinitestateautomataimplementationofCANbusprotocol,discussesthedesign,implementationintelligentmeasurementandcontrolunitofCANcommunicationinterfaceinCANcontrollerhardwarecircuitandCANcommunicationsoftware.Keywords:CANbus;CANbusprotocol;controllerareanetwork;monitoringsystemforships;1前言1.1选题目的及意义CAN即控制器局域网,是世界上得到广泛应用的现场总线之一。由于CAN的基本设计规范要求有高的位速率、高抗电磁干扰性、而且能够检测出产生的任何错误,使得它在汽车工业、航空工业、船舶工业等其他领域也得到了广泛应用。CAN张勤:CAN总线技术及其在船舶监控系统的应用-2-22总线规范已被ISO国际标准组织制订为国际标准,CAN总线协议也是建立在国际标准组织的开放系统互连参考模型基础上的,主要工作在数据链路层和物理层。实际的CAN总线网络建设中,CAN总线协议一般都固化在CAN总线控中,SJA1000[1]。文中主要讨论在CAN总线控制器设计中CAN总线协议的实现问题。2CAN总线协议介绍CAN总线协议主要描述设备之间的信息传递方式,并为任意2个CAN仪器之间建立兼容性,如电气特性和数据转换等方面。2.1CAN总线的层结构CAN总线中各个层的定义与开放系统互连模型(OSI)相一致。如图1所示,CAN被分为应用层、数据链路层和物理层3层[2-3]。其中数据链路层又被分为逻辑链路控制子层(LLC)和媒体访问控制子层(MAC),各层之间相互独立且透明。每一层只与另一设备上相同的那一层通讯,而实际的通讯则发生在每一个设备上的相邻的2层,而各个设备之间则只通过物理层的通信介质连接在一起。CAN的规范定义了模型的最下面2层:数据链路层和物理层。应用层协议可以由CAN用户定义成适合特别工业领域的任何方案,如已在工业控制和制造业领域得到广泛应用的标准DeviceNe,t在汽车工业中,许多制造商都拥有他们自己的应用层标准。2.2CAN总线协议的主要内容CAN总线协议主要定义了数据链路层的MAC子层和LLC子层,其内容主要包括:1)报文竞争总线时的仲裁方式,定义了当2个或2个以上的节点同时开始发送报文时总线访问权获得的问题;2)报文传输规则,定义帧格式、帧类型、接收器与发送器之间的应答、报文校验等;3)错误处理,定义错误的种类、错误的处理方式等;4)故障界定,定义节点的错误状态及错误状态间的转换关系;5)位定时,定义物理层位传输时间片断划分、同步方式以及重新同步方式等。3CAN总线在船舶的应用CAN在船舶中的应用始于20世纪90年代初。1994年德国MTU公司成功张勤:CAN总线技术及其在船舶监控系统的应用-3-3地研制了基于CAN的MCS-51监控系统,开创了CAN网络船舶系统应用的新纪元。此后,CAN网络被广泛地用于船舶的远程控制、巡回检测、电站监控以及火灾报警系统中。CAN网络在船舶控制系统中的成功应用为解决船舶设备级(传感器、执行器、控制模块)的互联网络通信问题提供了新的数据传输协议,并由CAN控制器硬件完成协议的功能和服务。在CAN网络中,通过一根可同时传输电源和数据信号的总线可将所有满足CAN协议的设备挂接,并提供点对点、一点对多点和广播式三种通信方式。针对CAN在船舶中的日益广泛应用,美国国家海洋电子协会(NMEA,nationalmarineelectronsassciation)扩展了原有的NMEA0813协议,形成了新的NMEA2000协议,为CAN网络在船舶中应用制定了统一的标准和接口协议。4监控系统的基本结构在一个监控系统中,测量、控制和执行单元是必不可少的。同时,在一个基本的通信网络中,网络硬件和协议控制器也是必需的。典型的基于CAN的监控系统结构设计如图1所示在图1中,基于CAN的监控系统包括以下几个部分:(1)上位PC机收集总线上传输的所有信息,对系统的运行状态进行监控,检测所有设备的运行参数的调整及越限时的声光报警等功能。并通过CAN接口卡接入网络之中。(2)智能测控单元(下位机系统)包括智能传感器、智能执行器和智能控制器等,它们被安装在测控现场,用于直接获取现场设备的参数或者执行相应操作张勤:CAN总线技术及其在船舶监控系统的应用-4-44和功能。智能测控单元和传统设备相比,区别在于它们本身带有支持CAN总线通信协议的CAN控制器模块。因而,单元3不仅可与上位机系统通信,同时也可根据系统设计需要从单元1接收数据或者向单元;2发送数据,实现现场底层设备之间的通信,这点对于某些系统来说是非常重要的。4.1智能测控单元CAN通讯接口设计智能测控单元主要以Cygnal公司出品的C8051F040单片机为核心构成。该单片机是完全集成的混合信号系统级芯片(SOC),具有与MCS-51完全兼容的指令内核。内部采用流水线结构,机器周期由标准的12个系统周期将为1个系统周期,峰值性能达到25MIPS。此外,C8051F040的内能还集成有CAN控制器、高速A/D转换器等,可以简化系统设计。C8051F040集成的是CAN控制器,要使CAN总线得以运行,还需在单片机上接CAN收发器,进行电气转换,将逻辑信号转换为平衡差分码。常用的CAN收发器为PHILIPS公司出品的PCA82C250、高速TJA1050等。这里选用的是PCA82C250,它可以提供对总线的差动发送和接收功能,与ISO11898标准完全兼容,有三种不同的工作方式,即高速(最高可达1Mbps)、斜率控制和待机,可根据实际情况选择。C8051F040中的CAN的工作位速率可达1Mbps,实际速率可能受CAN总线上所选择的传输数据的物理层的限制。CAN处理器有32个消息对象,可以被配置为发送或接收数据。输入数据、消息对象及其标识掩码存储在CAN消息RAM中。所有数据发送和接收过滤的协议处理全部由CAN控制器完成,不需要CIP-51干预,这就使得用于CAN通信对CPU干涉最小。该CAN控制器是可实现的Bosch全功能CAN模块,完全符合CAN规范2.0A和2.0B。CAN控制器的原理框图如图2所示。CAN核提供移位输出和输入(CANTX和CANRX)、消息的串/并转换及其它协议相关的任务(如数据发送和接收过滤)。消息RAM可存储32个可以在CAN网络上接收发送的消息对象。CAN寄存器和消息处理器为CAN寄存器和消息处理器为CAN控制器和CIP-51之间的数据传送和状态通知提供接口。CIP-51可以通过特殊寄存器直接或间接访问CAN控制器中的CAN控制器寄存器(CAN0CN)、CAN测试寄存器(CAN0TST)和CAN状态寄存器(CAN0STA)。其它寄存器必须通过间接索引法访问。张勤:CAN总线技术及其在船舶监控系统的应用-5-54.1.1CAN控制器外围硬件电路实现为了进一步提高系统的抗干扰能力,在CAN控制器引脚CANTX、CANRX和收发器PCA82C250之间并不是直接相连,而是通过高速光耦6N173构成的隔离电路后再与PCA82C250相连,这样就可以很好的实现总线上各节点的电气隔离。此通信物理层电路图如图3所示。在PCA82C250与CAN总线接口部分也采用了一些安全和抗干扰措施。PCA82C250的CANH和CANL引脚各自通过一个5Ω的电阻与CAN总线连接,电阻可以起到一定的限流作用,从而保护PCA82C250免受过流的冲击。在CANH和CANL与地之间各自接一个30pF的小电容,可以起到滤除总线上的高频干扰和防电磁辐射的能力。另外,在CANH和CANL之间并联一个15V的瞬态电压抑制二极管(TVS),可以保护PCA82C250在瞬间高电压情况下而不受损坏。PCA82C250的RS引脚上接有一个下拉电阻,电阻的大小可根据总线速率适当的调整,其值一般在16kΩ-140KΩ之间,图3中选用47KΩ。C8051F040工作电压为2.7V~3.6V,其所有I/O口允许5V(极限值5.8V)张勤:CAN总线技术及其在船舶监控系统的应用-6-66输入,但是I/O口输出电平为VDD,而PCA82C250为5V系统,为了能够驱动其工作,在CANTX引脚上接一上拉电阻,其值为4.7KΩ。4.1.2CAN通信软件实现下位机CAN通信部分主要完成的任务是:将检测到的数据传送给上位机或其它下位机节点。同时,上位机可以对下位机的相关参数进行设置。由以上可知,CAN节点通信主要包括系统初始化、发送程序、接收程序等。在本例中,系统软件采用结构化程序设计方案,使其具有较好的模块性和可移植性.4.1.3系统初始化系统初始化初始化程序主要完成对所有报文对象的初始化(一般将所有值置零),对CAN控制器寄存器(CAN0CN)、位定时寄存器(BITREG)进行设置,还要对发送报文对象和接收报文对象分别进行初始化。其中,位定时寄存器的设置较为复杂,这里使用外部晶振为11.0592MHz,CAN通信速率为1Mbps。(1)初始化CAN控制器的一般步骤为:将SFRPAGE寄存器设置为CAN0_PAGE;将CAN0CN寄存器中的INIT和CCE位设置为1;设置位定时寄存器和BRP扩展寄存器中的时序参数;初始化每个消息对象或将其MsgVal为设置为0(无效);将INIT清零。(2)初始化发送对象的过程包括设置发送消息对象的命令屏蔽寄存器;设置仲裁寄存器;消息发送方向;指明消息长度和帧类型;选择发送消息号。部分代码如下:voidinit_msg_object_TX(charMsgNum){SFRPAGE=CAN0_PAGE;CAN0ADR=IF1CMDMSK;//指向命令掩码寄存器1CAN0DAT=0x00B2;//设为写,除了标识掩码和数据位CAN0ADR=IF1ARB1;//指向仲裁寄存器CAN0DAT=0x0000;//将仲裁ID设为最高优先级CAN0DAT=0xA000;//设置消息有效位,没有扩展ID,方向为写CAN0DAT=0x0088;//数据长度为8,数据帧CAN0ADR=IF1CMDRQST;//指向命令请求寄存器CAN0DAT=MsgNum;//写消息对象号,即对哪个消息对象进行操作张勤:CAN总线技术及其在船舶监控系统的应用-7-7//3~6个CAN时钟周期后,IF寄存器中的内容将被移到CAN存储器的消息对象中}初始化接收对象与发送对象类似,只需要将消息发送方向改为接收即可。(3)CAN启动主要包括设置位定时寄存器;设置消息对象的命令屏蔽寄存器;设置C