TC3: Eingangssignal soll Programm starten (per Interrupt)

Beiträge
5.650
Reaktionspunkte
1.153
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe hier eine rotative Achse mit einem Schrittmotor die einen Nocken als Referenzpunkt hat. Da die Achse kein Messsystem besitzt möchte ich bei bestimmten Bedingungen diesen Nocken nutzen um festzustellen, ob der Motor Schritte verloren hat. Ich wollte bei einer fallenden Flanke die aktuelle Position auslesen und kontrollieren, ob diese innerhalb einer gewissen Toleranz liegt. Ist dies nicht der Fall wird die Achse sofort angehalten und die Referenz gelöscht. Mein Problem ist jetzt, dass die Nockenerkennung natürlich nicht zu langsam erfolgen darf, sonst meldet das System immer einen Fehler, obwohl alles in Ordnung ist. Eine Möglichkeit wäre jetzt, die Prüfung ständig in einer schnellen Task zu machen und über globale Variablen zwischen der schnellen und langsamen Task die Ergebnisse auszutauschen. Das Stoppen der Achse könnte in der langsamen Task erfolgen, ich würde es allerdings gerne über einen Interrupt lösen. Daher nun meine Frage an die Experten hier, gibt es bei TC3 die Möglichkeit Eingänge zur Auslösung eines Interrupts zu konfigurieren und wie ? Im Hilfesystem habe ich zu dem Thema nur etwas in der Rubrik Roboter gefunden und Tante Google war auch nicht sehr hilfreich (oder ich zu ungeduldig). Da bei der ersten Lösung die schnelle Task aber auch jedes Mal den Status der Achse über "ReadStatus" auslesen müsste um die Position zu bekommen, habe ich die Befürchtung, dass System geht zu sehr in die Knie
 
Hallo!
Einen klassischen Interrupt, wie man ihn z.B. bei manch einer HW-SPS hat, gibst es generell bei TwinCAT nicht.

Hast du dir mal die Gesamtauslastung deines Systems angesehen?
Welche Basiszeit ist eingestellt?
Wie viele Task mit welchen Zeiten gibt es?

Und vor allem: Was für eine Steuerung setzt du ein?

Grüße,
mac203
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Problem lässt sich in Hardware lösen: Dafür hat Beckhoff Zählerklemmen mit Latch. Damit kannst Du einen Positionswert ereignisbezogen speichern.

Edit: Autsch! Du schriebest ja "ohne Meßsystem" sorry. Bleibt noch XFC mit Zeitstempel. Damit sollte sich das lösen lassen.

Ehrlich gesagt: Bei der Schrittmotorklemme 7031 werd ich nicht ganz schlau aus der möglichen Eingangskonfig: Lässt sich möglicherweise die interne Sollposition Latchen? Das wäre ja genau, was Du brauchst - oder? Wie so oft: Versuch macht klug :(
 
Zuletzt bearbeitet:
Hallo mac203, hallo weißnix_ (Hm, für den Namen weißt Du aber viel),
vielen Dank für Eure Tipps.

@mac203: Es ist ein CX5010, die Basiszeit ist 1ms, neben der I/O-Task und der NC-Task gibt es noch zwei Tasks, die langsame läuft derzeit mit 10ms, die schnelle mit 1ms. Die Auslastung ist derzeit nicht aussagekräftig, da nur ein Bruchteil des Programms aktiv ist und abgearbeitet wird. Da die Referenznockenauswertung nicht automatisiert von der Motorklemme erfolgt (wie bei "großen" Umrichtern üblich) werde ich die Referenzfahrt auch noch auslagern.

@weißnix_: Es wird die EL7037 genutzt, bei dieser habe ich aber auch was von Latch gelesen, ich schau mal in die Doku. Dann bliebe nur noch das Problem mit der Referenz, dass die Nocke nicht schnell genug erkannt wird, oder die Achse elendig langsam laufen müsste, die werde ich vermutlich auf jeden Fall in eine schnelle Task auslagern müssen, was neue Fragen aufwirft.

Gruß

Oliver
 
Für meine Referenzfahrt könnte mir die Sache mit dem Latch eventuell helfen, aber beim "normalen" Verfahren habe ich nichts gefunden um abzufragen, ob das Latch gesetzt ist und bei welcher Ist-Position dies erfolgte.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn Latchfunktion auf den internen Positionsgeber geht, dann stellt sich das für mich einfach dar:
Wenn Sollposition den Nocken überfahren hat, dann Latchwert mit Toleranzfenster vergleichen. Außerhalb Toleranzfenster --> Schleppfehler/Schrittverlust. Das geht auch in einer langsamen Task.
Kann die Klemme/NC-Task keine interen Refrenzfahrt? Referenzfahrt ist doch nur ein Positionsreset bei Signal. Muß also ein Eingang der Klemme auf Reset konfiguriert werden und eine Fahrt über den Ref-Nocken durchgeführt werden. Die Aufgaben der NC-Task würde ich jetzt nicht unbedingt in eine zusätzliche schnelle Task übertragen.

Ich hab mit der Klemme noch nix gemacht. Bisher hab ich nur Servo's am AX200x eingesetzt. Für die NC-Task hatte ich noch keinen Anwendungsfall.

PS: Vielen Dank für die Blumen, ich bin aber nur kleiner Betriebselektriker. Meine Lösungen sind meistens Try&Error und nicht immer ganz sauber.
 
Zuletzt bearbeitet:
Bisher hab ich nur Servo's am AX200x eingesetzt.
Genau da liegt das Problem, den Komfort den "große" Regler bieten hat diese Klemme nicht oder ich habe sie noch nicht gefunden. Die Referenzfahrt bei der Klemme läuft bei mir, nach Rücksprache mit Beckhoff, derzeit so ab:
Im NC ist bei Reference Mode "Plc CAM" eingestellt. Der Referenznocken ist vom Encoder in den FB der langsamen Task mit AT %I* gemappt. Die Referenzfahrt wird über den FB "MC_HOME" gestartet und der gemappte Eingang bei jedem Aufruf dem FB übergeben. Um hier eine ausreichend hohe Genauigkeit hinzubekommen muss die Zykluszeit sehr niedrig und die Achse sehr langsam laufen. Könnte man das ganze automatisiert über die NC mit Hilfe des Latch machen, wäre die Zykluszeit kein Problem mehr. Bei einer anderen Anwendung ist der Nocke extrem kurz hier müsste dann zumindest die Achse immer noch sehr langsam laufen, aber da habe ich schon eine Idee. Wenn hier also einer weiß, ob man die Referenzfaht mit der EL7037 mit Hilfe eines Hardware-Latches durchführen kann wäre ich über Tipps sehr dankbar. Wenn dann noch jemand erklären könnte ob und wenn ja wie man den Latch und die Auslöseposition beim "normalen" Fahren der Achse auslesen kann wäre es fast nicht mehr auszuhalten.

Gruß

Oliver
 
Zurück
Oben