CANopenDeviceSIL2 (FB)¶
FUNCTION_BLOCK CANopenDeviceSIL2 EXTENDS CSB.CANopenSafetyBase
This function block implements a CANopen Safety Slave SIL2 I/O driver which is realized through a black channel approach. It sits on top of an unsafe CANopen Slave Stack. Communication between both stacks is realized over shared memory.
The function block can be enabled/disabled by S_xEnable. When S_xEnable gets TRUE the function block checks
all conditions for safe communication each bus cycle:
- Unsafe stack is in - OPERATIONALstate
- Configuration valid object (16#13FE) is set to 16#A5 
- Safety configuration signatures are correct 
- Consistency of SRDO configuration data 
If a configuration error is detected (e.g. CRC mismatch) S_eError changes from NO_ERROR to the corresponding error code.
If every condition is fulfilled the function block tries starting safe communication.
Output S_xActive gets TRUE if all SRDOs are sent/received at least one time without any error.
When communication error occurs (e.g. SCT/SRVT timeout, data mismatch, …), all SRDO communication is stopped: S_xActive = FALSE, S_eError <> NO_ERROR.
Errors can be acknowledged by a rising edge of S_xErrorAck. Safe communication will be continued.
Note
Do not instantiate this function block. It will be instantiated implicitly.
- InOut:
- Scope - Name - Type - Initial - Comment - Input - S_xEnable- BOOL- TRUE - TRUE: SRDO communication enabled;- FALSE: SRDO communication stopped- S_xErrorAck- BOOL- FALSE - Pending error ( - S_eError <> NO_ERROR) can be acknowledged with rising edge.- Output - S_xActive- BOOL- FALSE - TRUE: safe communication active;- FALSE: safe communication inactive (in case of error or- S_xEnable = FALSE)- S_eError- CST.ERROR- CST.ERROR.NO_ERROR - Error code of pending error or - NO_ERROR.
Structure:
