加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

简单实用的CANopen介绍

2023/08/18
9414
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
实物图
  • 方案介绍
    • 1.什么是CANopen?
    • 2.1 CANopen框架
    • 2.2 CANopen通信协议/服务
    • 2.5 PDO——操作CANopen网络
    • 2.6 虹科CANopen解决方案
  • 相关文件
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

目前,CANopen通讯协议已经在工业领域得到了广泛的使用,由于其面向对象的设计思路,CANopen协议已成为欧洲等国家的自动化公司标配的通讯接口之一。在本系列文章中,我们将介绍CANopen协议的基础内容,包括对象字典、服务、SDO、PDO和主/从站节点等。如需购买CANopen相关产品或需要CANopen培训服务,请发邮件到support@hkaco.com联系虹科工业控制团队​!

1.什么是CANopen?

CANopen是一种基于CAN的通信协议。这项协议非常有用,因为它可以让设备、节点(如工业机械)之间具有现成的互操作性,并且提供了安装前和安装后配置设备的标准方法。CANopen最初是为面向运动的机器控制系统设计的,如今,它被广泛用于电机控制(步进/伺服电机)领域,并在以下应用中得到广泛使用:

  • 机器人技术(包括自动化机器人、传送带和其他工业机械)
  • 医疗(包括X射线发生器、注射器、病人床和透析设备)
  • 汽车(包括农业、铁路、拖车、重型、船舶等)

CANopen是一个基于CAN总线的“高层协议”,这意味着CAN总线(ISO 11898)就像集装箱的卡车一般作为CANopen信息的“运输工具”。在OSI模型中, CAN总线代表两个最低层(物理层数据链路层)。这意味着,CAN只是实现了带有11位CAN ID、远程传输(RTR)位和64个数据位(与更高层的协议相关)的字段的帧的传输。换言之,CAN总线在CANopen中的作用与在J1939协议相同。而CANopen则实现了OSI模型的第七层,并能够适应除CAN以外的其他数据链路层协议(例如EtherCAT、Modbus、Powerlink)。

值得关注的是,随着CAN FD的推出,CANopen FD作为下一代CANopen标准,可能会发挥着越来越重要的作用。具体细节,欢迎到CiA官网中查看。

相较于CAN总线和J1939协议,CANopen协议新增了6个核心概念:

  • 通信模式。设备/节点的通信有3种模式: 主/从站、客户端/服务器和生产者/消费者。
  • 通信协议。用于通信的协议,如配置节点(SDO)或传输实时数据(PDO)等。
  • 设备状态。一个设备支持不同的状态,一个 "主站 "节点可以改变一个 "从站 "节点,包括重置等操作。
  • 对象字典。每个设备都有一个OD,其中有指定设备配置等的条目,它可以通过SDO访问。
  • 电子数据表。EDS是OD条目的标准文件格式,它允许使用服务工具来更新设备。
  • 设备设置文件。描述了I/O模块(CiA 401)和运动控制(CiA 402)等供应商独立性

2.CANopen通信基础知识

在CANopen网络中,需要多个设备进行通信,例如,在工业自动化设置中,你可能有一个带有多个伺服电机节点和一个控制接口/PC节点的机械臂。CANopen中存在着三种通信模式,每种模式都与我们所讨论的CANopen协议紧密相连。下面将简单介绍这三种模式:

第一, 主/从站。一个节点(例如控制接口)作为应用主站或主控制器。它向从站设备(例如伺服电机)请求数据。这个过程被用于诊断或状态管理。在标准应用中,可以有0到127个从站。但需要注意,请注意:在单个CANopen网络中,可以有不同的主机控制器共享同一个数据链路层。

第二, 客户端/服务器。客户端向服务器发送数据请求,服务器回复请求的数据。例如,当应用程序主站需要从站的OD中获取数据时使用这一模式。从服务器上读取是一种 "上传",而“写入”是一种 "下载"(该术语采用服务器端的角度)。
第三, 消费者/生产者。该模式中生产者节点向网络广播数据,由消费者节点消费。生产者根据请求(拉模型)或没有特定请求(推模型)发送此数据。

显然,这些模型实际上是相同的,但为了术语的一致性,我们对它们进行了区分。

2.1 CANopen框架

为了理解CANopen通信,有必要对CANopen的CAN报文进行分解。如下图,11位的CAN ID被称为通信对象标识符(COB-ID),它被分成两部分。前4位相当于功能代码,接下来的7位包含节点ID。

为了理解COB-ID的工作原理,需要从简单的CANopen网络中如何使用标识符的预定义分配开始。

如上图,COB-ID(381、581等)与通信服务(传输PDO 3、传输SDO等)相关联,因此,COB-ID详细说明了哪个节点正在发送/接收数据,以及使用了什么服务。如下图的例子,一个节点ID为5的CANopen设备将通过11位的CAN ID 585传输SDO,这对应于二进制功能代码1011,节点ID 5(在二进制中为0000101)。

2.2 CANopen通信协议/服务

接下来,我们将简要介绍CANopen的7种服务类型,以及它们如何利用8个CAN帧数据字节。

2.2.1 网络管理(NMT)

NMT服务用于通过NMT命令(如:启动、停止、复位)来控制CANopen设备的状态(如:预运行、运行、停止)。
为了改变状态,NMT主机发送一个带有 CAN ID 0的2字节消息(即功能代码0和节点ID 0)。所有从站节点都处理这个报文。第一个CAN数据字节包含请求的状态,而第二个CAN数据字节包含目标节点的节点ID。节点ID 0表示广播命令。

可能的命令包括转换到运行(状态01)、停止(状态02)、预运行(状态80)以及重置应用程序(81)和重置通信(82)。例如:将节点0x06设置为运行模式: 000 01 06

2.2.2 同步(SYNC)

SYNC报文用于同步几个CANopen设备的输入和响应--通常由应用主站触发。应用主机将SYNC消息(COB-ID 080)发送到CANopen网络(带或不带SYNC计数器)。多个从节点可以配置为对SYNC做出反应,并通过传输同时捕获的输入数据或通过与参与同步操作的节点同时设置输出来响应。使用SYNC计数器可以配置几组同步操作的设备。

2.2.3 紧急情况 (EMCY)

紧急服务用于设备出现致命错误(如传感器故障)时,允许它向网络的其他部分指示这一点。受影响的节点以高优先级向网络发送单个EMCY消息(例如,节点5的COB-ID 085)。数据字节包含有关错误的信息,可以查找详细信息。

2.2.4 时间戳(TIME) [PDO]

通过这种通信服务,可以分配全球网络时间。时间服务包含一个6字节的日期和时间信息。应用主机发送 CAN ID 为100的TIME消息,其中最初的4个数据字节包含以毫秒为单位的午夜之后的时间,接下来的2个字节包含自1984年1月1日以来的天数。

2.2.5 过程数据对象 [PDO]

PDO服务用于在设备之间传输实时数据,例如位置等测量数据或扭矩请求等命令数据。在这方面,它类似于J1939中的广播数据参数。关于PDO服务,我们将在下文中进行详细介绍。

2.2.6 服务数据对象 [SDO]

SDO服务用于访问/改变CANopen设备的对象字典中的值。例如,当应用主站需要改变CANopen设备的某些配置时,可以通过SDO服务来实现。

2.2.7 节点监控(心跳)[SDO]

心跳服务有两个目的:提供一个“活动”的消息和确认NMT命令。NMT从设备周期性地(例如每100毫秒)发送心跳消息(例如节点5的CAN ID为705),在第一个数据字节中包含节点的“状态”。如果在特定时间限制内没有收到任何消息,心跳消息的“消费者”(例如 NMT 主设备和可选的任何其他设备)就会做出反应。例如:节点5处于预运行模式,周期性发送:705 7F

2.3 对象字典

在7个CANopen服务中,PDO和SDO服务特别重要,因为它们构成了大多数CANopen通信的基础。下面我们将进行详细介绍,但在此之前我们需要了解CANopen的一个核心概念:对象字典。

所有的CANopen节点必须有一个对象字典(OD),对象字典是一个标准化结构,包含描述CANopen节点行为的所有参数。

OD条目通过一个16位的索引和8位的子索引进行查询。例如,符合CANopen标准的节点OD的索引1008(子索引0)包含节点设备名称。

具体来说,对象字典中的条目由属性定义的:

  • 索引:对象的16位地址
  • 对象名称:制造商的设备名称
  • 对象代码:数组、变量或记录
  • 数据类型:例如VISIBLE_STRING、UNSIGNED32或记录名称
  • 访问: “rw”(读/写),“ro”(只读)或 “wo”(只写)
  • 类别:这表明参数是强制性的还是可选的

OD标准化部分

在对象字典被分成标准化的部分中,有一些条目是强制性的,而另一些是完全可定制的。重要的是,一个设备(例如一个从站设备)的OD条目可以被另一个设备(例如一个主设备)通过CAN访问,例如使用SDO。
这可以让主站改变从站节点是否通过特定的输入传感器记录数据,或改变从站发送心跳的频率。阅读电子数据表和设备配置文件可以帮助理解OD。

电子数据表(EDS)

在实践中,配置/管理复杂的CANopen网络将会用到一些合适的软件工具。为了简化这一点,CiA 306标准定义了一种人类可读且和机器友好的INI文件格式,作为设备OD的“模板”--例如 “ServoMotor3000”。此EDS通常由供应商提供,包含所有设备对象(但不包括值)的信息。

设备配置文件(DCF)

假设一家工厂购买了一台ServoMotor3000,以整合到他们的传送带上。在操作过程中,操作员编辑了设备的EDS,并在EDS中添加了特定的参数值或改变了每个对象的描述名称。这样一来,操作者就有效地创建了所谓的设备配置文件(DCF)。有了这个文件,ServoMotor3000便能够集成到现场的特定CANopen网络中。

查看真实的EDS/DCF示例是理解CANopen对象字典的最佳方法之一,在下图中,您可以留意EDS和DCF对象条目之间的区别以及DCF如何包含特定的参数值。

此外,我们建议到官网上查看CiA 306标准,通过实际的例子对OD、EDS和DCF有更深入的了解。

如前文所述,DCF通常在设备集成时创建。然而,经常需要在初始配置后读取或改变一个节点的对象值——这就是SDO服务的作用所在。

2.4 SDO——配置CANopen网络

SDO服务允许CANopen节点通过CAN网络读取/编辑另一个节点的对象字典的值。正如在“通信模型”中提到的,SDO服务使用“客户端/服务器”模式。具体来说,一个SDO “客户端”与一个专门的SDO“服务器”发起通信。其目的可以是更新一个OD条目(称为“SDO下载”)或读取一个条目(“SDO上传”)。在简单的主/从网络中,具有NMT主站功能的节点充当所有NMT从站节点读取或写入其OD的客户端。

示例:客户端节点SDO下载

客户端节点可以通过在 CAN 帧下方的广播来启动到节点 5 的 SDO 下载 - 这将触发节点 5(并被其他节点忽略,见上图)。SDO“接收”(即请求)CAN 帧如下所示:

SDO消息变量解释

  • 首先,COB-ID 605反映了“SDO接收”的使用(COB-ID 600 +节点ID)
  • CCS(客户端命令指定符)是传输类型(例如,1:下载,2:上传)
  • n是字节区4-7中不包含的字节数(如果e和s被设置为有效)
  • e表示“加速传输”,且所有数据都在单个CAN帧中(如果有设置)
  • s表示数据大小显示为n(如果有设置)
  • 索引(16位)和子索引(8位)反映了要访问的OD地址
  • 最后,节点5将相应字节4-7中包含的相关数据

一旦主站节点(客户端)发送CAN帧,从站节点5(服务器)通过COB-ID 585的“SDO传输”进行响应。响应包含索引/子索引和4个空数据字节。自然,如果客户端节点请求上传(即从节点5OD读取数据),节点5将响应字节4-7中包含的相关数据。此外,对于更大的数据场景,可以使用SDO分段/块进行传输。

一般来说,SDO很灵活,但也会带来较高的成本,这使得SDO不太适合实时操作数据。这就是PDO的用武之地。

2.5 PDO——操作CANopen网络

CANopen的PDO服务用于在CANopen节点之间有效地共享实时操作数据。例如,PDO将携带来自压力传感器的压力数据或来自温度传感器的温度数据。原则上,SDO服务也能实现共享实时操作数据,但由于单个SDO响应只能携带4个数据字节,出于成本原因,我们不建议这么做。

此外,假设一个主站节点需要来自节点5的两个参数值(例如“SensTemp2”和“Torque5”)。如果通过SDO来实现,需要4个完整的CAN帧(2个请求和2个响应)。相比之下,一个PDO消息可以包含8个完整的数据字节,而且它可以在一个帧内包含多个对象参数值。因此,在SDO服务中至少需要4个报文,而在PDO服务中则可能只需要1个报文就可以完成。

PDO通常被看作是最重要的CANopen协议,因为它承载了大量的信息。下面我们将介绍CANopen的PDO服务是如何工作的。

