CANOpen协议族入门学习笔记
CANCANopen学习笔记
CANCANopen学习笔记PART1——CAN1 CAN 基础知识CAN 总线是⼀种通⽤的串⾏通信协议,包含OSI ⽹络模型中的物理层和数据链路层,全部通过硬件来实现。
CAN 总线不分主从,每个节点只要需要,都可作为主站,向⽹络上其他节点发送信息。
物理层主要是通过CAN 收发器来实现。
1.1 CAN 收发器CAN 收发器安装在CAN 控制器内部,负责逻辑信号和电信号的转换,也即信息的收发。
将逻辑信号转为电信号,并将其送⼊传输线;或者,将传输线的电信号转为逻辑信号。
传输线跟电线⼀样,分⼀⾼⼀低,即CANH 和CANL 。
TIPS :电信号,指随着时间⽽变化的电压或电流CAN 收发器如图1.1所⽰。
由⼀个电路进⾏控制,也意味着控制单元的某个时间段只能进⾏⼀个操作,收或者发。
图1.1 收发器原理图开关闭合输出低电平,⽤逻辑“0”来表⽰,即显性电平;开关断开输出⾼电平,⽤逻辑“1”来表⽰,即隐性电平。
当总线上连接有多个节点时,只要其中1个节点输出低电平,则总线激活,总线电平为低电平;总线上所有节点都输出⾼电平时,总线电平才为⾼电平,此时总线未激活。
原理如图1.2所⽰。
图1.2 多节点收发器原理图1.2 CAN 总线终端电阻CAN ⽹络中,⽹络的源端(起始节点)和末端需各安装⼀个终端电阻。
注:上图所⽰电阻并⾮终端电阻。
有两种接法,⼀般采⽤左图接法,如图1.3所⽰,左边⾼速,右边低速。
主要作⽤是:●提⾼总线抗⼲扰能⼒●提⾼信号质量。
通过终端电阻来消除在通信电缆中的信号反射,在通信过程中,有两种原因导致信号反射:阻抗不连续和阻抗不匹配。
阻抗不连续,信号在传输线末端突然遇到电缆阻抗很⼩甚⾄没有,信号在这个地⽅就会引起反射。
数据收发器与传输电缆之间的阻抗不匹配,这种原因引起的反射,主要表现在通讯线路处在空闲⽅式时,整个⽹络数据混乱,为了提⾼⽹络节点的拓扑能⼒,CAN 总线两端需要接有120Ω的抑制反射的终端电阻。
CANopen协议浅析(一)
CANopen通信对象 通信对象
Type 0:非周期同步,只有当节点 只有当节点PDO数据发生改变后,节点 收到SYNC时,才会更新并传送一笔 才会更新并传送一笔PDO数据信息. 在异步模式中,若从站中的Event timer 为0ms,则只有当从站的数 Event 据发生变化时,才会向主站回传数据 才会向主站回传数据;若为非0值,则每隔一个event timer时间,即向主站回传一笔数据 即向主站回传一笔数据.
Consumer(s
Remote Frame Remotely requested Producer
Consumer(s
Sync Synchronous transmission (cyclic,acyclic) Producer
Consumer(s
CANopen通信对象 通信对象
PDO 的传输类型:
CANopen协议是由CiA( (CAN-in-Automation)定义并 维护的协议之一,它是在CAL CAL(CAN Application Layer)协 议基础上开发的,使用了CAL CAL通信和服务协议子集.
CANopen在发布后不久就获得了广泛的承认 在发布后不久就获得了广泛的承认,尤其在欧 洲, CANopen被认为是在基于 被认为是在基于CAN的工业系统中领导地位 的标准.目前被广泛地用于智能楼宇 目前被广泛地用于智能楼宇,嵌入式系统,车载设备, 医疗装置等应用领域中.
CANopen通信对象 通信对象
CANopen 网络中信息传输采用的三种通信模式 网络中信息传输采用的三种通信模式:
Producer/Consumer Model Client/Server Model Master/Slave Model
CANOpen学习指南
CANOpen学习指南对于初学者,相对于其他总线的资料来说,在国内CANOpen的资料并不多。
而且并不是所有资料都适合初学者看的。
这里给出一些建议,对CANOpen感兴趣的,可以参考一下学习的顺序。
前提:需要对CAN总线有所了解,可以看CAN2.0总线的资料。
当然,对计算机系统、单片机以及编程也需要有一定的基础。
第一步:CANOpen Standard 301,这个是一切的基础,最然并不一定马上就要对所有的细节了如指掌,但至少对CANOpen总线以及各种传输控制方式以及其作用需要有一定的了解(比如:NMT、SDO、PDO、HeartBeat等等)。
这里不推荐看ZLG的文档,ZLG的文档只是从301文档中,抽出的一些章节中的内容,我相信如果直接看ZLG的文档的话,大部分人是看不懂的。
第二步:最后有一个可以玩的硬件(最好是已经移植好CANOpen协议栈的),否则所有的协议只是资料中的数据格式以及操作方式而已。
这样就需要有一个开发板和CAN逻辑分析仪工具。
还好我在3年前就已经自己做过一块低成本的CAN的开发板(基于AT90CAN32),并且在这个开发板上实现了基于串口的CAN适配器(可以用于发送各种CAN数据),同时,也在这块板上实现了CANOpen。
目前taobao上也有很多种类的CAN开发板和适配器。
在这个硬件上,测试各种CANOpen报文,包括NMT、SDO、PDO,可以远程设置HeartBeat 频率,看看收到的HeartBeat报文等。
这步完成后,对于CANOpen就有了一定的认识了。
对于各种报文,这里要推荐一下ZLG的文档,最后部分对CANOpen的各种报文的格式做了一个总结,查看起来非常方便。
第三步:找个CANOpen的协议栈源码看看,从代码层次来理解CANOpen的各种操作的步骤以及实现方式。
当然,目前协议栈也有不少了,有些是免费的,有些是收费的(估计价格还都不便宜)。
第四步:301文档只是描述了CANOpen有那些工具可以使用,但没有任何关于一个模块如何利用这些功能的信息。
第6章 通信功能与总线接口附件-CANopen协议简介与应用开发讲解
第6章 通信功能与总线接口附件
• Pre-Operational:在此状态中,从节点SDO被允许,主节点 通过SDO完成从节点通信参数的设置,如从节点的PDO参数 映射设置。主节点发送start_remote_node命令使从节点进 入Operational状态。
• Operational:在此状态中,从节点完成自己的正常工作,采 集数据,控制设备,与主节点通信,所有报文对象类型都被 允许。
第6章 通信功能与总线接口附件
• 传送机制: – 加速传送:最多传送4Byte数据 – 分段传送:传送数据大于4Byte
• 报文基本结构:
第6章 通信功能与总线接口附件
• SDO 命令字包含如下信息: – 下载/上传(Download / Upload) – 请求/应答(Request /Response) – 分段/加速传送(Segmented / Expedited ) – CAN帧数据字节长度 – 用于后续每个分段的交替清零和置位的触发位 SDO中实现了5个请求/应答协议:启动域下载 ,域分 段下载,启动域上传 ,域分段上传和域传送中止。
……
第6章 通信功能与总线接口附件
• 存取函数
由getODentry()和setODentry()函数来实现,思路如下: – 通过扫描函数定位到指定对象的入口; – 检查对应对象的访问权限,若越权返回错误码; – 若权限正确,允许访问,根据调用的函数,将指定内容copy进指定对
象,或将指定对象里的内容copy到目标地址(注意检查是否越界); – 返回。
第6章 通信功能与总线接口附件
1.1 主节点主要的功能 控制从节点运行状态; 通过SDO对对象字典的参数进行读取和修改; 监视从节点的运行状况和是否发生错误(即进行节点保护); 由从节点中获得相应的信息和运行状态;启动和终止 SDO通讯; 发送SYNC报文; 提供分配特定标识符等网络管理的服务。
CAN CANopen学习笔记
PART1——CAN1 CAN 基础知识CAN 总线是一种通用的串行通信协议,包含OSI 网络模型中的物理层和数据链路层,全部通过硬件来实现。
CAN 总线不分主从,每个节点只要需要,都可作为主站,向网络上其他节点发送信息。
物理层主要是通过CAN 收发器来实现。
1.1 CAN 收发器CAN 收发器安装在CAN 控制器内部,负责逻辑信号和电信号的转换,也即信息的收发。
将逻辑信号转为电信号,并将其送入传输线;或者,将传输线的电信号转为逻辑信号。
传输线跟电线一样,分一高一低,即CANH 和CANL 。
TIPS :电信号,指随着时间而变化的电压或电流CAN 收发器如图1.1所示。
由一个电路进行控制,也意味着控制单元的某个时间段只能进行一个操作,收或者发。
图1.1 收发器原理图开关闭合输出低电平,用逻辑“0”来表示,即显性电平; 开关断开输出高电平,用逻辑“1”来表示,即隐性电平。
当总线上连接有多个节点时,只要其中1个节点输出低电平,则总线激活,总线电平为低电平;总线上所有节点都输出高电平时,总线电平才为高电平,此时总线未激活。
原理如图1.2所示。
图1.2 多节点收发器原理图1.2 CAN 总线终端电阻CAN 网络中,网络的源端(起始节点)和末端需各安装一个终端电阻。
注:上图所示电阻并非终端电阻。
有两种接法,一般采用左图接法,如图1.3所示,左边高速,右边低速。
主要作用是:● 提高总线抗干扰能力 ● 提高信号质量。
通过终端电阻来消除在通信电缆中的信号反射,在通信过程中,有两种原因导致信号反射:阻抗不连续和阻抗不匹配。
阻抗不连续,信号在传输线末端突然遇到电缆阻抗很小甚至没有,信号在这个地方就会引起反射。
数据收发器与传输电缆之间的阻抗不匹配,这种原因引起的反射,主要表现在通讯线路处在空闲方式时,整个网络数据混乱,为了提高网络节点的拓扑能力,CAN 总线两端需要接有120Ω的抑制反射的终端电阻。
图1.3 两种终端电阻接线方式1.3 CAN 报文CAN 总线的报文有5种类型,数据帧、远程帧、错误帧、过载帧和帧间隔。
CANOpen轻松入门之过程数据对象(PDO)和服务数据对象(SDO)
CANOpen轻松入门之过程数据对象(PDO)和服务数据对象(SDO)摘要:CANopen 是一种架构在控制局域网路(Controller Area Network, CAN)上的高层通讯协议,对其协议的学习很多人都觉得有难度,看来看去都觉得是云里来雾里去的,本文将让CANOpne 协议不再那么神秘,带你跨过CANOpen 学习道路的第一道门槛。
应用CANopen 时,需要传递的配置信息和应用信息都放在过程数据对象PDO(Process data object)和服务数据对象SDO (Service data object)里面。
这些对象就和市场上卖水果的箩筐,大小是一样的,只是装的东西(应用数据)不一样,如PDO 和SDO 的通讯区别在于,PDO 属于过程数据,即单向传输,无需接收节点回应CAN 报文来确认,从通讯术语上来说是属于“生产消费”模型。
如而SDO 属于服务数据,有指定被接收节点的地址(Node-ID),并且需要指定的接收节点回应CAN 报文来确认已经接收,如果超时没有确认,则发送节点将会重新发送原报文。
这种通讯方式属于常见的“服务器客户端”的通信模型,即我们通常所说的轮询式。
如对于PDO 和SDO 的报文ID 分配,为了减少网络的组态工作量,CANopen 预定义了强制性的缺省标识符(CAN-ID)分配表,该分配表是基于11 位CAN-ID 的标准帧格式。
将其划分为4 位的功能码(Function-ID)和7 位的节点号(Node-ID)。
如在CANopen 里也通常把CAN-ID称为COB-ID(通信对象编号)。
所以我们可以分清楚两个易于混淆的名称:COB-ID:Communication Object Identifier,即CANopen 中对某种通讯对象的报文帧ID,即CAN 报文的11 位ID。
代表了一种通讯含义。
Node-ID:节点ID 号,即CANopen 网络中的节点地址,CANopen 规定了逻辑上最大128 个节点,所以Node-ID 最大为128(7 位)。
(笔记)CanOpen协议【CanFestival】移植方法支持VC、QT、STM32
(笔记)CanOpen协议【CanFestival】移植⽅法⽀持VC、QT、STM32转⾃/icview-878522-1-1.html前段时间学习了CanOpen协议,到⽹上下载的CanFestival3-10源码,移植到VC、QT、STM32等平台,由于⽹上的资源较少,⾛了不少弯路,移植好使⽤过程中才逐渐暴露出各种问题,⽐如OD字符串传输、⼼跳时间不准确等等,现在已经解决了遇到的所有问题,移植出来的⼯程能够完好⽀持CanOpen协议,花了点时间,整理出⼀个简单易⽤的移植⽅法说明,也写了⼀些⽐较实⽤的调试⼯具,本来还想整理SDO、PDO、EDS⽂件装载等相关知识的,可惜⽐较忙,等什么时候有空了再整理其他的吧!先把移植的贴上来,希望能帮到⼤家。
如果是第⼀次,整个移植过程还⽐较⿇烦,需要有耐⼼,按照下⾯说的⼀步步来肯定可以的,移植成功⼀次后,再移植到其他平台就⾮常轻松了。
到⽹上下载CanFestival源码CanFestival-3-1041153c5fd2,解压出来,并将⽂件夹名字改为CanFestival-3-10,我们移植需要⽤到的源⽂件在CanFestival-3-10\src⽬录下,头⽂件在CanFestival-3-10\include⽬录下。
CanFestival-3-10\src下的⽂件如下图所⽰:CanFestival-3-10\include下的⽂件如下图所⽰:接下来开始移植:步骤⼀:在新建好的⼯程⽬录下新建⽂件夹CanFestival,再在CanFestival下新建⽂件夹driver、inc和src,再在inc⽂件夹下⾯新建stm32⽂件夹(我这⾥主要以移植到stm32为例说明,如果是移植到VC或其他平台下,这⾥也可以命名为其他名字,如vc)。
步骤⼆:将CanFestival-3-10\src⽬录下的dcf.c、emcy.c、lifegrd.c、lss.c、nmtMaster.c、nmtSlave.c、objacces.c、pdo.c、sdo.c、states.c、sync.c、timer.c共12个⽂件拷贝到CanFestival\src⽬录下;将CanFestival-3-10\include⽬录下的所有.h⽂件共19个⽂件全部拷贝到CanFestival\inc⽬录下,再把CanFestival-3-10\examples\AVR\Slave⽬录下的ObjDict.h⽂件拷贝过来,⼀共20个;将CanFestival-3-10\include\AVR⽬录下的applicfg.h、canfestival.h、config.h、timerscfg.h共4个头⽂件拷贝到canfestival\inc\stm32⽬录下;将CanFestival-3-10\examples\TestMasterSlave⽬录下的TestSlave.c、TestSlave.h、TestMaster.h、TestMaster.c拷贝到canfestival\driver⽬录下,并在该⽬录下新建stm32_canfestival.c ⽂件。
canopen协议的读后感
今天阅读了CiA组织发布的CANopen协议规范摘要《CANopen High-level prot ocol for CAN-bus》,对CANopen协议规范有了一个总体上的了解和把握。
在此,有一些想法需要记录一下。
如果我是控制网络的协议制定者,那么我会考虑什么内容呢?通常我会考虑如下几个方面的内容:1、数据传输的实时性。
控制网络通常是一个实时网络,需要数据传输的实时性,因此,在协议制定过程中,需要考虑传输的实时性。
2、数据传输的可靠性。
控制网络在数据交换的过程中,需要保证数据传输的可靠性,如果发生数据传输故障,需要保证网络的正常工作并且能够及时纠正传输故障。
3、网络的智能性。
控制网络中的局部节点存在故障时,网络中的主控节点通过一定的机制能够及时发现故障节点,并对其进行处理。
另外,网络节点需要能够动态识别、配置。
4、协议实现的简便性。
网络协议不能过于复杂,很多控制网络节点资源有限,通常采用一些微控制器实现节点功能,因此,协议实现不能过于庞大和复杂。
5、协议的通用性。
控制网络中的节点类型多样化,设计的协议需要兼容多种控制节点类型,使协议本身具有通用性。
CANopen对上述几方面的考虑都进行了处理,达到了比较满意的效果:1,CANopen协议基于CAN-bus总线,CANbus总线在数据传输上采用了优先级仲裁的方式,优先级高的报文会吞没优先级低的报文,优先级低的报文会主动让出总线,这种方式可以保证高优先级报文的实时性,非常适合控制网络的应用。
另一方面,为了保证数据传输的实时性,在考虑了控制网络数据交互特点的基础上,CANopen协议规范提出了PDO和SDO的操作对象,PDO对象最大数据传输量为8个字节,网络负载很轻,能够使得节点之间的数据高效交互。
当需要大批量数据交互时,可以采用SDO对象,网络的数据负载会加重。
为了最求控制实时性,控制网络一次数据交互量不能太长,CANopen协议充分利用了该特征,达到了数据传输实时性的目的。
CANopen笔记3--DS402运动控制子协议
CANopen笔记3--DS402运动控制⼦协议 DS301就是⼀个通讯协议栈,DS402是建⽴在DS301基础之上的伺服类控制协议。
协议中规定好每个对象字典值的作⽤,⽐如0x6040,是控制字。
DS402把⼀个伺服控制系统应该具有的功能都定义好了,⼚家和使⽤者按照协议定义即可开发和使⽤符合标准的设备。
NMT NMT是⽹络管理报⽂,⽤于实现⼀些管理操作,⽐如节点重启、进⼊运⾏状态等,⽹络管理状态转换图如下: 初始化:设备处于启动状态,不能进⾏通信 预运⾏:设备启动完毕,还未进⼊运⾏模式。
设备仅回复SDO、NMT消息 运⾏:正常⼯作,可回复SDO、NMT、PDO 停⽌:仅能发送NMT(包括⼼跳消息) NMT报⽂格式很简单,COB-ID固定为0x000,数据为:NMT命令 + 从设备节点ID(0x00表⽰⼴播)Boot-up Messages 设备开机启动完成初始化进⼊预运⾏状态时,会产⽣boot-up事件,发送⼀条boot-up消息。
boot-up消息的COB-ID为:0x700 + Node ID。
假设节点ID为1,则该节点开机后会发送boot-up message(0x00 data, always 0)设备控制 根据DS402协议(Chapter 6:Device Control Objects),设备的状态由下图描述。
The device states and possible control sequence of the drive are described by the state machine, as depicted in the following figure: 如上图所⽰,状态机可以分成三部分:“ Power Disabled” (主电关闭)、“ Power Enabled”(主电打开)和“Fault”。
所有状态在发⽣报警后均进⼊“Fault”。
在上电后,驱动器完成初始化,然后进⼊SWITCH_ON_DISABLED状态。
值得收藏:德国工程师的CANopen备忘录
值得收藏:德国工程师的CANopen备忘录摘要CiA国际用户与制造商联合组织聚集多年经验及专业知识,将CANopen协议的核心重点集于一张图表,帮助工程师在写协议和现场调试时,可以一目了然,抓住重点。
广州致远电子股份有限公司作为CIA会员,获CiA唯一授权,出版中文版CANopen图表。
德国的CAN-bus总线工程师为了方便学习和记忆CANopen协议,随身携带一本“CANopen 备忘录”,在研发和现场测试时快速查找。
春节期间,广州致远电子股份有限公司将其翻译成中文,推动国内CANopen发展。
值得收藏!1.1 Object dictionary(OD)对象字典1.1.1 Overview概述1.1.2 Communication profile area通讯对象子协议区1.1.3 General communication objects通用通讯对象1.2 Pre-defined CAN-IDs预定义CAN标识符1.3 Network management(NMT)网络管理1.4 Service data object(SDO)服务数据对象1.4.1 communication principle(通讯原则)1.4.2 Expedited SDO protocol(快速SDO协议)1.4.3 Normal SDO protocol(普通SDO协议)1. 下载协议download protocol2. 上传协议upload protocol1.5 Process data object(PDO)过程数据对象RPDO通讯参数1400h to 15FF h映射参数1600h to 17FF h数据存放为2000h之后厂商自定义TPDO通讯参数1800h to 19FF h映射参数1A00h to 1BFF h数据存放为2000h之后厂商自定义CAN transmission( CAN发送报文)TPDO1(CAN-ID see 1800h 01h) Data field:数据域1.6 Special protocols(特殊协议)1.6.1 同步协议Sync protocol1.6.2 Time-stamp protocol(时间戳协议)1.6.3 Emergency protocol(紧急报文协议)1.6.4 Emergency error codes(紧急报文错误代码)。
现场总线CANopen学习笔记一
现场总线CANopen学习笔记一通过对《现场总线CANopen设计与应用》的学习,总结了一些学习CANopen 的知识要点,希望能够对CANopen初学者有所帮助。
首先让我介绍一下这本书,原名为德语《CANopen----das standardisierte , eingebttete Netzwerk》,中文是《现场总线CANopen设计与应用》。
作者,Holger Zeltwanger ,是CAN总线技术专家,兼任ISO国际标准化组织CAN标准工作组主席,组织领导发布了ISO11898系列标准,是CAN工业的奠基人,1992年创立了CiA组织(CAN in Automation)并担任主席至现在。
本书的内容简介:介绍作为工业现场总线协议重要成员之一的CANopen协议和基本原理、规则及相关背景,重点介绍CANopen协议的工作机制,力求向读者展现CANopen协议的概貌,使读者能够理解为什么CANopen需要制定如此的工作流程。
全书分为4个部分:第一部分由第1~3章组成,主要介绍通信的基本通信以及CANopen 协议物理层和链路层的基本特性(CAN总线)。
第二部分由第4~5章组成,主要介绍CANopen的基本核心工作机制和CANopen主站设备的特点。
第三部分由第6~8章组成,主要介绍CANopen 应用中的设备子协议规范。
第四部分主要介绍CANopen 协议的应用及调试的方法和工具。
很荣幸,我手上看的这本书是Holger 亲笔签名的书,读起来的感觉就是不一样。
哈哈。
闲话少说,直入主题。
因为我也算是学习CANopen 的小白,主要采用总结归纳知识点的方式来读。
以下就是总结了CANopen的主要知识点和一些自己的理解。
书看一遍,刚入味,各种不懂;再看一遍,重新理解之前不明白的,整合知识点,将其联系起来。
首先我觉得还是先看一下CAN总线,了解什么叫CAN ,即CAN总线的基本定义、基本原理、CAN协议等等,从而了解得知CAN协议主要是针对物理层与数据链路层的协议规范。
CANopen协议
最近在学习CANopen协议,遇到一些小知识点,查阅后作为补充,记录在此,方便以后查询,算是读书笔记吧。
一、CANopen协议中SYNC功能和使用SYNC是CANopen管理各节点同步数据收发的一种方法,相当于网络节拍,基于同步的PDO按照这个网络节拍来执行实时数据的收发。
SYNC属于生产/消费型通讯方式,网络中有且只有一个SYNC生产者,一般有多个消费者,其网络标识符优先级很高,一般设置为0x80,基本上除了NMT优先级最高。
SYNC 生产者按照固定频率发送SYNC报文,需要SYNC的节点(消费者)将其接收并计数,当计数值达到节点相应TPDO要求时,该TPDO映射的数据被发送(根据PDO传输类型也可能是映射数据更新),此过程中SYNC生产者提供网络节拍,各消费者以节拍周期的倍数执行数据传输功能。
在CANopen网络中应用SYNC要注意以下几点:1. SYNC并不是主节点必须的功能,不一定要和NMT 放在同一节点上,实际网络应用中可以在网络中找一个任务较少、实时性好的节点来作为SYNC生产者,SYNC消费者可以有多个,但是生产者同时只能有一个存在。
2. SYNC是不带数据的,以使报文尽可能短,目的是为了加快其传输,减少网络占用。
3. SYNC发出后,需要发送数据的PDO要在规定时间段内发送数据,这个时间段叫做时间窗口(对象1006H指定),要小于SYNC节拍周期,以便每个周期留一定时间来进行其他类型的网络通讯二、CANopen协议PDO的几种传输方式由于PDO所传输的数据内容是无协议的且分配的标识符范围较SDO靠前,因此,其效率和优先级都是较高的,通常用于实时过程数据的传输.PDO是生产/消费类型的通讯方式,数据只有一个生产者(发送),但是消费者(接收)可以有多个,生产者和消费者事先都已知道数据的类型和内容(通过设置PDO映射来管理).对PDO通讯参数的设置可以实现四种通讯方式:1.同步传输.在收到SYNC消息后触发PDO发送,可以定义收到几个SYNC后触发一次TPDO,在有SYNC 的CANopen网络中,SYNC就相当于一个网络节拍,数据根据节拍来进行固定周期的过程数据传输.比如网络中有一个压力传感器,一个温度传感器,一个物位传感器,网络中有一个HMI监控终端来实时监控三个传感器采集的数据,压力传感器可能检测的是一个快速的压力变化,那可以每隔200mS更新一次数据,温度可能需要1S更新一次数据,物位可能5S更新一次数据,(假设各传感器的数据采集周期都比数据更新周期小,如果大的话数据更新快可能没有意义,呵呵)现在我可以设置一个200mS周期的SYNC消息,压力传感器每收到一个SYNC就向HMI传输一次数据,温度传感器可以每隔5个SYNC传输一次数据,同样物位传感器就是每收到25个SYNC发送一次数据.这种通讯方式显得比较规矩,好管理,系统运行效率高,适合周期性数据更新的应用.2.远程请求.在需要网络上某个节点的数据的时候,我发一个远程数据请求过去,对方在接收到请求后,把我要的数据给发过来,这种方式是在我需要的时候去主动获取.3.定时发送.这个有别于SYNC,它是在本节点实现周期发送,通过设置PDO参数,定一个周期,每隔固定的时间向网络上发送一次PDO,它与SYNC无关,在网络设计中主要按照传感器的数据采集速度和数据更新要求来设定定时周期.4.事件触发.当节点的某个时间发生触发的一次数据发送,例如当某个接着报警开关的开关量采集节点的报警状态发生变化时,触发一次PDO将报警状态发送到网络上,使系统能够及时获得该报警状态信息.该方式是实时性最好的一种传输方式,特别适合系统运行出错报警和重大事件的及时处理上.上面的几种传输方式各有所长,在CANopen网络的设计中,按照不同的应用灵活配合使用才能构建一个优秀的解决方案.三、SDO服务SDO是服务数据对象接口(Service Data Obiect)的缩写,顾名思义提供服务数据的访问接口,服务数据就是一些实时性要求不高的数据,一般是指节点配置参数,因此,SDO一般用来配置和获得节点的配置参数。
CANopen协议介绍(精辟准确)
CANopen协议介绍(精辟准确)1.CANopen协议简介从OSI ⽹络模型的⾓度来看,CAN总线只定义了OSI⽹络模型的第⼀层(物理层)和第⼆层(数据链路层),⽽在实际设计中,这两层完全由硬件实现,设计⼈员⽆需再为此开发相关软件或固件。
同时,CAN只定义物理层和数据链路层,没有规定应⽤层,本⾝并不完整,因此需要⼀个⾼层协议来定义CAN报⽂中的11/29位标识符和8字节数据的使⽤。
⽽且,基于CAN总线的⼯业⾃动化应⽤中,越来越需要⼀个开放的、标准化的⾼层协议:这个协议⽀持各种CAN⼚商设备的互⽤性、互换性,能够实现在CAN⽹络中提供标准的、统⼀的系统通讯模式,提供设备功能描述⽅式,执⾏⽹络管理功能。
CANopen协议是CAN-in-Automation(CiA) 定义的标准之⼀,并且在发布后不久就获得了⼴泛的承认。
尤其是在欧洲, CANopen 协议被认为是在基于CAN 的⼯业系统中占领导地位的标准。
⼤多数重要的设备类型,例如数字和模拟的输⼊输出模块、驱动设备、操作设备、控制器、可编程控制器或编码器,都在称为“设备描述”的协议中进⾏描述;“设备描述”定义了不同类型的标准设备及其相应的功能。
依靠CANopen协议的⽀持,可以对不同⼚商的设备通过总线进⾏配置。
在OSI 模型中, CAN标准、CANopen协议之间的关系如图 1-1所⽰。
图1-1 CAN标准、CANopen协议在OSI⽹络模型中的位置框图CANopen和CAN报⽂的关系如图 1-2所⽰。
图1-2 CANopen和CAN报⽂的关系如所⽰。
CAN 报⽂由7个不同的位域组成,⽽CANopen就是规定其中的仲裁域(11 位标识符) 和数据域(8 字节数据) 的使⽤情况。
2.CANopen设备结构CANopen是⼀个基于CAN串⾏总线系统和CAL(CAN应⽤层)的⾼层协议。
CANopen的核⼼概念是设备对象字典(OD: ObjectDictionary),CANopen通讯通过对象字典(OD)能够访问驱动器的所有参数。
canopen手册
canopen手册简介CANopen是一种基于控制器局域网(Controller Area Network, CAN)总线协议的通信协议,用于在工业自动化系统中实现设备之间的高效通信和数据交换。
本手册将详细介绍CANopen的基本原理、协议规范、通信对象以及相关应用方案,旨在帮助读者全面了解和理解CANopen技术,并在实际应用中具备编写、实现和调试CANopen协议的能力。
第一章 CANopen基础知识1.1 CAN总线概述CAN总线是一种通过传输控制器区域网络协议在分布式系统中连接设备的串行总线系统。
它具有高实时性、可靠性以及抗干扰能力强的特点。
1.2 CANopen协议概述CANopen协议是基于CAN总线的设备间通信协议,广泛应用于工业控制和自动化领域。
它定义了一套统一的通信对象、通信参数和通信规则,以便设备之间能够进行可靠和高效的数据交换。
第二章 CANopen协议结构2.1 CANopen通信对象CANopen协议通过一系列通信对象(Communication Object, COB)来实现设备间的数据交换。
通信对象包括进程数据对象(Process Data Object, PDO)、服务数据对象(Service Data Object, SDO)等。
2.2 CANopen网络结构CANopen网络基于主从结构,其中主节点负责总线上的数据传输和管理,从节点则负责执行主节点下发的命令。
网络中的每个节点都有一个唯一的节点ID,用于标识节点之间的通信。
第三章 CANopen协议应用3.1 CANopen在工业自动化中的应用CANopen协议在工业自动化领域具有广泛的应用,例如机床控制、自动化生产线、风力发电等。
通过CANopen协议,不同设备之间可以实现实时的数据交换和快速的响应。
3.2 CANopen在汽车电子中的应用CANopen协议在汽车电子领域也得到了广泛应用,例如车身电子控制模块、发动机管理系统等。
CANopen协议讲解
CANopen协议讲解CANopen是一种基于CAN总线的通信协议,广泛应用于工业自动化领域。
该协议定义了一套标准的通信和设备管理机制,使得不同厂商的设备可以互相通信和协同工作。
本文将详细讲解CANopen协议的基本原理、通信结构、数据格式以及常用的设备配置和管理方式。
一、基本原理:CANopen协议是基于CAN(Controller Area Network)总线的,CAN总线是一种广泛应用于汽车和工业领域的串行通信协议。
CAN总线具有高可靠性、实时性和抗干扰能力,适合于多节点分布式控制系统。
CANopen协议在CAN总线上定义了一套通信和设备管理机制,包括数据传输、节点配置、网络管理等。
它采用了基于对象的通信模型,将设备的功能和参数抽象为对象,通过读写对象字典来实现数据的交换和配置。
二、通信结构:CANopen协议中的通信结构由节点、对象字典和通信对象组成。
1. 节点(Node):每一个CANopen设备都是一个节点,每一个节点都有一个惟一的节点ID,用于在总线上进行识别和寻址。
2. 对象字典(Object Dictionary):对象字典是一个存储设备功能和参数的数据结构,由多个对象索引组成。
每一个对象索引对应一个对象字典项,包括对象类型、数据类型、访问权限等信息。
3. 通信对象(Communication Object):通信对象是CANopen协议中的最小通信单位,用于在节点之间传输数据。
通信对象可以是PDO(Process Data Object)或者SDO(Service Data Object)。
- PDO:用于实时数据传输,支持广播和点对点通信,可以配置为发送和接收模式。
PDO具有固定的数据格式,包括索引、子索引和数据内容。
- SDO:用于配置和管理节点的对象字典,支持点对点通信。
SDO具有灵便的数据格式,包括索引、子索引、命令字和数据内容。
三、数据格式:CANopen协议中的数据格式包括CAN帧和通信对象的数据结构。
can总线协议讲解
竭诚为您提供优质文档/双击可除can总线协议讲解篇一:can总线协议学习笔记(一)1,基本概念:(1),报文:总线上的信息以不同格式的报文发送,但长度有限。
当总线开放时,任何连接的单元均可开始发送一个新报文。
(2),信息路由:在can系统中,一个can节点不使用有关系统结构的任何信息,这里包含一些重要的概念:系统灵活性——节点可以在不要求所有节点及其应用层改变任何软件或硬件的情况下,被接于can网络。
报文通信——一个报文的内容由其标示符id命名,id并不指出报文的目的,但描述数据的含义,以便网络中的所有节点有可能借助报文滤波决定该数据是否使它们激活。
成组——由于采用了报文滤波,所有节点均可接受报文,并同时被相同的报文激活。
数据相容性——在can网络中,可以确保报文同时被所有的节点或者没有节点接受,因此,系统的数据相容性是借助于成组和出错处理达到的。
(3),位速率:can的数据传输率在不同的系统中是不同的,而在一个系统中是固定的速率。
(4),优先权:在总线访问期间,标示符定义了一个报文静态的优先权。
(5),远程数据请求:通过发送一个远程帧,需要数据的节点可以请求另一个节点发送相应的数据帧,该数据帧与对应的远程帧以相同的标示符id命名。
(6),多主站:当总线开放时,任何单元均可以开始发送报文,发送具有最高优先权报文的单元会赢得总线的访问权。
(7),仲裁:当总线开放时,任何单元均可以开始发送报文,若同时有两个或者更多的单元开始发送,总线访问冲突运用逐位仲裁规则,借助标示符id解决,这种仲裁规则可以使信息和时间均无损失,若具有相同标示符的一个数据帧和一个远程帧同时发送,数据帧优先于远程帧,仲裁期间,每个发送器都对发送位电平与总线上检测到的电平进行比较,若相同则该单元可以继续发送,当发送一个隐性电平,而在总线上检测为显性电平时,该单元退出仲裁,并不再传送后继位了。
(8),安全性:为了获得尽可能高的数据传输安全性,在每个can节点中均设有错误检测,标定和自检的强有力措施。
中国单片机公共实验室
中国单片机公共实验室CANopen工程师应用笔记CANopen主节点的设计方案- 基于IXXAT公司CANopen Master API for Windows CANopen主节点除具备CANopen设备的基本条件外,还需具备NMT Master 的功能,即对CANopen网络进行管理。
对CANopen主节点的实现提出三种方案:z方案1:在CANopen-Chip基础上开发CANopen主站。
z方案2:通过对CANopen协议栈源代码的二次开发在单片机上实现嵌入式CANopen主站。
z方案3:利用CANopen Master API在PC机上实现CANopen主节点。
分析比较:z方案1:通过对CANopen-Chip的深入研究,在其EDS文件中发现CANopen-Chip仅适用于开发从站,其内部没有固化CANopen协议栈中的Master部分,而CANopen-Chip的可开发性较低。
因此方案1不可行。
z方案2:此方案可以在单片机上实现CANopen主站,但需要的开发周期较长。
z方案3:利用CANopen Master API可在windows下开发CANopen主节点,较为方便快捷,同时还有界面可编辑性好、可读行强等优点。
综上,方案3最适合本应用系统,因此选用方案3。
1 CANopen Master API基础1.1 CANopen Master API简介CANopen API是在windows操作系统下快速开发CANopen主站的软件包。
该软件包含两个组件:适用于主动型 PC/CAN板的CANopen Master Firmware(固件)和以Windows dll形式的程序接口(CANopen API)。
CANopen Master固件由完整的CANopen Master组成,它可以完全自主处理CANopen的通信流程(带超时监视的发送/接收SDO,发送/接收PDO,同步产生,突发处理,网络管理,周期节点维护,heartbeat监视),这样,PC只需关注应用程序本身即可。
CANopen协议SDO部分基础知识实例介绍
目录第一章SDO实例分析 (1)一、目的: (1)二、手段: (1)三、分析: (1)四、过程: (2)4.1.对象字典的编写 (2)4.1.1各节点ID分配 (2)4.1.2对节点1进行对象字典编写 (2)4.1.3对节点2进行对象字典编写 (2)4.1.4对节点3进行对象字典编写 (3)4.2节点1读取节点2数据 (3)4.2.1节点1发送请求读取命令至节点2 (3)4.2.2 节点2响应节点1读取命令 (4)4.3 节点1写入数据至节点3 (6)4.3.1 节点1 发送数据至节点3 (6)4.3.2 节点3响应节点1写入数据命令 (7)参考文献 (8)附录一: (9)第一章SDO实例分析一、目的:实现节点2的数据传送到节点3二、手段:使用SDO进行传送注:SDO不能实现从节点之间数据的直接传送三、分析:图1-1 SDO客户/服务器通讯模式[1]SDO通讯可以描述成客户/服务器模型,SDO的客户/服务器通讯模式如图1-1所示。
两节点中请求进行读写操作的节点为客户端节点,数据被读写的节点为服务器节点[3]。
SDO通讯用于主节点对从节点对象字典的读写访问,以实现对从节点参数的设置,下载程序,定义PDO的通讯类型和数据格式等 [1]。
由此可知要实现将节点2中数据传送给节点3的实现方法为:设置节点1为主站(Client),数据传送过程由SDO传送的特点分为两段:节点1读取节点2(server)数据,节点1写入数据到节点3(server)。
从而实现了节点2(server)的数据传送到节点3(server)。
如图1-2所示。
图1-2 数据传送过程四、过程:4.1.对象字典的编写对象字典的结构和条目对于所有设备是共同的,本例中采用索引定位,子索引确定对象的思想构建对象字典,方法是使用结构体定义子索引,子索引结构体的成员变量包含对象的属性(读写权限,数据类型,数据长度等)和指向对象的指针,定义索引时包含指向子索引的指针和子索引数目,对象字典各项在代码中采取如图4-1所示的方式来组织构建,这样可以方便地通过索引和子索引一找到对应的项,对象定义为指针的形式可以通过主站的SDO报文进行读写,实现对对象字典的灵活配置,同时这种方式实现通讯层与应用层共享数据变量的特点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CiA 433: 针对内部轨道车辆照明装置的应用规范
CiA 444: 针对起重机附加设备(例如,延伸器)的设备规范集
CiA 445: 针对RFID阅读器的设备规范
CiA 446: 针对As-i网关的接口规范
看来对于解决“要用canopen干什么?”和“怎么用canopen来干活?”就需要根据具体的应用题来选择这些套路了。 以下也是从cia中文网站上将部分跟汽车有关的内容copy的,用来概述这些协议的功能
CiA 424: 针对轨道车辆车门控制系统的应用规范
CiA 425: 针对医疗附加设备(例如,造影剂注射器)的设备规范集
CiA 426: 针对外部轨道车辆照明装置的应用规范
CiA 430: 针对辅助轨道车辆设备(例如,冷却风扇、发动机预热装置)的应用规范
CANOpen协议族入门学习笔记CANOPEN 2010-11-07 16:52:57 阅读111 评论0 字号:大中小 订阅 .
当我们使用CANOpen时,首先要明确我们
CANOPEN能干什么?
要用canopen干什么?
怎么用canopen来干活? CANOPEN能干什么?
应用题类:既然是应用题,我把cia中文网站上的一些资料copy过来,作为我的纲要
CiA 401: 针对通用I/O模块的设备规范
CiA 402: 针对驱动装置和运动控制装置(伺服控制器、步进式电机控制器、变频器)的设备规范
CiA 404: 针对测量设备和闭环回路控制器的设备规范
2.CiA 402针对驱动装置和运动控制装置的CANopen设备规范
针对驱动装置和运动控制装置的设备规范定义伺服驱动器、变频器和步进式电机控制器的功能特性。它还指定多个 操作模式和相应的组态参数。该规范包括一个有限状态自动机(FSA),该FSA指定每个状态的内部和外部设备特性。 驱动装置的状态确定接受哪个命令以及是否应用大功率。状态因从主机控制器接收到的控制字而更改,并可以因内 部事件进行更改。通过状态字指示当前状态。控制字和不同的命令值(例如,速度)映射到缺省的RPDO(接收过程数据 对象)中。状态字和不同的实际值(例如,位置)映射到TPDO(发送过程数据对象)中。该规范提供一组可供所有驱动装 置使用的通用缺省PDO,以及仅适用于特定类别驱动装置的特定缺省PDO组,例如伺服驱动器、变频器或步进式电机。 多种可选功能和参数限制了符合CiA 402的设备互换性。 CiA 402设备规范符合IEC 61800-7-201和IEC 61800-7-301国际标准,可从IEC获取这两个标准
1. CiA 401针对通用I/O模块的CANopen设备规范 CiA 401设备规范指定用于带通用模拟量和数字量输入和输出的模块的CANopen接口。缺省状态下,第1个TPDO和 第1个RPDO分别支持最多64个数字量输入和最多64个数字量输出这两种字节方式。剩余的缺省PDO分别发送或接收 最多12个模拟量输入和最多12个模拟量输出,输入和输出的分辨率均为16位分辨率。所有TPDO均通过状态的改变 而被触发。因此,包含模拟量输入的缺省TPDO都处于禁用状态。 除按缺省的字节方式访问数字量I/O外,还可支持可选的位、字和双字访问。除模拟量I/O的缺省16位分辨率外, 还可支持可选的8位、32位、浮点以及制造商特定的分辨率。 可指定多个参数来组态输入和输出特性(例如,输入的触发条件,内部设备故障时的输出特性)。对于模拟量I/O, 信号调节和滤波器功能未进行标准化。对这些情况,建议对模拟传感器应用使用CiA 404规范。 在CiA 401规范附录中给出了特定I/O模块(如操纵杆)的实现提示。操纵杆被视为包含三维模拟量输入(x,y,z) 的输入模块。缺省状态下,还有一个附加TPDO包含一字节的数字信息。在该字节中,三个位用于启用三维(x,y,z) 的存储器功能。
CiA 414: 针对织机(例如,进料器)的设备规范集
CiA 415: 针对筑路机械传感器的应用规范
CiA 416: 针对建筑门控制系统的应用规范
CiA 417: 针对电梯控制系统的应用规范
CiA 418: 针对蓄电池模块的设备规范
6.CiA 410针对倾斜仪的CANopen设备规范
倾斜传感器用于对机器进行水平准直,以及用于控制重型推土机、推进装置和特殊用途的车辆。CiA 410设备规范指定用于单轴和双轴倾斜传感器的CANopen接口。测量值在缺省时被映射到“发送-PDO”,并在此进行同步发送。在第一个缺 省的TPDO中,发送16位斜率纵向对象和可选的16位斜率横向对象。支持32位斜率值的倾斜仪使用可选的第二个TPDO 为了使倾斜传感器适应应用需求,指定了多个组态参数。预设值用于将期望的倾斜角分配给实际的物理倾斜角,并以此 校准传感器。最小值和最大值的可选软件限位开关可以监视允许的操作范围。
CiA 419: 针对蓄电池充电器的设备规范
CiA 420: 针对挤压机下游设备的设备规范集
CiA 421: 针对列车车辆控制网络(车辆子级的集成平台)的应用规范
CiA 422: 针对市政车辆(例如,垃圾车)的应用规范
CiA 423: 针对动力驱动系统(例如,柴油机)的应用规范
CiA 406: 针对编码器(旋转和线性)的设备规范
CiA 408: 针对比例阀和液压传动装置的设备规范
CiA 410: 针对倾斜仪的设备规范
CiA 412: 针对医疗设备(例如,准直仪、剂量计)的设备规范集
CiA 413: 针对卡车网关的设备规范集
用于工厂自动化的DeviceNet、 用于卡车和其它车辆的基于J1939的解决方案(J1939-71、Isobus、ISO 11992、CiA 501/2)、 用于客车诊断的ISO 15765。
分解学习OPEN
基础题类的3xx, 等效于课本和字典,看个大概,用的时候再翻查也不迟,反正是开卷考试。 最重要的莫过于301这个协议了,所有的应用题都是在这个基础题上的变化,国内的资料基本上都是讲解 这部分,出于偷懒,我就不多讲了。
首先需要明确canopen各个协议的功能,兄弟我最近在学习中大概总结了一些提纲如下:
canopen分为两种协议类型 :
1)基础题,应用层和通信层规范,主要是3xx系列的规范
2)解应用题,相当于用基础科目解应用题的一些套路,4xx系列规范
一般来讲,CANopen协议集定义了基于CAN的分布式工业自动化系统的应用标准以及CAN应用层通信标准。 CANopen是CAN-in-Automation(CiA)定义的标准之一,并且在发布后不久就获得了广泛的承认。 尤其是在欧洲,CANopen被认为是在基于CAN的工业系统中占领导地位的标准。CANopen协议集 基于所谓的"通信子集",该子集规定了基本的通信机制及其特性。 cAN物理层和数据链路层协议最初开发用作客车的车载网络。基于CAN的高层协议定义了如何根据特定的 应用要求来使用CAN数据链路协议。除专用的基于CAN的高层协议外,还有多个国际标准化协议: 用于嵌入式控制系统的CANopen、
5.CiA 408CANopen设备规范流体动力技术 CiA 408设备规范基于由VDMA (德国机器制造商的非营利组织)发布的独立于总线的流体系统规范框架。该规范描述了 可互连的比例阀、静液压泵和静液压传动装置的功能。该规范也适用于气动泵。符合该规范的设备在移动机械(例如, 建筑机械、农用和林业机械)、工业机械以及过程和工厂自动化中使用。 同时用于阀和驱动装置的有限状态自动机(FSA)协调工作。这两个设备类别的定义非常相似。操作模式参数确定实际 值的表现形式。系统设计人员通过组态相应的参数来选择控制模式,例如,阀芯位置开环/闭环控制或压力开环/闭环 控制或压力流量控制。 预定义的TPDO和RPDO包含FSA状态字、FSA控制字与实际值及命令值,具体取决于所组态的控制模式
4.CiA 406针对编码器的设备规范(旋转和线性) 针对编码器的CiA 406设备规范指定绝对线性和旋转编码器的CANopen接口。除位置和速度输出外,该规范还对加速 度和急停输出进行了描述。此外,编码器配置规范还指定多个组态参数,例如,确定计数方向的代码序列(补码), 输出代码按这个方向增大或减少。分辨率参数用于组态每转的给定步数。此外,该规范还涵盖带滞后的完整凸轮功 能。除此之外,还可以对在单个CANopen编码器设备中实现的多传感器模块进行描述。编码器规范指定下列操作模 式: 事件-定时器模式:周期性地采样和发送当前位置值。 同步模式:在接收到同步消息后采样并发送当前位置。 由于在使用CAN远程帧时,会出现若干常见问题,因此,不建议使用基于远程请求的PDO(过程数据对象)的远程模式
7.CiA 413针对卡车网关的CANopen接口规范 CiA 413 CANopen接口规范集指定了到用于卡车、公交车、拖车和其它商用汽车的基于J1939的车载网络的网关。除 CANopen接口外,网关还提供一个或多个符合ISO 11992 (卡车/拖车点到点网络)、SAE J1939-71 (卡车动力传动系统 网络)或ISO 11783 (农业和林业车辆中的实现网络)的CAN接口。CiA 413指定了四个缺省的符合ISO 11992-3标准的RPDO (接收过程数据对象)和TPDO (发送过程数据对象)。所有其它参数组必须进行组态或编程。卡车制造商可能会提供预组 态和预编程的网关设备,以满足车身制造商的要求。车身制造商可以使用现成的CANopen传感器和执行器,因为ISO11992 的模拟参数(如数值范围、数值前缀和SI单位)可以进行组态。它是符合ISO 11992的可编程网关。CiA 413规范集包含下 列部分: