【EtherCAT实践篇】八、更改XML示例3,增加16位模拟DAC输出
目的:在EtherCAT开发板上IO程序(基本IO通讯-基于SSC)基础上进行修改,增加一路模拟量输出,并输出给DAC管脚。由于STM32F405底板具有DAC输出功能,这个实验在STM32F405底板进行。
更改思路:在原DO output输出基础上再增加一个16路的模拟量输出,并将值传给STM32的DAC输出。
1、XML配置修改
1.1 更改数据类型
增加变量对应于输出映射索引0x1601的,因此需要更改DT1601数据类型:
增加第10个SubItem,并重新修改数据类型的BitSize;
备注:原xml文件中第9个subitem用于数据对齐,原本传输8个IO变量,需要补个8位数据,以保证16位对齐,这里将原本的第9个subitem用于输出8位模拟量。
索引0x1601将输出过程数据映射到0X7010中,因此需要更改DT7010数据类型。
1.2更改数据字典对象表
更改0x1601数据对象--输出映射表Ao TxPDO-Map
(1)增加SubIndex010,索引号为70101010,其中“7010”代表映射索引号,“10”代表索引6020的第“10”位SubIdx,“10”代表数据大小,16位。注意:在xml中写的顺序与实际不同。同时修改相应的BitSize=16+32*10=336.
(2)更改0X7010对象字典:
1.3定义PDO传输
1.4修改SM配置
增加16位模拟量输出,相当于增加2个字节。
2、STM32对应程序修改
2.1更改本地存储变量
更改0x1601本地存储变量,0x70101010与xml文件对应,其中索引9也要改为10。
更改0x7010本地存储变量,索引改为10:
2.2更改表项描述
更改0x1601表项描述
2.2更改对象名字
更改0x7010名字:
2.3更改对象描述
2.4更改配置和应用程序
增加DAC配置和DAC输出函数:
增加应用层修改程序:
3、 测试验证
利用TwinCAT主站在Freerun模式下进行测试,可以发现增加的8位的AO_8和16位的AO_16变量。
在TwinCAT中给定AO_16变量输出2000(对应2000mV),用万用表实测板子上DAC两端输出位1996mV,结果基本与设定基本相符。
对应EtherCAT开发学习板:https://shop461235811.taobao.com