state flow Bedienung für ein Simulink Model

Gast #5581478
Lesenswert?

Hallo, Profis ;)

Ich versuche eine Zustandsmachine zu erzeugen. Der Eingang ist ein 
Vektor mit 1000 Einträgen.
Die Bedienung für ein Wechsel in eine Richtung ist[vector(vector < 494 | 
vector > 631)] und zurück [vector(vector > 494 & vector < 631)]. Ich 
bekomme aber Fehlermeldung im diagnostic viewer Fenster "Illegal use of 
a matrix or vector type where a scalar was expected". Wieso? Wenn ich 
die Bedinungen   in the Matlab command window eingebe, gibt es keine 
Fehlermeldungen.

Infos über den Block A: READY, entry: Ready=1;
Infos über Block B:NOT_READY, entry: Ready=0;

Vielleicht hat jemand eine Idee, woran es liegen könnte??
Gast #5581973
Lesenswert?

...und dann noch:

wieso eigentlich vector von vector?
Genügt da nicht
  [(vector < 494) | (vector > 631)]
  [(vector > 494) & (vector < 631)]

Und soll bei vector=494 und bei vector=631 wirklich der alte Zustand 
erhalten bleiben?
Gast #5582210
Lesenswert?

Hallo,

danke.

Habe beide Möglichkeiten ausprobiert. Es kommt immer wieder die gleiche 
Fehlermeldung.

Zwischen den Zeitpunkten ( die Einträge im Vektor entsprechen den 
Zeitpunkten)    494<t<631 herrscht ein Zustand, sonst der andere 
Zustand.
Gast #5582436
Lesenswert?

vector ist also ein rein numerischer Wert.
Ausdrücke wie
(vector < 494) | (vector > 631)
geben als Ergebnis einen booleschen Wert zurück!

Diese Ausdrücke sind somit völlig sinnlos:
y = vector(vector < 494 | vector > 631)

bedeutet:
  y = vector von (true oder false)
wobei vector hier als Array mit 2 Elementen unterstellt wird.
Also
  vector(true)=numerischer Wert
und
  vector(false)=numerischer Wert


Oder beschreibe bitte die Aufgabe komplett!
Gast #5582517
Lesenswert?

Also

im Block 1 steht ja drin:
entry: READY=1
im Block 2:
entry: READY=0;

Eigentlich wollte ich das ja auch erreichen, dass der Ausgang der 
Zustandsmachine die Werte 0 oder 1 annehmen kann.

Also zwischen den Zeitpunkten 494<t<631  soll dann der Zustand 0 sein, 
sonst 1. Also möchte den Zustand (bereit: READY=1/nicht bereit:READY=0) 
eines Gerätes (z.B Waschmaschine) darstellen. Die Zyklusdauer ist 137 
Minuten, die Waschmaschine läuft zwischen den Zeitpunkten 494 und 631 
und ist dann natürlich während dieser Zeit nicht bereit, weil sie ja 
schon läuft. Vor dem Zeitpunkt 494 und nach dem Zeitpunkt 631 ist sie ja 
dann bereit, weil sie eben nicht läuft.
Gast #5582653
Lesenswert?

Ich sehe hieraus keine Notwendigkeit einer Zustandsmaschine, denn 
"vector" scheint ein Wert zu sein, der immer anliegt, nicht nur ab und 
zu. Eine Zustandsmaschine hat ja Speichervermögen, was hier nicht 
zusätzlich benötigt wird.
Wenn ich es nun richtig verstehe, genügt dieser Ausdruck:

READY = (vector < 494) | (vector > 631)

READY nimmt außerhalb des Bereiches 494...631 den Wert "true" und 
innerhalb dieses Bereiches den Wert "false" an.

ok?
Gast #5582699
Lesenswert?

Ja die Zustandsmachine ist nicht notwendig, wollte ich es trotzdem mal 
versuchen.

Also dieses größer oder kleiner macht Probleme.

So funktioniert es zum Beispiel:

[Timeslot(494) | Timeslot(634)].

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