INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

AVR NET-IO ansteuern



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

02.04.2013, 13:49
Beitrag #21

johnywalker Offline
LVF-Grünschnabel
*


Beiträge: 20
Registriert seit: Aug 2011

2009
-
EN

36169
Deutschland
RE: AVR NET-IO ansteuern
Hallo Jens,
das mit der State Machine ist eine sehr gute Idee! Ich habe mein Programm auch gleich versucht in eine solche Form anzupassen (siehe VI), allerdings bekomme ich noch Fehler (no case fore some vector values). Ich glaube das liegt daran, dass meine Schleife bei 3 anfängt. Wenn ich allerdings "Add Case Before" klicke, bekomme ich nur Cases mit noch höherer Wertigkeit.
Vielleicht könnt ihr mal darüberschauen.

Ist die Auswertung der Messwerte so richtig positioniert?

Viele Grüße,
Labview-Anfänger Martin ;-)


Angehängte Datei(en)
11.0 .vi  State Machine incl. GETADC.vi (Größe: 20,51 KB / Downloads: 236)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
02.04.2013, 13:55 (Dieser Beitrag wurde zuletzt bearbeitet: 02.04.2013 14:00 von GerdW.)
Beitrag #22

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: AVR NET-IO ansteuern
Hallo Martin,

Zitat:Ich glaube das liegt daran, dass meine Schleife bei 3 anfängt.
Jein. Die Schleife selbst fängt mit Null an, deine Case-Struktur bietet aber nur die Fälle 3 und 4 an...

Zitat:Wenn ich allerdings "Add Case Before" klicke, bekomme ich nur Cases mit noch höherer Wertigkeit.
Und was passiert, wenn du im neu erstellten Case auf die Case-Angabe klickst und dann selbst einen Wert eintippst?

Zitat:Ich habe mein Programm auch gleich versucht in eine solche Form anzupassen
"Versucht" ist das richtige Wort... Big Grin

Definiere echte "States". Erstelle ein (typdefiniertes) Enum mit diesen States. Entscheide anhand des Ergebnisses eines States, welchen du als nächstes aufrufst. Nutze ein Schieberegister, um den nächsten State bereitzustellen...

Zitat:Ist die Auswertung der Messwerte so richtig positioniert?
Wenn die Auswertung nach jedem Abarbeiten eines States passieren soll, dann ja...
Warum du aber bei State "4" den Offset nach Zahl und nicht die Zahl selbst auswertest, bleibt wohl dein Geheimnis... Smile

- Warum wird eine TCP-Abfrage gemacht, wenn ein TCP-Fehler 56 angezeigt wird? (Parallele Case-Struktur zur While-Loop mit dem TCP-Read)
- Warum wird die TCPRead-Loop abgebrochen, wenn keine Antwort gelesen wurde? (Abbruch bei Stringlänge=0)
- Warum wird ein String nach String typegecastet?
- Warum werden U8-Konstanten in Arrays gebaut & diese U8-Arrays dann zu Strings konvertiert? Warum nicht gleich eine Stringkonstante in Hex- oder \-Code-Anzeige?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.04.2013, 14:48 (Dieser Beitrag wurde zuletzt bearbeitet: 02.04.2013 14:51 von johnywalker.)
Beitrag #23

johnywalker Offline
LVF-Grünschnabel
*


Beiträge: 20
Registriert seit: Aug 2011

2009
-
EN

36169
Deutschland
RE: AVR NET-IO ansteuern
So, die kleineren Dinge habe ich nun bereinigt, doch der Fehler bleibt...

(02.04.2013 13:55 )GerdW schrieb:  Definiere echte "States". Erstelle ein (typdefiniertes) Enum mit diesen States. Entscheide anhand des Ergebnisses eines States, welchen du als nächstes aufrufst. Nutze ein Schieberegister, um den nächsten State bereitzustellen...

Entschuldigt bitte mein Unwissen, aber den Zustandsübergang kann ich doch weglassen da ich unabhängig vom Ergebnis immer alle States durchlaufen möchte?
Was unterscheidet "echte" States von meinen. Ich dachte, dass jede Case-Struktur im Prinzip für einen State steht?!

Die TCP-Abfrage habe ich aus dem Beitrag der ersten Seite übernommen und noch nicht richtig angepasst. Daher ist das noch etwas im "unreinen"...

Viele Grüße,
Martin


Angehängte Datei(en)
11.0 .vi  State Machine incl. GETADC.vi (Größe: 20,34 KB / Downloads: 212)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.04.2013, 15:02 (Dieser Beitrag wurde zuletzt bearbeitet: 02.04.2013 15:08 von GerdW.)
Beitrag #24

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: AVR NET-IO ansteuern
Hallo Martin,

Zitat:aber den Zustandsübergang kann ich doch weglassen da ich unabhängig vom Ergebnis immer alle States durchlaufen möchte?
Auch im Fehlerfall, wenn keine Antwort vom Gerät kommt?

Zitat:dass jede Case-Struktur im Prinzip für einen State steht?
Die einzelnen Cases sind deine States...

Zum Fehler mit den fehlenden Cases:
Die Case-Struktur muss alle möglichen Eingangswerte am Selektor abdecken. Wenn du ein Boolean anschließt, brauchst du die 2 Fälle FALSE und TRUE. Wenn du ein I32 (wie "i") anschließt, musst du alle Zahlen von -2^31 bis +2^31 abdecken! Wenn du dir die Hilfe zur Case-Struktur (mitsamt weiterführender Links!) durchliest, siehst du aber, dass das ganz einfach ist: als Case musst du "..0" und "1.." angeben... Mit einem Enum könntest du dagegen sehr sauber die States auswählen und anlegen!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.04.2013, 15:43
Beitrag #25

johnywalker Offline
LVF-Grünschnabel
*


Beiträge: 20
Registriert seit: Aug 2011

2009
-
EN

36169
Deutschland
RE: AVR NET-IO ansteuern
Stimmt, im Fehlerfall bekomme ich da jedoch Probleme.
Okay, ich werde das jetzt mal nacharbeiten und melde mich dann wieder.

Schon einmal besten Dank!

Viele Grüße, Martin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.04.2013, 22:30
Beitrag #26

johnywalker Offline
LVF-Grünschnabel
*


Beiträge: 20
Registriert seit: Aug 2011

2009
-
EN

36169
Deutschland
RE: AVR NET-IO ansteuern
Ich habe das Programm nun mit Enum und Schieberegister angepasst.
Allerdings weiß ich nicht, was ich am Ausgang des Schieberegisters anschließen soll?!
Besser gesagt habe ich das Problem, dass sich der Inhalt meiner Case-Struktur ändert wenn ich was falsches anschließe...

Anscheinend hab ich da noch was grundsätzlich nicht verstanden...


Angehängte Datei(en)
11.0 .vi  Zustandsautomat.vi (Größe: 21,05 KB / Downloads: 220)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
04.04.2013, 08:24 (Dieser Beitrag wurde zuletzt bearbeitet: 04.04.2013 08:26 von Falk.)
Beitrag #27

Falk Offline
ja, das bin ich...
***


Beiträge: 343
Registriert seit: Jan 2006

8.0 :: 201x ::202x
2006
DE_EN


Deutschland
RE: AVR NET-IO ansteuern
Hallo johnywalker,

ich habe mir vor kurzem auch das NET IO bei Pollin gekauft, spreche es aber vorwiegend mittels Python an. Aber egal. Grundsätzlich würde ich dir allerdings folgendes empfehlen. Das Öffnen/ Schließen der Netzwerkverbindung zum Modul mache außerhalb der Schleife, sprich zuerst die Verbindung öffnen und die erhaltene "connection id" an die Schleife verdrahten. Innerhalb der Schleife kannst du mittels dieser dann Daten an das Gerät senden bzw. vom Gerät empfangen. Nach Beendigung, sprich nach dem verlassen der Schleife schließt du dann die Verbindung wieder.
Anbei mal ein schnelles und nur rein schematisches Beispiel.

Schöne Grüße
Falk


Angehängte Datei(en)
11.0 .vi  LVF.vi (Größe: 14,45 KB / Downloads: 211)

Currently: zzzZZZZZZZZ
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.04.2013, 08:47 (Dieser Beitrag wurde zuletzt bearbeitet: 04.04.2013 08:48 von GerdW.)
Beitrag #28

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: AVR NET-IO ansteuern
Hallo johny,

Zitat:Allerdings weiß ich nicht, was ich am Ausgang des Schieberegisters anschließen soll?!
Eine Statemachine soll verschiedene States nacheinander abarbeiten. Du musst also den nächsten State dort vorgeben. Meist macht man das in Abhängigkeit von irgendwelchen Randbedingungen, die den Statewechsel auslösen...

Zitat:Besser gesagt habe ich das Problem, dass sich der Inhalt meiner Case-Struktur ändert wenn ich was falsches anschließe...
??? Das in der Case-Struktur programmierte soll sich ändern, wenn du was anderes an den Case-Selektor anschließt?
Bahn

Tipp: Deinem VI würde ein Klick auf den Aufräumknopf (definitiv!) nicht schaden! Wink

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.04.2013, 17:02
Beitrag #29

johnywalker Offline
LVF-Grünschnabel
*


Beiträge: 20
Registriert seit: Aug 2011

2009
-
EN

36169
Deutschland
RE: AVR NET-IO ansteuern
Hallo Freunde,
erst einmal vielen Dank für die Antworten!

@Falk:
Okay, ich glaube ich verstehe dein Konzept, ich habe es mal ein wenig angepasst. Leider sind die ausgegebenen Werte noch viel zu klein (Faktor ca. 100-200).
Ich kann mir keinen Reim daraus machen, woran das liegt. Hat diessbezüglich jemand eine Idee?

@Gerd:
Ich habe das mit dem Ausgang des Schieberegisters bzw. das mit dem Statewechsel jetzt kapiert. Falk hat das ja in seinem Beispielprogramm anschaulich gemacht. Ich wusste halt nicht, wie ich das Enum am Ausgang erzeugen sollte, bzw. gab es dabei Probleme, wenn ich einfach ein neues erstellt und angeschlossen habe. Vermutlich haben die Zustände nicht übereingestimmt. Dadurch hat dann meine Case-Struktur die Werte/Zustände des Enums am Ausgang angenommen, vermute ich mal.

Zwei Frage noch:
Die Wartefunktion in der Hauptschleife (milliseconds to wait), wofür wurde diese eingebaut? Um der TCP-Kommunikation genügend Zeit zu geben?
Wie groß wählt man die Timeout-Zeiten? Woran muss ich mich da richten?

Viele Grüße,
Martin


Angehängte Datei(en)
11.0 .vi  LVF2.vi (Größe: 13,39 KB / Downloads: 217)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.04.2013, 11:59
Beitrag #30

johnywalker Offline
LVF-Grünschnabel
*


Beiträge: 20
Registriert seit: Aug 2011

2009
-
EN

36169
Deutschland
RE: AVR NET-IO ansteuern
Hat jemand eine Idee, warum ich so kleine Werte rausbekomme? Ich komme mit meinen eigenen Ansätzen nicht mehr weiter...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: