Initial
This commit is contained in:
163
PLC/7 CodeReader/CodeReader_MAIN_FB.TcPOU
Normal file
163
PLC/7 CodeReader/CodeReader_MAIN_FB.TcPOU
Normal file
@@ -0,0 +1,163 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.13">
|
||||
<POU Name="CodeReader_MAIN_FB" Id="{ebc21b2c-3341-4cce-92b4-b610f9a91412}" SpecialFunc="None">
|
||||
<Declaration><![CDATA[FUNCTION_BLOCK CodeReader_MAIN_FB EXTENDS Station_GENERAL_MAIN_FB IMPLEMENTS I_STATION_CMD_CALL
|
||||
VAR_INPUT
|
||||
bManualInput : BOOL;
|
||||
|
||||
ManualInput_LotID : T_MaxString;
|
||||
ManualInput_SlotID : T_MaxString;
|
||||
END_VAR
|
||||
VAR_OUTPUT
|
||||
Data : T_MaxString;
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[]]></ST>
|
||||
</Implementation>
|
||||
<Method Name="CloseInOut" Id="{98e834d3-3fd9-47dc-9bba-c6f0ac9c1607}">
|
||||
<Declaration><![CDATA[METHOD CloseInOut : BOOL
|
||||
]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[Data := '';
|
||||
CloseInOut := TRUE;]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
<Method Name="FB_Init" Id="{35b2e7ea-9b17-4288-a1e2-8ad0a9ea6ba7}">
|
||||
<Declaration><![CDATA[//FB_Init is always available implicitly and it is used primarily for initialization.
|
||||
//The return value is not evaluated. For a specific influence, you can also declare the
|
||||
//methods explicitly and provide additional code there with the standard initialization
|
||||
//code. You can evaluate the return value.
|
||||
METHOD FB_Init: BOOL
|
||||
VAR_INPUT
|
||||
bInitRetains: BOOL; // TRUE: the retain variables are initialized (reset warm / reset cold)
|
||||
bInCopyCode: BOOL; // TRUE: the instance will be copied to the copy code afterward (online change)
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[_VisuName := 'CODE';
|
||||
_NoConfigFile := TRUE;
|
||||
_SchedulerManagement := TRUE;]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
<Method Name="Initialization" Id="{ffa54c1b-5765-43b2-8c91-574c9be93f5e}">
|
||||
<Declaration><![CDATA[METHOD Initialization : BOOL
|
||||
VAR_INPUT
|
||||
iStation : INT;
|
||||
END_VAR
|
||||
]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[
|
||||
|
||||
InitializationExt(iStation);
|
||||
|
||||
iStationStatus.NoScan := TRUE;
|
||||
iStationStatus.OnlyMoveToStation := TRUE;
|
||||
iStationStatus.NoRecipe := TRUE;
|
||||
|
||||
iStationStatus.StationName := 'Code Reader';
|
||||
RecipeStationName[iStation] := 'Code Reader';
|
||||
iStationStatus.ErrorList := 'CODE_ErrorNr';]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
<Method Name="MAIN" Id="{f434c5f4-d993-4d4a-8406-28b10f61f92c}">
|
||||
<Declaration><![CDATA[METHOD MAIN : BOOL
|
||||
VAR_INPUT
|
||||
END_VAR
|
||||
]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
<Method Name="Start" Id="{ff149edf-77e8-4f32-aa05-c132608a9600}">
|
||||
<Declaration><![CDATA[METHOD Start : BOOL
|
||||
VAR
|
||||
fbFormat : FB_FormatString;
|
||||
END_VAR
|
||||
VAR_INST
|
||||
|
||||
Path : STRING;
|
||||
CreateDir : FB_CreateDir;
|
||||
|
||||
Pos : INT;
|
||||
Size : INT;
|
||||
END_VAR]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[CASE _Step OF
|
||||
0:
|
||||
IF KeyenceCamera.DMC(iStationStatus.WaferInfo[0].Size ,Data := Data) THEN
|
||||
IF LEN(Data) > 0 THEN
|
||||
_Step := 10;
|
||||
ELSE
|
||||
ManualInput_LotID := '';
|
||||
ManualInput_SlotID := '';
|
||||
_Step := 15;
|
||||
END_IF
|
||||
END_IF
|
||||
10:
|
||||
Size := LEN(Data);
|
||||
IF iStationStatus.Ist.Service OR Size = 0 THEN
|
||||
_Step := 100;
|
||||
ELSE
|
||||
_Step := 20;
|
||||
END_IF
|
||||
15:
|
||||
bManualInput := TRUE;
|
||||
_Step := _Step +1;
|
||||
16:
|
||||
IF NOT bManualInput THEN
|
||||
iStationStatus.WaferInfo[0].LotID := ManualInput_LotID;
|
||||
iStationStatus.WaferInfo[0].SlotID := ManualInput_SlotID;
|
||||
_Step := 21;
|
||||
END_IF
|
||||
20:
|
||||
CASE CMD[FirstStation] OF
|
||||
StartCMD:
|
||||
;
|
||||
ELSE
|
||||
_Step := 100;
|
||||
RETURN;
|
||||
END_CASE
|
||||
|
||||
Pos := FIND(Data, '/');
|
||||
IF Pos > 0 THEN
|
||||
iStationStatus.WaferInfo[0].LotID := LEFT(Data, Pos - 1);
|
||||
iStationStatus.WaferInfo[0].SlotID := DELETE(Data, Pos, 1);
|
||||
_Step := _Step +1;;
|
||||
ELSE
|
||||
iStationStatus.WaferInfo[0].SlotID := Data;
|
||||
_Step := 30;
|
||||
END_IF
|
||||
21:
|
||||
Path := CONCAT(LOG_MAIN_PATH, iStationStatus.WaferInfo[0].LotStartTime);
|
||||
Path := CONCAT(Path, '\');
|
||||
Path := CONCAT(Path, iStationStatus.WaferInfo[0].LotID);
|
||||
CreateDir(sPathName := Path, bExecute := TRUE);
|
||||
_Step := _Step +1;
|
||||
22:
|
||||
IF CreateDir.bError OR NOT CreateDir.bBusy THEN
|
||||
_Step := 30;
|
||||
END_IF
|
||||
CreateDir(bExecute := FALSE);
|
||||
30:
|
||||
Path := CONCAT(LOG_MAIN_PATH, iStationStatus.WaferInfo[0].LotStartTime);
|
||||
Path := CONCAT(Path, '\');
|
||||
Path := CONCAT(Path, iStationStatus.WaferInfo[0].LotID);
|
||||
Path := CONCAT(Path, '\');
|
||||
Path := CONCAT(Path, iStationStatus.WaferInfo[0].SlotID);
|
||||
CreateDir(sPathName := Path, bExecute := TRUE);
|
||||
_Step := _Step +1;
|
||||
31:
|
||||
IF CreateDir.bError THEN
|
||||
_Step := 200;
|
||||
ELSIF NOT CreateDir.bBusy THEN
|
||||
_Step := 100;
|
||||
END_IF
|
||||
CreateDir(bExecute := FALSE);
|
||||
100:
|
||||
Start := TRUE;
|
||||
_Step := 0;
|
||||
END_CASE
|
||||
]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
</POU>
|
||||
</TcPlcObject>
|
||||
Reference in New Issue
Block a user