Projektdateien hinzufügen.
This commit is contained in:
535
PLC/POUs/FB_Unit.TcPOU
Normal file
535
PLC/POUs/FB_Unit.TcPOU
Normal file
@@ -0,0 +1,535 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.12">
|
||||
<POU Name="FB_Unit" Id="{e9bb815b-eb46-4920-800d-910484e58b22}" SpecialFunc="None">
|
||||
<Declaration><![CDATA[FUNCTION_BLOCK FB_Unit
|
||||
VAR_INPUT
|
||||
// Unit configuration
|
||||
stUnitConfig : REFERENCE TO ST_UNIT_CONFIG;
|
||||
|
||||
// HMI interface
|
||||
stHMIInterface : REFERENCE TO ST_UNIT_HMI_INTERFACE;
|
||||
|
||||
// Start unit
|
||||
xEnable : BOOL;
|
||||
|
||||
// Emergency stop ok
|
||||
xEmergencyStopOk : BOOL;
|
||||
|
||||
// Setpoint posolyt pump inlet
|
||||
rSetpointPosolytPumpInlet : REAL;
|
||||
|
||||
// Setpoint negolyt pump inlet
|
||||
rSetpointNegolytPumpInlet : REAL;
|
||||
|
||||
// Release alarms
|
||||
xReleaseErrors : BOOL;
|
||||
|
||||
// Release analog io limit errors
|
||||
xReleaseLimitErrors : BOOL;
|
||||
|
||||
// Input to confirm all errors
|
||||
xConfirmAlarms : BOOL;
|
||||
END_VAR
|
||||
VAR_OUTPUT
|
||||
// Unit ready
|
||||
xReady : BOOL;
|
||||
|
||||
// Error active
|
||||
xError : BOOL;
|
||||
|
||||
// Warning active
|
||||
xWarning : BOOL;
|
||||
|
||||
// Warning confirmation still pending
|
||||
_xWarningConfirmPending : BOOL;
|
||||
END_VAR
|
||||
VAR
|
||||
// Check unit condition after some time during startup
|
||||
_timUnitStartupWaitTime : TIME := T#20S;
|
||||
|
||||
// Valves posolyt
|
||||
_fbPosolytValveTankOutlet : FB_Valve('Posolyt tank outlet');
|
||||
|
||||
// Valves negolyt
|
||||
_fbNegolytValveTankOutlet : FB_Valve('Negolyt tank outlet');
|
||||
|
||||
// Pumps posolyt
|
||||
_fbPosolytPumpInlet : FB_MotorAnalog('Posolyt segment inlet');
|
||||
|
||||
// Pumps negolyt
|
||||
_fbNegolytPumpInlet : FB_MotorAnalog('Negolyt segment inlet');
|
||||
|
||||
// Pressure sensors posolyt
|
||||
_fbPressurePosolytSegmentInlet : FB_AnalogInput('P1_P');
|
||||
_fbPressurePosolytTankInlet : FB_AnalogInput('P3_P');
|
||||
_fbPressurePosolytTankOutlet : FB_AnalogInput('P4_P');
|
||||
|
||||
// Pressure sensors negolyt
|
||||
_fbPressureNegolytSegmentInlet : FB_AnalogInput('P1_N');
|
||||
_fbPressureNegolytTankInlet : FB_AnalogInput('P3_N');
|
||||
_fbPressureNegolytTankOutlet : FB_AnalogInput('P4_N');
|
||||
|
||||
// Unit voltage
|
||||
_fbVoltageSegment : FB_AnalogInput('Voltage');
|
||||
|
||||
// Valve posolyt tank outlet interlocks
|
||||
_stPosolytValveTankOutletPIntlk : T_INTERLOCK;
|
||||
_stPosolytValveTankOutletPIntlkUsed : T_INTERLOCK := 2#0000_0000_0000_0000;
|
||||
|
||||
_stPosolytValveTankOutletSIntlk : T_INTERLOCK;
|
||||
_stPosolytValveTankOutletSIntlkUsed : T_INTERLOCK := 2#0000_0000_0000_0011;
|
||||
|
||||
// Valve negolyt tank outlet interlocks
|
||||
_stNegolytValveTankOutletPIntlk : T_INTERLOCK;
|
||||
_stNegolytValveTankOutletPIntlkUsed : T_INTERLOCK := 2#0000_0000_0000_0000;
|
||||
|
||||
_stNegolytValveTankOutletSIntlk : T_INTERLOCK;
|
||||
_stNegolytValveTankOutletSIntlkUsed : T_INTERLOCK := 2#0000_0000_0000_0011;
|
||||
|
||||
// Pump posolyt inlet interlocks
|
||||
_stPosolytPumpInletPIntlk : T_INTERLOCK;
|
||||
_stPosolytPumpInletPIntlkUsed : T_INTERLOCK := 2#0000_0000_0000_0001;
|
||||
_stPosolytPumpInletSIntlk : T_INTERLOCK;
|
||||
_stPosolytPumpInletSIntlkUsed : T_INTERLOCK := 2#0000_0000_0000_0011;
|
||||
|
||||
// Pump negolyt inlet interlocks
|
||||
_stNegolytPumpInletPIntlk : T_INTERLOCK;
|
||||
_stNegolytPumpInletPIntlkUsed : T_INTERLOCK := 2#0000_0000_0000_0001;
|
||||
_stNegolytPumpInletSIntlk : T_INTERLOCK;
|
||||
_stNegolytPumpInletSIntlkUsed : T_INTERLOCK := 2#0000_0000_0000_0011;
|
||||
|
||||
// Error active
|
||||
_xErrorActive : BOOL;
|
||||
|
||||
// Warning active
|
||||
_xWarningActive : BOOL;
|
||||
|
||||
// Current state
|
||||
_iState: INT;
|
||||
|
||||
// All components in automatic mode
|
||||
_xAllComponentsInAutomatic : BOOL;
|
||||
|
||||
// Not all components in automatic mode alarm
|
||||
_fbNotAllAutomaticAlarm : FB_TcAlarm;
|
||||
|
||||
// Unit name
|
||||
_sName : STRING;
|
||||
|
||||
// Unit startup check timer
|
||||
_tonStartupCheck : TON;
|
||||
END_VAR
|
||||
]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[// Reset error active
|
||||
_xErrorActive := FALSE;
|
||||
|
||||
// Reset warning active
|
||||
_xWarningActive := FALSE;
|
||||
|
||||
// ===============================
|
||||
// Valve posolyt tank outlet
|
||||
// ===============================
|
||||
|
||||
// Safety Interlocks
|
||||
stHMIInterface.stPosolytValve.stInterlock.asSafetyINTLKName[0] := 'Emergency stop ok';
|
||||
_stPosolytValveTankOutletSIntlk.0 := xEmergencyStopOk;
|
||||
|
||||
// Valve fb
|
||||
_fbPosolytValveTankOutlet(
|
||||
xReleaseManualMode:= TRUE,
|
||||
wProcessINTLK:= _stPosolytValveTankOutletPIntlk,
|
||||
wProcessINTLKUsed:= _stPosolytValveTankOutletPIntlkUsed,
|
||||
wSafetyINTLK:= _stPosolytValveTankOutletSIntlk,
|
||||
wSafetyINTLKUsed:= _stPosolytValveTankOutletSIntlkUsed,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
xReleaseErrors:= xReleaseErrors,
|
||||
stValveConfig:= stUnitConfig.stConfigPosolytValve,
|
||||
stHMIInterface:= stHMIInterface.stPosolytValve);
|
||||
|
||||
// Set error active if fb has error
|
||||
IF _fbPosolytValveTankOutlet.xError THEN
|
||||
_xErrorActive := TRUE;
|
||||
END_IF
|
||||
|
||||
|
||||
// ===============================
|
||||
// Valve negolyt tank outlet
|
||||
// ===============================
|
||||
|
||||
// Safety Interlocks
|
||||
stHMIInterface.stNegolytValve.stInterlock.asSafetyINTLKName[0] := 'Emergency stop ok';
|
||||
_stNegolytValveTankOutletSIntlk.0 := xEmergencyStopOk;
|
||||
|
||||
// Valve fb
|
||||
_fbNegolytValveTankOutlet(
|
||||
xReleaseManualMode:= TRUE,
|
||||
wProcessINTLK:= _stNegolytValveTankOutletPIntlk,
|
||||
wProcessINTLKUsed:= _stNegolytValveTankOutletPIntlkUsed,
|
||||
wSafetyINTLK:= _stNegolytValveTankOutletSIntlk,
|
||||
wSafetyINTLKUsed:= _stNegolytValveTankOutletSIntlkUsed,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
xReleaseErrors:= xReleaseErrors,
|
||||
stValveConfig:= stUnitConfig.stConfigNegolytValve,
|
||||
stHMIInterface:= stHMIInterface.stNegolytValve);
|
||||
|
||||
// Set error active if fb has error
|
||||
IF _fbNegolytValveTankOutlet.xError THEN
|
||||
_xErrorActive := TRUE;
|
||||
END_IF
|
||||
|
||||
|
||||
// ===============================
|
||||
// Pump posolyt segment inlet
|
||||
// ===============================
|
||||
|
||||
// Safety Interlocks
|
||||
stHMIInterface.stPosolytPump.stInterlock.asSafetyINTLKName[0] := 'Emergency stop ok';
|
||||
_stPosolytPumpInletSIntlk.0 := xEmergencyStopOk;
|
||||
|
||||
// Process interlocks
|
||||
stHMIInterface.stPosolytPump.stInterlock.asProcessINTLKName[0] := 'At least one valve is open';
|
||||
_stPosolytPumpInletPIntlk.0 := _fbPosolytValveTankOutlet.IsOpen;
|
||||
|
||||
|
||||
// Valve fb
|
||||
_fbPosolytPumpInlet(
|
||||
xReleaseManualMode:= TRUE,
|
||||
wProcessINTLK:= _stPosolytPumpInletPIntlk,
|
||||
wProcessINTLKUsed:= _stPosolytPumpInletPIntlkUsed,
|
||||
wSafetyINTLK:= _stPosolytPumpInletSIntlk,
|
||||
wSafetyINTLKUsed:= _stPosolytPumpInletSIntlkUsed,
|
||||
xReleaseErrors:= xReleaseErrors,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
rSPautomatic:= rSetpointPosolytPumpInlet,
|
||||
xReleaseAnalogInLimitErrors:= xReleaseLimitErrors,
|
||||
stMotorAnalogConfig:= stUnitConfig.stConfigPosolytPump,
|
||||
stHMIInterface:= stHMIInterface.stPosolytPump,
|
||||
xWarning=> );
|
||||
|
||||
// Set error active if fb has error
|
||||
IF _fbPosolytPumpInlet.xError THEN
|
||||
_xErrorActive := TRUE;
|
||||
END_IF
|
||||
|
||||
// Set warning if fb has warning
|
||||
IF _fbPosolytPumpInlet.xWarning THEN
|
||||
_xWarningActive := TRUE;
|
||||
END_IF
|
||||
|
||||
|
||||
// ===============================
|
||||
// Pump negolyt segment inlet
|
||||
// ===============================
|
||||
|
||||
// Safety Interlocks
|
||||
stHMIInterface.stNegolytPump.stInterlock.asSafetyINTLKName[0] := 'Emergency stop ok';
|
||||
_stNegolytPumpInletSIntlk.0 := xEmergencyStopOk;
|
||||
|
||||
// Process interlocks
|
||||
stHMIInterface.stNegolytPump.stInterlock.asProcessINTLKName[0] := 'At least one valve is open';
|
||||
_stNegolytPumpInletPIntlk.0 := _fbNegolytValveTankOutlet.IsOpen;
|
||||
|
||||
|
||||
// Valve fb
|
||||
_fbNegolytPumpInlet(
|
||||
xReleaseManualMode:= TRUE,
|
||||
wProcessINTLK:= _stNegolytPumpInletPIntlk,
|
||||
wProcessINTLKUsed:= _stNegolytPumpInletPIntlkUsed,
|
||||
wSafetyINTLK:= _stNegolytPumpInletSIntlk,
|
||||
wSafetyINTLKUsed:= _stNegolytPumpInletSIntlkUsed,
|
||||
xReleaseErrors:= xReleaseErrors,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
rSPautomatic:= rSetpointNegolytPumpInlet,
|
||||
xReleaseAnalogInLimitErrors:= xReleaseLimitErrors,
|
||||
stMotorAnalogConfig:= stUnitConfig.stConfigNegolytPump,
|
||||
stHMIInterface:= stHMIInterface.stNegolytPump,
|
||||
xWarning=> );
|
||||
|
||||
// Set error active if fb has error
|
||||
IF _fbNegolytPumpInlet.xError THEN
|
||||
_xErrorActive := TRUE;
|
||||
END_IF
|
||||
|
||||
// Set warning if fb has warning
|
||||
IF _fbNegolytPumpInlet.xWarning THEN
|
||||
_xWarningActive := TRUE;
|
||||
END_IF
|
||||
|
||||
|
||||
// ===============================
|
||||
// Pressure sensors posolyt segment inlet
|
||||
// ===============================
|
||||
_fbPressurePosolytSegmentInlet(
|
||||
stScalingConfig:= stUnitConfig.stConfigPosolytPressureSegmentInlet,
|
||||
stEWConfig:= stUnitConfig.stEWLPosolytPressureSegmentInlet,
|
||||
stEWDelayConfig:= stUnitConfig.stEWDPosolytPressureSegmentInlet,
|
||||
xReleaseErrors:= xReleaseErrors,
|
||||
xReleaseLimitErrors:= xReleaseLimitErrors,
|
||||
xReleaseHardwareErrors:= xReleaseErrors,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface => stHMIInterface.stPosolytPressureSegmentInlet);
|
||||
|
||||
// Set error active if fb has error
|
||||
IF _fbPressurePosolytSegmentInlet.xError THEN
|
||||
_xErrorActive := TRUE;
|
||||
END_IF
|
||||
|
||||
// Set warning if fb has warning
|
||||
IF _fbPressurePosolytSegmentInlet.xWarning THEN
|
||||
_xWarningActive := TRUE;
|
||||
END_IF
|
||||
|
||||
|
||||
// ===============================
|
||||
// Pressure sensors negolyt segment inlet
|
||||
// ===============================
|
||||
_fbPressureNegolytSegmentInlet(
|
||||
stScalingConfig:= stUnitConfig.stConfigNegolytPressureSegmentInlet,
|
||||
stEWConfig:= stUnitConfig.stEWLNegolytPressureSegmentInlet,
|
||||
stEWDelayConfig:= stUnitConfig.stEWDNegolytPressureSegmentInlet,
|
||||
xReleaseErrors:= xReleaseErrors,
|
||||
xReleaseLimitErrors:= xReleaseLimitErrors,
|
||||
xReleaseHardwareErrors:= xReleaseErrors,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface => stHMIInterface.stNegolytPressureSegmentInlet);
|
||||
|
||||
// Set error active if fb has error
|
||||
IF _fbPressureNegolytSegmentInlet.xError THEN
|
||||
_xErrorActive := TRUE;
|
||||
END_IF
|
||||
|
||||
// Set warning if fb has warning
|
||||
IF _fbPressureNegolytSegmentInlet.xWarning THEN
|
||||
_xWarningActive := TRUE;
|
||||
END_IF
|
||||
|
||||
|
||||
// ===============================
|
||||
// Voltage segment
|
||||
// ===============================
|
||||
_fbVoltageSegment(
|
||||
stScalingConfig:= ,
|
||||
stEWConfig:= ,
|
||||
stEWDelayConfig:= ,
|
||||
xReleaseErrors:= xReleaseErrors,
|
||||
xReleaseLimitErrors:= xReleaseLimitErrors,
|
||||
xReleaseHardwareErrors:= xReleaseErrors,
|
||||
xConfirmAlarms:= xConfirmAlarms,
|
||||
stHMIInterface=> stHMIInterface.stVoltageSegment);
|
||||
|
||||
// Set error active if fb has error
|
||||
IF _fbVoltageSegment.xError THEN
|
||||
_xErrorActive := TRUE;
|
||||
END_IF
|
||||
|
||||
// Set warning if fb has warning
|
||||
IF _fbVoltageSegment.xWarning THEN
|
||||
_xWarningActive := TRUE;
|
||||
END_IF
|
||||
|
||||
|
||||
// ===============================
|
||||
// Check if all components are in automatic
|
||||
// ===============================
|
||||
_xAllComponentsInAutomatic := _fbPosolytValveTankOutlet.IsInAutomaticMode
|
||||
AND _fbNegolytValveTankOutlet.IsInAutomaticMode
|
||||
AND _fbPosolytPumpInlet.IsInAutomaticMode
|
||||
AND _fbNegolytPumpInlet.IsInAutomaticMode;
|
||||
|
||||
// Raise warning
|
||||
IF NOT _fbNotAllAutomaticAlarm.bRaised AND (NOT _xAllComponentsInAutomatic) THEN
|
||||
_fbNotAllAutomaticAlarm.Raise(0);
|
||||
END_IF
|
||||
|
||||
// Clear warning and reset
|
||||
IF _fbNotAllAutomaticAlarm.bRaised AND _xAllComponentsInAutomatic THEN
|
||||
_fbNotAllAutomaticAlarm.Clear(0, TRUE);
|
||||
END_IF
|
||||
|
||||
// ===============================
|
||||
// Run state machine for startup and shutdown
|
||||
// ===============================
|
||||
CASE _iState OF
|
||||
0: // Off
|
||||
IF xEnable AND _xAllComponentsInAutomatic AND (NOT _xErrorActive) THEN
|
||||
_iState := 10;
|
||||
END_IF
|
||||
|
||||
10: // Open all valves
|
||||
_fbPosolytValveTankOutlet.ReqAutomaticOpen();
|
||||
_fbNegolytValveTankOutlet.ReqAutomaticOpen();
|
||||
_iState := 15;
|
||||
|
||||
15: // Wait for all valves to be open
|
||||
IF _fbPosolytValveTankOutlet.IsOpen AND _fbNegolytValveTankOutlet.IsOpen THEN
|
||||
IF NOT _fbPosolytValveTankOutlet.xError AND _fbNegolytValveTankOutlet.xError THEN
|
||||
_iState := 20;
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
// If enable signal is lost, or there is an error, goto shutdown
|
||||
IF (NOT xEnable) OR _xErrorActive THEN
|
||||
_iState := 40;
|
||||
END_IF
|
||||
|
||||
20: // Start pumps
|
||||
_fbPosolytPumpInlet.ReqAutomaticStart();
|
||||
_fbNegolytPumpInlet.ReqAutomaticStart();
|
||||
_iState := 25;
|
||||
|
||||
25: // Wait for all pumps to run
|
||||
IF _fbPosolytPumpInlet.xInTarget AND _fbNegolytPumpInlet.xInTarget THEN
|
||||
_iState := 30;
|
||||
END_IF
|
||||
|
||||
// If enable signal is lost, goto shutdown
|
||||
IF (NOT xEnable) OR _xErrorActive THEN
|
||||
_iState := 40;
|
||||
END_IF
|
||||
|
||||
30: // Wait some time
|
||||
_tonStartupCheck(In := TRUE, PT := _timUnitStartupWaitTime);
|
||||
|
||||
// After some time, check if all values are ok
|
||||
IF _tonStartupCheck.Q THEN
|
||||
// Check for minimum unit voltage
|
||||
IF _fbVoltageSegment.rScaledValue >= GVL_CONFIG.rMinimumUnitVoltage AND
|
||||
NOT _xErrorActive AND
|
||||
NOT _xWarningActive THEN
|
||||
xReady := TRUE;
|
||||
_iState := 35;
|
||||
ELSE
|
||||
_iState := 40;
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
// If enable signal is lost, goto shutdown
|
||||
IF (NOT xEnable) OR _xErrorActive THEN
|
||||
_iState := 40;
|
||||
END_IF
|
||||
|
||||
35: // Unit in enabled state
|
||||
IF (NOT xEnable) OR _xErrorActive THEN
|
||||
_iState := 40;
|
||||
END_IF
|
||||
|
||||
40: // Close all valves
|
||||
_fbNegolytValveTankOutlet.ReqAutomaticClose();
|
||||
_fbPosolytValveTankOutlet.ReqAutomaticClose();
|
||||
_iState := 45;
|
||||
|
||||
45: // Wait for valves to be closed
|
||||
IF _fbNegolytValveTankOutlet.IsClosed AND _fbPosolytValveTankOutlet.IsClosed THEN
|
||||
_iState := 50;
|
||||
END_IF
|
||||
|
||||
// When there is an error trying to close the valves,
|
||||
// dont try to discharge the segment
|
||||
IF _fbNegolytValveTankOutlet.xError OR _fbPosolytValveTankOutlet.xError THEN
|
||||
_iState := 60;
|
||||
END_IF
|
||||
|
||||
// Check for restart condition
|
||||
IF xEnable AND (NOT _xErrorActive) THEN
|
||||
_iState := 0;
|
||||
END_IF
|
||||
|
||||
50: // Wait for unit voltage to drop below a certain threshold
|
||||
IF (_fbVoltageSegment.rScaledValue <= GVL_CONFIG.rPumpshutoffThreshold) THEN
|
||||
_iState := 60;
|
||||
END_IF
|
||||
|
||||
// Check for restart condition
|
||||
IF xEnable AND (NOT _xErrorActive) THEN
|
||||
_iState := 0;
|
||||
END_IF
|
||||
|
||||
60: // Disable pumps
|
||||
_fbPosolytPumpInlet.ReqAutomaticStop();
|
||||
_fbNegolytPumpInlet.ReqAutomaticStop();
|
||||
_iState := 65;
|
||||
|
||||
65: // Wait for pumps to be stopped
|
||||
IF _fbPosolytPumpInlet.IsStopped AND _fbNegolytPumpInlet.IsStopped THEN
|
||||
IF _xErrorActive THEN
|
||||
_iState := 1000;
|
||||
ELSE
|
||||
_iState := 0;
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
// Check for restart condition
|
||||
IF xEnable AND (NOT _xErrorActive) THEN
|
||||
_iState := 0;
|
||||
END_IF
|
||||
|
||||
1000: // Alarm active
|
||||
// Only allow reset when enable is deactivated to avoid an
|
||||
// automatic restart of the unit
|
||||
IF (NOT _xErrorActive) AND (NOT xEnable) THEN
|
||||
_iState := 0;
|
||||
END_IF
|
||||
END_CASE
|
||||
|
||||
|
||||
// ===============================
|
||||
// Output error and warning flags
|
||||
// ===============================
|
||||
xError := _xErrorActive;
|
||||
xWarning := _xWarningActive;]]></ST>
|
||||
</Implementation>
|
||||
<Method Name="FB_init" Id="{08f1cd44-6483-4d20-ab45-d1938e8ec885}">
|
||||
<Declaration><![CDATA[METHOD FB_init : BOOL
|
||||
VAR_INPUT
|
||||
bInitRetains : BOOL; // if TRUE, the retain variables are initialized (warm start / cold start)
|
||||
bInCopyCode : BOOL; // if TRUE, the instance afterwards gets moved into the copy code (online change)
|
||||
|
||||
sName : STRING;
|
||||
END_VAR
|
||||
]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[_sName := sName;
|
||||
|
||||
_fbNotAllAutomaticAlarm.CreateEx(TC_EVENTS.General.NotAllCompInAutomatic, bWithConfirmation := FALSE, 0);
|
||||
_fbNotAllAutomaticAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
<LineIds Name="FB_Unit">
|
||||
<LineId Id="4232" Count="29" />
|
||||
<LineId Id="4584" Count="0" />
|
||||
<LineId Id="4263" Count="102" />
|
||||
<LineId Id="4619" Count="0" />
|
||||
<LineId Id="4367" Count="46" />
|
||||
<LineId Id="4621" Count="22" />
|
||||
<LineId Id="4620" Count="0" />
|
||||
<LineId Id="4644" Count="1" />
|
||||
<LineId Id="4414" Count="0" />
|
||||
<LineId Id="4647" Count="0" />
|
||||
<LineId Id="4646" Count="0" />
|
||||
<LineId Id="4416" Count="17" />
|
||||
<LineId Id="4444" Count="26" />
|
||||
<LineId Id="4476" Count="33" />
|
||||
<LineId Id="4511" Count="17" />
|
||||
<LineId Id="4653" Count="0" />
|
||||
<LineId Id="4655" Count="2" />
|
||||
<LineId Id="4654" Count="0" />
|
||||
<LineId Id="4529" Count="4" />
|
||||
<LineId Id="4658" Count="0" />
|
||||
<LineId Id="4660" Count="2" />
|
||||
<LineId Id="4659" Count="0" />
|
||||
<LineId Id="4569" Count="0" />
|
||||
<LineId Id="4535" Count="12" />
|
||||
<LineId Id="4663" Count="0" />
|
||||
<LineId Id="4665" Count="2" />
|
||||
<LineId Id="4664" Count="0" />
|
||||
<LineId Id="4548" Count="6" />
|
||||
<LineId Id="4556" Count="6" />
|
||||
<LineId Id="2754" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_Unit.FB_init">
|
||||
<LineId Id="11" Count="1" />
|
||||
<LineId Id="7" Count="1" />
|
||||
</LineIds>
|
||||
</POU>
|
||||
</TcPlcObject>
|
||||
Reference in New Issue
Block a user