can通讯报文(通用9篇)
can通讯报文 篇1
CAN全称为Controller Area Network,即控制器局域网,由德国Bosch公司最先提出,是国际上应用最广泛的现场总线之一。最初CAN 被设计作为汽车环境中的通讯,在汽车电子控制装置之间交换信息形成汽车电子控制网络。由于其卓越的性能、极高的可靠性和低廉的价格现已广泛应用于工业现场控制、医疗仪器等众多领域。
CAN协议是建立在OSI 7层开放互连参考模型基础之上的。但CAN协议只定义了模型的最下面两层:数据链路层和物理层,仅保证了节点间无差错的数据传输。CAN的应用层协议必须由CAN 用户自行定义,或采用一些国际组织制订的标准协议。应用最为广泛的是DeviceNet和CANopen,分别广泛应用于过程控制和机电控制领域。但此类协议一般结构比较复杂,更适合复杂大型系统的应用。笔者在研制一种基于CAN总线的分布式高频开关电源充电机系统的过程中设计了一种适合于小型控制系统的CAN总线高层通信协议。CAN的特点
CAN 是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率、抗电磁干扰性,而且要能够检测出总线的任何错误。当信号传输距离达10km时,CAN仍可提供高达50kbps 的数据传输速率。
CAN具有十分优越的特点:
(1)较低的成本与极高的总线利用率;
(2)数据传输距离可长达10km,传输速率可高达1Mbps[7];
(3)可靠的错误处理和检错机制,发送的信息遭到破坏后可自动重发;
(4)节点在错误严重的情况下具有自动退出总线的功能;
(5)报文不包含源地址或目标地址,仅用标志符来指示功能信息和优先级信息。CAN的技术规范
(1)帧类型
在CAN总线中,有四种不同的帧类型[4][5]:
·数据帧(Data Frame)数据帧带有应用数据;
·远程帧(Remote Frame)通过发送远程帧可以向网络请求数据,启动其他资源节点传送他们各自的数据,远程帧包含6个不同的位域:帧起始、仲裁域、控制域、CRC域、应答域、帧结尾。仲裁域中的RTR位的隐极性表示为远程帧;
·错误帧(Error Frame)错误帧能够报告每个节点的出错,由两个不同的域组成,第一个域是不同站提供的错误标志的叠加,第二个域是错误界定符;
·过载帧(Overload Frame)如果节点的接收尚未准备好就会传送过载帧,由两个不同的域组成,第一个域是过载标志,第二个域是过载界定符。
(2)数据帧结构
数据帧由以下7个不同的位域(Bit Field)组成:帧起始、仲裁域、控制域、数据域、CRC域、应答域、帧结尾。
[4]
·帧起始:标志帧的开始,它由单个显性位构成,在总线空闲时发送,在总线上产生同步作用。·仲裁域:由11位标识符(ID10-ID0)和远程发送请求位(RTR)组成,RTR位为显性表示该帧为数据帧,隐性表示该帧为远程帧;标识符由高至低按次序发送,且前7位(ID10-ID4)不能全为显性位。标识符ID用来描述数据的含义而不用于通信寻址,CAN总线的帧是没有寻址功能的。标识符还用于决定报文的优先权,ID值越低优先权越高,在竞争总线时,优先权高的报文优先发送,优先权低报文退出总线竞争。CAN总线竞争的算法效率很高,是一种非破坏性竞争。
·控制域:为数据长度码(DLC3-DLC0),表示数据域中数据的字节数,不得超过8。
·数据域:由被发送数据组成,数目与控制域中设定的字节数相等,第一个字节的最高位首先被发送。其长度在标准帧中不超过8个字节。
·CRC域:包括CRC(循环冗余码校验)序列(15位)和CRC界定符(1个隐性位),用于帧校验。l应答域:由应答间隙和应答界定符组成,共两位;发送站发送两个隐性位,接收站在应答间隙中发送显性位。应答界定符必须是隐性位。
·帧结束:由7位隐性位组成。自订CAN高层协议
CAN的高层协议也可理解为应用层协议,是一种在现有的底层协议(物理层和数据链路层)之上实现的协议。由于充电机系统的结构比较简单,网络规模也比较小。因此我们自行制订了一种简单而有效的高层通信协议。
技术规范CAN2.0A规定标准的数据帧有11位标识符,用户可以自行规定其含义,将所需要的信息包含在内。在充电机系统中,每一个节点都有一个唯一的地址,地址码和模块一一对应,通过拨码开关设定,总线上数据的传送也是根据地址进行的。由于本系统规模较小,节点数少于32个,因此为每个模块分配一个5位的地址码,同一系统中地址码不得重复,系统初始化时由外部引脚读入。将标识符ID9-ID5定义为源地址,ID4-ID0定义为目的地址,本协议中从模块的目的地址全填0,表示数据是广播数据,所有节点都可接收,主模块中目的地址根据要进行通信目的模块的地址确定。
理论上源地址和目的地址的范围都是0~31,但由于CAN协议中规定标识符前7位不能全为显性位,所以源地址不能为31,这时实际节点只有31个(0~30)。因此每个系统所含的模块不超过31个。所以源地址和目的地址的范围缩减到0~30。同时上位监控机也要占用一个地址,因此系统中的电源模块不超过30个,设计时根据节点的优先权高低从小到大分配节点地址。ID10位定义为主模块识别码,该位主模块为隐性位,从模块为显性位,以保证主模块通信优先。模块的地址码决定发送数据的优先级。主模块向总线发送的数据有两种:一种是目的地址全部填0的广播数据;另一种是包含特定目的地址的非广播数据。
协议中一帧数据最多能传送8个字节,对于充电机控制系统来说已经足够用了,本系统只用到其中的前5个字节,其余3个节字可用于以后的扩展使用,因此未定义多帧传输方式。
从模块以广播形式向总线发送数据,同时回收自己发送的数据,若检测到所发送与所收到的数据不符,则立即重新发送上一帧数据。从模块发送信息的顺序由主模块的发出的指令决定,以免在总线通信繁忙时优先级较低的模块始终得不到总线通信权。指令的发送顺序按照各从模块的地址顺序进行,即地址较低的从模块首先获得指令,得以发送自己的地址码和电流、温度采样值。如发生冲突,则由CAN控制器自动根据模块的优先级调整发送顺序,在CAN的底层协议中有完善的优先级仲裁算法,因此应用层协议不必考虑此类问题。
对于每个模块,上电1s后若未收到任何通信信息,则按计算延时发送自身的地址码和温度电流采样值。延时时间的计算为[6]:
tdelay=T×ADD
其中:tdelay-为延时发送时间;
T-为单位延时时间常数,该值根据通信速率定义;可以取1个位周期,在波特率为100kHz时为10μs;
ADD-为模块地址编码。
主模块是ID10=0的模块,因此具有最高的优先级。上电后主模块首先向总线广播发送自身的地址码和温度电流采样值,然后即按顺序向从机发送指令,等待从机的回答。主机1秒钟后若未收到任何通信信息则认为该模块出错,发出报警。同样从机1s后若未收到主机任何通信信息则认为主机出错,按照源地址优先级由其余模块中地址最低的模块充当主模块,并将其ID10由1改为0,以获得最高通信优先权。
各模块检测到自身故障时,将切断输出,退出通信,并向上位机报警,同时发出声光报警。结束语
本文中所介绍的CAN高层通信协议,结构简单、使用灵活、可靠性极高,实现也比较容易。很适合在节点数不多、通信可靠性要求高、控制结构较简单的小型控制系统中应用,具有一定的实用价值
can通讯报文 篇2
1 现场总线的优点
与RS232/RS485方式相比, 现场总线的优点具体体现在:1) 现场总线采用全数字通信技术, 全数字信号传输时不易受外界干扰, 有利于提高系统的可靠性;2) 采用标准化功能模块;3) 故障自诊断;4) 冗余和容错技术;5) 智能诊断和管理技术;6) 故障隔离技术。
2 CAN总线的优点
而目前最重要的现场总线之一CAN总线, 更是RS232/RS485的最佳替代解决方案。CAN总线是控制器局部网络 (Controller Area Network ) 的缩写, 它是1986 年德国BOSCH公司为汽车内部电子控制单元 (ECU:Electric Control Unit) 进行数据交换而开发的串行通信网络, 但是由于其具有突出的可靠性、实时性和灵活性, 现已被广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器以及建筑、环境控制等众多部门。1993年国际标准化组织颁布了CAN总线的国际标准 (ISO11898) , 为CAN总线的标准化、规范化推广铺平了道路。
CAN总线是一种串行通信网络, 可以有效支持分布式控制或实时控制的。由于其独有的物理层与数据链路层的设计, 使得它在通信能力、可靠性、实时性、灵活性、易用性和传输距离等方面有着明显的优势, 成为业界最有前途的现场总线之一。
RS485使用双绞线作为传输介质, 理论上RS485的最长传输距离能达到1.2km, 但在实际应用中其数据信号受信号失真及噪声等影响, 传输的距离要比1.2km短, 而且具体传输多远视周围环境而定。
CAN总线同样使用普通双绞线作为传输介质, 采用直线拓扑结构, 单条网络线路可以连接到110个节点。当通讯距离不大于40m时, 传输速率可达到1Mbps;当信号传输距离达到10km时, 仍可提供高达5kbps的数据传输速率, 自身具备可靠的错误处理和检错机制, 出错后可进行自动重发。CAN总线可适用于节点数目比较多, 传输距离在10km以内, 安全性、可靠性要求高的场合;也可适用于对实时性、安全性要求十分严格的机械控制网络。
与石化行业内广泛使用的RS232/RS485相比较, CAN总线物理层具有以下共同特性:1) 二线制、双工串行通信;2) 差分传送、平衡接收;3) 传输介质为双绞线;4) 需终端匹配电阻器;5) 通信电路可在5V电源条件下工作。
同时CAN总线更具备以下优点, 见表1。
在石化行业内, 出于安全角度考虑, 生产装置与操作控制人员所处的距离一般较远, 这也造成了信号传输过程中的噪声比较大, 在这种情况下, CAN总线几乎可以检测出传输过程中出现的全部错误, 并且可以自动重发出错数据, 这就极大的保证传输数据的可靠性和准确性。
3 改造实施方案
RS232信号转换为CAN Bus信号可以通过RS232-CAN转换器来实现, 在兰州石化实际应用中, 考虑到成本问题, 选择了自主开发实现, 这里选择了基于单片机来实现信号转换。
其中单片机选择了目前最常用AT89C51, CAN控制器选用了PHILIPS公司的SJA1000以及PCA82C250总线收发器。硬件设计框架, 如图1所示。
其中MAX232芯片是电平转换芯片, 负责将RS232电平信号 (-15~15V) 转换为TTL电平信号 (0~5V) 。
AT89C51是主控制器, 负责将从RS232传输过来的数据组织成合适的数据帧发送给SJA1000, 同时也将SJA1000发送过来的数据帧解析为字符, 并把该字符赋给SBUF寄存器, 将其以RS232信号形式传输出去。AT89C51的P0口 (P0.0~P0.7) 连接SJA1000的AD0~AD7, 作为数据传输通道。P2.7取反后连接到SJA1000的CS端, 作为片选信号, 当P2.7置为1时, SJA1000即被选中。
SJA1000支持CAN2.0B协议, 主要负责CAN 信息帧的收发和CAN 数据链路层协议的实现, 以及同外部主控制器的接口, 该单元中的每一个寄存器都可由主控制器通过地址/数据总线访问。SJA1000发送缓冲区可存贮一个完整的信息帧长度为13个字节。主控制器可直接将标识符和数据送入发送缓冲区, 然后置位命令寄存器CMR 中的发送请求位TR , 启动CAN核心模块读取发送缓冲区中的数据, 按CAN 协议封装成一完整CAN 信息帧, 通过收发器发往总线。SJA1000在接收信息时, 验收滤波器负责接收信息的滤波, 只有验收滤波通过且无差错才把接收的信息帧送入接收FIFO 缓冲区, 且置位接收缓冲区状态标志SR.0 , 表明接收缓冲区中已有成功接收的信息帧。
PCA82C250为总线收发器, 它是CAN控制器和物理总线之间的接口, 供对总线数据的差动发送能力和对通信总线数据的差动接收能力, 它负责CAN总线物理层协议的实现。
系统实现的程序流程, 如图2、3所示。
其中, AT89C51初始化程序如下:
在实际使用中, 该转换器可以无缝的实现RS232信号和CAN Bus信号的全双工转换, 基本满足了现场生产的需要。在该转换器的MAX232之前增加一部分MAX485电平转换电路, 就可以实现RS485和CAN总线桥接电路, 使得RS485网络可以和CAN总线网络进行通讯。如图4所示。
4 展望
在石油化工行业, 由于现场生产环境复杂多样 (高温、高压、噪声、腐蚀、有毒等) , 用于监控工业生产的仪表也越来越多, 而操作室离生产现场距离较远, 这就要求现场通讯信号必须具有传输距离远、通讯速度快, 可靠性好等特点, 以前使用的RS232/485通讯链路已经不能满足要求, 如何在利用原有敷设线路同时, 以最小代价改造通讯网络, 是石油化工行业面临的问题。而CAN总线作为一种技术先进、可靠性高、功能完善、成本合理的远程网络通讯控制方式, 为这个问题提供了较好的解决方案。
参考文献
[1]阳宪惠.工业数据通信与控制网络[M].北京:清华大学出版社, 2003.
[2]李正军.现场总线与工业以太网及其应用系统设计[M].北京:人民邮电出版社, 2006.
[3]王黎明, 夏立.CAN现场总线系统的设计与应用[M].北京:电子工业出版社, 2008.
[4]邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社, 1996.
can通讯报文 篇3
关键词:LabVIEW软件;J1939协议;CAN总线;PXI测控装置
中图分类号:TP335 文献标志码:A 文章编号:1005-2550(2011)06-0018-05
Build of CAN Communication Platform Based on LabVIEW and J1939 Protocal
ZHOU Yue-gang
(Dongfeng Commercial Vehicle Technical Center of DFL,Wuhan 430056,China)
Abstract:Using NI LabVIEW software development platform and the CAN communication module in the PXI module instrumentation,design a process for filtering and identificating ID of J1939 protocol and analyzing multi-frame message to receive and packaging to send. Building a communication platform based on the J1939 protocol CAN bus,complete vehicle electrical environment-loop simulation,and engine test bed information on the CAN bus transceiver analysis,and storage and real-time display.
Key words:LabVIEW;J1939 protocol;CAN bus;PXI monitoring devices
进入21世纪以来,商用车CAN总线网络的应用得到了异常迅猛的发展。现今市面上满足国3~国5排放标准的商用车,无一例外的均应用CAN总线网络,进行整车VECU、发动机EECU、自动变速箱ECU、汽车组合仪表ECU、轮胎防抱死制动ECU之间的数据通讯。基于J1939协议的商用车CAN总线,针对单片机微控制器MCU节点的MCU + CAN控制器 + CAN收发器的CAN通讯接口,在车载网络控制系统中得到了大量应用;而对整车道路试验、发动机台架试验、整车电环境半实物仿真测试的上位机节点的PC机或笔记本电脑 + CAN通讯模块,大都使用价格昂贵的Vector CANoe模块。
测试中存在的问题:
(1)PXI测控装置无基于J1939协议的CAN通讯功能,不能满足试验工况对CAN总线报文信息分析的功能需求;
(2)CANoe模块时序不受PXI仪器时钟速率控制,无法与PXI时序的其它测量参数同步触发测量。
基于LabVIEW和J1939协议的CAN总线通讯技术方法实施,在国内汽车行业PXI测控装置的应用属于空白,难点是如何将LabVIEW软件开发平台与复杂的J1939协议有效的结合,实现报文信息的过滤接收、合成重组及封装发送。
面对商用车CAN总线通讯网络的特点,构建基于LabVIEW和J1939协议的CAN总线通讯平台,嵌入在NI PXI模块化接口的测控装置中,用于发动机台架试验、整车电环境半实物仿真测试。
1 J1939协议
J1939协议以CAN2.0B规范为基础制定,对CAN2.0B扩展帧29位标识符ID定义形成J1939的编码系统,包括优先级P、预留位R、数据页DP、协议数据单元PF、扩展单元PS、源地址SA和数据字节Data,如图1所示。这七部分在开放式系统互联参考模型(OSI)应用层[1],通过协议数据单元PDU(Protocal Data Unit)被封装成一个或多个CAN数据帧,通过物理层[2] [3]发送给总线网络其它设备节点。
1.1 PDU格式
PDU定义了数据帧中与J1939协议相关的信息,由标识符ID和数据场组成,见图1。
PDU1格式报文PF在0~239之间,报文为点对点向目标地址发送,PS:报文接收的目标地址,SA:报文发送的源地址,在目标地址中填入255,为全局地址发送。
PDU2格式报文PF在240~255之间,报文向全局地址发送,PS:参数组扩展值,J1939协议大部分报文为PDU2格式。
PDU数据场包含参数组中数据内容,参数组编号PGN(Parameter Group Number)用于唯一标识参数组的号码,由一个或几个参数构成一帧或多帧报文,而参数组是应用层中定义的与某个ECU相关的若干参数(例如发动机水温、燃油温度等)的组合。
1.2 J1939协议与CAN2.0B标准区别
1.2.1 标识符ID
CAN2.0B不同功能的报文信息可以使用相同的ID,根据制造商特定的协议使用CAN设备,在集成时会产生ID不能识别或识别不一致问题。J1939每帧报文的标识符唯一,且每帧报文都有自己的PGN,为每个节点规定唯一的源地址,并将源地址映射到CAN标识符中,避免多个节点使用相同的标识符;例如ID:0CF00400代表发动机转速、扭矩报文。
1.2.2 OSI模型
开放式系统互联参考模型如图2所示,CAN2.0规范定义了七层OSI参考模型的物理层和数据链路层[4],是低层标准,CAN总线产品的兼容性、互换性和可集成性差。J1939是面向OSI参考模型应用层的高层协议,在应用层定义了针对车辆应用的信号(参数)和报文(参数组)。通过参数描述信号,并给每个参数分配了一个编号SPN(Suspect Parameter Number),参数定义了PDU数据场中字节的物理意义,例如SPN190代表发动机转速;状态参数表示具有多态信号的某一种状态,例如发动机巡航控制/扭矩限值/转速限值/怠速设定;测量参数反映接收到的信号值具体大小,例如发动机转速/扭矩/燃油消耗量。一个PGN中可能有几个SPN,PGN61444包含了SPN190发动机转速和SPN513发动机扭矩等参数。
1.2.3 多帧报文
CAN2.0B规范定义只能使用单帧报文传输,J1939协议除单帧报文传输外,还使用对话式、广播式多帧报文传输,并按多帧数据传输协议进行打包封装发送和接收合成重组处理,其中对话式多帧报文发送接收节点需要握手协议,广播式多帧报文面向全局地址发送。
2 CAN总线通讯平台
2.1 模块接口
PXI-8464/2双通道CAN2.0B通讯接口模块,内含SJA1000T CAN控制器和TJA1041T高速CAN收发器及TJA1054AT低速CAN收发器。J1939数据链路层通过PDU格式实现报文的打包封装,通过CAN控制器组织、发送CAN数据帧具有必须的同步、顺序控制、错误控制和流控制,自动产生CRC校验位和ACK应答位插入数据帧中。
J1939物理层协议规定了每个网段最多30个ECU,CAN总线通讯速率250k Bits/s,总线电平显性、隐性,差分电压3.5V/1.5V,差分传输双绞线线缆颜色CAN-H黄色、CAN-L绿色,CAN收发器完成MCU至CAN总线之间收发电平的匹配转换。
2.2 软件设计
基于LabVIEW和J1939协议的CAN总线报文收发多任务处理流程,如图3所示,采用生产者/消费者循环数据结构。生产者循环使用“元素入队列”函数向报文簇队列中添加数据,消费者循环使用“元素出队列”函数从报文簇队列中移出数据。循环间采用队列的方式进行操作,消除多任务处理竞争状态,当生产数据比消费处理数据的速度快时,队列的缓冲作用保证报文数据不丢失。
建立接收报文ID解析过滤的识别方法。确定报文标识符ID的枚举型状态变量识别报文,根据状态变量条件结构过滤报文。
PDU1、PDU2格式单帧报文全部入队列,数据场大于8字节的对话式、广播式多帧报文按J1939协议多帧数据合成重组后入队列,其它无数据场的报文帧舍去,处理完的接收报文簇分解后出队列计算、存贮和显示。
建立发送报文ID解析封装的识别方法。报文解析首先确定帧类型状态变量,其次根据状态变量的条件判断,进行报文格式的封装定义。
数据场小于或等于8字节的PDU1、PDU2单帧发送报文直接入队列,数据场大于8字节的对话式、广播式多帧报文按J1939协议多帧数据处理打包封装簇合成后入队列,处理完的J1939发送报文簇分解后出队列并写入CAN口。
3 应用效果
在整车电环境的半实物仿真报文接收测试试验中,应用图4所示的基于LabVIEW和J1939协议的CAN总线通讯平台,与Vector CANoe模块在同一时间段比对测试,接收的某型号发动机稳态工况EECU报文如图5所示,一秒内接收EECU发出的526帧报文,比对测试接收的报文无丢失现象。
发动机燃油消耗量报文,实时反映了发动机燃油经济性,在商用车J1939协议CAN总线网络中,分别被车辆VECU接收,作为换挡控制策略控制自动变速箱汽车;组合仪表ECU接收并实时显示,提示驾驶员形成良好的驾驶习惯,操纵汽车达到最佳燃油经济性的路况行驶。为使发动机获得最佳的动力性、经济性和兼顾排放达标,需要对发动机电控单元EECU进行标定匹配,获得最佳喷油脉宽的标定参数。标定之后做比对试验,验证EECU的标定效果。
发动机稳态工况试验,能够反映车辆的等速工况;而发动机变工况瞬态试验,能够模拟实际道路循环中发动机状态。通过将实时报文油耗和实际测量瞬态油耗的对比,研究两者之间的对应吻合关系,判断发动机EECU的控制效果。
某型号发动机+工况台架试验瞬态油耗比对测量曲线见图6,从J1939协议CAN总线接收并解析的EECU油耗报文数据,与台架油耗仪实测数据在发动机低负荷时存在差异,即发动机低负荷时实际喷油量较小,设定喷油量与实际喷油量的差异比值较大。这个差异是因为发动机低负荷共轨轨压波动较大,导致喷油量波动变化而客规存在。总体两条曲线吻合相当一致,通过CAN总线接收的发动机喷油目标值,与实际测量值接近,且变化趋势和时序同步,反映了发动机EECU标定匹配获得了最佳喷油脉宽的目标值。
4 总结
基于LabVIEW和J1939协议的NI PXI模块化系统架构的CAN总线通讯平台的开发,建立了PXI CAN模块在商用车CAN总线通讯的应用基础,项目具有推广和商品应用前景。在发动机台架试验、整车电环境半实物仿真分析中,实现对CAN总线报文信息的过滤识别、合成接收、封装发送、解析计算及存贮显示。
应用LabVIEW软件平台强大的数学分析运算及队列处理能力,满足试验工况对CAN总线报文信息解析的功能需求,同时实现对报文数据与NI PXI仪器其它测量参数同步采样,试验数据比对分析处理具有实时性和真实性。
参考文献:
[1] SAE J1939-11[S].物理层.
[2] SAE J1939-13[S].物理层.
[3] SAE J1939-71[S].车辆应用层.
非正常IP报文的产生与处理 篇4
目前,作为安全系统的重要环节防火墙及入侵检测系统在信息网络中的应用越来越广泛,只有对IP的知识熟练掌握,才能对网络的安全及时应变,本文从IP协议的角度分析可能被用来制造非正常IP报文的环节以及带来的后果,帮助读者加强网络安全方面的辨别能力。
作为IP协议标准的RFC文档对IP标准进行了详细的定义,本文中所说的非正常IP报文,是指那些违背了RFC IP协议标准的报文,
非正常IP报文有时候可能是出于一个良好的愿望而造成的,例如由于在网络中进行某些测试故意将某个路由器当作故障路由器,可能使网络中产生非正常IP报文,但在绝大部分情况下网络中出现的非正常报文往往是网络 精心设计的。通常情况下是攻击者在网络信息流中引入了非正常报文,他们的目的是想方设法避免防火墙或入侵监测系统成功地阻止他们的入侵行为;而有些时候,非正常报文主要目的是使受侵系统发生崩溃。
can的过去式例句 篇5
他们往往会买便宜的加工食品,像鸡肉罐头和通心粉之类的。
2. Canned varieties of beans and pulses are a good standby.
各种豆类罐头制品是很好的常备食品。
3. The extremists prevailed, and the security minister was canned.
极端主义分子猖獗,致使安全部长被解职。
4. When I got canned, I took these keys as souvenirs.
我被开除后,就拿了这些钥匙作为纪念。
5. It was always roast lamb and canned peas for Sunday lunch.
星期天午餐总是吃烤羔羊肉和豌豆罐头。
6. The young of some kinds of herring are canned as sardines.
有些种类的鲱鱼幼鱼可制成罐头.
7. She likes canned fruit juices.
她喜欢各种罐装的果汁.
8. The fish is canned in this factory.
鱼是在这家工厂制成罐头的.
9. Only 55 per cent of the raw material is canned. The rest is thrown away.
只有55%的原材料被罐装储存。其余的都被扔掉了。
10. She likes all kinds of canned fruit juices.
她喜欢各种罐装的果汁。
11. Sugary canned drinks rot your teeth.
罐装的甜饮料会腐蚀牙齿。
12. They bring him papers, bags of flour and rice, and canned meats.
他们给他带去报纸 、成袋的面粉和大米, 还有罐头肉.
13. Paul has filled a box with canned goods and hurries out.
保罗装了一箱罐头食品,急匆匆走了出去.
14. We have canned tuna, salmon, and fruits like peaches.
我们有鲔鱼罐头 、鲑鱼罐头以及像桃子这样的水果罐头.
15. We carry a full line of canned goods.
can通讯报文 篇6
1 CAN总线系统组成
CAN总线通讯系统一般由主站、从站、通道组成, 其中主站负责协调、管理系统的通讯, 根据控制单元的参数变化通过指令通道向各个从站发送控制数据的指令, 而各个从站的运行状态主要通过状态通道传输给主站, 如图1所示。
通过这样的总线系统可以实现用多点、串行的数据通讯替代传统的导线直接通讯技术, 可以节省大量的线缆, 一方面降低了运行成本, 另一方面也省去了线缆铺设工作。
2 CAN总线电磁兼容性能分析
电磁兼容性能对CAN总线系统的运行可靠性具有较大的影响, 目前, 在电子产品设计中, 电磁兼容性能已经成为考核产品性能的重要指标之一, 因此必须予以重视。
电磁兼容包括以下两个方面的内容, 一是电子产品对外界环境释放的电磁干扰辐射, 二是外界环境中电磁信号对电子产品的影响, 这种影响的大小一般取决于产品本身对外界电磁信号的敏感程度。考察电磁兼容性能, 主要包括对电磁干扰源、耦合途径以及敏感产品三个方面的分析, 其中耦合的途径又包括辐射性耦合和传导性耦合。
3 提高CAN总线通讯的电磁兼容性能设计措施
3.1 提高电子设备本身电磁兼容性能
提高电子设备本身的电磁兼容性能是从根本上提高系统电磁兼容性能的有效措施, 而印制电路板 (PCB板) 是电子设备的核心组成部分, 并且其抗电磁干扰性能与电磁辐射性能往往是相互联系的, 表现在提升印制电路板的抗电磁干扰能力的同时, 电路板向外界发射的电磁辐射也越小, 因此可以采取以下措施来提高印制电路板的电磁兼容性能。
3.1.1 选择电磁兼容性能好的元器件
元器件是构成PCB板的主要组成部分, 因此在设计电路板时要选择电磁兼容性能良好的元器件可以有助于提高电子设备的电磁兼容性能, 实际工作中, 要优先选择贴片式的元器件来替代引线式的元器件。
3.1.2 合理布局
合理布局包括三个方面, 一方面是对元器件的位置进行合理布局, 将相互关联的元器件尽可能地集中布置, 使相互之间的引线尽可能短;第二个方面是要将电子设备内部的数字电路与模拟电路有效分开, 防止相互之间的信号干扰。第三个方面是合理布局地线, 通过使用双层板或多层板的方式来降低底线阻抗, 并同时尽量使电路板上所有的地线均处于等电位的状态。
3.2 利用电磁屏蔽减小辐射性干扰
电磁屏蔽就是在不改变原电路、不影响系统正常运行的前提下, 采用电磁屏蔽装置对CAN总线通讯的电磁发射和电磁吸收进行屏蔽的措施, 由于方法简便易行、屏蔽效果好以及便于设计等优点成为提高系统电磁兼容性能的重要措施。在CAN的双路总线中, 要对两组线缆分别进行电磁屏蔽, 以减少线路之间的电磁串扰现象。
3.3 采用滤波技术消除传导干扰
传导干扰主要产生于瞬态、暂态的过程中, 如大功率开关的开合、雷电的袭击等带来的瞬时浪涌, 一般通过CAN总线电缆传输, 所带来的电磁危害较大, 因此在传播途径中要消除这些瞬时的脉冲、浪涌, 使CAN总线通讯得以可靠进行, 实际工作中, 常用的方法就是采用滤波技术来消除传导耦合带来的电磁干扰。
4 结束语
提高电磁兼容性能可使CAN总线通讯系统运行更加稳定、可靠, 可使其应用范围更加广泛, 在实际工作中一定要合理分析、科学设计, 可采用改善电子设备本身电磁兼容性能、电磁屏蔽以及滤波等措施来提高CAN总线的电磁兼容性能, 另外随着科技的飞速发展, 各种新型技术不断应用在通讯领域中, 因此作为技术人员要有与时俱进的眼光, 不断开发出提高电磁兼容性能的设计方法, 为系统中各部分的实时、可靠数据传输提供技术支持。
摘要:CAN总线是国际上应用最为广泛的总线之一, 广泛用于汽车、工业设备等领域, 要保证系统的可靠、稳定运行, 提高CAN总线通讯的可靠性, 就要减小电磁干扰, 提高电磁兼容性能, 因此在实际工作中要对其进行科学的分析和设计。本文介绍了CAN总线通讯系统的组成, 分析了CAN总线电磁兼容性能, 提出了提高CAN总线通讯电磁兼容性能的设计措施。
关键词:CAN总线,电磁兼容,分析,措施
参考文献
[1]韩成浩, 高晓红.CAN总线技术及其应用[J].制造业自动化, 2010 (02) .
[2]于海生.CAN总线工业测控网络系统的设计与实现[J].仪器仪表学报, 2001 (01) .
A pig can fly 篇7
人生是一个不断努力,不断学习,不断挑战的过程。在这一过程中,需要我们勇往直前,不懈地追求目标,人生才会充满意义。我向往美好的人生和充满期待的未来。既然不能篡改历史,那就用自己的双手去创造属于我们自己的未来。因为我坚信:a pig can fly!
记得我刚来到这个班级的时侯,在这个52名同学组成的大家庭中,我就像是一直不起眼的丑小鸭。但我没有轻易放弃,丑小鸭最终不是也变成白天鹅了吗?我相信,总有一天我会褪下乌黑的羽毛,换上洁白的外套,然后在蓝天上展翅飞翔。努力就会有收获。在几次考试中,我在班级里名列前茅,特别是英语成绩较为显着,因此,我也被同学们推选为英语课代表。
当然,我不能骄傲,不能总是过去的荣耀之中,而不去向更远大的目标追求。既然我已经是英语课代表,那就更应该努力学习,成为同学们心目中的榜样。
渐渐地,我不再是那只不起眼的丑小鸭。我能够和同学们和睦相处,我融入了这个大家庭中。同学们有什么不懂的地方都会来问我,这让我引以为豪,我也会细心地为他们讲解。
但是,人生的路不会总是那么一帆风顺,自然会有一些坎坷。我怕了吗?不!!我不怕!因为我相信:a pig can fly,也相信自己是最棒的。面对困难,我们不能退缩,而是要坦然面对。在为了失败而伤心难过的时候,只要对这镜子说:“you are no.1”,便能拥有永不言弃的决心,战胜困难。有人说,“失败是成功的垫脚石”,只有经历了重重失败,才能让自己的力量变得更强大,不是吗?
a pig can fly,一只小猪都能飞,为什么你不能?相信自己,你一定行,让我们一起加油吧!
CAN总线位定时参数的确定 篇8
摘要:CAN通信中,波特率、位周期内取样点数和位置可以编程设置,这些设置为用户根据其应用优化网络通信性能提供了方便。优化位定时参数,能够保证信息同步,保证传输延迟和时钟误差在极端条件下进行恰当的错误检测。本文说明位定时参数的确定方法。关键词:CAN总线位定时同步延迟
引言
CAN总线是一种有效支持分布式控制和实时控制的、多主的异步串行通信网络。由于CAN总线具有较强的纠错能力,支持差分收发,适合高噪声环境,具有较远的传输距离,并且Philips和Intel等半导体公司都有支持CAN通信协议的集成器件。CAN总线已经在各个领域中得到了广泛应用。
在CAN通信协议中规定,通信波特率、每个位周期的取样位置和个数,都可以自行设定。这样的设计理念,为用户在自己的应用中,优化网络通讯性能提供了空间。为了通过设定位定时参数来优化网络通信性能,必须清楚位定时参数与参考时钟误差和系统内信号延迟的关系。如果位周期内的取样位置偏后,将能够容忍较大的信号传输延迟,相应的,总线传输距离可以延长;而如果周期内的取样位置接近中间,则可以容忍系统的节点间的参考时钟误差。但这显然是矛盾的,为了协调这种矛盾,必须对位定时参数进行优化位置。
图1位周期结构图
通过对CAN总线位定时参数进行研究,找到矛盾的关键所在,就能够对其进行优化,从而提高通信系统的整体性能。下面以Philips公司的独立通信控制器SJA1000为例,进行研究。
1相关定义
1.1位周期的组成
波特率(fbit)是指单位时间内所传输的数据位的数量,一般取单位时间为1s。波特率由通信线上传输的一个数据位周期的长度(Tbit)决定,如下式所示。
Fbit=1/Tbit(1)
根据Philips公司的独立通信控制器,一个位周期由3个部分组成:同步段(tSYNC_SEG)、相位缓冲段1(tTSEG1)和相位缓冲段2(tTSEG2)。
Tbit=tSYNC_SEG+tTSEG1+tTSEG2(2)
所有这些时间段,都有一个共同的时间单元――系统时钟周期(TSCL)。具体到SJA1000,TSCL由总线时序寄存器的值来确定。SJA1000有2个总线时序寄存器,即总线时序寄存器0(BTR0)和总线时序寄存器1(BTR1)。这2个寄存器有自己不同的功能定义,共同作用决定总线的通信波特率。
总线时序寄存器0定义波特率预设值BRP(共6位,取值区间[1,64]和同步跳转宽度SJW(共2位,取值区间[1,4])的值。位功能说明如表1所列。
表1
bit7bit6bit5bit4bit3bit2bit1bit0SJW.1SJW.0BRP.5BRP.4BRP.3BRP.2BRP.1BRP.0
CAN的系统时钟周期TSCL,可以由BRP的数值为决定,计算公式如下:
TSCL=2TCLK×BRP=2TCLK×(32BRP.5+16BRP.4+
8BRP.3+4BRP.2+2BRP.1+1BRP.0+1)(3)
其中TCLK为参考时间的周期。
TCLK=1/fCLK(4)
为了补偿不同总线控制器的时钟振荡器之间的相位偏移,任何总线控制器必须在当前传送的相关信号边沿重新同步。同步跳转宽度定义了每一位周期可以被重新同步缩短或延长的时钟周期的最大数目。
tSJW=TSCL×(2×SJW.1+1×SJW.0+1)(5)
总线时序寄存器1定义每个位周期长度采样点的位置和在每个采样点的采样数目。位功能说明如表2所列,其中SAM意义见表3。
表2
bitbitbitbitbitbitbitbitSAMTSEG2.2TSEG2.1TSEG2.0TSEG1.3TSEG1.2TSEG1.1TSEG1.0
表3
位值功能SAM0三倍:总线采样三次:建议在中/低速总线(A和B级)使用,有处于过滤总线上毛刺1单倍:总线采样一次;建议使用在高速总线上(SAEC级)
TSEG1(共4位,取值区间[1,16])和TSEG2(共3位,取值区间[1,8])决定了每一位时钟数目和采样点的位置。这里
tSYNC_SEG=1×TSCL(此时间段固定)(6)
tTSEG1=TSCL×(8×TSEG1.3+4×TSEG1.2+2×TSEG1.1+1×TESG1.0+1)(7)
tTSEG2=TSCL×(4×TSEG2.2+2×TSEG2.1+1×TESG2.0+1)(8)
位周期的标量值(NBT)定义为,SYNC_SEG(同步段系统时钟周期数)、TSEG1(相位缓冲段1系统时钟周期数)、TSEG2(相位缓冲段2系统时钟周期数)之和。这决定了它的取值区间为[3,25],在1个取样点时,最小值一般取4;在3个取样点时,最小值一般取5。
NBT=Tbit/TSCL=SYNC_SEG+TSEG1+TSEG2(9)
位周期的一般结构如图1所示。
1.2参考时钟误差
在系统中,每一个节点都有自己独立的参考时钟。由于制造工艺、运行时间及环境温度的变化,这些时钟的实际频率往往偏离预期的频率值。我们称这种偏差为参考时钟误差(Δf)。FCLK,max/min表示参考时钟频率的最大值或最小值,fCLK,rat表示参考时钟频率的额定值。
相应的系统时钟周期也会有误差。TSCL,min表示系统时钟周期最小值,TSCL,max表示系统时钟周期最大值,TSCL,rat表示系统时钟周期额定值。由于Δf<<1,可以进行近似。
TSCL,min=(TSCL,rat)/(1+Δf)≈TSCL,rat×(1-Δf)(11)
TSCL,max=(TSCL,rat)/(1-Δf)≈TSCL,rat×(1+Δf)(12)
1.3传输延迟
CAN总线采用无破坏性的基于优先权的仲裁机制。在这种机制下,传输延迟至关重要。如果传输延迟时间过长,将导致无效的访问仲裁。传输延迟时间由物理总线延时(tBUS)、总线驱动器延时(ttran)和其它设备传输延迟(toth)共同决定。其它设备包括通信控制器、隔离光耦等。
tprop=2×(tBUS+ttran+toth)
传输延迟的标量值(PROP)可以由公式(14)得到。
PROP=tprop/TSCL(14)
1.4同步
通过同步机制,可以消除由于相位误差带来的影响,保证信息正确解码。有两种同步方式:硬同步和重同步。
硬同步仅发生在报文开始时,在一个空闲期间,总线上的所有控制器在一个SYNC_SEG段从隐性位到显性位的跳变沿上,初始化自己的位周期定时,执行一次硬同步。
重同步发生在报文位流发送期间,每一个隐性位到显性位跳变沿后。重同步根据引起同步边沿的相位误差,要么增加tTSEG1,要么减少tTSEG2,使采样点处于恰当的.位置。同步边沿的相位误e,由相对于同步边沿的位置而定,以系统时钟周期(TSCL)。其它定及重同步处理方式如下:
e=0,同步边沿发生在SYNC_SEG内;
e>0,同步边沿发生在TSEG1内;
e<0,同步边沿发生在TSEG2内。
如果引起重同步的边沿相位误差e的幅值小于或等于tSJW编程数值,则得同步导致位时间缩短或延长,与硬同步的作用一样;如果e为正值,且幅值大于tSJW,则增加tTSEG1值为tSJW;如果e为负值,且幅值大于tSJW,则减少值为tSJW。
2参数计算规则
参数确定原则为:保证系统在极端恶劣条件的两节点间,能够正确接收并解码网络上的信息帧。极端恶劣条件是指这两个节点的钟振偏差在系统容忍偏差极限的两端,并且两节点间具有最大的传输延迟。在没有噪音干扰的正常通信情况下,相位误差累计的最坏情况是,重同步边沿之间间隔有10个位周期。这是定义SJW最小值的条件。
在实际的通信系统中,噪音干扰是不可避免的。由于噪音干扰,可能会导致重同步边沿之间的间隔超过10个位周期,可能进入错误处理模式。在这种情况下,由于同步边沿之间的时间比较长,所以保证每一位都能够确切地取样就更加重要。如果不能够确切地取样,将会导致检测到错误并进行错误处理。
考虑各方面的影响,位定时参数的设置公式如下:
①1取样点模式
②3取样点模式
在计算SJWmin时,取大于计算数值的最小整数;在计算TSEG2max时,取小于计算数值的最大整数。由公式(15)~(18)可见,SJW和TSEG2由NBF、Δf、PROP分别决定。计算得到SJW和TSEG2后,由公式(9)可以得到TSEG1。根据SJA1000的寄存器说明,可以得到具体寄存器的设置数值。
3参数计算步骤及举例
某CAN通信系统,采用1个取样点模式,其它参数指标如表4所列。
表4
参数说明最小值典型值最大值fBit/(kb・s-1)通信波特率250tbit/μs位周期时间4fCLK/MHzCAN控制器的时钟频率24Δf/%时钟频率偏差1.0tran/ns总线驱动器延时3075157toth/ns其它设备延时1540δ/(ns・m-1)线路延时56.5L/m节点间总线长度395tBUS/ns计算得到线路延时tBUS=L・δ15618fprop/ns计算得到传输延时,公式(13)1201630
①确定可能的BRP、NBT和PROP。
由公式(1)、(3)、(4)及(9)得到
NBT=1/(fbit・TSCL)=fCLK/(2fbit・BRP)
所以有NBT・BRP=fCLK/2fbit(19)
将参数代入公式(19)得到NBT・BRP的值为48,而NBT取值为3~25,所以NBT和BRP所有可能的组合如表5所列。
表5
fCLKNBTBRPTSCL/nsPROPmaxPROPmin有效性24MHz41210001.630.12无68666.62.450.18无865003.260.24无124333.34.890.36有1632506.520.48有242166.69.780.72无
②计算NBTmin和NBTmax。由公式(15-1)、(18-1)、(19)、(14)及(3)推出
NBT≥
公式(22)
代入数据,计算得到8.31≤NBT≤17.9。原则上选12和16都可以,为了方便取得样点,我们取较大的值16。
③根据公式(15-1)计算SJWmin,如表6所列。
④根据公式(17-1)计算TSEG2min,如表6所列。
⑤根据公式(18-1)计算TSEG2max,如表6所列。
⑥确定寄存器设置数值,如表7所列。
表6
最小值最大值确定值SJW{3.23,3.67}max44TSEG2{2,SJW}max{8,5.54,4.78}min4TSEG1TSEG1=NBT-TSEG2-SYNC_SEG=16-4-111
表7
BTR0SHWBRPBTR1SAMTSEG2TSEG1C2110000103A00111010
4结论
在不同的系统应用中,可以根据所使用的时钟频率、时钟信号的频率偏差、通信波特率及最大传输距离等因素,对通信控制器位定时参数进行优化确定。确定得到的参数可以提高通信系统整体性能,这使CAN总线优势更加明显,以适合更加广泛的应用。
★ 新疆兵团坐标转换参数的确定
★ UKF在基于修正罗德里格参数的飞行器姿态确定中的应用
★ Perl一句话命令行编程中常用参数总结
★ linux中ln 命令使用参数详解linux操作系统
★ 如何通过配置自动实现ValueList中hql语句的整型参数转换
★ GAW-1两段翼型缝道参数优化中的雷诺数影响研究
★ 手持GPS坐标转换参数求解方法及在EXCEL中的实现
★ 回归型支持向量机在发动机参数测量分析中的应用
★ 估值类数据同化方法中背景场的确定-三维可分离的情况
CAN总线与以太网互连系统设计 篇9
摘要:介绍了一种基于单片机SX52的CAN与以太网互连方案,阐述了以太网和CAN总线网络协议转换的软硬件设计,实现了以太网与现有CAN总线网的直接连接。保证管理监控层(以太网)与生产测控层(CAN总线网)之间的连接,使得上下层数据能方便地通信。
关键词:现场总线CAN总线以太网
在大型企业自动化系统中,上层企业管理层和生产监控层一般都采用以太网和PC机,而下层车间现场则采用现场总线和单片机测控设备。上下两层的沟通,通常采用工业控制机加以太网卡,再加上PC机插槽上的接口卡或并行打印口的EPP接口卡实现。这种连接方式成本高,开发周期长。针对这种情况,笔者设计一种单独的CAN以太网网关互连系统,成功地实现以太网与现有CAN总线网的直接数据互联。
1系统结构
系统总体结构分为三部分:现场测控网络(CAN网络)、嵌入式透明SX52网关、以太网信息管理终端(如监控平台和网络数据库等),如图1所示。
CAN总线是一个设备互连总线型控制网络。在CAN总线上可以挂接多达110个设备节点,各设备间可以自主相互通信,实现复杂网络控制系统。但设备信息层无法直接到达信息管理层,要想设备信息进入信息管理层需通过数据网关。嵌入式透明SX52网关就是为此而设计的。
透明式网关在以太网应用层构建和解析完整的CAN协议数据包。CAN协议数据包作为TCP/IP网络应用层的数据进行传输,它对通信数据的具体实际意义不做任何解释。透明式网关由通信处理器、CAN总线控制器和以太网控制器三部分组成。其中SX52单片机为核心处理器,它实现了CAN控制网络与以太网之间的协议转换。以太网信息管理层的控制指令发送到嵌入式透明SX52网关,将TCP/IP协议包数据转换为CAN协议形式发送至CAN控制网络中的指定设备节点,完成信息管理层对现场设备层的控制。同样地,当CAN网络上的设备数据(如定时采样数据或报警信息)要传输到信息管理层时,可将数据发送到嵌入式透明SX52网关,再通过网关协议转换程序将CAN协议数据封装成TCP/IP协议的以太网数据帧发送至以太网上的监控计算机。
以太网信息管理终端是一个根据用户的具体要求而设计的用户层应用软件。它可以是一个WIN32监控程序或网络数据库(记录CAN节点设备数据)软件等;甚至可能是CAN节点设备的`服务器软件,为设备提供较复杂的数据处理工作。
2硬件设计
系统硬件分为两大部分:CAN总线网络设备接口设计和嵌入式透明SX52网关设计。
2.1CAN总线网络设备接口设计
CAN总线网络设备接口设计较网关设计简单。它是在完成设备功能的基础上加入一个CAN通信控制器接口芯片,实现与CAN总线网络的连接。考虑到开发成本和灵活性,笔者在设计中选用PHILIPHS公司的独立CAN通信控制器SJA1000芯片和CAN总线收发器82C250芯片。其结构如图2所示。
2.2嵌入式透明SX52网关设计
嵌入式透明网关设计是整个系统设计的核心。其结构如图3所示。它由CAN控制器协议转换模块和以太网控制器协议转换模块两部分组成。网关硬件中SX52微处理器起核心作用。它是由美国Ubicom公司研制的高速可配置通信控制器,其处理速度相当高。在外接100MHz时钟时,指令执行速度可达100MIPS。它可实现TCP/IP协议栈中的ARP、IP、UDP、TCP、HTTP、SMTP、ICMP等网络协议。
CAN控制器协议转换模块硬件电路原理如图3左框图。它由三部分组成:微控制器SX52、独立CAN通信控制器SJA1000、CAN总线收发器82C250。其中SX52为唯一的CPU核心,负责SJA1000的初始化,通过读写SJA1000内部寄存器实现数据的接收、发送和错误处理等。PCA82C250则提供对总线的差动发送能力和对CAN控制器的差动接收能力。
以太网控制器协议转换模块主要由微控制器SX52、以太网通信控制器RTL8019AS和隔离滤波器FB2002组成。RTL8019AS是台湾Realtek公司制造的一种高集成度的全双工10Mbps以太网控制芯片,实现了基于Ethernet协议的MAC层的全部功能,内置16KB的SRAM、双DMA通道和FIFO完成数据包的接收和发送功能。在网关设计中,使用跳线模式(JP置为高)硬配置RTL8019AS为8位模式。使用RTL8019的低5位地址线A0~A4以及低8位数据线D0~D7。SX52的B口的B0~B4脚作为地址线连接RTL8019AS的低5位地址线,B5~B7作为控制线分别连接读写时序控制脚IORB、IOWB、IOCHRDY;C口作为数据线连接RTL8019AS的低8位数据线;A口保留,用作日后扩展。图3中
AT24C64为8KBEEPROM,主要用来保存嵌入式透明SX-52网关的配置信息,如网关IP地址、MAC地址和SJA1000的ID网络标示符、网络掩码AMR和总线定时(BTR0、BTR1)等。这样,可以灵活方便地修改网关参数,适应不同环境,同时也考虑到以后的扩展。
RTL8019AS除与SX52连接外,还将其网络收发器的4根引脚TPOUT+、TPOUT-、TPIN+、TPIN-通过外接的隔离滤波器FB2002与以太网相连。采用隔离滤波器FB2002是为了提高网络通信的抗干扰能力。
3软件设计
整个互联系统的软件设计可以分为三部分:CAN总线设备接口通信程序、透明网关协议转换程序和以太网层应用程序设计。其中,CAN总线设备接口通信程序和透明网关协议转换程序的CAN控制器协议模块在结构上有较大的相似性,但有可能因采用微控制器不同而导致实现的程序语言相异。因而,在此不作论述,而主要讨论后两个方面的程序设计。
3.1透明网关协议转换程序
透明网关协议转换程序的整体设计思路为:当以太网应用层有数据要发送到CAN节点时,首先,数据发送到透明网关由以太网控制器协议转换模块从传输层数据报文中解析出完整的CAN协议数据包,存放在数据缓冲区A?再通知总调度模块,由它调用CAN控制器协议模块将CAN协议数据包发送到CAN总线上。反过来,当CAN设备有数据要发送到用户层时,首先,数据发送到透明网关由CAN控制器协议模块将完整的CAN协议数据包存放在数据缓冲区B?再通知总调度模块,由它调用以太网控制器协议转换模块将完整的CAN协议数据包作为应用层数据封装起来,再发送到以太网的应用层。其程序结构如图4所示。
3.1.1CAN控制器协议模块
CAN控制器协议转换模块程序主要由SJA1000的寄存器读程序CANRead、写程序CANWrite()、初始化程序CANInit()、发送程序txdsub()、接收程序rxdsub()程序组成。之所以要编写单独的SJA1000的寄存器读、写子程序,这是由SX52芯片只有I/O端口决定的。
选用CAN2.0A协议构建CAN总线控制网络,对SJA1000的初始化主要完成控制寄存器CR、验收代码寄存器ACR、验收屏蔽寄存器AMR、总线定时寄存器BTR0,1和输出控制寄存器OCR的设置。初始化完成后,由总调度模块监控SJA1000控制器。当CAN总线上有数据到达时,它调用接收子程序rxdsub(),把这一帧数据包存入数据缓冲区B中,然后释放接收缓冲器。同样,当有按CAN2.0A协议格式组合成的一帧数据报文在数据缓冲区A中要发送到CAN总线上去时,总调度模块将调CAN发送子程序txdsub()发送。
3.1.2以太网控制器协议转换模块
以太网控制器协议转换模块主要负责从UDP数据包中解析出完整CAN协议报文,存入数据缓冲区A。同时,可能将数据缓冲区B中的完整CAN协议报文封装成UDP数据报,然后将其发送到以太网上。
在通信传输层采用UDP协议是考虑到CAN协议数据报为短帧形式(每个数据帧最多为8字节)。如果采用TCP传输协议,要传输8字节CAN协议数据,要先通过3次握手建立连接,再传输数据,之后还要通过握手释放连接。这样传输效率对有限的网络资源来说无疑是一种浪费。而UDP是无连接的传输,可以提高网络传输效率,同时,也减轻网关的处理任务。当然,UDP传输协议是不可靠的,对于控制网络来说,是不允许的。为了提高通信的可靠性,采用了回传校验机制。通过实验测试表明这种方式是行之有效的。
以太网控制器协议转换模块主要由以太网卡驱动、ARP、UDP协议的若干个API函数组成,如NICInit()、NICDMAInit()、NICInitTxFrame()、NICSendTxFrame()、NICReadAgain()、ARPCheckIfIs()、ARPSendResponse()、ARPSendStPacket()、ICMPProcPktIn()、UDPAppInit()、IPGenCheckSum()、、UDPAppProcPktIn()、UDPStartPktOut()和UDPEndPktOut()等。所使用的变量有:remoteIP[3:0]、myIP[3:0]、UDPRxSrcPortMSB、UDPRxSrcPortLSB、UDPRxDataLenMSB、UDPRxDataLenLSB、UDPTxSrcPortMSB,UDPTxSrcPortLSB、UDPTxDestPortMSB、UDPTxDestPortLSB、DPTxDataLenMSB,UDPTxDataLenLSB等。
系统首次执行或复位时,以太网控制器协议转换模块将首先调用NICInit和UDPAppInit()等进行NIC、ARP、IP、UDP和应用程序的初始化。初始化完成后,即进入主循环。在主循环中,SX52将反复检测RTL8019AS是否接收以太网帧。当有数据被接收时,SX52调用NICDMAInit()和NICReadAgain()读入以太网帧首部?再调用ARPCheckIfIs()判断接收帧是否为ARP数据。若是ARP,则转入ARPSendResponse()和ARPSendStPacket()子程序进行ARP处理并发送响应ARP数据报;若不是ARP,则判断是否为IP数据报。若非IP数据报则清除该以太网帧;当所接收帧包含IP数据报时,则需进一步判断是ICMP数据报还是UDP数据报文。若是ICMP数据报则执行ICMPProcPktIn()子程序处理ICMP数据报并重发IP数据报;若数据为UDP数
据报文,则调用UDPProcPktIn()子程序。该程序将读入UDP数据报文首部的数据并进行相应处理,还原出完整的CAN协议数据报文存入数据缓冲区B中,再通知总调度程序,由总调度程序调用CAN总线控制子程序将CAN协议数据报文发往CAN总线。
反过来,当总调度程序通知以太网控制器协议转换模块将数据缓冲区B中准备好的CAN协议数据发送到以太网上时,它将调用NICInitTxFrame()、UDPStartPktOut()、IPGenCheckSum()、IPStartPktOut()、NICSendTxFrame()、UDPEndPktOut()等子函数进行发送处理,从而实现CAN总线到以太网的数据传输。
3.2以太网层应用程序设计
以太网上的通信协议一般采用TCP/IP协议。本文采用流行的SOCKET套接字编程,传输层协议选择UDP(用户数据报协议),通过VisualC++编写用户层程序。
WinSock提供了对UDP的支持,通过UDP协议可以向指定IP地址的透明网关发送CAN协议数据,同时也可以通过它接收CAN协议数据。发送和接收方处于相同的地位没有主次之分。利用CAsyncSocket类操纵无连接的数据发送较简单。首先生成一个本地套接口(需要指明SOCK_DGRAM标记);然后利用intCAsyncSocket??SendTo?constvoid?lpBuf?intnBufLen?UINTnHostPort?LPCTSTRlpszHostAddress=NULL?intnFlags=0?发送数据,intCAsyncSocket??ReceiveFrom?void?lpBuf?intnBufLen?CString&rSocketAddress?UINT&rSocketPort?intnFlags=0?接收数据。利用UDP协议可以使管理主机和SX52网关实现双向的数据通信。同时,这种传输方式也易于使数据SX52网关透明化。