EtherCAT使用与解析-SII信息提取

主站状态机在检测到从站个数发生变化时,会进行对从站的重新扫描,在此期间,主站需要提起从站中EEPROM中的SII信息,获取SII信息整体需要两个步骤:

1.确认从站SII信息的大小;

2.将SII信息进行提取;

主站对于从站的EEPROM是无法直接获取内容的,因此需要使用寄存器间接的将EEPROM信息进行提取,如下:

0x502~0x503   对SII读写的一些配置

0x504~0x507   对EEPROM地址的寻址

0x508~0x50B   对应EEPROM地址的设置值或获取值

这样的话,只要设置好对应的参数,就可以获取设置EEPROM中数据,也就是提取SII信息操作的基础。

struct ec_fsm_sii
{
    ec_slave_t *slave; /**< slave the FSM runs on */
    ec_datagram_t *datagram; /**< datagram used in the state machine */
    unsigned int retries; /**< retries upon datagram timeout */

    void (*state)(ec_fsm_sii_t *); /**< SII state function */
    uint16_t word_offset; /**< input: word offset in SII */
	
    ec_fsm_sii_addressing_t mode; /**< reading via APRD or NPRD */

	uint8_t value[4]; /**< raw SII value (32bit) */
    unsigned long jiffies_start; /**< Start timestamp. */
    uint8_t check_once_more; /**< one more try after timeout */
};

以上的SII状态机就是./master/fsm_sii.h/sc_fsm_sii结构;

那么,对于SII信息,他的结构中前4Byte中,前两个Byte存放的是类别类型信息和制造商特定位,后两个Byte存放的是该目录项的数据大小,因此基于数据大小信息可以不断获取下一个SII信息的目录项,直到找到0xFFFF,也就意味着SII信息的结束,然后还是基于SII状态机获取SII中的所有信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章