- Aligned X and Y NC Axis with aligner camera coordination system - Added robot plc jobs and feedback - Began Meca500 robot interface - Changed hotplate control to slow PWM - PackML statemachine now starts in aborted state - Fixed StateML start method
106 lines
2.6 KiB
XML
106 lines
2.6 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;
|
|
rDeadBand : REAL := 5.0;
|
|
|
|
xConfirmAlarms : BOOL;
|
|
END_VAR
|
|
VAR_OUTPUT
|
|
uiNextFreeSlot : UINT;
|
|
uiNextReadySlot : UINT;
|
|
END_VAR
|
|
VAR
|
|
_xEnableHotplate AT %Q* : BOOL;
|
|
|
|
_axSlotFree : ARRAY [0..(GVL_HeatCoolConfig.HEAT_COOL_PLATES_NUM_SLOTS - 1)] OF BOOL;
|
|
_tonSlotTimer : 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;
|
|
_xSaturatedUpper : BOOL;
|
|
_xSaturatedLower : BOOL;
|
|
_rMV : REAL;
|
|
_fbPulsOut : TP;
|
|
_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=> );
|
|
|
|
_fbPITempControl(
|
|
rSP:= rTargetTemp,
|
|
rPV:= _fbTempSensor.rScaledValue,
|
|
rKp:= 2,
|
|
rTn:= 0,
|
|
xEnable:= xEnable,
|
|
xSaturatedUpper:= _xSaturatedUpper,
|
|
xSaturatedLower:= _xSaturatedLower,
|
|
rMV=> _rMV);
|
|
|
|
IF _rMV >= 100.0 THEN
|
|
_rMV := 100.0;
|
|
_xSaturatedUpper := TRUE;
|
|
ELSE
|
|
_xSaturatedUpper := FALSE;
|
|
END_IF
|
|
|
|
IF _rMV <=0 THEN
|
|
_rMV := 0.0;
|
|
_xSaturatedLower := TRUE;
|
|
ELSE
|
|
_xSaturatedLower := FALSE;
|
|
END_IF
|
|
|
|
_fbPWMOut(
|
|
rPWM:= _rMV,
|
|
timPeriod:= T#10S,
|
|
xOutput=> _xEnableHotplate);
|
|
|
|
// Control temperature with two point controller
|
|
// IF _fbTempSensor.rScaledValue < (rTargetTemp - rDeadBand) THEN
|
|
// _xEnableHotplate := TRUE;
|
|
// END_IF
|
|
//
|
|
// IF _fbTempSensor.rScaledValue >= (rTargetTemp) THEN
|
|
// _xEnableHotplate := FALSE;
|
|
// END_IF
|
|
]]></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> |