Hi, ich habe hier dankbar Hinweise bekommen, dass ich bei einigen Eingangszuständen und Ausgangszuständen doch über eine Zustandsmaschine nachdenken sollte. Ich versuche das nun, von Anfang her sauber zu coden, gefällt mir sehr gut! Ich hatte im Nebenfach Studium Informatik auch Automatentheorie und Petri-Netze, jetzt will ich das praktisch umsetzen. Zuerst zu dem, was ich gerne coden würde: In erster Näherung ein Automat, der von einem Zustand in den nächsten schaltet, aber nur, wenn gewisse Bedingungen gegeben sind. Nennen wir es Sicherheitskonditionen. Beispiel: Eine Ampel bekommt eine Störung, wenn dem so ist, schalte auf aus. Angehangen mein funktionierender Code, macht Spaß mit der Maschine! (Wenn ihr euch wundert: Die Zeitschaltung ist von einem delay in der main.c). Man erkennt hier schon: Die Transition zwischen den Zuständen ist hier schon ein if-Statement, weil ich hier zum Beispiel ständig darauf achten muss, ob die Ampel ausschalten muss. Vielleicht reicht das, wenn ich die Eingänge mit AND code. Und die Transitionen, die natürlich fall-abhängig sein könnten? Was meint ihr, am besten Funktionen schreiben, die die Transitionen prüfen? Das Ziel ist bei mir: Absolut verständlicher Code, nachvollziehbare Logik. (Eierlegender Wollmichsaucode??) Hier stieß ich zum Beispiel auf Qfsm (http://qfsm.sourceforge.net/) oder sogar für Petri-Netze auf den Platform Independent Petri Net Editor (http://sourceforge.net/projects/pipe2/), wenn es um kommunizierende Automaten geht. Was haltet ihr davon? Was ist eure Erfahrung? Nutzt ihr sowas? Danke! Liebe Grüße, Jens
Die meisten, grundlegenden Informationen zu diesem Bereich, wirst Du
wohl im Bereich SPS und Industriesteuerungen finden.
>Das ist doch ein Witz, das kann schon mein 9jähriger!
... nur mit den Lego-Steinen, da hat er immer noch Probleme.
Also das mit dem Switch und dem Ändern hast Du ja hinbekommen. Wenn es mehrere Bedingungen zum Status gibt macht es erstmal Sinn das ganze auf ein Blatt Papier zu schreiben und dann einen gewichteten Graphen zu erstellen. Je nachdem wie wichtig eine Kondition ist dann entsprechend werten. Also statt BOOL einen Wert vergeben, oder ich habe Deine Frage nicht verstanden :-P Bei identischer Gewichtung funktioniert das natürlich mit AND ;-) Achja und Dein default beim switch sollte alle Ampeln nicht aus sondern GELBBLINKEN sein :-D
Das klingt sehr spannend, ein gewichteter Graph! Ich habe null Ahnung, wie man den implementiert! Hast du Beispiele? In irgendwelchen Diagrammen sieht alles immer so nett aus, aber der Code ist dann spannend... nur dank dem Tipp eines Forumteilnehmers kam ich erst auf Zustandsmaschinen! Deshalb kam ich ja auf Simulationen, ich würde das ganze gerne nicht nur zeichnen, sondern vielleicht (!!) auch simulieren, aber Du hast offensichtlich die Erfahrung, und Du sagst: Blatt Papier reicht... Weißt, ich bin brutaler Theoretiker, aber das nützt mir nen Scheiß wenn ich code ;)
Also in meinem Buchregal steht z.B. rum: T.Ottmann/P.Widmayer Algorithmen und Datenstrukturen Ist allerdings schon etwas älter :-P Such einfach mal im Netz nach Graphentheorie und z.B. Traveling-Salesman-Problem ;-) Du kannst eine Gewichtung auch als Fuzzy ausführen, dann hast Du einen Wert zwischen 0 und 1 und damit die Schwelle. Wichtig ist das Du alle Zustände erfaßt hast und weißt welche Übergänge von welchen zu welchen wie geschehen müssen/sollen. Ein extra Zustand bei keiner passenden Entscheidung ist obligatorisch, wie das gelbe Blinken der Ampeln z.B. bei Kurzschluß. P.S.: Der "amazon link" geht ins Nirvana !
Theoretisch gibt es keine Probleme bei einem Automaten. Auch die Simulation funktioniert, wenn vernünftig definiert, immer 100-prozentig. Dummerweise halten sich echte Automaten aber nicht daran.
amateur schrieb: > Dummerweise halten sich echte Automaten aber nicht daran. Du solltest hier keine Fahrkartenautomaten "beleidigen" :-P Denn die funktionieren genau so wie sie sollen vor allem bei Auswahl einer Fremdsprache ...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.