赞
踩
通过ethercat命令行可以看到和pdo相关的几个数据结构,可以表示成下图,主站中也是通过链表这么存储的。如果从站支持邮箱协议,0,1默认给邮箱通信使用。
ecrt_master_create_domain 初始化一个domain的结构
ecrt_slave_config_pdos配置pdos,通过sync结构可以找到pdos entry等所有信息,可以参考上面的图,通过个数和存放的地址来确定数据数组的大小。把这些数据存到从站的数据结构中,当从站配置流程启动后,会把这些数据配置到对应的从站中。
ecrt_domain_reg_pdo_entry_list 配置从站的domain,可以每个从站对应一个domain,也可以多个从站对应一个domain,下图上面的就是一个domain对应多个从站,地址空间是连续的,通过偏移位置来区分对应的从站,下面的是每个从站都有对应的domain。
对应到报文上的差异,每个domain作为一条命令发送
pdo数据域是通过共享内存的方式实现的,在激活主站的时候会给pdo申请一块连续的内存空间
用户程序同mmap方式映射到主站驱动中申请的pdo内存,实现数据的共享
当然每个周期还需要把对应的pdo命令加入到数据队列,这样调用send发送报文时,才能把pdo的数据发送出去
IgH很依赖从站EEPROM中烧写的ESI文件,如果从站中没有烧写ESI,或是从站中ESI的信息不全配置过程可能会失败,国内的一些IO模块可能会遇到这些问题,当然我们可以在源码上加上手动的配置功能来补全缺失的信息。
由于IgH的从站配置都是自动完成的,很难在配置过程中插入额外的命令,像twincat、acontis等都可以通过eni来配置从站,可以在eni中加入额外的配置命令,协议栈运行从站从INIT到OP配置过程中就会执行这些配置命令,目前业余时间也在思考和实现在IgH上支持eni的功能,来解决IgH在配置过程中存在的兼容性问题,特别是IO模块。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。