ETherCAT COE (CANOpen)的 SDO 属于应用层通讯协议,基于同步管理器(SM)的邮箱实现的,主站可以通过SDO实现一下功能。
对应邮箱消息数据格式如下
其中分段下载和分段上传请求和响应较为特殊,ETG 1000-4手册上对整个通讯过程讲解不够清晰,下面是我个人的理解。
分段下载的过程
①. 客户端发送“常规下载请求”,包含数据(写满SM设定缓存区)给服务器 --> 服务器接收到数据后,判断 Complete Size > Size,且数据包完整无逻辑错误(发送的数据长度必须等于SM设定缓存,否则视为错误),断定客户端还有数据未发出(标记下一接收为 “段下载请求”),保存接收到的数据并发送“常规下载请求响应”通知客户端。
②. 客户端发出 "段下载请求"给服务器,标记Toggle = 0 ,Follows = TRUE(还有下一帧,否则为FALSE最后一帧)--> 服务器接收到数据后,下载数据,发送应答(toggle = 0)。
③. 客户端发出 "段下载请求"给服务器,标记Toggle = 1 (翻转),Follows = TRUE(还有下一帧,否则为FALSE最后一帧)--> 服务器接收到数据后,下载数据,发送应答(toggle = 1)。
....
⑥. 客户端发出 "段下载请求"给服务器,标记Toggle = (-1)^(n-1) (翻转),Follows = FALSE(最后一帧)--> 服务器接收到数据后,下载数据,合成并解析数据到对应的对象字典,再发送应答(toggle)。
以上是我阅读ETG1000协议的学习理解,欢迎指正。