Willkommen zu Kapitel 6 der Lehrveranstaltung,
in der wir uns mit einem Werkzeug zur Zustandsmodellierung beschäftigen möchten.
Ich habe dieses Werkzeug Madlab Simulink ausgewählt,
weil es sich um einen Industriestandard handelt,
den sie in weiten Bereichen von ingenieurmäßigen entwerfen,
eintreffen werden und mit dem wir als Informatiker auch zu tun haben werden.
Madlab ist natürlich nur ein Produkt. Sie werden auch merken,
im Buch kommt das quasi nicht vor.
Ich habe es hier reingenommen mit einem kurzen Abschnitt,
um sie damit vertraut zu machen, was solche Werkzeuge können.
Wir benutzen von diesem Madlab auch nur den Teil Stateflow,
der Übung lernen Sie ein anderes Werkzeug kennen, Jakindu,
das werden wir vielleicht im folgenden Jahren für die Lehrveranstaltung benutzen,
weil wir es da leichter Lizenzen bekommen.
Die Fragen, die Sie beziehen, die Sie hier sehen,
beziehen sich nicht konkret nur auf dieses Madlab,
die sind auch übertragen und wir möchten eigentlich Sie,
das ist für uns nur ein Beispiel, was wir hier benötigen.
Also es geht hier bei den Fragen drum,
was kann man mit Flussgrafen machen, wie werden Transitionen bearbeitet,
wie wird das bearbeitet?
Also eigentlich Details dazu, wie man etwas modelliert,
wie man etwas ausdrückt und diese Fragelesbarkeit ist auch wichtig
Nachteil dieser Sache,
wenn wir so ein Industriewerkzeug hier mal reinnehmen, ist,
dass wir eigentlich Material nur auch von dem Hersteller beziehungsweise vom Umfeld haben.
Ich habe hier ein paar Links angegeben, die sind jetzt
aktualisiert für dieses Jahr, die sollten also wieder passen.
Wie wir mit Zustandsmaschinen umgehen, dieses Werkzeug Stateflow,
wie gesagt, Matlapsim Olymp heißt das Produkt.
Wir benutzen nur diesen Teil Stateflow,
weil der am meisten mit uns zu tun hat.
Doch nun erst mal, wozu das Ganze als Szenario
möchte ich Ihnen darstellen? Wir stellen uns vor,
als Informatiker sind wir beteiligt an der Entwicklung eines technischen Systems
Ja, als Beispiel hier so ein Portal geraden,
so was haben Sie vielleicht alle schon mal gesehen,
der fährt typischerweise hier unten rechts und links auf Schienen,
das heißt, er kann sich in diese Richtung bewegen,
zusätzlich kann er hier Lasten tragen, die kann seitlich transportiert werden,
zum Beispiel zwischen mehreren Bahnschienen oder von einer Fahrstraße,
wo LKWs stehen, auf einer Bahnenverladung und hier kann eine Last dran,
in unserem Fall hängt ja ein Container dran.
So ein Ding wird durch Software unter anderem gesteuert, das heißt,
Informatiker sind mit im Boot, wenn man hier baut,
wenn man so ein System entwickelt und zu dem Entwickeln des Systems gehört nicht nur Entwicklung des Schreiben des Programmcodes,
sondern ganz wichtig auch, man muss das ja testen.
Und Sie können sich vorstellen, dass es nicht reicht,
hier ein Unitest zu schreiben, sondern man muss das irgendwie mit dem System testen.
Da aber normalerweise die Hardware, das heißt,
das Eisen, die Motoren, die wir hier haben,
alles während im gleichen Takt entwickelt wird, haben wir zum Testen nichts zur Verfügung.
Ja, also zum Zeitpunkt, wenn wir unsere Testsoftware gern testen wollten,
arbeitet sie dann mit der Motorsteuerung,
die hier oben irgendwie auch gehört, also wir stellen uns vor,
unsere Software läuft hier in diesen Schaltschränken,
die hier verbaut sind oder so.
Wenn wir uns vorstellen, wir wollen das gern damit testen,
ob das Zusammenspiel klappt, dann Und es gibt noch nichts,
womit wir testen können, müssen wir also ein Testsystem haben.
Und genau das ist, wo dieses Werkzeug zum Tragen kommt.
Und deswegen sind die Firmen auch bereits sehr viel für dieses
Werkzeug, für ein solches Werkzeug zu bezahlen.
Wir stellen uns vor, wir sind in diesem Test involviert,
wir wollen den automatisierten Test machen. Damit wir die Software,
die hier drin läuft und die einen Teil der digitalen Steuerung ausmacht,
damit wir die testen können, müssen wir die Systemumgebung,
das heißt,
die Umgebung unseres Steuercomputers nachbilden
Zu unserem Steuercomputer gehören nicht nur die elektrischen Antriebe,
die hier oben das Seil hoch und runter wickeln oder
die Fahrbewegung hier quer machen oder die Fahrbewegung hier machen,
sondern dazu gehört auch, dass dieses physikalische System aus Stahlträgern,
Seil pendelnder Last auch noch irgendwelche Wirkungen hat.
Zum Beispiel, wir wollen steuern,
dass der Schlitten hier nicht weiter rüberfährt, als bis das,
wo das zu Ende ist.
Oder dass eine bestimmte Maximalgeschwindigkeit nicht überschritten wird,
damit das ganze Gerät nicht seine Festigkeit überschreitet.
Und dazu müssen wir
verschiedene Aspekte modellieren
Und das sind genau die Aspekte,
die dieses Tool dann abdeckt, beziehungsweise andere Tools ebenfalls.
Dieses Tool ist, wie gesagt, für uns nur ein Beispiel.
Es ist so ein bisschen der Marktführer.
Genaue Zahlen kenne ich nicht. Es spielt ja für uns
keine Rolle. Es ist ein repräsentatives Beispiel. Und wenn
Sie schon mal da ein Gefühl dafür haben,
hilft Ihnen das in Ihrer beruflichen Weiter, weiteren Entwicklung.
Ich möchte zunächst anfangen mit dem, was am meisten wirklich Software,
der Softwareentwicklung nahe kommt, dass nämlich Teile,
die irgendwie digital gesteuert sind, also ein aus.
Diskret ist eine Bezeichnung dafür,
dass es wohl
unterschiedene Werte gibt
Also er wird, es gibt den Wert 5 und den Wert 6 und den Wert 7.
So wie eben On-&-Off, True & Falls. Das wird
also genommen, zum Beispiel, um Motoren zu steuern.
Natürlich kann ich ja auch analoge Werte haben,
aber meistens sind diese Steuerungen heute digital gemacht.
Da kann ich also den Motor steuern, Rechtslauf,
links, lauf, vielleicht noch unterschiedliche Geschwindigkeiten.
Vielleicht bis zu einer bestimmten Position, da wird mitgezählt über kleine Lichtschranken oder Impulse.
Wie weit bin ich denn, dass ich das Ende rechtzeitig erreiche?
Der Greifer, zum Beispiel der Greifer, mit dem so
ein Container gegriffen wird. Vielleicht haben sie es schon mal gesehen,
Container hat in der Ecke Ösen und dieses,
was hier rot gezeichnet ist, dieses Teil, was hier den Container greift,
da hat er am Ende dann solche Bolzen, die die Ösen greifen.
Also das wäre dann ein Aus oder man hat eine bestimmte Sperre,
eine Verriegelung für die Farbewegung,
eine Verriegelung für Bewegung hier oben oder eine Verriegelung für die Last.
Sowas schaltet man auch an und aus. An und aus,
du diskrete Zugestände, das hat etwas mit Zuständen zu tun
und das wäre der Teil Stateflow von diesem Werkzeug.
Das ist der Teil, mit dem wir uns auch beschäftigen werden.
Der einzige Teil. Die anderen Teile,
an denen wir hier besprechen wir hier nur kurz,
damit sie wissen, zu, die sind,
die besprechen wir hier nicht, weil das sind eher Dinge,
mit denen die Ingenieure sich rumschlagen müssen.
Wir sollten wenigstens wissen, wozu die gut sind.
Es gibt Teile, die haben, für die ist das physikalische Verhalten wichtig.
Zum Beispiel, dass es hier eine Trägheit gibt.
Also wenn das Ding sich bewegt, dann wird der Container
irgendwie weiterpendeln, auch wenn ich plötzlich stoppe.
Wenn ihr drüben der Wind dran zieht oder noch schlimmer,
wenn ich den Motor schnell starte und schnell stoppe,
dann wird dieses Metallteil sich ein bisschen verbiegen und es wird
in Schwingungen geraten
So, dass denen und Pendeln von Rollen,
das Seil wird sich dehnen,
also wenn ich den Container runterfahre und dann mit einem Schlag stoppe,
dann wird der Container noch ein bisschen nachgeben.
Ja, manchmal hat man so einen Effekt im Fahrstuhl schon mal gemerkt,
für diejenigen, für diejenigen unter ihnen,
die klettern in der Kletterhalle oder im richtigen Felsen,
die wissen das auch, dass das Seil sich dehnt.
Ja, also das, das sind alles Fälle,
die man zum Beispiel mit Differenzialgleichjungen nachbildet.
Ingenieure landen das in Teil ihrer Mathematik,
die ist genauso beliebt wie die Mathematik,
die Informatiker haben, die theoretische Informatik.
Also das wird durch Differenzialgleichjung nachgebildet und das wäre von
diesem Werkzeug der Teil Simulink
Zusätzlich gibt es noch mathematische Modelle, die die Festigkeit beschreiben,
zum Beispiel, die das Materialverhalten beschreiben.
Und da gibt es ein sogenanntes Finite-Elemente-Modell, Finite-Elemente, Finite
heißt Klein-Infinite, heißt unendlich. Also diese kleinen, begrenzten Elemente,
man bildet diesen, zum Beispiel die Ecke dieses Krans hier,
durch kleine drei Konstruktionen nach und hin für jedes dieser kleinen Träge berechnet man die Kräfte,
sodass man am Ende ein Modell hat, welche Kräfte hier wirken,
wie stark müssen die Ecken verstärkt sein,
damit keine Materialbrüche passieren.
So etwas will am Ende der TÜV auch sehen,
wenn das so ein Produkt abnimmt und die Konstrukteure,
die arbeiten mit solchen Werkzeugen und das sind mathematische Modelle.
Uns reicht es zu wissen, dass wir, dass es so etwas gibt,
dass man damit rechnen kann und diese mathematischen Modelle,
das ist von diesem Tool der Teil Matlab.
Also die Firma hat da,
die hat zunächst das Matlab und Simolink als Produkte gesehen und entsprechend heißt
das Werkzeug und das mit den Zuständen ist vermutlich danach dazugekommen,
die Geschichte dieses Werkzeugs tut für uns nicht wirklich.
Spielt für uns nicht wirklich eine Rolle. Sie sehen aus den Links das,
was wir hier haben, das kommt fast alles von dem Hersteller Muffworks,
dieser Hersteller, gelingt es mit diesem Werkzeug richtig viel Geld umzusetzen.
Weil natürlich die Entwickler auch sehr davon profitieren. Alle Materialien,
die wir verwenden, sind jetzt, die Folien,
die ich Ihnen jetzt zeige, stammen, also von diesen,
die Links sehen Sie hier, stammen davon,
dass wir vom Hersteller Materialien benutzen.
Leider gelingt es uns nicht für dieses Werkzeug genügend Lizenzen aufzutreiben.
Deswegen haben wir im Seminar Yakindo und vielleicht Wechselwerben kommt
ein Jahr wieder Vorlesung auch auf Yakindo. Okay,
ich möchte Ihnen also jetzt vorstellen,
wie es mit Stateflow aussieht und Wir fangen mal davon an,
dass wir erstmal sagen, dass wir, worum es hier geht.
Ja, wir wollen also Modelle erstellen, die lesbar sind,
die veränderbar sind, die testbar sind und am Ende in der Anwendung.
Bei Modellen geht es ja um die Anwendung,
den Aufwand für die Anwendung, effizient vom Aufwand Nutzenverhältnis her.
Wir sind unabhängig davon, wie die Implementierung passiert,
also ob sie das als C-Code machen oder als in einer bestimmten Sprache einer Steuerung,
diese Steuerung ist normalerweise im Schaltschrank dann drin,
das ist erstmal egal
Es geht um so mein Zustandsorientiertes System. Und wir wollen das benutzen.
Hier steht höhere Codequalität. Also wir wollen es dazu nutzen,
das ist ein korrektes, effizientes, lauffähiges System ist,
was auch wartbar ist im Sinne von Veränderungen,
die über die Zeit eintreten.
Okay, Begriffe, was hier vorkommt, wir haben ein Zustandsdiagramm.
Wir haben eine Semantik dahinter, die Semantik von Zustandsautomaten.
Es gibt die Mili und Moorautomat.
Das wird uns jetzt hier nicht
so stark
Kümmern und wir haben diskrete Funktionen,
die jetzt aus den anderen Diagrammen her aufgerufen werden können.
Das Werkzeug ist miteinander verbunden. Ja, so. Zunächst so ähnlich,
wie wir das für das Zustandsdiagramm der UML schon haben.
Wir können Gruppierungen vornehmen. Ja, also wir können hier,
wenn das, nehmen wir an, das wäre das Hauptdiagramm,
da können wir hier ein Unterdiagramm haben und in diesem Diagramm gibt es noch Zustände.
Ja, beziehungsweise es gibt Zustände für einzelne Teile. Ja,
und darauf, hier heißt es Nested, wir können das hierarchisch gliedern,
dass wir am Ende ein übersichtliches Diagramm haben und nicht hier alle Sachen drin,
damit man den Überblick verliert.
Ein Zustand, ein Zustand ist ganz ähnlich,
wie Sie das vom Zustandsdiagramm der OML schon wissen, so,
dass wir hier Zustände haben, die dargestellt sind durch etwas,
was getan wird.
Ja, also wir haben hier diesen schrägen Strich,
der ausdrückt, dass hier was passiert,
aber in dem Fall wird das hier dafür benutzt,
dass wir den Zustand beschreiben.
Ja, also deswegen, hier haben wir schon den ersten Unterschied zur OML.
Niemand hat je behauptet, dass die Stateflow Diagramme OML-Syntax entsprechen.
Ja, also bitte beachten Sie das, das ist doch
was anderes. Was wir ähnlich haben, ist,
dass die Zustände im Prinzip ausgedrückt werden, grammatikalisch.
Also man sieht hier nicht, es wird etwas gemacht,
es wird etwas versandt, sondern es ist etwas versandt.
Ja, es wurde etwas montiert. Und diese Zustände sind hier auf dieser dargestellt,
dargestellt, dass sie geschachtelt werden können,
dass ein Zustand intern wieder Zustände enthalten kann,
also dieser Zustände enthält wieder welche
Soweit zu diesen Zuständen. Wir haben Aktionen,
das kennen wir von dem UML-Zustandstiagramm auch.
Optional, das muss nicht immer sein. Und wir haben
hier Entry und During und Power-Austage und Bind als Beispiele.
Und es gibt Exit, gibt es ganz genauso.
Hier stehen hier nochmal alles in der Übersicht.
Wir kennen von UML Entry, Exit. Und dort heißt
es, du, hier heißt es During Action.
So, und hier ist es
ein kurzer Beispiel
Es gibt diese Möglichkeit, das reicht uns. Es gibt die Möglichkeit, hier Ausdrücke zu verwenden, um Bedingungen zu formulieren. Diese Bedingungen sind möglich,
sie brauchen wir dann, um Transaktionen in irgendeiner Form zu beschreiben,
also für jede Transition gibt es die Möglichkeit, hier Bedingungen auszustrücken,
wenn sie das hier ein bisschen genauer hinschauen, können sie vielleicht auch erkennen,
dass es hier auch eckige Klammern gibt für diese Bedingungen,
ja, dann gibt es hier sowas wie eine Zeitausdrücken,
After, ja, also hier gibt es zum Beispiel zwei Zustandsübergänge,
Der eine wird gefeuert, wenn diese Bedingungen,
diese logische Bedingungen, etwas ist größer als etwas anderes,
wenn die erfüllt ist.
Und wenn das nicht erfüllt ist, dann geht das hier
nicht lang bei zwei. Und eins geht erst lang,
wenn dieses, wartet die Wartezeit, überschritten wird.
Ja, und dann geht es den zweiten Milag und ansonsten
wird es hier bleiben. Ja,
also das hätten auf diese Weise kann man mehrere Bedingungen,
über mehrere Bedingungen kann man ausdrücken,
dass es auch mehrere Möglichkeiten gibt,
da den Zustandsübergang zu machen
Die genaue nicht dran Notation für Transitionen steht hier. Ja,
also wir hatten sowas ähnliches für die UML auch gesehen.
Wir haben das Ereignis, wir haben die Bedingungen und dann
gibt es nach dem Schrägenstrich die Aktion.
Das entspricht dem, was wir für das Stageshirt der OML
auch haben. Ist nicht so sehr verwunderlich,
die beiden Mathworks und UML haben sich vermutlich nicht miteinander abgestimmt,
aber beide neben Anleihen dahin, was in der Disziplin üblich ist.
Sowohl die Firma Mathworks mit ihrem Tool als auch die Entwickler
der OML wollen verstanden werden. Sie wollen akzeptiert werden und
deswegen ist es für die eine gute Idee,
wenn sie das nehmen,
was sowieso schon üblich ist
Ja, also das ist sehr ähnlich zu dem, was üblich ist und UML halt auch. So,
hier steht jeweils, was wir dort haben,
wir haben den Trigger, bei UML hat man auch noch gesagt,
gerade, das kann weggelassen werden, die Bedingungen,
die ist wichtig, wir stehen hier, die eckigen Klammern,
das ist ja auch gleichzeitig eine unserer Fragen, wir gehen mal kurz dahin,
dass wir die nicht ganz aus dem Blick verlieren.
Ja, also die geschweifte Klammern werden hier verwendet in Transitionen,
um die Bedingungen zu beschreiben und hier an Zuständen,
das hatten wir schon, das war du, Dubling,
Exit-Bind und Power-Outtage, also wenn die Energie weggeht, das hatten wir auch schon besprochen.
Wir gehen mal wieder zurück zu, wir waren hier,
ja, also wir haben jetzt die Condition,
dann gibt es hier die Condition Action, ja,
dass wir etwas sagen können,
was soll hier vielleicht noch weitergezählt werden oder sowas und dann gibt es noch die,
eine Aktion, das ist die Aktion,
wie wir sie im Zustandsdiagramm der OML erhoben,
die passiert,
wenn wir diese Transition lang gehen.
Das ist das allgemeine Format,
was wir hier haben
So, dessen die ganzen Ausdrucksmittel, die es hier gibt,
die Grafischen, also der Zustand, ein Kasten mit abgerundeten Kanten.
Transition ist dieser Pfeil, dass die Stadt-Event,
ach so, die historische Funktion History junction,
die hatten sie in der Übung schon gesehen.
Das wäre die Möglichkeit, den vorgehenden Zustand zu merken.
Ja, genau. Also es gibt noch weitere Funktionen.
Für uns ist vor allen Dingen Zustand, Zustandsübergang und diese Default-Aktion
wichtig. So, es gibt noch ein paar Werte,
die wir hier brauchen.
Die sind hier beschrieben
Die Datentypen, ja, die wir hier brauchen, vor allem Input,
Output, spielt für uns keine so ganz große Rolle.
Für uns, das, was sie bitte behalten sollten,
wäre, wann sie das einsetzen können.
Okay, Werk, wir machen mal hier weiter.
Wir haben die Möglichkeit, solche Transitionen zu machen, die intern passieren.
Ja, also, wo man immer wieder ins Gleiche geht.
Sie sehen jeweils die Notation. Das ist für uns,
was für uns wichtig ist, ist das Einzige,
was wir hier behalten wollen,
dass wir nämlich egische Klammern haben für die Bedingungen und nach
dem Schrägstrich die Aktion für die Transition
Jetzt noch ein Punkt, der mir wichtig ist,
den wir ja auch übertragen, ist über dieses Werkzeug hinaus.
Lesbarkeit von Diagrammen, Diagramme sollen gut verständlich sein,
sie sind ein Kommunikationsmittel und selbst wenn sie nicht über das hinausgehen,
also sie erinnern sich an diese Typen von Modellierungswerkzeugen.
Selbst wenn sie darüber hinausgehen, soll dieses Werkzeug Sonny-Modelle prüfbar sein.
Auch dazu müssen sie verstanden werden können, auch wenn wir
sie mit vollständiger vollständigen Detailgrad ausstatten für Code-Generungen für Simulationen,
für Tests.
Auch dann müssen sie
lesbar sein
Und dafür brauchen wir dieses Mittel der hierarchischen Gliederung und jetzt die Empfehlungen,
die die Firma hier für ihre Diagramme gibt.
Ja, sie sagt, ich sollte nicht mehr als sechs
bis zehn Zustände pro Diagramm verwenden. Das ist eine Zahl,
die irgendwie noch auf einen so in eine Bildschirmseite passt.
Natürlich können sie es immer eine A0-Wand in ihrem Projektbüro machen,
aber diese A0-Wand kriegen sie kaum mehr bearbeitet,
auf jeden Fall nicht auf einem Bildschirm dargestellt.
Da muss man immer reinzoomen, dann verliert den Überblick.
Und selbst so eine große Wand ist dann immer die gleiche Frage,
ob mich das sehe, die Querverbindung, die es dafür gibt.
Ja, also hier die Empfehlung ist sechs bis zehn
Und wenn ich dann mehr habe, sollte ich die versuchen,
in irgendeiner Form auszulagern. So,
und wenn wir jetzt also hier insgesamt acht Zustände haben,
dann könnte es durchaus sein, die packen wir auf ein Diagramm.
Aber wenn es jetzt zwölf oder zwanzig werden, dann sollten wir versuchen,
dieses Diagramm zum Beispiel mit den dreien drin auszulagern in ein separates Diagramm.
Und natürlich müssen wir dann immer darauf achten, dass die
Konsistenz gehalten bleibt. Das heißt, wo ich hier reingehe,
ist im Inneren dann die Default Transition der Stadtknoten.
Und das müsste dann irgendwie mit dem Exit wieder passen.
Und das Ganze, der Bezug ist jeweils auch immer
das Gleiche
So, wenn wir das Gleiche, wir können auch Zustände ineinander verpacken,
wenn wir die in einem Diagramm haben, ja,
aber hier ist die Empfehlung,
dass wir das nicht mehr als drei Ebenen tun.
Also hier haben wir eine gesamte Ebene, noch eine Ebene, noch eine Ebene.
Und wenn hier noch eine vierte Ebene dazu ist,
das sollte dann ausgelagert werden,
weil man da nicht mehr so genau das gut lesen kann.
Sie werden vielleicht fragen, warum machen wir denn das,
wenn das sowieso so ein extra Diagramm ist,
könnten wir es noch auspacken?
Klar, wenn wir es drin lassen,
haben wir es im Blick
Ja. Und was noch zusätzlich ist, wir können dann
einen Unterschied machen, ob ein Zustandsübergang nur auf das Uber-Gordnete
geht oder ob ein Zustandsübergang direkt auf ein weiteres geht.
Diesen Zustandsübergang, diese Unterscheidung ist hier möglich.
Das heißt, wir hätten dann zum Beispiel zwei Entry-Points,
man könnte das auch sagen, wir gehen hier direkt rein.
Das ist, solche Unterscheidungen können Sie natürlich nicht machen,
wenn Sie das semantisch von der Wirkung her schon,
aber nicht davon, wie der Leser das versteht.
Wir gehen in dieser Veranstaltung nicht so weit,
dass wir jetzt den Unterschied machen,
wie kriege ich das das hin,
wie formuliere ich das syntaktisch,
dass es hier reingeht
Lesbarkeit, wir sollten versuchen, dass in irgendeiner Form zu gruppieren,
und zwar, dass wir fachliche Dinge zusammenfassen,
dass wir Layers haben, dass wir es klarstellen, was zusammengehört.
Also hier gibt es zum Beispiel den einen und den anderen Layer,
oder hier gibt es diese Ebenendarstellung,
die sind, also so ist es besonders gut klar,
weil hier klar ist,
wo geht,
wo ist der Übergang zwischen denen
Wenn wir hier zu viel hin und her haben,
könnte es schwierig sein zu verfolgen, wo ich gerade bin.
So, es gibt noch die Supertransitionen. Da können wir,
das ist genau der Punkt, wo ich dann
dafür sorgen kann, ob ich hinein oder hinausgehe.
Das ist nicht, das würden wir hier weglassen.
Und jetzt Transitionen. Auch da gibt es Empfehlungen für Lesbarkeit.
Wir könnten das aufteilen in mehrere, wenn das Zu weit,
wenn es eventuell logische Ausdrücke zu komplex werden, können wir versuchen, das aufzuteilen.
Die Empfehlung, lesbare Bezeichnungen verwenden ist ihnen sicherlich klar.
Aber wenn das, wenn wir eine Aufteilung vornehmen,
sollten wir sie auch thematisch vornehmen. Das heißt,
das eine hat vielleicht mit technischen Bedingungen zu tun und das andere mit fachlichen Bedingungen.
Soweit. Wenn wir Konditionen an Transitionen haben,
dann müssen wir dafür sorgen, ist auch wieder Lesbarkeit als Thema
Dass die ganzen Miteinander in Bezug stehen, senkrecht.
Hier in dem Fall haben die das Senkrecht waagerecht orientiert,
sodass man immer das gut verfolgen kann.
Wir sollten versuchen, das in einer Weise zu entwickeln,
also immer gleich zu machen zwischen allen,
wenn mehrere Leute in ihrem Projekt an so etwas arbeiten,
versuchen sie eine gemeinsame Meinung zu finden.
Okay, so Funktionen, wir können hier, haben wir
die Möglichkeit, Funktionen einzubinden. Das ist für uns interessieren,
werden wir jetzt nicht weitermachen. Für uns ist es nur wichtig,
damit können wir die Verknüpfung zu mathematischen Operationen machen,
die dann zum Beispiel diese analogen Berechnungen mit Differenzialgleichungen oder so etwas machen.
Also wir können hier eine Funktion auswählen, das werden wir,
es reicht uns zu wissen, dass es das gibt.
So, dann gibt es noch die Möglichkeit, dass man
verschiedene Arten von Transaktionen hier darstellt. Und die Möglichkeit Ja,
ich möchte gern hierhin, ja, die Möglichkeit,
diesen Darstellungen zu haben, diese Darstellung,
wo man die Zustände im Zentrum hat und dann darstellt,
wie die Übergänge sind, möglichst idealerweise ohne Kreuzungen,
sodass man immer den Namen teilen findet,
das ist ja hier natürlich bilderbuchmäßig gemacht für diese Demonstration.
Das ist natürlich sehr viel besser. Ansonsten könnte man
auch hier solche Bündel von Zustandsübergängen machen und sagen,
wo geht denn das hin, das hin,
das hin.
Das wäre auch noch möglich
Das ist ein bisschen ein anderer Stil. Man sollte versuchen,
die beiden nicht miteinander zu mischen. Ich möchte nur darauf hinweisen,
dass diese linke Darstellung schon etwas ist,
was man in den Standard-Schulbeispielen nicht so hat,
weil das beschränkt ist für Systeme, wo ich von jedem Zustand,
in jeden Zustand gehen kann.
Und dann wäre diese Darstellung sehr uneffizient,
weil wir Pfeile von jedem zu jedem haben,
dass wir da ziemlich diagonal gehen.
Hier würde das so besser gehen in den meisten Systemen,
die ich persönlich kenne,
ist es besser,
diese Darstellung zu verwenden
Zusätzlich zu diesen Zustandsdiagrammen, die wir bis jetzt gesehen haben,
die also Automatengrafen sind, gibt es noch die Möglichkeit,
in diesem Tool weitere Darstellungsformen zu wählen und die eine Darstellungsform sind die Wahrheitstabellen,
die man als Logik-Tabellen kennt.
Der nächste, der nächste Punkt sind Entscheidungstabellen,
die auch wieder logische Verknüpfungen darstellen, dieses Zustandsdiagramm,
wie wir es schon kennen und Tabellen mit Zuständen und Zustandsübergängen.
Diese Darstellungsformen drücken auch jeweils logische Zusammenhänge da und diese können wir
jeweils für ihre Zwecke am besten benutzen. Natürlich können sie die auch mischen,
sie können auch in einem Projekt mal sagen, okay,
wir haben eigentlich nur einen von den Typen,
wir wandeln das dann um und das andere,
die anderen Typen, die ganz selten vorkommen,
die nehmen halt, lass mal dann raus,
wir nehmen nur diese Darstellung.
Hier ist es einfach nur zu sagen, es gibt diese Darstellung für logische Zusammenhänge.
Damit möchte ich die Behandlung dieser Lehrveranstaltung, dieses Tools auch beenden.
Sie können die das gerne weiter anschauen. Sie sehen,
dann hier gibt es noch Tipps, wie man damit arbeiten kann.
Ich möchte, was bei Ihnen hängen bleiben soll,
ist, dass wir diese Darstellungen verwenden können,
dass wir dieses Tool verwenden können, um zustandsorientierte Systeme zu beschreiben.
Ein letzter Blick auf die Fragen, die wir hier hatten. Wir haben also jetzt,
Moment, das war noch nicht die richtige Folie,
jetzt soll es hier kommen, ja,
wir hatten also etwas hier zur Lesbarkeit und Wartbarkeit gesagt,
nämlich zum Umgang mit Schachtelung, Nested Functions,
Nested Transitions, dann die grafischen Notationen für diese Beziehungen,
die müssen wir uns gleich nochmal anschauen,
an den Zuständen,
das hatten wir
schon gesehen
Und das war ganz, diese Frage haben wir ganz am Anfang notiert,
gesagt, wenn es, wir können das dann verwenden,
wenn es geeignet ist, wenn es solche Übergänge gibt.
Nein, ich merke gerade, das haben wir noch nicht besprochen,
das müssen wir bei dem Letzten nochmal hinzufügen,
das war diese Fudi 23, glaube ich,
da gehen wir gleich nochmal hin.
Also wenn wir nicht diese Zustände haben, wo jeder zu jedem,
sondern wo es Übergänge gibt. So, das ist,
wäre hier eine Möglichkeit und ansonsten war ja noch das mit den Flows hier,
ja, die Flows Diagramme, wenn wir Zustandsübergänge haben,
die zwischen Entscheidungsknoten sind, logische Vergleiche häufig.
Also man benutzt das zum Beispiel, um Fehler auszuschließen,
um Fehler zu verfeinern. Ja, das kann man ganz gut machen,
weil hier eher nur die Logik eine Rolle spielt.
Ja, also hier keine Zustandsinformation, nur logische Vergleiche werden
dort kombiniert, das kann man da gut verwenden.
So, dann hatten wir noch diese Frage,
die letzte Vorletzte exklusive und, und, und, oder.
Das haben wir hier auf dieser Folie Mattworks Folie Nummer 9. Hier steht der Unterschied,
dass wie wir unterschiedlich mit unterschiedlichen Zustandsübergängen umgehen,
den exklusiv oder die gleichzeitig aktiv sein können und die parallelen Zustände und die hier Konkurrent ausgeführt werden,
sind, auch wenn sie separat ausgeführt werden.
Also hier haben wir den Parallelenzustand, der ist durch das gestrichelte dargestellt, abgegrenzt.
Und das Exklusive oder es durch ein durchgezogene Kante dargestellt.
Diese zwei Zustände haben quasi nur grafisch von der Umrandung her
die gleiche Form. Ansonsten ist es hier die Kantilinienform,
die zum Unterschied hier dient. Und um das abzuschließen,
nur nochmal die Einordnung. Also wenn wir so ein Software,
die vielleicht hier in der Steuerung läuft, für ein umgebendes technisches System Prüfen,
testen müssen, müssen wir alle Teile modellieren.
Und das Softwaresystem selber, das digitale System,
würden wir dann mit so einem zustandsorientierten System modellieren.
Das geht in den meisten Fällen. Während wir das Verhalten der Teile ringsherum,
der Hardware, der physikalischen Teile,
soweit sie analoge Verhalten zeigen, also über die,
das wären wie zum Beispiel physikalische Verhältnisse wie Dehnung,
Pendeln oder so etwas, das würden wir ganz gut mit Simulink darstellen können.
Wenn wir interne Verhalten modellieren wollen für physikalische, biologische Systeme,
da könnte man mal Klapp für mathematische Funktionen,
hat es gut zu verwenden. Das geht bis dahin,
dass ich dort massive Möglichkeiten habe mit Matrizen-Operationen zu arbeiten.
Also was gibt es in Merclub. Damit beenden wir diesen
kleinen Ausflug zu einem industriell verwendbaren Tool. Wie gesagt,
die zustandsorientierte Teil haben wir in anderen Werkzeugen ebenfalls auch.
Und das hier Kindo ist in weiteres Beispiel,
was man dafür verwenden kann