CANopen协议栈PDO的配置方法研究StudyoftheWaytoConfigureProcessDataObjectwithinCANopenStack经建厌焦圣伟徐掂(北京工业大学电子信息与控制工程学院,北京100022)摘要:CAHopen作为CAN的应用层协议。极大地增强了CAN网络的可配置性。服务数据对象(SIX))用来配置网络参数和访问节点的对象字典,过程数据对象(PDO)用于实时数据的传输。CANopen协议本身比较复杂.需要配置的参数也很多,使得CANopen的配置在开发应用过程中占据非常重要的地位.本文着重分析PDO的触发方式和通信参数的配置方法,最后用一个例子来说明配置过程.关键词:CAHopcn协议PDO控制网络现场总线Abstract:AstheapplicationprotocolofCANbus,CANopenstronglyenchanccstheconfigurationofCANbus.ServiceaccessDataObjects(SDOs)a他usedtoconfigurenetpamlcte体andDatatotheObjectDictionary(OD)ofnode,ProcessObjects(PDOs)arcusedtOtransmitreal-timedata.BecauseofthecomplexityofCANopenitselfandmanyparameterstobeconfigured,resultsinitisimportanttoconfigureCANopenparametersduringthedevelopmentprocess.WaystotriggeraPDOandhowtoconfigureparametersarcanalyzedhere.FinallyanexampleisgiventOillumin=etheconfigurationprocess.Keywords:CANopenProtocolPDOControlNetFieldBus0引言CANopen协议是基于CAN总线和应用层CAL的高层协议,是针对行业标准化的协议,也是为标准的嵌入式网络开发的具有灵活配置能力的开放式协议…。CANopen协议为分布式控制网络提供了以F实现的方法:①不同CAN设备间的互操作性、互换性;②标准化、统一的系统通信模式;③设备描述方式和网络功能:④网络节点的任意扩展埋1。CANopen协议以通信规范CiADS一301为基础,规定了一系列的设备规范。采用对象字典(OD)、电子数据文档(EDS)等一系列的概念来描述设备和协议的相关信息:同时还规定了服务数据对象(SD0)和过程数据对象(PDO)等多种通信机制。本文主要分析PDO的配置方法和需要注意的问题。1服务数据对象(SDO)和过程数据对象(PDO)SDO和PDO是CANopen协议中使用的两类最重要的数据通信方式。它们在整个网络通信中起的作用不同。SDO用来配置网络参数和访问节点的对象字典。SDO通信是基于客户/服务器(C1ient/Server)模型,如果一个节点需要通过SDO访问其它节点的对象字典(oD)。那么这个节点就是客户。其他节点就是服务器。节点可以通过SD0来访问其它节点的oD,达到配置其它节点参数的目的。PD0通信是基于生产者/消费者(Producer/Consummer)模型.主要用于传输实时数据。产生数据的节点将带有自己节点号的数据放到总线上,需要该数据的节点可以配置为接收该节点发9送的数据。由于在节点进入运行状态后。通过PDO来传输实时数据,所以正确的配置PDO的参数非常重要,不仅关系到某个节点能否正确地发送、接收数据,而且也关系着整个网络能否正常的工作。2PDO的触发方式PDO的发送可以通过以下方式触发:①事件触发(COS,Change-Of—State);②时间触发(TimeDriven);③单个查询(Individualpolling);④同步(GroupPolling)。当单独使用事件触发PDO发送时,一旦过程数据发生改变则发送PDO。这可能带来一种非常严重的后果。那就是当某个过程数据变化的频率非常高时,这个PDO就不停地发送,导致其它节点的报文发送不出去。严重影响总线的效率。ChNopen采用“Inhibittime”机制来解决这个问题。Inhibittime是一个可以配置的以lOOps为单位(即100ps的倍数)的时间段。相同PDO发送至少间隔这个时间段。这样就可以确定某个事件触发的PDO的最大发送频率。如图1所示.图1设置InhibitTime的PDO的发送一般来说,PDO发送可以由任何触发方式的组合来触发。但最常用的是将事件触发和时问触发结合起来使用。单独事件触发,过程数据长时间没有变化(比如温度变量等),该PDO长时间没被触发,这样会影响刚加入网络中的节点。这时如果再加上时间触发的方式,就可以强制PDO在规定的时间内再发送一次。例如某个PDO配置Inhibittime为50,Eventtimer为250,这样该PDO可以在过程数据变化时发送,发送的最小间隔是5ms,另一方面不管数据有没有发生变化。每隔250msPDo都会发送一次.PDO触发方式通过配置PDO通信参数对象字典的子索引2配置实现。该子索引的取值范围为0—255。下面列出了不同的值对应的不同的触发方式。0:PDO在收到SYNC后发送。但不是周期的1-240:PD0在收到SYNC后发送,周期发送,该值为两次发送PDO之间的间隔的SYNc个数255:事件触发3PDO的通信参数和映射参数每个PDO想要正常地进行通信,必须为每个PDO配置两个参数即通信参数和映射参数。PDO的通信参数和映射参数在CiADS301规范里面都有详细规定。每个节点第1个接收PDO的通信参数和映射参数对应的对象字典分别是:Oxl400h、Oxl600h:第1个发送PbO的通信参数和映射参数对应的对象字典分别是:Oxl800h、OxlaOOh。依此类推。通信参数主要规定了该PDO的COB-ID、transmissiontype、inhibittime和eventtime等参10数,PDO使用的COB-ID在子索引l中默认为功能码加上节点号。比如节点号为1。发送PDO的功能码为180H,那么子索引1的值为181H。子索引2的值设定PDO的触发方式。比如该值为60,它代表接收到60个SyNC发送一个PDO。事件触发时取值OXFF。子索引3和5分别是Inhibittimer和Eventtimer这在前面已详细说明。PDO通信参数里面本身不含有数据,所有传递的实时数据都放在PDO映射参数指定的对象字典中,它们是一一对应的。1400H对应的映射索引为1600H,它保存了PDO过程数据的位置以及类型。共有0x40(64)个子索引,OOH的值为子索引总数,Ollt到40H子索引分别可以放不同的数据变量,共可以放64个。每个数据的值不能超过8字节。比如第一个发送PDO的映射参数的值为60000108,表明第一个发送PDO的数据在对象字典Ox6000的第1个子索引中,是一个8位的数据。接收PD0的通信参数和映射参数的设置跟发送PDO的设置方法一样,只不过索引不同而已.4实际应用中PDO的配置在作者参与的项目中组建了一个CANopen网络,其拓扑图如图2所示。该网络中包含3个节点.主节点是基于PC机的,主要用来配置各从节点和管理网络(控制节点的状态切换和监控。1y点的-tL,跳报文),同时总线监控也由PC机完成。两个从节点的NodeID分别为3和5。从节点3的TPD02映射到主节点的RPD01,从节点5的TPD01映射到主:肖点的RPD02、TPD02映射剑主节点的RPD03。如图3所示,系统采用预定义连接集(Pre—DefinedConnectionSet),两个从:17点各有4个TPDO和4个RPDO。发送方式都采用同步发送(变化时间比较缓慢),即接收到土节点发送的SYNC后发送PDO,两个节点的心跳报文都是1s发送一次,向主节点报告白己的状态。同步报文发送周期设为2s。60000l086000021060000310图2系统网络拓扑图图3PI)O映射图各节点PDO相关的对象字典的配置如下:主节点Oxl400h(RPD01)2索引值0x1601h/Olh60000210PDO映射参数的配置遵循DSP401规范,它规定了实时数据如何映射剑对象字典。映射参数的配置比较简单,主要跟具体的行规有关,甚至自己可以订立适合自己的标准来决定过程数据如何存取,不会影响网络通信和数据传输。23:0323:0223:02Nl盯Err.COB105TPD02:COB285mTPDOT’COB1屿rtxdata撕0c2TPOOI:COBl们mSYNC:C01]00023:0223:0223:01N小Err:.C01]70)nrNMTEmC01]705NMTErr:.COO103由0523:0023:00N‘盯Err.C01]/OSTP002:COB285ill,00TI:)D01:CO日185c223:0023:0023:00B3■trSYHC:COO80由0703m05NⅥE『r:COBN岍‘E瓜COIll05由0N町Err.COIl22:5922:50570S巾05TPD02:C01]2屿nrdata甜0TPOOt:COBl8Sn『05TPD01:COIl1e,m0M盯Err:.COBl03巾0data22:50’,‘日c1州r图4总线数据监控结果12如图4所示,总线监控界面是用Vc6.O开发的,从HKCAN30B卡上取CAN报文进行解析。最左边的数字为当前系统时间,如23:02说明当前系统时间为23分02秒。NMTErr、SYNC、TPD02、TPD03为报文的类型。CoB为报文的COB—ID,rtr为远程帧,data为数据域,从左到右数据依次从低字节到高字节排列。从图4中可以看出,COB为183的TPD01、COB为185的TPD01、COB为285的TPD02,在每次收到SYNC后便发送一次。同步SYNC两秒钟发送一次。监测结果表明PDO数据已正确地发送到总线上.节点可以正确获得数据。在选择是事件还是时间触发PDO时,需要考虑该变量变化的频率,如果变化得很快,最好使用事件触发,若使用时间触发,在下一个SYNC到来之前。数据可能己变化多次,这样可能产生丢失数据的问题。正确的选择触发方式是PDO配置时一个关键环节。5结束语PDO的配置在CANopen协议栈中处于比较重要的地位,影响整个网络的使用效果。从最后监听总线的结果来看,这样配置PDO是合理的,同时也说明了只要遵守CANopen协议的模块,只要接入网络,就可以实现设备间的互操作和配置。基于以上优点,ChNopen协议在.J:业控制过程中的应用领域将更加广泛。参考文献:【I】AminVonCollre仰等.(=^、op硼概述.国内外扎电一体化技术[J】.2006年第2期【2】王俊靖.胥布E.CAXopen协议的分析与实现.徽计锥机信息[J1.2006.22(6-2)【3】CiA.c^铀pen.^卯lication【4]Pfeiffer0-Ayre^tLayerandCommnication.Prol‘jle.CiA[Xt;7301.Versi【m4.皑汨】KeydelC.EmbeddedNetworking-ithCANmdC“open[如.gTCBreaks,200313CANopen协议栈PDO的配置方法研究
作者:作者单位:
段建民, 焦圣伟, 徐喆
北京工业大学电子信息与控制工程学院,北京 100022
1. 李丛梅.王清阳.胥布工 嵌入式网络CANopen协议的研究[会议论文]-2006
2. 王俊波.胥布工.Wang,Junbo.Xu,Bugong CANopen协议分析与实现[期刊论文]-微计算机信息2006,22(17)3. 任玮蒙.陶维青.REN Wei-meng.TAO Wei-qing 基于CAN总线的高层协议CANopen[期刊论文]-自动化技术与应用2007,26(4)
4. 飞思卡尔半导体公司.Freescale 飞思卡尔数字信号控制器以低成本提供低功耗和高性能[期刊论文]-电子技术应用2009,35(8)
5. 张文勇.ZHANG Wen-yong 基于TMS320F2812的CANopen协议的通信实现[期刊论文]-兰州石化职业技术学院学报2010,10(4)
6. 徐喆.闫士珍.宋威.XU Zhe.YAN Shi-zhen.SONG Wei 基于散列表的CANopen对象字典的设计[期刊论文]-计算机工程2009,35(8)
7. MC56F8006/56F8002:数字信号控制器[期刊论文]-世界电子元器件2009(10)
8. 韩冬.杨方.魏卓.HAN Dong.YANG Fang.WEI Zhuo 基于DSP的CAN总线智能节点的设计[期刊论文]-农业科技与装备2010(2)
9. 如何快速开发CANopen I/O设备——基于CANopen协议的XGate-COP10应用[期刊论文]-电子技术应用2010,36(1)10. 蒋智康.宋春宁.宋绍剑.Jiang Zhikang.Song Chunning.Song Shaojian PIC18单片机的CANopen通信协议[期刊论文]-单片机与嵌入式系统应用2008(9)
本文链接:http://d.g.wanfangdata.com.cn/Conference_6797168.aspx