Hallo Community, Ich beschäftige mich gerade mit richtiger Darstellung von Zustandsdiagrammen von Echtzeitsystemen. In einer Aufgabe wird das zeitliche Ereignis "TIME", der von einer externen Hardware kommt, 1 mal pro Sekunde erfasst. Der Ablauf ist ganz einfach: wenn man eine Taste betätigt, wird Led geschaltet "led(on)", nach 10 s wird das Led wieder ausgeschaltet "led(off)". Das System geht zurück in Zustand "WAIT" rüber. Nun bin ich mir nicht 100%-tig sicher, wie ich die Bedingung "Zustand nach Ablauf von 10 s verlassen" richtig darstellen soll. Hierfür habe ich zwei Varianten erstellt, die für mich infrage kommen beide sind auf dem Bild im Anhang. welche davon würde Eurer Meinung nach richtig sein? würde mich über Ihre Antworten freuen!
aso jetzt seh ichs. Variante 1 ist richtig, Variante 2 ist unklar. Wenn du was UML konform machen willst, dann willst du abstrahieren. In der UML gibt es für Zeitliche Bedinungen eigene Zeichen. Ich empfehle: Kauf dir ein gutes Buch, dass kann das viel besser erklären als hier in einem Forum
-.-.- schrieb: > kurze Frage: Wo in deinen Diagrammen sind die 10s? das habe ich als Ereignis TIME[T>10] dargestellt. Aber genau das ist auch der Kern meiner Frage, ob die Darstellung so richtig und für Prof nachvollziehbar ist
der Zustandsübergang wird nach UML wie folgt notiert: ereignis [guard] / action Da gibt es nicht die eine richtige Variante. Das ist wie bei der Programmierung. Es gibt Millionen richtiger Lösungen für ein und das selbe Problem. Anbei zur Verdeutlichung mal ein paar Varianten. Die funktionieren auch alle :-D hab es gleich mal getestet ;-) Gruß Prof. J.R.B LOL
@ J.R.Becher (Gast) >Da gibt es nicht die eine richtige Variante. Das ist wie bei der >Programmierung. Es gibt Millionen richtiger Lösungen für ein und das >selbe Problem. Stimmt, aber darum geht es hier nicht, sondern um eine einheitliche, allgemeinverständliche Notation, aka Sprache, und die sollte besonders im technischen Umfeld EINdeutig sein und keinen ungünstigen Interpretationsspielraum lassen.
UML ist doch eindeutig und exakt und eine Sprache :-D ... schau dir meine Modelle mal an, die sind soweit ein-ein-deutig, dass der Codegenerator daraus sofort ohne zu zucken stabile Zustandsmaschinen generiert hat die ich sofort aufs Target schießen konnte um sie zu testen... allgemein verständlich kannst du aber vergessen glaub ich... einen Schaltplan kann auch nur der lesen der die Notation also die Sprache erlernt hat... was deine Modelle betrifft so sind die soweit doch recht OK, beide Varianten außer dem Notationsfehler bei der Transition zum Zustand 1 zu Zustand 1 die einzelne eckige Klammer ist Schrott und du musst beachten, dass in Eckigen Klammern immer die Bedingungen stehen. Desweiteren solltest du dir darüber einig werden ob TIME eine Variable (Signal) oder ein Ereignis ist. Mal benutzt du TIME als Variable indem du einen Wert zuweist und das nächste mal notierst du TIME als Ereignis an der Transition. Warum benutzt du kein UML-Werkzeug was dir aus deiner SM lauffähigen Code baut? Dann kannst du doch deine Eindeutigkeit und Widerspruchsfreiheit wunderbar checken ;-) Gruß
@ J.R.Becher (Gast) >testen... allgemein verständlich kannst du aber vergessen glaub ich... Darum geht es gar nicht. >einen Schaltplan kann auch nur der lesen der die Notation also die >Sprache erlernt hat... DARUM geht es!
Hallo J.R., mich würde interessieren, welches UML-Tool Du verwendest. Ich habe vor kurzem mal das hier heruntergeladen: https://www.modelio.org/ Aber leider lief es nicht.
ich verwende SiSy ... hab das Projekt mal dran gehängt Gruß
also mit do/ ist mir nicht ganz klar, wenn do/counter++ steht, mit welcher Frequenz würde denn dieser Befehl ablaufen, wenn zwischenzeitlich keine zeitlichen Ereignisse/Events statt finden?
>ich verwende SiSy ... hab das Projekt mal dran gehängt Sisy ist mir schon vor einiger Zeit aufgefallen. Ich würde es vielleicht verwenden, wenn es auch Code für PC-Applikationen in C++ oder Java erzeugen könnte. Gerade eben habe ich mal Eclipse Papyrus heruntergeladen. https://eclipse.org/papyrus/index.php und versuche damit Code zu generieren. Es scheint für C++ zu gehen, wenn man das C++ Codegenerator Plugin installiert. Eigentlich wollte ich es erst mal für Java, aber das scheint nicht zu gehen.
Die Frequenz vom do ist per UML nicht geregelt... das muss man sich dann in der Implementation der SM auf dem jeweiligen System anschauen. In SiSy ist das do nicht automatisch festgelegt. Man muss als Entwickler festlegen welche Operation das do triggert. Ich lass das do letztlich immer aus der Mainloop triggern. Man könnte sich aber auch darauf festlegen es immer aus dem SysTick heraus, also alle 10ms, zu triggern. Das mach ich aber nicht so gern. Für JAVA ist ECLIPSE oder NETBEANS wohl das coolste. Meine kleinen PC-Applikationen zur Visualisierung von Daten meiner Mikrocontroller nutze ich trotzdem SiSy mit C++ für Windows... Ist zwar nicht so sexy gelöst wie die Mikrocontrollersachen geht total easy... guckst du hier. www.mySVL.de Gruß JRB
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.