一、协议栈的生成
协议栈的生成可参考《https://blog.csdn.net/g360250466/article/details/129847081》
几个重点的字段:
1、Hardware中
EL9800_HW, 设置为1,在该基础上进行修改
CONTROLLER_16BIT,设置为0
CONTROLLER_32BIT,设置为1
_IPC24, 设置为0
2、Application
EL9800_APPLICATION,设置为0
APPLICATION_FILE, 我整的是#include "MyApplication.h"
3、简版Excel生成
一个uint16类型的输入,一个输出。
4、简版协议栈生成
el9800hw文件名未做修改,其他硬件的修改都在该文件,像spi,定时器等。
生成的所有文件,MyApplication需要给到EtherCAT主站。使用TWinCAT3作为主站,放置于E:\twincat3\3.1\Config\Io\EtherCAT,注意自己的安装目录。
二、协议栈的移植
spi、定时器等的配置不做说明。
代码组织结构:
main()函数MyApplication.c中,
HW_Init(),硬件平台初始化,spi,定时器,GPIO等初始化在这。
1、APPL_OutputMapping和APPL_InputMapping
APPL_OutputMapping可以获取主站的写入的数据,本移植程序将主站的输出给到输入。
void APPL_OutputMapping(UINT16* pData)
{
DO0x7000.Do1 = *pData;
}
void APPL_InputMapping(UINT16* pData)
{
*pData = DO0x7000.Do1;
}
DO0x7000的定义在MyApplicationObjects中。
PROTO TOBJ7000 DO0x7000
typedef struct OBJ_STRUCT_PACKED_START {
UINT16 u16SubIndex0;
UINT16 Do1; /* Subindex1 - do1 */
} OBJ_STRUCT_PACKED_END
TOBJ7000;
2、APPL_Application
未添加任何代码。
三、编译过后的调试
当移植编译过后,主站并不能变成OP状态。
1、OBJ_DWORD_ALIGN和OBJ_WORD_ALIGN
改成这样:
2、ConfigData
05020300000000000000
这个开始没修改的时候,Online始终无法变成OP状态,一直是Init状态。后面开始谷歌,找到了ConfigData字段,改成板子自带的,就OK了。后面改成不行的,也不行了。
主要就这两点。
3、效果展示
欢迎关注,所有软件资料均可分享。
后台留言"ecat从站移植"即可获得。
其他进一步的测试需后续完成。