Forum: PC Hard- und Software Stateflow - Instanzfähige State-Machines


von Patrick L. (crashdemon)


Lesenswert?

Hallo Zusammen,

weiß jemand von euch ob es möglich ist mit Stateflow ist Instanzfähige 
State-Machines aufzubauen so wie es mit Yakindu SCT 
(https://www.itemis.com/en/yakindu/state-machine/) geht?

Ich würde eine State-Machine mit Stateflow aufbauen die keine "internen" 
variablen im Code hat. Es soll möglich sein alles über ein "Handle" 
(Struct was alle Daten enthält) an die Stateflow State-Machine zu 
übergeben.

Das hat den Vorteil das ich eine State-Machine nur einmal "zeichnen" 
muss und die beliebig oft mit unterschiedlichen "Handles" aufrufen kann.

Wie gesagt bei Yakindu SCT ist das möglich.

Grüße

Patrick

von Pandur S. (jetztnicht)


Lesenswert?

Ja, sicher geht das. Irgendwo muss die Statevariable halt sein.

: Bearbeitet durch User
von Patrick L. (crashdemon)


Lesenswert?

Pandur S. schrieb:
> Ja, sicher geht das. Irgendwo muss die Statevariable halt sein.

Ja, aber bietet das Stateflow nativ an? Also ohne irgendein zurecht 
Gefummel?
Mir ist da bis jetzt keine Variante bekannt; was ich blöd finde.

Gerade auch aus Sicht der "Funktionalen Sicherheit" ist es hilfreich 
wenn alle internen Variablen einer State-Machine über eine Handle 
übergeben werden können.

von MaWin (Gast)


Lesenswert?


von Patrick L. (crashdemon)


Lesenswert?

MaWin schrieb:
> Ja. Guck halt in die Doku rein:
>
> 
https://www.itemis.com/en/yakindu/state-machine/documentation/user-guide/codegen_c_code_generator?hsLang=de#codegen_c_code_generator

Ich will ja nicht wissen wie es mit Yakindu geht. Da weiß ich ja wie es 
geht. Ich möchte Wissen ob es irgendwie mit Stateflow geht :-)

von MaWin (Gast)


Lesenswert?

Ist natürlich sehr sinnvoll den Link zu dem Produkt anzugeben, von dem 
man nichts wissen will und den Link zu dem Produkt von dem man 
Informationen will nicht anzugeben...

von Patrick L. (crashdemon)


Lesenswert?

MaWin schrieb:
> Ist natürlich sehr sinnvoll den Link zu dem Produkt anzugeben, von dem
> man nichts wissen will und den Link zu dem Produkt von dem man
> Informationen will nicht anzugeben...

Bitteschön: https://de.mathworks.com/products/stateflow.html

von Patrick L. (crashdemon)


Lesenswert?

Hat noch irgend jemand irgendwelche sachdienlichen Hinweise?

von guest (Gast)


Lesenswert?


von Patrick L. (crashdemon)


Lesenswert?

Ich glaube ich muss mein Problem vllt. noch ein wenig genauer 
beschreiben.

Ich benutze Yakindu SCT um ein State-Machine einmal zu "zeichen". Der 
eingebaute C Code-Generator generiert mir die entsprechende 
State-Machine.

Die generierte State-Machine wird aus einer bestehenden SW-Komponente 
aufgerufen. Das geschieht über die Funktion runCycle(). Hier habe hier 
mal Beispielhaft etwas herunter gehackt:
1
/* Typedef part of generated State-Machine */
2
typedef struct {
3
    Bool inEvent1;
4
    Bool inEvent2;
5
    TState state;
6
    Bool outEvent1;
7
} TexampleSM;
8
9
/* Declaration part of SW-Component calling State-Machine */
10
TexampleSM exampleSM[3];
11
12
/* runCycle() part of SW-Component calling State-Machine */
13
for(ínt i = 0; i < MAX_SM; i++) {
14
    runCycle(&exampleSM[i]);
15
}

In dem Beispiel sieht man gut das ich die State-Machine immer mit 
unterschiedlichen "handles" aufrufen kann.

Nur möchte ich sowas jetzt mit Stateflow machen und nicht mit Yakindu 
SCT.
Aber irgendwie scheint mir der generierte Code von Stateflow keine 
möglichkeit zu bieten.

von Patrick L. (crashdemon)


Lesenswert?

Ich glaube ich habe die Lösung evtl. schon selber gefunden. So wie es 
aussieht muss es beim generieren des Codes eingestellt werden. Das 
Feature heißt "Multi-Instance" beim Embedded Coder (Code Generator).

Ich werde das mal ausprobieren.

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
Noch kein Account? Hier anmelden.