求无偿提供场地使用协议CANOpen协议的教程?

canopen+关注
CANopen是一种架构在控制局域网路(Controller Area Network, CAN)上的高层通信协协议,包括通信子协议及设备子协议,常在嵌入式系统中使用,也是工业控制常用到的一种现场总线。
canopen简介
  CANopen是一种架构在控制局域网路(Controller Area Network, CAN)上的高层通信协协议,包括通信子协议及设备子协议,常在嵌入式系统中使用,也是工业控制常用到的一种现场总线。
  CANopen是一种架构在控制局域网路(Controller Area Network, CAN)上的高层通讯协定,包括通讯子协定及设备子协定常在嵌入式系统中使用,也是工业控制常用到的一种现场总线。
  CANopen 实现了OSI模型中的网络层以上(包括网络层)的协定。CANopen 标准包括寻址方案、数个小的通讯子协定及由设备子协定所定义的应用层。 CANopen 支援网络管理、设备监控及节点间的通讯,其中包括一个简易的传输层,可处理资料的分段传送及其组合。一般而言数据链结层及物理层会用CAN来实作。除了 CANopen 外,也有其他的通讯协定(如EtherCAT)实作 CANopen 的设备子协定。
  CANopen由非营利组织CiA(CAN in Automaion)进行标准的起草及审核工作,基本的 CANopen 设备及通讯子协定定义在 CAN in Automation (CiA) draft standard 301中。针对个别设备的子协定以 CiA 301 为基础再进行扩充。如针对 I/O 模组的 CiA401 及针对运动控制的 CiA402。
