Anlagenanbindung, Sicherheit geändert, neue Werkzeuge etc etc.
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version="4.9.2.46" WorkingVersion="4.9"?>
|
||||
<?AutomationStudio Version="4.9.4.92 SP" WorkingVersion="4.9"?>
|
||||
<Project Description="Lackierzelle" Version="1.00.0" Edition="Standard" EditionComment="Standard" xmlns="http://br-automation.co.at/AS/Project">
|
||||
<Communication />
|
||||
<Communication>
|
||||
<OnlineConfiguration Name="Fritzmeier-Laser_Hausnetz" DeviceType="TCPIP" DeviceParameters="/IF=tcpip /LOPO=11159 /SA=1" ConnectionParameters="/COMT=2500 /RT=1000 /AM=* /SDT=5 /DAIP=10.4.18.60 /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" />
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version="4.9.2.46"?>
|
||||
<?AutomationStudio Version="4.9.4.92 SP"?>
|
||||
<ProjectSettings xmlns="http://br-automation.co.at/AS/ProjectSettings">
|
||||
<ConfigurationManager ActiveConfigurationName="Config0" />
|
||||
<Deployment Value="ActiveCpu" />
|
||||
|
||||
@@ -21,7 +21,7 @@ G500 ;Nullpunktverschiebung deaktivieren
|
||||
IF bLaserMidPos
|
||||
G01 Z1485 ;Freifahren
|
||||
G01 X4290 Y447.5 C-10 A0 ;Vorpos Anfahren
|
||||
G01 Z1001.6 M111 ;Laser Kalibrieren
|
||||
G01 Z1001.6 M113 ;Laser Kalibrieren
|
||||
G01 Z1485 ;Freifahren
|
||||
./CncHome ;Grundstellung anfahren
|
||||
MPLOG_WRITE("Kalibrieren beendet")
|
||||
|
||||
@@ -9,6 +9,7 @@ TYPE
|
||||
gytp_IPGInterfaceOut : STRUCT (*Output to IPG Laser Interface*)
|
||||
bPilotLaserOn : BOOL := FALSE; (*Pilotlaser Einschalten*)
|
||||
bEnalbeLaser : BOOL := FALSE; (*Laser mit Programm 0 einschalten*)
|
||||
bCuttingGasOn : BOOL := FALSE; (*Schneidgas Einschalten*)
|
||||
uiOutputPower : UINT; (*Laserleistung in W*)
|
||||
END_STRUCT;
|
||||
gytp_IPGInterface : STRUCT (*IPG Laser Interface*)
|
||||
@@ -17,16 +18,16 @@ TYPE
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
|
||||
(*//Interface Raytools-Interface*)
|
||||
(*//Interface Raytools-Laserkopf*)
|
||||
|
||||
TYPE
|
||||
gytp_RTInterfaceIn : STRUCT (*Inputs from IPG Laser Interface*)
|
||||
gytp_RTInterfaceIn : STRUCT (*Inputs from Raytools Head*)
|
||||
bHeadIsOk : USINT; (*Kopf ist OK / Kalibriert / Referenziert und keine St<53>rung*)
|
||||
bHeadIsMidPos : BOOL := FALSE; (*Kopf ist in Mittelstellung*)
|
||||
bHeadIsInFollowpos : BOOL := FALSE; (*Kopf ist is in H<>henregelung*)
|
||||
bHeadCalibrated : BOOL; (*Kopf ist kalibriert*)
|
||||
END_STRUCT;
|
||||
gytp_RTInterfaceOut : STRUCT (*Output to IPG Laser Interface*)
|
||||
gytp_RTInterfaceOut : STRUCT (*Output to Raytools Head*)
|
||||
bMidPos : BOOL := FALSE; (*InMittelpos*)
|
||||
bFollowPos : BOOL := FALSE; (*Position folgen*)
|
||||
bCalibrateLaser : BOOL; (*Kalibrieren*)
|
||||
@@ -37,4 +38,53 @@ TYPE
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
|
||||
(*//Interface Linien-Interface*)
|
||||
|
||||
TYPE
|
||||
gytp_LineInterfaceIn : STRUCT (*Eing<6E>nge von Liniensteuerung*)
|
||||
bLifebeat : BOOL; (*0.0 Lifebeat*)
|
||||
bModeManual : BOOL := FALSE; (*0.1 Betriebsart Hand*)
|
||||
bModeAutomatic : BOOL := FALSE; (*0.2 Betriebsart Auto*)
|
||||
bCycleActive : BOOL; (*0.3 Auto Zyklus aktiv*)
|
||||
bError : BOOL; (*0.4 St<53>rung aktiv*)
|
||||
bRequestDoor : BOOL; (*0.5 Anforderung f<>r T<>r<EFBFBD>ffnung Linie*)
|
||||
bRobOutOfShuttle1 : BOOL; (*1.0 Roboter Au<41>erhalb Kollisionsbereich Shuttle 1*)
|
||||
bRobOutOfShuttle2 : BOOL; (*1.1 Roboter Au<41>erhalb Kollisionsbereich Shuttle 2*)
|
||||
bVacuumOnShuttle1 : BOOL; (*2.0 Vakkuum Einschalten Shuttle 1 (nur in Automatik)*)
|
||||
bVacuumOnShuttle2 : BOOL; (*2.1 Vakkuum Einschalten Shuttle 2 (nur inAutomatik)*)
|
||||
bPlacedPartShuttle1 : BOOL; (*2.2 Bauteil abgelegt Shuttle 1*)
|
||||
bPlacedPartShuttle2 : BOOL; (*2.3 Bauteil abgelegt Shuttle 2*)
|
||||
bPickedPartShuttle1 : BOOL; (*2.4 Bauteil abgeholt Shuttle 1*)
|
||||
bPickedPartShuttle2 : BOOL; (*2.5 Bauteil abgeholt Shuttle 2*)
|
||||
usPartIDShuttle1 : USINT; (*Byte 4 Bauteilnummer Shuttle 1*)
|
||||
usPartIDShuttle2 : USINT; (*Byte 5 Bauteilnummer Shuttle 2*)
|
||||
END_STRUCT;
|
||||
gytp_LineInterfaceOut : STRUCT (*Ausgange zur Liniensteuerung*)
|
||||
bLifebeat : BOOL; (*0.0 Lifebeat (negiert zur<75>ckgespiegelt*)
|
||||
bModeManual_X : BOOL; (*0.1 Betriebsart Hand (wird direkt in Task gesetzt - Platzhaltervariable)*)
|
||||
bModeAutomatic_X : BOOL; (*0.2 Betriebsart Auto Hand (wird direkt in Task gesetzt - Platzhaltervariable)*)
|
||||
bCycleActive : BOOL; (*0.3 Auto Zyklus aktiv*)
|
||||
bError : BOOL; (*0.4 St<53>rung aktiv*)
|
||||
bReleaseDoor : BOOL; (*0.5 Freigabe zur T<>r<EFBFBD>ffnung Linie*)
|
||||
bShuttle1InPos : BOOL; (*1.0 Shuttle 1 in Beladepos *)
|
||||
bShuttle2InPos : BOOL; (*1.1 Shuttle 2 in Beladepos*)
|
||||
bVacuumIsOnShuttle1 : BOOL; (*2.0 Vakuum Shuttle 1 ist Ein und Ok*)
|
||||
bVacuumIsOnShuttle2 : BOOL; (*2.1 Vakuum Shuttle 2 ist Ein und Ok*)
|
||||
bReadyToPlacePartShuttle1 : BOOL; (*2.2 Bereit zum Bauteil ablegen Shuttle 1*)
|
||||
bReadyToPlacePartShuttle2 : BOOL; (*2.3 Bereit zum Bauteil ablegen Shuttle 2*)
|
||||
bFinishedPartReadyShuttle1 : BOOL; (*2.4 Fertiges Bauteil bereit zum Abholen Shuttle 1*)
|
||||
bFinishedPartReadyShuttle2 : BOOL; (*2.5 Fertiges Bauteil bereit zum Abholen Shuttle 2*)
|
||||
bFinishedPartIOShuttle1 : BOOL; (*2.6 Fetiges Bauteil IO (Sonst NIO) Shuttle 1*)
|
||||
bFinishedPartIOShuttle2 : BOOL; (*2.7 Fetiges Bauteil IO (Sonst NIO) Shuttle 2*)
|
||||
usToolIDShuttle1_X : USINT; (*Byte 4 Werkzeugnummer Shuttle 1 (wird direkt in Task gesetzt - Platzhaltervariable)*)
|
||||
usTopolIDShuttle2_X : USINT; (*Byte 5 Werkzeugnummer Shuttle 2 (wird direkt in Task gesetzt - Platzhaltervariable)*)
|
||||
udCutTimeShuttle1 : UDINT; (*Byte 6-9 Schneidzeit Shuttle 1*)
|
||||
udCutTimeShuttle2 : UDINT; (*Byte 10-13 Schneidzeit Shuttle 2*)
|
||||
END_STRUCT;
|
||||
gytp_LineInterface : STRUCT (*Linien Interface*)
|
||||
In : gytp_LineInterfaceIn; (*von Liniensteuerung*)
|
||||
Out : gytp_LineInterfaceOut; (*an Liniensteuerung*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
|
||||
(**)
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
(*//Kommunikationsstrukturen*)
|
||||
VAR RETAIN
|
||||
gIPGLaserInterface : gytp_IPGInterface;
|
||||
gRTLaserInterface : gytp_RTInterface;
|
||||
VAR
|
||||
gIPGLaserInterface : gytp_IPGInterface; (*Interface IPG Laser*)
|
||||
gRTLaserInterface : gytp_RTInterface; (*Interface Raytools*)
|
||||
gLineInterface : gytp_LineInterface; (*Interface Liniensteuerung*)
|
||||
END_VAR
|
||||
(*Variablen / Strukturen*)
|
||||
VAR
|
||||
|
||||
@@ -81,13 +81,23 @@ PROGRAM _CYCLIC
|
||||
LaserOut.Control.bResetErrors := gMP7121.Button;
|
||||
END_IF
|
||||
|
||||
IF gbInErrorPowerSupplyP4 THEN
|
||||
//Ohne Gas Laser deaktivieren
|
||||
LaserOut.uiOutPutPower := 0;
|
||||
END_IF
|
||||
|
||||
// Einzelschussmodus
|
||||
IF EDGEPOS (Status.bLocalCtrl) THEN
|
||||
Status.uiShootPower := 350;
|
||||
FUBs.TON_Shot.PT := t#30ms;
|
||||
END_IF
|
||||
|
||||
IF NOT Status.bLocalCtrl THEN
|
||||
Status.bShootMode := FALSE;
|
||||
END_IF
|
||||
TON_Shot.IN := (LaserOut.uiOutPutPower > 0) AND LaserOut.Control.bLaserOn AND Status.bShootMode;
|
||||
TON_Shot ();
|
||||
IF TON_Shot.Q THEN
|
||||
FUBs.TON_Shot.IN := (LaserOut.uiOutPutPower > 0) AND LaserOut.Control.bLaserOn AND Status.bShootMode;
|
||||
FUBs.TON_Shot ();
|
||||
IF FUBs.TON_Shot.Q THEN
|
||||
LaserOut.uiOutPutPower := 0;
|
||||
END_IF
|
||||
|
||||
@@ -95,11 +105,11 @@ PROGRAM _CYCLIC
|
||||
//Ausg<EFBFBD>nge
|
||||
//==============================================
|
||||
|
||||
//Schneidgas
|
||||
TOF_CuttingGas.IN := (LaserOut.uiOutPutPower > 0) AND LaserOut.Control.bLaserOn;
|
||||
TOF_CuttingGas.PT := t#1s;
|
||||
TOF_CuttingGas ();
|
||||
bOuCuttingGas := TOF_CuttingGas.Q;
|
||||
//Schneidgas (Mit Laser Einschalten oder <EFBFBD>ber M-Befahl aus CNC Task
|
||||
FUBs.TOF_CuttingGas.IN := (LaserOut.uiOutPutPower > 0) AND LaserOut.Control.bLaserOn;
|
||||
FUBs.TOF_CuttingGas.PT := t#1s;
|
||||
FUBs.TOF_CuttingGas ();
|
||||
bOuCuttingGas := FUBs.TOF_CuttingGas.Q OR gIPGLaserInterface.Out.bCuttingGasOn;
|
||||
|
||||
//Byte 1
|
||||
LaserOut.Control.bRequestLaser := TRUE;
|
||||
@@ -145,4 +155,109 @@ PROGRAM _CYCLIC
|
||||
//Byte 10
|
||||
usOuByte[10] := 0;
|
||||
|
||||
|
||||
//Alarme
|
||||
//======================================================
|
||||
//Systemwarnung
|
||||
FUBs.Alarm_SystemWarning.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_SystemWarning.bInAlarmSignal := LaserIn.Status.bSystemWarning;
|
||||
FUBs.Alarm_SystemWarning.sInAlName := 'IPGSystemWarning';
|
||||
FUBs.Alarm_SystemWarning ();
|
||||
|
||||
//Softwaresteuerung aktiv
|
||||
FUBs.Alarm_SoftwareCtrlActive.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_SoftwareCtrlActive.bInAlarmSignal := LaserIn.Status.bSoftwareCtrlActive;
|
||||
FUBs.Alarm_SoftwareCtrlActive.sInAlName := 'IPGSoftwareCtrlActive';
|
||||
FUBs.Alarm_SoftwareCtrlActive ();
|
||||
|
||||
//Robotermodus nicht aktiv
|
||||
FUBs.Alarm_RobotModeNotActive.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_RobotModeNotActive.bInAlarmSignal := NOT LaserIn.Status.bRobotModeActive AND gbSPLCInSafetyLaserOk;
|
||||
FUBs.Alarm_RobotModeNotActive.sInAlName := 'IPGRobotModeNotActive';
|
||||
FUBs.Alarm_RobotModeNotActive ();
|
||||
|
||||
//Systemst<EFBFBD>rung
|
||||
FUBs.Alarm_SystemError.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_SystemError.bInAlarmSignal := LaserIn.Status.bSystemError AND gbSPLCInSafetyLaserOk;
|
||||
FUBs.Alarm_SystemError.sInAlName := 'IPGSystemError';
|
||||
FUBs.Alarm_SystemError ();
|
||||
|
||||
//Laserst<EFBFBD>rung
|
||||
FUBs.Alarm_LaserError.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_LaserError.bInAlarmSignal := LaserIn.Status2.bLaserError;
|
||||
FUBs.Alarm_LaserError.sInAlName := 'IPGLaserError';
|
||||
FUBs.Alarm_LaserError ();
|
||||
|
||||
//Laserwarnung
|
||||
FUBs.Alarm_LaserWarning.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_LaserWarning.bInAlarmSignal := LaserIn.Status2.bLaserWarning;
|
||||
FUBs.Alarm_LaserWarning.sInAlName := 'IPGLaserWarning';
|
||||
FUBs.Alarm_LaserWarning ();
|
||||
|
||||
//K<EFBFBD>hlerst<EFBFBD>rung
|
||||
FUBs.Alarm_ChillerError.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_ChillerError.bInAlarmSignal := LaserIn.Status2.bChillerError;
|
||||
FUBs.Alarm_ChillerError.sInAlName := 'IPGChillerError';
|
||||
FUBs.Alarm_ChillerError ();
|
||||
|
||||
//K<EFBFBD>hlerwarnung
|
||||
FUBs.Alarm_ChillerWarning.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_ChillerWarning.bInAlarmSignal := LaserIn.Status2.bChillerWarning;
|
||||
FUBs.Alarm_ChillerWarning.sInAlName := 'IPGChillerWarning';
|
||||
FUBs.Alarm_ChillerWarning ();
|
||||
|
||||
//Sicherheitskreis offen
|
||||
FUBs.Alarm_SafteyOpen.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_SafteyOpen.bInAlarmSignal := LaserIn.Status2.bSafetyOpen AND gbSPLCInSafetyLaserOk;
|
||||
FUBs.Alarm_SafteyOpen.sInAlName := 'IPGSafetyOpen';
|
||||
FUBs.Alarm_SafteyOpen ();
|
||||
|
||||
//Kanalfehler
|
||||
FUBs.Alarm_ChannelError.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_ChannelError.bInAlarmSignal := LaserIn.Status2.bChannelError;
|
||||
FUBs.Alarm_ChannelError.sInAlName := 'IPGChannelError';
|
||||
FUBs.Alarm_ChannelError ();
|
||||
|
||||
//Kanalfehler
|
||||
FUBs.Alarm_SlotError.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_SlotError.bInAlarmSignal := LaserIn.Status2.bSlotError;
|
||||
FUBs.Alarm_SlotError.sInAlName := 'IPGChannelError';
|
||||
FUBs.Alarm_SlotError ();
|
||||
|
||||
//Schrank offen
|
||||
FUBs.Alarm_CabinetDoorOpen.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_CabinetDoorOpen.bInAlarmSignal := LaserIn.Status2.bCabinetDoorOpen;
|
||||
FUBs.Alarm_CabinetDoorOpen.sInAlName := 'IPGCabinetDoorOpen';
|
||||
FUBs.Alarm_CabinetDoorOpen ();
|
||||
|
||||
//Hohe Reflection
|
||||
FUBs.Alarm_HighBackReflection.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_HighBackReflection.bInAlarmSignal := LaserIn.Status2.bHighBackReflection;
|
||||
FUBs.Alarm_HighBackReflection.sInAlName := 'IPGHighBackReflection';
|
||||
FUBs.Alarm_HighBackReflection ();
|
||||
|
||||
//Vrsorgungswarnung
|
||||
FUBs.Alarm_ModulePowerSupplyWarning.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_ModulePowerSupplyWarning.bInAlarmSignal := LaserIn.Status2.bModulePowerSupplyWarning;
|
||||
FUBs.Alarm_ModulePowerSupplyWarning.sInAlName := 'IPGModulePowerSupplyWarning';
|
||||
FUBs.Alarm_ModulePowerSupplyWarning ();
|
||||
|
||||
//Kommunikationsfehler
|
||||
FUBs.Alarm_CommunicationError.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_CommunicationError.bInAlarmSignal := NOT bInModulOk OR NOT LaserIn.Status.bLaserAlive;
|
||||
FUBs.Alarm_CommunicationError.sInAlName := 'IPGCommError';
|
||||
FUBs.Alarm_CommunicationError ();
|
||||
|
||||
//Lokale Steuerung
|
||||
FUBs.Alarm_LocalMode.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_LocalMode.bInAlarmSignal := Status.bLocalCtrl;
|
||||
FUBs.Alarm_LocalMode.sInAlName := 'IPGLocalMode';
|
||||
FUBs.Alarm_LocalMode ();
|
||||
|
||||
//Lokale Steuerung
|
||||
FUBs.Alarm_Shotmode.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_Shotmode.bInAlarmSignal := Status.bShootMode;
|
||||
FUBs.Alarm_Shotmode.sInAlName := 'IPGShotMode';
|
||||
FUBs.Alarm_Shotmode ();
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.7.5.60 SP?>
|
||||
<?AutomationStudio FileVersion="4.9"?>
|
||||
<Program SubType="IEC" xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Cyclic code">Cyclic.st</File>
|
||||
@@ -8,5 +8,6 @@
|
||||
<File Description="Local data types" Private="true">Types.typ</File>
|
||||
<File Description="Local variables" Private="true">Variables.var</File>
|
||||
<File Description="IOs" Private="true">IOs.var</File>
|
||||
<File Description="Alarme">TxtAlarms.tmx</File>
|
||||
</Files>
|
||||
</Program>
|
||||
@@ -1,4 +1,5 @@
|
||||
VAR
|
||||
bInModulOk : BOOL;
|
||||
usInByte : ARRAY[1..32] OF USINT;
|
||||
usOuByte : ARRAY[1..32] OF USINT;
|
||||
bOuCuttingGas : BOOL;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
PROGRAM _INIT
|
||||
//Einzelschuss
|
||||
TON_Shot.PT := t#20ms;
|
||||
FUBs.TON_Shot.PT := t#30ms;
|
||||
|
||||
Status.bLocalCtrl := FALSE;
|
||||
Status.bShootMode := FALSE;
|
||||
|
||||
94
Logical/Communication/IPG/IPG/TxtAlarms.tmx
Normal file
94
Logical/Communication/IPG/IPG/TxtAlarms.tmx
Normal file
@@ -0,0 +1,94 @@
|
||||
<?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">IPG/Alarms</prop>
|
||||
</header>
|
||||
<body>
|
||||
<tu tuid="IPGSystemWarning">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Laser: Systemwarnung</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="IPGSoftwareCtrlActive">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Laser: PC-Steuerung (LaserNet) aktiv</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="IPGRobotModeNotActive">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Laser: Robotermodus nicht aktiv</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="IPGSystemError">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Laser: Systemfehler</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="IPGLaserError">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Laser: Laser Störung</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="IPGLaserWarning">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Laser: Laser Warnung</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="IPGChillerError">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Laser: Kühler Störung</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="IPGChillerWarning">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Laser: Kühler Warnung</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="IPGSafetyOpen">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Laser: Sicherheitskreis offen</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="IPGChannelError">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Laser: Kanalstörung</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="IPGSlotError">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Laser: Ungültige Lasernummer</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="IPGCabinetDoorOpen">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Laser: Schrank offen</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="IPGHighBackReflection">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Laser: Rückreflektion zu hoch</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="IPGModulePowerSupplyWarning">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Laser: Warnung Stromversorgung</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="IPGCommError">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Laser: Kommunikationsfehler</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="IPGLocalMode">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Laser: Lokale Steuerung (Einrichten)</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="IPGShotMode">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Laser: Einzelschussbetrieb</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
</body>
|
||||
</tmx>
|
||||
@@ -1,18 +1,19 @@
|
||||
|
||||
TYPE
|
||||
typ_Status : STRUCT
|
||||
typ_Status : STRUCT (*Stati*)
|
||||
bLocalCtrl : BOOL; (*Lokale Steuerung - Interface deaktiviet*)
|
||||
bShootMode : BOOL; (*Einzelschuss f<>r lokale Steuerung*)
|
||||
uiShootPower : UINT := 350; (*Power Einzelshuss*)
|
||||
END_STRUCT;
|
||||
typ_In : STRUCT
|
||||
Status : {REDUND_UNREPLICABLE} typ_In_Status;
|
||||
typ_In : STRUCT (*Eingangsdaten IPG*)
|
||||
Status : {REDUND_UNREPLICABLE} typ_In_Status; (*Status 1*)
|
||||
uiOutPutPower : UINT; (*Ausgangsleistung [W]*)
|
||||
usOpticalChannel : USINT; (*Optischer Kanal*)
|
||||
usProgramNumber : USINT; (*Programmnummer*)
|
||||
Status2 : typ_In_Status2;
|
||||
Status2 : typ_In_Status2; (*Status 1*)
|
||||
usLaserNr : USINT; (*Lasernummer*)
|
||||
END_STRUCT;
|
||||
typ_In_Status : STRUCT
|
||||
typ_In_Status : STRUCT (*Laserstatus 1*)
|
||||
bLaserIsAssigned : BOOL; (*Laser ist zugeordnet / Steuerung <20>ber Feldbus*)
|
||||
bLaserIsOn : BOOL; (*Laser ist ein - Spannungsversorgung ist ein*)
|
||||
bSystemError : BOOL; (*Systemfehler*)
|
||||
@@ -30,7 +31,7 @@ TYPE
|
||||
bLaserAlive : BOOL; (*Feldbus aktiv*)
|
||||
bSoftwareCtrlActive : BOOL; (*LaserNet Software aktiv*)
|
||||
END_STRUCT;
|
||||
typ_In_Status2 : STRUCT
|
||||
typ_In_Status2 : STRUCT (*Laserstatus 2*)
|
||||
bLaserError : BOOL; (*St<53>rung Laser*)
|
||||
bLaserWarning : BOOL; (*Warnung Laser*)
|
||||
bChillerError : BOOL; (*St<53>rung K<>hler*)
|
||||
@@ -45,7 +46,7 @@ TYPE
|
||||
bHighBackReflection : BOOL; (*R<>ckreflektion zu hoch*)
|
||||
bModulePowerSupplyWarning : BOOL; (*Power Supply Warnung*)
|
||||
END_STRUCT;
|
||||
typ_Out : STRUCT
|
||||
typ_Out : STRUCT (*Ausgangsdaten*)
|
||||
Control : typ_Out_Ctrl;
|
||||
uiOutPutPower : UINT; (*Laserleistung [W]*)
|
||||
usOpticalChannel : USINT; (*Optischer Kanal - immer 1*)
|
||||
@@ -53,7 +54,7 @@ TYPE
|
||||
uiRampingTime : UINT; (*Rampenzeiten [ms]*)
|
||||
usLaserNr : USINT; (*LaserNummer - Immer 0*)
|
||||
END_STRUCT;
|
||||
typ_Out_Ctrl : STRUCT
|
||||
typ_Out_Ctrl : STRUCT (*Ausgangssteuerung*)
|
||||
bRequestLaser : BOOL; (*Laser Anfordern - Immer Ein*)
|
||||
bLaserOn : BOOL; (*Laser Spannungsversorgung Ein*)
|
||||
bResetErrors : BOOL; (*St<53>rungen quittieren*)
|
||||
@@ -67,4 +68,25 @@ TYPE
|
||||
bSyncInput : BOOL; (*Synchronisationseingang an Programm*)
|
||||
bExternalError : BOOL; (*Externer Fehler - False*)
|
||||
END_STRUCT;
|
||||
typ_FUBs : STRUCT
|
||||
TON_Shot : TON; (*Einzelschuss*)
|
||||
TOF_CuttingGas : TOF; (*Schneidgas nachlauf*)
|
||||
Alarm_SystemWarning : FUB_AlarmSimple; (*Systemwarnung*)
|
||||
Alarm_SoftwareCtrlActive : FUB_AlarmSimple; (*Lasercontrl Steuerung aktiv*)
|
||||
Alarm_RobotModeNotActive : FUB_AlarmSimple; (*Lasercontrl Robotermodeus nicht aktiv*)
|
||||
Alarm_SystemError : FUB_AlarmSimple; (*Systemst<73>rung*)
|
||||
Alarm_LaserError : FUB_AlarmSimple; (*Laserst<73>rung*)
|
||||
Alarm_LaserWarning : FUB_AlarmSimple; (*Laserwarnung*)
|
||||
Alarm_ChillerError : FUB_AlarmSimple; (*K<>hlerst<73>rung*)
|
||||
Alarm_ChillerWarning : FUB_AlarmSimple; (*K<>hlerwarnung*)
|
||||
Alarm_SafteyOpen : FUB_AlarmSimple; (*Sicherheit offen*)
|
||||
Alarm_ChannelError : FUB_AlarmSimple; (*Kanal Offen*)
|
||||
Alarm_SlotError : FUB_AlarmSimple; (*Ung<6E>ltige Lasernummer*)
|
||||
Alarm_CabinetDoorOpen : FUB_AlarmSimple; (*Schrank offen*)
|
||||
Alarm_HighBackReflection : FUB_AlarmSimple; (*R<>ckreflektion zu hoch*)
|
||||
Alarm_ModulePowerSupplyWarning : FUB_AlarmSimple; (*Power Supply Warning*)
|
||||
Alarm_CommunicationError : FUB_AlarmSimple; (*Kommunikationsfehler*)
|
||||
Alarm_LocalMode : FUB_AlarmSimple; (*Laser Lokale Steuerung (Einrichten)*)
|
||||
Alarm_Shotmode : FUB_AlarmSimple; (*Einzelschussbetrieb*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
(*//Strukturen*)
|
||||
VAR
|
||||
Status : typ_Status;
|
||||
LaserOut : typ_Out;
|
||||
LaserIn : typ_In;
|
||||
TON_Shot : TON;
|
||||
TOF_CuttingGas : TOF;
|
||||
FUBs : typ_FUBs;
|
||||
END_VAR
|
||||
|
||||
10
Logical/Communication/LineInterface/IEC.prg
Normal file
10
Logical/Communication/LineInterface/IEC.prg
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio FileVersion="4.9"?>
|
||||
<Program SubType="IEC" xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Init, cyclic, exit code">Main.st</File>
|
||||
<File Description="Local data types" Private="true">Types.typ</File>
|
||||
<File Description="Local variables" Private="true">Variables.var</File>
|
||||
<File Description="IOs" Private="true">IOs.var</File>
|
||||
</Files>
|
||||
</Program>
|
||||
4
Logical/Communication/LineInterface/IOs.var
Normal file
4
Logical/Communication/LineInterface/IOs.var
Normal file
@@ -0,0 +1,4 @@
|
||||
VAR
|
||||
usInByte : ARRAY[1..64] OF USINT;
|
||||
usOuByte : ARRAY[1..64] OF USINT;
|
||||
END_VAR
|
||||
70
Logical/Communication/LineInterface/Main.st
Normal file
70
Logical/Communication/LineInterface/Main.st
Normal file
@@ -0,0 +1,70 @@
|
||||
|
||||
PROGRAM _INIT
|
||||
(* Insert code here *)
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
PROGRAM _CYCLIC
|
||||
//Eing<EFBFBD>nge von Liniensteuerung
|
||||
gLineInterface.In.bLifebeat := usInByte[1].0;
|
||||
gLineInterface.In.bModeManual := usInByte[1].1;
|
||||
gLineInterface.In.bModeAutomatic := usInByte[1].2;
|
||||
gLineInterface.In.bCycleActive := usInByte[1].3;
|
||||
gLineInterface.In.bError := usInByte[1].4;
|
||||
|
||||
gLineInterface.In.bRobOutOfShuttle1 := usInByte[2].0;
|
||||
gLineInterface.In.bRobOutOfShuttle2 := usInByte[2].1;
|
||||
|
||||
gLineInterface.In.bVacuumOnShuttle1 := usInByte[3].0;
|
||||
gLineInterface.In.bVacuumOnShuttle2 := usInByte[3].1;
|
||||
gLineInterface.In.bPlacedPartShuttle1 := usInByte[3].2;
|
||||
gLineInterface.In.bPlacedPartShuttle2 := usInByte[3].3;
|
||||
gLineInterface.In.bPickedPartShuttle1 := usInByte[3].4;
|
||||
gLineInterface.In.bPickedPartShuttle2 := usInByte[3].5;
|
||||
|
||||
gLineInterface.In.usPartIDShuttle1 := usInByte[5];
|
||||
gLineInterface.In.usPartIDShuttle2 := usInByte[6];
|
||||
|
||||
//Signale verarbeiten
|
||||
gLineInterface.Out.bLifebeat := NOT gLineInterface.In.bLifebeat;
|
||||
|
||||
//Ausg<EFBFBD>nge and Liniensteuerung
|
||||
usOuByte[1].0 := gLineInterface.Out.bLifebeat;
|
||||
usOuByte[1].1 := (gMachine1.enMode = enMACH_MANUAL) AND gMachine1.bMachineON;
|
||||
usOuByte[1].2 := (gMachine1.enMode = enMACH_AUTOMATIC) AND gMachine1.bMachineON;
|
||||
usOuByte[1].3 := gLineInterface.Out.bCycleActive;
|
||||
usOuByte[1].4 := gLineInterface.Out.bError;
|
||||
|
||||
usOuByte[2].0 := gLineInterface.Out.bShuttle1InPos;
|
||||
usOuByte[2].1 := gLineInterface.Out.bShuttle2InPos;
|
||||
|
||||
usOuByte[3].0 := gLineInterface.Out.bVacuumIsOnShuttle1;
|
||||
usOuByte[3].1 := gLineInterface.Out.bVacuumIsOnShuttle2;
|
||||
usOuByte[3].2 := gLineInterface.Out.bReadyToPlacePartShuttle1;
|
||||
usOuByte[3].3 := gLineInterface.Out.bReadyToPlacePartShuttle2;
|
||||
usOuByte[3].4 := gLineInterface.Out.bFinishedPartReadyShuttle1;
|
||||
usOuByte[3].5 := gLineInterface.Out.bFinishedPartReadyShuttle2;
|
||||
usOuByte[3].6 := gLineInterface.Out.bFinishedPartIOShuttle1;
|
||||
usOuByte[3].7 := gLineInterface.Out.bFinishedPartIOShuttle2;
|
||||
|
||||
usOuByte[5] := gToolInterface.Shuttle1.FromTool.usToolID;
|
||||
usOuByte[6] := gToolInterface.Shuttle2.FromTool.usToolID;
|
||||
|
||||
usOuByte[7] := UDINT_TO_USINT (SHR (gLineInterface.Out.udCutTimeShuttle1, 24));
|
||||
usOuByte[8] := UDINT_TO_USINT (SHR (gLineInterface.Out.udCutTimeShuttle1, 16));
|
||||
usOuByte[9] := UDINT_TO_USINT (SHR (gLineInterface.Out.udCutTimeShuttle1, 8));
|
||||
usOuByte[10] := UDINT_TO_USINT (gLineInterface.Out.udCutTimeShuttle1);
|
||||
|
||||
usOuByte[11] := UDINT_TO_USINT (SHR (gLineInterface.Out.udCutTimeShuttle2, 24));
|
||||
usOuByte[12] := UDINT_TO_USINT (SHR (gLineInterface.Out.udCutTimeShuttle2, 16));
|
||||
usOuByte[13] := UDINT_TO_USINT (SHR (gLineInterface.Out.udCutTimeShuttle2, 8));
|
||||
usOuByte[14] := UDINT_TO_USINT (gLineInterface.Out.udCutTimeShuttle2);
|
||||
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
PROGRAM _EXIT
|
||||
(* Insert code here *)
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
0
Logical/Communication/LineInterface/Types.typ
Normal file
0
Logical/Communication/LineInterface/Types.typ
Normal file
0
Logical/Communication/LineInterface/Variables.var
Normal file
0
Logical/Communication/LineInterface/Variables.var
Normal file
@@ -8,5 +8,6 @@
|
||||
<Object Type="Package" Description="Mobile Panel">MP</Object>
|
||||
<Object Type="Package" Description="IPG Laser">IPG</Object>
|
||||
<Object Type="Package" Description="Schneidkopf">RayTools</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Interface zur Linie">LineInterface</Object>
|
||||
</Objects>
|
||||
</Package>
|
||||
@@ -8,31 +8,57 @@ PROGRAM _CYCLIC
|
||||
gRTLaserInterface.In.bHeadCalibrated := bInCalibrated;
|
||||
|
||||
//Interface an Raytools Kopf
|
||||
bOuFollowPos := gRTLaserInterface.Out.bFollowPos AND NOT TOF_Error.Q AND bInReady AND NOT bInPosLimits;
|
||||
bOuMidpos := gRTLaserInterface.Out.bMidPos AND NOT bInMidPosArrived AND NOT TOF_FollowPos.Q AND NOT TOF_Error.Q AND bInReady;
|
||||
bOuFollowPos := gRTLaserInterface.Out.bFollowPos AND NOT FUBs.TOF_Error.Q AND bInReady AND NOT bInPosLimits;
|
||||
bOuMidpos := gRTLaserInterface.Out.bMidPos AND NOT bInMidPosArrived AND NOT FUBs.TOF_FollowPos.Q AND NOT FUBs.TOF_Error.Q AND bInReady;
|
||||
//AND NOT TON_MidPosTimeout.Q AND NOT TOF_MidPosTimeouterror.Q;
|
||||
bOuCalibrate := gRTLaserInterface.Out.bCalibrateLaser AND NOT bInPosLimits;
|
||||
bOuReset := gMP7121.Button OR (NOT bDebug AND NOT bOuFollowPos AND bInAlarm AND TOF_FollowPosAutoErrorReset.Q);
|
||||
bOuReset := gMP7121.Button OR (NOT bDebug AND NOT bOuFollowPos AND bInAlarm AND FUBs.TOF_FollowPosAutoErrorReset.Q);
|
||||
|
||||
|
||||
TOF_FollowPos.IN := bOuFollowPos;
|
||||
TOF_FollowPos.PT := t#100ms;
|
||||
TOF_FollowPos ();
|
||||
FUBs.TOF_FollowPos.IN := bOuFollowPos;
|
||||
FUBs.TOF_FollowPos.PT := t#100ms;
|
||||
FUBs.TOF_FollowPos ();
|
||||
|
||||
TOF_FollowPosAutoErrorReset.IN := bOuFollowPos;
|
||||
TOF_FollowPosAutoErrorReset.PT := t#350ms;
|
||||
TOF_FollowPosAutoErrorReset ();
|
||||
FUBs.TOF_FollowPosAutoErrorReset.IN := bOuFollowPos;
|
||||
FUBs.TOF_FollowPosAutoErrorReset.PT := t#350ms;
|
||||
FUBs.TOF_FollowPosAutoErrorReset ();
|
||||
|
||||
TOF_Error.IN := bInAlarm;
|
||||
TOF_Error.PT := t#20ms;
|
||||
TOF_Error ();
|
||||
FUBs.TOF_Error.IN := bInAlarm;
|
||||
FUBs.TOF_Error.PT := t#20ms;
|
||||
FUBs.TOF_Error ();
|
||||
|
||||
TON_MidPosTimeout.IN := bOuMidpos;
|
||||
TON_MidPosTimeout.PT := t#1s;
|
||||
TON_MidPosTimeout ();
|
||||
FUBs.TON_MidPosTimeout.IN := bOuMidpos;
|
||||
FUBs.TON_MidPosTimeout.PT := t#1s;
|
||||
FUBs.TON_MidPosTimeout ();
|
||||
|
||||
TOF_MidPosTimeouterror.IN := TON_MidPosTimeout.Q;
|
||||
TOF_MidPosTimeouterror.PT := t#20ms;
|
||||
TOF_MidPosTimeouterror ();
|
||||
FUBs.TOF_MidPosTimeouterror.IN := FUBs.TON_MidPosTimeout.Q;
|
||||
FUBs.TOF_MidPosTimeouterror.PT := t#20ms;
|
||||
FUBs.TOF_MidPosTimeouterror ();
|
||||
|
||||
//Alarme
|
||||
//======================================================
|
||||
//Kopf nicht bereit
|
||||
FUBs.Alarm_NotReady.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_NotReady.bInAlarmSignal := NOT bInReady;
|
||||
FUBs.Alarm_NotReady.sInAlName := 'RaytoolsNotReady';
|
||||
FUBs.Alarm_NotReady ();
|
||||
|
||||
//Kopf nicht kilibriert
|
||||
FUBs.Alarm_NotCalibrated.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_NotCalibrated.bInAlarmSignal := NOT bInCalibrated;
|
||||
FUBs.Alarm_NotCalibrated.sInAlName := 'RaytoolsNotCalibrated';
|
||||
FUBs.Alarm_NotCalibrated ();
|
||||
|
||||
//Kopf Alarm
|
||||
FUBs.Alarm_Alarm.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_Alarm.bInAlarmSignal := bInAlarm;
|
||||
FUBs.Alarm_Alarm.sInAlName := 'RaytoolsAlarm';
|
||||
FUBs.Alarm_Alarm ();
|
||||
|
||||
//Kopf Poslimits
|
||||
FUBs.Alarm_PosLimits.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_PosLimits.bInAlarmSignal := bInPosLimits;
|
||||
FUBs.Alarm_PosLimits.sInAlName := 'RaytoolsPosLimits';
|
||||
FUBs.Alarm_PosLimits ();
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.7.5.60 SP?>
|
||||
<?AutomationStudio FileVersion="4.9"?>
|
||||
<Program SubType="IEC" xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Cyclic code">Cyclic.st</File>
|
||||
@@ -8,5 +8,6 @@
|
||||
<File Description="Local data types" Private="true">Types.typ</File>
|
||||
<File Description="Local variables" Private="true">Variables.var</File>
|
||||
<File Description="IOs" Private="true">IOs.var</File>
|
||||
<File Description="Alarme">TxtAlarms.tmx</File>
|
||||
</Files>
|
||||
</Program>
|
||||
29
Logical/Communication/RayTools/Raytools/TxtAlarms.tmx
Normal file
29
Logical/Communication/RayTools/Raytools/TxtAlarms.tmx
Normal file
@@ -0,0 +1,29 @@
|
||||
<?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">Raytools/Alarms</prop>
|
||||
</header>
|
||||
<body>
|
||||
<tu tuid="RaytoolsNotReady">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Laserkopf: Nicht bereit</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="RaytoolsNotCalibrated">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Laserkopf: Nicht Kalibriert</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="RaytoolsPosLimits">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Laserkopf: Endlage erreicht</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="RaytoolsAlarm">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Laserkopf: Alarm aktiv</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
</body>
|
||||
</tmx>
|
||||
@@ -0,0 +1,14 @@
|
||||
|
||||
TYPE
|
||||
typ_FUBs : STRUCT
|
||||
TOF_FollowPos : TOF;
|
||||
TOF_FollowPosAutoErrorReset : TOF;
|
||||
TOF_Error : TOF;
|
||||
TOF_MidPosTimeouterror : TOF;
|
||||
TON_MidPosTimeout : {REDUND_UNREPLICABLE} TON;
|
||||
Alarm_NotReady : FUB_AlarmSimple;
|
||||
Alarm_NotCalibrated : FUB_AlarmSimple;
|
||||
Alarm_Alarm : FUB_AlarmSimple;
|
||||
Alarm_PosLimits : FUB_AlarmSimple;
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
VAR
|
||||
bDebug : BOOL;
|
||||
TOF_FollowPos : TOF;
|
||||
TOF_FollowPosAutoErrorReset : TOF;
|
||||
TOF_Error : TOF;
|
||||
TOF_MidPosTimeouterror : TOF;
|
||||
TON_MidPosTimeout : TON;
|
||||
END_VAR
|
||||
(*//Strukturen*)
|
||||
VAR
|
||||
FUBs : typ_FUBs;
|
||||
END_VAR
|
||||
|
||||
@@ -1,324 +0,0 @@
|
||||
|
||||
PROGRAM _CYCLIC
|
||||
strDevice := 'CNC_PrgDir';
|
||||
strPath := '';
|
||||
|
||||
//Parameter
|
||||
VCCtrl.ListboxEdit.usMinIndex := 0;
|
||||
VCCtrl.ListboxEdit.usMaxIndex := Parameter.usEditLines;
|
||||
|
||||
lstrEditline ACCESS ADR (strLines[VCCtrl.ListboxEdit.usIndexDatapoint]);
|
||||
|
||||
FUBs.TON_ReadDir.IN := NOT bReadDir;
|
||||
FUBs.TON_ReadDir.PT := t#90s;
|
||||
FUBs.TON_ReadDir ();
|
||||
IF FUBs.TON_ReadDir.Q THEN
|
||||
bReadDir := TRUE;
|
||||
END_IF
|
||||
|
||||
CASE enDirStep OF
|
||||
//auf Befehl warten
|
||||
//=================================
|
||||
enDirStep_WAIT:
|
||||
IF bReadDir THEN
|
||||
enDirStep := enDirStep_DIRINFO;
|
||||
bReadDir := FALSE;
|
||||
END_IF
|
||||
|
||||
|
||||
//Verzeichnisinfo lesen
|
||||
//=================================
|
||||
enDirStep_DIRINFO:
|
||||
FUBs.DirInfo.pDevice := ADR (strDevice);
|
||||
FUBs.DirInfo.pPath := ADR (strPath);
|
||||
FUBs.DirInfo.enable := TRUE;
|
||||
IF (FUBs.DirInfo.status = ERR_OK) THEN
|
||||
FUBs.DirInfo.enable := FALSE;
|
||||
States.udFilesInDir := FUBs.DirInfo.filenum;
|
||||
IF (States.udFilesInDir > 0) THEN
|
||||
States.udFilesInDir := States.udFilesInDir - 1;
|
||||
END_IF
|
||||
VCCtrl.DropDownBoxFile.usMaxIndex := UDINT_TO_USINT (States.udFilesInDir);
|
||||
udCurrentFile := 0;
|
||||
enDirStep := enDirStep_READDIR;
|
||||
ELSIF (FUBs.DirInfo.status < ERR_FUB_ENABLE_FALSE) THEN
|
||||
//Fehler
|
||||
FUBStates.DirInfo := FUBs.DirInfo.status;
|
||||
FUBs.DirInfo.enable := FALSE;
|
||||
enDirStep := enDirStep_WAIT;
|
||||
END_IF
|
||||
|
||||
//Datei lesen
|
||||
//=================================
|
||||
enDirStep_READDIR:
|
||||
FUBs.DirRead.enable := (udCurrentFile <= States.udFilesInDir);
|
||||
FUBs.DirRead.entry := udCurrentFile;
|
||||
FUBs.DirRead.pDevice := ADR (strDevice);
|
||||
FUBs.DirRead.pPath := ADR (strPath);
|
||||
FUBs.DirRead.option := fiFILE;
|
||||
FUBs.DirRead.pData := ADR (DirReadData);
|
||||
FUBs.DirRead.data_len := SIZEOF (DirReadData);
|
||||
IF (udCurrentFile > States.udFilesInDir) THEN
|
||||
enDirStep := enDirStep_WAIT;
|
||||
ELSIF (FUBs.DirRead.status = ERR_OK) THEN
|
||||
FUBs.DirRead.enable := FALSE;
|
||||
enDirStep := enDirStep_BUILDLIST;
|
||||
ELSIF (FUBs.DirRead.status < ERR_FUB_ENABLE_FALSE) THEN
|
||||
//Fehler
|
||||
FUBStates.DirRead := FUBs.DirRead.status;
|
||||
FUBs.DirRead.enable := FALSE;
|
||||
enDirStep := enDirStep_WAIT;
|
||||
END_IF
|
||||
|
||||
//Liste Bilden
|
||||
enDirStep_BUILDLIST:
|
||||
brsmemcpy (ADR (gstrFilenames[udCurrentFile]), ADR (DirReadData.Filename), SIZEOF (gstrFilenames[0]));
|
||||
udCurrentFile := udCurrentFile + 1;
|
||||
enDirStep := enDirStep_READDIR;
|
||||
|
||||
END_CASE
|
||||
|
||||
|
||||
//Buttons Anzeigen Verriegeln etc.
|
||||
VCCtrl.LineDown.usStatus.0 := (enFileStep <> enFileStep_WAITCMD2);
|
||||
VCCtrl.LineDown.usStatus.1 := (States.udOrgLineOffset[0] >= States.udFileLen);
|
||||
VCCtrl.LineUp.usStatus.0 := (enFileStep <> enFileStep_WAITCMD2);
|
||||
VCCtrl.LineUp.usStatus.1 := (States.udOrgLineOffset[0] = 0) AND (VCCtrl.ListboxEdit.usIndexDatapoint = 0);
|
||||
VCCtrl.ScrollDown.usStatus.0 := (enFileStep <> enFileStep_WAITCMD2);
|
||||
VCCtrl.ScrollDown.usStatus.1 := (States.udOrgLineOffset[0] >= States.udFileLen);
|
||||
VCCtrl.ScrollUp.usStatus.0 := (enFileStep <> enFileStep_WAITCMD2);
|
||||
VCCtrl.ScrollUp.usStatus.1 := (States.udOrgLineOffset[0] = 0);
|
||||
VCCtrl.Cancel.usStatus.0 := (enFileStep <> enFileStep_WAITCMD2);
|
||||
VCCtrl.DropDownBoxFile.usStatus.0 := (enFileStep <> enFileStep_WAIT);
|
||||
VCCtrl.LoadEdit.usStatus.0 := (enFileStep <> enFileStep_WAIT);
|
||||
|
||||
CASE enFileStep OF
|
||||
//auf Befehl warten
|
||||
//=================================
|
||||
enFileStep_WAIT:
|
||||
FUBs.FileOpen.enable := FALSE;
|
||||
strFile := gstrFilenames[usEditFileSelection];
|
||||
IF VCCtrl.LoadEdit.bCommand THEN
|
||||
VCCtrl.LoadEdit.bCommand := FALSE;
|
||||
VCCtrl.DropDownBoxFile.bCompletion := FALSE;
|
||||
enFileStep := enFileStep_OPEN;
|
||||
END_IF
|
||||
|
||||
IF (States.udFileHandle > 0) THEN
|
||||
//Offenes File schlie<EFBFBD>en
|
||||
FUBs.FileClose.ident := States.udFileHandle;
|
||||
enFileStep := enFileStep_CLOSE;
|
||||
END_IF
|
||||
|
||||
//Datei <EFBFBD>ffnen
|
||||
//=================================
|
||||
enFileStep_OPEN:
|
||||
FUBs.FileOpen.mode := fiREAD_WRITE;
|
||||
FUBs.FileOpen.pDevice := ADR (strDevice);
|
||||
FUBs.FileOpen.pFile := ADR (strFile);
|
||||
FUBs.FileOpen.enable := TRUE;
|
||||
IF (FUBs.FileOpen.status = ERR_OK) THEN
|
||||
FUBs.FileOpen.enable := FALSE;
|
||||
enFileStep := enFileStep_READLINE;
|
||||
States.udFileHandle := FUBs.FileOpen.ident;
|
||||
States.udReadlineOffset := 0;
|
||||
States.uiCurrentBlockLine := 0;
|
||||
States.udFileLen := FUBs.FileOpen.filelen;
|
||||
ELSIF (FUBs.FileOpen.status < ERR_FUB_ENABLE_FALSE) THEN
|
||||
//Fehler
|
||||
FUBs.FileOpen.enable := FALSE;
|
||||
enFileStep := enFileStep_WAIT;
|
||||
States.udFileHandle := 0;
|
||||
END_IF
|
||||
|
||||
//Datei "Zeile Lesen"
|
||||
//=================================
|
||||
enFileStep_READLINE:
|
||||
FUBs.FileRead.ident := States.udFileHandle;
|
||||
FUBs.FileRead.offset := States.udReadlineOffset;
|
||||
FUBs.FileRead.pDest := ADR (strReadBuffer);
|
||||
FUBs.FileRead.len := SIZEOF (strReadBuffer);
|
||||
FUBs.FileRead.enable := TRUE;
|
||||
|
||||
IF (FUBs.FileRead.status = ERR_OK) THEN
|
||||
FUBs.FileRead.enable := FALSE;
|
||||
States.udReadLineLen := FUBs.FileRead.bytesread;
|
||||
IF (States.udReadLineLen = 0) THEN
|
||||
enFileStep := enFileStep_WAITCMD2;
|
||||
FOR usi := UINT_TO_USINT (States.uiCurrentBlockLine) TO Parameter.usEditLines DO
|
||||
brsmemset (ADR (strLines[usi]), 0, SIZEOF (strLines[usi]));
|
||||
END_FOR
|
||||
ELSE
|
||||
enFileStep := enFileStep_PARSELINE;
|
||||
END_IF
|
||||
ELSIF (FUBs.FileRead.status < ERR_FUB_ENABLE_FALSE) THEN
|
||||
//Fehler
|
||||
FUBs.FileRead.enable := FALSE;
|
||||
//Offenes File schlie<EFBFBD>en
|
||||
FUBs.FileClose.ident := States.udFileHandle;
|
||||
enFileStep := enFileStep_CLOSE;
|
||||
END_IF
|
||||
|
||||
//Gelesene Zeile parsen
|
||||
//=================================
|
||||
enFileStep_PARSELINE:
|
||||
FOR udi := 0 TO (States.udReadLineLen - 2) DO
|
||||
IF (brsmemcmp (ADR (strReadBuffer) + udi, ADR (strLineEnd), 2) = 0) THEN
|
||||
brsmemcpy (ADR (strLines[States.uiCurrentBlockLine]), ADR (strReadBuffer), udi);
|
||||
//Offset und L<EFBFBD>nge speichern und Zeiter weiterstellen
|
||||
States.udOrgLineLen[States.uiCurrentBlockLine] := udi;
|
||||
States.udOrgLineOffset[States.uiCurrentBlockLine] := States.udReadlineOffset;
|
||||
States.udReadlineOffset := States.udReadlineOffset + udi + 2;
|
||||
brsmemset (ADR (strLines[States.uiCurrentBlockLine]) + udi, 0, 1);
|
||||
States.uiCurrentBlockLine := States.uiCurrentBlockLine + 1;
|
||||
IF States.uiCurrentBlockLine = Parameter.usEditLines THEN
|
||||
enFileStep := enFileStep_WAITCMD2;
|
||||
EXIT;
|
||||
ELSE
|
||||
brsmemset (ADR (strReadBuffer) + udi, 0, SIZEOF (strReadBuffer));
|
||||
enFileStep := enFileStep_READLINE;
|
||||
EXIT;
|
||||
END_IF
|
||||
END_IF
|
||||
END_FOR
|
||||
|
||||
//Auf neue Befehle warten
|
||||
//=================================
|
||||
enFileStep_WAITCMD2:
|
||||
IF VCCtrl.ScrollDown.bCommand AND (States.udOrgLineOffset[0] < States.udFileLen) THEN
|
||||
FOR usi := 0 TO Parameter.usPageLines DO
|
||||
//Zeilen shiften
|
||||
brsstrcpy (ADR (strLines[usi]), ADR (strLines[usi + Parameter.usPageLines]));
|
||||
END_FOR
|
||||
States.uiCurrentBlockLine := Parameter.usPageLines;
|
||||
VCCtrl.ScrollDown.bCommand := FALSE;
|
||||
enFileStep := enFileStep_READLINE;
|
||||
ELSIF VCCtrl.ScrollUp.bCommand AND (States.udOrgLineOffset[0] > 0) THEN
|
||||
VCCtrl.ScrollUp.bCommand := FALSE;
|
||||
States.udReadlineOffset := 0;
|
||||
States.uiCurrentBlockLine := 0;
|
||||
enFileStep := enFileStep_READLINE;
|
||||
ELSIF VCCtrl.LineUp.bCommand THEN
|
||||
IF (VCCtrl.ListboxEdit.usIndexDatapoint > 0) THEN
|
||||
VCCtrl.ListboxEdit.usIndexDatapoint := VCCtrl.ListboxEdit.usIndexDatapoint - 1;
|
||||
ELSIF (States.udOrgLineOffset[0] > 0) THEN
|
||||
//Seite scrollen
|
||||
VCCtrl.ScrollUp.bCommand := FALSE;
|
||||
END_IF
|
||||
VCCtrl.LineUp.bCommand := FALSE;
|
||||
ELSIF VCCtrl.LineDown.bCommand THEN
|
||||
IF (VCCtrl.ListboxEdit.usIndexDatapoint < VCCtrl.ListboxEdit.usMaxIndex) THEN
|
||||
VCCtrl.ListboxEdit.usIndexDatapoint := VCCtrl.ListboxEdit.usIndexDatapoint + 1;
|
||||
ELSIF (States.udOrgLineOffset[0] < States.udFileLen) THEN
|
||||
VCCtrl.ScrollDown.bCommand := TRUE;
|
||||
END_IF
|
||||
VCCtrl.LineDown.bCommand := FALSE;
|
||||
ELSIF VCCtrl.Cancel.bCommand THEN
|
||||
VCCtrl.Cancel.bCommand := FALSE;
|
||||
enFileStep := enFileStep_CLOSE;
|
||||
END_IF
|
||||
|
||||
IF VCCtrl.LineEdit.bCompletion THEN
|
||||
VCCtrl.LineEdit.bCompletion := FALSE;
|
||||
//Eingabe abgeschlossen
|
||||
udNewLen := brsstrlen (ADR (lstrEditline));
|
||||
brsmemset (ADR (strWriteBuffer) + udi, 0, SIZEOF (strWriteBuffer));
|
||||
brsstrcpy (ADR (strWriteBuffer), ADR (lstrEditline));
|
||||
brsstrcat (ADR (strWriteBuffer), ADR (strLineEnd));
|
||||
IF (udNewLen = States.udOrgLineLen[VCCtrl.ListboxEdit.usIndexDatapoint]) THEN
|
||||
//Gleiche L<EFBFBD>nge einfach <EFBFBD>berschreiben
|
||||
enFileStep := enFileStep_WRITELINE;
|
||||
ELSE
|
||||
enFileStep := enFileStep_READFILEREST;
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
//Restliches File auslesen
|
||||
//=================================
|
||||
enFileStep_READFILEREST:
|
||||
FUBs.FileRead.ident := States.udFileHandle;
|
||||
FUBs.FileRead.offset := States.udOrgLineOffset[VCCtrl.ListboxEdit.usIndexDatapoint] +
|
||||
States.udOrgLineLen[VCCtrl.ListboxEdit.usIndexDatapoint] + 2;
|
||||
FUBs.FileRead.pDest := ADR (usBuffer);
|
||||
FUBs.FileRead.len := SIZEOF (usBuffer);
|
||||
FUBs.FileRead.enable := TRUE;
|
||||
IF (FUBs.FileRead.status = ERR_OK) THEN
|
||||
FUBs.FileRead.enable := FALSE;
|
||||
States.udReadFileRestLen := FUBs.FileRead.bytesread;
|
||||
enFileStep := enFileStep_WRITELINE;
|
||||
ELSIF (FUBs.FileRead.status < ERR_FUB_ENABLE_FALSE) THEN
|
||||
//Fehler
|
||||
FUBs.FileRead.enable := FALSE;
|
||||
//Offenes File schlie<EFBFBD>en
|
||||
FUBs.FileClose.ident := States.udFileHandle;
|
||||
enFileStep := enFileStep_CLOSE;
|
||||
END_IF
|
||||
|
||||
//Ge<EFBFBD>nderte Zeile in Datei schreiben
|
||||
//=================================
|
||||
enFileStep_WRITELINE:
|
||||
FUBs.FileWrite.ident := States.udFileHandle;
|
||||
FUBs.FileWrite.pSrc := ADR (strWriteBuffer);
|
||||
FUBs.FileWrite.offset := States.udOrgLineOffset[VCCtrl.ListboxEdit.usIndexDatapoint];
|
||||
FUBs.FileWrite.len := brsstrlen (ADR (strWriteBuffer));
|
||||
FUBs.FileWrite.option := 0; //No Trunc
|
||||
FUBs.FileWrite.enable := TRUE;
|
||||
|
||||
IF (FUBs.FileWrite.status = ERR_OK) THEN
|
||||
FUBs.FileWrite.enable := FALSE;
|
||||
IF (udNewLen = States.udOrgLineLen[VCCtrl.ListboxEdit.usIndexDatapoint]) THEN
|
||||
//Editierte Zeile ohne L<EFBFBD>ngen<EFBFBD>nderung
|
||||
enFileStep := enFileStep_WAITCMD2;
|
||||
ELSE
|
||||
enFileStep := enFileStep_WriteFILEREST;
|
||||
END_IF
|
||||
ELSIF (FUBs.FileWrite.status < ERR_FUB_ENABLE_FALSE) THEN
|
||||
//Fehler
|
||||
FUBs.FileWrite.enable := FALSE;
|
||||
//Offenes File schlie<EFBFBD>en
|
||||
FUBs.FileClose.ident := States.udFileHandle;
|
||||
enFileStep := enFileStep_CLOSE;
|
||||
END_IF
|
||||
|
||||
//Restdaten in Datei schreiben
|
||||
//=================================
|
||||
enFileStep_WriteFILEREST:
|
||||
FUBs.FileWrite.ident := States.udFileHandle;
|
||||
FUBs.FileWrite.pSrc := ADR (usBuffer);
|
||||
FUBs.FileWrite.offset := States.udOrgLineOffset[VCCtrl.ListboxEdit.usIndexDatapoint] + brsstrlen (ADR (strWriteBuffer));
|
||||
FUBs.FileWrite.len := States.udReadFileRestLen;
|
||||
FUBs.FileWrite.option := 1; //With Trunc
|
||||
FUBs.FileWrite.enable := TRUE;
|
||||
|
||||
IF (FUBs.FileWrite.status = ERR_OK) THEN
|
||||
FUBs.FileWrite.enable := FALSE;
|
||||
States.udReadlineOffset := States.udOrgLineOffset[VCCtrl.ListboxEdit.usIndexDatapoint];
|
||||
States.uiCurrentBlockLine := VCCtrl.ListboxEdit.usIndexDatapoint;
|
||||
enFileStep := enFileStep_READLINE;
|
||||
ELSIF (FUBs.FileWrite.status < ERR_FUB_ENABLE_FALSE) THEN
|
||||
//Fehler
|
||||
FUBs.FileWrite.enable := FALSE;
|
||||
//Offenes File schlie<EFBFBD>en
|
||||
FUBs.FileClose.ident := States.udFileHandle;
|
||||
enFileStep := enFileStep_CLOSE;
|
||||
END_IF
|
||||
|
||||
//Datei schlie<EFBFBD>en
|
||||
//=================================
|
||||
enFileStep_CLOSE:
|
||||
FUBs.FileClose.enable := TRUE;
|
||||
IF (FUBs.FileClose.status = ERR_OK) OR (FUBs.FileClose.status < ERR_FUB_ENABLE_FALSE) THEN
|
||||
FUBs.FileClose.enable := FALSE;
|
||||
States.udFileHandle := 0;
|
||||
enFileStep := enFileStep_WAIT;
|
||||
END_IF
|
||||
|
||||
END_CASE
|
||||
|
||||
FUBs.DirInfo ();
|
||||
FUBs.DirRead ();
|
||||
FUBs.FileOpen ();
|
||||
FUBs.FileRead ();
|
||||
FUBs.FileWrite ();
|
||||
FUBs.FileClose ();
|
||||
END_PROGRAM
|
||||
@@ -1,7 +0,0 @@
|
||||
|
||||
|
||||
PROGRAM _INIT
|
||||
Parameter.usEditLines := 12;
|
||||
Parameter.usPageLines:= 5;
|
||||
bReadDir := TRUE;
|
||||
END_PROGRAM
|
||||
@@ -1,84 +0,0 @@
|
||||
(*//Schrittketten / Befehle / Bedingungen*)
|
||||
|
||||
TYPE
|
||||
typ_enStepFile :
|
||||
( (*Schrittkette*)
|
||||
enFileStep_WAIT := 0, (*Auf Befehl Warten*)
|
||||
enFileStep_OPEN, (*Datei <20>ffnen*)
|
||||
enFileStep_READLINE, (*Datei Zeile Lesen*)
|
||||
enFileStep_PARSELINE, (*Datei Zeile Parsen*)
|
||||
enFileStep_WAITCMD2, (*Auf Befehl Warten*)
|
||||
enFileStep_READFILEREST, (*Restliches File Lesen*)
|
||||
enFileStep_WRITELINE, (*Ge<47>nderte Zeile in Datei Schreiben*)
|
||||
enFileStep_WriteFILEREST, (*Restliches File Schreiben*)
|
||||
enFileStep_CLOSE (*Datei Schlie<69>en*)
|
||||
);
|
||||
typ_enStepDir :
|
||||
(
|
||||
enDirStep_WAIT,
|
||||
enDirStep_DIRINFO,
|
||||
enDirStep_READDIR,
|
||||
enDirStep_BUILDLIST
|
||||
);
|
||||
typ_States : STRUCT
|
||||
udFileHandle : UDINT; (*FileHandle*)
|
||||
udReadlineOffset : UDINT; (*Offset*)
|
||||
udFileLen : UDINT; (*Dateil<69>nge*)
|
||||
udReadLineLen : UDINT; (*Tats. gelesene L<>nge*)
|
||||
udReadFileRestLen : UDINT; (*Gelesene L<>nge Restl. File*)
|
||||
udOrgLineLen : ARRAY[0..EDIT_LINES]OF UDINT; (*Zeilen L<>nge (um L<>ngen<65>nderung festzustellen*)
|
||||
udOrgLineOffset : ARRAY[0..EDIT_LINES]OF UDINT; (*Offeset der Zeile im File*)
|
||||
uiCurrentBlockLine : UINT; (*Aktuelle Zeile (im Block)*)
|
||||
udFilesInDir : UDINT; (*Dateien in Verzeichnis*)
|
||||
END_STRUCT;
|
||||
typ_FUBstates : STRUCT
|
||||
DirInfo : UINT;
|
||||
DirRead : UINT;
|
||||
END_STRUCT;
|
||||
typ_Parameter : STRUCT
|
||||
usEditLines : USINT; (*Anzahl der Zeilen zum Editieren*)
|
||||
usPageLines : USINT; (*Anzahl der Zeilen zum Bl<42>ttern*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
|
||||
(*//FunctionBlocks / Daten*)
|
||||
|
||||
TYPE
|
||||
typ_FUB : STRUCT (*Funktionsbausteine*)
|
||||
FileOpen : FileOpen := (0);
|
||||
FileClose : FileClose := (0);
|
||||
FileRead : FileReadEx := (0); (*Datei Lesen (mit L<>nge Gelesener Daten)*)
|
||||
FileWrite : FileWriteEx := (0); (*Datei Schreiben (Optional mit Truncate)*)
|
||||
DirInfo : DirInfo; (*Verzeichnisinfo*)
|
||||
DirRead : DirRead; (*Verzeichnisinhalt lesen*)
|
||||
TON_ReadDir : TON;
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
|
||||
(*Insert your comment here.*)
|
||||
|
||||
TYPE
|
||||
enumTabs :
|
||||
( (*Tabs*)
|
||||
TAB_TUNE_LOWER_TOOL := 8, (*Tab Tuning Unterwerkzeug*)
|
||||
TAB_TUNE_UPPER_TOOL := 9, (*Tab Tuning Oberwerkzeug*)
|
||||
TAB_PROFILE_LOWER_TOOL := 10, (*Tab Profil Unterwerkzeug*)
|
||||
TAB_PROFILE_UPPER_TOOL := 11 (*Tab Profil Oberwerkzeug*)
|
||||
);
|
||||
typ_VCCtrl : STRUCT (*VC Controls*)
|
||||
Status : typ_VCStatus;
|
||||
ListboxEdit : gtyp_VCListbox; (*Listbox Editor*)
|
||||
LineEdit : gtyp_VCString;
|
||||
DropDownBoxFile : gtyp_VCDropdownbox;
|
||||
LineUp : gtyp_VCButton;
|
||||
LineDown : gtyp_VCButton;
|
||||
ScrollUp : gtyp_VCButton;
|
||||
ScrollDown : gtyp_VCButton;
|
||||
Slider : gtyp_VCSlider;
|
||||
Cancel : gtyp_VCButton;
|
||||
LoadEdit : gtyp_VCButton;
|
||||
END_STRUCT;
|
||||
typ_VCStatus : STRUCT (*VC Statis - Allgemein*)
|
||||
usDummy : USINT;
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
@@ -1,39 +0,0 @@
|
||||
VAR CONSTANT
|
||||
EDIT_LINES : USINT := 25;
|
||||
END_VAR
|
||||
VAR
|
||||
bScrollDown : BOOL;
|
||||
bScrollUp : BOOL;
|
||||
bReadDir : BOOL;
|
||||
usi : USINT;
|
||||
usEditFileSelection : USINT;
|
||||
udi : UDINT;
|
||||
udCurrentFile : UDINT;
|
||||
udNewLen : UDINT;
|
||||
usBuffer : {REDUND_UNREPLICABLE} ARRAY[0..999999] OF USINT; (*Puffer*)
|
||||
END_VAR
|
||||
(*//Strings*)
|
||||
VAR
|
||||
strDevice : STRING[80];
|
||||
strPath : STRING[80];
|
||||
strFile : STRING[80];
|
||||
strLineEnd : STRING[3] := '$r$n';
|
||||
strReadBuffer : STRING[80];
|
||||
strWriteBuffer : STRING[80];
|
||||
strLines : ARRAY[0..EDIT_LINES] OF STRING[80];
|
||||
lstrEditline : REFERENCE TO STRING[80]; (*Editierte Zeile*)
|
||||
END_VAR
|
||||
(*//Strukturen*)
|
||||
VAR
|
||||
enFileStep : typ_enStepFile;
|
||||
enDirStep : typ_enStepDir;
|
||||
States : typ_States;
|
||||
Parameter : typ_Parameter;
|
||||
VCCtrl : typ_VCCtrl; (*Seiteninterface spezifisch*)
|
||||
DirReadData : fiDIR_READ_DATA;
|
||||
FUBStates : typ_FUBstates;
|
||||
END_VAR
|
||||
(*//Funktionsbl<62>cke*)
|
||||
VAR
|
||||
FUBs : typ_FUB;
|
||||
END_VAR
|
||||
@@ -1,4 +1,84 @@
|
||||
|
||||
PROGRAM _CYCLIC
|
||||
(* Insert code here *)
|
||||
strDevice := 'CNC_PrgDir';
|
||||
strPath := '';
|
||||
|
||||
//Parameter
|
||||
|
||||
FUBs.TON_ReadDir.IN := NOT bReadDir;
|
||||
FUBs.TON_ReadDir.PT := t#90s;
|
||||
FUBs.TON_ReadDir ();
|
||||
IF FUBs.TON_ReadDir.Q THEN
|
||||
bReadDir := TRUE;
|
||||
END_IF
|
||||
|
||||
CASE enDirStep OF
|
||||
//auf Befehl warten
|
||||
//=================================
|
||||
enDirStep_WAIT:
|
||||
IF bReadDir THEN
|
||||
enDirStep := enDirStep_DIRINFO;
|
||||
bReadDir := FALSE;
|
||||
END_IF
|
||||
|
||||
|
||||
//Verzeichnisinfo lesen
|
||||
//=================================
|
||||
enDirStep_DIRINFO:
|
||||
FUBs.DirInfo.pDevice := ADR (strDevice);
|
||||
FUBs.DirInfo.pPath := ADR (strPath);
|
||||
FUBs.DirInfo.enable := TRUE;
|
||||
IF (FUBs.DirInfo.status = ERR_OK) THEN
|
||||
FUBs.DirInfo.enable := FALSE;
|
||||
States.udFilesInDir := FUBs.DirInfo.filenum;
|
||||
IF (States.udFilesInDir > 0) THEN
|
||||
States.udFilesInDir := States.udFilesInDir - 1;
|
||||
END_IF
|
||||
VCCtrl.DropDownBoxFile.usMaxIndex := UDINT_TO_USINT (States.udFilesInDir);
|
||||
udCurrentFile := 0;
|
||||
enDirStep := enDirStep_READDIR;
|
||||
ELSIF (FUBs.DirInfo.status < ERR_FUB_ENABLE_FALSE) THEN
|
||||
//Fehler
|
||||
FUBStates.DirInfo := FUBs.DirInfo.status;
|
||||
FUBs.DirInfo.enable := FALSE;
|
||||
enDirStep := enDirStep_WAIT;
|
||||
END_IF
|
||||
|
||||
//Datei lesen
|
||||
//=================================
|
||||
enDirStep_READDIR:
|
||||
FUBs.DirRead.enable := (udCurrentFile <= States.udFilesInDir);
|
||||
FUBs.DirRead.entry := udCurrentFile;
|
||||
FUBs.DirRead.pDevice := ADR (strDevice);
|
||||
FUBs.DirRead.pPath := ADR (strPath);
|
||||
FUBs.DirRead.option := fiFILE; //Nur Dateien
|
||||
FUBs.DirRead.pData := ADR (DirReadData);
|
||||
FUBs.DirRead.data_len := SIZEOF (DirReadData);
|
||||
IF (udCurrentFile > States.udFilesInDir) THEN
|
||||
enDirStep := enDirStep_WAIT;
|
||||
ELSIF (FUBs.DirRead.status = ERR_OK) THEN
|
||||
FUBs.DirRead.enable := FALSE;
|
||||
enDirStep := enDirStep_BUILDLIST;
|
||||
ELSIF (FUBs.DirRead.status < ERR_FUB_ENABLE_FALSE) THEN
|
||||
//Fehler
|
||||
FUBStates.DirRead := FUBs.DirRead.status;
|
||||
FUBs.DirRead.enable := FALSE;
|
||||
enDirStep := enDirStep_WAIT;
|
||||
END_IF
|
||||
|
||||
//Liste Bilden
|
||||
enDirStep_BUILDLIST:
|
||||
brsmemcpy (ADR (gstrFilenames[udCurrentFile]), ADR (DirReadData.Filename), SIZEOF (gstrFilenames[0]));
|
||||
udCurrentFile := udCurrentFile + 1;
|
||||
enDirStep := enDirStep_READDIR;
|
||||
|
||||
END_CASE
|
||||
|
||||
|
||||
//Buttons Anzeigen Verriegeln etc.
|
||||
//VCCtrl.DropDownBoxFile.usStatus.0 := (enFileStep <> enFileStep_WAIT);
|
||||
|
||||
|
||||
FUBs.DirInfo ();
|
||||
FUBs.DirRead ();
|
||||
END_PROGRAM
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
|
||||
|
||||
PROGRAM _INIT
|
||||
MpFUBs.MpFileManagerConfig.MpLink := ADR (gFileManagerUI);
|
||||
|
||||
MpFUBs.MpFileManagerUI.MpLink := ADR (gFileManagerUI);
|
||||
|
||||
bReadDir := TRUE;
|
||||
|
||||
END_PROGRAM
|
||||
@@ -1,8 +1,52 @@
|
||||
(*//Schrittketten / Befehle / Bedingungen*)
|
||||
|
||||
TYPE
|
||||
typ_enStepDir :
|
||||
(
|
||||
enDirStep_WAIT,
|
||||
enDirStep_DIRINFO,
|
||||
enDirStep_READDIR,
|
||||
enDirStep_BUILDLIST
|
||||
);
|
||||
typ_States : STRUCT
|
||||
udFileHandle : UDINT; (*FileHandle*)
|
||||
udReadlineOffset : UDINT; (*Offset*)
|
||||
udFileLen : UDINT; (*Dateil<69>nge*)
|
||||
udReadLineLen : UDINT; (*Tats. gelesene L<>nge*)
|
||||
udReadFileRestLen : UDINT; (*Gelesene L<>nge Restl. File*)
|
||||
udOrgLineLen : ARRAY[0..EDIT_LINES]OF UDINT; (*Zeilen L<>nge (um L<>ngen<65>nderung festzustellen*)
|
||||
udOrgLineOffset : ARRAY[0..EDIT_LINES]OF UDINT; (*Offeset der Zeile im File*)
|
||||
uiCurrentBlockLine : UINT; (*Aktuelle Zeile (im Block)*)
|
||||
udFilesInDir : UDINT; (*Dateien in Verzeichnis*)
|
||||
END_STRUCT;
|
||||
typ_FUBstates : STRUCT
|
||||
DirInfo : UINT;
|
||||
DirRead : UINT;
|
||||
END_STRUCT;
|
||||
typ_Parameter : STRUCT
|
||||
usEditLines : USINT; (*Anzahl der Zeilen zum Editieren*)
|
||||
usPageLines : USINT; (*Anzahl der Zeilen zum Bl<42>ttern*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
|
||||
(*//FunctionBlocks / Daten*)
|
||||
|
||||
TYPE
|
||||
typ_MpFUB : STRUCT (*Funktionsbausteine*)
|
||||
MpFileManagerUI : MpFileManagerUI;
|
||||
MpFileManagerConfig : MpFileManagerConfig;
|
||||
typ_FUB : STRUCT (*Funktionsbausteine*)
|
||||
DirInfo : DirInfo; (*Verzeichnisinfo*)
|
||||
DirRead : DirRead; (*Verzeichnisinhalt lesen*)
|
||||
TON_ReadDir : TON;
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
|
||||
(*Insert your comment here.*)
|
||||
|
||||
TYPE
|
||||
typ_VCCtrl : STRUCT (*VC Controls*)
|
||||
Status : typ_VCStatus;
|
||||
DropDownBoxFile : gtyp_VCDropdownbox;
|
||||
END_STRUCT;
|
||||
typ_VCStatus : STRUCT (*VC Statis - Allgemein*)
|
||||
usDummy : USINT;
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
|
||||
@@ -1,4 +1,39 @@
|
||||
(*//Funktionsbl<62>cke*)
|
||||
VAR CONSTANT
|
||||
EDIT_LINES : USINT := 25;
|
||||
END_VAR
|
||||
VAR
|
||||
bScrollDown : BOOL;
|
||||
bScrollUp : BOOL;
|
||||
bReadDir : BOOL;
|
||||
usi : USINT;
|
||||
usEditFileSelection : USINT;
|
||||
udi : UDINT;
|
||||
udCurrentFile : UDINT;
|
||||
udNewLen : UDINT;
|
||||
usBuffer : {REDUND_UNREPLICABLE} ARRAY[0..999999] OF USINT; (*Puffer*)
|
||||
END_VAR
|
||||
(*//Strings*)
|
||||
VAR
|
||||
strDevice : STRING[80];
|
||||
strPath : STRING[80];
|
||||
strFile : STRING[80];
|
||||
strLineEnd : STRING[3] := '$r$n';
|
||||
strReadBuffer : STRING[80];
|
||||
strWriteBuffer : STRING[80];
|
||||
strLines : ARRAY[0..EDIT_LINES] OF STRING[80];
|
||||
lstrEditline : REFERENCE TO STRING[80]; (*Editierte Zeile*)
|
||||
END_VAR
|
||||
(*//Strukturen*)
|
||||
VAR
|
||||
enDirStep : typ_enStepDir;
|
||||
States : typ_States;
|
||||
Parameter : typ_Parameter;
|
||||
VCCtrl : typ_VCCtrl; (*Seiteninterface spezifisch*)
|
||||
DirReadData : fiDIR_READ_DATA;
|
||||
FUBStates : typ_FUBstates;
|
||||
END_VAR
|
||||
(*//Funktionsbl<62>cke*)
|
||||
VAR
|
||||
MpFUBs : typ_MpFUB;
|
||||
FUBs : typ_FUB;
|
||||
END_VAR
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.3.7.46 SP?>
|
||||
<?AutomationStudio FileVersion="4.9"?>
|
||||
<Package xmlns="http://br-automation.co.at/AS/Package">
|
||||
<Objects>
|
||||
<Object Type="File" Description="Globale Variablen - File">GlobalFile.var</Object>
|
||||
<Object Type="File" Description="Package Variablen - File" Private="true">PackageFile.var</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Simple Texteditor">FileEdit</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Filemanagement">FileMan</Object>
|
||||
</Objects>
|
||||
</Package>
|
||||
@@ -17,11 +17,13 @@ END_VAR
|
||||
VAR
|
||||
gbSPLCMachineOn : BOOL;
|
||||
gbSPLCJogMode : BOOL; (*Handbetrieb*)
|
||||
gbSPLCReefeedP4 : BOOL;
|
||||
END_VAR
|
||||
(*BOOL 106 bis 110*)
|
||||
VAR
|
||||
gbSPLCResetEStop : BOOL;
|
||||
gbSPLCResetDoors : BOOL;
|
||||
gbSPLCRefeedError : BOOL;
|
||||
END_VAR
|
||||
(*BOOL 111 bis 115*)
|
||||
VAR
|
||||
@@ -34,10 +36,12 @@ END_VAR
|
||||
(*BOOL 001 bis 005*)
|
||||
VAR
|
||||
gbSPLCInEstopOk : BOOL; (*Safety PLC E-Stop ist Ok*)
|
||||
gbSPLCInSafetyCNCOk : BOOL; (*Safety PLC Sicherheit f<>r CNC Achsen Ok*)
|
||||
gbSPLCInSafetyShuttle1Ok : BOOL; (*Safety PLC Sicherheit f<>r Shuttle 1 Ok*)
|
||||
gbSPLCInSafetyShuttle2Ok : BOOL; (*Safety PLC Sicherheit f<>r Shuttle 2 Ok*)
|
||||
gbSPLCInSafetyCNC_SS1Ok : BOOL; (*Safety PLC Sicherheit f<>r CNC Achsen SS1 Ok (auch <20>ber FreigabeTaster)*)
|
||||
gbSPLCInSafetyShuttles_SS1Ok : BOOL; (*Safety PLC Sicherheit f<>r Shuttles SS1 Ok (auch <20>ber FreigabeTaster)*)
|
||||
gbSPLCInSafetyCNC_SLSOk : BOOL; (*Safety PLC Sicherheit f<>r CNC Achsen SLS Ok*)
|
||||
gbSPLCInSafetyShuttles_SLSOk : BOOL; (*Safety PLC Sicherheit f<>r Shuttle SLS Ok*)
|
||||
gbSPLCInMaintDoorOk : {REDUND_UNREPLICABLE} BOOL := FALSE; (*Safety PLC Wartungst<73>r ist Geschlossen und Quittiert*)
|
||||
gbSPLCInSafetyLaserOk : BOOL; (*Safety PLC Sicherheit Laser Ok*)
|
||||
END_VAR
|
||||
(*BOOL 006 bis 010*)
|
||||
(*BOOL 011 bis 018*)
|
||||
@@ -60,11 +64,11 @@ END_VAR
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
VAR
|
||||
gbSInStopButtonLaser : BOOL; (*Sicherer Eingang 01/02 Equivalent - Not-Halt von Lasersteuerung*)
|
||||
END_VAR
|
||||
(*//Reserve*)
|
||||
VAR
|
||||
gbSInEStopMachine : BOOL; (*Sicherer Eingang 03/04 Equivalent - Not-Halt von Liniensteuerung*)
|
||||
gbSInMaintDoorLeftOk : BOOL; (*Sicherer Eingang 05/06 Equivalent - Wartungst<73>r Fl<46>gel Links*)
|
||||
gbSInMaintDoorRightOk : BOOL; (*Sicherer Eingang 07/08 Equivalent - Wartungst<73>r Fl<46>gel Rechts*)
|
||||
gbSInMachineMaintDoorsClosed : BOOL; (*Sicherer Eingang 09/10 Equivalent - Wartungst<73>ren Linie Geschlossen und Verriegelt*)
|
||||
gbSInSafteyMachineOk : BOOL; (*Sicherer Eingang 11/12 Equivalent - Sicherheit Linie Ok*)
|
||||
gbSInGate1Closed : BOOL; (*Sicherer Eingang 13/14 Equivalent - Shuttletor 1 geschlossen*)
|
||||
gbSInGate2Closed : BOOL; (*Sicherer Eingang 19/20 Equivalent - Shuttletor 2 geschlossen*)
|
||||
END_VAR
|
||||
@@ -72,26 +76,40 @@ END_VAR
|
||||
(*IF1.ST10.IF1.ST5 - SO6300 (56K1)*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
VAR
|
||||
gbSOuOpenBreakZ : BOOL; (*Freigabe Z-Achse Zusatzbremse*)
|
||||
gbSOuOpenMainvalve : BOOL; (*Sicherer Ausgang 01 Hauptventil*)
|
||||
gbSOuOpenBreakZ : BOOL; (*Sicherer Ausgang 02 Freigabe Z-Achse Zusatzbremse*)
|
||||
gbSOuVaccumEngineOnShuttle1 : BOOL; (*Sicherer Ausgang 03 Seitenkanalverdichter Shuttle 1 Ein*)
|
||||
gbSOuVaccumEngineOnShuttle2 : BOOL; (*Sicherer Ausgang 04 Seitenkanalverdichter Shuttle 2 Ein*)
|
||||
gbSOuP4 : BOOL; (*Sicherer Ausgang 05 Potential P4 Sicherheit f. Tore / Zelle komplett*)
|
||||
END_VAR
|
||||
(*#################################################################################################################*)
|
||||
(*IF1.ST10.IF1.ST6 - SO6530 (56K2)*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
VAR
|
||||
gbSOuP3 : BOOL; (*Potential P3 Nach Nothalt*)
|
||||
gbSOuP4 : BOOL; (*Potential P4 Sicherheit f. Tore / Zelle komplett*)
|
||||
gbSOuEStopToLineCtrl : {REDUND_UNREPLICABLE} BOOL := FALSE; (*Nothalt an Linie DO 1/2*)
|
||||
gbSOuMaintDoorToLineCtrl : {REDUND_UNREPLICABLE} BOOL := FALSE; (*Wartungstuer an Linie DO 3/4*)
|
||||
gbSOuSafetyMaintDoorToLineCtrl : {REDUND_UNREPLICABLE} BOOL; (*Sicherheitsbereich T<>ren quittiert an Linie DO 5/6*)
|
||||
END_VAR
|
||||
(*#################################################################################################################*)
|
||||
(*IF1.ST10.IF1.ST7 - SO6530 (56K3)*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
VAR
|
||||
gbSOuEStopLaser : {REDUND_UNREPLICABLE} BOOL := FALSE; (*Nothalt an Laser DO 1/2*)
|
||||
gbSOuEnableLaser : BOOL; (*Freigabe Laser DO 5/6*)
|
||||
gbSOuGatesToLineCtrl : {REDUND_UNREPLICABLE} BOOL; (*Schuttore zu Liniensteuerung DO 3/4*)
|
||||
gbSOuEnableLaser : {REDUND_UNREPLICABLE} BOOL; (*Freigabe Laser DO 5/6*)
|
||||
END_VAR
|
||||
(*#################################################################################################################*)
|
||||
(*IF1.ST10.IF1.ST8 - DI9371 (60K1)*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
(*//DI 4 R<>ckmeldung K<>hlung in AcpTempera.st*)
|
||||
VAR
|
||||
gbInDropoutFuseVaccumGenShuttle1 : BOOL; (*Sicherungsfall Motorschutz Seitenkanalverdichter Shuttle 1*)
|
||||
gbInDropoutFuseVaccumGenShuttle2 : BOOL; (*Sicherungsfall Motorschutz Seitenkanalverdichter Shuttle 2*)
|
||||
gbInRefeedVaccumGenShuttle1 : BOOL; (*R<>ckf<6B>hrkontakt Seitenkanalverdichter Shuttle 1*)
|
||||
gbInRefeedVaccumGenShuttle2 : BOOL; (*R<>ckf<6B>hrkontakt Seitenkanalverdichter Shuttle 2*)
|
||||
gbInVaccumSensorShuttle1 : BOOL; (*Vakuumsensor Shuttle 1*)
|
||||
gbInVaccumSensorShuttle2 : BOOL; (*Vakuumsensor Shuttle 2*)
|
||||
END_VAR
|
||||
(*#################################################################################################################*)
|
||||
(*IF1.ST10.IF1.ST9 - DI9371 (60K2)*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
@@ -130,6 +148,9 @@ END_VAR
|
||||
(*#################################################################################################################*)
|
||||
(*IF1.ST10.IF1.ST18 - PS2100 (65K0) //Geschaltende Ausg<73>nge f<>r Tore und Gas*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
VAR
|
||||
gbInErrorPowerSupplyP4 : BOOL; (*Fehler Stromversorgung P4*)
|
||||
END_VAR
|
||||
(*#################################################################################################################*)
|
||||
(*IF1.ST10.IF1.ST19 - DO9322 (65K1)*)
|
||||
(*----------------------------------------------------------------------------------------------------------------*)
|
||||
|
||||
111
Logical/LibrariesUser/Common/Common.fun
Normal file
111
Logical/LibrariesUser/Common/Common.fun
Normal file
@@ -0,0 +1,111 @@
|
||||
|
||||
FUNCTION_BLOCK FUB_CylinderCheck (*Zylinder<EFBFBD>berwachung*)
|
||||
VAR_INPUT
|
||||
bInOutputCylinderFw : BOOL; (*Ausgang Zylinder Ausfahren*)
|
||||
bInOutputCylinderBw : BOOL; (*Ausgang Zylinder Einfahren*)
|
||||
bInSensorCylinderFw : BOOL; (*Sensor Zylinder Ausfahren*)
|
||||
bInSensorCylinderBw : BOOL; (*Sensor Zylinder Einfahren*)
|
||||
tInCylinderFw : TIME := T#2s; (*<EFBFBD>berwachungszeit Zylinder Ausfahren*)
|
||||
tInCylinderBw : TIME := T#2s; (*<EFBFBD>berwachungszeit Zylinder Ausfahren*)
|
||||
END_VAR
|
||||
VAR_OUTPUT
|
||||
bOuErrorCylinderFw : BOOL; (*Fehler Zylinder Ausfahren*)
|
||||
bOuErrorCylinderBw : BOOL; (*Fehler Zylinder Einfahren*)
|
||||
bOuErrorBothSensorsHigh : BOOL; (*Fehler beide Zynlinderschalter bet<EFBFBD>tigt*)
|
||||
END_VAR
|
||||
VAR
|
||||
TON_CylinderFw : TON;
|
||||
TON_CylinderBw : TON;
|
||||
END_VAR
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
FUNCTION_BLOCK FUB_CylinderCheckAlX (*Zylinder<EFBFBD>berwachung AlarmX*)
|
||||
VAR_INPUT
|
||||
MpLink : MpComIdentType; (*MpLink AlarmX*)
|
||||
bInOutputCylinderFw : BOOL; (*Ausgang Zylinder Ausfahren*)
|
||||
bInOutputCylinderBw : BOOL; (*Ausgang Zylinder Einfahren*)
|
||||
bInSensorCylinderFw : BOOL; (*Sensor Zylinder Ausfahren*)
|
||||
bInSensorCylinderBw : BOOL; (*Sensor Zylinder Einfahren*)
|
||||
tInCylinderFw : TIME := T#2s; (*<EFBFBD>berwachungszeit Zylinder Ausfahren*)
|
||||
tInCylinderBw : TIME := T#2s; (*<EFBFBD>berwachungszeit Zylinder Ausfahren*)
|
||||
sInAlNameCylFw : STRING[80]; (*Alarmname Zylinder Ausfahren*)
|
||||
sInAlNameCylBw : STRING[80]; (*Alarmname Zylinder Ausfahren*)
|
||||
sInAlNameCylBothSensorsHigh : STRING[80]; (*Alarmname Zylinder Ausfahren*)
|
||||
END_VAR
|
||||
VAR
|
||||
udAlIdCylinderFw : UDINT; (*Fehler Zylinder Ausfahren*)
|
||||
udAlIdCylinderBw : UDINT; (*Fehler Zylinder Einfahren*)
|
||||
udAlIdErrorBothSensorsHigh : UDINT; (*Fehler beide Zynlinderschalter bet<EFBFBD>tigt*)
|
||||
TON_CylinderFw : TON;
|
||||
TON_CylinderBw : TON;
|
||||
END_VAR
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
FUNCTION_BLOCK FUB_AlarmSimple (*Einfacher Alarm*)
|
||||
VAR_INPUT
|
||||
MpLink : MpComIdentType; (*MpLink AlarmX*)
|
||||
bInAlarmSignal : BOOL; (*Alarmsignal*)
|
||||
sInAlName : STRING[80]; (*Alarmname*)
|
||||
END_VAR
|
||||
VAR
|
||||
udAlId : UDINT; (*Fehler Zylinder Ausfahren*)
|
||||
END_VAR
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
FUNCTION FC_InTolerance : BOOL (*Toleranzpr<EFBFBD>fung (auch f<EFBFBD>r Positionen)*)
|
||||
VAR_INPUT
|
||||
lrInValue : LREAL; (*Messwert*)
|
||||
lrInSetpoint : LREAL; (*Sollwert*)
|
||||
lrInTolLow : LREAL; (*Untere Toleranz*)
|
||||
lrInTolUp : LREAL; (*Obere Toleranz*)
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
FUNCTION FC_MPA_Pos : LREAL (*Position aus I-O Link Daten MPA-Sensor (Sick) berechnen*)
|
||||
VAR_INPUT
|
||||
usInPosPart1 : USINT; (*Vorkommastelle (2-9)*)
|
||||
usInPosPart2 : USINT; (*Vorkommastelle (0-1:=6-7), Nachkommastelle (4-5) *)
|
||||
END_VAR
|
||||
VAR
|
||||
lrPos : LREAL;
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
FUNCTION FC_MPS_C_Pos : LREAL (*Position aus I-O Link Daten MPS-C-Sensor (Sick) berechnen*)
|
||||
VAR_INPUT
|
||||
usInPosPart1 : USINT; (*Vorkommastelle (2-9)*)
|
||||
usInPosPart2 : USINT; (*Vorkommastelle (0-1:=6-7), Nachkommastelle (4-5) *)
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
FUNCTION FC_MPS_T_Pos : LREAL (*Position aus I-O Link Daten MPS-T-Sensor (Sick) berechnen*)
|
||||
VAR_INPUT
|
||||
usInPosPart1 : USINT; (*Vorkommastelle (2-9)*)
|
||||
usInPosPart2 : USINT; (*Vorkommastelle (0-1:=6-7), Nachkommastelle (4-5) *)
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
FUNCTION FC_Scale_MPPAIn : LREAL (*MPPA IO Link Druck Eingangswert skalieren*)
|
||||
VAR_INPUT
|
||||
uiInPreasure : UINT;
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
FUNCTION FC_Scale_MPPAOu : UINT (*MPPA IO Link Druck Sollwert skalieren*)
|
||||
VAR_INPUT
|
||||
lrInPreasure : LREAL;
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
FUNCTION FC_Scale_Torque5 : LREAL (*Drehmomentsensor 5Nm (10V) skalieren*)
|
||||
VAR_INPUT
|
||||
iInTorque : INT;
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
|
||||
FUNCTION FC_BIP_Pos : LREAL (*Position aus I-O Link Daten BIP-Sensor (Balluf) berechnen*)
|
||||
VAR_INPUT
|
||||
usInPosPart1 : USINT; (*Vorkommastelle (2-9)*)
|
||||
usInPosPart2 : USINT; (*Vorkommastelle (0-1:=6-7), Nachkommastelle (4-5) *)
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
3
Logical/LibrariesUser/Common/Constants.var
Normal file
3
Logical/LibrariesUser/Common/Constants.var
Normal file
@@ -0,0 +1,3 @@
|
||||
VAR CONSTANT
|
||||
|
||||
END_VAR
|
||||
5
Logical/LibrariesUser/Common/FC_BIP_Pos.st
Normal file
5
Logical/LibrariesUser/Common/FC_BIP_Pos.st
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
FUNCTION FC_BIP_Pos
|
||||
//Part 2 Bit 3 - Out Of Sensor
|
||||
FC_BIP_Pos := 0.01 * UINT_TO_LREAL (SHL (USINT_TO_UINT (usInPosPart1), 4) + SHR (USINT_TO_UINT (usInPosPart2), 4));
|
||||
END_FUNCTION
|
||||
5
Logical/LibrariesUser/Common/FC_MPA_Pos.st
Normal file
5
Logical/LibrariesUser/Common/FC_MPA_Pos.st
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
FUNCTION FC_MPA_Pos
|
||||
lrPos := UINT_TO_LREAL (SHL (USINT_TO_UINT (usInPosPart1), 2) + USINT_TO_UINT (SHR (usInPosPart2, 6)));
|
||||
FC_MPA_Pos := lrPos + 0.1 * USINT_TO_LREAL (SHR (usInPosPart2, 4) AND 2#0011);
|
||||
END_FUNCTION
|
||||
4
Logical/LibrariesUser/Common/FC_MPS_C_Pos.st
Normal file
4
Logical/LibrariesUser/Common/FC_MPS_C_Pos.st
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
FUNCTION FC_MPS_C_Pos
|
||||
FC_MPS_C_Pos := 0.05 * UINT_TO_LREAL (SHL (USINT_TO_UINT (usInPosPart1), 4) + SHR (USINT_TO_UINT (usInPosPart2), 4));
|
||||
END_FUNCTION
|
||||
4
Logical/LibrariesUser/Common/FC_MPS_T_Pos.st
Normal file
4
Logical/LibrariesUser/Common/FC_MPS_T_Pos.st
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
FUNCTION FC_MPS_T_Pos
|
||||
FC_MPS_T_Pos := UINT_TO_LREAL (SHL (USINT_TO_UINT (usInPosPart1), 8) + USINT_TO_UINT (usInPosPart2)) / 128.0;
|
||||
END_FUNCTION
|
||||
5
Logical/LibrariesUser/Common/FC_Scale_MPPAIn.st
Normal file
5
Logical/LibrariesUser/Common/FC_Scale_MPPAIn.st
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
FUNCTION FC_Scale_MPPAIn
|
||||
//Einganswert in mBar
|
||||
FC_Scale_MPPAIn := UINT_TO_LREAL (uiInPreasure) / 1000.0;
|
||||
END_FUNCTION
|
||||
5
Logical/LibrariesUser/Common/FC_Scale_MPPAOu.st
Normal file
5
Logical/LibrariesUser/Common/FC_Scale_MPPAOu.st
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
FUNCTION FC_Scale_MPPAOu
|
||||
//Ausgangswert in mBar
|
||||
FC_Scale_MPPAOu := LREAL_TO_UINT ( lrInPreasure * 1000.0);
|
||||
END_FUNCTION
|
||||
9
Logical/LibrariesUser/Common/FC_Scale_Torque5.st
Normal file
9
Logical/LibrariesUser/Common/FC_Scale_Torque5.st
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
FUNCTION FC_Scale_Torque5
|
||||
//NCTE 5.0 Nm Sensor
|
||||
//1V := - 5Nm
|
||||
//5V := 0Nm
|
||||
//9V := +5Nm
|
||||
// >> 4V := 5Nm
|
||||
FC_Scale_Torque5 := (INT_TO_LREAL (iInTorque) / 3276.7 - 5.0) / 4.0 * 5.0;
|
||||
END_FUNCTION
|
||||
12
Logical/LibrariesUser/Common/FUB_AlarmSimple.st
Normal file
12
Logical/LibrariesUser/Common/FUB_AlarmSimple.st
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
FUNCTION_BLOCK FUB_AlarmSimple
|
||||
//Einfacher Alarm mit automatischer R<EFBFBD>cksetzung
|
||||
IF bInAlarmSignal THEN
|
||||
IF (udAlId = 0) THEN
|
||||
udAlId := MpAlarmXSet (MpLink, sInAlName);
|
||||
END_IF
|
||||
ELSIF (udAlId > 0) THEN
|
||||
MpAlarmXResetID (MpLink, udAlId);
|
||||
udAlId := 0;
|
||||
END_IF
|
||||
END_FUNCTION_BLOCK
|
||||
@@ -11,5 +11,4 @@ FUNCTION_BLOCK FUB_CylinderCheck
|
||||
bOuErrorCylinderBw := TON_CylinderBw.Q;
|
||||
|
||||
bOuErrorBothSensorsHigh := bInSensorCylinderFw AND bInSensorCylinderBw;
|
||||
|
||||
END_FUNCTION_BLOCK
|
||||
39
Logical/LibrariesUser/Common/FUB_CylinderCheckAlX.st
Normal file
39
Logical/LibrariesUser/Common/FUB_CylinderCheckAlX.st
Normal file
@@ -0,0 +1,39 @@
|
||||
|
||||
FUNCTION_BLOCK FUB_CylinderCheckAlX
|
||||
TON_CylinderFw.IN := bInOutputCylinderFw AND (bInSensorCylinderBw OR NOT bInSensorCylinderFw);
|
||||
TON_CylinderFw.PT := tInCylinderFw;
|
||||
TON_CylinderFw ();
|
||||
|
||||
TON_CylinderBw.IN := bInOutputCylinderBw AND (bInSensorCylinderFw OR NOT bInSensorCylinderBw);
|
||||
TON_CylinderBw.PT := tInCylinderBw;
|
||||
TON_CylinderBw ();
|
||||
|
||||
|
||||
IF TON_CylinderFw.Q AND (brsstrlen (ADR (sInAlNameCylFw)) > 0) THEN
|
||||
IF (udAlIdCylinderFw = 0) THEN
|
||||
udAlIdCylinderFw := MpAlarmXSet (MpLink, sInAlNameCylFw);
|
||||
END_IF
|
||||
ELSIF (udAlIdCylinderFw > 0) THEN
|
||||
MpAlarmXResetID (MpLink, udAlIdCylinderFw);
|
||||
udAlIdCylinderFw := 0;
|
||||
END_IF
|
||||
|
||||
IF TON_CylinderBw.Q AND (brsstrlen (ADR (sInAlNameCylBw)) > 0) THEN
|
||||
IF (udAlIdCylinderBw = 0) THEN
|
||||
udAlIdCylinderBw := MpAlarmXSet (MpLink, sInAlNameCylBw);
|
||||
END_IF
|
||||
ELSIF (udAlIdCylinderBw > 0) THEN
|
||||
MpAlarmXResetID (MpLink, udAlIdCylinderBw);
|
||||
udAlIdCylinderBw := 0;
|
||||
END_IF
|
||||
|
||||
IF (bInSensorCylinderFw AND bInSensorCylinderBw) AND (brsstrlen (ADR (sInAlNameCylBothSensorsHigh)) > 0) THEN
|
||||
IF (udAlIdErrorBothSensorsHigh = 0) THEN
|
||||
udAlIdCylinderBw := MpAlarmXSet (MpLink, sInAlNameCylBothSensorsHigh);
|
||||
END_IF
|
||||
ELSIF (udAlIdErrorBothSensorsHigh > 0) THEN
|
||||
MpAlarmXResetID (MpLink, udAlIdErrorBothSensorsHigh);
|
||||
udAlIdCylinderBw := 0;
|
||||
END_IF
|
||||
|
||||
END_FUNCTION_BLOCK
|
||||
20
Logical/LibrariesUser/Common/IEC.lby
Normal file
20
Logical/LibrariesUser/Common/IEC.lby
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio FileVersion="4.9"?>
|
||||
<Library SubType="IEC" xmlns="http://br-automation.co.at/AS/Library">
|
||||
<Files>
|
||||
<File Description="Exported data types">Types.typ</File>
|
||||
<File Description="Exported constants">Constants.var</File>
|
||||
<File Description="Exported functions and function blocks">Common.fun</File>
|
||||
<File Description="Zylinderüberwachung">FUB_CylinderCheck.st</File>
|
||||
<File Description="Zylinderüberwachung Alarm X">FUB_CylinderCheckAlX.st</File>
|
||||
<File Description="Einfacher Alarm Alarm X">FUB_AlarmSimple.st</File>
|
||||
<File Description="Toleranzprüfung">FC_InTol.st</File>
|
||||
<File Description="Position aus I-O Link Daten MPA-Sensor (Sick) berechnen">FC_MPA_Pos.st</File>
|
||||
<File Description="Position aus I-O Link Daten MPS-C-Sensor (Sick) berechnen">FC_MPS_C_Pos.st</File>
|
||||
<File Description="Position aus I-O Link Daten MPS-T-Sensor (Sick) berechnen">FC_MPS_T_Pos.st</File>
|
||||
<File Description="MPPA IOlink Druck Eingangswert skalieren">FC_Scale_MPPAIn.st</File>
|
||||
<File Description="MPPA IOLink Druck Ausgangswert skalieren">FC_Scale_MPPAOu.st</File>
|
||||
<File Description="Drehmomentsensor 5Nm (10V) skalieren">FC_Scale_Torque5.st</File>
|
||||
<File Description="Position aus I-O Link Daten BIP-Sensor (Balluf) berechnen">FC_BIP_Pos.st</File>
|
||||
</Files>
|
||||
</Library>
|
||||
3
Logical/LibrariesUser/Common/Types.typ
Normal file
3
Logical/LibrariesUser/Common/Types.typ
Normal file
@@ -0,0 +1,3 @@
|
||||
TYPE
|
||||
|
||||
END_TYPE
|
||||
7
Logical/LibrariesUser/Package.pkg
Normal file
7
Logical/LibrariesUser/Package.pkg
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio FileVersion="4.9"?>
|
||||
<Package xmlns="http://br-automation.co.at/AS/Package">
|
||||
<Objects>
|
||||
<Object Type="Library" Language="IEC" Description="Allgemeine Funktionen">Common</Object>
|
||||
</Objects>
|
||||
</Package>
|
||||
@@ -15,6 +15,15 @@ END_VAR
|
||||
(*//-----------------------------------------------------------------------------------------------------*)
|
||||
(*//Funktionsbl<62>cke*)
|
||||
(*//-----------------------------------------------------------------------------------------------------*)
|
||||
(*//Remanente Variablen*)
|
||||
(*//-----------------------------------------------------------------------------------------------------*)
|
||||
VAR CONSTANT
|
||||
MAX_RECIPE : UINT := 40;
|
||||
END_VAR
|
||||
VAR RETAIN
|
||||
gRecipies : ARRAY[1..MAX_RECIPE] OF gtyp_Recipe; (*Rezepte*)
|
||||
END_VAR
|
||||
(*//-----------------------------------------------------------------------------------------------------*)
|
||||
(*//Permamente Variablen*)
|
||||
(*//-----------------------------------------------------------------------------------------------------*)
|
||||
VAR RETAIN
|
||||
@@ -28,9 +37,3 @@ VAR RETAIN
|
||||
gAxRestorePosAxisShuttle2 : {REDUND_UNREPLICABLE} McAcpAxRestorePosType; (*!!Permanent*)
|
||||
gCalibrationDone : gtyp_CalibrationDone; (*!!Permanent Achskalibrierung erledigt*)
|
||||
END_VAR
|
||||
VAR CONSTANT
|
||||
MAX_RECIPE : UINT := 20;
|
||||
END_VAR
|
||||
VAR RETAIN
|
||||
gRecipies : ARRAY[1..MAX_RECIPE] OF gtyp_Recipe; (*Rezepte*)
|
||||
END_VAR
|
||||
|
||||
@@ -14,6 +14,30 @@ TYPE
|
||||
bReqDoorOpen : BOOL; (*Anforderung T<>r <20>ffnen*)
|
||||
bRelDoorOpen : BOOL; (*Freigabe T<>r <20>ffnen*)
|
||||
END_STRUCT;
|
||||
gtyp_ToolInterface : STRUCT (*Werkzeuginterface*)
|
||||
Shuttle1 : gtyp_ToolInterface_Struct;
|
||||
Shuttle2 : gtyp_ToolInterface_Struct;
|
||||
END_STRUCT;
|
||||
gtyp_ToolInterface_Struct : STRUCT (*Werkzeuginterface*)
|
||||
Tool_State : gen_ToolState;
|
||||
usPartID : USINT; (*Bauteil ID von Linie*)
|
||||
FromTool : gtyp_ToolInterface_FromTool; (*von Werkzeug*)
|
||||
ToTool : gtyp_ToolInterface_ToTool; (*an Werkzeug*)
|
||||
END_STRUCT;
|
||||
gtyp_ToolInterface_FromTool : STRUCT (*Werkzeuginterface vom Werkzeug*)
|
||||
bToolLocked : BOOL; (*Werkzeug Verriegelt*)
|
||||
bVaccumIsOn : BOOL; (*Vakkum ist ein*)
|
||||
usToolID : USINT; (*Werkzeug ID Ausgelesen*)
|
||||
END_STRUCT;
|
||||
gtyp_ToolInterface_ToTool : STRUCT (*Werkzeuginterface*)
|
||||
bVaccumOn : BOOL; (*Vakkum einschalten*)
|
||||
END_STRUCT;
|
||||
gen_ToolState :
|
||||
(
|
||||
enTOOL_EMPTY, (*Werkzeug leer*)
|
||||
enTOOL_NEW_PART, (*Werkzeug hat neues Teil geladen*)
|
||||
enTOOL_PART_FINISHED (*Werkzeug hat fertiges Teil geladen*)
|
||||
);
|
||||
gtyp_CalibrationDone : STRUCT (*Status Achse kalibriert*)
|
||||
bAxisX : BOOL;
|
||||
bAxisX1 : BOOL;
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
TYPE
|
||||
gtyp_Results : STRUCT (*Ergebnisse*)
|
||||
Cmd : gtyp_ResultCmd;
|
||||
strSerialNr : STRING[50]; (*Seriennummer*)
|
||||
diCycleTime : DINT; (*Zykluszeit [s]*)
|
||||
diEStopTime : DINT; (*Unterbrechungen [s]*)
|
||||
END_STRUCT;
|
||||
|
||||
@@ -1,61 +1,12 @@
|
||||
|
||||
TYPE
|
||||
gtyp_Recipe : STRUCT (*Prozessgrenzwerte*)
|
||||
strCaption : STRING[15] := 'Default'; (*Bezeichnung Bauteil*)
|
||||
strCNCPrg : STRING[80] := ''; (*CNCProgramm - Aufruf*)
|
||||
gtyp_Recipe : STRUCT (*Rezept*)
|
||||
strCaption : STRING[40] := 'Default'; (*Bezeichnung Bauteil*)
|
||||
strCNCPrg : STRING[40] := ''; (*CNCProgramm - Aufruf*)
|
||||
usPartID : USINT := 0; (*TeileNummer zur Identifikaton von Linie*)
|
||||
usToolID : USINT := 0; (*Werkzeug ID*)
|
||||
lrFeedrate : LREAL; (*Vorschub [mm/min]*)
|
||||
uiLaserPowerMin : UINT; (*Minimale Laserleistung*)
|
||||
uiLaserPower : UINT; (*Minimale Laserleistung*)
|
||||
END_STRUCT;
|
||||
gTyp_Tool : STRUCT (*Werkzeugdaten*)
|
||||
Status : gTyp_ToolState; (*Stati*)
|
||||
SysPar : gTyp_ToolSysParameter; (*Systemparameter*)
|
||||
ProcPar : gTyp_ToolProcParameter; (*Prozessparameter*)
|
||||
END_STRUCT;
|
||||
gTyp_ToolState : STRUCT (*Werkzeugstati*)
|
||||
strPartNrLowerTool : STRING[80]; (*ArtikelNr Unterwerkzeug*)
|
||||
strPartNrUpperTool : STRING[80]; (*ArtikelNr OberWerkzeug*)
|
||||
strPartExtraPart1 : STRING[80]; (*ArtikelNr Zusatzteil 1*)
|
||||
strPartExtraPart2 : STRING[80]; (*ArtikelNr Zusatzteil 2*)
|
||||
strCartBatch : STRING[20]; (*Kleber Charge*)
|
||||
strCartExpDate : STRING[20]; (*Kleber MHD*)
|
||||
strCartNr : STRING[20]; (*Kleber GebindeNr*)
|
||||
bCartrigeTouched : BOOL; (*Status: L<>nge der Mischd<68>se angetastet*)
|
||||
bCartrigeUnderPressure : BOOL; (*Status: Kolben auf Kartiusche unter Druck*)
|
||||
bSampleShotDone : BOOL; (*Status: Probeschuss abgegeben*)
|
||||
usCurrentGlueLine : USINT; (*Status: Aktuelle Klebelinie*)
|
||||
diTimeLastGlueing : DINT; (*Status: Zeitstempel letzte Kleberabgabe [<5B>s]*)
|
||||
lrGlueStartPos : LREAL; (*Status: Position Kleber gestartet*)
|
||||
lrGlueEndPos : LREAL; (*Status: Position Kleber Ende*)
|
||||
lrNozzleOffset : LREAL; (*Status: Offset nach Einmessen der Mischd<68>se*)
|
||||
udintSerialNr : UDINT; (*Status: Seriennummer Bauteil*)
|
||||
END_STRUCT;
|
||||
gTyp_ToolProcParameter : STRUCT (*Prozessparameter*)
|
||||
strCartSystem : STRING[20]; (*Parameter: Bez Klebesystem*)
|
||||
strPartID : STRING[10]; (*Parameter: Bauteil Kurzbezeichnung*)
|
||||
strCustomerID : STRING[20]; (*Parameter: Kunden Artikelnummer*)
|
||||
bManualOperation : BOOL; (*Parameter: Zwischenstop f<>r Handklebeauftrag*)
|
||||
bManualOperationPost : BOOL; (*Parameter: Zwischenstop f<>r Bauteile einelgen nach Klebeauftrag*)
|
||||
bExtraPart1 : BOOL; (*Parameter: Zusatzteil 1*)
|
||||
bExtraPart2 : BOOL; (*Parameter: Zusatzteil 2*)
|
||||
diMaxOpenTime : DINT; (*Parameter: Max Offene Zeit bis D<>se verklebt [<5B>s]*)
|
||||
diPressTime : DINT; (*Parameter: Presszeit [<5B>s]*)
|
||||
rTouchForce : REAL; (*Parameter: Kraft zum antasten einer neuen Kartusche*)
|
||||
rTouchForceProcess : REAL; (*Parameter: Kraft zum antasten der Kartusche im Prozees*)
|
||||
rGlueAmmount : ARRAY[1..10]OF REAL; (*Parameter: Klebermenge [g/mm] pro Spur*)
|
||||
lrGlueAmmountSampleshot : REAL; (*Parameter: Klebermenge [g] Probeschuss*)
|
||||
lrEstGlueAmmountTotal : REAL; (*Parameter: Gesamte Klebermenge die ca. Ben<65>tigt wird*)
|
||||
rTemperatureLowerTool : REAL; (*Parameter: Temperatur Unterwerkzeug*)
|
||||
rTemperatureUpperTool : REAL; (*Parameter: Temperatur Oberwerkzeug*)
|
||||
lrFeedrate : LREAL; (*Parameter: Vorschubrate [mm/min]*)
|
||||
lrGlueGap : LREAL; (*Parameter: Klebespalt*)
|
||||
END_STRUCT;
|
||||
gTyp_ToolSysParameter : STRUCT (*Systemparameter*)
|
||||
rSpecGlueAmmount : REAL; (*Sysparameter Klebermenge / Kartuschenhub [g/mm]*)
|
||||
lrGlueEmptyPos : LREAL; (*Sysparameter Kleber zu Ende Position [mm]*)
|
||||
lrToolOffsetX : LREAL; (*Sysparameter Werkzeugoffset X (nur bedingt Einstellbar)*)
|
||||
lrToolOffsetY : LREAL; (*Sysparameter Werkzeugoffset Y (nur bedingt Einstellbar*)
|
||||
strToolCaption : STRING[25]; (*Werkzeugname*)
|
||||
strCNCPrg : STRING[20]; (*CNC Programm*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
(*Remanent*)
|
||||
VAR RETAIN
|
||||
gToolInterface : gtyp_ToolInterface; (*Werkzeuginterface*)
|
||||
END_VAR
|
||||
(*Permanent*)
|
||||
VAR RETAIN
|
||||
gCounter : gtyp_PartCounter; (*Z<>hler*)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//Dynamische Variablen zuweisen
|
||||
ACTION DoDynVars:
|
||||
//Dynamische Variablen zuweisen
|
||||
lMachine ACCESS ADR (gMachine1);
|
||||
lRecipe ACCESS ADR (gRecipies[uiRecipe + 1]);
|
||||
lCmdInterface ACCESS ADR (gCmd1);
|
||||
@@ -163,37 +163,38 @@ ACTION DoDynVars:
|
||||
END_ACTION
|
||||
|
||||
|
||||
//Stati Sicherheiszonen
|
||||
ACTION DoSafetyStates:
|
||||
//Sicherheitszonen - Stati
|
||||
States.bSafetyCNCAxisOk := gbSPLCInSafetyCNCOk OR gMachine1.bSimulation;
|
||||
FUBs.TOF_SafetyCNCOk.IN := States.bSafetyCNCAxisOk;
|
||||
FUBs.TOF_SafetyCNCOk.PT := t#180ms;
|
||||
FUBs.TOF_SafetyCNCOk ();
|
||||
States.bSafetyCNCAxisOkDelayed := FUBs.TOF_SafetyCNCOk.Q;
|
||||
//Sicherheit SS1 CNC / Achsen Ok
|
||||
States.bSafetyCNCAxisSS1Ok := gbSPLCInSafetyCNC_SS1Ok OR gMachine1.bSimulation;
|
||||
FUBs.TOF_SafetyCNCSS1Ok.IN := States.bSafetyCNCAxisSS1Ok;
|
||||
FUBs.TOF_SafetyCNCSS1Ok.PT := t#180ms;
|
||||
FUBs.TOF_SafetyCNCSS1Ok ();
|
||||
States.bSafetyCNCAxisSS1OkDelayed := FUBs.TOF_SafetyCNCSS1Ok.Q;
|
||||
//SLS
|
||||
States.bSafetyCNCAxisSLSOk := gbSPLCInSafetyCNC_SLSOk;
|
||||
|
||||
States.bSafetyShuttle1Ok := gbSPLCInSafetyShuttle1Ok OR gMachine1.bSimulation;
|
||||
FUBs.TOF_SafetyShuttle1Ok.IN := States.bSafetyShuttle1Ok;
|
||||
FUBs.TOF_SafetyShuttle1Ok.PT := t#100ms;
|
||||
FUBs.TOF_SafetyShuttle1Ok ();
|
||||
States.bSafetyShuttle1OkDelayed := FUBs.TOF_SafetyShuttle1Ok.Q;
|
||||
|
||||
States.bSafetyShuttle2Ok := gbSPLCInSafetyShuttle2Ok OR gMachine1.bSimulation;
|
||||
FUBs.TOF_SafetyShuttle2Ok.IN := States.bSafetyShuttle2Ok;
|
||||
FUBs.TOF_SafetyShuttle2Ok.PT := t#100ms;
|
||||
FUBs.TOF_SafetyShuttle2Ok ();
|
||||
States.bSafetyShuttle2OkDelayed := FUBs.TOF_SafetyShuttle2Ok.Q;
|
||||
|
||||
//Sicherheit SS1 f. Schuttle Ok
|
||||
States.bSafetyShuttlesSS1Ok := gbSPLCInSafetyShuttles_SS1Ok OR gMachine1.bSimulation;
|
||||
FUBs.TOF_SafetyShuttleSS1Ok.IN := States.bSafetyShuttlesSS1Ok;
|
||||
FUBs.TOF_SafetyShuttleSS1Ok.PT := t#100ms;
|
||||
FUBs.TOF_SafetyShuttleSS1Ok ();
|
||||
States.bSafetyShuttleSS1OkDelayed := FUBs.TOF_SafetyShuttleSS1Ok.Q;
|
||||
//SLS
|
||||
States.bSafetyShuttlesSLSOk := gbSPLCInSafetyShuttles_SLSOk;
|
||||
|
||||
//Wartungst<EFBFBD>ren Ok (Verz<EFBFBD>gern wg. Achsupdates)
|
||||
FUBs.TON_SimulationOn.IN := gMachine1.bMachineON AND gMachine1.bSimulation;
|
||||
FUBs.TON_SimulationOn.PT := t#1s;
|
||||
FUBs.TON_SimulationOn ();
|
||||
//FixMe Tore
|
||||
States.bSafetyLaserOk := gbSPLCInMaintDoorOk OR FUBs.TON_SimulationOn.Q;
|
||||
|
||||
States.bSafetyLaserOk := gbSPLCInSafetyLaserOk OR FUBs.TON_SimulationOn.Q;
|
||||
END_ACTION
|
||||
|
||||
|
||||
//Ist Positinen Stati bilden
|
||||
ACTION DoPosStates:
|
||||
//Ist Positionen abfragen
|
||||
//Werte in ACS Achs Korrdinatensystem (Einzelachswerte weichen ab wg. Verschiebung)
|
||||
States.PosState.bHomeX := MpFUB.AxBasic_X.IsHomed AND FC_InTolerance (MpFUB.MpCNC5Axis.X, pParamPositions.HomePos.lrX, -0.1, 0.1);
|
||||
States.PosState.bHomeY := MpFUB.AxBasic_Y.IsHomed AND FC_InTolerance (MpFUB.MpCNC5Axis.Y, pParamPositions.HomePos.lrY, -0.1, 0.1);
|
||||
@@ -204,9 +205,11 @@ ACTION DoPosStates:
|
||||
//Laser oberhalb von Shuttle
|
||||
States.PosState.bLaserAboveShuttle := MpFUB.AxBasic_Z.IsHomed AND (MpFUB.MpCNC5Axis.Z > pParamPositions.lrLaserAboveShuttle);
|
||||
|
||||
States.PosState.bHomeShuttle := MpFUB.AxBasic_Shuttle.IsHomed AND FC_InTolerance (MpFUB.AxBasic_Shuttle.Position, pParamPositions.lrHomePosShuttle, -0.75, 0.75);
|
||||
States.PosState.bWorkposShuttle := MpFUB.AxBasic_Shuttle.IsHomed AND FC_InTolerance (MpFUB.AxBasic_Shuttle.Position, pParamPositions.lrWorkPosShuttle, -0.75, 0.75);
|
||||
|
||||
States.PosState.bHomeShuttle1 := MpFUB.AxBasic_Shuttle.IsHomed AND FC_InTolerance (MpFUB.AxBasic_Shuttle.Position, pParamPositions.lrHomePosShuttle1, -0.25, 0.25);
|
||||
States.PosState.bWorkposShuttle1 := MpFUB.AxBasic_Shuttle.IsHomed AND FC_InTolerance (MpFUB.AxBasic_Shuttle.Position, pParamPositions.lrWorkPosShuttle1, -0.25, 0.25);
|
||||
States.PosState.bHomeShuttle2 := MpFUB.AxBasic_Shuttle2.IsHomed AND FC_InTolerance (MpFUB.AxBasic_Shuttle2.Position, pParamPositions.lrHomePosShuttle2, -0.25, 0.25);
|
||||
States.PosState.bWorkposShuttle2 := MpFUB.AxBasic_Shuttle2.IsHomed AND FC_InTolerance (MpFUB.AxBasic_Shuttle2.Position, pParamPositions.lrWorkPosShuttle2, -0.25, 0.25);
|
||||
|
||||
//Pos Abweichungen Gantry
|
||||
States.PosState.lrDiffX_Virtual := ABS (States.RealAxisPos.lrVX - States.RealAxisPos.lrX);
|
||||
States.PosState.lrDiffX_X1 := ABS (States.RealAxisPos.lrX - States.RealAxisPos.lrX1);
|
||||
@@ -230,15 +233,18 @@ ACTION DoPosStates:
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
(*
|
||||
|
||||
//Ist Positionen Zylinder
|
||||
States.CylinderPosState.bFrontGateOpen := NOT Valves.bCloseGate AND gbInFrontGateOpen;
|
||||
States.CylinderPosState.bFrontGateClosed := Valves.bCloseGate AND gbSInFrontGateOk;
|
||||
*)
|
||||
States.CylinderPosState.bGateShuttle1Open := Valves.bOpenGateShuttle1 AND bInGateIsOpenShuttle1;
|
||||
States.CylinderPosState.bGateShuttle1Closed := Valves.bCloseGateShuttle1 AND NOT Valves.bOpenGateShuttle1 AND gbSInGate1Closed;
|
||||
States.CylinderPosState.bGateShuttle2Open := Valves.bOpenGateShuttle2 AND bInGateIsOpenShuttle2;
|
||||
States.CylinderPosState.bGateShuttle2Closed := Valves.bCloseGateShuttle2 AND NOT Valves.bOpenGateShuttle2 AND gbSInGate2Closed;
|
||||
END_ACTION
|
||||
|
||||
|
||||
|
||||
//Bewegungsbedingungen
|
||||
ACTION DoMoveConditions:
|
||||
//==========================================================
|
||||
MoveConditions.bAxisXMove := TRUE; //((MpFUB.AxBasic_Shuttle.Position + 10) < MpFUB.AxBasic_X.Position); // AND (MpFUB.AxBasic_Z.Position < 160.0);
|
||||
MoveConditions.bAxisYMove := TRUE; //MpFUB.AxBasic_Z.Position < 160.0;
|
||||
MoveConditions.bAxisZMoveNeg := TRUE;
|
||||
@@ -246,17 +252,19 @@ ACTION DoMoveConditions:
|
||||
MoveConditions.bAxisCMove := TRUE;
|
||||
MoveConditions.bAxisAMove := TRUE;
|
||||
MoveConditions.bAxisBMove := TRUE;
|
||||
MoveConditions.bAxisShuttleMoveNeg := TRUE;// MpFUB.AxBasic_Z.Position > 160.0;
|
||||
MoveConditions.bAxisShuttleMovePos := TRUE;// ((MpFUB.AxBasic_Shuttle.Position + 5) < MpFUB.AxBasic_X.Position) AND
|
||||
// (MpFUB.AxBasic_Z.Position <> 160.0)
|
||||
MoveConditions.bAxisShuttle2MoveNeg := TRUE;
|
||||
MoveConditions.bAxisShuttle2MovePos := TRUE;
|
||||
MoveConditions.bAxisShuttleMoveNeg := States.CylinderPosState.bGateShuttle1Open AND States.PosState.bLaserAboveShuttle AND gLineInterface.In.bRobOutOfShuttle1;
|
||||
MoveConditions.bAxisShuttleMovePos := States.CylinderPosState.bGateShuttle1Open AND States.PosState.bLaserAboveShuttle AND gLineInterface.In.bRobOutOfShuttle1;
|
||||
|
||||
MoveConditions.bAxisShuttle2MoveNeg := States.CylinderPosState.bGateShuttle2Open AND States.PosState.bLaserAboveShuttle AND gLineInterface.In.bRobOutOfShuttle2;
|
||||
MoveConditions.bAxisShuttle2MovePos := States.CylinderPosState.bGateShuttle2Open AND States.PosState.bLaserAboveShuttle AND gLineInterface.In.bRobOutOfShuttle2;
|
||||
|
||||
|
||||
MoveConditions.bCloseGateShuttle1 := States.PosState.bHomeShuttle1 OR States.PosState.bWorkposShuttle1;
|
||||
MoveConditions.bCloseGateShuttle2 := States.PosState.bHomeShuttle2 OR States.PosState.bWorkposShuttle1;
|
||||
END_ACTION
|
||||
|
||||
|
||||
//Zeiten berechnen
|
||||
ACTION DoTimes:
|
||||
//Zeiten
|
||||
Times.diSteptime := gdiSystemTime - TimesLatch.diSteptime;
|
||||
Times.diCycletime := gdiSystemTime - TimesLatch.diCycletime;
|
||||
IF EDGEPOS (MpFUB.MpCNC5Axis.MoveProgram) THEN
|
||||
@@ -269,8 +277,37 @@ ACTION DoTimes:
|
||||
Times.diStoptime := gdiSystemTime - TimesLatch.diStoptime;
|
||||
END_ACTION
|
||||
|
||||
|
||||
//CNC Variablen schreiben
|
||||
ACTION DoCNCVars:
|
||||
CNCVars.lrFeedrate := 30000;
|
||||
|
||||
CNCVars.bShuttle1InPos := States.PosState.bWorkposShuttle1;
|
||||
CNCVars.bShuttle2InPos := States.PosState.bWorkposShuttle2;
|
||||
CNCVars.bLaserMidPos := gRTLaserInterface.In.bHeadIsMidPos;
|
||||
//Werkzeugnummer uebergeben
|
||||
IF States.PosState.bWorkposShuttle1 THEN
|
||||
CNCVars.usCurrentToolID := gToolInterface.Shuttle1.FromTool.usToolID;
|
||||
ELSIF States.PosState.bWorkposShuttle2 THEN
|
||||
CNCVars.usCurrentToolID := gToolInterface.Shuttle2.FromTool.usToolID;
|
||||
ELSE
|
||||
CNCVars.usCurrentToolID := 0;
|
||||
END_IF
|
||||
END_ACTION
|
||||
|
||||
ACTION DoLineInterface:
|
||||
//an Liniensteuerung
|
||||
gLineInterface.Out.bCycleActive := States.bCycleActive;
|
||||
gLineInterface.Out.bShuttle1InPos := States.PosState.bHomeShuttle1;
|
||||
gLineInterface.Out.bShuttle2InPos := States.PosState.bHomeShuttle2;
|
||||
gLineInterface.Out.bFinishedPartReadyShuttle1 := (gToolInterface.Shuttle1.Tool_State = enTOOL_PART_FINISHED);
|
||||
gLineInterface.Out.bFinishedPartReadyShuttle2 := (gToolInterface.Shuttle2.Tool_State = enTOOL_PART_FINISHED);
|
||||
gLineInterface.Out.bReadyToPlacePartShuttle1 := (gToolInterface.Shuttle1.Tool_State = enTOOL_EMPTY);
|
||||
gLineInterface.Out.bReadyToPlacePartShuttle2 := (gToolInterface.Shuttle2.Tool_State = enTOOL_EMPTY);
|
||||
END_ACTION
|
||||
|
||||
//FUB Aufruufe am Zyklusanfang
|
||||
ACTION DoFUBsStartCycle:
|
||||
//Fubs am Zyklus anfang
|
||||
//Istpositionen Achsen Gantry
|
||||
MpFUB.ReadRealPos_XVirtual ();
|
||||
States.RealAxisPos.lrVX := MpFUB.ReadRealPos_XVirtual.CyclicPosition;
|
||||
@@ -303,7 +340,7 @@ ACTION DoFUBs:
|
||||
//Funktionsbausteine aufrufen
|
||||
//und FUB Eing<EFBFBD>nge zur<EFBFBD>cksetzen
|
||||
//Achsfehler quittieren
|
||||
IF EDGEPOS (gCmd1.bResetErrors) OR (EDGENEG (States.bSafetyCNCAxisOkDelayed) AND FALSE) THEN
|
||||
IF EDGEPOS (gCmd1.bResetErrors) OR (EDGENEG (States.bSafetyCNCAxisSS1OkDelayed) AND FALSE) THEN
|
||||
MpFUB.AxBasic_XVirtual.ErrorReset := MpFUB.AxBasic_XVirtual.Error;
|
||||
MpFUB.AxBasic_X.ErrorReset := MpFUB.AxBasic_X.Error;
|
||||
MpFUB.AxBasic_X1.ErrorReset := MpFUB.AxBasic_X1.Error;
|
||||
@@ -448,7 +485,7 @@ ACTION DoFUBs:
|
||||
|
||||
|
||||
//Beim Umschalten verz<EFBFBD>gern
|
||||
FUBs.TON_PowerSingleAxes.IN := States.bSingleAxMode AND States.bSafetyCNCAxisOk; //Fixme in Achsen Packen
|
||||
FUBs.TON_PowerSingleAxes.IN := States.bSingleAxMode AND States.bSafetyCNCAxisSS1Ok; //Fixme in Achsen Packen
|
||||
FUBs.TON_PowerSingleAxes.PT := t#400ms;
|
||||
FUBs.TON_PowerSingleAxes ();
|
||||
FUBs.TON_PowerCNC.IN := NOT States.bSingleAxMode;
|
||||
@@ -458,7 +495,7 @@ ACTION DoFUBs:
|
||||
MpFUB.MpCNC5Axis.Power := lMachine.bMachineON AND FUBs.TON_PowerCNC.Q AND
|
||||
NOT States.bAxPowerOffDoorReqManual AND NOT States.bAxPowerOffAuto AND
|
||||
// NOT MpFUB.AxBasic_X.Power AND NOT MpFUB.AxBasic_Y.Power AND NOT MpFUB.AxBasic_Z.Power AND
|
||||
MpFUB.MpCNC5Axis.Info.ReadyToPowerOn AND States.bSafetyCNCAxisOk AND
|
||||
MpFUB.MpCNC5Axis.Info.ReadyToPowerOn AND States.bSafetyCNCAxisSS1Ok AND
|
||||
MpFUB.MpCNC5Axis.Active; // AND (MpFUB.MpCNC3Axis.Info.PLCopenState <> mcGROUP_ERRORSTOP);
|
||||
//FixMe Stop in Auto
|
||||
//Einzelne Achsen Einschalten
|
||||
@@ -491,17 +528,17 @@ ACTION DoFUBs:
|
||||
NOT States.bAxPowerOffDoorReqManual AND
|
||||
MpFUB.AxBasic_C.Info.ReadyToPowerOn AND
|
||||
MpFUB.AxBasic_C.Active AND (MpFUB.AxBasic_C.Info.PLCopenState <> mcAXIS_ERRORSTOP);
|
||||
MpFUB.AxBasic_Shuttle.Power := lMachine.bMachineON AND States.bSafetyShuttle1Ok AND NOT States.bSingleAxTuningMode AND
|
||||
MpFUB.AxBasic_Shuttle.Power := lMachine.bMachineON AND States.bSafetyShuttlesSS1Ok AND NOT States.bSingleAxTuningMode AND
|
||||
NOT States.bAxPowerOffDoorReqManual AND
|
||||
MpFUB.AxBasic_Shuttle.Info.ReadyToPowerOn AND
|
||||
MpFUB.AxBasic_Shuttle.Active AND (MpFUB.AxBasic_Shuttle.Info.PLCopenState <> mcAXIS_ERRORSTOP);
|
||||
MpFUB.AxBasic_Shuttle2.Power := lMachine.bMachineON AND States.bSafetyShuttle2Ok AND NOT States.bSingleAxTuningMode AND
|
||||
MpFUB.AxBasic_Shuttle2.Power := lMachine.bMachineON AND States.bSafetyShuttlesSS1Ok AND NOT States.bSingleAxTuningMode AND
|
||||
NOT States.bAxPowerOffDoorReqManual AND
|
||||
MpFUB.AxBasic_Shuttle2.Info.ReadyToPowerOn AND
|
||||
MpFUB.AxBasic_Shuttle2.Active AND (MpFUB.AxBasic_Shuttle2.Info.PLCopenState <> mcAXIS_ERRORSTOP);
|
||||
|
||||
//Antriebe Stoppen
|
||||
IF EDGENEG (States.bSafetyCNCAxisOk) THEN
|
||||
IF EDGENEG (States.bSafetyCNCAxisSS1Ok) THEN
|
||||
DoStopAxisParameter;
|
||||
END_IF
|
||||
(*
|
||||
@@ -549,11 +586,18 @@ ACTION DoFUBs:
|
||||
|
||||
//Frame in SCS 3 Setzen
|
||||
MpFUB.MC_BR_SetFrameTableFrame.ExecutionMode := mcEM_IMMEDIATELY;
|
||||
IF EDGEPOS (States.CNCJogCS = enCNCJogCS_SCS3) THEN
|
||||
IF EDGEPOS (States.CNCJogCS = enCNCJogCS_SCS3) OR EDGEPOS (States.PosState.bWorkposShuttle1) OR EDGEPOS (States.PosState.bWorkposShuttle2) THEN
|
||||
MpFUB.MC_BR_SetFrameTableFrame.CoordSystem := States.CNCJogCS;
|
||||
MpFUB.MC_BR_SetFrameTableFrame.Name := 'FrameTable_SC3';
|
||||
MpFUB.MC_BR_SetFrameTableFrame.Index := 1; //FixMe nur in Handbetrieb ausf<EFBFBD>hren und Shuttles ber<EFBFBD>cksichtigen
|
||||
MpFUB.MC_BR_SetFrameTableFrame.Execute := TRUE;
|
||||
MpFUB.MC_BR_SetFrameTableFrame.Name := 'FrameTable_SC3';
|
||||
IF States.PosState.bWorkposShuttle2 THEN
|
||||
MpFUB.MC_BR_SetFrameTableFrame.Index := 2;
|
||||
ELSE
|
||||
MpFUB.MC_BR_SetFrameTableFrame.Index := 1;
|
||||
END_IF
|
||||
//FixMe nur in Handbetrieb ausf<EFBFBD>hren und Shuttles ber<EFBFBD>cksichtigen
|
||||
IF (lMachine.enMode <> enMACH_AUTOMATIC) AND NOT MpFUB.MpCNC5Axis.MoveProgram THEN
|
||||
MpFUB.MC_BR_SetFrameTableFrame.Execute := TRUE;
|
||||
END_IF
|
||||
ELSE
|
||||
MpFUB.MC_BR_SetFrameTableFrame.Execute := FALSE;
|
||||
END_IF
|
||||
@@ -671,12 +715,31 @@ ACTION DoFUBs:
|
||||
IF MpFUB.MpCNC5Axis.MoveInterrupted THEN
|
||||
MpFUB.MpCNC5Axis.Interrupt := FALSE;
|
||||
END_IF
|
||||
IF MpFUB.MpCNC5Axis.MoveActive THEN
|
||||
IF MpFUB.MpCNC5Axis.MoveActive AND NOT MpFUB.MpCNC5Axis.MoveInterrupted THEN
|
||||
MpFUB.MpCNC5Axis.Continue := FALSE;
|
||||
END_IF
|
||||
IF MpFUB.MpCNC5Axis.MoveDone THEN
|
||||
MpFUB.MpCNC5Axis.MoveProgram := FALSE;
|
||||
//MpFUB.MpCNC5Axis.Stop FixMe
|
||||
END_IF
|
||||
|
||||
|
||||
END_ACTION
|
||||
|
||||
//Ventile ansteuern
|
||||
ACTION DoValves:
|
||||
IF NOT (Valves.bCloseGateShuttle1 XOR Valves.bOpenGateShuttle1) THEN
|
||||
Valves.bCloseGateShuttle1 := FALSE;
|
||||
Valves.bOpenGateShuttle1 := TRUE;
|
||||
END_IF
|
||||
bOuOpenGateShuttle1 := Valves.bOpenGateShuttle1 AND States.bSafetyCNCAxisSS1Ok;
|
||||
bOuCloseGateShuttle1 := Valves.bCloseGateShuttle1 AND States.bSafetyCNCAxisSS1Ok;
|
||||
|
||||
IF NOT (Valves.bCloseGateShuttle2 XOR Valves.bOpenGateShuttle2) THEN
|
||||
Valves.bCloseGateShuttle2 := FALSE;
|
||||
Valves.bOpenGateShuttle2 := TRUE;
|
||||
END_IF
|
||||
//FixMe
|
||||
bOuOpenGateShuttle2 := Valves.bOpenGateShuttle2 AND States.bSafetyCNCAxisSS1Ok;
|
||||
bOuCloseGateShuttle2 := Valves.bCloseGateShuttle2 AND States.bSafetyCNCAxisSS1Ok;
|
||||
|
||||
END_ACTION
|
||||
|
||||
@@ -107,9 +107,9 @@ ACTION DoInitAxLimits:
|
||||
Parameter.LimitAxis_A.lrLowerLimit := -135.0;
|
||||
Parameter.LimitAxis_A.lrUpperLimit := 135.0;
|
||||
Parameter.LimitAxis_Shuttle1.lrLowerLimit := 1.0;
|
||||
Parameter.LimitAxis_Shuttle1.lrUpperLimit := 4000.0;
|
||||
Parameter.LimitAxis_Shuttle2.lrLowerLimit := 5000.0;
|
||||
Parameter.LimitAxis_Shuttle2.lrUpperLimit := 9000.0;
|
||||
Parameter.LimitAxis_Shuttle1.lrUpperLimit := 3760.0;
|
||||
Parameter.LimitAxis_Shuttle2.lrLowerLimit := 3740.0;
|
||||
Parameter.LimitAxis_Shuttle2.lrUpperLimit := 7499.0;
|
||||
END_ACTION
|
||||
|
||||
ACTION DoSceneViewerPositions:
|
||||
@@ -142,7 +142,7 @@ END_ACTION
|
||||
|
||||
ACTION DoSLSAxisProcPar:
|
||||
//Achsparameter anhand Sicherheit einstellen
|
||||
IF ((gMachine1.enMode = enMACH_JOG) OR (gMachine1.enMode = enMACH_MANUAL)) AND NOT States.bSafetyLaserOk THEN
|
||||
IF ((gMachine1.enMode = enMACH_JOG) OR (gMachine1.enMode = enMACH_MANUAL)) AND NOT States.bSafetyCNCAxisSLSOk THEN
|
||||
//SLS Grenzwerte festlegen
|
||||
IF States.ProcParamLoaded.bAxis_XVirtual AND NOT States.ProcParamSlowSet.bAxis_XVirtual AND NOT MpFUB.ProcessParam_XVirtual.Error THEN
|
||||
MpData.ProcPar_XVirtual_MoveLim.MovementLimits.InternalPathAxis.Velocity.Basic.Velocity := 195;
|
||||
@@ -179,7 +179,7 @@ ACTION DoSLSAxisProcPar:
|
||||
States.ProcParamFastSet.bAxis_A := FALSE;
|
||||
States.ProcParamSlowSet.bAxis_A := TRUE;
|
||||
END_IF
|
||||
ELSIF States.bSafetyLaserOk THEN
|
||||
ELSIF States.bSafetyCNCAxisSLSOk THEN
|
||||
//Vollgasparameter
|
||||
IF States.ProcParamLoaded.bAxis_XVirtual AND NOT States.ProcParamFastSet.bAxis_XVirtual AND NOT MpFUB.ProcessParam_XVirtual.Error THEN
|
||||
MpData.ProcPar_XVirtual_MoveLim.MovementLimits.InternalPathAxis.Velocity.Basic.Velocity := 2000;
|
||||
@@ -402,7 +402,7 @@ ACTION DoCalibrateParameterShuttle2:
|
||||
MpFUB.InitHome_Shuttle2.HomingParameters.Acceleration := 1000; // [mm/s2];
|
||||
MpFUB.InitHome_Shuttle2.HomingParameters.StartVelocity := 1; // [mm/s]
|
||||
MpFUB.InitHome_Shuttle2.HomingParameters.HomingVelocity := 15; // [mm/s]
|
||||
MpFUB.InitHome_Shuttle2.HomingParameters.Position := 9000; // [mm]
|
||||
MpFUB.InitHome_Shuttle2.HomingParameters.Position := 7500; // [mm]
|
||||
MpFUB.InitHome_Shuttle2.HomingParameters.BlockDetectionPositionError := 0.01; // [mm]
|
||||
MpFUB.InitHome_Shuttle2.HomingParameters.PositionErrorStopLimit := 0.15; // [mm]
|
||||
END_ACTION
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//Tippbetrieb Grenzen
|
||||
ACTION DoJogLimits:
|
||||
//Grenzen Tippen
|
||||
//Grenzwerte aktiv
|
||||
VCButtons.DisablePosLimits.usStatus.1 := NOT lMachine.bSetupMode;
|
||||
IF NOT lMachine.bSetupMode THEN
|
||||
@@ -36,6 +36,7 @@ ACTION DoJogLimits:
|
||||
END_IF
|
||||
END_ACTION
|
||||
|
||||
//Tippbetrieb Geschwindigkeiten
|
||||
ACTION DoJogSpeeds:
|
||||
IF EDGEPOS (gMP7121.VInc) THEN
|
||||
IF (Parameter.rSpeedJog < 90) THEN
|
||||
@@ -101,8 +102,9 @@ ACTION DoJogSpeeds:
|
||||
|
||||
END_ACTION
|
||||
|
||||
|
||||
//Tippbetrieb Doppelte Kommandos verriegeln
|
||||
ACTION DoJogResetDoubleCmd:
|
||||
//Doppelte Kommandos verriegeln
|
||||
//Buttons verriegeln
|
||||
IF (gMP7121.XInc AND gMP7121.XDec) THEN
|
||||
gMP7121.XInc := FALSE;
|
||||
@@ -116,11 +118,10 @@ ACTION DoJogResetDoubleCmd:
|
||||
|
||||
END_ACTION
|
||||
|
||||
ACTION DoJogAxis:
|
||||
//Achsen Tippen
|
||||
//-------------------------------------
|
||||
//Achsen Tippen
|
||||
ACTION DoJogAxis:
|
||||
//im CNC System Joggen - Richtung ergibt sich anhand Der Gewschwindigkeit
|
||||
//Koodrinatensystem auswaehlen
|
||||
//Koordinatensystem auswaehlen
|
||||
//FixMe nicht umschalten wenn im CNC System gejoggt wird
|
||||
IF EDGEPOS (gMP7121.Positions) AND NOT MpFUB.MC_BR_GroupMoveCyclicPosition.Enable THEN
|
||||
CASE States.CNCJogCS OF
|
||||
@@ -241,8 +242,9 @@ ACTION DoJogAxis:
|
||||
|
||||
END_ACTION
|
||||
|
||||
|
||||
//Tippen mit Handrad
|
||||
ACTION DoJogHandwheel:
|
||||
//Mit Handrad bewegen
|
||||
States.bHandWheelFw := (gMP7121.udWheelPos > States.udHandWheelLastPos);
|
||||
States.bHandWheelBw := (gMP7121.udWheelPos < States.udHandWheelLastPos);
|
||||
IF States.bHandWheelFw THEN
|
||||
@@ -360,8 +362,8 @@ ACTION DoJogHandwheel:
|
||||
|
||||
END_ACTION
|
||||
|
||||
//Tippen Achsposition Anfahren
|
||||
ACTION DoJogMovePos:
|
||||
//Achsposition Anfahren
|
||||
//Achsen gewechselt (FixMe bei Neustart)
|
||||
IF (States.enSelectedAxis <> States.enSelectedAxisLatch) THEN
|
||||
//Zielpos auf IstPos
|
||||
@@ -420,19 +422,34 @@ ACTION DoJogMovePos:
|
||||
MpFUB.AxBasic_A.MoveAbsolute := gMP7121.Ctrl;
|
||||
END_CASE
|
||||
|
||||
VCStatus.lrJogDestPosLowerLimSh1 := Parameter.LimitAxis_Shuttle1.lrLowerLimit;
|
||||
VCStatus.lrJogDestPosUpperLimSh1 := Parameter.LimitAxis_Shuttle1.lrUpperLimit;
|
||||
VCStatus.lrJogDestPosLowerLimSh2 := Parameter.LimitAxis_Shuttle2.lrLowerLimit;
|
||||
VCStatus.lrJogDestPosUpperLimSh2 := Parameter.LimitAxis_Shuttle2.lrUpperLimit;
|
||||
MpData.AxPar_Shuttle.Position := VCStatus.lrJogDestPosSh1;
|
||||
MpFUB.AxBasic_Shuttle.MoveAbsolute := VCButtons.AxisMovePosSh1.bCommand;
|
||||
MpData.AxPar_Shuttle2.Position := VCStatus.lrJogDestPosSh2;
|
||||
MpFUB.AxBasic_Shuttle2.MoveAbsolute := VCButtons.AxisMovePosSh2.bCommand;
|
||||
|
||||
VCButtons.AxisMovePosHomeSh1.usStatus.0 := States.PosState.bHomeShuttle1;
|
||||
VCButtons.AxisMovePosHomeSh1.usStatus.1 := NOT MoveConditions.bAxisShuttleMovePos AND NOT MoveConditions.bAxisShuttleMoveNeg;
|
||||
VCButtons.AxisMovePosWorkSh1.usStatus.0 := States.PosState.bWorkposShuttle1;
|
||||
VCButtons.AxisMovePosWorkSh1.usStatus.1 := NOT MoveConditions.bAxisShuttleMovePos AND NOT MoveConditions.bAxisShuttleMoveNeg;
|
||||
IF VCButtons.AxisMovePosHomeSh1.bCommand THEN
|
||||
MpData.AxPar_Shuttle.Position := pParamPositions.lrHomePosShuttle1;
|
||||
ELSIF VCButtons.AxisMovePosWorkSh1.bCommand THEN
|
||||
MpData.AxPar_Shuttle.Position := pParamPositions.lrWorkPosShuttle1;
|
||||
END_IF
|
||||
|
||||
VCButtons.AxisMovePosHomeSh2.usStatus.0 := States.PosState.bHomeShuttle2;
|
||||
VCButtons.AxisMovePosHomeSh2.usStatus.1 := NOT MoveConditions.bAxisShuttle2MovePos AND NOT MoveConditions.bAxisShuttle2MoveNeg;
|
||||
VCButtons.AxisMovePosWorkSh2.usStatus.0 := States.PosState.bWorkposShuttle2;
|
||||
VCButtons.AxisMovePosWorkSh2.usStatus.1 := NOT MoveConditions.bAxisShuttle2MovePos AND NOT MoveConditions.bAxisShuttle2MoveNeg;
|
||||
IF VCButtons.AxisMovePosHomeSh2.bCommand THEN
|
||||
MpData.AxPar_Shuttle2.Position := pParamPositions.lrHomePosShuttle2;
|
||||
ELSIF VCButtons.AxisMovePosWorkSh2.bCommand THEN
|
||||
MpData.AxPar_Shuttle2.Position := pParamPositions.lrWorkPosShuttle2;
|
||||
END_IF
|
||||
MpFUB.AxBasic_Shuttle.MoveAbsolute := VCButtons.AxisMovePosHomeSh1.bCommand OR VCButtons.AxisMovePosWorkSh1.bCommand;
|
||||
MpFUB.AxBasic_Shuttle2.MoveAbsolute := VCButtons.AxisMovePosHomeSh2.bCommand OR VCButtons.AxisMovePosWorkSh2.bCommand;
|
||||
END_ACTION
|
||||
|
||||
|
||||
|
||||
//Tippen Achsen kalibrieren
|
||||
ACTION DoJogCalibration:
|
||||
//Achsen kalibrieren
|
||||
IF TRUE THEN
|
||||
CASE States.enSelectedAxis OF
|
||||
0://X-Achsen aus dem Gantry System kalibrieren
|
||||
@@ -765,11 +782,11 @@ ACTION DoJogCalibration:
|
||||
END_IF
|
||||
END_ACTION
|
||||
|
||||
//Tippen Achsen direct Referenzieren (nur f<EFBFBD>r Einrichten)
|
||||
ACTION DoJogHomeDirect:
|
||||
//Achsen direct Referenzieren (nur f<EFBFBD>r Einrichten)
|
||||
VCButtons.AxisHomeDirect.usStatus.0 := (gUserRights.Right6_Setup < mpUSERX_ACCESS_FULL);
|
||||
VCButtons.AxisShuttleHomeDirect.usStatus.0 := (gUserRights.Right6_Setup < mpUSERX_ACCESS_FULL);
|
||||
VCButtons.AxisShuttle2HomeDirect.usStatus.0 := (gUserRights.Right6_Setup < mpUSERX_ACCESS_FULL);
|
||||
VCButtons.AxisHomeDirect.usStatus.0 := (gUserRights.Right6_Setup < mpUSERX_ACCESS_FULL) OR NOT bGodMode;
|
||||
VCButtons.AxisShuttleHomeDirect.usStatus.0 := (gUserRights.Right6_Setup < mpUSERX_ACCESS_FULL) OR NOT bGodMode;
|
||||
VCButtons.AxisShuttle2HomeDirect.usStatus.0 := (gUserRights.Right6_Setup < mpUSERX_ACCESS_FULL) OR NOT bGodMode;
|
||||
|
||||
IF EDGEPOS (VCButtons.AxisHomeDirect.bCommand) THEN
|
||||
CASE States.enSelectedAxis OF
|
||||
@@ -837,8 +854,9 @@ ACTION DoJogHomeDirect:
|
||||
END_IF
|
||||
END_ACTION
|
||||
|
||||
|
||||
//Tippen Achsen Referenzieren
|
||||
ACTION DoJogHomeAxis:
|
||||
//Achsen Referenzieren
|
||||
VCButtons.AxisHome.usStatus.0 := (gUserRights.Right6_Setup < mpUSERX_ACCESS_FULL);
|
||||
VCButtons.AxisShuttleHome.usStatus.0 := (gUserRights.Right6_Setup < mpUSERX_ACCESS_FULL);
|
||||
VCButtons.AxisShuttle2Home.usStatus.0 := (gUserRights.Right6_Setup < mpUSERX_ACCESS_FULL);
|
||||
@@ -868,8 +886,9 @@ ACTION DoJogHomeAxis:
|
||||
END_IF
|
||||
END_ACTION
|
||||
|
||||
ACTION DoManualCNC:
|
||||
|
||||
//CNC im Handbetrieb
|
||||
ACTION DoManualCNC:
|
||||
//Gantry Achsen
|
||||
IF gCalibrationDone.bAxisX AND gCalibrationDone.bAxisX1 AND States.PosState.bDiffX_Virtual_Ok AND States.PosState.bDiffX_X1_Ok THEN
|
||||
//Move CyclicPos OK
|
||||
@@ -878,15 +897,19 @@ ACTION DoManualCNC:
|
||||
|
||||
//VC Buttons Status
|
||||
VCButtons.ManCNCStartHome.usStatus.0 := MpFUB.MpCNC5Axis.MoveProgram;
|
||||
VCButtons.ManCNCStartHome.usStatus.1 := lMachine.bMachineHOME;
|
||||
VCButtons.ManCNCStartHome.usStatus.1 := States.bCNCHome;
|
||||
VCButtons.ManCNCStartCalibration.usStatus.0 := MpFUB.MpCNC5Axis.MoveProgram;
|
||||
VCButtons.ManCNCStartCalibration.usStatus.1 := NOT lMachine.bMachineHOME;
|
||||
VCButtons.ManCNCStartCalibration.usStatus.1 := NOT States.bCNCHome AND NOT (States.PosState.bWorkposShuttle1 OR States.PosState.bWorkposShuttle2);
|
||||
|
||||
VCButtons.DropDownBoxFileMan.usStatus.1 := MpFUB.MpCNC5Axis.MoveProgram;
|
||||
|
||||
//CNC Fahren
|
||||
IF NOT MpFUB.MpCNC5Axis.MoveProgram THEN
|
||||
IF gMP7121.Start THEN
|
||||
//FixMe aktueller Ablauf
|
||||
MpData.MpCnc5AxisPar.ProgramName := 'SE10_MAIN.mpf';
|
||||
gIPGLaserInterface.Out.bCuttingGasOn := FALSE;
|
||||
strCurrentCncPrg := gstrFilenames[VCButtons.DropDownBoxFileMan.usIndexDatapoint];
|
||||
IF (gMP7121.Start OR (gbSPLCInMaintDoorOk AND EDGEPOS (bInKeyStart))) AND (States.PosState.bWorkposShuttle1 OR States.PosState.bWorkposShuttle2) THEN
|
||||
//Filename <EFBFBD>bernehmen
|
||||
MpData.MpCnc5AxisPar.ProgramName := strCurrentCncPrg;
|
||||
ELSIF VCButtons.ManCNCStartHome.bCommand THEN
|
||||
//Grundstellung
|
||||
MpData.MpCnc5AxisPar.ProgramName := 'Service/CncHome.mpf';
|
||||
@@ -894,31 +917,110 @@ ACTION DoManualCNC:
|
||||
//Kalibrieren
|
||||
MpData.MpCnc5AxisPar.ProgramName := 'Service/CncCalibrate.mpf';
|
||||
END_IF
|
||||
|
||||
END_IF
|
||||
|
||||
|
||||
|
||||
IF (EDGEPOS (gMP7121.Start) OR EDGEPOS (VCButtons.ManCNCStartHome.bCommand) OR EDGEPOS (VCButtons.ManCNCStartCalibration.bCommand))
|
||||
AND States.bSafetyCNCAxisOk AND NOT States.bSingleAxMode AND (States.enXGantryMode = enXGantryFollowPosVirtX) THEN
|
||||
AND States.bSafetyCNCAxisSS1Ok AND NOT States.bSingleAxMode AND (States.enXGantryMode = enXGantryFollowPosVirtX) THEN
|
||||
IF MpFUB.MpCNC5Axis.MoveInterrupted THEN
|
||||
//FixMe
|
||||
MpFUB.MpCNC5Axis.Continue := TRUE;
|
||||
ELSE
|
||||
IF (MpFUB.MpCNC5Axis.Z > 1200) OR (MpData.MpCnc5AxisPar.ProgramName = 'Service/CncHome.mpf') THEN //FixMe Sicherheitsebene
|
||||
IF (States.bCNCHome AND (States.PosState.bWorkposShuttle1 OR (States.PosState.bWorkposShuttle2 AND gToolInterface.Shuttle2.ToTool.bVaccumOn))) //FixMe Werkzeugabfrage //Vakkum Ein
|
||||
OR (MpData.MpCnc5AxisPar.ProgramName = 'Service/CncHome.mpf') THEN
|
||||
MpFUB.MpCNC5Axis.MoveProgram := TRUE;
|
||||
END_IF
|
||||
END_IF
|
||||
ELSIF EDGEPOS (gMP7121.Stop) OR NOT States.bSafetyCNCAxisOk THEN
|
||||
IF MpFUB.MpCNC5Axis.MoveActive AND NOT MpFUB.MpCNC5Axis.Interrupt THEN
|
||||
ELSIF EDGEPOS (gMP7121.Stop) OR (gbSPLCInMaintDoorOk AND EDGEPOS (bInKeyStop)) OR NOT States.bSafetyCNCAxisSS1Ok THEN
|
||||
IF MpFUB.MpCNC5Axis.MoveActive AND NOT MpFUB.MpCNC5Axis.MoveInterrupted THEN
|
||||
MpFUB.MpCNC5Axis.Interrupt := TRUE;
|
||||
ELSE
|
||||
MpFUB.MpCNC5Axis.MoveProgram := FALSE;
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
IF MpFUB.MpCNC5Axis.MoveDone AND NOT (MpData.MpCnc5AxisPar.ProgramName = 'Service/CncHome.mpf') AND NOT (MpData.MpCnc5AxisPar.ProgramName = 'Service/CncCalibrate.mpf') THEN
|
||||
gCmd1.bReqDoorOpen := TRUE;
|
||||
IF States.PosState.bWorkposShuttle1 THEN
|
||||
gToolInterface.Shuttle1.ToTool.bVaccumOn := FALSE;
|
||||
END_IF
|
||||
IF States.PosState.bWorkposShuttle2 THEN
|
||||
gToolInterface.Shuttle2.ToTool.bVaccumOn := FALSE;
|
||||
END_IF
|
||||
|
||||
END_IF
|
||||
|
||||
END_ACTION
|
||||
|
||||
//Tippen Ventile
|
||||
ACTION DoJogValves:
|
||||
//Torventile werden Getippt wenn eine Position erreicht ist und keinn Tippvorgan angew<EFBFBD>hlt,
|
||||
//bleibt die Endlage Angesteuert
|
||||
VCButtons.OpenGateShuttle1.usStatus.0 := States.CylinderPosState.bGateShuttle1Open;
|
||||
VCButtons.OpenGateShuttle1.usStatus.1 := (gUserRights.Right4_Jog < mpUSERX_ACCESS_ACTUATE);
|
||||
Valves.bOpenGateShuttle1 := VCButtons.OpenGateShuttle1.bCommand;
|
||||
|
||||
VCButtons.CloseGateShuttle1.usStatus.0 := States.CylinderPosState.bGateShuttle1Closed;
|
||||
Valves.bCloseGateShuttle1 := VCButtons.CloseGateShuttle1.bCommand;
|
||||
|
||||
IF NOT VCButtons.OpenGateShuttle1.bCommand AND NOT VCButtons.CloseGateShuttle1.bCommand THEN
|
||||
Valves.bOpenGateShuttle1 := bInGateIsOpenShuttle1 AND NOT gbSInGate1Closed;
|
||||
Valves.bCloseGateShuttle1 := gbSInGate1Closed AND NOT bInGateIsOpenShuttle1;
|
||||
END_IF
|
||||
|
||||
VCButtons.OpenGateShuttle2.usStatus.0 := States.CylinderPosState.bGateShuttle2Open;
|
||||
VCButtons.OpenGateShuttle2.usStatus.1 := (gUserRights.Right4_Jog < mpUSERX_ACCESS_ACTUATE);
|
||||
Valves.bOpenGateShuttle2 := VCButtons.OpenGateShuttle2.bCommand;
|
||||
|
||||
VCButtons.CloseGateShuttle2.usStatus.0 := States.CylinderPosState.bGateShuttle2Closed;
|
||||
Valves.bCloseGateShuttle2 := VCButtons.CloseGateShuttle2.bCommand;
|
||||
|
||||
IF NOT VCButtons.OpenGateShuttle2.bCommand AND NOT VCButtons.CloseGateShuttle2.bCommand THEN
|
||||
Valves.bOpenGateShuttle2 := bInGateIsOpenShuttle2 AND NOT gbSInGate2Closed;
|
||||
Valves.bCloseGateShuttle2 := gbSInGate2Closed AND NOT bInGateIsOpenShuttle2;
|
||||
END_IF
|
||||
|
||||
END_ACTION
|
||||
|
||||
//Vakuum Ventile und Seitenkanalverdichter
|
||||
ACTION DoManVacValves:
|
||||
//Shuttle 1
|
||||
VCButtons.VaccumOnShuttle1.usStatus.0 := gToolInterface.Shuttle1.ToTool.bVaccumOn;
|
||||
VCButtons.VaccumOnShuttle1.usStatus.1 := NOT States.PosState.bWorkposShuttle1;
|
||||
VCButtons.VaccumOffShuttle1.usStatus.0 := NOT gToolInterface.Shuttle1.ToTool.bVaccumOn;
|
||||
VCButtons.VaccumOffShuttle1.usStatus.1 := NOT States.PosState.bWorkposShuttle1 OR MpFUB.MpCNC5Axis.MoveActive OR MpFUB.MpCNC5Axis.MoveInterrupted;
|
||||
|
||||
IF VCButtons.VaccumOnShuttle1.bCommand
|
||||
OR (States.PosState.bWorkposShuttle1 AND NOT gbSPLCInMaintDoorOk AND (lMachine.enMode = enMACH_MANUAL) AND bInKeyStart) THEN
|
||||
gToolInterface.Shuttle1.ToTool.bVaccumOn := TRUE;
|
||||
END_IF
|
||||
|
||||
IF VCButtons.VaccumOffShuttle1.bCommand
|
||||
OR (States.PosState.bWorkposShuttle1 AND NOT gbSPLCInMaintDoorOk AND (lMachine.enMode = enMACH_MANUAL) AND bInKeyStop) THEN
|
||||
gToolInterface.Shuttle1.ToTool.bVaccumOn := FALSE;
|
||||
END_IF
|
||||
|
||||
//Shuttle 2
|
||||
VCButtons.VaccumOnShuttle2.usStatus.0 := gToolInterface.Shuttle2.ToTool.bVaccumOn;
|
||||
VCButtons.VaccumOnShuttle2.usStatus.1 := NOT States.PosState.bWorkposShuttle2;
|
||||
VCButtons.VaccumOffShuttle2.usStatus.0 := NOT gToolInterface.Shuttle2.ToTool.bVaccumOn;
|
||||
VCButtons.VaccumOffShuttle2.usStatus.1 := NOT States.PosState.bWorkposShuttle2 OR MpFUB.MpCNC5Axis.MoveActive OR MpFUB.MpCNC5Axis.MoveInterrupted;
|
||||
|
||||
IF VCButtons.VaccumOnShuttle2.bCommand
|
||||
OR (States.PosState.bWorkposShuttle2 AND NOT gbSPLCInMaintDoorOk AND (lMachine.enMode = enMACH_MANUAL) AND bInKeyStart) THEN
|
||||
|
||||
gToolInterface.Shuttle2.ToTool.bVaccumOn := TRUE;
|
||||
END_IF
|
||||
|
||||
IF VCButtons.VaccumOffShuttle2.bCommand
|
||||
OR (States.PosState.bWorkposShuttle2 AND NOT gbSPLCInMaintDoorOk AND (lMachine.enMode = enMACH_MANUAL) AND bInKeyStop) THEN
|
||||
gToolInterface.Shuttle2.ToTool.bVaccumOn := FALSE;
|
||||
END_IF
|
||||
|
||||
END_ACTION
|
||||
|
||||
//Handbetrieb - Ausw<EFBFBD>hlen
|
||||
ACTION DoManual:
|
||||
IF enOldMachMode <> enMACH_JOG THEN
|
||||
//Tipp betrieb neu angew<EFBFBD>hlt
|
||||
@@ -1011,7 +1113,7 @@ ACTION DoManual:
|
||||
//OR (gUserRights.Right4_Jog < mpUSERX_ACCESS_FULL);
|
||||
VCButtons.AxisCalibrate.usStatus.0 := NOT States.bSingleAxMode;
|
||||
VCButtons.AxisCalibrate.usStatus.1 := NOT MoveConditions.bAxisXMove OR NOT bAxisReadyForCommand
|
||||
OR (gUserRights.Right6_Setup < mpUSERX_ACCESS_ACTUATE);
|
||||
OR (gUserRights.Right6_Setup < mpUSERX_ACCESS_ACTUATE) OR NOT bGodMode;
|
||||
|
||||
1:
|
||||
IF States.bSingleAxMode THEN
|
||||
@@ -1021,7 +1123,7 @@ ACTION DoManual:
|
||||
VCButtons.AxisJogFw.usStatus.1 := NOT MoveConditions.bAxisYMove OR NOT bAxisReadyForCommand OR NOT MpFUB.AxBasic_Y.IsHomed;
|
||||
VCButtons.AxisCalibrate.usStatus.0 := NOT States.bSingleAxMode;
|
||||
VCButtons.AxisCalibrate.usStatus.1 := NOT MoveConditions.bAxisYMove OR NOT bAxisReadyForCommand
|
||||
OR (gUserRights.Right6_Setup < mpUSERX_ACCESS_ACTUATE);
|
||||
OR (gUserRights.Right6_Setup < mpUSERX_ACCESS_ACTUATE)OR NOT bGodMode;;
|
||||
|
||||
2:
|
||||
IF States.bSingleAxMode THEN
|
||||
@@ -1031,7 +1133,7 @@ ACTION DoManual:
|
||||
VCButtons.AxisJogFw.usStatus.1 := NOT MoveConditions.bAxisZMovePos OR NOT bAxisReadyForCommand OR NOT MpFUB.AxBasic_Z.IsHomed;
|
||||
VCButtons.AxisCalibrate.usStatus.0 := NOT States.bSingleAxMode;
|
||||
VCButtons.AxisCalibrate.usStatus.1 := NOT MoveConditions.bAxisZMoveNeg OR NOT MoveConditions.bAxisZMovePos OR NOT bAxisReadyForCommand
|
||||
OR (gUserRights.Right6_Setup < mpUSERX_ACCESS_ACTUATE);
|
||||
OR (gUserRights.Right6_Setup < mpUSERX_ACCESS_ACTUATE) OR NOT bGodMode;;
|
||||
3:
|
||||
IF States.bSingleAxMode THEN
|
||||
bAxisReadyForCommand := MpFUB.AxBasic_C.Active AND MpFUB.AxBasic_C.PowerOn; // AND NOT MpFUB.AxBasic_A.CommandBusy;
|
||||
@@ -1040,7 +1142,7 @@ ACTION DoManual:
|
||||
VCButtons.AxisJogFw.usStatus.1 := NOT MoveConditions.bAxisCMove OR NOT bAxisReadyForCommand OR NOT MpFUB.AxBasic_C.IsHomed;
|
||||
VCButtons.AxisCalibrate.usStatus.0 := NOT States.bSingleAxMode;
|
||||
VCButtons.AxisCalibrate.usStatus.1 := NOT MoveConditions.bAxisCMove OR NOT bAxisReadyForCommand
|
||||
OR (gUserRights.Right6_Setup < mpUSERX_ACCESS_ACTUATE);
|
||||
OR (gUserRights.Right6_Setup < mpUSERX_ACCESS_ACTUATE) OR NOT bGodMode;;
|
||||
|
||||
4:
|
||||
IF States.bSingleAxMode THEN
|
||||
@@ -1050,7 +1152,7 @@ ACTION DoManual:
|
||||
VCButtons.AxisJogFw.usStatus.1 := NOT MoveConditions.bAxisAMove OR NOT bAxisReadyForCommand OR NOT MpFUB.AxBasic_A.IsHomed;
|
||||
VCButtons.AxisCalibrate.usStatus.0 := NOT States.bSingleAxMode;
|
||||
VCButtons.AxisCalibrate.usStatus.1 := NOT MoveConditions.bAxisAMove OR NOT bAxisReadyForCommand
|
||||
OR (gUserRights.Right6_Setup < mpUSERX_ACCESS_ACTUATE);
|
||||
OR (gUserRights.Right6_Setup < mpUSERX_ACCESS_ACTUATE) OR NOT bGodMode;;
|
||||
END_CASE
|
||||
|
||||
|
||||
@@ -1060,8 +1162,8 @@ ACTION DoManual:
|
||||
//OR (gUserRights.Right4_Jog < mpUSERX_ACCESS_FULL);
|
||||
VCButtons.AxisShuttleJogFw.usStatus.1 := NOT MoveConditions.bAxisShuttleMovePos OR NOT bAxisReadyForCommand OR NOT MpFUB.AxBasic_Shuttle.IsHomed;
|
||||
//OR (gUserRights.Right4_Jog < mpUSERX_ACCESS_FULL);
|
||||
VCButtons.AxisShuttleCalibrate.usStatus.0 := NOT States.bSingleAxMode;
|
||||
VCButtons.AxisShuttleCalibrate.usStatus.1 := NOT bAxisReadyForCommand OR (gUserRights.Right6_Setup < mpUSERX_ACCESS_ACTUATE);
|
||||
VCButtons.AxisShuttleCalibrate.usStatus.0 := NOT States.bSingleAxMode ;
|
||||
VCButtons.AxisShuttleCalibrate.usStatus.1 := NOT bAxisReadyForCommand OR (gUserRights.Right6_Setup < mpUSERX_ACCESS_ACTUATE) OR NOT bGodMode;
|
||||
|
||||
bAxisReadyForCommand := MpFUB.AxBasic_Shuttle2.Active AND MpFUB.AxBasic_Shuttle2.PowerOn; // AND NOT MpFUB.AxBasic_Shuttle.CommandBusy;
|
||||
VCButtons.AxisShuttle2JogBw.usStatus.1 := NOT MoveConditions.bAxisShuttle2MoveNeg OR NOT bAxisReadyForCommand OR NOT MpFUB.AxBasic_Shuttle2.IsHomed;
|
||||
@@ -1069,17 +1171,9 @@ ACTION DoManual:
|
||||
VCButtons.AxisShuttle2JogFw.usStatus.1 := NOT MoveConditions.bAxisShuttle2MovePos OR NOT bAxisReadyForCommand OR NOT MpFUB.AxBasic_Shuttle2.IsHomed;
|
||||
//OR (gUserRights.Right4_Jog < mpUSERX_ACCESS_FULL);
|
||||
VCButtons.AxisShuttle2Calibrate.usStatus.0 := NOT States.bSingleAxMode;
|
||||
VCButtons.AxisShuttle2Calibrate.usStatus.1 := NOT bAxisReadyForCommand OR (gUserRights.Right6_Setup < mpUSERX_ACCESS_ACTUATE);
|
||||
VCButtons.AxisShuttle2Calibrate.usStatus.1 := NOT bAxisReadyForCommand OR (gUserRights.Right6_Setup < mpUSERX_ACCESS_ACTUATE) OR NOT bGodMode;
|
||||
|
||||
//Ventile
|
||||
VCButtons.OpenGate.usStatus.0 := States.CylinderPosState.bFrontGateOpen;
|
||||
VCButtons.OpenGate.usStatus.1 := (gUserRights.Right4_Jog < mpUSERX_ACCESS_ACTUATE);
|
||||
VCButtons.CloseGate.usStatus.0 := States.CylinderPosState.bFrontGateClosed;
|
||||
VCButtons.CloseGate.usStatus.1 := (gUserRights.Right4_Jog < mpUSERX_ACCESS_ACTUATE);
|
||||
IF VCButtons.OpenGate.bCommand THEN
|
||||
Valves.bCloseGate := FALSE;
|
||||
ELSIF VCButtons.CloseGate.bCommand THEN
|
||||
Valves.bCloseGate := TRUE;
|
||||
END_IF
|
||||
DoJogValves;
|
||||
|
||||
END_ACTION
|
||||
|
||||
@@ -10,6 +10,8 @@ PROGRAM _CYCLIC
|
||||
IF bInit THEN
|
||||
strOperator := 'Bemusterung';
|
||||
strMachinename := 'Wasserstrahl';
|
||||
|
||||
//FixMe
|
||||
//Grundstellung
|
||||
pParamPositions.HomePos.lrX := 4000;
|
||||
pParamPositions.HomePos.lrY := 575.0;
|
||||
@@ -22,8 +24,10 @@ PROGRAM _CYCLIC
|
||||
|
||||
|
||||
//Shuttlepositionen
|
||||
pParamPositions.lrHomePosShuttle := 234.0;
|
||||
pParamPositions.lrWorkPosShuttle := 5.0;
|
||||
pParamPositions.lrHomePosShuttle1 := 5.0;
|
||||
pParamPositions.lrWorkPosShuttle1 := 3750.0;
|
||||
pParamPositions.lrHomePosShuttle2 := 7495.0;
|
||||
pParamPositions.lrWorkPosShuttle2 := 3745.0;
|
||||
|
||||
END_IF
|
||||
|
||||
@@ -33,14 +37,11 @@ PROGRAM _CYCLIC
|
||||
END_IF
|
||||
|
||||
|
||||
//FixMe !!!
|
||||
//Immer mit Init Programm fahren
|
||||
MpData.MpCnc5AxisPar.MoveProgramOptions.InitProgram := 'CncInit.mpf';
|
||||
CNCVars.lrFeedrate := 30000;
|
||||
CNCVars.bShuttle1InPos := TRUE;
|
||||
CNCVars.bShuttle2InPos := FALSE;
|
||||
CNCVars.bLaserMidPos := gRTLaserInterface.In.bHeadIsMidPos;
|
||||
MpData.MpCnc5AxisPar.MoveProgramOptions.InitProgram := 'Init/CncInit.mpf';
|
||||
|
||||
//CNC Variablen
|
||||
DoCNCVars;
|
||||
|
||||
|
||||
//Scene Viewer
|
||||
@@ -99,8 +100,9 @@ PROGRAM _CYCLIC
|
||||
|
||||
|
||||
//Grundstellungen
|
||||
lMachine.bMachineHOME := States.PosState.bHomeX AND States.PosState.bHomeY AND States.PosState.bHomeZ AND
|
||||
States.bCNCHome := States.PosState.bHomeX AND States.PosState.bHomeY AND States.PosState.bHomeZ AND
|
||||
States.PosState.bHomeC AND States.PosState.bHomeA;
|
||||
lMachine.bMachineHOME := States.bCNCHome AND States.PosState.bHomeShuttle1 AND States.PosState.bHomeShuttle2;
|
||||
IF lMachine.bMachineHOME THEN
|
||||
lMachine.bRequestHoming := FALSE;
|
||||
END_IF
|
||||
@@ -164,10 +166,14 @@ PROGRAM _CYCLIC
|
||||
IF EDGEPOS (lMachine.enMode <> enMACH_AUTOMATIC) THEN
|
||||
enStepAuto := enAutoStep_INIT;
|
||||
MpFUB.MpCNC5Axis.MoveProgram := FALSE;
|
||||
States.bCycleActive := FALSE;
|
||||
END_IF
|
||||
|
||||
enOldMachMode := lMachine.enMode;
|
||||
|
||||
IF NOT States.bCycleActive THEN
|
||||
States.bLastCycle := FALSE;
|
||||
END_IF
|
||||
|
||||
|
||||
|
||||
@@ -184,10 +190,13 @@ PROGRAM _CYCLIC
|
||||
IF lMachine.enMode = enMACH_JOG THEN
|
||||
DoManual;
|
||||
|
||||
DoManVacValves;
|
||||
|
||||
ELSIF lMachine.enMode = enMACH_MANUAL THEN
|
||||
//Manueell
|
||||
DoManualCNC;
|
||||
|
||||
//Vakuum
|
||||
DoManVacValves;
|
||||
|
||||
//Automatik betrieb
|
||||
//==========================================================================================
|
||||
@@ -196,12 +205,18 @@ PROGRAM _CYCLIC
|
||||
VCButtons.AutoStartToolChange.usStatus.0 := (enStepAuto <> enAutoStep_WAIT_START);
|
||||
|
||||
VCButtons.AutoStartHome.usStatus.0 := (enStepAuto <> enAutoStep_HOME_WAIT_START);
|
||||
VCButtons.AutoStartHome.usStatus.1 := NOT States.bSafetyCNCAxisOk;
|
||||
VCButtons.AutoStartHome.usStatus.1 := NOT States.bSafetyCNCAxisSLSOk;
|
||||
|
||||
VCButtons.AutoStartCycle.usStatus.0 := (enStepAuto <> enAutoStep_WAIT_START);
|
||||
VCButtons.AutoStartCycle.usStatus.1 := FALSE AND NOT States.bSafetyCNCAxisOk;
|
||||
VCButtons.AutoStartCycle.usStatus.1 := FALSE AND NOT States.bSafetyCNCAxisSLSOk;
|
||||
|
||||
VCButtons.AutoStopCycle.usStatus.0 := (enStepAuto <> enAutoStep_CNC_FINISHED);
|
||||
VCButtons.AutoStopCycle.usStatus.0 := NOT States.bCycleActive;
|
||||
VCButtons.AutoStopCycle.usStatus.1 := States.bLastCycle;
|
||||
IF VCButtons.AutoStopCycle.bCommand THEN
|
||||
States.bLastCycle := TRUE;
|
||||
END_IF
|
||||
|
||||
VCButtons.AutoStopCNCCycle.usStatus.0 := (enStepAuto <> enAutoStep_CNC_FINISHED);
|
||||
|
||||
VCButtons.AutoRequestHome.usStatus.0 := (enStepAuto > enAutoStep_WAIT_START);
|
||||
|
||||
@@ -228,20 +243,29 @@ PROGRAM _CYCLIC
|
||||
enStepAuto := enAutoStep_INIT;
|
||||
END_IF
|
||||
IF EDGEPOS (lMachine.bRequestHoming) THEN
|
||||
//FixMe
|
||||
//enStepAuto := enAutoStep_INIT;
|
||||
enStepAuto := enAutoStep_INIT;
|
||||
END_IF
|
||||
|
||||
//Notaus w<EFBFBD>hrend Automatik (in Schritten wo keine Unterbrechung gew<EFBFBD>nscht ist)
|
||||
//Fixme bei GS auch pr<EFBFBD>fen
|
||||
//--------------------------------------------------------------------------------------------
|
||||
IF NOT States.bSafetyCNCAxisOk AND (enStepAuto > enAutoStep_WAIT_DOOR_CLOSED) AND (enStepAuto < enAutoStep_WAIT_DOOR_OPEN) THEN
|
||||
IF NOT States.bSafetyCNCAxisSS1Ok AND (enStepAuto > enAutoStep_WAIT_PART) AND (enStepAuto < enAutoStep_FINISHED) THEN
|
||||
//Pr<EFBFBD>fen ob restart erlaubt
|
||||
DoResetAxCommands;
|
||||
IF (enStepAuto >= enAutoStep_CNC_ACTIVE) AND (enStepAuto < enAutoStep_CNC_FINISHED) THEN
|
||||
//FixMe Error
|
||||
IF (enStepAuto = enAutoStep_OPEN_GATE1) OR (enStepAuto = enAutoStep_OPEN_GATE2) OR (enStepAuto = enAutoStep_OPEN_GATES) OR
|
||||
(enStepAuto = enAutoStep_CLOSE_GATES) THEN
|
||||
//Alels Ok kein eingriff
|
||||
ELSIF (enStepAuto = enAutoStep_SHUTTLE1_IN) OR (enStepAuto = enAutoStep_SHUTTLE2_IN) OR (enStepAuto = enAutoStep_SHUTTLE_OUT) THEN
|
||||
//Beim Shuttlen
|
||||
enStepAuto := enAutoStep_INIT;
|
||||
enStepAutoRestartPoint := enStepAuto;
|
||||
TimesLatch.diStoptime := gdiSystemTime;
|
||||
ELSIF (enStepAuto = enAutoStep_CNC_ACTIVE) OR (enStepAuto = enAutoStep_CNC_FINISHED) OR (enStepAuto = enAutoStep_CNC_HOME) THEN
|
||||
//CNC --- Imer CNC Home
|
||||
States.bStoppedCycle := TRUE;
|
||||
enStepAuto := enAutoStep_INIT;
|
||||
enStepAutoRestartPoint := enAutoStep_CNC_HOME;
|
||||
TimesLatch.diStoptime := gdiSystemTime;
|
||||
ELSE
|
||||
enStepAutoRestartPoint := enStepAuto;
|
||||
enStepAuto := enAutoStep_WAIT_RESTART;
|
||||
@@ -249,13 +273,62 @@ PROGRAM _CYCLIC
|
||||
END_IF
|
||||
|
||||
|
||||
IF NOT States.bSafetyCNCAxisOk THEN
|
||||
IF NOT States.bSafetyCNCAxisSS1Ok THEN
|
||||
DoResetAxCommands;
|
||||
// enStepAuto := enAutoStep_INIT;
|
||||
END_IF
|
||||
|
||||
//Automatik Schrittkette Kartusche
|
||||
//Automatik
|
||||
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
IF gLineInterface.In.bVacuumOnShuttle1 THEN
|
||||
IF States.PosState.bHomeShuttle1 AND (gToolInterface.Shuttle1.Tool_State = enTOOL_EMPTY) THEN
|
||||
gToolInterface.Shuttle1.ToTool.bVaccumOn := TRUE;
|
||||
END_IF
|
||||
END_IF
|
||||
IF gLineInterface.In.bVacuumOnShuttle2 THEN
|
||||
IF States.PosState.bHomeShuttle2 AND (gToolInterface.Shuttle1.Tool_State = enTOOL_EMPTY) THEN
|
||||
gToolInterface.Shuttle2.ToTool.bVaccumOn := TRUE;
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
//Bauteil eingelegt
|
||||
IF EDGEPOS (gLineInterface.In.bPlacedPartShuttle1) THEN
|
||||
IF States.PosState.bHomeShuttle1 AND (gToolInterface.Shuttle1.Tool_State = enTOOL_EMPTY) THEN
|
||||
//Neues Bauteil abgelegt
|
||||
gToolInterface.Shuttle1.Tool_State := enTOOL_NEW_PART;
|
||||
gToolInterface.Shuttle1.usPartID := gLineInterface.In.usPartIDShuttle1;
|
||||
//FixMe else fehler
|
||||
END_IF
|
||||
END_IF
|
||||
IF EDGEPOS (gLineInterface.In.bPlacedPartShuttle2) THEN
|
||||
IF States.PosState.bHomeShuttle2 AND (gToolInterface.Shuttle2.Tool_State = enTOOL_EMPTY) THEN
|
||||
//Neues Bauteil abgelegt
|
||||
gToolInterface.Shuttle2.Tool_State := enTOOL_NEW_PART;
|
||||
gToolInterface.Shuttle2.usPartID := gLineInterface.In.usPartIDShuttle2;
|
||||
//FixMe else fehler
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
IF EDGEPOS (gLineInterface.In.bPickedPartShuttle1) THEN
|
||||
IF States.PosState.bHomeShuttle1 AND (gToolInterface.Shuttle1.Tool_State = enTOOL_PART_FINISHED) THEN
|
||||
//Neues Bauteil abgelegt
|
||||
gToolInterface.Shuttle1.ToTool.bVaccumOn := FALSE;
|
||||
gToolInterface.Shuttle1.Tool_State := enTOOL_EMPTY;
|
||||
//FixMe else fehler
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
IF EDGEPOS (gLineInterface.In.bPickedPartShuttle2) THEN
|
||||
IF States.PosState.bHomeShuttle2 AND (gToolInterface.Shuttle2.Tool_State = enTOOL_PART_FINISHED) THEN
|
||||
//Neues Bauteil abgelegt
|
||||
gToolInterface.Shuttle2.ToTool.bVaccumOn := FALSE;
|
||||
gToolInterface.Shuttle2.Tool_State := enTOOL_EMPTY;
|
||||
//FixMe else fehler
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
|
||||
|
||||
|
||||
//Automatik Schrittkette
|
||||
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
@@ -264,6 +337,7 @@ PROGRAM _CYCLIC
|
||||
//---------------------------
|
||||
enAutoStep_INIT:
|
||||
bTransitionCondition := TRUE;
|
||||
MpFUB.MpCNC5Axis.MoveProgram := FALSE;
|
||||
IF bTransitionCondition AND lMachine.bMachineHOME THEN
|
||||
enStepAuto := enAutoStep_WAIT_START;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
@@ -278,146 +352,99 @@ PROGRAM _CYCLIC
|
||||
//GS: Warten auf Start
|
||||
//---------------------------
|
||||
enAutoStep_HOME_WAIT_START:
|
||||
bTransitionCondition := FALSE; // (EDGEPOS (gbInStartKey) OR VCButtons.AutoStartHome.bCommand) AND States.bSafetyCNCAxisOk;
|
||||
bTransitionCondition := States.bSafetyCNCAxisSLSOk AND States.bSafetyShuttlesSLSOk AND VCButtons.AutoStartHome.bCommand; // (EDGEPOS (gbInStartKey) OR VCButtons.AutoStartHome.bCommand) AND States.bSafetyCNCAxisOk;
|
||||
IF bTransitionCondition THEN
|
||||
enStepAuto := enAutoStep_HOME_WAIT_DOORCLOSED;
|
||||
enStepAuto := enAutoStep_HOME_CNC_HOME;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
END_IF
|
||||
|
||||
//Warten bis Tor geschlossen
|
||||
//GS: CNC in GS Fahren
|
||||
//---------------------------
|
||||
enAutoStep_HOME_WAIT_DOORCLOSED:
|
||||
Valves.bCloseGate := MoveConditions.bCloseFrontGate;
|
||||
bTransitionCondition := States.bSafetyCNCAxisOk; //evtl. verz<EFBFBD>gern
|
||||
enAutoStep_HOME_CNC_HOME:
|
||||
//CNC in Grundstellung Fahren
|
||||
IF NOT MpFUB.MpCNC5Axis.MoveProgram THEN
|
||||
MpData.MpCnc5AxisPar.ProgramName := 'Service/CncHome.mpf';
|
||||
END_IF
|
||||
IF States.bSafetyCNCAxisSLSOk THEN
|
||||
MpFUB.MpCNC5Axis.MoveProgram := TRUE;
|
||||
END_IF
|
||||
|
||||
//Valves.bCloseGate := MoveConditions.bCloseFrontGate;
|
||||
bTransitionCondition := MpFUB.MpCNC5Axis.MoveDone;
|
||||
IF bTransitionCondition THEN
|
||||
enStepAuto := enAutoStep_HOME_WAIT_HOMING;
|
||||
MpFUB.MpCNC5Axis.MoveProgram := FALSE;
|
||||
enStepAuto := enAutoStep_HOME_OPEN_GATES;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
END_IF
|
||||
|
||||
//GS: Tore bei Bedarf <EFBFBD>ffnen
|
||||
//---------------------------
|
||||
enAutoStep_HOME_OPEN_GATES:
|
||||
IF NOT States.PosState.bHomeShuttle1 OR NOT States.CylinderPosState.bGateShuttle1Closed THEN
|
||||
Valves.bOpenGateShuttle1 := TRUE;
|
||||
Valves.bCloseGateShuttle1 := FALSE;
|
||||
END_IF
|
||||
IF NOT States.PosState.bHomeShuttle2 OR NOT States.CylinderPosState.bGateShuttle2Closed THEN
|
||||
Valves.bOpenGateShuttle2 := TRUE;
|
||||
Valves.bCloseGateShuttle2 := FALSE;
|
||||
END_IF
|
||||
|
||||
|
||||
|
||||
//Warten bis Achsen Ref
|
||||
//---------------------------
|
||||
enAutoStep_HOME_WAIT_HOMING:
|
||||
bTransitionCondition := MpFUB.AxBasic_X.IsHomed AND
|
||||
MpFUB.AxBasic_Y.IsHomed AND
|
||||
MpFUB.AxBasic_Z.IsHomed AND
|
||||
MpFUB.AxBasic_A.IsHomed AND
|
||||
MpFUB.AxBasic_C.IsHomed AND
|
||||
MpFUB.AxBasic_Shuttle.IsHomed;
|
||||
bTransitionCondition := ((States.CylinderPosState.bGateShuttle1Closed AND States.PosState.bHomeShuttle1) OR States.CylinderPosState.bGateShuttle1Open) AND
|
||||
((States.CylinderPosState.bGateShuttle2Closed AND States.PosState.bHomeShuttle2) OR States.CylinderPosState.bGateShuttle2Open);
|
||||
|
||||
IF bTransitionCondition THEN
|
||||
enStepAuto := enAutoStep_HOME_WAIT_ZHOME;
|
||||
enStepAuto := enAutoStep_HOME_WAIT_SHUTTLEHOME;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
END_IF
|
||||
|
||||
|
||||
//GS: Warten bis Z-Achse in GS gefahren
|
||||
//---------------------------
|
||||
enAutoStep_HOME_WAIT_ZHOME:
|
||||
bTransitionCondition := MpFUB.AxBasic_Z.InPosition AND MpFUB.AxBasic_Z.MoveDone AND
|
||||
NOT MpFUB.AxBasic_Z.CommandBusy AND MpFUB.AxBasic_Z.MoveAbsolute;
|
||||
MpData.AxPar_Z.Velocity := Parameter.rVelocityAxisLinear; //mm/s
|
||||
MpData.AxPar_Z.Acceleration := 1000.0; //mm/s2
|
||||
MpData.AxPar_Z.Deceleration := 1000.0; //mm/s2
|
||||
MpData.AxPar_Z.Position := pParamPositions.HomePos.lrZ; //FixMe False
|
||||
MpFUB.AxBasic_Z.MoveAbsolute := TRUE;
|
||||
|
||||
IF bTransitionCondition THEN
|
||||
MpFUB.AxBasic_Z.MoveAbsolute := FALSE;
|
||||
enStepAuto := enAutoStep_HOME_WAIT_YHOME;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
END_IF
|
||||
|
||||
//GS: Warten bis Y-Achse in GS gefahren
|
||||
//---------------------------
|
||||
enAutoStep_HOME_WAIT_YHOME:
|
||||
bTransitionCondition := MpFUB.AxBasic_Y.InPosition AND MpFUB.AxBasic_Y.MoveDone AND
|
||||
NOT MpFUB.AxBasic_Y.CommandBusy AND MpFUB.AxBasic_Y.MoveAbsolute;
|
||||
MpData.AxPar_Y.Velocity := Parameter.rVelocityAxisLinear; //mm/s
|
||||
MpData.AxPar_Y.Acceleration := 1000.0; //mm/s2
|
||||
MpData.AxPar_Y.Deceleration := 1000.0; //mm/s2
|
||||
//MpData.AxPar_Y.Position := pParamPositions.lrHomePosY;
|
||||
MpFUB.AxBasic_Y.MoveAbsolute := MoveConditions.bAxisYMove;
|
||||
|
||||
IF bTransitionCondition THEN
|
||||
MpFUB.AxBasic_Y.MoveAbsolute := FALSE;
|
||||
enStepAuto := enAutoStep_HOME_WAIT_XHOME;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
END_IF
|
||||
|
||||
//GS: Warten bis X-Achse in GS gefahren
|
||||
//---------------------------
|
||||
enAutoStep_HOME_WAIT_XHOME:
|
||||
bTransitionCondition := MpFUB.AxBasic_X.InPosition AND MpFUB.AxBasic_X.MoveDone AND
|
||||
NOT MpFUB.AxBasic_X.CommandBusy AND MpFUB.AxBasic_X.MoveAbsolute;
|
||||
MpData.AxPar_X.Velocity := Parameter.rVelocityAxisLinear; //mm/s
|
||||
MpData.AxPar_X.Acceleration := 1000.0; //mm/s2
|
||||
MpData.AxPar_X.Deceleration := 1000.0; //mm/s2
|
||||
//MpData.AxPar_X.Position := pParamPositions.lrHomePosX;
|
||||
MpFUB.AxBasic_X.MoveAbsolute := TRUE;
|
||||
|
||||
IF bTransitionCondition THEN
|
||||
MpFUB.AxBasic_X.MoveAbsolute := FALSE;
|
||||
enStepAuto := enAutoStep_HOME_WAIT_AHOME;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
END_IF
|
||||
|
||||
//GS: Warten bis A-Achse in GS gefahren
|
||||
//---------------------------
|
||||
enAutoStep_HOME_WAIT_AHOME:
|
||||
bTransitionCondition := MpFUB.AxBasic_A.InPosition AND MpFUB.AxBasic_A.MoveDone AND
|
||||
NOT MpFUB.AxBasic_A.CommandBusy AND MpFUB.AxBasic_A.MoveAbsolute;
|
||||
MpData.AxPar_A.Velocity := Parameter.rVelocityAxisAngle; //mm/s
|
||||
MpData.AxPar_A.Acceleration := 360.0; //mm/s2
|
||||
MpData.AxPar_A.Deceleration := 360.0; //mm/s2
|
||||
//MpData.AxPar_A.Position := pParamPositions.lrHomePosA;
|
||||
MpFUB.AxBasic_A.MoveAbsolute := TRUE;
|
||||
|
||||
IF bTransitionCondition THEN
|
||||
MpFUB.AxBasic_A.MoveAbsolute := FALSE;
|
||||
enStepAuto := enAutoStep_HOME_WAIT_BHOME;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
END_IF
|
||||
|
||||
//GS: Warten bis B-Achse in GS gefahren
|
||||
//---------------------------
|
||||
enAutoStep_HOME_WAIT_BHOME:
|
||||
bTransitionCondition := MpFUB.AxBasic_C.InPosition AND MpFUB.AxBasic_C.MoveDone AND
|
||||
NOT MpFUB.AxBasic_C.CommandBusy AND MpFUB.AxBasic_C.MoveAbsolute;
|
||||
MpData.AxPar_C.Velocity := Parameter.rVelocityAxisAngle; //mm/s
|
||||
MpData.AxPar_C.Acceleration := 360.0; //mm/s2
|
||||
MpData.AxPar_C.Deceleration := 360.0; //mm/s2
|
||||
//MpData.AxPar_C.Position := pParamPositions.lrHomePosB;
|
||||
MpFUB.AxBasic_C.MoveAbsolute := TRUE;
|
||||
|
||||
IF bTransitionCondition THEN
|
||||
MpFUB.AxBasic_C.MoveAbsolute := FALSE;
|
||||
enStepAuto := enAutoStep_HOME_WAIT_SHUTTLEHOME;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
END_IF
|
||||
|
||||
|
||||
//Shuttle in Grundstellung
|
||||
//---------------------------
|
||||
enAutoStep_HOME_WAIT_SHUTTLEHOME:
|
||||
bTransitionCondition := MpFUB.AxBasic_Shuttle.InPosition AND MpFUB.AxBasic_Shuttle.MoveDone AND
|
||||
NOT MpFUB.AxBasic_Shuttle.CommandBusy AND MpFUB.AxBasic_Shuttle.MoveAbsolute;
|
||||
MpData.AxPar_Shuttle.Velocity := Parameter.rVelocityAxisLinear; //mm/s
|
||||
bTransitionCondition := States.PosState.bHomeShuttle1 AND ((MpFUB.AxBasic_Shuttle.InPosition AND MpFUB.AxBasic_Shuttle.MoveDone AND
|
||||
NOT MpFUB.AxBasic_Shuttle.CommandBusy AND MpFUB.AxBasic_Shuttle.MoveAbsolute) OR NOT MpFUB.AxBasic_Shuttle.MoveAbsolute) AND
|
||||
States.PosState.bHomeShuttle2 AND ((MpFUB.AxBasic_Shuttle2.InPosition AND MpFUB.AxBasic_Shuttle2.MoveDone AND
|
||||
NOT MpFUB.AxBasic_Shuttle2.CommandBusy AND MpFUB.AxBasic_Shuttle2.MoveAbsolute) OR NOT MpFUB.AxBasic_Shuttle2.MoveAbsolute);
|
||||
|
||||
MpData.AxPar_Shuttle.Velocity := Parameter.rVelocityShuttle; //mm/s
|
||||
MpData.AxPar_Shuttle.Acceleration := 1000.0; //mm/s2
|
||||
MpData.AxPar_Shuttle.Deceleration := 1000.0; //mm/s2
|
||||
MpData.AxPar_Shuttle.Position := pParamPositions.lrHomePosShuttle;
|
||||
MpFUB.AxBasic_Shuttle.MoveAbsolute := MoveConditions.bAxisShuttleMovePos;
|
||||
MpData.AxPar_Shuttle.Position := pParamPositions.lrHomePosShuttle1;
|
||||
IF NOT States.PosState.bHomeShuttle1 OR MpFUB.AxBasic_Shuttle.MoveAbsolute THEN
|
||||
MpFUB.AxBasic_Shuttle.MoveAbsolute := MoveConditions.bAxisShuttleMoveNeg;
|
||||
END_IF
|
||||
|
||||
MpData.AxPar_Shuttle2.Velocity := Parameter.rVelocityShuttle; //mm/s
|
||||
MpData.AxPar_Shuttle2.Acceleration := 1000.0; //mm/s2
|
||||
MpData.AxPar_Shuttle2.Deceleration := 1000.0; //mm/s2
|
||||
MpData.AxPar_Shuttle2.Position := pParamPositions.lrHomePosShuttle2;
|
||||
MpFUB.AxBasic_Shuttle2.MoveAbsolute := MoveConditions.bAxisShuttle2MovePos;
|
||||
|
||||
IF bTransitionCondition THEN
|
||||
MpFUB.AxBasic_Shuttle.MoveAbsolute := FALSE;
|
||||
MpFUB.AxBasic_Shuttle2.MoveAbsolute := FALSE;
|
||||
gToolInterface.Shuttle1.ToTool.bVaccumOn := FALSE;
|
||||
gToolInterface.Shuttle2.ToTool.bVaccumOn := FALSE;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
enStepAuto := enAutoStep_HOME_WAIT_DOOROPEN;
|
||||
enStepAuto := enAutoStep_HOME_CLOSE_GATES;
|
||||
END_IF
|
||||
|
||||
|
||||
//T<EFBFBD>r <EFBFBD>ffnen
|
||||
//GS: T<EFBFBD>r schlie<EFBFBD>en
|
||||
//---------------------------
|
||||
enAutoStep_HOME_WAIT_DOOROPEN:
|
||||
Valves.bCloseGate := FALSE;
|
||||
//bTransitionCondition := gbInFrontGateOpen;
|
||||
enAutoStep_HOME_CLOSE_GATES:
|
||||
IF MoveConditions.bCloseGateShuttle1 THEN
|
||||
Valves.bCloseGateShuttle1 := TRUE;
|
||||
Valves.bOpenGateShuttle1 := FALSE;
|
||||
END_IF
|
||||
IF MoveConditions.bCloseGateShuttle2 THEN
|
||||
Valves.bCloseGateShuttle2 := TRUE;
|
||||
Valves.bOpenGateShuttle2 := FALSE;
|
||||
END_IF
|
||||
|
||||
bTransitionCondition := States.CylinderPosState.bGateShuttle1Closed AND States.CylinderPosState.bGateShuttle2Closed;
|
||||
|
||||
IF bTransitionCondition THEN
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
@@ -425,10 +452,10 @@ PROGRAM _CYCLIC
|
||||
END_IF
|
||||
|
||||
|
||||
//Warten auf Start nach Notaus (inaktiv)
|
||||
//GS: Warten auf Start nach Notaus (inaktiv)
|
||||
//---------------------------
|
||||
enAutoStep_WAIT_RESTART:
|
||||
bTransitionCondition := States.bSafetyCNCAxisOkDelayed AND (Times.diSteptime > 200000) AND MpFUB.MpCNC5Axis.PowerOn;
|
||||
bTransitionCondition := States.bSafetyCNCAxisSS1OkDelayed AND (Times.diSteptime > 200000) AND MpFUB.MpCNC5Axis.PowerOn;
|
||||
|
||||
IF bTransitionCondition THEN
|
||||
enStepAuto := enStepAutoRestartPoint;
|
||||
@@ -439,84 +466,138 @@ PROGRAM _CYCLIC
|
||||
//Warten auf Start
|
||||
//---------------------------
|
||||
enAutoStep_WAIT_START:
|
||||
|
||||
//Werkzeugwechsel
|
||||
//bTransitionCondition := VCButtons.AutoStartToolChange.bCommand;
|
||||
States.bCycleActive := FALSE;
|
||||
States.bLastCycle := FALSE;
|
||||
|
||||
bTransitionCondition := FALSE; //EDGEPOS (gbInStartKey) OR EDGEPOS (VCButtons.AutoStartCycle.bCommand);
|
||||
bTransitionCondition := VCButtons.AutoStartCycle.bCommand; //EDGEPOS (gbInStartKey) OR EDGEPOS (VCButtons.AutoStartCycle.bCommand);
|
||||
//Fehler erzeugen Prozessrelevant
|
||||
|
||||
IF bTransitionCondition
|
||||
AND NOT MpAlarmXCheckReaction (gMpAlarmXCore, 'ReactionLockAuto')
|
||||
AND NOT MpAlarmXCheckReaction (gMpAlarmXCore, 'ReactionDisableAutoMovement') THEN
|
||||
FOR udi := brsstrlen (ADR (gResult.strSerialNr)) TO 10 DO
|
||||
brsstrcat (ADR (gResult.strSerialNr), ADR (' '));
|
||||
END_FOR
|
||||
brsstrcat (ADR (gResult.strSerialNr), ADR (strMachinename));
|
||||
brsstrcat (ADR (gResult.strSerialNr), ADR ('_'));
|
||||
brsstrcat (ADR (gResult.strSerialNr), ADR (strTemp));
|
||||
IF bTransitionCondition THEN
|
||||
States.bCycleActive := TRUE;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
TimesLatch.diCycletime := gdiSystemTime;
|
||||
enStepAuto := enAutoStep_WAIT_DOOR_CLOSED;
|
||||
enStepAuto := enAutoStep_WAIT_PART;
|
||||
END_IF
|
||||
|
||||
|
||||
//Warten bis Tor geschlossen
|
||||
//---------------------------
|
||||
enAutoStep_WAIT_DOOR_CLOSED:
|
||||
Valves.bCloseGate := MoveConditions.bCloseFrontGate;
|
||||
bTransitionCondition := States.bSafetyCNCAxisOkDelayed; //FixMe Einschaltverzoegert
|
||||
IF bTransitionCondition THEN
|
||||
enStepAuto := enAutoStep_WAIT_HOMING;
|
||||
enAutoStep_WAIT_PART:
|
||||
bTransitionCondition := States.bSafetyCNCAxisSS1OkDelayed; //FixMe Einschaltverzoegert
|
||||
IF (gToolInterface.Shuttle1.Tool_State = enTOOL_NEW_PART) AND gLineInterface.In.bRobOutOfShuttle1 AND bTransitionCondition THEN
|
||||
enStepAuto := enAutoStep_OPEN_GATE1;
|
||||
ELSIF (gToolInterface.Shuttle2.Tool_State = enTOOL_NEW_PART) AND gLineInterface.In.bRobOutOfShuttle2 AND bTransitionCondition THEN
|
||||
enStepAuto := enAutoStep_OPEN_GATE2;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
END_IF
|
||||
|
||||
//Warten bis Achsen Ref
|
||||
//Tor Shuttle 1 <EFBFBD>ffnen
|
||||
//---------------------------
|
||||
enAutoStep_WAIT_HOMING:
|
||||
bTransitionCondition := MpFUB.AxBasic_X.IsHomed AND
|
||||
MpFUB.AxBasic_Y.IsHomed AND
|
||||
MpFUB.AxBasic_Z.IsHomed AND
|
||||
MpFUB.AxBasic_A.IsHomed AND
|
||||
MpFUB.AxBasic_C.IsHomed AND
|
||||
MpFUB.AxBasic_Shuttle.IsHomed;
|
||||
enAutoStep_OPEN_GATE1:
|
||||
Valves.bCloseGateShuttle1 := FALSE;
|
||||
Valves.bOpenGateShuttle1 := TRUE;
|
||||
|
||||
bTransitionCondition := States.CylinderPosState.bGateShuttle1Open;
|
||||
|
||||
IF bTransitionCondition THEN
|
||||
enStepAuto := enAutoStep_SHUTTLE_IN;
|
||||
enStepAuto := enAutoStep_SHUTTLE1_IN;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
END_IF
|
||||
|
||||
//Schuttle in Bearbeitungspos
|
||||
//---------------------------
|
||||
enAutoStep_SHUTTLE_IN:
|
||||
bTransitionCondition := MpFUB.AxBasic_Shuttle.InPosition AND MpFUB.AxBasic_Shuttle.MoveDone AND
|
||||
enAutoStep_SHUTTLE1_IN:
|
||||
bTransitionCondition := States.PosState.bWorkposShuttle1 AND MpFUB.AxBasic_Shuttle.InPosition AND MpFUB.AxBasic_Shuttle.MoveDone AND
|
||||
NOT MpFUB.AxBasic_Shuttle.CommandBusy AND MpFUB.AxBasic_Shuttle.MoveAbsolute;
|
||||
MpData.AxPar_Shuttle.Velocity := Parameter.rVelocityAxisLinear; //mm/s
|
||||
MpData.AxPar_Shuttle.Acceleration := 1000.0; //mm/s2
|
||||
MpData.AxPar_Shuttle.Deceleration := 1000.0; //mm/s2
|
||||
MpData.AxPar_Shuttle.Position := pParamPositions.lrWorkPosShuttle;
|
||||
MpFUB.AxBasic_Shuttle.MoveAbsolute := MoveConditions.bAxisShuttleMoveNeg;
|
||||
MpData.AxPar_Shuttle.Velocity := Parameter.rVelocityShuttle; //mm/s
|
||||
MpData.AxPar_Shuttle.Acceleration := 2000.0; //mm/s2
|
||||
MpData.AxPar_Shuttle.Deceleration := 2000.0; //mm/s2
|
||||
MpData.AxPar_Shuttle.Position := pParamPositions.lrWorkPosShuttle1;
|
||||
MpFUB.AxBasic_Shuttle.MoveAbsolute := MoveConditions.bAxisShuttleMovePos;
|
||||
IF bTransitionCondition THEN
|
||||
MpFUB.AxBasic_Shuttle.MoveAbsolute := FALSE;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
enStepAuto := enAutoStep_CLOSE_GATE1;
|
||||
END_IF
|
||||
|
||||
//Tor Shuttle 1 schlie<EFBFBD>en
|
||||
//---------------------------
|
||||
enAutoStep_CLOSE_GATE1:
|
||||
Valves.bCloseGateShuttle1 := MoveConditions.bCloseGateShuttle1;
|
||||
Valves.bOpenGateShuttle1 := FALSE;
|
||||
|
||||
bTransitionCondition := States.CylinderPosState.bGateShuttle1Closed;
|
||||
|
||||
IF bTransitionCondition THEN
|
||||
enStepAuto := enAutoStep_CNC_ACTIVE;
|
||||
END_IF
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
END_IF
|
||||
|
||||
//Tor Shuttle 2 <EFBFBD>ffnen
|
||||
//---------------------------
|
||||
enAutoStep_OPEN_GATE2:
|
||||
Valves.bCloseGateShuttle2 := FALSE;
|
||||
Valves.bOpenGateShuttle2 := TRUE;
|
||||
|
||||
bTransitionCondition := States.CylinderPosState.bGateShuttle2Open;
|
||||
|
||||
IF bTransitionCondition THEN
|
||||
enStepAuto := enAutoStep_SHUTTLE2_IN;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
END_IF
|
||||
|
||||
//Schuttle in Bearbeitungspos
|
||||
//---------------------------
|
||||
enAutoStep_SHUTTLE2_IN:
|
||||
bTransitionCondition := States.PosState.bWorkposShuttle2 AND MpFUB.AxBasic_Shuttle2.InPosition AND MpFUB.AxBasic_Shuttle2.MoveDone AND
|
||||
NOT MpFUB.AxBasic_Shuttle2.CommandBusy AND MpFUB.AxBasic_Shuttle2.MoveAbsolute;
|
||||
MpData.AxPar_Shuttle2.Velocity := Parameter.rVelocityShuttle; //mm/s
|
||||
MpData.AxPar_Shuttle2.Acceleration := 2000.0; //mm/s2
|
||||
MpData.AxPar_Shuttle2.Deceleration := 2000.0; //mm/s2
|
||||
MpData.AxPar_Shuttle2.Position := pParamPositions.lrWorkPosShuttle2;
|
||||
MpFUB.AxBasic_Shuttle2.MoveAbsolute := MoveConditions.bAxisShuttleMoveNeg;
|
||||
IF bTransitionCondition THEN
|
||||
MpFUB.AxBasic_Shuttle2.MoveAbsolute := FALSE;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
enStepAuto := enAutoStep_CLOSE_GATE2;
|
||||
END_IF
|
||||
|
||||
//Tor Shuttle 2 schlie<EFBFBD>en
|
||||
//---------------------------
|
||||
enAutoStep_CLOSE_GATE2:
|
||||
Valves.bCloseGateShuttle2 := MoveConditions.bCloseGateShuttle2;
|
||||
Valves.bOpenGateShuttle2 := FALSE;
|
||||
|
||||
bTransitionCondition := States.CylinderPosState.bGateShuttle2Closed;
|
||||
|
||||
IF bTransitionCondition THEN
|
||||
enStepAuto := enAutoStep_CNC_ACTIVE;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
END_IF
|
||||
|
||||
//CNC Starten
|
||||
//---------------------------
|
||||
enAutoStep_CNC_ACTIVE:
|
||||
bTransitionCondition := (Parameter.bTestRun OR (Times.diSteptime > 500000));
|
||||
strCurrentCncPrg := gstrFilenames[usCncPrgSelection];
|
||||
MpData.MpCnc5AxisPar.ProgramName := strCurrentCncPrg;
|
||||
//MpData.MpCnc5AxisPar.ProgramName := lCurrentTool.SysPar.strCNCPrg;
|
||||
strCurrentCncPrg := '';
|
||||
FOR usi := 1 TO UINT_TO_USINT (MAX_RECIPE) DO
|
||||
IF (States.PosState.bWorkposShuttle1 AND (gRecipies[usi].usPartID = gToolInterface.Shuttle1.usPartID)) OR
|
||||
(States.PosState.bWorkposShuttle2 AND (gRecipies[usi].usPartID = gToolInterface.Shuttle1.usPartID)) THEN
|
||||
strCurrentCncPrg := gRecipies[usi].strCNCPrg;
|
||||
uiTestMinPowerLaser := gRecipies[usi].uiLaserPowerMin;
|
||||
uiTestPowerLaser := gRecipies[usi].uiLaserPower;
|
||||
EXIT;
|
||||
END_IF
|
||||
END_FOR;
|
||||
|
||||
//Parameter fixieren und an CNC Schreiben
|
||||
MpData.MpCnc5AxisPar.ProgramName := strCurrentCncPrg;
|
||||
|
||||
bTransitionCondition := (Parameter.bTestRun OR (Times.diSteptime > 500000));
|
||||
IF bTransitionCondition THEN
|
||||
MpFUB.MpCNC5Axis.MoveProgram := TRUE;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
enStepAuto := enAutoStep_CNC_FINISHED;
|
||||
States.bStoppedCycle := FALSE;
|
||||
|
||||
bStartMoveCmd := FALSE;
|
||||
END_IF
|
||||
@@ -528,132 +609,150 @@ PROGRAM _CYCLIC
|
||||
//CNC Program Ende
|
||||
bTransitionCondition := MpFUB.MpCNC5Axis.MoveDone;
|
||||
|
||||
IF VCButtons.AutoStopCycle.bCommand THEN
|
||||
IF VCButtons.AutoStopCNCCycle.bCommand THEN
|
||||
//Abbruch
|
||||
MpFUB.MpCNC5Axis.MoveProgram := FALSE;
|
||||
States.bStoppedCycle := TRUE;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
enStepAuto := enAutoStep_WAIT_DOOR_OPEN;
|
||||
ELSIF bTransitionCondition THEN
|
||||
MpFUB.MpCNC5Axis.MoveProgram := FALSE;
|
||||
IF States.PosState.bWorkposShuttle1 THEN
|
||||
gLineInterface.Out.udCutTimeShuttle1 := Times.diSteptime;
|
||||
gToolInterface.Shuttle1.Tool_State := enTOOL_PART_FINISHED;
|
||||
gLineInterface.Out.bFinishedPartIOShuttle1 := NOT States.bStoppedCycle;
|
||||
ELSIF States.PosState.bWorkposShuttle1 THEN
|
||||
gLineInterface.Out.udCutTimeShuttle1 := Times.diSteptime;
|
||||
gToolInterface.Shuttle2.Tool_State := enTOOL_PART_FINISHED;
|
||||
gLineInterface.Out.bFinishedPartIOShuttle2 := NOT States.bStoppedCycle;
|
||||
END_IF
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
enStepAuto := enAutoStep_ZHOME;
|
||||
IF States.bStoppedCycle THEN
|
||||
enStepAuto := enAutoStep_CNC_HOME;
|
||||
ELSE
|
||||
enStepAuto := enAutoStep_OPEN_GATES;
|
||||
END_IF
|
||||
END_IF
|
||||
|
||||
//Warten bis Z-Achse in GS gefahren
|
||||
|
||||
//CNC in GS Fahren
|
||||
//---------------------------
|
||||
enAutoStep_ZHOME:
|
||||
bTransitionCondition := MpFUB.AxBasic_Z.InPosition AND MpFUB.AxBasic_Z.MoveDone AND
|
||||
NOT MpFUB.AxBasic_Z.CommandBusy AND MpFUB.AxBasic_Z.MoveAbsolute;
|
||||
MpData.AxPar_Z.Velocity := Parameter.rVelocityAxisLinear; //mm/s
|
||||
MpData.AxPar_Z.Acceleration := 1000.0; //mm/s2
|
||||
MpData.AxPar_Z.Deceleration := 1000.0; //mm/s2
|
||||
//MpData.AxPar_Z.Position := pParamPositions.lrHomePosZ;
|
||||
MpFUB.AxBasic_Z.MoveAbsolute := TRUE;
|
||||
|
||||
enAutoStep_CNC_HOME:
|
||||
//CNC in Grundstellung Fahren
|
||||
IF NOT MpFUB.MpCNC5Axis.MoveProgram THEN
|
||||
MpData.MpCnc5AxisPar.ProgramName := 'Service/CncHome.mpf';
|
||||
END_IF
|
||||
IF States.bSafetyCNCAxisSLSOk THEN
|
||||
MpFUB.MpCNC5Axis.MoveProgram := TRUE;
|
||||
END_IF
|
||||
|
||||
bTransitionCondition := MpFUB.MpCNC5Axis.MoveDone;
|
||||
IF bTransitionCondition THEN
|
||||
MpFUB.AxBasic_Z.MoveAbsolute := FALSE;
|
||||
enStepAuto := enAutoStep_YHOME;
|
||||
MpFUB.MpCNC5Axis.MoveProgram := FALSE;
|
||||
enStepAuto := enAutoStep_OPEN_GATES;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
END_IF
|
||||
|
||||
//Warten bis Y-Achse in GS gefahren
|
||||
|
||||
|
||||
//Tore <EFBFBD>ffnen
|
||||
//---------------------------
|
||||
enAutoStep_YHOME:
|
||||
bTransitionCondition := MpFUB.AxBasic_Y.InPosition AND MpFUB.AxBasic_Y.MoveDone AND
|
||||
NOT MpFUB.AxBasic_Y.CommandBusy AND MpFUB.AxBasic_Y.MoveAbsolute;
|
||||
MpData.AxPar_Y.Velocity := Parameter.rVelocityAxisLinear; //mm/s
|
||||
MpData.AxPar_Y.Acceleration := 1000.0; //mm/s2
|
||||
MpData.AxPar_Y.Deceleration := 1000.0; //mm/s2
|
||||
//MpData.AxPar_Y.Position := pParamPositions.lrHomePosY;
|
||||
MpFUB.AxBasic_Y.MoveAbsolute := MoveConditions.bAxisYMove;
|
||||
|
||||
IF bTransitionCondition THEN
|
||||
MpFUB.AxBasic_Y.MoveAbsolute := FALSE;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
enStepAuto := enAutoStep_XHOME;
|
||||
enAutoStep_OPEN_GATES:
|
||||
IF States.PosState.bWorkposShuttle1 THEN
|
||||
Valves.bOpenGateShuttle1 := TRUE;
|
||||
Valves.bCloseGateShuttle1 := FALSE;
|
||||
END_IF
|
||||
|
||||
//Warten bis X-Achse in GS gefahren
|
||||
//---------------------------
|
||||
enAutoStep_XHOME:
|
||||
bTransitionCondition := MpFUB.AxBasic_X.InPosition AND MpFUB.AxBasic_X.MoveDone AND
|
||||
NOT MpFUB.AxBasic_X.CommandBusy AND MpFUB.AxBasic_X.MoveAbsolute;
|
||||
MpData.AxPar_X.Velocity := Parameter.rVelocityAxisLinear; //mm/s
|
||||
MpData.AxPar_X.Acceleration := 1000.0; //mm/s2
|
||||
MpData.AxPar_X.Deceleration := 1000.0; //mm/s2
|
||||
//MpData.AxPar_X.Position := pParamPositions.lrHomePosX;
|
||||
MpFUB.AxBasic_X.MoveAbsolute := MoveConditions.bAxisXMove;
|
||||
|
||||
IF States.PosState.bWorkposShuttle2 THEN
|
||||
Valves.bOpenGateShuttle2 := TRUE;
|
||||
Valves.bCloseGateShuttle2 := FALSE;
|
||||
END_IF
|
||||
|
||||
bTransitionCondition := ((States.CylinderPosState.bGateShuttle1Closed AND States.PosState.bHomeShuttle1) OR States.CylinderPosState.bGateShuttle1Open) AND
|
||||
((States.CylinderPosState.bGateShuttle2Closed AND States.PosState.bHomeShuttle2) OR States.CylinderPosState.bGateShuttle2Open);
|
||||
|
||||
IF bTransitionCondition THEN
|
||||
MpFUB.AxBasic_Y.MoveAbsolute := FALSE;
|
||||
enStepAuto := enAutoStep_SHUTTLE_OUT;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
enStepAuto := enAutoStep_AHOME;
|
||||
END_IF
|
||||
|
||||
//Warten bis A-Achse in GS gefahren
|
||||
//---------------------------
|
||||
enAutoStep_AHOME:
|
||||
bTransitionCondition := MpFUB.AxBasic_A.InPosition AND MpFUB.AxBasic_A.MoveDone AND
|
||||
NOT MpFUB.AxBasic_A.CommandBusy AND MpFUB.AxBasic_A.MoveAbsolute;
|
||||
MpData.AxPar_A.Velocity := Parameter.rVelocityAxisAngle; //<EFBFBD>/s
|
||||
MpData.AxPar_A.Acceleration := 360.0; //<EFBFBD>/s2
|
||||
MpData.AxPar_A.Deceleration := 360.0; //<EFBFBD>/s2
|
||||
//MpData.AxPar_A.Position := pParamPositions.lrHomePosA;
|
||||
MpFUB.AxBasic_A.MoveAbsolute := MoveConditions.bAxisAMove;
|
||||
|
||||
IF bTransitionCondition THEN
|
||||
MpFUB.AxBasic_A.MoveAbsolute := FALSE;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
enStepAuto := enAutoStep_BHOME;
|
||||
END_IF
|
||||
|
||||
//Warten bis B-Achse in GS gefahren
|
||||
//---------------------------
|
||||
enAutoStep_BHOME:
|
||||
bTransitionCondition := MpFUB.AxBasic_C.InPosition AND MpFUB.AxBasic_C.MoveDone AND
|
||||
NOT MpFUB.AxBasic_C.CommandBusy AND MpFUB.AxBasic_C.MoveAbsolute;
|
||||
MpData.AxPar_C.Velocity := Parameter.rVelocityAxisAngle; //<EFBFBD>/s
|
||||
MpData.AxPar_C.Acceleration := 360.0; //<EFBFBD>/s2
|
||||
MpData.AxPar_C.Deceleration := 360.0; //<EFBFBD>/s2
|
||||
//MpData.AxPar_C.Position := pParamPositions.lrHomePosB;
|
||||
MpFUB.AxBasic_C.MoveAbsolute := MoveConditions.bAxisBMove;
|
||||
|
||||
IF bTransitionCondition THEN
|
||||
MpFUB.AxBasic_C.MoveAbsolute := FALSE;
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
enStepAuto := enAutoStep_SHUTTLE_OUT;
|
||||
END_IF
|
||||
|
||||
|
||||
|
||||
//Shuttle in Grundstellung
|
||||
//---------------------------
|
||||
enAutoStep_SHUTTLE_OUT:
|
||||
bTransitionCondition := MpFUB.AxBasic_Shuttle.InPosition AND MpFUB.AxBasic_Shuttle.MoveDone AND
|
||||
NOT MpFUB.AxBasic_Shuttle.CommandBusy AND MpFUB.AxBasic_Shuttle.MoveAbsolute;
|
||||
MpData.AxPar_Shuttle.Velocity := Parameter.rVelocityAxisLinear; //mm/s
|
||||
bTransitionCondition := States.PosState.bHomeShuttle1 AND (
|
||||
(MpFUB.AxBasic_Shuttle.InPosition AND MpFUB.AxBasic_Shuttle.MoveDone AND NOT MpFUB.AxBasic_Shuttle.CommandBusy AND MpFUB.AxBasic_Shuttle.MoveAbsolute)
|
||||
OR States.CylinderPosState.bGateShuttle1Closed
|
||||
) AND
|
||||
States.PosState.bHomeShuttle2 AND (
|
||||
(MpFUB.AxBasic_Shuttle2.InPosition AND MpFUB.AxBasic_Shuttle2.MoveDone AND NOT MpFUB.AxBasic_Shuttle2.CommandBusy AND MpFUB.AxBasic_Shuttle2.MoveAbsolute)
|
||||
OR States.CylinderPosState.bGateShuttle2Closed
|
||||
);
|
||||
|
||||
MpData.AxPar_Shuttle.Velocity := Parameter.rVelocityShuttle; //mm/s
|
||||
MpData.AxPar_Shuttle.Acceleration := 1000.0; //mm/s2
|
||||
MpData.AxPar_Shuttle.Deceleration := 1000.0; //mm/s2
|
||||
MpData.AxPar_Shuttle.Position := pParamPositions.lrHomePosShuttle;
|
||||
MpFUB.AxBasic_Shuttle.MoveAbsolute := MoveConditions.bAxisShuttleMovePos;
|
||||
MpData.AxPar_Shuttle.Position := pParamPositions.lrHomePosShuttle1;
|
||||
IF NOT States.PosState.bHomeShuttle1 OR MpFUB.AxBasic_Shuttle.MoveAbsolute THEN
|
||||
MpFUB.AxBasic_Shuttle.MoveAbsolute := MoveConditions.bAxisShuttleMoveNeg;
|
||||
END_IF
|
||||
|
||||
MpData.AxPar_Shuttle2.Velocity := Parameter.rVelocityShuttle; //mm/s
|
||||
MpData.AxPar_Shuttle2.Acceleration := 1000.0; //mm/s2
|
||||
MpData.AxPar_Shuttle2.Deceleration := 1000.0; //mm/s2
|
||||
MpData.AxPar_Shuttle2.Position := pParamPositions.lrHomePosShuttle2;
|
||||
MpFUB.AxBasic_Shuttle2.MoveAbsolute := MoveConditions.bAxisShuttle2MovePos;
|
||||
|
||||
IF bTransitionCondition THEN
|
||||
MpFUB.AxBasic_Shuttle.MoveAbsolute := FALSE;
|
||||
MpFUB.AxBasic_Shuttle2.MoveAbsolute := FALSE;
|
||||
IF (gToolInterface.Shuttle1.Tool_State = enTOOL_PART_FINISHED) THEN
|
||||
gToolInterface.Shuttle1.ToTool.bVaccumOn := FALSE;
|
||||
END_IF
|
||||
IF (gToolInterface.Shuttle2.Tool_State = enTOOL_PART_FINISHED) THEN
|
||||
gToolInterface.Shuttle2.ToTool.bVaccumOn := FALSE;
|
||||
END_IF
|
||||
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
enStepAuto := enAutoStep_WAIT_DOOR_OPEN;
|
||||
enStepAuto := enAutoStep_CLOSE_GATES;
|
||||
END_IF
|
||||
|
||||
|
||||
|
||||
//T<EFBFBD>r <EFBFBD>ffnen
|
||||
//---------------------------
|
||||
enAutoStep_WAIT_DOOR_OPEN:
|
||||
Valves.bCloseGate := FALSE;
|
||||
// bTransitionCondition := gbInFrontGateOpen;
|
||||
enAutoStep_CLOSE_GATES:
|
||||
IF MoveConditions.bCloseGateShuttle1 THEN
|
||||
Valves.bCloseGateShuttle1 := TRUE;
|
||||
Valves.bOpenGateShuttle1 := FALSE;
|
||||
END_IF
|
||||
IF MoveConditions.bCloseGateShuttle2 THEN
|
||||
Valves.bCloseGateShuttle2 := TRUE;
|
||||
Valves.bOpenGateShuttle2 := FALSE;
|
||||
END_IF
|
||||
|
||||
bTransitionCondition := States.CylinderPosState.bGateShuttle1Closed AND States.CylinderPosState.bGateShuttle2Closed;
|
||||
|
||||
IF bTransitionCondition THEN
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
enStepAuto := enAutoStep_FINISHED;
|
||||
END_IF
|
||||
|
||||
//Beendet
|
||||
//---------------------------
|
||||
enAutoStep_FINISHED:
|
||||
bTransitionCondition := TRUE;
|
||||
|
||||
IF bTransitionCondition THEN
|
||||
enStepAuto := enAutoStep_INIT;
|
||||
IF States.bLastCycle THEN
|
||||
States.bLastCycle := FALSE;
|
||||
States.bCycleActive := FALSE;
|
||||
enStepAuto := enAutoStep_INIT;
|
||||
ELSE
|
||||
enStepAuto := enAutoStep_WAIT_PART;
|
||||
END_IF
|
||||
TimesLatch.diSteptime := gdiSystemTime;
|
||||
gResult.diCycleTime := Times.diCycletime / 1000000; //[<EFBFBD>s > s]
|
||||
//Times.udCycletimeLast := Times.udCycletime;
|
||||
gResult.Cmd.bCreateReport := NOT Parameter.bTestRun; // Protokoll estellen
|
||||
//gResult.Cmd.bCreateReport := NOT Parameter.bTestRun; // Protokoll estellen
|
||||
END_IF
|
||||
END_CASE
|
||||
END_IF
|
||||
@@ -736,7 +835,22 @@ PROGRAM _CYCLIC
|
||||
END_IF
|
||||
|
||||
|
||||
//M108 -Befehl Schneidgas Ein
|
||||
//nicht blockierend
|
||||
//---------------------------
|
||||
IF MFlags.b108_CutGasOn THEN
|
||||
gIPGLaserInterface.Out.bCuttingGasOn := States.bSafetyLaserOk;
|
||||
MFlags.b108_CutGasOn := FALSE;
|
||||
END_IF
|
||||
|
||||
//M108 -Befehl Schneidgas Aus
|
||||
//nicht blockierend
|
||||
//---------------------------
|
||||
IF MFlags.b109_CutGasOff THEN
|
||||
gIPGLaserInterface.Out.bCuttingGasOn := FALSE;
|
||||
MFlags.b108_CutGasOn := FALSE;
|
||||
END_IF
|
||||
|
||||
//M110 -Befehl Hoehenregulierung deaktivieren
|
||||
//nicht blockierend
|
||||
//aktuelle H<EFBFBD>he wird gehalten
|
||||
@@ -779,7 +893,7 @@ PROGRAM _CYCLIC
|
||||
IF EDGEPOS (gRTLaserInterface.In.bHeadCalibrated) THEN
|
||||
gRTLaserInterface.Out.bCalibrateLaser := FALSE;
|
||||
gRTLaserInterface.Out.bMidPos := TRUE;
|
||||
ELSIF gRTLaserInterface.In.bHeadCalibrated AND gRTLaserInterface.In.bHeadIsMidPos THEN
|
||||
ELSIF EDGEPOS (gRTLaserInterface.In.bHeadIsMidPos) AND NOT gRTLaserInterface.Out.bCalibrateLaser THEN
|
||||
MFlags.b113_CalibrateLaser := FALSE;
|
||||
END_IF
|
||||
ELSE
|
||||
@@ -805,7 +919,6 @@ PROGRAM _CYCLIC
|
||||
END_IF
|
||||
|
||||
|
||||
//FixMe Laser bei Fehler Raytools ausschaulten
|
||||
|
||||
//Adaptive Laserleistung
|
||||
//Bahnfaktor berechnen
|
||||
@@ -827,11 +940,13 @@ PROGRAM _CYCLIC
|
||||
IF gIPGLaserInterface.Out.bPilotLaserOn THEN
|
||||
//Leistung f<EFBFBD>r Pilotlaser simulieren zum Tracen
|
||||
uiTestPowerLaserSimulation := uiTestMinPowerLaser + REAL_TO_UINT (UINT_TO_REAL (uiTestPowerLaser - uiTestMinPowerLaser) * rPowerFactor);
|
||||
END_IF
|
||||
|
||||
|
||||
|
||||
ELSIF MpFUB.MpCNC5Axis.MoveActive THEN
|
||||
END_IF
|
||||
|
||||
END_IF
|
||||
|
||||
|
||||
bOuLEDKeyStart := MpFUB.MpCNC5Axis.MoveActive AND gbSPLCInMaintDoorOk AND (lMachine.enMode = enMACH_MANUAL);
|
||||
IF MpFUB.MpCNC5Axis.MoveActive THEN
|
||||
//Achsgruppe in Bewegung
|
||||
gMP7121.LED_Run := enLED_ON;
|
||||
ELSE
|
||||
@@ -839,10 +954,13 @@ PROGRAM _CYCLIC
|
||||
gMP7121.LED_Run := enLED_OFF;
|
||||
END_IF
|
||||
|
||||
IF NOT MpFUB.MpCNC5Axis.MoveProgram THEN
|
||||
//Zur<EFBFBD>cksetzen
|
||||
IF NOT MpFUB.MpCNC5Axis.MoveProgram OR MpFUB.MpCNC5Axis.Error THEN
|
||||
MFlags.b103_LaserOn := FALSE;
|
||||
MFlags.b105_LaserOff := FALSE;
|
||||
|
||||
MFlags.b108_CutGasOn := FALSE;
|
||||
MFlags.b109_CutGasOff := FALSE;
|
||||
MFlags.b110_StayAtHeight := FALSE;
|
||||
MFlags.b111_StayAtMid := FALSE;
|
||||
MFlags.b112_FullPowerOn := FALSE;
|
||||
@@ -861,11 +979,15 @@ PROGRAM _CYCLIC
|
||||
IF States.TestMode.bNoHeightCtrl THEN
|
||||
States.TestMode.bNoLaser := TRUE;
|
||||
END_IF
|
||||
gIPGLaserInterface.Out.bEnalbeLaser := NOT States.TestMode.bNoLaser AND MpFUB.MpCNC5Axis.MoveProgram; // AND States.bSafetyLaserOk FixME
|
||||
|
||||
gIPGLaserInterface.Out.bEnalbeLaser := NOT States.TestMode.bNoLaser AND MpFUB.MpCNC5Axis.MoveProgram AND NOT MpAlarmXCheckReaction (gMpAlarmXCore, 'ReactionLaserOff'); // AND States.bSafetyLaserOk FixME
|
||||
|
||||
|
||||
//Linieninterface
|
||||
DoLineInterface;
|
||||
|
||||
//Ventile ansteuern (Sicherheit mit einschleifen)
|
||||
//Ventile ansteuern
|
||||
DoValves;
|
||||
|
||||
|
||||
//Fehlermeldungen
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
PROGRAM _EXIT
|
||||
//Mapp Bausteine deaktivieren !!!
|
||||
//FixMe nicht f<EFBFBD>r MappMotion
|
||||
//nicht f<EFBFBD>r MappMotion
|
||||
// MpFUB.PSM.Enable := FALSE;
|
||||
// MpFUB.PSM ();
|
||||
//
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.7.5.60 SP?>
|
||||
<?AutomationStudio FileVersion="4.9"?>
|
||||
<Program SubType="IEC" xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Aktionen Maschinectrltask">Action.st</File>
|
||||
@@ -11,8 +11,6 @@
|
||||
<File Description="Exit code">Exit.st</File>
|
||||
<File Description="Local data types" Private="true">Types.typ</File>
|
||||
<File Description="Local variables" Private="true">Variables.var</File>
|
||||
<File Description="Funktionen" Private="true">MachCtrl.fun</File>
|
||||
<File Description="Zylinderüberwachung">FUB_CylinderCheck.st</File>
|
||||
<File Description="Toleranzprüfung">FC_InTol.st</File>
|
||||
<File Description="IOs" Private="true">IOs.var</File>
|
||||
</Files>
|
||||
</Program>
|
||||
15
Logical/MachCtrl/MachCtrl/IOs.var
Normal file
15
Logical/MachCtrl/MachCtrl/IOs.var
Normal file
@@ -0,0 +1,15 @@
|
||||
(*//Inputs*)
|
||||
VAR
|
||||
bInGateIsOpenShuttle1 : BOOL; (*Tor Shuttle 1 ist offen*)
|
||||
bInGateIsOpenShuttle2 : BOOL; (*Tor Shuttle 1 ist offen*)
|
||||
bInKeyStart : BOOL; (*Starttaster / Vakuum einschalten*)
|
||||
bInKeyStop : BOOL; (*Taster Start*)
|
||||
END_VAR
|
||||
(*//Outputs*)
|
||||
VAR
|
||||
bOuOpenGateShuttle1 : BOOL; (*Ventil Tor Shuttle 1 <20>ffnen*)
|
||||
bOuCloseGateShuttle1 : BOOL; (*Ventil Tor shuttle 1 Schlie<69>en*)
|
||||
bOuOpenGateShuttle2 : BOOL; (*Ventil Tor Shuttle 2 <20>ffnen*)
|
||||
bOuCloseGateShuttle2 : BOOL; (*Ventil Tor Shuttle 2 Schlie<69>en*)
|
||||
bOuLEDKeyStart : BOOL;
|
||||
END_VAR
|
||||
@@ -38,6 +38,20 @@ PROGRAM _INIT
|
||||
States.enSelectedAxis := 0;
|
||||
States.enSelectedAxis := 1;
|
||||
//Zylinder setzen
|
||||
Valves.bCloseGate := FALSE;
|
||||
|
||||
IF gbSInGate1Closed THEN
|
||||
Valves.bCloseGateShuttle1 := TRUE;
|
||||
Valves.bOpenGateShuttle1 := FALSE;
|
||||
ELSE
|
||||
Valves.bCloseGateShuttle1 := FALSE;
|
||||
Valves.bOpenGateShuttle1 := TRUE;
|
||||
END_IF
|
||||
IF gbSInGate2Closed THEN
|
||||
Valves.bCloseGateShuttle2 := TRUE;
|
||||
Valves.bOpenGateShuttle2 := FALSE;
|
||||
ELSE
|
||||
Valves.bCloseGateShuttle2 := FALSE;
|
||||
Valves.bOpenGateShuttle2 := TRUE;
|
||||
END_IF
|
||||
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
|
||||
FUNCTION_BLOCK FUB_CylinderCheck (*Zylinder<EFBFBD>berwachung*)
|
||||
VAR_INPUT
|
||||
bInOutputCylinderFw : BOOL; (*Ausgang Zylinder Ausfahren*)
|
||||
bInOutputCylinderBw : BOOL; (*Ausgang Zylinder Einfahren*)
|
||||
bInSensorCylinderFw : BOOL; (*Sensor Zylinder Ausfahren*)
|
||||
bInSensorCylinderBw : BOOL; (*Sensor Zylinder Einfahren*)
|
||||
tInCylinderFw : TIME := T#2s; (*<EFBFBD>berwachungszeit Zylinder Ausfahren*)
|
||||
tInCylinderBw : TIME := T#2s; (*<EFBFBD>berwachungszeit Zylinder Ausfahren*)
|
||||
END_VAR
|
||||
VAR_OUTPUT
|
||||
bOuErrorCylinderFw : BOOL; (*Fehler Zylinder Ausfahren*)
|
||||
bOuErrorCylinderBw : BOOL; (*Fehler Zylinder Einfahren*)
|
||||
bOuErrorBothSensorsHigh : BOOL; (*Fehler beide Zynlinderschalter bet<EFBFBD>tigt*)
|
||||
END_VAR
|
||||
VAR
|
||||
TON_CylinderFw : TON;
|
||||
TON_CylinderBw : TON;
|
||||
END_VAR
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
FUNCTION FC_InTolerance : BOOL (*Toleranzpr<EFBFBD>fung (auch f<EFBFBD>r Positionen)*)
|
||||
VAR_INPUT
|
||||
lrInValue : LREAL; (*Messwert*)
|
||||
lrInSetpoint : LREAL; (*Sollwert*)
|
||||
lrInTolLow : LREAL; (*Untere Toleranz*)
|
||||
lrInTolUp : LREAL; (*Obere Toleranz*)
|
||||
END_VAR
|
||||
END_FUNCTION
|
||||
@@ -5,8 +5,6 @@ TYPE
|
||||
rSpeedJog : REAL; (*Tippgeschwindigkeit*)
|
||||
rIncrementsJog : REAL; (*Incremente Joggen 0.01 -10*)
|
||||
rAccDecell : REAL; (*+*)
|
||||
rVelocityAxisLinear : REAL := 100; (*Verfahrgeschwindigkeit Einzelachsen Linear*)
|
||||
rVelocityAxisAngle : REAL := 45; (*Verfahrgeschwindigkeit Einzelachsen Winkel*)
|
||||
rVelocityShuttle : REAL := 220; (*Verfahrgeschwindigkeit Shuttle mm/s*)
|
||||
LimitAxis_X : typ_AxLimits;
|
||||
LimitAxis_Y : typ_AxLimits;
|
||||
@@ -22,13 +20,17 @@ TYPE
|
||||
lrUpperLimit : LREAL; (*Oberer Positionsgrenzwerte*)
|
||||
END_STRUCT;
|
||||
typ_Valves : STRUCT (*Ventile*)
|
||||
bCloseGate : BOOL; (*Einlegetor schlie<69>en*)
|
||||
bCloseGateShuttle1 : BOOL; (*Tor Shuttle 1 schlie<69>en*)
|
||||
bOpenGateShuttle1 : BOOL; (*Tor Shuttle 1 <20>ffnen*)
|
||||
bCloseGateShuttle2 : BOOL; (*Tor Shuttle 2 schlie<69>en*)
|
||||
bOpenGateShuttle2 : BOOL; (*Tor Shuttle 1 <20>ffnen*)
|
||||
END_STRUCT;
|
||||
typ_States_PosStates : STRUCT (*Positionen*)
|
||||
lrDiffX_Virtual : LREAL; (*Positonsunterschied X und Virtuelle Achse*)
|
||||
lrDiffX_X1 : LREAL; (*Positionsunterschied X und X1*)
|
||||
lrDiffX_Virtual_Max : LREAL; (*Positonsunterschied X und Virtuelle Achse*)
|
||||
lrDiffX_X1_Max : LREAL; (*Positionsunterschied X und X1*)
|
||||
lrDistanceShuttles : LREAL; (*Abstand Shuttles*)
|
||||
bDiffX_Virtual_Ok : BOOL; (*PositionsUnterschied X - Virtuelle Achse Ok*)
|
||||
bDiffX_X1_Ok : BOOL; (*PositionsUnterschied X - X1 Achse Ok*)
|
||||
bHomeX : BOOL; (*X - Achse in Grundstellung*)
|
||||
@@ -37,12 +39,16 @@ TYPE
|
||||
bHomeC : BOOL; (*C - Achse in Grundstellung*)
|
||||
bHomeA : BOOL; (*A - Achse in Grundstellung*)
|
||||
bLaserAboveShuttle : BOOL; (*Laser <20>ber Shuttle*)
|
||||
bWorkposShuttle : BOOL; (*Shuttle - in Bearbeitungspos*)
|
||||
bHomeShuttle : BOOL; (*Shuttle in Einlegepos*)
|
||||
bWorkposShuttle1 : BOOL; (*Shuttle 1 in Bearbeitungspos*)
|
||||
bHomeShuttle1 : BOOL; (*Shuttle 1 in Einlegepos*)
|
||||
bWorkposShuttle2 : BOOL; (*Shuttle 2 in Bearbeitungspos*)
|
||||
bHomeShuttle2 : BOOL; (*Shuttle 2 in Einlegepos*)
|
||||
END_STRUCT;
|
||||
typ_States_CylinderPos : STRUCT (*Zylinderpositionen*)
|
||||
bFrontGateOpen : BOOL;
|
||||
bFrontGateClosed : BOOL;
|
||||
bGateShuttle1Open : BOOL; (*Tor Shuttle 1 Offen*)
|
||||
bGateShuttle1Closed : BOOL; (*Tor Shuttle 1 Geschlossen*)
|
||||
bGateShuttle2Open : BOOL; (*Tor Shuttle 2 Offen*)
|
||||
bGateShuttle2Closed : BOOL; (*Tor Shuttle 2 Geschlossen*)
|
||||
END_STRUCT;
|
||||
typ_States_RealAxisPos : STRUCT (*Istpositionen Achsen*)
|
||||
lrVX : LREAL;
|
||||
@@ -69,12 +75,16 @@ TYPE
|
||||
bAxis_A : BOOL;
|
||||
END_STRUCT;
|
||||
typ_States : STRUCT (*Maschinenzust<73>nde*)
|
||||
bSafetyCNCAxisOk : {REDUND_UNREPLICABLE} BOOL; (*Sicherheit F<>r CNC-Achsen OK*)
|
||||
bSafetyCNCAxisOkDelayed : {REDUND_UNREPLICABLE} BOOL; (*Sicherheit F<>r CNC-Achsen OK (Verz<72>gert 280ms)*)
|
||||
bSafetyShuttle1Ok : BOOL; (*Sicherheit Einlegebereich Ok*)
|
||||
bSafetyShuttle1OkDelayed : BOOL; (*Sicherheit Einlegebereich Ok (Verz<72>gert 280ms)*)
|
||||
bSafetyShuttle2Ok : BOOL; (*Sicherheit Einlegebereich Ok*)
|
||||
bSafetyShuttle2OkDelayed : BOOL; (*Sicherheit Einlegebereich Ok (Verz<72>gert 280ms)*)
|
||||
bCNCHome : BOOL; (*CNC ist in Home*)
|
||||
bCycleActive : BOOL; (*Letzer Zyklus*)
|
||||
bLastCycle : BOOL; (*Zyklus aktiv*)
|
||||
bStoppedCycle : BOOL; (*Zyklus beendet*)
|
||||
bSafetyCNCAxisSS1Ok : {REDUND_UNREPLICABLE} BOOL; (*Sicherheit F<>r CNC-Achsen SS1 OK*)
|
||||
bSafetyCNCAxisSS1OkDelayed : {REDUND_UNREPLICABLE} BOOL; (*Sicherheit F<EFBFBD>r CNC-Achsen SS1 OK (Verz<72>gert 280ms)*)
|
||||
bSafetyShuttlesSS1Ok : BOOL; (*Sicherheit F<>r Shuttles SS1 Ok*)
|
||||
bSafetyShuttleSS1OkDelayed : BOOL; (*Sicherheit F<>r Shuttles SS1 Ok (Verz<72>gert 280ms)*)
|
||||
bSafetyCNCAxisSLSOk : {REDUND_UNREPLICABLE} BOOL; (*Sicherheit F<>r CNC-Achsen SLS OK*)
|
||||
bSafetyShuttlesSLSOk : BOOL; (*Sicherheit F<>r Shuttles SS1 Ok*)
|
||||
bSafetyLaserOk : BOOL; (*Sicherheit Schutzt<7A>ren Ok (f<>r Laser)*)
|
||||
bAxPowerOffDoorReqManual : BOOL; (*Achsversorgung wg. T<>ranforderung in Hand wegschalten*)
|
||||
bAxPowerOffDoorReqAuto : BOOL; (*Achsversorgung C wg. T<>ranforderung in Automatik wegschalten*)
|
||||
@@ -173,7 +183,8 @@ TYPE
|
||||
bAxisShuttleMoveNeg : BOOL; (*Freigabe Shuttle Achse bewegen*)
|
||||
bAxisShuttle2MovePos : BOOL; (*Freigabe Shuttle Achse bewegen*)
|
||||
bAxisShuttle2MoveNeg : BOOL; (*Freigabe Shuttle Achse bewegen*)
|
||||
bCloseFrontGate : BOOL; (*Freigaba Tor schlie<69>en*)
|
||||
bCloseGateShuttle1 : BOOL; (*Tor Shuttle 1 schlie<69>en*)
|
||||
bCloseGateShuttle2 : BOOL; (*Tor Shuttle 2 schlie<69>en*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
|
||||
@@ -186,9 +197,8 @@ TYPE
|
||||
TON_SimulationOn : TON;
|
||||
TON_M105_LaserOff : TON;
|
||||
TOF_Startkey : TOF;
|
||||
TOF_SafetyCNCOk : TOF; (*Verz<72>gerung Sicherheit CNC Achsen (SS1)*)
|
||||
TOF_SafetyShuttle1Ok : TOF; (*Verz<72>gerung Sicherheit Shuttle 1 Achsen (SS1)*)
|
||||
TOF_SafetyShuttle2Ok : TOF; (*Verz<72>gerung Sicherheit Shuttle 2 Achsen (SS1)*)
|
||||
TOF_SafetyCNCSS1Ok : TOF; (*Verz<72>gerung Sicherheit CNC Achsen (SS1)*)
|
||||
TOF_SafetyShuttleSS1Ok : TOF; (*Verz<72>gerung Sicherheit Shuttle 1 Achsen (SS1)*)
|
||||
Cyl_Frontdoor : FUB_CylinderCheck;
|
||||
END_STRUCT;
|
||||
typ_MpFUB : STRUCT (*MApp Funktionsbausteine*)
|
||||
@@ -289,8 +299,10 @@ TYPE
|
||||
AxisJogFw : gtyp_VCButton; (*Achse Vorw<72>rts Tippen*)
|
||||
AxisJogBw : gtyp_VCButton; (*Achse R<>ckw<6B>rts Tippen*)
|
||||
AxisMovePos : gtyp_VCButton; (*Achse Position Anfahren*)
|
||||
AxisMovePosSh1 : gtyp_VCButton; (*Achse Position Anfahren*)
|
||||
AxisMovePosSh2 : gtyp_VCButton; (*Achse Position Anfahren*)
|
||||
AxisMovePosWorkSh1 : gtyp_VCButton; (*Shuttle 1 Arbeitsposition Position Anfahren*)
|
||||
AxisMovePosWorkSh2 : gtyp_VCButton; (*Shuttle 2 Arbeitsposition Anfahren*)
|
||||
AxisMovePosHomeSh1 : gtyp_VCButton; (*Shuttle 1 Ruheposition Anfahren*)
|
||||
AxisMovePosHomeSh2 : gtyp_VCButton; (*Shuttle 2 Ruheposition Anfahren*)
|
||||
AxisHomeDirect : gtyp_VCButton; (*Einzelachse Direkt Referenzieren*)
|
||||
AxisHome : gtyp_VCButton; (*Einzelachse Referenzieren*)
|
||||
AxisCalibrate : gtyp_VCButton; (*Einzelachse Kalibrieren*)
|
||||
@@ -305,15 +317,23 @@ TYPE
|
||||
AxisShuttle2HomeDirect : gtyp_VCButton; (*Shuttle - Achse Direkt Referenzieren*)
|
||||
AxisShuttle2Home : gtyp_VCButton; (*Shuttle - Achse Referenzieren*)
|
||||
AxisShuttle2Calibrate : gtyp_VCButton; (*Shuttle - Achse Kalibrieren*)
|
||||
OpenGate : gtyp_VCButton; (*Einlegetor <20>ffnen*)
|
||||
CloseGate : gtyp_VCButton; (*Einlegetor schlie<69>en*)
|
||||
OpenGateShuttle1 : gtyp_VCButton; (*Tor Shuttle 1 <20>ffnen*)
|
||||
CloseGateShuttle1 : gtyp_VCButton; (*Tor Shuttle 1 schlie<69>en*)
|
||||
OpenGateShuttle2 : gtyp_VCButton; (*Tor Shuttle 2 <20>ffnen*)
|
||||
CloseGateShuttle2 : gtyp_VCButton; (*Tor Shuttle 2 schlie<69>en*)
|
||||
VaccumOnShuttle1 : gtyp_VCButton; (*Vakuum Einschalten Shuttle 1*)
|
||||
VaccumOffShuttle1 : gtyp_VCButton; (*Vakuum Ausschalten Shuttle 1*)
|
||||
VaccumOnShuttle2 : gtyp_VCButton; (*Vakuum Einschalten Shuttle 2*)
|
||||
VaccumOffShuttle2 : gtyp_VCButton; (*Vakuum Ausschalten Shuttle 2*)
|
||||
ManCNCStartHome : gtyp_VCButton; (*Manuell CNC Starte Grundstellung*)
|
||||
ManCNCStartCalibration : gtyp_VCButton; (*Manuell CNC Starte Kalibrieren*)
|
||||
AutoStartHome : gtyp_VCButton; (*Starte Grundstellung*)
|
||||
AutoStartCycle : gtyp_VCButton; (*Starte Zyklus*)
|
||||
AutoStopCycle : gtyp_VCButton; (*Stopp Zyklus*)
|
||||
AutoStopCNCCycle : gtyp_VCButton; (*Stopp Zyklus*)
|
||||
AutoRequestHome : gtyp_VCButton; (*Grundstellung Anfordern (Abbruch Automatik)*)
|
||||
AutoStartToolChange : gtyp_VCButton; (*Automatik Werkzeugwechselpos*)
|
||||
DropDownBoxFileMan : gtyp_VCDropdownbox; (*DropdownListe CNC File Hand*)
|
||||
END_STRUCT;
|
||||
typ_VCStatus : STRUCT (*Status Datenpunkte f<>r Eingabefelder etc*)
|
||||
usDtropDownCncPrg : USINT; (*CncProgramm ausw<73>hlen*)
|
||||
@@ -321,15 +341,9 @@ TYPE
|
||||
usStatJogDestPosDeg : USINT;
|
||||
rOverride : REAL := 100; (*Vorschub f. CNC (0-100%)*)
|
||||
lrJogDestPos : LREAL; (*Zielposition f Tippbetrieb [mm]*)
|
||||
lrJogDestPosSh1 : LREAL; (*Zielposition f Tippbetrieb Shuttle 1[mm]*)
|
||||
lrJogDestPosSh2 : LREAL; (*Zielposition f Tippbetrieb Shuttle 2[mm]*)
|
||||
lrJogDestPosDeg : LREAL; (*Zielposition f Tippbetrieb [<5B>]*)
|
||||
lrJogDestPosLowerLim : LREAL; (*Begrenzung Zielpos f. Tippbetrieb*)
|
||||
lrJogDestPosUpperLim : LREAL; (*Begrenzung Zielpos f. Joggen*)
|
||||
lrJogDestPosLowerLimSh1 : LREAL; (*Begrenzung Zielpos f. Tippbetrieb*)
|
||||
lrJogDestPosUpperLimSh1 : LREAL; (*Begrenzung Zielpos f. Joggen*)
|
||||
lrJogDestPosLowerLimSh2 : LREAL; (*Begrenzung Zielpos f. Tippbetrieb*)
|
||||
lrJogDestPosUpperLimSh2 : LREAL; (*Begrenzung Zielpos f. Joggen*)
|
||||
lrJogDestPosLowerLimDeg : LREAL; (*Begrenzung Zielpos f. Tippbetrieb*)
|
||||
lrJogDestPosUpperLimDeg : LREAL; (*Begrenzung Zielpos f. Joggen*)
|
||||
END_STRUCT;
|
||||
@@ -362,10 +376,13 @@ TYPE
|
||||
bShuttle2InPos : BOOL; (*Shuttle 2 in Pos (und Wzg Ok)*)
|
||||
bLaserMidPos : BOOL; (*Laser in Mittelpos*)
|
||||
lrFeedrate : LREAL; (*aktueller Vorschub [mm/min]*)
|
||||
usCurrentToolID : USINT; (*Akutelles Werkzeug*)
|
||||
END_STRUCT;
|
||||
typ_MFlags : STRUCT (*CNC MFunktionen*)
|
||||
b103_LaserOn : BOOL; (*Laser Ein (Blockierend)*)
|
||||
b105_LaserOff : BOOL; (*Laser Aus (Blockierend)*)
|
||||
b108_CutGasOn : BOOL; (*Schneidgas Ein nicht Blockierend*)
|
||||
b109_CutGasOff : BOOL; (*Schneidgas Aus nicht Blockierend*)
|
||||
b110_StayAtHeight : BOOL; (*Auf aktueller Hoehe halten (nur wenn laser an) nicht Blockierend*)
|
||||
b111_StayAtMid : BOOL; (*Auf Mittelpos halten (nur wenn laser an) nicht Blockierend*)
|
||||
b112_FullPowerOn : BOOL; (*Laserleisutung auf Sollwert nicht Blockierend*)
|
||||
@@ -377,29 +394,25 @@ TYPE
|
||||
( (*Schrittkette*)
|
||||
enAutoStep_INIT := 0, (*Grundstellung pr<70>fen*)
|
||||
enAutoStep_HOME_WAIT_START, (*GS: Warten Auf Startbefehl f<>r GS*)
|
||||
enAutoStep_HOME_WAIT_DOORCLOSED, (*GS: Warten Tor zu*)
|
||||
enAutoStep_HOME_WAIT_HOMING, (*GS: Warten Achsen Ref*)
|
||||
enAutoStep_HOME_WAIT_ZHOME, (*GS: Warten bis Z in GS*)
|
||||
enAutoStep_HOME_WAIT_YHOME, (*GS: Warten bis Y in GS*)
|
||||
enAutoStep_HOME_WAIT_XHOME, (*GS: Warten bis Z in GS*)
|
||||
enAutoStep_HOME_WAIT_AHOME, (*GS: Warten bis A in GS*)
|
||||
enAutoStep_HOME_WAIT_BHOME, (*GS: Warten bis B in GS*)
|
||||
enAutoStep_HOME_WAIT_SHUTTLEHOME, (*GS: Warten bis Shuttle in GS*)
|
||||
enAutoStep_HOME_WAIT_DOOROPEN, (*GS: Warten Tor AUF*)
|
||||
enAutoStep_HOME_CNC_HOME, (*GS: CNC in Grundstellung fahren (muss immer gehen)*)
|
||||
enAutoStep_HOME_OPEN_GATES, (*GS: Tore bei Bedarf <20>ffnen*)
|
||||
enAutoStep_HOME_WAIT_SHUTTLEHOME, (*GS: Warten bis Shuttles in GS*)
|
||||
enAutoStep_HOME_CLOSE_GATES, (*GS: Warten bis Tore geschlossen*)
|
||||
enAutoStep_WAIT_RESTART := 20, (*Auf Neustart Warten*)
|
||||
enAutoStep_WAIT_START := 21, (*Auf Startbedingungen Warten*)
|
||||
enAutoStep_WAIT_DOOR_CLOSED := 50, (*Warten bis T<>r geschlossen*)
|
||||
enAutoStep_WAIT_HOMING, (*Warten Achsen Ref*)
|
||||
enAutoStep_SHUTTLE_IN, (*Warten bis Shuttle eingeshuttelt*)
|
||||
enAutoStep_CNC_ACTIVE := 70, (*Warten bis CNC Aktiv - CNC Starten*)
|
||||
enAutoStep_WAIT_PART := 50, (*Auf Bauteil Warten*)
|
||||
enAutoStep_OPEN_GATE1, (*Tor Shuttle 1 <20>ffnen*)
|
||||
enAutoStep_SHUTTLE1_IN, (*Warten bis Shuttle 1 eingeshuttelt*)
|
||||
enAutoStep_CLOSE_GATE1, (*Tor Shuttle 1 schlie<69>en*)
|
||||
enAutoStep_OPEN_GATE2, (*Tor Shuttle 2 <20>ffnen*)
|
||||
enAutoStep_SHUTTLE2_IN, (*Warten bis Shuttle 2 eingeshuttelt*)
|
||||
enAutoStep_CLOSE_GATE2, (*Tor Shuttle 1 schlie<69>en*)
|
||||
enAutoStep_CNC_ACTIVE, (*Warten bis CNC Aktiv - CNC Starten*)
|
||||
enAutoStep_CNC_FINISHED, (*Warten bis CNC Fertig*)
|
||||
enAutoStep_ZHOME, (*Warten bis Z-Achse R<>ckgestellt*)
|
||||
enAutoStep_YHOME, (*Warten bis Y-Achse R<>ckgestellt*)
|
||||
enAutoStep_XHOME, (*Warten bis X-Achse R<>ckgestellt*)
|
||||
enAutoStep_AHOME, (*Warten bis A-Achse R<>ckgestellt*)
|
||||
enAutoStep_BHOME, (*Warten bis B-Achse R<>ckgestellt*)
|
||||
enAutoStep_CNC_HOME, (*Warten bis CNC nach Fehler f<>r Home Aktiv - CNC Starten*)
|
||||
enAutoStep_OPEN_GATES, (*Tor f<>r Shuttle <20>ffnen*)
|
||||
enAutoStep_SHUTTLE_OUT, (*Warten bis Shuttle ausgeshuttelt*)
|
||||
enAutoStep_WAIT_DOOR_OPEN, (*Warten bis TOR AUF*)
|
||||
enAutoStep_CLOSE_GATES, (*Warten bis TOR geschlossen*)
|
||||
enAutoStep_FINISHED
|
||||
);
|
||||
END_TYPE
|
||||
|
||||
@@ -12,6 +12,7 @@ VAR
|
||||
bInit : BOOL; (*Init*)
|
||||
bTest : BOOL;
|
||||
bTemp : BOOL;
|
||||
bGodMode : BOOL;
|
||||
bBlinkEdge_01 : BOOL;
|
||||
bTransitionCondition : BOOL; (*Weiterschaltbedingung*)
|
||||
bTransitionConditionSampleshot : BOOL; (*Weiterschaltbedingung*)
|
||||
|
||||
14
Logical/MachCtrl/MachParam/Action.st
Normal file
14
Logical/MachCtrl/MachParam/Action.st
Normal file
@@ -0,0 +1,14 @@
|
||||
|
||||
ACTION DoDynVars:
|
||||
MpFUB.PrcPar_FrameTable.Component := ADR (gCncXYZCA);
|
||||
MpFUB.PrcPar_FrameTable.DataType := mcCFG_FRMTBL;
|
||||
MpFUB.PrcPar_FrameTable.DataAddress := ADR (ProcData.Frametable);
|
||||
MpFUB.PrcPar_FrameTable.AdvancedParameters.Name := 'FrameTable_SC3';
|
||||
|
||||
MpFUB.ProcConf_FrameTable.Name := 'FrameTable_SC3';
|
||||
MpFUB.ProcConf_FrameTable.DataType := mcCFG_FRMTBL;
|
||||
MpFUB.ProcConf_FrameTable.DataAddress := ADR (ProcData.Frametable);
|
||||
|
||||
ProcData.Frametable.Row.DataAddress := ADR (ProcData.FrametableEntries);
|
||||
ProcData.Frametable.Row.NumberOfArrayElements := 4;
|
||||
END_ACTION
|
||||
11
Logical/MachCtrl/MachParam/Cyclic.st
Normal file
11
Logical/MachCtrl/MachParam/Cyclic.st
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
PROGRAM _CYCLIC
|
||||
DoDynVars;
|
||||
|
||||
|
||||
MpFUB.PrcPar_FrameTable.Mode := mcPPM_READ;
|
||||
MpFUB.ProcConf_FrameTable.Mode := mcPCM_LOAD;
|
||||
|
||||
MpFUB.PrcPar_FrameTable ();
|
||||
MpFUB.ProcConf_FrameTable ();
|
||||
END_PROGRAM
|
||||
@@ -1,11 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.3.5.113 SP?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<?AutomationStudio FileVersion="4.9"?>
|
||||
<Program SubType="IEC" xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Cyclic code">Cyclic.st</File>
|
||||
<File Description="Init code">Init.st</File>
|
||||
<File Description="Exit code">Exit.st</File>
|
||||
<File Description="Local data types" Private="true">Types.typ</File>
|
||||
<File Description="Local variables" Private="true">Variables.var</File>
|
||||
<File>Action.st</File>
|
||||
</Files>
|
||||
</Program>
|
||||
4
Logical/MachCtrl/MachParam/Init.st
Normal file
4
Logical/MachCtrl/MachParam/Init.st
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
|
||||
PROGRAM _INIT
|
||||
END_PROGRAM
|
||||
11
Logical/MachCtrl/MachParam/Types.typ
Normal file
11
Logical/MachCtrl/MachParam/Types.typ
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
TYPE
|
||||
typ_MpFUB : STRUCT
|
||||
PrcPar_FrameTable : MC_BR_ProcessParam;
|
||||
ProcConf_FrameTable : MC_BR_ProcessConfig;
|
||||
END_STRUCT;
|
||||
typ_ProcData : STRUCT
|
||||
Frametable : McCfgFrmTblType;
|
||||
FrametableEntries : ARRAY[1..4]OF McFTRowType;
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
7
Logical/MachCtrl/MachParam/Variables.var
Normal file
7
Logical/MachCtrl/MachParam/Variables.var
Normal file
@@ -0,0 +1,7 @@
|
||||
VAR
|
||||
ProcData : typ_ProcData;
|
||||
END_VAR
|
||||
(*//Funktionsbl<62>cke*)
|
||||
VAR
|
||||
MpFUB : typ_MpFUB;
|
||||
END_VAR
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.3.5.113 SP?>
|
||||
<?AutomationStudio FileVersion="4.9"?>
|
||||
<Package xmlns="http://br-automation.co.at/AS/Package">
|
||||
<Objects>
|
||||
<Object Type="File" Description="Globale Maschinen - Variablen">GlobaMachine.var</Object>
|
||||
@@ -12,6 +12,8 @@
|
||||
<Object Type="File" Description="Package Typen - Parameter" Private="true">PackageParam.typ</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Controller 1">MachCtrl</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Shift/Overallcounter">PartCount</Object>
|
||||
<Object Type="Program" Language="IEC">Recipies</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Werkzeuge">Tools</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Rezeptverwaltung">Recipies</Object>
|
||||
<Object Type="Program" Language="IEC" Description="Frametable auslesen">MachParam</Object>
|
||||
</Objects>
|
||||
</Package>
|
||||
@@ -1,11 +1,12 @@
|
||||
|
||||
TYPE
|
||||
ptyp_Positions : STRUCT (*Positionen*)
|
||||
lrHomePosShuttle : LREAL := 234; (*HomePos Shuttle (Einlegepos)*)
|
||||
lrWorkPosShuttle : LREAL := 5; (*Bearbeitungspos Shuttle*)
|
||||
lrHomePosShuttle1 : LREAL := 5; (*HomePos Shuttle (Einlegepos)*)
|
||||
lrWorkPosShuttle1 : LREAL := 3750; (*Bearbeitungspos Shuttle*)
|
||||
lrHomePosShuttle2 : LREAL := 7495; (*HomePos Shuttle (Einlegepos)*)
|
||||
lrWorkPosShuttle2 : LREAL := 3750; (*Bearbeitungspos Shuttle*)
|
||||
lrLaserAboveShuttle : LREAL; (*Shuttle Frei unterhalb der position*)
|
||||
HomePos : {REDUND_UNREPLICABLE} ptyp_PosTupleCNC; (*Grundstellung Laser CNC Positionen in ACS*)
|
||||
CalibPos : {REDUND_UNREPLICABLE} ptyp_PosTupleCNC; (*Kalibrierposition Laser CNC Positionen in ACS*)
|
||||
END_STRUCT;
|
||||
ptyp_PosTupleCNC : STRUCT (*Positionstupel f. CNC*)
|
||||
lrX : LREAL;
|
||||
|
||||
10
Logical/MachCtrl/Recipies/Action.st
Normal file
10
Logical/MachCtrl/Recipies/Action.st
Normal file
@@ -0,0 +1,10 @@
|
||||
|
||||
ACTION DoDefaultRecipies:
|
||||
gRecipies[1].strCaption := 'SE10-Versuchwerkzeug';
|
||||
gRecipies[1].strCNCPrg := 'SE10_MAIN.MPF';
|
||||
gRecipies[1].usToolID := 0; //
|
||||
gRecipies[1].uiLaserPowerMin := 1000;
|
||||
gRecipies[1].uiLaserPower := 3000;
|
||||
|
||||
|
||||
END_ACTION
|
||||
@@ -1,5 +1,45 @@
|
||||
|
||||
PROGRAM _CYCLIC
|
||||
|
||||
IF bDefaultValues THEN
|
||||
//4 Ung<EFBFBD>ltig
|
||||
//5: SE 11
|
||||
gRecipies[1].strCaption := 'SE11';
|
||||
gRecipies[1].strCNCPrg := 'SE11_MAIN-SW.MPF';
|
||||
gRecipies[1].lrFeedrate := 30000.0;
|
||||
gRecipies[1].usPartID := 5;
|
||||
gRecipies[1].usToolID := 5;
|
||||
gRecipies[1].uiLaserPowerMin := 1000;
|
||||
gRecipies[1].uiLaserPower := 3000;
|
||||
//6: SE 10
|
||||
gRecipies[2].strCaption := 'SE10';
|
||||
gRecipies[2].strCNCPrg := 'SE10_MAIN-SW.MPF';
|
||||
gRecipies[2].lrFeedrate := 30000.0;
|
||||
gRecipies[2].usPartID := 6;
|
||||
gRecipies[2].usToolID := 6;
|
||||
gRecipies[2].uiLaserPowerMin := 1000;
|
||||
gRecipies[2].uiLaserPower := 3000;
|
||||
//7: Ung<EFBFBD>ltig
|
||||
//8: SE 27
|
||||
gRecipies[3].strCaption := 'SE27';
|
||||
gRecipies[3].strCNCPrg := 'SE27_MAIN-SW.MPF';
|
||||
gRecipies[3].lrFeedrate := 30000.0;
|
||||
gRecipies[3].usPartID := 8;
|
||||
gRecipies[3].usToolID := 8;
|
||||
gRecipies[3].uiLaserPowerMin := 1000;
|
||||
gRecipies[3].uiLaserPower := 3000;
|
||||
//9: SE 29
|
||||
gRecipies[8].strCaption := 'SE27';
|
||||
gRecipies[8].strCNCPrg := 'SE27_MAIN-SW.MPF';
|
||||
gRecipies[8].lrFeedrate := 30000.0;
|
||||
gRecipies[8].usPartID := 8;
|
||||
gRecipies[8].usToolID := 8;
|
||||
gRecipies[8].uiLaserPowerMin := 1000;
|
||||
gRecipies[8].uiLaserPower := 3000;
|
||||
bDefaultValues := FALSE;
|
||||
END_IF
|
||||
|
||||
|
||||
IF us1stRecipe <> us1stRecipeLatch THEN
|
||||
lRecipies15 ACCESS (ADR (gRecipies[us1stRecipe]));
|
||||
us1stRecipeLatch := us1stRecipe;
|
||||
@@ -8,7 +48,7 @@ PROGRAM _CYCLIC
|
||||
END_FOR
|
||||
END_IF
|
||||
|
||||
//Navigate through Recipies
|
||||
//Durch Rezepte Iterieren
|
||||
IF EDGEPOS (VCControls.bNext15Items) THEN
|
||||
IF us1stRecipe < (MAX_RECIPE - 15) THEN
|
||||
us1stRecipe := us1stRecipe + 15;
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.3.3.196?>
|
||||
<Program xmlns="http://br-automation.co.at/AS/Program">
|
||||
<?AutomationStudio FileVersion="4.9"?>
|
||||
<Program SubType="IEC" xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Cyclic code">Cyclic.st</File>
|
||||
<File Description="Init code">Init.st</File>
|
||||
<File Description="Exit code">Exit.st</File>
|
||||
<File Description="Local data types" Private="true">Types.typ</File>
|
||||
<File Description="Local variables" Private="true">Variables.var</File>
|
||||
<File>Action.st</File>
|
||||
</Files>
|
||||
</Program>
|
||||
@@ -1,5 +1,6 @@
|
||||
VAR
|
||||
bSorted : BOOL;
|
||||
bDefaultValues : BOOL;
|
||||
bCreateList : BOOL;
|
||||
ui : UINT;
|
||||
uiMaxRecipe : UINT;
|
||||
|
||||
10
Logical/MachCtrl/Tools/IEC.prg
Normal file
10
Logical/MachCtrl/Tools/IEC.prg
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio FileVersion="4.9"?>
|
||||
<Program SubType="IEC" xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Init, cyclic, exit code">Main.st</File>
|
||||
<File Description="Local data types" Private="true">Types.typ</File>
|
||||
<File Description="Local variables" Private="true">Variables.var</File>
|
||||
<File Description="Local variables" Private="true">IOs.var</File>
|
||||
</Files>
|
||||
</Program>
|
||||
14
Logical/MachCtrl/Tools/IOs.var
Normal file
14
Logical/MachCtrl/Tools/IOs.var
Normal file
@@ -0,0 +1,14 @@
|
||||
(*//Eing<6E>nge*)
|
||||
VAR
|
||||
bInToolIDShuttle1 : ARRAY[0..5] OF BOOL; (*Werkzeugcodierungen*)
|
||||
bInToolIDShuttle2 : ARRAY[0..5] OF BOOL; (*Werkzeugcodierungen*)
|
||||
bInToolSensorsShuttle1 : ARRAY[1..8] OF BOOL; (*Werkzeugsensoren*)
|
||||
bInToolSensorsShuttle2 : ARRAY[1..8] OF BOOL; (*Werkzeugsensoren*)
|
||||
END_VAR
|
||||
(*//Ausg<73>nge*)
|
||||
VAR
|
||||
bOuVacOnShuttle1 : BOOL; (*Vakuum Einschalten Shuttle 1*)
|
||||
bOuBlowOutShuttle1 : BOOL; (*Abblasen Shuttle 1*)
|
||||
bOuVacOnShuttle2 : BOOL; (*Vakuum Einschalten Shuttle 2*)
|
||||
bOuBlowOutShuttle2 : BOOL; (*Abblasen Shuttle 1*)
|
||||
END_VAR
|
||||
66
Logical/MachCtrl/Tools/Main.st
Normal file
66
Logical/MachCtrl/Tools/Main.st
Normal file
@@ -0,0 +1,66 @@
|
||||
|
||||
PROGRAM _INIT
|
||||
(* Insert code here *)
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
PROGRAM _CYCLIC
|
||||
//Werkzeug ID Shuttle 1 Auslesen
|
||||
gToolInterface.Shuttle1.FromTool.usToolID.0 := bInToolIDShuttle1[0];
|
||||
gToolInterface.Shuttle1.FromTool.usToolID.1 := bInToolIDShuttle1[1];
|
||||
gToolInterface.Shuttle1.FromTool.usToolID.2 := bInToolIDShuttle1[2];
|
||||
gToolInterface.Shuttle1.FromTool.usToolID.3 := bInToolIDShuttle1[3];
|
||||
gToolInterface.Shuttle1.FromTool.usToolID.4 := bInToolIDShuttle1[4];
|
||||
gToolInterface.Shuttle1.FromTool.usToolID.5 := bInToolIDShuttle1[5];
|
||||
|
||||
//Werkzeug ID Shuttle 2 Auslesen
|
||||
gToolInterface.Shuttle2.FromTool.usToolID.0 := bInToolIDShuttle2[0];
|
||||
gToolInterface.Shuttle2.FromTool.usToolID.1 := bInToolIDShuttle2[1];
|
||||
gToolInterface.Shuttle2.FromTool.usToolID.2 := bInToolIDShuttle2[2];
|
||||
gToolInterface.Shuttle2.FromTool.usToolID.3 := bInToolIDShuttle2[3];
|
||||
gToolInterface.Shuttle2.FromTool.usToolID.4 := bInToolIDShuttle2[4];
|
||||
gToolInterface.Shuttle2.FromTool.usToolID.5 := bInToolIDShuttle2[5];
|
||||
|
||||
|
||||
//Vakuum / Ventile ansteuern
|
||||
bOuVacOnShuttle1 := gToolInterface.Shuttle1.ToTool.bVaccumOn AND gMachine1.bMachineON;
|
||||
IF EDGENEG (gToolInterface.Shuttle1.ToTool.bVaccumOn) THEN
|
||||
//Abblasen
|
||||
bOuBlowOutShuttle1 := gMachine1.bMachineON;
|
||||
END_IF
|
||||
FUBs.TON_BlowPulse_Shuttle1.IN := bOuBlowOutShuttle1;
|
||||
FUBs.TON_BlowPulse_Shuttle1.PT := Parameter.tDurationBlow;
|
||||
FUBs.TON_BlowPulse_Shuttle1 ();
|
||||
IF FUBs.TON_BlowPulse_Shuttle1.Q THEN
|
||||
bOuBlowOutShuttle1 := FALSE;
|
||||
END_IF
|
||||
|
||||
//Vakuum / Ventile ansteuern
|
||||
bOuVacOnShuttle2 := gToolInterface.Shuttle2.ToTool.bVaccumOn AND gMachine1.bMachineON;
|
||||
IF EDGENEG (gToolInterface.Shuttle2.ToTool.bVaccumOn) THEN
|
||||
//Abblasen
|
||||
bOuBlowOutShuttle2 := gMachine1.bMachineON;
|
||||
END_IF
|
||||
FUBs.TON_BlowPulse_Shuttle2.IN := bOuBlowOutShuttle2;
|
||||
FUBs.TON_BlowPulse_Shuttle2.PT := Parameter.tDurationBlow;
|
||||
FUBs.TON_BlowPulse_Shuttle2 ();
|
||||
IF FUBs.TON_BlowPulse_Shuttle2.Q THEN
|
||||
bOuBlowOutShuttle2 := FALSE;
|
||||
END_IF
|
||||
|
||||
//Seitenkanalverdichter einschalten
|
||||
gbSOuVaccumEngineOnShuttle1 := gMachine1.bMachineON AND gToolInterface.Shuttle1.ToTool.bVaccumOn;
|
||||
gbSOuVaccumEngineOnShuttle2 := gMachine1.bMachineON AND gToolInterface.Shuttle2.ToTool.bVaccumOn;
|
||||
|
||||
gToolInterface.Shuttle1.FromTool.bVaccumIsOn := gbSOuVaccumEngineOnShuttle1;
|
||||
gToolInterface.Shuttle1.FromTool.bVaccumIsOn := gbSOuVaccumEngineOnShuttle2;
|
||||
gLineInterface.Out.bVacuumIsOnShuttle1 := gbSOuVaccumEngineOnShuttle1; //FixMe Vakuumsensor
|
||||
gLineInterface.Out.bVacuumIsOnShuttle2 := gbSOuVaccumEngineOnShuttle2; //FixMe Vakuumsensor
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
PROGRAM _EXIT
|
||||
(* Insert code here *)
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
10
Logical/MachCtrl/Tools/Types.typ
Normal file
10
Logical/MachCtrl/Tools/Types.typ
Normal file
@@ -0,0 +1,10 @@
|
||||
|
||||
TYPE
|
||||
typ_Param : {REDUND_UNREPLICABLE} STRUCT
|
||||
tDurationBlow : {REDUND_UNREPLICABLE} TIME := T#2s;
|
||||
END_STRUCT;
|
||||
typ_FUBs : STRUCT
|
||||
TON_BlowPulse_Shuttle1 : TON;
|
||||
TON_BlowPulse_Shuttle2 : TON;
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
6
Logical/MachCtrl/Tools/Variables.var
Normal file
6
Logical/MachCtrl/Tools/Variables.var
Normal file
@@ -0,0 +1,6 @@
|
||||
VAR RETAIN
|
||||
Parameter : typ_Param;
|
||||
END_VAR
|
||||
VAR
|
||||
FUBs : typ_FUBs;
|
||||
END_VAR
|
||||
@@ -21,7 +21,10 @@ PROGRAM _CYCLIC
|
||||
//Outputs
|
||||
//================================================
|
||||
//Ventile Achsk<EFBFBD>hlung
|
||||
bOuOpenCoolingValveIn := NOT Status.bErrorFlow;
|
||||
bOuOpenCoolingValveOut := NOT Status.bErrorFlow;
|
||||
Status.bErrorDewPoint := (iInCoolingIn < 15.0) OR (Status.rPSMTemperature < 28.0);
|
||||
|
||||
|
||||
bOuOpenCoolingValveIn := NOT Status.bErrorFlow AND NOT Status.bErrorDewPoint;
|
||||
bOuOpenCoolingValveOut := NOT Status.bErrorFlow AND NOT Status.bErrorDewPoint;
|
||||
|
||||
END_PROGRAM
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
VAR
|
||||
iInHumidity : INT; (*Rel Luftfeuchte*)
|
||||
iInCabinetTemperature : INT; (*Temperatur Schaltschrank*)
|
||||
END_VAR
|
||||
(*//53K5*)
|
||||
VAR
|
||||
iInCoolingIn : INT; (*Temperatur K<>hlung Vorlauf <20>ffnen*)
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
TYPE
|
||||
typ_Status : STRUCT
|
||||
bErrorFlow : BOOL; (*Fehler Durchfluss - Unterschied - Ventile zu*)
|
||||
bErrorDewPoint : BOOL; (*Fehler Durchfluss - Unterschied - Ventile zu*)
|
||||
rPSMTemperature : REAL; (*K<>hlertemperatur Versorgungsmodul ACPmulti*)
|
||||
lrTemperatureCoolingIn : LREAL; (*Vorlauftemperatur K<>hlung*)
|
||||
lrTemperatureCoolingOu : LREAL; (*R<>cklauftemperatur K<>hlung*)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//Zeiten bilden
|
||||
ACTION DoTimes:
|
||||
//Zeiten bilden
|
||||
FUBs.TOF_KeyManual.IN := bInKeyManual;
|
||||
FUBs.TOF_KeyManual.PT := t#500ms;
|
||||
FUBs.TOF_KeyManual ();
|
||||
@@ -20,21 +20,21 @@ ACTION DoTimes:
|
||||
|
||||
//Nach Start der SLX Warten
|
||||
FUBs.TON_StartDelay.IN := TRUE;
|
||||
FUBs.TON_StartDelay.PT := t#35s;
|
||||
FUBs.TON_StartDelay.PT := t#50s;
|
||||
FUBs.TON_StartDelay ();
|
||||
END_ACTION
|
||||
|
||||
|
||||
//Buttons f<EFBFBD>r Einrichtbetrieb initialisieren
|
||||
ACTION DoInitSetupmodeButtons:
|
||||
//Buttons f<EFBFBD>r Einrichtbetrieb initialisieren
|
||||
VCButtons.MachineJog.bCommand := FALSE;
|
||||
VCButtons.MachineAuto.bCommand := FALSE;
|
||||
VCButtons.MachineResetEStop.bCommand := FALSE;
|
||||
VCButtons.MachineResetDoors.bCommand := FALSE;
|
||||
END_ACTION
|
||||
|
||||
//Buttons im Einrichtbetrieb
|
||||
ACTION DoSetupmodeButtons:
|
||||
//Buttons im Einrichtbetrieb
|
||||
//Anlage Einschalten
|
||||
VCButtons.MachineOnOff.usStatus.0 := FALSE;
|
||||
VCButtons.MachineOnOff.usStatus.1 := NOT FUBs.TON_StartDelay.Q; //Warten bis Hochlauf beendet
|
||||
@@ -61,8 +61,8 @@ ACTION DoSetupmodeButtons:
|
||||
VCButtons.MachineLockUnlockDoors.usStatus.0 := TRUE; // NOT gbSPLCInEstopOk;
|
||||
END_ACTION
|
||||
|
||||
//Globale Layer verwalten
|
||||
ACTION DoLayerSettings:
|
||||
//Globale Layer verwalten
|
||||
//===============================================================================================================
|
||||
//Setupmode
|
||||
//Tasten aktiviert wg Mobile panel
|
||||
@@ -133,8 +133,8 @@ ACTION DoLayerSettings:
|
||||
END_CASE
|
||||
END_ACTION
|
||||
|
||||
//Globale Layer Mobilepanel verwalten
|
||||
ACTION DoLayerSettingsMP:
|
||||
//Globale Layer Mobilepanel verwalten
|
||||
//===============================================================================================================
|
||||
//Setupmode
|
||||
//Tasten aktiviert wg Mobile panel
|
||||
@@ -207,14 +207,16 @@ ACTION DoLayerSettingsMP:
|
||||
END_CASE
|
||||
END_ACTION
|
||||
|
||||
//St<EFBFBD>rung quittieren
|
||||
ACTION DoErrorReset:
|
||||
//St<EFBFBD>rung quittieren
|
||||
//Resetsignal Nothalt
|
||||
gCmd1.bResetErrors := bInKeyReset OR gMP7121.Button OR VCButtons.MachineResetErrors.bCommand;
|
||||
|
||||
gbSPLCResetEStop := bInKeyReset OR (gCmd1.bResetErrors OR VCButtons.MachineResetEStop.bCommand) AND
|
||||
gMachine1.bMachineON AND NOT bInit;
|
||||
|
||||
|
||||
gbSPLCRefeedError := bInKeyReset OR gMP7121.Button OR VCButtons.MachineResetErrors.bCommand;
|
||||
gbSPLCResetSafeMCError := gMP7121.Button OR VCButtons.MachineResetErrors.bCommand;
|
||||
|
||||
|
||||
@@ -232,19 +234,25 @@ ACTION DoErrorReset:
|
||||
*)
|
||||
END_ACTION
|
||||
|
||||
//Signale an Sicherheits SPS
|
||||
ACTION DoSafePLC:
|
||||
//Signale an Sicherheits SPS
|
||||
|
||||
//Sicherheitsausg<EFBFBD>nge freigeben
|
||||
gbSOuP3 := gMachine1.bMachineON;
|
||||
gbSOuP4 := gMachine1.bMachineON;
|
||||
//FixMe gbSOuMainsSafetyEStop := gMachine1.bMachineON;
|
||||
//FixMe gbSOuMainsSafetyDoors := gMachine1.bMachineON;
|
||||
gbSOuOpenMainvalve := gMachine1.bMachineON;
|
||||
|
||||
//Laser
|
||||
gbSOuEStopLaser := gMachine1.bMachineON;
|
||||
gbSOuEnableLaser := gMachine1.bMachineON;
|
||||
|
||||
//Liniensteuerung
|
||||
gbSOuEStopToLineCtrl := TRUE; //Nothalt immer weitergeben
|
||||
gbSOuMaintDoorToLineCtrl := TRUE; //Sicherheit immer weitergeben
|
||||
gbSOuSafetyMaintDoorToLineCtrl := TRUE; //Sicherheit immer weitergeben
|
||||
gbSOuMaintDoorToLineCtrl := TRUE; //Sicherheit immer weitergehen
|
||||
|
||||
//R<EFBFBD>cklesesignale
|
||||
gbSPLCReefeedP4 := bInReefedP4;
|
||||
|
||||
//Anlagenstauts
|
||||
gbSPLCMachineOn := gMachine1.bMachineON;
|
||||
@@ -252,8 +260,8 @@ ACTION DoSafePLC:
|
||||
|
||||
END_ACTION
|
||||
|
||||
//Ausg<EFBFBD>nge
|
||||
ACTION DoOutputs:
|
||||
//Ausg<EFBFBD>nge
|
||||
//------------------------------------------------
|
||||
//Anlagenbeleuchtung
|
||||
bOuMachineLight := VCButtons.MachineLight.bCommand OR gMachine1.bMachineON;
|
||||
@@ -273,17 +281,226 @@ ACTION DoOutputs:
|
||||
IF EDGEPOS (bInKeyRequestMaintDoor) THEN
|
||||
gCmd1.bReqDoorOpen := NOT gCmd1.bReqDoorOpen;
|
||||
END_IF
|
||||
bOuLEDReqMaintDoor := gCmd1.bReqDoorOpen; //FixMe
|
||||
|
||||
bOuLEDReqMaintDoor := gCmd1.bReqDoorOpen; //FixMe
|
||||
|
||||
END_ACTION
|
||||
|
||||
//Alarme (Maschinenalarme)
|
||||
ACTION DoMachineAlarms:
|
||||
//=================================================
|
||||
//1 Druckluft<EFBFBD>berwachung
|
||||
(*
|
||||
FUBs.TON_AirOk1.IN := gbInAirOkEStop ; //gbInAirOK;
|
||||
FUBs.TON_AirOk1.PT := t#2s;
|
||||
FUBs.TON_AirOk1 ();
|
||||
|
||||
FUBs.TON_AirNOk1.IN := gbSPLCInEstopOk AND gMachine1.bMachineON AND NOT gbInAirOkEStop;;
|
||||
FUBs.TON_AirNOk1.PT := t#5s;
|
||||
FUBs.TON_AirNOk1 ();
|
||||
|
||||
IF (AlarmIDs.udAirCtrlEstop = 0) AND FUBs.TON_AirNOk1.Q THEN
|
||||
AlarmIDs.udAirCtrlEstop := MpAlarmXSet (gMpAlarmXCore, 'AirCtrlEstop');
|
||||
END_IF
|
||||
|
||||
IF (AlarmIDs.udAirCtrlEstop > 0) AND FUBs.TON_AirOk1.Q THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udAirCtrlEstop);
|
||||
AlarmIDs.udAirCtrlEstop := 0;
|
||||
END_IF
|
||||
*)
|
||||
END_ACTION
|
||||
|
||||
|
||||
|
||||
|
||||
//Alarme (Sicherheitsalarme)
|
||||
ACTION DoSafetyAlarms:
|
||||
//=================================================
|
||||
//Nothalt Panel bet<EFBFBD>tigt
|
||||
FUBs.Alarm_EStopPanel.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_EStopPanel.sInAlName := 'EStopPanel';
|
||||
FUBs.Alarm_EStopPanel.bInAlarmSignal := NOT gbSInStopButtonPanel AND gMachine1.bMachineON;
|
||||
FUBs.Alarm_EStopPanel ();
|
||||
|
||||
//Nothalt Laser bet<EFBFBD>tigt
|
||||
FUBs.Alarm_EStopLaser.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_EStopLaser.sInAlName := 'EStopLaser';
|
||||
FUBs.Alarm_EStopLaser.bInAlarmSignal := NOT gbSInStopButtonLaser AND gMachine1.bMachineON;
|
||||
FUBs.Alarm_EStopLaser ();
|
||||
|
||||
//Nothalt von LinienSteuerung
|
||||
FUBs.Alarm_EStopLine.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_EStopLine.sInAlName := 'EStopLine';
|
||||
FUBs.Alarm_EStopLine.bInAlarmSignal := NOT gbSInEStopMachine AND gMachine1.bMachineON;
|
||||
FUBs.Alarm_EStopLine ();
|
||||
|
||||
//Nothalt nicht quittiert
|
||||
FUBs.Alarm_EStopNotAck.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_EStopNotAck.sInAlName := 'EStopNotAck';
|
||||
FUBs.Alarm_EStopNotAck.bInAlarmSignal := ((uiInSPLC_DiagCode_EStop = 16#8003) OR (uiInSPLC_DiagCode_EStop = 16#8005)) AND gMachine1.bMachineON;
|
||||
FUBs.Alarm_EStopNotAck ();
|
||||
|
||||
//Wartungst<EFBFBD>r links offen
|
||||
FUBs.Alarm_MaintDoorLeftOpen.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_MaintDoorLeftOpen.sInAlName := 'MaintDoorLeftOpen';
|
||||
FUBs.Alarm_MaintDoorLeftOpen.bInAlarmSignal := NOT gbSInMaintDoorLeftOk AND NOT gCmd1.bReqDoorOpen AND gMachine1.bMachineON;
|
||||
FUBs.Alarm_MaintDoorLeftOpen ();
|
||||
|
||||
//Wartungst<EFBFBD>r links offen
|
||||
FUBs.Alarm_MaintDoorRightOpen.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_MaintDoorRightOpen.sInAlName := 'MaintDoorRightOpen';
|
||||
FUBs.Alarm_MaintDoorRightOpen.bInAlarmSignal := NOT gbSInMaintDoorRightOk AND NOT gCmd1.bReqDoorOpen AND gMachine1.bMachineON;
|
||||
FUBs.Alarm_MaintDoorRightOpen ();
|
||||
|
||||
//Wartungst<EFBFBD>r links offen
|
||||
FUBs.Alarm_MaintDoorLeftOpen.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_MaintDoorLeftOpen.sInAlName := 'MaintDoorLeftOpen';
|
||||
FUBs.Alarm_MaintDoorLeftOpen.bInAlarmSignal := NOT gbSInMaintDoorLeftOk AND NOT gCmd1.bReqDoorOpen AND gMachine1.bMachineON;
|
||||
FUBs.Alarm_MaintDoorLeftOpen ();
|
||||
|
||||
//Wartungst<EFBFBD>r links offen
|
||||
FUBs.Alarm_MaintDoorLeftOpen.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_MaintDoorLeftOpen.sInAlName := 'MaintDoorLeftOpen';
|
||||
FUBs.Alarm_MaintDoorLeftOpen.bInAlarmSignal := NOT gbSInMaintDoorLeftOk AND NOT gCmd1.bReqDoorOpen AND gMachine1.bMachineON;
|
||||
FUBs.Alarm_MaintDoorLeftOpen ();
|
||||
|
||||
//T<EFBFBD>ren Linie nicht geschlossen
|
||||
FUBs.Alarm_MaintDoorsLineOpen.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_MaintDoorsLineOpen.sInAlName := 'MaintDoorsLineNotOk';
|
||||
FUBs.Alarm_MaintDoorsLineOpen.bInAlarmSignal := NOT gbSInMachineMaintDoorsClosed AND gMachine1.bMachineON;
|
||||
FUBs.Alarm_MaintDoorsLineOpen();
|
||||
|
||||
//Wartungst<EFBFBD>re nicht quittiert
|
||||
FUBs.Alarm_MaintDoorNotAck.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_MaintDoorNotAck.sInAlName := 'MaintDoorNotAck';
|
||||
FUBs.Alarm_MaintDoorNotAck.bInAlarmSignal := ((uiInSPLC_DiagCode_SafetyDoors = 16#8003) OR (uiInSPLC_DiagCode_SafetyDoors = 16#8005)) AND gMachine1.bMachineON;
|
||||
FUBs.Alarm_MaintDoorNotAck ();
|
||||
|
||||
//Schutztore nicht geschlossen
|
||||
FUBs.Alarm_MaintDoorNotAck.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_MaintDoorNotAck.sInAlName := 'GatesNotClosed';
|
||||
FUBs.Alarm_MaintDoorNotAck.bInAlarmSignal := (NOT gbSInGate1Closed OR NOT gbSInGate2Closed) AND gbSInMaintDoorLeftOk AND gbSInMaintDoorRightOk AND gbSInMachineMaintDoorsClosed AND gMachine1.bMachineON;
|
||||
FUBs.Alarm_MaintDoorNotAck ();
|
||||
|
||||
//Sicherheit von Liniensteuerung nicht OK
|
||||
FUBs.Alarm_MaintDoorNotAck.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_MaintDoorNotAck.sInAlName := 'SafetyLineNOk';
|
||||
FUBs.Alarm_MaintDoorNotAck.bInAlarmSignal := gbSPLCInMaintDoorOk AND gbSInMachineMaintDoorsClosed AND NOT gbSInSafteyMachineOk AND gMachine1.bMachineON;
|
||||
FUBs.Alarm_MaintDoorNotAck ();
|
||||
|
||||
//Sicherheit von Liniensteuerung nicht OK
|
||||
FUBs.Alarm_RefeedP4.MpLink := gMpAlarmXCore;
|
||||
FUBs.Alarm_RefeedP4.sInAlName := 'RefeedP4';
|
||||
FUBs.Alarm_RefeedP4.bInAlarmSignal := (uiInSPLC_DiagCode_EDMP4 <= 16#C0111) AND (uiInSPLC_DiagCode_EDMP4 >= 16#C000) AND gMachine1.bMachineON;
|
||||
FUBs.Alarm_RefeedP4 ();
|
||||
|
||||
|
||||
|
||||
(*
|
||||
//Wartungst<EFBFBD>r offen
|
||||
IF NOT gbSInMaintenanceDoorFrontOk AND gMachine1.bMachineON THEN
|
||||
IF (AlarmIDs.udDoor[1] = 0) THEN
|
||||
brsstrcpy (ADR (AlarmTextSnippets.strDoorOpen), ADR ('Vorne'));
|
||||
AlarmIDs.udDoor[1] := MpAlarmXSet (gMpAlarmXCore, 'DoorOpen');
|
||||
END_IF
|
||||
ELSIF gbSInMaintenanceDoorFrontOk AND (AlarmIDs.udDoor[1] > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udDoor[1]);
|
||||
AlarmIDs.udDoor[1] := 0;
|
||||
END_IF
|
||||
|
||||
IF NOT gbSInMaintenanceDoorBackOk AND gMachine1.bMachineON THEN
|
||||
IF (AlarmIDs.udDoor[2] = 0) THEN
|
||||
brsstrcpy (ADR (AlarmTextSnippets.strDoorOpen), ADR ('Hinten Links'));
|
||||
AlarmIDs.udDoor[2] := MpAlarmXSet (gMpAlarmXCore, 'DoorOpen');
|
||||
END_IF
|
||||
ELSIF gbSInMaintenanceDoorBackOk AND (AlarmIDs.udDoor[2] > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udDoor[2]);
|
||||
AlarmIDs.udDoor[2] := 0;
|
||||
END_IF
|
||||
|
||||
IF NOT gbSInMaintenanceDoorBack2Ok AND gMachine1.bMachineON THEN
|
||||
IF (AlarmIDs.udDoor[3] = 0) THEN
|
||||
brsstrcpy (ADR (AlarmTextSnippets.strDoorOpen), ADR ('Hinten rechts'));
|
||||
AlarmIDs.udDoor[3] := MpAlarmXSet (gMpAlarmXCore, 'DoorOpen');
|
||||
END_IF
|
||||
ELSIF gbSInMaintenanceDoorBackOk AND (AlarmIDs.udDoor[3] > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udDoor[3]);
|
||||
AlarmIDs.udDoor[3] := 0;
|
||||
END_IF
|
||||
//Wartungst<EFBFBD>r nicht quittiert
|
||||
IF gbSInMaintenanceDoorFrontOk AND NOT gbSPLCInDoorsFrontOk AND gMachine1.bMachineON THEN
|
||||
IF (AlarmIDs.udDoorUnreseted[1] = 0) THEN
|
||||
brsstrcpy (ADR (AlarmTextSnippets.strDoorUnreseted), ADR ('Vorne'));
|
||||
AlarmIDs.udDoorUnreseted[1] := MpAlarmXSet (gMpAlarmXCore, 'DoorUnreseted');
|
||||
END_IF
|
||||
ELSIF gbSInMaintenanceDoorFrontOk AND (AlarmIDs.udDoorUnreseted[1] > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udDoorUnreseted[1]);
|
||||
AlarmIDs.udDoorUnreseted[1] := 0;
|
||||
END_IF
|
||||
|
||||
IF gbSInMaintenanceDoorBackOk AND NOT gbSPLCInDoorsBackOk AND gMachine1.bMachineON THEN
|
||||
IF (AlarmIDs.udDoorUnreseted[2] = 0) THEN
|
||||
brsstrcpy (ADR (AlarmTextSnippets.strDoorUnreseted), ADR ('Vorne'));
|
||||
AlarmIDs.udDoorUnreseted[2] := MpAlarmXSet (gMpAlarmXCore, 'DoorUnreseted');
|
||||
END_IF
|
||||
ELSIF gbSPLCInDoorsBackOk AND (AlarmIDs.udDoorUnreseted[2] > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udDoorUnreseted[2]);
|
||||
AlarmIDs.udDoorUnreseted[2] := 0;
|
||||
END_IF
|
||||
|
||||
//Handschutzleiste ausgel<EFBFBD>st
|
||||
IF NOT gbSInBumperGateOk THEN
|
||||
IF (AlarmIDs.udBumperActivated = 0) THEN
|
||||
AlarmIDs.udBumperActivated := MpAlarmXSet (gMpAlarmXCore, 'BumperActivated');
|
||||
END_IF
|
||||
ELSIF gbSInBumperGateOk AND (AlarmIDs.udBumperActivated > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udBumperActivated);
|
||||
AlarmIDs.udBumperActivated := 0;
|
||||
END_IF
|
||||
|
||||
//Handschutzleiste nicht quittiert
|
||||
IF gbSPLCInErrorBumper THEN
|
||||
IF (AlarmIDs.udBumperNotReseted = 0) THEN
|
||||
AlarmIDs.udBumperNotReseted := MpAlarmXSet (gMpAlarmXCore, 'BumperNotReseted');
|
||||
END_IF
|
||||
ELSIF NOT gbSPLCInErrorBumper AND (AlarmIDs.udBumperNotReseted > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udBumperNotReseted);
|
||||
AlarmIDs.udBumperNotReseted := 0;
|
||||
END_IF
|
||||
|
||||
//R<EFBFBD>cklesefehler Nothalt
|
||||
IF gbSPLCInRdbckErrorEStop THEN
|
||||
IF (AlarmIDs.udRefeedEstop = 0) THEN
|
||||
AlarmIDs.udRefeedEstop := MpAlarmXSet (gMpAlarmXCore, 'RefeedEStop');
|
||||
END_IF
|
||||
ELSIF NOT gbSPLCInRdbckErrorEStop AND (AlarmIDs.udRefeedEstop > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udRefeedEstop);
|
||||
AlarmIDs.udRefeedEstop := 0;
|
||||
END_IF
|
||||
|
||||
//R<EFBFBD>cklesefehler Einlegebereich
|
||||
IF gbSPLCInRdbckErrorInfeed THEN
|
||||
IF (AlarmIDs.udRefeedInfeed = 0) THEN
|
||||
AlarmIDs.udRefeedInfeed := MpAlarmXSet (gMpAlarmXCore, 'RefeedInfeed');
|
||||
END_IF
|
||||
ELSIF NOT gbSPLCInRdbckErrorInfeed AND (AlarmIDs.udRefeedInfeed > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udRefeedInfeed);
|
||||
AlarmIDs.udRefeedInfeed := 0;
|
||||
END_IF
|
||||
|
||||
*)
|
||||
END_ACTION
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//FUBs
|
||||
ACTION DoFUBS:
|
||||
//FUBs
|
||||
FUBs.AsIOAccRead ();
|
||||
IF (FUBs.AsIOAccRead.status = ERR_OK) THEN
|
||||
udSLXState := FUBs.AsIOAccRead.value;
|
||||
END_IF
|
||||
END_ACTION
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?AutomationStudio Version=4.7.5.60 SP?>
|
||||
<?AutomationStudio FileVersion="4.9"?>
|
||||
<Program SubType="IEC" xmlns="http://br-automation.co.at/AS/Program">
|
||||
<Files>
|
||||
<File Description="Aktionen Maschinentask">Action.st</File>
|
||||
@@ -7,5 +7,6 @@
|
||||
<File Private="true">IO.Var</File>
|
||||
<File>machine.st</File>
|
||||
<File Description="Local data types" Private="true">Types.typ</File>
|
||||
<File Description="Alarme">TxtAlarms.tmx</File>
|
||||
</Files>
|
||||
</Program>
|
||||
@@ -1,6 +1,9 @@
|
||||
(*//Datenstrukturen*)
|
||||
VAR
|
||||
SafeMC_Status : ARRAY[1..8] OF typ_SafeMC_Status; (*Status Safe MC Achsen*)
|
||||
uiInSPLC_DiagCode_EStop : UINT; (*Diagnosecode FB*)
|
||||
uiInSPLC_DiagCode_SafetyDoors : UINT; (*Diagnosecode FB*)
|
||||
uiInSPLC_DiagCode_EDMP4 : UINT; (*Diagnosecode FB*)
|
||||
END_VAR
|
||||
(*//Eing<6E>nge*)
|
||||
(*#################################################################################################################*)
|
||||
@@ -8,10 +11,9 @@ END_VAR
|
||||
VAR
|
||||
bInMaintDoorLeftClosed : BOOL; (*Wartungst<73>r Fl<46>gel Links Geschlossen*)
|
||||
bInMaintDoorLeftError : BOOL; (*Wartungst<73>r Fl<46>gel Links Fehler*)
|
||||
bInMaintDoorLeftLocked : BOOL; (*Wartungst<73>r Fl<46>gel Links Verriegelt*)
|
||||
bInReefedP4 : BOOL; (*R<>ckf<6B>hrkreis f<>r P4*)
|
||||
bInMaintDoorRightClosed : BOOL; (*Wartungst<73>r Fl<46>gel Rechts Geschlossen*)
|
||||
bInMaintDoorRightError : BOOL; (*Wartungst<73>r Fl<46>gel Rechts Fehler*)
|
||||
bInMaintDoorRightLocked : BOOL; (*Wartungst<73>r Fl<46>gel Rechts Verriegelt*)
|
||||
END_VAR
|
||||
(*//60K3*)
|
||||
VAR
|
||||
|
||||
69
Logical/Machine/machine/TxtAlarms.tmx
Normal file
69
Logical/Machine/machine/TxtAlarms.tmx
Normal file
@@ -0,0 +1,69 @@
|
||||
<?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">Machine/Alarms</prop>
|
||||
</header>
|
||||
<body>
|
||||
<tu tuid="EStopPanel">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Stopptaster Panel betätigt</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="EStopLaser">
|
||||
<tuv xml:lang="de">
|
||||
<seg>NotHalt von Laser</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="EStopLine">
|
||||
<tuv xml:lang="de">
|
||||
<seg>NotHalt von Liniensteuerung</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="EStopNotAck">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Nothalt nicht quittiert</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="MaintDoorLeftOpen">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Wartungstür Links offen</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="MaintDoorRightOpen">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Wartungstür Rechts offen</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="MaintDoorsLineNotOk">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Wartungstüren von Liniensteuerunge nicht geschlossen / verriegelt</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="MaintDoorNotOk">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Sicherheit Laserzelle nach Türöffnung oder durch Liniensteuerung (Tore Offen) deaktiviert</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="MaintDoorNotAck">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Sicherheit Laserzelle nicht quittiert</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="GatesNotClosed">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Schutztore Shuttles nicht geschlossen (Zugang zu Sicherheitsbereich Liniensteuerung ist Offen)</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="SafetyLineNOk">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Sicherheit an Liniensteuerung nicht quittiert</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
<tu tuid="RefeedP4">
|
||||
<tuv xml:lang="de">
|
||||
<seg>Rücklesefehler 24 V Potential P4 (nach Sicherheit Zelle)</seg>
|
||||
</tuv>
|
||||
</tu>
|
||||
</body>
|
||||
</tmx>
|
||||
@@ -8,7 +8,6 @@ TYPE
|
||||
typ_FUB : STRUCT (*Funktionsbausteine*)
|
||||
TON_AirOk1 : TON;
|
||||
TON_AirNOk1 : TON;
|
||||
TON_ReleaseToolRob1 : TON;
|
||||
TON_AutoOff : TON;
|
||||
TON_StartDelay : TON; (*Wartezeit nach Start*)
|
||||
TOF_MachineOn : TOF; (*Nachlauf Anlage Ein*)
|
||||
@@ -16,6 +15,18 @@ TYPE
|
||||
TOF_KeyAuto : TOF; (*Ausschaltvert<72>gerung Hand Schl<68>sselschalter (wg. Umschalten)*)
|
||||
AsIOAccRead : AsIOAccRead; (*Register aus SLX Lesen*)
|
||||
TARGETInfo : TARGETInfo;
|
||||
Alarm_EStopPanel : FUB_AlarmSimple;
|
||||
Alarm_EStopLaser : FUB_AlarmSimple;
|
||||
Alarm_EStopLine : FUB_AlarmSimple;
|
||||
Alarm_EStopNotAck : FUB_AlarmSimple;
|
||||
Alarm_MaintDoorLeftOpen : FUB_AlarmSimple;
|
||||
Alarm_MaintDoorRightOpen : FUB_AlarmSimple;
|
||||
Alarm_MaintDoorsLineOpen : FUB_AlarmSimple;
|
||||
Alarm_MaintDoorNotOk : FUB_AlarmSimple;
|
||||
Alarm_MaintDoorNotAck : FUB_AlarmSimple;
|
||||
Alarm_GatesNotClosed : FUB_AlarmSimple;
|
||||
Alarm_SafetyLineNotOk : FUB_AlarmSimple;
|
||||
Alarm_RefeedP4 : FUB_AlarmSimple;
|
||||
END_STRUCT;
|
||||
typ_MpFUB : STRUCT (*MApp Funktionsbausteine*)
|
||||
bDummy : BOOL;
|
||||
@@ -35,19 +46,4 @@ TYPE
|
||||
MachineLockUnlockDoors : gtyp_VCButton; (*T<>renverriegeln (Einrichtbetrieb)*)
|
||||
TempCtrl : gtyp_VCButton; (*Temperaturregelung*)
|
||||
END_STRUCT;
|
||||
typ_AlarmIDs : STRUCT (*Puffer f<>r Alarm IDs*)
|
||||
udEStop : ARRAY[1..gNUMBER_OF_ESTOPS]OF UDINT; (*Nothalttaster*)
|
||||
udEStopHPPump : UDINT; (*Nothalt von HD-Pumpe*)
|
||||
udDoor : ARRAY[1..gNUMBER_OF_DOORS]OF UDINT; (*Wartungst<73>ren*)
|
||||
udDoorUnreseted : ARRAY[1..gNUMBER_OF_DOORS]OF UDINT; (*Wartungst<73>ren*)
|
||||
udRefeedEstop : UDINT; (*R<>ckf<6B>hrkreis Nothalt*)
|
||||
udRefeedInfeed : UDINT; (*R<>ckf<6B>hrkreis Einlegebereich*)
|
||||
udBumperActivated : UDINT; (*Handschutzleiste ausgel<65>st*)
|
||||
udBumperNotReseted : UDINT; (*Handschutzleiste nicht quittiert*)
|
||||
END_STRUCT;
|
||||
typ_AlarmSnippets : STRUCT (*Infos f<>r Alarmtexte*)
|
||||
strEStopButton : STRING[40]; (*Identifikation Nothalttaster*)
|
||||
strDoorOpen : STRING[40]; (*Identifikaton Wartungst<73>r*)
|
||||
strDoorUnreseted : STRING[40]; (*Identifikaton Wartungst<73>r*)
|
||||
END_STRUCT;
|
||||
END_TYPE
|
||||
|
||||
@@ -81,7 +81,7 @@ PROGRAM _CYCLIC
|
||||
gVisuCtrlMP.MainPage.usSetLayer := 0; //r<EFBFBD>cksetzen
|
||||
END_IF
|
||||
|
||||
ELSIF (FUBs.TOF_KeyAuto.Q AND NOT bInKeyManual) AND (gMachine1.enMode <> enMACH_AUTOMATIC) AND FALSE THEN //FixMe
|
||||
ELSIF (FUBs.TOF_KeyAuto.Q AND NOT bInKeyManual) AND (gMachine1.enMode <> enMACH_AUTOMATIC) AND bInKeyAuto THEN //FixMe
|
||||
// AND NOT gMachine1.bDisableMachine AND NOT gAlarmReaction.b1StopAutomatic
|
||||
//AND (gUserRights.Right1_Operate >= mpUSER_ACCESS_ACTUATE) THEN //AND NOT gAlarmReaction.b2FinishCycle THEN
|
||||
//Automatik anfordern
|
||||
@@ -146,154 +146,10 @@ PROGRAM _CYCLIC
|
||||
|
||||
|
||||
//Alarme (Maschinenalarme)
|
||||
//=================================================
|
||||
//1 Druckluft<EFBFBD>berwachung
|
||||
(*
|
||||
FUBs.TON_AirOk1.IN := gbInAirOkEStop ; //gbInAirOK;
|
||||
FUBs.TON_AirOk1.PT := t#2s;
|
||||
FUBs.TON_AirOk1 ();
|
||||
|
||||
FUBs.TON_AirNOk1.IN := gbSPLCInEstopOk AND gMachine1.bMachineON AND NOT gbInAirOkEStop;;
|
||||
FUBs.TON_AirNOk1.PT := t#5s;
|
||||
FUBs.TON_AirNOk1 ();
|
||||
|
||||
IF (AlarmIDs.udAirCtrlEstop = 0) AND FUBs.TON_AirNOk1.Q THEN
|
||||
AlarmIDs.udAirCtrlEstop := MpAlarmXSet (gMpAlarmXCore, 'AirCtrlEstop');
|
||||
END_IF
|
||||
|
||||
IF (AlarmIDs.udAirCtrlEstop > 0) AND FUBs.TON_AirOk1.Q THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udAirCtrlEstop);
|
||||
AlarmIDs.udAirCtrlEstop := 0;
|
||||
END_IF
|
||||
*)
|
||||
|
||||
|
||||
|
||||
DoMachineAlarms;
|
||||
//Alarme (Sicherheitsalarme)
|
||||
//=================================================
|
||||
//Nothalt bet<EFBFBD>tigt
|
||||
(*
|
||||
IF NOT gbSInEStop AND gMachine1.bMachineON THEN
|
||||
IF (AlarmIDs.udEStop[1] = 0) THEN
|
||||
brsstrcpy (ADR (AlarmTextSnippets.strEStopButton), ADR ('Einlegen / Panel'));
|
||||
AlarmIDs.udEStop[1] := MpAlarmXSet (gMpAlarmXCore, 'EStopButton');
|
||||
END_IF
|
||||
ELSIF gbSInEStop AND (AlarmIDs.udEStop[1] > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udEStop[1]);
|
||||
AlarmIDs.udEStop[1] := 0;
|
||||
END_IF
|
||||
DoSafetyAlarms;
|
||||
|
||||
//Nothalt von HD-Pumpe
|
||||
IF NOT gbSInEstopHPPump AND gMachine1.bMachineON THEN
|
||||
IF (AlarmIDs.udEStopHPPump = 0) THEN
|
||||
AlarmIDs.udEStopHPPump := MpAlarmXSet (gMpAlarmXCore, 'EStopHPPump');
|
||||
END_IF
|
||||
ELSIF gbSInEstopHPPump AND (AlarmIDs.udEStopHPPump > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udEStopHPPump);
|
||||
AlarmIDs.udEStopHPPump := 0;
|
||||
END_IF
|
||||
|
||||
|
||||
//Nothalt nicht quittiert
|
||||
IF gbSInEStop AND gbSInEstopHPPump AND NOT gbSPLCInEstopOk AND gMachine1.bMachineON THEN
|
||||
MpAlarmXSet (gMpAlarmXCore, 'EStopNACK');
|
||||
ELSIF gbSPLCInEstopOk THEN
|
||||
MpAlarmXReset (gMpAlarmXCore, 'EStopNACK');
|
||||
END_IF
|
||||
|
||||
//Wartungst<EFBFBD>r offen
|
||||
IF NOT gbSInMaintenanceDoorFrontOk AND gMachine1.bMachineON THEN
|
||||
IF (AlarmIDs.udDoor[1] = 0) THEN
|
||||
brsstrcpy (ADR (AlarmTextSnippets.strDoorOpen), ADR ('Vorne'));
|
||||
AlarmIDs.udDoor[1] := MpAlarmXSet (gMpAlarmXCore, 'DoorOpen');
|
||||
END_IF
|
||||
ELSIF gbSInMaintenanceDoorFrontOk AND (AlarmIDs.udDoor[1] > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udDoor[1]);
|
||||
AlarmIDs.udDoor[1] := 0;
|
||||
END_IF
|
||||
|
||||
IF NOT gbSInMaintenanceDoorBackOk AND gMachine1.bMachineON THEN
|
||||
IF (AlarmIDs.udDoor[2] = 0) THEN
|
||||
brsstrcpy (ADR (AlarmTextSnippets.strDoorOpen), ADR ('Hinten Links'));
|
||||
AlarmIDs.udDoor[2] := MpAlarmXSet (gMpAlarmXCore, 'DoorOpen');
|
||||
END_IF
|
||||
ELSIF gbSInMaintenanceDoorBackOk AND (AlarmIDs.udDoor[2] > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udDoor[2]);
|
||||
AlarmIDs.udDoor[2] := 0;
|
||||
END_IF
|
||||
|
||||
IF NOT gbSInMaintenanceDoorBack2Ok AND gMachine1.bMachineON THEN
|
||||
IF (AlarmIDs.udDoor[3] = 0) THEN
|
||||
brsstrcpy (ADR (AlarmTextSnippets.strDoorOpen), ADR ('Hinten rechts'));
|
||||
AlarmIDs.udDoor[3] := MpAlarmXSet (gMpAlarmXCore, 'DoorOpen');
|
||||
END_IF
|
||||
ELSIF gbSInMaintenanceDoorBackOk AND (AlarmIDs.udDoor[3] > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udDoor[3]);
|
||||
AlarmIDs.udDoor[3] := 0;
|
||||
END_IF
|
||||
//Wartungst<EFBFBD>r nicht quittiert
|
||||
IF gbSInMaintenanceDoorFrontOk AND NOT gbSPLCInDoorsFrontOk AND gMachine1.bMachineON THEN
|
||||
IF (AlarmIDs.udDoorUnreseted[1] = 0) THEN
|
||||
brsstrcpy (ADR (AlarmTextSnippets.strDoorUnreseted), ADR ('Vorne'));
|
||||
AlarmIDs.udDoorUnreseted[1] := MpAlarmXSet (gMpAlarmXCore, 'DoorUnreseted');
|
||||
END_IF
|
||||
ELSIF gbSInMaintenanceDoorFrontOk AND (AlarmIDs.udDoorUnreseted[1] > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udDoorUnreseted[1]);
|
||||
AlarmIDs.udDoorUnreseted[1] := 0;
|
||||
END_IF
|
||||
|
||||
IF gbSInMaintenanceDoorBackOk AND NOT gbSPLCInDoorsBackOk AND gMachine1.bMachineON THEN
|
||||
IF (AlarmIDs.udDoorUnreseted[2] = 0) THEN
|
||||
brsstrcpy (ADR (AlarmTextSnippets.strDoorUnreseted), ADR ('Vorne'));
|
||||
AlarmIDs.udDoorUnreseted[2] := MpAlarmXSet (gMpAlarmXCore, 'DoorUnreseted');
|
||||
END_IF
|
||||
ELSIF gbSPLCInDoorsBackOk AND (AlarmIDs.udDoorUnreseted[2] > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udDoorUnreseted[2]);
|
||||
AlarmIDs.udDoorUnreseted[2] := 0;
|
||||
END_IF
|
||||
|
||||
//Handschutzleiste ausgel<EFBFBD>st
|
||||
IF NOT gbSInBumperGateOk THEN
|
||||
IF (AlarmIDs.udBumperActivated = 0) THEN
|
||||
AlarmIDs.udBumperActivated := MpAlarmXSet (gMpAlarmXCore, 'BumperActivated');
|
||||
END_IF
|
||||
ELSIF gbSInBumperGateOk AND (AlarmIDs.udBumperActivated > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udBumperActivated);
|
||||
AlarmIDs.udBumperActivated := 0;
|
||||
END_IF
|
||||
|
||||
//Handschutzleiste nicht quittiert
|
||||
IF gbSPLCInErrorBumper THEN
|
||||
IF (AlarmIDs.udBumperNotReseted = 0) THEN
|
||||
AlarmIDs.udBumperNotReseted := MpAlarmXSet (gMpAlarmXCore, 'BumperNotReseted');
|
||||
END_IF
|
||||
ELSIF NOT gbSPLCInErrorBumper AND (AlarmIDs.udBumperNotReseted > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udBumperNotReseted);
|
||||
AlarmIDs.udBumperNotReseted := 0;
|
||||
END_IF
|
||||
|
||||
//R<EFBFBD>cklesefehler Nothalt
|
||||
IF gbSPLCInRdbckErrorEStop THEN
|
||||
IF (AlarmIDs.udRefeedEstop = 0) THEN
|
||||
AlarmIDs.udRefeedEstop := MpAlarmXSet (gMpAlarmXCore, 'RefeedEStop');
|
||||
END_IF
|
||||
ELSIF NOT gbSPLCInRdbckErrorEStop AND (AlarmIDs.udRefeedEstop > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udRefeedEstop);
|
||||
AlarmIDs.udRefeedEstop := 0;
|
||||
END_IF
|
||||
|
||||
//R<EFBFBD>cklesefehler Einlegebereich
|
||||
IF gbSPLCInRdbckErrorInfeed THEN
|
||||
IF (AlarmIDs.udRefeedInfeed = 0) THEN
|
||||
AlarmIDs.udRefeedInfeed := MpAlarmXSet (gMpAlarmXCore, 'RefeedInfeed');
|
||||
END_IF
|
||||
ELSIF NOT gbSPLCInRdbckErrorInfeed AND (AlarmIDs.udRefeedInfeed > 0) THEN
|
||||
MpAlarmXResetID (gMpAlarmXCore, AlarmIDs.udRefeedInfeed);
|
||||
AlarmIDs.udRefeedInfeed := 0;
|
||||
END_IF
|
||||
|
||||
*)
|
||||
|
||||
//Sch<EFBFBD>tz<EFBFBD>berwachugn R<EFBFBD>cklesesignale - Dummyaufruf wg. Mapping (werden direkt in SPLC gemappt
|
||||
|
||||
//St<EFBFBD>rung quittieren
|
||||
|
||||
@@ -19,8 +19,6 @@ END_VAR
|
||||
VAR
|
||||
MpData : typ_MpData; (*Daten f<>r MappBausteine*)
|
||||
VCButtons : typ_VCButtons; (*Visu Buttons*)
|
||||
AlarmIDs : typ_AlarmIDs; (*Alarm IDs*)
|
||||
AlarmTextSnippets : typ_AlarmSnippets; (*Text Snippet Variablen f<>r Alarme*)
|
||||
END_VAR
|
||||
(*//Funktionsbl<62>cke*)
|
||||
VAR
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
<Object Type="Package" Description="Visualisierung">Vsualization</Object>
|
||||
<Object Type="Package" Description="Filemanagement">File</Object>
|
||||
<Object Type="Package" Description="Global libraries">Libraries</Object>
|
||||
<Object Type="Package" Description="Benutzer Bibliotheken">LibrariesUser</Object>
|
||||
<Object Type="File" Description="Projektpasswörter">Passwords.txt</Object>
|
||||
<Object Type="Package">CNCProgramme</Object>
|
||||
<Object Type="Package" Description=" Scene Viewer für Simulation">SceneViewer</Object>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?AutomationStudio Version="4.9.2.46"?>
|
||||
<?AutomationStudio Version="4.9.3.144 SP"?>
|
||||
<AlarmSystem xmlns="http://br-automation.co.at/AS/VC/Project">
|
||||
<Property Name="HistoryLength" Value="1000"/>
|
||||
<Property Name="SnippetBufferSize" Value="150"/>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?AutomationStudio Version="4.9.2.46"?>
|
||||
<?AutomationStudio Version="4.9.3.144 SP"?>
|
||||
<ComponentVersions xmlns="http://br-automation.co.at/AS/VC/Project">
|
||||
<ComponentVersion>
|
||||
<Property Name="ClassId" Value="0x00000500"/>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?AutomationStudio Version="4.9.2.46"?>
|
||||
<?AutomationStudio Version="4.9.3.144 SP"?>
|
||||
<Languages xmlns="http://br-automation.co.at/AS/VC/Project">
|
||||
<Property Name="Default" Value="de"/>
|
||||
<Property Name="FallBackLanguage" Value="de"/>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?AutomationStudio Version="4.9.2.46"?>
|
||||
<?AutomationStudio Version="4.9.3.144 SP"?>
|
||||
<Project xmlns="http://br-automation.co.at/AS/VC/Project">
|
||||
<Property Name="EnableEvents" Value="True"/>
|
||||
<Property Name="SharedTargetResourceRoot" Value=""/>
|
||||
<Property Name="TextIDMax" Value="174318"/>
|
||||
<Property Name="TextIDMax" Value="183407"/>
|
||||
<SourceFiles>
|
||||
<Source File="Languages.vcr"/>
|
||||
<Source File="TextGroups\DateTimeFormats.txtgrp"/>
|
||||
@@ -26,6 +26,8 @@
|
||||
<Source File="TextGroups\Events.txtgrp"/>
|
||||
<Source File="TextGroups\MpCncJogState.txtgrp"/>
|
||||
<Source File="TextGroups\MpCNCJogCoordsystem.txtgrp"/>
|
||||
<Source File="TextGroups\txptToolstate.txtgrp"/>
|
||||
<Source File="TextGroups\txtStepsAuto.txtgrp"/>
|
||||
<Source File="UnitGroups\Length.vcug"/>
|
||||
<Source File="UnitGroups\Mass.vcug"/>
|
||||
<Source File="UnitGroups\Volume.vcug"/>
|
||||
|
||||
22
Logical/VCShared/TextGroups/txptToolstate.txtgrp
Normal file
22
Logical/VCShared/TextGroups/txptToolstate.txtgrp
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?AutomationStudio Version="4.9.3.144 SP"?>
|
||||
<TextGroup xmlns="http://br-automation.co.at/AS/VC/Project" Name="txptToolstate">
|
||||
<Property Name="Description" Value="Werkzeugstatus"/>
|
||||
<Property Name="Index" Value="5"/>
|
||||
<TextSnippets/>
|
||||
<TextLayer LanguageId="en">
|
||||
<Text ID="181323" Value=""/>
|
||||
<Text ID="181324" Value=""/>
|
||||
<Text ID="181325" Value=""/>
|
||||
</TextLayer>
|
||||
<TextLayer LanguageId="de">
|
||||
<Text ID="181323" Value="Werkzeug Leer"/>
|
||||
<Text ID="181324" Value="Neues Bauteil"/>
|
||||
<Text ID="181325" Value="Fertiges Bauteil"/>
|
||||
</TextLayer>
|
||||
<IndexMap>
|
||||
<Index ID="181323" Value="0"/>
|
||||
<Index ID="181324" Value="1"/>
|
||||
<Index ID="181325" Value="2"/>
|
||||
</IndexMap>
|
||||
</TextGroup>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user