EtherCAT主站SOEM -- 7 -- SOEM之ethercatmain.h/c文件解析
- 0 Windows系统QT及VisualStudio和ubuntu系统QT和STM32F767视频欣赏及源代码链接:
- 0 Win QT & VS和Ubuntu QT & STM32F767 移植SOEM
- 一 ethercatmain.h/c文件功能预览:
- 二 ethercatmain.h/c 文件的主要函数的作用:
-
- 2.1 结构体介绍
-
- 2.1.1 `ec_adaptert` 结构体:
- 2.1.2 `ec_fmmut` 结构体:
- 2.1.3 `ec_smt` 结构体:
- 2.1.4 `ec_state_status` 结构体:
- 2.1.5 `ec_slavet` 结构体:
- 2.1.6 `ec_groupt` 结构体:
- 2.1.7 `ec_eepromFMMUt` 结构体:
- 2.1.8 `ec_eepromSMt` 结构体:
- 2.1.9 `ec_eepromPDOt` 结构体:
- 2.1.10 `ec_mbxbuft` 结构体:
- 2.1.11 `ec_mbxheadert` 结构体:
- 2.1.12 `ec_alstatust` 结构体:
- 2.1.13 `ec_idxstackT` 结构体:
- 2.1.14 `ec_eringt` 结构体:
- 2.1.15 `ec_SMcommtypet` 结构体:
- 2.1.16 `ec_PDOassignt` 结构体:
- 2.1.17 `ec_PDOdesct` 结构体:
- 2.1.18 `ecx_context` 结构体:
- 2.2 函数功能分类
- 2.3 函数详细介绍:
-
- 2.3.1 `ec_pusherror(const ec_errort *Ec)`
- 2.3.2 `ec_poperror(ec_errort *Ec)`
- 2.3.3 `ec_iserror()`
- 2.3.4 `ec_packeterror(uint16 Slave, uint16 Index, uint8 SubIdx, uint16 ErrorCode)`
- 2.3.5 `ec_init(const char * ifname)`
- 2.3.6 `ec_init_redundant(const char *ifname, char *if2name)`
- 2.3.7 `ec_close()`
- 2.3.8 `ec_siigetbyte(uint16 slave, uint16 address)`
- 2.3.9 `ec_siifind(uint16 slave, uint16 cat)`
- 2.3.10 `ec_siistring(char *str, uint16 slave, uint16 Sn)`
- 2.3.11 `ec_siiFMMU(uint16 slave, ec_eepromFMMUt* FMMU)`
- 2.3.12 `ec_siiSM(uint16 slave, ec_eepromSMt* SM)`
- 2.3.13 `ec_siiSMnext(uint16 slave, ec_eepromSMt* SM, uint16 n)`
- 2.3.14 `ec_siiPDO(uint16 slave, ec_eepromPDOt* PDO, uint8 t)`
- 2.3.15 `ec_readstate()`
- 2.3.16 `ec_writestate(uint16 slave)`
- 2.3.17 `ec_statecheck(uint16 slave, uint16 reqstate, int timeout)`
- 2.3.18 `ec_mbxempty(uint16 slave, int timeout)`
- 2.3.19 `ec_mbxsend(uint16 slave, ec_mbxbuft *mbx, int timeout)`
- 2.3.20 `ec_mbxreceive(uint16 slave, ec_mbxbuft *mbx, int timeout)`
- 2.3.21 `ec_esidump(uint16 slave, uint8 *esibuf)`
- 2.3.22 `ec_readeeprom(uint16 slave, uint16 eeproma, int timeout)`
- 2.3.23 `ec_writeeeprom(uint16 slave, uint16 eeproma, uint16 data, int timeout)`
- 2.3.24 `ec_eeprom2master(uint16 slave)`
- 2.3.25 `ec_eeprom2pdi(uint16 slave)`
- 2.3.26 `ec_readeepromAP(uint16 aiadr, uint16 eeproma, int timeout)`
- 2.3.27 `ec_writeeepromAP(uint16 aiadr, uint16 eeproma, uint16 data, int timeout)`
- 2.3.28 `ec_readeepromFP(uint16 configadr, uint16 eeproma, int timeout)`
- 2.3.29 `ec_writeeepromFP(uint16 configadr, uint16 eeproma, uint16 data, int timeout)`
- 2.3.30 `ec_readeeprom1(uint16 slave, uint16 eeproma)`
- 2.3.31 `ec_readeeprom2(uint16 slave, int timeout)`
- 2.3.32 `ec_send_processdata_group(uint8 group)`
- 2.3.33 `ec_send_overlap_processdata_group(uint8 group)`
- 2.3.34 `ec_receive_processdata_group(uint8 group, int timeout)`
- 2.3.35 `ec_send_processdata()`
- 2.3.36 `ec_send_overlap_processdata()`
- 2.3.37 `ec_receive_processdata(int timeout)`
- 2.3.38 `ec_find_adapters()`
- 2.3.39 `ec_free_adapters(ec_adaptert *adapter)`
- 2.3.40 `ec_nextmbxcnt(uint8 cnt)`
- 2.3.41 `ec_clearmbx(ec_mbxbuft *Mbx)`
- 2.3.42 `ecx_pusherror(ecx_contextt *context, const ec_errort *Ec)`
- 2.3.43 `ecx_poperror(ecx_contextt *context, ec_errort *Ec)`
- 2.3.44 `ecx_iserror(ecx_contextt *context)`
- 2.3.45 `ecx_packeterror(ecx_contextt *context, uint16 Slave, uint16 Index, uint8 SubIdx, uint16 ErrorCode)`
- 2.3.46 `ecx_init(ecx_contextt *context, const char * ifname)`
- 2.3.47 `ecx_init_redundant(ecx_contextt *context, ecx_redportt *redport, const char *ifname, char *if2name)`
- 2.3.48 `ecx_close(ecx_contextt *context)`
- 2.3.49 `ecx_siigetbyte(ecx_contextt *context, uint16 slave, uint16 address)`
- 2.3.50 `ecx_siifind(ecx_contextt *context, uint16 slave, uint16 cat)`
- 2.3.51 `ecx_siistring(ecx_contextt *context, char *str, uint16 slave, uint16 Sn)`
- 2.3.52 `ecx_siiFMMU(ecx_contextt *context, uint16 slave, ec_eepromFMMUt* FMMU)`
- 2.3.53 `ecx_siiSM(ecx_contextt *context, uint16 slave, ec_eepromSMt* SM)`
- 2.3.54 `ecx_siiSMnext(ecx_contextt *context, uint16 slave, ec_eepromSMt* SM, uint16 n)`
- 2.3.55 `ecx_siiPDO(ecx_contextt *context, uint16 slave, ec_eepromPDOt* PDO, uint8 t)`
- 2.3.56 `ecx_readstate(ecx_contextt *context)`
- 2.3.57 `ecx_writestate(ecx_contextt *context, uint16 slave)`
- 2.3.58 `ecx_statecheck(ecx_contextt *context, uint16 slave, uint16 reqstate, int timeout)`
- 2.3.59 `ecx_mbxempty(ecx_contextt *context, uint16 slave, int timeout)`
- 2.3.60 `ecx_mbxsend(ecx_contextt *context, uint16 slave, ec_mbxbuft *mbx, int timeout)`
- 2.3.61 `ecx_mbxreceive(ecx_contextt *context, uint16 slave, ec_mbxbuft *mbx, int timeout)`
- 三 ethercatmain.h/c 原文件的中文注释
- 该文档修改记录:
- 总结
- 上下博客链接
0 Windows系统QT及VisualStudio和ubuntu系统QT和STM32F767视频欣赏及源代码链接:
0 Win QT & VS和Ubuntu QT & STM32F767 移植SOEM
0.0 移植环境预览:
序号 | 硬件环境 | 开发软件 |
---|---|---|
1 | Ubuntu18.04系统 | QT 5.13.2 及以上 |
2 | Win11/10系统 及 正点原子开发板阿波罗 STM32F767IGT6 | keil5 |
3 | Win11/10系统 | QT5.12.9及以上 |
4 | Win11/10系统 | VisualStudio 2017,建议使用2017版本 |
5 | 最近忙,忙完这段时间移植 |
0.1 Ubuntu18.04系统QT-SOEM博客、视频欣赏及源代码链接
特别注意 PS:
关于源代码说明一下,如果你订阅 我这个专栏 EtherCAT主站