CAN应用层协议

2024-11-26

CAN应用层协议(共7篇)

CAN应用层协议 篇1

舰船同步相量测量装置(Phasor Measurement Unit——PMU)用于对舰船电力系统同步相量进行实时采集和动态监控。目前针对PMU的研究,基本上都是基于UDP协议定义的。对于IEEE1588(the Precision Time Protocol——PTP)的应用也都是基于此协议。但是这种基于以太网的研究技术连接的方式是星型连接,而且每次数据交换的时候都需要通过交换机。目前对于底层硬件通信,很多厂商生产的设备都是基于CAN协议的,很多标准化硬件底层通信设备也都是基于CAN协议的。所以这种基于UDP协议的PMU在这些设备中的无法正常使用。

针对上述问题,本文根据IEEE1588协议提出一种基于CAN现场总线的时钟同步方法,制定了一个CAN 应用层协议。设计出只针对舰船电力系统PMU的通信协议,将IEEE1588协议嵌入到CAN应用层协议。对CAN总线标准帧进行全新定义和合理分配,从而实现基于CAN 总线的精确时钟同步。

1 1588精确时钟同步报文交换模型

网络时钟同步协议从最早的RFC778到后来网络时钟协议NTP和再到SNTP,这些协议都无法达到所要求的精度和收敛速度;而最近几年新兴的基于IEEE1588网络精确时钟协议(PTP)的时钟同步方式,它所定义的网络结构可以使自身达到很高的精度,时间戳更容易在硬件上实现,并且不限于应用层。这使得PTP可以达到微秒以内的精度,此外,PTP模块化的设计也使得它更容易适应低端设备,这些优势都是NTP等其他协议无法比拟的[1]。

在分布式系统之中,存在着各种各样的电气设备,这些设备都可以看成是一个或多个时钟节点。根据这些设备在工作中的状态和作用,可以将他们划分为主时钟或者从时钟。主时钟节点作为整个子域的基准时钟,各子节点通过与主时钟节点的信息交换来达到与主时钟的同步。

1588协议时钟同步过程如图1所示,由同步报文来计算网络延迟和时钟偏移,主时钟周期性(一般为2 s)地向从时钟发送Sync报文并且记下准确发送时间tm1。从时钟记录Sync报文精确到达时间ts1,主时钟随后发送携带tm1的Follow_Up报文。从时钟向主时钟发送一个延迟请求Delay_Req报文并且记录该报文的精确发送时间ts2,主时钟记录Delay_Req报文到达的准确时间tm2,随后在Delay_Resp报文中把ts2回发到从时钟。假定传输路径是均匀对称的,即Td1=Td2。根据ts1、ts2、tm1、tm2由下面公式计算出报文的传输延时Td和主从时钟偏差TOffset[2]。

通过计算即可得到主从时钟延迟,然后对从节点时钟进行偏差补偿,即可实现二者精确同步,其时钟延迟计算如下:

Τd=(Τs1-Τm1)-(Τs2-Τm2)2

TOffset=Td+Τ1-Τ2。

2 CAN总线下的时钟同步过程

CAN总线是一种串行总线通信协议,网络上各主从节点都是通过总线上CAN时钟同步报文的收发来实现彼此同步。要使网络中所有节点在建立统一时间坐标(即同步)的基础上达到比较高的时钟精度,节点自身的时钟分辨率(即时钟所能精确表示的最小时间刻度)和节点时钟抖动必须尽可能高[3]。

STM32微处理器内置的定时器当CPU时钟频率为100 MHz时,其分辨率为10 ns。同时STM32微处理器内部带有硬件时钟标记单元,可以对流过物理层的报文进行时钟标记,因此,基于STM32微处理器实现时钟同步是可行的[4]。

假定网络上有多个PMU时钟节点,选定一个时钟作为系统时钟源,总线上的其他PMU节点都为从时钟,由于以太网可以通过ID设置来实现广播和单播,而CAN总线中却缺乏这项功能。本文通过对11位报文标识符定义和节点接收掩码设置,实现了CAN报文的广播和单播方式。首先由主时钟进行时钟同步命令的发送,通知从节点即将开始同步,广播Sync报文和Follow_Up报文,从节点则单播Delay_Req报文和Delay_Resp报文。总线上的报文数据多种多样,为此必须判断接收FIFO中报文类型。如果是时钟同步报文,由硬件标记单元记录报文接收时间,并进入到同步报文处理模块中进行处理,计算报文传输延迟以及主从时钟偏差,然后将其传递给PTP时钟单元,调节自身时钟以与主时钟同步[5]。

同步之后,各PMU节点开始向总线上发送相量数据,由上位机程序接收处理。图2为采用STM32微处理器CAN模块下的报文处理流程。

3 CAN应用层协议的制定

同步相量采集单元底层通信是基于CAN现场总线的,本应用层协议用于同步相量采集装置的同步报文和数据采集报文的传输过程,规定通信过程中的波特率为800 kbps,使用数据帧和远程中,数据帧用于发送和接收同步报文时间戳信息以及PMU采集数据,远程帧用于请求数据报文发送[6]。

3.1 报文格式的制定

由于同步相量采集单元采集到的是实时数据量信息,因此对于相量参数报文,必须包含相应的参数信息以及时间信息,记录相量参数的采集时刻,然后上传到CAN应用程序以及上位机程序。对于同步报文来说,必须包含报文发送和接收的准确时间信息,故定义数据域为2字节时间戳信息,数据域定义从字节0到字节8递增的顺序定义,未用到的字节作为保留信息。本协议以CAN2.0帧结构为基础,对CAN协议标准帧中11位标识符和8字节长度数据域进行重新定义和分配,通过格式的定义来对CAN报文标识符和数据域进行定义,使CAN报文数据具有特定的含义和作用,以用于节点之间的同步和数据量的传输[7,8]。

3.2 报文功能定义

报文对象类型定义。

3.2.1 NMT报文

NMT报文用于各节点ID设置,标识符为报文编号、节点ID,数据域部分包括同步报文发送周期和相量参数报文发送周期,以及节点状态发送周期。为0时表示取消定时发送功能,其报文格式定义为:

3.2.2 同步报文

同步报文包括Sync报文,Follow-Up报文,Delay-Req报文,Delay-Resp报文,同步报文用于节点同步计算单元,报文格式定义为:

3.2.3 相量参数报文

同步相量参数报文包括Phasors、Freq、Dfreq、Analog、Digital报文等。报文用于测量监控电力系统网络中各同步相量参数瞬时数据,Phasors报文表示相量数据,由6个字节表示,包括两字节幅值,两字节相角,以及两字节瞬时时间信息;Freq报文表示频率偏移量,同额定频率的差值,表示为(Hz×103),取值范围,-32.767 到+32.767 Hz,用16位有符号整数表示;Dfreq报文表示频率的变化率,表示为 (Hz/s×102)取值范围,-327.67 到+327.67 Hz/s,使用16位有符号的整数表示;Analog报文表示模拟量信息,使用16位有符号的整数表示,模拟量可以是采样量,例如控制信号或者变换器的值,数值的取值范围由用户自定义。Digital报文表示开关量状态字,按位对应的开关量通道状态,0表示对应位开关状态为打开,1表示对应位开关状态为闭合。同步相量报文格式定义为:

3.2.4 节点状态心跳报文

Heartbeat报文用于表示节点工作状态,节点配置为周期性地发送自身的状态信息,定时时间为5 s,其中字节0用于节点工作状态,状态数值0表示启动节点,1表示停止,2表示工作,当一个采用了Heartbeat通讯协议的节点启动后,发出一次启动报文,然后以固定频率发送心跳报文。心跳报文报文格式定义为:

基本功能码:ID.10-1D.7,基本功能码定义了NMT报文,同步报文和同步相量参数报文传输功能,它可以定义16种通信功能,由CAN总线的仲裁机制可知,这些标识符的定义也包含了报文信息的优先级顺序。同步相量采集器必须先同步,然后再进行相量采集,因此定义同步报文优先级高于相量报文,定义Sync为0001,Phasors为1000。

预留功能码:ID.6-ID.5,预留功能码用于添加附加功能,如请求应答、输出控制信息等功能,和ID.10-ID.7联合起来使用,可以定义多达64个报文对象,ID.5表示报文传输方向,0表示报文下行,1表示报文上行。

设备节点的定义:ID.4-ID.0,一个总线网络中有多个时钟节点,协议使用标识符的第五位,可以用来定义32个不同节点。这些节点可以是开关量输入模块,开关量输出模块,数据采集模块或传感器模块等,每个节点可以向总线上发送和接收不同的报文,如节点管理配置报文,同步报文和数据采集报文等,目标节点编号表示不同节点发送的报文信息相互不受影响,协议中节点定义为总线上不同的PMU数据采集单元等通过对节点ID进行验收滤波,即可实现同步报文的广播和单播。

4 结语

本文定义了基于CAN现场总线的同步相量应用层协议,并对CAN总线网络中各节点时钟同步和相量参数上传,该应用层协议已经在船舶综合电力数据采集分析系统等中得到了应用,得到的数据很好的反映了系统运行状况。

摘要:同步相量采集装置用于对舰船电力系统同步相量进行实时采集和动态监控。定义了基于CAN现场总线的同步相量通信应用层协议。对同步报文和相量报文的帧格式进行了定义。实现了CAN总线的单播和多播通信,很好地满足PMU通信要求。

关键词:同步相量测量,CAN应用层协议,帧结构

参考文献

[1] IEEE Std 1588—2004.Precision clock synchronization protocol fornetworked measurement and control systems.IEC61588-2009

[2]魏丰,孙文杰.IEEE-1588协议时钟同步报文的精确时间标记方法研究.仪器仪表学报,2009;(1):162—168

[3]常富杰,陈刚,魏巍,等.基于CAN现场总线的时钟同步的设计方法.自动化技术与应用,2004;(2):43—44

[4]张小强,谢鹏程.基于STM32F107VC的IEEE 1588精密时钟同步分析与实现.现代电子技术,2011;(7):172—174

[5]吴歆馨.基于IEEE1588高精度网络时钟同步系统的研究.武汉:华中科技大学,2007

[6]饶运涛,邹继军,王进宏,等.现场总线CAN原理与应用技术.北京:北京航空航天大学出版社,2007

[7]马昕,路亚娟.鱼雷制导系统CAN应用层协议的制定.兵工自动化,2006;(11):1—5

[8]郭威,王明明,许光君.水下机器人推进系统CAN应用层协议设计.机械设计与制造,2011;(7):216—217

CAN应用层协议 篇2

传统的传感器网络只能交互模拟信号, 不具备信号数字化及相应的信号处理功能。智能传感器网络借助现场总线进行通信, 将各个传感器功能模块与微型计算机控制模块结合, 实现数字信号的交互、处理。因此选择恰当的现场控制总线对于实现传感器控制网络的通信、自检、自校功能, 具有重要的作用。[1]

CAN-bus (Controller Area Network) 即控制器局域网, 是国际上应用最广泛的现场总线之一。最初CAN总线被设计作为汽车环境中的通讯总线, 在车载电子控制装置之间交换信息形成汽车电子控制网络。由于其卓越的性能、极高的可靠性和低廉的价格现已广泛应用于工业现场控制、医疗仪器等众多领域。具有成本低, 多主结构, 总线利用率高, 数据传输距离远 (长达10km) , 数据传输速率大 (高达1Mbit/s) , 实时性好, 错误处理和检测机制可靠等优点。

CAN总线以报文为单位进行信息传送, 它支持5种不同类型的报文帧:数据帧、远程帧、超载帧、错误帧和帧间隔。报文中包含信息标识符ID, 它标志了报文的优先权。CAN总线上各个节点都可主动发送, 总线上的报文采用标识符ID进行仲裁, ID值越小, 优先级越高。具有最高优先权报文的节点赢得总线使用权, 而其它节点自动停止发送。在总线再次空闲后, 这些节点将自动重发报文。网络中的所有节点都可由ID来自动决定是否接收该报文, 每个节点都有ID寄存器和屏蔽寄存器接收到的报文只有与该屏蔽的功能相同时, 该节点才开始正式接收报文, 否则它将不理睬ID后面的报文。这使CAN系统非常灵活, 可任意扩展或改变网络组成[2]。

2 传输数据格式设计

CAN总线采用非破坏性总线仲裁技术, 通过报文标识符的编码可以支持点对点、组播、广播等多种传播方式。当多个节点同时向总线发送报文时, 只有优先级高的节点能够发送数据, 其他节点会主动退出发送, 有效避免了总线冲突, 缩短了总线冲突仲裁时间。通信协议设计采用CAN2.0B协议格式, 报文扩展格式规定的仲裁场包括29位的标识符 (ID28~ID0) 。

综合考虑总线传输信息的速率、容量、优先等级、节点容量、对数据的处理方式、数据有效性等方面的问题, 将29位的标识符按功能进行一下分配, 如表1所示。

起始标识 (1bit) :默认为1, 表示报文判别开始。

目的设备标识 (6bit) :此为数据将要发送的目标设备编号, 当取值为0 (即000000B) 时, 标识该报文为广播报文;其取值为1~63时, 表示该报文为点对点报文。

源地址标识 (6bit) :发送数据的源设备的编号。

状态标识 (8bit) :规定了数据区的数据有效或者无效的状态, 0表示无效, 1表示有效, 每一位对应于数据区的一个字节, 第0位对应数据区的第1个字节, 以此类推, 第7位对应数据区的第8个字节。如果数据项占用了数据区的3个字节, 必须将对应状态字节的3位全部设置成一致的状态。

功能码标识 (4bit) :用于指示报文所需实现的功能, 或表示数据场中的数据为命令 (如读命令、写命令、批量读、批量写等) , 或表示表示数据场是即将发送的数据, 接收报文的节点根据报文中的功能码进行相应的处理。

多帧标识 (1bit) :1表示多帧, 0表示单帧, 用于区别数据传输的帧数量。

备选标识 (3bit) :以备新增加的功能辨识, 方便未来进行扩展。

通过对标识符的定义, 可以使节点通信做到既灵活实用, 又有很好的可靠性和可扩展性, 便于在此基础上进行应用层协议的开发。

3 应用层协议设计

CAN协议是建立在OSI 7层开放互连参考模型基础之上的, 但CAN协议只定义了模型的最下面两层———数据链路层和物理层, 总线控制器提供了底层 (物理层和数据链路层) 的硬件支持, 因此传送规则、传输控制和电气属性相关的功能均有控制器自动处理完成, 保证了节点间无差错的数据传输。因此, 基于CAN网络应用层通信协议中无需考虑错误检测和故障界定, 只需考虑的是针对应用层通讯协议的规则[3]。

CAN的应用层协议必须由网络用户自行定义, 一些国际组织制订的标准协议, 应用最为广泛的是Device Net和CANopen, 分别广泛应用于过程控制和机电控制领域, 但此类协议一般结构比较复杂, 因此需求研制一种基于CAN总线的分布式系统的CAN总线高层通信协议[4]。

3.1 节点模块设备管理机制

在智能传感器网络中每一个传感器节点模块, 在通过CAN总线进行数据交互之前, 都首先需要对硬件电路进行必要操作, 图1给出了节点设备操作流程。

根据设备管理机制进行设备管理程序编写, 程序采用的是动态加载的方法, 主要就是在程序初始化的时候从动态库中取得各个函数的地址并保存起来, 然后在需要的时候调用, 在程序退出的时候释放掉打开的动态库句柄。

根据需求进行模块化的程序设计。主要接口函数有以下几种:

打开设备Open Device () ;

关闭设备Close Device () ;

初始化CAN节点Init Can () ;

读取设备信息Read Board Info () ;

获取CAN状态Read Can Status () ;

获取设备的相应参数GetReference () ;

设置设备的相应参数SetReference () ;

清空指定缓冲区Clear Buffer () ;

启动CAN节点Start CAN () ;

复位CAN节点Reset CAN () ;

发送数据Transmit () ;

从指定的设备读取数据Receive () 。

3.2 节点模块数据收发机制

在确定模块数据收发机制之前, 首先需要定义用到的数据结构, 包括:传感器接口卡信息的数据类型, CAN信息帧的数据类型, CAN控制器状态的数据类型, 错误信息的数据类型, 初始化传感器节点的数据类型。

此外, 为了使软件具有易读、易扩展、易维护的特点, 协议设计遵循模块化设计原理, 各模块之间通过适当的入口和出口函数相互联系, 组合灵活方便。如图2所示分别给出了数据发送和接收的系统结构框图, 此设计不仅能够将数据顺利的发送并接收, 同时可以计算成功发送、接收帧数及发送时间, 方便测试工作的完成。

3.3 用户界面设计

用户界面设计要求界面友好, 可完成设备连接、基本设备参数设置、启动、复位、数据发送、数据接收、成功发送次数、成功发送帧数、所用时间等功能, 能够实现CAN通信及基本测试工作。如图3所示为CAN通信收发测试界面。

4 实验测试

在实验室环境下, 搭建试验平台:两台PC机上分别运行如图3的上位机应用层程序, 并且通过USB分别连接一台协议分析仪CANalyst-Ⅱ, 协议分析仪CANalyst-Ⅱ均使用第一通道, 利用双绞线将两台协议分析仪的连接起来, 即搭建起试验验证平台。两台CANalyst-Ⅱ均进行设置:验证码为0X00000000, 屏蔽码为0XFFFFFFFF, 滤波方式为双滤波, 运行模式为正常模式。

利用该实验平台, 分别尝试利用1Mbit/s和500Kbit/s, 发送1000 000帧数据, 以检测基于CAN总线智能传感器网络通信的正确性、实时性及可靠性, 表3为实验结果。

实验结果表明, 该应用层通信协议在基于CAN总线智能传感器网络数据传输时是完全可行的, 整个网络性能良好具有高可靠性, 数据实时性高, 稳健性好, 测试结果符合设计目标。

摘要:以智能传感器网络为背景, 在CAN V2.0技术规范的基础之上提出了基于CAN总线的智能传感器网络的应用层通信协议。首先根据传感器之间相互独立, 数据传输量小的特点设计了一种扩展帧的数据传输格式。设计了方便快捷的设备管理机制、数据收发机制及测试界面, 实现了智能传感器网络的数据传输, 解决了针对智能传感器网络数据交互的问题。最后利用协议分析仪CANalyst-Ⅱ进行了实验测试, 验证了协议的有效性。

关键词:CAN总线,传感器网络,通信协议,CANalyst-Ⅱ

参考文献

[1]王保云.物联网技术研究综述[J].电子测量与仪器学报.2009, 23 (12) :1-2

[2]王黎明著.CAN现场总线技术系统的设计与应用[M].北京:电子工业出版社, 2008.15-17

[3]饶运涛, 邹继军, 郑勇芸著.现场总线CAN原理与应用技术[M].北京:北京航空航天大学出版社, 2003.72-79

CAN应用层协议 篇3

随着CAN现场总线应用越来越成熟,气动管道传输以其独有的便捷性得到了国外医院、购物超市广泛的认可,而国内此方面的应用相对较少,因此,气动管道传输系统在国内具有更大的发展空间。现就气动管道传输系统在超市现金方面的CAN协议应用进行了深入研究。

1超市现金气动管道传输系统与CAN现场总线协议简介

1.1超市现金气动管道传输系统简介

超市现金气动管道传输系统主要由传输瓶、传输管道、空压机、发送站、转换器和接收站六部分组成,发送站和接收站统称为工作站,同时具备发送站和接收站功能的工作站称为收发站。传输瓶内装载的是需要传送的现金,传输管道是传输系统物理传输介质,发送站发送传输瓶,接收站接收传输瓶,空压机通过传输管道与转换器连通,转换器通过各传输管道分别与传输承载器的发送站和接收站相连。通用的超市现金气动管道传输系统可以在最小的两个工作站之间单向传送,也可以扩展为包含不同地方的上百个收发站的网络传输[1]。

超市现金气动管道传输系统目前广泛应用于国外大型购物超市,而国内仅有几家家乐福超市使用此系统。目前国内外超市现金气动管道传输分为单向现金传输和双向现金传输。单向现金传输指的是只能由收款台(发送站)向金库保险柜(接收站)单向传输现金;双向现金传输指的是不仅可以由收款台(发送站)向金库保险柜(接收站)传输,也可以由金库保险柜(发送站)向收款台(接收站)传输零用现金票据等(见图1)。

1.2CAN总线协议简介

CAN总线是目前国际上应用最为广泛的现场总线之一。CAN总线成本较低,相对于其他现场总线,软硬件更易于实现[2],目前国内CAN现场总线软硬件技术应用相对比较成熟。CAN总线为多主总线,数据传输距离大(最长距离可达10公里,与传输速率有关),具有较高的数据传输速率(可高达1MB/s)。数据采用短帧结构,有效地降低了单个数据包受干扰的可能性[3]。CAN总线具有可靠的错误处理和检错机制,发送的信息在遭到破坏或无人应答后可自动重发。此外,CAN总线还可根据现场需要设定验收滤波器,报文ID可用来指示信息优先级[2]。

2超市现金气动管道传输系统中CAN节点设计解析

2.1超市现金气动管道传输系统中CAN节点设计思想

超市现金气动管道传输系统是由中央控制器(简称上位机)作统一协调控制的分布式控制系统,它的特点是分散控制、集中管理。上位机软件是传输系统核心,发送站通过CAN总线传递传输瓶要到达接收站地址给上位机软件;感应器作为工作站和转换器输入信号以CAN通信方式传递传输瓶在管道中的具体位置;上位机软件通过CAN总线控制转换器转向以及空压机的启停;接收站接收到传输瓶后通过CAN总线告知上位机软件传输瓶已到达并附带发送站地址。现研究各工作站和转换器CAN节点硬件设计和CAN数据帧设计。

2.2超市现金气动管道传输系统中CAN节点数据帧设计

数据帧有2种不同的帧格式,以标识符域的长度作为界定,分别是标准帧和扩展帧。含有11位标识符的数据帧称为标准帧,而含有29位标识符的帧为扩展帧,现采用标准帧。数据帧由以下7个不同的位域组成:帧起始、仲裁帧、控制域、数据域、CRC域、应答域和帧结尾(见图2)。

帧起始、仲裁域、控制域、数据域以及CRC序列,均是通过位填充方式编码。其中帧起始固定有一个显性位(逻辑0)组成;仲裁域由11位标识符和RTR位组成,RTR位在数据帧里必须为显性;控制域IDE/r1和r0为保留位,有专门规定,DLC3—DLC0为数据长度代码,规定数据域字节数目,长度为{0,1,…,7,8},其他数值不允许使用;CRC域包括CRC序列和CRC界定符,CRC序列由CAN总线通信控制器sja1000自动生成;其他位域(CRC界定符、应答域和帧结尾)格式固定,没有填充[4]。因此CAN数据帧设计集中在仲裁域中11位标识符和数据域数据的设计。

2.2.1 11位标识符设计

采用双滤波模式,待过滤报文只需通过其中一个滤波器。如图3标准帧双滤波模式所示,ACR0—ACR3为验收滤波器,AMR0—AMR3为屏蔽滤波器,验收滤波器设置验收报文,屏蔽滤波器设置屏蔽位,对于不需要经过验收滤波的报文位,验收屏蔽寄存器必须在相应的位位置上置“1”, 对于需要经过验收滤波的报文位,验收屏蔽寄存器必须在相应的位位置上置“0”(见图3)。

设计中11位标识符分为两部分,ID28—ID26为本机优先级,此三位用来设置空压机、工作站和转换器在CAN总线中的节点优先级,不同的优先级对报文具有不同的接收能力;ID25—ID18为总线地址,用于总线广播;DAT0为节点地址,当节点地址与总线相同时为总线广播,所有CAN节点均可接受报文数据,当节点地址与总线地址不相同时,用于同单个CAN节点进行通信。

2.2.2 数据域数据设计

数据域数据最多可高达8个字节数据,字节数太少,不能完全包含需传递的信息内容,信息有效性得不到保障;字节数太多,增加信息丢失的可能性,信息可靠性得不到保障。对数据有效性和可靠性进行综合考虑,设计数据域采用4字节数据,数据1(DAT0)为目标地址,存放接收主机地址;数据2(DAT1)为指令代码,方便CAN接收指令解析,当主机接收到指令代码时作出相应控制动作;数据3(DAT2)和数据4(DAT3)分别为指令数据1和指令数据2,二者组合包含查询内容、设备参数、工作状态、路由数据、传输瓶状态、故障节点等相关信息,此组合保证了需传递信息的完整性。

3CAN总线在超市现金气动管道传输系统中的硬件及软件设计

3.1CAN总线在超市现金气动管道传输系统中的硬件设计

现场总线理论速率可高达1 MB/s,但目前现场总线由于物理介质传输线衰减、信号抗干扰能力低等原因,应用速率仅为几十到数百kB/s,因此,普通8位单片机完全可以满足CAN节点通信要求。采用philips公司高性能8位CMOS单片机p89v51rd2作为主控制器,采用市场相对普遍、具有较高稳定性的sja1000作为CAN总线通信控制器和pca82c250作为总线收发器,为避免传输信号受噪声信号干扰和衰减干扰,采用光耦合器6n137隔离信号(见图4)。

3.2CAN总线硬件设计的注意事项

如图4所示,硬件电路的设计并不困难,现场应用中需注意的问题及解决的方法进行总结如下[5]。

1) sja1000的复位是低电平,但是将单片机的RST脚反相并不可行,在此使用单片机I/O引脚来控制sja1000的复位引脚,从而单片机完全控制sja1000的复位。

2) sja1000的TX1脚悬空,RX1脚的电平必须维持在0.5VCC以上才能形成CAN协议要求的电平逻辑,在此采用电阻串联分压使电压稳定在0.6VCC。

3) 光耦合器6n137的第2脚和第3脚之间是一个LED,必须串接一个限流电阻,第6脚Vo输出电路属于集电极开路电路,必须上拉一个电阻。

4) 为使CAN总线正常通信,CAN总线两端必须接有一个120欧姆的匹配电阻,在现场有时需根据CAN总线阻值调整匹配电阻。

3.3CAN总线在超市现金气动管道传输系统中的软件设计

本设计CAN协议支持CAN2.0B协议,CAN总线工作于PeliCAN模式。软件设计主要分为CAN初始化和CAN指令解析,CAN初始化必须在复位模式下对相应寄存器进行写入操作,CAN指令解析是下位机对上位机CAN指令进行相应控制动作。空压机、发送站、转换器和接收站初始化程序大体相同,只是在验收滤波器设置方面有些许差别,以下为转换器初始化程序。

4结束语

超市现金气动管道传输系统是气动管道传输系统现场应用之一,以压缩的空气为动力,是改进的人机工程学,通过转换器使传输瓶在发送站和接收站之间的任意管道内自由传送接收,国外典型应用于医院、银行、大型超级市场和大型图书馆等场所,目前国内仅应用于医院气动物流。该系统具有低运营成本,无污染、快捷、安全、高效,减少往返时间提高生产力,减少手工操作、节约人力成本等突出优点,被事实证明有极强的稳定性和可靠性。可以预见,伴随着商业集团化、超市酒店一体化,超市现金气动管道传输系统也必然会在未来几年内应用在国内大型购物超市。

摘要:超市现金气动管道传输系统已广泛地应用于国外大型购物超市,本文简要地介绍了超市现金气动管道传输系统和CAN现场总线协议。对系统中运用的CAN协议进行深入研究,提出现场CAN节点硬件设计及现场应用的注意事项并编写出初始化程序,旨在推广气动管道传输系统在国内的应用。

关键词:超市现金气动管道传输系统,CAN现场总线协议,CAN节点硬件设计

参考文献

[1]房志刚.气动物流传输系统.专利号:200820161094,2008

[2]余新良.CAN总线在工业嵌入式控制系统中的应用研究.厦门:厦门大学优秀硕士论文集,2008

[3]博创科技.2410—S实验指导书.2005年10月

[4]饶运涛,邹继军,郑勇芸.现场总线CAN原理与应用技术.北京:北京航空航天大学出版社,2003

CAN应用层协议 篇4

作为流体精密计量与投料的理想设备,计量泵如今已被广泛地应用于石油化工、制药和食品饮料等各个领域,在工艺过程中担负着强腐蚀性、毒害性和高压介质的计量投料任务[1]。然而,由于传统的工业计量泵流量的调节是通过手工操作来实现的,这在某些恶劣的工业现场必然对操作人员的生命安全造成威胁,所以研究计量泵的远程控制具有十分重要的意义。

以太网从20世纪90年代初开始进入工业控制领域[2],具有传输速度高、低耗和兼容性好等优点,利用TCP/IP协议容易互联,但由于其在数据链路层采用CSMA/CD介质访问控制协议,具有冲突时延不确定的缺陷[3],并且其在工控领域的应用不成熟,使之无法直接应用于工业现场控制系统。故目前现场设备层大多是基于现场总线构建[4,5],而网络控制层为了便于与Internet连接,大多采用以太网构架[6]。

本研究设计一种协议转换器,将工业现场的计量泵通过CAN总线组网,并将其接入基于以太网的远程监控站,通过远程监控站实现对计量泵的远程监控。

1 系统结构与硬件设计

协议转换器网络化监控图如图1所示。协议转换器按功能可划分为以下5大块:以太网模块、CAN模块、电源模块、JTAG调试模块和复位电路模块,其系统框图如图2所示。

系统选用NXP公司的一款ARM7 LPC2368为系统微处理器。LPC2368内置了一个10/100 Mbps Ethernet MAC接口和2路CAN2.0B通道,Ethernet MAC带DMA控制器,并在独立的AHB总线上有16 KB的SRAM [7],这不但减少了系统外围硬件电路的设计,也降低了硬件设计成本。

1.1 CAN通信模块

系统采用的主控芯片LPC2368内嵌有CAN控制器,这里选用了一款PHILIPS公司的TJA1040 CAN总线物理层收发器与LPC2368内的CAN1控制器组建了系统的CAN通信模块,接口电路如图3所示。

图3中,置TJA1040模式位STB为低电平可使其处于正常工作模式,考虑到LPC2368处理器的驱动能力有限,在收发引脚和控制脚上都辅接了上拉电阻,将CAN总线接口连接到工业现场的计量泵。

1.2 以太网模块

LPC2368内部集成了一个10/100 Mbps Ethernet MAC控制器,硬件电路需要在LPC2368的以太网MAC相关引脚外接以太网物理层收发芯片,以太网物理层的收发芯片再通过一个带有网络隔离变压器的RJ45的底座来实现与外部以太网总线的连接。

通常,以太网MAC与物理层收发器连接采用MII接口或者RMII接口,LPC2300系列ARM的以太网MAC只支持RMII接口。以太网接口电路连接图如图4所示,其中DM9161A是台湾DAVICOM公司生产的物理层收发芯片,符合IEEE802.3.10BASE-T/100BASE-TX协议标准,并且支持RMII接口技术,MAC控制器通过RMII接口与DM9161A相连,DM9161A的输出信号通过网络隔离变压器HR911105后通过以太网连接到远程监控站。

2 系统软件设计

协议转换器的软件设计包括DM9161A驱动程序、TCP/IP协议栈的移植、CAN通信程序以及以太网-CAN通信协议的转换。

2.1 DM9161A驱动程序

DM9161A的驱动程序设计主要包括3个部分:DM9161A和MAC控制器的初始化以及LPC2368内部16 KB SRAM的分配。对DM9161A和MAC控制器的初始化通过函数Init_EMAC()实现,主要是对其相关寄存器进行设置,如工作模式、工作速度等。由于以太网的最大帧长度是1 514个字节,为利于程序处理,对SRAM的分配遵循将接收缓冲区和发送缓冲区块的大小设为1 536个字节,程序中分配了4个接收缓冲区和3个发送缓冲区,还剩余5 KB左右的空间便于以后扩展。

2.2 TCP/IP协议栈的移植

TCP/IP协议栈由网络链路层、网际层、传输层和应用层构成。对于嵌入式系统而言,由于其内部资源有限,不可能将一个完整的TCP/IP协议栈移植进去,故可根据系统的具体要求,对TCP/IP协议栈进行简化并移植到嵌入式系统中。

系统中,网际层保留了ARP协议、ICMP协议和IP协议;传输层保留了具有差错控制的TCP协议,TCP协议是面向连接的协议,它可以弥补IP协议的无连接性,程序中TCP软件协议是以有限状态机的形式来实现的,有限状态机可以提高程序执行效率,增强程序可读性和可扩展性。本系统中TCP的各种状态如表1所示[8]。

系统采用C/S物理拓扑结构,即“客户机+服务器+控制端”的模式。本系统作为服务器,远程监控站为客户机,计量泵为控制端。运行流程如图5所示,在客户机发出打开命令之前服务器进程发出被动打开命令,进入LISTEN状态,直到收到SYN报文段为止。当服务器收到SYN报文段时,它就发送SYN+ACK报文段,并进入SYN-RCVD状态,等待客户机发送ACK报文段。在收到ACK报文段后,进入到ESTABLISHED状态发送数据。TCP直到它从客户机处收到FIN报文段时就可以关闭连接了,进入CLOSED状态。

系统采用Keil uVisoin3开发工具,以C语言作为开发语言,由于篇幅所限,下面给出了TCP有限状态机部分代码:

2.3 以太网-CAN通信协议的转换

CAN数据帧为短帧格式,其数据域为0~8个字节,数据帧也就十几个字节,一般应用于对数据量要求不高但对系统实时性要求较高的工业场所。系统中采用CAN标准信息帧格式,其标识符的长度为11位,每一台计量泵都有各自唯一的标识符,远程监控站就是通过该标识符来实现对相应计量泵的动作控制。IP报文封装远比CAN复杂很多,它可以包含ICMP、UDP、TCP等协议,单是IP首部就在20~60字节之间,最大帧长度可达1 514个字节。

显然,CAN数据帧和以太网数据帧不能兼容,需要实现CAN总线协议和以太网总线协议的转换,故该系统也可以称为Ethernet-CAN bus协议转换器。当远程监控站需要向工业现场的计量泵发送指令时,将要发送的指令封装入TCP数据报中,再将该TCP数据报封装入IP数据报中,然后向协议转换器发送,该发送的指令包括对象计量泵的标识符、事件驱动以及相关的事件指标,如发送控制指令0x0210001E表示设置2号计量泵(0x02)的工作模式为手动模式(0x10),工作频率为30 Hz(0x001e)。

协议转换器接收到数据后,将该数据从IP数据报中解析出来,再从TCP数据报中解析出来,然后通过CAN数据报封装起来。CAN总线网络采用Modbus协议为其应用层协议,以协议转换器为Modbus主站,计量泵为从站,将CAN数据报以Modbus协议标准发送到工业现场的计量泵。整个系统的软件流程图如图6所示。

3 结束语

本研究介绍了一种协议转换器,将TCP/IP协议栈移植到LPC2368中,将CAN总线技术和以太网技术相结合,通过两者的协议转换以达到计量泵远程监控的目的。本系统可扩充性强、性价比高,经初步测试结果表明,该方案切实可行,已初步应用于对计量泵的远程监控中。

参考文献

[1]陈雨田,黄晓斌,陈震,等.计量泵、磁力泵、高速泵和增压泵的应用介绍与市场发展[J].化工设备与管道,2006,43(6):35-38.

[2]孙兵,何瑾,陈广厦.基于DSP的CAN总线与以太网互联系统研制[J],仪器仪表学报,2008,29(2):377-380.

[3]CHEN Ji-ming,WANG Zhi,SUN You-xian.Real-time ca-pacity analysis of ethernet in industrial application[C]//Proceedings of the 4thWCICA,2002:2227-2230.

[4]唐鸿儒,丁伟.现场控制网络技术展望[J].测控技术,2000,19(12):1-4.

[5]KOLLA S,BORDER D,MAYER E.Fieldbus networks forcontrol system implementations[C]//Proceeding of Electri-cal Insulation Conference and Electrical Manufacturing&Coil Winding Technology Conference,2003:493-498.

[6]万静华,丁亚军.以太网控制器的嵌入式设备网络互联[J].单片机与嵌入式系统应用,2001(12):41-43.

[7]周立功.深入浅出ARM7-LPC2300(上册)[M].广东致远电子有限公司,2004.

CAN应用层协议 篇5

本期文章将介绍如何利用XGate-COP10模块设计风电变流器的CANopen从站接口。

1 XGate-COP10简介

XGate-COP10是一款CANopen从站协议转换模块,内部集成了CANopen从站协议栈,遵循CiA DS301V4.02进行设计,其内部集成了网络管理(NMT)、服务数据(SDO)、过程数据(PDO)、错误管理等功能。同时也遵循了DS303-3指示灯以及DS305层设置(LSS)等相关协议,使模块功能更强大。所有的功能均通过CiA提供的一致性测试软件的测试,保证了与其他CANopen设备良好的兼容性。

XGate-COP10为DIP24封装,拥有较小的占位面积 (6 cm2) ,非常容易集成到用户设备中,其外观如图1所示。

2 变流器CANopen接口硬件设计

XGate-COP10硬件设计框图如图2所示。

变流器控制板的MCU与XGate-COP10通过串口 (TTL电平) 进行连接。用户可以使用MCU的一个I/O口连接到XGate-COP10的复位引脚 (/RST) 实现对模块的复位控制。某些情况下还需要把XGate-COP10中断信号输出引脚连接到变频器的中断输入引脚,以便及时处理RPDO数据。MCU只需要预留1路串口、1路中断输入和1个I/O口即可。对于XGate-COP10来说,由于其内部未集成CAN收发器,推荐使用带隔离的CAN收发器模块CTM8251T。XGate-COP10采用的是标准的CANopen协议,这里使用外接DIP开关来设置设备的节点地址和波特率,以及外接LED指示灯来指示当前模块的CANopen状态。

3 风电变流器参数资源分配

对于实时数据,XGate-COP10有96 B的输入和96 B的输出存储区供用户使用,这些存储区可以用于变流器的各项实时参数与其他CANopen设备之间的数据交换。

对于非实时数据,XGate-COP10提供了直接访问对象字典的串口命令,用户可以通过该命令对模块的对象字典进行读写,实现变流器对CANopen网络中非实时参数的访问。

这样,CANopen主站设备或其他设备和变流器的之间通信就变得十分方便。

(1) 资源分配

变流器相关参数在XGate-COP10存储区的分配情况如表1所示,用户只需要把数据写入XGate-COP10数据输入存储区,XGate-COP10就会按照CANopen协议的定义对数据进解析处理。同样来自CANopen网络中控制信息也会经过解析之后存放于数据输出区,用户只需要从输出区读出即可。

(2) 实时数据传输配置

XGate-COP10中最多支持12个RPDO和12个TP-DO数据的传输,并且PDO数据可映射到数据存储区的任意数据区,其数据映射示例如表2和表3所示。

4 变流器控制器MCU对XGate-COP10的操作

XGate-COP10提供了一个串口与变流器控制器MCU进行连接。为了方便用户快速可靠地实现模块与MCU通信,广州致远电子有限公司提供了XGate-COP10串口协议的驱动源码。当XGate-COP10的输出内存区接收到CANopen网络中的实时数据之后就会立即向用户MCU产生一个中断,此时用户可以通过UART发送相关命令字读取数据输出区的内容。用户可将实时更新的传感器数据写入输入缓冲区,XGate-COP10自动发送至主站或者其他从站设备。用户程序软件操作流程示例如图3所示。

经过以上步骤,快速地实现了风电变流器的CANopen接口,并能与其他CANopen设备进行通信。XGate-COP10的出现,使开发者不再为开发CANopen协议栈而苦恼,大大缩短了开发周期。相信在XGateCOP10的帮助下,你能获得更大的成功。

基于CAN协议的多电机控制 篇6

关键词:CAN总线,协同控制,STM32

0 引言

电机协同控制系统在实际生产过程中的应用相当广泛, 如配料、工业切割、机械手臂、传动等生产过程必须多台电机协同控制。尤其是在大工件切割加工过程中, 由于电机比较多、分布比较广, 采用传统的控制器与电机驱动器一对一的脉冲控制模式, 不仅控制线路复杂, 抗干扰能力差, 且在控制过程中脉冲容易丢失或引进干扰脉冲、可靠性低。

现场总线打破了传统控制系统一对一的结构形式, 采用智能现场设备, 把传统的脉冲传送改为智能型总线数据传送并具有数据完整性校验和重发机制等纠错功能。近年来利用现场总线实现电机群控制有了较多的研究, 本设计利用CAN总线通信方式灵活, 通信速率高, 可靠性、实时性和抗干扰能力强[1], 且低成本的优点, 探索基于CAN总线的电机群控制系统, 通过编制控制协议改善电机群的协同控制性能。

1 系统设计

本系统设计分为硬件设计、CAN通信网络应用层协议设计、软件设计三个部分。

1.1 硬件设计

基于CAN总线的电机群控制系统的由运动控制器、步进电机或伺服电机 (4台) 及相应带CAN总线的电机驱动器等组成。通过CAN总线连接成一个完整的通讯网络, 实时传输各运行参数、控制命令。系统的控制对象主要是4台电机, 即M1:X轴向运动电机、M2:Y轴方向运行电机、M3:刀头上下移动电机 (Z轴电机) , M4:刀头旋转电机 (U轴) 。电机群控制系统结构图如图1所示:

1.1.1 运动控制模块

本系统的主控制CPU及各个模快控制CPU均选用的基于ARM Cortex-M3内核的STM32F103RBT6嵌入式处理器。该处理器带有64KB的Flash和20KB的SRAM资源, 主频为72MHz, 信号处理最高可达1.25DMips/MHz, 运算速度快, 非常符合电机群控制系统数据计算量大的需求。因该芯片内部带有2.0A和2.0B的CAN控制器, 不再需要另加CAN控制器, 给CAN通讯外围电路设计带来了便捷。主控制器负责位置、速度数据的运算, 将数据指令通过CAN总线发送各分布式控制模块。各节点运动控制模块接到命令后, 进行相应的操作, 驱动各自所带电机运动。

1.1.2 电机驱动模块

下位节点接收主控制器发送的数据, 并对数据进行分析处理, 将其转成脉冲信号送入步进电机驱动器。由于数据计算量大, 且要求运算速度快, 故下位机同样采用STM32芯片作为CPU。步进电机的驱动选用LV8731V芯片。LV8731V是2ch H桥驱动, 内置1ch PWM电流控制步进电机驱动, 能设定2相/1-2相/W1-2相/4W1-2相励磁模式, 只要输入STEP信号、励磁STEP就可以进行, 非常适合带动步进电机, 并且内置输出短路保护电路, 无需控制电源。切割机电机系统采用激光切割, 只需要一般的步进电机带动激光探头即可。所以这样的组合不需要额外的驱动设备, 结构简单, 性价比高, 非常适合切割机电机系统。

LV8731V的OUTA1, OUTA2, OUTB1, OUTB2管脚, 直接连接步进电机。LV8731V的DC12管脚与stm32 PA7管脚 (TIM1) 相连, 通过设置TIM1来调节输出的PWM波控制速度。励磁模式设定为8细分4W1-2相励磁模式, 通过stm32 PA6, PA7管脚来控制。设定DM接地, 使端子为STM模式, 能控制CLK—IN输入的1ch步进电机。

1.2 CAN通信网络应用层协议设计

CAN总线是一种有效支持分布式控制或实时控制的串行通信局域网络[2]。从OSI网络模型的角度来看[1], CAN现场总线仅仅定义了第1层即物理层、第2层即数据链路层 (见ISO11898标准) ;没有规定应用层, 需要一个高层协议来定义CAN报文中的11/29位标识符、8字节数据的使用。目前占领市场主流的应用层协议是:Device Net协议和CANopen协议[5]。但是Device Net和CANopen协议难度大、规范复杂, 开发周期长、成本高。针对本控制系统的控制对象为4台电机的情况, 根据CAN总线的要求, 必须研究一套简单而有效的高层通信协议。

1.2.1 CAN报文的分配

CAN一个数据帧[3]包括了帧起始、仲裁场 (标识符+RTR) 、控制场、数据场 (0-8bytes) 、CRC、应答场、帧结束。用户协议需要自行设计的为仲裁场、控制场和数据场。在本电机群控制系统中, 每一个节点有且只有一个其专属的地址, 地址码和系统中各电机模块对应, 总线上按照地址来传送数据。电机控制系统中主控节点为1, X轴、Y轴、Z轴、U轴电机节点依次为2、3、4、5。由于系统规模比较小, 节点数少于16个, 地址码设定为4位, 同一系统中地址码不能重复。目的地址的标识符定为ID3-ID0, 源地址标识符定ID7-ID4[5]。ID9-ID8定义为功能码, 用于表示报文所要实现的功能。两位标识符定义了4个功能码, 分别是:0X00表示对单个或多个节点写入数据;0X01表示断开与电机控制系统从节点的通讯连接;0X10表示和电机控制系统从节点建立通讯连接;0X11表示检测网络上的ID从节点是否存在[2]。ID10位定义为ACK响应位[4], 该位用来区分帧的类型。当响应标志位为0时, 表示发送的是命令帧, 节点需要应答。控制场有6个位组成, 标准格式里的帧包括数据长度代码、IDE位、保留位r0[5]。数据场由数据帧里的发送数据组成。它可以为0~8个字节, 每个字节包含了8位。第一个字节为命令, 接下来字节都为具体要发送的数据。发送的优先级由节点的ID决定, ID越小[4], 优先级越高。

1.2.2 数据通讯的实现

数据通讯定义了网络中传输数据的内容和传输的方式。电机群控制系统的CAN用户层协议通讯模式由主从方式和事件触发方式构成。两种模式搭配使用, 增强了通讯协议的灵活性。主从通讯模式用于CAN网络中的主站对于从站的访问。事件触发通讯模式用于从站主动向主站传送数据报文。

1.2.3 网络管理

网络管理的对象是于网络中节点和报文发送状态。对于CAN网络管理, 其主要任务是处理网络中的错误, 协调各个节点的状态, 监控报文的发送情况。可以分为节点控制和通讯控制两部分。节点管理[5]是指对总线上所有应用节点进行初始化, 让每个节点在通讯前处于准备状态并排除总线上是否存在相同的节点。通讯管理是管理网络中通讯的报文, 保证报文能够正常地接受发送。

1.2.4 电机设备协议的原则

电机设备协议是网络中电机设备的描述规则, 在本系统中对CAN应用层协议的电机描述设备以及要执行的命令参数定义见表1。

部分主要代码如下:

void CAN1_Init (void) , 在此函数中设置过滤器, 波特率以及管脚配置、中断配置;

void Init_Rx Mes (Can Rx Msg*Rx Message) , 初始化接收帧;

void CAN_Send Init (u8 addr) , 初始化节点, addr为目标地址, 当addr值取0X00时, 表示广播, 各节点都收到信息;

void CANSet Co (u8 addr, s32 co) , 设置坐标, addr为目标地址, co为设置的坐标;

void CANSet Speed (u8 addr, s32 speed) , 设置速度, addr为目标地址, speed为设置的速度;

void USB_LP_CAN1_RX0_IRQHandler (void) , 下位机CAN1接收中断处理函数, 更新线圈和寄存器。通过swtich语句来实现不同信息的处理。

1.3 软件设计

在电机群控制系统中, 系统软包括主控制器发送接收模块、运动控制器发送接收模块、CAN通讯模块。主控制器发送接收模块向各个电机的运动控制器发送运动信息 (设定位置、速度等) , 等待来自各运动控制器的反馈信息;运动控制器发送接收模块接收到来自主控制器的命令后, 对命令进行解析, 执行相应的操作控制电机, 并将电机的状态信息反馈给主控制器。CAN通讯模块负责主控制器与各运动控制器之间数据通讯。系统软件流程图如图2所示。本设计采用美国Keil Software公司出品的Keil u Vision4软件开发系统, 使用C语言来开发。

2 测试结果

在试验中, 用2个电机进行模拟测试, 主控制器 (节点1) 向X轴 (节点2) 和Y轴 (节点3) 两个电机的控制器发送指令, 将LA1032逻辑分析仪直接接入节点2和节点3的控制芯片的TIM1上, 同时测量节点2和节点3的脉冲波形, 通过对比分析两电机的协同工作情况及CAN通讯协议的通信效果。

按编制的CAN通讯协议, 节点1先发送一个广播帧对各站点进行初始化, 再向节点2、节点3同时发送周期为140us, 占空比为50%的脉冲;1ms以后, 向节点2、节点3发送周期为14us, 占空比为50%的脉冲, 两种频率不同的脉冲交替发送, 相隔时间为1ms。逻辑分析仪观察到节点2和节点3的波形图如图3。从图3可以看出, 两节点电机的执行命令的时间差在20us左右。表明通信协议是可行的, 两电机的同步控制误差比较小。

3 结束语

以STM32RBT6 ARM芯片为主、从控制器, 通过CAN总线利用总线广播模式实现电机群协同控制, 其CAN总线通信协议比较简单, 电机群的协同控制效果好, 且成本低, 可靠性高, 响应速度快, 该系统可实际应用于工件切割、数控钻孔。

参考文献

[1]邬宽明.CAN总线原理和应用的系统设计[M].北京:北京航空航天大学出版社, 1996.

[2]麦毅强, 倪文秀, 王仁龙.基于DSP的CAN总线通信技术研究[J].微计算机信息, 2010, 8-2:111-113.

[3]彭刚.基于ARMCortex-M3的STM32系列嵌入式微控制器应用实践[M].北京:电子工业出版社, 2011.

[4]刘涛, 王宗义, 孔庆磊, 武光田.基于CAN总线的多电机协调运动控制系统研究[J].机床与液压, 2010:38-3.

车载CAN总线网络管理协议浅析 篇7

随着车辆电子技术的不断发展,车辆电气系统中电控单元(ECU)的应用日益增多。不断增多的ECU和数据交互使得车载网络也越来越复杂,也给整车的静态功耗设计带来了挑战,为了保证车载网络的安全性和可靠性,同时为了更好的控制整车静态功耗,有必要建立一套管理机制对网络安全和故障进行监控处理。

网络管理的主要功能有:保证网络同步进入睡眠状态、网络启动后确定网络配置、运行过程中监控网络配置、提供网络状态信息以及对网络故障的处理。

2、网络管理的方案

目前比较典型的适用于汽车CAN总线网络管理协议有OSEK、AUTOSAR和SAEJ1939网络管理协议,下面就这些协议进行简要的介绍和对比分析。

2.1 OSEK网络管理

OSEK/VDX是用于分布式实时结构的一组标准,它包含四个标准:操作系统(OS)、通信(COM)、网络管理(NM)和OSEK实现语言(OIL),其网络管理部分的标准(OSEK NM)被广泛的应用于车载CAN总线的网络管理。

OSEK网络管理分为直接管理和间接管理两种。

2.1.1 OSEK直接网络管理

OSEK直接网络管理是一种分布式的网络管理,它通过逻辑环对网络进行监控,每个节点被其他节点监控的同时也根据各自的状态发送特定统一的网络管理报文。

OSEK网络管理为每个节点定义了不同的工作状态和状态间的转换关系,各个节点通过调用网络管理服务进行网络管理状态的迁移。节点的网络状态及迁移关系如图1所示:

图2所示为逻辑环机制,当网络处于NMOn状态时,连接在总线上的ECU需要按照各自地址的大小从小到大依次发送网络管理报文,从而形成虚拟的逻辑环。

