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 

VI zur Takterzeugung



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!

04.01.2017, 11:36
Beitrag #1

LabViewer12 Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Jan 2017

2014
2016
kA



VI zur Takterzeugung
Hallo Leute!

Ich möchte gerne mit LabVIEW ein Taktsignal erzeugen. Damit wird ein impulsgesteuerter Aktor via PCI-IO-Karte betätigt.
Es wird damit von einem PC aus ein kleiner zeitunkritischer Prozess automatisiert. Kleinere Zeitabweichungen sind also tolerierbar.
Die zu erzielende Taktfrequenz liegt bei 1...2 Hz und langsamer.
Habe das VI mit einem Durchgangspiepser an der IO-Karte ausprobiert: Es klappt soweit zufriedenstellend.

Nun meine Bitte:
Schaut euch mal mein VI an und sagt mir eure Meinung. Sind da grobe Schnitzer drin? Oder "kann man's so lassen"?
Ich programmiere erst seit einiger Zeit in LabVIEW und bin über eure Erfahrungen allgemein sehr dankbar.

Zum VI:
Es erzeugt den besagten Takt mittels einfachem Toggeln. Die einstellbare Zeit ist die Umschaltzeit. Stellt man 500ms ein, bekommt man also einen (brauchbaren) Sekundentakt. Der wird mit dem Boolschen Element am Panel angezeigt.

Die Zeit kann mit meinem Lösungsversuch auch mal flexibel "mittendrin" während der Laufzeit geändert werden.
Aus diesem Grund habe ich -keine- klassische Wartezeit eingesetzt (Das "Metronom" oder die "Armbanduhr"), da ichs absichtlich mal anders lösen will.
Anders heißt hier: Vergleich der internen Systemzeit inklusive Unterlaufschutz. Damit das mit der negativen Differenz auch klappen kann, habe ich die Typenumwandlungen drin.
Werde zur Übermittlung der Taktzeiten später mal Queues verwenden, damit mans von einem anderen VI aus fernsteuern kann.

Dieses VI läuft als Unter-VI in einem Hauptprogramm. Es wird halt im Hauptprogramm in der "freien Fläche" (in keiner Schleife) eingefügt, und läuft dann von selbst (im Hintergrund) und sorgt so für die ständig laufende Takterzeugung.

Schaut es euch mal an und schreibt mir eure Meinungen obs was taugt!

Vielen Dank!
LabViewer12


Angehängte Datei(en)
14.0 .vi  impulse.vi (Größe: 11,35 KB / Downloads: 210)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
04.01.2017, 11:52
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.424
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: VI zur Takterzeugung
Hallo LabViewer,

Zitat:Damit das mit der negativen Differenz auch klappen kann, habe ich die Typenumwandlungen drin.
Das ist ein Problem: der Timerwert kann auch größer als 2^31 werden und deine Umwandlung nach I32 wird dann scheitern!
Schnelle Lösung: arbeite mit I64, das kann alle U32-Werte abbilden!

- Das Bit "Boolesch" würde ich in einem Schieberegister halten, dann entfällt die lokale Variable.
- Das Metronom liefert dir auch einen Timer-Wert, damit kannst du die zusätzliche Zeit-Abfrage in der Schleife wegfallen lassen.
- Im TRUE-Case fragst du nochmal die aktuelle Zeit ab: nimm doch einfach den Wert, der schon vor dem Case bestimmt wurde!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.01.2017, 14:10
Beitrag #3

LabViewer12 Offline
LVF-Neueinsteiger


Beiträge: 3
Registriert seit: Jan 2017

2014
2016
kA



RE: VI zur Takterzeugung
Okay, Danke für deine Antwort!

Zitat:Das ist ein Problem: der Timerwert kann auch größer als 2^31 werden und deine Umwandlung nach I32 wird dann scheitern!
Schnelle Lösung: arbeite mit I64, das kann alle U32-Werte abbilden!

Sorry, hatte damals einfach nicht mehr draufgeguckt, denn der Timerwert war vom Typ U32 und das war so verlockendBig Grin
Die Typenumwandlungen sind nun auf I64 umgestellt. Das sollte nun laufen.
Habs mal im Einzelschrittmodus durchgespielt ("Highlight-Modus") mit einem Eingabefeld anstelle des Timer-Werts.
Allen Anschein nach geht es, auch mit den Unterläufen.

Deine anderen Empfehlungen (bis aufs Metronom) hab ich umgesetzt und als VI nochmal angehängt.

Danke!

Gruß,
Stefan


Angehängte Datei(en)
14.0 .vi  impulse.vi (Größe: 11,45 KB / Downloads: 181)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: