IPOS Assembler Frage zu Ablauf im Programm

Corvax

Level-2
Beiträge
91
Reaktionspunkte
17
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich bin gerade bei einer Fremdanlage und verstehe nicht ganz das Ipos Assembler Programm.
Das Programm im Anhang

MDX61B mit TO
S7-1510 ET200

Ablauf soll sein, dass ein zylindrisches Werkstück geklemmt werden soll. Die Klemmung, welche über einen Motor in Verbindung mit Riemen gespannt werden soll, fährt auch zu. Der nachfolgende Schritt wird auch ausgeführt, aber die Klemmung bleibt nicht auf Druck, so dass das Werkstück sich verschieben kann.

Im Programm wird auf die Sprungmarke M18 gesprungen wenn der Befehl zum Klemmen kommt.
Wo ist denn da die Abfrage nach dem Drehmoment und wo wird der Motor Lagegeregelt bis das Werkstück bearbeitet wurde?
ICh sehe es aktuell so, dass ein max. Drehmoment vorgegeben wird , relativ bis zu
200000 inc gefahren wird bis die 150ms abgelaufen sind und dann der Steuerung mitgeteilt wird, dass das Werkstück geklemmt ist.
Habe ich ein Denkfehler oder ist das Programm Fehlerhaft und der Druck auf das Werkstück bleibt nicht dauerhaft angesteuert? Der Motor hat keine Bremse die man zusätzlich nutzen könnte.

Leider habe ich gerade auch nicht viel Zeit zum großartigen rumprobieren, da hier noch mehr Baustellen vorhanden sind die wichtiger sind.

Gruß

Corvax
 

Anhänge

  • IposAssembler.pdf
    78,6 KB · Aufrufe: 26
Hallo @Corvax,

Auf den ersten Blick würde ich den Code wie folgt kommentieren:

1718622232110.png

Im folgenden Programmteil M6 sind mehrere bedingte Sprünge vorhanden, abhängig von dem Zustand der Binäreingänge.

Zu deiner konkreten Frage zur Lageregelung.
Wie du richtig beschrieben hast, wird ein maximaler Strom vorgegeben und der Antrieb auf Sollposition 200000 Inc positioniert.
Sobald der Antrieb die Position erreicht, wird mit "ASTOP TARGET POSITION" die Positionierung beendet.
Normalerweise fälllt dann die Bremse ein, in deinem Fall ohne Bremse verbleibt der Antrieb in Lageregelung.
Auf der 7-Segmentanzeige sollte die Zahl 2 "Keine Freigabe" zu sehen sein.

Ich hoffe das hilft dir weiter.

Gruß SEW Service

Edit: Kleiner Schönheitsfehler
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke schonmal für das erläutern.
Wie könnte ich am besten hinzufügen, dass der Motor noch mit dem Drehmoment weiter das Werkstück drückt, nachdem ich den Digitalausgang setze?
 
könnte es sein, das Position 200000 mechanisch gar nicht erreicht werden kann und somit der Antrieb über die Strombegrenzung das Drehmoment aufbringen soll?
Hat der Motor eine Fremdkühlung?
 
Deshalb habe ich auch im ersten Beitrag geschrieben dass er einfach nur relativ 200000 Inc fährt und das auch nur für 150ms. Egal ob 200000 inc erreicht oder nicht. Die Position 200000 inc kann mechanisch nicht erreicht werden. Nur die Stromgrenze kann er halt nicht überschreiten. Danach läuft das Programm weiter und beendet den relativen Fahrbefehl.
Das ist meiner Meinung nach auch das Problem mit dem Programm.
Eigentlich müsste der Ablauf sein, fahre bis Drehmoment erreicht, setze Ausgang und halte die Position wo Stromgrenze erreicht ist bzw. drücke weiter mit angegebener Stromgrenze bis nächster Fahrbefehl kommt.

Der Motor ist nicht fremdgekühlt, die Stromgrenze ist auch nur bei 20% eingestellt. Denke nicht das es da Probleme mit Übertemperatur Motor gibt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo @Corvax,

Dann wird wohl die fett markierte Zeile anschlagen:

M18 :SETFR #8 = NO RESPONSE
SETFR #42 = NO RESPONSE
ASTOP IPOS ENABLE
BCLR H480 .0 = 0
BCLR H480 .1 = 0
BCLR H480 .3 = 0
BCLR H480 .4 = 0
SETSYS POS.SPEED C(C)W = H310
SETSYS POS. RAMP = H302
SETSYS IMAX = H307
GOR NOWAIT #200000 inc
WAIT 150 ms
SETSYS IMAX = H306
BSET H480 .3 = 1
M22 :ASTOP TARGET POSITION
M24 :JMP HI I0000000100000000, M24
SETSYS IMAX = H305
JMP UNCONDITIONED , M6

Ich habe im Assemblerhandbuch noch einmal nachgeschaut und muss die Aussage im ursprünglichen Beitrag korrigieren.
Die fett markierte Zeile lässt das Programm jedes mal in die Zeile selbst zurückspringen (also eine Art while loop), so lange der Eingang DI12 TRUE ist.

1719228042284.png

Der Zustand des Binäreingangs kann mit einem Scopeschrieb kontrolliert werden.
Alternativ im Assembler-Debugger ein Haltepunkt an der darauf folgenden Zeile erstellen und prüfen, wann dieser erreicht wird.

1719225936016.png
 
Danke für deine Antwort. Ich werde mit unserem Ansprechpartner von euch die nächste Zeit Kontakt aufnehmen und fragen wo ich mich zu melden habe, um das Programm umzuschreiben. Die Lösung des Problems will ich direkt mit euch klären und nicht selber auf try and error versuchen. Wir können uns einfach kein stillstand in der Anlage deshalb leisten. Ich habe aktuell leider keine Zeit es in den nächsten 4 Wochen das Thema weiter einzugehen.

Danke erstmal für eure gute Unterstützung
 
Zurück
Oben