CANopen工作流分析

上传人:lis****210 文档编号:117197905 上传时间:2022-07-08 格式:DOCX 页数:18 大小:134.24KB
返回 下载 相关 举报
CANopen工作流分析_第1页
第1页 / 共18页
CANopen工作流分析_第2页
第2页 / 共18页
CANopen工作流分析_第3页
第3页 / 共18页
点击查看更多>>
资源描述
03-9-LL03 :Q!Pg 出爭赵非工uedONVO第一章 SDO实例分析1一、目的:1二、手段:1三、分析:1四、过程:24.1.对象字典的编写24.1.1各节点ID分配24.1.2对节点1进行对象字典编写24.1.3对节点2进行对象字典编写24.1.4对节点3进行对象字典编写34.2节点1读取节点2数据34.2.1节点1发送请求读取命令至节点234.2.2节点2响应节点1读取命令44.3节点1写入数据至节点364.3.1 节点1 发送数据至节点364.3.2节点3响应节点1写入数据命令7参考文献8附录:9V1.0CANopen工作流分析Date: 2011-5-20Copyright By Tongji Un iversity第一章SDO实例分析、目的:实现节点2的数据传送到节点3、手段:使用SDO进行传送注:SDO不能实现从节点之间数据的直接传送三、分析:图1-1 SDO客户/服务器通讯模式1SDO通讯可以描述成客户/服务器模型,DO的客户/服务器通讯模式如图1-1 所示。两节点中请求进行读写操作的节点为客户端节点,数据被读写的节点为服 务器节点。SDO通讯用于主节点对从节点对象字典的读写访问,以实现对从节 点参数的设置,下载程序,定义PDO的通讯类型和数据格式等1。由此可知要实现将节点2中数据传送给节点3的实现方法为:设置节点1为 主站(Client),数据传送过程由SDO传送的特点分为两段:节点1读取节点2 (server)数据,节点1写入数据到节点3 (server)。从而实现了节点2(server) 的数据传送到节点3 (server)。如图1-2所示。节点1节点2-节点3CANopen工作流分析Date: 2011-5-20图1-2数据传送过程V1.0Copyright By Tongji Un iversity四、过程:41对象字典的编写对象字典的结构和条目对于所有设备是共同的,本例中采用索引定位,子索 引确定对象的思想构建对象字典,方法是使用结构体定义子索引,子索引结构体 的成员变量包含对象的属性(读写权限,数据类型,数据长度等)和指向对象的 指针,定义索引时包含指向子索引的指针和子索引数目,对象字典各项在代码中 采取如图4-1所示的方式来组织构建,这样可以方便地通过索引和子索引一找到 对应的项,对象定义为指针的形式可以通过主站的SDO报文进行读写,实现对对 象字典的灵活配置,同时这种方式实现通讯层与应用层共享数据变量的特点。对 象字典的条目格式如图4-1所示:索引对象(符号名)名称属性类型强制何选图1-3对象字典模块结构图411各节点ID分配表1-1各节点ID分配表节点节点1节点2、节点3主节点NODE-ID0x010x020x030x044.1.2对节点1进行对象字典编写表1-2节点2的SDO参数在对象字典中的定义索引子索引接受/发送SDOSDO参数强制/可选0x120000h入口数目Uni t803hrw01h接受SDOUnit32ro02h发送SDOUnit32ro03h节点号Unit320x01rw节点1的SDO参数在对象字典中的定义如表1-2所示。因为此处节点1充当 客户端角色,故而无需定义其接受SDO与发送SDO的COB-ID。4.1.3对节点2进行对象字典编写表1-3节点2的SDO参数在对象字典中的定义索引子索引接受/发送SDOSDO参数强制/可选0x120000h入口数目Uni t803hrw01h接受SDOUnit32600h+节点号ro02h发送SDOUnit32580h+节点号ro03h节点号Unit320x02rwCANopen工作流分析V1.0Date: 2011-5-20Copyright By Tongji Un iversity节点2的SDO参数在对象字典中的定义如表1-3所示。节点2的发送SDO 的COB-ID为0x582,节点1的接受SDO的COB-ID分别为0x602。除了完成SDO参数在对象字典中的定义外,还需实现节点2所要传输数据 在对象字典中的定义。如表1-4所示。表1-4节点2的数据在对象字典中的定义节点索引子索引名称属性类型强制/可选0x020x60000x01体积(A)rwunit8O0x60010x01质量(B)rwunit32O0x60020x01速度(C)rwunit8O0x60030x01位移(D)rwUnit16O其中体K积(A)定义在对象字典宅的应用数据区索引为0x6000、子索引为0x01的目录中,质量(B)定义在索引为0x6001、子索引为0x01的对象字典目录中, 体积(C)定义在索引为0x6002、子索引为0x01的对象字典目录中,体积(D) 定义在索引为0x6003、子索引为0x01的对象字典目录中。4.1.4对节点3进行对象字典编写同节点2的对象字典编写方法对节点3对象字典进行编写。其中节点3的 SDO参数在对象字典中的定义如表1-5所示;表1-5节点2的SDO参数在对象字典中的定义索引子索引接受/发送SDOSDO参数强制/可选0x120000h入口数目Uni t803hrw01h接受SDOUnit32600h+节点号ro02h发送SDOUnit32580h+节点号ro03h节点号Unit320x03rw节点2的SDO参数在对象字典中的定义如表1-5所示。节点2的发送SDO的 COB-ID为0x582,节点1的接受SDO的COB-ID分别为0x602。节点3数据接受区在对象字典中定义如表1-6所示表1-6节点3的数据在对象字典中的定义节点索引子索引名称属性类型强制/可选0x030x70000x01体积1(A)rwunit8O0x70010x01质量2(B)rwunit32O0x70020x01速度3(C)rwunit8O0x70030x01位移4(D)rwUnit16O其中体积1,质量2,速度3、位移4分别由节点1写入数据。4.2节点1读取节点2数据4.2.1节点1发送请求读取命令至节点2V1.0CANopen工作流分析Date: 2011-5-20Copyright By Tongji Un iversity)9同/徐去学图1-4节点1请求读取命令格式4.2.2节点2响应节点1读取命令若读取成功,则节点2返回:表1-7节点响应读取成功命令格式数据长度为1个子节时580+ServNodelD04F索引子索引d0000数据长度为2个子节时580+ServNodelD04B索引子索引d0di00数据长度为3个子节时580+ServNodelD047索引子索引d0did20数据长度为4个子节时580+ServNodelD043索引子索引d0did2d3注:d0,dl,d2,d3为所要传输的数据。本例中假设节点2返回582 4F 00 60 01 FD 00 00 00,其具体含义如图 1-5所示。V1.0CANopen工作流分析Date: 2011-5-20Copyright By Tongji Un iversity582 4F 00 6001 FD 00 00 00 传输数据 子索引 索引1个字节 读取SDO 节点号 发送SDO图1-5节点2响应读取成功命令格式节点1读取节点2中对象字典中索引为0x6000,子索引为0x01目录中的数 据,即 FD 00 00 00。如果读取失败,则节点2返回读取失败命令。其格式如下图1-6所示:580+ServNodeID080索引子索引111SDO abort code error1114 SDO abort code error 根据错误的不同,代码不同,详见附录索引、子索引所要读取的数据 *在节点1中对象字典中的索引值和子 索引值80响应命令字0标准帧1扩展帧580发送报文命令字ServNodelD 节点 1 的NodelD图1-6节点2响应读取失败命令格式注:其中SDO abort code error根据具体错误返回相应的参数,其具体参 数详见附录一。4.3节点1写入数据至节点34.3.1节点1发送数据至节点3节点1写入数据命令格式如表1-8所示表1-8节点写入数据命令格式节点1请求数据长为1个字节时600+ServNodelD02F索引子索引d0000数据长度为2个字节时600+ServNodelD02B索引子索引d0di00数据长度为3个字节时600+ServNodelD027索引子索引d0did20数据长度为4个字节时600+ServNodelD023索引子索引d0did2d3注:d0,d1,d2,d3为所要传输的数据。本例中假设节点1发送603 2F 00 70 01 FD 00 00 00,其具体含义如图1-7所示。603 2F 00 7001 FD 00 00 00传输数据子索引 索引1个字节 读取SDO 节点号 发送SDO图1-7节点1写入数据实例节点1将数据FD 00 00 00写到节点3对象字典索引为7000h,子索引为Olh 的条目中。4.3.2节点3响应节点1写入数据命令若写入成功,则节点3返回写入成功命令给节点1,其格式如图1-8所示:580+ServNodeID060索引子索引0000000000 00 00 00 数据索引、子索引 所要读取的数据 在节点3中对象字典中的索引值和子索引值60响应写入数据成功命令字*0 标准帧1 扩展帧580-发送DOServNodeId节点ID图1-8节点3响应写入成功命令格式若写入失败,则节点返回写入失败命令,其格式如图1-9所示:图1-9节点3响应写入失败命令格式注:其中SDO abort code error根据具体错误返回相应的参数,其具体参 数详见附录一。参考文献1 王芳.基于汽车总线模型的CANopen协议的实现D. 2008.2 董石峰.混合动力电动汽车车载网络CANopen协议及其应用研究D. 2010.3 叶浩峰.CANopen总线的原理以及实现D. 2005.4 张厚林.CANopen通讯协议设计与实现D. 2009. 闫士珍.CANopen主栈及混合动力电动汽车CANopen行规设计D. 2008. 周跃峰.CANopen协议在冗余系统中的应用研究D. 2009.7 田山.基于CANopen协议的网络主控制器的设计D. 2008.8 宋晓强.CAN bus高层协议CANopen的研究以及在模块化CAN控制器上的实现D. 2004.9 蒋智康.基于CANopen协议的分布式控制系统的研究D. 2008.10 王瑞鹏.基于CANopen+uC/OS_II平台的主从节点通信D. 2007.11 张晓阳.基于CANopen协议的分布式控制系统智能从站设计D. 2010.12 陈涛.汽车仪表的CANopen节点通信的研究与实现D. 2007.13 宋威.CANOPEN现场总线应用层协议主站的开发与实现D. 2008.14 李昱.基于CANopen协议的工程车辆网络系统的设计与实现D. 2008.15 CANopen Application Layer and Communication Profile. CiA Draft Standard 301, Version 4.02,200216 饶运涛等现场总线CAN原理与应用技术(第2版)北京:北京航天航空大学出版社.200717 广州周立功单片机发展有限公司.CANopen协议介绍V1.0CANopen工作流分析Date: 2011-5-20Copyright By Tongji University附录一:附录 SDO abort code error中止代码代码功能描述05 03 00 00触发位没有父替改变05 04 00 00SDO协议超时05 04 00 01非法或未知的Client/Server命令字05 04 00 02无效的块大小(仅Block Transfer模式)05 04 00 03无效的序号(仅Block Transfer模式)05 03 00 04CRC 错误(仅 Block Transfer 模式)05 03 00 05内存溢出06 01 00 00对象不支持访问06 01 00 01试图读只写对象06 01 00 02试图写只读对象06 02 00 00对象字典中对象不存在06 04 00 41对象不能够映射到PDO06 04 00 42映射的对象的数目和长度超出PDO长度06 04 00 43一般性参数不兼容06 04 00 47一般性设备内部不兼容06 06 00 00硬件错误导致对象访问失败06 06 00 10数据类型不匹配,服务参数长度不匹配06 06 00 12数据类型不匹配,服务参数长度太大06 06 00 13数据类型不匹配,服务参数长度太短06 09 00 11子索引不存在06 09 00 30超出参数的值范围(写访问时)06 09 00 31写入参数数值太大06 09 00 32写入参数值太小06 09 00 36最大值小于最小值08 00 00 00一般性错误08 00 00 20数据不能传送或保存到应用08 00 00 21由于本地控制导致数据不能传送或保存到应用08 00 00 22由于当前设备状态导致数据不能传送或保存到应用08 00 00 23对象字典动态产生错误或对象字典不存在V1.0CANopen工作流分析Date: 2011-5-20Copyright By Tongji Un iversity
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!