Simulink Signal verlängern?
Hi,
Ich muss von einem Farbsensor, der Werte von 0-7 aus gibt, die Änderung des Signals sozusagen verlängern.
Also an meinem Beispiel: Wenn eine Farbe erkannt wird, soll eine Reihe an Aktionen ausgeführt werden (die über Action Subsystems angesteuert werden können). Das Problem ist nur, dass diese Farbe durch die Aktion2 wieder einen anderen Wert annimmt, weil der Sensor einen Baustein vor sich liegen hat, dessen Farbe gemessen wird, aber dann durch die Aktion2 eben entfernt wird. Und weil diese Farbe sich ändert, aktiviert sich ein anderes Subsystem (Aktion1), welches den Baustein wieder hin legen würde.
Um das zu verhindern, wollte ich ein Delay zwischen Farbsensor und den Cases einbauen, aber klappt das nicht ganz wie gewollt und habe ich keine andere Lösung parat. Auch ein Delay zwischen Case und Subsystem bauen geht nicht, weil das Simulink nicht erlaubt.
1 Antwort
Du musst einen weg finden während der Ausführung einer Aktion keine andere zu starten? Ich kenne die legi Software nicht aber ich hoffe mal esgibt Logische Gatter und Speicherzellen du muss sofern eine Farbe erkannt wird die Erkennung in einem bit speichern und dann irgendwie den farbsensor lahmlegen.
Hab hier mal ne Zeichnung von der Logik für den Output von einem gemacht.
Die 3 Punkte sind eine deiner "subroutinen"
Das bit den kreuzenden Leitungen ist ein rs-nor-latch.
Im Endeffekt hast du vor jedem Output ein und gatter mit einen nicht vor dem 2. Input. Gibst du ein Signal vor das nicht gatter, wird der zugehörige Output lahmgelegt. Das machst du dir zu nutze und speicherst das signal, der Output von dem Speicher (rs-nor-latch) geht an die nicht gatter der anderen Outputs. Sofern der speicher nicht zurückgesetzt wird, was ich hier mit dem ende des Programms mache, um neue inputs zu ermöglichen, können keine weiteren Signale vom farbsensor durchkommen.
Ich hoffe das ist verständlich.
Das Programm, das ich benutze, ist Simulink mit der Erweiterung für Lego EV3.
Das, was du geschrieben hast, mag zwar funktionieren, aber leider nicht in Simulink (und ich darf leider auch kein anderes Programm neben Simulink/Matlab benutzen), da zwischen dem Output der Cases und dem Subsystem nichts stehen darf. Weder Logik-Gatter, noch sonstirgendwas. Das heißt, ich muss im Prinzip den Wert, den der Farbsensor ausgibt, speichern und den dann für eine bestimmte Zeit lang stilllegen.Dazu fällt mir nur nichts ein.
Übrigens haben die Subsystems bei mir im Prinzip auch keinen Output, da diese verschiedene Motoren ansteuern und das schon in den Subsystems geregelt ist. Es kommen also Werte rein, aber keine raus.