当前位置: 首页 > news >正文

在SSC(EtherCAT从站协议栈代码)中添加PDO的方法

作为在SSC(EtherCAT从站协议栈代码)中添加SDO的方法-CSDN博客的延伸,如果将

0x604D加入到0x1601中作为RX PDO使用,将0x60FD加入到0x1A01作为TX PDO使用时如何适配代码呢。

本文将以上述需求为例进行展开叙述。

目录

XML内修改内容

1、修改XML内相应字段,扩充0x604D 0x60FD对象

2、修改XML内相应字段,将0x604D 0x60FD对象分别加入到0x1601 0x1A01中

3、将修改好的XML导入到上位机中,可以在PDO配置界面已经添加好了

SSC内修改内容

1、在TOBJ1601 TOBJ1A01中添加上述实例所需的空间

2、在 TCiA402PDO1601 TCiA402PDO1A01中扩充上述成员

3、在CiA402Objects结构体中扩充上述成员

4、在asEntryDesc0x1601 asEntryDesc0x1A01中扩充上述成员

5、在cia402appl.h中扩充0x604D 0x60FD的实例

6、在DefCiA402AxisObjDic中扩充相关实例

7、在DefCiA402ObjectValues默认参数中扩充相关实例

8、在CiA402_Init中添加实例初始化代码

9、在APPL_OutputMapping APPL_OutputMapping中添加相应实例

上位机验证


XML内修改内容

1、修改XML内相应字段,扩充0x604D 0x60FD对象

2、修改XML内相应字段,将0x604D 0x60FD对象分别加入到0x1601 0x1A01中

<RxPdo Fixed="true"> <Index>#x1601</Index> <Name>Receive PDO mapping 1</Name> <Exclude>#x1600</Exclude> <Exclude>#x1602</Exclude> #code <Entry> <Index>#x640D</Index> <SubIndex>0</SubIndex> <BitLen>32</BitLen> <Name>P040D Torque Mode Velocity Limit</Name> <Comment>object 0x640D:0</Comment> <DataType>DINT</DataType> </Entry> #code </RxPdo> <TxPdo Fixed="true"> <Index>#x1a01</Index> <Name>Transmit PDO mapping 1</Name> <Exclude>#x1A00</Exclude> <Exclude>#x1A02</Exclude> #code <Entry> <Index>#x60FD</Index> <SubIndex>0</SubIndex> <BitLen>32</BitLen> <Name>Digital Inputs</Name> <Comment>object 0x60FD:0</Comment> <DataType>UDINT</DataType> </Entry> #code </TxPdo>

3、将修改好的XML导入到上位机中,可以在PDO配置界面已经添加好了

SSC内修改内容

1、在TOBJ1601 TOBJ1A01中添加上述实例所需的空间

本例在扩充之前为10成员,扩充后为11个成员。

2、在 TCiA402PDO1601 TCiA402PDO1A01中扩充上述成员

3、在CiA402Objects结构体中扩充上述成员

/** * \addtogroup CiA402Objects CiA402 Axis Objects * @{ */ /** \brief Data structure to handle the axis specific object data*/ typedef struct OBJ_STRUCT_PACKED_START { //code INT32 objTorqueModeVelocityLimit; /**< \brief Torque mode velocity limit (0x604D)*/ UINT32 objDigitalInputs;/**< \brief Digital Inputs(0x60FD)*/ //code }OBJ_STRUCT_PACKED_END CiA402Objects;

4、在asEntryDesc0x1601 asEntryDesc0x1A01中扩充上述成员

5、在cia402appl.h中扩充0x604D 0x60FD的实例

/** \brief Object 0x604D Torque mode velocity limit*/ OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x604D = {DEFTYPE_INTEGER32, 0x20, (ACCESS_READWRITE | OBJACCESS_RXPDOMAPPING)}; /** \brief Object 0x604D Torque mode velocity limit*/ OBJCONST UCHAR OBJMEM aName0x604D[] = "Torque mode velocity limit"; /** \brief Object 0x60FD Digital Inputs*/ OBJCONST TSDOINFOENTRYDESC OBJMEM sEntryDesc0x60FD = {DEFTYPE_INTEGER32, 0x20, (ACCESS_READ | OBJACCESS_TXPDOMAPPING)}; /** \brief Object 0x60FD Digital Inputs*/ OBJCONST UCHAR OBJMEM aName0x60FD[] = "Digital Inputs";

6、在DefCiA402AxisObjDic中扩充相关实例

注意:0x1601 0x1a01内的成员数需要从10扩充到11。

/** *\brief Object dictionary related to on CiA402 Axis */ PROTO TOBJECT OBJMEM DefCiA402AxisObjDic[] #ifdef _CiA402_ = { //code /* Object 0x1601 */ {NULL,NULL, 0x1601, {DEFTYPE_PDOMAPPING, 11 | (OBJCODE_REC << 8)}, asEntryDesc0x1601, aName0x1601,NULL, NULL, NULL, 0x0000 }, //code /* Object 0x1A01 */ {NULL,NULL, 0x1A01, {DEFTYPE_PDOMAPPING, 11 | (OBJCODE_REC << 8)}, asEntryDesc0x1A01, aName0x1A01, NULL, NULL, NULL, 0x0000 }, //code /* Object 0x604D */ {NULL,NULL, 0x604D, {DEFTYPE_INTEGER32 , 0 | (OBJCODE_VAR << 8)}, &sEntryDesc0x604D, aName0x604D, NULL, NULL, NULL, 0x0000 }, //code /* Object 0x60FD */ {NULL,NULL, 0x60FD, {DEFTYPE_INTEGER32 , 0 | (OBJCODE_VAR << 8)}, &sEntryDesc0x60FD, aName0x60FD, NULL, NULL, NULL, 0x0000 }, //code } #endif

7、在DefCiA402ObjectValues默认参数中扩充相关实例

8、在CiA402_Init中添加实例初始化代码

///////////////////////////////////////////////////////////////////////////////////////// /** \return 0 Init CiA402 device successful ALSTATUSCODE_XX Init CiA402 device failed \brief This function initializes the Axes structures *//////////////////////////////////////////////////////////////////////////////////////// UINT16 CiA402_Init(void) { //code case 0x604D: pDiCEntry->pVarPtr = &LocalAxes[AxisCnt].Objects.objTorqueModeVelocityLimit; break; //code case 0x604D: pDiCEntry->pVarPtr = &LocalAxes[AxisCnt].Objects.objTorqueModeVelocityLimit; break; //code }

9、在APPL_OutputMapping APPL_OutputMapping中添加相应实例

上位机验证

将代码更新到从站内,通过上位机连接从站,选择PDO配置为0x1601 0x1A01,可以看到正常通讯:

更多知识分享:

b站,知乎同名:沧海一条狗

咸鱼ID:tb764914262

http://www.jsqmd.com/news/179092/

相关文章:

  • 系统学习未知usb设备(设备描述)的即插即用机制
  • Profibus DP波特率配置核心要点说明
  • SpringBoot+Vue 兴顺物流管理系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】
  • 在SSC(EtherCAT从站协议栈代码)中添加SDO的方法
  • Proteus8.16下载安装教程:全面讲解许可证激活方法
  • 2026年第一篇给了Deepseek的新论文mHC
  • CosyVoice3最佳实践建议:选择无噪音清晰音频样本提升克隆质量
  • CosyVoice3支持批量生成语音吗?后台任务队列管理功能探索
  • 告别机械音!CosyVoice3让AI语音更富有情感媲美真人朗读体验
  • CosyVoice3用户手册完整版:支持四川话粤语等方言,语音合成更智能
  • 高效内容创作利器!CosyVoice3助力短视频直播行业AI配音升级
  • 企业级学生心理压力咨询评判pf管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • React Native状态管理Zustand应用指南
  • CosyVoice3支持语音风格迁移训练吗?自定义情感模型导入
  • 基于LCD Image Converter的单色图像数据生成示例
  • 快速理解UDS 31服务如何执行例程输入指令
  • C++工程师的前端之旅:基础三剑客 - JavaScript篇 01 - 实用指南
  • 提升数字人项目表现力?试试CosyVoice3的情感语音生成功能
  • 内存转储文件怎么查?WinDbg分析DMP蓝屏文件实战演示
  • 高速PCB设计中地平面分割影响分析
  • CosyVoice3 GitHub源码更新地址分享:持续迭代优化语音克隆效果
  • 企业级学生选课系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • 支持WAV和MP3格式:CosyVoice3对prompt音频文件的采样率与时长要求
  • 科哥开发的CosyVoice3 WebUI界面怎么访问?http://ip:7860 使用指南
  • 实现Multisim访问SQL Server:ODBC连接全面讲解
  • 如何用CosyVoice3实现高精度声音克隆?中文方言全覆盖,情感表达更自然
  • 家用电视服务升级攻略:机顶盒固件官网下载操作指南
  • Java SpringBoot+Vue3+MyBatis 学校防疫物资管理平台系统源码|前后端分离+MySQL数据库
  • Jetson Xavier NX USB OTG功能实现:手把手教程
  • YOLOFuse CIoU loss 引入:提升边界框回归精度