总线协议

2024-05-02

总线协议(精选九篇)

总线协议 篇1

总线是数据总线的简称, 也可以称之为总线协议, 它是为传输提供一套编解码的标准, 以便于各子系统之间的相互传递数据信息和进行数据处理。

1553b总线原本是美军航空电子综合系统的标准总线, 被用来为各种系统之间的数据和信息的交换提供媒介, 它类似“局域网或者LAN”, 以其优异的性能在航空, 航天, 航海和其他武器装备上得到广泛的应用, 有“一网盖三军”之称。国内对其进行了跟踪研究, 制定了相应的国军标GJB 289A, 并已应用于国产先进战斗机中。

1553b总线是目前国际公认的数据总线标准, 被利用在许多军事平台上并逐渐进入非军事上一些空白的应用领域。1553B总线已经被世界性地采用在空军、海军、陆军装配上, 即使是没有应用的国家, 她也会代理这种产品。平台不仅局限于航行器上, 例如, 它还被利用在坦克、轮船、导弹、人造卫星、国际空间站上。另外, 地面基础设施上也有1553b的角色, 比如测试设备, 模拟器, 和训练器。

1 1553b总线简介

1553b总线是MIL-STD-1553B的简称, 其全称是飞机内部时分制指令响应式多路传输数据总线。由于其传输速率高, 设备之间连接简单灵活, 噪声容限高, 通信效率高而且可靠, 为美军标所采用, 将其作为机载设备相互通信的总线标准。从推出到现在, 经过30年的发展, 1553b总线技术也在不断的改进。目前1553b总线已经成为在航空航天领域占统治地位的总线标准。

1553b总线是一种集中式的时分串行总线, 其主要特点是分布处理、集中控制和实时响应。其可靠性机制包括防错功能、容错功能、错误的检测和定位、错误的隔离、错误的校正、系统监控及系统恢复功能。采用双冗余系统, 有两个传输通道, 保证了良好的容错性和故障隔离。综合起来1553b总线有以下几个优良特点:

(1) 实时性好, 1553b总线的传输码速率为1Mb/s, 每条消息最多包含32个字, 传输一个固定不变的消息所需时间短。数据传输速率比一般的通信网高。

(2) 合理的差错控制措施和特有的方式命令, 为确保数据传输的完整性, 1553b采用了合理的差错控制措施―&horbar反馈重传纠错方法当总线控制器bc向某一终端rt发出一个命令或发送一个消息时, 终端应在给定的响应时间内发回一个状态字, 如果传输的消息有错, 终端就拒绝发回状态字, 由此报告上次消息传输无效。而方式命令不仅使系统能完成数据通信控制任务, 还能调查故障情况并完成容错管理功能。

(3) 总线效率高, 总线形式的拓扑结构对总线效率的要求比较高, 为此1553b对涉及总线效率指标的某些强制性要求如命令响应时间、消息间隔时间以及每次消息传输的最大和最小数据块的长度都有严格限制。

(4) 具有命令/响应以及“广播”通信方式, bc能够以“广播”方式向所有rt发送一个时间同步消息, 这样总线上的所有消息传输都由总线控制器发出的指令来控制, 相关终端对指令应给予响应并执行操作。这种方式非常适合集中控制的分布式处理系统。

2 1553b总线通信系统的组成

1553b总线通信系统一般由若干个子系统通过嵌入式总线接口并经过总线介质互联而成, 各个子系统之间操作独立, 资源和功能则可以通过网络共享。

从通信系统的角度来分, 1553b有3种终端见图1:

总线控制器 (BC) : 用来调度管理总线上信息的传输, 任何时刻总线上只能有一个总线控制器但可以有备份的总线控制器。

远程终端 (RT) : 在1553b总线上允许挂接最多31个终端, 每个RT 终端被分配了惟一的总线地址, 不具备总线控制功能, 但可以作为总线控制器的备份。

总线监视器 (BM) : 在1553b总线上可以有一个总线监视器, 他不响应总线控制器的任何命令, 用于监视总线数据及提取数据以便以后的数据分析。

总线控制器BC发起总线上的数据传输, 只有当BC向某RT发出总线指令后, 该RT才能参与数据传输。总线指令分为发送指令、接收指令和方式指令, 这些指令分别用来命令某RT发送、接收、或执行由方式指令指定的某个动作。BC通过验收RT 回答的状态字来检验传输是否成功。总线上的信息是以消息的形式进行传送的。共有10种消息定义, 如BC到RT传输定义, RT到BC传输定义, RT到RT传输定义等。

3 1553b总线消息传输机制

1553b总线上的信息是以消息 (message) 的形式调制成曼彻斯特码进行传输的。每条消息最长由32个字组成, 所有的字分为3类:命令字、数据字和状态字。每类字的一个字长为20位, 有效信息位是16位, 每个字的前3位为单字的同步字头, 而最后1位是奇偶校验位。有效信息 (16位) 及奇偶校验位在总线上以曼彻斯特码的形式进行传输, 传输一位的时间为1 s (即码速率为1 MHz) 。同步字头占3位, 先正后负为命令字和状态字, 先负后正为数据字。

在这3种类型的字中, 命令字位于每条消息的起始部分, 其内容规定了该次传输的具体要求。状态字只能由rt发出, 它的内容代表rt对bc发出的有效命令的反馈。bc可以根据状态字的内容来决定下一步采取什么样的操作。数据字既可以由bc传输到某rt, 也可以从某rt传输至bc, 或者从某rt传输到另一rt, 它的内容代表传输的数据。命令字, 数据字以及状态字各位的定义见图2。

1553b总线上消息传输的过程是:总线控制器向某一终端发布一个接收/发送指令, 终端在给定的响应时间范围内发回一个状态字并执行消息的接收/发送。bc通过验收rt回答的状态字来检验传输是否成功并做后续的操作。消息是构成1553b总线通讯的基本单位, 如果需要完成一定的功能, 就要将多个消息组织起来, 形成一个新的结构叫做帧 (frame) 。帧的结构见图3。在图中, 完成一个消息的时间称为消息时间, 两个消息之间的间隔称为消息间隔时间, 完成一个帧的时间称为帧时间。在实际应用中这3种时间都是可以通过编程设置的。

4 结束语

由于1553b总线具有良好的容错性设计和故障隔离技术, 因此在国内外的机载设备中得到了广泛的应用。20世纪90年代以后, 1553b标准在我国航空电子领域得到越来越广泛的应用, 深入地了解1553b总线的基础知识对于设计、开发和测试1553b总线通信系统是非常必要的, 学习应用这些知识, 将为我国航空电子系统总线通信和其他1553b通信领域的发展起到积极的作用。

摘要:由于电子技术和计算机技术的飞速发展, 数据总线技术也在不断地成熟和完善, 1553b总线作为一种高可靠的总线技术不仅在军用上, 而且在民用上都有了越来越广泛的应用。通过对军用航空总线标准MIL-STD-1553B的描述, 详尽地分析了1553b总线的硬件结构和原理, 对传输协议中的字类型、信息传输格式、帧结构做了全面的介绍和剖析。

关键词:1553b总线,总线控制器,消息

参考文献

总线协议 篇2

摘要:采用FPGA技术,在ALTERA公司的FLEX6000系列芯片上实现了从设备模式PCI总线的简化协议,并给出了Windows9x系统下的虚拟设备驱动程序,提供了与应用程序的接口。实现结果表明:该设备结构灵活,功能可靠,有利于与其它模块实现单片集成应用。本系统已应用在数据采集和处理、图像处理等方面。

关键词:PCI总线协议现场可编程门阵列虚拟设备驱动

目前,许多公司都提出了新型的计算机高速总线,如Arapahoe总线标准和HyperTransport技术,但各协议互不兼容,没有形成统一标准。作为传统的通用局部总线,PCI总线仍然占据着主流个人电脑市场,具有顽强的生命力。

现在市面上存在着各种PCI接口芯片,如AMCC公司的S5933,PLX的9080系列等。专用芯片可以实现完整的PCI主设备与从设备模式的接口功能,将复杂的PCI总线接口转化相对简单的用户接口,但系统结构受接口芯片的限制,不能灵活地设计目标系统,且成本较高。本文使用符合PCI电气特性的FPGA芯片进行简化的PCI接口逻辑设计,实现了33MHz、32位数据宽度的PCI从设备模块的接口功能,节约了系统的逻辑资源,且可以将其它用户逻辑集成在同一块芯片,降低了成本,增加了设计的灵活性。另外,还给出了Windows9x系统下的设备驱动程序,可以与应用程序接口,形成一个完整的系统。目前,本系统已经被印染企业应用在数据采集和处理等方面。

1系统构成与功能描述

系统的总体框图如图1所示。

由图1可见,系统的硬件平台为一块PCI卡。此卡的结构十分简洁,主要由FPGA芯片、RAM芯片和输出接口三部分组成。其中,FPGA芯片集成了PCI接口模块和数据处理模块。PCI接口模块实现了33MHz工作时钟、32位总线宽度的接口功能,支持I/O空间、内存空间及配置空间的读写和PCI中断功能。由于简化的PCI接口占用的逻辑资源较少,可在同一块芯片中集成其他用户逻辑。作为一个应用实例,本文加入了一个数据处理模块,对PCI接口传送来的数据进行处理,通过片外的输出接口输出到下位机。RAM芯片为数据处理提供缓存功能。

2从设备模式下的简化PCI协议的实现

为了实现PCI接口的基本功能,必须完成以下几个模块:

(1)PCI配置空间设置。PCI协议支持三种地址空间:I/O空间、内存空间和配置空间。配置空间提供了支持PCI设备自动配置的机制,是必需的。

(2)PCI从设备状态机。PCI总线状态机是具有PCI总线的计算机系统状态流,是由一个已知状态到另一个状态的条件、时序的描述。这是PCI接口设计中最基本也是最重要的`部分。

(3)地址译码和命令译码。地址译码用来确定PCI设备是否应当响应当前总线的操作;命令译码则用来指示PCI设备根据不同的总线命令作出相应的动作。

本文采用ALTERA公司的Max+PlusII软件平台,硬件描述语言使用ALTERAHDL语言,也可以方便地转换民VHDL或VerilogHDL语言。在此之前,先引入PCI总线信号的定义。

2.1总线信号定义

根据PCI总线协议2.2版,从设备模式下PCI接口至少包含47根引脚。图2给出了按功能划分的引脚分布,左边是必需引脚。右边是可选引脚。为简化起见,本文采用了如下引脚,其他引脚均不使能或置为高阻态。

(1)由系统提供的33MHz的同步时钟信号CLK和复位信号RST#(#表示低电平有效);

(2)关于数据传输的核心信号:32位地址/数据复用线AD[31:0]、总线命令/字节使能复用线C/BE[3:0]#和偶校验信号PAR;

(3)接口控制信号FRAME#、TRDY#、IRDY#、STOP#、DEVSEL#和IDSEL。其中,FRAME#为数据传输起止信号,TRDY#为主设备准备好信号,IRDY#为从设备准备好信号,STOP#为从设备停止请求信号,DEVSEL#为设备选择信号,IDSEL为配置空间读写时的片选信号;

(4)中断引脚INTA#。

为简化PCI协议,本文只实现了最重要的总线命令,表1给出了所支持的总线命令对应的C/BE[3:0]#编码值。

表1支持的总线命令

C/BE[3:0]#命令类型说明0010

0011

0110

0111

1010

1011I/O读

I/O写

存储器读

存储器写

配置空间读

配置空间写

2.2配置空间设置

配置空间大小为256字节,前64字节必需,记录了PCI设备的基本住处,比较重要的有:

(1)VendorID、DeviceID和ClassCode域:分别表示设备的生产厂商、设备编号和类型;

(2)Command和Status域:分别给出了对PCI设备的控制命令和当前状态;

(3)BaseAdressRegister域:指示此PCI设备按I/O方式还是内存方式进行读写以及需要的地址空间大小;

(4)InterruptLine和InterruptPin域:分别指明了设备使用的断号和中断引脚。

在对配置空间的访问中,用AD[7:2]寻址一个双字DWORD。在本设计中,配置空间设置如表2所示。

2.3简化的从设备状态机

在PCI协议中,标准的从设备状态机包含五种状态,而且各状态的跳转条件比较复杂。本文在不违反PCI协议的前提下,简化了从设备的状态机,如图3所示。

图3中,状态转移条件信号a、b、c定义如下:a代表配置空间访问条件,b代表I/O空间或内存空间访问条件,c代表总线传输开始条件。这三个条件的实现由后面的命令译码模块给出。

表2配置空间设置(均为十六进制)

字段值或含义字段值或含义VendorID1172ClassCode040000,即视频卡DeviceID8901BaseAdressRegister映射到I/O空间Command0082InterruptLine中断号AStatus0400InterruptPin使用INTA中断引脚

IDLE是系统的缺省状态,表示总线当前空闲。通常,设备处在IDLE状态时,要检测来自PCI总线和后级设备的信号,便设备作出合适的响应。设备处于S_DATA状态时完成第一次数据传输,直接无条件跳到BACKOFF状态。设备在BACKOFF状态时进行多个数据传输,直到主设备断开访问。需要注意的是:任何对I/O空间、配置空间以及内存空间的突发传输的地址超过了设备映射地址的范围时,从设备要在此状态建立STOP信号,断开访问。当帧信号无效或主设备终止传输时,设备回到初始的IDLE状态。BUS_BUSY状态时总线忙,表示总线正在被其它设备使用。有两条转移路径,若总线仍然被占用,则停留在BUS_BUSY状态,否则返回空头状态IDLE。

2.4地址译码和命令译码模块

地址译码模块主要检测PCI地址与本PCI卡的基地址是否匹配,可以通过AD[31:00]信号线上的值与设备的基地址作比较判断。如果PCI地址落在设置的基地址范围内,则PCI卡响应当前的总线操作。

命令译码模块指示PCI卡响应不同的总线命令,通过检测C/BE[3:0]#信号线上的值,与表1列出的总线命令作比较,完成命令译码。

3Windows9x系统下驱动程序的设计

对PCI设备而言,驱动程序提供了获取PCI卡的配置空间信息、勾挂PCI中断、总线数据传输等功能。本文介绍使用Numega公司的VtooIsD软件进行驱动设计的方法。

3.1寻找PCI卡并读取配置空间信息

配置空间包含了系统初始化PCI设备所必需的信息,首先需要遍历整个硬件树结构来寻找指定的PCI设备。对于每一个设备,比较其厂商号(VendorID)和设备编号(DeviceID),如果与设计的PCI卡的信息匹配,则读取它的配置空间信息。

3.2I/O方式下的读写操作

I/O方式下的读写比较简单。在得到PCI设备基地址信息后,通过C++语言中的端口读写函数inpd和outpd即可完成。举例如下:

Temp=_inpd(gBaseAddresses);//Temp中得到读出的数据

_outpd(gBaseAddresses,Data);//向基地址写入数据

其中,gBaseAddresses为基地址值,Data为写操作时的数据。

3.3内存方式下的读写

对于内存方式下的读写,一个重要问题就是地址的映射。因为硬件设备读写的是物理内存,但应用程序读写的是虚拟地址,所以存在着将物理内存地址映射到用户程序线性地址的问题。

映射功能通过调用VtoolsD软件的标准库函数完成。根据给定的物理地址和所要求的空间大小,在系统内存中分配相应空间。首先,用PageReserve函数分配当前保留页的线性地址空间,再利用PageCommitPhys函数的服务对开始的线性地址空间分配相应的物理地址空间。程序如下:

ULONGnPages=_NPAGES_(PhysAddress,SizeInByte);

Linear=PageReserve(PR_SYSTEM,nPages,PR_FIXED);

PageCommitPhys(PAGENUM(Linear),nPages,PAGENUM

(PhysAddress),PC_INCR|PC_WRITEABLE|PC_USER);

LinPageLock(PAGENUM(Linear),nPages,0);

其中,PhysAddress为给定的物理地址,SizeInBytes为需要的空间大小。

建立了物理RAM到系统内存的映射后,就可以利用C++语言中的文件操作基类CFile类完成数据的读写。首先使用CFile类的成员函数Open打开文件,为保证数据读写的准确无误,必须使用二进制方式打开;接下来使用Read和Write成员函数进行文件读写;完毕后用Close成员函数关闭文件。

3.4中断的勾挂和处理

首先在ON_DEVICE_INIT函数中完成中断的初始化。即通过前面读取的PCI设备的中断号,使用VPICD_Virtualize_IRQ函数进行中断勾挂,外调用VPICD_Physically_Unmask函数开中断。

RTCIRQHandle=VPICD_Virtualize_IRQ(&IRQdesc);

VPICD_Physically_Unmask(RTCIRQHandle);

然后在RTCInt_Handler函数中进行中断处理,可以进行各种操作,例如向应用程序发送自定义的消息来通知中断的发生。

3.5与应用程序的通信

一般地,应用程序通过CreateFile函数调用VxD驱动程序,得到一个VxD的文件句柄。使用如下的语句可以打开一个名为mydriver.VXD的文件,得到的句柄保存在hVxD中。

hVxD=CreateFile(.mydriver.VXD,0,0,0,CREATE-NEW,FILE-FLAG-DELETE-ON-CLOSE,0);

通过句柄hVxD和DeviceIoControl函数就可以与驱动程序进行数据传输。

本文采用ALTERA公司的FLEX6000系列芯片,型号为EPF6016TC144-3,实现了简化的从设备模式PCI协议,并在Windows9x系统下实现驱动程序的设计。整个系统工作良好。资源占用情况如下:可用I/O引脚113根,占用51根,占用率45%;可用逻辑单元数1320个,占用151个,占用率11%。

总线协议 篇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].车辆应用层.

总线协议 篇4

随着汽车工业的发展, 20世纪80年代中期, 率先由Bosch公司研发出新一代的汽车总线即控制器局域网CAN (Controller Area Network) 总线, CAN总线具有布线简单、典型的总线型结构、可最大限度地节约布线与维护成本、稳定可靠、实时、抗干扰能力强、传输距离远等特点, 这些都决定了CAN总线必定是一种成功的总线。CAN总线一经推出, 不仅在汽车行业得到广泛的推广与应用, 在诸如航天、电力、石化、冶金、纺织、造纸等领域也得到广泛应用。在自动化仪表、工业生产现场和数控机床等系统中也越来越多地使用了CAN总线, CAN总线的未来发展依然充满活力, 有着巨大的发展空间。

由于CAN总线本身只定义ISO/OSI模型中的第一层 (物理层) 和第二层 (数据链路层) , 通常情况下CAN总线网络都是独立的网络, 所以没有网络层。在实际使用中, 用户还需要自己定义应用层的协议, 因此在CAN总线的发展过程中出现了各种版本的CAN应用层协议, 现阶段最流行的CAN应用层协议主要有CANopen、Device Net和J1939等协议。

本系列文章主要介绍CAN总线、基于CAN总线的应用层协议———CANopen, 以及CANopen设备的应用及组网方式。本文主要介绍CAN总线相关的概念及网络结构。

2 CAN总线特点

CAN总线采用差分信号传输, 通常情况下只需要两根信号线 (CAN-H和CAN-L) 就可以进行正常的通信。在干扰比较强的场合, 还需要用到屏蔽地即CAN-G (主要功能是屏蔽干扰信号) , CAN协议推荐用户使用屏蔽双绞线作为CAN总线的传输线。在隐性状态下, CAN-H与CAN-L的输入差分电压为0 V (最大不超过0.5 V) , 共模输入电压为2.5 V。在显性状态下, CAN-H与CAN-L的输入差分电压为2 V (最小不小于0.9 V) , 如图1所示。

其物理传输层详细和高效的定义, 使得CAN总线具有其他总线无法达到的优势, 注定其在工业现场总线中占有不可动摇的地位, CAN总线通信主要具有如下优势和特点。

(1) CAN总线上任意节点均可在任意时刻主动地向其他节点发起通信, 节点没有主从之分, 但在同一时刻优先级高的节点能获得总线的使用权, 在高优先级的节点释放总线后, 任意节点都可使用总线。

(2) CAN总线传输波特率为5 kb/s~1 Mb/s, 在5 kb/s的通信波特率下最远传输距离可以达到10 km, 即使在1 Mb/s的波特率下也能传输40 m的距离。在1 Mb/s波特率下节点发送一帧数据最多需要134μs。

(3) CAN总线采用载波监听多路访问、逐位仲裁的非破坏性总线仲裁技术。在节点需要发送信息时, 节点先监听总线是否空闲, 只有节点监听到总线空闲时才能够发送数据, 即载波监听多路访问方式。在总线出现两个以上的节点同时发送数据时, CAN协议规定, 按位进行仲裁, 按照显性位优先级大于隐性位优先级的规则进行仲裁, 最后高优先级的节点数据毫无破坏地被发送, 其他节点停止发送数据 (即逐位仲裁无破坏的传输技术) 。这样能大大地提高总线的使用效率及实时性。

(4) CAN总线所挂接的节点数量主要取决于CAN总线收发器或驱动器, 目前的驱动器一般都可以使同一网络容量达到110个节点。CAN报文分为两个标准即CAN2.0A标准帧和CAN2.0B扩展帧, 两个标准最大的区别在于CAN2.0A只有11位标识符, CAN2.0B具有29位标识符。

(5) CAN总线定义使用了硬件报文滤波, 可实现点对点及点对多点的通信方式, 不需要软件来控制。数据采用短帧发送方式, 每帧数据不超过8 B, 抗干扰能力强, 每帧接收的数据都进行CRC校验, 使得数据出错机率极大限度地降低。CAN节点在错误严重的情况下具有自动关闭功能, 避免了对总线上其他节点的干扰。

(6) CAN总线通信介质可采用双绞线、同轴电缆或光纤, 选择极为灵活, 可大大节约组网成本。

3 CAN控制器介绍

随着CAN总线的不断发展壮大, 符合CAN2.0A和CAN2.0B协议的独立芯片越来越多。如NXP公司推出的SJA1000及SJA1000F, 可以直接与普通单片机组合, 使该单片机具有CAN通信的能力。随着CAN需求的日益增大, 芯片厂商也把CAN控制器直接集成到芯片内部, 例如NXP公司的LPC2119、LPC2294、LPC2378等。以下主要以LPC2378的集成CAN控制器为例, 对CAN控制器作一个介绍。

LPC2378 CAN控制器结构如图2所示。该控制器是一个带有发送和接收缓冲器的串行接口, 但它并不含有验收过滤器。验收过滤器是一个独立的模块, 能够对所有CAN通道进行CAN标识符过滤。

LPC2378 CAN控制器工作流程主要分为发送过程和接收过程。

(1) 发送过程

CAN控制器完全受处理器控制, CPU通过内部总线向CAN控制器的发送寄存器里填写需要发的数据, 然后启动CAN控制器的发送使能, 发送的数据分别经过位流管理器 (变成在总线上发送的二进制码) 、错误管理逻辑 (负责检测总线状态及发送是否出现错误) 及位时序逻辑 (管理数据在总线上的发送时序) 、CAN收发器 (负责把位流数据转换成CAN总线能够传输的差分电平) , 这样就完成了一帧CAN数据的发送, 如图3所示。

(2) 接收过程

CAN数据的接收与CAN数据的发送是一个相反的过程, 如图4所示。当CAN收发器检测到CAN总线上有数据时, CAN收发器把CAN总线上的差分信号转换成位流数据, 经过错误管理器及位时序逻辑单元对位数据流和时序进行检查, 再经过位流管理器把位流数据转换成字节数据并存放到接收缓冲器中, 当一帧数据接收完了之后则由接收缓冲器产生数据接收中断 (通知CPU已经接收到一帧新数据) , 并将产生的各种状态通过改变状态寄存器的值来表示。

以上主要介绍LPC2378 CAN工作流程, CAN2.0A/B标准协议在CAN控制器中都得以实现, 用户只需要操作相关的CAN寄存器就可以控制CAN控制器动作 (控制器的具体操作请参考LPC2378数据手册) , 因此可以大大提高CAN节点的开发时间, 提高工作效率。

4 CAN总线网络结构

作为一个总线型网络, 其结构如图5所示, 其组网与维护相当方便。CAN总线具有在线增减设备, 即总线在不断电的情况下也可以向网络中增加或减少节点。一条总线最多可以容纳110个节点, 通信波特率为5 kb/s~1 Mb/s, 在通信的过程中要求每个节点的波特率保持一致 (误差不能超过5%) , 否则会引起总线错误, 从而导致节点的关闭, 出现通信异常。

5 CAN总线应用层协议

由于CAN总线只定义了ISO/OSI中的物理层和数据链路层, 因此对于不同的应用出现了不同的应用层协议, 为了使不同厂商的产品能够相互兼容, 世界范围内需要通用的CAN应用层通信协议, 在过去的20年中涌现出许多的协议, 不过到现在为止能够广泛被承认的协议却不多, 现在CAN应用层协议主要有以下三种:

(1) 在欧洲等地占有大部分市场份额的CANopen协议, 主要应用在汽车、工业控制和自动化仪表等领域, 目前由CIA负责管理和维护;

(2) J1939是CAN总线在商用车领域占有绝大部分市场份额的应用层协议, 由美国机动车工程师学会发起, 现已在全球范围内得到广泛的应用;

(3) Device Net协议在美国等地占有相当大的市场份额, 主要用于工业通信及控制和仪器仪表等领域。

在以后的文章中将向读者重点介绍CANopen协议的基本概念及CANopen相关设备的使用及组网方法。

现阶段我国在工业领域与欧洲和美国等其他的发达国家存在较大的差距。CAN总线作为新型现场总线已经漫延到生活生产的各个领域, 能够提高生产效率以及降低生产成本, 成为工业现场总线的发展趋势。

总线协议 篇5

在上期文章中介绍了CAN总线, 本期文章中将介绍CANopen协议相关概念及其组网方式。

CANopen协议是在20世纪90年代末, 由CIA (CAN in Automation) 组织在CAL (CAN Application Layer) 的基础上发展而来, 一经推出便在欧洲得到了广泛的认可与应用。经过对CANopen协议规范文本的多次修改, 使得CANopen协议的稳定性、实时性、抗干扰性都得到了进一步的提高。并且CIA在各个行业不断推出设备子协议, 使CANopen协议在各个行业得到更快的发展与推广。目前CANopen协议已经在运动控制、车辆工业、电机驱动、工程机械、船舶海运等行业得到广泛的应用。

2 CANopen协议简介

图1所示为CANopen设备结构, CANopen协议通常分为用户应用层、对象字典以及通信三个部分。其中最为核心的是对象字典, 这部分将在本文以下章节中介绍。CANopen通信是CANopen关键部分, 其定义了CANopen协议通信规则以及与CAN控制器驱动之间对应关系, 熟悉这部分对全面掌握CANopen协议至关重要, 这部分将在以下章节中进行介绍。用户应用层是用户根据实际需求编写的应用对象, 本文对此将不作介绍。

3 CANopen对象字典

CANopen对象字典OD (Object Dictionary) 是CANopen协议最为核心的概念。所谓的对象字典就是一个有序的对象组, 每个对象采用一个16位的索引值来寻址, 这个索引值通常被称为索引, 其范围在0x1000~0x9FFF之间。为了允许访问数据结构中的单个元素, 同时也定义了一个8位的索引值, 这个索引值通常被称为子索引。

每个CANopen设备都有一个对象字典, 对象字典包含了描述这个设备和它的网络行为的所有参数, 对象字典通常用电子数据文档EDS (Electronic Data Sheet) 来记录这些参数, 而不需要把这些参数记录在纸上。对于CANopen网络中的主节点来说, 不需要对CANopen从节点的每个对象字典项都访问。

CANopen对象字典中的项由一系列子协议来描述。子协议为对象字典中的每个对象都描述了它的功能、名字、索引、子索引、数据类型, 以及这个对象是否必需、读写属性等等, 这样可保证不同厂商的同类型设备兼容。

CANopen协议的核心描述子协议是DS301, 其包括了CANopen协议应用层及通信结构描述, 其他的协议子协议都是对DS301协议描述文本的补充与扩展。在不同的应用行业都会起草一份CANopen设备子协议, 子协议编号一般是DS4xx。

CANopen协议包含了许多的子协议, 其主要划分为以下三类:

(1) 通信子协议 (Communication Profile)

通信子协议, 描述对象字典的主要形式和对象字典中的通信对象以及参数。这个子协议适用所有的CANopen设备, 其索引值范围从0x1000~0x1FFF。

(2) 制造商自定义子协议 (Manufacturer-specific Profile)

制造商自定义子协议, 对于在设备子协议中未定义的特殊功能, 制造商可以在此区域根据需求定义对象字典对象。因此这个区域对于不同的厂商来说, 相同的对象字典项其定义不一定相同, 其索引值范围为0x2000~0x5FFF。

(3) 设备子协议 (Device Profile)

设备子协议, 为各种不同类型的设备定义对象字典中的对象。目前已有十几种为不同类型的设备定义的子协议, 例如DS401、DS402、DS406等, 其索引值范围为0x6000~0x9FFF。

4 CANopen通信

在CANopen协议中主要定义了管理报文对象NMT (Network Management) 、服务数据对象SDO (Service Data Object) 、过程数据对象PDO (Process Data Object) 、预定义报文或特殊功能对象等四种对象。

(1) 管理报文NMT

管理报文负责层管理、网络管理和ID分配服务, 例如, 初始化、配置和网络管理 (其中包括节点保护) 。网络管理中, 同一个网络中只允许有一个主节点及一个或多个从节点, 并遵循主从模式。

(2) 服务数据对象SDO

SDO主要用于主节点对从节点的参数配置。服务确认是SDO的最大特点, 为每个消息都生成一个应答, 确保数据传输的准确性。在一个CANopen系统中, 通常CANopen从节点作为SDO服务器, CANopen主节点作为客户端。客户端通过索引和子索引, 能够访问数据服务器上的对象字典。这样CANopen主节点可以访问从节点的任意对象字典项的参数, 并且SDO也可以传输任何长度的数据 (当数据长度超过4 B时就拆分成多个报文来传输) 。

(3) 过程数据对象PDO

PDO用来传输实时数据, 其传输模型为生产者消费者模型, 如图2所示。数据长度被限制为1~8 B。PDO通信对象具有如下的特点:

(1) PDO通信没有协议规定, PDO数据内容由它的CAN-ID (也可称为COB-ID) 定义。

(2) 每个PDO在对象字典中用2个对象描述:

·PDO通信参数, 该通信参数定义了该设备所使用的COB-ID、传输类型、定时周期;

·PDO映射参数, 映射参数包含了一个对象字典中的对象列表, 这些对象映射到相应的PDO, 其中包括数据的长度 (单位为bit) , 对于生产者和消费者都必须要知道这个映射参数, 才能够正确地解释PDO内容。

(3) PDO消息内容是预定义的, 如果PDO支持可变PDO映射, 那么该PDO可以通过SDO进行配置。

(4) PDO可以有多种传输方式:

·同步传输 (通过接收同步对象实现同步) , 同步传输又可分为非周期和周期传输。非周期传输是由远程帧预触发或者由设备子协议中规定的对象特定事件预触发传送。周期传输则是通过接收同步对象 (SYNC) 来实现, 可以设置1~240个同步对象触发。

·异步传输 (由特定事件触发) , 其触发方式可有两种, 第一种是通过发送与PDO的COB-ID相同的远程帧来触发PDO的发送, 第二种是由设备子协议中规定的对象特定事件来触发 (例如定时传输、数据变化传输等) 。

(4) 预定义报文或特殊功能对象

预定义报文或特殊功能对象为CANopen设备提供特定的功能, 方便CANopen主站对从站管理。在CANopen协议中, 已经为特殊的功能预定义了COB-ID, 其主要有以下几种特殊报文:

(1) 同步 (SYNC) , 该报文对象主要实现整个网络的同步传输, 每个节点都以该同步报文作为PDO触发参数, 因此该同步报文的COB-ID具有比较高的优先级以及最短的传输时间;

(2) 时间标记对象 (Time Stamp) , 为各个节点提供公共的时间参考;

(3) 紧急事件对象 (Emergency) , 当设备内部发生错误触发该对象, 即发送设备内部错误代码;

(4) 节点/寿命保护 (Node/Life Guarding) , 主节点可通过节点保护方式获取从节点的状态, 从节点可通过寿命保护方式获取主节点的状态;

(5) 启动报文对象 (Boot-up) , 从节点初始化完成后向网络中发送该对象, 并进入到预操作状态。

5 CANopen预定义连接集

CANopen预定义连接是为了减少网络的组态工作量, 定义了强制性的缺省标识符 (CAN-ID) 分配表, 该分配表是基于11位CAN-ID的标准帧格式。将其划分为4位的功能码和7位的节点号 (Node-ID) 。如图3所示, 在CANopen中也通常把CAN-ID称为COB-ID (通信对象编号) 。

其中节点号由系统集成商给定, 每个CANopen设备都需要分配一个节点号, 节点号的范围为1~127 (0不允许被使用) 。预定义连接集定义了4个接收PDO (Receive-PDO) 、4个发送PDO (Transmit-PDO) 、1个SDO (占用2个CAN-ID) 、1个紧急对象和1个节点错误控制 (Node-Error-Control) ID。也支持不需确认的NMT模块控制服务、同步 (SYNC) 和时间标志 (Time Stamp) 对象报文。

6 CANopen网络结构

图4所示为CANopen典型的网络结构, 该网络中有一个主节点, 三个从节点以及一个CANopen网关挂接的其他设备。由于CANopen是基于CAN总线, 因此其也属于总线型网络, 在布线和维护等方面非常方便, 可最大限度地节约组网成本。

CAN总线作为新型成熟的现场总线已经应用到生活生产的各个领域。其中基于CAN总线的CANopen协议, 以其独特的优势已经成为行业标准, CANopen也必将成为现场总线的发展趋势。

总线协议 篇6

1 PROFIBUS现场总线

1.1 PROFIBUS系列

PROFIBUS根据应用特点分为PROFIBUS-DP、PROFIBUS-FMS、PROFIBUS-PA 3个兼容版本。

(1) PROFIBUS-DP以DIN 19245的第一部分为基础, 经过优化的高速、廉价通信网络, 适用于自动控制系统和设备级分散I/O之间通信。在设备级, 中央控制器 (如PLC、PC) 通过高速串行线同分散的现场设备 (如I/O、传感器、阀门、执行器等) 进行通信。DP一般构成单主站系统, 主从站之间采用循环数据传送方式工作, 最高通信速率可达12 Mbit/s。

(2) PROFIBUS-FMS完成车间级通用性通信任务, 用于车间级监控网络, 是一个令牌结构.实时多主网络, 提供大量的通信服务, 实现周期性和非周期性通信。

(3) PROFIBUS-PA专为过程自动化设计, 用于本质安全和现场供电的场合。

1.2 PROFIBUS的协议结构和传输技术

PROFIBUS协议根据ISO 74898国际标准, 以开放系统互连ISO/OSI为参考模型。协议结构如图1所示。协议定义了第1层 (物理层) 、第2层 (数据链路层) 和第7层 (应用层) 。没有使用第3层至第6层, 这样可以减少通信消耗, 增加效率。

1.2.1 PROFIBUS的物理层

现场总线的物理层规定了总线介质、网络拓扑、传输距离、传输速率、站点数以及总线接口。它提供有关同步和比特流在物理媒体上的传输手段。PROFIBUS提供3种传输技术。

(1) DP和FMS的RS 485传输基本特点见表1。

(2) PA的IEC 1158-2传输基本特点见表2。

(3) 在电磁干扰很大的环境下, 可以使用光纤导体提高传输距离和传输速度。许多厂商提供专用的总线插头可将RS 485信号和光纤信号互相转换。

1.2.2 PROFIBUS的数据链路层

数据链路层主要实现介质存取控制MAC和数据通信服务功能。MAC保证令牌的按序传递, 在任意时刻总线上只有一个节点发送数据, 避免信息的碰撞延时。数据通信服务提供点对点, 点对多点和广播通信功能, 所有电文海明距离等于4, 保证数据的完整性。

1.2.3 PROFIBUS的应用层

在DP和PA中没有应用层, 只有复杂场合使用的FMS中有应用层。应用层由低层接口LLI和现场总线信息规范FMS 2部分组成, FMS描述通信对象, 提供应用服务;LLI主要实现将FMS的服务映射到数据链路层, 通信连接的建立、监视和释放以及数据流控制。

2 PROFIBUS在控制领域的技术优势

2.1 总线存取协议——实时性

PROFIBUS主站之间采用令牌传递方式, 主站和从站之间采用主从方式。令牌传递程序保证每个主站在确定的时间片内得到总线访问权限, 主站得到令牌以后, 根据主从关系表向从站发送和索取数据信息。这种介质存取方式确保控制系统需要的实时性。例如, 主频200 MHz的CPU, 300个I/O点的扫描周期小于50 ms。

2.2 系统配置灵活

可根据应用对象的控制要求, 灵活选择纯主-从系统、纯主-主系统或多主多从的混合系统。3种系列的PROFIBUS容易集成在一起, DP和FMS使用了同样的传输技术和总线存取协议, 因而这2套系统可在一根双绞线上同时操作;PA和DP之间使用分段耦合器能方便地集成在一起。

2.3 PROFIBUS-PA本质安全特性

PROFIBUS-PA支持总线供电。在一条双绞线上即可实现数据通信和向现场设备供电。总线的操作电源来自单一供电装置, 不再需要绝缘装置和隔离装置, 即使在潜在的爆炸区维修、断开、接通现场设备也不会影响总线上的其它节点。

2.4 PROFIBUS协议硬件实现方便

理论上, PROFIBUS协议可在任何带有通用异步收发器UART的微处理器上实现。但当传输速率高于500 Kbit/s时, 最好采用专门的PROFIBUS协议芯片实现, 提供PROFIBUS协议芯片的厂家有IAM、Motorola、SIEMENS、Delta、SMAR等。PROFIBUS协议控制器的3种实现形式如图2所示。

3 结语

目前流行的现场总线标准有很多种, 如FF、Lonworks、CAN、WorldFIP和HART等, 各种总线技术相互融合, 在工程实践中合理搭配是目前现场总线技术应用的一个显著特点。PROFIBUS现场总线是开放的、功能完善的国际现场总线标准之一。PROFIBUS协议芯片实现简单、价格低廉、易于推广, 并得到世界上大多数有影响力的自控设备供应商的支持。这些特点使它在短短几年内在化工、冶金、机械加工、电力和其它自动控制领域得到迅速推广和应用。因而PROFIBUS必定是一种很有前途的现场总线。

摘要:PROFIBUS是当前应用最广泛的现场总线标准之一, 主要分析PROFIBUS-DP现场总线的协议结构、技术特点等。

关键词:现场总线,PROFIBUS,协议结构

参考文献

[1]刘美俊.现场总线概述[J].机床电器, 2004.

[2]彭道刚, 杨平, 杨艳华.现场总线技术的现状与展望[J].机电一体化, 2004.

[3]陈小枫.ISA的第一部现场总线专著即将在国内出版[J].仪表技术与传感器, 2002.

总线协议 篇7

在数据采集系统中,需要硬件采集系统和上位机进行数据通信。由于采集的数据类型可能为多媒体数据流,因而对数据的传输速率就有很高的要求。为了满足这些高速率数据传输要求,需要寻求一种标准的高性能的总线协议接口。目前个人计算机通信中,常用总线主要有USB总线、ISA总线和PCI/PCIe总线[1,2]。在这三种总线中,USB总线的理论传输速率可达到480Mb/s,但它的CPU占用率较高,不适合多任务系统的应用;ISA总线采用程序请求I/O方式与CPU进行通信,它的CPU占用率较高且传输速率较低;而PCI/PCIe传输速率及性能均较高,特别是PCIe总线,传输速率为250Mb/s(×1),被称为第三代I/O标准接口。PCIe目前已成为设备间通信的主流协议,已经广泛应用到数据采集、传输等领域。

硬件数据采集系统需要将采集到的数据通过PCIe总线传输到个人计算机上进行数据的后续处理。在此之间,需要个人计算机上的驱动程序来完成对硬件数据采集系统的控制,以完成数据的采集和传输。为了缩短系统的开发时间和提高驱动程序的可靠性,Jungo公司的WinDriver[3]驱动程序开发软件包给驱动程序的开发提供了一种简洁可靠的开发方法。

1 硬件系统的实现

本系统采用ML555开发板,它自身带有PCIe硬件总线接口,其核心是Xilinx公司生产的Virtex-5系列的FPGA[4,5]。首先按照开发板的手册将开发板上的拨码开关配置到正确位置;然后在装有Windows XP SP2系统并且带有×8或者×16链路的PCIe插槽的个人计算机上,将开发板插入个人计算机的PCIe插槽中;最后用ISE软件将开发板提供的PCIe IP核代码经过ISE软件的综合布线后生成的“.b”文件通过JTAG接口下载到ML555开发板中。这就完成了开发板的硬件配置。Virtex-5 FPGA是系统数据传输的核心部件,主要用来配置PCIe的配置空间、实现DMA操作的控制及DDR2存储设备的控制器。图1为系统的框架结构图。

PCIe配置空间主要配置单元配置情况:Vendor ID=0x10EE,Device ID=0x0007;这是驱动程序识别该硬件的厂商号和设备号;地址空间选择BAR0,类型为Memory,大小为128字节。这是DMA控制寄存器的起始地址。

DMA控制寄存器简介:DMAWAS,偏移量0x00,DMA写操作时DDR2存储器地址;DMAWAD_L,偏移量0x04,DMA写操作时上位机低32位地址;DMAWAD_U,偏移量0x08,DMA写操作时上位机高32位地址;DMARAS_L,偏移量0x0C,DMA读操作时低32位地址;DMARAS_U,偏移量0x10,DMA读操作时高32位地址;DMARAD,偏移量0x14,DMA读操作时DDR2存储器地址;DMAWXS,偏移量0x18,从DDR2存储器到上位机存储器传送的字节数(128×2n,n=[0:13]);DMARXS,偏移量0x1C,从上位机存储器到DDR2存储器传送的字节数(128×2n,n=[0:13]);偏移量0x20、0x24和0x2C为保留字节;DMACST,偏移量0x28,DMA控制/状态寄存器;DMAWRP,偏移量0x30,32位DMA写操作只读计数器;DMARDP,偏移量0x34,32位DMA读操作只读计数器。

DMACST控制/状态寄存器位介绍:位0,DMA写启动位,初始值0;位1,DMA写完成位,初始值0;位2,DMA读启动位,初始值0;位3,DMA读完成位,初始值0;位4,DDR2存储器硬件初始化完成位,初始值0;位31:5,保留位。

ML555开发板配置完成后就需要开发和上位机通信的驱动程序。目前开发驱动的方式主要有DDK、DriverStudio以及WinDriver。使用DDK来开发应用驱动需要掌握操作系统专业知识,开发过程涉及到很多面向底层的应用程序,因而不适合于开发硬件的专业人员。DriverStudio能够提供开发向导,也能自动生成C++[6]代码,但是在调试过程中需要不断地安装驱动程序,使用不方便。WinDriver能够像DriverStudio一样提供开发向导,可以生成C、Delphi、VB和VC++语言代码框架,使用灵活、方便。因而本系统采用WinDriver来开发PCIe驱动程序。

2 驱动程序开发

WinDriver软件是由JUNGO公司出品的驱动程序开发软件,其大大简化了硬件工程师开发硬件驱动程序的工作量。它支持的操作系统有:Windows系列、Linux和Solaris;支持的开发语言:C/C++、VB和Delphi等;支持的开发平台:VC和GCC等;支持的驱动接口:PCI/PCMCIA、CardBus、ISA和PCIe等。并且具有一种平台开发,其它平台通用的特点,因而有很强的平台移植性。

2.1 驱动代码的生成

本系统选用开发语言C++,开发平台MFC,上位机操作系统Windows XP,接口通讯协议PCIe,开发一款基于窗口界面的驱动程序。通过窗口界面按钮来控制上位机和开发板之间的数据传输以及监视寄存器状态、查看数据。

按照开发要求安装VS2005、Windows XP DDK和WinDriver9.21。启动WinDriver后,按照开发向导一步一步完成,直到生成基于C++语言的驱动程序代码,弹出VS2005编译平台。当前生成的C++代码是基于DOS操作系统下的顺序执行机制程序,而MFC是基于对话框的事件驱动执行机制。所以向导生成的代码不能直接在窗口模式下进行运行。下面介绍如何将其转化为基于窗口的对话框模式。

2.2 基于窗口的驱动开发

重新打开VS2005软件,新建“项目”,创建“MFC应用程序”,选择“基于对话框”选项,其余默认。新建好MFC项目以后,需要添加必须的头文件和源文件。

需要添加的头文件:virtex5_diag.h;源文件:diag_lib.c、pci_diag_lib.c、print_struct.c、virtex5_lib.c、wdc_diag_lib.c。另外,bits.h、diag_lib.h、pccard_cis.h、pci_regs.h、windrvr_events.h、status_strings.h、status_strings.c、utils.h、virtex5_lib.h、wd_ver.h、wdapi921、wdapi921.dll、windrvr_int_thread.h、wdc_diag_lib.h、wdc_lib.h、windrvr.h、print_struct.h、wdc_defs.h 需要添加到工程文件目录下。在xxxDlg.cpp(xxx为窗口驱动程序项目名称,下同)文件中需要添加预编译头文件“virtex5_diag.h”和“wdc_defs.h”。

设置工程属性。在添加的文件属性页中,创建/使用预编译头:不使用预编译头;预编译头文件:.Debug/xxx.pch;在工程属性中,配置属性 → 连接器 → 输入 → 附加依赖项:wdapi921.lib。工程属性设置完成,编译项目,成功通过。此时就可以按照开发一般窗口程序一样开发基于对话框的PCIe驱动程序了。

在资源视图中创建好对话框以后,需要添加各对应控件的消息响应函数。由于WinDriver对Xilinx公司出品的Virtex-5系列的FPGA有专门的驱动服务程序,所以只需要把提供的各功能的函数代码实现到控件消息响应函数处,即可实现相应的操作功能。驱动程序界面如图2所示。

2.3 主要函数功能介绍

WDC_PciScanDevices(dwVendorId,dwDeviceId,&scanResult);//dwVendorId为PCIe配置空间中Vendor ID,dwDeviceId为PCIe配置空间中Device ID,scanResult为PCIe信息结构体。该函数是将有特定厂商号和设备号的硬件信息填写到scanResult信息结构体中。

dwOptions |= DMA_KERNEL_BUFFER_ALLOC;//分配一个连续的DMA BUFFER物理地址。

pVIRTEX5Dma = (VIRTEX5_DMA_STRUCT *)calloc(1, sizeof(VIRTEX5_DMA_STRUCT));//在内存中分配一个sizeof(VIRTEX5_DMA_STRUCT)大小的内存空间。

WDC_DMAContigBufLock(hDev, &(&dma)->pBuf, dwOptions, dwtran_size, &(pVIRTEX5Dma->pDma));//锁定DMA传输空间。

WDC_ReadAddr32(hDev, VIRTEX5_SPACE, VIRTEX5_DMACST_OFFSET, &cst_data);//读取DMACST值。

cst_data&BIT4;//该语句用来检测在DMA设备初始化过程中存储器初始化是否完成。

WDC_WriteAddr32(hDev, VIRTEX5_SPACE, VIRTEX5_DMACST_OFFSET, cst_data&~BIT0);//BIT0位为写DMA启动位。写传送完毕,该位由硬件清零。

WDC_WriteAddr32(hDev, VIRTEX5_SPACE, VIRTEX5_DMARAD_OFFSET, DeviceMemOffset);//DMA读目标地址寄存器DMARAD,该寄存器中存放DDR2存储器地址。

WDC_WriteAddr32(hDev, VIRTEX5_SPACE, VIRTEX5_DMARAS_L_OFFSET, dma_phys_addr+HostMemOffset);//DMA读源地址寄存器DMARAS_L,该寄存器存放系统存储器的低地址位。

WDC_WriteAddr32(hDev, VIRTEX5_SPACE, VIRTEX5_DMARAS_U_OFFSET, 0x0);//DMA读源地址寄存器DMARAS_L,该寄存器存放系统存储器地址位的高位。

WDC_WriteAddr32(hDev, VIRTEX5_SPACE, VIRTEX5_DMARXS_OFFSET, ReadSize);//DMA读传送大小寄存器。

//启动DMA传送

WDC_ReadAddr32(((&dma)->hDma)->hDev, VIRTEX5_SPACE, VIRTEX5_DMACST_OFFSET, &cst_data);

WDC_WriteAddr32(((&dma)->hDma)->hDev, VIRTEX5_SPACE, VIRTEX5_DMACST_OFFSET, cst_data | BIT2);//DMACST[2]为DMA读启动位,读完成后其值由硬件清零。

//采用查询方式

DWORD timeout = 5000000; //5s

WD_SLEEP sleep = {2, 0}; //2μs

for (i = 0; i < timeout; i += 2)

{WD_Sleep(hDev, &sleep);}

3 实例应用

将本系统嵌入到基于DICOM图像格式的CT医学图像处理中,实现由CT采集回来的数据通过PCIe总线接口传输到PC机上。数据采集框架图如图3所示。

该结构是由CT采集回的数据传输到ML555开发板上,进行图像处理,并将最终的处理结果传输到个人电脑上,用软件把数据还原为图像进行显示,如图4所示。

由图4得出,本次设计的PCIe总线驱动具有良好的可靠性,实现了数据传输要求。

4 结束语

在实验条件为PCIe插入×8数据链路插槽,单次传输数据量为1024字节,数据传输为DMA查询方式,数据传输速率可达到610Mb/s。并且整个系统性能稳定,在数据传输系统中可完全达到高速传输要求。

窗口驱动程序在测试硬件方面很直观,应用方便。不但能完成普通驱动程序高效传输数据的要求,而且在测试过程中便于观察硬件中特殊功能寄存器的状态,有利于硬件功能的进一步完善。

摘要:简要介绍Xilinx公司生产的基于Virtex-5系列的FPGA的ML555开发板特点,并用ML555开发板实现带有DMA数据传输通道的PCIe总线协议。以数据采集与传输为例,详细介绍了采用WinDriver与MFC相结合的方法来实现基于窗口操作的PCIe驱动程序的开发步骤。

关键词:WinDriver,设备驱动程序,FPGA,DMA

参考文献

[1]Ravi Budruk,Don Anderson,Tom Shanley.PCI Express系统体系结构标准教材[M].电子工业出版社,2005.

[2]Tom Shanley,Don Anderson.PCI系统结构[M].刘辉,翼然然,夏意军,译.北京:电子工业出版社,2000.

[3]Jungo Ltd.WinDriverTM PCI/ISA/CardBus User’s Manual Version9.20[Z].Jungo Ltd.,2008.

[4]何宾.Xilinx可编程逻辑器件设计技术详解[M].清华大学出版社,2010.

[5]Kraig Lund,David Naylor,Steve T-rynosky.Virtex-5 FPGA Integra-ted En-dpoint Block for PCI Express Designs:DDR2 SDRAM DMAInitiator Demonstration Platform,XILINX,2008.

总线协议 篇8

关键词:地面雷达,总线,电子科学,国防安全

21世纪以来, 电子科学发展迅速, 但我国的电子科学环境比较复杂, 国内各个研发机构各自独立, 相互之间的联系比较少。因此, 虽然我国对电子产品的研究较多, 但质量和数量无法保障, 且各种产品之间的兼容性较差, 无法为我国的军队提供优良的产品, 大大削弱了我国的国防力量。因此, 必须对地面雷达模块的研发进行规划和管理。只有这样, 才能更好地形成比较完整的系统, 从而为保障我国的国防安全提供科技支持。

1 地面雷达模块的研究背景

在我国地面雷达研究的初期, 将雷达定义为总线。随着经济科技的发展, 出现了VME、CPCI类型的标准总线。近年来, 我国的科研技术装备逐渐成熟, 国内的研发机构相继研发了CPCI-e、VXS、VPX总线和运输协议, 这是我国地面雷达系统的重要研发成果, 对提升我国的国防实力具有重要的意义。

2 军用环境下的地面雷达模块总线

2.1 雷达总线概况

目前, 总线的提出组织有2个, 即由PICMG组织提出的CPCI总线和由VSO组织提出的VME总线, 这也是使用最多的雷达总线。但是随着经济的发展, 为了提高雷达传送数据的速度, 需要对总线系统进行开发, 从而找到一个更适合现代社会的雷达总线系统。

2.2 VME雷达总线

Motorola公司制定了VME雷达总线标准, 该标准主要是根据VERSAbus模块的结构制定的。VME雷达总线系统在经历了20多年的发展后, 更加规范化和科学化, 且更加符合社会发展的需要, 被广泛运用于各个行业。其中, 主要运用的领域是通讯行业、自动化办工和工业机械化控制等。

VME雷达总线的主要特征为:VME32在运行过程中的传输率为40 MB/s;VME64在运行中的总线传输率为80 MB/s;VVME64X在运行中能兼容VME64和VME32两种数据传输率, 传输速度为160 MB/s。

2.3 CPCI雷达总线

1944年, PICMG联合会提出了总线接口——CPCI雷达总线, 其总线结构主要是根据PCI电气的标准开发的, 是一种规格较高的总线系统, 对我国工业化、现代化进展具有重要的促进作用。随着现代化工业的发展, CPCI雷达总线的发展研究速度进一步加快, 并逐步研发了CPCI Express总线和ATCA (PICMG 3.0) , 这2种总线系统代替了传统的PCI雷达总线系统, 并大大提高了数据的传递速率, 增强了雷达总线系统的可扩展性规模, 为我国雷达系统的发展作出了巨大的贡献。

CPCI技术与PCI技术的关系为:CPCI技术是在PCI技术的基础上发展演变的。

在对PCI技术进行改造后, CPCI技术的特点为:采用PCI的总线技术;对传统PCI总线技术的结构进行了改造, 并加强了散热功能和抗振动功能, 这对提高CPCI技术的科学性具有很大的作用。

3 传输协议

随着现代科技的发展和进步, 我国地面雷达模块总线技术逐渐成熟, 运用于社会的各行各业中, 这对我国雷达的现代化发展具有重要意义。为了保障我国现代雷达系统的发展更加合理化和规范化, 现代雷达通讯的相关传输协议被提到会议议程中。协议的主要内容包括PCI Express、Rapid IO、以太网Infiniband和FC, 这些协议主要根据8b/10b编码技术制定, 各个协议针对的领域有所不同, 且有各自的特点。

3.1 传输协议的特点和运用领域

Rapid IO的主要特点是运用于模块之间、芯片之间和分系统之间。虽然其被局限在机箱内, 但Rapid IO的优点是灵活, 并能支持对等关系的“点到点”, 且特别适合高性能的嵌入系统。

PCI Express系统基本属于PCI总线系统中的高速串行传递, 其结构像一棵PCI树。此外, PCI Express系统被ROOT控制后, 才能使点与点之间的传递更加稳固, 并保障其功能正常发挥。

FC在发展过程中的主要研究方向为航点系统, 因此, 其主要运用在航点系统中, 发展研究更具有针对性, 并能提高研发的效率和水平。

3.2 Rapid IO和PCI Express的优、缺点

3.2.1 Rapid IO和PCI Express的优点

Rapid IO的优点为能进行嵌入式系统之间的相互关联, 可与任何系统相容, 并能支持许多冗余的设计;PCI Express的优点是能长时间地运用于计算机硬盘, 并能保持芯片之间的联系。

3.2.2 Rapid IO和PCI Express的缺点

Rapid IO的缺点是不能在PC计算机平台中运用;PCI Express的缺点是协议成本比较高、无法实现系统之间的互相联系、无法支持一些数据面之间的传递。

4 结束语

综上所述, 本文主要对地面雷达模块总线和传输协议进行了分析, 并对其研究成果进行了讨论。此外, 根据各个传输协议的特点和应用领域进行了详细总结。VME雷达总线和CPCI雷达总线对提高我国雷达传递速率起到了重要的作用, 这些研究成果不但提高了模块的通用性, 还对我国通讯行业的发展具有重要意义。

参考文献

总线协议 篇9

基于现场总线的网络技术研究是自动控制领域发展的一个热点。在各种各样的工业现场总线中,CAN总线以其成本低、速度快、实时性和可靠性较高等特点被快速应用于汽车电子、医疗、军事等领域。但是,CAN总线只定义了物理层和数据链路层,本身并不完整,针对这一问题,CiA(CAN in Automation)协会经过不断的发展于1995年发布了完整的CANopen协议,它不仅定义了应用层和通讯子协议,也为可编程系统、不同器件、接口、应用子协议定义了帧状态,为基于现场总线的全数字分布式控制系统的广泛应用和系统的一体化管理提供了解决之道[1]。

本文以改善现场总线网络通讯系统的运行效率,提高实时性和信息处理能力为前提,针对并条机自调匀整控制系统中各功能模块的作用,浅析CAN总线高层通讯协议CANopen,实现各功能模块间的数据通信。通过实验测试,证明系统工作稳定、可靠,保证了全数字分布式网络系统工作的快速性、准确性和实时性。

2 CANopen协议概述

2.1 设备模型

CANopen协议是由CiA协会针对CAN协议的不完整性而定义出来的一个更高层次的协议——应用层协议。一个CANopen 设备模块可以被分为3 部分,如图1 所示。通信接口和协议软件提供在总线上收发通信对象的服务。不同CANopen 设备间的通信都是通过交换通信对象完成的。这一部分直接面向CAN 控制器进行操作。对象字典描述了设备使用的所有的数据类型,通信对象和应用对象。对象字典位于通信程序和应用程序之间,向应用程序提供接口,应用程序对对象字典进行操作就可以实现CANopen通信。应用程序包括功能部分和通信部分,通信部分通过对对象字典进行操作实现CANopen通信,而功能部分则根据应用要求实现[2,3]。

2.2 对象字典

对象字典(Object Dictionary,OD)是一个有序的对象组,每个对象采用一个16位的索引值来寻址,为了允许访问数据结构中的单个元素,同时定义了一个8位的子索引,对象字典的结构参照表1,对象字典的描述参照表2。

在CANopen网络系统中每个节点都有一个惟一的对象字典,每个节点的对象字典都具有相同的结构,但具体的内容要根据不同的设备而定,包含了描述这个设备和它的网络行为的所有参数。

2.3 通讯对象

通过CAN网络传输的CANopen通讯对象可以通过服务和协议来描述。分类如下:

(1) 实时数据通过过程数据对象(PDO)协议传输。

用8个字节的数据字段把过程数据对象PDO映象到一个单一的CAN帧从而传输应用对象。每个PDO有一个惟一的标识符且仅可以通过一个节点发送,但其接收者不止一个。每个PDO在对象字典中用2个对象描述:PDO通讯参数,规定了PDO的通讯行为,包含哪个COB ID将被PDO使用,传输类型,禁止时间和定时器周期;PDO映射参数,规定了哪个对象被映射到一个PDO里,生产者和消费者必须知道这个映射,以解释PDO内容。

(2) 服务数据对象(SDO)协议用来对对象字典进行读写操作。

通过服务数据对象SDO可以访问一个设备的对象字典。为了使通讯得到确认,一个SDO需要两个带有不同标识符的CAN数据帧,通过SDO,在两个设备间可以建立点对点的通信,被访问对象字典的设备是SDO通讯的服务器,一个设备可以支持多个SDO对象,但是,至少有一个SDO在一个设备中被支持。

(3) 特殊功能对象协议提供了特定应用,网络同步,时间戳和紧急报文传输。

(4) 网络管理(NMT)协议提供了网络初始化,错误控制和设备状态控制服务。

在CANopen网络中,需要一个节点履行NMT的Master (主节点)功能。其他节点作为NMT的Slave (从节点)。NMT提供了以下功能:模块控制服务(初始化参加网络通讯的从节点);错误控制服务(管理节点和网络通讯的状态);配置控制服务(上传和下载网络的配置数据)。

(5) 层设置服务(LSS)协议用来配置CAN总线通讯参数和设备参数。

使用CANopen协议定义的LSS报文实现对CAN总线网络的配置,包括节点ID,通讯波特率,仪器的产品号、序列号等。LSS报文在CANopen协议通讯中是可选的,可以在节点初始化时直接指定节点ID,通讯速率等参数,它的使用可以提高系统灵活性。

3 通信网络的CANopen协议实现

3.1 自调匀整系统通信网络结构

本并条机自调匀整系统由键盘显示控制器、DSP控制器、A孔伺服电机控制器、B孔伺服电机控制器、PLC逻辑控制器和PC机监控组成,各节点在CAN总线的基础上采用CANopen协议实现通讯,完成系统预定义的功能。图2所示为A孔开环式并条机自调匀整原理图。

3.2 硬件部分

DSP控制器部分为整个系统的核心,负责对整个通信网络进行信息采集、数据运算、工作控制。下面主要说明DSP控制器的CANopen协议实现。

采用集成CAN模块的TMS320F2810 DSP实现,它有多达32个邮箱,占用512 B RAM,都可以配置为发送或接收邮箱,且都有一个可编程的接收屏蔽寄存器。这样就使数据传输更加方便灵活、信息量大大增加。图3为DSP控制器CAN总线部分驱动电路图,分别选用TMS320F2810的64引脚CANTXA和65引脚CANRXA作为CAN总线的发送和接收引脚。采用 ADuM1100高速数字隔离器替代传统的光电耦合器。采用MCP2551作为高速CAN收发器,具有差分发射和接收能力,可将许多节点与同一网络相连接。

3.3 软件部分

根据CANopen协议软件框架,分别设置了NMT报文、SYNC报文、SDO报文、PDO报文和Heartbeat报文,并针对DSP控制器从节点的性质及其与各节点之间的关系,设置了各报文的COB-ID,见表3。

在系统中键盘显示控制器为主节点,通过液晶显示监控各从节点信息,主节点通过检测 4个从节点发送的周期性心跳报文(Heartbeat)来判断各个从节点的工作状态。图4为DSP控制器从节点的CANopen协议通讯流程:在系统上电后,首先向主节点发送Boot-up报文,通知主节点进入Pre-operational状态,等待主节点的SDO报文访问对象字典,在完成对象字典的配置后,等待接收主节点的NMT报文进入Operational状态,开始PDO报文的发送及接收,完成信息数据的交换,实现分布式网络控制。

4 测试结果

为了保证系统中每个模块都能够正常工作,需要设计一个能够与PC机进行实时通讯的通用板,满足对系统各部分在实验室环境下进行测试,确保系统正常运行。采用LabVIEW软件设计PC机监控面板,内置信号采集、测量分析与数据显示功能,摒弃了传统开发工具的复杂性,在提供强大功能的同时还保证了系统灵活性。

在监控面板上可以设置节点号(Node ID),主/从节点,设置要发送报文的类型(如TPDOn,SDO,NMT,Heartbeat,LSS)及内容(数据长度,内容),选择通讯端口,还可以观察到接收的CAN报文类型、数据长度、节点号和报文内容。图5显示的数据是在初始化状态时进行的设置,可以在数据接收窗口看到进行LSS节点号设置和存储设置参数的返回报文,以及节点根据CANopen协议的规定发送Boot-up报文,和进入预操作状态后的Heartbeat报文。

5 结 语

本文将CANopen协议应用于自调匀整系统,实现了现场总线分布式网络控制系统的数字化、模块化,增强了设备的可扩展性,提高了数据传输的可靠性。这种基于现场总线应用层标准协议的开发和使用,对提高系统的工作效率,特别是对复杂系统的研制具有一定的指导意义。

摘要:CANopen是一个开放的、标准化的应用层协议,在各种控制系统中得到了广泛的应用,可以进一步提高系统的可靠性、灵活性和兼容性。结合工业控制中的自调匀整系统,采用CANopen协议实现了CAN总线上下位机之间的通信,并通过测试证明各通信模块具有较强的在线可控性,保证系统工作稳定可靠。

关键词:CANopen协议,CAN总线,DSP,对象字典

参考文献

[1]郇极,杨斌,魏继光.一种开放式的现场总线协议CANopen[J].制造业自动化,2002,24(10):33-34.

[2]Ci A.CANopen[Z].1996.

[3]Boterenbrood H.CANopen:High Level Protocol for CAN-bus[Z].2000.

上一篇:刑事摄影下一篇:商务英语词汇的学习