您的当前位置:首页正文

基于MicroCANopen的网络设计与实现

来源:帮我找美食网
第22卷第8期 2012年8月 计算机技术与发展 COMPUTER TECHNOLOGY AND DEVELOPMENT V0I.22 No.8 Aug. 2012 基于MicroCANopen的网络设计与实现 宋瑞雪,李文新,王彬,张建勇 (兰州空间技术物理研究所,甘肃兰州730000) 摘要:为了提高航天器CAN总线通讯系统各个节点的规范性、可维护性、可扩展性,研究了CAN总线的高层协议CANo. pen的一种经典开源协议栈MicroCANopen,设计与实现了MieroCANoen网络。软件方面,在VC6.0的开发环境下,p采用并 改进MicroCANopen从站协议栈代码,实现了主从站代码;硬件方面,利用IXXAT公司的USB—to—CAN的适配器作为底层 硬件的支持,从而与PC机连接建立了一主多从的MieroCANopen网络。并且验证了通讯过程的正确性与设计的可行性。 该网络可以应用在航天器地面测试系统中,为航天器地测通讯系统提供高层协议的统一标准。 关键词:CANopen协议;MicroCANopen协议栈;CAN总线;VC编译器 中图分类号:TP31 文献标识码:A 文章编号:1673—629X(2012)08—0078—04 Design and Implementation of Network Based on MicroCANopen SONG Rui—xue。LI Wen—xin,WANG Bin。ZHANG Jian—yong (Lanzhou Insittute of Physics。Lanzhou 730000。China) Abstract:In order to improve the standardization。maintainability-scalability of each node in spacecraft communication system which based on CAN-bus.it is centered on the design and implementation of network based on MicroCANopen。a kind of clssaic open source protocol stack of the high—level CAN—bus protocol CANopcn.On the one hand。the master code is implemented by improving Micro・ CANopen slave protocol sack cotde.On the other hand-the CANopen network which has a master and several slaves is achieved by U— sing IXXAT’S USB—to—CAN adapter。as the underlying hardware support。to connect the PCs.And the corro ̄tness of communication process andthefeasibiliy oftthe design are verified.This researchis valuablein spacecraft groundtest systemformeasuring spacecraftto provide high-level protocol communication system wih unitform standards. Key words:CANopen;MicroCANopen;CAN-BUS;VC O 引 言 CAN(Control Area Network)总线属于现场总线 有极其广泛的应用,但国内大多数的应用系统仍然基 于CAN2.0B规范开发,还不能在应用层的水平上进 一的范畴,它具有很强的纠错能力,传输距离远、可靠性 高,是多主方式的串行通信总线,并被公认为是最有前 途的现场总线之一 。CANopen协议是基于CAN 总线的应用层协议,是开放的、标准化的高层协议,它 步深入 。 目前,由于在航天器通讯系统中没有统一的应用 层协议标准,为了提高规范化、可兼容性,文中研究了 一种开源的CANopen协议栈MicroCANopen,Micro- 种CAN上层协议,是一种具有CANopen最基本功 支持各种CAN厂商设备的互用性、互换性,能够实现 在CAN网络中提供标准的、统一的系统通讯模式,提 供设备功能描述方式,执行网络管理功能 。由于 CANopen协议精炼、透明、便于理解又具有较高的实 时性与可靠性,数据传输速率高,组网成本低等优 点 ,目前主要用于机械制造、铁路、车辆、船舶、制 药、食品加工等领域 。在国外,尤其是欧洲地区已 CANopen是美国嵌入式系统学会开发并开放源码的 一能的最小实现川。 1 MicroCANopen的介绍 CANopen协议中定义了四种通讯对象SDO(Serv. ice Data Object)、PD0(Process Data Object)、NMT(Net— work Management)和特殊功能对象 。MicroCANopen 收稿日期:2011—12—31;修回日期:2012-04-04 基金项目:国家重点项目(FZYBZR一010) 作者简介:宋瑞雪(1987一),女,硕士研究生,研究方向为局域网总线 含有CANopen的大部分基本概念,为了达到简单应用 的目的,只设计三类消息用于传输,它们分别是:启动 和“心跳”、服务数据对象SDO以及传输数据对象 PDO 。每个MicmCANopen 节点实现了一个小型 技术;李文新,研究员,博士生导师,研究方向为嵌入式软件、网络通 讯与安全、局域网总线技术。 CANopen对象词典,包含了必须的索引项1000h一设备 第8期 宋瑞雪等:基于MicroCANopen的网络设计与实现 ・79・ 类型,lO01h一错误寄存器,1018h一对象身份的内容。 CANopen与MicroCANopen主要异同点如表1所 可完成CAN消息的收发,并可以将CAN信号转换为 USB信号传递给上位机,上位机通过运行IXXAT公司 的监视软件可以在线观察总线上的数据 。 示,可以看出MicroCANopen能够实现CANopen的几 乎所有基本功能,且具有相当的性能。 表1 MicroCANopen与CANopen的比较 特性 CANo ̄n MicroCANopen 10k、20k 50k,125k、 数据速率 25Ok、500k、800k、 与CANopen数据速率 相同 1Mbps 同一网络最大节点 l27 127 数目 网络管理(NMT) 需要使用网络管理节 点 无需网络管理节点 由管理节点监控或一 所有节点产生“心 节点监控和“心跳” 般节点监测“心跳”信 跳”,由其它节点监 息。“心跳”间隔可配 控。“心跳”间隔可配 置 置 节点的配置一般通过 节点是预先配置好的, 节点配置 网络进行 允许改变 一旦节点运行起来不 对象字典中长变量 支持 支持任意长度的变量 不能超过4Byte CAN消息中PDO变 支持变量和CAN消息 预先固定好的映射 量映射 的任意映射 过程数据对象 支持时间、状态变化、 仅支持时间、状态变化 (PDO)的消息传送 同步或用户定制的任 两种方式,支持限制性 方式 意组合,支持限制的时 的时间传送方式“禁 间传送方式 止时间” 2 MicroCANopen的网络设计 2.1网络结构 CANopen网络是主从站形式,本实验搭建了一个 主站多个从站的CANopen网络系统,主、从站的实现 都是通过USB接口将USB—to—CAN适配器与PC机连 接,再通过CAN总线把USB-to-CAN适配器互联,总 线两端挂接120欧姆的终端电阻。上位机通过运行 VisualC++6.0软件观测数据的发送与接收,网络结构 如图1所示: CAN总线 图1 系统结构框图 USB—to—CAN设备为德国IXXAT公司生产的USB -to-CAN compact,其中包含了SJA.1000 CAN控制器, 2.2从站软件设计与实现 CANopen网络中每个节点都有一个对象字典¨ 。 对象字典是CANopen协议的核心,实现对象字典是实 现CANopen网络的关键¨ 。由于本实验需要的测试 数据简单,所以,以数组形式实现了小型的对象字典。 ODENTRY(索引,子索引,长度,值) ODEN I.RY(OxlO00,OxO0,4,OD—DEVICE— TYPE)//[1O00h,O0]:Device Type 有了USB—to—CAN适配器作为数据链路层和物理 层的硬件支持,用PC实现一个CANopen从站的数据 通讯就是在VC++6.0环境下,通过调用USB-to-CAN compact底层函数的动态链接库完成应用层Micro. CANopen的函数接口。 文中将MicroCANopen主、从站的软件设计按功能 划分为三层,界面层、应用程序层和底层驱动层,如图 2所示: 界面层 界面显示函数 麻用 序屡 堆栈处理函数 复位通讯函数 错误处理函数 数据发送函数 底层驱动层 数据接收函数 底层初始化函数 定时器 图2软件功能分层图 由于本实验的测试数据简单,通过界面显示函数 在VC6.0的CMD界面下进行数据观测;应用程序层 就是要初始化通讯堆栈并把数据发送到堆栈中,同时 接收并处理一些由MieroCANopen传来的重要事件,主 要完成堆栈处理、复位通讯、错误处理等函数;底层驱 动就是处理CAN接口,同时把需要发送或接收到的消 息进行排队,主要完成初始化、发送和接收的接口函数 以及定时器。 实现MicroCANopen的协议软件,首先要实现数据 接收函数和发送函数的功能,发送数据的过程是,把需 要发送的变量放到对象字典里,再把它们映射封装成 相应的对象,最后将报文发送到总线上,由于Micro. CANopen定义的消息结构体CAN—MSG和CAN消息 结构体CANMSG有所不同,所以要转化为MicroCANo. pen发送的消息结构形式,再将数据发送至总线。 typedef struct ・80・ {UNSIGNED16 ID;//Message Identiifer UNSIGNED8 LEN;//Data length(0-8) UNSIGNED8 dummy32bit;//Fill it to 32-bit width 计算机技术与发展 第22卷 再调用发送函数将命令发送出去。实现了主站发送 SDO请求命令和NMT命令选择的菜单,可进行从站的 状态跳转。 UNSIGNED8 BUF[8];//Data buffer }CAN—MSG; typedef structCANMSG _3通讯实验 本实验建立了一主多从的MicmCANopen网络,为 了验证网络的标准性,选择了一主一从站进行通讯实 验,验证内容如下: { UINT32 dwTime;//time stamp for I_ec ive message CANMSGINFO uMsglnfo;//message information(bit field) UINT8 abData[8];//message data }CANMSG, PCANMSG; (1)服务数据对象(SDO)请求/应答测试。 主站通过发送SDO报文访问或修改从站的对象 实现接收函数时,由于本实验是在WINDOWS32 位操作系统下进行CANopen的数据接收,所以,需要 开启一个接收线程来完成数据的接收。接收数据的过 程是,一旦接收标志位有效,就把CAN接收缓冲区接 收到的数据和地址放到内部阵列中,通知堆栈处理函 数中的解析函数进行解析,并送去执行相应的子函数 (NMT报文接收处理子函数、SDO报文接收处理子函 数、心跳报文接收处理子函数、PDO报文接收处理子 函数),最后返回主函数。 主程序按照通信流程编写,系统上电或通讯复位 情况下,其首先初始化CAN控制器的硬件,本实验中 初始化USB—to—CAN适配器,再初始化MicroCANopen 协议栈中的通信相关参数、对象字典、节点号,初始化 成功后自动发送启动报文,节点自动进入预操作状态, 并通过周期性的心跳报文向CANopen主站表示自己 的状态,之后等待主站的NMT命令操作。在主站 NMT报文到来之前从站持续在预操作状态,在这个状 态里,从节点可以通过SDO进行配置和参数设置,但 是不允许发送PDO,在相应的NMT报文到来后,即收 到启动远程节点命令后进入操作状态,此状态下可以 进行正常通讯了,在收到报文的情况下,可以完成 SDO、RPDO报文的通讯,若未收到报文,程序会执行 TPDO报文的处理。在收到NMT报文停止远程节点的 命令时,节点进人停止状态,从而停止PDO和SDO通 讯。通过NMT报文对心跳报文内容的刷新,使Micro— CANopen协议中NMT状态机得以实现。 2.3主站软件设计与实现 本实验的主站功能是在从站的基础上对Micro. CANopen代码加以补充实现。MicroCANopen中只有 响应SDO请求和NMT命令的代码,不能主动发送 SDO请求和NMT命令。所以,要补充发送SDO请求 和NMT命令的代码,定义了两个结构体变量,其中 CAN—MSG是MicmCANopen代码中定义的消息结构 体。 CAN—MSG MEM_FAR gTxSDO; CAN—MSG MEM—FAR gTNMT。 通过给结构体变量(包括ID、LEN和BUF)赋值, 字典,从站通过SDO报文对主站的访问或修改进行应 答。如表2所示:根据CANopen预定义主/从连接集 标识符分配表,得知SDO发出请求的ID号为0x600+ 节点号,测试中假设节点号为7,所以,主站对7号机 发出SDO请求ID号为0x607。第一个字节40代表上 传命令,第2,3字节是主索引号 0xl000,第4,5字节是 子索引号0x00。第二行是从站7号机收到请求后的 SDO响应,ID号为0x587,43是回应上传的命令字,主 索引、子索引不变,将对象字典中的设备型号 0xF0191,填人第5~7字节,即可。 (2)网络管理(NMT)命令测试。 主站通过发送NMT命令对从站状态进行管理,测 试其是否响应NMT命令管理,包括启动和停止设备, 通讯复位和设备复位等内容¨ 。表2中CANopen主 站发出NMT启动命令,包含2个字节数,ID为0x000, 第一个字节0l是命令字,代表节点启动。第二个字节 o7是节点号,从站7号机收到NMT命令后,便进入操 作状态。 表2实验数据 (3)过程数据对象(PDO)通讯测试。 通过发送与接收PDO数据,观测PDO映射是否 正确,是否能够传输实时数据。本实验中PDO只定义 第8期 宋瑞雪等:基于MicroCANopen的网络设计与实现 ・81・ 了两个通道,PDO0的映射参数为0x6000,OxO1。在进 入操作状态时,自动配置TPDO参数,根据主索引 现[J].计算机技术与发展,2010,20(4):235—236. [2】余[3]赵涛,刘晓明 ,仲元宏.基于ARM7的CAN总线中继器 义.CANopen协议的分析与研究[J].软件导刊,2010, 极.CANopen现场总线从设备协议一致性测 Ox6000,子索引0x01,在对象字典中找到对应的值 0x00020103,将其存放在发送缓冲区待发送,发送PDO 的ID为0x180+7,所以,表2中PDO0通道的数据映射 成功。 的设计[J].计算机技术与发展,2009,19(11):198—199. 9(6):107—108. [4] 马秋霞,郇试系统研究[J].制造业自动化,2005,27(1):9—1O. [5]郇极,杨斌,魏继光.一种开放式的现场总线协议 通过实验数据的分析证明几种通讯对象NMT、 SDO、PDO的通讯过程符合CANopen协议标准,达到 了一致性测试的目的。 CANopen[J].制造业自动化,2004,24(10):33—35. [6] 叶爱兵,郑华耀,陈巨涛.基于CANopen的协议分析系统 设计与实现[J].扬州大学学报(自然科学版),2009,12 (3):53—54. 4结束语 CANopen网络可以根据具体通讯需求设置成多种 通讯模式,提高了通讯效率和灵活性,能在很大程度上 降低CAN网络数据的负载,为分布式控制提供一种理 想的网络系统。MicroCANopen能够实现CANopen的 几乎所有基本功能,并且能与CANopen完全兼容。文 中设计并实现了基于MicroCANopen协议的标准应用 层网络,并成功验证了整个通讯过程。最终,应用在航 天器地面测试系统中,为航天器地测通讯系统中CAN 总线数据的通讯提供了应用层统一标准。 参考文献: [1]王瑞晓,贺占庄.CAN总线位定时和同步机制的设计与实 [7]王瑞.MicroCANopen一一种开放源代码的CANopen协议 软件[c].北京:中国宇航学会计算机应用专业委员会, 2004:182-184. [8] Farsi.CANopen Implementation[M].London,UK:Research Studies Pre,2000:2—5. [9]程坷飞,王渝,王向周 基于CANOPEN协议的车载平台 数据通讯系统[J].微计算机信息,2005,21(7):46—47. [10]Boterenbrood H.CANopen high-level protocol for CAN-bus [M].Amsterdam:NIKHEF,2000:2-16. [1 1]CANopen Communication Profile for Industry System Based on CAL,CIA Draft Standard 301 Version 4.02[S].2002. [12]邓遵义,宁 袜.基于CANopen协议的主节点通讯实现 [J].微计算机信息,2008,24(8—2):55—57. (上接第77页) 法,可以明显降低对样本集几何形状的依赖,能够有效 地区分出孤立噪声数据和野点数据。实验证明,与支 持向量机和基于类中心距离隶属度的FSVM相比,基 于属性相关隶属度的FSVM可以达到最佳的分类效 果,且使用该方法构造隶属度简单易行,运行效率高, 在模糊支持向量机方面有着广阔的应用前景。 参考文献: [1]Vapnik V.The Nature ofStatisitcal Learning heTory[M].New York,USA:Springer,1995. Applications(IJNSA),2009,1(1):l-13. [7]Li Zehong,Liang Weibo.The Contract Risk Recognition of Construction Project Based on Rough Set Theory and Fuzzy Support Vector Machine[C]//The 2008 International Confer- ence on Risk Management&Engineering Management.[S. 1.].[S.n.],2008. [8]Li Lei,Zhao Kenan.A New Intusrion Detection System Based on Rough Set Theory and Fuzzy Support Vector Machine [C]//The 3砌Intenatrional Workshop of Intelligent System and Applications(ISA2011).[s.1_]:[S.n.],2011. [9]Inoue T,Abe S.Fuzzy support vector machines orf pattem classiifcation『C]//International Joint Conference on Neural [2] Cristianini N,Schawe—Taylor J.An Introduction to Support Vector Machines[M].Cambridge,England:Cambridge Uni— versity Press,2000. Networks.[S.1.]:[S.n.],2001:1449—1454. [10]Li Xuehua,Shu Lan.Fuzyz Theory Based Support Vector Ma— chine Classiifer[C]//Fifth Intenatrional Conference on Fuzy zSystems and Knowledge Discovery.[S.1.]:[S.n.],2008: 600-604. [3] 张浩然,韩正之,李昌刚.基于支持向量机的非线性系统辨 识[J].系统仿真学报,2003,15(1):119—121. [4] 张[5]杜熠,张素,章琛曦,等.基于支持向量机的概率密度 估计方法[J].系统仿真学报,2005,17(10):2355-2357. 吉占,刘三阳,齐d,HJ1.一种新隶属度函数的模糊支持向 量机[J].系统仿真学报,2009(7):1901—1903. [6] Chen Rung—Ching,Cheng Kaifan,Hsieh Chia—Fen.Using rough set and support vector machine for network intrusion de- [11]段丹青,陈松乔,杨卫平,等.使用粗糙集和支持向量机检 测入侵[J].小型微型计算机系统,2008(4):627—630. [12]Pawlak Z.Rough sets[J].International Journal of Computer and Ifnormation Sciences,1982(5):341—356. [13]蒋盛益.基于聚类的入侵检测算法研究[M].北京:科学出 版社,2008. teetion[J].International Journal of Network Security&Its 

因篇幅问题不能全部显示,请点此查看更多更全内容

Top