当前位置:   article > 正文

EtherCAT从站开发要点

ethercat从站开发

目录

1、EtherCAT从站开发工具

        (1)  SSC TOOL软件工具

        (2) excel表格,如下示例

2、从站代码架构图

(1)从站代码架构

(2)EtherCAT帧格式详解

3、从站文件概要

4、从站代码执行架构

5、中断处理

5.1 中断源有四个

5.2 中断处理API

6、过程数据处理

6.1 输出映射

6.2 输入映射

7、接口函数(需要用户实现)

7.1 通用接口

7.2 EtherCAT 状态机接口

7.3 过程数据处理接口

7.4 邮箱处理接口

8、对象字典索引范围

9、同步

9.1 ESC中断信号

           ​编辑9.2 支持的同步模式

(1) Free Run

(2) SM

(3) SM/Sync0

(4) SM/Sync0/Sync1

(5) Sync0

(6) Sync0/Sync1

​编辑(7) Subordinated Cycles

10、CiA402 state transitons and option codes

11、Excel应用示例

11.1 PDO映射和SM分配对象

11.2 Excel语法

12、过程数据

13、EtherCAT状态机 

重要问题汇总

1、wState不能显示状态的问题


注:本文主要摘自《Application Note ET9300(EtherCAT Slave Stack Code)》。

       本文主要简述EtherCAT从站开发关键知识点:COE对象字典、PDO、SDO、状态机、同步模式、关键API接口等。其他知识盲点后续逐渐补充完善

0、常见缩写和关键字注释

  1. AoE、FoE、EoE、SoE、VoE、CoE 解释见[第2章-从站代码架构图]章节。
  2. DC: Distributed Clock, 分布式时钟;
  3. ENI: EtherCAT Network Information(EtherCAT XML Master Configuration),EtherCAT网络信息;
  4. DPRAM:Dual-Ported RAM,双端口RAM;
  5. EoE: Ethernet over EtherCAT, 基于EtherCAT的以太网;
  6. ESC:EtherCAT Slave Controller,EtherCAT从站控制器;
  7. ESI:EtherCAT Slave Information(EtherCAT XML Devices Description),EtherCAT从站信息;
  8. ESM:EtherCAT State Machine,EtherCAT状态机;
  9. ETG:EtherCAT Technology Group;
  10. FMMU: Fieldbus Memory Management Unit;
  11. MDP: Modular Device Protocol;
  12. OD: Object Dictionary, 对象字典;
  13. PDO: Process Data Object, 过程数据对象;
  14. SDO:Service Data Object, 服务数据对象;
  15. DLPDU:数据链路层处理数据单元;
  16. SM: Sync Manager, 同步管理;
  17. SII:从站信息接口;
  18. SOP:Start of Frame, 开始帧;
  19. NIC:Network Interface Card,即网卡。
  20. /* excel表中 ObjectCode类型解释 */
  21. VARIABLE: 只有一个基本数据类型作为一个对象
  22. ARRAY: 相同基本数据类型的集合作为一个对象
  23. RECORD: 将不同基本数据类型的集合作为一个对象

1、EtherCAT从站开发工具

        (1)  SSC TOOL软件工具

                该软件自动生成EtherCAT从站核心代码。

        (2) excel表格,如下示例

说明:该表格用来配置对象字典,SSC工具导入该表格自动生成EtherCAT从站代码和xml设备描述文件。

2、从站代码架构图

(1)从站代码架构

        基于EtherCAT总线的应用层协议有AoE、FoE、EoE、SoE、VoE、CoE,各个协议的具体描述如下:

AoEADS over EtherCAT

ADS(Automation Device Specification),

由Message Router统一交换数据ADS路由器看成虚拟的路由器

FoEFile Access over EtherCAT在EtherCAT总线上传输文件的协议
EoEEtherCAT over EtherCAT在EtherCAT总线上执行Ethernet协议
SoEServo Drive Profile over EtherCAT在EtherCAT总线上执行SERCOS协议
VoEVendor Specific Protocol over EtherCAT供应商自定义协议,基于邮箱
CoECAN Application Protocol over EtherCAT在EtherCAT总线上执行CANopen协议

(2)EtherCAT帧格式详解

(3)Datagram Header解析和寻址方式简介

        Datagram Header帧结构:cmd | idx | Address | Len | IRQ 。

        不同寻址方式,报文头的Address字段组成也有所不同。

EtherCAT寻址方式只有4种:位置寻址(Position address)、节点寻址(Node address)、广播寻址(Broadcast address)、逻辑寻址(Logical address)。表中为不同的cmd所采用的寻址方式。

3、从站文件概要

4、从站代码执行架构

 

 

5、中断处理

5.1 中断源有四个

(1) 定时器中断:平台内部1ms定时器设置EtherCAT led和看门狗。如果没有配置定时器中断(ECAT-TIMER_INT = 0),所需的1ms周期基于主循环和平台内部计数器。

(2) Sync0: 使用分布式时钟(DC)处理数据和应用程序同步。

(3) Sync1: 使用分布式时钟(DC)处理数据和应用程序同步。

(4) PDI中断:进程数据处理和应用程序同步。

5.2 中断处理API

        void ECAT_CheckTimer(void);

        void PDI_Isr(void);

        void Sync0_Isr(void);

        void Sync1_Isr(void);

6、过程数据处理

6.1 输出映射

6.2 输入映射

 

7、接口函数(需要用户实现)

7.1 通用接口

                void APPL_Application(void);

                UINT16 APPL_GetDeviceID(void);

                 UINT16 (*pAPPL_EEPROM_Read)(UINT32 wordaddr);

                 UINT16 (*pAPPL_EEPROM_Write)(UINT32 wordaddr);

                UINT16 (*pAPPL_EEPROM_Reload))(void);

                UINT16 (*pAPPL_EEPROM_Store))(void);

                void (*pAPPL_MainLoop)(void);

7.2 EtherCAT 状态机接口

                UINT16 APPL_StartMailboxHandler(void);

                UINT16 APPL_StopMailboxHandler(void);

                UINT16 APPL_StartInputHandler(UINT16 *pIntMask);

                UINT16 APPL_StopInputHandler(void);

                UINT16 APPL_GenerateMapping(UINT16 *pInputSize, UINT16 *pOutputSize);

                void APPL_AckErrorInd(UINT16 stateTrans);

7.3 过程数据处理接口

                void APPL_InputMapping(UINT16 *pData);

                void APPL_OutputMapping(UINT16 *pData);

7.4 邮箱处理接口

                void (*pAPPL_CoEReadInd)(UINT16 Index, UINT8 Subindex, BOOL CompleteAccess);

                void (*pAPPL_CoEWriteInd)(UINT16 Index, UINT8 Subindex, BOOL CompleteAccess);

                void (*pAPPL_EoeReceive)(UINT16 *pData, UINT16 length);

                void (*pAPPL_EoeSettingInd)(UINT16 *pMac, UINT16 *plp, UINT16 *pSuvNet, UINT16                                                         *pDefaultGateway, UINT16 *pDnsIP);

                UINT16 (*pAPPL_FoeRead)(UINT16 MBXMEM *pName, UINT16 nameSize,                                                         UINT32 password, UINT16 maxBlockSize, UINT16 *pData);

                UINT16 (*pAPPL_FoeReadData)(UINT32 offset, UINT16 maxBlockSize, UINT16                                 *pData);

                void (*pAPPL_FoeError)(UINT32 errorCode);

                UINT16 (*pAPPL_FoeWrite)(UINT16 MBXMEM *pName, UINT16 nameSize,                                                                         UINT32 password);

                UINT16 (*pAPPL_FoeWriteData)( UINT16 MBXMEM *pData, UINT16 Size, BOOL                                                                         bDataFollowing);

8、对象字典索引范围

9、同步

9.1 ESC中断信号

           9.2 支持的同步模式

(1) Free Run

         

(2) SM

(3) SM/Sync0

         

(4) SM/Sync0/Sync1

 

(5) Sync0

(6) Sync0/Sync1
(7) Subordinated Cycles

10、CiA402 state transitons and option codes

 

11、Excel应用示例

11.1 PDO映射和SM分配对象

 

11.2 Excel语法

 

(1) Default / Min / Max

(2) M/O/S :mandatory  ,optional or conditional.

(3) B/S:       backup or settion object;

(4) rx/tx :  output ,input

(5) access:

   

(6) CoeRead/CoeWrite

(7) ENUM(枚举)

12、过程数据

 

13、EtherCAT状态机 

        

补充:

COE 对象字典和PDO映射简介文章参考:【EtherCAT】COE对象字典与PDO映射简介_pdo映射是什么意思_小可嵌入式的博客-CSDN博客

重要问题汇总

1、wState不能显示状态的问题

PLC程序需加如下指令(方法来自网上,亲测有效):

注意如果未加该段指令AM600 ECT模块其状态一直会为ETC_SLAVE_BOOT,加上后可正常显示从站状态。

【未测试】当EtherCAT组网中包含伺服与及ECT模块时,wState不能正确反映ECT模块的状态机,此时可以用m_wSlaveStateAct反映所有从站的状态机。实际上,Ethercat芯片(ET1100)寄存器地址0x0130:0x0131的值为从站设备的状态,该值的意义如下图所示。从站变量m_wSlaveStateAct获取的即为Ethercat芯片(ET1100)寄存器地址0x0130:0x0131的值。编程时可以通过m_wSlaveStateAct来获取从站的状态机。

2、wiresshark抓EtheCAT包示例

       示例: eth.src == 68:05:ca:35:c5:77 && (ecat.cmd == 5)

        

3、重要总结

        (1) twincat发送过程数据是input/output分开发下去的, input size/outsize 实际最大值为1481(1520-39),整体过程数据是分包发送的。

        

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/773643
推荐阅读
  

闽ICP备14008679号