Navigation
06.03.2019, 13:56

EV3 Frage zur Pausierung von Programmschleifen

LLL,

gibt es beim EV3 mit Bordmitteln die Möglichkeit eine Programmschleife solange zu pausieren, wie der Berührungssensor gedrückt gehalten wird?

LG,
_Rene



6 vorhergehende Beiträge sind ausgeblendet

Alle anzeigen Immer alle anzeigen Beitragsbaum

Micha2
06.03.2019, 16:27

Als Antwort auf den Beitrag von Navigation

Re: EV3 Frage zur Pausierung von Programmschleifen

Navigation hat geschrieben:

LLL,

gibt es beim EV3 mit Bordmitteln die Möglichkeit eine Programmschleife solange zu pausieren, wie der Berührungssensor gedrückt gehalten wird?

LG,
_Rene

Es wäre wichtig zu wissen, was genau "pausieren" bedeutet.
- Die Schleife wird sofort beim Drücken am aktuellen Ort unterbrochen und läuft von genau da wieder los, wenn losgelassen?
- Die Schleife stoppt an einem (oder mehreren) vorher definierten Stellen innerhalb der Schleife, falls gedrückt wird und läuft beim Loslassen von dort (oder vom Anfang) aus weiter?
- Die Schleife prüft nur vor oder nach jedem Schleifendurchlauf, ob der Sensor gedrückt ist oder nicht, und macht dann ggf. einen vollen Durchlauf oder nicht.



Lok24
06.03.2019, 16:44

Als Antwort auf den Beitrag von Micha2

Re: EV3 Frage zur Pausierung von Programmschleifen

Hallo,

Micha2 hat geschrieben:

Es wäre wichtig zu wissen, was genau "pausieren" bedeutet.
- Die Schleife wird sofort beim Drücken am aktuellen Ort unterbrochen und läuft von genau da wieder los, wenn losgelassen?


Das halte ich für kaum realisierbar.
Nimm an ein Motor läuft innerhalb der Schleife für 3 Sekunden.
Wie weiß Du, wie lange er schon gelaufen ist, wenn Stop gedrückt wird?
Du müsstest also dauernd für alle Zustände millisekundengenau die Werte merken und dann genau wieder aufsetzen und die Restlaufzeit berücksichtigen.

Das mag zwar gehen, wird aber extrem aufwendig.



Navigation
06.03.2019, 19:05

Als Antwort auf den Beitrag von Lok24

+1Re: EV3 Frage zur Pausierung von Programmschleifen

Vielen Dank schonmal für die Bemühungen.

Micha2 hat geschrieben:

Es wäre wichtig zu wissen, was genau "pausieren" bedeutet.
- Die Schleife wird sofort beim Drücken am aktuellen Ort unterbrochen und läuft von genau da wieder los, wenn losgelassen?


Im Idealfall ja

Lok24 hat geschrieben:
Hallo,
Das halte ich für kaum realisierbar.
Nimm an ein Motor läuft innerhalb der Schleife für 3 Sekunden.
Wie weiß Du, wie lange er schon gelaufen ist, wenn Stop gedrückt wird?


Ich weiß das nicht, aber im Jahr 2019 wird sich doch ein "intelligenter" Baustein das merken können ;)

Nach meinem unmaßgeblichen Verständnis müsste es doch machbar sein, ein Programm nicht nur zu jedem beliebigen Zeitpunkt zu stoppen (das funktioniert ja auch, wenn der Motor 2 von 3 geplanten Sekunden läuft), sondern auch an ebenjener Stelle weiterlaufen zu lassen. Was spricht denn (programm)technisch gesehen beim EV3 dagegen?

Ich kann mir auch gerade gar nicht vorstellen, dass eine Art Pause-Modus nicht vorgesehen ist und auch so wenig relevant sein soll

Liebe Grüße,
-Rene



Steinemann gefällt das


Lok24
06.03.2019, 19:28

Als Antwort auf den Beitrag von Navigation

Editiert von
Lok24
06.03.2019, 19:36

Re: EV3 Frage zur Pausierung von Programmschleifen

Hallo,

Navigation hat geschrieben:

Ich weiß das nicht, aber im Jahr 2019 wird sich doch ein "intelligenter" Baustein das merken können ;)


Navigation hat geschrieben:
Nach meinem unmaßgeblichen Verständnis müsste es doch machbar sein, ein Programm nicht nur zu jedem beliebigen Zeitpunkt zu stoppen (das funktioniert ja auch, wenn der Motor 2 von 3 geplanten Sekunden läuft), sondern auch an ebenjener Stelle weiterlaufen zu lassen. Was spricht denn (programm)technisch gesehen beim EV3 dagegen?

Dass im "normalen" Programm der eine Befehl heißt: Laufe 5 sec.
Da sind keine 2 Befehle, zwischen denen Du einen Stop-Befehl einschieben kannst oder einen Einsprungpunkt, bei dem Du wieder aufsetzen kannst.

Was geht ist:
Eine Unterroutine für den Motor, die aus zwei Threads besteht, eine misst die Zeit rückwärts, die andere steuert den Motor. Wird das jetzt extern gestoppt bleibt es stehen. Wird es wieder aufgerufen und die Zeit ist noch nicht auf null wird die Restlaufzeit ausgeführt.

Oder Du zerlegst das Programm in winzigste Schritte, jeder Einzelne muss sich merken, ob er gerade erreicht wurde und über eine Verwzeigung übersprungen werden können, wenn Du "weiter" willst.

Navigation hat geschrieben:
Ich kann mir auch gerade gar nicht vorstellen, dass eine Art Pause-Modus nicht vorgesehen ist und auch so wenig relevant sein soll

An der IBM 370/125 mit 128k(!) Hauptspeicher auf der ich gelernt habe, konnte man den Prozessortakt stoppen und dann einzelne Bits im Hauptspeicher mit der Hand umschießen. Und "weiter" drücken.
Ist aus der Mode gekommen

Ich würde versuchen so etwas über leJOS oder EV3dev zu machen, denn da hast Du durch die Sprachen mit Threading etc. ganz andere Möglichkeiten.

Ich passe meinen Modelle meinen kargen Fähigkeiten an: Ich stoppe sie über den Brick, wenn ich sie starte gehen sie automatisch in Startposition (dass müssen sie ja eh nach dem Batteriewechsel). Das ist aber nicht das, was Dir vorschwebt.

Vielleicht hat ja hier noch jemand eine Lösung, würde mich freuen und auch interessieren. Aber wie gesagt, dass kenne ich auch von anderen Prozessoren und Sprachen nicht.

Grüße

Werner



Navigation
06.03.2019, 19:54

Als Antwort auf den Beitrag von Lok24

Re: EV3 Frage zur Pausierung von Programmschleifen

Hi Werner,

vielen Dank fürs Hirn zermartern. Leider muss es, wenn, mit den EV3-Bordmitteln gehen, das Modell soll dem Kunden übergeben und "idiotensicher wartbar" sein. Alternativ hätten wir hier LabView am Start aber das haben wir nichtmal rausgekramt, weil es aus o.g. Gründen nicht in Frage kommt.

Dann wird es ohne einen Pausemodus auskommen müssen

Allerdings:

Lok24 hat geschrieben:


Navigation hat geschrieben:
Nach meinem unmaßgeblichen Verständnis müsste es doch machbar sein, ein Programm nicht nur zu jedem beliebigen Zeitpunkt zu stoppen (das funktioniert ja auch, wenn der Motor 2 von 3 geplanten Sekunden läuft), sondern auch an ebenjener Stelle weiterlaufen zu lassen. Was spricht denn (programm)technisch gesehen beim EV3 dagegen?

Dass im "normalen" Programm der eine Befehl heißt: Laufe 5 sec.
Da sind keine 2 Befehle, zwischen denen Du einen Stop-Befehl einschieben kannst oder einen Einsprungpunkt, bei dem Du wieder aufsetzen kannst.


Das Programm zählt aber mit, wielange und wieviele Umdrehungen ein Motor läuft und zählt auch mit, wie lange bspw. ein Ton erzeugt wird. Es sollte also eigentlich die Aufgabe eines "Pause"-Moduls sein, alle gerade laufenden Prozesse mitzuschneiden und ein Programm unterbrechen und weiterlaufen zu lassen - alle nötigen Daten trackt der EV3 doch so oder so mit?

LG,
_Rene



Micha2
06.03.2019, 22:10

Als Antwort auf den Beitrag von Lok24

Re: EV3 Frage zur Pausierung von Programmschleifen

Das sehe ich wie Du.
Aber bevor ich eine eventuell am Ziel vorbei gehende Antwort gebe wollte ich zunächst mal die Erwartungshaltung klären...nicht dass das Problem u.U. viel einfacher ist als gedacht und man sich unnötig das Hirn zermatert, oder umgekehrt: Um festzustellen, dass unmögliches gefordert wird...
Stichwort "Auftragsklärung" :-)

Mit dem EV3 (mit dem ich aber nicht wirklich gut vertraut bin) denke ich auch, dass es das Beste sein dürfte, das Programm in möglichst kleine Schritte zu unterteilen und dazwischen Abfragen zu packen. Dürfte der Beste Kompromiß aus "sich dem Ziel weitestmöglich nähern" und "einfach und gut wartbar zu programmieren" sein.



Lok24
07.03.2019, 08:46

Als Antwort auf den Beitrag von Navigation

Re: EV3 Frage zur Pausierung von Programmschleifen

Hallo,

Navigation hat geschrieben:

vielen Dank fürs Hirn zermartern. Leider muss es, wenn, mit den EV3-Bordmitteln gehen, das Modell soll dem Kunden übergeben und "idiotensicher wartbar" sein.

Nunja, aber wenn die Akkus mittendrin leer sind - und das sind sie... - muss man den Ablauf doch ohnehin "neu" starten.

Navigation hat geschrieben:
Alternativ hätten wir hier LabView am Start aber das haben wir nichtmal rausgekramt, weil es aus o.g. Gründen nicht in Frage kommt.
LabView ist doch eigentlich das Bordmittel, und alternativ wäre bei Euch was?

Navigation hat geschrieben:
Dann wird es ohne einen Pausemodus auskommen müssen

Wenn Pausenmodus meint : sofortiger Stop - aufwendig, aber nicht unmöglich
Wenn Pausenmodus meint : Schleife zu Ende laufen lassen - sehr wenig Aufwand
Alles dazwischen: kommt drauf an. D.h. ein relativer statt "absoluter" Pausenmodus ist sicher nicht so schwierig.

Navigation hat geschrieben:
Das Programm zählt aber mit, wielange und wieviele Umdrehungen ein Motor läuft

Umdrehungen ja, Zeit? Ich glaube nicht.

Navigation hat geschrieben:
und zählt auch mit, wie lange bspw. ein Ton erzeugt wird.

Sicher? Wo kann man das auslesen?

Navigation hat geschrieben:
Es sollte also eigentlich die Aufgabe eines "Pause"-Moduls sein, alle gerade laufenden Prozesse mitzuschneiden und ein Programm unterbrechen und weiterlaufen zu lassen - alle nötigen Daten trackt der EV3 doch so oder so mit?
Ich glaube nicht. Wozu auch? Es ist LINUX. Da kenne ich sowas auch nicht.

Wie gesagt, je nach den in der Schleife benutzten Befehlen kann man das in eigene Blöcke programmieren.
Aber das "Programm", also der Brick, der hilft Dir da m.E. nix.

Die Zauberworte heißen reentrant, Interrupt, Threading, Multitasking.
Wer könnte da helfen? Frag mal bei jopieK oder ABaumgart, die haben sicher mehr Ahnung als ich.

Grüße

Werner



Lok24
19.03.2019, 13:11

Als Antwort auf den Beitrag von Navigation

Re: EV3 Frage zur Pausierung von Programmschleifen

Hallo,

das hat mir doch keine Ruhe gelassen.
Wie befürchtet: Geht, ist aber mühsam.

Hier eine Routine, die den Motor für eine bestimmte Zit laufen lässt.
Die für Winkel sieht ählich aus. Im unteren teil der Aufruf. Das kann man sicher noch schöner machen.....

[image]



SirJoghurt
19.03.2019, 16:45

Als Antwort auf den Beitrag von Lok24

Re: EV3 Frage zur Pausierung von Programmschleifen

...sind die Grafiken von Dir Lok ?



Lok24
19.03.2019, 16:51

Als Antwort auf den Beitrag von SirJoghurt

Re: EV3 Frage zur Pausierung von Programmschleifen

Hallo,

SirJoghurt hat geschrieben:

...sind die Grafiken von Dir Lok ?


verstehe die Frage nicht ganz?