PDO服务使用的是“消费者/生产者”模型。因此,生产者 "生产数据",它使用发送PDO(TPDO)将其传送给“消费者”(主站)。反之,它可以通过“接收PDO”(RPDO)从消费者那里接收数据。

例如,生产者节点可以被配置为对应的同步触发,例如每隔100ms广播给消费者。然后,节点5可以在传输带有COB-ID 185的PDO下广播:

请注意这里的数据字节是如何装入3个参数值的。这些值反映了节点5的特定OD条目的实时数据。使用这些信息的节点(消费者)需要知道如何解释PDO数据字节。

在某种程度上,PDO服务有点像J1939 PGN和SPN,这类似于特定J1939 参数组(PG)如何在 8 个数据字节中包含多个 SPN/信号(也称为数据参数)。J1939 CAN 帧不需要在“解码”信息上浪费数据字节,因为相关节点(以及外部工具通过例如J1939 DBC 文件或 J1939 PDF 标准)知道这一点。问题在于,在 CANopen 中,这些“PDO 映射”通常是可配置的,并且可以在创建 DCF 或通过 SDO 服务期间进行更改。

2.6 虹科CANopen解决方案

2.6.1 虹科CANopen数据记录仪——CANedge2

CANopen经常被用于仓库中的电动叉车或自动导引车中,对CANopen数据进行监测和分析有利于改善管理,比如监测充电状态有助于减少故障和改善电池寿命,并且工业机械可以通过云端的物联网CAN记录器进行监控,根据CANopen数据预测和避免故障。此外,CAN记录器可以作为工业机械的“黑匣子”,提供数据用于解决OEM和用户之间的纠纷,或作为罕见问题诊断的一部分。

2.6.2 虹科CANopen IO模块

虹科HK-CIO系列是支持CANopen协议的远程IO模块,IO类型包含数字量,模拟量,高速计数器,脉冲输出,PWMPT100/1000等,紧凑型设计,支持DIN导轨安装,IO与CANopen通讯之间相互电气隔离

2.6.3 虹科CANopen协议开发方案

虹科CANopen源代码实施全功能符合CiA 301标准草案,支持快速且标准地开发你的CANopen主站或从站设备,包括NMT主站(网络管理)、LSS主站(层设置服务)或SDO客户端。

产品及方案

  • CAN卡(USB,PCI,PCIe,MiniPCIe等多种接口类型)
  • 通讯协议板卡(CO,ECAT,DP,PN,DN,EIP,Modbus,CC,IO-Link等多种协议)
  • 通讯协议网关(CO,ECAT,DP,PN,DN,EIP,Modbus,CC,IO-Link等多种协议)
  • 通讯协议IO模块(CO,ECAT等多种协议)
  • 通讯协议嵌入式模块(CO,ECAT,PN,EIP,Modbus,CC-Link等多种协议)
  • 通讯协议协议栈(CO,IO-Link,ECAT,PN,EIP等多种协议)
  • “新”以太网开发方案(TSN IPcore,HSR/PRP IPcore,网管/非网管以太网IPcore,同步IPcore等)
  • “新”以太网硬件解决方案(TSN板卡,TSN交换机,TSN评估套件,HSR/PRP板卡,HSR/PRP交换机)
  • 工控机(涵盖多种性能、尺寸和安装方式选择)
  • 【虹科干货】简单实用的CANopen介绍.docx

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
HCPL-316J#500 1 Avago Technologies BRUSH DC MOTOR CONTROLLER, 2.5 A, PDSO16, SO-16
$19.77 查看
TPS2410PW 1 Texas Instruments 0.8-V to 16.5-V 1.2A IQ 290-uA Igate source N+1 and OR-ing power rail controller 14-TSSOP -40 to 85

ECAD模型

下载ECAD模型
$4.88 查看
NE555P 1 Texas Instruments Single Precision Timer 8-PDIP 0 to 70

ECAD模型

下载ECAD模型
$0.38 查看

相关推荐

电子产业图谱

虹科是一家资源整合及技术服务落地供应商,与全球顶尖公司深度技术合作,专注于制造业、汽车、生物、医药、测试与测量、广播电视与媒体、通信、网络安全、光电等领域,为客户提供:智能自动化、工业物联网、智能感知、数字化+AR、光电、网络安全、测试测量、卫星与无线通信、医药环境监测与验证、生命科学、汽车电子、汽车维修诊断、云科技等解决方案。虹科始终致力于为行业客户提供创新及前端的产品和技术解决方案,为科技社会发展助力加码。