FUNCTION "2nd test" : VOID
TITLE =
VERSION : 0.1
VAR_INPUT
DB_Sensor : WORD ;
DB_Sensor_Range_Start : DWORD ;
DB_Timer : WORD ;
DB_Alarm : WORD ;
DB_Alarm_Range_Start : DWORD ;
Sensor_State : BOOL ;
Fault_Delay_Time : INT ;
END_VAR
VAR_TEMP
Temp_TL_Index_No : DWORD ; //Textlist number generated from FC82
Temp_Sensor_Offset : DWORD ;
Temp_Alarm_Offset : DWORD ;
Temp_DB_Sensor : WORD ;
Temp_Sensor_DB : WORD ;
Temp_Timer_Offset : DWORD ;
Temp_Timer_Address : DWORD ;
Temp_DB_Time : WORD ;
Temp_DB_Alarm : WORD ;
Temp_DB_Original : WORD ;
END_VAR
BEGIN
NETWORK
TITLE =
// Store DB active when Entered/restore after processing
L DBNO;
T #Temp_DB_Original;
// sourced from DB41 written by FC82
// Called before this block
// DB41"Station 1" or DB42"Station 2" is already open
L DBW 30;
T #Temp_TL_Index_No;
NETWORK
TITLE =Generate Sensor Address and Test status
L #DB_Sensor; // load the DB Address where sensor state is stored
T #Temp_Sensor_DB;
OPN DB [#Temp_Sensor_DB]; //
L #DB_Sensor_Range_Start; // Load the Byte start address of the sensor Data
SLD 3; // byte offset
L #Temp_TL_Index_No; // Generated Text list Address
+D ;
T #Temp_Sensor_Offset; // Final Sensor Address
//Sensor State ~ High/low for comparison
AN #Sensor_State;
JC OFF;
A DBX [#Temp_Sensor_Offset];
JU TIME;
OFF: AN DBX [#Temp_Sensor_Offset];
NETWORK
TITLE =Time Delay
//Adjust offset to suit Timer range
TIME: L #DB_Timer; // DB of Timers
T #Temp_DB_Time;
L #Temp_TL_Index_No; // Load offset
T #Temp_Timer_Offset;
A "Time_Pulse"; // CPU Clock generated Pulse
JCN END;
L #Temp_Timer_Offset;
SLD 3; // Move to Byte area
T #Temp_Timer_Address;
OPN DB [#Temp_DB_Time]; // Open Timer DB
L DBW [#Temp_Timer_Address]; // Increment Timer
+ 1;
T DBW [#Temp_Timer_Address];
// time preset exceeded?
L DBW [#Temp_Timer_Address];
L #Fault_Delay_Time;
<=I ;
JC END;
NETWORK
TITLE =Write Error Message
//Open Message DB
L #DB_Alarm; // DB for Alarm generation
T #Temp_DB_Alarm;
OPN DI [#Temp_DB_Alarm]; // Open as an Instance
L #DB_Alarm_Range_Start;
SLD 3; //byte offset 40.0
L #Temp_TL_Index_No;
+D ;
T #Temp_Alarm_Offset; // Total Offset
= DIX [#Temp_Alarm_Offset]; // Write Alarm Bit
// Clear Timer value
L 0;
T DBW [#Temp_Timer_Address];
NETWORK
TITLE =Restore open DB prior to block call
END: OPN DB [Temp_DB_Original];
END_FUNCTION
Last edited: