L_ETC_GetMasterDiagnostic: Value of xNotAllSlavesOperational bit is not correct

What happens?
The L_ETC_GetMasterDiagnostic function block from the L_IODrvEtherCAT library outputs diagnostic information from the EtherCAT master.
Via the xNotAllSlavesOperational structure element of the oDiagnostic output, the L_ETC_GetMasterDiagnostic function block outputs an incorrect value.
 
When does this behaviour occur?
If the L_ETC_MMCController or the L_ETC_MMCControllerBus function block is used in a project, the L_ETC_GetMasterDiagnosis function block outputs an incorrect value via the xNotAllSlavesOperational bit.
 
Which products are affected?
c300 controller from V3.10
3200 C controller from V3.10
p300 panel controller from V3.10
p500 panel controller from V3.10
 
Short-term measures/recommendations:
To find out if all EtherCAT slaves are in the "Operational" state, use the ETCSlave function block and check for every single EtherCAT slave if the slave is available on the bus (IsPresent property) and if the slave is in the "Operational" state (wState output), e.g.:
xSlaveIsOperational:= Slave.IsPresent AND Slave.pETCSlave^.wState=ETC_STATE_OPERATIONAL;

Evaluation:
When using the modular machine configuration (MMC), the xNotAllSlavesOperational bit cannot be used to check if all EtherCAT slaves are in the "Operational" state. A remedy is described under 'Short-term measures'.
 

URL for linking this AKB article: https://www.lenze.com/en-de/go/akb/201500704/1/
Contact form