目的:
TwinCAT3 主站发送(28335接收 ) run stop direction 三个数字量: speed 1个 模拟量 (xml文件中:RxPdo )
TwinCAT3 主站接收(28335发送 ) state f_direc 二个数字量:speed current 2个模拟量 (xml文件中:TxPdo )
(通过主站发送指令控制dsp驱动 pmsm电机)
各量意义:
run: 1 主站发送指令,启动 电机
stop:1 发送停止信号
direction: 0正转逆时针,1 反转,顺时针
dsp反馈给主站信号
state: 1 正常 0 电机驱动故障
f_direc: 1 电机正转,逆时针: 0 电机反转,顺时针
speed:电机转速
current:电机电流
使用的软件是 ccs7.0 xmlspy2013 。
- 更改xml文件 RxPdo部分 :
位置
ethercatinfo --> descriptions --> devices --> device --> RxPdo
注意:改后 #x0 Bitlen位为13,1+1+1+13=16,必须和为16,不够使用#x0 补齐,超出则另起一个元素。
更改 #x1601 和#x7010 的字典结构,两个地方 ,先改 1601。
改1601
位置 1:
ethercatinfo --> descriptions --> devices --> device --> profile --> dictionary --> datatypes --> datatype --> DT1601
左红圈 304 由 右2 红圈 272+32=304得;
绿 {MOD}圈 不用改;
蓝 {MOD} 箭头:subidx 0 固定;
灰 {MOD}大括号:subidx 1-8 ,8个数字量,(1601中必须大于所需的数字量,本文只需3个,故无需变动)
绿 {MOD}箭头 :subidx 9 用于补齐 bit
对应 DSP 程序 .h 文件更改:
el9800appl.h 文件
dsp 程序对应 1601 datatype 改动
位置1
左改前,右改后
与上文DT1601 格式对应,这里未做改动。
位置2
如需改动,这里有两个地方。本文中 未改动。
位置 2:
ethercatinfo --> descriptions --> devices --> device --> profile --> dictionary --> objectss --> object --> #x1601
上面是改前,下面改后
绿圈 304 ,与datatype中 保持 一致
绿圈 09 04,此处是改动 object ,故 删除5行,留下 3数字量+1补齐位
红圈 subindex 003 后面 : 0103 1070 含义是:
01 : bit 1位
03: 第三个
1070: 使用 0710的 子索引
0d 000000:d 十六进制13,补齐 用。
DSP程序 对应 1601 object 改动
位置1
如图更改即可。
位置2
最终数据结构中 红圈位置更改一下即可。
#x1601 更改完毕!
改 #x7010
位置 1:
ethercatinfo --> descriptions --> devices --> device --> profile --> dictionary --> datatypes --> datatype --> DT7010
改后:左红圈=右红圈相加 19=1+18
绿圈:name 已改动
篮圈 不用改
蓝 {MOD}箭头:固定保留
绿 {MOD}大括号:3个 数字量,这里无需 对齐。
DSP 程序 对应 7010 datatype
程序位置1
更改如图所示
程序位置2
对应改一下
程序位置3
对应更改
位置 2:
ethercatinfo --> descriptions --> devices --> device --> profile --> dictionary --> objects --> object --> #x7010
左红圈 与 datatype 中 保持一致
右 红绿圈 相应改动 即可。
dsp程序对应7010 object
数据结构中:
至此 #x7010 相应的 .h 文件中 更改完毕。
最后,更改main 中的 相应 程序
main.c 中,
位置1
程序位置2
程序位置3
el9800hw.h 文件中
至此,RxPdo 中 数字量io 的更改 完成。