Backup after startup
This commit is contained in:
17
KD_Hoertnagel_Fraese.apj
Normal file
17
KD_Hoertnagel_Fraese.apj
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version="4.7.3.93 SP"?>
|
||||
<Project Description="Lackierzelle" Version="1.00.0" Edition="Standard" EditionComment="Standard" xmlns="http://br-automation.co.at/AS/Project">
|
||||
<Communication>
|
||||
<OnlineConfiguration Name="Fraese" DeviceType="TCPIP" DeviceParameters="/IF=tcpip /LOPO=11159 /SA=99" ConnectionParameters="/COMT=2500 /RT=1000 /AM=* /SDT=5 /DAIP=192.168.1.138 /REPO=11159 /ANSL=1 /PT=11169" Description="" />
|
||||
</Communication>
|
||||
<ANSIC DefaultIncludes="true" />
|
||||
<IEC ExtendedConstants="true" IecExtendedComments="true" KeywordsAsStructureMembers="false" NamingConventions="true" Pointers="true" Preprocessor="false" />
|
||||
<Motion RestartAcoposParameter="true" RestartInitParameter="true" />
|
||||
<Project StoreRuntimeInProject="false" />
|
||||
<Variables DefaultInitValue="0" DefaultRetain="false" DefaultVolatile="true" />
|
||||
<TechnologyPackages>
|
||||
<Acp10Arnc0 Version="5.9.2" />
|
||||
<mapp Version="5.9.1" />
|
||||
<TextSystem udbdef="0.1.0" />
|
||||
</TechnologyPackages>
|
||||
</Project>
|
||||
8
LastUser.set
Normal file
8
LastUser.set
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version="4.7.3.93 SP"?>
|
||||
<ProjectSettings xmlns="http://br-automation.co.at/AS/ProjectSettings">
|
||||
<ConfigurationManager ActiveConfigurationName="Config1" />
|
||||
<Deployment Value="ActiveCpu" />
|
||||
<ExportProject ExportFilePath="D:\src44\KD_Hoertnagel_Fraese\KD_Hoertnagel_Fraese.zip" />
|
||||
<Print Footer="%cPage: %p" Header="%lProject: %n%c%x" />
|
||||
</ProjectSettings>
|
||||
8
Logical/Common/GlobalCommon.typ
Normal file
8
Logical/Common/GlobalCommon.typ
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
TYPE
|
||||
typAlarm : STRUCT (*Alarm Datenstruktur*)
|
||||
Alarm : ARRAY[0..127]OF BOOL;
|
||||
Ack : ARRAY[0..127]OF BOOL;
|
||||
Bypass : ARRAY[0..127]OF BOOL;
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
24
Logical/Common/GlobalComon.var
Normal file
24
Logical/Common/GlobalComon.var
Normal file
@@ -0,0 +1,24 @@
|
||||
VAR
|
||||
bBlink0_1 : BOOL;
|
||||
bBlink0_5 : BOOL;
|
||||
bBlink1_0 : BOOL;
|
||||
bBlink2_0 : BOOL;
|
||||
bBlink5_0 : BOOL;
|
||||
gdtCurrentTime : DATE_AND_TIME; (*Current Date and Time*)
|
||||
gDTstrucCurrentTime : DTStructure := (0); (*Current Date and Time as DTStructure*)
|
||||
gsCurrentTime : STRING[25] := ''; (*Current Date and Time as String*)
|
||||
gTCurrentTime : TIME := T#0ms; (*Current Time*)
|
||||
END_VAR
|
||||
VAR CONSTANT
|
||||
gAInNull : INT := 0; (*O FOR Analog Input*)
|
||||
gTrue : BOOL := TRUE; (*Konstant TRUE*)
|
||||
gFalse : BOOL := FALSE; (*Konstant False*)
|
||||
gInNull : BOOL := FALSE; (*FALSE FOR Input *)
|
||||
END_VAR
|
||||
VAR
|
||||
gOuNull : BOOL; (*DUMMY for Output*)
|
||||
END_VAR
|
||||
VAR CONSTANT
|
||||
iAIVoltageOverflow : INT := 16#7FFF; (* Analog Input Voltage Mode,Overflow *)
|
||||
iAIVoltageUnderflow : INT := -32767; (* Analog Input Voltage Underflow *)
|
||||
END_VAR
|
||||
10
Logical/Common/Package.pkg
Normal file
10
Logical/Common/Package.pkg
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.2.3.159?>
|
||||
<Package xmlns="http://br-automation.co.at/AS/Package">
|
||||
<Objects>
|
||||
<Object Type="File">GlobalCommon.typ</Object>
|
||||
<Object Type="File">GlobalComon.var</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Current Date_And_Time / DT Struct">get_dt</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Blinker 0,1 -0,5s (f. 100ms Task) !!!">blinker</Object>
|
||||
</Objects>
|
||||
</Package>
|
||||
9
Logical/Common/blinker/IEC.prg
Normal file
9
Logical/Common/blinker/IEC.prg
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.2.3.159?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Local variables" Private="true">blinker.var</File>
|
||||
<File Description="Initialization code">blinkerInit.ab</File>
|
||||
<File Description="Cyclic code">blinkerCyclic.ab</File>
|
||||
</Files>
|
||||
</Program>
|
||||
13
Logical/Common/blinker/blinker.var
Normal file
13
Logical/Common/blinker/blinker.var
Normal file
@@ -0,0 +1,13 @@
|
||||
(********************************************************************
|
||||
* COPYRIGHT -- kA
|
||||
********************************************************************
|
||||
* Program: blinker
|
||||
* File: blinker.var
|
||||
* Author: michi
|
||||
* Created: November 23, 2009
|
||||
********************************************************************
|
||||
* Local variables of program blinker
|
||||
********************************************************************)
|
||||
VAR
|
||||
iCount : USINT;
|
||||
END_VAR
|
||||
30
Logical/Common/blinker/blinkerCyclic.ab
Normal file
30
Logical/Common/blinker/blinkerCyclic.ab
Normal file
@@ -0,0 +1,30 @@
|
||||
(********************************************************************
|
||||
* COPYRIGHT -- kA
|
||||
********************************************************************
|
||||
* Program: blinker
|
||||
* File: blinkerCyclic.ab
|
||||
* Author: michi
|
||||
* Created: November 23, 2009
|
||||
********************************************************************
|
||||
* Implementation of program blinker
|
||||
********************************************************************)
|
||||
|
||||
PROGRAM _CYCLIC
|
||||
(* cyclic program *)
|
||||
;Has to be taskclass 100ms
|
||||
bBlink0_1 = not bBlink0_1
|
||||
inc (iCount)
|
||||
if ((iCount mod 5) = 0) then
|
||||
bBlink0_5 = not bBlink0_5
|
||||
endif
|
||||
if ((iCount mod 10) = 0) then
|
||||
bBlink1_0 = not bBlink1_0
|
||||
endif
|
||||
if ((iCount mod 20) = 0) then
|
||||
bBlink2_0 = not bBlink2_0
|
||||
endif
|
||||
if ((iCount mod 50) = 0) then
|
||||
bBlink5_0 = not bBlink5_0
|
||||
iCount = 0
|
||||
endif
|
||||
END_PROGRAM
|
||||
16
Logical/Common/blinker/blinkerInit.ab
Normal file
16
Logical/Common/blinker/blinkerInit.ab
Normal file
@@ -0,0 +1,16 @@
|
||||
(********************************************************************
|
||||
* COPYRIGHT -- kA
|
||||
********************************************************************
|
||||
* Program: blinker
|
||||
* File: blinkerInit.ab
|
||||
* Author: michi
|
||||
* Created: November 23, 2009
|
||||
********************************************************************
|
||||
* Implementation of program blinker
|
||||
********************************************************************)
|
||||
|
||||
PROGRAM _INIT
|
||||
iCount = 0
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
9
Logical/Common/get_dt/IEC.prg
Normal file
9
Logical/Common/get_dt/IEC.prg
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.2.3.159?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File>get_dtCyclic.ab</File>
|
||||
<File Private="true">get_dt.var</File>
|
||||
<File>get_dtInit.ab</File>
|
||||
</Files>
|
||||
</Program>
|
||||
6
Logical/Common/get_dt/get_dt.var
Normal file
6
Logical/Common/get_dt/get_dt.var
Normal file
@@ -0,0 +1,6 @@
|
||||
VAR
|
||||
sTemp : STRING[10] := '';
|
||||
lDTStructureGetTime : DTStructureGetTime := (0);
|
||||
lDTGetTime : DTGetTime := (0);
|
||||
lTimeStructure : TIMEStructure := (0);
|
||||
END_VAR
|
||||
57
Logical/Common/get_dt/get_dtCyclic.ab
Normal file
57
Logical/Common/get_dt/get_dtCyclic.ab
Normal file
@@ -0,0 +1,57 @@
|
||||
PROGRAM _CYCLIC
|
||||
(* cyclic program *)
|
||||
|
||||
lDTGetTime.enable = true
|
||||
lDTGetTime FUB DTGetTime()
|
||||
gdtCurrentTime = lDTGetTime.DT1
|
||||
|
||||
lDTStructureGetTime.enable = true
|
||||
lDTStructureGetTime FUB DTStructureGetTime ()
|
||||
lDTStructureGetTime.pDTStructure = adr (gDTstrucCurrentTime)
|
||||
|
||||
ascDTStructure (ADR (gDTstrucCurrentTime), ADR (gsCurrentTime), 25)
|
||||
brsstrcpy (ADR (gsCurrentTime), "")
|
||||
brsitoa (gDTstrucCurrentTime.year, ADR (sTemp))
|
||||
brsstrcat (ADR (gsCurrentTime), ADR (sTemp))
|
||||
IF (gDTstrucCurrentTime.month < 10) THEN
|
||||
brsstrcat (ADR (gsCurrentTime), "0")
|
||||
ENDIF
|
||||
brsitoa (gDTstrucCurrentTime.month, ADR (sTemp))
|
||||
brsstrcat (ADR (gsCurrentTime), ADR (sTemp))
|
||||
IF (gDTstrucCurrentTime.day < 10) THEN
|
||||
brsstrcat (ADR (gsCurrentTime), "0")
|
||||
ENDIF
|
||||
brsitoa (gDTstrucCurrentTime.day, ADR (sTemp))
|
||||
brsstrcat (ADR (gsCurrentTime), ADR (sTemp))
|
||||
brsstrcat (ADR (gsCurrentTime), "_")
|
||||
IF (gDTstrucCurrentTime.hour < 10) THEN
|
||||
brsstrcat (ADR (gsCurrentTime), "0")
|
||||
ENDIF
|
||||
brsitoa (gDTstrucCurrentTime.hour, ADR (sTemp))
|
||||
brsstrcat (ADR (gsCurrentTime), ADR (sTemp))
|
||||
brsstrcat (ADR (gsCurrentTime), "-")
|
||||
IF (gDTstrucCurrentTime.minute < 10) THEN
|
||||
brsstrcat (ADR (gsCurrentTime), "0")
|
||||
ENDIF
|
||||
brsitoa (gDTstrucCurrentTime.minute, ADR (sTemp))
|
||||
brsstrcat (ADR (gsCurrentTime), ADR (sTemp))
|
||||
brsstrcat (ADR (gsCurrentTime), "-")
|
||||
IF (gDTstrucCurrentTime.second < 10) THEN
|
||||
brsstrcat (ADR (gsCurrentTime), "0")
|
||||
ENDIF
|
||||
brsitoa (gDTstrucCurrentTime.second, ADR (sTemp))
|
||||
brsstrcat (ADR (gsCurrentTime), ADR (sTemp))
|
||||
brsstrcat (ADR (gsCurrentTime), "_")
|
||||
brsitoa (gDTstrucCurrentTime.millisec, ADR (sTemp))
|
||||
brsstrcat (ADR (gsCurrentTime), ADR (sTemp))
|
||||
|
||||
lTimeStructure.day = gDTstrucCurrentTime.day
|
||||
lTimeStructure.hour = gDTstrucCurrentTime.hour
|
||||
lTimeStructure.minute = gDTstrucCurrentTime.minute
|
||||
lTimeStructure.second = gDTstrucCurrentTime.second
|
||||
lTimeStructure.millisec = gDTstrucCurrentTime.millisec
|
||||
lTimeStructure.microsec = gDTstrucCurrentTime.microsec
|
||||
gTCurrentTime = TIMEStructure_TO_TIME (adr (lTimeStructure))
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
4
Logical/Common/get_dt/get_dtInit.ab
Normal file
4
Logical/Common/get_dt/get_dtInit.ab
Normal file
@@ -0,0 +1,4 @@
|
||||
PROGRAM _INIT
|
||||
(* init program *)
|
||||
END_PROGRAM
|
||||
|
||||
182
Logical/Communication/ABBCom/ABBCom.st
Normal file
182
Logical/Communication/ABBCom/ABBCom.st
Normal file
@@ -0,0 +1,182 @@
|
||||
|
||||
PROGRAM _CYCLIC
|
||||
//Zeiger auf Roboter Stellen (Zyklisch wg. Download)
|
||||
lABBRobot ACCESS ADR (gABBRobot1);
|
||||
|
||||
//Dynamische Variablen initialisieren
|
||||
IF (gusCurrentParamset < 0) OR (gusCurrentParamset >= MAX_PARAM) THEN
|
||||
lProcParam ACCESS ADR (gProcParam[0]);
|
||||
ELSE
|
||||
lProcParam ACCESS ADR (gProcParam[gusCurrentParamset]);
|
||||
END_IF
|
||||
|
||||
|
||||
|
||||
//Lifebeat erzeugen
|
||||
lABBRobot.Out.bLifebeat := bBlink0_5;
|
||||
|
||||
//Eing<EFBFBD>nge von Roboter
|
||||
//============================================================
|
||||
//Eingangs Byte 0 (0-7)
|
||||
TON_Motors_On.IN := dpInByte[0].0;
|
||||
TON_Motors_On.PT := t#1200ms;
|
||||
TON_Motors_On ();
|
||||
lABBRobot.In.bMotorsOn := TON_Motors_On.Q;
|
||||
lABBRobot.In.bMotorsOff := dpInByte[0].1;
|
||||
lABBRobot.In.bProgramRun := dpInByte[0].2;
|
||||
lABBRobot.In.bEStop := dpInByte[0].3;
|
||||
lABBRobot.In.bAutomatic := dpInByte[0].4;
|
||||
lABBRobot.In.bError := dpInByte[0].5;
|
||||
lABBRobot.In.bRunChainOk := dpInByte[0].6;
|
||||
lABBRobot.In.bLifebeat := dpInByte[0].7;
|
||||
IF EDGE (lABBRobot.In.bLifebeat) THEN
|
||||
TON_Lifebeat.IN := FALSE;
|
||||
ELSE
|
||||
TON_Lifebeat.IN := TRUE;
|
||||
END_IF;
|
||||
TON_Lifebeat.PT := t#750ms;
|
||||
TON_Lifebeat ();
|
||||
lABBRobot.bOnline := NOT TON_Lifebeat.Q;
|
||||
|
||||
//Eingangs Byte 1 (8-15)
|
||||
lABBRobot.In.bMotionSupervisionTriggered := dpInByte[1].0;
|
||||
|
||||
|
||||
gCmd1.Robot.FromRobot.bFinishedPartStuck := dpInByte[1].7;
|
||||
|
||||
//Eingangs Byte 2 (16-23)
|
||||
//Greifer 1 <EFBFBD>ffnen
|
||||
IF dpInByte[2].0 THEN
|
||||
IF NOT gEGP[1].In.bGripperIsOpen THEN
|
||||
gEGP[1].Out.bOpen := TRUE;
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
//Greifer 1 Schlie<EFBFBD>en
|
||||
IF dpInByte[2].1 THEN
|
||||
IF NOT gEGP[1].In.bGripperIsClosed AND NOT gEGP[1].In.bGripperIsClosedWithPart THEN
|
||||
gEGP[1].Out.bClose := TRUE;
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
//Greifer 2 <EFBFBD>ffnen
|
||||
IF dpInByte[2].2 THEN
|
||||
IF NOT gEGP[2].In.bGripperIsOpen THEN
|
||||
gEGP[2].Out.bOpen := TRUE;
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
//Greifer 2 Schlie<EFBFBD>en
|
||||
IF dpInByte[2].3 THEN
|
||||
IF NOT gEGP[2].In.bGripperIsClosed AND NOT gEGP[2].In.bGripperIsClosedWithPart THEN
|
||||
gEGP[2].Out.bClose := TRUE;
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
//Roboter hat neues Bauteil eingelegt
|
||||
gCmd1.Robot.FromRobot.bPlacedPart := dpInByte[2].4;
|
||||
//Roboter hat fertigteil abgehol
|
||||
gCmd1.Robot.FromRobot.bPicketFinishedPart := dpInByte[2].5;
|
||||
|
||||
//PickSignal an Anyfeeder
|
||||
gCmd1.FlexfeedRobFeed.RobfeedToFlexfeed.bPickSignal := dpInByte[2].7;
|
||||
|
||||
|
||||
//Eingangs Byte 3 (24-31)
|
||||
lABBRobot.In.bWZHome := dpInByte[3].0;
|
||||
lABBRobot.In.bWZChangetool := dpInByte[3].1;
|
||||
lABBRobot.In.bWZPlacepoint := dpInByte[3].2;
|
||||
//gCmd1.FeederRobFeed.RobfeedToFd.bRobotInPlacepos := dpInByte[3].2;
|
||||
|
||||
//Roboter in Bereich Flexfeeder (nur lokal wg. Homing benutzt
|
||||
//dpInByte[3].6
|
||||
|
||||
|
||||
//Eingangs Byte 4 (32-39)
|
||||
gCmd1.FlexfeedRobFeed.RobfeedToFlexfeed.bRobOutOfFeeder := dpInByte[4].0;
|
||||
gCmd1.Robot.FromRobot.bMillAraeFree := dpInByte[4].1;
|
||||
|
||||
// lABBRobot.In.uiRotationPos := SHL (USINT_TO_UINT (dpInByte[4]), 8) + USINT_TO_UINT (dpInByte[4]);
|
||||
//Eingangs Byte 5 (40-47)
|
||||
lABBRobot.In.usStatus := dpInByte[5];
|
||||
//Eingangs Byte 6 (48-55)
|
||||
//Eingangs Byte 7 (56-63)
|
||||
gCmd1.FlexfeedRobFeed.RobfeedToFlexfeed.usCalState := dpInByte[7];
|
||||
//Status Caibrieren
|
||||
//Eingangs Byte 8 (64-71)
|
||||
//Eingangs Byte 9 (72-80)
|
||||
//Eingangs Byte 10 (81-88)
|
||||
gCmd1.FlexfeedRobFeed.RobfeedToFlexfeed.diCalPosX := USINT_TO_DINT (dpInByte[10]);
|
||||
//Eingangs Byte 11 (89-96)
|
||||
gCmd1.FlexfeedRobFeed.RobfeedToFlexfeed.diCalPosX := gCmd1.FlexfeedRobFeed.RobfeedToFlexfeed.diCalPosX + SHL(USINT_TO_DINT (dpInByte[11]), 8);
|
||||
//Eingangs Byte 12 (97-104)
|
||||
gCmd1.FlexfeedRobFeed.RobfeedToFlexfeed.diCalPosY := USINT_TO_DINT (dpInByte[12]);
|
||||
//Eingangs Byte 13 (105-112)
|
||||
gCmd1.FlexfeedRobFeed.RobfeedToFlexfeed.diCalPosY := gCmd1.FlexfeedRobFeed.RobfeedToFlexfeed.diCalPosY + SHL(USINT_TO_DINT (dpInByte[13]), 8);
|
||||
//Eingangs Byte 14 (113-120)
|
||||
//Eingangs Byte 15 (121-128)
|
||||
|
||||
//Ausg<EFBFBD>nge an Roboter
|
||||
//============================================================
|
||||
//Ausgangs Byte 0 (0-7)
|
||||
TOF_Reset_EStop.IN := lABBRobot.Out.bResetEStop;
|
||||
TOF_Reset_EStop.PT := t#400ms;
|
||||
TOF_Reset_EStop ();
|
||||
dpOutByte[0].0 := lABBRobot.Out.bSwitchMotorOn;
|
||||
dpOutByte[0].1 := lABBRobot.Out.bSwitchMotorOff;
|
||||
dpOutByte[0].2 := lABBRobot.Out.bStart;
|
||||
dpOutByte[0].3 := lABBRobot.Out.bStop;
|
||||
dpOutByte[0].4 := TOF_Reset_EStop.Q;
|
||||
dpOutByte[0].5 := lABBRobot.Out.bResetError;
|
||||
dpOutByte[0].6 := lABBRobot.Out.bStartAtMain;
|
||||
dpOutByte[0].7 := lABBRobot.Out.bLifebeat;
|
||||
|
||||
//Ausgangs Byte 1 (8-15)
|
||||
dpOutByte[1].0 := lABBRobot.Out.bStartBackup;
|
||||
//dpOutByte[1].1 := lABBRobot.Out.bWirteAccess;
|
||||
|
||||
//Ausgangs Byte 2 (16-23)
|
||||
dpOutByte[2].0 := gEGP[1].In.bGripperIsOpen;
|
||||
dpOutByte[2].1 := gEGP[1].In.bGripperIsClosed OR gEGP[1].In.bGripperIsClosedWithPart;
|
||||
|
||||
dpOutByte[2].3 := gEGP[2].In.bGripperIsOpen;
|
||||
dpOutByte[2].4 := gEGP[2].In.bGripperIsClosedWithPart;
|
||||
dpOutByte[2].5 := gEGP[2].In.bGripperIsClosed;
|
||||
|
||||
dpOutByte[2].7 := FALSE;
|
||||
|
||||
dpOutByte[3].0 := gbInPartReleased; //Spanner Bauteil offen
|
||||
dpOutByte[3].1 := gCmd1.FlexfeedRobFeed.FlexfeedToRobfeed.bNoPart; //Kein Teil in Feeder
|
||||
dpOutByte[3].2 := gCmd1.Robot.ToRobot.bXHome;
|
||||
dpOutByte[3].3 := gCmd1.Robot.ToRobot.bYHome;
|
||||
dpOutByte[3].4 := gCmd1.Robot.ToRobot.bFinishedPartInDie;
|
||||
dpOutByte[3].5 := gCmd1.Robot.ToRobot.bNewPartInDie;
|
||||
dpOutByte[3].6 := gCmd1.Robot.ToRobot.bFinishedPartInDieNOk;
|
||||
|
||||
|
||||
//Ausgangs Byte 3 (24-31)
|
||||
//Ausgangs Byte 4 (32-39)
|
||||
//Ausgangs Byte 5 (40-47)
|
||||
dpOutByte[5] := lABBRobot.Out.usProgNr;
|
||||
//Ausgangs Byte 6 (48-55)
|
||||
dpOutByte[6] := lProcParam.usPartNr;
|
||||
//Ausgangs Byte 7 (56-63)
|
||||
dpOutByte[7] := gCmd1.FlexfeedRobFeed.FlexfeedToRobfeed.usCalCmd;
|
||||
//Ausgangs Byte 8 (64-71)
|
||||
dpOutByte[8] := gCmd1.FlexfeedRobFeed.FlexfeedToRobfeed.usCalPos;
|
||||
//Ausgangs Byte 9 (72-79)
|
||||
|
||||
//Ausgangs Byte 10 (80-87)
|
||||
//Ausgangs Byte 11 (88-95)
|
||||
dpOutByte[10] := DINT_TO_USINT ((gCmd1.FlexfeedRobFeed.FlexfeedToRobfeed.diPosX / 100) MOD 256);
|
||||
dpOutByte[11] := DINT_TO_USINT (SHR (gCmd1.FlexfeedRobFeed.FlexfeedToRobfeed.diPosX / 100, 8));
|
||||
//Ausgangs Byte 12 (96-103)
|
||||
//Ausgangs Byte 13 (104-111)
|
||||
dpOutByte[12] := DINT_TO_USINT ((gCmd1.FlexfeedRobFeed.FlexfeedToRobfeed.diPosY / 100) MOD 256);
|
||||
dpOutByte[13] := DINT_TO_USINT (SHR (gCmd1.FlexfeedRobFeed.FlexfeedToRobfeed.diPosY / 100, 8));
|
||||
//Ausgangs Byte 14 (112-119)
|
||||
//Ausgangs Byte 15 (120-127)
|
||||
dpOutByte[14] := DINT_TO_USINT ((gCmd1.FlexfeedRobFeed.FlexfeedToRobfeed.diRotC / 100) MOD 256);
|
||||
dpOutByte[15] := DINT_TO_USINT (SHR (gCmd1.FlexfeedRobFeed.FlexfeedToRobfeed.diRotC / 100, 8));
|
||||
|
||||
END_PROGRAM
|
||||
9
Logical/Communication/ABBCom/ABBCom.var
Normal file
9
Logical/Communication/ABBCom/ABBCom.var
Normal file
@@ -0,0 +1,9 @@
|
||||
VAR
|
||||
lABBRobot : REFERENCE TO gtyp_ABBInterface; (*Referenz to ABB Standard Interface*)
|
||||
lProcParam : REFERENCE TO gtyp_ProcParam; (*Parametersatz zum editieren*)
|
||||
dpOutByte : ARRAY[0..15] OF USINT := [16(0)]; (*Raw Output Bytes Abb Interface*)
|
||||
dpInByte : ARRAY[0..15] OF USINT := [16(0)]; (*Raw Input Bytes Abb Interface*)
|
||||
TOF_Reset_EStop : TOF;
|
||||
TON_Motors_On : TON;
|
||||
TON_Lifebeat : TON;
|
||||
END_VAR
|
||||
2
Logical/Communication/ABBCom/ABBComInit.st
Normal file
2
Logical/Communication/ABBCom/ABBComInit.st
Normal file
@@ -0,0 +1,2 @@
|
||||
PROGRAM _INIT
|
||||
END_PROGRAM
|
||||
9
Logical/Communication/ABBCom/IEC.prg
Normal file
9
Logical/Communication/ABBCom/IEC.prg
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.2.7.54 SP?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Implementation code">ABBComInit.st</File>
|
||||
<File Description="Implementation code">ABBCom.st</File>
|
||||
<File Description="Local variables" Private="true">ABBCom.var</File>
|
||||
</Files>
|
||||
</Program>
|
||||
106
Logical/Communication/Cognex/Cognex/Action.st
Normal file
106
Logical/Communication/Cognex/Cognex/Action.st
Normal file
@@ -0,0 +1,106 @@
|
||||
ACTION DoRegisterMachParameter:
|
||||
//Parameter PV in Mp Recipe registrieren
|
||||
MpFUB.MpRecipeRegMachPar.MpLink := ADR (gRecipeMachPar);
|
||||
MpFUB.MpRecipeRegMachPar.Category := ADR ('MachPar');
|
||||
MpFUB.MpRecipeRegMachPar.Enable := TRUE;
|
||||
MpFUB.MpRecipeRegMachPar.PVName := ADR ('Flexfeed:Parameter');
|
||||
MpFUB.MpRecipeRegMachPar ();
|
||||
END_ACTION
|
||||
|
||||
ACTION DoInitMachparameter:
|
||||
//Standard Maschinenparameter Laden
|
||||
//MpAuditCustomEvent (gMpAuditTrail, "Flexfeeder", "", "DefaultParameter");
|
||||
Parameter.sCam_IP := '192.168.1.140';
|
||||
Parameter.sCam_User := 'admin';
|
||||
Parameter.sCam_Pass := '';
|
||||
Parameter.sCam_CalibJob := 'Calibration32l-P';
|
||||
END_ACTION
|
||||
|
||||
|
||||
ACTION DoTimes:
|
||||
//Zeiten berechnen
|
||||
Times.diSteptimeTCP := gdiSystemTime - TimesLatch.diSteptimeTCP;
|
||||
Times.diSteptimeFF := gdiSystemTime - TimesLatch.diSteptimeFF;
|
||||
END_ACTION
|
||||
|
||||
ACTION DoFubs:
|
||||
//Funktionsbausteine aufrufen
|
||||
//===================================================
|
||||
|
||||
//Enables reset
|
||||
IF enStepTCP <> enTCP_Step_Open THEN
|
||||
FUBs.TCP_Open.enable := FALSE;
|
||||
END_IF
|
||||
IF enStepTCP <> enTCP_Step_Connect THEN
|
||||
FUBs.TCP_Client.enable := FALSE;
|
||||
END_IF
|
||||
IF enStepTCP <> enTCP_Step_Connected THEN
|
||||
FUBs.TCP_Send.enable := FALSE;
|
||||
FUBs.TCP_Receive.enable := FALSE;
|
||||
END_IF
|
||||
IF enStepTCP <> enTCP_Step_Close THEN
|
||||
FUBs.TCP_CLose.enable := FALSE;
|
||||
END_IF
|
||||
|
||||
FUBs.TCP_Open ();
|
||||
FUBs.TCP_Client ();
|
||||
FUBs.TCP_CLose ();
|
||||
FUBs.TCP_Send ();
|
||||
FUBs.TCP_Receive ();
|
||||
MpFUB.MpRecipeRegMachPar ();
|
||||
END_ACTION
|
||||
|
||||
ACTION DoResetComAlarms:
|
||||
//Kommunikations Alarme r<EFBFBD>cksetzen
|
||||
//===================================================
|
||||
Alarms.bFFCamUnrecognizedCmd := FALSE;
|
||||
Alarms.bFFCamFilenameMissing := FALSE;
|
||||
Alarms.bFFCamLoadJobFailed := FALSE;
|
||||
Alarms.bFFCamOfflineManual := FALSE;
|
||||
END_ACTION
|
||||
|
||||
|
||||
ACTION DoAlarms:
|
||||
//Alarme erzeugen bzw. r<EFBFBD>cksetzen
|
||||
//===================================================
|
||||
//Unbekannter Befehl
|
||||
IF Alarms.bFFCamUnrecognizedCmd THEN
|
||||
IF (AlarmIDs.udFFCamUnrecognizedCmd = 0) THEN
|
||||
AlarmIDs.udFFCamUnrecognizedCmd := MpAlarmXSet (gMpAlarmXCore, 'CamUnrecognizedCmd');
|
||||
END_IF
|
||||
ELSIF (AlarmIDs.udFFCamUnrecognizedCmd > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udFFCamUnrecognizedCmd);
|
||||
AlarmIDs.udFFCamUnrecognizedCmd := 0;
|
||||
END_IF
|
||||
|
||||
//Laden Dateiname fehlt
|
||||
IF Alarms.bFFCamFilenameMissing THEN
|
||||
IF (AlarmIDs.udFFCamFilenameMissing = 0) THEN
|
||||
AlarmIDs.udFFCamFilenameMissing := MpAlarmXSet (gMpAlarmXCore, 'CamFilenameMissing');
|
||||
END_IF
|
||||
ELSIF (AlarmIDs.udFFCamFilenameMissing > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udFFCamFilenameMissing);
|
||||
AlarmIDs.udFFCamFilenameMissing := 0;
|
||||
END_IF
|
||||
|
||||
//Laden Fehlgeschlagen
|
||||
IF Alarms.bFFCamLoadJobFailed THEN
|
||||
IF (AlarmIDs.udFFCamLoadJobFailed = 0) THEN
|
||||
AlarmIDs.udFFCamLoadJobFailed := MpAlarmXSet (gMpAlarmXCore, 'CamLoadJobFailed');
|
||||
END_IF
|
||||
ELSIF (AlarmIDs.udFFCamLoadJobFailed > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udFFCamLoadJobFailed);
|
||||
AlarmIDs.udFFCamLoadJobFailed := 0;
|
||||
END_IF
|
||||
|
||||
//Kamera ist Offline
|
||||
IF Alarms.bFFCamOfflineManual THEN
|
||||
IF (AlarmIDs.udFFCamOfflineManual = 0) THEN
|
||||
AlarmIDs.udFFCamOfflineManual := MpAlarmXSet (gMpAlarmXCore, 'CamOfflineManual');
|
||||
END_IF
|
||||
ELSIF (AlarmIDs.udFFCamOfflineManual > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udFFCamOfflineManual);
|
||||
AlarmIDs.udFFCamOfflineManual := 0;
|
||||
END_IF
|
||||
|
||||
END_ACTION
|
||||
403
Logical/Communication/Cognex/Cognex/CognexCyclic.st
Normal file
403
Logical/Communication/Cognex/Cognex/CognexCyclic.st
Normal file
@@ -0,0 +1,403 @@
|
||||
|
||||
PROGRAM _CYCLIC
|
||||
//Zeiger auf Interface Stellen (Zyklisch wg. Download)
|
||||
lProcParam ACCESS ADR (gProcParam[gusCurrentParamset].Feeder); //Gleicher Programmname wie bei Flexfeeder Cam verwenden
|
||||
IF (usParamsetLatch <> gusCurrentParamset) THEN
|
||||
bParamSetChanged := TRUE;
|
||||
END_IF
|
||||
//Parametersatz merken
|
||||
usParamsetLatch := gusCurrentParamset;
|
||||
|
||||
//Machinenparameter registrieren in Rezeptverwaltung
|
||||
//==================================================
|
||||
DoRegisterMachParameter;
|
||||
|
||||
//Standardparametersatz laden
|
||||
//==================================================
|
||||
VCButtons.DefaultParameter.usStatus.0 := (gUserRights.Right3_Parameter < mpUSERX_ACCESS_FULL);
|
||||
VCButtons.DefaultParameter.usStatus.1 := (gUserRights.Right3_Parameter < mpUSERX_ACCESS_FULL);
|
||||
IF EDGEPOS (VCButtons.DefaultParameter.bCommand) THEN
|
||||
DoInitMachparameter;
|
||||
END_IF
|
||||
|
||||
VCButtons.ResetCommunications.usStatus.0 := (enStepTCP = enTCP_Step_Close);
|
||||
//Verbindung wiederherstellen
|
||||
IF EDGEPOS (VCButtons.ResetCommunications.bCommand) THEN
|
||||
enStepTCP := enTCP_Step_Close;
|
||||
VCButtons.ResetCommunications.bCommand := FALSE;
|
||||
END_IF
|
||||
|
||||
|
||||
//Zeiten berechnen
|
||||
DoTimes;
|
||||
|
||||
//TCP Schnittstelle
|
||||
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
CASE enStepTCP OF
|
||||
//Socket <EFBFBD>ffnen
|
||||
//---------------------------
|
||||
enTCP_Step_Open:
|
||||
FUBs.TCP_Open.options := tcpOPT_REUSEADDR;
|
||||
FUBs.TCP_Open.pIfAddr := 0; //Optional ADR (str_PLC_IPAdress)
|
||||
FUBs.TCP_Open.port := 0; //Freie Portwahl
|
||||
FUBs.TCP_Open.enable := NOT Status.bDisableConnReq;
|
||||
|
||||
IF FUBs.TCP_Open.status = tcpERR_NOMORE_IDENTS THEN
|
||||
//keine Freien Idents mehr
|
||||
//FixMe Error
|
||||
ELSIF FUBs.TCP_Open.status = tcpERR_ALREADY_EXIST THEN
|
||||
//Socket bereits ge<EFBFBD>ffnet weiter werwenden
|
||||
Status.udSocket := FUBs.TCP_Open.ident;
|
||||
enStepTCP := enTCP_Step_Connect;
|
||||
ELSIF FUBs.TCP_Open.status = tcpERR_SOCKET_CREATE THEN
|
||||
//Socket konnte nicht erstellt werden
|
||||
//FixMe Error
|
||||
ELSIF FUBs.TCP_Open.status = tcpERR_SOCKET_BIND THEN
|
||||
//Binderror
|
||||
//FixMe Error
|
||||
ELSIF FUBs.TCP_Open.status = tcpERR_INTERFACE THEN
|
||||
//Interfacefehler
|
||||
//FixMe Error
|
||||
ELSIF FUBs.TCP_Open.status = tcpERR_SYSTEM THEN
|
||||
//Systemfehler
|
||||
//FixMe Error
|
||||
ELSIF FUBs.TCP_Open.status = ERR_OK THEN
|
||||
Status.udSocket := FUBs.TCP_Open.ident;
|
||||
enStepTCP := enTCP_Step_Connect;
|
||||
END_IF
|
||||
|
||||
//Verbindung aufbauen
|
||||
//---------------------------
|
||||
enTCP_Step_Connect:
|
||||
FUBs.TCP_Client.ident := Status.udSocket;
|
||||
FUBs.TCP_Client.portserv := 23;
|
||||
FUBs.TCP_Client.pServer := ADR (Parameter.sCam_IP);
|
||||
FUBs.TCP_Client.enable := TRUE;
|
||||
|
||||
IF FUBs.TCP_Client.status = tcpERR_INVALID_IDENT THEN
|
||||
//Un<EFBFBD>ltiger Ident
|
||||
enStepTCP := enTCP_Step_Open;
|
||||
//FixMe Error
|
||||
ELSIF FUBs.TCP_Client.status = tcpERR_PARAMETER THEN
|
||||
//Falsche Parameter
|
||||
//FixMe Error
|
||||
ELSIF FUBs.TCP_Client.status = tcpERR_INVALID THEN
|
||||
//Socket ung<EFBFBD>ltig muss getrennt werden
|
||||
enStepTCP := enTCP_Step_Close;
|
||||
ELSIF FUBs.TCP_Client.status = tcpERR_ALREADY_CONNECTED THEN
|
||||
//Verbindung bereits vorhanden schlie<EFBFBD>en
|
||||
enStepTCP := enTCP_Step_Close;
|
||||
ELSIF FUBs.TCP_Client.status = tcpERR_SYSTEM THEN
|
||||
//Systemfehler
|
||||
//FixMe Error
|
||||
ELSIF FUBs.TCP_Client.status = ERR_OK THEN
|
||||
//verbunden
|
||||
enStepTCP := enTCP_Step_Connected;
|
||||
END_IF
|
||||
|
||||
//Verbunden
|
||||
//---------------------------
|
||||
enTCP_Step_Connected:
|
||||
//Empfang ausf<EFBFBD>hren
|
||||
FUBs.TCP_Receive.ident := Status.udSocket;
|
||||
FUBs.TCP_Receive.pData := ADR (sRecv);
|
||||
FUBs.TCP_Receive.datamax := SIZEOF (sRecv);
|
||||
FUBs.TCP_Receive.enable := TRUE;
|
||||
|
||||
IF FUBs.TCP_Receive.status = tcpERR_INVALID_IDENT THEN
|
||||
//Un<EFBFBD>ltiger Ident
|
||||
enStepTCP := enTCP_Step_Open;
|
||||
//FixMe Error
|
||||
ELSIF FUBs.TCP_Receive.status = tcpERR_PARAMETER THEN
|
||||
//Parameterfehler
|
||||
//FixMe Error
|
||||
ELSIF FUBs.TCP_Receive.status = tcpERR_NO_DATA THEN
|
||||
//Keine Daten sp<EFBFBD>ter wiederholen
|
||||
//FixMe Error
|
||||
ELSIF FUBs.TCP_Receive.status = tcpERR_INVALID THEN
|
||||
//Ung<EFBFBD>ltiges Argument
|
||||
//FixMe Error
|
||||
ELSIF FUBs.TCP_Receive.status = tcpERR_NOT_CONNECTED THEN
|
||||
//Verbindung beendet durch Gegenstelle Socket schlie<EFBFBD>en und Verb. neu aufbuen
|
||||
enStepTCP := enTCP_Step_Close;
|
||||
//FixMe Error
|
||||
ELSIF FUBs.TCP_Receive.status = tcpERR_NO_OOBDATA THEN
|
||||
//eine OOB-Daten vorhanden. Applikationsabh<EFBFBD>ngig. Flag tcpMSG_OOB nicht setzen.
|
||||
//FixMe Error
|
||||
ELSIF FUBs.TCP_Receive.status = tcpERR_SYSTEM THEN
|
||||
//Systemfehler
|
||||
//FixMe Error
|
||||
ELSIF FUBs.TCP_Receive.status = ERR_OK THEN
|
||||
//Daten erhalten
|
||||
IF Status.bSendData THEN
|
||||
//fixme
|
||||
END_IF
|
||||
IF Status.bDataReceived THEN
|
||||
//FixMe
|
||||
END_IF
|
||||
Status.bDataReceived := TRUE;
|
||||
sRecvCopy := sRecv;
|
||||
//FixMe Error
|
||||
END_IF
|
||||
|
||||
FUBs.TCP_Send.ident := Status.udSocket;
|
||||
FUBs.TCP_Send.pData := ADR (sSend);
|
||||
FUBs.TCP_Send.datalen := brsstrlen (ADR (sSend));
|
||||
FUBs.TCP_Send.enable := Status.bSendData;
|
||||
|
||||
|
||||
IF FUBs.TCP_Send.status = tcpERR_INVALID_IDENT THEN
|
||||
//Un<EFBFBD>ltiger Ident
|
||||
enStepTCP := enTCP_Step_Open;
|
||||
//FixMe Error
|
||||
ELSIF FUBs.TCP_Send.status = tcpERR_PARAMETER THEN
|
||||
//Parameterfehler
|
||||
//FixMe Error
|
||||
ELSIF FUBs.TCP_Send.status = tcpERR_SENTLEN THEN
|
||||
//Die <EFBFBD>bernommene Datenl<EFBFBD>nge entspricht nicht der angegebenen Datenl<EFBFBD>nge. <EFBFBD>brige Daten nochmals senden.
|
||||
//FixMe Error
|
||||
ELSIF FUBs.TCP_Send.status = tcpERR_WOULDBLOCK THEN
|
||||
//Daten konnten nicht in den Sendepuffer des Sockets <EFBFBD>bernommen werden. Vorgang sp<EFBFBD>ter wiederholen.
|
||||
//FixMe Error
|
||||
ELSIF FUBs.TCP_Send.status = tcpERR_NOT_CONNECTED THEN
|
||||
//Verbindung beendet durch Gegenstelle Socket schlie<EFBFBD>en und Verb. neu aufbuen
|
||||
enStepTCP := enTCP_Step_Close;
|
||||
//FixMe Error
|
||||
ELSIF FUBs.TCP_Send.status = tcpERR_SYSTEM THEN
|
||||
//Systemfehler
|
||||
//FixMe Error
|
||||
ELSIF FUBs.TCP_Send.status = ERR_OK THEN
|
||||
//Daten gesendet
|
||||
Status.bSendData := FALSE;
|
||||
Status.bDataSent := TRUE;
|
||||
//FixMe Error
|
||||
END_IF
|
||||
|
||||
//Trennen
|
||||
//---------------------------
|
||||
enTCP_Step_Close:
|
||||
FUBs.TCP_CLose.ident := Status.udSocket;
|
||||
FUBs.TCP_CLose.enable := TRUE;
|
||||
|
||||
IF FUBs.TCP_CLose.status = ERR_OK THEN
|
||||
Status.bDisableConnReq := FALSE;
|
||||
enStepTCP := enTCP_Step_Open;
|
||||
enStepCam := enCamStep_Offline;
|
||||
END_IF
|
||||
|
||||
END_CASE
|
||||
|
||||
|
||||
|
||||
//Cam Schrittkette
|
||||
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
CASE enStepCam OF
|
||||
//Offline warten auf Userprompt
|
||||
//-----------------------------
|
||||
enCamStep_Offline:
|
||||
IF Status.bDataReceived THEN
|
||||
IF brsstrlen (ADR (sRecv)) > 6 THEN
|
||||
IF brsstrcmp (ADR ('User: '), ADR (sRecv) + brsstrlen (ADR (sRecv)) - 6) = 0 THEN
|
||||
//UserPrompt - Ok
|
||||
TimesLatch.diSteptimeFF := gdiSystemTime;
|
||||
enStepCam := enCamStep_SendUser;
|
||||
ELSE
|
||||
//Fixme
|
||||
END_IF
|
||||
ELSE
|
||||
//Fixme Bad Len
|
||||
END_IF
|
||||
brsmemset (ADR (sRecv), 0, brsstrlen (ADR (sRecv)));
|
||||
Status.bDataReceived := FALSE;
|
||||
END_IF
|
||||
|
||||
|
||||
//User gesendet warten auf Passprompt
|
||||
//-----------------------------
|
||||
enCamStep_SendUser:
|
||||
//User Senden
|
||||
sSend := Parameter.sCam_User;
|
||||
brsstrcat (ADR (sSend), ADR ('$r$n'));
|
||||
Status.bSendData := NOT Status.bDataSent AND (Times.diSteptimeFF > 500000);
|
||||
|
||||
IF Status.bDataReceived THEN
|
||||
IF brsstrcmp (ADR ('Password: '), ADR (sRecv)) = 0 THEN
|
||||
//Passprompt - Ok
|
||||
Status.bDataSent := FALSE;
|
||||
TimesLatch.diSteptimeFF := gdiSystemTime;
|
||||
enStepCam := enCamStep_SendPass;
|
||||
|
||||
ELSE
|
||||
//Fixme
|
||||
END_IF
|
||||
brsmemset (ADR (sRecv), 0, brsstrlen (ADR (sRecv)));
|
||||
Status.bDataReceived := FALSE;
|
||||
ELSIF (Times.diSteptimeFF > 4000000) THEN
|
||||
//Wiederholen
|
||||
Status.bDataSent := FALSE;
|
||||
TimesLatch.diSteptimeFF := gdiSystemTime;
|
||||
END_IF
|
||||
|
||||
|
||||
//Passwort senden
|
||||
//-----------------------------
|
||||
enCamStep_SendPass:
|
||||
sSend := Parameter.sCam_Pass;
|
||||
brsstrcat (ADR (sSend), ADR ('$r$n'));
|
||||
Status.bSendData := NOT Status.bDataSent AND (Times.diSteptimeFF > 500000);
|
||||
|
||||
IF Status.bDataReceived THEN
|
||||
IF brsstrcmp (ADR ('User Logged In$r$n'), ADR (sRecv)) = 0 THEN
|
||||
//User eingeloggt
|
||||
Status.bDataSent := FALSE;
|
||||
TimesLatch.diSteptimeFF := gdiSystemTime;
|
||||
enStepCam := enCamStep_LoggedIn;
|
||||
ELSIF brsstrcmp (ADR ('Invalid Password$r$nUser: '), ADR (sRecv)) = 0 THEN
|
||||
//Pass Flasch User neu Senden
|
||||
Status.bDataSent := FALSE;
|
||||
TimesLatch.diSteptimeFF := gdiSystemTime;
|
||||
enStepCam := enCamStep_SendUser;
|
||||
ELSE
|
||||
//Fixme
|
||||
END_IF
|
||||
brsmemset (ADR (sRecv), 0, brsstrlen (ADR (sRecv)));
|
||||
Status.bDataReceived := FALSE;
|
||||
ELSIF (Times.diSteptimeFF > 4000000) THEN
|
||||
//Wiederholen
|
||||
Status.bDataSent := FALSE;
|
||||
TimesLatch.diSteptimeFF := gdiSystemTime;
|
||||
END_IF
|
||||
|
||||
//Login Ok - f<EFBFBD>r Sp<EFBFBD>te vorbereitet um Jobs zu wechseln
|
||||
//-----------------------------
|
||||
enCamStep_LoggedIn:
|
||||
Status.bDataSent := FALSE;
|
||||
TimesLatch.diSteptimeFF := gdiSystemTime;
|
||||
enStepCam := enCamStep_SetOffline;
|
||||
|
||||
|
||||
//Offline schalten
|
||||
//-----------------------------
|
||||
enCamStep_SetOffline:
|
||||
//Kamera offline schalten
|
||||
sSend := 'SO0$r$n';
|
||||
Status.bSendData := NOT Status.bDataSent;
|
||||
IF Status.bDataReceived THEN
|
||||
IF Status.bSendData THEN
|
||||
//fixme
|
||||
END_IF
|
||||
IF brsstrcmp (ADR ('1$r$n'), ADR (sRecv)) = 0 THEN
|
||||
//Befehl Ok
|
||||
Status.bDataSent := FALSE;
|
||||
DoResetComAlarms;
|
||||
TimesLatch.diSteptimeFF := gdiSystemTime;
|
||||
enStepCam := enCamStep_LoadJob;
|
||||
ELSIF brsstrcmp (ADR ('-5$r$n'), ADR (sRecv)) = 0 THEN
|
||||
//Cam durch Insight Explorer Offline
|
||||
Status.bDataSent := FALSE;
|
||||
Alarms.bFFCamOfflineManual := TRUE;
|
||||
ELSE
|
||||
//Fixme
|
||||
END_IF
|
||||
brsmemset (ADR (sRecv), 0, brsstrlen (ADR (sRecv)));
|
||||
Status.bDataReceived := FALSE;
|
||||
END_IF
|
||||
|
||||
|
||||
//Job laden
|
||||
//-----------------------------
|
||||
enCamStep_LoadJob:
|
||||
sSend := 'LF';
|
||||
//Job aus Parametersatz laden
|
||||
brsstrcat (ADR (sSend), ADR (lProcParam.sPrgName));
|
||||
brsstrcat (ADR (sSend), ADR ('$r$n'));
|
||||
Status.bSendData := NOT Status.bDataSent;
|
||||
|
||||
IF Status.bDataReceived THEN
|
||||
IF brsstrcmp (ADR ('1$r$n'), ADR (sRecv)) = 0 THEN
|
||||
//Befehl Ok
|
||||
DoResetComAlarms;
|
||||
bParamSetChanged := FALSE;
|
||||
Status.bDataSent := FALSE;
|
||||
TimesLatch.diSteptimeFF := gdiSystemTime;
|
||||
enStepCam := enCamStep_SetOnline;
|
||||
ELSIF brsstrcmp (ADR ('0$r$n'), ADR (sRecv)) = 0 THEN
|
||||
//Uncrecocnized Command
|
||||
Alarms.bFFCamUnrecognizedCmd := TRUE;
|
||||
ELSIF brsstrcmp (ADR ('-1$r$n'), ADR (sRecv)) = 0 THEN
|
||||
//Dateiname fehlt
|
||||
Alarms.bFFCamFilenameMissing := TRUE;
|
||||
Status.bDataSent := FALSE;
|
||||
ELSIF brsstrcmp (ADR ('-2$r$n'), ADR (sRecv)) = 0 THEN
|
||||
//Laden fehlgeschlagen
|
||||
Alarms.bFFCamLoadJobFailed := TRUE;
|
||||
Status.bDataSent := FALSE;
|
||||
ELSIF brsstrcmp (ADR ('-5$r$n'), ADR (sRecv)) = 0 THEN
|
||||
//Cam durch Insight Explorer Offline
|
||||
Alarms.bFFCamOfflineManual := TRUE;
|
||||
Status.bDataSent := FALSE;
|
||||
ELSE
|
||||
//Fixme
|
||||
END_IF
|
||||
brsmemset (ADR (sRecv), 0, brsstrlen (ADR (sRecv)));
|
||||
Status.bDataReceived := FALSE;
|
||||
END_IF
|
||||
|
||||
|
||||
//Online schalten
|
||||
//-----------------------------
|
||||
enCamStep_SetOnline:
|
||||
sSend := 'SO1$r$n';
|
||||
Status.bSendData := NOT Status.bDataSent;
|
||||
|
||||
IF Status.bDataReceived THEN
|
||||
IF brsstrcmp (ADR ('1$r$n'), ADR (sRecv)) = 0 THEN
|
||||
//Befehl Ok
|
||||
Status.bDataSent := FALSE;
|
||||
DoResetComAlarms;
|
||||
TimesLatch.diSteptimeFF := gdiSystemTime;
|
||||
enStepCam := enCamStep_WaitInit;
|
||||
ELSIF brsstrcmp (ADR ('-5$r$n'), ADR (sRecv)) = 0 THEN
|
||||
//Cam durch Insight Explorer Offline
|
||||
Alarms.bFFCamOfflineManual := TRUE;
|
||||
Status.bDataSent := FALSE;
|
||||
ELSE
|
||||
//Fixme
|
||||
END_IF
|
||||
brsmemset (ADR (sRecv), 0, brsstrlen (ADR (sRecv)));
|
||||
Status.bDataReceived := FALSE;
|
||||
END_IF
|
||||
|
||||
|
||||
|
||||
//4s Auf Kamerainitialisierung warten
|
||||
//-----------------------------
|
||||
enCamStep_WaitInit:
|
||||
IF (Times.diSteptimeFF > 10000000) THEN
|
||||
TimesLatch.diSteptimeFF := gdiSystemTime;
|
||||
enStepCam := enCamStep_IsOnline;
|
||||
END_IF
|
||||
|
||||
|
||||
|
||||
|
||||
//Feeder is Online
|
||||
//-----------------------------
|
||||
enCamStep_IsOnline:
|
||||
Status.bDataSent := FALSE;
|
||||
TimesLatch.diSteptimeFF := gdiSystemTime;
|
||||
|
||||
|
||||
|
||||
END_CASE
|
||||
|
||||
gCmd1.Cam.FromCam.bCamOnline := ( enStepCam = enCamStep_IsOnline);
|
||||
|
||||
|
||||
//FUBs Aufrufen
|
||||
DoFubs;
|
||||
|
||||
//Alarme
|
||||
DoAlarms;
|
||||
|
||||
END_PROGRAM
|
||||
7
Logical/Communication/Cognex/Cognex/CognexInit.st
Normal file
7
Logical/Communication/Cognex/Cognex/CognexInit.st
Normal file
@@ -0,0 +1,7 @@
|
||||
PROGRAM _INIT
|
||||
Status.bDataSent := FALSE;
|
||||
enStepCam := enCamStep_Offline;
|
||||
enStepTCP := enTCP_Step_Open;
|
||||
|
||||
usParamsetLatch := 0;
|
||||
END_PROGRAM
|
||||
40
Logical/Communication/Cognex/Cognex/FlexFeed.var
Normal file
40
Logical/Communication/Cognex/Cognex/FlexFeed.var
Normal file
@@ -0,0 +1,40 @@
|
||||
(*//Dynamische Variablen*)
|
||||
VAR
|
||||
lProcParam : REFERENCE TO gtyp_PrcParam_Feeder; (*Akutelle Parameter*)
|
||||
END_VAR
|
||||
(*//Lokale Variablen*)
|
||||
VAR
|
||||
bParamSetChanged : BOOL;
|
||||
usParamsetLatch : USINT;
|
||||
sRecv : STRING[80];
|
||||
sRecvCopy : STRING[80];
|
||||
sSend : {REDUND_UNREPLICABLE} STRING[80];
|
||||
sTemp : STRING[3];
|
||||
sDebug1 : {REDUND_UNREPLICABLE} STRING[80];
|
||||
sDebug2 : {REDUND_UNREPLICABLE} STRING[80];
|
||||
END_VAR
|
||||
(*//Processed Communication Structure*)
|
||||
(*//Strukturen*)
|
||||
VAR RETAIN
|
||||
enStepTCP : typ_enTCP; (*Schrittkette*)
|
||||
enStepCam : typ_enCam; (*Schrittkette*)
|
||||
Status : typ_States; (*Statis*)
|
||||
END_VAR
|
||||
VAR
|
||||
Alarms : typ_Alarms;
|
||||
AlarmIDs : typ_AlarmIDs; (*Alarm IDs*)
|
||||
Times : typ_Times;
|
||||
TimesLatch : typ_Times; (*Gespeicherte Systemzeit*)
|
||||
END_VAR
|
||||
VAR RETAIN
|
||||
Parameter : {REDUND_UNREPLICABLE} typ_Parameter; (*Parameter*)
|
||||
END_VAR
|
||||
(*//Funktionsbl<62>cke*)
|
||||
VAR
|
||||
FUBs : typ_FUB; (*Funktionsbausteine*)
|
||||
MpFUB : typ_MpFUB;
|
||||
END_VAR
|
||||
(*//VC*)
|
||||
VAR
|
||||
VCButtons : typ_VCButtons; (*VC - Buttons*)
|
||||
END_VAR
|
||||
11
Logical/Communication/Cognex/Cognex/IEC.prg
Normal file
11
Logical/Communication/Cognex/Cognex/IEC.prg
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.7.3.93 SP?>
|
||||
<Program SubType="IEC" xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Aktionen TBrk-Ctrl">Action.st</File>
|
||||
<File Description="Implementation code">CognexInit.st</File>
|
||||
<File Description="Implementation code">CognexCyclic.st</File>
|
||||
<File Description="Local variables" Private="true">FlexFeed.var</File>
|
||||
<File Description="Local data types" Private="true">Types.typ</File>
|
||||
</Files>
|
||||
</Program>
|
||||
86
Logical/Communication/Cognex/Cognex/Types.typ
Normal file
86
Logical/Communication/Cognex/Cognex/Types.typ
Normal file
@@ -0,0 +1,86 @@
|
||||
(*//I/Os*)
|
||||
(*//Strukturen*)
|
||||
|
||||
TYPE
|
||||
typ_States : STRUCT
|
||||
bDisableConnReq : BOOL; (*Verbindungsaufbau unterbrechen*)
|
||||
bDataReceived : BOOL; (*Daten erhalten*)
|
||||
bSendData : BOOL; (*Daten senden*)
|
||||
bDataSent : BOOL; (*Daten gesendet*)
|
||||
udSocket : UDINT; (*Socket Handle*)
|
||||
END_STRUCT;
|
||||
typ_Times : STRUCT (*Zykluszeiten etc.*)
|
||||
diSteptimeTCP : {REDUND_UNREPLICABLE} DINT; (*[<5B>s]*)
|
||||
diSteptimeFF : {REDUND_UNREPLICABLE} DINT; (*[<5B>s]*)
|
||||
END_STRUCT;
|
||||
typ_Parameter : STRUCT (*Parameter (Feste Parameter Schrauber bezogen)*)
|
||||
sCam_IP : STRING[15] := '192.168.1.141'; (*Kamera IP-Adresse*)
|
||||
sCam_User : STRING[15] := 'admin'; (*Kamera User*)
|
||||
sCam_Pass : STRING[15] := ''; (*Kamea Passwort*)
|
||||
sCam_CalibJob : STRING[25] := 'PartTemplate'; (*Kamea Kalibrierjob*)
|
||||
END_STRUCT;
|
||||
typ_FUB : STRUCT
|
||||
TCP_Open : TcpOpen; (*Socket <20>ffnen*)
|
||||
TCP_Client : TcpClient; (*Verbindung aufbauen*)
|
||||
TCP_CLose : TcpClose; (*Verbindung schlie<69>en*)
|
||||
TCP_Send : TcpSend; (*Senden*)
|
||||
TCP_Receive : TcpRecv; (*Empfangen*)
|
||||
END_STRUCT;
|
||||
typ_MpFUB : STRUCT (*MApp Funktionsbausteine*)
|
||||
MpRecipeRegMachPar : MpRecipeRegPar; (*Maschinenparameter regsiterien*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
|
||||
(*//Schrittketten / Befehle / Bedingungen*)
|
||||
|
||||
TYPE
|
||||
typ_enTCP :
|
||||
( (*Schrittkette*)
|
||||
enTCP_Step_Open := 0, (*Socket <20>ffnen*)
|
||||
enTCP_Step_Connect, (*Client verbindung aufbauen*)
|
||||
enTCP_Step_Connected, (*Verbunden / Senden / Empfangen*)
|
||||
enTCP_Step_Close (*Verbindung schlie<69>en*)
|
||||
);
|
||||
typ_enCam :
|
||||
(
|
||||
enCamStep_Offline, (*Flexfeeder Offline - Warte auf User Prompt - Username Senden*)
|
||||
enCamStep_SendUser, (*Flexfeeder Username senden und warte auf Pass Promt*)
|
||||
enCamStep_SendPass, (*Flexfeeder Passwort gesendet warte auf Loginbest<73>tigung*)
|
||||
enCamStep_LoggedIn, (*Login- Ok (sp<73>ter hier mal unterscheiden*)
|
||||
enCamStep_SetOffline, (*Cam Offline schalten*)
|
||||
enCamStep_LoadJob, (*Job laden*)
|
||||
enCamStep_SetOnline, (*Cam Online Setzen*)
|
||||
enCamStep_WaitInit,
|
||||
enCamStep_IsOnline, (*Login Ok - Job laden (Erst Cam Offline schalten)*)
|
||||
enCamStep_Dummy
|
||||
);
|
||||
END_TYPE
|
||||
|
||||
(*//Alarme*)
|
||||
|
||||
TYPE
|
||||
typ_Alarms : STRUCT (*Alarme*)
|
||||
bFFCamUnrecognizedCmd : BOOL; (*Unbekannter Befehl*)
|
||||
bFFCamFilenameMissing : BOOL; (*Laden Dateinahme Fehlt*)
|
||||
bFFCamLoadJobFailed : BOOL; (*Laden fehlgeschlagen / System Online / Datei nicht gefunden*)
|
||||
bFFCamOfflineManual : BOOL; (*Kamera <20>ber Insight Explorer Offline*)
|
||||
END_STRUCT;
|
||||
typ_AlarmIDs : STRUCT (*Puffer f<>r Alarm IDs*)
|
||||
udFFCamUnrecognizedCmd : UDINT; (*Unbekannter Befehl*)
|
||||
udFFCamFilenameMissing : UDINT; (*Laden Dateinahme Fehlt*)
|
||||
udFFCamLoadJobFailed : UDINT; (*Laden fehlgeschlagen / System Online / Datei nicht gefunden*)
|
||||
udFFCamOfflineManual : UDINT; (*Kamera <20>ber Insight Explorer Offline*)
|
||||
END_STRUCT;
|
||||
typ_AlarmSnippets : STRUCT (*Infos f<>r Alarmtexte*)
|
||||
strDummy : STRING[40]; (*Dummystring*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
|
||||
(*//Visual Components*)
|
||||
|
||||
TYPE
|
||||
typ_VCButtons : STRUCT (*Visual Controls Buttons*)
|
||||
DefaultParameter : gtyp_VCButton; (*Default Parameter Laden*)
|
||||
ResetCommunications : gtyp_VCButton; (*Verbindung abbrechen*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
8
Logical/Communication/Cognex/Package.pkg
Normal file
8
Logical/Communication/Cognex/Package.pkg
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.7.3.93 SP?>
|
||||
<Package xmlns="http://br-automation.co.at/AS/Package">
|
||||
<Objects>
|
||||
<Object Type="Program" Language="IEC" Description="Kommunikation mit EGP Greifer">Cognex</Object>
|
||||
<Object Type="File" Description="Alarme">TxtAlarms.tmx</Object>
|
||||
</Objects>
|
||||
</Package>
|
||||
41
Logical/Communication/Cognex/TxtAlarms.tmx
Normal file
41
Logical/Communication/Cognex/TxtAlarms.tmx
Normal file
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<tmx version="1.4">
|
||||
<header creationtool="B&R Automation Studio" creationtoolversion="4.2" datatype="unknown" segtype="sentence" adminlang="en" srclang="en" o-tmf="TMX">
|
||||
<note>Change the namespace to define where this text module should be located within the logical structure of your texts</note>
|
||||
<prop type="x-BR-TS:Namespace">Cognex/Alarms</prop>
|
||||
</header>
|
||||
<body>
|
||||
<tu tuid="CamUnrecognizedCmd">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Messung: Kamera Unbekannter Befehl</seg>
|
||||
</tuv>
|
||||
<tuv xml:lang="en">
|
||||
<seg>Measurement: Cam Unrecognized Command</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="CamFilenameMissing">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Messung: Kamera Job laden - Dateiname fehlt</seg>
|
||||
</tuv>
|
||||
<tuv xml:lang="en">
|
||||
<seg>Measurement: Cam Load Job - Filename missing</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="CamLoadJobFailed">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Messung: Kamera Job laden fehlgeschlagen (Cam Online / Datei fehlt)</seg>
|
||||
</tuv>
|
||||
<tuv xml:lang="en">
|
||||
<seg>Measurement: Cam Load Job failed (System Online / File missing)</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="CamOfflineManual">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Messung: Kamera Offline durch Insight Explorer</seg>
|
||||
</tuv>
|
||||
<tuv xml:lang="en">
|
||||
<seg>Measurement: Cam Offline by Insight Explorer</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
</body>
|
||||
</tmx>
|
||||
50
Logical/Communication/EGP/EGPCom1/Action.st
Normal file
50
Logical/Communication/EGP/EGPCom1/Action.st
Normal file
@@ -0,0 +1,50 @@
|
||||
ACTION DoTimes:
|
||||
//Zeiten berechnen
|
||||
Times.diSteptime := gdiSystemTime - TimesLatch.diSteptime;
|
||||
END_ACTION
|
||||
|
||||
ACTION DoAlarms:
|
||||
//Alarme erzeugen bzw. r<EFBFBD>cksetzen
|
||||
//===================================================
|
||||
|
||||
//Greifer Fehler
|
||||
IF (EGPIn.usStatus = EGP_STAT_ERROR) AND bEGPSupplyOk THEN
|
||||
IF (AlarmIDs.udEGPError = 0) THEN
|
||||
AlarmIDs.udEGPError := MpAlarmXSet (gMpAlarmXCore, 'EGPError');
|
||||
END_IF
|
||||
ELSIF (EGPIn.usStatus = EGP_STAT_OK) AND (AlarmIDs.udEGPError > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udEGPError);
|
||||
AlarmIDs.udEGPError := 0;
|
||||
END_IF
|
||||
|
||||
//Greifer Wartung Erforderlich
|
||||
IF (EGPIn.usStatus = EGP_STAT_MAINT) THEN
|
||||
IF (AlarmIDs.udEGPMaint = 0) THEN
|
||||
AlarmIDs.udEGPMaint := MpAlarmXSet (gMpAlarmXCore, 'EGPMaint');
|
||||
END_IF
|
||||
ELSIF (EGPIn.usStatus = EGP_STAT_OK) AND (AlarmIDs.udEGPMaint > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udEGPMaint);
|
||||
AlarmIDs.udEGPMaint := 0;
|
||||
END_IF
|
||||
|
||||
//Greifer au<EFBFBD>er Spezifikation
|
||||
IF (EGPIn.usStatus = EGP_STAT_SPEC) THEN
|
||||
IF (AlarmIDs.udEGPSpec = 0) THEN
|
||||
AlarmIDs.udEGPSpec := MpAlarmXSet (gMpAlarmXCore, 'EGPSpec');
|
||||
END_IF
|
||||
ELSIF (EGPIn.usStatus = EGP_STAT_OK) AND (AlarmIDs.udEGPSpec > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udEGPSpec);
|
||||
AlarmIDs.udEGPSpec := 0;
|
||||
END_IF
|
||||
|
||||
IF (EGPIn.usStatus = EGP_STAT_OK) AND NOT EGPIn.bReferenced THEN
|
||||
IF (AlarmIDs.udEGPNotReferenced = 0) THEN
|
||||
AlarmIDs.udEGPNotReferenced := MpAlarmXSet (gMpAlarmXCore, 'EGPNotReferenced');
|
||||
END_IF
|
||||
ELSIF EGPIn.bReferenced AND (AlarmIDs.udEGPNotReferenced > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udEGPNotReferenced);
|
||||
AlarmIDs.udEGPNotReferenced := 0;
|
||||
END_IF
|
||||
|
||||
|
||||
END_ACTION
|
||||
383
Logical/Communication/EGP/EGPCom1/EGPCom.st
Normal file
383
Logical/Communication/EGP/EGPCom1/EGPCom.st
Normal file
@@ -0,0 +1,383 @@
|
||||
|
||||
PROGRAM _CYCLIC
|
||||
//Zeiger auf Interface Stellen (Zyklisch wg. Download)
|
||||
lEGPIf ACCESS ADR (gEGP[usGripper]);
|
||||
|
||||
//FixMe Parameter
|
||||
Parameter.bGripDirection := TRUE; //False: Au<EFBFBD>engreifen, True := Innengreifen
|
||||
|
||||
|
||||
//FixMe Error nur wenn ESTOP Ok
|
||||
bEGPSupplyOk := gbSOuSafetyOk; //FixMe
|
||||
//Kraft
|
||||
lEGPIf.Out.usForce := 0; //100%
|
||||
|
||||
EGPIn.usStatus := dpInByte[0] AND 2#0000_0111;
|
||||
EGPIn.bReferenced := dpInByte[0].3;
|
||||
EGPIn.bSuccess := dpInByte[0].4;
|
||||
EGPIn.bLimit := dpInByte[0].5;
|
||||
EGPIn.bBlocked := dpInByte[0].6;
|
||||
EGPIn.bProcessCmd := dpInByte[0].7;
|
||||
|
||||
EGPIn.bPart[1] := dpInByte[1].0;
|
||||
EGPIn.bPart[2] := dpInByte[1].1;
|
||||
EGPIn.bPart[3] := dpInByte[1].2;
|
||||
EGPIn.bPart[4] := dpInByte[1].3;
|
||||
EGPIn.bPart[5] := dpInByte[1].4;
|
||||
EGPIn.bPart[6] := dpInByte[1].5;
|
||||
EGPIn.bPart[7] := dpInByte[1].6;
|
||||
EGPIn.bPart[8] := dpInByte[1].7;
|
||||
|
||||
EGPIn.bSensorSwitch1 := dpInByte[2].0;
|
||||
EGPIn.bSensorSwitch2 := dpInByte[2].1;
|
||||
//Position wird direkt eingelesen
|
||||
|
||||
//Zeiten berechnen
|
||||
DoTimes;
|
||||
|
||||
//Stati
|
||||
lEGPIf.In.bGripperIsOpen := EGPIn.rPosition <= 0.25;
|
||||
lEGPIf.In.bGripperIsClosed := EGPIn.rPosition > 6.0; //Max Geshlossen
|
||||
lEGPIf.In.bGripperIsClosedWithPart := FC_InTolerance (EGPIn.rPosition, Status.rPosClosed, -0.25, 0.25);
|
||||
//IF lEGPIf.In.bGripperIsOpen THEN
|
||||
// lEGPIf.In.bGripperIsClosed := FALSE;
|
||||
// lEGPIf.In.bGripperIsClosedWithPart := FALSE;
|
||||
//END_IF
|
||||
|
||||
IF EGPIn.bProcessCmd THEN
|
||||
bCmdSent := TRUE;
|
||||
END_IF
|
||||
|
||||
//Automatik Schrittkette
|
||||
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
CASE enStepEGP OF
|
||||
//Initial Schritt
|
||||
//---------------------------
|
||||
enEGP_Step_INIT:
|
||||
EGPOu.bExecuteCmd := FALSE;
|
||||
|
||||
|
||||
IF (EGPIn.usStatus = EGP_STAT_OK) AND NOT EGPIn.bProcessCmd THEN
|
||||
IF (lEGPIf.Out.bReference OR NOT EGPIn.bReferenced) AND bEGPSupplyOk THEN
|
||||
Times.diSteptime := gdiSystemTime;
|
||||
enStepEGP := enEGP_Step_REF;
|
||||
bCmdSent := FALSE;
|
||||
ELSIF lEGPIf.Out.bMeasure AND bEGPSupplyOk THEN
|
||||
enStepEGP := enEGB_Step_MEAS;
|
||||
bCmdSent := FALSE;
|
||||
ELSIF lEGPIf.Out.bOpen AND bEGPSupplyOk THEN
|
||||
enStepEGP := enEGP_Step_OPEN;
|
||||
bCmdSent := FALSE;
|
||||
ELSIF lEGPIf.Out.bClose AND bEGPSupplyOk THEN
|
||||
enStepEGP := enEGP_Step_CLOSE;
|
||||
bCmdSent := FALSE;
|
||||
ELSIF lEGPIf.Out.bPosition AND bEGPSupplyOk THEN
|
||||
enStepEGP := enEGP_Step_POS;
|
||||
bCmdSent := FALSE;
|
||||
ELSIF lEGPIf.Out.bIncremental AND bEGPSupplyOk THEN
|
||||
enStepEGP := enEGP_Step_INC;
|
||||
bCmdSent := FALSE;
|
||||
END_IF
|
||||
ELSIF bEGPSupplyOk THEN
|
||||
//Fehler Autoreset FixMe
|
||||
//IF lEGPIf.Out.bReset THEN
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
enStepEGP := enEGP_Step_RESET;
|
||||
//END_IF
|
||||
END_IF
|
||||
|
||||
//Fehler quittiern
|
||||
//---------------------------
|
||||
enEGP_Step_RESET:
|
||||
EGPOu.usCommand := EGP_CMD_RESET;
|
||||
EGPOu.bExecuteCmd := NOT bCmdSent;
|
||||
IF (Times.diSteptime > 3000000) THEN
|
||||
bCmdSent := FALSE;
|
||||
EGPOu.bExecuteCmd := FALSE;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
END_IF
|
||||
|
||||
IF EGPIn.bProcessCmd THEN
|
||||
IF (EGPIn.usStatus <> 0) THEN
|
||||
//Quittieren Ok
|
||||
END_IF
|
||||
EGPOu.bExecuteCmd := FALSE;
|
||||
enStepEGP := enEGP_Step_INIT;
|
||||
bCmdSent := FALSE;
|
||||
END_IF
|
||||
|
||||
//Greifer Referenzieren (Richtung von Parameter in I/O Abh<EFBFBD>gnig)
|
||||
//---------------------------
|
||||
enEGP_Step_REF:
|
||||
IF (Times.diSteptime > 3000000) THEN
|
||||
bCmdSent := FALSE;
|
||||
EGPOu.bExecuteCmd := FALSE;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
END_IF
|
||||
EGPOu.usCommand := EGP_CMD_REF;
|
||||
EGPOu.bExecuteCmd := NOT bCmdSent;
|
||||
|
||||
IF bCmdSent AND NOT EGPIn.bProcessCmd THEN
|
||||
//Befehl Best<EFBFBD>tigt warten auf Ergebnis
|
||||
Status.bReferenceOk := FALSE;
|
||||
Status.bReferenceNOk := FALSE;
|
||||
IF EGPIn.bBlocked AND EGPIn.bLimit AND EGPIn.bSuccess AND EGPIn.bReferenced AND (EGPIn.usStatus <> 0) THEN
|
||||
//Referenzieren Ok
|
||||
Status.bReferenceOk := TRUE;
|
||||
ELSIF EGPIn.bBlocked AND NOT EGPIn.bLimit AND NOT EGPIn.bSuccess AND NOT EGPIn.bReferenced THEN
|
||||
//Referenzieren NOk
|
||||
Status.bReferenceOk := TRUE;
|
||||
END_IF
|
||||
Status.rPosClosed := 9; //FixME
|
||||
IF Status.bReferenceOk OR Status.bReferenceNOk THEN
|
||||
EGPOu.bExecuteCmd := FALSE;
|
||||
enStepEGP := enEGP_Step_INIT;
|
||||
lEGPIf.Out.bReference := FALSE;
|
||||
bCmdSent := FALSE;
|
||||
ELSIF NOT (EGPIn.usStatus = EGP_STAT_OK) AND bEGPSupplyOk THEN
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
enStepEGP := enEGP_Step_RESET;
|
||||
bCmdSent := FALSE;
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
//Greifer Hubmessung (max. Schie<EFBFBD>pos.)
|
||||
//---------------------------
|
||||
enEGB_Step_MEAS:
|
||||
EGPOu.usCommand := EGP_CMD_MEASURE;
|
||||
EGPOu.bExecuteCmd := NOT bCmdSent;
|
||||
|
||||
IF bCmdSent AND NOT EGPIn.bProcessCmd THEN
|
||||
//Befehl Best<EFBFBD>tigt warten auf Ergebnis
|
||||
Status.bMeasuereOk := FALSE;
|
||||
Status.bMeasureNOk := FALSE;
|
||||
IF EGPIn.bBlocked AND EGPIn.bLimit AND EGPIn.bSuccess AND EGPIn.bReferenced AND (EGPIn.usStatus <> 0) THEN
|
||||
//Hubmessung Ok
|
||||
Status.bMeasuereOk := TRUE;
|
||||
ELSIF NOT EGPIn.bBlocked AND NOT EGPIn.bSuccess AND EGPIn.bReferenced THEN
|
||||
//Hubmessung NOk
|
||||
Status.bMeasureNOk := TRUE;
|
||||
END_IF
|
||||
|
||||
IF Status.bMeasuereOk OR Status.bMeasureNOk THEN
|
||||
EGPOu.bExecuteCmd := FALSE;
|
||||
enStepEGP := enEGP_Step_INIT;
|
||||
lEGPIf.Out.bMeasure := FALSE;
|
||||
bCmdSent := FALSE;
|
||||
ELSIF NOT (EGPIn.usStatus = EGP_STAT_OK) AND bEGPSupplyOk THEN
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
enStepEGP := enEGP_Step_RESET;
|
||||
bCmdSent := FALSE;
|
||||
ELSIF NOT EGPIn.bReferenced AND bEGPSupplyOk THEN
|
||||
Times.diSteptime := gdiSystemTime;
|
||||
enStepEGP := enEGP_Step_REF;
|
||||
bCmdSent := FALSE;
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
//Greifer <EFBFBD>ffnen
|
||||
//---------------------------
|
||||
|
||||
enEGP_Step_OPEN:
|
||||
IF (Times.diSteptime > 3000000) THEN
|
||||
bCmdSent := FALSE;
|
||||
EGPOu.bExecuteCmd := FALSE;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
END_IF
|
||||
EGPOu.usCommand := EGP_CMD_OPEN;
|
||||
EGPOu.rSetPositon := 0.0;
|
||||
EGPOu.bExecuteCmd := NOT bCmdSent;
|
||||
|
||||
IF bCmdSent AND NOT EGPIn.bProcessCmd THEN
|
||||
//Befehl Best<EFBFBD>tigt warten auf Ergebnis
|
||||
Status.bOpenOk := FALSE;
|
||||
Status.bOpenNOk := FALSE;
|
||||
IF EGPIn.bBlocked AND EGPIn.bLimit AND EGPIn.bSuccess AND EGPIn.bReferenced AND (EGPIn.usStatus <> 0) THEN
|
||||
//<EFBFBD>ffnen Ok
|
||||
Status.bOpenOk := TRUE;
|
||||
Status.rPosClosed := 9; //FixME
|
||||
ELSIF EGPIn.bBlocked AND NOT EGPIn.bLimit AND NOT EGPIn.bSuccess AND EGPIn.bReferenced THEN
|
||||
//<EFBFBD>ffnen NOk
|
||||
Status.bOpenNOk := TRUE;
|
||||
Status.rPosClosed := 9; //FixME
|
||||
END_IF
|
||||
|
||||
IF Status.bOpenOk OR Status.bOpenNOk THEN
|
||||
EGPOu.bExecuteCmd := FALSE;
|
||||
enStepEGP := enEGP_Step_INIT;
|
||||
lEGPIf.Out.bOpen := FALSE;
|
||||
bCmdSent := FALSE;
|
||||
ELSIF NOT (EGPIn.usStatus = EGP_STAT_OK) AND bEGPSupplyOk THEN
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
enStepEGP := enEGP_Step_RESET;
|
||||
bCmdSent := FALSE;
|
||||
ELSIF NOT EGPIn.bReferenced AND bEGPSupplyOk THEN
|
||||
Times.diSteptime := gdiSystemTime;
|
||||
enStepEGP := enEGP_Step_REF;
|
||||
bCmdSent := FALSE;
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
//Greifer Schlie<EFBFBD>en
|
||||
//Optional Werkst<EFBFBD>ckangabe (bei Auswertung noch zu implementieren)
|
||||
//---------------------------
|
||||
enEGP_Step_CLOSE:
|
||||
IF (Times.diSteptime > 3000000) THEN
|
||||
bCmdSent := FALSE;
|
||||
EGPOu.bExecuteCmd := FALSE;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
END_IF
|
||||
EGPOu.usCommand := EGP_CMD_CLOSE;
|
||||
EGPOu.rSetPositon := 0.0;
|
||||
EGPOu.bExecuteCmd := NOT bCmdSent;
|
||||
EGPOu.usPartNr := 0;
|
||||
|
||||
IF bCmdSent AND NOT EGPIn.bProcessCmd THEN
|
||||
//Befehl Best<EFBFBD>tigt warten auf Ergebnis
|
||||
Status.bCloseOk := FALSE;
|
||||
Status.bCloseNOk := FALSE;
|
||||
IF EGPIn.bBlocked AND NOT EGPIn.bLimit AND EGPIn.bSuccess AND EGPIn.bReferenced AND (EGPIn.usStatus <> 0) THEN
|
||||
//Schlie<EFBFBD>en Ok
|
||||
Status.bCloseOk := TRUE;
|
||||
Status.rPosClosed := EGPIn.rPosition;
|
||||
//lEGPIf.In.bGripperIsClosedWithPart := TRUE;
|
||||
ELSIF EGPIn.bBlocked AND EGPIn.bLimit AND NOT EGPIn.bSuccess AND EGPIn.bReferenced THEN
|
||||
//Schlie<EFBFBD>en NOk
|
||||
Status.bCloseNOk := TRUE;
|
||||
Status.rPosClosed := EGPIn.rPosition;
|
||||
//lEGPIf.In.bGripperIsClosed := TRUE;
|
||||
END_IF
|
||||
|
||||
IF Status.bCloseOk OR Status.bCloseNOk THEN
|
||||
EGPOu.bExecuteCmd := FALSE;
|
||||
enStepEGP := enEGP_Step_INIT;
|
||||
lEGPIf.Out.bClose := FALSE;
|
||||
bCmdSent := FALSE;
|
||||
ELSIF NOT (EGPIn.usStatus = EGP_STAT_OK) AND bEGPSupplyOk THEN
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
enStepEGP := enEGP_Step_RESET;
|
||||
bCmdSent := FALSE;
|
||||
ELSIF NOT EGPIn.bReferenced AND bEGPSupplyOk THEN
|
||||
Times.diSteptime := gdiSystemTime;
|
||||
enStepEGP := enEGP_Step_REF;
|
||||
bCmdSent := FALSE;
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
|
||||
//Greifer Positionieren
|
||||
//---------------------------
|
||||
enEGP_Step_POS:
|
||||
IF (Times.diSteptime > 3000000) THEN
|
||||
bCmdSent := FALSE;
|
||||
EGPOu.bExecuteCmd := FALSE;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
END_IF
|
||||
EGPOu.usCommand := EGP_CMD_POS;
|
||||
EGPOu.rSetPositon := lEGPIf.Out.rPosition;
|
||||
EGPOu.bExecuteCmd := NOT bCmdSent;
|
||||
|
||||
IF bCmdSent AND NOT EGPIn.bProcessCmd THEN
|
||||
Status.bPosOk := FALSE;
|
||||
Status.bPosNOk := FALSE;
|
||||
IF NOT EGPIn.bBlocked AND NOT EGPIn.bLimit AND EGPIn.bSuccess AND EGPIn.bReferenced AND (EGPIn.usStatus <> 0) THEN
|
||||
//FixMe Pos Toleranz pr<EFBFBD>fen
|
||||
//Schlie<EFBFBD>en Ok
|
||||
Status.bPosOk := TRUE;
|
||||
ELSIF NOT EGPIn.bBlocked AND NOT EGPIn.bSuccess AND EGPIn.bReferenced THEN
|
||||
//Schlie<EFBFBD>en NOk
|
||||
Status.bPosNOk := TRUE;
|
||||
END_IF
|
||||
|
||||
IF Status.bPosOk OR Status.bPosNOk THEN
|
||||
EGPOu.bExecuteCmd := FALSE;
|
||||
enStepEGP := enEGP_Step_INIT;
|
||||
lEGPIf.Out.bPosition := FALSE;
|
||||
bCmdSent := FALSE;
|
||||
ELSIF NOT (EGPIn.usStatus = EGP_STAT_OK) AND bEGPSupplyOk THEN
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
enStepEGP := enEGP_Step_RESET;
|
||||
bCmdSent := FALSE;
|
||||
ELSIF NOT EGPIn.bReferenced AND bEGPSupplyOk THEN
|
||||
Times.diSteptime := gdiSystemTime;
|
||||
enStepEGP := enEGP_Step_REF;
|
||||
bCmdSent := FALSE;
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
//Greifer Relativfahrt
|
||||
//---------------------------
|
||||
enEGP_Step_INC:
|
||||
IF (Times.diSteptime > 3000000) THEN
|
||||
bCmdSent := FALSE;
|
||||
EGPOu.bExecuteCmd := FALSE;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
END_IF
|
||||
EGPOu.usCommand := EGP_CMD_INC;
|
||||
EGPOu.rSetPositon := lEGPIf.Out.rPosition;
|
||||
EGPOu.bExecuteCmd := NOT bCmdSent;
|
||||
|
||||
IF bCmdSent AND NOT EGPIn.bProcessCmd THEN
|
||||
//Befehl Best<EFBFBD>tigt warten auf Ergebnis
|
||||
Status.bIncOk := FALSE;
|
||||
Status.bIncNOk := FALSE;
|
||||
IF NOT EGPIn.bBlocked AND NOT EGPIn.bLimit AND EGPIn.bSuccess AND EGPIn.bReferenced AND (EGPIn.usStatus <> 0) THEN
|
||||
//FixMe Pos Toleranz pr<EFBFBD>fen
|
||||
//Schlie<EFBFBD>en Ok
|
||||
Status.bIncOk := TRUE;
|
||||
ELSIF NOT EGPIn.bBlocked AND NOT EGPIn.bSuccess AND EGPIn.bReferenced THEN
|
||||
//Schlie<EFBFBD>en NOk
|
||||
Status.bIncNOk := TRUE;
|
||||
END_IF
|
||||
|
||||
IF Status.bCloseOk OR Status.bCloseNOk THEN
|
||||
EGPOu.bExecuteCmd := FALSE;
|
||||
enStepEGP := enEGP_Step_INIT;
|
||||
lEGPIf.Out.bIncremental := FALSE;
|
||||
bCmdSent := FALSE;
|
||||
ELSIF NOT (EGPIn.usStatus = EGP_STAT_OK) AND bEGPSupplyOk THEN
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
enStepEGP := enEGP_Step_RESET;
|
||||
bCmdSent := FALSE;
|
||||
ELSIF NOT EGPIn.bReferenced AND bEGPSupplyOk THEN
|
||||
Times.diSteptime := gdiSystemTime;
|
||||
enStepEGP := enEGP_Step_REF;
|
||||
bCmdSent := FALSE;
|
||||
END_IF
|
||||
END_IF
|
||||
END_CASE
|
||||
|
||||
|
||||
//Greifer ansteuern
|
||||
EGPOu.usForce := lEGPIf.Out.usForce; //0 : 100%, 1 : 75%, 2 : 50%, 3 : 25%
|
||||
EGPOu.bGripDirection := Parameter.bGripDirection; //Force Aussengreifen
|
||||
|
||||
|
||||
//Ausgangswerte Schreiben
|
||||
//=================================
|
||||
//Byte 0 Befehl
|
||||
dpOutByte[0] := EGPOu.usCommand;
|
||||
dpOutByte[0].7 := EGPOu.bExecuteCmd;
|
||||
|
||||
//Byte 1 Werks<EFBFBD>ck und Greifrichtung
|
||||
//Werkst<EFBFBD>cknr
|
||||
dpOutByte[1].4 := EGPOu.usPartNr.0;
|
||||
dpOutByte[1].5 := EGPOu.usPartNr.1;
|
||||
dpOutByte[1].6 := EGPOu.usPartNr.2;
|
||||
dpOutByte[1].7 := EGPOu.usPartNr.3;
|
||||
//Greifrichtung
|
||||
dpOutByte[1].0 := EGPOu.bGripDirection;
|
||||
|
||||
//Byte 2 Greifkraft
|
||||
dpOutByte[2].0 := EGPOu.usForce.0;
|
||||
dpOutByte[2].1 := EGPOu.usForce.1;
|
||||
dpOutByte[2].2 := EGPOu.usForce.2;
|
||||
|
||||
//Byte 3 Reserviert
|
||||
//Byte 4-7 Position wird direkt ausgegeben
|
||||
|
||||
|
||||
//Alarme
|
||||
DoAlarms;
|
||||
|
||||
END_PROGRAM
|
||||
54
Logical/Communication/EGP/EGPCom1/EGPCom.var
Normal file
54
Logical/Communication/EGP/EGPCom1/EGPCom.var
Normal file
@@ -0,0 +1,54 @@
|
||||
(*//Raw In/Out*)
|
||||
VAR
|
||||
dpOutByte : ARRAY[0..3] OF USINT := [4(0)]; (*Raw Output Bytes EGP Interface*)
|
||||
dpInByte : ARRAY[0..3] OF USINT := [4(0)]; (*Raw Input Bytes EGP Interface*)
|
||||
END_VAR
|
||||
(*//MAschineninterface f. Greifer*)
|
||||
VAR
|
||||
lEGPIf : REFERENCE TO gtyp_EGP;
|
||||
END_VAR
|
||||
(*//Lokale Variablen*)
|
||||
VAR
|
||||
bCmdSent : BOOL;
|
||||
bEGPSupplyOk : BOOL; (*EGP wird mit Spannung versorgt*)
|
||||
END_VAR
|
||||
VAR RETAIN
|
||||
usGripper : USINT; (*Greifernummer*)
|
||||
END_VAR
|
||||
(*//Processed Communication Structure*)
|
||||
VAR
|
||||
EGPOu : typ_EGPOu; (*EGP Steuerwort*)
|
||||
EGPIn : typ_EGPIn; (*EGP Statuswort*)
|
||||
END_VAR
|
||||
(*//Befehle EGP Greifer*)
|
||||
VAR CONSTANT
|
||||
EGP_CMD_FASTSTOP : USINT := 0; (*EGP Befehl Schnellstopp*)
|
||||
EGP_CMD_RESET : USINT := 1; (*EGP Befehl St<53>rung quittieren*)
|
||||
EGP_CMD_REF : USINT := 2; (*EGP Befehl Referenzieren*)
|
||||
EGP_CMD_OPEN : USINT := 3; (*EGP Befehl <20>ffnen*)
|
||||
EGP_CMD_CLOSE : USINT := 4; (*EGP Befehl Greifen mit Werkstp<74>ckangabe*)
|
||||
EGP_CMD_POS : USINT := 5; (*EGP Befehl Positionsfahrt*)
|
||||
EGP_CMD_INC : USINT := 6; (*EGP Befehl Relativfahrt*)
|
||||
EGP_CMD_MEASURE : USINT := 7; (*EGP Befehl Hubmessung*)
|
||||
EGP_CMD_STOP : USINT := 8; (*EGP Befehl Stop*)
|
||||
EGP_CMD_CALIBRATE : USINT := 9; (*EGP Befehl Kalibrieren*)
|
||||
END_VAR
|
||||
(*//Stati EGP Greifer*)
|
||||
VAR CONSTANT
|
||||
EGP_STAT_ERROR : USINT := 0; (*EGP St<53>rung*)
|
||||
EGP_STAT_SPEC : USINT := 1; (*EGP Au<41>erhalb Spezifikation*)
|
||||
EGP_STAT_MAINT : USINT := 2; (*EGP Wartung erforderlich*)
|
||||
EGP_STAT_OK : USINT := 3; (*EGP Betriebsbereit*)
|
||||
END_VAR
|
||||
(*//Strukturen*)
|
||||
VAR
|
||||
enStepEGP : typ_enStepEGP; (*Schrittkette*)
|
||||
Status : typ_States; (*Statis*)
|
||||
AlarmIDs : typ_AlarmIDs; (*Alarm IDs*)
|
||||
Times : typ_Times;
|
||||
TimesLatch : typ_Times; (*Gespeicherte Systemzeit*)
|
||||
END_VAR
|
||||
VAR RETAIN
|
||||
Parameter : {REDUND_UNREPLICABLE} typ_Parameter; (*Parameter*)
|
||||
END_VAR
|
||||
(*Insert your comment here.*)
|
||||
3
Logical/Communication/EGP/EGPCom1/EGPComInit.st
Normal file
3
Logical/Communication/EGP/EGPCom1/EGPComInit.st
Normal file
@@ -0,0 +1,3 @@
|
||||
PROGRAM _INIT
|
||||
usGripper := 1;
|
||||
END_PROGRAM
|
||||
11
Logical/Communication/EGP/EGPCom1/IEC.prg
Normal file
11
Logical/Communication/EGP/EGPCom1/IEC.prg
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.4.8.122 SP?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Aktionen">Action.st</File>
|
||||
<File Description="Init Greifer 1">EGPComInit.st</File>
|
||||
<File Description="Implementation code">EGPCom.st</File>
|
||||
<File Description="Local variables" Private="true">EGPCom.var</File>
|
||||
<File Description="Local data types" Private="true">Types.typ</File>
|
||||
</Files>
|
||||
</Program>
|
||||
80
Logical/Communication/EGP/EGPCom1/Types.typ
Normal file
80
Logical/Communication/EGP/EGPCom1/Types.typ
Normal file
@@ -0,0 +1,80 @@
|
||||
(*//I/Os*)
|
||||
|
||||
TYPE
|
||||
typ_EGPIn : STRUCT (*EGP Eingangsdaten (Status)*)
|
||||
usStatus : USINT; (*0.0 - 0.2 Status*)
|
||||
bReferenced : BOOL; (*0.3 Referenziert*)
|
||||
bSuccess : BOOL; (*0.4 Erfolg*)
|
||||
bLimit : BOOL; (*0.5 Endanschlag*)
|
||||
bBlocked : BOOL; (*0.6 Blockiert*)
|
||||
bProcessCmd : BOOL; (*0.7 Prozessbefehl*)
|
||||
bPart : ARRAY[1..8]OF BOOL; (*1.0 - 1.7 Werkst<73>cknummer*)
|
||||
bSensorSwitch1 : USINT; (*3.0 Sensorschalter 1*)
|
||||
bSensorSwitch2 : USINT; (*3.1 Sensorschalter 2*)
|
||||
rPosition : REAL; (*4.0 - 7.7 Position*)
|
||||
END_STRUCT;
|
||||
typ_EGPOu : STRUCT (*EGP Ausgangsdaten (Steuer)*)
|
||||
usCommand : USINT; (*0.0 - 0.6 Befehl*)
|
||||
bExecuteCmd : BOOL; (*0.7 Ausf<73>hrbefehl*)
|
||||
bGripDirection : BOOL; (*1.0 Greifrichtung*)
|
||||
usPartNr : USINT; (*1.4 - 1.7 Werkst<73>cknummer*)
|
||||
usForce : USINT; (*2.0- 2.2 Greifkraft*)
|
||||
rSetPositon : REAL; (*4.0 - 7.7 Zielposition*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
|
||||
(*//Strukturen*)
|
||||
|
||||
TYPE
|
||||
typ_States : STRUCT
|
||||
bReferenceOk : BOOL;
|
||||
bReferenceNOk : BOOL;
|
||||
bMeasuereOk : BOOL;
|
||||
bMeasureNOk : BOOL;
|
||||
bCloseOk : BOOL;
|
||||
bCloseNOk : BOOL;
|
||||
bOpenOk : BOOL;
|
||||
bOpenNOk : BOOL;
|
||||
bPosOk : BOOL;
|
||||
bPosNOk : BOOL;
|
||||
bIncOk : BOOL;
|
||||
bIncNOk : BOOL;
|
||||
rPosClosed : REAL;
|
||||
END_STRUCT;
|
||||
typ_Times : STRUCT (*Zykluszeiten etc.*)
|
||||
diSteptime : {REDUND_UNREPLICABLE} DINT; (*[<5B>s]*)
|
||||
END_STRUCT;
|
||||
typ_Parameter : STRUCT (*Parameter (Feste Parameter)*)
|
||||
bGripDirection : BOOL; (*1: Innengreifen / 0: Aussengreifen*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
|
||||
(*//Schrittketten / Befehle / Bedingungen*)
|
||||
|
||||
TYPE
|
||||
typ_enStepEGP :
|
||||
( (*Schrittkette*)
|
||||
enEGP_Step_INIT := 0, (*Initstep*)
|
||||
enEGP_Step_RESET, (*Fehler quittieren*)
|
||||
enEGP_Step_REF, (*Referenzieren (max. <20>ffnung)*)
|
||||
enEGB_Step_MEAS, (*Hubmessung (max. Schlie<69>en)*)
|
||||
enEGP_Step_OPEN, (*<2A>ffnen*)
|
||||
enEGP_Step_CLOSE, (*Schliesen*)
|
||||
enEGP_Step_POS, (*Positionieren*)
|
||||
enEGP_Step_INC (*Relativfahrt*)
|
||||
);
|
||||
END_TYPE
|
||||
|
||||
(*//Alarme*)
|
||||
|
||||
TYPE
|
||||
typ_AlarmIDs : STRUCT (*Puffer f<>r Alarm IDs*)
|
||||
udEGPError : UDINT; (*Fehler EGP Greifer*)
|
||||
udEGPMaint : UDINT; (*Wartung EGP Erforderlich*)
|
||||
udEGPSpec : UDINT; (*EGP au<61>er Spezifikation*)
|
||||
udEGPNotReferenced : UDINT; (*EGP nicht Referenziert*)
|
||||
END_STRUCT;
|
||||
typ_AlarmSnippets : STRUCT (*Infos f<>r Alarmtexte*)
|
||||
strDummy : STRING[40]; (*Dummystring*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
3
Logical/Communication/EGP/EGPCom2/EGPComInit.st
Normal file
3
Logical/Communication/EGP/EGPCom2/EGPComInit.st
Normal file
@@ -0,0 +1,3 @@
|
||||
PROGRAM _INIT
|
||||
usGripper := 2;
|
||||
END_PROGRAM
|
||||
11
Logical/Communication/EGP/EGPCom2/IEC.prg
Normal file
11
Logical/Communication/EGP/EGPCom2/IEC.prg
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.4.8.122 SP?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Aktionen" Reference="true">\Logical\Communication\EGP\EGPCom1\Action.st</File>
|
||||
<File Description="Init Greifer 2">EGPComInit.st</File>
|
||||
<File Description="Implementation code" Reference="true">\Logical\Communication\EGP\EGPCom1\EGPCom.st</File>
|
||||
<File Description="Local variables" Private="true" Reference="true">\Logical\Communication\EGP\EGPCom1\EGPCom.var</File>
|
||||
<File Description="Local data types" Private="true" Reference="true">\Logical\Communication\EGP\EGPCom1\Types.typ</File>
|
||||
</Files>
|
||||
</Program>
|
||||
23
Logical/Communication/EGP/GlobalEGP.typ
Normal file
23
Logical/Communication/EGP/GlobalEGP.typ
Normal file
@@ -0,0 +1,23 @@
|
||||
(*//Interface EGP_Greifer*)
|
||||
|
||||
TYPE
|
||||
gtyp_EGP : STRUCT
|
||||
In : gtyp_EGP_In;
|
||||
Out : gtyp_EGP_Out; (*Befehle an Greifer*)
|
||||
END_STRUCT;
|
||||
gtyp_EGP_Out : STRUCT
|
||||
bReference : BOOL; (*Referenzieren (Max. <20>ffnung)*)
|
||||
bMeasure : BOOL; (*Hubmessung (Max. Schlie<69>pos)*)
|
||||
bOpen : BOOL; (*Greifer <20>ffnen*)
|
||||
bClose : BOOL; (*Greifer schlie<69>en (Optional mit Werkst<73>ck Angabe)*)
|
||||
bPosition : BOOL; (*Positonsfahrt (Angabe Position)*)
|
||||
bIncremental : BOOL; (*Relativfahrt (Angabe Positon=*)
|
||||
usForce : USINT; (*Kraftstufen //0 : 100%, 1 : 75%, 2 : 50%, 3 : 25%*)
|
||||
rPosition : REAL; (*Sollposition*)
|
||||
END_STRUCT;
|
||||
gtyp_EGP_In : STRUCT
|
||||
bGripperIsOpen : BOOL; (*Greifer ist Offen*)
|
||||
bGripperIsClosed : BOOL; (*Greifer ist Geschlossen Ohne Teil*)
|
||||
bGripperIsClosedWithPart : BOOL; (*Greifer ist Geschlossen Mit Teil*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
3
Logical/Communication/EGP/GlobalEGP.var
Normal file
3
Logical/Communication/EGP/GlobalEGP.var
Normal file
@@ -0,0 +1,3 @@
|
||||
VAR
|
||||
gEGP : ARRAY[1..2] OF gtyp_EGP; (*Greifer Interface*)
|
||||
END_VAR
|
||||
11
Logical/Communication/EGP/Package.pkg
Normal file
11
Logical/Communication/EGP/Package.pkg
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.4.8.122 SP?>
|
||||
<Package xmlns="http://br-automation.co.at/AS/Package">
|
||||
<Objects>
|
||||
<Object Type="File" Description="Globale Typen EGP-Greifer">GlobalEGP.typ</Object>
|
||||
<Object Type="File" Description="Globale Variablen EGP-Greifer">GlobalEGP.var</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Kommunikation mit EGP Greifer">EGPCom1</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Kommunikation mit EGP Greifer">EGPCom2</Object>
|
||||
<Object Type="File" Description="Alarme">TxtAlarms.tmx</Object>
|
||||
</Objects>
|
||||
</Package>
|
||||
41
Logical/Communication/EGP/TxtAlarms.tmx
Normal file
41
Logical/Communication/EGP/TxtAlarms.tmx
Normal file
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<tmx version="1.4">
|
||||
<header creationtool="B&R Automation Studio" creationtoolversion="4.2" datatype="unknown" segtype="sentence" adminlang="en" srclang="en" o-tmf="TMX">
|
||||
<note>Change the namespace to define where this text module should be located within the logical structure of your texts</note>
|
||||
<prop type="x-BR-TS:Namespace">EGP/Alarms</prop>
|
||||
</header>
|
||||
<body>
|
||||
<tu tuid="EGPError">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Vereinzelung: Greifer Fehler</seg>
|
||||
</tuv>
|
||||
<tuv xml:lang="en">
|
||||
<seg>Feeder: Gripper Error</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="EGPMaint">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Vereinzelung: Greifer Wartung Erforderlich</seg>
|
||||
</tuv>
|
||||
<tuv xml:lang="en">
|
||||
<seg>Feeder: Gripper Maintenance neccersary</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="EGPSpec">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Vereinzelung: Greifer außerhalb Spezifikation</seg>
|
||||
</tuv>
|
||||
<tuv xml:lang="en">
|
||||
<seg>Feeder: Gripper out of specifications</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="EGPNotReferenced">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Vereinzelung: Greifer nicht referenziert</seg>
|
||||
</tuv>
|
||||
<tuv xml:lang="en">
|
||||
<seg>Feeder: Gripper not referenced</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
</body>
|
||||
</tmx>
|
||||
106
Logical/Communication/Flexfeeder/Flexfeed/Action.st
Normal file
106
Logical/Communication/Flexfeeder/Flexfeed/Action.st
Normal file
@@ -0,0 +1,106 @@
|
||||
ACTION DoRegisterMachParameter:
|
||||
//Parameter PV in Mp Recipe registrieren
|
||||
MpFUB.MpRecipeRegMachPar.MpLink := ADR (gRecipeMachPar);
|
||||
MpFUB.MpRecipeRegMachPar.Category := ADR ('MachPar');
|
||||
MpFUB.MpRecipeRegMachPar.Enable := TRUE;
|
||||
MpFUB.MpRecipeRegMachPar.PVName := ADR ('Flexfeed:Parameter');
|
||||
MpFUB.MpRecipeRegMachPar ();
|
||||
END_ACTION
|
||||
|
||||
ACTION DoInitMachparameter:
|
||||
//Standard Maschinenparameter Laden
|
||||
//MpAuditCustomEvent (gMpAuditTrail, "Flexfeeder", "", "DefaultParameter");
|
||||
Parameter.sCam_IP := '192.168.1.140';
|
||||
Parameter.sCam_User := 'admin';
|
||||
Parameter.sCam_Pass := '';
|
||||
Parameter.sCam_CalibJob := 'Calibration32l-P';
|
||||
END_ACTION
|
||||
|
||||
|
||||
ACTION DoTimes:
|
||||
//Zeiten berechnen
|
||||
Times.diSteptimeTCP := gdiSystemTime - TimesLatch.diSteptimeTCP;
|
||||
Times.diSteptimeFF := gdiSystemTime - TimesLatch.diSteptimeFF;
|
||||
END_ACTION
|
||||
|
||||
ACTION DoFubs:
|
||||
//Funktionsbausteine aufrufen
|
||||
//===================================================
|
||||
|
||||
//Enables reset
|
||||
IF enStepTCP <> enTCP_Step_Open THEN
|
||||
FUBs.TCP_Open.enable := FALSE;
|
||||
END_IF
|
||||
IF enStepTCP <> enTCP_Step_Connect THEN
|
||||
FUBs.TCP_Client.enable := FALSE;
|
||||
END_IF
|
||||
IF enStepTCP <> enTCP_Step_Connected THEN
|
||||
FUBs.TCP_Send.enable := FALSE;
|
||||
FUBs.TCP_Receive.enable := FALSE;
|
||||
END_IF
|
||||
IF enStepTCP <> enTCP_Step_Close THEN
|
||||
FUBs.TCP_CLose.enable := FALSE;
|
||||
END_IF
|
||||
|
||||
FUBs.TCP_Open ();
|
||||
FUBs.TCP_Client ();
|
||||
FUBs.TCP_CLose ();
|
||||
FUBs.TCP_Send ();
|
||||
FUBs.TCP_Receive ();
|
||||
MpFUB.MpRecipeRegMachPar ();
|
||||
END_ACTION
|
||||
|
||||
ACTION DoResetComAlarms:
|
||||
//Kommunikations Alarme r<EFBFBD>cksetzen
|
||||
//===================================================
|
||||
Alarms.bFFCamUnrecognizedCmd := FALSE;
|
||||
Alarms.bFFCamFilenameMissing := FALSE;
|
||||
Alarms.bFFCamLoadJobFailed := FALSE;
|
||||
Alarms.bFFCamOfflineManual := FALSE;
|
||||
END_ACTION
|
||||
|
||||
|
||||
ACTION DoAlarms:
|
||||
//Alarme erzeugen bzw. r<EFBFBD>cksetzen
|
||||
//===================================================
|
||||
//Unbekannter Befehl
|
||||
IF Alarms.bFFCamUnrecognizedCmd THEN
|
||||
IF (AlarmIDs.udFFCamUnrecognizedCmd = 0) THEN
|
||||
AlarmIDs.udFFCamUnrecognizedCmd := MpAlarmXSet (gMpAlarmXCore, 'FFCamUnrecognizedCmd');
|
||||
END_IF
|
||||
ELSIF (AlarmIDs.udFFCamUnrecognizedCmd > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udFFCamUnrecognizedCmd);
|
||||
AlarmIDs.udFFCamUnrecognizedCmd := 0;
|
||||
END_IF
|
||||
|
||||
//Laden Dateiname fehlt
|
||||
IF Alarms.bFFCamFilenameMissing THEN
|
||||
IF (AlarmIDs.udFFCamFilenameMissing = 0) THEN
|
||||
AlarmIDs.udFFCamFilenameMissing := MpAlarmXSet (gMpAlarmXCore, 'FFCamFilenameMissing');
|
||||
END_IF
|
||||
ELSIF (AlarmIDs.udFFCamFilenameMissing > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udFFCamFilenameMissing);
|
||||
AlarmIDs.udFFCamFilenameMissing := 0;
|
||||
END_IF
|
||||
|
||||
//Laden Fehlgeschlagen
|
||||
IF Alarms.bFFCamLoadJobFailed THEN
|
||||
IF (AlarmIDs.udFFCamLoadJobFailed = 0) THEN
|
||||
AlarmIDs.udFFCamLoadJobFailed := MpAlarmXSet (gMpAlarmXCore, 'FFCamLoadJobFailed');
|
||||
END_IF
|
||||
ELSIF (AlarmIDs.udFFCamLoadJobFailed > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udFFCamLoadJobFailed);
|
||||
AlarmIDs.udFFCamLoadJobFailed := 0;
|
||||
END_IF
|
||||
|
||||
//Kamera ist Offline
|
||||
IF Alarms.bFFCamOfflineManual THEN
|
||||
IF (AlarmIDs.udFFCamOfflineManual = 0) THEN
|
||||
AlarmIDs.udFFCamOfflineManual := MpAlarmXSet (gMpAlarmXCore, 'FFCamOfflineManual');
|
||||
END_IF
|
||||
ELSIF (AlarmIDs.udFFCamOfflineManual > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udFFCamOfflineManual);
|
||||
AlarmIDs.udFFCamOfflineManual := 0;
|
||||
END_IF
|
||||
|
||||
END_ACTION
|
||||
40
Logical/Communication/Flexfeeder/Flexfeed/FlexFeed.var
Normal file
40
Logical/Communication/Flexfeeder/Flexfeed/FlexFeed.var
Normal file
@@ -0,0 +1,40 @@
|
||||
(*//Dynamische Variablen*)
|
||||
VAR
|
||||
lProcParam : REFERENCE TO gtyp_PrcParam_Feeder; (*Akutelle Parameter*)
|
||||
END_VAR
|
||||
(*//Lokale Variablen*)
|
||||
VAR
|
||||
bParamSetChanged : BOOL;
|
||||
usParamsetLatch : USINT;
|
||||
sRecv : STRING[80];
|
||||
sRecvCopy : STRING[80];
|
||||
sSend : {REDUND_UNREPLICABLE} STRING[80];
|
||||
sTemp : STRING[3];
|
||||
sDebug1 : {REDUND_UNREPLICABLE} STRING[80];
|
||||
sDebug2 : {REDUND_UNREPLICABLE} STRING[80];
|
||||
END_VAR
|
||||
(*//Processed Communication Structure*)
|
||||
(*//Strukturen*)
|
||||
VAR RETAIN
|
||||
enStepTCP : typ_enTCP; (*Schrittkette*)
|
||||
enStepFlexfeeder : typ_enFlexFeeder; (*Schrittkette*)
|
||||
Status : typ_States; (*Statis*)
|
||||
END_VAR
|
||||
VAR
|
||||
Alarms : typ_Alarms;
|
||||
AlarmIDs : typ_AlarmIDs; (*Alarm IDs*)
|
||||
Times : typ_Times;
|
||||
TimesLatch : typ_Times; (*Gespeicherte Systemzeit*)
|
||||
END_VAR
|
||||
VAR RETAIN
|
||||
Parameter : {REDUND_UNREPLICABLE} typ_Parameter; (*Parameter*)
|
||||
END_VAR
|
||||
(*//Funktionsbl<62>cke*)
|
||||
VAR
|
||||
FUBs : typ_FUB; (*Funktionsbausteine*)
|
||||
MpFUB : typ_MpFUB;
|
||||
END_VAR
|
||||
(*//VC*)
|
||||
VAR
|
||||
VCButtons : typ_VCButtons; (*VC - Buttons*)
|
||||
END_VAR
|
||||
1139
Logical/Communication/Flexfeeder/Flexfeed/FlexFeedCyclic.st
Normal file
1139
Logical/Communication/Flexfeeder/Flexfeed/FlexFeedCyclic.st
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,7 @@
|
||||
PROGRAM _INIT
|
||||
Status.bDataSent := FALSE;
|
||||
enStepFlexfeeder := enFF_Step_Offline;
|
||||
enStepTCP := enTCP_Step_Open;
|
||||
|
||||
usParamsetLatch := 0;
|
||||
END_PROGRAM
|
||||
12
Logical/Communication/Flexfeeder/Flexfeed/IEC.prg
Normal file
12
Logical/Communication/Flexfeeder/Flexfeed/IEC.prg
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.7.3.93 SP?>
|
||||
<Program SubType="IEC" xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Aktionen ">Action.st</File>
|
||||
<File Description="Implementation code">FlexfeedInit.st</File>
|
||||
<File Description="Implementation code">FlexFeedCyclic.st</File>
|
||||
<File Description="Flexfeeder I/O" Private="true">IOs.var</File>
|
||||
<File Description="Local variables" Private="true">FlexFeed.var</File>
|
||||
<File Description="Local data types" Private="true">Types.typ</File>
|
||||
</Files>
|
||||
</Program>
|
||||
6
Logical/Communication/Flexfeeder/Flexfeed/IOs.var
Normal file
6
Logical/Communication/Flexfeeder/Flexfeed/IOs.var
Normal file
@@ -0,0 +1,6 @@
|
||||
(*//IOs*)
|
||||
(*//===========================================================*)
|
||||
VAR
|
||||
bOuFlexFeedPicksignal : BOOL; (*Pick Signal von Roboter an Flexfeeder*)
|
||||
END_VAR
|
||||
(*//===========================================================*)
|
||||
115
Logical/Communication/Flexfeeder/Flexfeed/Types.typ
Normal file
115
Logical/Communication/Flexfeeder/Flexfeed/Types.typ
Normal file
@@ -0,0 +1,115 @@
|
||||
(*//I/Os*)
|
||||
(*//Strukturen*)
|
||||
|
||||
TYPE
|
||||
typ_States : STRUCT
|
||||
bDisableConnReq : BOOL; (*Verbindungsaufbau unterbrechen*)
|
||||
bDataReceived : BOOL; (*Daten erhalten*)
|
||||
bSendData : BOOL; (*Daten senden*)
|
||||
bDataSent : BOOL; (*Daten gesendet*)
|
||||
bCalibration : BOOL; (*Kalibrieren*)
|
||||
usCalPoint : USINT; (*Kalibrierpunkt 0-3*)
|
||||
udSocket : UDINT; (*Socket Handle*)
|
||||
diPosX : DINT; (*Pos X in 1/1000mm*)
|
||||
diPosY : DINT; (*Pos Y in 1/1000mm*)
|
||||
diRotC : DINT; (*Rot C in 1/1000mm*)
|
||||
END_STRUCT;
|
||||
typ_Times : STRUCT (*Zykluszeiten etc.*)
|
||||
diSteptimeTCP : {REDUND_UNREPLICABLE} DINT; (*[<5B>s]*)
|
||||
diSteptimeFF : {REDUND_UNREPLICABLE} DINT; (*[<5B>s]*)
|
||||
END_STRUCT;
|
||||
typ_Parameter : STRUCT (*Parameter (Feste Parameter Schrauber bezogen)*)
|
||||
sCam_IP : STRING[15] := '192.168.1.140'; (*Kamera IP-Adresse*)
|
||||
sCam_User : STRING[15] := 'admin'; (*Kamera User*)
|
||||
sCam_Pass : STRING[15] := ''; (*Kamea Passwort*)
|
||||
sCam_CalibJob : STRING[25] := 'Calibration32l-P'; (*Kamea Kalibrierjob*)
|
||||
END_STRUCT;
|
||||
typ_FUB : STRUCT
|
||||
TCP_Open : TcpOpen; (*Socket <20>ffnen*)
|
||||
TCP_Client : TcpClient; (*Verbindung aufbauen*)
|
||||
TCP_CLose : TcpClose; (*Verbindung schlie<69>en*)
|
||||
TCP_Send : TcpSend; (*Senden*)
|
||||
TCP_Receive : TcpRecv; (*Empfangen*)
|
||||
TON_NoPart : TON;
|
||||
END_STRUCT;
|
||||
typ_MpFUB : STRUCT (*MApp Funktionsbausteine*)
|
||||
MpRecipeRegMachPar : MpRecipeRegPar; (*Maschinenparameter regsiterien*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
|
||||
(*//Schrittketten / Befehle / Bedingungen*)
|
||||
|
||||
TYPE
|
||||
typ_enTCP :
|
||||
( (*Schrittkette*)
|
||||
enTCP_Step_Open := 0, (*Socket <20>ffnen*)
|
||||
enTCP_Step_Connect, (*Client verbindung aufbauen*)
|
||||
enTCP_Step_Connected, (*Verbunden / Senden / Empfangen*)
|
||||
enTCP_Step_Close (*Verbindung schlie<69>en*)
|
||||
);
|
||||
typ_enFlexFeeder :
|
||||
(
|
||||
enFF_Step_Offline, (*Flexfeeder Offline - Warte auf User Prompt - Username Senden*)
|
||||
enFF_Step_SendUser, (*Flexfeeder Username senden und warte auf Pass Promt*)
|
||||
enFF_Step_SendPass, (*Flexfeeder Passwort gesendet warte auf Loginbest<73>tigung*)
|
||||
enFF_Step_LoggedIn, (*Login- Ok (sp<73>ter hier mal unterscheiden*)
|
||||
enFF_Step_SetOffline, (*Cam Offline schalten*)
|
||||
enFF_Step_LoadJob, (*Job laden*)
|
||||
enFF_Step_StopFeederAuto, (*Feeder Automatik stoppen*)
|
||||
enFF_Step_PickSigLow, (*PickSignal auf 0 setzen*)
|
||||
enFF_Step_SetOnline, (*Cam Online Setzen*)
|
||||
enFF_Step_SentOptInit, (*Optionae Initialisierung vom Flexfeeder*)
|
||||
enFF_Step_WaitInit, (*Auf Kameraintialisierung warten 2s*)
|
||||
enFF_Step_SentStateReq1, (*Statusanfrage 1*)
|
||||
enFF_Step_SentStateReq2, (*Statusanfrage 2*)
|
||||
enFF_Step_SentStateReq3, (*Statusanfrage 3*)
|
||||
enFF_Step_StartFeederAuto, (*Feeder Automatik Starten*)
|
||||
enFF_Step_IsOnline, (*Login Ok - Job laden (Erst Cam Offline schalten)*)
|
||||
enFF_Step_StartStreaming,
|
||||
enFF_Step_StreamingMode,
|
||||
enFF_Step_StopStreaming,
|
||||
enFF_Step_StopAutoAfterStreaming,
|
||||
enFF_Step_CalCheckFeederHome, (*Kalibrierung Warten bis Feeder Home*)
|
||||
enFF_Step_CalSelectPoint, (*Kalibrierung Kalibrierpunkt w<>hlen*)
|
||||
enFF_Step_CalStartCycle, (*Kalibrierung Kalibrierablauf starten*)
|
||||
enFF_Step_CalRobPickPlace, (*Kalibrierung Roboter Teil aufnehmnen und Ablegen*)
|
||||
enFF_Step_CalGetTask, (*Kalibrierung Aufgabe auslesen*)
|
||||
enFF_Step_CalSendX, (*Kalibrierung Ablagepos X <20>bermitteln*)
|
||||
enFF_Step_CalSendY, (*Kalibrierung Ablagepos Y <20>bermitteln*)
|
||||
enFF_Step_CalConfirmCmd, (*Kalibrierung Befehl best<73>tigen*)
|
||||
enFF_Step_CalWait, (*Kalibrierung Ablagepos X <20>bermitteln*)
|
||||
enFF_Step_Purge, (*Leeren*)
|
||||
enFF_Step_PurgeCmd1, (*Leeren*)
|
||||
enFF_Step_PurgeCmd2, (*Leeren*)
|
||||
enFF_Step_PurgeWait (*Leeren*)
|
||||
);
|
||||
END_TYPE
|
||||
|
||||
(*//Alarme*)
|
||||
|
||||
TYPE
|
||||
typ_Alarms : STRUCT (*Alarme*)
|
||||
bFFCamUnrecognizedCmd : BOOL; (*Unbekannter Befehl*)
|
||||
bFFCamFilenameMissing : BOOL; (*Laden Dateinahme Fehlt*)
|
||||
bFFCamLoadJobFailed : BOOL; (*Laden fehlgeschlagen / System Online / Datei nicht gefunden*)
|
||||
bFFCamOfflineManual : BOOL; (*Kamera <20>ber Insight Explorer Offline*)
|
||||
END_STRUCT;
|
||||
typ_AlarmIDs : STRUCT (*Puffer f<>r Alarm IDs*)
|
||||
udFFCamUnrecognizedCmd : UDINT; (*Unbekannter Befehl*)
|
||||
udFFCamFilenameMissing : UDINT; (*Laden Dateinahme Fehlt*)
|
||||
udFFCamLoadJobFailed : UDINT; (*Laden fehlgeschlagen / System Online / Datei nicht gefunden*)
|
||||
udFFCamOfflineManual : UDINT; (*Kamera <20>ber Insight Explorer Offline*)
|
||||
END_STRUCT;
|
||||
typ_AlarmSnippets : STRUCT (*Infos f<>r Alarmtexte*)
|
||||
strDummy : STRING[40]; (*Dummystring*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
|
||||
(*//Visual Components*)
|
||||
|
||||
TYPE
|
||||
typ_VCButtons : STRUCT (*Visual Controls Buttons*)
|
||||
DefaultParameter : gtyp_VCButton; (*Default Parameter Laden*)
|
||||
ResetCommunications : gtyp_VCButton; (*Verbindung abbrechen*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
8
Logical/Communication/Flexfeeder/Package.pkg
Normal file
8
Logical/Communication/Flexfeeder/Package.pkg
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.7.3.93 SP?>
|
||||
<Package xmlns="http://br-automation.co.at/AS/Package">
|
||||
<Objects>
|
||||
<Object Type="Program" Language="IEC" Description="Kommunikation mit Fexfeeder/Cognex">Flexfeed</Object>
|
||||
<Object Type="File" Description="Alarme">TxtAlarms.tmx</Object>
|
||||
</Objects>
|
||||
</Package>
|
||||
41
Logical/Communication/Flexfeeder/TxtAlarms.tmx
Normal file
41
Logical/Communication/Flexfeeder/TxtAlarms.tmx
Normal file
@@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<tmx version="1.4">
|
||||
<header creationtool="B&R Automation Studio" creationtoolversion="4.2" datatype="unknown" segtype="sentence" adminlang="en" srclang="en" o-tmf="TMX">
|
||||
<note>Change the namespace to define where this text module should be located within the logical structure of your texts</note>
|
||||
<prop type="x-BR-TS:Namespace">FF/Alarms</prop>
|
||||
</header>
|
||||
<body>
|
||||
<tu tuid="FFCamUnrecognizedCmd">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Flexfeeder: Kamera Unbekannter Befehl</seg>
|
||||
</tuv>
|
||||
<tuv xml:lang="en">
|
||||
<seg>Flexfeeder: Cam Unrecognized Command</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="FFCamFilenameMissing">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Flexfeeder: Kamera Job laden - Dateiname fehlt</seg>
|
||||
</tuv>
|
||||
<tuv xml:lang="en">
|
||||
<seg>Flexfeeder: Cam Load Job - Filename missing</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="FFCamLoadJobFailed">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Flexfeeder: Kamera Job laden fehlgeschlagen (Cam Online / Datei fehlt)</seg>
|
||||
</tuv>
|
||||
<tuv xml:lang="en">
|
||||
<seg>Flexfeeder: Cam Load Job failed (System Online / File missing)</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="FFCamOfflineManual">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Flexfeeder: Kamera Offline durch Insight Explorer</seg>
|
||||
</tuv>
|
||||
<tuv xml:lang="en">
|
||||
<seg>Flexfeeder: Cam Offline by Insight Explorer</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
</body>
|
||||
</tmx>
|
||||
36
Logical/Communication/GlobalCom.typ
Normal file
36
Logical/Communication/GlobalCom.typ
Normal file
@@ -0,0 +1,36 @@
|
||||
(*//Standard Interface ABB Roboter*)
|
||||
|
||||
TYPE
|
||||
gtyp_ABBInterfaceIn : STRUCT (*Inputs from ABB Robot Interface*)
|
||||
bMotorsOn : BOOL := FALSE; (*00 Motors are On (Flash = Unsync)*)
|
||||
bMotorsOff : BOOL := FALSE; (*01 Motoren sind Aus (Blinken = Safety Chain)*)
|
||||
bProgramRun : BOOL := FALSE; (*02 Programm l<>uft*)
|
||||
bEStop : BOOL := FALSE; (*03 E-Stop von Roboter*)
|
||||
bAutomatic : BOOL := FALSE; (*04 Automatik Modus*)
|
||||
bError : BOOL := FALSE; (*05 Error von Roboter*)
|
||||
bRunChainOk : BOOL; (*06 RunChain Ok*)
|
||||
bLifebeat : BOOL := FALSE; (*07 Lifebeat von Roboter (<28>ber CC zur<75>ckgeroutet)*)
|
||||
bMotionSupervisionTriggered : BOOL := FALSE; (*08 Bewegungs<67>berwachung ausgl<67>st*)
|
||||
bWZHome : BOOL := FALSE; (*24 Roboter ist in Homepos*)
|
||||
bWZChangetool : BOOL := FALSE; (*25 Roboter ist in Weltzone ChangeTool*)
|
||||
bWZPlacepoint : BOOL := FALSE; (*26 Roboter ist in Weltzone Abgabepos <20>bergabestation*)
|
||||
usStatus : USINT := 0; (*64 Status*)
|
||||
END_STRUCT;
|
||||
gtyp_ABBInterfaceOut : STRUCT (*Output to ABB Robot Interface*)
|
||||
bSwitchMotorOn : BOOL := FALSE; (*00 Switch Motors On*)
|
||||
bSwitchMotorOff : BOOL := FALSE; (*01 Switch Motors Off*)
|
||||
bStart : BOOL := FALSE; (*02 Start - Nicht at Main*)
|
||||
bStop : BOOL := FALSE; (*03 Stop Cycle*)
|
||||
bResetEStop : BOOL := FALSE; (*04 Reset E-Stop*)
|
||||
bResetError : BOOL := FALSE; (*05 Reset Errors*)
|
||||
bStartAtMain : BOOL := FALSE; (*06 Start At Main (Continuous)*)
|
||||
bLifebeat : BOOL := FALSE; (*07 Lifebeat an Roboter*)
|
||||
bStartBackup : BOOL := FALSE; (*08 Start Backup*)
|
||||
usProgNr : USINT := 0; (*64 Programm Number*)
|
||||
END_STRUCT;
|
||||
gtyp_ABBInterface : STRUCT (*ABB Robot Interface*)
|
||||
bOnline : BOOL; (*Kommuniktion OK*)
|
||||
In : gtyp_ABBInterfaceIn; (*Eing<6E>nge von ABB Roboter*)
|
||||
Out : gtyp_ABBInterfaceOut; (*Ausga<67>nge an aBB Roboter*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
5
Logical/Communication/GlobalCom.var
Normal file
5
Logical/Communication/GlobalCom.var
Normal file
@@ -0,0 +1,5 @@
|
||||
(*//Kommunikationsstrukturen*)
|
||||
VAR RETAIN
|
||||
gABBRobot1 : gtyp_ABBInterface; (*Standard interface zu ABB Roboter*)
|
||||
END_VAR
|
||||
(*Variablen / Strukturen*)
|
||||
50
Logical/Communication/KEB/KEBCom/Action.st
Normal file
50
Logical/Communication/KEB/KEBCom/Action.st
Normal file
@@ -0,0 +1,50 @@
|
||||
ACTION DoTimes:
|
||||
//Zeiten berechnen
|
||||
Times.diSteptime := gdiSystemTime - TimesLatch.diSteptime;
|
||||
END_ACTION
|
||||
|
||||
ACTION DoAlarms:
|
||||
//Alarme erzeugen bzw. r<EFBFBD>cksetzen
|
||||
//===================================================
|
||||
|
||||
//Greifer Fehler
|
||||
IF (EGPIn.usStatus = EGP_STAT_ERROR) AND bEGPSupplyOk THEN
|
||||
IF (AlarmIDs.udEGPError = 0) THEN
|
||||
AlarmIDs.udEGPError := MpAlarmXSet (gMpAlarmXCore, 'EGPError');
|
||||
END_IF
|
||||
ELSIF (EGPIn.usStatus = EGP_STAT_OK) AND (AlarmIDs.udEGPError > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udEGPError);
|
||||
AlarmIDs.udEGPError := 0;
|
||||
END_IF
|
||||
|
||||
//Greifer Wartung Erforderlich
|
||||
IF (EGPIn.usStatus = EGP_STAT_MAINT) THEN
|
||||
IF (AlarmIDs.udEGPMaint = 0) THEN
|
||||
AlarmIDs.udEGPMaint := MpAlarmXSet (gMpAlarmXCore, 'EGPMaint');
|
||||
END_IF
|
||||
ELSIF (EGPIn.usStatus = EGP_STAT_OK) AND (AlarmIDs.udEGPMaint > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udEGPMaint);
|
||||
AlarmIDs.udEGPMaint := 0;
|
||||
END_IF
|
||||
|
||||
//Greifer au<EFBFBD>er Spezifikation
|
||||
IF (EGPIn.usStatus = EGP_STAT_SPEC) THEN
|
||||
IF (AlarmIDs.udEGPSpec = 0) THEN
|
||||
AlarmIDs.udEGPSpec := MpAlarmXSet (gMpAlarmXCore, 'EGPSpec');
|
||||
END_IF
|
||||
ELSIF (EGPIn.usStatus = EGP_STAT_OK) AND (AlarmIDs.udEGPSpec > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udEGPSpec);
|
||||
AlarmIDs.udEGPSpec := 0;
|
||||
END_IF
|
||||
|
||||
IF (EGPIn.usStatus = EGP_STAT_OK) AND NOT EGPIn.bReferenced THEN
|
||||
IF (AlarmIDs.udEGPNotReferenced = 0) THEN
|
||||
AlarmIDs.udEGPNotReferenced := MpAlarmXSet (gMpAlarmXCore, 'EGPNotReferenced');
|
||||
END_IF
|
||||
ELSIF EGPIn.bReferenced AND (AlarmIDs.udEGPNotReferenced > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udEGPNotReferenced);
|
||||
AlarmIDs.udEGPNotReferenced := 0;
|
||||
END_IF
|
||||
|
||||
|
||||
END_ACTION
|
||||
11
Logical/Communication/KEB/KEBCom/IEC.prg
Normal file
11
Logical/Communication/KEB/KEBCom/IEC.prg
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.4.8.122 SP?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Aktionen">Action.st</File>
|
||||
<File Description="Implementation code">KEBInit.st</File>
|
||||
<File Description="Implementation code">KEB_Cyclic.st</File>
|
||||
<File Description="Local variables" Private="true">KEBCom.var</File>
|
||||
<File Description="Local data types" Private="true">Types.typ</File>
|
||||
</Files>
|
||||
</Program>
|
||||
16
Logical/Communication/KEB/KEBCom/KEBCom.var
Normal file
16
Logical/Communication/KEB/KEBCom/KEBCom.var
Normal file
@@ -0,0 +1,16 @@
|
||||
(*//Raw In/Out*)
|
||||
VAR
|
||||
diInStatusWord : DINT := 0; (*Statuswort*)
|
||||
diOuCtrlWord : DINT := 0; (*Steuerwort*)
|
||||
iOuSetSpeed : INT;
|
||||
iInActSpeed : INT;
|
||||
bOuEnable : BOOL;
|
||||
END_VAR
|
||||
(*//MAschineninterface f. Spindel*)
|
||||
(*//Strukturen*)
|
||||
VAR
|
||||
FUBs : typ_FUB;
|
||||
CtrlWord : typ_CtrlWord;
|
||||
StatusWord : typ_StatusWord;
|
||||
END_VAR
|
||||
(*Insert your comment here.*)
|
||||
2
Logical/Communication/KEB/KEBCom/KEBInit.st
Normal file
2
Logical/Communication/KEB/KEBCom/KEBInit.st
Normal file
@@ -0,0 +1,2 @@
|
||||
PROGRAM _INIT
|
||||
END_PROGRAM
|
||||
53
Logical/Communication/KEB/KEBCom/KEB_Cyclic.st
Normal file
53
Logical/Communication/KEB/KEBCom/KEB_Cyclic.st
Normal file
@@ -0,0 +1,53 @@
|
||||
|
||||
PROGRAM _CYCLIC
|
||||
|
||||
//Statuswort einlesen
|
||||
//==============================================
|
||||
StatusWord.bST := diInStatusWord.0;
|
||||
StatusWord.bError := diInStatusWord.1;
|
||||
StatusWord.bStarted := diInStatusWord.2;
|
||||
StatusWord.bLeftTurn := diInStatusWord.3;
|
||||
StatusWord.bSetPointReached := diInStatusWord.11;
|
||||
|
||||
|
||||
//Ansteuerung
|
||||
//==============================================
|
||||
|
||||
//Freigabewen sicherheit OK
|
||||
CtrlWord.bEnable := gbSOuSafetyOk AND gMachine1.bMachineON;
|
||||
|
||||
//Linkslauf notwendig
|
||||
CtrlWord.bTrnLeft := FALSE;
|
||||
|
||||
//Start von Cmd Interface <EFBFBD>bernehmen
|
||||
CtrlWord.bStart := FALSE; //Positionieren
|
||||
IF gCmd1.Mill.ToMill.bStartMill THEN
|
||||
iOuSetSpeed := - gCmd1.Mill.ToMill.iSpeed;
|
||||
ELSE
|
||||
iOuSetSpeed := FALSE;
|
||||
END_IF
|
||||
|
||||
gCmd1.Mill.FromMill.bInVelocity := ABS (iInActSpeed) >= (0.95 * ABS (iOuSetSpeed));
|
||||
FUBs.TON_Standstill.IN := ABS (iInActSpeed) = 0;
|
||||
FUBs.TON_Standstill.PT := t#1s;
|
||||
FUBs.TON_Standstill ();
|
||||
|
||||
gCmd1.Mill.FromMill.bInStandStill := FUBs.TON_Standstill.Q;
|
||||
|
||||
//Steuerwort ausgeben
|
||||
//==============================================
|
||||
diOuCtrlWord.0 := CtrlWord.bEnable;
|
||||
diOuCtrlWord.1 := CtrlWord.bReset;
|
||||
diOuCtrlWord.2 := CtrlWord.bStart;
|
||||
diOuCtrlWord.3 := CtrlWord.bTrnLeft;
|
||||
//Paramset
|
||||
diOuCtrlWord.4 := CtrlWord.usParamset.0;
|
||||
diOuCtrlWord.5 := CtrlWord.usParamset.1;
|
||||
diOuCtrlWord.6 := CtrlWord.usParamset.1;
|
||||
diOuCtrlWord.8 := CtrlWord.bFastStop;
|
||||
|
||||
|
||||
//HW Enable immer notwendig
|
||||
//==============================================
|
||||
bOuEnable := CtrlWord.bEnable;
|
||||
END_PROGRAM
|
||||
41
Logical/Communication/KEB/KEBCom/Types.typ
Normal file
41
Logical/Communication/KEB/KEBCom/Types.typ
Normal file
@@ -0,0 +1,41 @@
|
||||
(*//I/Os*)
|
||||
|
||||
TYPE
|
||||
typ_CtrlWord : STRUCT (*Steuerword*)
|
||||
bEnable : BOOL; (*0.0 Freigabe*)
|
||||
bReset : BOOL; (*0.1 Reset*)
|
||||
bStart : BOOL; (*0.2 Start*)
|
||||
bTrnLeft : BOOL; (*0.3 Linkslauf*)
|
||||
usParamset : USINT; (*0.4-0.6 Parametersatz*)
|
||||
bFastStop : BOOL; (*0.8*)
|
||||
END_STRUCT;
|
||||
typ_StatusWord : STRUCT (*Statusword*)
|
||||
bST : BOOL; (*0.0 Freibabe Seitenz*)
|
||||
bError : BOOL; (*0.1 Fehler*)
|
||||
bStarted : BOOL; (*0.2*)
|
||||
bLeftTurn : BOOL; (*0.3*)
|
||||
bSetPointReached : BOOL; (*0.7*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
|
||||
(*//Strukturen*)
|
||||
|
||||
TYPE
|
||||
typ_FUB : STRUCT (*Funktionsbausteine*)
|
||||
TON_Standstill : TON;
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
|
||||
(*//Alarme*)
|
||||
|
||||
TYPE
|
||||
typ_AlarmIDs : STRUCT (*Puffer f<>r Alarm IDs*)
|
||||
udEGPError : UDINT; (*Fehler EGP Greifer*)
|
||||
udEGPMaint : UDINT; (*Wartung EGP Erforderlich*)
|
||||
udEGPSpec : UDINT; (*EGP au<61>er Spezifikation*)
|
||||
udEGPNotReferenced : UDINT; (*EGP nicht Referenziert*)
|
||||
END_STRUCT;
|
||||
typ_AlarmSnippets : STRUCT (*Infos f<>r Alarmtexte*)
|
||||
strDummy : STRING[40]; (*Dummystring*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
7
Logical/Communication/KEB/Package.pkg
Normal file
7
Logical/Communication/KEB/Package.pkg
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.4.8.122 SP?>
|
||||
<Package xmlns="http://br-automation.co.at/AS/Package">
|
||||
<Objects>
|
||||
<Object Type="Program" Language="IEC" Description="Kommunikation mit KEB-Umrichter">KEBCom</Object>
|
||||
</Objects>
|
||||
</Package>
|
||||
14
Logical/Communication/Package.pkg
Normal file
14
Logical/Communication/Package.pkg
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.7.3.93 SP?>
|
||||
<Package xmlns="http://br-automation.co.at/AS/Package">
|
||||
<Objects>
|
||||
<Object Type="File" Description="Communication Types">GlobalCom.typ</Object>
|
||||
<Object Type="File" Description="Logging Vars">GlobalCom.var</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Communication to ABB Robot 1 (IRC 5 Version)">ABBCom</Object>
|
||||
<Object Type="Package" Description="EGP-Greifer">EGP</Object>
|
||||
<Object Type="Package" Description="KEB-Umrichter">KEB</Object>
|
||||
<Object Type="Package" Description="Kommunikation mit Fexfeeder/Cognex">Flexfeeder</Object>
|
||||
<Object Type="Package">RFID</Object>
|
||||
<Object Type="Package" Description="Kommunikation mit Fexfeeder">Cognex</Object>
|
||||
</Objects>
|
||||
</Package>
|
||||
8
Logical/Communication/RFID/GlobaRFID.var
Normal file
8
Logical/Communication/RFID/GlobaRFID.var
Normal file
@@ -0,0 +1,8 @@
|
||||
(*//Communicationstructures*)
|
||||
(*//Transponders*)
|
||||
VAR
|
||||
gudRFIDReader1ID : UDINT; (*Gelesene ID*)
|
||||
gudRFIDReader2ID : UDINT; (*Gelesene ID*)
|
||||
gudRFIDReader3ID : UDINT; (*Gelesene ID*)
|
||||
gudRFIDReader4ID : UDINT; (*Gelesene ID*)
|
||||
END_VAR
|
||||
9
Logical/Communication/RFID/Package.pkg
Normal file
9
Logical/Communication/RFID/Package.pkg
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.7.3.93 SP?>
|
||||
<Package xmlns="http://br-automation.co.at/AS/Package">
|
||||
<Objects>
|
||||
<Object Type="File" Description="Logging Vars">GlobaRFID.var</Object>
|
||||
<Object Type="File" Description="Logging Vars" Private="true">RFID1var.var</Object>
|
||||
<Object Type="Program" Language="IEC" Description="13 Mhz Transponder B&R">RFID_USB</Object>
|
||||
</Objects>
|
||||
</Package>
|
||||
8
Logical/Communication/RFID/RFID1var.var
Normal file
8
Logical/Communication/RFID/RFID1var.var
Normal file
@@ -0,0 +1,8 @@
|
||||
(*//Communicationstructures*)
|
||||
(*//Transponders*)
|
||||
VAR RETAIN
|
||||
pudRFIDSerialReader1 : {REDUND_UNREPLICABLE} UDINT := 3735632; (*Serien Nr RFID Reader 1*)
|
||||
pudRFIDSerialReader2 : {REDUND_UNREPLICABLE} UDINT := 0; (*Serien Nr RFID Reader 2*)
|
||||
pudRFIDSerialReader3 : {REDUND_UNREPLICABLE} UDINT := 0; (*Serien Nr RFID Reader 3*)
|
||||
pudRFIDSerialReader4 : {REDUND_UNREPLICABLE} UDINT := 0; (*Serien Nr RFID Reader 4*)
|
||||
END_VAR
|
||||
52
Logical/Communication/RFID/RFID_USB/ASCtoUDINT.st
Normal file
52
Logical/Communication/RFID/RFID_USB/ASCtoUDINT.st
Normal file
@@ -0,0 +1,52 @@
|
||||
FUNCTION ASCtoUDINT
|
||||
ASCtoUDINT := 0;
|
||||
udNextAdr := udInNextAdr;
|
||||
IF bInReverse THEN
|
||||
sStart := 7;
|
||||
sEnd := 0;
|
||||
sStep := -1;
|
||||
ELSE
|
||||
sStart := 0;
|
||||
sEnd := 7;
|
||||
sStep := 1;
|
||||
END_IF
|
||||
FOR usi := sStart TO sEnd BY sStep DO
|
||||
brsmemcpy (ADR (usChar), udNextAdr + usi, 1);
|
||||
CASE usChar OF
|
||||
48:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 0;
|
||||
49:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 1;
|
||||
50:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 2;
|
||||
51:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 3;
|
||||
52:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 4;
|
||||
53:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 5;
|
||||
54:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 6;
|
||||
55:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 7;
|
||||
56:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 8;
|
||||
57:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 9;
|
||||
65:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 10;
|
||||
66:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 11;
|
||||
67:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 12;
|
||||
68:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 13;
|
||||
69:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 14;
|
||||
70:
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 15;
|
||||
ELSE
|
||||
ASCtoUDINT := SHL (ASCtoUDINT, 4) + 16#f;
|
||||
END_CASE
|
||||
END_FOR
|
||||
END_FUNCTION
|
||||
12
Logical/Communication/RFID/RFID_USB/IEC.prg
Normal file
12
Logical/Communication/RFID/RFID_USB/IEC.prg
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.4.8.122 SP?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Implementation code">RFID_USB.st</File>
|
||||
<File Description="Local variables" Private="true">RFID_USB.var</File>
|
||||
<File Description="Local data types" Private="true">RFID_USB.typ</File>
|
||||
<File Private="true">RFID_USB.fun</File>
|
||||
<File Description="Convert ASCII Value to UDINT">ASCtoUDINT.st</File>
|
||||
<File Description="Convert UDINT Value to ASCII">UDINTtoASC.st</File>
|
||||
</Files>
|
||||
</Program>
|
||||
28
Logical/Communication/RFID/RFID_USB/RFID_USB.fun
Normal file
28
Logical/Communication/RFID/RFID_USB/RFID_USB.fun
Normal file
@@ -0,0 +1,28 @@
|
||||
|
||||
FUNCTION ASCtoUDINT : UDINT (*Convert ASCII Value to UDINT*)
|
||||
VAR_INPUT
|
||||
udInNextAdr : UDINT; (*Next Pos in ByteStream (No CHECK)*)
|
||||
bInReverse : BOOL;
|
||||
END_VAR
|
||||
VAR
|
||||
udNextAdr : UDINT;
|
||||
usi : SINT;
|
||||
sStart : SINT;
|
||||
sEnd : SINT;
|
||||
sStep : SINT;
|
||||
usChar : USINT;
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
FUNCTION UDINTtoASC : UDINT (*Convert UDINT Value to ASCII*)
|
||||
VAR_INPUT
|
||||
udInNextAdr : UDINT; (*Next Pos in ByteStream (No CHECK)*)
|
||||
udInValue : UDINT;
|
||||
END_VAR
|
||||
VAR
|
||||
udNextAdr : UDINT;
|
||||
udValue : UDINT;
|
||||
usi : USINT;
|
||||
usChar : USINT;
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
609
Logical/Communication/RFID/RFID_USB/RFID_USB.st
Normal file
609
Logical/Communication/RFID/RFID_USB/RFID_USB.st
Normal file
@@ -0,0 +1,609 @@
|
||||
(********************************************************************
|
||||
* COPYRIGHT --
|
||||
********************************************************************
|
||||
* Program: RFID_USB
|
||||
* File: RFID_USB.st
|
||||
* Author: michi
|
||||
* Created: December 04, 2012
|
||||
********************************************************************
|
||||
* Implementation of program RFID_USB
|
||||
* With 4 readers
|
||||
********************************************************************)
|
||||
|
||||
PROGRAM _INIT
|
||||
udAttachDetachCount := 0;
|
||||
usNodeIx := 0;
|
||||
enStep := enRFIDStep_INIT;
|
||||
FUB_UsbDescriptorGet.descriptorType := asusb_USB_DESCR_STRING;
|
||||
FUB_UsbDescriptorGet.descriptorIndex := 3; //DeviceDescr Serial Nr
|
||||
|
||||
//Seriennumer Reader
|
||||
pudRFIDSerialReader1 := 3735632;
|
||||
END_PROGRAM
|
||||
|
||||
|
||||
PROGRAM _CYCLIC
|
||||
|
||||
CASE enStep OF
|
||||
//Init
|
||||
//---------------------------
|
||||
enRFIDStep_INIT:
|
||||
FUB_FrameRead1.enable := 0;
|
||||
FUB_FrameRead2.enable := 0;
|
||||
FUB_FrameRead3.enable := 0;
|
||||
FUB_FrameRead4.enable := 0;
|
||||
FUB_FrameReleaseBuffer1.enable := 0;
|
||||
FUB_FrameReleaseBuffer2.enable := 0;
|
||||
FUB_FrameReleaseBuffer3.enable := 0;
|
||||
FUB_FrameReleaseBuffer4.enable := 0;
|
||||
FUB_FrameWrite1.enable := 0;
|
||||
FUB_FrameWrite2.enable := 0;
|
||||
FUB_FrameWrite3.enable := 0;
|
||||
FUB_FrameWrite4.enable := 0;
|
||||
FUB_FrameXOpen1.enable := 0;
|
||||
FUB_FrameXOpen2.enable := 0;
|
||||
FUB_FrameXOpen3.enable := 0;
|
||||
FUB_FrameXOpen4.enable := 0;
|
||||
FUB_UsbNodeGet.enable := 0;
|
||||
FUB_UsbNodeListGet.enable := 0;
|
||||
enStep := enRFIDStep_USB_GETNODELIST;
|
||||
|
||||
//Get USB Nodelsit
|
||||
//---------------------------
|
||||
enRFIDStep_USB_GETNODELIST:
|
||||
FUB_UsbNodeListGet.enable := 1;
|
||||
FUB_UsbNodeListGet.pBuffer := ADR (udNodeList);
|
||||
FUB_UsbNodeListGet.bufferSize := SIZEOF (udNodeList);
|
||||
FUB_UsbNodeListGet.filterInterfaceClass := 0;
|
||||
FUB_UsbNodeListGet.filterInterfaceSubClass := 0;
|
||||
|
||||
IF (FUB_UsbNodeListGet.status = ERR_OK) AND (FUB_UsbNodeListGet.listNodes > 0) THEN
|
||||
// USB Device Attach or detach
|
||||
FUB_UsbNodeListGet.enable := 0;
|
||||
usNodeIx := 0;
|
||||
udAttachDetachCount := FUB_UsbNodeListGet.attachDetachCount;
|
||||
IF FUB_UsbNodeListGet.listNodes < NEEDED_DEVICES THEN
|
||||
enStep := enRFIDStep_USB_SEARCHDEVICE;
|
||||
//FixMe Error
|
||||
END_IF
|
||||
enStep := enRFIDStep_USB_SEARCHDEVICE;
|
||||
usFoundReaders := 0;
|
||||
END_IF
|
||||
//else if (UsbNodeListGetFub.status == asusbERR_BUFSIZE || UsbNodeListGetFub.status == asusbERR_NULLPOINTER)
|
||||
|
||||
//Serch Reader in USB Devices
|
||||
//---------------------------
|
||||
enRFIDStep_USB_SEARCHDEVICE:
|
||||
FUB_UsbNodeGet.enable := 1;
|
||||
FUB_UsbNodeGet.nodeId := udNodeList[usNodeIx];
|
||||
FUB_UsbNodeGet.pBuffer := ADR (usbDevice[usNodeIx]);
|
||||
FUB_UsbNodeGet.bufferSize := SIZEOF (usbDevice[usNodeIx]);
|
||||
|
||||
IF (FUB_UsbNodeGet.status = ERR_OK ) THEN
|
||||
FUB_UsbNodeGet.enable := 0;
|
||||
// USB FTDI Transponder
|
||||
IF (usbDevice[usNodeIx].vendorId = TRANSPONDER_FTDI_VENDOR_ID) AND
|
||||
(usbDevice[usNodeIx].productId = TRANSPONDER_FTDI_PRODUCT_ID) AND
|
||||
(usbDevice[usNodeIx].bcdDevice = TRANSPONDER_FTDI_BCD) THEN
|
||||
// USB FTDI Transponder found
|
||||
usFoundReaders := usFoundReaders + 1;
|
||||
ELSE
|
||||
udNodeList[usNodeIx] := 0; //Ignore
|
||||
END_IF
|
||||
|
||||
usNodeIx := usNodeIx + 1;
|
||||
IF (usNodeIx >= FUB_UsbNodeListGet.allNodes) THEN
|
||||
//Find individual Readers
|
||||
usNodeIx := 0;
|
||||
enStep := enRFIDStep_USB_READDEVDESCR;
|
||||
END_IF
|
||||
ELSIF (FUB_UsbNodeGet.status = asusbERR_USB_NOTFOUND) THEN
|
||||
// USB Device NOT found
|
||||
enStep := enRFIDStep_USB_GETNODELIST;
|
||||
END_IF
|
||||
//ELSE IF (FUB_UsbNodeGet.status == asusbERR_BUFSIZE || FUB_UsbNodeGet.status == asusbERR_NULLPOINTER)
|
||||
|
||||
//Get DeviceDescriptor
|
||||
enRFIDStep_USB_READDEVDESCR:
|
||||
FUB_UsbDescriptorGet.enable := (udNodeList[usNodeIx] > 0);
|
||||
FUB_UsbDescriptorGet.nodeId := udNodeList[usNodeIx];
|
||||
FUB_UsbDescriptorGet.requestType := asusb_USB_RT_DEVICE;
|
||||
FUB_UsbDescriptorGet.descriptorType := asusb_USB_DESCR_STRING;
|
||||
FUB_UsbDescriptorGet.descriptorIndex := 3; //DeviceDescr Serial Nr
|
||||
FUB_UsbDescriptorGet.languageId := 16#0409;
|
||||
FUB_UsbDescriptorGet.pBuffer := ADR (strDeviceDescr[usNodeIx]);
|
||||
FUB_UsbDescriptorGet.bufferSize := SIZEOF (strDeviceDescr[usNodeIx]);
|
||||
|
||||
IF (udNodeList[usNodeIx] = 0) THEN
|
||||
usNodeIx := usNodeIx + 1;
|
||||
ELSIF (FUB_UsbDescriptorGet.status = ERR_OK ) THEN
|
||||
FUB_UsbDescriptorGet.enable := 0;
|
||||
brsmemcpy (ADR (udSerialNr[usNodeIx]), ADR (strDeviceDescr[usNodeIx]) + 14, 4);
|
||||
usNodeIx := usNodeIx + 1;
|
||||
IF (udSerialNr[usNodeIx] = pudRFIDSerialReader1) AND (pudRFIDSerialReader1 > 0) THEN
|
||||
usNodeIxReader1 := usNodeIx;
|
||||
ELSIF (udSerialNr[usNodeIx] = pudRFIDSerialReader2) AND (pudRFIDSerialReader2 > 0) THEN
|
||||
usNodeIxReader2 := usNodeIx;
|
||||
ELSIF (udSerialNr[usNodeIx] = pudRFIDSerialReader3) AND (pudRFIDSerialReader3 > 0) THEN
|
||||
usNodeIxReader3 := usNodeIx;
|
||||
ELSIF (udSerialNr[usNodeIx] = pudRFIDSerialReader4) AND (pudRFIDSerialReader4 > 0) THEN
|
||||
usNodeIxReader4 := usNodeIx;
|
||||
END_IF
|
||||
IF (usNodeIx >= FUB_UsbNodeListGet.allNodes) THEN
|
||||
// Found All Devices
|
||||
usNodeIx := 55;
|
||||
enStep := enRFIDStep_IDLE;
|
||||
END_IF
|
||||
ELSIF (FUB_UsbDescriptorGet.status = asusbERR_USB_NOTFOUND) THEN
|
||||
// USB Device NOT found
|
||||
enStep := enRFIDStep_USB_GETNODELIST;
|
||||
END_IF
|
||||
END_CASE
|
||||
|
||||
|
||||
CASE enStepReader1 OF
|
||||
//Init
|
||||
//---------------------------
|
||||
enRFIDReaderStep_INIT:
|
||||
IF (usNodeIxReader1 < 55) THEN
|
||||
enStepReader1 := enRFIDReaderStep_USB_DVDEVOPEN;
|
||||
END_IF;
|
||||
|
||||
//Open Reader Devicer
|
||||
//---------------------------
|
||||
enRFIDReaderStep_USB_DVDEVOPEN:
|
||||
// initialize open structure */
|
||||
FUB_FrameXOpen1.device :=ADR (usbDevice[usNodeIxReader1].ifName);
|
||||
FUB_FrameXOpen1.mode := 0;
|
||||
FUB_FrameXOpen1.config := 0;
|
||||
FUB_FrameXOpen1.enable := (udNodeList[usNodeIxReader1] > 0);
|
||||
|
||||
IF (FUB_FrameXOpen1.status = frmERR_OK) THEN
|
||||
FUB_FrameWrite1.ident := FUB_FrameXOpen1.ident;
|
||||
FUB_FrameRead1.ident := FUB_FrameXOpen1.ident;
|
||||
FUB_FrameReleaseBuffer1.ident := FUB_FrameXOpen1.ident;
|
||||
FUB_FrameXOpen1.enable := 0;
|
||||
enStepReader1 := enRFIDReaderStep_INIT_READER;
|
||||
END_IF
|
||||
|
||||
//Get USB Nodelist
|
||||
//---------------------------
|
||||
enRFIDReaderStep_INIT_READER:
|
||||
// Register Write:
|
||||
// 5V operation, RF output active, full power; ISO 15693, low bit rate, 6.62 kbps, one subcarrier, 1 out OF 4
|
||||
//
|
||||
// 10 00 21 01 00
|
||||
// | | | | |
|
||||
// | | | | Value Register 0x01
|
||||
// | | | ISO Control Register (0x01)
|
||||
// | | Value Register 0x00
|
||||
// | Chip Status Control Register (0x00)
|
||||
// Register Write Cmd
|
||||
|
||||
// Set Protocol, 1 out OF 4, full power, low bit rate */
|
||||
brsstrcpy (ADR (strWriteData[1]), ADR ('1000210100'));
|
||||
brsstrcpy (ADR (strWriteDatalen[1]), ADR ('0C'));
|
||||
uiReadAnswer[1] := 1;
|
||||
enStepReader1 := enRFIDReaderStep_WRITE;
|
||||
|
||||
|
||||
//IDLE
|
||||
//---------------------------
|
||||
enRFIDReaderStep_IDLE:
|
||||
|
||||
CASE enCmd1 OF
|
||||
enRFIDCMD_NONE:
|
||||
|
||||
enRFIDCMD_READ_INVENTORY:
|
||||
// Inventory
|
||||
// 14 04 01 00
|
||||
// | | | |
|
||||
// | | | Mask Length
|
||||
// | | Anticollision Cmd
|
||||
// | Flags (Inventory flag = 1, HDR = 0)
|
||||
// Inventory request
|
||||
// inventory 16 slot
|
||||
brsstrcpy (ADR (strWriteData[1]), ADR ('14040100'));
|
||||
brsstrcpy (ADR (strWriteDatalen[1]), ADR ('0B'));
|
||||
uiReadAnswer[1] := 16; // 16 slot answer
|
||||
enStepReader1 := enRFIDReaderStep_WRITE;
|
||||
|
||||
enRFIDCMD_READ_SYSINFO:
|
||||
// Read System Info
|
||||
// 18 00 2B
|
||||
// | | |
|
||||
// | | Get System Info Cmd
|
||||
// | Flags (Option = 0, HDR = 0)
|
||||
// Request Cmd
|
||||
brsstrcpy (ADR (strWriteData[1]), ADR ('18002B'));
|
||||
brsstrcpy (ADR (strWriteDatalen[1]), ADR ('0A'));
|
||||
uiReadAnswer[1] := 1;
|
||||
enStepReader1 := enRFIDReaderStep_WRITE;
|
||||
|
||||
enRFIDCMD_READ_SBLOCK:
|
||||
// Read Single Block
|
||||
// 18 02 20
|
||||
// | | |
|
||||
// | | Read Single Block Cmd
|
||||
// | Flags (Option = 1, HDR = 0)
|
||||
// Request Cmd
|
||||
//
|
||||
// Option = 1: Return block security status
|
||||
brsstrcpy (ADR (strWriteData[1]), ADR ('184020')); // read block #1
|
||||
uiLength := brsitoa (usBlockNr, ADR (strTemp));
|
||||
IF (uiLength = 1) THEN
|
||||
brsstrcat (ADR (strWriteData[1]), ADR ('0'));
|
||||
END_IF
|
||||
brsstrcat (ADR (strWriteData[1]), ADR (strTemp));
|
||||
brsstrcpy (ADR (strWriteDatalen[1]), ADR ('0B'));
|
||||
uiReadAnswer[1] := 1;
|
||||
enStepReader1 := enRFIDReaderStep_WRITE;
|
||||
|
||||
|
||||
enRFIDCMD_WRITE_SBLOCK:
|
||||
// Write Single Block
|
||||
// 18 00 21
|
||||
// | | |
|
||||
// | | Write Single Block Cmd
|
||||
// | Flags (Option = 0, HDR = 0)
|
||||
// Request Cmd
|
||||
brsstrcpy (ADR (strWriteData[1]), ADR ('180021')); // write block #1 (Data = 0x12345678)
|
||||
uiLength := brsitoa (usBlockNr, ADR (strTemp));
|
||||
IF (uiLength = 1) THEN
|
||||
brsstrcat (ADR (strWriteData[1]), ADR ('0'));
|
||||
END_IF
|
||||
UDINTtoASC (ADR (strWriteData[1]) + 8, udWriteData);
|
||||
brsstrcpy (ADR (strWriteDatalen[1]), ADR ('0F'));
|
||||
uiReadAnswer[1] := 1;
|
||||
enStepReader1 := enRFIDReaderStep_WRITE;
|
||||
|
||||
enRFIDCMD_WRITE_AFI:
|
||||
// Write AFI
|
||||
// 18 00 30
|
||||
// | | |
|
||||
// | | Get System Info Cmd
|
||||
// | Flags (Option = 0, HDR = 0)
|
||||
// Request Cmd
|
||||
brsstrcpy (ADR (strWriteData[1]), ADR ('18002730')); // write AFI (0x30 = Identification)
|
||||
brsstrcpy (ADR (strWriteDatalen[1]), ADR ('0B'));
|
||||
uiReadAnswer[1] := 1;
|
||||
enStepReader1 := enRFIDReaderStep_WRITE;
|
||||
|
||||
enRFIDCMD_WRITE_DFSID:
|
||||
// Write DSFID
|
||||
// 18 00 29
|
||||
// | | |
|
||||
// | | Write DSFID Cmd
|
||||
// | Flags (Option = 0, HDR = 0)
|
||||
// Request Cmd
|
||||
brsstrcpy (ADR (strWriteData[1]), ADR ('18002918')); // write DSFID 0x18
|
||||
brsstrcpy (ADR (strWriteDatalen[1]), ADR ('0B'));
|
||||
uiReadAnswer[1] := 1;
|
||||
enStepReader1 := enRFIDReaderStep_WRITE;
|
||||
END_CASE
|
||||
|
||||
//WRITE
|
||||
//---------------------------
|
||||
enRFIDReaderStep_WRITE:
|
||||
// initialize write structure */
|
||||
//Frame Start
|
||||
brsstrcpy (ADR (strWriteTelegram[1]), ADR ('01'));
|
||||
//Length
|
||||
brsstrcat (ADR (strWriteTelegram[1]), ADR (strWriteDatalen[1]));
|
||||
//Const 00 + Start of Payload
|
||||
brsstrcat (ADR (strWriteTelegram[1]), ADR ('000304'));
|
||||
brsstrcat (ADR (strWriteTelegram[1]), ADR (strWriteData[1]));
|
||||
//Frame End + \n $r$n
|
||||
brsstrcat (ADR (strWriteTelegram[1]), ADR ('0000'));
|
||||
|
||||
FUB_FrameWrite1.buffer := ADR (strWriteTelegram[1]);
|
||||
FUB_FrameWrite1.buflng := UDINT_TO_UINT (brsstrlen (ADR (strWriteTelegram[1])));
|
||||
FUB_FrameWrite1.enable := 1;
|
||||
IF (FUB_FrameWrite1.status = frmERR_OK) THEN
|
||||
enStepReader1 := enRFIDReaderStep_READ;
|
||||
FUB_FrameWrite1.enable := 0;
|
||||
uiReadCount[1] := 0;
|
||||
END_IF
|
||||
|
||||
//READ
|
||||
//---------------------------
|
||||
enRFIDReaderStep_READ:
|
||||
// initialize read structure
|
||||
FUB_FrameRead1.enable := 1;
|
||||
pReadBuffer[1] := FUB_FrameRead1.buffer; // get adress OF read buffer */
|
||||
uiReadBufferLength[1] := FUB_FrameRead1.buflng; // get length OF read buffer */
|
||||
|
||||
IF (FUB_FrameRead1.status = frmERR_NOINPUT) THEN
|
||||
enStepReader1 := enRFIDReaderStep_WRITE; //Wiederholen
|
||||
ELSIF (FUB_FrameRead1.status = frmERR_OK) THEN
|
||||
udTemp := 0;
|
||||
brsmemset (ADR (strReadData[1]), 0, SIZEOF (strReadData[1]));
|
||||
brsmemcpy (ADR (strReadData[1]), pReadBuffer[1], uiReadBufferLength[1]); // copy read data into array */
|
||||
IF (uiReadBufferLength[1] > 7) THEN
|
||||
brsstrcpy (ADR (strReadTag[1]), ADR (strReadData[1])); // copy read data into Tag array */
|
||||
END_IF
|
||||
IF (uiReadBufferLength[1] = 16) THEN
|
||||
udTemp := ASCtoUDINT (ADR (strReadData[1]) + 5, FALSE);
|
||||
END_IF
|
||||
IF (uiReadBufferLength[1] >= 23) THEN
|
||||
//TagID Slot
|
||||
udTemp := ASCtoUDINT (ADR (strReadData[1]) + 2, TRUE);
|
||||
END_IF
|
||||
|
||||
// initialize release buffer structure */
|
||||
FUB_FrameReleaseBuffer1.enable := 1;
|
||||
FUB_FrameReleaseBuffer1.buffer := pReadBuffer[1];
|
||||
FUB_FrameReleaseBuffer1.buflng := uiReadBufferLength[1];
|
||||
FUB_FrameReleaseBuffer1 ();
|
||||
|
||||
uiReadCount[1] := uiReadCount[1] + 1;
|
||||
IF udTemp > 0 THEN
|
||||
gudRFIDReader1ID := udTemp;
|
||||
udSave := udTemp;
|
||||
END_IF
|
||||
IF (uiReadCount[1] = uiReadAnswer[1]) THEN
|
||||
FUB_FrameRead1.enable := 0;
|
||||
enStepReader1 := enRFIDReaderStep_IDLE;
|
||||
enCmd1 := enRFIDCMD_NONE;
|
||||
END_IF
|
||||
END_IF
|
||||
END_CASE
|
||||
|
||||
|
||||
CASE enStepReader2 OF
|
||||
//Init
|
||||
//---------------------------
|
||||
enRFIDReaderStep_INIT:
|
||||
IF (usNodeIxReader2 < 55) AND (NEEDED_DEVICES >= 2) THEN
|
||||
enStepReader2 := enRFIDReaderStep_USB_DVDEVOPEN;
|
||||
END_IF;
|
||||
|
||||
//Open Reader Devicer
|
||||
//---------------------------
|
||||
enRFIDReaderStep_USB_DVDEVOPEN:
|
||||
// initialize open structure */
|
||||
FUB_FrameXOpen2.device :=ADR (usbDevice[usNodeIxReader2].ifName);
|
||||
FUB_FrameXOpen2.mode := 0;
|
||||
FUB_FrameXOpen2.config := 0;
|
||||
FUB_FrameXOpen2.enable := (udNodeList[usNodeIxReader2] > 0);
|
||||
|
||||
IF (FUB_FrameXOpen2.status = frmERR_OK) THEN
|
||||
FUB_FrameWrite2.ident := FUB_FrameXOpen2.ident;
|
||||
FUB_FrameRead2.ident := FUB_FrameXOpen2.ident;
|
||||
FUB_FrameReleaseBuffer2.ident := FUB_FrameXOpen2.ident;
|
||||
FUB_FrameXOpen2.enable := 0;
|
||||
enStepReader2 := enRFIDReaderStep_INIT_READER;
|
||||
END_IF
|
||||
|
||||
//Get USB Nodelist
|
||||
//---------------------------
|
||||
enRFIDReaderStep_INIT_READER:
|
||||
// Register Write:
|
||||
// 5V operation, RF output active, full power; ISO 15693, low bit rate, 6.62 kbps, one subcarrier, 1 out OF 4
|
||||
//
|
||||
// 10 00 21 01 00
|
||||
// | | | | |
|
||||
// | | | | Value Register 0x01
|
||||
// | | | ISO Control Register (0x01)
|
||||
// | | Value Register 0x00
|
||||
// | Chip Status Control Register (0x00)
|
||||
// Register Write Cmd
|
||||
|
||||
// Set Protocol, 1 out OF 4, full power, low bit rate */
|
||||
brsstrcpy (ADR (strWriteData[2]), ADR ('1000210100'));
|
||||
brsstrcpy (ADR (strWriteDatalen[2]), ADR ('0C'));
|
||||
uiReadAnswer[2] := 1;
|
||||
enStepReader2 := enRFIDReaderStep_WRITE;
|
||||
|
||||
|
||||
//IDLE
|
||||
//---------------------------
|
||||
enRFIDReaderStep_IDLE:
|
||||
|
||||
CASE enCmd2 OF
|
||||
enRFIDCMD_NONE:
|
||||
|
||||
enRFIDCMD_READ_INVENTORY:
|
||||
// Inventory
|
||||
// 14 04 01 00
|
||||
// | | | |
|
||||
// | | | Mask Length
|
||||
// | | Anticollision Cmd
|
||||
// | Flags (Inventory flag = 1, HDR = 0)
|
||||
// Inventory request
|
||||
// inventory 16 slot
|
||||
brsstrcpy (ADR (strWriteData[2]), ADR ('14040100'));
|
||||
brsstrcpy (ADR (strWriteDatalen[2]), ADR ('0B'));
|
||||
uiReadAnswer[2] := 16; // 16 slot answer
|
||||
enStepReader2 := enRFIDReaderStep_WRITE;
|
||||
|
||||
enRFIDCMD_READ_SYSINFO:
|
||||
// Read System Info
|
||||
// 18 00 2B
|
||||
// | | |
|
||||
// | | Get System Info Cmd
|
||||
// | Flags (Option = 0, HDR = 0)
|
||||
// Request Cmd
|
||||
brsstrcpy (ADR (strWriteData[2]), ADR ('18002B'));
|
||||
brsstrcpy (ADR (strWriteDatalen[2]), ADR ('0A'));
|
||||
uiReadAnswer[2] := 1;
|
||||
enStepReader2 := enRFIDReaderStep_WRITE;
|
||||
|
||||
enRFIDCMD_READ_SBLOCK:
|
||||
// Read Single Block
|
||||
// 18 02 20
|
||||
// | | |
|
||||
// | | Read Single Block Cmd
|
||||
// | Flags (Option = 1, HDR = 0)
|
||||
// Request Cmd
|
||||
//
|
||||
// Option = 1: Return block security status
|
||||
brsstrcpy (ADR (strWriteData[2]), ADR ('184020')); // read block #1
|
||||
uiLength := brsitoa (usBlockNr, ADR (strTemp));
|
||||
IF (uiLength = 1) THEN
|
||||
brsstrcat (ADR (strWriteData[2]), ADR ('0'));
|
||||
END_IF
|
||||
brsstrcat (ADR (strWriteData[2]), ADR (strTemp));
|
||||
brsstrcpy (ADR (strWriteDatalen[2]), ADR ('0B'));
|
||||
uiReadAnswer[2] := 1;
|
||||
enStepReader2 := enRFIDReaderStep_WRITE;
|
||||
|
||||
|
||||
enRFIDCMD_WRITE_SBLOCK:
|
||||
// Write Single Block
|
||||
// 18 00 21
|
||||
// | | |
|
||||
// | | Write Single Block Cmd
|
||||
// | Flags (Option = 0, HDR = 0)
|
||||
// Request Cmd
|
||||
brsstrcpy (ADR (strWriteData[2]), ADR ('180021')); // write block #1 (Data = 0x12345678)
|
||||
uiLength := brsitoa (usBlockNr, ADR (strTemp));
|
||||
IF (uiLength = 1) THEN
|
||||
brsstrcat (ADR (strWriteData[2]), ADR ('0'));
|
||||
END_IF
|
||||
UDINTtoASC (ADR (strWriteData[2]) + 8, udWriteData);
|
||||
brsstrcpy (ADR (strWriteDatalen[2]), ADR ('0F'));
|
||||
uiReadAnswer[2] := 1;
|
||||
enStepReader2 := enRFIDReaderStep_WRITE;
|
||||
|
||||
enRFIDCMD_WRITE_AFI:
|
||||
// Write AFI
|
||||
// 18 00 30
|
||||
// | | |
|
||||
// | | Get System Info Cmd
|
||||
// | Flags (Option = 0, HDR = 0)
|
||||
// Request Cmd
|
||||
brsstrcpy (ADR (strWriteData[2]), ADR ('18002730')); // write AFI (0x30 = Identification)
|
||||
brsstrcpy (ADR (strWriteDatalen[2]), ADR ('0B'));
|
||||
uiReadAnswer[2] := 1;
|
||||
enStepReader2 := enRFIDReaderStep_WRITE;
|
||||
|
||||
enRFIDCMD_WRITE_DFSID:
|
||||
// Write DSFID
|
||||
// 18 00 29
|
||||
// | | |
|
||||
// | | Write DSFID Cmd
|
||||
// | Flags (Option = 0, HDR = 0)
|
||||
// Request Cmd
|
||||
brsstrcpy (ADR (strWriteData[2]), ADR ('18002918')); // write DSFID 0x18
|
||||
brsstrcpy (ADR (strWriteDatalen[2]), ADR ('0B'));
|
||||
uiReadAnswer[2] := 1;
|
||||
enStepReader2 := enRFIDReaderStep_WRITE;
|
||||
END_CASE
|
||||
|
||||
//WRITE
|
||||
//---------------------------
|
||||
enRFIDReaderStep_WRITE:
|
||||
// initialize write structure */
|
||||
//Frame Start
|
||||
brsstrcpy (ADR (strWriteTelegram[2]), ADR ('01'));
|
||||
//Length
|
||||
brsstrcat (ADR (strWriteTelegram[2]), ADR (strWriteDatalen[2]));
|
||||
//Const 00 + Start of Payload
|
||||
brsstrcat (ADR (strWriteTelegram[2]), ADR ('000304'));
|
||||
brsstrcat (ADR (strWriteTelegram[2]), ADR (strWriteData[2]));
|
||||
//Frame End
|
||||
brsstrcat (ADR (strWriteTelegram[2]), ADR ('0000'));
|
||||
FUB_FrameWrite2.buffer := ADR (strWriteTelegram[2]);
|
||||
FUB_FrameWrite2.buflng := UDINT_TO_UINT (brsstrlen (ADR (strWriteTelegram[2])));
|
||||
FUB_FrameWrite2.enable := 1;
|
||||
IF (FUB_FrameWrite2.status = frmERR_OK) THEN
|
||||
enStepReader2 := enRFIDReaderStep_READ;
|
||||
FUB_FrameWrite2.enable := 0;
|
||||
uiReadCount[2] := 0;
|
||||
END_IF
|
||||
|
||||
//READ
|
||||
//---------------------------
|
||||
enRFIDReaderStep_READ:
|
||||
// initialize read structure
|
||||
FUB_FrameRead2.enable := 1;
|
||||
pReadBuffer[2] := FUB_FrameRead2.buffer; // get adress OF read buffer */
|
||||
uiReadBufferLength[2] := FUB_FrameRead2.buflng; // get length OF read buffer */
|
||||
|
||||
IF (FUB_FrameRead2.status = frmERR_OK) THEN
|
||||
udTemp := 0;
|
||||
brsmemset (ADR (strReadData[2]), 0, SIZEOF (strReadData[2]));
|
||||
brsmemcpy (ADR (strReadData[2]), pReadBuffer[2], uiReadBufferLength[2]); // copy read data into array */
|
||||
IF (uiReadBufferLength[2] > 7) THEN
|
||||
brsstrcpy (ADR (strReadTag[2]), ADR (strReadData[2])); // copy read data into Tag array */
|
||||
END_IF
|
||||
IF (uiReadBufferLength[2] = 16) THEN
|
||||
udTemp := ASCtoUDINT (ADR (strReadData[2]) + 5, FALSE);
|
||||
END_IF
|
||||
IF (uiReadBufferLength[2] >= 23) THEN
|
||||
//TagID Slot
|
||||
udTemp := ASCtoUDINT (ADR (strReadData[2]) + 2, TRUE);
|
||||
END_IF
|
||||
|
||||
// initialize release buffer structure */
|
||||
FUB_FrameReleaseBuffer2.enable := 1;
|
||||
FUB_FrameReleaseBuffer2.buffer := pReadBuffer[2];
|
||||
FUB_FrameReleaseBuffer2.buflng := uiReadBufferLength[2];
|
||||
FUB_FrameReleaseBuffer2 ();
|
||||
|
||||
uiReadCount[2] := uiReadCount[2] + 1;
|
||||
|
||||
IF udTemp > 0 THEN
|
||||
gudRFIDReader2ID := udTemp;
|
||||
END_IF
|
||||
IF (uiReadCount[2] = uiReadAnswer[2]) THEN
|
||||
FUB_FrameRead2.enable := 0;
|
||||
enStepReader2 := enRFIDReaderStep_IDLE;
|
||||
enCmd2 := enRFIDCMD_NONE;
|
||||
END_IF
|
||||
END_IF
|
||||
END_CASE
|
||||
|
||||
|
||||
TON_Read1.IN := (enStepReader1 = enRFIDReaderStep_IDLE) AND (enCmd1 = enRFIDCMD_NONE) AND (NEEDED_DEVICES >= 1);
|
||||
TON_Read1.PT := t#1s;
|
||||
TON_Read1 ();
|
||||
IF TON_Read1.Q THEN
|
||||
enCmd1 := enRFIDCMD_READ_INVENTORY;
|
||||
END_IF
|
||||
TON_Read2.IN := (enStepReader2 = enRFIDReaderStep_IDLE) AND (enCmd2 = enRFIDCMD_NONE) AND (NEEDED_DEVICES >= 2);
|
||||
TON_Read2.PT := t#1s;
|
||||
TON_Read2 ();
|
||||
IF TON_Read2.Q THEN
|
||||
enCmd2 := enRFIDCMD_READ_INVENTORY;
|
||||
END_IF
|
||||
TON_Read3.IN := (enStepReader3 = enRFIDReaderStep_IDLE) AND (enCmd3 = enRFIDCMD_NONE AND (NEEDED_DEVICES >= 3));
|
||||
TON_Read3.PT := t#1s;
|
||||
TON_Read3 ();
|
||||
IF TON_Read3.Q THEN
|
||||
enCmd3 := enRFIDCMD_READ_INVENTORY;
|
||||
END_IF
|
||||
TON_Read4.IN := (enStepReader4 = enRFIDReaderStep_IDLE) AND (enCmd4 = enRFIDCMD_NONE AND (NEEDED_DEVICES >= 4));
|
||||
TON_Read4.PT := t#1s;
|
||||
TON_Read4 ();
|
||||
IF TON_Read4.Q THEN
|
||||
enCmd4 := enRFIDCMD_READ_INVENTORY;
|
||||
END_IF
|
||||
|
||||
//Call FUBs
|
||||
FUB_FrameRead1 ();
|
||||
FUB_FrameRead2 ();
|
||||
FUB_FrameRead3 ();
|
||||
FUB_FrameRead4 ();
|
||||
FUB_FrameWrite1 ();
|
||||
FUB_FrameWrite2 ();
|
||||
FUB_FrameWrite3 ();
|
||||
FUB_FrameWrite4 ();
|
||||
FUB_FrameXOpen1 ();
|
||||
FUB_FrameXOpen2 ();
|
||||
FUB_FrameXOpen3 ();
|
||||
FUB_FrameXOpen4 ();
|
||||
FUB_UsbNodeGet ();
|
||||
FUB_UsbNodeListGet ();
|
||||
FUB_UsbDescriptorGet ();
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
PROGRAM _EXIT
|
||||
|
||||
|
||||
(* TODO : Add your code here *)
|
||||
|
||||
|
||||
END_PROGRAM
|
||||
30
Logical/Communication/RFID/RFID_USB/RFID_USB.typ
Normal file
30
Logical/Communication/RFID/RFID_USB/RFID_USB.typ
Normal file
@@ -0,0 +1,30 @@
|
||||
|
||||
TYPE
|
||||
typ_enStepRFID :
|
||||
( (*Schritte RFID Leser*)
|
||||
enRFIDStep_INIT, (*Init -> Search Reader*)
|
||||
enRFIDStep_USB_GETNODELIST, (*Get USB Devices*)
|
||||
enRFIDStep_USB_SEARCHDEVICE, (*Search Reader in Devices*)
|
||||
enRFIDStep_USB_READDEVDESCR, (*Get Device Descriptor*)
|
||||
enRFIDStep_IDLE
|
||||
);
|
||||
typ_enCmdRFID :
|
||||
(
|
||||
enRFIDCMD_NONE,
|
||||
enRFIDCMD_READ_INVENTORY,
|
||||
enRFIDCMD_READ_SYSINFO,
|
||||
enRFIDCMD_READ_SBLOCK,
|
||||
enRFIDCMD_WRITE_SBLOCK,
|
||||
enRFIDCMD_WRITE_AFI,
|
||||
enRFIDCMD_WRITE_DFSID
|
||||
);
|
||||
typ_enStepRFIDReader :
|
||||
( (*Schritte RFID Leser*)
|
||||
enRFIDReaderStep_INIT, (*Init -> Search Reader*)
|
||||
enRFIDReaderStep_USB_DVDEVOPEN, (*Open Reader*)
|
||||
enRFIDReaderStep_INIT_READER, (*Initialize Reader*)
|
||||
enRFIDReaderStep_IDLE, (*Wait for commands*)
|
||||
enRFIDReaderStep_READ, (*READ from Reader*)
|
||||
enRFIDReaderStep_WRITE (*WRITE to Reader*)
|
||||
);
|
||||
END_TYPE
|
||||
71
Logical/Communication/RFID/RFID_USB/RFID_USB.var
Normal file
71
Logical/Communication/RFID/RFID_USB/RFID_USB.var
Normal file
@@ -0,0 +1,71 @@
|
||||
VAR
|
||||
sizeUsbNode : USINT;
|
||||
END_VAR
|
||||
VAR RETAIN
|
||||
usNodeIx : USINT;
|
||||
END_VAR
|
||||
VAR
|
||||
usFoundReaders : USINT;
|
||||
usNodeIxReader1 : USINT; (*Node Index Reader 1*)
|
||||
usNodeIxReader2 : USINT; (*Node Index Reader 2*)
|
||||
usNodeIxReader3 : USINT; (*Node Index Reader 3*)
|
||||
usNodeIxReader4 : USINT; (*Node Index Reader 4*)
|
||||
usBlockNr : USINT;
|
||||
udSerialNr : ARRAY[0..31] OF UDINT;
|
||||
uiReadAnswer : ARRAY[1..4] OF UINT;
|
||||
uiReadBufferLength : ARRAY[1..4] OF UINT;
|
||||
uiReadCount : ARRAY[1..4] OF UINT;
|
||||
uiLength : UINT;
|
||||
udAttachDetachCount : UDINT;
|
||||
udNodeList : ARRAY[0..31] OF UDINT;
|
||||
pReadBuffer : ARRAY[1..4] OF UDINT;
|
||||
udTemp : UDINT;
|
||||
udSave : UDINT;
|
||||
udWriteData : UDINT;
|
||||
strReadData : ARRAY[1..4] OF STRING[80];
|
||||
strReadTag : ARRAY[1..4] OF STRING[80];
|
||||
strDeviceDescr : ARRAY[1..4] OF WSTRING[80];
|
||||
strWriteData : ARRAY[1..4] OF STRING[80];
|
||||
strWriteDatalen : ARRAY[1..4] OF STRING[2];
|
||||
strWriteTelegram : ARRAY[1..4] OF STRING[80];
|
||||
strTemp : STRING[2];
|
||||
enStep : typ_enStepRFID;
|
||||
enStepReader1 : typ_enStepRFIDReader;
|
||||
enStepReader2 : typ_enStepRFIDReader;
|
||||
enStepReader3 : typ_enStepRFIDReader;
|
||||
enStepReader4 : typ_enStepRFIDReader;
|
||||
enCmd1 : typ_enCmdRFID;
|
||||
enCmd2 : typ_enCmdRFID;
|
||||
enCmd3 : typ_enCmdRFID;
|
||||
enCmd4 : typ_enCmdRFID;
|
||||
usbDevice : ARRAY[0..31] OF usbNode_typ;
|
||||
FUB_FrameRead1 : FRM_read;
|
||||
FUB_FrameRead2 : FRM_read;
|
||||
FUB_FrameRead3 : FRM_read;
|
||||
FUB_FrameRead4 : FRM_read;
|
||||
FUB_FrameReleaseBuffer1 : FRM_rbuf;
|
||||
FUB_FrameReleaseBuffer2 : FRM_rbuf;
|
||||
FUB_FrameReleaseBuffer3 : FRM_rbuf;
|
||||
FUB_FrameReleaseBuffer4 : FRM_rbuf;
|
||||
FUB_FrameWrite1 : FRM_write;
|
||||
FUB_FrameWrite2 : FRM_write;
|
||||
FUB_FrameWrite3 : FRM_write;
|
||||
FUB_FrameWrite4 : FRM_write;
|
||||
FUB_FrameXOpen1 : FRM_xopen;
|
||||
FUB_FrameXOpen2 : FRM_xopen;
|
||||
FUB_FrameXOpen3 : FRM_xopen;
|
||||
FUB_FrameXOpen4 : FRM_xopen;
|
||||
FUB_UsbNodeGet : UsbNodeGet;
|
||||
FUB_UsbNodeListGet : UsbNodeListGet;
|
||||
FUB_UsbDescriptorGet : UsbDescriptorGet;
|
||||
TON_Read1 : TON;
|
||||
TON_Read2 : TON;
|
||||
TON_Read3 : TON;
|
||||
TON_Read4 : TON;
|
||||
END_VAR
|
||||
VAR CONSTANT
|
||||
TRANSPONDER_FTDI_VENDOR_ID : UINT := 16#0403;
|
||||
TRANSPONDER_FTDI_PRODUCT_ID : UINT := 16#6001;
|
||||
TRANSPONDER_FTDI_BCD : UINT := 16#0600;
|
||||
NEEDED_DEVICES : USINT := 1; (*4 RFID Leserverbaut*)
|
||||
END_VAR
|
||||
44
Logical/Communication/RFID/RFID_USB/UDINTtoASC.st
Normal file
44
Logical/Communication/RFID/RFID_USB/UDINTtoASC.st
Normal file
@@ -0,0 +1,44 @@
|
||||
FUNCTION UDINTtoASC
|
||||
UDINTtoASC := udNextAdr + 8;
|
||||
udNextAdr := udInNextAdr;
|
||||
udValue := udInValue;
|
||||
FOR usi:=7 TO 0 BY -1 DO
|
||||
usChar := UDINT_TO_USINT (udValue MOD 16);
|
||||
usChar := UDINT_TO_USINT (udValue / 16);
|
||||
brsmemcpy (ADR (usChar), udNextAdr + usi, 1);
|
||||
CASE usChar OF
|
||||
0:
|
||||
brsmemcpy (udNextAdr + usi, ADR ('0'), 1);
|
||||
1:
|
||||
brsmemcpy (udNextAdr + usi, ADR ('1'), 1);
|
||||
2:
|
||||
brsmemcpy (udNextAdr + usi, ADR ('2'), 1);
|
||||
3:
|
||||
brsmemcpy (udNextAdr + usi, ADR ('3'), 1);
|
||||
4:
|
||||
brsmemcpy (udNextAdr + usi, ADR ('4'), 1);
|
||||
5:
|
||||
brsmemcpy (udNextAdr + usi, ADR ('5'), 1);
|
||||
6:
|
||||
brsmemcpy (udNextAdr + usi, ADR ('6'), 1);
|
||||
7:
|
||||
brsmemcpy (udNextAdr + usi, ADR ('7'), 1);
|
||||
8:
|
||||
brsmemcpy (udNextAdr + usi, ADR ('8'), 1);
|
||||
9:
|
||||
brsmemcpy (udNextAdr + usi, ADR ('9'), 1);
|
||||
10:
|
||||
brsmemcpy (udNextAdr + usi, ADR ('A'), 1);
|
||||
11:
|
||||
brsmemcpy (udNextAdr + usi, ADR ('B'), 1);
|
||||
12:
|
||||
brsmemcpy (udNextAdr + usi, ADR ('C'), 1);
|
||||
13:
|
||||
brsmemcpy (udNextAdr + usi, ADR ('D'), 1);
|
||||
14:
|
||||
brsmemcpy (udNextAdr + usi, ADR ('E'), 1);
|
||||
15:
|
||||
brsmemcpy (udNextAdr + usi, ADR ('F'), 1);
|
||||
END_CASE
|
||||
END_FOR
|
||||
END_FUNCTION
|
||||
79
Logical/GlobalVars/Global.typ
Normal file
79
Logical/GlobalVars/Global.typ
Normal file
@@ -0,0 +1,79 @@
|
||||
|
||||
TYPE
|
||||
ACPinverter_typ : STRUCT (*Acopos Inverter*)
|
||||
bModuleOK : BOOL;
|
||||
In : ACPinverterIn_typ;
|
||||
Out : ACPinverterOut_typ;
|
||||
END_STRUCT;
|
||||
ACPinverterIn_typ : STRUCT (*Acopos Inverter Inputs*)
|
||||
bStat00_ReadytoSwitchOn : BOOL;
|
||||
bStat01_SwitchedOnReady : BOOL;
|
||||
bstat02_Enabled : BOOL;
|
||||
bStat03_FaultDetecton : BOOL;
|
||||
bStat04_VoltageDisabled : BOOL;
|
||||
bStat05_QuickstopINV : BOOL;
|
||||
bStat06_SwitchedOnDisabled : BOOL;
|
||||
bStat07_Alarm : BOOL;
|
||||
bStat09_ReferenceViaNetwork : BOOL;
|
||||
bStat10_TargetReferenceReached : BOOL;
|
||||
bStat11_InternalLimitActive : BOOL;
|
||||
bStat14_StopViaKey : BOOL;
|
||||
bStat15_RotationDirection : BOOL;
|
||||
bExtStat00_EEPROM_NonVolatile : BOOL;
|
||||
bExtStat01_ParameterConsCheck : BOOL;
|
||||
bExtStat02_DriveInFault : BOOL;
|
||||
bExtStat04_SpeedModeActive : BOOL;
|
||||
bExtStat05_DCInjection : BOOL;
|
||||
bExtStat06_TransientState : BOOL;
|
||||
bExtStat07_ThermalTreshold : BOOL;
|
||||
bExtStat08_Overbraking : BOOL;
|
||||
bExtStat09_Accelerating : BOOL;
|
||||
bExtStat10_Decellerating : BOOL;
|
||||
bExtStat11_I_Limited : BOOL;
|
||||
bExtStat12_FastStopping : BOOL;
|
||||
bExtStat13_ExtControlled0 : BOOL;
|
||||
bExtStat14_ExtCondrolled1 : BOOL;
|
||||
bExtStat15_OperationDir : BOOL;
|
||||
iRFRD_Velocity : INT;
|
||||
iOTR_Torque : INT;
|
||||
uiLCR_Current : UINT;
|
||||
uiTHD_ThermalStateDrive : UINT;
|
||||
uiTHR_ThermalStatMotor : UINT;
|
||||
bInputLI1 : BOOL;
|
||||
bInputLI2 : BOOL;
|
||||
bInputLI3 : BOOL;
|
||||
bInputLI4 : BOOL;
|
||||
bRelay2State : BOOL;
|
||||
uiErrorCode : UINT;
|
||||
iLastFault : INT;
|
||||
END_STRUCT;
|
||||
ACPinverterOut_typ : STRUCT (*Acopos Inverter Outputs*)
|
||||
bCmd00_SwitchOn : BOOL;
|
||||
bCmd01_DisableVoltage : BOOL;
|
||||
bCmd02_QuickStop : BOOL;
|
||||
bCmd03_EnableOperation : BOOL;
|
||||
bCmd07_ResetFault : BOOL;
|
||||
bCmd11_Direction : BOOL;
|
||||
bCmd12_StopCommand : BOOL;
|
||||
bCmd13 : BOOL;
|
||||
bCmd14 : BOOL;
|
||||
bCmd15 : BOOL;
|
||||
bCmi00_FactorySettings : BOOL;
|
||||
bCmi01_SaveToEEPROM : BOOL;
|
||||
bCmi03_ExternalFault : BOOL;
|
||||
bCmi04_RampSwitching : BOOL;
|
||||
bCmi09_FrequencyReference : BOOL;
|
||||
bCmi13_LockOnStandstill : BOOL;
|
||||
bCmi15_CheckParameterConsitency : BOOL;
|
||||
iLFR_Setpointspeed : INT;
|
||||
bOR_Relay2 : BOOL;
|
||||
END_STRUCT;
|
||||
PushButton_typ : STRUCT (*Leuchtringtaster*)
|
||||
bInKeyStatus : BOOL; (*Taster - Status*)
|
||||
bOuGreen : BOOL; (*Leuchtring Gr<47>n*)
|
||||
bOuYellow : BOOL; (*Leuchtring Gelb*)
|
||||
bOuRed : BOOL; (*Leuchtring Rot*)
|
||||
bOuWhite : BOOL; (*Leuchtring Wei<65>*)
|
||||
bOuBlue : BOOL; (*Leuchtring Blau (Optional)*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
198
Logical/GlobalVars/Global.var
Normal file
198
Logical/GlobalVars/Global.var
Normal file
@@ -0,0 +1,198 @@
|
||||
(*================================================================================================================*)
|
||||
(*CPU (PWLnk Node 240)*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
VAR
|
||||
udSerialNr : UDINT; (*Seriennummer*)
|
||||
guiTemperatureCPU : UINT; (*CPU Temperatur*)
|
||||
guiTemperatureENV : UINT; (*Umgebungstemperatur*)
|
||||
gdiSystemTime : DINT; (*Systemzeit [<5B>s]*)
|
||||
END_VAR
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*IF1.ST20 - X67DI1371*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
VAR
|
||||
gbST20ModuleOk : BOOL;
|
||||
gPB1 : PushButton_typ; (*Leuchtringtaster 1*)
|
||||
gPB2 : PushButton_typ; (*Leuchtringtaster 2*)
|
||||
gPB3 : PushButton_typ; (*Leuchtringtaster 3*)
|
||||
gPB4 : PushButton_typ; (*Leuchtringtaster 4*)
|
||||
gPB5 : PushButton_typ; (*Leuchtringtaster 5*)
|
||||
END_VAR
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*IF1.ST3 - SLX811*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
VAR
|
||||
gbSLXModuleOk : BOOL;
|
||||
END_VAR
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*Signals to Safe PLC*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
VAR
|
||||
gbSPLCResetEStop : BOOL; (*Reset Not-Halt*)
|
||||
gbSPLCResetDoors : BOOL; (*Reset T<>ren*)
|
||||
gbSPLCReadbackEstop : BOOL; (*R<>ckf<6B>hrkreis*)
|
||||
END_VAR
|
||||
(*R<>cklesesignale direkt von Eingang gemappt*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*Signals from Safe PLC*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
VAR
|
||||
gbSPLCInEstopOk : BOOL; (*Safety PLC E-Stop ist Ok*)
|
||||
gbSPLCInDoorsOk : BOOL; (*Safety PLC T<>rkreis it Ok*)
|
||||
gbSPLCInErrorReadBackEStop : BOOL; (*Safety PlC Fehler R<>ckf<6B>hrkreis Netzsch<63>tze (PV Mapping von DI)*)
|
||||
guiSPLCInESTOPDiag : UINT; (*DiagnoseCode E-Stop*)
|
||||
END_VAR
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*I/O from SLX*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
VAR
|
||||
gbSInMaintDoor1Ok : BOOL; (*Sicherer Eingang 01/02 Equivalent - Schutztuer 1 Ok*)
|
||||
gbSInMaintDoor2Ok : BOOL; (*Sicherer Eingang 03/04 Equivalent - Schutztuer 2 Ok*)
|
||||
gbSInMaintDoor3Ok : BOOL; (*Sicherer Eingang 05/06 Equivalent - Schutztuer 3 Ok*)
|
||||
gbSInMaintDoor4Ok : BOOL; (*Sicherer Eingang 07/08 Equivalent - Schutztuer 4 Ok*)
|
||||
gusST3FBK_2ChStatus12 : USINT; (*Status 2-kanal*)
|
||||
gusST3FBK_2ChStatus34 : USINT; (*Status 2-kanal*)
|
||||
gusST3FBK_2ChStatus56 : USINT; (*Status 2-kanal*)
|
||||
gusST3FBK_2ChStatus78 : USINT; (*Status 2-kanal*)
|
||||
END_VAR
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*IF1.ST4 - SC2212*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
VAR
|
||||
gbSInMaintDoor5Ok : BOOL; (*Sicherer Eingang 01/02 Equivalent - Schutztuer 5 Ok*)
|
||||
gbSInEStopRobotOk : BOOL; (*Sicherer Eingang 03/04 Equivalent - Nothalt von Roboter Ok*)
|
||||
gbSInEStop1Ok : BOOL; (*Sicherer Eingang 05/06 Equivalent - Nothalt Bedientableau Ok*)
|
||||
gbSOuMainValveAir : BOOL; (*Sicherer Ausgang 01 - Freigabe Luft*)
|
||||
gusST4FBK_2ChStatus12 : USINT; (*Status 2-kanal*)
|
||||
gusST4FBK_2ChStatus34 : USINT; (*Status 2-kanal*)
|
||||
gusST4FBK_2ChStatus56 : USINT; (*Status 2-kanal*)
|
||||
guiST4FBK_StatusRestInhibit : UINT; (*Status Wiederanlaufsperre*)
|
||||
END_VAR
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*IF1.ST5 - SO6300*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
VAR
|
||||
gbSOuEnable8T1 : BOOL; (*Sicherer Ausgang 01 - Freigabe KEB Umrichter*)
|
||||
gbSOuEnable10T1 : BOOL; (*Sicherer Ausgang 02 - Freigabe Acopos Umrichter*)
|
||||
gbSOuMains8T10_10T1 : BOOL; (*Sicherer Ausgang 03 - Netzsch<63>tz KEB/Acopos Umrichter*)
|
||||
gbSOuMainsBunker : BOOL; (*Sicherer Ausgang 04 - Netzsch<63>tz Bunkerband*)
|
||||
gudST5FBK_StatusRestInhibit : UDINT; (*Status Wiederanlaufsperre*)
|
||||
END_VAR
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*IF1.ST5 - SO6530*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
VAR
|
||||
gbSOuRobotEStop : BOOL; (*Sicherer Ausgang 01/02 Nothalt 2-kanalig an Roboter (General Stop / EStop)*)
|
||||
gbSOuRobotAStop : BOOL; (*Sicherer Ausgang 03/04 Auto-Stop 2-kanalig an Roboter*)
|
||||
gbSOuSafetyOk : BOOL; (*Sicherer Ausgang 05/06 Sicherheit Ok*)
|
||||
END_VAR
|
||||
(*IF1.ST5 - DI9371 (Eing<6E>nge Allgemein)*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*//1Spare*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*IF1.ST6 - DI9371 (Eing<6E>nge Allgemein)*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*IF1.ST7 - DI9371 (Eing<6E>nge*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
VAR
|
||||
gbInDropOutFuseP2 : BOOL; (*Sicherungsfall 24V P2*)
|
||||
gbInDropOutFuseFeeder : BOOL; (*Sicherungsfall 24V Anyfeeder*)
|
||||
gbIn9M1FanOn : BOOL; (*Spindel - L<>fter l<>uft*)
|
||||
gbIn9M1Standstill : BOOL; (*Spindel - Stillstand*)
|
||||
END_VAR
|
||||
(*//1Spare*)
|
||||
(*//1Spare*)
|
||||
(*//1Spare*)
|
||||
VAR
|
||||
gbIn9M1LPistonHome : BOOL; (*Spindel - Kolben Grundstellung*)
|
||||
gbIn8T1Ready : BOOL; (*Spindel FU Bereit*)
|
||||
gbIn8T1Setpoint : BOOL; (*Spindel FU Istwert*)
|
||||
gbIn8T1Error : BOOL; (*Spindel FU Fehler*)
|
||||
gbIn4G1Error : BOOL; (*Klimager<65>t Fehler*)
|
||||
END_VAR
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*IF1.ST8 - DI9371 (Eing<6E>nge)*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
VAR
|
||||
gbInMaintDoor1Error : BOOL; (*Wartungst<73>r 1 Diagnose - Fehler*)
|
||||
gbInMaintDoor1Closed : BOOL; (*Wartungst<73>r 1 Geschlossen - nicht verriegelt*)
|
||||
gbInMaintDoor2Error : BOOL; (*Wartungst<73>r 2 Diagnose - Fehler*)
|
||||
gbInMaintDoor2Closed : BOOL; (*Wartungst<73>r 1 Geschlossen - nicht verriegelt*)
|
||||
gbInMaintDoor3Error : BOOL; (*Wartungst<73>r 3 Diagnose - Fehler*)
|
||||
gbInMaintDoor3Closed : BOOL; (*Wartungst<73>r 3 Geschlossen - nicht verriegelt*)
|
||||
gbInMaintDoor4Error : BOOL; (*Wartungst<73>r 4 Diagnose - Fehler*)
|
||||
gbInMaintDoor4Closed : BOOL; (*Wartungst<73>r 4 Geschlossen - nicht verriegelt*)
|
||||
gbInMaintDoor5Error : BOOL; (*Wartungst<73>r 5 Diagnose - Fehler*)
|
||||
gbInMaintDoor5Closed : BOOL; (*Wartungst<73>r 5 Geschlossen - nicht verriegelt*)
|
||||
gbInMainAirOk : BOOL; (*Haupluft Druck Ok*)
|
||||
gbInFdBackMainsInverters : BOOL; (*R<>ckf<6B>hrkreis Netzsch<63>tze Umrichter // PV Mapping auf PLC*)
|
||||
END_VAR
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*IF1.ST9 - DI9371 (Eing<6E>nge)*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*1 St<53>rung 8R1 obsolete*)
|
||||
(*4/5 Signale von Feeder ????*)
|
||||
VAR
|
||||
gbInPartReleased : BOOL; (*Bauteilspanner Offen*)
|
||||
gbInPartLocked : BOOL; (*Bauteilspanner Verriegelt*)
|
||||
gbInCamInspectionFinished : BOOL; (*Kamera Ausgang 0 Kamerainspektion beendet*)
|
||||
gbInCamInspectionResultOk : BOOL; (*Kamera Ausgang 1 Ergebnis iO*)
|
||||
gbInCamInspectionResultNOk : BOOL; (*Kamera Ausgang 2 Ergebnis NiO*)
|
||||
END_VAR
|
||||
(*8-10 Reserve*)
|
||||
VAR
|
||||
gbInKeyLockTool : BOOL; (*Werkzeug spannen*)
|
||||
gbInKeyUnlockTool : BOOL; (*Werkzeug l<>sen*)
|
||||
END_VAR
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*IF1.ST10 - X20DO9322*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*//5 Ausg<73>nge an KEB reserviert Ausgang 2 Wird in KEB Task verwendet*)
|
||||
VAR
|
||||
gbOuEnalbeBunker : BOOL; (*Freigabe Bunkerband*)
|
||||
gbOuMaintDoor1Lock : BOOL; (*Wartungst<73>r 1 Verriegeln*)
|
||||
gbOuMaintDoor2Lock : BOOL; (*Wartungst<73>r 2 Verriegeln*)
|
||||
gbOuMaintDoor3Lock : BOOL; (*Wartungst<73>r 3 Verriegeln*)
|
||||
gbOuMaintDoor4Lock : BOOL; (*Wartungst<73>r 4 Verriegeln*)
|
||||
gbOuMaintDoor5Lock : BOOL; (*Wartungst<73>r 5 Verriegeln*)
|
||||
END_VAR
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*IF1.ST11 - X20DO9322*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
VAR
|
||||
gbOuLightOn : BOOL; (*Anlagenbeleuchtung*)
|
||||
gbOuAnyFeederPicksignal : BOOL; (*Picksignal an Anyfeeder*)
|
||||
gbOuSpindleCoolFan : BOOL; (*L<>fter Spindel*)
|
||||
gbOuSpindleCleanAir : BOOL; (*Konusreinigung Spindel*)
|
||||
gbOuTriggerMeasCam : BOOL; (*Trigger Kamera Messen*)
|
||||
gbOuUnlockTool : BOOL; (*Spindel - Werkzeugwechsler l<>sen*)
|
||||
END_VAR
|
||||
(*//1Spare*)
|
||||
VAR
|
||||
gbOuPartRelease : BOOL; (*Bauteil freigeben*)
|
||||
gbOuPartHold : BOOL; (*Bauteil spannen*)
|
||||
gbOuBlowAir : BOOL; (*Abblasen*)
|
||||
gbOuLampToolLocked : BOOL; (*Leuchtmelder Werkzeug gespannt*)
|
||||
gbOuLampToolUnlocked : BOOL; (*Leuchtmelder Werkzeug gel<65>st*)
|
||||
END_VAR
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*IF1.ST12 - X20DS438A*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*IF1.ST13 - X20SI2100*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
VAR
|
||||
gbSInBunkerMounted : BOOL; (*Sicherer Eingang 01/02 Equivalent - Bunkerband Montiert*)
|
||||
END_VAR
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*IF1.ST4 - Powerlinnk X67BC8321-1*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
VAR
|
||||
gbInToolCode0 : BOOL; (*Werkzeugerkennung Bit 0*)
|
||||
gbInToolCode1 : BOOL; (*Werkzeugerkennung Bit 1*)
|
||||
gbInToolCode2 : BOOL; (*Werkzeugerkennung Bit 2*)
|
||||
gbInToolCode3 : BOOL; (*Werkzeugerkennung Bit 3*)
|
||||
gbInToolCode4 : BOOL; (*Werkzeugerkennung Bit 4*)
|
||||
END_VAR
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
8
Logical/GlobalVars/Package.pkg
Normal file
8
Logical/GlobalVars/Package.pkg
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.2.3.159?>
|
||||
<Package xmlns="http://br-automation.co.at/AS/Package">
|
||||
<Objects>
|
||||
<Object Type="File">Global.typ</Object>
|
||||
<Object Type="File" Description="Global variables / IOs">Global.var</Object>
|
||||
</Objects>
|
||||
</Package>
|
||||
14
Logical/Libraries/Acp10_MC/Binary.lby
Normal file
14
Logical/Libraries/Acp10_MC/Binary.lby
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.4.8.122 SP?>
|
||||
<Library Version="5.09.2" Description="PLCopen Motion Control function blocks" xmlns="http://br-automation.co.at/AS/Library">
|
||||
<Files>
|
||||
<File>acp10_mc.fun</File>
|
||||
<File>acp10_mc.typ</File>
|
||||
<File>acp10_mc.var</File>
|
||||
</Files>
|
||||
<Dependencies>
|
||||
<Dependency ObjectName="Sys_lib" FromVersion="0.00.0" />
|
||||
<Dependency ObjectName="Brsystem" FromVersion="0.00.0" />
|
||||
<Dependency ObjectName="Acp10man" FromVersion="5.09.2" ToVersion="5.09.2" />
|
||||
</Dependencies>
|
||||
</Library>
|
||||
BIN
Logical/Libraries/Acp10_MC/SG4/ARM/acp10_mc.br
Normal file
BIN
Logical/Libraries/Acp10_MC/SG4/ARM/acp10_mc.br
Normal file
Binary file not shown.
BIN
Logical/Libraries/Acp10_MC/SG4/ARM/libacp10_mc.a
Normal file
BIN
Logical/Libraries/Acp10_MC/SG4/ARM/libacp10_mc.a
Normal file
Binary file not shown.
BIN
Logical/Libraries/Acp10_MC/SG4/IA32/acp10_mc.br
Normal file
BIN
Logical/Libraries/Acp10_MC/SG4/IA32/acp10_mc.br
Normal file
Binary file not shown.
BIN
Logical/Libraries/Acp10_MC/SG4/IA32/libacp10_mc.a
Normal file
BIN
Logical/Libraries/Acp10_MC/SG4/IA32/libacp10_mc.a
Normal file
Binary file not shown.
7103
Logical/Libraries/Acp10_MC/SG4/acp10_mc.h
Normal file
7103
Logical/Libraries/Acp10_MC/SG4/acp10_mc.h
Normal file
File diff suppressed because it is too large
Load Diff
4085
Logical/Libraries/Acp10_MC/acp10_mc.fun
Normal file
4085
Logical/Libraries/Acp10_MC/acp10_mc.fun
Normal file
File diff suppressed because it is too large
Load Diff
2058
Logical/Libraries/Acp10_MC/acp10_mc.typ
Normal file
2058
Logical/Libraries/Acp10_MC/acp10_mc.typ
Normal file
File diff suppressed because it is too large
Load Diff
286
Logical/Libraries/Acp10_MC/acp10_mc.var
Normal file
286
Logical/Libraries/Acp10_MC/acp10_mc.var
Normal file
@@ -0,0 +1,286 @@
|
||||
VAR CONSTANT
|
||||
mc5TH_ORDER_POLYNOMIAL : UINT := 4; (*motion rule*)
|
||||
mcABOVE_WINDOW : USINT := 40; (*trigger event mode*)
|
||||
mcABS : USINT := 1; (*encoder type*)
|
||||
mcABSOLUTE : USINT := 0; (*start mode*)
|
||||
mcABSOLUTE_NO_RESET : USINT := 2; (*definition for the shift input of MC_BR_Offset and MC_BR_Phasing*)
|
||||
mcACKNOWLEDGE_ALL : UINT := 2; (*acknowledge all error records immediately*)
|
||||
mcACT_CFG : UINT := 1;
|
||||
mcACTUAL_POSITION : UINT := 1; (*position source for MPDC*)
|
||||
mcACTUAL_VELOCITY : INT := 10; (*PLCopen motion parameter*)
|
||||
mcADD_DATE_TIME : UINT := 1; (*additional data object type*)
|
||||
mcALL_AXES : UDINT := 16#FFFFFFFF;
|
||||
mcALL_EVENTS : USINT := 255; (*event index*)
|
||||
mcALL_PARAMS : USINT := 0; (*parameter index*)
|
||||
mcALL_STATES : USINT := 255; (*state index*)
|
||||
mcAUT_POS_TOLERANCE : INT := 1009; (*PLCopen motion parameter*)
|
||||
mcAUTOMAT_POS : USINT := 100; (*additional movement direction*)
|
||||
mcAVERAGE : UINT := 2;
|
||||
mcAVERAGE_WEIGHTED : UINT := 4;
|
||||
mcAXIS_ERROR : USINT := 0;
|
||||
mcAXIS_FACTOR : INT := 1007; (*PLCopen motion parameter*)
|
||||
mcAXIS_FACTOR_MAPPING : INT := 1019; (*PLCopen motion parameter*)
|
||||
mcAXIS_NETWORK_CYCLE_TIME: INT := 1018; (*PLCopen motion parameter*)
|
||||
mcAXIS_PERIOD : INT := 1008; (*PLCopen motion parameter*)
|
||||
mcAXIS_PERIOD_MAPPING : INT := 1020; (*PLCopen motion parameter*)
|
||||
mcAXIS_WARNING : USINT := 1;
|
||||
mcBASIS_PARAMETERS : REAL := 2.0; (*Option for DefaultMoveParameter*)
|
||||
mcBELOW_WINDOW : USINT := 50; (*trigger event mode*)
|
||||
mcBESTFIT_5TH_ORDER : UINT := 1024; (*interpolation rule*)
|
||||
mcBESTFIT_6TH_ORDER : UINT := 1280; (*interpolation rule*)
|
||||
mcBLANK : UINT := 0;
|
||||
mcBRAKE_CONTROL_INIT : USINT := 8; (*brake command*)
|
||||
mcBRAKE_TEST_INIT : USINT := 2; (*brake command*)
|
||||
mcBRAKE_TEST_START : USINT := 4; (*brake command*)
|
||||
mcCALCULATION : UINT := 11; (*setup mode*)
|
||||
mcCATCH_UP : USINT := 4; (*synchronization mode*)
|
||||
mcCHECK : UINT := 1; (*mode for automat compensation check*)
|
||||
mcCHECK_HOMING_OFF : USINT := 1; (*disable homing check*)
|
||||
mcCLOSE : USINT := 0;
|
||||
mcCMD_ERROR : UINT := 1; (*error command*)
|
||||
mcCMD_ERROR_COAST_TO_STANDSTILL : UINT := 5; (*error command*)
|
||||
mcCMD_ERROR_INDUCTION_HALT : UINT := 6; (*error command*)
|
||||
mcCMD_ERROR_STOP : UINT := 2; (*error command*)
|
||||
mcCMD_ERROR_STOP_CTRL_OFF : UINT := 3; (*error command*)
|
||||
mcCMD_ERROR_V_STOP_CTRL_OFF : UINT := 4; (*error command*)
|
||||
mcCMD_WARNING : UINT := 0; (*error command *)
|
||||
mcCOMMANDED_POSITION : INT := 1; (*PLCopen motion parameter*)
|
||||
mcCOMMANDED_VELOCITY : INT := 11; (*PLCopen motion parameter*)
|
||||
mcCONTINUE_CONTROLLER_OFF : UINT := 128; (* continue if controller is off *)
|
||||
mcCORRECT_CURRENT_CYCLE : UINT := 32768; (*additive StartMode for MC_BR_CrossCutterControl*)
|
||||
mcCUBIC_SPLINE : UINT := 256; (*interpolation rule*)
|
||||
mcCURRENT_DIR : USINT := 2; (*movement direction*)
|
||||
mcCYCLIC : UINT := 2; (*event move mode*)
|
||||
mcCYCLIC_ALL_EVENTS : UINT := 3; (*event move mode*)
|
||||
mcDATOBJ : UINT := 0; (*data object type*)
|
||||
mcDEFAULT_MOVE_PARAMETERS : INT := 1012; (*PLCopen motion parameter*)
|
||||
mcDIRECT : USINT := 7; (*start mode*)
|
||||
mcDIR_DEPENDENT : UINT := 1; (*mode for MPDC*)
|
||||
mcDIR_DEPENDENT_BACKLASH : UINT := 2; (*mode for MPDC*)
|
||||
mcDIR_DEPENDENT_SET_POSITION : UINT := 5; (*mode for MPDC*)
|
||||
mcDIR_INDEPENDENT : UINT := 3; (*mode for MPDC*)
|
||||
mcDIR_INDEPENDENT_SPEED : UINT := 4; (*mode for MPDC*)
|
||||
mcDIR_DEPENDENT_AX_POS : UINT := 257; (*mode for MPDC*)
|
||||
mcDIR_DEPENDENT_BACKLASH_AX_POS : UINT := 258; (*mode for MPDC*)
|
||||
mcDIR_DEPENDENT_SET_POS_AX_POS : UINT := 261; (*mode for MPDC*)
|
||||
mcDIR_INDEPENDENT_AX_POS : UINT := 259; (*mode for MPDC*)
|
||||
mcDIR_INDEPENDENT_SPEED_AX_POS : UINT := 260; (*mode for MPDC*)
|
||||
mcDISTANCE_BASED : UINT := 0; (*basis for cam movement (e.g. for MC_BR_CamTransition)*)
|
||||
mcDITHER : USINT := 32; (*setup mode*)
|
||||
mcEDGE_SENSITIVE : USINT := 4; (*additional mode for trigger event*)
|
||||
mcENABLE : UINT := 2;
|
||||
mcENABLE_LIMIT_NEG : INT := 5; (*PLCopen motion parameter*)
|
||||
mcENABLE_LIMIT_POS : INT := 4; (*PLCopen motion parameter*)
|
||||
mcENABLE_POS_LAG_MONITORING : INT := 6; (*PLCopen motion parameter*)
|
||||
mcENCODER : USINT := 0; (*setup mode*)
|
||||
mcENCODER_POSITION : UINT := 2; (*position source for MPDC*)
|
||||
mcEQUAL : UINT := 2;
|
||||
mcEVERY_RECORD : UINT := 1; (*mode for MC_BR_CyclicRead*)
|
||||
mcEXCEED_PERIOD : USINT := 8; (*movement direction*)
|
||||
mcFB_ERROR : USINT := 2;
|
||||
mcFB_INPUTS : REAL := 255.0; (*option for DefaultMoveParameters*)
|
||||
mcFF : USINT := 32; (*setup, torque mode*)
|
||||
mcFF_NEG_MOVE : UINT := 34; (*setup mode*)
|
||||
mcFF_POS_MOVE : UINT := 33; (*setup mode*)
|
||||
mcFILE : UINT := 1; (*data object type*)
|
||||
mcFILE_BIN : UINT := 0; (*binary format*)
|
||||
mcFILE_CSV : UINT := 1; (*CSV format*)
|
||||
mcFILE_TXT : UINT := 2; (*text format*)
|
||||
mcFINISH : UINT := 282;
|
||||
mcFIRST_RM : UINT := 0;
|
||||
mcFIRST_TRIGGER : UINT := 2;
|
||||
mcFLUX : USINT := 1; (*setup mode*)
|
||||
mcGE : UINT := 6;
|
||||
mcGET_BRAKE_STATUS : USINT := 16; (*brake command*)
|
||||
mcGREATER : UINT := 4;
|
||||
mcHARMONIC_COMBINATION : UINT := 8; (*motion rule*)
|
||||
mcHOLDOFF_DISTANCE : UINT := 16384;
|
||||
mcHOME_ABS_SWITCH : USINT := 2; (*homing mode*)
|
||||
mcHOME_ABSOLUTE : USINT := 4; (*homing mode*)
|
||||
mcHOME_ABSOLUTE_CORR : USINT := 6; (*homing mode*)
|
||||
mcHOME_AXIS_REF : USINT := 12; (*homing mode *)
|
||||
mcHOME_BLOCK_DS : USINT := 14; (*homing mode *)
|
||||
mcHOME_BLOCK_TORQUE : USINT := 13; (*homing mode *)
|
||||
mcHOME_DCM : USINT := 9; (*homing mode*)
|
||||
mcHOME_DCM_CORR : USINT := 10; (*homing mode*)
|
||||
mcHOME_DEFAULT : USINT := 0; (*homing mode*)
|
||||
mcHOME_DIRECT : USINT := 1; (*homing mode*)
|
||||
mcHOME_LIMIT_SWITCH : USINT := 3; (*homing mode*)
|
||||
mcHOME_REF_PULSE : USINT := 5; (*homing mode*)
|
||||
mcHOME_RESTORE_POS : USINT := 11; (*homing mode*)
|
||||
mcHOME_SET_PHASE : USINT := 7; (*homing mode*)
|
||||
mcHOME_SWITCH_GATE : USINT := 8; (*homing mode*)
|
||||
mcHORIZONTAL : USINT := 0; (*setup option for controller setup*)
|
||||
mcIDENTIFICATION : UINT := 10; (*setup mode *)
|
||||
mcIMMEDIATE : UINT := 0; (*mode for MC_BR_RegMarkCalc001, StartMode for MC_BR_CrossCutterControl, *)
|
||||
mcIN_WINDOW : USINT := 20; (*trigger event mode*)
|
||||
mcINC : USINT := 2; (*encoder type*)
|
||||
mcINC_ABS : USINT := 4; (*encoder type*)
|
||||
mcINC_REF : USINT := 3; (*encoder type*)
|
||||
mcINCLINED_SINE_CURVE : UINT := 5; (*motion rule*)
|
||||
mcINTERVAL_EVENT : UINT := 16;
|
||||
mcINVERSE : USINT := 255; (*encoder count direction*)
|
||||
mcIPL_LINEAR : USINT := 1; (*interpolation mode*)
|
||||
mcIPL_OFF : USINT := 0; (*interpolation mode*)
|
||||
mcIPL_QUADRATIC : USINT := 2; (*interpolation mode*)
|
||||
mcIPL_QUADRATIC_NO_OVERSHOOT : USINT := 4; (*interpolation mode*)
|
||||
mcISQ_F1_NOTCH : UINT := 128; (*setup mode*)
|
||||
mcISQ_F2_NOTCH : UINT := 256; (*setup mode*)
|
||||
mcISQ_F3_NOTCH : UINT := 512; (*setup mode*)
|
||||
mcISQ_RIPPLE : UINT := 20; (*setup mode*)
|
||||
mcLAST_POINT : UINT := 0; (*motion rule*)
|
||||
mcLEAD_IN : UINT := 2;
|
||||
mcLEAD_OUT : UINT := 4;
|
||||
mcLENGTH_ONLY : UINT := 32;
|
||||
mcLIMIT : USINT := 40; (*torque mode*)
|
||||
mcLIMIT_PARAMETERS : REAL := 1.0; (*option for DefaultMoveParameters*)
|
||||
mcLINEAR_CAM : USINT := 253; (*predefined 1:1 cam profile for MC_BR_CamDwell*)
|
||||
mcLINEAR_CAM_NON_PERIODIC : USINT := 254; (*for predifined 1:1 cam profile*)
|
||||
mcLINEAR_CAM_PERIODIC : USINT := 255; (*for predefined 1:1 cam profile*)
|
||||
mcLOAD : UINT := 276; (*trace command*)
|
||||
mcMANUAL_SEARCH : UINT := 64;
|
||||
mcMASTER_DISTANCE_BASED : UINT := 3; (*basis for movement profile (e.g. for MC_BR_Offset or MC_BR_Phasing)*)
|
||||
mcMASTER_INTERVAL : USINT := 0; (*start mode*)
|
||||
mcMASTER_POSITION : UINT := 256; (*additional basis for movement profile (e.g. for MC_BR_Offset), StartMode for MC_BR_CrossCutterControl*)
|
||||
mcMASTER_POSITION_BASED : UINT := 2; (*basis for movement profile (e.g. for MC_BR_Offset or MC_BR_Phasing)*)
|
||||
mcMAX_ACCELERATION_APPL : INT := 13; (*PLCopen motion parameter*)
|
||||
mcMAX_ACCELERATION_SYSTEM : INT := 12; (*PLCopen motion parameter*)
|
||||
mcMAX_DECELERATION_APPL : INT := 15; (*PLCopen motion parameter*)
|
||||
mcMAX_DECELERATION_SYSTEM : INT := 14; (*PLCopen motion parameter*)
|
||||
mcMAX_IV_TIME : USINT := 8; (*additional mode for power evaluation*)
|
||||
mcMAX_JERK : INT := 16; (*PLCopen motion parameter*)
|
||||
mcMAX_LOAD_SYSTEM : INT := 1015; (*PLCopen motion parameter*)
|
||||
mcMAX_POSITION_CHANGE : INT := 1016; (*PLCopen motion parameter*)
|
||||
mcMAX_POSITION_LAG : INT := 7; (*PLCopen motion parameter*)
|
||||
mcMAX_SLAVE_COMP_DISTANCE_NEG : UINT := 4; (*mode for automat compensation check*)
|
||||
mcMAX_SLAVE_COMP_DISTANCE_POS : UINT := 3; (*mode for automat compensation check*)
|
||||
mcMAX_VELOCITY_APPL : INT := 9; (*PLCopen motion parameter*)
|
||||
mcMAX_VELOCITY_SYSTEM : INT := 8; (*PLCopen motion parameter*)
|
||||
mcMIDDLE : USINT := 5;
|
||||
mcMIN_MASTER_COMP_DISTANCE : UINT := 2; (*mode for automat compensation check*)
|
||||
mcMODIFIED_ACCEL_TRAPEZOID : UINT := 6; (*motion rule*)
|
||||
mcMODIFIED_SINE_CURVE : UINT := 7; (*motion rule*)
|
||||
mcMOTOR : UINT := 258; (*switch on simulation mode*)
|
||||
mcMOVE_ACCELERATION_NEG : INT := 1005; (*PLCopen motion parameter*)
|
||||
mcMOVE_ACCELERATION_POS : INT := 1003; (*PLCopen motion parameter*)
|
||||
mcMOVE_CYCL_POS_IPL_MODE : INT := 1010; (*PLCopen motion parameter*)
|
||||
mcMOVE_CYCL_VEL_IPL_MODE : INT := 1011; (*PLCopen motion parameter*)
|
||||
mcMOVE_DECELERATION_NEG : INT := 1006; (*PLCopen motion parameter*)
|
||||
mcMOVE_DECELERATION_POS : INT := 1004; (*PLCopen motion parameter*)
|
||||
mcMOVE_VELOCITY_NEG : INT := 1002; (*PLCopen motion parameter*)
|
||||
mcMOVE_VELOCITY_POS : INT := 1001; (*PLCopen motion parameter*)
|
||||
mcMULTI_AXIS_TRACE : UDINT := 0; (*parameter trace type*)
|
||||
mcN_EDGE : USINT := 1;
|
||||
mcNEGATIVE_DIR : USINT := 1; (*movement direction*)
|
||||
mcNET_TRACE_GLOBAL : UDINT := 0; (*network trace type*)
|
||||
mcNETWORK_CYCLE_TIME: INT := 1017; (*PLCopen motion parameter*)
|
||||
mcNO_CHANGE_COMP : USINT := 2;
|
||||
mcNO_EVENTS : USINT := 253; (*event index*)
|
||||
mcNO_STATES : USINT := 253;
|
||||
mcNO_PARAMS : USINT := 253; (*parameter index*)
|
||||
mcNO_POSITION : USINT := 0;
|
||||
mcNO_START_COMP : USINT := 1;
|
||||
mcNO_TEXT : UINT := 0; (*no error text determination active*)
|
||||
mcNON_PERIODIC : BOOL := FALSE; (*cam profile mode*)
|
||||
mcNOT_AXIS_RELATED : UDINT := 16#FFFFFFFF;
|
||||
mcNULL : UINT := 1;
|
||||
mcOFF : BOOL := FALSE;
|
||||
mcON : BOOL := TRUE;
|
||||
mcONCE : UINT := 1;
|
||||
mcONE_RECORD : UINT := 0; (*mode for MC_BR_CyclicRead*)
|
||||
mcONLY_EVENTS : USINT := 254; (*event index*)
|
||||
mcONLY_PSM : USINT := 1; (*power evaluation mode*)
|
||||
mcOPEN : USINT := 1;
|
||||
mcOPTIMIZED_ACCELERATION : UINT := 768; (*interpolation rule*)
|
||||
mcOPTIMIZED_VELOCITY : UINT := 512; (*interpolation rule*)
|
||||
mcOUT_WINDOW : USINT := 30; (*trigger event mode*)
|
||||
mcOVERRIDE : INT := 1000; (*PLCopen motion parameter*)
|
||||
mcP_EDGE : USINT := 0;
|
||||
mcPASSIVE : UINT := 4; (*setup mode*)
|
||||
mcPERIODIC : BOOL := TRUE; (*cam profile mode*)
|
||||
mcPOSITION : USINT := 1; (*setup mode*)
|
||||
mcPOSITIVE_DIR : USINT := 0; (*movement direction*)
|
||||
mcQUADRATIC_PARABOLA : UINT := 2; (*motion rule*)
|
||||
mcQUEUED : UINT := 1;
|
||||
mcRELATIVE : USINT := 1; (*start mode*)
|
||||
mcRELATIVE_NO_RESET : USINT := 3; (*start mode*)
|
||||
mcRESET : UINT := 320; (*trace command*)
|
||||
mcRESET_RING_STARTIDX : UINT := 4416; (*trace command (0x1000 + 0x0140)*)
|
||||
mcRESTART : UINT := 273; (*StartMode for MC_BR_CrossCutterControl*)
|
||||
mcREVERSE : UINT := 8;
|
||||
mcSATURATION : USINT := 30; (*setup mode*)
|
||||
mcSAVE : UINT := 341; (*trace command*)
|
||||
mcSAVE_RING_STARTIDX : UINT := 4437; (*trace command (0x1000 + 0x0155)*)
|
||||
mcSE : UINT := 3;
|
||||
mcSET_GEN_ONLY : UINT := 1024; (*simulation with only set value generation*)
|
||||
mcSET_OFFSET : USINT := 34; (*setup mode*)
|
||||
mcSET_POSITION : UINT := 0; (*position source for MPDC*)
|
||||
mcSHIFT_FROM_EXPECTED : UINT := 50; (*input for MC_BR_TouchProbe*)
|
||||
mcSHIFT_FROM_RESULT : UINT := 49; (*input for MC_BR_TouchProbe*)
|
||||
mcSHORTEST_WAY : USINT := 3; (*synchronization mode, movement direction*)
|
||||
mcSIGNAL_CHIRP : UINT := 1; (*excitation signal type for controller setup*)
|
||||
mcSIGNAL_CHIRP_TRAPEZOID : UINT := 2; (*excitation signal type for controller setup*)
|
||||
mcSIGNAL_PRBS : UINT := 0; (*excitation signal type for controller setup*)
|
||||
mcSIMPLE_SINE_CURVE : UINT := 3; (*motion rule*)
|
||||
mcSIMULATION_INIT : UINT := 512; (*initialize simulation parameters*)
|
||||
mcSIMULATION_OFF : UINT := 259; (*switch off simulation mode*)
|
||||
mcSIMULATION_ON : UINT := 258; (*switch on simulation mode*)
|
||||
mcSIMULATION_READ : UINT := 265; (*read calculated simulation parameters*)
|
||||
mcSLAVE_POSITION : UINT := 0; (*additional basis for movement profile (e.g. for MC_BR_Offset)*)
|
||||
mcSLOW_DOWN : USINT := 5; (*synchronization mode*)
|
||||
mcSMALLER : UINT := 1;
|
||||
mcSPEED : USINT := 2; (*setup mode*)
|
||||
mcSTANDARD : USINT := 0; (*encoder count direction*)
|
||||
mcSTART : UINT := 260;
|
||||
mcSTART_N_FLANK : UINT := 128; (*start MPDC at negative flank*)
|
||||
mcSTART_ONLY : USINT := 3; (*power evaluation mode*)
|
||||
mcSTART_P_FLANK : UINT := 0; (*start MPDC at positive flank*)
|
||||
mcSTEPPER : USINT := 31; (*setup mode*)
|
||||
mcSTOP : UINT := 261;
|
||||
mcSTOP_INDEX : INT := 1013; (*PLCopen motion parameter*)
|
||||
mcSTRAIGHT_LINE : UINT := 1; (*motion rule*)
|
||||
mcSW_END_ACTIVE : REAL := 0.0; (*SW end monitoring mode*)
|
||||
mcSW_END_IGNORE : REAL := 1.0; (*SW end monitoring mode*)
|
||||
mcSW_END_MONITORING : INT := 1014; (*PLCopen motion parameter*)
|
||||
mcSW_END_SPF : REAL := 2.0; (*SW end monitoring mode*)
|
||||
mcSW_LIMIT_NEG : INT := 3; (*PLCopen motion parameter*)
|
||||
mcSW_LIMIT_POS : INT := 2; (*PLCopen motion parameter*)
|
||||
mcSWITCH_OFF : UINT := 259; (*trace command*)
|
||||
mcSWITCH_ON : UINT := 258; (*trace command*)
|
||||
mcT_FILTER : UINT := 64; (*setup mode*)
|
||||
mcT_FILTER_2 : UINT := 65; (*setup mode*)
|
||||
mcTEST : UINT := 31; (*setup mode*)
|
||||
mcTEXT : UINT := 1; (*error text determination active*)
|
||||
mcTIME_BASED : UINT := 1; (*basis for movement profile (e.g. for MC_BR_Offset or MC_BR_Phasing)*)
|
||||
mcTIME_LIMIT : USINT := 8; (*enable time dependent switch off of function*)
|
||||
mcTRACE_DELAY : USINT := 6; (*trace status*)
|
||||
mcTRACE_FINISHED : USINT := 1; (*trace status*)
|
||||
mcTRACE_REST : USINT := 5; (*trace status*)
|
||||
mcTRACE_RING : USINT := 4; (*trace status*)
|
||||
mcTRACE_STARTED : USINT := 20; (*trace status*)
|
||||
mcTRACE_TIME : USINT := 2; (*trace status*)
|
||||
mcTRACE_TRIGGER : USINT := 3; (*trace status*)
|
||||
mcTRANSITION_OFF : UINT := 0;
|
||||
mcTRANSITION_ON : UINT := 1;
|
||||
mcTUNE_STANDSTILL : USINT := 0; (*constant for OperatingPoint*)
|
||||
mcTUNE_TN : UINT := 16; (*setup mode*)
|
||||
mcTUNE_V_CONSTANT : USINT := 1; (*constant for OperatingPoint*)
|
||||
mcUNEQUAL : UINT := 5;
|
||||
mcUPDATE_PERIOD : UINT := 16#8000; (*input for MC_BR_TouchProbe*)
|
||||
mcUSE_AXIS_PERIOD : UINT := 16#4000; (*input for MC_BR_TouchProbe*)
|
||||
mcUSE_FILTER_PAR : UINT := 4; (*setup mode *)
|
||||
mcUSE_FIRST_TRIGGER_POS : UINT := 64; (*additional input for MC_BR_TouchProbe*)
|
||||
mcUSE_STOP_COMP : USINT := 4;
|
||||
mcUSE_TN : UINT := 8; (*setup mode*)
|
||||
mcV_LIMIT_CALC : USINT := 4; (*recalculate speed limit depending on user setting*)
|
||||
mcV_LIMIT_OFF : USINT := 2; (*disable speed limit*)
|
||||
mcVELOCITY_CONTROL : UINT := 4; (*basis for movement profile (e.g. for MC_BR_Offset or MC_BR_Phasing)*)
|
||||
mcVERTICAL : USINT := 1; (*setup option for controller setup*)
|
||||
mcWITH_PARAM : USINT := 2; (*power evaluation mode*)
|
||||
mcWITHIN_PERIOD : USINT := 6; (*synchronization mode*)
|
||||
mcWITHOUT_PERIOD : UINT := 4; (*input for MC_BR_TouchProbe*)
|
||||
mcWITH_FF : USINT := 0; (*torque limit mode*)
|
||||
mcWITHOUT_FF : USINT := 1; (*torque limit mode*)
|
||||
mcWRAP : UINT := 2;
|
||||
mcWRITE_DIRECT : UINT := 256; (*cyclic write mode*)
|
||||
END_VAR
|
||||
1985
Logical/Libraries/Acp10man/Acp10err-de.txt
Normal file
1985
Logical/Libraries/Acp10man/Acp10err-de.txt
Normal file
File diff suppressed because it is too large
Load Diff
1985
Logical/Libraries/Acp10man/Acp10err-en.txt
Normal file
1985
Logical/Libraries/Acp10man/Acp10err-en.txt
Normal file
File diff suppressed because it is too large
Load Diff
1314
Logical/Libraries/Acp10man/Acp10man.typ
Normal file
1314
Logical/Libraries/Acp10man/Acp10man.typ
Normal file
File diff suppressed because it is too large
Load Diff
2252
Logical/Libraries/Acp10man/Acp10par-de.txt
Normal file
2252
Logical/Libraries/Acp10man/Acp10par-de.txt
Normal file
File diff suppressed because it is too large
Load Diff
2252
Logical/Libraries/Acp10man/Acp10par-en.txt
Normal file
2252
Logical/Libraries/Acp10man/Acp10par-en.txt
Normal file
File diff suppressed because it is too large
Load Diff
11
Logical/Libraries/Acp10man/Binary.lby
Normal file
11
Logical/Libraries/Acp10man/Binary.lby
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.4.8.122 SP?>
|
||||
<Library Version="5.09.2" Description="Motion Control Manager" xmlns="http://br-automation.co.at/AS/Library">
|
||||
<Files>
|
||||
<File>Acp10man.typ</File>
|
||||
</Files>
|
||||
<Dependencies>
|
||||
<Dependency ObjectName="Acp10par" FromVersion="5.09.2" ToVersion="5.09.2" />
|
||||
<Dependency ObjectName="Ncglobal" FromVersion="5.09.2" ToVersion="5.09.2" />
|
||||
</Dependencies>
|
||||
</Library>
|
||||
BIN
Logical/Libraries/Acp10man/SG4/ARM/acp10man.br
Normal file
BIN
Logical/Libraries/Acp10man/SG4/ARM/acp10man.br
Normal file
Binary file not shown.
BIN
Logical/Libraries/Acp10man/SG4/IA32/acp10man.br
Normal file
BIN
Logical/Libraries/Acp10man/SG4/IA32/acp10man.br
Normal file
Binary file not shown.
BIN
Logical/Libraries/Acp10man/SG4/Powerlink/acp10sys.br
Normal file
BIN
Logical/Libraries/Acp10man/SG4/Powerlink/acp10sys.br
Normal file
Binary file not shown.
1483
Logical/Libraries/Acp10man/SG4/acp10man.h
Normal file
1483
Logical/Libraries/Acp10man/SG4/acp10man.h
Normal file
File diff suppressed because it is too large
Load Diff
BIN
Logical/Libraries/Acp10man/acp10bsl.br
Normal file
BIN
Logical/Libraries/Acp10man/acp10bsl.br
Normal file
Binary file not shown.
1810
Logical/Libraries/Acp10par/Acp10par.var
Normal file
1810
Logical/Libraries/Acp10par/Acp10par.var
Normal file
File diff suppressed because it is too large
Load Diff
7
Logical/Libraries/Acp10par/Binary.lby
Normal file
7
Logical/Libraries/Acp10par/Binary.lby
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.4.8.122 SP?>
|
||||
<Library Version="5.09.2" Description="ACOPOS Parameters" xmlns="http://br-automation.co.at/AS/Library">
|
||||
<Files>
|
||||
<File>Acp10par.var</File>
|
||||
</Files>
|
||||
</Library>
|
||||
BIN
Logical/Libraries/Acp10par/SG4/ARM/acp10par.br
Normal file
BIN
Logical/Libraries/Acp10par/SG4/ARM/acp10par.br
Normal file
Binary file not shown.
BIN
Logical/Libraries/Acp10par/SG4/IA32/acp10par.br
Normal file
BIN
Logical/Libraries/Acp10par/SG4/IA32/acp10par.br
Normal file
Binary file not shown.
1809
Logical/Libraries/Acp10par/SG4/acp10par.h
Normal file
1809
Logical/Libraries/Acp10par/SG4/acp10par.h
Normal file
File diff suppressed because it is too large
Load Diff
307
Logical/Libraries/ArEventLog/ArEventLog.fun
Normal file
307
Logical/Libraries/ArEventLog/ArEventLog.fun
Normal file
@@ -0,0 +1,307 @@
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK ArEventLogCreate (*creates an event log module; asynchronous execution *)
|
||||
VAR_INPUT
|
||||
Execute : BOOL; (*enables execution*)
|
||||
Name : STRING[256]; (*name of the event log module*)
|
||||
Size : UDINT; (*size of the event log module*)
|
||||
Persistence : USINT; (*persistence type of the log module*)
|
||||
Info : UDINT; (*format of the additional data*)
|
||||
END_VAR
|
||||
|
||||
VAR_OUTPUT
|
||||
Done : BOOL; (*execution done*)
|
||||
Busy : BOOL; (*execution running*)
|
||||
Error : BOOL; (*execution failed*)
|
||||
StatusID : DINT; (*execution error: see help*)
|
||||
Ident : ArEventLogIdentType; (*ident for the event log module*)
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
Internal : ArEventLogAsyncInternalType;(*internal variable*)
|
||||
END_VAR
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK ArEventLogDelete (*deletes an event log module; asynchronous execution *)
|
||||
VAR_INPUT
|
||||
Execute : BOOL; (*enables execution*)
|
||||
Ident : ArEventLogIdentType; (*ident for the event log module*)
|
||||
END_VAR
|
||||
|
||||
VAR_OUTPUT
|
||||
Done : BOOL; (*execution done*)
|
||||
Busy : BOOL; (*execution running*)
|
||||
Error : BOOL; (*execution failed*)
|
||||
StatusID : DINT; (*execution error: see help*)
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
Internal : ArEventLogAsyncInternalType;(*internal variable*)
|
||||
END_VAR
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK ArEventLogGetIdent (*gets identifier of an event log module*)
|
||||
VAR_INPUT
|
||||
Execute : BOOL; (*enables execution*)
|
||||
Name : STRING[256]; (*name of the event log module*)
|
||||
END_VAR
|
||||
|
||||
VAR_OUTPUT
|
||||
Done : BOOL; (*execution done*)
|
||||
Error : BOOL; (*execution failed*)
|
||||
StatusID : DINT; (*execution error: see help*)
|
||||
Ident : ArEventLogIdentType; (*identifier of the event log module*)
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
Internal : ArEventLogInternalType; (*internal variable*)
|
||||
END_VAR
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK ArEventLogWrite (*writes a log entry to an event log module*)
|
||||
VAR_INPUT
|
||||
Execute : BOOL; (*enables execution*)
|
||||
Ident : ArEventLogIdentType; (*ident for the event log module to be written*)
|
||||
EventID : DINT; (*event id of the log entry*)
|
||||
OriginRecordID : ArEventLogRecordIDType; (*record id of basic cause of error/warning, or 0*)
|
||||
ObjectID : STRING[36]; (*object id - string of maximum 35 characters, string length of 0 object id is generated internally*)
|
||||
AddDataSize : UDINT; (*size of the additional data, or 0 (no additional data)*)
|
||||
AddDataFormat : USINT; (*format of the additional data*)
|
||||
AddData : UDINT; (*additional data of the entry given as pointer, or 0 (no additional data)*)
|
||||
TimeStamp : UDINT; (*external timestamp given as pointer to ArEventLogTimeStampType, or 0 (timestamp is taken internally)*)
|
||||
END_VAR
|
||||
|
||||
VAR_OUTPUT
|
||||
Done : BOOL; (*execution done*)
|
||||
Error : BOOL; (*execution failed*)
|
||||
StatusID : DINT; (*execution error: see help*)
|
||||
RecordID : ArEventLogRecordIDType; (*id of current record*)
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
Internal : ArEventLogInternalType; (*internal variable*)
|
||||
END_VAR
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK ArEventLogGetLatestRecordID (*gets latest record id*)
|
||||
VAR_INPUT
|
||||
Execute : BOOL; (*enables execution*)
|
||||
Ident : ArEventLogIdentType; (*ident for the event log module to be written*)
|
||||
END_VAR
|
||||
|
||||
VAR_OUTPUT
|
||||
Done : BOOL; (*execution done*)
|
||||
Error : BOOL; (*execution failed*)
|
||||
StatusID : DINT; (*execution error: see help*)
|
||||
RecordID : ArEventLogRecordIDType; (*latest record id to read*)
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
Internal : ArEventLogInternalType; (*internal variable*)
|
||||
END_VAR
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK ArEventLogGetPreviousRecordID (*gets previous record id*)
|
||||
VAR_INPUT
|
||||
Execute : BOOL; (*enables execution*)
|
||||
Ident : ArEventLogIdentType; (*ident for the event log module to be written*)
|
||||
RecordID : ArEventLogRecordIDType; (*current record id*)
|
||||
END_VAR
|
||||
|
||||
VAR_OUTPUT
|
||||
Done : BOOL; (*execution done*)
|
||||
Error : BOOL; (*execution failed*)
|
||||
StatusID : DINT; (*execution error: see help*)
|
||||
PrevRecordID : ArEventLogRecordIDType; (*previous record id to read*)
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
Internal : ArEventLogInternalType; (*internal variable*)
|
||||
END_VAR
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK ArEventLogRead (*reads a log entry from an event log module*)
|
||||
VAR_INPUT
|
||||
Execute : BOOL; (*enables execution*)
|
||||
Ident : ArEventLogIdentType; (*ident for the event log module to be written*)
|
||||
RecordID : ArEventLogRecordIDType; (*record id to read*)
|
||||
END_VAR
|
||||
|
||||
VAR_OUTPUT
|
||||
Done : BOOL; (*execution done*)
|
||||
Error : BOOL; (*execution failed*)
|
||||
StatusID : DINT; (*execution error: see help*)
|
||||
EventID : DINT; (*event id of the log entry*)
|
||||
OriginRecordID : ArEventLogRecordIDType; (*record id of basic cause of error/warning, or 0*)
|
||||
AddDataFormat : USINT; (*format of the additional data*)
|
||||
AddDataSize : UDINT; (*size of the additional data*)
|
||||
TimeStamp : ArEventLogTimeStampType; (*timestamp*)
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
Internal : ArEventLogInternalType; (*internal variable*)
|
||||
END_VAR
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK ArEventLogReadDescription (*reads a description of an event id*)
|
||||
VAR_INPUT
|
||||
Execute : BOOL; (*enables execution*)
|
||||
Ident : ArEventLogIdentType; (*ident for the event log module to be written*)
|
||||
RecordID : ArEventLogRecordIDType; (*record id to read*)
|
||||
LanguageCode : ArEventLogLanguageCodeType;(*language id of description*)
|
||||
Qualifier : STRING[250]; (*additional qualifier - reserved for future use*)
|
||||
TextBuffer : UDINT; (*buffer for description*)
|
||||
TextBufferSize : UDINT; (*maximum description size*)
|
||||
END_VAR
|
||||
|
||||
VAR_OUTPUT
|
||||
Done : BOOL; (*execution done*)
|
||||
Busy : BOOL; (*execution running*)
|
||||
Error : BOOL; (*execution failed*)
|
||||
StatusID : DINT; (*execution error: see help*)
|
||||
TextSize : UDINT; (*size of description (including 0-termination)*)
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
Internal : ArEventLogAsyncInternalType; (*internal variable*)
|
||||
END_VAR
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK ArEventLogReadErrorNumber (*reads an error number log entry from an event log module*)
|
||||
VAR_INPUT
|
||||
Execute : BOOL; (*enables execution*)
|
||||
Ident : ArEventLogIdentType; (*ident for the event log module to be written*)
|
||||
RecordID : ArEventLogRecordIDType; (*record id to read*)
|
||||
END_VAR
|
||||
|
||||
VAR_OUTPUT
|
||||
Done : BOOL; (*execution done*)
|
||||
Error : BOOL; (*execution failed*)
|
||||
StatusID : DINT; (*execution error: see help*)
|
||||
ErrorNumber : UDINT; (*error number of the log entry*)
|
||||
Severity : USINT; (*severity of the log entry*)
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
Internal : ArEventLogInternalType; (*internal variable*)
|
||||
END_VAR
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK ArEventLogReadAddData (*reads the additional data from an event log module*)
|
||||
VAR_INPUT
|
||||
Execute : BOOL; (*enables execution*)
|
||||
Ident : ArEventLogIdentType; (*ident for the event log module to be written*)
|
||||
RecordID : ArEventLogRecordIDType; (*record id to read*)
|
||||
AddData : UDINT; (*buffer for additional data given as pointer*)
|
||||
BytesToRead : UDINT; (*buffer size for additional data*)
|
||||
END_VAR
|
||||
|
||||
VAR_OUTPUT
|
||||
Done : BOOL; (*execution done*)
|
||||
Error : BOOL; (*execution failed*)
|
||||
StatusID : DINT; (*execution status: see help*)
|
||||
AddDataSize : UDINT; (*size of the additional data*)
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
Internal : ArEventLogInternalType; (*internal variable*)
|
||||
END_VAR
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK ArEventLogReadObjectID (*reads the object id from an event log module*)
|
||||
VAR_INPUT
|
||||
Execute : BOOL; (*enables execution*)
|
||||
Ident : ArEventLogIdentType; (*ident for the event log module to be written*)
|
||||
RecordID : ArEventLogRecordIDType; (*record id to read*)
|
||||
END_VAR
|
||||
|
||||
VAR_OUTPUT
|
||||
Done : BOOL; (*execution done*)
|
||||
Error : BOOL; (*execution failed*)
|
||||
StatusID : DINT; (*execution error: see help*)
|
||||
ObjectID : STRING[36]; (*object id - string of maximum 35 characters*)
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
Internal : ArEventLogInternalType; (*internal variable*)
|
||||
END_VAR
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
{REDUND_OK} FUNCTION ArEventLogMakeEventID : DINT (*makes an event id*)
|
||||
VAR_INPUT
|
||||
Severity : USINT; (*severity code of event id*)
|
||||
Facility : UINT; (*facility of event id*)
|
||||
ErrorCode : UINT; (*error code of event id*)
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
{REDUND_OK} FUNCTION ArEventLogIsError : BOOL (*returns true if event id is an error entry*)
|
||||
VAR_INPUT
|
||||
EventID : DINT; (*event id*)
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
{REDUND_OK} FUNCTION ArEventLogIsWarning : BOOL (*returns true if event id is a warning entry*)
|
||||
VAR_INPUT
|
||||
EventID : DINT; (*event id*)
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
{REDUND_OK} FUNCTION ArEventLogIsInformation : BOOL (*returns true if event id is a information entry*)
|
||||
VAR_INPUT
|
||||
EventID : DINT; (*event id*)
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
{REDUND_OK} FUNCTION ArEventLogIsSuccess : BOOL (*returns true if event id is a success entry*)
|
||||
VAR_INPUT
|
||||
EventID : DINT; (*event id*)
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
{REDUND_OK} FUNCTION ArEventLogIsCustomerArea : BOOL (*returns true if the customer flag of the event id is set*)
|
||||
VAR_INPUT
|
||||
EventID : DINT; (*event id*)
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION ArEventLogAddDataInit : BOOL (*returns true on success, false on failure*)
|
||||
VAR_INPUT
|
||||
Buffer : UDINT; (*buffer for additional event log data*)
|
||||
BufferSize : UDINT; (*buffer size*)
|
||||
Format : USINT; (*format of the additional data*)
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION ArEventLogAddDataUdint : BOOL (*returns true on success, false on failure*)
|
||||
VAR_INPUT
|
||||
Buffer : UDINT; (*buffer for additional event data*)
|
||||
BufferSize : UDINT; (*buffer size*)
|
||||
Value : UDINT; (*UDINT value*)
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION ArEventLogAddDataDint : BOOL (*returns true on success, false on failure*)
|
||||
VAR_INPUT
|
||||
Buffer : UDINT; (*buffer for additional event data*)
|
||||
BufferSize : UDINT; (*buffer size*)
|
||||
Value : DINT; (*DINT value*)
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION ArEventLogAddDataString : BOOL (*returns true on success, false on failure*)
|
||||
VAR_INPUT
|
||||
Buffer : UDINT; (*buffer for additional event log data*)
|
||||
BufferSize : UDINT; (*buffer size*)
|
||||
Value : UDINT; (*STRING value, given as pointer to null terminated string*)
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION ArEventLogAddDataQuantity : BOOL (*returns true on success, false on failure*)
|
||||
VAR_INPUT
|
||||
Buffer : UDINT; (*buffer for additional event log data*)
|
||||
BufferSize : UDINT; (*buffer size*)
|
||||
Value : LREAL; (*LREAL value*)
|
||||
UnitID : DINT; (*unit ID, -1 no unit*)
|
||||
NamespaceURI : UDINT; (*namespace URI given as pointer to null terminated string, null is default namespace (CEFACT)*)
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
20
Logical/Libraries/ArEventLog/ArEventLog.typ
Normal file
20
Logical/Libraries/ArEventLog/ArEventLog.typ
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
TYPE
|
||||
ArEventLogIdentType : UDINT;
|
||||
ArEventLogRecordIDType : UDINT;
|
||||
ArEventLogLanguageCodeType : STRING[18]; (*String-type for language ID*)
|
||||
|
||||
ArEventLogTimeStampType : STRUCT
|
||||
sec : UDINT; (*seconds*)
|
||||
nsec : UDINT; (*nano seconds*)
|
||||
END_STRUCT;
|
||||
|
||||
ArEventLogAsyncInternalType : STRUCT
|
||||
FBStateCtx : ArFBStateInternalType;
|
||||
AsyFuMaCtx : ArFBAsyFuMaInternalType;
|
||||
END_STRUCT;
|
||||
|
||||
ArEventLogInternalType : STRUCT
|
||||
FBStateCtx : ArFBStateInternalType;
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
42
Logical/Libraries/ArEventLog/ArEventLog.var
Normal file
42
Logical/Libraries/ArEventLog/ArEventLog.var
Normal file
@@ -0,0 +1,42 @@
|
||||
|
||||
VAR CONSTANT
|
||||
arEVENTLOG_ERR_PARAMETER : DINT := -1070586096; (*obsolete - invalid parameters specified*)
|
||||
arEVENTLOG_ERR_RECORDID_INVALID : DINT := -1070586096; (*no record with the given id exists in the logbook*)
|
||||
arEVENTLOG_ERR_EXISTING : DINT := -1070586095; (*obsolete- log module already exists*)
|
||||
arEVENTLOG_ERR_LOGBOOK_EXISTS : DINT := -1070586095; (*a logbook with the given name already exists*)
|
||||
arEVENTLOG_ERR_INTERNAL : DINT := -1070586094; (*unexpected internal error*)
|
||||
arEVENTLOG_ERR_NAME_INVALID : DINT := -1070586093; (*the given name is invalid (empty)*)
|
||||
arEVENTLOG_ERR_SIZE_INVALID : DINT := -1070586092; (*the given size is smaller than the minimum size of a logbook*)
|
||||
arEVENTLOG_ERR_PERSISTENCE_INVAL : DINT := -1070586091; (*the given persistence level is unknown*)
|
||||
arEVENTLOG_ERR_IDENT_INVALID : DINT := -1070586090; (*the given ident is invalid (NULL)*)
|
||||
arEVENTLOG_ERR_IDENT_SYSTEM : DINT := -1070586089; (*access denied, the given ident belongs to a system logbook*)
|
||||
arEVENTLOG_ERR_EVENTID_INVALID : DINT := -1070586088; (*the given event id is no customer event id*)
|
||||
arEVENTLOG_ERR_LOGBOOK_NOT_FOUND : DINT := -1070586087; (*a logbook with the given name does not exist*)
|
||||
arEVENTLOG_ERR_ADDDATA_NULL : DINT := -1070586086; (*the given pointer to the additional data buffer is NULL*)
|
||||
arEVENTLOG_ERR_NO_ERRORNUMBER : DINT := -1070586085; (*the given record is no error number record*)
|
||||
arEVENTLOG_ERR_MODULE_EXISTS : DINT := -1070586084; (*another module with the given name already exists*)
|
||||
arEVENTLOG_ERR_NO_DESCRIPTION : DINT := -1070586083; (*no description was found for the given record id*)
|
||||
arEVENTLOG_ERR_DESCRIPTION_NULL : DINT := -1070586082; (*the given pointer to the description buffer is NULL*)
|
||||
arEVENTLOG_ERR_FORMAT_INVALID : DINT := -1070586081; (*the given format for the additional data is unknown*)
|
||||
|
||||
arEVENTLOG_WRN_NO_EVENTID : DINT := -2144327920; (*the given record is no event id record*)
|
||||
arEVENTLOG_WRN_FORMAT_INVALID : DINT := -2144327919; (*the given format for the additional data is unknown*)
|
||||
arEVENTLOG_WRN_ADDDATA_NULL : DINT := -2144327918; (*the given pointer to the additional data is NULL*)
|
||||
|
||||
arEVENTLOG_INF_SIZE : DINT := 1076897555; (*specified data size too small*)
|
||||
|
||||
arEVENTLOG_SEVERITY_SUCCESS : USINT := 0; (*severity code success*)
|
||||
arEVENTLOG_SEVERITY_INFO : USINT := 1; (*severity code informational*)
|
||||
arEVENTLOG_SEVERITY_WARNING : USINT := 2; (*severity code warning*)
|
||||
arEVENTLOG_SEVERITY_ERROR : USINT := 3; (*severity code error*)
|
||||
|
||||
arEVENTLOG_PERSISTENCE_VOLATILE : USINT := 0; (*persistence volatile*)
|
||||
arEVENTLOG_PERSISTENCE_REMANENT : USINT := 1; (*persistence remanent*)
|
||||
arEVENTLOG_PERSISTENCE_PERSIST : USINT := 2; (*persistence persistent*)
|
||||
|
||||
arEVENTLOG_ADDFORMAT_BINARY : USINT := 0; (*additional data format binary*)
|
||||
arEVENTLOG_ADDFORMAT_TEXT : USINT := 1; (*additional data format series of null terminated strings*)
|
||||
arEVENTLOG_ADDFORMAT_CODED : USINT := 2; (*additional data format binary coded data*)
|
||||
arEVENTLOG_ADDFORMAT_CUST_BASE : USINT := 100; (*additional data format begin of customer area*)
|
||||
arEVENTLOG_ADDFORMAT_CUST_MAX : USINT := 150; (*additional data format end of customer area*)
|
||||
END_VAR
|
||||
12
Logical/Libraries/ArEventLog/Binary.lby
Normal file
12
Logical/Libraries/ArEventLog/Binary.lby
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=3.0.0.0?>
|
||||
<Library xmlns="http://br-automation.co.at/AS/Library" Description="The ArEventLog library can be used to collect additional error information and for further processing.">
|
||||
<Files>
|
||||
<File>ArEventLog.fun</File>
|
||||
<File>ArEventLog.typ</File>
|
||||
<File>ArEventLog.var</File>
|
||||
</Files>
|
||||
<Dependencies>
|
||||
<Dependency ObjectName="runtime" />
|
||||
</Dependencies>
|
||||
</Library>
|
||||
354
Logical/Libraries/ArEventLog/SG4/ArEventLog.h
Normal file
354
Logical/Libraries/ArEventLog/SG4/ArEventLog.h
Normal file
@@ -0,0 +1,354 @@
|
||||
/* Automation Studio generated header file */
|
||||
/* Do not edit ! */
|
||||
|
||||
#ifndef _AREVENTLOG_
|
||||
#define _AREVENTLOG_
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#include <bur/plctypes.h>
|
||||
|
||||
#include <runtime.h>
|
||||
|
||||
#ifndef _BUR_PUBLIC
|
||||
#define _BUR_PUBLIC
|
||||
#endif
|
||||
/* Constants */
|
||||
#ifdef _REPLACE_CONST
|
||||
#define arEVENTLOG_ADDFORMAT_CUST_MAX 150U
|
||||
#define arEVENTLOG_ADDFORMAT_CUST_BASE 100U
|
||||
#define arEVENTLOG_ADDFORMAT_CODED 2U
|
||||
#define arEVENTLOG_ADDFORMAT_TEXT 1U
|
||||
#define arEVENTLOG_ADDFORMAT_BINARY 0U
|
||||
#define arEVENTLOG_PERSISTENCE_PERSIST 2U
|
||||
#define arEVENTLOG_PERSISTENCE_REMANENT 1U
|
||||
#define arEVENTLOG_PERSISTENCE_VOLATILE 0U
|
||||
#define arEVENTLOG_SEVERITY_ERROR 3U
|
||||
#define arEVENTLOG_SEVERITY_WARNING 2U
|
||||
#define arEVENTLOG_SEVERITY_INFO 1U
|
||||
#define arEVENTLOG_SEVERITY_SUCCESS 0U
|
||||
#define arEVENTLOG_INF_SIZE 1076897555
|
||||
#define arEVENTLOG_WRN_ADDDATA_NULL (-2144327918)
|
||||
#define arEVENTLOG_WRN_FORMAT_INVALID (-2144327919)
|
||||
#define arEVENTLOG_WRN_NO_EVENTID (-2144327920)
|
||||
#define arEVENTLOG_ERR_FORMAT_INVALID (-1070586081)
|
||||
#define arEVENTLOG_ERR_DESCRIPTION_NULL (-1070586082)
|
||||
#define arEVENTLOG_ERR_NO_DESCRIPTION (-1070586083)
|
||||
#define arEVENTLOG_ERR_MODULE_EXISTS (-1070586084)
|
||||
#define arEVENTLOG_ERR_NO_ERRORNUMBER (-1070586085)
|
||||
#define arEVENTLOG_ERR_ADDDATA_NULL (-1070586086)
|
||||
#define arEVENTLOG_ERR_LOGBOOK_NOT_FOUND (-1070586087)
|
||||
#define arEVENTLOG_ERR_EVENTID_INVALID (-1070586088)
|
||||
#define arEVENTLOG_ERR_IDENT_SYSTEM (-1070586089)
|
||||
#define arEVENTLOG_ERR_IDENT_INVALID (-1070586090)
|
||||
#define arEVENTLOG_ERR_PERSISTENCE_INVAL (-1070586091)
|
||||
#define arEVENTLOG_ERR_SIZE_INVALID (-1070586092)
|
||||
#define arEVENTLOG_ERR_NAME_INVALID (-1070586093)
|
||||
#define arEVENTLOG_ERR_INTERNAL (-1070586094)
|
||||
#define arEVENTLOG_ERR_LOGBOOK_EXISTS (-1070586095)
|
||||
#define arEVENTLOG_ERR_EXISTING (-1070586095)
|
||||
#define arEVENTLOG_ERR_RECORDID_INVALID (-1070586096)
|
||||
#define arEVENTLOG_ERR_PARAMETER (-1070586096)
|
||||
#else
|
||||
#ifndef _GLOBAL_CONST
|
||||
#define _GLOBAL_CONST _WEAK const
|
||||
#endif
|
||||
_GLOBAL_CONST unsigned char arEVENTLOG_ADDFORMAT_CUST_MAX;
|
||||
_GLOBAL_CONST unsigned char arEVENTLOG_ADDFORMAT_CUST_BASE;
|
||||
_GLOBAL_CONST unsigned char arEVENTLOG_ADDFORMAT_CODED;
|
||||
_GLOBAL_CONST unsigned char arEVENTLOG_ADDFORMAT_TEXT;
|
||||
_GLOBAL_CONST unsigned char arEVENTLOG_ADDFORMAT_BINARY;
|
||||
_GLOBAL_CONST unsigned char arEVENTLOG_PERSISTENCE_PERSIST;
|
||||
_GLOBAL_CONST unsigned char arEVENTLOG_PERSISTENCE_REMANENT;
|
||||
_GLOBAL_CONST unsigned char arEVENTLOG_PERSISTENCE_VOLATILE;
|
||||
_GLOBAL_CONST unsigned char arEVENTLOG_SEVERITY_ERROR;
|
||||
_GLOBAL_CONST unsigned char arEVENTLOG_SEVERITY_WARNING;
|
||||
_GLOBAL_CONST unsigned char arEVENTLOG_SEVERITY_INFO;
|
||||
_GLOBAL_CONST unsigned char arEVENTLOG_SEVERITY_SUCCESS;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_INF_SIZE;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_WRN_ADDDATA_NULL;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_WRN_FORMAT_INVALID;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_WRN_NO_EVENTID;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_ERR_FORMAT_INVALID;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_ERR_DESCRIPTION_NULL;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_ERR_NO_DESCRIPTION;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_ERR_MODULE_EXISTS;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_ERR_NO_ERRORNUMBER;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_ERR_ADDDATA_NULL;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_ERR_LOGBOOK_NOT_FOUND;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_ERR_EVENTID_INVALID;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_ERR_IDENT_SYSTEM;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_ERR_IDENT_INVALID;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_ERR_PERSISTENCE_INVAL;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_ERR_SIZE_INVALID;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_ERR_NAME_INVALID;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_ERR_INTERNAL;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_ERR_LOGBOOK_EXISTS;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_ERR_EXISTING;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_ERR_RECORDID_INVALID;
|
||||
_GLOBAL_CONST signed long arEVENTLOG_ERR_PARAMETER;
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
/* Datatypes and datatypes of function blocks */
|
||||
typedef struct ArEventLogTimeStampType
|
||||
{ unsigned long sec;
|
||||
unsigned long nsec;
|
||||
} ArEventLogTimeStampType;
|
||||
|
||||
typedef struct ArEventLogAsyncInternalType
|
||||
{ struct ArFBStateInternalType FBStateCtx;
|
||||
struct ArFBAsyFuMaInternalType AsyFuMaCtx;
|
||||
} ArEventLogAsyncInternalType;
|
||||
|
||||
typedef struct ArEventLogInternalType
|
||||
{ struct ArFBStateInternalType FBStateCtx;
|
||||
} ArEventLogInternalType;
|
||||
|
||||
typedef unsigned long ArEventLogIdentType;
|
||||
|
||||
typedef struct ArEventLogCreate
|
||||
{
|
||||
/* VAR_INPUT (analog) */
|
||||
plcstring Name[257];
|
||||
unsigned long Size;
|
||||
unsigned char Persistence;
|
||||
unsigned long Info;
|
||||
/* VAR_OUTPUT (analog) */
|
||||
signed long StatusID;
|
||||
ArEventLogIdentType Ident;
|
||||
/* VAR (analog) */
|
||||
struct ArEventLogAsyncInternalType Internal;
|
||||
/* VAR_INPUT (digital) */
|
||||
plcbit Execute;
|
||||
/* VAR_OUTPUT (digital) */
|
||||
plcbit Done;
|
||||
plcbit Busy;
|
||||
plcbit Error;
|
||||
} ArEventLogCreate_typ;
|
||||
|
||||
typedef struct ArEventLogDelete
|
||||
{
|
||||
/* VAR_INPUT (analog) */
|
||||
ArEventLogIdentType Ident;
|
||||
/* VAR_OUTPUT (analog) */
|
||||
signed long StatusID;
|
||||
/* VAR (analog) */
|
||||
struct ArEventLogAsyncInternalType Internal;
|
||||
/* VAR_INPUT (digital) */
|
||||
plcbit Execute;
|
||||
/* VAR_OUTPUT (digital) */
|
||||
plcbit Done;
|
||||
plcbit Busy;
|
||||
plcbit Error;
|
||||
} ArEventLogDelete_typ;
|
||||
|
||||
typedef struct ArEventLogGetIdent
|
||||
{
|
||||
/* VAR_INPUT (analog) */
|
||||
plcstring Name[257];
|
||||
/* VAR_OUTPUT (analog) */
|
||||
signed long StatusID;
|
||||
ArEventLogIdentType Ident;
|
||||
/* VAR (analog) */
|
||||
struct ArEventLogInternalType Internal;
|
||||
/* VAR_INPUT (digital) */
|
||||
plcbit Execute;
|
||||
/* VAR_OUTPUT (digital) */
|
||||
plcbit Done;
|
||||
plcbit Error;
|
||||
} ArEventLogGetIdent_typ;
|
||||
|
||||
typedef unsigned long ArEventLogRecordIDType;
|
||||
|
||||
typedef struct ArEventLogWrite
|
||||
{
|
||||
/* VAR_INPUT (analog) */
|
||||
ArEventLogIdentType Ident;
|
||||
signed long EventID;
|
||||
ArEventLogRecordIDType OriginRecordID;
|
||||
plcstring ObjectID[37];
|
||||
unsigned long AddDataSize;
|
||||
unsigned char AddDataFormat;
|
||||
unsigned long AddData;
|
||||
unsigned long TimeStamp;
|
||||
/* VAR_OUTPUT (analog) */
|
||||
signed long StatusID;
|
||||
ArEventLogRecordIDType RecordID;
|
||||
/* VAR (analog) */
|
||||
struct ArEventLogInternalType Internal;
|
||||
/* VAR_INPUT (digital) */
|
||||
plcbit Execute;
|
||||
/* VAR_OUTPUT (digital) */
|
||||
plcbit Done;
|
||||
plcbit Error;
|
||||
} ArEventLogWrite_typ;
|
||||
|
||||
typedef struct ArEventLogGetLatestRecordID
|
||||
{
|
||||
/* VAR_INPUT (analog) */
|
||||
ArEventLogIdentType Ident;
|
||||
/* VAR_OUTPUT (analog) */
|
||||
signed long StatusID;
|
||||
ArEventLogRecordIDType RecordID;
|
||||
/* VAR (analog) */
|
||||
struct ArEventLogInternalType Internal;
|
||||
/* VAR_INPUT (digital) */
|
||||
plcbit Execute;
|
||||
/* VAR_OUTPUT (digital) */
|
||||
plcbit Done;
|
||||
plcbit Error;
|
||||
} ArEventLogGetLatestRecordID_typ;
|
||||
|
||||
typedef struct ArEventLogGetPreviousRecordID
|
||||
{
|
||||
/* VAR_INPUT (analog) */
|
||||
ArEventLogIdentType Ident;
|
||||
ArEventLogRecordIDType RecordID;
|
||||
/* VAR_OUTPUT (analog) */
|
||||
signed long StatusID;
|
||||
ArEventLogRecordIDType PrevRecordID;
|
||||
/* VAR (analog) */
|
||||
struct ArEventLogInternalType Internal;
|
||||
/* VAR_INPUT (digital) */
|
||||
plcbit Execute;
|
||||
/* VAR_OUTPUT (digital) */
|
||||
plcbit Done;
|
||||
plcbit Error;
|
||||
} ArEventLogGetPreviousRecordID_typ;
|
||||
|
||||
typedef struct ArEventLogRead
|
||||
{
|
||||
/* VAR_INPUT (analog) */
|
||||
ArEventLogIdentType Ident;
|
||||
ArEventLogRecordIDType RecordID;
|
||||
/* VAR_OUTPUT (analog) */
|
||||
signed long StatusID;
|
||||
signed long EventID;
|
||||
ArEventLogRecordIDType OriginRecordID;
|
||||
unsigned char AddDataFormat;
|
||||
unsigned long AddDataSize;
|
||||
struct ArEventLogTimeStampType TimeStamp;
|
||||
/* VAR (analog) */
|
||||
struct ArEventLogInternalType Internal;
|
||||
/* VAR_INPUT (digital) */
|
||||
plcbit Execute;
|
||||
/* VAR_OUTPUT (digital) */
|
||||
plcbit Done;
|
||||
plcbit Error;
|
||||
} ArEventLogRead_typ;
|
||||
|
||||
typedef plcstring ArEventLogLanguageCodeType[19];
|
||||
|
||||
typedef struct ArEventLogReadDescription
|
||||
{
|
||||
/* VAR_INPUT (analog) */
|
||||
ArEventLogIdentType Ident;
|
||||
ArEventLogRecordIDType RecordID;
|
||||
ArEventLogLanguageCodeType LanguageCode;
|
||||
plcstring Qualifier[251];
|
||||
unsigned long TextBuffer;
|
||||
unsigned long TextBufferSize;
|
||||
/* VAR_OUTPUT (analog) */
|
||||
signed long StatusID;
|
||||
unsigned long TextSize;
|
||||
/* VAR (analog) */
|
||||
struct ArEventLogAsyncInternalType Internal;
|
||||
/* VAR_INPUT (digital) */
|
||||
plcbit Execute;
|
||||
/* VAR_OUTPUT (digital) */
|
||||
plcbit Done;
|
||||
plcbit Busy;
|
||||
plcbit Error;
|
||||
} ArEventLogReadDescription_typ;
|
||||
|
||||
typedef struct ArEventLogReadErrorNumber
|
||||
{
|
||||
/* VAR_INPUT (analog) */
|
||||
ArEventLogIdentType Ident;
|
||||
ArEventLogRecordIDType RecordID;
|
||||
/* VAR_OUTPUT (analog) */
|
||||
signed long StatusID;
|
||||
unsigned long ErrorNumber;
|
||||
unsigned char Severity;
|
||||
/* VAR (analog) */
|
||||
struct ArEventLogInternalType Internal;
|
||||
/* VAR_INPUT (digital) */
|
||||
plcbit Execute;
|
||||
/* VAR_OUTPUT (digital) */
|
||||
plcbit Done;
|
||||
plcbit Error;
|
||||
} ArEventLogReadErrorNumber_typ;
|
||||
|
||||
typedef struct ArEventLogReadAddData
|
||||
{
|
||||
/* VAR_INPUT (analog) */
|
||||
ArEventLogIdentType Ident;
|
||||
ArEventLogRecordIDType RecordID;
|
||||
unsigned long AddData;
|
||||
unsigned long BytesToRead;
|
||||
/* VAR_OUTPUT (analog) */
|
||||
signed long StatusID;
|
||||
unsigned long AddDataSize;
|
||||
/* VAR (analog) */
|
||||
struct ArEventLogInternalType Internal;
|
||||
/* VAR_INPUT (digital) */
|
||||
plcbit Execute;
|
||||
/* VAR_OUTPUT (digital) */
|
||||
plcbit Done;
|
||||
plcbit Error;
|
||||
} ArEventLogReadAddData_typ;
|
||||
|
||||
typedef struct ArEventLogReadObjectID
|
||||
{
|
||||
/* VAR_INPUT (analog) */
|
||||
ArEventLogIdentType Ident;
|
||||
ArEventLogRecordIDType RecordID;
|
||||
/* VAR_OUTPUT (analog) */
|
||||
signed long StatusID;
|
||||
plcstring ObjectID[37];
|
||||
/* VAR (analog) */
|
||||
struct ArEventLogInternalType Internal;
|
||||
/* VAR_INPUT (digital) */
|
||||
plcbit Execute;
|
||||
/* VAR_OUTPUT (digital) */
|
||||
plcbit Done;
|
||||
plcbit Error;
|
||||
} ArEventLogReadObjectID_typ;
|
||||
|
||||
|
||||
|
||||
/* Prototyping of functions and function blocks */
|
||||
_BUR_PUBLIC void ArEventLogCreate(struct ArEventLogCreate* inst);
|
||||
_BUR_PUBLIC void ArEventLogDelete(struct ArEventLogDelete* inst);
|
||||
_BUR_PUBLIC void ArEventLogGetIdent(struct ArEventLogGetIdent* inst);
|
||||
_BUR_PUBLIC void ArEventLogWrite(struct ArEventLogWrite* inst);
|
||||
_BUR_PUBLIC void ArEventLogGetLatestRecordID(struct ArEventLogGetLatestRecordID* inst);
|
||||
_BUR_PUBLIC void ArEventLogGetPreviousRecordID(struct ArEventLogGetPreviousRecordID* inst);
|
||||
_BUR_PUBLIC void ArEventLogRead(struct ArEventLogRead* inst);
|
||||
_BUR_PUBLIC void ArEventLogReadDescription(struct ArEventLogReadDescription* inst);
|
||||
_BUR_PUBLIC void ArEventLogReadErrorNumber(struct ArEventLogReadErrorNumber* inst);
|
||||
_BUR_PUBLIC void ArEventLogReadAddData(struct ArEventLogReadAddData* inst);
|
||||
_BUR_PUBLIC void ArEventLogReadObjectID(struct ArEventLogReadObjectID* inst);
|
||||
_BUR_PUBLIC signed long ArEventLogMakeEventID(unsigned char Severity, unsigned short Facility, unsigned short ErrorCode);
|
||||
_BUR_PUBLIC plcbit ArEventLogIsError(signed long EventID);
|
||||
_BUR_PUBLIC plcbit ArEventLogIsWarning(signed long EventID);
|
||||
_BUR_PUBLIC plcbit ArEventLogIsInformation(signed long EventID);
|
||||
_BUR_PUBLIC plcbit ArEventLogIsSuccess(signed long EventID);
|
||||
_BUR_PUBLIC plcbit ArEventLogIsCustomerArea(signed long EventID);
|
||||
_BUR_PUBLIC plcbit ArEventLogAddDataInit(unsigned long Buffer, unsigned long BufferSize, unsigned char Format);
|
||||
_BUR_PUBLIC plcbit ArEventLogAddDataUdint(unsigned long Buffer, unsigned long BufferSize, unsigned long Value);
|
||||
_BUR_PUBLIC plcbit ArEventLogAddDataDint(unsigned long Buffer, unsigned long BufferSize, signed long Value);
|
||||
_BUR_PUBLIC plcbit ArEventLogAddDataString(unsigned long Buffer, unsigned long BufferSize, unsigned long Value);
|
||||
_BUR_PUBLIC plcbit ArEventLogAddDataQuantity(unsigned long Buffer, unsigned long BufferSize, double Value, signed long UnitID, unsigned long NamespaceURI);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
#endif /* _AREVENTLOG_ */
|
||||
|
||||
123
Logical/Libraries/ArTextSys/ArTextSys.fun
Normal file
123
Logical/Libraries/ArTextSys/ArTextSys.fun
Normal file
@@ -0,0 +1,123 @@
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK ArTextSysGetSystemLanguage (*determine preferred user-language*)
|
||||
VAR_INPUT
|
||||
Execute : BOOL; (*start on rising edge*)
|
||||
END_VAR
|
||||
VAR_OUTPUT
|
||||
Done : BOOL; (*execution successful. FB finished*)
|
||||
Busy : BOOL; (*FB is still active; needs call*)
|
||||
Error : BOOL;
|
||||
StatusID : DINT;
|
||||
LanguageCode : ArTextSysLanguageCodeType;
|
||||
END_VAR
|
||||
VAR (*internals*)
|
||||
Internal : ArTextSysExec1InternalType;
|
||||
END_VAR
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK ArTextSysSetSystemLanguage (*update preferred user-language*)
|
||||
VAR_INPUT
|
||||
Execute : BOOL;
|
||||
LanguageCode : ArTextSysLanguageCodeType;
|
||||
END_VAR
|
||||
VAR_OUTPUT
|
||||
Done : BOOL;
|
||||
Busy : BOOL;
|
||||
Error : BOOL; (*error occurred during operation*)
|
||||
StatusID : DINT;
|
||||
END_VAR
|
||||
VAR (*internals*)
|
||||
Internal : ArTextSysExec1InternalType;
|
||||
END_VAR
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK ArTextSysGetNamespaceLanguages
|
||||
VAR_INPUT
|
||||
Execute : BOOL; (*start on rising edge*)
|
||||
Namespace : UDINT; (*string-pointer to namespace*)
|
||||
First : BOOL; (*get first entry; or next*)
|
||||
END_VAR
|
||||
VAR_OUTPUT
|
||||
Done : BOOL; (*execution successful. FB finished*)
|
||||
Busy : BOOL; (*FB is still active; needs call*)
|
||||
Error : BOOL; (*error occurred during operation*)
|
||||
StatusID : DINT;
|
||||
LanguageCode : ArTextSysLanguageCodeType;
|
||||
EndOfList : BOOL; (*indicator for last found entry*)
|
||||
END_VAR
|
||||
VAR (*internals*)
|
||||
Internal : ArTextSysIter1InternalType;
|
||||
END_VAR
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK ArTextSysGetText
|
||||
VAR_INPUT
|
||||
Execute : BOOL;
|
||||
Namespace : UDINT; (*string-pointer to namespace*)
|
||||
TextID : UDINT; (*string-pointer to text-key*)
|
||||
LanguageCode : ArTextSysLanguageCodeType;
|
||||
TextBufferSize : UDINT; (*size of result-buffer to get text*)
|
||||
TextBuffer : UDINT; (*pointer to text result-buffer*)
|
||||
SearchMode : ArTextSysSearchModeEnum;
|
||||
END_VAR
|
||||
VAR_OUTPUT
|
||||
Done : BOOL; (*execution successful. FB finished*)
|
||||
Busy : BOOL; (*FB is still active; needs call*)
|
||||
Error : BOOL; (*error occurred during operation*)
|
||||
StatusID : DINT;
|
||||
TextSize : UDINT; (*Length of text in result-buffer*)
|
||||
END_VAR
|
||||
VAR (*internals*)
|
||||
Internal : ArTextSysExec1InternalType;
|
||||
END_VAR
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK ArTextSysFormatString
|
||||
VAR_INPUT
|
||||
Execute : BOOL;
|
||||
FormatString : UDINT; (*string-pointer to format-template*)
|
||||
ArgumentCount : UINT; (*count of arguments in list*)
|
||||
ArgumentList : ARRAY[0..9] OF ArTextSysFormatArgumentType;
|
||||
LanguageCode : ArTextSysLanguageCodeType;
|
||||
MeasurementCode : UDINT;
|
||||
TextBufferSize : UDINT; (*size of result-buffer to get text*)
|
||||
TextBuffer : UDINT; (*pointer to result-buffer*)
|
||||
END_VAR
|
||||
VAR_OUTPUT
|
||||
Done : BOOL; (*execution successful. FB finished*)
|
||||
Busy : BOOL; (*FB is still active; needs call*)
|
||||
Error : BOOL; (*error occurred during operation*)
|
||||
StatusID : DINT;
|
||||
TextSize : UDINT; (*Length of text in result-buffer*)
|
||||
END_VAR
|
||||
VAR (*internals*)
|
||||
Internal : ArTextSysExec1InternalType;
|
||||
END_VAR
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
{REDUND_CONTEXT} {REDUND_UNREPLICABLE} FUNCTION_BLOCK ArTextSysGetFormattedText
|
||||
VAR_INPUT
|
||||
Execute : BOOL;
|
||||
Namespace : UDINT; (*string-pointer to namespace*)
|
||||
TextID : UDINT; (*string-pointer to text-key*)
|
||||
ArgumentCount : UINT; (*count of arguments in list*)
|
||||
ArgumentList : ARRAY[0..9] OF ArTextSysFormatArgumentType;
|
||||
LanguageCode : ArTextSysLanguageCodeType;
|
||||
MeasurementCode : UDINT;
|
||||
TextBufferSize : UDINT; (*size of result-buffer to get text*)
|
||||
TextBuffer : UDINT; (*pointer to result-buffer*)
|
||||
SearchMode : ArTextSysSearchModeEnum;
|
||||
END_VAR
|
||||
VAR_OUTPUT
|
||||
Done : BOOL; (*execution successful. FB finished*)
|
||||
Busy : BOOL; (*FB is still active; needs call*)
|
||||
Error : BOOL; (*error occurred during operation*)
|
||||
StatusID : DINT;
|
||||
TextSize : UDINT; (*Length of text in result-buffer*)
|
||||
END_VAR
|
||||
VAR (*internals*)
|
||||
Internal : ArTextSysExec1InternalType;
|
||||
END_VAR
|
||||
END_FUNCTION_BLOCK
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user