CAN 总线协议
1)、启动SDO 下载协议
ccs:客户端
指定命令
1:开始下载请求
•scs:服务器命令符
3:开始下载响应
•n:只有当e =1和s=1,否则为0。如果有效则表示字节在d不这样做的数量有效包含的数据。字节[8-n中,7]不包含数据。
•e:传输类型
0:正常传输
1:加速传输
•s:尺寸指示
0:数据集大小不指示
1:数据集大小显示
•m:多路复用器。它代表了数据的索引/分项指数为转移的SDO。
•d:数据
e =0,s= 0:d被保留用于进一步使用。
e =0,s= 1:D包含的字节数来进行下载。字节4包含LSB和字节7包含MSB。
e =1,s= 1:D含有长度为4-n的数据被下载,编码取决于数据的引用的类型通过索引和子索引
e =1,s =0:D包含的字节数不确定要下载
•x:未使用,始终为0
•reserved:保留以备后用,始终为0
2、SDO 下载段协议
•ccs:客户机命令符
0:下载段请求
•scs:服务器命令符
1:下载段响应
•seg-data数据:要下载最多7个字节段的数据。编码取决于类型通过索引和子索引引用的数据
•n为表示不包含数据段中的seg-data的字节数。字节[8-n中,7]做不包含数据段。 n = 0时,如果被指示没有段大小。
•c:指示是否仍然有更多的段被下载。
0:还有段要下载
1 :没有段要下载
•t:触发位。该位必须交替在每个后续段下载。 第一段将触发位设置为0,触发位请求和相应是相等。
•X:未使用,始终为0
• reserved:保留以备后用,始终为0。
3、SDO启动上传协议
•ccs:客户机命令符
2:开始上传请求
•scs:服务器命令符
2:开始上传回复
•n:只有当e =1和s=1,否则为0。如果有效则表示字节在d数据中不包含字节[8-n中,7]段的数据。
•e:传输类型
0:正常传输
1:加速传输
•s:尺寸指示
0:数据集大小不指示
1:数据集大小显示
•m:多路复用器。它代表了数据的索引/分项指数为转移的SDO。
•d:数据
e =0,s= 0:d被保留用于进一步使用。
e =0,s= 1:d包含的字节数进行上载。字节4包含LSB和字节7包含MSB。
e =1,s= 1:d含有长度为4-n的数据被上载,编码取决于数据的引用的类型通过索引和子索引
•X:未使用,始终为0
• reserved:保留以备后用,始终为0。
4、SDO上传段协议
•ccs:客户机命令符
3:上传段的请求
•scs:服务器命令符
0:上传段响应
•t:触发位。该位必须切换对于上载的每个后续段。 第一段将触发位设置为0。请求和响应消息的触发位是相等的。
•c:表示是否还有更多的片段被上传。
0:更多的段要上载
1:没有更多的段要上载
•seg-data:至多7个字节段的数据被上载。的编码依赖于类型通过索引和子索引所引用的数据
•n为表示不包含数据段中的seg-data的字节数,字节[8-n中,7]做不包含数据段,n = 0时,如果被指示没有段大小。
•X:未使用,始终为0
• reserved:保留以备后用,始终为0。
5、中止传输协议
•CS:命令符
4:中止传输请求
•X:未使用,始终为0
•M:多路复用器。它代表指数和SDO的分项指数。
•D:包含一个4字节终止码有关中止的原因。
中断代码 0503 0000H 切换位未交替
0504 0000H SDO协议超时
0504 0001H 客户端/服务器命令说明符无效或未知
0504 0002H 无效的块大小(块模式)
0504 0003H 无效的序列号(块模式)
0504 0004H 位于0004h CRC错误(仅限块模式)
0504 0005H 内存不足
0601 0000H 不支持的访问对象
0601 0001H 尝试读取只写对象
0601 0002H 尝试写入只读对象
0602 0000H 对象不对象字典存在
0604 0041h 对象无法映射到PDO
0604 0042h 对象的数量和长度,被映射将超过PDO长度
0604 0043h 常规参数不兼容原因
0604 0047h 常规内部不兼容的设备
0606 0000H 访问失败,原因是一个硬件错误
0607 0010H 数据类型不匹配,服务参数的长度不匹配
0607 0012H 数据类型不匹配,服务参数的长度过大
0607 0013H 数据类型不匹配,服务参数的长度过低
0609 0011H 子索引不存在
06090030H 值超出范围(仅适用于写访问)
06090031h 值写入过高
06090032h 值写入太低
06090036H 最大值小于最小值
08000000H 一般错误
08000020H 数据无法传输或存储到应用程序
08000021H 总共数据无法传输或存储到的,因为本地的应用程序控制
08000022h 数据无法传输或存储到的,因为应用程序目前设备状态
08000023H 对象字典动态生成出现故障或没有对象字典说明(如对象字典从文件生成失败产生因为文件错误)
6、启动下载块协议
•ccs:客户机命令符
6:块下载
•scs:服务器命令符
5:块下载
•s:尺寸指示
0:数据集大小不指示
1:数据集大小显示
•cs:客户子
0:启动下载请求
•SS:服务器子
0:开始下载响应
•cc:客户端CRC支持
cc=0:客户端不支持对数据产生CRC
cc=1:客户端支持对数据产生CRC
•sc:服务器CRC支持
sc=0:服务器不支持对数据产生CRC
sc=1:服务器支持对数据产生CRC
•m:多路复用器。它代表了数据的(索引/子索引)为转移的SDO。
•size:下载大小(字节)
s =0:大小留作将来使用,始终为0
s = 1:大小包含要下载的字节数,字节4包含LSB和字节7的MSB
•blksize:每块段0 < blksize <128的数量。
•X:未使用,始终为0
• reserved:保留以备后用,始终为0
7、下载块段协议
•csc:服务器命令符
5:块下载。
•ss:服务器命令符
2:块下载
•c:指示是否仍然有更多的段被下载
0:下载更多的下载段
1:没有更多的下载段中,输入结束SDO块下载
•seqno:段0< seqno <128的序列号。
•seg-data:要下载最多7个字节段的数据。
•ackseq:最后的过程中已经获得成功的最后一段序列号下载。如果ackseq被设置为0服务器指示客户端,与顺序的区段数1未正确接收和所有段必须由客户端重传。
•blksize:每块的段数,有要使用的客户端为以下块下载0 < blksize <128。
•X:未使用,始终为0。
• reserved:保留以备后用,始终为0。
8、结束下载块段协议
•ccs:客户机命令符
6:块下载。
•scs:服务器命令符
5:块下载。
•cs:客户子
1:结束块下载请求。
•ss:服务器子
1:结束块下载响应。
•n:表示在不包含数据的最后一个块的最后一个分段的字节数,字节[8-n中,7]不包含段的数据。
•CRC:16位循环冗余校验(CRC),用于整个数据集。该算法生成CRC在9.2.2.2.16描述。如果在启动区块下载CC CRC才有效和SC被设置为1,否则的CRC已被设置为0。
•X:未使用,始终为0。
• reserved:保留以备后用,始终为0。
上传块 地址6404
3 发送 0x00000601 A0 04 64 00 7F 0E 00 00
4 接收 0x00000581 C2 04 64 00 28 00 00 00
5 发送 0x00000601 A3 00 00 00 00 00 00 00
6 接收 0x00000581 01 30 31 32 33 34 35 36
7 接收 0x00000581 02 37 38 39 30 31 32 33
8 接收 0x00000581 03 34 35 36 37 38 39 30
9 接收 0x00000581 04 31 32 33 34 35 36 37
10 接收 0x00000581 05 38 39 30 00 00 00 00
11 接收 0x00000581 86 00 00 00 00 00 00 00
12 发送 0x00000601 A2 06 7F 00 00 00 00 00
13 接收 0x00000581 C9 00 00 00 00 00 00 00
14 发送 0x00000601 A1 00 00 00 00 00 00 00
下载块 地址6404
40 发送 0x00000601 21 04 64 00 28 00 00 00
41 接收 0x0000058 60 04 64 00 00 00 00 00
42 发送 0x00000601 00 48 41 4E 53 50 4D 00
43 接收 0x00000581 20 00 00 00 00 00 00 00
44 发送 0x00000601 10 50 00 00 00 00 00 00
45 接收 0x00000581 30 00 00 00 00 00 00 00
46 发送 0x00000601 00 00 00 00 00 00 00 00
47 接收 0x00000581 20 00 00 00 00 00 00 00
48 发送 0x00000601 10 00 00 00 00 00 00 00
49 接收 0x00000581 30 00 00 00 00 00 00 00
50 发送 0x00000601 00 00 00 00 00 00 00 00
51 接收 0x00000581 20 00 00 00 00 00 00 00
52 发送 0x00000601 1D 00 00 00 00 00 00 00
53 接收 0x00000581 30 00 00 00 00 00 00 00
上传16 位数据
70 发送 0x00000601 A0 18 10 02 7F 0E 00 00
71 接收 0x00000581 43 18 10 02 0B 02 00 00
下载8位数据
80 发送 0x00000601 2F 60 60 00 03 00 00 00
81 接收 0x00000581 60 60 60 00 00 00 00 00
下载32位数据
90 发送 0x00000601 23 FF 60 00 00 00 14 00
91 接收 0x00000581 60 FF 60 00 00 00 00 00
下载16位数据
90 发送 0x00000601 2B 00 23 00 11 00 00 00
91 接收 0x00000581 60 00 23 00 03 00 00 00