CANopen 对象字典生成方法
CANOpen对象字典

CANOpen对象字典Index 1000h, Sub-index 0,设备类型描述,unsigned32,只读,必须该32位数据分为高16位和低16位。
低16位为设备协议代码,比如I/O模块为401。
高16位为附加信息,如果是0说明设备不符合标准子协议;如果是FFFFh说明设备是一个复合设备,此时具体的设备信息在67FFh + x*800h(x为0---7)。
不同的设备子协议,高16位所定义的含义不同。
比如DS401 I/O模块中定义高16位中的高8位指明特殊功能,0:没有特殊功能;1:操纵杆;other:保留。
低8位指明I/O功能,从低位到高位依次为DI、DO、AI、AO,为1时表明具有该功能,占用4位,其他位保留。
Index 1001h,Sub-index 0,错误寄存器,unsigned8,只读,必须该8为数据定义如下:Bit M/O Meaning 0 M 一般性错误 1 O 电流2 O 电压3 O 温度4 O 通行错误5 O 设备子协议6 O 保留7 O 制造商特定错误 Index 1002h,Sub-index 0,制造商状态寄存器,unsigned32,RO,可选 Index 1003h,错误集,可选记录设备出现的错误并通过ENCY发送出去的错误。
Sub-index 0 出现错误的总数,写0时清除历史数据,RW,必须Sub-index 1 最近一次出现的错误记录,RO,可选Sub-index 2 最近第二次出现的错误记录,RO,可选可记录的历史数据总数(0-254)可由制造商自己决定。
Index 1005h,Sub-index 0,COB-ID SYNC,unsigned32,,RW 如果设备有基于SYNC的PDO通信则该对象必须具有。
Bit30:1设备产生SYNC,0设备不产生SYNCBit29:1 29位ID,0 11位IDBit29-0:29位ID或11位ID(低11位)Index 1006h,Sub-index 0,SYNC通信间隔时间,unsigned32,RW 如果设备产生SYNC信号则该对象必须具有。
CANopen对象字典生成办法

CANopen对象字典生成办法发布时间:2013-09-25 来源:中国自动化网类型:解决方案1081人浏览关键字:CANopen对象字典生成器导读:本文在阐述CANopen对象字典的概念与结构的基础之上,结合生成对象字典常用方法的不足,引出一种可快速可靠创建与修改对象字典的对象字典生成器ODBuilder,不仅有效减少编辑对象字典的时间,而且最大限度地避免工程师手工编辑对象字典的错误出现,为CANopen设备参数设置提供有力可靠的解决方案。
摘要:本文在阐述CANopen对象字典的概念与结构的基础之上,结合生成对象字典常用方法的不足,引出一种可快速可靠创建与修改对象字典的对象字典生成器ODBuilder,不仅有效减少编辑对象字典的时间,而且最大限度地避免工程师手工编辑对象字典的错误出现,为CANopen设备参数设置提供有力可靠的解决方案。
关键词:CANopen,对象字典,生成器,ODBuilder,EDS文件Abstract:In this paper, on the introduction of the concept and structure of the CANo pen object dictionary,c ombined with the shortage of common methods of generat ing object dictionary, l ead to a object dictionary generator-ODBuilde r,which is quick ly and reliabl y create and modify the CANopen object diction ary. T his tool not only effectively reduce the time of editing object dict ionary, but significantly minimize the occurrence of error of manual ly edit ing the object dictionary, and provid e a robust and reliable solutions for th e parameter Settings of CANopen equipment.Key words:CANopen,Object dictionary,generator,ODBuilder,EDS File引言CANopen协议是一种基于控制器局域网(CAN)的应用层协议,该协议具有实时高效、组网灵活和产品兼容性高等优势,CANopen协议在国内越来越受到青睐,其应用领域也越来越多广泛,不仅应用于过程与生产自动化等领域,还涉及到医疗、铁路、军事、太阳能等等领域。
CANopen培训讲义资料【精选】

1.介绍CAN 只定义物理层和数据链路层,没有规定应用层,本身并不完整,需要一个高层协议来定义CAN 报文中的11/29 位标识符、8 字节数据的使用。
而且,基于CAN 总线的工业自动化应用中,越来越需要一个开放的、标准化的高层协议:这个协议支持各种CAN 厂商设备的互用性、互换性,能够实现在CAN网络中提供标准的、统一的系统通讯模式,提供设备功能描述方式,执行网络管理功能。
2.对象字典(OD)对象字典是一个有序的对象组,每一个对象组采用一个16位的索引和一个8位的子索引来寻址。
the Object Dictionary serves as aninterface between the communicationand the application.对象字典中索引的分类3.NMT状态机3.1.心跳报文(Heartbeat)一个节点可以被配置为心跳报文的生产者,Heartbeat的消费者一般是主站3.2.NMT Boot-upNMT-Slave发布Boot up 报文通知NMT 主节点它已经从initialising状态进入pre-operational 状态3.3.节点保护/寿命保护NMT主节点发送远程帧NMT从节点响应远程帧数据部分包括一个触发位(bit7),触发位必须在每次节点保护应答中交替置“0”或者“1”。
触发位在第一次节点保护请求时置为“0”。
位0 到位6(bits0~6)表示节点状态,可为下表中的数值。
带*号的只有在支持Bootup的节点才提供,状态0不在节点保护应答中出现,因为节点在此状态下不应答节点保护报文。
4.周期性过程数据(PDO)传输方式1、事件驱动当输入值发生变化时,数据立即被发送出去2、远程请求PDO由远程帧触发,大部分设备不支持远程帧,且CIA组织不推荐使用。
3、同步传输RPDO:先接收到数据,但不更新到设备,只有接收到同步帧出发后,才更新,通过这种方式实现同步。
canopen builder逻辑控制编程

canopen builder逻辑控制编程CanOpen Builder 是一种常见的逻辑控制编程软件,专门用于CanOpen 协议设备的编程。
它的主要作用是以图形化编程方式,对CanOpen 设备进行程序设计和调试。
下面,将从以下几个方面详细阐述 CanOpen Builder 的逻辑控制编程过程。
1.安装 CanOpen Builder 软件首先,需要安装 CanOpen Builder 软件,然后打开软件,在菜单中选中“New Project”,并输入项目名称、选中设备类型、通信端口等信息,创建一个新的控制项目。
在软件左边的项目树中,可以看到主页面、配置、对象字典、软件版本等选项。
2.编辑对象字典在 CanOpen 协议中,对象字典是由许多不同类型和参数的对象组成。
首先,需要在 CanOpen Builder 软件中创建对象字典。
在“对象字典”选项中,选中“新建”按钮,然后设置对象的属性,包括它的ID、子 ID、类型和数据等。
在编辑对象字典时,需要确保对象的ID和子 ID 唯一,并正确设置其数据类型和参数。
3.创建模块CanOpen 设备通常包含多个模块,例如 I/O 模块、数据采集模块、控制模块等。
在 CanOpen Builder 中,需要创建一个新的模块来包含这些对象。
选择“新建模块”按钮,设置模块的名称、参数、数据类型等信息。
然后,在模块的属性中,可以添加/删除对象,修改变量值、参数等。
4.编写控制逻辑使用 CanOpen Builder 来编写控制逻辑是非常简单的。
在软件中单击“逻辑控制”选项,并选择“新建程序”按钮。
在编写程序过程中,需要设置输入/输出变量、控制语句、循环等。
控制语句可使用常见的命令,如 if/else, while, for 等等。
然后,将完成的程序上传至 CanOpen 设备中,以实现控制。
5. 调试程序编写完成后,需要对程序进行调试。
CanOpen Builder 软件可以实现快速的程序调试,比如检查程序的变量值、观察实际设备状态以及检查通信错误等。
CANopen对象字典的分析与具体实现

金超 。 夏继 强 。 庆 丰 满
( 京 航 空 航 天 大学 机 械 工 程及 自动 化 学 院 , 京 1 0 9 ) 北 北 0 1 1
摘 要 :C ANo e p n是 基 于 CAN 总线 的 开 放 的 、 准 化 的 应 用 层 协 议 , 象字 典 是 其 核 心 概 念 。本 文 在 对 C 标 对 ANo e p n对 象
atiu e f betso a esrtge r ic se ,a d so a ea dr a / i ce smeh d f betdcin r r ie . tr tso jc tr g ta e isa edsu s d n t rg n e d wrt ac s t o so jc it a yaegv n b o e o o
的接 口。
典 结 构 都 是 相 同的 , 为 通 信 参 数 、 造 商 定 义 对 象 和 设 这 制
备 对 象 提 供 了一 套 标 准 化 的 地 址 空 间 。
1 2 对 象 字 典 中对 象 的 结构 .
对 象 字 典 中 的元 素 , 各 种 通 信 对 象 和 应 用 对 象 , 即 使
Ke r s y wod :CANo e o jc it n r ;S ai a ry p n;be tdci a y ttc ra s o
略 , 出 了对 象 字典 的具 体 实 现方 法 。 给
引 言
CANo e p n协 议 是 在 C AN 总 线 的基 础 上 定 义 的 应 用 层 协 议 , 具有 高 度灵 活 配 置 能 力 的标 准化 嵌 入式 网 络 协 是 议 。 因其 协 议 精 练 、 明 、 于理 解 , 具 有 实 时性 和 可 靠 透 便 又 性 高 、 据 传 输 速 率 高 、 网 成 本 低 等优 点 , 多个 领 域 中 数 组 在
canopen 字典 使用方法

canopen 字典使用方法CanOpen 字典的使用方法引言:CanOpen 是一种用于工业自动化领域的通信协议,它基于 CAN 总线,并使用字典来组织和描述设备的功能和参数。
本文将介绍CanOpen 字典的使用方法,帮助读者更好地理解和应用 CanOpen 协议。
一、CanOpen 字典的概述CanOpen 字典是CanOpen 协议中的重要组成部分,它定义了设备的功能和参数,使得CanOpen 设备之间可以进行有效的通信。
字典由一系列的对象字典和子字典组成,每个对象字典包含一个或多个对象,每个对象有唯一的标识符和属性,用于描述设备的功能和参数。
二、CanOpen 字典的结构CanOpen 字典采用树状结构组织,由对象字典和子字典构成。
对象字典是字典的最基本单位,它包含了设备的功能和参数信息。
子字典是对象字典的集合,用于组织和分类对象字典。
通过对象字典的索引和子字典的标识符,可以方便地定位和访问设备的功能和参数。
三、CanOpen 字典的使用方法1. 查找对象字典要查找对象字典,首先需要知道设备的字典索引和子字典标识符。
然后,按照索引和标识符,可以在CanOpen 字典中找到相应的对象字典。
可以使用CanOpen 设备的配置工具或者CanOpen 字典编辑器来查找对象字典。
2. 读取对象字典读取对象字典的方法取决于CanOpen 设备的通信接口和协议。
通常,可以通过发送特定的CanOpen 消息来读取对象字典。
消息中包含了读取对象的索引和标识符,设备接收到消息后,会返回相应的对象值。
3. 写入对象字典写入对象字典和读取对象字典类似,也需要发送特定的CanOpen 消息。
消息中包含了写入对象的索引、标识符和数值。
设备接收到消息后,会将数值写入相应的对象字典中。
4. 配置对象字典CanOpen 字典中的对象可以通过配置来实现特定的功能和参数设置。
配置对象字典通常需要发送一系列的CanOpen 消息,包含了配置信息和指令。
canopen中的对象字典通俗讲解

canopen中的对象字典通俗讲解
CanOpen是一种用于工业控制领域中的通信协议,其中的对象字典是CanOpen的核心概念之一。
对象字典是CanOpen中用于描述设备的数据结构,通常包括设备的参数、状态、控制命令等信息。
在CanOpen通讯中,各个设备之间通过发送和接收报文来实现通信。
发送方将需要发送的数据打包成报文,然后通过总线发送给接收方。
接收方在接收到报文后,将其解析并提取出所需的信息。
对象字典就是用来帮助接收方解析报文的。
发送方在发送报文时,需要将报文中涉及到的对象字典的索引和子索引打包成报文中的数
据域。
接收方在接收到报文后,就可以通过报文中的索引和子索引在对象字典中查找所需的数据。
对象字典中的每个对象都由一个唯一的索引和一个子索引组成。
索引和子索引的作用就是用来定位对象。
当接收到报文时,接收方通过报文中的索引和子索引来查找对象字典中的对应对象。
对象字典中的每个对象都有其对应的数据类型和数据长度,接收方在查找到对应对象后,就可以根据对象的数据类型和数据长度来解析出其具体的值。
除了用来描述设备参数和状态等信息外,对象字典还可以用来描述控制命令。
发送方在发送控制命令时,将命令代码打包成报文中的数据域,接收方在接收到报文后,就可以根据命令代码来执行相应的控制操作。
总之,对象字典是CanOpen通信中的核心概念之一,是用来描述设备的数据结构,包括参数、状态、控制命令等信息。
它能够帮助发
送方将所需发送的数据打包成报文,并帮助接收方解析和提取出所需的信息,从而实现设备之间的通信。
python canopen例子

python canopen例子标题:Python Canopen示例1. Canopen简介Canopen是一种用于工业自动化领域的通信协议,它基于CAN总线技术,用于在不同设备之间进行数据交换和控制。
Python Canopen 是一个用于处理Canopen协议的Python库,它提供了一套简单易用的API,使开发人员能够轻松地与Canopen设备进行通信。
2. 安装Python Canopen库要使用Python Canopen库,首先需要安装它。
可以通过以下命令使用pip进行安装:```pip install canopen```3. 创建Canopen网络在Python中,可以使用Canopen库来创建一个Canopen网络。
首先,我们需要导入必要的模块并创建一个Canopen网络对象:```pythonimport canopennetwork = work()```4. 连接到Canopen设备要连接到Canopen设备,我们需要指定设备的接口和波特率。
可以使用`connect()`方法来连接到设备:```pythonnetwork.connect(channel='can0', bustype='socketcan')```这里的`channel`参数指定了设备的接口,而`bustype`参数指定了使用的通信类型。
5. 扫描Canopen网络在连接到Canopen设备后,我们可以使用`scan()`方法来扫描整个网络,以获取所有已连接设备的节点ID:```pythonnodes = network.scan()```这将返回一个包含所有节点ID的列表。
6. 获取Canopen设备对象要与特定的Canopen设备进行通信,我们需要获取它的设备对象。
可以使用`get_node()`方法来获取设备对象:```pythonnode = network.get_node(1)```这里的参数1是设备的节点ID。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CANopen对象字典生成方法广州虹科电子科技有限公司龚龙峰陈秋苑support@摘要:本文在阐述CANopen对象字典的概念与结构的基础之上,结合生成对象字典常用方法的不足,引出一种可快速可靠创建与修改对象字典的对象字典生成器ODBuilder,不仅有效减少编辑对象字典的时间,而且最大限度地避免工程师手工编辑对象字典的错误出现,为CANopen设备参数设置提供有力可靠的解决方案。
关键词:CANopen,对象字典,生成器,ODBuilder,EDS文件Abstract:In this paper, on the introduction of the concept and structure of the CANopen object dictionary,combined with the shortage of common methods of generating object dictionary, lead to a object dictionary generator-ODBuilder, which is quickly and reliably create and modify the CANopen object dictionary. This tool not only effectively reduce the time of editing object dictionary, but significantly minimize the occurrence of error of manually editing the object dictionary, and provide a robust and reliable solutions for the parameter Settings of CANopen equipment.Key words:CANopen,Object dictionary,generator,ODBuilder,EDS File引言CANopen协议是一种基于控制器局域网(CAN)的应用层协议,该协议具有实时高效、组网灵活和产品兼容性高等优势,CANopen协议在国内越来越受到青睐,其应用领域也越来越多广泛,不仅应用于过程与生产自动化等领域,还涉及到医疗、铁路、军事、太阳能等等领域。
目前CANopen协议由CiA(CAN in Automation)组织负责管理与推广。
CANopen协议提供标准的基础系统架构,在具体的工业应用中,通常将标准化的CANopen协议转化成系统级的CANopen源代码和CANopen芯片。
为推行CANopen 协议标准工业化,德国SYS TEC系统开发商以将近二十年的CANopen源代码开发和使用经验,其工业级CANopen源代码SO-877-VP/SO-1063-VP将CANopen协议转变为成熟应用在不同行业的CANopen控制与通信系统。
特别在是自主开发CANopen系统项目中,源代码的方式提供了很大的自由度,可随项目的复杂程度增减CANopen工程的不同功能。
为了配合CANopen源代码的系统配置,CANopen源代码SO-877-VP/SO-1063-VP中包含的对象字典生成器ODBuilder生成设备对象字典,快速可靠地完成CANopen系统配置。
概述对象字典是CANopen通信接口与应用程序之间接口,是CANopen协议的重要组成部分。
在CANopen网络中,每个标准的CANopen设备都有一个对象字典,用来描述CANopen设备的全部功能。
一般在CANopen配置或者开发工程中,除了一款对象字典的创建与管理是一个不可缺少的步骤,同时也是保证CANopen正常通讯的重要保障。
如果CANopen系统工程相对比较简单,人工编写对象字典是可行的。
但是如果面对系统较复杂、通讯量庞大的CANopen工程,单纯用人工编写对象字典是很低效的,同时也很容易出现编写错误,可能给CANopen工程带来潜在的危险。
为了提高对象字典的编辑效率,同时最大限度地避免对象字典的编辑错误,本文描述CANopen源代码SO-877-VP/SO-1063-VP中包含的对象字典生成器ODBuilder为CANopen工程的对象字典生成与修改提供一个很好的解决方案. 借助硬件USB-CANmodul可以完成下载。
一、对象字典结构与EDS文件描述1.1对象字典结构对象字典是一个有序的对象组,每个对象采用一个16 位的索引值来寻址,为了允许访问数据结构中的单个元素,同时定义了一个8 位的子索引。
对象字典中索引值0000- 0x0FFF 是数据类型的定义,具体类型有固定的分区。
而一个CANopen节点的对象字典相关的常用范围在0x1000 到0x9FFF 之间。
其中,索引1000h-1FFFh描述的是通信对象(COB),如设备类型,错误寄存器,支持的PDO 数量等等,该参数定义了CANopen 接口的通信功能。
索引2000h-5FFFh是预留给制造商定义的特定对象。
索引000h-9FFFh 是用于标准化设备子协议的对象描述,例如I/O模块子协议、驱动与运动控制设备子协议、传感器与测量设备子协议、医疗器材子协议、电梯子协议等等。
CANopen 对象字典通用结构如表1所示。
索引对象0000h 未用(Not used)0001 - 001F 静态数据类型(标准数据类型,如Boolean,Integer16)0020 - 003F 复杂数据类型(预定义由简单类型组合成的结构如PDOCommPar,SDOParameter)0040 - 005F 制造商规定的复杂数据类型0060 - 007F 设备子协议规定的静态数据类型0080 - 009F 设备子协议规定的复杂数据类型00A0 - 0FFF 保留(Reserved)1000 - 1FFF 通讯子协议区域(如设备类型,错误寄存器,支持的PDO 数量) 2000 - 5FFF 制造商特定子协议区域6000 - 9FFF 标准的设备子协议区域A000 - FFFF 保留(Reserved)表1 CANopen 对象字典通用结构1.2 EDS文件描述CANopen 网络中每个节点都有一个对象字典,对象字典包含了描述这个设备和它的网络行为的所有参数。
而在描述CANopen设备时,使用了一种标准化的ASCII格式的描述文件,即:电子数据表(EDS)。
电子数据表不仅记录了对象字典的所有参数,同时也对设备及其配置进行标准化的描述,所以EDS电子数据表是对象字典的载体与保存方式。
二、对象字典的实现通常来说,在CANopen工程中将所有的CANopen通信描述条目放在一个表格中,然后用索引来访问所有的对象。
这不失是一个解决方法,不过这种方法只适用于系统简单、通信参数少、非CANopen通信标准化的产品中,而且生成对象字典的修改与管理工作都较为繁琐。
由此本文介绍一种CANopen源代码SO-877-VP/SO-1063-VP中包含的对象字典生成器ODBuilder,动态输入掩码显示各个参考的对象类型,编辑过程不断检查其正确性并修正对象字典。
其通信描述完全符合CANopen标准规范CiA DS301以及设备描述符合EDS标准文件CiA DSP306规范,具有CANopen标准化设备的通用性。
三、对象字典生成器ODBuilder3.1对象字典生成原理对象字典生成器ODBuilder生成对象字典的原理是根据CANopen通信协议的访问对象字典的机制,通过固定的索引、子索引来创建每一个CANopen对象字典条目。
访问对象字典示意图如图3.1所示。
图3.1 CANopen访问对象字典对象字典条目表格提供一个指向存储器中某个变量的指针,而应用程序可直接通过变量名称访问所需的条目。
因此对象字典条目列表就构成了索引/子索引与对应变量名称之间的接口。
对象字典列表分为几个不同的块,目的为了方便对象的查找。
用户可通过索引查找相应的列表(如Communication Profile Area),再通过偏移量访问该列表中所需的单元。
因此在生成对象字典时为了描述索引里的单元,就先创建该单元的访问类型、数据类型和指针变量等的结构体。
然后利用创建好的结构体与应用变量建立相关联的索引条目。
此外,还会编辑一个包含指向子索引字段的指针列表,方便查找相关条目。
3.2对象字典生成过程CANopen源代码SO-877-VP/SO-1063-VP中包含的对象字典生成器ODBuilder,创建一个简明树形结构的对象字典工程,方便修改与访问对象字典条目;在编辑对象字典条目过程中,无需手工输入不同条目的数据类型,直接通过下拉选项选择对应类型;在编辑过程中,ODBuilder不断检查对象字典的输入条目的正确性并提供修正参考,最后完成后可生成标准EDS文件。
ODBuilder对象字典生成过程原理框图如图3.2所示。
图3.2 对象字典生成过程原理框图3.3 创建简明树型条目根据对象字典条目的分布特性,ODBuilder将创建的对象字典以简明的树型结构,索引值由小到大排列。
用户需要访问或者修改某一条索引,可直接点击该条目就可以进行访问或修改。
如图3.3所示。
图3.3 树型结构索引结构3.4 编辑对象字典索引属性1.根据CANopen协议CiA DSP306规范,输入不同的索引值,可灵活设定其“可选”、“制造商”、“强制”属性。
以编辑0x1000h索引为例,如图3.3.1所示,通常用于Device Type,如果作为从站的产品,该索引通常为“强制”属性,ODBuilder将其自动设置为“强制”属性。
图3.4.1编辑对象字典索引属性2.根据不同的CANopen设备的存储需要,可选择索引是否存储在非易失存储器以及ROM或者RAM中。
3.索引的对象参数、数据类型、访问类型等直接通过下拉条选择,如图3.3.2所示,另外可选该索引条目是否有PDO映射功能。
图3.4.2 下拉条选项输入4.根据对象参数属性,如果选择为变量,默认值、最小值和最大值为可输入状态。
5.子索引自动继承索引属性,无需要重新设定其存储属性、PDO映射参数。
3.5检查输入正确性在CANopen系统工程较复杂的情况下,ODBuilder随时提示对象字典的输入,确保对象字典条目的每一个属性参数不遗漏,检查对象字典条目的输入正确性。
例如,如果编辑对象字典时遗漏索引标示符(Designator)的输入,则会提示用户输入对应值。
同样,遗漏索引值、对象类型、数据类型、访问类型任何一项都有相应的输入提示。
如图3.5所示。
图3.4 检查输入提示3.6导出EDS文件当完成对象字典所有条目的编辑,ODBuilder的检查功能已经很大程度的减少对象字典的输入错误,同时导出符合CiA DSP306规范的EDS文件,该文件不仅包含了CANopen 设备的对象字典所有的内容,同时也要求添加文件描述信息,设备信息等信息。