CanOpen学习笔记4-- 建立SDO通信

本文详细介绍了在CanOpen协议中建立SDO(Service Data Object)通信的过程,包括作为DSO Client的写操作步骤,以及如何利用SDO传输文件。在文件传输中,讨论了Server和Client端的准备工作,以及文件名、大小和内容的存储方式。文章还提及了SDO传输过程中的错误处理和回调函数的使用,以及SDO传输超时和ABORT帧的情况。
摘要由CSDN通过智能技术生成

作为DSO Client想要对SDO Server进行写操作(调用_writeNetworkDict):

1、根据nodeID找出OD中对应的SDO Client Parameter的序号CliNbr(即index-0x1280)。

2、再在SDO transfers[]中判断作为SDO_CLIENT的CliNbr是否已经存在(GetSDOClientFromNodeId),即是否存在对同一个Server的通信,没有则继续。

3、在SDO transfers[]中选择一个没有被使用的传输线(getSDOfreeLine得到line序号)并保存whoami(SDO_CLIENT or SDO_SERVER),再初始化此传输线(initSDOline),将状态(SDO_DOWNLOAD_IN_PROGRESS或SDO_BLOCK_DOWNLOAD_IN_PROGRESS)和CliNbr以及索引等保存其中。传输量较大的分配内存到传输线(dynamicData)中,再复制全部数据到此传输线中。

4、构建SDO帧信息(8字节部分),并将Callback函数指针赋值给此传输线的回调函数指针,用于传输结束时调用。

5、发送SDO帧(根据SDO_CLIENT和CliNbr确定COB_ID部分),启动SDO传输。

 

注:函数writeNetworkDictCallBackAI是用于没有找到对应nodeID的SDO Client Parameter的传输,利用SDO_CLIENT中ServerID为0的SDO Client Parameter来赋值替代。

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值