IgH EtherCAT Master  1.6.0-rc1
fsm_master.c File Reference

EtherCAT master state machine. More...

Go to the source code of this file.

Macros

#define EC_SYSTEM_TIME_TOLERANCE_NS   1000
 Time difference [ns] to tolerate without setting a new system time offset.
 

Functions

void ec_fsm_master_state_start (ec_fsm_master_t *fsm )
 Master state: START. More...
 
void ec_fsm_master_state_broadcast (ec_fsm_master_t *fsm )
 Master state: BROADCAST. More...
 
void ec_fsm_master_state_read_al_status (ec_fsm_master_t *fsm )
 Master state: READ AL STATUS. More...
 
void ec_fsm_master_state_acknowledge (ec_fsm_master_t *fsm )
 Master state: ACKNOWLEDGE. More...
 
void ec_fsm_master_state_configure_slave (ec_fsm_master_t *fsm )
 Master state: CONFIGURE SLAVE. More...
 
void ec_fsm_master_state_clear_addresses (ec_fsm_master_t *fsm )
 Master state: CLEAR ADDRESSES. More...
 
void ec_fsm_master_state_dc_measure_delays (ec_fsm_master_t *fsm )
 Master state: DC MEASURE DELAYS. More...
 
void ec_fsm_master_state_scan_slave (ec_fsm_master_t *fsm )
 Master state: SCAN SLAVE. More...
 
void ec_fsm_master_state_dc_read_offset (ec_fsm_master_t *fsm )
 Master state: DC READ OFFSET. More...
 
void ec_fsm_master_state_dc_write_offset (ec_fsm_master_t *fsm )
 Master state: DC WRITE OFFSET. More...
 
void ec_fsm_master_state_dc_reset_filter (ec_fsm_master_t *fsm )
 Master state: DC RESET FILTER. More...
 
void ec_fsm_master_state_assign_sii (ec_fsm_master_t *fsm )
 Master state: ASSIGN SII. More...
 
void ec_fsm_master_state_write_sii (ec_fsm_master_t *fsm )
 Master state: WRITE SII. More...
 
void ec_fsm_master_state_sdo_dictionary (ec_fsm_master_t *fsm )
 Master state: SDO DICTIONARY. More...
 
void ec_fsm_master_state_sdo_request (ec_fsm_master_t *fsm )
 Master state: SDO REQUEST. More...
 
void ec_fsm_master_enter_clear_addresses (ec_fsm_master_t *fsm )
 Start clearing slave addresses. More...
 
void ec_fsm_master_enter_write_system_times (ec_fsm_master_t *fsm )
 Start writing DC system times. More...
 
void ec_fsm_master_init (ec_fsm_master_t *fsm, ec_master_t *master, ec_datagram_t *datagram)
 Constructor. More...
 
void ec_fsm_master_clear (ec_fsm_master_t *fsm)
 Destructor. More...
 
void ec_fsm_master_reset (ec_fsm_master_t *fsm)
 Reset state machine. More...
 
int ec_fsm_master_exec (ec_fsm_master_t *fsm)
 Executes the current state of the state machine. More...
 
int ec_fsm_master_idle (const ec_fsm_master_t *fsm)
 
void ec_fsm_master_restart (ec_fsm_master_t *fsm)
 Restarts the master state machine. More...
 
int ec_fsm_master_action_process_sii (ec_fsm_master_t *fsm)
 Check for pending SII write requests and process one. More...
 
int ec_fsm_master_action_process_sdo (ec_fsm_master_t *fsm)
 Check for pending SDO requests and process one. More...
 
void ec_fsm_master_action_idle (ec_fsm_master_t *fsm)
 Master action: IDLE. More...
 
void ec_fsm_master_action_next_slave_state (ec_fsm_master_t *fsm)
 Master action: Get state of next slave. More...
 
void ec_fsm_master_action_configure (ec_fsm_master_t *fsm)
 Master action: Configure. More...
 
void ec_fsm_master_enter_dc_measure_delays (ec_fsm_master_t *fsm)
 Start measuring DC delays. More...
 
u64 ec_fsm_master_dc_offset32 (ec_fsm_master_t *fsm, u64 system_time, u64 old_offset, u64 app_time_sent)
 Configure 32 bit time offset. More...
 
u64 ec_fsm_master_dc_offset64 (ec_fsm_master_t *fsm, u64 system_time, u64 old_offset, u64 app_time_sent)
 Configure 64 bit time offset. More...
 

Detailed Description

EtherCAT master state machine.

Definition in file fsm_master.c.

Function Documentation

void ec_fsm_master_state_start ( ec_fsm_master_t fsm)

Master state: START.

Starts with getting slave count and slave states.

Parameters
fsmMaster state machine.

Definition at line 207 of file fsm_master.c.

void ec_fsm_master_state_broadcast ( ec_fsm_master_t fsm)

Master state: BROADCAST.

Processes the broadcast read slave count and slaves states.

Parameters
fsmMaster state machine.

Definition at line 268 of file fsm_master.c.

void ec_fsm_master_state_read_al_status ( ec_fsm_master_t fsm)

Master state: READ AL STATUS.

Fetches the AL state of a slave.

Parameters
fsmMaster state machine.

Definition at line 872 of file fsm_master.c.

void ec_fsm_master_state_acknowledge ( ec_fsm_master_t fsm)

Master state: ACKNOWLEDGE.

Parameters
fsmMaster state machine.

Definition at line 932 of file fsm_master.c.

void ec_fsm_master_state_configure_slave ( ec_fsm_master_t fsm)

Master state: CONFIGURE SLAVE.

Starts configuring a slave.

Parameters
fsmMaster state machine.

Definition at line 1209 of file fsm_master.c.

void ec_fsm_master_state_clear_addresses ( ec_fsm_master_t fsm)

Master state: CLEAR ADDRESSES.

Parameters
fsmMaster state machine.

Definition at line 1037 of file fsm_master.c.

void ec_fsm_master_state_dc_measure_delays ( ec_fsm_master_t fsm)

Master state: DC MEASURE DELAYS.

Parameters
fsmMaster state machine.

Definition at line 1077 of file fsm_master.c.

void ec_fsm_master_state_scan_slave ( ec_fsm_master_t fsm)

Master state: SCAN SLAVE.

Executes the sub-statemachine for the scanning of a slave.

Parameters
fsmMaster state machine.

Definition at line 1130 of file fsm_master.c.

void ec_fsm_master_state_dc_read_offset ( ec_fsm_master_t fsm)

Master state: DC READ OFFSET.

Parameters
fsmMaster state machine.

Definition at line 1360 of file fsm_master.c.

void ec_fsm_master_state_dc_write_offset ( ec_fsm_master_t fsm)

Master state: DC WRITE OFFSET.

Parameters
fsmMaster state machine.

Definition at line 1440 of file fsm_master.c.

void ec_fsm_master_state_dc_reset_filter ( ec_fsm_master_t fsm)

Master state: DC RESET FILTER.

Parameters
fsmMaster state machine.

Definition at line 1485 of file fsm_master.c.

void ec_fsm_master_state_assign_sii ( ec_fsm_master_t fsm)

Master state: ASSIGN SII.

Parameters
fsmMaster state machine.

Definition at line 1520 of file fsm_master.c.

void ec_fsm_master_state_write_sii ( ec_fsm_master_t fsm)

Master state: WRITE SII.

Parameters
fsmMaster state machine.

Definition at line 1557 of file fsm_master.c.

void ec_fsm_master_state_sdo_dictionary ( ec_fsm_master_t fsm)

Master state: SDO DICTIONARY.

Parameters
fsmMaster state machine.

Definition at line 1611 of file fsm_master.c.

void ec_fsm_master_state_sdo_request ( ec_fsm_master_t fsm)

Master state: SDO REQUEST.

Parameters
fsmMaster state machine.

Definition at line 1649 of file fsm_master.c.

void ec_fsm_master_enter_clear_addresses ( ec_fsm_master_t fsm)

Start clearing slave addresses.

Parameters
fsmMaster state machine.

Definition at line 954 of file fsm_master.c.

void ec_fsm_master_enter_write_system_times ( ec_fsm_master_t fsm)

Start writing DC system times.

Parameters
fsmMaster state machine.

Definition at line 1244 of file fsm_master.c.

void ec_fsm_master_init ( ec_fsm_master_t fsm,
ec_master_t master,
ec_datagram_t datagram 
)

Constructor.

Parameters
fsmMaster state machine.
masterEtherCAT master.
datagramDatagram object to use.

Definition at line 86 of file fsm_master.c.

void ec_fsm_master_clear ( ec_fsm_master_t fsm)

Destructor.

Parameters
fsmMaster state machine.

Definition at line 113 of file fsm_master.c.

void ec_fsm_master_reset ( ec_fsm_master_t fsm)

Reset state machine.

Parameters
fsmMaster state machine.

Definition at line 131 of file fsm_master.c.

int ec_fsm_master_exec ( ec_fsm_master_t fsm)

Executes the current state of the state machine.

If the state machine's datagram is not sent or received yet, the execution of the state machine is delayed to the next cycle.

Returns
true, if the state machine was executed
Parameters
fsmMaster state machine.

Definition at line 160 of file fsm_master.c.

int ec_fsm_master_idle ( const ec_fsm_master_t fsm)
Returns
true, if the state machine is in an idle phase
Parameters
fsmMaster state machine.

Definition at line 179 of file fsm_master.c.

void ec_fsm_master_restart ( ec_fsm_master_t fsm)

Restarts the master state machine.

Parameters
fsmMaster state machine.

Definition at line 190 of file fsm_master.c.

int ec_fsm_master_action_process_sii ( ec_fsm_master_t fsm)

Check for pending SII write requests and process one.

Returns
non-zero, if an SII write request is processed.
Parameters
fsmMaster state machine.

Definition at line 450 of file fsm_master.c.

int ec_fsm_master_action_process_sdo ( ec_fsm_master_t fsm)

Check for pending SDO requests and process one.

Returns
non-zero, if an SDO request is processed.
Parameters
fsmMaster state machine.

Definition at line 512 of file fsm_master.c.

void ec_fsm_master_action_idle ( ec_fsm_master_t fsm)

Master action: IDLE.

Does secondary work.

Parameters
fsmMaster state machine.

Definition at line 571 of file fsm_master.c.

void ec_fsm_master_action_next_slave_state ( ec_fsm_master_t fsm)

Master action: Get state of next slave.

Parameters
fsmMaster state machine.

Definition at line 635 of file fsm_master.c.

void ec_fsm_master_action_configure ( ec_fsm_master_t fsm)

Master action: Configure.

Parameters
fsmMaster state machine.

Definition at line 808 of file fsm_master.c.

void ec_fsm_master_enter_dc_measure_delays ( ec_fsm_master_t fsm)

Start measuring DC delays.

Parameters
fsmMaster state machine.

Definition at line 970 of file fsm_master.c.

u64 ec_fsm_master_dc_offset32 ( ec_fsm_master_t fsm,
u64  system_time,
u64  old_offset,
u64  app_time_sent 
)

Configure 32 bit time offset.

Returns
New offset.
Parameters
fsmMaster state machine.
system_timeSystem time register.
old_offsetTime offset register.
app_time_sentMaster app time by reading.

Definition at line 1290 of file fsm_master.c.

u64 ec_fsm_master_dc_offset64 ( ec_fsm_master_t fsm,
u64  system_time,
u64  old_offset,
u64  app_time_sent 
)

Configure 64 bit time offset.

Returns
New offset.
Parameters
fsmMaster state machine.
system_timeSystem time register.
old_offsetTime offset register.
app_time_sentMaster app time by reading.

Definition at line 1327 of file fsm_master.c.