Hallo s-vdobre,
Zitat:Zum Beispiel ich bin bei "Abtaste X", der Motor startet und dann sofort werden die Befehle an Motor2 also Vorgang "Abtaste Z - links" gestartet und keine Befehle mehr zum Motor1 kommen. Solche können gesendet werden,erst nach den die Befehle für Motor2 gesendet worden sind. Deshalb sehe ich keine Möglichkeit wie man das realisieren kann.
Das ist so, weil
DU es so programmiert hast!
Niemand schreibt dir vor, wie du von "Abtaste X" zu "Abtaste Z" kommst: du musst
nicht direkt in den nächsten State wechseln!
Wenn man wichtige Bedingungen prüfen will, kann man dies bei JEDEM Statewechsel tun, z.B. nach der Case-Struktur, bevor man die nächste Iteration startet…
Man kann auch, mit entsprechend vielen Bedingungen, mehr als nur 2 mögliche States als nächsten wählen.
Tipp:
Einfach mal ein Blatt Papier nehmen und
einen Plan zeichnen!
Zitat:Für die dritte Frage finde ich keine Lösung....
Ich habe es so versucht: Schieberegister für die for-Schleife "Abtaste X" erstellt, dann ein Indikator am Ausgangsregister und ich möchte dieses Wert wieder am Anfang eingeben. Und dann es vergleichen (z.B. bei 50 Durchgänge: Eingangswert > 50 T/F?) und dann weiter auswählen welche Case ausgeführt wird. So einen vergleich wie in den "Zustandsautomat_stop".
Wenn du das Schieberegister an der äußeren While-Loop anlegst, dann hast du IN JEDEM State Zugriff auf die darin enthaltenen Daten.
Tipp:
Einen State durchverdrahten, dann auf den Ausgangstunnel einen Rechtsklick und diesen Tunnel als "Linked Tunnel" festlegen: es werden automatisch auch alle anderen States durchverdrahtet. Dann nur noch die "interessanten" States, die diesen Draht mit seinen Daten benötigen, editieren…