广播命令
二、通信类型
CANOpen有三种通信方式: 主/从通信方式
服务器/客户端通信方式 生产商/顾客通信方式
2.1主/从通信方式(NMT)
对某一特点功能而言,一个网络中只有一个主机,其他全为从机。由主机发送请求信号,从机发送相应信号(如果需要)
主机发出命令,从机作出响应,但不回送数据
主机发出命令,从机作出响应,同时回送数据确认 2.2服务器/客户端通信方式(SDO)
这种关系指发生在一个服务器和一个客户端之间,客户端发送命令,服务器执行后,回答客户端
2.3生产商/顾客通信方式(SYNC、Time Stamp、EMCY)
这种通信方式有Push和pull两种模式,网络中在这一个生产厂,0或多个顾客。 2.3.1push模式
厂商发送命令,顾客执行,不需回送数据
2.3.2 pull模式
厂商发送命令,顾客执行,回送证实数据
三PDO传送模式
PDO分为TPDO(发送PDO)与RPDO(接收PDO)两种,PDO的传送模式有两种:同步传送与异步传送。同步传送又分为周期传送与非周期传送 3.1同步传送
由某一个同步应用在网路上周期性的发送同步对象,及发送SYNC帧,该同步应用可以是主机也可以是从机
PDO通信参数中的传输类型说明传送模式与触发方式,
TPDO:传送类型同时说明其传送率,以基本传送周期的倍数表示。
传送类型为0时,表示当某事件发生后,收到一个同步对象帧(SYNC)时,立刻进行数据传输。(非周期传送)
传送类型为1时,表示当每收到一次同步对象帧(SYNC)时,传送一次数据。(周期传送)
传送类型为n时,表示当每收到n次同步对象帧(SYNC)时,传送一次数据。(周期传送)
RPDO:接收是在收到SYNC信号后,运行接收,于传输参数定义的传送率。
传输类型 252 为非周期传输,在接收到同步对象后进行采样但不发送,在接收到请求该数据的远程帧后发送。 3.2异步传送
TPDO: 异步传送与SYNC无关,
传输类型 253-255 为异步传输,定义为此三种类型的 TPDO在接收到远程帧或规定的事件发生后进行传输。
3.3触发模式: 触发方式有三种 3.3.1事件触发方式 对于周期性传送,接收到的SYNC报文达到设定数量,相当于出发事件,引起一次发送。 对于非周期性传送由设备子协议设定的事件触发发送 3.3.2定时器触发 当设定的时间达到后,触发一次发送 3.3.3远程帧触发 在收到其他设备发送的远程帧后,启动一次异步传送 3.4PDO协议
PDO的通信模式相当于厂商/顾客的通信模式,包含如下参数: PDO数量:1~512, 用户类型:厂商/顾客
数据类型:由PDO映射确定 禁止时间:n*100ns
索引20h描述PDO的通信参数,索引21描述PDO的映射参数 3.4.1写PDO
使用厂商/顾客模式的PUSH形式,厂商主动发送PDO 3.4.2读PDO
使用厂商/顾客模式的PULL形式,某一顾客发送远程帧,传送发送PDO,这是可选模式,所有的PDO都可以接收,。这种模式若PDO发送的数据量L大于PDO映射定义的数据量n,取前那个数据,若PDO发送的数据量L小于PDO映射定义的数据量n,若顾客支持Emergency报文,发送Emergency报文,错误代码为8210 四SDO传送模式
SDO以段的形式发送,首先发送的是初始化阶段的段,以加速传送方式传送,包含4个以内字节的数据,索引为22h的对象字典描述SDO通信参数。相应的对象字典的条目通过下式计算:
SSDO(RSDO)通信参数索引=1200h+SSDO_No-1 CSDO(TSDO)通信参数索引=1280h+CSDO_No-1 4.1SDO协议 SDO参数:
SDO数量:1~128,
用户类型:客户端/服务器
Index和subindex的数据类型有多种形式:structure unsigned(16),unsigned(8) Index说明对象字典的条目,subindex说明条目中的具体内容 传送类型:数据在4个字节以下:加速传送
数据在4个字节以上:分段传送或块传送 数据类型:由index和subindex确定 禁止时间:n*100ns
5对象字典
5.1对象字典的通用格式
Index:指示该对象在对象字典中的位置,不包含子索引 Object:按照下表确定的对象名称 表37
Name:是该对象功能的简单文本描述
Type:提供关于对象类型的信息,可能的类型包括:BOOLEAN, floating point number, UNSIGNED Integer, Signed Integer, visible/octet string, timeof-day, time-difference and DOMAIN,还包括预定义的复杂数据类型PDOMapping和厂商或设备预定义的特殊的复杂数据类型
Attribute:定义从总线看向设备时的访问权限,如下所示
M/O:表明该对象是强制(Mandatory)的还是可选(Optional)的 5.2对象字典的内容
下表给出对象字典的整体布局 表39
索引01h~1Fh包含标准数据类型
索引20h~23h包含预定义的复杂数据类型
索引24h~3Fh预留
索引40h~5Fh厂家自由定义自己的复杂数据类型 索引60h~7Fh包含设备子协议说明的标准数据类型 索引80h~9Fh包含设备子协议说明的复杂数据类型 索引A0h~25Fh包含多功能设备模块中的数据类型
索引1000h~1FFFh包含对象字典中相关通信解释内容。这些内容称为通信条目,对于所有设备是一样的
索引2000h~5FFFh留给厂家定义子协议 索引6000h~9FFFh包含标准设备子协议参数 索引A000h~FFFFh预留
设备不必支持所有的数据类型,只要支持1000h~9FFFh中用到的数据类型即可 对象字典条目结构类型的组织
若对象字典的某一条目包含子目录,则子索引0的内容为子索引的个数,不算子索引为FFh这一条。FFh这一条表示内容如下:
这一条是可选项
预定义的复杂数据类型 索引20h~23h预定义复杂数据类型:thePDO CommPar record(PDO_COMMUNICATION_PARAMETER), the PDO Mapping APPLICATION LAYER CANopen CiA82record (PDO_MAPPING), the SDO Parameter record (SDO_PARAMETER) and the Identity record (IDENTITY).其具体内容解析如下:
6 通信协议说明
对象字典条目的结构按照如下方式进行描述: 所有设备 接口 应用协议
6.1对象规范细节
对象代码必须是上表内容中的一个,为了便于阅读,对象表述还包含对象名
对于简单变量值描述只出现一次,且不包含sub-index和Entry Category,对于复杂数据类型必须包括上述所有内容。
6.2对象字典中有关通信方面的条目概述
表47给出由通信子协议定义的对象字典相关条目的概况
若某设备支持PDO,则必须包含相应的PDO communication parameter and PDO mapping条目(强制),若支持SDO必须包含相应的SDO parameters(强制) 6.3通信子协议的特殊对象的详细描述 Object 1000h: 设备类型
本条包含有关设备类型的信息。描述设备类型及他的功能。有两个16位的数据组成,第一的16位描述所使用的设备子协议,第二个16位给出设备可选功能的附加信息。附加的信息参数是设备子协议特定的,有各自的设备子协议确定。值0000h表示这个设备不是标准的设备子协议。对于多设备模块,附加信息参数包括FFFFh且1000h所参考的设备子协议号是对象字典中第一个设备的设备子协议,其他设备子协议的设备子协议存储在67FFh+x*800h的对象内,x=内部设备号(0~7)。
数据类型
下表是CANOpen支持的数据类型,这些数据类型的编码表如下:第一列是在IEC 61131-3中的定义,第二列是在CANOpen中的等价定义,第三列是数据对应的数据长度,第四列是该数据类型对应的实际编码
下表的数据类型不能通过PDO发送
下表中是不同数据类型之间如何进行转换
预定义的连接集
CAN的帧结构
真正受控的报文为 COB_ID(11位) RTR(远程桢标志) 数据0 数据1 数据2 数据3 数据4 数据5 数据6 数据7 预定义的功能码及COB_ID列表 广播对象 功能码(2进制) COB_ID(2/16进制) 0000 0001 0010 对等对象 0001 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1110 0001+NODE_ID/001h+NODE_ID 0011+NODE_ID/180h+NODE_ID 0100+NODE_ID/200h+NODE_ID 0101+NODE_ID/280h+NODE_ID 0110+NODE_ID/300h+NODE_ID 0111+NODE_ID/380h+NODE_ID 1000+NODE_ID/400h+NODE_ID 1001+NODE_ID/480h+NODE_ID 1010+NODE_ID/500h+NODE_ID 1011+NODE_ID/580h+NODE_ID 1100+NODE_ID/600h+NODE_ID 1110+NODE_ID/700h+NODE_ID EMCY(Peer-to-Peer Objects) PDO1(发送/Peer-to-Peer Objects) PDO1(接收/Peer-to-Peer Objects) PDO2(发送/Peer-to-Peer Objects) PDO2(接收/Peer-to-Peer Objects) PDO3(发送/Peer-to-Peer Objects) PDO3(接收/Peer-to-Peer Objects) PDO4(发送/Peer-to-Peer Objects) PDO4(接收/Peer-to-Peer Objects) SDO(发送/Peer-to-Peer Objects) SDO(接收/Peer-to-Peer Objects) NMT 错误控制(Peer-to-Peer Objects) 0000 /000h 0001 /080h 0010 /100h 含义 NMT(Broadcast Objects) SYNC(Broadcast Objects) 时间戳(Broadcast Objects) COB_ID即11位仲裁区
数据区列表 功能码(2进制) 含义 0000 0001 NMT SYNC/EMCY 字节0 字节1 字节2 字节3 字节4 字节5 字节6 字节7 命令字 NODE_ID 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1110 时间戳 PDO1(发送) PDO1(接收) PDO2(发送) PDO2(接收) PDO3(发送) PDO3(接收) PDO4(发送) PDO4(接收) SDO(发送) SDO(接收) NMT 错误控制 数据0 数据1 数据2 数据3 数据4 数据5 数据6 数据7 数据0 数据1 数据2 数据3 数据4 数据5 数据6 数据7 数据0 数据1 数据2 数据3 数据4 数据5 数据6 数据7 数据0 数据1 数据2 数据3 数据4 数据5 数据6 数据7 数据0 数据1 数据2 数据3 数据4 数据5 数据6 数据7 数据0 数据1 数据2 数据3 数据4 数据5 数据6 数据7 数据0 数据1 数据2 数据3 数据4 数据5 数据6 数据7 数据0 数据1 数据2 数据3 数据4 数据5 数据6 数据7 命令字 索引0 索引1 子索引 数据0 数据1 数据2 数据3 命令字 索引0 索引1 子索引 数据0 数据1 数据2 数据3 从节点 状态
1.CAN初始化:
1.1初始化本节点ID
心跳报文(包括发送时间间隔,报文 ID,长度以及数据初始化为 0) SDO 响应/中止报文(包括报文 ID,长度以及数据初始化为 0) 1.2初始化 RPDO
① 检查RPDO 数目的范围和节点ID 的范围(1-127) 以及 PROD 指向过程映射数组
的偏移量(offset) 是否超过映射数组的最大范围;
② 初始化通讯子索引(通讯参数的个数) 的数目,传输类型,事件定时周期,数据长度,偏移量(offset) 和 ID。
1.3初始化 TPDO
① 检查 TPDO 数目和节点 ID 的范围(1-127) 、数据长度(1-8) 和事件定时周期、禁止时间的设置(两个变量至少定义一个) 以及 offset(指向过程数组的偏移量) 是否超过映射对象的范围;
② 初始化通讯子索引,传输类型,数据长度,偏移量,接收同步对象计数器,ID,时间定时周期,时间定时周期计数器,禁止时间,禁止时间计数器。
1.4 初始化同步报文
设置同步对象的 ID,长度,发送周期以及周期计数器
2.进入预操作状态
2.1发送boot_up报文 2.2根据需要发送SYNC报文 2.3处理接收到的NMT、SDO报文
CANOpen协议详解
1. NMT协议:
NMT报文由主机发送,从机不必应答,通过此报文主机控制从机的工作状态(复位节点、复位通信、预运行、运行、停止几种状态间进行转化)。 NMT报文帧结构 COB_ID(11位) 00000000000 RTR(远程桢标志) 0 数据0 命令字 数据1 NODE_ID(从机地址) NMT的命令字内容 命令字 1h 2h 80h 81h 82h 注:以下报文未作说明的均为16进制格式
1.1使某一节点进入“操作模式”,管理节点发送如下报文
含义 启动节点(预操作→操作) 停止节点(预操作/操作→停止) 进入预操作状态(操作/停止→预操作) 复位节点(操作/停止/预操作→装置复位) 复位通信(操作/停止/预操作→CAN初始化) COBID 000 RTR(仅一位) 0 Data0 01 Data1 nodeID 1.2使某一节点进入“停止模式”,管理节点发送如下报文
COBID 000 RTR(仅一位) 0 Data0 02 Data1 nodeID 1.3使某一节点进入“预操作模式”,管理节点发送如下报文
COBID 000 RTR(仅一位) 0 Data0 80 Data1 nodeID 1.4使某一节点进入“复位节点模式”,管理节点发送如下报文
COBID 000 RTR(仅一位) 0 Data0 81 Data1 nodeID 1.5使某一节点进入“复位通信模式”,管理节点发送如下报文
COBID 000 RTR(仅一位) 0 Data0 82 Data1 nodeID 注:若要将CAN总线上的所有从节点进入某一模式,将nodeID设为00即可。
2.NMT错误控制 2.1节点守护协议
主机按间隔一定时间轮询从机(发节点守护报文),这种时间间隔成为守护时间。不同节点的守护时间并不要求相同,节点的生命周期=该节点的守护时间×生命时间因子,如果一个从节点在其生命周期内没有被轮询,则从节点产生“生命守护事件”。若主节点在生命周期内没有收到从节点的响应或其响应与预期的响应不一致,主节点产生“节点守护事件”。 通过“生命守护事件服务”和“节点守护事件服务”可以消除相应的“守护事件” 主节点发送
COBID 700+nodeID 从节点应答 COBID 700+nodeID RTR(仅一位) 1 RTR(仅一位) 0 Data0 t Status t:0,1,0,1不停切换,即每发一次切换一次 status:4-停止状态;5-操作状态;7F-预操作状态
2.2.心跳协议
心跳生产者周期性(心跳生产时间)的产生心跳报文,心跳顾客周期性的接收心跳报文,若心跳顾客在设定的心跳顾客时间内没有收到心跳生产者发出的心跳报文,则产生心跳事件。其具体格式入选 心跳生产者定期发送 COBID 700+nodeID RTR(仅一位) 0 Data0 0 Status status:4-停止状态;5-操作状态;7F-预操作状态 无响应
对同一个设备而言,不允许同时使用节点守护协议和心跳协议,即只能使用其中的一种作为NMT错误控制协议。如果心跳生产时间被配置(≠0),心跳协议立刻开始执行,
2.3引导协议
当从节点初始化完成,进入预操作状态后,发送 COBID 700+nodeID RTR(仅一位) 0 Data0 00 无响应
当设备状态从初始化—>预操作时启动心跳报文,则引导协议被认为是第一帧心跳报文。 5.SDO协议
SDO协议用来读写节点的对象字典
发出读写命令的节点是客户端节点,解释读写命令的是服务器节点。 SDO有三种传送方式:
1. 加速传送(Expedited transfer):当读写的数据小于等于4个字节时使用快速协议.
包括启动域下载 (Initiate Domain Download),启动域上传 (Initiate Domain Upload),域传送中止(Abort Domain Transfer)。
2. 分段传送(Segmented transfer) : 传输数据长度大于4字节,包括域分段下载
(Download Domain Segment),域分段上传 (Upload Domain Segment) ,域传送中止(Abort Domain Transfer)。
3. 块传送(Blocktransfer):当传送数据长度大于4字节时,多个分段只由1个确认报
文应答(如果是下载,则由服务器启动传送,如果是上传,则由客户启动传送)以增加总线吞吐量。包括启动块下载 (InitiateBlockDownload),块分段下载 (Download Block Segment),块下载结束(End BlockDownload),启动块上传 (InitiateBlockUpload),块分段上传(Upload Block Segment) 和 块上传结束(End Block Upload)。
下载(Download)是指对对象字典进行写操作,上传(Upload)指对对象字典进行读操作。
5.1SDO加速传送协议
5.1.1启动域下载(Initiate Domain Download)
工作过程:
启动域下载向node下载数据,格式为: Client→: COB_ID(11位) 600+SeverNodeID RTR 数据0 数据1 0 命令字 主索引 数据2 数据3 数据4 数据5 数据6 数据7 子索引 数据0 数据1 数据2 数据3 注:数据小于4个字节时,未用到的写零。 ←Server: 如果成功: COB_ID(11位) 580+SeverNodeID RTR 数据0 数据1 0 命令字 主索引 数据2 数据3 数据4 数据5 数据6 数据7 子索引 0 0 0 0 如果失败:(解释见5.3) COB_ID(11位) 580+SeverNodeID
SDO的命令字含义如下(-表示不相关,应为0)
启动域下载(Initiate Domain Download) Bit 7 6 0 1 5 1 1 4 - - 3 n - - 2 1 e - 0 s - RTR 数据0 数据1 0 命令字 主索引 数据2 数据3 数据4 数据5 数据6 数据7 子索引 SDO终止错误代码 Client→ 0 ←Server 说明:
0 n :如果e=1,且s=1,则有效,否则为0;表示数据部分中无意义数据的字节数。 e :0 = 正常传送,1 = 加速传送。
s :是否指明数据长度,0 = 数据长度未指明,1 = 数据长度指明。 e=0,s=0:保留。
e=0,s=1:数据字节为字节计数器,byte 4是数据低位部分(LSB),byte7是数据高位部分(MSB)。
e = 1 : 数据字节为将要下载(download)的数据。 实例:
在node5主索引1400,子索引2,写对象字典内容为FD COB_ID(11位) 605 RTR 数据0 数据1 0 2F 00 数据2 14 数据3 02 数据4 数据5 数据6 数据7 FD 0 0 0 如果成功,node5响应 COB_ID(11位) 585 RTR 数据0 数据1 0 60 00 数据2 14 数据3 02 数据4 数据5 数据6 数据7 00 0 0 0 在node5主索引1603,子索引1,写对象字典内容为60120208 COB_ID(11位) 605 RTR 数据0 数据1 0 23 03 数据2 16 数据3 01 数据4 数据5 数据6 数据7 08 02 12 60 如果成功,node5响应 COB_ID(11位) 585 RTR 数据0 数据1 0 60 03 数据2 16 数据3 01 数据4 数据5 数据6 数据7 00 00 00 00 5.1.2SDO启动域上传(Initiate Domain Upload)
启动域上传(Initiate Domain Upload)请求node域上传,格式为:
Client→: COB_ID(11位) 600+SeverNodeID ←Server: 如果成功 COB_ID(11位) 580+SeverNodeID RTR 数据0 数据1 0 命令字 主索引 数据2 数据3 数据4 数据5 数据6 数据7 RTR 数据0 数据1 0 命令字 主索引 数据2 数据3 数据4 数据5 数据6 数据7 子索引 0 0 0 0 子索引 数据0 数据1 数据2 数据3 如果失败,服务器应答 COB_ID(11位) 580+SeverNodeID
SDO的命令字含义如下(-表示不相关,应为0)
启动域上传(Initiate Domain Upload) Bit 7 6 5 4 3 2 1 0 RTR 数据0 数据1 0 80 主索引 数据2 数据3 数据4 数据5 数据6 数据7 子索引 SDO终止错误代码 Client→ 0 ←Server 说明:
0 1 1 0 0 - - - n - - e c s n :如果e=1,且s=1,则有效,否则为0;表示数据部分中无意义数据的字节数。 e :0 = 正常传送,1 = 加速传送。
s :是否指明数据长度,0 = 数据长度未指明,1 = 数据长度指明。 e=0,s=0:保留。
e=0,s=1:数据字节为字节计数器,byte 4是数据低位部分(LSB),byte7是数据高位部分(MSB)。
e = 1 : 数据字节为将要下载(download)的数据。 实例:
在node5主索引1400,子索引2,对象字典内容为一个数据FD 客户端发送 COB_ID(11位) 605 RTR 数据0 数据1 0 40 00 数据2 14 数据3 02 数据4 数据5 数据6 数据7 00 0 0 0 如果成功,node5响应 COB_ID(11位) 585 RTR 数据0 数据1 0 4F 00 数据2 14 数据3 02 数据4 数据5 数据6 数据7 FD 0 0 0 在node5主索引1603,子索引1,对象字典内容为60120208 客户端发送 COB_ID(11位) 605 RTR 数据0 数据1 0 40 03 数据2 16 数据3 01 数据4 数据5 数据6 数据7 00 00 00 00 如果成功,node5响应 COB_ID(11位) 585 RTR 数据0 数据1 0 43 03 数据2 16 数据3 01 数据4 数据5 数据6 数据7 08 02 12 60 5.2SDO分段传送协议
5.2.1域分段下载(Download Domain Segment) 工作过程为:
5.2.1.1启动域分段下载协议
SDO的命令字含义如下(-表示不相关,应为0)
域分段下载(Download Domain Segment) Bit 7 6 0 1 5 1 1 4 - - 3 n - - 2 1 e - 0 s - Client→ 0 ←Server 说明:
0 n :无意义的数据字节数。如果没有指明段长度,则为0。只有当e=1,s=1时有效,否则为零
s :0 =没有指明数据集的尺寸,1 = 指明数据集的尺寸 e :0=正常传送模式;1=加速传送模式 m:index与subindex d:
当e=0,s=0时,保留
当e=0,s=1时,是要下载的数据集的字节数
当e=1,s=1时,加速传送,是要下载的数据,长度为4-n 当e=1,s=0时,加速传送,没有指明要下载的字节数 Client→:
COB_ID(11位) RTR 数据0 数据1 600+SeverNodeID ←Server: 如果成功 COB_ID(11位) 600+SeverNodeID RTR 数据0 数据1 0 命令字 0 数据2 数据3 数据4 数据5 数据6 数据7 0 命令字 Index 数据2 数据3 数据4 数据5 数据6 数据7 Subindex D 5.2.1.2域分段下载协议
SDO的命令字含义如下(-表示不相关,应为0)
域分段下载(Download Domain Segment) Bit 7 6 0 0 5 0 1 4 t t 3 n - - - 2 1 0 c - Client→ 0 ←Server 说明:
0 n :无意义的数据字节数。如果没有指明段长度,则为0。 c :0 = 有后续分段需要download,1 = 最后一个段
t :触发位,后续每个分段交替清零和置位(第一次传送为0,等效于request/response)。
实例:
在node5主索引1603,子索引1,写对象字典内容为6012020804023405301042 (1)发送下载初始化命令 COB_ID(11位) 605 RTR 数据0 数据1 0 21 03 数据2 16 数据3 01 数据4 数据5 数据6 数据7 0B 00 00 00 如果成功,node5响应 COB_ID(11位) 585 (2)发送下载命令 COB_ID(11位) 605 RTR 数据0 数据1 0 00 42 数据2 10 数据3 30 数据4 数据5 数据6 数据7 05 34 02 04 RTR 数据0 数据1 0 60 03 数据2 16 数据3 01 数据4 数据5 数据6 数据7 00 00 00 00 如果成功,node5响应 COB_ID(11位) 585
COB_ID(11位) 605 RTR 数据0 数据1 0 17 08 数据2 02 数据3 12 数据4 数据5 数据6 数据7 60 00 00 00 RTR 数据0 数据1 0 20 00 数据2 00 数据3 00 数据4 数据5 数据6 数据7 00 00 00 00 如果成功,node5响应 COB_ID(11位) 585
5.2.2域分段上传(Upload Domain Segment) 工作过程为:
RTR 数据0 数据1 0 30 00 数据2 00 数据3 00 数据4 数据5 数据6 数据7 00 00 00 00
5.2.2.1启动域分段上传
SDO的命令字含义如下(-表示不相关,应为0)
域分段上传(Upload Domain Segment) Bit 7 6 1 1 5 0 0 4 - - 3 - n 2 - 1 - e 0 - s Client→ 0 ←Server 说明:
0 n :无意义的数据字节数。如果没有指明段长度,则为0。 s :0 =没有指明数据集的尺寸,1 = 指明数据集的尺寸 e :0=正常传送模式;1=加速传送模式
m:index与subindex d:
当e=0,s=0时,保留
当e=0,s=1时,是要下载的数据集的字节数
当e=1,s=1时,加速传送,是要下载的数据,长度为4-n 当e=1,s=0时,加速传送,没有指明要下载的字节数 5.2.2.2域分段上传协议
SDO的命令字含义如下(-表示不相关,应为0)
域分段上传(Upload Domain Segment) Bit 7 6 1 0 5 1 0 4 t t 3 - n 2 - 1 - 0 - c Client→ 0 ←Server 说明:
0 n :无意义的数据字节数。如果没有指明段长度,则为0。 c :0 = 有后续分段需要download,1 = 最后一个段 实例:
5.3域传送中止(Abort Domain Transfer)
SDO 客户或服务器通过发出如下格式的报文来中止SDO传送,格式为: COB_ID(11位) 580+SeverNodeID RTR 数据0 数据1 0 命令字 主索引 数据2 数据3 数据4 数据5 数据6 数据7 子索引 SDO终止错误代码 SDO的命令字含义如下(-表示不相关,应为0)
域传送中止(Abort Domain Transfer) Bit 7 6 0 0 5 0 0 4 - - 3 - - 2 - - 1 - - 0 - - Client→ 1 ←Server 1
实例: 5.4块传送协议 工作过程: (一)下载:
5.4.1启动块下载(Initiate Block Download)
SDO的命令字含义如下(-表示不相关,应为0)
启动块下载(Initiate Block Download) Bit 7 6 1 0 5 0 1 4 - - 3 - - 2 cc sc 1 s 0 0 0 0 Client→ 1 ←Server 说明:
1 cc :客户数据是否使用CRC校验, 0 = no,1 = yes。 sc :服务器数据是否使用CRC校验, 0 = no, 1 = yes。
s : 是否指明数据集长度,0=数据集长度未指明,1=数据集长度指明。 size:
当s=0时,size=0。
当s=1时, 是要下载的数据的字节个数, Blksize:即每块中分段的数目,0 SDO的命令字含义如下(-表示不相关,应为0) 块分段下载(Download Block Segment) Bit 7 6 5 4 3 2 1 0 Client→ c ←Server 说明: 1 Seqno(从0计起) 0 1 - - - 1 0 c : 是否有后续分段需要download,0=yes,1=no。 seqno : 分段号,0 Ackseq:表示最后一个被成功接收的分段号;如果为0,表示分段号为1的分段未正确接收,所有段必须重传。 Blksize:每个块中分段的数目,客户机必须使用它进行下一次块下载, 0 SDO的命令字含义如下(-表示不相关,应为0) 块分段下载(End Block Download) Bit 7 6 1 0 5 0 1 4 n - 3 2 1 - 0 1 1 Client→ 1 ←Server 说明: 1 - - 0 n : 指示最后一个块的最后一个段中无意义数据的字节数。 客户数据bytes1+2 为整个数据集的16位CRC;只有当启动块下载报文中cc和sc同时为1时CRC才有效。 实例: (二)上传: 5.4.4启动块上传(Initiate Block Upload) SDO的命令字含义如下(-表示不相关,应为0) 启动块上传(Initiate Block Upload) Bit 7 6 0 1 0 5 1 0 1 4 - - - 3 - - - 2 cc sc - 1 cs=0 s 1 ss=0 1 0 Client→ 1 ←Server Client→ 说明: 1 1 cc : 客户数据是否使用CRC校验, 0=no ,1=yes。 sc : 服务器数据是否使用CRC校验, 0=no,1=yes。 cs:客户端子命令,0-初始化上传请求;3-开始上传命令 ss:服务器子命令,0-初始化上传响应 m:Index和subindex cc:客户端支持CRC校验,0-不支持CRC校验;1-支持CRC校验。CRC校验是所有数据的CRC校验 sc:服务器支持CRC校验,0-不支持CRC校验;1-支持CRC校验。 pst:协议切换开关,0-不支持协议切换;>0:当要上传的数据尺寸≤pst说明的尺寸,服务器可以根据情况直接将协议切换到SDO上传子协议 s : 是否指明数据集长度,0=数据集长度未指明,1=数据集长度指明。 Blksize:即每块中分段的数目,0 SDO的命令字含义如下(-表示不相关,应为0) 启动块上传(Initiate Block Upload) Bit 7 6 seqno 0 1 - - - 1 0 5 4 3 2 1 0 ←Server c Client→ 说明: 1 Ccs:客户端命令。5-块上传 Cs:客户端子命令, c : 是否有后续分段需要download,0=yes,1=no。 seqno : 分段号,0 Ackseq:表示最后一个被成功接收的分段号;如果为0,表示分段号为1的分段未正确接收,所有段必须重传。 Blksize:每个块中分段的数目,客户机必须使用它进行下一次块上传 0 SDO的命令字含义如下(-表示不相关,应为0) 块上传结束(End Block Upload) Bit ←Server Client→ 说明: CRC;只有当启动块上传报文中cc和sc同时为1时CRC才有效。其他意义见前。 实例: 6.SYNC报文 7 1 1 6 1 0 5 0 1 4 n - - - 3 2 1 - - 0 1 1 1006h:设定循环周期,1005h:存ID COBID 080 7.PDO报文 PDO报文传送实时数据,PDO对象对象设备对象字典中的某一条, 触发PDO报文的情况有两种:事件触发与同步触发 PDO1对象字典的索引为1800(16进制),存储内容包括:主索引下:子索引数、参数名、对象类型。子索引包括下:参数名、对象类型、数据类型、访问类型、默认值、PDO映射 COB_ID 080h 报文 NMT SYNC 对应的对象字典Index - 1005h 1006h 1007h Times Stamp 1012h 1013h PDO1(发送) PDO1(接收) 1800h包含6个SubIndex 1400h包含3个SubIndex RTR(仅一位) 1 PDO2(发送) PDO2(接收) PDO3(发送) PDO3(接收) PDO4(发送) PDO4(接收) SDO(发送) SDO(接收) NMT 错误控制 1801h包含6个SubIndex 1401h包含3个SubIndex 1802h包含6个SubIndex 1402h包含3个SubIndex 1803h包含6个SubIndex 1403h包含3个SubIndex 1200H 1200H 1016包含2个SubIndex 1017不包含SubIndex 8.TimeStamp报文 通过TimeStamp报文,同步网络上设备时间,报文的ID存在1012h中,数据类型为:TIME_OF_DAY 9.EMCY报文 当设备内部发生某种错误时,由该设备发送EMCY报文,只发一次,收到的设备无需反应,其格式为: COBID RTR(仅一位) Data0 Data1 Data2 080 0 错误代码 错误寄存Data3 Data4 Data5 Data6 Data7 厂商特定的错误域 器 设备是否支持EMCY报文是可选的,若支持EMCY报文至少支持00xx和10xx两种错误代码 错误代码表 10.MPDO Protocol 上图有错,4..8应为4..7 M:索引与子索引 D:要发送的数据 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务