fsm.c File Reference


Detailed Description

EtherCAT finite state machines.

Definition in file fsm.c.

Go to the source code of this file.

Functions

void ec_fsm_master_start (ec_fsm_t *fsm)
 Master state: START.
void ec_fsm_master_broadcast (ec_fsm_t *fsm)
 Master state: BROADCAST.
void ec_fsm_master_read_states (ec_fsm_t *fsm)
 Master state: STATES.
void ec_fsm_master_validate_vendor (ec_fsm_t *fsm)
 Master state: VALIDATE_VENDOR.
void ec_fsm_master_validate_product (ec_fsm_t *fsm)
 Master state: VALIDATE_PRODUCT.
void ec_fsm_master_rewrite_addresses (ec_fsm_t *fsm)
 Master state: ADDRESS.
void ec_fsm_master_configure_slave (ec_fsm_t *fsm)
 Master state: CONF.
void ec_fsm_master_scan_slaves (ec_fsm_t *fsm)
 Master state: SCAN.
void ec_fsm_master_write_eeprom (ec_fsm_t *fsm)
 Master state: EEPROM.
void ec_fsm_startup_start (ec_fsm_t *fsm)
 Master state: START.
void ec_fsm_startup_broadcast (ec_fsm_t *fsm)
 Master state: BROADCAST.
void ec_fsm_startup_scan (ec_fsm_t *fsm)
 Master state: SCAN.
void ec_fsm_configuration_start (ec_fsm_t *fsm)
 Master configuration state machine: START.
void ec_fsm_configuration_conf (ec_fsm_t *fsm)
 Master state: CONF.
void ec_fsm_slavescan_start (ec_fsm_t *fsm)
 Slave state: START_READING.
void ec_fsm_slavescan_address (ec_fsm_t *fsm)
 Slave state: ADDRESS.
void ec_fsm_slavescan_state (ec_fsm_t *fsm)
 Slave state: STATE.
void ec_fsm_slavescan_base (ec_fsm_t *fsm)
 Slave state: BASE.
void ec_fsm_slavescan_datalink (ec_fsm_t *fsm)
 Slave state: DATALINK.
void ec_fsm_slavescan_eeprom_size (ec_fsm_t *fsm)
 Slave state: EEPROM_SIZE.
void ec_fsm_slavescan_eeprom_data (ec_fsm_t *fsm)
 Slave state: EEPROM_DATA.
void ec_fsm_slaveconf_init (ec_fsm_t *fsm)
 Slave state: INIT.
void ec_fsm_slaveconf_sync (ec_fsm_t *fsm)
 Slave state: SYNC.
void ec_fsm_slaveconf_preop (ec_fsm_t *fsm)
 Slave state: PREOP.
void ec_fsm_slaveconf_fmmu (ec_fsm_t *fsm)
 Slave state: FMMU.
void ec_fsm_slaveconf_sdoconf (ec_fsm_t *fsm)
 Slave state: SDOCONF.
void ec_fsm_slaveconf_saveop (ec_fsm_t *fsm)
 Slave state: SAVEOP.
void ec_fsm_slaveconf_op (ec_fsm_t *fsm)
 Slave state: OP.
void ec_fsm_sii_start_reading (ec_fsm_t *fsm)
 SII state: START_READING.
void ec_fsm_sii_read_check (ec_fsm_t *fsm)
 SII state: READ_CHECK.
void ec_fsm_sii_read_fetch (ec_fsm_t *fsm)
 SII state: READ_FETCH.
void ec_fsm_sii_start_writing (ec_fsm_t *fsm)
 SII state: START_WRITING.
void ec_fsm_sii_write_check (ec_fsm_t *fsm)
 SII state: WRITE_CHECK.
void ec_fsm_sii_write_check2 (ec_fsm_t *fsm)
 SII state: WRITE_CHECK2.
void ec_fsm_change_start (ec_fsm_t *fsm)
 Change state: START.
void ec_fsm_change_check (ec_fsm_t *fsm)
 Change state: CHECK.
void ec_fsm_change_status (ec_fsm_t *fsm)
 Change state: STATUS.
void ec_fsm_change_code (ec_fsm_t *fsm)
 Change state: CODE.
void ec_fsm_change_ack (ec_fsm_t *fsm)
 Change state: ACK.
void ec_fsm_change_check_ack (ec_fsm_t *fsm)
 Change state: CHECK ACK.
void ec_fsm_coe_down_start (ec_fsm_t *fsm)
 CoE state: DOWN_START.
void ec_fsm_coe_down_request (ec_fsm_t *fsm)
 CoE state: DOWN_REQUEST.
void ec_fsm_coe_down_check (ec_fsm_t *fsm)
 CoE state: DOWN_CHECK.
void ec_fsm_coe_down_response (ec_fsm_t *fsm)
 CoE state: DOWN_RESPONSE.
void ec_fsm_end (ec_fsm_t *fsm)
 State: END.
void ec_fsm_error (ec_fsm_t *fsm)
 State: ERROR.
void ec_canopen_abort_msg (uint32_t abort_code)
 Outputs an SDO abort message.
int ec_fsm_init (ec_fsm_t *fsm, ec_master_t *master)
 Constructor.
void ec_fsm_clear (ec_fsm_t *fsm)
 Destructor.
void ec_fsm_reset (ec_fsm_t *fsm)
 Resets the state machine.
void ec_fsm_execute (ec_fsm_t *fsm)
 Executes the current state of the state machine.
void ec_fsm_startup (ec_fsm_t *fsm)
 Initializes the master startup state machine.
int ec_fsm_startup_running (ec_fsm_t *fsm)
 Returns the running state of the master startup state machine.
int ec_fsm_startup_success (ec_fsm_t *fsm)
 Returns, if the master startup state machine terminated with success.
void ec_fsm_configuration (ec_fsm_t *fsm)
 Initializes the master configuration state machine.
int ec_fsm_configuration_running (ec_fsm_t *fsm)
 Returns the running state of the master configuration state machine.
int ec_fsm_configuration_success (ec_fsm_t *fsm)
 Returns, if the master confuguration state machine terminated with success.
void ec_fsm_master_action_process_states (ec_fsm_t *fsm)
 Master action: PROC_STATES.
void ec_fsm_master_action_next_slave_state (ec_fsm_t *fsm)
 Master action: Get state of next slave.
void ec_fsm_master_action_addresses (ec_fsm_t *fsm)
 Master action: ADDRESS.

Variables

const ec_code_msg_t al_status_messages []
 Application layer status messages.
const ec_code_msg_t sdo_abort_messages []
 SDO abort messages.


Function Documentation

void ec_fsm_master_start ec_fsm_t fsm  ) 
 

Master state: START.

Starts with getting slave count and slave states.

Definition at line 422 of file fsm.c.

void ec_fsm_master_broadcast ec_fsm_t fsm  ) 
 

Master state: BROADCAST.

Processes the broadcast read slave count and slaves states.

Parameters:
fsm  finite state machine

Definition at line 436 of file fsm.c.

void ec_fsm_master_read_states ec_fsm_t fsm  ) 
 

Master state: STATES.

Fetches the AL- and online state of a slave.

Parameters:
fsm  finite state machine

Definition at line 668 of file fsm.c.

void ec_fsm_master_validate_vendor ec_fsm_t fsm  ) 
 

Master state: VALIDATE_VENDOR.

Validates the vendor ID of a slave.

Parameters:
fsm  finite state machine

Definition at line 719 of file fsm.c.

void ec_fsm_master_validate_product ec_fsm_t fsm  ) 
 

Master state: VALIDATE_PRODUCT.

Validates the product ID of a slave.

Parameters:
fsm  finite state machine

Definition at line 789 of file fsm.c.

void ec_fsm_master_rewrite_addresses ec_fsm_t fsm  ) 
 

Master state: ADDRESS.

Checks, if the new station address has been written to the slave.

Parameters:
fsm  finite state machine

Definition at line 839 of file fsm.c.

void ec_fsm_master_configure_slave ec_fsm_t fsm  ) 
 

Master state: CONF.

Starts configuring a slave.

Parameters:
fsm  finite state machine

Definition at line 918 of file fsm.c.

void ec_fsm_master_scan_slaves ec_fsm_t fsm  ) 
 

Master state: SCAN.

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

Parameters:
fsm  finite state machine

Definition at line 871 of file fsm.c.

void ec_fsm_master_write_eeprom ec_fsm_t  ) 
 

Master state: EEPROM.

Parameters:
fsm  finite state machine

Definition at line 936 of file fsm.c.

void ec_fsm_startup_start ec_fsm_t fsm  ) 
 

Master state: START.

Starts with getting slave count and slave states.

Definition at line 246 of file fsm.c.

void ec_fsm_startup_broadcast ec_fsm_t fsm  ) 
 

Master state: BROADCAST.

Processes the broadcast read slave count and slaves states.

Parameters:
fsm  finite state machine

Definition at line 260 of file fsm.c.

void ec_fsm_startup_scan ec_fsm_t fsm  ) 
 

Master state: SCAN.

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

Parameters:
fsm  finite state machine

Definition at line 324 of file fsm.c.

void ec_fsm_configuration_start ec_fsm_t  ) 
 

Master configuration state machine: START.

Parameters:
fsm  finite state machine

Definition at line 362 of file fsm.c.

void ec_fsm_configuration_conf ec_fsm_t  ) 
 

Master state: CONF.

Parameters:
fsm  finite state machine

Definition at line 386 of file fsm.c.

void ec_fsm_slavescan_start ec_fsm_t fsm  ) 
 

Slave state: START_READING.

First state of the slave state machine. Writes the station address to the slave, according to its ring position.

Parameters:
fsm  finite state machine

Definition at line 986 of file fsm.c.

void ec_fsm_slavescan_address ec_fsm_t  ) 
 

Slave state: ADDRESS.

Parameters:
fsm  finite state machine

Definition at line 1003 of file fsm.c.

void ec_fsm_slavescan_state ec_fsm_t  ) 
 

Slave state: STATE.

Parameters:
fsm  finite state machine

Definition at line 1028 of file fsm.c.

void ec_fsm_slavescan_base ec_fsm_t  ) 
 

Slave state: BASE.

Parameters:
fsm  finite state machine

Definition at line 1061 of file fsm.c.

void ec_fsm_slavescan_datalink ec_fsm_t  ) 
 

Slave state: DATALINK.

Parameters:
fsm  finite state machine

Definition at line 1096 of file fsm.c.

void ec_fsm_slavescan_eeprom_size ec_fsm_t  ) 
 

Slave state: EEPROM_SIZE.

Parameters:
fsm  finite state machine

Definition at line 1134 of file fsm.c.

void ec_fsm_slavescan_eeprom_data ec_fsm_t  ) 
 

Slave state: EEPROM_DATA.

Parameters:
fsm  finite state machine

Definition at line 1194 of file fsm.c.

void ec_fsm_slaveconf_init ec_fsm_t  ) 
 

Slave state: INIT.

Parameters:
fsm  finite state machine

Definition at line 1308 of file fsm.c.

void ec_fsm_slaveconf_sync ec_fsm_t  ) 
 

Slave state: SYNC.

Parameters:
fsm  finite state machine

Definition at line 1368 of file fsm.c.

void ec_fsm_slaveconf_preop ec_fsm_t  ) 
 

Slave state: PREOP.

Parameters:
fsm  finite state machine

Definition at line 1394 of file fsm.c.

void ec_fsm_slaveconf_fmmu ec_fsm_t  ) 
 

Slave state: FMMU.

Parameters:
fsm  finite state machine

Definition at line 1451 of file fsm.c.

void ec_fsm_slaveconf_sdoconf ec_fsm_t  ) 
 

Slave state: SDOCONF.

Parameters:
fsm  finite state machine

Definition at line 1487 of file fsm.c.

void ec_fsm_slaveconf_saveop ec_fsm_t  ) 
 

Slave state: SAVEOP.

Parameters:
fsm  finite state machine

Definition at line 1523 of file fsm.c.

void ec_fsm_slaveconf_op ec_fsm_t  ) 
 

Slave state: OP.

Parameters:
fsm  finite state machine

Definition at line 1554 of file fsm.c.

void ec_fsm_sii_start_reading ec_fsm_t fsm  ) 
 

SII state: START_READING.

Starts reading the slave information interface.

Parameters:
fsm  finite state machine

Definition at line 1579 of file fsm.c.

void ec_fsm_sii_read_check ec_fsm_t fsm  ) 
 

SII state: READ_CHECK.

Checks, if the SII-read-datagram has been sent and issues a fetch datagram.

Parameters:
fsm  finite state machine

Definition at line 1605 of file fsm.c.

void ec_fsm_sii_read_fetch ec_fsm_t fsm  ) 
 

SII state: READ_FETCH.

Fetches the result of an SII-read datagram.

Parameters:
fsm  finite state machine

Definition at line 1637 of file fsm.c.

void ec_fsm_sii_start_writing ec_fsm_t fsm  ) 
 

SII state: START_WRITING.

Starts reading the slave information interface.

Parameters:
fsm  finite state machine

Definition at line 1694 of file fsm.c.

void ec_fsm_sii_write_check ec_fsm_t  ) 
 

SII state: WRITE_CHECK.

Parameters:
fsm  finite state machine

Definition at line 1714 of file fsm.c.

void ec_fsm_sii_write_check2 ec_fsm_t  ) 
 

SII state: WRITE_CHECK2.

Parameters:
fsm  finite state machine

Definition at line 1739 of file fsm.c.

void ec_fsm_change_start ec_fsm_t  ) 
 

Change state: START.

Parameters:
fsm  finite state machine

Definition at line 1777 of file fsm.c.

void ec_fsm_change_check ec_fsm_t  ) 
 

Change state: CHECK.

Parameters:
fsm  finite state machine

Definition at line 1797 of file fsm.c.

void ec_fsm_change_status ec_fsm_t  ) 
 

Change state: STATUS.

Parameters:
fsm  finite state machine

Definition at line 1838 of file fsm.c.

void ec_fsm_change_code ec_fsm_t  ) 
 

Change state: CODE.

Parameters:
fsm  finite state machine

Definition at line 1931 of file fsm.c.

void ec_fsm_change_ack ec_fsm_t  ) 
 

Change state: ACK.

Parameters:
fsm  finite state machine

Definition at line 1969 of file fsm.c.

void ec_fsm_change_check_ack ec_fsm_t  ) 
 

Change state: CHECK ACK.

Parameters:
fsm  finite state machine

Definition at line 1995 of file fsm.c.

void ec_fsm_coe_down_start ec_fsm_t  ) 
 

CoE state: DOWN_START.

Parameters:
fsm  finite state machine

Definition at line 2039 of file fsm.c.

void ec_fsm_coe_down_request ec_fsm_t  ) 
 

CoE state: DOWN_REQUEST.

Parameters:
fsm  finite state machine

Definition at line 2079 of file fsm.c.

void ec_fsm_coe_down_check ec_fsm_t  ) 
 

CoE state: DOWN_CHECK.

Parameters:
fsm  finite state machine

Definition at line 2104 of file fsm.c.

void ec_fsm_coe_down_response ec_fsm_t  ) 
 

CoE state: DOWN_RESPONSE.

Parameters:
fsm  finite state machine

Definition at line 2141 of file fsm.c.

void ec_fsm_end ec_fsm_t  ) 
 

State: END.

Parameters:
fsm  finite state machine

Definition at line 2284 of file fsm.c.

void ec_fsm_error ec_fsm_t  ) 
 

State: ERROR.

Parameters:
fsm  finite state machine

Definition at line 2274 of file fsm.c.

int ec_fsm_init ec_fsm_t fsm,
ec_master_t master
 

Constructor.

Parameters:
fsm  finite state machine
master  EtherCAT master

Definition at line 111 of file fsm.c.

void ec_fsm_clear ec_fsm_t fsm  ) 
 

Destructor.

Parameters:
fsm  finite state machine

Definition at line 136 of file fsm.c.

void ec_fsm_reset ec_fsm_t fsm  ) 
 

Resets the state machine.

Parameters:
fsm  finite state machine

Definition at line 147 of file fsm.c.

void ec_fsm_execute ec_fsm_t fsm  ) 
 

Executes the current state of the state machine.

Parameters:
fsm  finite state machine

Definition at line 160 of file fsm.c.

int ec_fsm_startup_running ec_fsm_t fsm  ) 
 

Returns the running state of the master startup state machine.

Returns:
non-zero if not terminated yet.
Parameters:
fsm  Finite state machine

Definition at line 183 of file fsm.c.

int ec_fsm_startup_success ec_fsm_t fsm  ) 
 

Returns, if the master startup state machine terminated with success.

Returns:
non-zero if successful.
Parameters:
fsm  Finite state machine

Definition at line 196 of file fsm.c.

int ec_fsm_configuration_running ec_fsm_t fsm  ) 
 

Returns the running state of the master configuration state machine.

Returns:
non-zero if not terminated yet.
Parameters:
fsm  Finite state machine

Definition at line 219 of file fsm.c.

int ec_fsm_configuration_success ec_fsm_t fsm  ) 
 

Returns, if the master confuguration state machine terminated with success.

Returns:
non-zero if successful.
Parameters:
fsm  Finite state machine

Definition at line 232 of file fsm.c.

void ec_fsm_master_action_process_states ec_fsm_t fsm  ) 
 

Master action: PROC_STATES.

Processes the slave states.

Parameters:
fsm  finite state machine

Definition at line 552 of file fsm.c.

void ec_fsm_master_action_next_slave_state ec_fsm_t fsm  ) 
 

Master action: Get state of next slave.

Parameters:
fsm  finite state machine

Definition at line 621 of file fsm.c.

void ec_fsm_master_action_addresses ec_fsm_t fsm  ) 
 

Master action: ADDRESS.

Looks for slave, that have lost their configuration and writes their station address, so that they can be reconfigured later.

Parameters:
fsm  finite state machine

Definition at line 759 of file fsm.c.


Variable Documentation

const ec_code_msg_t sdo_abort_messages[]
 

SDO abort messages.

The "abort SDO transfer request" supplies an abort code, which can be translated to clear text. This table does the mapping of the codes and messages.

Definition at line 2208 of file fsm.c.


Generated on Fri Sep 1 14:56:56 2006 for IgH EtherCAT master by  doxygen 1.4.6