Fehler im RoboPro Listenelement II

Hier habt Ihr die Möglichkeit direkt mit dem fischertechnik Team in Kontakt zu treten
Here you have the Possibility to get in direct contact with the fischertechnik-Team

Moderator: fischertechnik Mitarbeiter

Forumsregeln
Bitte beachte die Forumsregeln!

In dieser Unterkategorie können nur fischertechnik-Mitarbeiter und Moderatoren antworten!
Antworten
hamlet
Beiträge: 332
Registriert: 12 Jan 2011, 21:41

Fehler im RoboPro Listenelement II

Beitrag von hamlet » 16 Mär 2018, 17:10

Liebes fischertechnik Team,
Anders als in
RoboPro Hilfe-Kapitel "8.4.5 Liste"
… Ändert sich der I-Eingang oder der Wert des Eintrags, der über den I-Eingang ausgewählt wurde, schickt die Liste den aktuellen Wert des ausgewählten Eintrags an die Elemente, die am R-Ausgang angeschlossen sind. …
dokumentiert, schickt ein Listenelement eine Zuweisung über den R-Ausgang nicht nur, wenn sich der gewählte Eintrag ändert, sondern auch beim Senden beliebiger Befehle (Zuweisen, Anhängen, Löschen) an den S-Eingang anderer Instanzen der Liste, wobei die Befehle den aktuell ausgewählten Listeneintrag gar nicht betreffen oder ändern. Folglich führt jede Änderung des Listeninhalts zu einem erneuten Update des R-Ausgangs aller Instanzen einer Liste.
Das führt bestenfalls zu erhöhter Rechenlast, wenn die angeschlossenen Elemente mit dem unveränderten Eintragswert neu evaluiert werden, oder aber dazu, dass angeschlossene Variablen, die zwischenzeitlich modifiziert wurden, wieder zurückgesetzt werden. Das führt zu Fehlverhalten, das nur schwer einzukreisen ist.

Als Workaround sollte man nach Möglichkeit den R-Ausgang von angeschlossenen Elementen mit einem Zuweisungsbefehl entkoppeln.

Ein den Fehler reproduzierendes RoboPro-Beispiel findet sich hier.

Falls RoboPro noch weiterentwickelt wird, wäre ich sehr dankbar für einen Fix dieses Bugs im kommenden RoboPro Update.
Beste Grüße,
Helmut

HartmutKnecht
fischertechnik Mitarbeiter
Beiträge: 51
Registriert: 10 Jan 2011, 11:58

Re: Fehler im RoboPro Listenelement II

Beitrag von HartmutKnecht » 27 Mär 2018, 09:24

Guten Tag,

vielen Dank für den Hinweis. Dieser Sachverhalt ist uns bisher nicht bekannt gewesen und auch noch nicht als Problem bekannt. Wir werden versuchen das nachzuvollziehen und an unseren Entwickler weiterleiten. Ob das kurzfristig geändert werden kann, können wir zum jetzigen Zeitpunkt jedoch noch nicht versprechen.

Freundliche Grüße
fischertechnik
Hartmut Knecht

ROBOProEntwickler
Beiträge: 14
Registriert: 28 Dez 2012, 14:56

Re: Fehler im RoboPro Listenelement II

Beitrag von ROBOProEntwickler » 09 Apr 2018, 19:55

Hallo Hamlet,

in der Anleitung steht ja nicht "nur" und ich denke Du stimmst zu, dass es keinen Sinn machen würde die Anleitung so zu interpretieren (das würde ja bedeuten, dass auch keine = Befehle geschickt werden, wenn sich etwas im Array durch andere Befehle ändert).

Generell ist es nicht empfehlenswert sich darauf zu verlassen, dass Element keine redundanten = Befehle schicken. Die meisten Element schicken immer einen = Befehl, wenn Sie einen Befehl empfangen. Auch Unterprogrammausgänge (und Eingänge im Unterprogramm) schicken = Befehle, wenn man es nicht unbedingt erwarten würde. Man sollte Datenausgänge eher als Ausgänge wie in einer Elektronik betrachten - da ist es auch nicht gut mehrere Ausgänge zusammen zu schalten. Das Einzige Element, bei dem es sinnvoll ist mehrere Ausgänge zusammen zu schalten ist das Befehlselement. Man könnte hier aber mal eine entsprechende Fehlermeldung einbauen.

Zu erhöhter Rechenleistung führt das in der Regel aber nicht, weil redundante = Befehle an verschiedenen Stellen gefiltert werden (sonst könnte man in ROBOPro keine Flip-Flops aus Gattern machen).

Freundliche Grüße

Michael Sögtrop
(ROBOProEntwickler)

Antworten