OSEK网络管理在协议数据单元(NMPDU)中进行网络管理需求和状态信息的传递,各节点需要按照各自的网络管理状态发送对应的信息,并接收其他节点发送的状态信息。网络管理协议数据单元包含地址域、控制域和数据域,与CAN总线的帧格式按照如下方式对应:

OSEK直接网络管理报文有以下三种类型(通过控制域的配置):

●Alive报文:各节点声明自身将要加入到“逻辑环”的报文

·Ring报文:各节点向后继节点传递“令牌”的报文

·LimpHome报文:节点不能正常收发报文时,节点进入跛足LimpHome状态,之后节点周期性的发送此报文

对于网络的休眠同步管理,OSEK直接网络管理提供了一个协商机制:休眠由网络上的某个节点发起,在发送的Ring报文中将Sleep.Ind置1,其他节点根据各自的状态进行确认,如果满足休眠条件则同样将Sleep.Ind置1,否则将Sleep.Ind置0;当网络上所有节点的Sleep.Ind都为1时,发起休眠的节点发送休眠确认报文(Sleep.Ack=1),其他节点在接收到休眠确认报文后停止发送Ring报文,同时启动休眠定时;当休眠定时到时,所有节点同步休眠。整个过程如下图所示:

2.1.2 OSEK间接网络管理

OSEK间接网络管理的策略与直接管理不同,间接网络管理主要通过监控节点的应用报文来间接监控网络的状态,这就需要有一个主节点来统一监控网络上的其他报文,被监控的节点需要有周期性发送的应用报文,如果某个节点正常情况下只接收而不发送报文,那么它需要发送特定的报文使它可以被其他节点监测到。

在间接网络管理中,被监控的网络节点有两个状态:

●在线:主节点接收到节点A的被监控报文,则认为A在线

●离线:节点A的被监控报文发生超时,则认为A离线

OSEK间接网络管理的休眠和唤醒策略采用主从方式进行,主节点在其一条应用报文中预留一个标志位,置“1”表示请求网络休眠,如果不请求休眠则置“0”。当达到休眠条件时,主节点请求网络睡眠,各节点在收到请求后即进入休眠。唤醒的过程则相反,主节点将睡眠标志位置“0”,然后各节点通过网络进行唤醒。

网络睡眠过程:

2.2 AUTOSAR网络管理

AUTOSAR是Automotive Open SystemArchitecture (汽车开发系统架构)的缩写,是一个制定汽车电子软件标准的联盟,AUTOSAR规范主要包含3个领域:软件架构、应用接口以及方法论。与OSEK相比,AUTOSAR架构模块化更清晰、扩展性更强,有利于车辆电子系统软件的交互与更新,降低电子系统的开发成本提高开发效率。

在AUTOSAR的规范里专门针对CAN网络管理进行了定义。AUTOSAR网络管理采用分布式的直接网络管理机制,各节点网络状态的转换基于节点请求网络的状态及周期性网络管理报文的接收。

AUTOSAR定义的节点的网络状态转换如下图所示:

从图中可以看出,各状态及转换关系与OSEK直接网络管理基本相同,不同的是AUTOSAR没有在网络管理中进行总线错误的处理。这一点,AUTOSAR规范将总线错误管理放到通讯管理模块来实现。

在AUTOSAR网络管理中,网络管理报文的发送即表示节点对于网络通讯有需求,各节点需要周期性的发送网络管理报文直至不再需要总线通信为止。

在网络初始化状态(Repeat Message State)和正常工作状态(Normal Operation State),各节点都要按设定的周期进行网络管理报文的发送,同时各个节点都定义了各自的网络管理报文发送时间偏移以防止报文突发。

当有节点满足休眠条件时,停止发送网络管理报文,此时网络进入准备休眠状态(Ready Sleep State);当所有节点都停止发送网络管理报文并网络空闲达到设定值时(NM timeout),网络进入总线预休眠状态(Prepare Bus-Sleep),随后如果没有节点唤醒的话则进入总线休眠状态(Bus-Sleep)。

AUTOSAR中对网络管理协议数据单元和在CAN总线数据帧中的映射进行了定义,网络管理协议数据单元包括节点标识域和控制位向量,节点标识域是各节点独立特有的标识,控制位向量中定义了网络初始化请求位(Repeat Message Request Bit)用于表示网络初始化的报文。其余6个字节由用户定义,可以增加网络唤醒原因域等。

为了降低网络正常工作时的总线负载,AUTO SAR网络管理还提供了一个网络负载降低机制,即在正常工作状态下,每个节点各自定义一个独立的周期时间参数(Reduced cycle time),在整个网络同时只有周期时间参数最小的两个节点发送网络管理报文。通过这种机制,在节点较多的网络可以大大降低网络负载。

2.3 SAE J1939网络管理

SAE J1939协议是由美国汽车工程协会(SAE)基于CAN2.0B规范编制,目前被广泛应用在商用车领域。

SAE J1939中对网络管理的具体规定在SAE J1939-81中体现,网络管理提供了用来唯一地识别网络中CA (控制器软件)的定义和过程描述,实现了对地址分配和网络错误的管理,但是对网络错误的管理仅限于地址声明方面的错误管理,另外,也没有对唤醒和休眠同步进行管理。

在SAE J1939中,每个节点都有唯一的地址和名字,其中地址长度为8位,用来保证报文ID的唯一;名字长度为64位,用来提供对节点CA的功能描述。

在SAE J1939中规定了3个网络管理报文用于网络管理:

1、地址声明请求报文:请求网络上CA的地址和名字

2、地址声明报文:为CA声明一个地址/公告不能声明地址。

3、命令地址报文:命令其他CA使用新的地址。

3、各网络管理协议对比

4、总结

通过对上述四种网络管理协议的介绍和简单对比,可以看出:

1)SAE J1939网络管理由于其功能的局限性,并不太适合国内的开发情况。协议中主要针对节点的地址分配和管理机制进行了定义,但没有定义同步休眠和唤醒的机制。在国内现有的开发模式下,整车的配置需求、网络通讯矩阵、节点供应商都比较明确,对地址管理的需求程度则变得越来越小;

2)OSEK间接网络管理相对比较简单,对网络的监控和节点的同步唤醒和休眠都有定义,且实时性较强。由于采用了主从结构的设计,如果主节点失效则整个网络管理就同时失效,使得其在使用过程中不够灵活和安全,适合于配置固定简单、对网络安全性要求不高的网络;

3)OSEK直接网络管理功能比较全面,且扩展性很强,由于采用了逻辑环的管理策略,网络中不需要指定专门的监控节点对网络进行监控,使得单独的节点在开发时相对独立,机制统一。但是当总线中连接的节点数量增加以后,令牌环在总线中传递一周的时间就会变长,网络管理的实时性就会降低。另外,功能全面的网络管理协议也会给节点的协议栈开发增加一定难度。

4)AUTOSAR网络管理与OSEK直接网络管理一样属于功能全面且扩展性很强协议,其在实时性和复杂度上较OESK网络管理要好一些。虽然目前行业内基于AUTOSAR的开发还未普及,但可以预见的是,它是未来汽车电子电气发展的一个趋势。

参考文献

[1]熊毅,郭杏荣,张倪,基于OSEK规范的网络管理的研究与改进,计算机应用研究,Vol.24 No.9 Sept.2007.

[2]W.齐默尔曼R.施密特加尔,汽车总线系统,机械工业出版社.

[3]AUTOSAR,Specification of CAN Network Management V3.1.0R4.0Revl.

上一篇:数学教学中的提问论文下一篇:超热电子