canopen相关内容
canopen资讯
canopen资料下载
UHD是”超高清“的意思UHD的应用在电视机技术上最为普遍,目前已有不少厂商推出了UHD超高清电视。
STC12C5A60S2
STC12C5A60S2
在众多的51系列单片机中,要算国内STC 公司的1T增强系列更具有竞争力,因他不但和8051指令、管脚完全兼容,而且其片内的具有大容量程序存储器且是FLASH工艺的,如STC12C5A60S2单片机内部就自带高达60K FLASHROM,这种工艺的存储器用户可以用电的方式瞬间擦除、改写。
Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
数字隔离技术常用于工业网络环境的现场总线、军用电子系统和航空航天电子设备中,尤其是一些应用环境比较恶劣的场合。数字隔离电路主要用于数字信号和开关量信号的传输。另一个重要原因是保护器件(或人)免受高电压的危害。本文详细介绍了数字隔离器工作原理及特点,选型及应用,各类数字隔离器件性能比较等内容。
IoT是Internet of Things的缩写,字面翻译是“物体组成的因特网”,准确的翻译应该为“物联网”。物联网(Internet of Things)又称传感网,简要讲就是互联网从人向物的延伸。
74LS74是双D触发器。功能多,可作双稳态、寄存器、移位寄存器、振荡器、单稳态、分频计数器等功能。本章详细介绍了74ls112的功能及原理,74ls74引脚图及功能表,74ls112的应用等内容。
硬件工程师
硬件工程师
硬件工程师Hardware Engineer职位 要求熟悉计算机市场行情;制定计算机组装计划;能够选购组装需要的硬件设备,并能合理配置、安装计算机和外围设备;安装和配置计算机软件系统;保养硬件和外围设备;清晰描述出现的计算机软硬件故障。
MPU-)为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时间轴之差的问题,减少了大量的封装空间。
cD4046是通用的CMOS锁相环集成电路,其特点是电源电压范围宽(为3V-18V),输入阻抗高(约100MΩ),动态功耗小,在中心频率f0为10kHz下功耗仅为600μW,属微功耗器件。本章主要介绍内容有,CD4046的功能
cd4046锁相环电路,CD4046无线发射,cd4046运用,cd4046锁相环电路图。
做单片机的工程师相比都堆循迹小车有所认识,它是自动引导机器人系统的基本应用,那么今天小编就给大家介绍下自动自动循迹小车的原理,智能循迹小车的应用,智能循迹小车程序,循迹小车用途等知识吧!
802.11ac与11基站测试(base station tests) 在基站设备安装完毕后,对基站设备电气性能所进行的测量。n的区别,802.11n无线网卡驱动,802.11n怎么安装。
Wi-Fi模块又名串口Wi-Fi模块,属于物联网传输层,功能是将串口或TTL电平转为符合Wi-Fi无线网络通信标准的嵌入式模块,内置无线网络协议IEEE802.11b.g.n协议栈以及TCP/IP协议栈。传统的硬件设备嵌入Wi-Fi模块可以直接利用Wi-Fi联入互联网,是实现无线智能家居、M2M等物联网应用的重要组成部分。
光立方是由四千多棵光艺高科技“发光树”组成的,在日天安门广场举行的国庆联欢晚会上面世。这是新中国成立六十周年国庆晚会最具创意的三大法宝之首。
为防止静电积累所引起的人身电击、火灾和爆炸、电子器件失效和损坏,以及对生产的不良影响而采取的防范措施。其防范原则主要是抑制静电的产生,加速静电泄漏,进行静电中和等。
TMS320F28335
TMS320F28335
TMS320F28335是一款TI高性能TMS320C28x系列32位浮点DSP处理器
OBD是英文On-Board Diagnostic的缩写,中文翻译为“车载诊断系统”。这个系统随时监控发动机的运行状况和尾气后处理系统的工作状态,一旦发现有可能引起排放超标的情况,会马上发出警示。
TMS320LF2407
TMS320LF2407
在成功突破TI系列多个型号DSP芯片解密的基础上,现面向国内外各类客户提供TMS320LF2407解密等TI公司的TMS320F系列、TS320LF系列DSP芯片解密。
STM32F103C8T6
STM32F103C8T6
STM32F103C8T6是一款集成电路,芯体尺寸为32位,程序存储器容量是64KB,需要电压2V~3.6V,工作温度为-40°C ~ 85°C。
TMS320F2812
TMS320F2812
TI(德州仪器)主推高性能 TMS320C28x系列[1] TMS320F2812 32位定点微控制单元(MCU),主频高达150MHz; 具备I2C、SPI、CAN、PWM等总线接口,适用于各种控制类工业设备;
高功率因数
高功率因数
四轴飞行器
四轴飞行器
四轴飞行器,又称四旋翼飞行器、四旋翼直升机,简称四轴、四旋翼。这四轴飞行器(Quadrotor)是一种多旋翼飞行器。四轴飞行器的四个螺旋桨都是电机直连的简单机构,十字形的布局允许飞行器通过改变电机转速获得旋转机身的力,从而调整自身姿态。具体的技术细节在“基本运动原理”中讲述。
服务机器人
服务机器人
服务机器人是机器人家族中的一个年轻成员,到目前为止尚没有一个严格的定义。不同国家对服务机器人的认识不同。
Nand flash
Nand flash
Nand-flash存储器是flash存储器的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。
关注此标签的用户(0人)
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司
电信与信息服务业务经营许可证:粤B2-canopen华茂教程_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
canopen华茂教程
&&canopen教程 简单易懂
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩13页未读,
定制HR最喜欢的简历
你可能喜欢当前位置:&&
canopen协议在风机控制系统中的应用
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
canopen协议在风机控制系统中的应用
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://jz.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口CAN总线与CANOPEN协议
由 匿名 (未验证)
1. 什么是CAN总线协议
CAN总线协议最早是为了统一汽车车载设备间通信的标准而开发的协议,后来由于其高速、稳定、可靠的特点,已经被ISO标准化并广泛应用于工控、医疗等领域,目前依然是欧洲汽车网络的标准协议。
CAN总线协议规定了ISO七层通信协议模型的物理层和数据链路层。其具体实现都已经被固化到CAN总线控制芯片中,无需软件实现。
2. CAN总线的传输速率和传输距离
理论上,CAN总线在速率小于5K时,距离可达10000m;速率接近1M时,距离小于0.4m。现实中常用的高速CAN总线速率有500k或250k,低速CAN总线有125k和62.5k,传输距离在几米到几十米间。速率和传输距离的选择还有考虑硬件的要求。
理论上,一条CAN总线上可以连接无数个CAN设备,但实际上受到其他条件限制,数量总是有限的。例如,使用了更上层的CANOPEN协议,则一条总线上只能有128个设备。
3. CAN总线协议的特点和要求
CAN总线网络属于广播网络,同一条总线的设备都可以放送和接受数据。同一时刻只能有一个设备作为发送设备,其他设备为接收设备。
同一条总线上的设备必须工作在同一速率下。
当两个设备同时发送数据时,根据其CAN通信帧(CAN通信的最小信息单元详情见下文)的ID号进行仲裁,ID号小的优先级高,将获得发送权,优先级低的则需要放弃发送,转为接收状态。
CAN设备可以检测总线上的错误类型是暂时性的还是持续性的,如果是持续性的,出错的设备会不停的向总线发送错误帧,一段时间后将自动脱离总线。
can总线的终端电阻的选择很重要,选择的不好会影响通信质量。
4. CAN总线的通信帧
CAN总线所使用的最基本通信单元称为帧,CAN总线协议规定了数据帧、遥控帧(也有称为远程帧的)、错误帧、过载帧和间隔帧。以下仅详细分析数据帧的帧格式,其他均只描述功能,不详细描述格式。
有些文档喜欢用显性电平和隐性电平来描述帧格式,这里说明一下,显性电平可以理解为逻辑1,隐性电平可以理解为逻辑0。
4.1 数据帧
数据帧由7段构成
起始段:长度固定为1bit,逻辑0
仲裁段:前11bit为帧ID,后1bit为RTR标志
控制段:前2bit规定为0,后4bit为数据段的BYTE长度
数据段:长度可变,0~8BYTE
CRC段、ACK段、帧结束对于软件工程师来说可以不关注,比较重要的是理解仲裁段、控制段和数据段的含义。
没有数据段的数据帧一般用作心跳。
4.2 遥控帧
遥控帧的作用是向其他单元请求数据。比如设备A希望设备B向自己发送数据,设备A就向总线发送一个带有设备B的帧ID的遥控帧,设备B就会将数据发送的总线上。这里再次说明,CAN总线协议是广播的。
遥控帧的帧格式不具体列出,需要说明的是遥控帧也包含帧ID,当遥控帧与数据帧同时要发送时,也要根据ID的优先级仲裁,如果ID相同则数据帧具有更高优先级。
4.3 错误帧
顾名思义,在检测到错误时发送到总线上的帧。
错误帧分为主动错误帧和被动错误帧两类。解释其不同要了解CAN总线的错误处理机制,但是其错误处理机制过于复杂,这里描写一个简化版。
每一个CAN总线芯片都会有错误计数器,初值为0。假设设备A总是发送错误。A发送一个数据帧后,发现有错误(这个发现错误的功能也是硬件实现的,应该是A发送数据的同时,也在校验总线上的数据),则A会将自己的错误计数器加8,并发送一个主动错误帧,其他设备如果接收到这个主动错误帧,会将自己的计数器加1;当A的计数器达到127时,A将改为发送被动错误帧,并依然给计数器加8,但不再发送数据帧;最后当A的计数器达到256时,A将不再工作。
以上的描述其实没有解释主动错误帧和被动错误帧在功能上有什么区别,只是描述了以下发送时机。其实CAN规范协议对此的规定十分复杂,详情还是找规范慢慢摸索吧,感觉用的不多。
如果发现总线上有错误帧,我的经验是第一查看所有设备的波特率是否一致,第二检测终端电阻是否合适。
4.4 过载帧和间隔帧
5 什么是CANOPEN协议
CANOPEN协议是基于CAN总线协议建立的应用层协议。CANOPEN协议属于“主-从站协议”,一个CANOPEN网络中有一个主站和若干个从站。每一个从站点都有一个ID号,一个数据字典和四种工作状态。CANOPEN协议将CAN总线协议的通信帧进行了进一步的封装和分类,以满足更高层次通信的需要。
6 CANOPEN数据字典
CANOPEN网络中的每一个从站设备都要有一个数据字典,其实数据字典这个翻译不太准确,应该叫做“命令ID与功能对照表”。比如网络中有一个信号灯设备,则这个设备就可能有这样一个数据字典。
其中index我们可以理解为“命令ID”,subIndex可以理解为“子ID”。
这个“字典”表示,只要有其他设备向信号灯发送一条包含命令ID为0x400和子ID为0的命令,如果data为0,则信号灯就亮;如果data为1,则信号灯就灭。所以说“数据字典”更像是“命令ID与功能对照表”。
实际上,CANOPEN协议规定了设备数据字典的格式,并对命令ID号进行了规定和划分(具体的规定很复杂,需要请参阅规范)。有一些命令ID的功能是固定的,有一些则可以由设备生产厂家自己决定。命令ID对应的功能也不总是操作这个设备,也可以是读取这个设备的信息,比如设备名等。
接下来的问题是如何向一个设备发送命令ID呢?对此,CANOPEN协议也有规定,在下文中会进行介绍。
7 设备ID与常用通信对象
CANOPEN协议是一个“主-从站协议”,其中规定,在总线上每一个作为“从站”的设备要有一个自己的设备ID(主站设备不做强制要求),称为Node-ID,这个英文名字在许多文章中更常见,范围是1~127(0有特殊用途,不能作为ID分配给设备),同一个总线上不能出现ID号相同的两个从站设备。所以,基于CANOPEN协议的总线上最多有127个从站设备。
那么为什么是127个呢,为了解释这个问题,要先了解CANOPEN协议规定的通信对象。
就像CAN总线协议的基本通信单元称为“帧”一样,CANOPEN协议的基本通信单元叫做“通信对象”(英文为Object,姑且这么翻译吧)。常用的通信对象有NMT、SYNC、EMERGENCY、TIME STAMP、SDO、PDO这几个,他们结构相同,包括funciton Code、Node-ID、DLC(数据长度)、DATA(数据)四部分构成,本质上都是通过封装CAN总线协议的数据帧实现的。他们的不同体现在DATA这个部分,有的对象DATA部分可以完全用来传输数据,有的对象针对DATA部分进一步做了划分和要求。
上文说过,CAN总线协议的数据帧包含一个仲裁段,其前11位是帧ID。CANOPEN协议进一步把帧ID分为FunctionCode和Node-ID两部分,如下:
function Code
由于Node-ID只有7位,最大值为127,所以CANOPEN协议的总线上最多有127个从站设备。functionCode和Node-ID在一起又被称为COB-ID。
DLC则对应数据帧控制段的后4位,表示后续负载数据的长度。
DATA与数据帧的数据段长度相同,至于有何用途,不同对象有不同要求。
functionCode
可见,CANOPEN协议的通信对象就是数据帧,只是进一步规定了数据帧的内容格式,所以说CANOPEN协议是基于CAN总线协议的应用层协议。
上文中提到常用的通信对象有NMT、SYNC、EMERGENCY、TIME STAMP、SDO、PDO,每一种通信对象都有自己的用途。本章重点介绍PDO对象,了解了这个对象的机理,其他对象也可以融会贯通。
8.1 PDO对象概述
PDO对象称为“过程数据对象”,用于无连接的数据传输,即A站发送数据给B站后,不需要等待B站给出确认收到的应答。当然B站也可以应答一些信息给A站,这个有点像网络通信中的UDP协议,即应答不是强制要求的,B站可以回答,也可以不回答。
PDO对象的DATA部分可以完全用来传输数据,没有进步做要求。
根据上文知道,CAN总线本质上是广播的,对于B站来说,它面临三个问题(假设B站是主站):
总线上的通信对象是不是PDO对象,因为不同对象的数据部分的含义是不同的,需要不同的方式去解析;
如何知道PDO对象是A站发出的;
如何回答,即发送PDO给A站。
对于问题1,B站是通过读取functionCode来判断当前总线上是不是PDO对象的。上文提到functionCode有4bit位,即有16个不同的functionCode。CANOPEN协议并没有硬性规定PDO对象必须使用那一个(或几个)functionCode,A站和B站可以自行约定。但是CANOPEN协议给了一个划分的《建议》(用书名号只是为了强调,不是真有一本叫做建议的书),既然是建议,你可以遵守也可以不遵守,但事实上,只要不是特殊情况,所用人都遵守了这个《建议》,如下:
functionCode
NMT(Model Control)
TIME STAMP
0x181-0x57F
0x581-0x67F
NMT(ERROR)
0x701-0x77F
对于问题2和问题3,我们先假设A站的Node-ID为1,并且需要进一步引入TPDO和RPDO的概念才能解决。
从上表中我们注意到PDO的functionCode是一个范围,共8个,即functionCode在此范围内的所有通信对象都是PDO对象。刚才提到的《建议》进一步对PDO进行了细分。以A站的PDO为例,如下表:
functionCode
通过上表,我们可以看出,从站A可以拥有8个PDO对象,其中4个为TPDO,4个为RPDO。下面来回答问题2,B站“如何知道PDO是A站发来的?”。答案就是检测PDO对象是否属于A站的TPDO,即COB-ID等于0x181,0x281,0x381或0x481。
对于问题3,答案是B站(主站)发送属于A站的RPDO。A站检查到总线上有自己的RPDO就知道数据是发送给自己的。
8.2 PDO对象的引申问题
上一节讲了“主-从”站间PDO对象的通信原理。不过有一个大前提就是我们遵循了《建议》,这就引申出如下两个问题:
《建议》给每个从站分配了4个RPDO对象,即每次主站最多只能发送4*8BYTE(64字节)的数据给从站,不够怎么办?
从站与从站之间如何通信?
对于问题1,答案是不去遵守《建议》,自己根据需要规定,比如将0x281也规定为RPDO也可以,只要主站和从站都遵守这个规定就行。但这种情况是不多见的,因为《建议》本身是许多厂商共同商讨的结果,显然满足绝大部分应用情况。
对于问题2,其实超出了CANOPEN协议的应用范围,因为CANOPEN协议是“主-从站”协议,这类协议的特点就是从站之间没有通信的渠道。如果需要通信,也是通过主站中转。比如从站A发给主站,主站再发给从站B,来实现从站A与从站B的通信。从我的工业经验来看,这种从站之间通信的情况就没发生过。
有了PDO对象的基础,SDO对象的说明就容易多了。
SDO对象也分为TSDO和RSDO两种。(遵循《建议》)
SDO对象是用来操作从站设备的数据字典的。
SDO对象是一个有应答的通信对象,即主站发送RSDO给从站后,从站如果接收到,必须发送TSDO给主站进行应答。
SDO对象对DATA段进行了进一步的规定和划分。
以下为SDO对象的结构
functionCode
ControlCode
其中ControlCode、Index、SubIndex和data就是DATA部分,SDO对象对此进行了细分规定。Index,SubIndex和data的含义,可以参考前文数据字典部分的信号灯的例子。
ControlCode在RSDO中经常表示此次操作是写入数据字典还是读取数据字典,在TSDO中表示写入是否成功,或者错误码一类的。虽然只有8bit,但是其构成还是挺复杂的,这里就不详细描述了,可以在网上找更加详细的文档来看。
&link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea.css"&
1. 什么是CAN总线协议
CAN总线协议最早是为了统一汽车车载设备间通信的标准而开发的协议,后来由于其高速、稳定、可靠的特点,已经被ISO标准化并广泛应用于工控、医疗等领域,目前依然是欧洲汽车网络的标准协议。
CAN总线协议规定了ISO七层通信协议模型的物理层和数据链路层。其具体实现都已经被固化到CAN总线控制芯片中,无需软件实现。
2. CAN总线的传输速率和传输距离
理论上,CAN总线在速率小于5K时,距离可达10000m;速率接近1M时,距离小于0.4m。现实中常用的高速CAN总线速率有500k或250k,低速CAN总线有125k和62.5k,传输距离在几米到几十米间。速率和传输距离的选择还有考虑硬件的要求。
理论上,一条CAN总线上可以连接无数个CAN设备,但实际上受到其他条件限制,数量总是有限的。例如,使用了更上层的CANOPEN协议,则一条总线上只能有128个设备。
3. CAN总线协议的特点和要求
CAN总线网络属于广播网络,同一条总线的设备都可以放送和接受数据。同一时刻只能有一个设备作为发送设备,其他设备为接收设备。
同一条总线上的设备必须工作在同一速率下。
当两个设备同时发送数据时,根据其CAN通信帧(CAN通信的最小信息单元详情见下文)的ID号进行仲裁,ID号小的优先级高,将获得发送权,优先级低的则需要放弃发送,转为接收状态。
CAN设备可以检测总线上的错误类型是暂时性的还是持续性的,如果是持续性的,出错的设备会不停的向总线发送错误帧,一段时间后将自动脱离总线。
can总线的终端电阻的选择很重要,选择的不好会影响通信质量。
4. CAN总线的通信帧
CAN总线所使用的最基本通信单元称为帧,CAN总线协议规定了数据帧、遥控帧(也有称为远程帧的)、错误帧、过载帧和间隔帧。以下仅详细分析数据帧的帧格式,其他均只描述功能,不详细描述格式。
有些文档喜欢用显性电平和隐性电平来描述帧格式,这里说明一下,显性电平可以理解为逻辑1,隐性电平可以理解为逻辑0。
4.1 数据帧
数据帧由7段构成
起始段:长度固定为1bit,逻辑0
仲裁段:前11bit为帧ID,后1bit为RTR标志
控制段:前2bit规定为0,后4bit为数据段的BYTE长度
数据段:长度可变,0~8BYTE
CRC段、ACK段、帧结束对于软件工程师来说可以不关注,比较重要的是理解仲裁段、控制段和数据段的含义。
没有数据段的数据帧一般用作心跳。
4.2 遥控帧
遥控帧的作用是向其他单元请求数据。比如设备A希望设备B向自己发送数据,设备A就向总线发送一个带有设备B的帧ID的遥控帧,设备B就会将数据发送的总线上。这里再次说明,CAN总线协议是广播的。
遥控帧的帧格式不具体列出,需要说明的是遥控帧也包含帧ID,当遥控帧与数据帧同时要发送时,也要根据ID的优先级仲裁,如果ID相同则数据帧具有更高优先级。
4.3 错误帧
顾名思义,在检测到错误时发送到总线上的帧。
错误帧分为主动错误帧和被动错误帧两类。解释其不同要了解CAN总线的错误处理机制,但是其错误处理机制过于复杂,这里描写一个简化版。
每一个CAN总线芯片都会有错误计数器,初值为0。假设设备A总是发送错误。A发送一个数据帧后,发现有错误(这个发现错误的功能也是硬件实现的,应该是A发送数据的同时,也在校验总线上的数据),则A会将自己的错误计数器加8,并发送一个主动错误帧,其他设备如果接收到这个主动错误帧,会将自己的计数器加1;当A的计数器达到127时,A将改为发送被动错误帧,并依然给计数器加8,但不再发送数据帧;最后当A的计数器达到256时,A将不再工作。
以上的描述其实没有解释主动错误帧和被动错误帧在功能上有什么区别,只是描述了以下发送时机。其实CAN规范协议对此的规定十分复杂,详情还是找规范慢慢摸索吧,感觉用的不多。
如果发现总线上有错误帧,我的经验是第一查看所有设备的波特率是否一致,第二检测终端电阻是否合适。
4.4 过载帧和间隔帧
5 什么是CANOPEN协议
CANOPEN协议是基于CAN总线协议建立的应用层协议。CANOPEN协议属于“主-从站协议”,一个CANOPEN网络中有一个主站和若干个从站。每一个从站点都有一个ID号,一个数据字典和四种工作状态。CANOPEN协议将CAN总线协议的通信帧进行了进一步的封装和分类,以满足更高层次通信的需要。
6 CANOPEN数据字典
CANOPEN网络中的每一个从站设备都要有一个数据字典,其实数据字典这个翻译不太准确,应该叫做“命令ID与功能对照表”。比如网络中有一个信号灯设备,则这个设备就可能有这样一个数据字典。
其中index我们可以理解为“命令ID”,subIndex可以理解为“子ID”。
这个“字典”表示,只要有其他设备向信号灯发送一条包含命令ID为0x400和子ID为0的命令,如果data为0,则信号灯就亮;如果data为1,则信号灯就灭。所以说“数据字典”更像是“命令ID与功能对照表”。
实际上,CANOPEN协议规定了设备数据字典的格式,并对命令ID号进行了规定和划分(具体的规定很复杂,需要请参阅规范)。有一些命令ID的功能是固定的,有一些则可以由设备生产厂家自己决定。命令ID对应的功能也不总是操作这个设备,也可以是读取这个设备的信息,比如设备名等。
接下来的问题是如何向一个设备发送命令ID呢?对此,CANOPEN协议也有规定,在下文中会进行介绍。
7 设备ID与常用通信对象
CANOPEN协议是一个“主-从站协议”,其中规定,在总线上每一个作为“从站”的设备要有一个自己的设备ID(主站设备不做强制要求),称为Node-ID,这个英文名字在许多文章中更常见,范围是1~127(0有特殊用途,不能作为ID分配给设备),同一个总线上不能出现ID号相同的两个从站设备。所以,基于CANOPEN协议的总线上最多有127个从站设备。
那么为什么是127个呢,为了解释这个问题,要先了解CANOPEN协议规定的通信对象。
就像CAN总线协议的基本通信单元称为“帧”一样,CANOPEN协议的基本通信单元叫做“通信对象”(英文为Object,姑且这么翻译吧)。常用的通信对象有NMT、SYNC、EMERGENCY、TIME STAMP、SDO、PDO这几个,他们结构相同,包括funciton Code、Node-ID、DLC(数据长度)、DATA(数据)四部分构成,本质上都是通过封装CAN总线协议的数据帧实现的。他们的不同体现在DATA这个部分,有的对象DATA部分可以完全用来传输数据,有的对象针对DATA部分进一步做了划分和要求。
上文说过,CAN总线协议的数据帧包含一个仲裁段,其前11位是帧ID。CANOPEN协议进一步把帧ID分为FunctionCode和Node-ID两部分,如下:
function Code
由于Node-ID只有7位,最大值为127,所以CANOPEN协议的总线上最多有127个从站设备。functionCode和Node-ID在一起又被称为COB-ID。
DLC则对应数据帧控制段的后4位,表示后续负载数据的长度。
DATA与数据帧的数据段长度相同,至于有何用途,不同对象有不同要求。
functionCode
可见,CANOPEN协议的通信对象就是数据帧,只是进一步规定了数据帧的内容格式,所以说CANOPEN协议是基于CAN总线协议的应用层协议。
上文中提到常用的通信对象有NMT、SYNC、EMERGENCY、TIME STAMP、SDO、PDO,每一种通信对象都有自己的用途。本章重点介绍PDO对象,了解了这个对象的机理,其他对象也可以融会贯通。
8.1 PDO对象概述
PDO对象称为“过程数据对象”,用于无连接的数据传输,即A站发送数据给B站后,不需要等待B站给出确认收到的应答。当然B站也可以应答一些信息给A站,这个有点像网络通信中的UDP协议,即应答不是强制要求的,B站可以回答,也可以不回答。
PDO对象的DATA部分可以完全用来传输数据,没有进步做要求。
根据上文知道,CAN总线本质上是广播的,对于B站来说,它面临三个问题(假设B站是主站):
总线上的通信对象是不是PDO对象,因为不同对象的数据部分的含义是不同的,需要不同的方式去解析;
如何知道PDO对象是A站发出的;
如何回答,即发送PDO给A站。
对于问题1,B站是通过读取functionCode来判断当前总线上是不是PDO对象的。上文提到functionCode有4bit位,即有16个不同的functionCode。CANOPEN协议并没有硬性规定PDO对象必须使用那一个(或几个)functionCode,A站和B站可以自行约定。但是CANOPEN协议给了一个划分的《建议》(用书名号只是为了强调,不是真有一本叫做建议的书),既然是建议,你可以遵守也可以不遵守,但事实上,只要不是特殊情况,所用人都遵守了这个《建议》,如下:
functionCode
NMT(Model Control)
TIME STAMP
0x181-0x57F
0x581-0x67F
NMT(ERROR)
0x701-0x77F
对于问题2和问题3,我们先假设A站的Node-ID为1,并且需要进一步引入TPDO和RPDO的概念才能解决。
从上表中我们注意到PDO的functionCode是一个范围,共8个,即functionCode在此范围内的所有通信对象都是PDO对象。刚才提到的《建议》进一步对PDO进行了细分。以A站的PDO为例,如下表:
functionCode
通过上表,我们可以看出,从站A可以拥有8个PDO对象,其中4个为TPDO,4个为RPDO。下面来回答问题2,B站“如何知道PDO是A站发来的?”。答案就是检测PDO对象是否属于A站的TPDO,即COB-ID等于0x181,0x281,0x381或0x481。
对于问题3,答案是B站(主站)发送属于A站的RPDO。A站检查到总线上有自己的RPDO就知道数据是发送给自己的。
8.2 PDO对象的引申问题
上一节讲了“主-从”站间PDO对象的通信原理。不过有一个大前提就是我们遵循了《建议》,这就引申出如下两个问题:
《建议》给每个从站分配了4个RPDO对象,即每次主站最多只能发送4*8BYTE(64字节)的数据给从站,不够怎么办?
从站与从站之间如何通信?
对于问题1,答案是不去遵守《建议》,自己根据需要规定,比如将0x281也规定为RPDO也可以,只要主站和从站都遵守这个规定就行。但这种情况是不多见的,因为《建议》本身是许多厂商共同商讨的结果,显然满足绝大部分应用情况。
对于问题2,其实超出了CANOPEN协议的应用范围,因为CANOPEN协议是“主-从站”协议,这类协议的特点就是从站之间没有通信的渠道。如果需要通信,也是通过主站中转。比如从站A发给主站,主站再发给从站B,来实现从站A与从站B的通信。从我的工业经验来看,这种从站之间通信的情况就没发生过。
有了PDO对象的基础,SDO对象的说明就容易多了。
SDO对象也分为TSDO和RSDO两种。(遵循《建议》)
SDO对象是用来操作从站设备的数据字典的。
SDO对象是一个有应答的通信对象,即主站发送RSDO给从站后,从站如果接收到,必须发送TSDO给主站进行应答。
SDO对象对DATA段进行了进一步的规定和划分。
以下为SDO对象的结构
functionCode
ControlCode
其中ControlCode、Index、SubIndex和data就是DATA部分,SDO对象对此进行了细分规定。Index,SubIndex和data的含义,可以参考前文数据字典部分的信号灯的例子。
ControlCode在RSDO中经常表示此次操作是写入数据字典还是读取数据字典,在TSDO中表示写入是否成功,或者错误码一类的。虽然只有8bit,但是其构成还是挺复杂的,这里就不详细描述了,可以在网上找更加详细的文档来看。
&link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea.css"&
添加新评论

我要回帖

更多关于 set协议提供安全保证 的文章

 

随机推荐