我在CiA402例程的RxPDO通道里添加了几组PID参数,其实PID参数不应该添加到PDO通道中周期性传输,不过我还不了解其他的通讯方式,所以目前临时使用了这种方法。
不见得是什么好方法,不过通讯是正常的,权当给大家做个参考。
在RxPDO通道中,增加4组PID参数。
Index Ranges定义如下:

图1. Index Ranges定义(截取自ET9300文档)
参数定义如下:
|
序号 |
参数名 |
数据类型 |
|
1 |
Finger1_Kp |
UINT16 |
|
2 |
Finger1_Ki |
UINT16 |
|
3 |
Finger1_Kd |
UINT16 |
|
4 |
Finger2_Kp |
UINT16 |
|
5 |
Finger2_Ki |
UINT16 |
|
6 |
Finger2_Kd |
UINT16 |
|
7 |
Finger3_Kp |
UINT16 |
|
8 |
Finger3_Ki |
UINT16 |
|
9 |
Finger3_Kd |
UINT16 |
|
10 |
Finger4_Kp |
UINT16 |
|
11 |
Finger4_Ki |
UINT16 |
|
12 |
Finger4_Kd |
UINT16 |
|
13 |
Finger1_Kp |
UINT16 |
|
14 |
Finger1_Ki |
UINT16 |
|
15 |
Finger1_Kd |
UINT16 |
表1. PID参数定义
使用Manufacturer Specific Area的2010作为对象索引值,各PID参数作为其子项,对象字典定义如下:

图2. 对象自定定义
代码变更:
f2838x_cm_cia402_solution工程
工程文件:cia402appl.h
变更项1:

图3. 1600对象aEntries对象数量调整为18
变更项2:

图4. 增加TOBJ2010定义
变更项3:

图5. 在TCiA402PDO1600中增加TOBJ2010 ObjTorqueControllerPara
变更项4:

图6. 在CiA402Objects中增加TOBJ2010 objTorqueControllerPara
变更项5:

图7. asEntryDesc0x1600中增加entry描述
变更项6:

图8. 增加2010对象entry描述
变更项7:

图9. 在对象字典RxPDO初始化中增加2010对象及其初始值
变更项8:

图10. 在DefCiA402AxisObjDic中增加2010对象描述并修改1600对象subindex数值
f2838x_cm_cia402_solution工程
工程文件:cia402appl.c
变更项1:

图11. 在APPL_OutputMapping函数中增加2010对象相关内容
f2838x_cpu1_allocate_ecat_to_cm工程
工程文件:f2838x_cpu1_allocate_ecat_to_cm.c
变更项1:

图12. 增加PID参数变量定义
变更项2:

图13. 在C28内核增加参数解析