Step 5 Probleme mit Programmcode Absolutfahrt IP266

Hucky

Level-2
Beiträge
218
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich brauche wohl einen kleinen Denkanstoß. Irgendwie funzt das nicht wie ich möchte.

FB 34 Steuerung für Achse

- FB 34 wird angesprungen sobald in einem PB M17.4 gesetzt wurde. Die Achse fährt vorwärts.
- FB 34 wird angesprungen sobald in einem PB M17.5 gesetzt wurde. Die Achse fährt rückwärts.
- M0.1 ist logisch 1
- MW78: Endwert vorwärts (im OP hinterlegt)
- MW80: Endwert hinten (im OP hinterlegt)
- MW82: Geschwindigkeit vprwärts
- MW84: Geschwindigkeit rückwärts

Bevor die Achse verfahren werden kann wurde synchronisiert, Referenzfahrt durchgeführt und in die hintere Postion gefahren. A73.7 (Toogle Bit) ist nach der ganzen Aktion auf "1"

Hier mal der originale Code, der funktioniert:

Code:
        :
        :U       M17.4
        :SPB =M001
        :
        :L        MW80 
        :T        AW76 
        :L        MW84
        :T        AB75
        :U        M0.1
        :S        A73.7
        :SPA  =M002
        :
M001:
        :L        MW78
        :T        AW76
        :L        MW82
        :T        AB75
        :U        M0.1
        :R        A73.7
        :
M002:
        :U        M0.1
        :R        M17.4
        :R        M17.5
        :
        :BE


Bei meinem Code zuckt der Antrieb meist nur und es kommt dann die Fehlermeldung $0082. Die steht unter anderem dafür, dass der selbe Auftrag weiderholt gestartet wurde in der Zeit wo der andere noch läuft. Wenn ich es richtig verstanden habe.
Der Hintergrund ist, dass ich die Achse bis zur Endposition weiterfahren lassen möchte wenn die Fahrt zwischendurch durch Not-Aus unterbrochen wurde.
Mit dem aktuellen Code kann ich nur vor und zurück, nicht aber vor und noch einmal vor. Daher möchte ich A73.7 tooglen, da die IP266 nur den Auftrag annimmt wenn ein Signalwechsel an A73.3 auftritt.
Erst dachte ich, dass M17.4 und M17.5 mehrmals hintereinander aufgerufen wird was mit dem aktuellen FB34 keinen Einfluß hätte. Ich hatte das zwischendurch mal mit einem Schmiermerker unterbunden - keine Änderung.

Hier mein Code:

Code:
        :U       M17.4
        :SPB =M001
        :
        :L        MW80 
        :T        AW76 
        :L        MW84
        :T        AB75
        :U        A73.7
        :SPB =M003
        :U        M0.1
        :S        A73.7
        :SPA =M002
M003:
        :U        M0.1
        :R        A73.7
        :SPA =M002
        :
M001:
        :L        MW78 
        :T        AW76 
        :L        MW82
        :T        AB75
        :
        :U        A73.7
        :SPB =M004
        :U        M0.1
        :S        A73.7
        :SPA =M002
M004:
        :U        M0.1
        :R        A73.7
        :
M002:
        :U        M0.1
        :R        M17.4
        :R        M17.5
        :
        :BE


Hucky
 
Zuletzt bearbeitet:
Hallo Hucky,
dein Problem ist nicht so ohne Weiteres zu lösen. Warum?:
- der M17.5 wird in dem Code gar nicht abgefragt, er dient also nur zum Aufruf des Bausteins, wahrscheinlich um Doppelzuweisungen im Code zu vermeiden.
- innerhalb des Bausteins gibt es keine Abfrage, wo sich dein Schlitten momentan befindet. Wenn du den Ablauf unterbrechen willst, musst du dir irgendwie die aktuelle Position merken um dann an dieser Stelle fort zu setzen.
- dein Baustein realisiert genau einen Bewegungszyklus, einmal komplett hin und wieder zurück.
- A73.7 scheint da nur als Umschalter zu arbeiten (1 = rückwärts, 0 = vorwärts)
- insgesamt ergibt der Baustein allein keinen Sinn, denn folgendes würde jetzt ablaufen:
-- 1. SPS-Zyklus M17.4 wird irgendwo auf 1 gesetzt und ruft den Baustein auf. Folge: A73.7 wird gesetzt und M17.4 wird sofort wieder 0
-- 2. SPS-Zyklus: M17.4 ist ja jetzt wieder 0, also wird A73.7 auch wieder 0 und damit ist der Bewegungszyklus beendet.
-- 3. SPS-Zyklus: M17.4 ist immer noch 0, A73.7 ebenfalls 0, also keine Bewegung mehr.
Etwas anders sähe das aus, wenn außerhalb die Signale M17.4 oder M17.5 "gewaltsam" auf 1 gehalten werden. Dann wäre der Baustein eine trickreiche Lösung für deinen Bewegungszyklus.
Wenn du den Ablauf also in deinem Sinne verändern möchtest, muss du dir schon eine neue Lösung einfallen lassen. Ein simples toggeln einer Variablen hilft dir da nicht !
MfG
eNDe
 
Zurück
Oben