Hallo zusammen,
bei einem Projekt (Fertigungsstraße) in der Ausbildung wurde einen
Roboterarm (Arexx RA2 V3) verwendet. Dieser hebt einen kleinen
Alu-Zylinder von einem Förderband und stellt ihn auf ein Lagerplatz.
Diejenigen die das Projekt angefangen haben, sind schon seid längerem
nicht mehr da und mein Ausbilder hätte jetzt gerne, dass man aus dem
NOT-AUS ein NOT-Halt realisiert, so dass der Alu-Zylinder den der
Roboter hat, nicht ständig rausfliegt wenn der Not-Aus gedrückt wird.
Jetzt wäre meine Idee gewesen, ein Hardware Interrupt zu realisieren.
Aber da stellt sich mir die Frag:
laufen die Timer von dem µC (ATMEGA 64A) noch weiter während des
HW-Interrupts oder bleiben die auch stehen? Gäbe es eine elgantere
Lösung?
Vielen Dank schonmal im vorraus.
ein-azubi
Natürlich laufen die Timer bei einem Interrupt weiter. Die einzige
Ausnahme ist der Reset, wenn man den als eine spezielle Art Interrupt
interpretiert.
Den Not-Halt als ein externer Interrupt ist ggf. möglich, halt aber ein
Problem, wenn für längere Zeit Interrupts gesperrt sind. Da müsste man
dann ggf. zusätzlich den Watchdog aktiv werden lassen.
Die andere Möglichkeit wäre verzögert zusätzliche unabhängig vom µC den
Not-aus zu aktivieren, wenn der µC nicht prompt reagiert.
Möglich wäre ggf. auch den Reset als Not-halt zu nutzen, weil sich der
nicht per Software blockieren lässt. Da laufen dann aber ggf. die Timer
nicht weiter.
Pass' aber auf, dass Du den NOT-Aus nicht überbrückst.
Frage an Radio Eriwan:
Was ist wenn, wegen eines Fehlers an Deinem Roboterarm, der NOT-Aus
ausgelöst wird/wurde? Nobody ist perfect!
ein-azubi schrieb:> Gäbe es eine elgantere Lösung?
Ja sehr wahrscheinlich, aber dazu müsste man vermutlich die ganze
Software umschreiben...
Denn wie gesagt: der Controller läuft eigentlich weiter, auch wenn ein
Interrupt alles "blockiert". Und dann nach dem Not-Halt wieder
reinkommen in den korrekten Ablauf, ist sicher arg lustig. Sowas
realisiert man dann besser über einen Zustandsautomaten in der
Hauptschleife.
ein-azubi schrieb:> laufen die Timer von dem µC (ATMEGA 64A) noch weiter während des> HW-Interrupts oder bleiben die auch stehen?
Wie schon beschrieben:
spess53 schrieb:> Sie laufen weiter.
Du solltest aber für die Handlungen im Notfall weiter recherchieren!
Es gibt NOT-AUS, NOT-HALT.
Dafür kann eine STOPP-Kategorie von 0 bis 2 verwendet werden.
Und dann gibt es auch noch NOT-START (z.B. Feuerlöschanlage).
Wenn Du das komplett verstanden hast, kannst Du bei Deinem Ausbilder
punkten.
BTW: Die Beschreibung läuft auf eine Stopp-Kategorie 2 hinaus. Die ist
z.Z. für Handlungen im Notfall nicht vorgesehen. Also: Konzept für
Kategorie 1 erarbeiten.
Lothar Miller schrieb:> Sowas> realisiert man dann besser über einen Zustandsautomaten in der> Hauptschleife.
Genau.
Ein Mensch benötigt viele 100ms Reaktionszeit, das sind aus MC-Sicht
Ewigkeiten.
Eine Statemaschine hat typisch wenige 1ms Durchlaufzeit.
Auch ist ein Interrupt empfindlich gegen Störungen.
Z.B. hat man sich früher gewundert, warum die ersten Computer verrückt
spielten, wenn Frauen sie bedienten. Ursache waren die elektrostatisch
geladenen Nylonstrümpfe der Damen.
Thomas O. schrieb:> Not-aus auf den höchsten Interrupt meist Ext Int. und dort dann die> Timer usw stoppen oder einen Sleepmode wählen bei dem keine Timer mehr> laufen.
Welche Handlungen bei einem Notaus zu programmieren sind, mußt Du schon
dem Pflichtenheft überlassen. Es gibt keine generelle Lösung.
Die Timer zu stoppen, ist meist gefährlich.
Z.B. eine PWM kann dann auf 100% stehen bleiben, d.h. der Motor tourt
auf volle Kraft hoch, fragt keine Endlagenschalter mehr ab und Deine
Anlage ist nur noch Schrott oder ne Person tot.
Einen Timer zu stoppen ist natuerlich Quatsch. Man muss ein Notabschalt-
Szenario definieren, was dann geschehen muss.
Nicht einfach nichts. Ein Notabschalt- Szenario ist im Wesentlichen :
Die Maschine, resp der Prozess, muss in einen sicheren Zustand gehen.
Was das bedeutet kann nur der Betreiber der Maschine, des Systems,
definieren. Allenfalls muessen dazu erst Sensoren abgefragt werden.
Moechte man den Roboterarm einfach einfrieren, oder auf eine sichere
Position fahren ?
Einfrieren bedeutet nicht einfach Strom abschalten. Das waere so, wenn
alles mit Schneckengetrieben laufen wuerde. Wenn der Roboter
quasistatisch arbeitet. tut er aber nicht. Sondern das bedeutet, dass
auf einen feste Position geregelt wird. Diese feste Position ist nicht
die beim Druecken des Halt Knopfes, sondern die, die bei maximaler
Bremsleistung angefahren werden kann.
alles klar ?
Hi
Also, ich hab hier meine Zweifel, ob der Ausbilder da in die richtige
Richtung geht. Einen Not-Halt über einen Atmega64, ob mit Interrupt oder
im Polling der IO ist dabei völlig wurscht, zu realisieren, halte ich
nicht für Sicher. Not_Aus bedeutet ja, das Ding wird komplett ohne
Rücksicht auf Verluste vom Netz getrennt. Bei einem Not Halt wird in der
Regel gezielt angehalten und dann das Netz gekappt. Dabei muss aber auch
dieses Vorgehen sicher sein,d. H. ist aus irgendwelchen Gründen eine
entsprechende Rückmeldung, das ein sicherer Status erreicht ist, nicht
gegeben, muss auch ier nach einer zu definierenden Zeit ein Abschalten
der Maschine erfolgen. Nun, Ein Timer-Interrupt kann auch einen IO
Interrupt kurzzeitig blockieren. Damit ist das sichere Erkennen schon
mal nicht gegeben. Auch Programmtechnisch muss ja einiges angeleiert
werden. Sind die Programme für die erforderlichen Bewegungen auch
sicher? Hier einfach mal so eine Frage in den Raum zu stellen, ob
weitere Interrupts auch abgearbeitet werden ist in diesem Fall gar nicht
so wichtig. Die Frage, wie man einen sicheren Zustand vor dem Abschalten
erreichen kann, sollte da mehr Beachtung fnden.
Gruß oldmax