Hallo, ich arbeite gerade an einem Schienensystem in dem mehrere Fahrzeuge sitzen. Jedes Fahrzeug besitz eine 6ES7151-8AB01-0AB0 SIE SIMATIC DP, IM151-8 PN/DP CPU ET200S. der Datenaustausch findet über einer IP statt. Nun wollen wir die Busadresse der DIP Schalter nutzen um die Fahrzeuge zu identifizieren. Das heisst wenn die DIP Schalter auf den Wert 16 eingestellt ist, soll das System es als Fahrzeug 16 erkennen. Gibt es Möglichkeiten, das man die eingestellte Adresse irgendwie auslesen kann?
THX für eueren Vorschlag
Beiträge von Gladiator
-
-
HalloHabe das schon mit der WinCC flexible Runtime gemacht. Sobald du Skripte (VB) verwenden kannst, kann ich dir ein Beispiel schicken.
das klingt doch super. Und würde es gerne mal ausprobieren.
-
Ich habe wohl herausgefunden, wie es möglich ist Protokolle zu Drucken, aber nicht wie man eine Variable durch setzen eines Bits in eine csv speichert.
Vielleicht ist es ja möglich, die Sache über einen Script zu bewerkstelligen, doch dafür brauchte ich evtl. eine Vorlage oder so.... -
Hallo,
ich muss von einer Anlage bei dem der Ausschuss gewogen wird, nach Wechsel des vollen Behälters, durch Quittierung den Wert der Waage in eine csv Datei Protokollieren. Nur weisß ich nicht wie ich das am geschicktesten anstelle. Habe es versucht mit Variablenarchiv und mit einer Rezeptur im WINCC,
hat aber nicht funktioniert.
Hoffe mal auf eure Hilfe..Gruß Gladi
-
Hi Roboterkollegen,auf www.krceditor.de steht die aktuelle Version 2.0.1.3 BETA1 zum download für euch bereit.
Bitte benutzt für Fragen, Anregungen und Kommentare rund um das Thema KRC Editor diesen Thread. Ich werde euch Rede und Antwort stehen.
Wünsche euch viel Spaß und Erfolg mit dem Editor...
Hallo, habe gerade den Editor gedownloadet, die Optik ist ja schon mal pitze und es läuft unter Win 7 .. freu.
Jetzt brauche ich noch einen Aktivierungscode.
Vielen Dank im Voraus
Gruß -
Hallo zusammen
ich habe einen Quickguide Thema RoboTeam in Englisch über.
Wer zuerst kommt mahlt zuerst. ;D
Kurze Mail
Gruß -
Warum sind die Achsen Asynchron?die Achsen E1 und E2 sind lediglich nur zum palettieren. Das Programm wurde von einer Fremdfirma erstellt.
-
&ACCESS RVO
&COMMENT Leergutsortierung Bahn 2 Asynchron
DEF steinibahn_2asy( )$ov_async = $ov_pro
;FOLD -- Geschwindigkeit von Rob 2 --
$vel_extax[1] = 100
$vel_extax[2] = 100
$acc_extax[1] = 100
$acc_extax[2] = 100
$async_flt = $filter
;---------------------------------------------------------------------
;ENDFOLDIF $T1 THEN
ASYCANCEL 0
ELSESWITCH SCHRITT2
;---------------------------------------------------------------------
CASE 0 ;*** ROB 2 - SCHRITT 0: Home 12 ***GR2AUF=1 ; Variablen fuer Greifer zurücksetzten
GR2ZU=1 ; Variablen fuer Greifer zurücksetzten
KGR2ZU=1 ; Variablen fuer Greifer zurücksetzten
KGR2AUF=1 ; Variablen fuer Greifer zurücksetztenkorr_pal ( ) ;Stapelhoehe einlesen
IF ((START_B2) AND (SI_GR2_AUF==TRUE) AND (SAME_POS(HOME12,1) AND SAME_POS(HOME12,2))) THEN
SCHRITT2=1
VHOME=TRUE
FREIGABE2_TUER=TRUE
ELSE
IF $PRO_STATE1==#P_ACTIVE THEN
IF (X_ACHSE_B2) AND (SI_GR2_AUF) AND (NOT $T1) THEN
IF $ASYNC_STATE<>#BUSY THEN ; keine Doppelbeauftragung
VHOME=FALSE
FREIGABE2_TUER=FALSE
; IF ($AXIS_ACT.A1<-3105) AND ($AXIS_ACT.A1>-3107) THEN
IF ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
ASYPTP HOME12 ; Bewegung zur HOME12
ENDIF
ELSE
IF (SAME_POS(HOME12,1) AND SAME_POS(HOME12,2)) THEN
FREIGABE2_TUER=TRUE
IF (X_ACHSE_B2) AND ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) AND (SI_GR2_AUF) THEN
IF (HALT_TUER==FALSE) THEN
SCHRITT2=1
VHOME=TRUE
ELSE
IF ((HALT_TUER==TRUE)) THEN
SCHRITT2=0
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF (SI_GR2_AUF==FALSE) THEN
MELDUNGEN (10,0,0)
ENDIF
IF ($ASYNC_STATE==#PEND) OR ($ASYNC_STATE==#BUSY) THEN ;alle gespeicherten asyptp loeschen
ASYCANCEL 0
ENDIF
ENDIF
ENDIF
;---------------------------------------------------------------------;---------------------------------------------------------------------
CASE 1 ; *** ROB 2 - SCHRITT 1: Home nach POS23 Kästen ***;LEERFAHREN
IF (LEERFAHREN_ENDE_B2==TRUE) THEN
SCHRITT2=10
ENDIFIF (SAME_POS(POS23,1) AND SAME_POS(POS23,2)) AND ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
SCHRITT2=2
VHOME=FALSE
FREIGABE2_TUER=TRUE
ELSE
IF $PRO_STATE1==#P_ACTIVE THEN
IF (X_ACHSE_B2) AND (SI_GR2_AUF) AND (KLEMMUNG_AUF) AND (NOT $T1) AND (SI_FRG_KAESTEN_ROB2_B2) THEN
IF $ASYNC_STATE<>#BUSY THEN ; keine Doppelbeauftragung
VHOME=FALSE
FREIGABE2_TUER=FALSE
IF ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
ASYPTP POS23 ; Bewegung zu Greifposition Kästen
ENDIF
ELSE
IF (SAME_POS(POS23,1) AND SAME_POS(POS23,2)) THEN
FREIGABE2_TUER=TRUE
IF (HALT_TUER==FALSE) AND ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
SCHRITT2=2
ELSE
IF (HALT_TUER==TRUE) THEN
SCHRITT2=1
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF (SI_GR2_AUF==FALSE) THEN
MELDUNGEN (10,0,0)
ENDIF
IF (KLEMMUNG_AUF==FALSE) THEN
MELDUNGEN (44,0,0)
ENDIF
ENDIF
ELSE
IF ($ASYNC_STATE==#PEND) OR ($ASYNC_STATE==#BUSY) THEN;alle gespeicherte asyptp loeschen
ASYCANCEL 0
ENDIF
ENDIF
ENDIF
;---------------------------------------------------------------------;---------------------------------------------------------------------
CASE 2 ; *** ROB 2 - SCHRITT 2: Greifer 2 schliessen ***
IF ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THENVHOME=FALSE
SWITCH GR2ZU
CASE 1
SO_GR2_AUF=FALSE
SO_GR2_ZU=TRUE
GR2ZU=2
CASE 2
IF ((SI_GR2_ZU==FALSE) AND (SI_GR2_AUF==TRUE)) THEN
SCHRITT2=2
ELSE
IF ((SI_GR2_ZU==TRUE) AND (SI_GR2_AUF==FALSE)) THEN
SCHRITT2=3
korr_pal ( ) ;Stapelhoehe einlesen
GR2ZU=1
IF (LAGE_2==4) THENBNurKasten=SI_FRG_NKAESTEN_ROB2_B2
iBahn=2SO_LETZTE_LAGE_B2=TRUE
ENDIF
ENDIF
ENDIF
ENDSWITCH ; GR2ZU
ENDIF
;---------------------------------------------------------------------;---------------------------------------------------------------------
CASE 3 ;*** ROB 2 - SCHRITT 3: POS23 Kästen nach POS23o über Kästen ***
IF (SAME_POS(POS23Ok,1) AND SAME_POS(POS23Ok,2)) AND ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
SO_FRG_EINL_BELADER_B2=TRUE
SCHRITT2=4
VHOME=FALSE
FREIGABE2_TUER=TRUE
ELSE
IF $PRO_STATE1==#P_ACTIVE THEN
IF (X_ACHSE_B2) AND (SI_GR2_ZU) AND (KLEMMUNG_AUF) AND (NOT $T1) THEN
IF $ASYNC_STATE<>#BUSY THEN ; keine Doppelbeauftragung
VHOME=FALSE
FREIGABE2_TUER=FALSE
IF ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
ASYPTP POS23Ok ; Bewegung über Kästen
ENDIF
ELSE
IF (SAME_POS(POS23Ok,1) AND SAME_POS(POS23Ok,2)) THEN
SO_FRG_EINL_BELADER_B2=TRUE
FREIGABE2_TUER=TRUE
IF (HALT_TUER==FALSE) AND ((SI_PAL_INPOS_B2==TRUE) OR (SI_Platz_frei_B2==TRUE)) THEN
; IF (HALT_TUER==FALSE) AND (SI_PAL_INPOS_B2==TRUE) THEN
SCHRITT2=4
ELSE
IF (HALT_TUER==TRUE) THEN
SCHRITT2=3
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF (SI_GR2_ZU==FALSE) THEN
MELDUNGEN (43,0,0)
ENDIF
IF (KLEMMUNG_AUF==FALSE) THEN
MELDUNGEN (44,0,0)
ENDIF
ENDIF
ELSE
IF ($ASYNC_STATE==#PEND) OR ($ASYNC_STATE==#BUSY) THEN;alle gespeicherte asyptp loeschen
ASYCANCEL 0
ENDIF
ENDIF
ENDIF
;---------------------------------------------------------------------;---------------------------------------------------------------------
CASE 4 ;*** ROB 2 - SCHRITT 5: POS23o über Kästen nach POS24o über Palette ***
IF (SAME_POS(POS24Ok,1) AND SAME_POS(POS24Ok,2)) AND ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
SCHRITT2=5
VHOME=FALSE
korr_pal ( ) ;Stapelhoehe einlesen
FREIGABE2_TUER=TRUE
ELSE
IF $PRO_STATE1==#P_ACTIVE THEN
IF (X_ACHSE_B2) AND (SI_GR2_ZU) AND (NOT $T1) THEN
IF $ASYNC_STATE<>#BUSY THEN ; keine Doppelbeauftragung
VHOME=FALSE
FREIGABE2_TUER=FALSE
IF ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) AND ((SI_PAL_INPOS_B2==TRUE) OR (SI_Platz_frei_B2==TRUE)) THEN
; IF ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) AND (SI_PAL_INPOS_B2==TRUE) THEN
ASYPTP POS24Ok ; Bewegung über Palette
ENDIF
ELSE
IF (SAME_POS(POS24Ok,1) AND SAME_POS(POS24Ok,2)) THEN
FREIGABE2_TUER=TRUE
IF (HALT_TUER==FALSE) AND (SI_PAL_INPOS_B2==TRUE) THEN
; IF (HALT_TUER==FALSE) THEN
SCHRITT2=5
korr_pal ( )
ELSE
IF (HALT_TUER==TRUE) THEN
SCHRITT2=4
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF (SI_GR2_ZU==FALSE) THEN
MELDUNGEN (43,0,0)
ENDIF
ENDIF
ELSE
IF ($ASYNC_STATE==#PEND) OR ($ASYNC_STATE==#BUSY) THEN;alle gespeicherte asyptp loeschen
ASYCANCEL 0
ENDIF
ENDIF
ENDIF
;---------------------------------------------------------------------;---------------------------------------------------------------------
CASE 5 ;*** ROB 2 - SCHRITT 6: POS24o über Palette nach POS24k Palette ***
IF (SAME_POS(POS24k,1) AND SAME_POS(POS24k,2)) AND ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
SCHRITT2=6 ;7 ohne Klemmung
VHOME=FALSE
ELSE
IF $PRO_STATE1==#P_ACTIVE THEN
IF (X_ACHSE_B2) AND (SI_GR2_ZU) AND (KLEMMUNG_AUF) AND (NOT $T1) THEN
IF $ASYNC_STATE<>#BUSY THEN ; keine Doppelbeauftragung
VHOME=FALSE
FREIGABE2_TUER=FALSE
IF ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) AND (SI_PAL_INPOS_B2==TRUE) THEN
ASYPTP POS24k ; Bewegung zu Kästen-Ablageposition
ENDIF
ELSE
IF (SAME_POS(POS24k,1) AND SAME_POS(POS24k,2)) THEN
SCHRITT2=6 ;7 ohne Klemmung
ENDIF
ENDIF
ELSE
IF (SI_GR2_ZU==FALSE) THEN
MELDUNGEN (43,0,0)
ENDIF
IF (KLEMMUNG_AUF==FALSE) THEN
MELDUNGEN (44,0,0)
ENDIF
ENDIF
ELSE
IF ($ASYNC_STATE==#PEND) OR ($ASYNC_STATE==#BUSY) THEN;alle gespeicherte asyptp loeschen
ASYCANCEL 0
ENDIF
ENDIF
ENDIF
;---------------------------------------------------------------------;---------------------------------------------------------------------
CASE 6 ; *** ROB 2 - SCHRITT 4: Klemmung Greifer 2 schliessen ***
IF ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
VHOME=FALSE
SO_FRG_EINL_BELADER_B2=TRUESWITCH KGR2ZU
CASE 1 ; Klemmung Greifer 2 schliessen, wenn LAGE_2>0
IF (LAGE_2==0) THEN
SCHRITT2=7
KGR2ZU=1
ELSE
IF (LAGE_2>0) THEN
SO_KGR2L_AUF=FALSE
SO_KGR2L_ZU=TRUE
SO_KGR2R_AUF=FALSE
SO_KGR2R_ZU=TRUE
KGR2ZU=2
ENDIF
ENDIF
CASE 2 ;Kontrolle Klemmung Greifer 2 geschlossen
IF (KLEMMUNG_AUF) THEN
SCHRITT2=6
ELSE
IF (KLEMMUNG_ZU) THEN
SCHRITT2=7
KGR2ZU=1
ENDIF
ENDIFENDSWITCH ; KGR2ZU
ENDIF
;---------------------------------------------------------------------;---------------------------------------------------------------------
CASE 7 ; *** ROB 2 - SCHRITT 7: Greifer 2 öffnen ***
IF ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
VHOME=FALSE
FREIGABE2_TUER=TRUESWITCH GR2AUF
CASE 1
SO_GR2_ZU=FALSE
SO_GR2_AUF=TRUE
GR2AUF=2
CASE 2
IF ((SI_GR2_ZU==TRUE) AND (SI_GR2_AUF==FALSE)) THEN
SCHRITT2=7
ELSE
IF ((SI_GR2_ZU==FALSE) AND (SI_GR2_AUF==TRUE)) THEN
SCHRITT2=8
GR2AUF=1
IF LAGE_2<5 THEN
LAGE_2=LAGE_2+1
ENDIF
ENDIF
ENDIF
ENDSWITCH ; GR2AUF
ENDIF
;---------------------------------------------------------------------;---------------------------------------------------------------------
CASE 8 ; *** ROB 2 - SCHRITT 8: Klemmung Greifer 2 oeffnen ***
IF ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
VHOME=FALSE
SWITCH KGR2AUF
CASE 1
SO_KGR2L_ZU=FALSE
SO_KGR2L_AUF=TRUE
SO_KGR2R_ZU=FALSE
SO_KGR2R_AUF=TRUE
KGR2AUF=2
KGR2AUF=1
IF (LAGE_2==3) OR (LAGE_2==4) THEN
POS23ok.e2=POS23ok.e2-100
SCHRITT2=12
ENDIF
IF (LAGE_2==0) OR (LAGE_2==5) THEN
SCHRITT2=10
ENDIF
IF (LAGE_2==1) OR (LAGE_2==2) THEN
SCHRITT2=9
ENDIF
KGR2AUF=1CASE 2
IF (KLEMMUNG_ZU) THEN
SCHRITT2=8
ELSE
IF (KLEMMUNG_AUF) THENIF (LAGE_2==3) OR (LAGE_2==4) THEN
SCHRITT2=12
ENDIF
IF (LAGE_2==0) OR (LAGE_2==5) THEN
SCHRITT2=10
ENDIF
IF (LAGE_2==1) OR (LAGE_2==2) THEN
SCHRITT2=9
ENDIFKGR2AUF=1
ENDIF
ENDIF
ENDSWITCH ; KGR2AUF
ENDIF
;---------------------------------------------------------------------;---------------------------------------------------------------------
CASE 9 ;*** ROB 2 - SCHRITT 9: POS24 Palette nach POS24o über Palette ***
IF (SAME_POS(POS24Ok,1) AND SAME_POS(POS24Ok,2)) AND ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
VHOME=FALSE
IF (LAGE_2>0) AND (LAGE_2<5) THEN
SCHRITT2=12 ;Pos23Ok
ELSE
SCHRITT2=10 ;Home
ENDIF
FREIGABE2_TUER=TRUE
ELSE
IF $PRO_STATE1==#P_ACTIVE THEN
IF (X_ACHSE_B2) AND (SI_GR2_AUF) AND (NOT $T1) THEN
IF $ASYNC_STATE<>#BUSY THEN ; keine Doppelbeauftragung
VHOME=FALSE
FREIGABE2_TUER=FALSE
IF ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
ASYPTP POS24Ok ; Bewegung über Palette
ENDIF
ELSE
IF (SAME_POS(POS24Ok,1) AND SAME_POS(POS24Ok,2)) THEN
FREIGABE2_TUER=TRUE
IF (HALT_TUER==FALSE) AND ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
IF (LAGE_2>0) AND (LAGE_2<5) THEN
SCHRITT2=12 ;Pos24Ok
ELSE
SCHRITT2=10 ;Home
ENDIF
ELSE
IF (HALT_TUER==TRUE) THEN
SCHRITT2=9
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF (SI_GR2_AUF==FALSE) THEN
MELDUNGEN (10,0,0)
ENDIF
ENDIF
ELSE
IF ($ASYNC_STATE==#PEND) OR ($ASYNC_STATE==#BUSY) THEN;alle gespeicherte asyptp loeschen
ASYCANCEL 0
ENDIF
ENDIF
ENDIF
;---------------------------------------------------------------------;---------------------------------------------------------------------
CASE 12 ;*** ROB 2 - SCHRITT 12: POS24Ok über Palette nach POS23Ok über Kästen ***
IF (SAME_POS(POS23Ok,1) AND SAME_POS(POS23Ok,2)) AND ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
VHOME=FALSE
IF (LAGE_2>0) AND (LAGE_2<5) AND (LEERFAHREN_ENDE_B2==FALSE) THEN
SCHRITT2=13 ;Pos 23
ELSE
SCHRITT2=10 ;Home
ENDIF
FREIGABE2_TUER=TRUE
ELSE
IF $PRO_STATE1==#P_ACTIVE THEN
IF (X_ACHSE_B2) AND (SI_GR2_AUF) AND (NOT $T1) THEN
IF $ASYNC_STATE<>#BUSY THEN ; keine Doppelbeauftragung
VHOME=FALSE
FREIGABE2_TUER=FALSE
IF ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
ASYPTP POS23Ok ; Bewegung über Kästen
ENDIFELSE
IF (SAME_POS(POS23Ok,1) AND SAME_POS(POS23Ok,2)) THEN
FREIGABE2_TUER=TRUE
IF (HALT_TUER==FALSE) AND ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
IF (LAGE_2>0) AND (LAGE_2<5) AND (LEERFAHREN_ENDE_B2==FALSE) THEN
SCHRITT2=13 ;Pos23
ELSE
SCHRITT2=10 ;Home
ENDIF
ELSE
IF (HALT_TUER==TRUE) THEN
SCHRITT2=12
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF (SI_GR2_AUF==FALSE) THEN
MELDUNGEN (10,0,0)
ENDIF
ENDIF
ELSE
IF ($ASYNC_STATE==#PEND) OR ($ASYNC_STATE==#BUSY) THEN;alle gespeicherte asyptp loeschen
ASYCANCEL 0
ENDIF
ENDIF
ENDIF
;---------------------------------------------------------------------;---------------------------------------------------------------------
CASE 13 ;*** ROB 2 - SCHRITT 13: POS23Ok nach POS23 kurz über Kästen ***;LEERFAHREN
IF (LEERFAHREN_ENDE_B2==TRUE) THEN
SCHRITT2=10
ENDIFIF (SAME_POS(POS23,1) AND SAME_POS(POS23,2)) AND ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
SCHRITT2=2
VHOME=FALSE
FREIGABE2_TUER=TRUE
ELSE;IF ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) and (Klemmung_auf) THEN
;ASYPTP POS23 ; Bewegung kurz über Kästen
;ENDIFIF $PRO_STATE1==#P_ACTIVE THEN
IF (X_ACHSE_B2) AND (SI_GR2_AUF) AND (KLEMMUNG_AUF) AND (NOT $T1) AND (SI_FRG_KAESTEN_ROB2_B2==true) THEN
IF $ASYNC_STATE<>#BUSY THEN ; keine Doppelbeauftragung
VHOME=FALSE
FREIGABE2_TUER=FALSE
IF ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
ASYPTP POS23 ; Bewegung kurz über Kästen
ENDIF
ELSE
IF (SAME_POS(POS23,1) AND SAME_POS(POS23,2)) THEN
FREIGABE2_TUER=TRUE
IF (HALT_TUER==FALSE) AND ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) and (si_frg_kaesten_rob2_b2==true) THEN
SCHRITT2=2
ELSE
IF (HALT_TUER==TRUE) THEN
SCHRITT2=13
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF (SI_GR2_AUF==FALSE) THEN
MELDUNGEN (10,0,0)
ENDIF
IF (KLEMMUNG_AUF==FALSE) THEN
MELDUNGEN (44,0,0)
ENDIF
ENDIF
ELSE
IF ($ASYNC_STATE==#PEND) OR ($ASYNC_STATE==#BUSY) THEN;alle gespeicherte asyptp loeschen
ASYCANCEL 0
ENDIF
ENDIF
ENDIF
;---------------------------------------------------------------------;---------------------------------------------------------------------
CASE 10 ;*** ROB 2 - SCHRITT 10: POS24o über Palette nach Home ***korr_pal ( ) ;Stapelhoehe einlesen
IF (SAME_POS(HOME12,1) AND SAME_POS(HOME12,2)) AND ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
;LEERFAHREN
IF (LEERFAHREN_ENDE_B2==TRUE) THEN
BLeerfahren=TRUE
SO_LETZTE_LAGE_B2=TRUE
LAGE_2=5
LEERFAHREN_ENDE_B2=FALSE
SPEICHERN_KI_B2=FALSE
SPEICHERN_FL_B2=FALSE
ENDIFSCHRITT2=11
VHOME=TRUE
FREIGABE2_TUER=TRUE
ELSE
IF $PRO_STATE1==#P_ACTIVE THEN
IF (X_ACHSE_B2) AND (SI_GR2_AUF) AND (NOT $T1) THEN
IF $ASYNC_STATE<>#BUSY THEN ; keine Doppelbeauftragung
VHOME=FALSE
FREIGABE2_TUER=FALSE
IF ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
ASYPTP HOME12 ; Bewegung zu Home12
ENDIF
ELSE
IF (SAME_POS(HOME12,1) AND SAME_POS(HOME12,2)) THEN
FREIGABE2_TUER=TRUE
;LEERFAHREN
IF (LEERFAHREN_ENDE_B2==TRUE) THEN
BLeerfahren=TRUE
SO_LETZTE_LAGE_B2=TRUE
LAGE_2=5
LEERFAHREN_ENDE_B2=FALSE
SPEICHERN_KI_B2=FALSE
SPEICHERN_FL_B2=FALSE
ENDIF
IF (HALT_TUER==FALSE) AND ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) THEN
SCHRITT2=11
VHOME=TRUE
ELSE
IF (HALT_TUER==TRUE) THEN
SCHRITT2=10
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
IF (SI_GR2_AUF==FALSE) THEN
MELDUNGEN (10,0,0)
ENDIF
ENDIF
ELSE
IF ($ASYNC_STATE==#PEND) OR ($ASYNC_STATE==#BUSY) THEN;alle gespeicherte asyptp loeschen
ASYCANCEL 0
ENDIF
ENDIF
ENDIF
;---------------------------------------------------------------------;---------------------------------------------------------------------
CASE 11 ;*** Entscheidung weiter auf Bahn 2 oder Bahnwechsel ??? ***
IF ((START_B2) AND (NOT START_B1)) AND (X_ACHSE_B2) AND ($AXIS_ACT.A1<($AXIS_HOME[2].A1+3)) AND ($AXIS_ACT.A1>($AXIS_HOME[2].A1-3)) AND (SI_GR2_AUF) THENIF (NOT Pal_fertig_B2) THEN
SCHRITT2=1
ELSE
IF (SCHRITT1==6) AND ($IN_HOME2) AND (NOT SI_FRG_GENUG_FLASCHEN_B2) THEN
START_B2=FALSE
ENDIF
SCHRITT2=14
; BLeerfahren=FALSE
ENDIF
ENDIF
;---------------------------------------------------------------------ENDSWITCH ; SCHRITT2
ENDIFEND
DEFFCT BOOL SAME_POS (P_POS :IN,ACHSE :IN)
E6POS P_POS
INT ACHSE
REAL VALUE1
REAL VALUE2SWITCH ACHSE
CASE 1
VALUE1=P_POS.E1
VALUE2=$AXIS_ACT.E1IF (ABS(VALUE1-VALUE2)<1) THEN
RETURN (TRUE)
ELSE
RETURN (FALSE)
ENDIFCASE 2
VALUE1=P_POS.E2
VALUE2=$AXIS_ACT.E2IF (ABS(VALUE1-VALUE2)<1) THEN
RETURN (TRUE)
ELSE
RETURN (FALSE)
ENDIFENDSWITCH
ENDFCT
-
Guten Morgen,
auf Arbeit gibt es mal wieder Stress, weil die Taktzeiten nicht stimmen, uns fehlen blöde 4 sec.
Wir haben flächenportale, die Beinhaltet 5 Achsen.
1 X Achse (A1), daran sind zwei verschiedene Systemeein Flascheneinpacker Y Achse (A2) - Z Achse (A3)
zweite System Palettierer
Y Achse (E1 Asynchron)
z Achse (E2 Asynchron)Die Achsen a1 - a3 werden im Hauptprogramm abgefahren.
Die Externen Achsen werden durch die SPS.SUB gesteuert, in dem ein weiteres SUB Programm aufgerufen wird...
z.B. Bahn1_asy.sub. In diesem Proggramm werden dann die Externen Achsen angesteuert zum Palettieren..Das Problem Nach jeder Bewegung bleiben die externen Achsen stehen, weil jede Position durch same pos abgefragt werden, um sicher zu gehen das die Externen achsen auch wirklich bis zu Position fahren.
Gibt es Möglichkeiten ihn über positionen schleifen zu lassen, oder das die Achsen flüssiger laufen.., bin gerne bereit das sub Programm zukommen zu lassen.
Vielen Dank
-
Hallo,
die Variante im SPS.sub gefällt mir ganz gut, wollte das Rücksetzen im Automatikbetrieb ebenfalls über eine Boolsche Variable relisieren.
Bei mir ist es auf jeden Fall so, das bei umschalten auf Automatik, automatisch das Cell Programm angewählt wird...,
Macht das System dann Faxen wenn der Hauptschalter auf Automatik stehen bleibt und zusätzlich über der Variable das Programm zurückgesetzt werden soll??
-
Ich hab bisher keinen vernünftigen Ersatz gefunden, das MS Office 2007 macht immer Konvertierungsfehler. Ausserdem lässt sich die LFD Nummer nicht ändern.
Versuche gerade die datei Neu zu schreiben und vielleicht dann umbenennen in mdb, mal sehen ob es funct. -
Hallo,
habe mal ein dringende Frage...
auf unseren KUKA Portalen läuft eine Telegrammsoftware in Verbindung mit dem OPC.
In der Telegrammsoftware sind Dateien mit der Endung mdb. Dieses Dateiformat ist mict Access 97 erstellt worden. Nur leider ist die Datei mit dem aktuellen Office Accsess nicht mehr zu bearbeiten.Weiss jemand mit welchem Programm man mdb dateien bearbeiten kann, oder hat vielleicht noch jemand Accsess 97.
Ist sehr dringend, weil unsere Anlagen ohne Telegrammverkehr nicht ordentlich arbeiten. Vielen Dank -
hallo scotty,
die Aussage finde ich gut, wir haben an jedem Roboter den OPC Server wegen dem Telegramm Verkehr installiert.
Dann freue ich mich über Vorschläge, wie ich das einbinden kann. Wäre ja super nett von Dir.
Gruß jochen
-
Soweit war ich schon, aber trotzdem ist es immer noch viel Zeit die drauf geht.
Deswegen suche ich nach Möglichkeiten, das sich der Stand von selbst einträgt....,
Also müsste man dann der Excellddatei sagen wo es sich die Daten holen soll, aber wie... , vielleicht gibt es hier ja Experten auf diesem Fach. -
Hallo, habe jetzt schon eine ganze Weile gesucht und aufgegeben.
Und zwar müssen wir zur jeder Nachtschicht um 00:00 Uhr alle Zähler aufschreiben und reseten. Zuerst auf Papier form und dann irgendwann wen mal Zeit ist in eine Excelldatei übertragen. Bei 13 Robotern * 10 Zähler ist das ein imenser Aufwand.
Dieses würde ich gerne Automatisieren, Aber wie bekomme ich die Stände in die Excell Tabelle rein. Geht das überhaupt?? Netzwerke sind überall ausgetstattet. Dann schon mal vielen Dank.
-
Hallo,
habe mir gerade mal die Beiträge durchgelesen. Genau den gleichen Fehler gab es bei uns auch schon. Aber geenau wie simeonw das schon sagte, bei uns war nach Austausch des PM alles wider i.O.. Gott sei Dank.
-
Hallo,
demnach ist der Quellcode wohl nicht vorhanden? Wenn doch, dann kann man
das dort relativ einfach sicherstellen, dass bei einem zweiten Aufruf das zuerst aufgerufene
in den Vordergrund kommt und das neue dann beendet wird.Anstelle irgend einer Script-Sprache könnte man auch eine 'normale' Programmiersprache
hernehmen und ein Startprogramm schreiben, das die Task in den Vordergrund holt.Google ist Dein Freund, z.Bsp.:
http://www.google.de/#hl=de&so…round&fp=93dc95491b6a16f1http://www.visualbasicscript.c…gh=&m=69221&mpage=1#69221
Weiss aber nicht ob VBscript auf den Robotern ohne weiteres läuft.
Hermann
Hallo Hermann,
habe das Problem wie folgt gelöst, rufe einfach über einer angelgten Menu Key den Task Manager auf, dann ist es kein Problem mehr an die Software zu gelangen.
Wie kann ich die Folds im Usermodus öffnen lassen??
vlg Jochen
-
Hallo,
demnach ist der Quellcode wohl nicht vorhanden? Wenn doch, dann kann man
das dort relativ einfach sicherstellen, dass bei einem zweiten Aufruf das zuerst aufgerufene
in den Vordergrund kommt und das neue dann beendet wird.Anstelle irgend einer Script-Sprache könnte man auch eine 'normale' Programmiersprache
hernehmen und ein Startprogramm schreiben, das die Task in den Vordergrund holt.Google ist Dein Freund, z.Bsp.:
http://www.google.de/#hl=de&so…round&fp=93dc95491b6a16f1http://www.visualbasicscript.c…gh=&m=69221&mpage=1#69221
Weiss aber nicht ob VBscript auf den Robotern ohne weiteres läuft.
Hermann
Hi Herrmann,
habe das Problem wie folgt gelöst.
Abe unter Anzeige ein Pfad hinzugefügt, indem der Task Manager aufgerufen wird, von da aus kann man dann in die Telegrammsoftware wechseln.Kannst du mir verraten, wie man die Folds auch im User öffnen kann?
vlg Jochen
-
Hallo,
funktioniert der Aufruf für D:\Telegramm... wirklich nicht?
Bin der Meinung dass ich das so schon gemacht habe.Im Zweifelsfall dann halt irgendwo auf C: installieren.
Für das 'Verbinden' mit der laufenden Task:
Da muss man das aufgerufene Programm entsprechend programmieren,
so dass nur eine Instanz möglich ist. (Ohne Quellcode ist das dann nicht
relisierbar).Mir wäre da kein einfacher Weg bekannt einen laufenden Prozess in den
Vordergrund zu holen. Evtl. irgend eine Script-/Batch-Sprache.Hermann
Hallo Hermann,selbst wenn es mit der Pfadangabe funktionieren sollte, dann würde das Programm nochmal versuchen einen Prozess zu starten. Deshalb kann ich nur den Prozess aus dem Task benutzen. Wie bekomme ich heraus, wie man so einen Script schreibt??
-