Was ist das State Machine Prinzip?

Anfängerfragen, die mit LabVIEW zu tun haben
Правила форума
In unserem Forum ist es möglich Foren zu verbergen. Für jede Sprache gibt es eine Gruppe:

hide XXX forums

Wenn du also ein Forum in einer Sprache nicht sehen möchtest, dann musst du einfach in die richtige Gruppe(n) eintreten. Das kannst du in den Profileinstellungen machen.
Ответить
studi
user
user
Сообщения: 97
Зарегистрирован: 04 окт 2008, 14:24
Версия LabVIEW: 8.6
Контактная информация:

Was ist das State Machine Prinzip?

Сообщение studi »

Was genau versteht man unter dem State Machine Prinzip und wie wende ich es an?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Was ist das State Machine Prinzip?

Сообщение Eugen Graf »

State Machine ist ein Programmiermechanismus, das dir erlaub dein Programm in mehere Schritte aufzuteilen. Man kann zwar ähnlich in LabVIEW mit einer Sequenz arbeiten, da hast du aber das Problem von einem Zustand in den vorherigen zu gehen.

Zum Beispiel hast du drei Schritte in deinem Programm:

vorfahren
stehen
rückfahren

und du willst zuerst vorfahren, dann rückfahren, dann stehen bleiben und wieder rückfahren. Mit einer Sequenz ist es nicht möglich. Da muss eine Statemachine eingesetzt werden.

Die Statemachine besteht normalerweise aus einer While-Schleife, einer Case-Struktur und einem Schieberegister in dem der aktuelle Schritt zwischengespeichert wird. Die Case-Struktur beinhaltet so viele Cases wie viele Schritte du in deiner Machine haben willst.


Probiere zuerst das zu verstehen und dann kommen bestimmt noch fragen von dir.
Вложения
State.png
State.png (7.29 КБ) 10782 просмотра
State.vi
LV 8.0
(10.93 КБ) 631 скачивание
studi
user
user
Сообщения: 97
Зарегистрирован: 04 окт 2008, 14:24
Версия LabVIEW: 8.6
Контактная информация:

Re: Was ist das State Machine Prinzip?

Сообщение studi »

ah ok schonmal danke.
aber wenn mein ablauf genau passt also erst 1 dann 2 dann 3 und ich nicht vorhabe dazwischen zu springen ist doch die sequenz die bessere alternative oder hat die state machine noch weitere vorteile?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Was ist das State Machine Prinzip?

Сообщение Eugen Graf »

Da du die Werteerfassung als Statemachine und die Regelung als Statemachine in einer Schleife machen willst, würde ich diese Methode empfehlen, aber da könntest du fast recht haben. In deinem Fall kannst du auch ohne Statemachine arbeiten. Aber den Zustand solltest du trotzdem irgendwo merken um zu wissen ob du regeln musst oder nicht.

Probiere es doch einfach ohne Statmachine aus. Versuche mal beide Sequenzen in eine Schleife zu packen. Dann sehen wir weiter.
studi
user
user
Сообщения: 97
Зарегистрирован: 04 окт 2008, 14:24
Версия LabVIEW: 8.6
Контактная информация:

Re: Was ist das State Machine Prinzip?

Сообщение studi »

aber wie mache ich es denn, dass die werte dann über mehrere zustände kontinuierlich gemessen werden? setze ich die messung dann einfach außerhalb der case-struktur?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Was ist das State Machine Prinzip?

Сообщение Eugen Graf »

Ja, die Messung dann ausserhalb der Case-Struktur.
studi
user
user
Сообщения: 97
Зарегистрирован: 04 окт 2008, 14:24
Версия LabVIEW: 8.6
Контактная информация:

Re: Was ist das State Machine Prinzip?

Сообщение studi »

könnte ich auch teile von der case struktur von der messung ausschließen?
LauraS
junior
junior
Сообщения: 61
Зарегистрирован: 14 янв 2009, 11:52
Версия LabVIEW: 8.5
Контактная информация:

Re: Was ist das State Machine Prinzip?

Сообщение LauraS »

Was genau muss man denn beachten, wenn man so ein Zustandsautomat mit dem Datentypen enum anwenden will?
Also ich möchte in folgenden VIs jeweils einen Zähler entwerfen, der je nach Schalterstellung vorwärts oder rückwärts zählt. (Dient nur als kleine Übung, damit ich eben Zustandsautomaten und enum-Variablen verstehen lerne.)
Mit Strings funktioniert das ganze einwandfrei, aber wenn ich enum-Variablen werwende, läuft's nicht. Was mache ich da gerade falsch? Und wie genau arbeitet denn so eine enum-Variable?
Wär super, wenn mir jemand das erklären könnte! Danke schon mal.
Вложения
string_statemachine.vi
(13.94 КБ) 391 скачивание
enum_statemachine.vi
(12.94 КБ) 369 скачиваний
LauraS
junior
junior
Сообщения: 61
Зарегистрирован: 14 янв 2009, 11:52
Версия LabVIEW: 8.5
Контактная информация:

Re: Was ist das State Machine Prinzip?

Сообщение LauraS »

hmm...also ich hab jetzt die enum-Variable mit ner Typdefinition gemacht. so funktioniert's jetzt perfekt. Aber das müsste doch auch anders gehn? kann man nicht die enum-Variablen auch anders miteinander verknüpfen, so dass sie wie bei der typedef verschiedene Instanzen kriegen?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Was ist das State Machine Prinzip?

Сообщение Eugen Graf »

Ne ne, so wird es auch nicht laufen. Du verwendest ja unterschiedliche Enums in deinem VI. Enum ist eine Liste von Elementen. Diese Liste fängt immer mit 0 an. Enum ist eine Umsetzung von Alias Namen zu Zahlen. Zum Beispiel:

0 = Eg
1 = LauraS
2 = Studi
3 = Nemo

Du hast in deinem VI aber folgendes gemacht:
0 = 0
1 = 1
2 = 2
3 = 3

Wenn du das so machen willst, dann brauchst du überhaupt kein Enum. Nimm doch einfach eine Numeric Konstante.

Und nun zum eigentlichen Problem. Du hast mehrere Enums verwendet.

Enum 1:
0 = 0
1 = 1
2 = 2
3 = 3

Enum 2:
0 = 1

Enum 3:
0 = 2

Enum 4:
0 = 3

Hoffentlich verständlich :think:
LauraS
junior
junior
Сообщения: 61
Зарегистрирован: 14 янв 2009, 11:52
Версия LabVIEW: 8.5
Контактная информация:

Re: Was ist das State Machine Prinzip?

Сообщение LauraS »

eg писал(а): Hoffentlich verständlich :think:
Ja, sehr verständlich, vielen Dank...
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Was ist das State Machine Prinzip?

Сообщение Eugen Graf »

LauraS писал(а):hmm...also ich hab jetzt die enum-Variable mit ner Typdefinition gemacht. so funktioniert's jetzt perfekt. Aber das müsste doch auch anders gehn? kann man nicht die enum-Variablen auch anders miteinander verknüpfen, so dass sie wie bei der typedef verschiedene Instanzen kriegen?
Typedefs nutze ich auch. Du kannst auch ohne Typedef arbeiten. Einfach die erstellte Enum-Konstante kopieren. Nur, wenn du Änderung machst, musst du alle anderen auch mitanpassen. Diese Arbeit macht halt Typedef für dich.
Ответить

Вернуться в «Für Anfänger»