Notabschaltung

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
MiK11
Beiträge: 9
Registriert: 05 Jan 2011, 15:47

Notabschaltung

Beitrag von MiK11 » 01 Jan 2012, 16:41

Ich programmiere z.Zt. ein recht komplexes Modell mit vielen Motoren usw. Die Software enthält mehrere unabhängig voneinander arbeitende Hauptprogramme im RoboPro. Wie kann ich nun eine Notabschaltung durch einen Taster realisieren? Wie kann ein separates Hauptprogramm andere Hauptprogramme abbrechen?

VIelen Dank für Eure Hilfe,

MiK11

Benutzeravatar
Endlich
Beiträge: 362
Registriert: 01 Nov 2010, 08:45
Wohnort: Ingelfingen
Kontaktdaten:

Re: Notabschaltung

Beitrag von Endlich » 01 Jan 2012, 18:00

Hallo Mik11,

wenn ich dich richtig verstanden habe soll deine Anlage durch einen einzigen Tastendruck lahm gelegt werden. Wenn ich so einen Not-Aus-Taster einbaue, dann schließe ich ihn so an, dass wenn man den Taster drückt die gesamte Stromzufuhr, also vom Netzgerät zum Interface oder TX unterbrochen wird. Somit wird das Programm automatisch auch unterbrochen und du brauchst keinen I-Eingang zu benutzten.
Vielleicht kommt diese Möglichkeit einer Notabschaltung ja für dich in Frage.

vleeuwen
Beiträge: 1560
Registriert: 31 Okt 2010, 22:23
Wohnort: Enschede (NL)
Kontaktdaten:

Re: Notabschaltung

Beitrag von vleeuwen » 01 Jan 2012, 18:04

In general, the concept of RoboPro is work flow oriented with one or more independent processes.
This means that a worker is follow the line and he stops on every node to execute the instruction.
For the inter-process synchronization there is data flow (command +value or value).
The work flow mechanism does not know the notion of interrupts.

So you need to find a solution for this problem that fits in the concept of work flow oriented programming with data flow as inter-process synchronization:

See your emergency stop switch as a work process. The worker checks every (?) second this switch. In case this switch has been pressed, this process sets a global variable “stop” on 1 (true). (“stop” is initially 0 (false)). The global variable “stop” will be used in the data flow to inform the other relevant work processes about the “emergency stop” status.
All the other relevant work processes need to check this global variable “stop” after starting a critical action and this on a regular base. This in a way that each process is able to stop the critical action on time. With this approach every work process is able to deal with an emergency stop in a controlled manner.

A different very rough approach could be for example to add relays in every critical chain. These relays are under direct control of the emergency work process.
The most rough approach is switching of the power supply. However this has less to do with work flow oriented programming.

This example shows also a weak point of this work flow concept.
The “message flow oriented” concept of MS Robotics Developer Studio has the notion of “decentralization” and is able to deal with this type of problem much easier.

MiK11
Beiträge: 9
Registriert: 05 Jan 2011, 15:47

Re: Notabschaltung

Beitrag von MiK11 » 01 Jan 2012, 19:13

Hallo Endlich,

vielen Dank für Deinen Vorschlag. Dieser ist zwar sicher vom Grundgedanken richtig, erfordert aber den EInsatz eines Relais zum Schalten der Stromversorgung der TXs. Auch sind beim Abschalten natürlich auch alle Variablen gelöscht...

MiK11

MiK11
Beiträge: 9
Registriert: 05 Jan 2011, 15:47

Re: Notabschaltung

Beitrag von MiK11 » 01 Jan 2012, 19:18

Hello V. Leeuwen,

Thank you very much for your suggestion. It should principally waork. However, my program contains many different loops and branches. It would be required to add checking for the flag in EVERY single loop and branch. Seems rather unhandy to me. Especially in the programing phase, when you really need to emergency stop.

One of my ideas was to calculate a division 1/0. Unfortunately, the RoboPro software is robust enough not to abort due to an illegal operation.

Best regards,

MiK11
vleeuwen hat geschrieben:In general, the concept of RoboPro is work flow oriented with one or more independent processes.
This means that a worker is follow the line and he stops on every node to execute the instruction.
For the inter-process synchronization there is data flow (command +value or value).
The work flow mechanism does not know the notion of interrupts.

So you need to find a solution for this problem that fits in the concept of work flow oriented programming with data flow as inter-process synchronization:

See your emergency stop switch as a work process. The worker checks every (?) second this switch. In case this switch has been pressed, this process sets a global variable “stop” on 1 (true). (“stop” is initially 0 (false)). The global variable “stop” will be used in the data flow to inform the other relevant work processes about the “emergency stop” status.
All the other relevant work processes need to check this global variable “stop” after starting a critical action and this on a regular base. This in a way that each process is able to stop the critical action on time. With this approach every work process is able to deal with an emergency stop in a controlled manner.

A different very rough approach could be for example to add relays in every critical chain. These relays are under direct control of the emergency work process.
The most rough approach is switching of the power supply. However this has less to do with work flow oriented programming.

This example shows also a weak point of this work flow concept.
The “message flow oriented” concept of MS Robotics Developer Studio has the notion of “decentralization” and is able to deal with this type of problem much easier.

vleeuwen
Beiträge: 1560
Registriert: 31 Okt 2010, 22:23
Wohnort: Enschede (NL)
Kontaktdaten:

Re: Notabschaltung

Beitrag von vleeuwen » 01 Jan 2012, 21:18

Hi Mik11,
As you descript it looks like a fundamental design error in the structure of your program. This is a very common issue with developing computer programs.

In case it is too or very difficult to introduce an elementary control like an emergency switch, you may expect more problems with changing or extending the program in the future.

Suggestion:
Redesign your program and take care of the structure.
The structure is the most imortant issue of a computer program.
It helps you to develop your work flow oriented programming skills.
Looks for a work flow oriented solution for your problem.
There are serveral ways to create a subroutine that extend an actuator (motor) into a secure actuator.

Benutzeravatar
Triceratops
Beiträge: 499
Registriert: 01 Nov 2010, 05:41
Wohnort: 21335 Lüneburg

Re: Notabschaltung

Beitrag von Triceratops » 03 Jan 2012, 03:07

Hallo

Falls die Stromversorgung der Motoren über einen separaten Trafo läuft, so könntest du im Prinzip auch nur diesen Stromkreis per Notaus manuell abschalten.

Gruß, Thomas ;)

thomas004
Beiträge: 133
Registriert: 01 Nov 2010, 19:28

Re: Notabschaltung

Beitrag von thomas004 » 26 Jan 2012, 15:48

Hallo Forum!

Ich arbeite gerade an meinem ersten kleinen Roboter (siehe http://forum.ftcommunity.de/viewtopic.p ... 1&start=20) und habe das selbe Problem:

Ich bin ja noch Anfänger und tüftle daher sehr viel an der Hardware herum, und leider klemmt es ab und an. Daher habe ich , während das Programm läuft, parallel immer die Maus in der Hand und den Mauszeiger auf dem Symbol "Programm-Stop", um im Notfall sofort das Programm zu stoppen (PC läuft im Online-Modus). Das ist ziemlich unkomfortabel und unsicher, da ich immer zwischen Modell und Monitor hin- und herschauen muss.

Ich wünsche mir stattdessen am Modell einen zusätzlichen Taster, und wenn ich diesen Taster drücke, soll das Programm sofort beendet werden! Da muss es doch in Robo Pro eine Lösung geben, dies umzusetzen, oder?!

Nein, ich möchte nicht die Stromzufuhr zum Interface trennen, denn ich möchte diesen Taster nicht als "Not-Aus" im wörtlichen Sinne, sondern eher als "Sofort-Stopp", wenn ich z.B. die Endtaster oder die Bewegungen des Roboterarms genau justieren möchte.

Hat keiner eine Idee?

Danke für Eure Hilfe!

Gruß, Thomas

McDoofi
Beiträge: 80
Registriert: 12 Dez 2011, 15:01

Re: Notabschaltung

Beitrag von McDoofi » 26 Jan 2012, 17:46

Doch, ich habe eine Idee. Aber der Nachteil daran ist, dass sie relativ kompliziert ist. In vielen meiner Programme verwende ich diese sogar selbst.

Wenn du einen Roboter baust, dann musst du erstmal alle Wartezeiten durch Timer ersetzten, um jederzeit stoppen zu können. Das ganze funktoniert so:

Dein Taster ist meinetwegen an I1 angeschlossen. Wenn I1 gedrückt wird, dann wartet das Programm solange, bis er wieder gedrückt wird, oder das Programm wird beendet. Dieses wird so realisiert, indem du z.B. das Element Warten auf... in Kombination mit dem Taster verwendest(Normales Tasterelement funktioniert auch. Wenn dieser gedrückt wird, dann wartet das Programm solange bis er nocheinmal gedrückt wird, oder beendet das Programm (Bei Wiederholung muss der J-Ausgang (oder 1-Ausgang) einfachmit einem zweiten Warten auf... Element bzw. Tasterelement versehen werden, das auch darauf wartet, dass der Taster gedrückt wird (dazwischen am besten noch Warten auf Eingang auf 0 Warten)). Da du das auch überprüfen musst, wenn gerade das Programm durch eine Wartezeit unterbrochen wird, kommt der Timer ins Spiel. Du stellst ihn auf Sekunden und gibst ihm mit Hilfe des =-Befehls den von dir ausgewählten Wert. Dann Benutzt du wieder das Element Warten auf... und schließt den Timer-Ausgang daran an. Als Bedindgung wählst du A=0. Den N-Ausgang des Elementes verbindest du mit Tasterelement, das abfragt, ob der Notaus-Taster gedrückt wurde. Den J-Ausgang schließt du einfach an den Rest deines Programmes an. Den 0-Ausgang der erste Taster-Abfrage und den 1-Ausgang der 2 Abfrage schließt du infach über dem Warten auf... Element an. Zwischen den 2 Abfragen, schaltest du die Motoren etc. aus.Außerdem musst du bei jedem Warten auf den 0-Ausgang mit dem Eingang des Tasterelements versehn, um zu überprüfen, ob dieser schon gedrückt wurde unsd somit das Programm zu stoppen.

So funktioniert es bei mir eigentlich immer. (LLWin hat sogar eine eigene Notaus Funktion)
Wenn du nicht verstanden hast, was ich meine, kannst du mir ja mal eine PN schicken.
Ich hoffe dass ich helfen konnte.

MfG McDoofi

thomas004
Beiträge: 133
Registriert: 01 Nov 2010, 19:28

Re: Notabschaltung

Beitrag von thomas004 » 27 Jan 2012, 12:20

Danke für Eure Antworten!

@Ford: Nein, meines Wissens nach gibt es in Robo Pro kein Symbol für "Kompletter Programmstop".

Ich hatte mir bereits eine separate Abfrageschleife für einen Not-Aus-Taster gebastelt, davor das grüne Ampelmännchen, hinten das rote. Ich dachte, wenn einmal das rote Männchen erreicht ist, stoppt das ganze Programm. Leider nein - der parallele Programmstrang lief munter weiter. :cry:

Gruß, Thomas

thomas004
Beiträge: 133
Registriert: 01 Nov 2010, 19:28

Re: Notabschaltung

Beitrag von thomas004 » 27 Jan 2012, 14:41

Vielleicht mache ich ja was falsch: :?

Ich baue so an meinem Robi-Modell herum und starte ab und zu das Programm im Online-Modus, um die Funktion des Modells zu überprüfen (Greiferpositionen einstellen, Endtasterlagen justieren, Kabel umpolen, etc.). Und da passiert es dann leider ab und zu, dass z.B. der Robi gegen eine feste harte Geometrie fährt, weil z.B. der Endtaster nicht anspricht:

:o Panik!!! Was macht man denn dann? Ich suche dann krampfhaft schnell, mich zum PC zu drehen, die Maus zu greifen und das Programm zu stoppen! Gleichzeitig überlege ich, ob es nicht besser wäre, doch jetzt einfach den betreffenden Motor per Ziehen des Stromkabels anzuhalten. Aber der Motor ist sooo versteckt eingebaut ...

Wertvolle Sekunden vergehen also, und der Robi fährt stur weiter gegen die Wand und verbiegt sich und zerstört Bauteile und ... :shock:

Ein Taster direkt am Modell, der das Programm sofort stoppt - das muss doch gehen!


Gruß, Thomas

vleeuwen
Beiträge: 1560
Registriert: 31 Okt 2010, 22:23
Wohnort: Enschede (NL)
Kontaktdaten:

Re: Notabschaltung

Beitrag von vleeuwen » 27 Jan 2012, 17:56

From the perspective of control engineering, a power down means losing (giving up) all the control over your system.
For example: What will happen when a motor is carrying a load in a power down situation?
The load will fall down in case there is no mechanical blocking device.
An emergency stop needs to be part of the control system and the control logic need to stay in control over the system.
At FtMscLib API level (unmanaged C) there are several function that can help you to stop the actuators directly , functions 3.7 and higher.

UMueller
Beiträge: 220
Registriert: 31 Okt 2010, 22:58

Re: Notabschaltung

Beitrag von UMueller » 27 Jan 2012, 19:04

Hallo,

so in 2006 muß ich hier wohl auch mal diese Frage beantwortet haben, das sah dann so aus :

Bild

links : Beispiel für die Anwendung, rechts : Die Notabschaltung.
Die Liste der abzuschaltenden Motoren sollte noch um die weiteren im Programm eingesetzten erweitert werden. Ist ein wenig barbarisch, reicht aber immer um am PC dann korrekt abzuschalten.
Entspricht der Lösung von Frederic. Kommt aber zur Beschreibung mit weniger Text aus.

Gruß Ulrich Müller

Benutzeravatar
Defiant
Beiträge: 354
Registriert: 31 Okt 2010, 21:42
Wohnort: Narn Homeworld
Kontaktdaten:

Re: Notabschaltung

Beitrag von Defiant » 27 Jan 2012, 20:24

vleeuwen hat geschrieben: For example: What will happen when a motor is carrying a load in a power down situation?
The load will fall down in case there is no mechanical blocking device.
An emergency stop needs to be part of the control system and the control logic need to stay in control over the system.
Nonsense, we are talking about ft here, not airplanes: Powerloss or system disconnect will do the same and both do happen.
"Propaganda does not deceive people; it merely helps them to deceive themselves."
E Hoffer

Sulu007
Beiträge: 307
Registriert: 31 Okt 2010, 22:50
Wohnort: Hamburg-Harburg

Re: Notabschaltung

Beitrag von Sulu007 » 28 Jan 2012, 00:47

Hallo Thomas,
um die Motoren auf richtige Polung und die Endtaster auf Funktion zu testen würde ich nicht das Programm starten, sondern das Testmodul von RoboPro benutzen.
Dort kann man auch die Distanzen der Encoder Motoren sich anzeigen lassen und diese in den Variablen eintragen.
Nun sind die Eckdaten bekannt und das Programm kann gestartet werden, jetzt wäre ein Notaus klasse, leider gab es das nur bei LLWin, seit RoboPro ist es nicht mehr vorhanden, was wohl auch daran liegt das es x-Prozesse geben kann.

Grüße
Reiner
Grüße
Reiner

thkais
Beiträge: 381
Registriert: 31 Okt 2010, 21:45

Re: Notabschaltung

Beitrag von thkais » 28 Jan 2012, 08:17

Hallo,

die Frage nach dem "Not-Aus" ist nicht neu - und es gibt ein Statement des RoboPro-Entwicklers dazu (aus dem Jahr 2008) das ich glücklicherweise archiviert habe. Leider ist das "alte" Forum, in dem viele solcher wichtigen Informationen vergraben sind, ja nicht mehr Online....

"ich bekomme immer wieder Anfragen, wie man einen Notaus in ROBOPro macht. In LLWin gab es dafür wohl ein eigenes Element. Das ist in ROBOPro nach wie vor nicht vorgesehen, aber man kann den gleichen Effekt erzielen, wenn man alle Prozesse (bis auf einen) in einem Unterprogramm als lokale Prozesse startet (im Eigenschaftsfenster des Prozessstartsymbols lokal angeben). Dann werden die Prozesse abgebrochen, wenn der Hauptprozess (über den das Unterprogramm betreten wurde) das Unterprogramm verlässt. Der Hauptprozess wartet dann in dem UP nur auf einen Taster und verlässt das UP sobald der Taster gedrückt wird. Dadurch werden alle Prozesse des UPs angehalten und im Hauptprogramm auch noch der Hauptprozess über ein Prozessende Symbol gestoppt. Der Nachteil ist natürlich, dass man alle Prozesse von einem UP aus starten muss und keine Objektprozesse verwenden kann."

Quelle: RoboProEntwickler, 31.12.2008.

Dies entspricht in etwa den bereits gemachten Vorschlägen von Vleeuwen und Frederic.

Die aktuelle "Lösung" hat Vor- und Nachteile:
Der Nachteil - es ist (vor allem für Programmier-Anfänger) kompliziert.
Der Vorteil: Man kann selbst entscheiden, wie ein Programm bei einem Notaus reagieren soll (ich glaube, das ist der Kern der Aussage von Vleeuwen).

Die aktuelle Lösung ist tatsächlich näher an der Realität, denn bei industriellen Steuerungen wird ein Not-Aus ebenfalls nicht über ein hartes Abschalten von Motoren erreicht, sondern über ein definiertes Verhalten.

Vielleicht kann man ja nochmal eine Anfrage starten und ein Notaus - wie er in LLWIN vorhanden war - wird doch ins Auge gefasst?

Vorschlag @Admins: Initiiert eine Umfrage, in der die Forenmitglieder die Notwendigkeit einer Not-Aus Möglichkeit angeben können.
Gruß
Thomas

thomas004
Beiträge: 133
Registriert: 01 Nov 2010, 19:28

Re: Notabschaltung

Beitrag von thomas004 » 28 Jan 2012, 17:47

Jungs, die Lösung mit dem Unterprogramm funktioniert!!! Ist auch nicht wirklich kompliziert für mich als Anfänger, und es klappt sicher - fein! :D

Danke für Eure zahlreichen Kommentare und Antworten!

Ulrich, Dein kleines Notaus-Programm-Bild klappt, solange nur Motoren laufen. Ich hatte das so ausprobiert, aber im Programmstrang auch Timer-Elemente usw., und da stoppen beim Not-Aus dann zwar die gerade aktiven Motoren, aber wenn sie im späteren Programmablauf wieder aktiviert werden, dann passiert das auch. Leider.

Aber wir haben ja jetzt eine praktikable Lösung, Dank an alle!

Gruß, Thomas

thomas004
Beiträge: 133
Registriert: 01 Nov 2010, 19:28

Re: Notabschaltung

Beitrag von thomas004 » 09 Feb 2012, 07:47

Ich muss den Thread noch mal loben! Hier wurde eine wunderbar einfache und praktikable Lösung für einen Not-Aus gefunden!

Ich habe mir inzwischen mit diesem Unterprogramm eine Art Startmodell erstellt, das ich jedesmal lade, wenn ich ein neues Programm erstellen möchte. Somit habe ich die Not-Aus-Funktionalität bereits ab dem ersten Mausklick, denn ich habe nun standardmäßig an I8 den Not-Aus-Taster hängen.

Und statt im Hauptprogramm erstelle ich mein Programm dann im Unterprogramm. Wirklich einfach und auch von Computing-Einsteigern wie mir leicht zu handhaben. :D

Gruß, Thomas

Sulu007
Beiträge: 307
Registriert: 31 Okt 2010, 22:50
Wohnort: Hamburg-Harburg

Re: Notabschaltung

Beitrag von Sulu007 » 09 Feb 2012, 09:17

Hallo Thomas,
das klingt ja prima, wie wäre es wenn du das für alle zur Verfügung stellst, sodass alle die es auch benutzen wollen sich aus dem Downloadbereich herunterladen können.
Grüße
Reiner

thomas004
Beiträge: 133
Registriert: 01 Nov 2010, 19:28

Re: Notabschaltung

Beitrag von thomas004 » 09 Feb 2012, 09:53

Reiner, die Idee hatte ich auch schon. Bis ich eben gesehen habe, dass im Downloadbereich der ftc schon einige Not-Aus-Programme gespeichert sind. Ich guck mal, ob da dieses Startmodell dabei ist. Wenn nicht, lege ich meins dort ab.

Gruß, Thomas

Antworten