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中的所有信息。

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