Drehzylinder eingebaut

This commit is contained in:
2020-12-07 07:40:07 +01:00
parent 17e17b8d92
commit 3e363eb58d
18 changed files with 74 additions and 19 deletions

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version="4.7.4.67 SP"?>
<?AutomationStudio Version="4.7.5.60 SP"?>
<Project Description="Lackierzelle doppelt" Version="1.00.0" Edition="Standard" EditionComment="Standard" xmlns="http://br-automation.co.at/AS/Project">
<Communication>
<OnlineConfiguration Name="Lackier_DOu" DeviceType="TCPIP" DeviceParameters="/IF=tcpip /LOPO=11159 /SA=96" ConnectionParameters="/COMT=2500 /RT=1000 /AM=* /SDT=5 /DAIP=192.168.1.142 /REPO=11159 /ANSL=1 /PT=11169" Description="" />

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version="4.7.4.67 SP"?>
<?AutomationStudio Version="4.7.5.60 SP"?>
<ProjectSettings xmlns="http://br-automation.co.at/AS/ProjectSettings">
<ConfigurationManager ActiveConfigurationName="Config1" />
<Deployment Value="ActiveCpu" />

View File

@@ -46,6 +46,11 @@ PROGRAM _CYCLIC
lRobInterface.FromRobot.bRotateFw := dpInByte[2].3;
//R<EFBFBD>ckw<EFBFBD>rts Rotieren
lRobInterface.FromRobot.bRotateBw := dpInByte[2].4;
//Schwenken auf 0<EFBFBD>
lRobInterface.FromRobot.bPos0 := dpInByte[2].5;
//Schwenken auf 180<EFBFBD>
lRobInterface.FromRobot.bPos180 := dpInByte[2].6;
//Eingangs Byte 3 (24-31)
@@ -110,7 +115,11 @@ PROGRAM _CYCLIC
//Ausgangs Byte 3 (24-31)
//Schlitten in Lackierposition
dpOutByte[3].0 := lRobInterface.ToRobot.bSlayInSprayPos;
//In Pos 0<EFBFBD> gedreht
dpOutByte[3].1 := lRobInterface.ToRobot.bInPos0;
//In Pos 180<EFBFBD> gedreht
dpOutByte[3].2 := lRobInterface.ToRobot.bInPos180;
//Ausgangs Byte 4 (32-39)
//Ausgangs Byte 5 (40-47)
dpOutByte[5] := lABBRobot.Out.usProgNr;

View File

@@ -33,6 +33,8 @@ TYPE
END_STRUCT;
gtyp_ToRobot : STRUCT
bSlayInSprayPos : BOOL; (*Schlitten in Lackierpos*)
bInPos0 : BOOL; (*Drehen in Pos 0<>*)
bInPos180 : BOOL; (*Drehen in Pos 180<38>*)
uiRotationPos : UINT; (*Rotationsposition (0-360<36>) IST*)
usParts : USINT; (*Anuzahl Teile*)
END_STRUCT;
@@ -46,6 +48,8 @@ TYPE
bPaintWide : BOOL; (*Pistole Breitstrahl*)
bRotateFw : BOOL; (*Vorw<72>rts Rotieren*)
bRotateBw : BOOL; (*R<>ckw<6B>rts Rotieren*)
bPos0 : BOOL; (*Drehen auf Pos 0<>*)
bPos180 : BOOL; (*Drehen auf Pos 180<38>*)
usRotationSpeed : USINT; (*Rotationsgeschwindigkeit 1-255*)
uiRotationPos : UINT; (*Rotationsposition (0-360<36>) SOLL*)
END_STRUCT;

View File

@@ -75,6 +75,24 @@ ACTION DoCylinderPos:
States.CylinderPos.bSlayFw := bInSlayFw;
States.CylinderPos.bAirFlapOpen := Valves.bOpenFlap AND bInAirFlapOpen;
States.CylinderPos.bAirFlapClosed := NOT Valves.bOpenFlap AND bInAirFlapClosed;
FUBs.TON_Pos0.IN := bOuTurn0;
FUBs.TON_Pos0.PT := t#3s500ms;
FUBs.TON_Pos0();
IF FUBs.TON_Pos0.Q THEN
States.CylinderPos.bPos0 := TRUE;
ELSIF Valves.bTurn180 THEN
States.CylinderPos.bPos0 := FALSE;
END_IF
FUBs.TON_Pos180.IN := bOuTurn180;
FUBs.TON_Pos180.PT := t#3s500ms;
FUBs.TON_Pos180();
IF FUBs.TON_Pos180.Q THEN
States.CylinderPos.bPos180 := TRUE;
ELSIF NOT Valves.bTurn180 THEN
States.CylinderPos.bPos180 := FALSE;
END_IF
END_ACTION
@@ -131,20 +149,22 @@ ACTION DoValveCtrl:
//Ventile ansteuern
//===================================================
bOuGripperChangeOpen := Valves.bToolChangerOpen;
bOuSlayFw := Valves.bSlayFw AND States.bSafetyOk; // FixMe
bOuSlayBw := Valves.bSlayBw AND States.bSafetyOk; // FixMe
bOuSlayFw := Valves.bSlayFw AND States.bSafetyOk;
bOuSlayBw := Valves.bSlayBw AND States.bSafetyOk;
bOuTurn0 := NOT Valves.bTurn180 AND States.bSafetyOk AND States.CylinderPos.bSlayFw;
bOuTurn180 := Valves.bTurn180 AND States.bSafetyOk AND States.CylinderPos.bSlayFw;
bSOuCloseGate := Valves.bCloseGate AND States.bBumperOk;
bSOuOpenFlap := Valves.bOpenFlap;
//FixMe Zyklus
//FixMe Absaugung
//Luftpistolen deaktivieren
bOuPaintGunOn := (lCmdInterface.Robot.FromRobot.bPaintOn AND States.bSafetyOk) AND States.CylinderPos.bAirFlapOpen
AND NOT MpAlarmXCheckReaction (gMpAlarmXCore, AlarmNames.ReactionDisableGun);
bOuPaintRound := lCmdInterface.Robot.FromRobot.bPaintRound AND States.bSafetyOk AND NOT MpAlarmXCheckReaction (gMpAlarmXCore, AlarmNames.ReactionDisableGun);
bOuPaintWide := lCmdInterface.Robot.FromRobot.bPaintWide AND States.bSafetyOk AND NOT MpAlarmXCheckReaction (gMpAlarmXCore, AlarmNames.ReactionDisableGun);
END_ACTION
@@ -153,6 +173,8 @@ ACTION DoMachToRob:
//Interface zum Roboter beschreiben
//===================================================
lCmdInterface.Robot.ToRobot.bSlayInSprayPos := States.CylinderPos.bSlayFw;
lCmdInterface.Robot.ToRobot.bInPos0 := States.CylinderPos.bPos0;
lCmdInterface.Robot.ToRobot.bInPos180 := States.CylinderPos.bPos180;
END_ACTION
ACTION DoAlarms:
@@ -199,7 +221,7 @@ ACTION DoAlarms:
//Zylinder<EFBFBD>berwachung Schutztor
FUBs.CylCtrl_AirFlap.bInOutputCylinderBw := Valves.bOpenFlap;
FUBs.CylCtrl_AirFlap.bInOutputCylinderFw := Valves.bCloseGate;
FUBs.CylCtrl_AirFlap.bInOutputCylinderFw := NOT Valves.bOpenFlap;
FUBs.CylCtrl_AirFlap.bInSensorCylinderBw := bInAirFlapOpen;
FUBs.CylCtrl_AirFlap.bInSensorCylinderFw := bInAirFlapClosed;
FUBs.CylCtrl_AirFlap.tInCylinderBw := t#4s;

View File

@@ -97,7 +97,16 @@ PROGRAM _CYCLIC
IF lMachine.bMachineON THEN
END_IF
//Drehzylinder ansteuern
IF ((lMachine.enMode = enMACH_JOG) OR (lMachine.enMode = enMACH_AUTOMATIC)) AND States.CylinderPos.bSlayFw THEN
IF lCmdInterface.Robot.FromRobot.bPos0 THEN
Valves.bTurn180 := FALSE;
END_IF
IF lCmdInterface.Robot.FromRobot.bPos180 THEN
Valves.bTurn180 := TRUE;
END_IF
END_IF
//Achse in Hand und Automatik von Roboter bedienen wenn Schlitten in lackierposition
IF ((lMachine.enMode = enMACH_JOG) OR (lMachine.enMode = enMACH_AUTOMATIC)) AND NOT States.CylinderPos.bSlayBw THEN
CASE enStepAxis OF
@@ -111,10 +120,10 @@ PROGRAM _CYCLIC
//END_IF
//Sonst Positionierung/Drehung von RoboterSignal
IF (MpFUB.AxBasic_X.Position >= 0) AND (MpFUB.AxBasic_X.Position <= 360) THEN
IF NOT FC_InTolerance (lCmdInterface.Robot.FromRobot.uiRotationPos, lCmdInterface.Robot.ToRobot.uiRotationPos, -2, +2) THEN
IF NOT FC_InTolerance (lCmdInterface.Robot.FromRobot.uiRotationPos, lCmdInterface.Robot.ToRobot.uiRotationPos, -2, +2) AND States.CylinderPos.bPos0 THEN
//Positionieren
enStepAxis := enAxisStep_StartPos;
ELSIF lCmdInterface.Robot.FromRobot.bRotateFw OR lCmdInterface.Robot.FromRobot.bRotateBw THEN
ELSIF (lCmdInterface.Robot.FromRobot.bRotateFw OR lCmdInterface.Robot.FromRobot.bRotateBw) AND States.CylinderPos.bPos0 THEN
//Rotieren (Pos Speichern f<EFBFBD>r R<EFBFBD>ckcker zur Pos
enStepAxis := enAxisStep_TurningCont;
MpData.AxPar_X.Velocity := 10.0 + USINT_TO_REAL (lCmdInterface.Robot.FromRobot.usRotationSpeed) * 2.0; // <EFBFBD>/s
@@ -415,7 +424,7 @@ PROGRAM _CYCLIC
//Wait for Motors Off und Schlitten Ausgefahren
//---------------------------
enAutoStep_WAIT_MOT_OFF_SLAY_OUT:
Valves.bSlayBw := TRUE;
Valves.bSlayBw := States.CylinderPos.bPos0;
Valves.bSlayFw := FALSE;
IF NOT lABBRobot.In.bProgramRun THEN

View File

@@ -20,6 +20,8 @@ VAR
bOuPaintGunOn : BOOL; (*Farbpistole Nadel Auf*)
bOuPaintRound : BOOL; (*Farbpistole Rundstrahl*)
bOuPaintWide : BOOL; (*Farbpistole Breitstrahl*)
bOuTurn0 : BOOL; (*Schwenkarm auf 0<> drehen*)
bOuTurn180 : BOOL; (*Schwenkarm auf 180<38> drehen*)
bOuLampGreen : BOOL; (*LED Starttaster*)
bOuFireTestReset : BOOL; (*Reset / Test Feuermelder*)
bOuOperationToSucktion : BOOL; (*Meldung Betrieb an Absaugung*)

View File

@@ -4,6 +4,8 @@ TYPE
TON_SafetyOk : TON;
TON_UnlockTool : TON;
TON_ErrorSucktion : TON;
TON_Pos0 : TON;
TON_Pos180 : TON;
CylCtrl_Slay : FUB_CylinderCheck;
CylCtrl_Gate : FUB_CylinderCheck;
CylCtrl_AirFlap : FUB_CylinderCheck;
@@ -25,6 +27,7 @@ TYPE
bSlayBw : BOOL; (*Werkzeugschlitten R<>ck (Grundstellung)*)
bOpenFlap : BOOL; (*Absaugklappe <20>ffnen*)
bCloseGate : BOOL;
bTurn180 : BOOL;
END_STRUCT;
typ_States : STRUCT (*Maschinenzust<73>nde*)
bSafetyOk : {REDUND_UNREPLICABLE} BOOL; (*Sicherheit Zelle Ok*)
@@ -42,6 +45,8 @@ TYPE
bGateOpen : BOOL; (*Einlegetor ge<67>ffnet*)
bAirFlapOpen : BOOL;
bAirFlapClosed : BOOL;
bPos0 : BOOL;
bPos180 : BOOL;
END_STRUCT;
typ_Times : STRUCT (*Zykluszeiten etc.*)
diSteptime : {REDUND_UNREPLICABLE} DINT; (*[<5B>s]*)

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version=4.7.4.67 SP?>
<?AutomationStudio Version=4.7.5.60 SP?>
<Cpu xmlns="http://br-automation.co.at/AS/Cpu">
<Objects>
<Object Type="File" Description="Software configuration">Cpu.sw</Object>

View File

@@ -269,4 +269,8 @@ VAR_CONFIG
guiSPLCInMaintDRightESTOPDiag AT %IW."21K1".UINT003;
MachCtrl:bOuGripperChangeOpen AT %QX."23K2".DigitalOutput05;
MachCtrl2:bOuGripperChangeOpen AT %QX."23K2".DigitalOutput06;
MachCtrl:bOuTurn180 AT %QX."23K4".DigitalOutput10;
MachCtrl:bOuTurn0 AT %QX."23K4".DigitalOutput09;
MachCtrl2:bOuTurn180 AT %QX."23K6".DigitalOutput10;
MachCtrl2:bOuTurn0 AT %QX."23K6".DigitalOutput09;
END_VAR

View File

@@ -5,17 +5,17 @@ HostName=SL12.xy.org
Destination=192.168.3.1
CommunicationMode=1
[GUI]
NameWidth=100
SortOrder=0
NameWidth=100
ASVarWidth=296
ViewMode=0
SortColumn=0
SADRWidth=202
SortColumn=0
DescriptionWidth=562
ChannelWidth=383
SplitterPosition=2205
StateWidth=100
SDVarWidth=416
StateWidth=100
[Manual]
Timeout=1000
Port=50000

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<osdd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ethernet-powerlink.org/osdd osdd.xsd" xmlns:xlink="http://www.w3.org/1999/xlink" Version="1.6" xmlns="http://www.ethernet-powerlink.org/osdd">
<Topology SafetyDomain="1">
<GeneratorDescription Name="AutomationStudio" Version="4.7.4.67" LanguageID="1">
<GeneratorDescription Name="AutomationStudio" Version="4.7.5.60" LanguageID="1">
<Info Name="ARVersion" Value="47301" />
<Info Name="SafetyRelease" Value="1.10" />
<Info Name="Communication" Value="/IF=tcpip /LOPO=11159 /SA=96 /COMT=2500 /RT=1000 /AM=* /SDT=5 /DAIP=192.168.1.142 /REPO=11159 /ANSL=1 /PT=11169 /PORT=50000" />

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<osdd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ethernet-powerlink.org/osdd osdd.xsd" xmlns:xlink="http://www.w3.org/1999/xlink" Version="1.6" xmlns="http://www.ethernet-powerlink.org/osdd">
<Topology SafetyDomain="1">
<GeneratorDescription Name="AutomationStudio" Version="4.7.4.67" LanguageID="1">
<GeneratorDescription Name="AutomationStudio" Version="4.7.5.60" LanguageID="1">
<Info Name="ARVersion" Value="47301" />
<Info Name="SafetyRelease" Value="1.10" />
<Info Name="Communication" Value="/IF=tcpip /LOPO=11159 /SA=96 /COMT=2500 /RT=1000 /AM=* /SDT=5 /DAIP=192.168.1.142 /REPO=11159 /ANSL=1 /PT=11169 /PORT=50000" />

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<?AutomationStudio Version="4.7.4.67 SP"?>
<?AutomationStudio Version="4.7.5.60 SP"?>
<ProjectSettings xmlns="http://br-automation.co.at/AS/ProjectSettings">
<ConfigurationManager ActiveConfigurationName="Config1" />
<Deployment Value="ActiveCpu" />