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 

Signal einlesen und verzögert ausgeben



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!

14.12.2016, 18:15 (Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2016 18:17 von HuFe95.)
Beitrag #1

HuFe95 Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Dec 2016

2016
2013
EN



Signal einlesen und verzögert ausgeben
Hallo,

Ich lese in Labview ein rechtecksignal ein ( Frequenz ändert sich, aber amplitude bleibt immer gleich zwischen 0 und 10V).

Ich hab bisher immer ausgelesn wenn er über 2V und dann unter 2V spring und dies dann je nach der eingestellten Zeit("Phasenverzug") verspätet diese 10V Spannung ausgegeben. Ansonten halt immer 0.
Ich hab das über das Messen der Zeit realisiert, also z.B alle 5ms geprüft ob ein Spannungssprung war oder nicht. Das hab ich mit dem "Wait" gemacht, wo man nicht unter 1ms gehen kann. Jetzt ist das Prgramm aber zu langsam.

Das müsste doch auch irgendwie über Vektoren funktionier...mit einer Historie oder so... kann mir da jemand helfen ?


Zu meinem bisherigen Programm:

Bei der realen Verwendunng wird nur der Regeler "Phasenverzug" verwendet. Alle anderen Bauelemente habe ich benötigt um mir ein veränderliches Rechtecksignal generieren zu können.
PS:Hoffe das keine Fehler entstant als ich es für eine altere Version abgespeichert hab.



Lg Hubert
---nur das Programm als 2014version angefügt ----


Angehängte Datei(en)
8.0 .vi  Motorprüfstand_Zündung.vi (Größe: 51,81 KB / Downloads: 269)

14.0 .vi  Motorprüfstand_Zündung.vi (Größe: 31,05 KB / Downloads: 268)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
14.12.2016, 21:24 (Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2016 21:34 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Signal einlesen und verzögert ausgeben
Hallo Hubert,

herzlich willkommen im Forum!

Zitat:Zu meinem bisherigen Programm:
Als ich das VI öffnete und das FP sah, dachte ich noch: "Sieht doch gut aus!".
Als ich das BD sah, kam spontan :facepalm:…

Ist dieses VI überhaupt mal fehlerfrei gelaufen? (Stichwort: Race conditions)

Bitte ALLE lokalen Variablen erst durch Drähte ersetzen und dann in Schieberegistern speichern!
Dann VI nochmal testen…

Wenn du von "Vektoren" schreibst: meinst du einfache 1D-Arrays?
Zitat:Jetzt ist das Prgramm aber zu langsam.
Definiere "zu langsam"!
Definiere die gewünschte Iterationszeit!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.12.2016, 22:44
Beitrag #3

HuFe95 Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Dec 2016

2016
2013
EN



RE: Signal einlesen und verzögert ausgeben
Danke, alleine komm ich da nämlich nicht mehr weiter :/


Ja bei mir laufts fehlerfrei.
Zu den vielen Lokalen Variable... da kann ich ja nicht alle ersetzen da ich einen Wert einmal lese (Change to Read) und einmal diesen überschreibe(Change to write).

Zu langsam.
Mein System basiert auf der Zeit. Das heißt es wartet eine "definierte" Zeit. Somit weiß ich zwar wann das Signal gestiegen ist...andererseits soll es aber nie warten und so schnell wie möglich sein...ca alle 0.05ms. (Es soll damit die Zündung eines 4Takt Motors gesteuert werden)

Ja ich denke da an die Arrays. Habe aber noch nie damit geabeitet und bin daher mit den Blöcke die es da gibt ziemlich überfordert.


...Wie ich das Gedanklich lösen würde:

Man misst laufend die Dauer zwischen einer fallender Steigender Fankeund einer steigenden Flanke -->T(niedrig)
und die die Dauer zwischen steigender und fallender Flanke --> T(hoch)
Bei der letzten fallenden Flanke soll "T(neidrig) - Verzug " gewartet werden und dann für die Zeit T(hoch) 10V ausgegeben werden.


...anstatt der Dauer oder Zeit wie ich geschrieben habe müsste das ja auch mit der anzahl der Messwerte funktionieren....


Hoff ihr wisst einigermaßen was ich da meine Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.12.2016, 08:55 (Dieser Beitrag wurde zuletzt bearbeitet: 15.12.2016 09:02 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.469
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Signal einlesen und verzögert ausgeben
Hallo Hubert,

Zitat:ca alle 0.05ms. (Es soll damit die Zündung eines 4Takt Motors gesteuert werden)
Dann besorg dir mal ein RT-Target mit FPGA-Option. Da kannst du nämlich wirklich im 50µs-Takt arbeiten!
Unter Windows wird dir dein 4Takt-Motor nämlich des öfteren mal Fehlzündungen machen, wenn Windows mal wieder den Virenscanner vorlässt oder auf der Festplatte rumrödeln muss…

Zitat:Zu den vielen Lokalen Variable... da kann ich ja nicht alle ersetzen da ich einen Wert einmal lese (Change to Read) und einmal diesen überschreibe(Change to write).
Doch, das geht. Mit Draht und Schieberegistern!
Beispiel:
   
Und so bitte bei allen lokalen Variablen vorgehen!

Was mir besonders bitter aufstößt: du liest 4mal aus einer lokalen Variablen "Messpunkte" - du hättest zumindest auf eine lokale Variable reduzieren und stattdessen mehr Draht verwenden können! Und nebenbei ergeben sich durch den parallelen Schreibzugriff auch noch RaceConditions - deshalb meine Frage, ob dein VI überhaupt (immer) fehlerfrei lief!
Ganz wichtig: THINK DATAFLOW!

Zitat:Ja ich denke da an die Arrays. Habe aber noch nie damit geabeitet und bin daher mit den Blöcke die es da gibt ziemlich überfordert.
Wenn du mit einer Funktion in LabVIEW noch nicht gearbeitet hast, gilt (wie in jeder anderen Programmierumgebung auch):
1. Hilfe lesen
2. Tutorials anschauen
3. BeispielVIs anschauen
4. mit den Funktionen herumspielen, um sie zu verstehen
Mach das mal, ist super einfach!

Zitat:Bei der letzten fallenden Flanke soll "T(neidrig) - Verzug " gewartet werden
Was ist die "letzte" fallende Flanke bei einem rotierenden Motor? Woran erkennt man die letzte Flanke?

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
  Erfasstes Signal mit simulierten Signal vergleichen funktioniert nicht wegen Datenty Felifa 14 11.048 21.04.2017 07:46
Letzter Beitrag: Felifa
  Signal von Messkarte mit Formel verarbeiten und ausgeben krion 3 4.434 14.01.2014 16:06
Letzter Beitrag: Lucki
  signal als Spannung einlesen rc 21 12.620 06.10.2013 08:22
Letzter Beitrag: rc
  Messung Verzögert starten andreas1860 10 10.510 08.04.2010 19:19
Letzter Beitrag: andreas1860

Gehe zu: