Beiträge von Gladiator

    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

    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


    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ß

    &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
    ;---------------------------------------------------------------------
    ;ENDFOLD


    IF $T1 THEN
    ASYCANCEL 0
    ELSE


    SWITCH 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ücksetzten


    korr_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
    ENDIF


    IF (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)) THEN


    VHOME=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) THEN


    BNurKasten=SI_FRG_NKAESTEN_ROB2_B2
    iBahn=2


    SO_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=TRUE


    SWITCH 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
    ENDIF


    ENDSWITCH ; 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=TRUE


    SWITCH 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=1


    CASE 2
    IF (KLEMMUNG_ZU) THEN
    SCHRITT2=8
    ELSE
    IF (KLEMMUNG_AUF) THEN


    IF (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
    ENDIF


    KGR2AUF=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
    ENDIF


    ELSE
    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
    ENDIF


    IF (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
    ;ENDIF


    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==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
    ENDIF


    SCHRITT2=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) THEN


    IF (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
    ENDIF


    END


    DEFFCT BOOL SAME_POS (P_POS :IN,ACHSE :IN)


    E6POS P_POS
    INT ACHSE
    REAL VALUE1
    REAL VALUE2


    SWITCH ACHSE


    CASE 1
    VALUE1=P_POS.E1
    VALUE2=$AXIS_ACT.E1


    IF (ABS(VALUE1-VALUE2)<1) THEN
    RETURN (TRUE)
    ELSE
    RETURN (FALSE)
    ENDIF


    CASE 2
    VALUE1=P_POS.E2
    VALUE2=$AXIS_ACT.E2


    IF (ABS(VALUE1-VALUE2)<1) THEN
    RETURN (TRUE)
    ELSE
    RETURN (FALSE)
    ENDIF


    ENDSWITCH


    ENDFCT

    Guten Morgen,


    auf Arbeit gibt es mal wieder Stress, weil die Taktzeiten nicht stimmen, uns fehlen blöde 4 sec. :denk:


    Wir haben flächenportale, die Beinhaltet 5 Achsen.
    1 X Achse (A1), daran sind zwei verschiedene Systeme


    ein 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

    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 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


    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 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??