zeitliches Ereignis in Zustandsdiagramm

OP #4437920
Lesenswert?
• ▲
▼
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!
Angehängte Dateien:
Gast #4437927
Lesenswert?
• ▲
▼
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
Gast #4459990
Lesenswert?
• ▲
▼
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
Angehängte Dateien:
#4460219
Lesenswert?
• ▲
▼
@  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.
Gast #4460910
Lesenswert?
• ▲
▼
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ß
Gast #4463770
Lesenswert?
• ▲
▼
>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.
Gast #4465321
Lesenswert?
• ▲
▼
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren