标识符就是canid
PDO
PDO 是 无应答服务。
PDO 可以在 主站 和 从站 之间进行双向传输,适用于实时控制和数据更新。
SDO
SDO 是 应答服务。
SDO 用于设备的 配置 或 对象字典 的 读写 操作。通常用于设备初始化时的数据读取、写入或修改。
什么是COB标识符???
COB 标识符通常用于定义网络上不同类型的消息,如 控制命令、数据传输、设备状态等。
设备域
1. 自动化系统中独立联网的物理实体,在特定的上下文和分隔符中使用自身接口执行指定的功能。
2. 在自动化系统中向其他实体执行控制、操纵和/或传感功能和相关接口的实体
至少包含一个CANopen设备(数据链路层,网络接口,1个NodeID,一种通信状态)
CANopen设备
1个CANopen包含1-8个逻辑设备,且不属于多个设备域。
逻辑设备
根据设备域模型所组织的一系列对象和行为, 描述了该设备的数据和行为
每个逻辑设备可包含1个逻辑设备状态机和多个虚拟设备。
逻辑设备不可分隔于多个CANopen设备。
虚拟设备
能够像域设备一样完成所属功能事件的软件实体。
每个虚拟设备不可分隔于多个逻辑设备,
每个虚拟设备包含1个虚拟设备状态机。
Node-ID
网络范围内每个 CANopen 设备的独特标识
对象
封装了状态和行为有明确界限和身份的实体
FSA
状态机
逻辑服务对象
提供特定的功能和所有相关的服务。
服务原语
应用程序发起到应用层的服务请求
应用层向应用程序发送的通知,汇报一个应用层检测到的内部事件或者表明其收到一个服务请求
应用程序为接收到的一个汇报向应用层做出应答
应用层为收到应用程序的服务请求所作的响应确认
服务对象
是 CANopen 协议中的一个概念,通常用于设备之间的通信和服务请求
是指设备可以提供的特定服务或功能,这些服务对象可以是用于设备配置、控制、诊断、数据传输等目的
每个设备可以提供多个服务对象,每个服务对象代表设备可以执行的某个操作或服务。例如,设备可能会提供控制、状态读取、数据传输等服务,每个服务都是一个 服务对象
指设备能够处理的具体功能,通常通过 对象字典(Object Dictionary)进行管理
设备控制:本地服务对象可以用于接收并处理来自其他设备的控制命令。
数据传输:一些服务对象可能用于处理实时数据传输请求,例如 PDO(Process Data Object)服务。
状态查询:查询设备的当前状态或错误码。
对象字典操作:一些本地服务对象与 SDO(Service Data Object)操作相关,负责在设备内读取或写入数据。
对象字典
是 CANopen 设备中定义的一个重要数据结构,
它包含了设备的所有可访问对象(包括控制命令、状态信息、参数设置等)
集合了设备上所有影响应用程序对象、通信对象和状态机行为的数据项
在 CANopen 中,每个设备都有一个 对象字典,它是一个由键值对(对象项)构成的集合。每个对象(例如服务对象)都有一个索引和子索引,并包含相关的描述信息。
本地服务对象与远程服务对象的区别
本地服务对象:指的是设备内部处理的服务,通常是设备内部的控制命令、状态读取等。
远程服务对象:这些是通过 SDO(Service Data Object)或其他方式从远程设备请求的服务对象。通过 SDO,设备能够远程访问并操作其他设备的对象字典。
无应答服务
PDO、心跳
应答服务
SDO
事件性质通信机制的基本属性要求定义通信的抑制时间。为保证网络上的低优先级通信对象不被饿死,
需要为通信对象设计抑制时间。即将通信对象定义两次传输服务间的最小时间间隔作为抑制时间
通信协议模型
主/从协议(见 4.4.2)
任意时刻 CANopen 网络中都仅存在一个设备以主设备身份执行特定功能。CANopen 网络中所有其他的设
备均为从设备。按协议规定,主设备会向被寻址从设备(们)发送请求,从设备(们)响应
客户端/服务器协议(见 4.4.3)
客户端发送请求(上传/下载)触发服务器执行某项任务。
在任务完成后服务器返回应答
生产者/消费者协议(见 4.4.4)
生产者发起一个无确认的协议请求。其特点是由生产者发起的需要确认的协议请求
网络系统模型
设备协议
应用协议
物理层
OSI参考模型
介质相关接口
物理介质连接
物理信令
数据链路层
CAN帧类型
应用层
数据类型和编码规则
编码规则定义了数据所表达值的类型和传输语义。值以位序列的形式表达。位序列以字节为传输单元。
各数据类型的编码风格均为小端模式
数据类型定义
由数据值和数据类型编码之间的关系决定
位序列
位序列的基本操作是连接
位序列的传输语法
基本数据类型
NIL
Boolean
Void
Unsigned Interger
浮点数
扩展数据类型
基本数据类型
复合数据类型
通信对象(服务和协议)
过程数据对象(PDO)
由对象字典提供 PDO 数据和配置的接口。数据字典中对应的映射结构决定了一个 PDO 的数据类型和映射关系
PDO 分 两 种 用 法 , 发 送 和 接 收,支 持 TPDO 的CANopen 设备称为 PDO 生产者,支持 RPDO 的称为 PDO 消费者
PDO 由 PDO 通讯参数和 PDO 映射参数描述。
传输模式
同步传输
事件驱动传输
触发模式
事件和定时器驱动
远程请求
同步触发
PDO服务
PDO写服务
PDO 写服务是推模式。可以有多个 PDO 消费者,也可以没有,但 PDO 生产者只能有一个
PDO 读服务
PDO 读服务是拉模式。有一位或更多的 PDO 消费者。但只有一个 PDO 生产者
PDO协议
PDO 写协议
PDO 生产者将 PDO 过程数据发到网络上。网络上可能有 0 到 n 个 PDO 消费者。 在 PDO 消费者(们)接收到有效的 PDO 报文后执行相关操作
PDO 读协议
该 PDO 读服务须应答。一或多个 PDO 消费者发送 RTR 到网络上。PDO 生产者收到 RTR 后回复相应的
PDO。所有该 PDO 的关联消费者接收执行。 PDO 消费者数量 1 到 n 个。读服务是可选的,取决于硬件条件。
寻址 PDO(MPDO)
MPDO 提供了直接访问 CANopen 设备对象字典的服务。限制最大 4 字节数据
有两种 MPDO 使用方法。
第一是目的地址模式(DAM)MPDO,
第二是源地址模式(SAM)MPDO
支持发送 MPDO的 CANopen 设备称为 MPDO 生产者,支持接收 MPDO 的称为 MPDO 消费者
对象字典提供了 MPDO 数据和配置的接口。
MPDO 服务
MPDO 写服务
MPDO 写服务是推模式。可以有多个的 MPDO 消费者,也可以没有,但 MPDO 生产者只有一个
MPDO 协议
MPDO 写协议
MPDO 写服务无应答。MPDO 生产者发送 MPDO 过程数据到网络。可能是有 0 到 n 个 MPDO 消费者,取决于
给定的 node-ID。MPDO 消费者(们)接收到有效的 PDO 应接收处理。
服务数据对象(SDO)
服务端(通常是 从设备)是 被动的,即它 不能主动发起数据传输。它只会在 主设备 发起请求时做出响应。
CANopen 协议设计中,服务端 只在 接收到请求时 执行操作,处理完请求后返回响应。它不主动向 主设备 发送数据。
SDO 提供了直接访问 CANopen 设备对象字典的入口。入口条件包括数据类型和大小。
SDO----分段序列传输:
先发送一个初始化分段,让客户端和服务器各自准备好处理接下来的分段。
SDO 也可以在初始化段中包含多至 4 字节的数据,该机制称为快速 SDO 传输。
SDO----块序列传输
任何类型的 SDO 传输都由客户端发起。数据字典持有者是服务器。客户端或服务器都可以主动中止传输。
SDO服务
SDO 通讯模型是客户端/服务器模型。
SDO 下载服务
客户端使用 SDO 下载服务向服务器(持有数据字典)传输数据,数据的索引和子索引、数据集、大小都将通知服务器。
该服务需要应答。远程返回的结果将会说明请求的成功或失败。失败原因是确定的。
SDO 下载过程至少包括 SDO 下载启动,也许还会有 SDO 段下载服务。
SDO 下载启动服务
客户端使用 SDO 下载启动来请求服务器准备数据下载。要下载的数据大小对于服务器来说是可选的。
一旦 SDO 下载开启,数据集的大小和寻址信息就会提交给服务器。
SDO 分段下载服务
客户端使用 SDO 下载服务传输分段数据给服务器。
如果失败应发起 SDO 中止传输。如果成功,服务器接收该分段数据并为下一段做准备。
SDO 上传服务
客户端通过 SDO 上传服务从服务器(对象字典持有者)获取数据。
DO 上传过程至少包含 SDO 上传启动服务,而 SDO 分段上传服务(数据长度>4 个字节)是可选的
SDO 上传启动服务
客户端通过 SDO 上传启动服务让服务器做好数据上传准备。
该服务带应答。远程结果将表明请求是否成功。如果失败,SDO 中止传输请求会被被执行。如果成功,
数据及其大小作为应答返回
SDO 分段上传服务
客户端通过 SDO 分段上传服务向服务器请求下一个数据分段。
接下来的参数向客户端表明是否还有更多分段或此为最后一个上传分段。
SDO 块下载服务
客户端通过块下载服务向服务器(对象字典持有者)发送数据。
SDO 块下载启动服务
客户端通过 SDO 块下载启动服务通知服务器为下载做准备。
SDO 子块下载服务
客户端通过子块下载服务向服务器发送下一数据块。
SDO 块下载结束服务
客户端通过 SDO 块下载结束服务来结束与服务器的合作。
SDO 块上传服务
客户端通过 SDO 块上传服务向服务器(持有数据字典)请求数据。
SDO 块上传启动服务
客户端通过该服务通知服务器准备好数据上传。
SDO 块上传子块服务
该项服务是由之前的 SDO 上传启动服务或前一次的 SDO 子块上传服务的客户端发起。
该块数据以分段序列的形式传输。每段包含相应的分段数据和从 1 开始到
blksize 的分段序号。参数 blksize 由客户端和服务器之间通过 SDO 块上传启动服务协商好,并且可以
由客户端在块应答里更改。
SDO 块上传结束服务
服务器通过 SDO 块上传结束服务来结束与客户端的合作。最后传给客户端的分段字节里面并不包含有效数据。
SDO 中止传输服务
该服务能够中止 SDO 上传和下载服务,并列出原因。该服务无应答。客户端和服务器在任何时候都可以
发起该服务。如果 SDO 客户端得到了一个明显确认,就会向服务器发送中止服务的确认。
SDO 协议
SDO 一共定义了六种带应答的服务(SDO 下载,SDO 上传,SDO 上传启动,SDO 下载启动,SDO 分段下载
和 SDO 分段上传)和一种不带应答的服务(SDO 中止传输),它们共同作用来进行 SDO 正常(分段)传输和加速传输。
SDO 一共定义了八种带应答的服务(SDO 块下载,SDO 块上传,SDO 块上传启动,SDO 块下载启动,SDO
子块下载,SDO 子块上传,SDO 块上传结束和 SDO 块下载结束)和一种不带应答的服务(SDO 中止传输),
它们共同作用来进行 SDO 块传输。
SDO 下载协议
SDO下载启动协议
SDO分段下载协议
SDO上传协议
SDO上传启动协议
SDO分段上传协议
SDO块下载协议
SDO 块下载启动协议
SDO 子块下载协议
SDO 块下载结束协议
SDO 块上传协议
SDO 块上传启动协议
SDO 子块上传协议
SDO 块上传结束协议
验证 SDO 块传输的 CRC 算法
SDO 中止传输协议
中止代码 描述
0503 0000h 翻转位未变化
0504 0000h SDO 协议超时
0504 0001h 客户端/服务器命令说明无效或未知
0504 0002h 无效的块大小(仅块模式)
0504 0003h 无效的序列号(仅块模式)
同步对象(SYNC)
同步生产者定期广播同步对象。SYNC 提供基本的网络同步机制。
SYNC 服务
同步传输遵守生产者/消费者推送模型,该服务无应答。
同步写服务
SYNC 生产者发送触发信号给消费者,该服务无应答。
同步协议
同步写协议
时间戳对象(TIME)
TIME 生产者广播时间戳对象,CANopen 设备通过时间戳对象生产者的 TIME 对象校准本地时间。
TIME 服务
时间戳对象遵守生产者/消费者模型。
TIME 写服务。
推送模型适用于 TIME 写。有零至多个消费者,但生产者只有一个。
TIME 协议
TIME 写协议
应急对象(EMCY)
应急对象的使用
应急对象由 CANopen 设备的内部错误触发并且由 CANopen 设备应急生产者对象负责发起。
一个“错误事件”仅触发一次应急对象通信
错误码 描述
00 xxh 错误复位或没有错误
10 xxh 常规错误
20 xxh 当前的
21 xxh 当前,CANopen 设备输入侧
22 xxh 当前 CANopen 设备内部
23 xxh 当前,CANopen 设备输出端
应急对象是可选实现的。如果 CANopen 设备支持 应急对象,它应支持至少 2 个错误代码 0000h 和1000h。 其他所有错误代码都是可选的。
应急的对象服务
应急对象通信遵守的生产者/消费者模型
EMCY 写服务
EMCY 写服务是推送模型。有零至多个消费者,而 EMCY 生产者只有一个。
应急对象协议
EMCY 写协议
网络管理NMT
CANopen 设备网络管理(NMT)为主从结构模型。NMT是 CANopen 网络中专门用于网络管理的控制消息。
NMT主站一般是开发板,主控制器等用于发送命令的,而从站一般是传感器、机器人等用于执行命令的。
NMT 对象用于执行 NMT 服务,主要用于 设备管理 和 状态控制。
通过 NMT 服务,CANopen 设备才能够执行初始化、启动、监控、复位或停止等行为。
所有的 CANopen 设备被视为 NMT 从站。NMT 从站使用 node-ID 标识其身份,取值范围[1..127]
NMT 消息通过特定的 CAN ID(通常为 0x000)发送,并包含不同的控制命令,指示设备采取相应的操作
通过节点控制服务,NMT 主站控制 NMT 从站状态
NMT 主站状态由本地服务控制。节点控制服务可由本地应用程序初始化
启动远程节点服务
NMT 主站通过 NMT 服务启动远程节点,从而更改所选 NMT 从站状态。
停止远程节点服务
NMT 主站通过 NMT 服务停止远程节点,从而更改所选 NMT 从站状态。
进入配置服务
NMT 主站通过 NMT 服务使远程节点进入配置态,从而更改所选 NMT 从站状态。
复位节点服务
MT 主站通过 NMT 服务复位远程节点,从而更改所选 NMT 从站状态。
复位通信服务
NMT 主站通过 NMT 服务复位远程节点通信部分,从而更改所选 NMT 从站状态。
错误控制服务
错误控制服务用于检测 CAN 网络内出现的故障。
CANopen 设备的本地错误可能导致复位或状态变化。
节点监护事件服务
通过该服务,NMT 主站能够知悉 node-ID 标识的远程设备产生或解决错误。
生存监护事件服务
通过该服务,NMT 从站能够获知远程错误的发生和解决。
心跳事件服务
通过该服务,心跳消费者能够获悉 node-ID 标识的 CANopen 设备发生错误、得到解决或 NMT 状态切换。
Boot-up 事件服务
通过该服务,NMT 从站上报从初始化切换到配置态。
NMT 协议
节点控制协议
启动远程节点协议
停止远程节点协议
进入配置态协议
复位节点协议
复位通信协议
错误控制协议
节点监护协议
心跳协议
boot-up 协议
网络初始化和系统 boot-up
简化的 NMT 启动
NMT 状态机
CANopen 设备在初始化后直接进入配置态。在这一状态可以对CANopen 设备配置参数以及通过 SDO 服务进行 CAN-ID-allocation(例如使用配置工具)。
然后 CANopen设备就可以直接进入运行态。
NMT 状态
NMT 初始化态
1. 初始化:CANopen 上电或硬复位后的第一个 NMT 子状态。执行基本的 CANopen 设备初始化后自动进入复位应用子状态。
2. 复位应用:该子状态下,制造商协议区和标准设备协议区参数被赋上电值。之后自动进入复位通信子状态。
3. 复位通信:该子状态下,通信协议区参数被赋上电值。然后 CANopen 设备执行 boot-up 写服务并进入配置态。
NMT 配置态
在配置态允许 SDO 通信,不允许 PDO 通信,此状态通常用于配置 PDO 的参数和映射对象(PDO 映射)等。
NMT 运行态
此状态允许所有通信服务。传输 PDOs,通过 SDO 访问数据字典。
NMT 停止态
切换 CANopen 设备进入 NMT 停止态来终止所有通信服务(除节点保护和心跳,如果被激活的话)。
NMT 状态和通信对象关系
状态与通信对象之间的关系。
NMT 状态转换
NMT 状态转换条件
接到 NMT 节点控制服务
硬件复位,或由设备和应用协议定义的应用事件触发的本地节点控制服务。
通用预定义连接集
为了减少配置工作量而定义的简单的网络 CAN-ID 分配方案。
这些 CAN-IDs 将在 NMT 初始化态完成进入配置态后生效(如果未经修改)。
特定预定义连接集
用于替换通用预定义连接集,其遵守某应用协议。
受限 CAN-IDs
受限 CAN-ID 不能用于任何可配置通信对象,SYNC、TIME、EMCY、PDO 和 SDO 都不行
对象字典
常规结构
标准对象字典的整体布局定义如下
索引 对象。
0000h 未使用
0001h–001Fh 静态数据类型
0020h–003Fh 复合数据类型
0040h–005Fh 制造商指定复合数据类型
0060h–025Fh 设备协议指定数据类型
0260h–03FFh 保留
0400h–0FFFh 保留
1000h–1FFFh 通信协议区
2000h–5FFFh 制造商指定协议区
6000h–67FFh 标准化协议区 1 逻辑设备
6800h–6FFFh 标准化协议区 2 逻辑设备
7000h–77FFh 标准化协议区 3 逻辑设备
7800h–7FFFh 标准化协议区 4 逻辑设备
8000h–87FFh 标准化协议区 5 逻辑设备
8800h–8FFFh 标准化协议区 6 逻辑设备
9000h–97FFh 标准化协议区 7 逻辑设备
9800h–9FFFh 标准化协议区 8 逻辑设备
A000h–AFFFh 标准网络变量区
B000h–BFFFh 标准系统变量区
C000h–FFFFh 保留
索引和子索引的使用
16 位的索引可寻址对象字典的所有对象。简单的变量可由索引直接引用。记录和数组可由索引寻址其数据的整体机构。
对象代码的使用
对象代码表达了对象字典特定索引处的对象类型。
数据类型的使用
对象的数据类型信息包括下列预定义类型:BOOLEAN、FLOAT、UNSIGNED、INTEGER、VISIBLE/OCTET
STRING、TIME_OF_DAY、TIME_DIFFERENCE 和 DOMAIN(见 7.1)。
访问权限的使用
该属性定义了对象的访问权限。其视角是面对 CANopen 网络设备。
类别和条目类别的使用
类别和条目类别定义了对象是强制性的、可选的还是条件的。
ANopen 设备必须支持强制对象,可以支持可选对象。
数据类型条目的使用
静态数据类型放在对象字典里只是出于定义的目的。
每个 CANopen 设备不需要支持所有已定义的数据类型。CANopen 设备仅需支持它在 1000h 到 AFFF 用到的数据类型
对象字典条目的组织结构
如果某个对象字典对象包含几个分项,子索引 00h 描述了最大子索引,不计入 FFh,其对象条目编码为UNSIGNED8。
预定义复合数据类型规范
PDO 通讯参数记录规格
PDO 映射参数记录规格
SDO 参数记录规格
身份记录规格
OS 调试记录规格
OS 命令记录规格
通信协议规范
对象及其条目说明规范
对象字典对象的条目结构描述遵守以下方式:所有设备协议、接口协议和应用协议都基于通信协议所使用的对象及其条目说明规则。
通信协议对象的详细规范
对象 1000h:设备类型
此对象提供有关设备类型的信息。该对象描述了逻辑设备类型及其功能。
值定义
对象 1001h:错误寄存器
此对象提供错误信息记录
对象 1002h:制造商状态寄存器
此对象为制造商提供一个常规状态寄存器。
对象 1003h:预定义错误域
此对象表达 CANopen 设备上产生的错误,由应急对象编入,并提供错误历史纪录。
对象 1005h:COB-ID 同步消息
此对象为已配置的同步(SYNC)对象 COB-ID。
此外,它定义了 CANopen 设备是否生成同步。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】