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
OPERATIONAL
stateConfiguration 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 stoppedS_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 orS_xEnable = FALSE
)S_eError
CST.ERROR
CST.ERROR.NO_ERROR
Error code of pending error or
NO_ERROR
.
Structure: