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 

Zykluszeit passt nicht



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!

20.07.2011, 12:48 (Dieser Beitrag wurde zuletzt bearbeitet: 20.07.2011 13:14 von win98.)
Beitrag #1

win98 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 64
Registriert seit: Jun 2011

2010 SP1
2010
DE



Sad Zykluszeit passt nicht
Hallo zusammen,
ich verusch euch mal mein Problem zu erklären:

Ich habe auf einen Controller ein Rechtecksignal geladen. Diese ist 500ms lang EIN und wieder 500ms lang aus.

Ich habe jetzt das Rechecksignal aktiviert (DI1.2=1), habe 500ms lang gewartet und habe das Signal ausgelesen. Jetzt müsste ich ja in jedem Schleifenschritt abwechselnd 0 und 1 bekommen (meine Erwartung) das kontolliere ich mit einem Vergleich.

Leider läuft das irgendwas mit den Zeiten schief, aber ich komm nich drauf. Ich habe 112 Schleifenschritte ausgeführt und der Vergleich gab folgendes Ergebnis:

Schritt:Ergebnis
1:True
2-32:False
33-64:True
65-96:False
97-112:True

Eigentlich müsste ich ja da immer True haben. In den Fällen wo ich False bekomme, ist das Ist-Signal und Soll-Signal immer umgekehrt.
Hab da auch mit der Verzögerung bischen gespielt, weil ich dachte er braucht vllt Zeit zum lesen/schreiben, gab zwar eine Änderung aber ich hatte trotzdem nicht konstant "True" als Ergebnis.

Ich hoffe jemand weiß Rat.

   
Achso, vllt noch was. Ich habe es auch mal so versucht:

   

Wenn ich oben, bei der Verzögerung +0 Eintrage, funktioniert das mit den Rechtecksignale wunderbar und ich habe überall "True".

So, jetzt habe ich auf dem Controller nich nur ein Rechtecksignal, sondern auch eine Einschaltverzögerung von 2s. Wenn ich nur ein Bit setze, 2s warte und abfrage ob es da ist, dann krieg ich beim Vergleichen ein "False" und erst im nächsten Schleifendurhclauf ein"True" Sad. Deswegen habe ich zu Verzögerung 30ms dazuaddiert. Denn wenn ich 2s und 30ms auf die Einschaltverzögerung warte, dann krieg ich beim Vergleichen ein "True" Smile

Nur wie mach ich das, dass ich sowohl Rechtecksignal, als auch Einschalverzögerung korrekt ausgewertet bekomme?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.07.2011, 13:19 (Dieser Beitrag wurde zuletzt bearbeitet: 20.07.2011 13:20 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Zykluszeit passt nicht

Akzeptierte Lösung

Hallo win,

Zitat:Nur wie mach ich das, dass ich sowohl Rechtecksignal, als auch Einschalverzögerung korrekt ausgewertet bekomme?
Auf Sequenzstrukturen und ExpressVIs verzichten - beide können dir dein Timing versauen... Dafür mal lieber anschauen, wie Statemachines und Producer-Consumer-Strukturen funktionieren!

Vorschlag:
Parallel arbeitende Ausgabe- und Eingaberoutinen. Eingaberoutine läuft dauernd mit und du holst dir (aus einem Datenpuffer) immer nur den gerade aktuellen Wert deiner Eingangssignale ab...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.07.2011, 13:30
Beitrag #3

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Zykluszeit passt nicht
Zu welchem Zusatzmodul gehört denn das     ?
Noch nie gesehen..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.07.2011, 13:32
Beitrag #4

win98 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 64
Registriert seit: Jun 2011

2010 SP1
2010
DE



RE: Zykluszeit passt nicht
Meinste mit ExpressVI den DAQ-Assistenten?

Logisch gedacht wollte ich das eigentlich auch so haben, dass ich immer Lese, und Schreibe und dann grad dann einen Wert rausfische, wenn ich ihn brauche. Es hapert halt bei mir an der LabView Programmierung, weil ich da noch wenig Erfahrung habe.

Ist diese Producer-Consumer-Strukturen so eine prallele Routine?
Ich musste schon bei der Event-Struktur feststellen, dass in die in der Basic Version nicht vorhanden ist und unter Strukturen kann ich dein genanntes auch nicht finden Sad
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.07.2011, 13:34
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Zykluszeit passt nicht

Akzeptierte Lösung

Hallo win,

den Link meiner Signatur beachten.

Außerdem mal einfach VI-Menü->Datei->"Neu..." und dann "Aus Vorlage"->"Frameworks"->"Entwurfsmuster" durcharbeiten... Ist auch bei der Base-Version dabei!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.07.2011, 13:36 (Dieser Beitrag wurde zuletzt bearbeitet: 20.07.2011 13:40 von win98.)
Beitrag #6

win98 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 64
Registriert seit: Jun 2011

2010 SP1
2010
DE



RE: Zykluszeit passt nicht
(20.07.2011 13:30 )Lucki schrieb:  Zu welchem Zusatzmodul gehört denn das ?
Noch nie gesehen..

das hab ich mir gebastelt Tongue

Ich hab 3 Ports als Array von 0-7 das din macht aus 3x 0-7 Arrays ein einmal 0-23 Array. Dabei füllt es die Arrays immer bis 8 Elemente voll (bzw begrenzt die auch), also wenn es jetzt 3x 0-5 Arrays sind, dann fügt er an jedem Array nochmal 2 Elemente dran und fügts dann zu einem 0-23 Array.

Ein Bild sagt mehr als tausend Worte:
   
(20.07.2011 13:34 )GerdW schrieb:  Hallo win,

den Link meiner Signatur beachten.

Außerdem mal einfach VI-Menü->Datei->"Neu..." und dann "Aus Vorlage"->"Frameworks"->"Entwurfsmuster" durcharbeiten... Ist auch bei der Base-Version dabei!

Das erste mal das ich das Menü verwende Big Grin
Dein Link ist mir schon aufgefallen, der hat mir bereits einiges an Arbeit gespart. Ich werd mal das mit den Vorlagen ausprobieren. Ich denke das "Erzeuger/Verbraucher-Entwurfsmuster" triffts ganz gut Wink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.07.2011, 14:40
Beitrag #7

win98 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 64
Registriert seit: Jun 2011

2010 SP1
2010
DE



RE: Zykluszeit passt nicht
Sooo... ich hab mal jetzt mich etwas schlauer gemacht und ich hoffe es ist so richtig zusammengesetzt:

   

Wenn das Grundprinzip so richtig ist, werd ich mich morgen mal dran setzen und den Rest noch da einbauen.

Vllt noch ne Frage: Zählt der DAQ-Assistent zu den ExpressVIs? Bzw was genau sind ExpressVIs?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.07.2011, 14:46 (Dieser Beitrag wurde zuletzt bearbeitet: 20.07.2011 14:48 von GerdW.)
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Zykluszeit passt nicht
Hallo win,

wozu die Queue, wenn du deren Daten überhaupt nicht benutzt? Dann reichen auch zwei parallel arbeitende Schleifen...

Ja, der DAQAssi ist auch ein ExpressVI. Das sind diese Klickibunti-Funktionen, die man "nur noch" konfigurieren muss - und die einen in ein festes Korsett zwängen. Und die außerdem (wie beim DAQAssi) auch verhindern, effizienten Code zu schreiben. Der DAQAssi z.B. öffnet/initialisiert und deinitialisiert bei jedem Aufruf dein DAQ-Gerät, obwohl dies nur je einmal nötig wäre... Soviel zum Thema "möglichst genaues Timing"!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.07.2011, 07:13
Beitrag #9

win98 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 64
Registriert seit: Jun 2011

2010 SP1
2010
DE



RE: Zykluszeit passt nicht
hm, ok das mit dem DAQ Assisten schien mir halt einfacher Tongue
Von NI gabs noch n Tutorial wie man das mit dem MAX und nem Task machs ("Programmcode erzeugen").
Wegen dem dauernden öffnen und schließen hab ich mal das "Write Device3" aus der Schleife geholt ist das so besser wie beim write?

Ich benutze die Que nicht? Tu ich das jetzt für den Read Fall? D.h. ich brauche dann zwei Ques, eine fürs Lesen eine fürs Schreiben, oder? Ansonsten wüsste ich nich wo ich meine Read und Write Bausteine hintun soll...


2010 .vi  Start_PXI1044-Test.vi (Größe: 23,13 KB / Downloads: 189)

   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.07.2011, 07:58
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Zykluszeit passt nicht
Hallo win,

momentan ist die Queue in deinem VI unnütz - du schiebst die Daten nur woanders hin, um sie dann in den selben Anzeigen darzustellen. Dafür braucht man keine Queue... (Nur weil ich schrieb "Schau dir das P/C-Pattern an", heißt das nicht, du musst auf Teufel komm raus eine Queue benutzen!)

Zitat:hab ich mal das "Write Device3" aus der Schleife geholt ist das so besser wie beim write?
Dieses "Write Device3" hat das gleiche Icon wie die CreateTask-Funktion. Macht das VI auch das gleiche? Falls ja: so ist das schon besser (aber nicht gut Smile )! Jetzt fehlt noch die Funktion zu Beenden des Tasks - immer alle Referenzen schließen, die man so öffnet!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Zykluszeit bei DAQmx messen Matze 12 12.247 03.05.2010 16:52
Letzter Beitrag: Matze

Gehe zu: