Files
infineon_plc/PLC/01_Stationen/HeatCoolPlates/FB_HotPlate.TcPOU

99 lines
2.5 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1">
<POU Name="FB_HotPlate" Id="{317a2373-f886-4e32-b683-81b726d00aac}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_HotPlate
VAR_INPUT
xEnable : BOOL;
rTargetTemp : REAL;
xConfirmAlarms : BOOL;
END_VAR
VAR_OUTPUT
uiNextFreeSlot : UINT;
uiNextReadySlot : UINT;
END_VAR
VAR_IN_OUT
stHMIInterface : ST_HCPlateHMIInterface;
END_VAR
VAR
xEnableHotplate AT %Q* : BOOL;
// _axSlotFree : ARRAY [0..(GVL_HeatCoolConfig.HEAT_COOL_PLATES_NUM_SLOTS - 1)] OF BOOL;
// _atonSlotTimer : ARRAY[0..(GVL_HeatCoolConfig.HEAT_COOL_PLATES_NUM_SLOTS - 1)] OF TON;
// Temp sensor
_fbTempSensor : FB_AnalogInput('Temp sensor');
_stTempSensorConfig : ST_ANALOG_IO_CONFIG := (sUnit := '°C', rPVMin := -200, rPVMax := 850, iAIMin := -2000, iAIMax := 8500);
_stTempSEnsorEWConfig : ST_ANALOG_EW_CONFIG := (
stLevels := (
rErrorMin := -2000,
rErrorMax := 8500,
rWarningMin := -1000,
rWarningMax := 7500),
stDelays := (
timErrorHighOn := T#1S,
timErrorLowOn := T#1S,
timWarningHighOn := T#1S,
timWarningLowOn := T#1S,
timHardwareSignalLevelOff := T#1S));
_fbPITempControl : FB_PI;
_fbLimit : FB_Limit;
_fbPWMOut : FB_PWM;
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[// Call sensor fbs
_fbTempSensor(
stAnalogIOConfig:= _stTempSensorConfig,
stAnalogEWConfig:= _stTempSEnsorEWConfig,
xReleaseErrors:= TRUE,
xReleaseLimitErrors:= FALSE,
xReleaseHardwareErrors:= TRUE,
xConfirmAlarms:= xConfirmAlarms,
stHMIInterface=> );
// Clamp HMI Setpoint
IF stHMIInterface.rSetpoint > 140.0 THEN
stHMIInterface.rSetpoint := 140;
END_IF
IF stHMIInterface.rSetpoint < 0.0 THEN
stHMIInterface.rSetpoint := 0.0;
END_IF
// For now get setpoint from HMI interface
_fbPITempControl(
rSP:= stHMIInterface.rSetpoint,
rPV:= _fbTempSensor.rScaledValue,
rKp:= 6,
rTn:= 0,
xEnable:= stHMIInterface.xEnable,
rMV=> _fbLimit.rIn);
_fbLimit(
rMin:= 0,
rMax:= 100.0,
rOut=> _fbPWMOut.rPWM,
xClampedUpper=> _fbPITempControl.xSaturatedUpper,
xClampedLower=> _fbPITempControl.xSaturatedLower);
_fbPWMOut(
timPeriod:= T#10S,
xOutput=> xEnableHotplate);
// Output HMI Interface
stHMIInterface.rPV := _fbTempSensor.rScaledValue;
]]></ST>
</Implementation>
<Method Name="M_AddItem" Id="{9707459a-6558-487c-b730-c9dc92d598ed}">
<Declaration><![CDATA[METHOD M_AddItem
VAR_INPUT
END_VAR
]]></Declaration>
<Implementation>
<ST><![CDATA[]]></ST>
</Implementation>
</Method>
</POU>
</TcPlcObject>