Supported platforms: CODESYS 3.5 SAFETY
This section describes how to review generated code for safety project diagnostics.
This guide focuses mainly on safety related implementation.
S_Safety_Status (PRG)
This program contains conditions for safety related diagnostic conditions.
Verify that the program checks the hardware specific diagnostic status OK flag
Verify that the program checks the SRDO signature valid condition
Verify that program checks the safety parameters valid condition
Verify that the program checks the GFC status
Error codes are added to application log only when device description includes SafeErrorLog library. In SC52 device description 3.5.10.6 or later is required. See also How to use application error log. |
The following is an example implementation of S_Safety_Status program
SC52 Safety Control UnitSC52 Safety Control Unit
Code: |
IF EPEC_SHWD.S_SC52_Diagnostic.S_o_DiagStatusOk AND (* System diagnostic ok*) i_Safe_InitDone AND (* Init has been executed successfully *) i_Nonsafe_InitDone AND (*Non - safe init has been executed successfully *) S_i_SafetySignaturesValid AND (*SRDO safety signatures are valid *) S_i_SafetyParametersValid AND (*All safety parameters are valid *) G_CANOPEN_GFC_VALID <> G_CANopen_CAN1_VAR.GFC_Status AND (* No CANopen protocol errors *) NOT Init_CANopen_CAN1.o_Error THEN S_o_SafeOperationEnable := TRUE; ELSE // Add error on falling edge IF S_o_SafeOperationEnable THEN EPEC_SERRLOG.S_AddError_DWORD(i_ErrorCode := ApplicationErrors.SAFE_OPERATION_DISABLED, i_LibraryErrorCode := EPEC_SERRLOG.LibConstants.G_ErrorNA, i_Info1:=0, i_Info2:=0); END_IF
S_o_SafeOperationEnable := FALSE;
// Check for GFC activation EPEC_SERRLOG.S_AddError_DWORD(i_ErrorCode:=ApplicationErrors.GFC_STATUS, i_LibraryErrorCode:=BYTE_TO_DINT(G_CANopen_CAN1_VAR.GFC_Status),i_Info1:=0, i_Info2:=1);
// Check HW diagnostic errors when diagnostic is enabled // Following code is product specific (*...*) END_IF |
SL84 Safety Control UnitSL84 Safety Control Unit
Code: |
IF EPEC_SHWD.S_SL84_Diagnostic.S_o_DiagStatusOk AND (* System diagnostic ok*) i_Safe_InitDone AND (* Init has been executed successfully *) i_Nonsafe_InitDone AND (*Non - safe init has been executed successfully *) S_i_SafetySignaturesValid AND (*SRDO safety signatures are valid *) S_i_SafetyParametersValid AND (*All safety parameters are valid *) G_CANOPEN_GFC_VALID <> G_CANopen_CAN1_VAR.GFC_Status AND (* No CANopen protocol errors *) NOT Init_CANopen_CAN1.o_Error THEN S_o_SafeOperationEnable := TRUE;
(*Output group 1 voltage status for output controls*) IF EPEC_SHWD.S_SL84_Diagnostic.S_o_SupplyVoltageGroup1 >= G_CONSTANTS.DIAG_SUPPLY_VOLTAGE_LOW_LIMIT AND EPEC_SHWD.S_SL84_Diagnostic.S_o_SupplyVoltageGroup1 <= G_CONSTANTS.DIAG_SUPPLY_VOLTAGE_HIGH_LIMIT THEN G_StatusFlags_Safe.S_OutputGroup1VoltageOK:=TRUE; ELSE G_StatusFlags_Safe.S_OutputGroup1VoltageOK:=FALSE; END_IF
(*Output group 2 voltage status for output controls*) IF EPEC_SHWD.S_SL84_Diagnostic.S_o_SupplyVoltageGroup2 >= G_CONSTANTS.DIAG_SUPPLY_VOLTAGE_LOW_LIMIT AND EPEC_SHWD.S_SL84_Diagnostic.S_o_SupplyVoltageGroup2 <= G_CONSTANTS.DIAG_SUPPLY_VOLTAGE_HIGH_LIMIT THEN G_StatusFlags_Safe.S_OutputGroup2VoltageOK:=TRUE; ELSE G_StatusFlags_Safe.S_OutputGroup2VoltageOK:=FALSE; END_IF
(*Output group 3 voltage status for output controls*) IF EPEC_SHWD.S_SL84_Diagnostic.S_o_SupplyVoltageGroup3 >= G_CONSTANTS.DIAG_SUPPLY_VOLTAGE_LOW_LIMIT AND EPEC_SHWD.S_SL84_Diagnostic.S_o_SupplyVoltageGroup3 <= G_CONSTANTS.DIAG_SUPPLY_VOLTAGE_HIGH_LIMIT THEN G_StatusFlags_Safe.S_OutputGroup3VoltageOK:=TRUE; ELSE G_StatusFlags_Safe.S_OutputGroup3VoltageOK:=FALSE; END_IF
ELSE // Add error on falling edge IF S_o_SafeOperationEnable THEN EPEC_SERRLOG.S_AddError_DWORD(i_ErrorCode := ApplicationErrors.SAFE_OPERATION_DISABLED, i_LibraryErrorCode := EPEC_SERRLOG.LibConstants.G_ErrorNA, i_Info1:=0, i_Info2:=0); END_IF
S_o_SafeOperationEnable := FALSE;
G_StatusFlags_Safe.S_OutputGroup1VoltageOK:=FALSE; G_StatusFlags_Safe.S_OutputGroup2VoltageOK:=FALSE; G_StatusFlags_Safe.S_OutputGroup3VoltageOK:=FALSE;
// Check for GFC activation EPEC_SERRLOG.S_AddError_DWORD(i_ErrorCode:=ApplicationErrors.GFC_STATUS, i_LibraryErrorCode:=BYTE_TO_DINT(G_CANopen_CAN1_VAR.GFC_Status),i_Info1:=0, i_Info2:=1);
// Check HW diagnostic errors when diagnostic is enabled // Following code is product specific (*...*) END_IF |
|
Following are product specific hardware diagnostic errors which are added to application log (when available).
SC52 Safety Control UnitSC52 Safety Control Unit
Code: |
// Check HW diagnostic errors when diagnostic is enabled IF EPEC_SHWD.S_SC52_Diagnostic.S_o_Running AND NOT EPEC_SHWD.S_SC52_Diagnostic.S_o_DiagStatusOk THEN EPEC_SERRLOG.S_AddError_DWORD( i_ErrorCode := ApplicationErrors.HW_DIAGNOSTIC_FAULT, i_LibraryErrorCode := EPEC_SERRLOG.LibConstants.G_ErrorNA, i_Info1 := 0, i_Info2 := 0); // output group 1 EPEC_SERRLOG.S_AddError_BYTE( i_ErrorCode := ApplicationErrors.HW_DIAG_OUT_PWR_GRP_1, i_LibraryErrorCode := EPEC_SHWD.S_SC52_Diagnostic.o_OutputGroup1Control_EC.EventID, i_Info1 := EPEC_SHWD.S_SC52_Diagnostic.o_OutputGroup1Control_EC.FunctionID, i_Info2 := EPEC_SHWD.S_SC52_Diagnostic.o_OutputGroup1Control_EC.DeviceID, i_Info3 := EPEC_SHWD.S_SC52_Diagnostic.o_OutputGroup1Control_EC.ChannelID, i_Info4 := 0, i_Info5 := 0, i_Info6 := 0, i_Info7 := 0, i_Info8 := 0); // REF output EPEC_SERRLOG.S_AddError_BYTE( i_ErrorCode := ApplicationErrors.HW_DIAG_OUT_REF_1, i_LibraryErrorCode := EPEC_SHWD.S_SC52_Diagnostic.o_RefControl_EC.EventID, i_Info1 := EPEC_SHWD.S_SC52_Diagnostic.o_RefControl_EC.FunctionID, i_Info2 := EPEC_SHWD.S_SC52_Diagnostic.o_RefControl_EC.DeviceID, i_Info3 := EPEC_SHWD.S_SC52_Diagnostic.o_RefControl_EC.ChannelID, i_Info4 := 0, i_Info5 := 0, i_Info6 := 0, i_Info7 := 0, i_Info8 := 0); // supply voltage EPEC_SERRLOG.S_AddError_BYTE( i_ErrorCode := ApplicationErrors.HW_DIAG_IN_SUPPLY, i_LibraryErrorCode := EPEC_SHWD.S_SC52_Diagnostic.o_SupplyVoltag_EC.EventID, i_Info1 := EPEC_SHWD.S_SC52_Diagnostic.o_SupplyVoltag_EC.FunctionID, i_Info2 := EPEC_SHWD.S_SC52_Diagnostic.o_SupplyVoltag_EC.DeviceID, i_Info3 := EPEC_SHWD.S_SC52_Diagnostic.o_SupplyVoltag_EC.ChannelID, i_Info4 := 0, i_Info5 := 0, i_Info6 := 0, i_Info7 := 0, i_Info8 := 0); // 5VAN EPEC_SERRLOG.S_AddError_BYTE( i_ErrorCode := ApplicationErrors.HW_DIAG_IN_5VAN, i_LibraryErrorCode := EPEC_SHWD.S_SC52_Diagnostic.o_5VAN_EC.EventID, i_Info1 := EPEC_SHWD.S_SC52_Diagnostic.o_5VAN_EC.FunctionID, i_Info2 := EPEC_SHWD.S_SC52_Diagnostic.o_5VAN_EC.DeviceID, i_Info3 := EPEC_SHWD.S_SC52_Diagnostic.o_5VAN_EC.ChannelID, i_Info4 := 0, i_Info5 := 0, i_Info6 := 0, i_Info7 := 0, i_Info8 := 0); // MCU temperature EPEC_SERRLOG.S_AddError_BYTE( i_ErrorCode := ApplicationErrors.HW_DIAG_IN_MCU_TEMP, i_LibraryErrorCode := EPEC_SHWD.S_SC52_Diagnostic.o_MCUTemperatureEC.EventID, i_Info1 := EPEC_SHWD.S_SC52_Diagnostic.o_MCUTemperatureEC.FunctionID, i_Info2 := EPEC_SHWD.S_SC52_Diagnostic.o_MCUTemperatureEC.DeviceID, i_Info3 := EPEC_SHWD.S_SC52_Diagnostic.o_MCUTemperatureEC.ChannelID, i_Info4 := 0, i_Info5 := 0, i_Info6 := 0, i_Info7 := 0, i_Info8 := 0); // SBC temperature EPEC_SERRLOG.S_AddError_BYTE( i_ErrorCode := ApplicationErrors.HW_DIAG_IN_SBC_TEMP, i_LibraryErrorCode := EPEC_SHWD.S_SC52_Diagnostic.o_SBCTemperatureEC.EventID, i_Info1 := EPEC_SHWD.S_SC52_Diagnostic.o_SBCTemperatureEC.FunctionID, i_Info2 := EPEC_SHWD.S_SC52_Diagnostic.o_SBCTemperatureEC.DeviceID, i_Info3 := EPEC_SHWD.S_SC52_Diagnostic.o_SBCTemperatureEC.ChannelID, i_Info4 := 0, i_Info5 := 0, i_Info6 := 0, i_Info7 := 0, i_Info8 := 0); // PCB temperature 1 EPEC_SERRLOG.S_AddError_BYTE( i_ErrorCode := ApplicationErrors.HW_DIAG_IN_PCB_TEMP_1, i_LibraryErrorCode := EPEC_SHWD.S_SC52_Diagnostic.o_PCBTemperatureCh1_EC.EventID, i_Info1 := EPEC_SHWD.S_SC52_Diagnostic.o_PCBTemperatureCh1_EC.FunctionID, i_Info2 := EPEC_SHWD.S_SC52_Diagnostic.o_PCBTemperatureCh1_EC.DeviceID, i_Info3 := EPEC_SHWD.S_SC52_Diagnostic.o_PCBTemperatureCh1_EC.ChannelID, i_Info4 := 0, i_Info5 := 0, i_Info6 := 0, i_Info7 := 0, i_Info8 := 0); // PCB temperature 2 EPEC_SERRLOG.S_AddError_BYTE( i_ErrorCode := ApplicationErrors.HW_DIAG_IN_PCB_TEMP_2, i_LibraryErrorCode := EPEC_SHWD.S_SC52_Diagnostic.o_PCBTemperatureCh2_EC.EventID, i_Info1 := EPEC_SHWD.S_SC52_Diagnostic.o_PCBTemperatureCh2_EC.FunctionID, i_Info2 := EPEC_SHWD.S_SC52_Diagnostic.o_PCBTemperatureCh2_EC.DeviceID, i_Info3 := EPEC_SHWD.S_SC52_Diagnostic.o_PCBTemperatureCh2_EC.ChannelID, i_Info4 := 0, i_Info5 := 0, i_Info6 := 0, i_Info7 := 0, i_Info8 := 0);
END_IF |
SL84 Safety Control UnitSL84 Safety Control Unit
Code: |
// Check HW diagnostic errors when diagnostic is enabled IF EPEC_SHWD.S_SL84_Diagnostic.S_o_Running AND NOT EPEC_SHWD.S_SL84_Diagnostic.S_o_DiagStatusOk THEN
EPEC_SERRLOG.S_AddError_DWORD( i_ErrorCode := ApplicationErrors.HW_DIAGNOSTIC_FAULT, i_LibraryErrorCode := EPEC_SERRLOG.LibConstants.G_ErrorNA, i_Info1 := 0, i_Info2 := 0);
// Supply voltage group 1 EPEC_SERRLOG.S_AddError_BYTE( i_ErrorCode := ApplicationErrors.HW_DIAG_OUT_PWR_GRP_1, i_LibraryErrorCode := EPEC_SHWD.S_SL84_Diagnostic.o_SupplyVoltageGroup1_EC.EventID, i_Info1 := EPEC_SHWD.S_SL84_Diagnostic.o_SupplyVoltageGroup1_EC.FunctionID, i_Info2 := EPEC_SHWD.S_SL84_Diagnostic.o_SupplyVoltageGroup1_EC.DeviceID, i_Info3 := EPEC_SHWD.S_SL84_Diagnostic.o_SupplyVoltageGroup1_EC.ChannelID, i_Info4 := 0, i_Info5 := 0, i_Info6 := 0, i_Info7 := 0, i_Info8 := 0);
// REF output EPEC_SERRLOG.S_AddError_BYTE( i_ErrorCode := ApplicationErrors.HW_DIAG_OUT_REF_1, i_LibraryErrorCode := EPEC_SHWD.S_SL84_Diagnostic.o_RefControl_EC.EventID, i_Info1 := EPEC_SHWD.S_SL84_Diagnostic.o_RefControl_EC.FunctionID, i_Info2 := EPEC_SHWD.S_SL84_Diagnostic.o_RefControl_EC.DeviceID, i_Info3 := EPEC_SHWD.S_SL84_Diagnostic.o_RefControl_EC.ChannelID, i_Info4 := 0, i_Info5 := 0, i_Info6 := 0, i_Info7 := 0, i_Info8 := 0);
// MCU temperature EPEC_SERRLOG.S_AddError_BYTE( i_ErrorCode := ApplicationErrors.HW_DIAG_IN_MCU_TEMP, i_LibraryErrorCode := EPEC_SHWD.S_SL84_Diagnostic.o_MCUTemperatureEC.EventID, i_Info1 := EPEC_SHWD.S_SL84_Diagnostic.o_MCUTemperatureEC.FunctionID, i_Info2 := EPEC_SHWD.S_SL84_Diagnostic.o_MCUTemperatureEC.DeviceID, i_Info3 := EPEC_SHWD.S_SL84_Diagnostic.o_MCUTemperatureEC.ChannelID, i_Info4 := 0, i_Info5 := 0, i_Info6 := 0, i_Info7 := 0, i_Info8 := 0);
// SBC temperature EPEC_SERRLOG.S_AddError_BYTE( i_ErrorCode := ApplicationErrors.HW_DIAG_IN_SBC_TEMP, i_LibraryErrorCode := EPEC_SHWD.S_SL84_Diagnostic.o_SBCTemperatureEC.EventID, i_Info1 := EPEC_SHWD.S_SL84_Diagnostic.o_SBCTemperatureEC.FunctionID, i_Info2 := EPEC_SHWD.S_SL84_Diagnostic.o_SBCTemperatureEC.DeviceID, i_Info3 := EPEC_SHWD.S_SL84_Diagnostic.o_SBCTemperatureEC.ChannelID, i_Info4 := 0, i_Info5 := 0, i_Info6 := 0, i_Info7 := 0, i_Info8 := 0);
// PCB temperature EPEC_SERRLOG.S_AddError_BYTE( i_ErrorCode := ApplicationErrors.HW_DIAG_IN_PCB_TEMP_1, i_LibraryErrorCode := EPEC_SHWD.S_SL84_Diagnostic.o_PCBTemperatureCh1_EC.EventID, i_Info1 := EPEC_SHWD.S_SL84_Diagnostic.o_PCBTemperatureCh1_EC.FunctionID, i_Info2 := EPEC_SHWD.S_SL84_Diagnostic.o_PCBTemperatureCh1_EC.DeviceID, i_Info3 := EPEC_SHWD.S_SL84_Diagnostic.o_PCBTemperatureCh1_EC.ChannelID, i_Info4 := 0, i_Info5 := 0, i_Info6 := 0, i_Info7 := 0, i_Info8 := 0); END_IF |
S_PLC_PRG
Verify that the hardware specific diagnostic program's Init method is executed at the initialization phase
The following are product specific examples of HW diagnostic Init
SC52 Safety Control UnitSC52 Safety Control Unit
Code: |
ELSIF NOT EPEC_SHWD.S_SC52_Diagnostic.S_o_InitReady THEN EPEC_SHWD.S_SC52_Diagnostic.Init( S_i_SupplyVoltageHighLimit := G_CONSTANTS.DIAG_SUPPLY_VOLTAGE_HIGH_LIMIT, S_i_SupplyVoltageLowLimit := G_CONSTANTS.DIAG_SUPPLY_VOLTAGE_LOW_LIMIT, S_i_SupplyVoltageDiagDelay := G_CONSTANTS.DIAG_SUPPLY_VOLTAGE_DELAY, S_i_5VRefControlTolerance := G_CONSTANTS.DIAG_5V_REF_TOLERANCE, S_i_5VRefControlDiagDelay := G_CONSTANTS.DIAG_5V_REF_DELAY, S_i_OutputGroup1HighVoltage := G_CONSTANTS.DIAG_OUTPUT_GROUP1_HIGH_LIMIT, S_i_OutputGroup1LowVoltage:= G_CONSTANTS.DIAG_OUTPUT_GROUP1_LOW_LIMIT, S_i_OutputGroup1DiagDelay:= G_CONSTANTS.DIAG_OUTPUT_GROUP1_DELAY, S_i_5VANHighVoltage:= G_CONSTANTS.DIAG_5V_VAN_HIGH_LIMIT, S_i_5VANLowVoltage:= G_CONSTANTS.DIAG_5V_VAN_LOW_LIMIT, S_i_5VANDiagDelay:= G_CONSTANTS.DIAG_5V_VAN_DELAY, S_i_TemperatureHighLimit:= G_CONSTANTS.DIAG_TEMP_HIGH_LIMIT, S_i_TemperatureLowLimit:= G_CONSTANTS.DIAG_TEMP_LOW_LIMIT, S_i_TemperatureDiagDelay:= G_CONSTANTS.DIAG_TEMP_DELAY); |
SL84 Safety Control UnitSL84 Safety Control Unit
Code: |
ELSIF NOT EPEC_SHWD.S_SL84_Diagnostic.S_o_InitReady THEN EPEC_SHWD.S_SL84_Diagnostic.Init( S_i_SupplyVoltageHighLimit := G_CONSTANTS.DIAG_SUPPLY_VOLTAGE_HIGH_LIMIT, S_i_SupplyVoltageLowLimit := G_CONSTANTS.DIAG_SUPPLY_VOLTAGE_LOW_LIMIT, S_i_SupplyVoltageDiagDelay := G_CONSTANTS.DIAG_SUPPLY_VOLTAGE_DELAY, S_i_RefControlDiagDelay := G_CONSTANTS.DIAG_5V_REF_DELAY, S_i_TemperatureHighLimit:= G_CONSTANTS.DIAG_TEMP_HIGH_LIMIT, S_i_TemperatureLowLimit:= G_CONSTANTS.DIAG_TEMP_LOW_LIMIT, S_i_TemperatureDiagDelay:= G_CONSTANTS.DIAG_TEMP_DELAY); |
Verify that the hardware specific diagnostic program is executed at the run phase
The program call does not set the output group or reference voltage control inputs; they are controlled by the application (see How to use S series and E series HW diagnostics).
The following are product specific examples of HW diagnostic
SC52 Safety Control UnitSC52 Safety Control Unit
Code: |
ELSIF PLC_PRG.o_Initdone THEN (* Safe actions to execute before safe main program *) S_Inputs(i_Initialize:=FALSE); (*...*) EPEC_SHWD.S_SC52_Diagnostic( i_5VRefChannel1:= S_Inputs.o_AI_REF_5V_MAIN_Diagnostic, i_5VRefChannel2:=S_Inputs.o_AI_REF_5V_RED_Diagnostic, i_SupplyVoltageInPin := S_Inputs.o_AI_SUPPLY_PIN_VOLTAGE_Diagnostic, i_SupplyBeforeSafetySwitch1:= S_Inputs.o_AI_POWER1_SUPPLY_Diagnostic, i_SupplyAfterSafetySwitch1 := S_Inputs.o_AI_POWER1_OUTPUT_Diagnostic, i_5VANChannel1:=S_Inputs.o_AI_5V_VAN_MAIN_Diagnostic, i_5VANChannel2:=S_Inputs.o_AI_5V_VAN_RED_Diagnostic, i_MCUTemperature:=S_Inputs.o_TEMP_MCU_Diagnostic, i_SBCTemperature:=S_Inputs.o_TEMP_SBC_Diagnostic, i_PCBTemperatureChannel1:=S_Inputs.o_TEMP_PCB_MAIN_Diagnostic, i_PCBTemperatureChannel2:=S_Inputs.o_TEMP_PCB_RED_Diagnostic, i_Negative5V:=S_Inputs.o_AI_5V_NEG_Diagnostic); |
SL84 Safety Control UnitSL84 Safety Control Unit
Code: |
ELSIF PLC_PRG.o_Initdone THEN (* Safe actions to execute before safe main program *) S_Inputs(i_Initialize:=FALSE); (*...*) EPEC_SHWD.S_SL84_Diagnostic( i_RefChannel1 := S_Inputs.o_AI_5V_REF_Diagnostic, i_SupplyVoltageGroup1 := S_Inputs.o_AI_POWER1_SUPPLY_Diagnostic, i_SupplyVoltageGroup2 := S_Inputs.o_AI_POWER2_SUPPLY_Diagnostic, i_SupplyVoltageGroup3 := S_Inputs.o_AI_POWER3_SUPPLY_Diagnostic, i_MCUTemperature := S_Inputs.o_TEMP_MCU_Diagnostic, i_SBCTemperature := S_Inputs.o_AI_SBC_TEMP_Diagnostic, i_PCBTemperatureChannel1 := S_Inputs.o_AI_PCB_TEMP_Diagnostic); |
Verify that the S_Safety_Status program is executed at the run phase.
Program output sets G_StatusFlags_Safe.S_SafeOperationEnable
Safety related application shall go to safe state when S_SafeOperationEnable is FALSE. |
The following is an example of SC52 Safety Control Unit when SRDO messages and safety parameters are both used.
SRDO signature and safety parameter CRC are considered valid if they are not used.
Code: |
EPEC_SHWD.S_SC52_Diagnostic(...);
S_Safety_Status(i_Safe_InitDone:= o_InitDone, i_Nonsafe_InitDone:= PLC_PRG.o_InitDone, S_i_SafetySignaturesValid:= S_ValidateConfigurations.o_SRDOSignaturesValid, S_i_SafetyParametersValid:= S_ValidateConfigurations.o_ParametersValid, S_o_SafeOperationEnable => G_StatusFlags_Safe.S_SafeOperationEnable); |
G_CONSTANTS (GVL)
The limits used in hardware diagnostic initialization are defined in the G_CONSTANTS global variable list.
In MultiTool 6.3 or later, or MultiTool Creator it is possible to adjust some of the limits in MultiTool Creator's diagnostic tab. In previous versions, the constant values are hardcoded.
Verify that the generated constant values are within range.
SC52 Safety Control UnitSC52 Safety Control Unit
The following constants are generated for the SC52 Safety Control Unit.
Constant |
Unit |
Default value |
Min |
Max |
DIAG_TEMP_HIGH_LIMIT |
°C |
105 |
DIAG_TEMP_LOW_LIMIT |
105 |
DIAG_TEMP_LOW_LIMIT |
°C |
-35 |
-35 |
DIAG_TEMP_HIGH_LIMIT |
DIAG_TEMP_DELAY |
ms |
50 |
0 |
100 |
DIAG_SUPPLY_VOLTAGE_HIGH_LIMIT |
mV |
34000 |
DIAG_SUPPLY_VOLTAGE_LOW_LIMIT |
34000 |
DIAG_SUPPLY_VOLTAGE_LOW_LIMIT |
mV |
9000 |
9000 |
DIAG_SUPPLY_VOLTAGE_HIGH_LIMIT |
DIAG_SUPPLY_VOLTAGE_DELAY |
ms |
95 |
0 |
100 |
DIAG_OUTPUT_GROUP1_HIGH_LIMIT |
mV |
34000 |
DIAG_OUTPUT_GROUP1_LOW_LIMIT |
34000 |
DIAG_OUTPUT_GROUP1_LOW_LIMIT |
mV |
9000 |
9000 |
DIAG_OUTPUT_GROUP1_HIGH_LIMIT |
DIAG_OUTPUT_GROUP1_DELAY |
ms |
95 |
0 |
100 |
DIAG_5V_VAN_HIGH_LIMIT |
mV |
5250 |
Not adjustable |
Not adjustable |
DIAG_5V_VAN_LOW_LIMIT |
mV |
4750 |
Not adjustable |
Not adjustable |
DIAG_5V_VAN_DELAY |
ms |
50 |
Not adjustable |
Not adjustable |
DIAG_5V_REF_DELAY |
ms |
50 |
0 |
100 |
DIAG_5V_REF_TOLERANCE |
‰ |
100 |
0 |
1000 |
SL84 Safety Control UnitSL84 Safety Control Unit
The following constants are generated for the SL84 Safety Control Unit.
Constant |
Unit |
Default value |
Min |
Max |
DIAG_TEMP_HIGH_LIMIT |
°C |
105 |
DIAG_TEMP_LOW_LIMIT |
105 |
DIAG_TEMP_LOW_LIMIT |
°C |
-35 |
-35 |
DIAG_TEMP_HIGH_LIMIT |
DIAG_TEMP_DELAY |
ms |
50 |
0 |
100 |
DIAG_SUPPLY_VOLTAGE_HIGH_LIMIT |
mV |
34000 |
DIAG_SUPPLY_VOLTAGE_LOW_LIMIT |
34000 |
DIAG_SUPPLY_VOLTAGE_LOW_LIMIT |
mV |
9000 |
9000 |
DIAG_SUPPLY_VOLTAGE_HIGH_LIMIT |
DIAG_SUPPLY_VOLTAGE_DELAY |
ms |
95 |
0 |
100 |
DIAG_5V_REF_DELAY |
ms |
50 |
0 |
100 |
Source file topic100555.htm
Last updated 19-Dec-2024