本帖最后由 IFX_OwenSu 于 2024-12-12 14:42 编辑
序言
vendor ID是EtherCAT设备制造商的强制性要求,使其能够在全球范围内被唯一标识和分配。
我们英飞凌的XMC4300和XMC4800系列产品有自己的vendor ID,如果客户使用的是我们官方的KIT进行开发则不需要申请自己的ID,如果是基于英飞凌的芯片进行了新的软硬件设计,则需要向ETG申请特定的vendor ID,申请vendor ID是免费的。可以参考下面的链接:
https://www.gkong.com/Company/EtherCAT/Developing.aspx?
步骤
申请到新的vendor ID之后需要进行相应的配置才能保证TwinCAT识别到的设备是全新开发的。所以可以按照下面的步骤进行配置。
Step 1:新建一个SSC Tool工程
从以下链接中下载slave stack code以及EtherCAT slave stack code tool(需要ETG membership):
https://www.ethercat.org/login.a ... a%2fstack_code.aspx
创建新的工程,选择'Infineon XMC EtherCAT hardware'(如要开发CIA402相关,请选择CiA402 Sample)。
完成之后点击’slaveinformation'可以看到XMC系列对应的一些信息,这时候可以将其中的信息修改成自己申请好的信息,包括vendor ID、name之类的。如果想对其中的配置进行修改,也可以点击到不同的项中进行自定义修改。
这里以‘ETHCAT_SSC_XMC43’工程为例进行开发,完成配置之后将这个SSC tool工程保存到‘ETHCAT_SSC_XMC43’工程文件夹的SSC目录下。
Step 2:创建新的slave file
创建好SSC tool工程之后,需要创建一个新的application description file。点击'Tool-> Application->Create new'会弹出一个excel表格,可根据自身项目进行相应的定义。我这边以最基本的object descriptions进行了定义。
完成之后,将表格同样存入‘ETHCAT_SSC_XMC43’工程文件夹的SSC目录下。
然后点击‘Project -> “Create new Slave Files’生成新的slave files。注意source folder要选择工程目录下的src文件夹,ESI文件要选择刚刚保存的.xml文件,点击‘start’之后slave files就会自动生成到选择的src文件夹中。
Step 3:根据应用修改代码
首先需要修改 “void APPL_InputMapping(UINT16* pData)” 中的内容,根据我们在excel表格中进行的定义,我们会将这些数据进行相应的处理。
void APPL_InputMapping(UINT16* pData)
{
*pData = Results0x6000.Result1;
pData++;
*pData = Results0x6000.Result2;
pData++;
*pData = Results0x6000.Toggle;
}
然后是修改“void APPL_OuputMapping(UINT16* pData)”。
void APPL_OutputMapping(UINT16* pData)
{
SetpointValues0x7000.Value1 = *pData;
pData++;
SetpointValues0x7000.Value2 = *pData;
}
最后修改“void APPL_Application(void)”。
void APPL_Application(void)
{
Results0x6000.Result1 += Parameters0x8000.Inc1;
Results0x6000.Result2 =
SetpointValues0x7000.Value1+SetpointValues0x7000.Value2;
}
如果是想按照英飞凌官方例程进行开发,可按照例程中的文档修改上面的代码,但需要注意的是excel表格中的定义要和代码中使用的变量保持一致。
完成之后就可以编译工程并烧录到开发板中。
Step 4: TwinCAT3中的配置
想要TwinCAT能够识别到设备,需要将.xml文件复制到本地的config文件夹中,地址应该是C:\TwinCAT\3.1\Config\Io\EtherCAT
然后点开TwinCAT 3,按步骤添加device并扫描设备。如果再没更新之前,扫描设备应该还是会扫描出来英飞凌的vendor ID。这时候初始化应该没问题,但是进行模式切换时就会出现报错:Error: check vendor ID。
所以需要通过以下步骤来更新EEPROM。
首先在扫描出的设备处进入EtherCAT选项,点击advanced setting。
然后在ESC Access中找到Hex Editor,点击download from list。加载好了之后就会看到自己vendor ID对应的设备名称,双击进行更新,完成之后点击‘OK’退出。
这时候需要将原本device下的Box 1删掉,然后重新扫描设备才能看到带有正确名称的slave。完成扫描之后再点击freerun应该就不会出现vendor ID不匹配的报错了,如果出现其他的报错,则需要根据对应的报错来检查一下自己代码。
这个只是进行了简单的配置演示,如果你有更多问题,可以在英飞凌官方的技术支持平台—Infineon Developer Community英飞凌技术社区中文版面进行提问,平台链接为:
英飞凌技术社区拥有超10万工程师会员和庞大的技术专家团队,可以及时且全面回复你的问题。除此之外,你也可以在社区中直接搜索问题相关的技术文章和培训视频。
|