Jump to content

HolWo

Administratoren
  • Posts

    360
  • Joined

  • Last visited

  • Days Won

    6

Everything posted by HolWo

  1. Hallo, was genau funktioniert nicht? Wie sieht das Schaltbild aus, also was tun Sie, das nicht funktioniert? Die 6009 beherrscht nur den Signalerzeugungsmodus "1 Wert (auf Anforderung)", d.h. hier lässt sich der Spannungspegel am Analogausgang nur wenige Male pro Sekunde verändern. Für hohefrquente Rechtecksignal/Sinusschwingungen kann dies nicht verwendet werden. Je nach NI 92XX Hardware kann es möglich sein, entweder einen Spannungstask mit kontinuierlichem Signalerzeugungsmodus zu nutzen, oder eine zählergestützte Impulsausgabe. Beim Task mit "kontinuierlichem Signalserzeugungsmodus" legen Sie eine Abtastrate und eine Blockgröße fest, mit der der Task die ihm zur Verfügung gestellten Daten verwendet, um den Spannungspegel am Analogausgang zu verändern. Beispielsweise 1000 Hz und "zu schreibende Werte" 100 -- dann wird der Task jede 0,001s (1/1000) den Spannugspegel verändern können je nach höhe der Werte, die dem Task übergeben werden. Der Parameter "zu schreibende Werte" ist das, was in DASYLab der Blockgröße entspricht. D.h. der Task erwartet nich 1000x pro Sekunde einen Einzelwert, sondern 10x pro Sekunde 100 Werte (10x100 = 1000 Werte pro Sekunde --> 1000Hz]. D.h. wenn Sie einen "kontinuierlichen AusgabeTask" (1000Hz, zu schreibende Werte 100) in einem DASYLab Analogausgangsmodul nutzen, müssen Sie entsprechend einen Datenstrom anliefern, der die Eigenschaft 1000Hz und Blockgröße 100 hat. Falls die 92XX-Hardware auch Counter/Zähler hat, können Sie einen zählergestützte Impulsausgabe als Task nutzen. Dieser hat zwei Parameter: die Zeitdauer für die High- und die Low-Phase eines auszugebenden Rechtecksignals. Wenn Sie diesen Task in einem Frequenzausgabemodul in DASYLab nutzen, hat das Modul zwei Eingänge, die Sie bspw. mit einem Handregler geeignet mit Werten bedienen müssen. Bspw. jeweils 0,5[V] an beiden Eingängen anliefern: das erzeugte Rechteck hat eine High- und eine Low-Dauer von jeweils einer halben Sekunde. Beachten Sie bitte, dass jeder neue Datenwert (zwei Eingänge), der an das Frequenzausgabemodul geliefert wird, eine Neukonfiguration des Impulsausgabetasks bewirkt, selbst dann, wenn mit dem Handregler derselbe Datenwert immer wieder angeliefert wird. Die DASYLab-Zeitbasis ist im Handregler voreingestellt und dient als sein "Taktgeber" für die Ausgabe des aktuellen eingestellten Handreglerwerts. Die DASYLab-Zeitbasis ist auf 10Hz BG 1 voreingestellt, sodass der Handregler 10x pro Sekunden seinen Wert ausgibt. Das führt dazu, dass der Impulsausgabetask sich jede Zehntelsekunde reinitialisiert, auch dann wenn der Handreglerwert sich nicht mehr verändert. Dies sollte vermieden werden, da dies Rechenzeit in Anspruch nimmt, die Performance reduziert und auch zu Fehlern/Timeouts führen kann. Zwischen Handregler und dem Frequenzausgabemodul daher bitte ein Relais oder ein Haltemodul anschliessen -- mit dem Handregler die gewünschte Hi/Lo-Zeiten für das Rechtecksignal voreinstellen und dann mit einem Schalter und einer Aktion den Wert der Haltefunktion ausgeben: das verändert einmalig die Einstellung des Tasks bis erneut die Einstellung geändert werden muss ("On-Demand").
  2. Hallo! 1. Welche Release- und Buildnummer hat Ihr verwendetes DASYLab 2016? Dies können Sie in der Textkonsole eines gestarteten DASYLabs ablesen (siehe Screenshot)? 2. Ist das Gerät direkt mit dem Mess-PC verbunden oder sind PC und Messgerät über das Firmennetzwerk verbunden? 3. Nach welcher Zeitspanne tritt der Timeout auf -- innerhalb von Sekunden, Minuten oder evtl. erst nach Tagen? 4. Mit welcher Abtastrate fordern Sie neue Daten an? 5. Wie viele Kanäle bzw. Modbus-Module sind im Schaltbild vorhanden, die per Modbus Daten erhalten?
  3. Hallo! Ja, da ist leider ein Fehler im Statemachine-Modul beim Ermöglichen von Variablenverknüpfungen im Zähler-Reiter passiert. Im Schritt, in dem der Zähler 1 beim Verlassen des Schritt um 1 inkrementiert wird, wird die "1.0" nicht korrekt ausgewertet -- die 1.0 wird irrtümlicherweise als Variablennummer interpretiert, sodass der Zähler um den Wert der Variable 1 erhöht wird. Work-around 1: Anstatt der 1.0, eine globale Variable verknüpfen und ihr den Wert 1.0 zuweisen. Work-around 2: Die unten angehängte, korrigierte Statemachine-DLL verwenden (ins DASYLab 2022-Anwendungsverzeichnis kopieren, die vorhandene Datei bitte sichern). Demächst wird eine DASYLab 2022-Version erscheinen, die den Fix sozusagen "ab Werk" enthält. Die aktuelle DASYLab 2022-Version trägt die Buildnummer 262 (siehe https://www.measx.com/de/service/download.html). Die neue Version wird eine höhere Bildnummer tragen! statemachineDLL_DL2022__2022-02-07.zip
  4. Seltsam. Schauen/Suchen Sie bitte einmal, ob nach der Compliance Package-Installation eine 'ividmm.dll' vorhanden ist. Welche Version de Compliance Package genau haben Sie installiert?
  5. Hallo! Können Sie die Adresse evtl. im Menü des Geräts ablesen/einstellen? Eine weitere Möglichkeit neben GPIB wäre die Kommunikation via IVI, im Konfigurator den IVI-Treiber bitte aktivieren. Die Module ohne Plus-Symbol im Namen sind für NI-Geräte, die mit Plus-Symbol für alle anderen. Anbei finden Sie ein PDF mit einer Anleitung, die allerdings ein DMM von Fluke einrichtet. DASYLab Techniques - Configuring DASYLab V12 to use a Fluke 45 DMM using the IVI drivers.pdf
  6. Hallo Stefan, spontan: Mit dem Datenfenstermodul aus der Ausgabe des Min/Max-Moduls 2er-Blöcke erstellen. Mit dem Selektieren-Modul den ersten und den zweiten Wert jedes Zweier-Blocks ausgeben lassen, damit die Berechnung durchführen und in eine Variable schreiben. Mit dem Zählermodul kannst die Blöcke zählen lassen. Damit nach der einen interessanten Berechnung, die nur für die ersten beiden Werte gelten soll, keine weiteren erfolgen sollen, kannst du hinter das Min/Max-Modul ein Aktions gesteuertes Relais platzieren. Wenn das Datenfenster einen 2er-Block ausgegeben hat, zählt das Zählermodul eben bis 1, gibt den Wert aus, diesen mit einer Aktion überwachen (Eingang erreicht Wert 1) und das Relais sperren.
  7. Hallo! (1) Vergewissern Sie sich bitte, dass die Sekundäradresse des Geräts tatsächlich 0 ist. Die "1" zwischen den Doppelpunkten ist die Primäradresse. (2) Probieren Sie bitte eine Headerlänge von 0. (3) In den Optionen können Sie die ABfragerate (unten im DIalog) reduzieren (Standard: 2Hz bzw. 0,5s), möglicherweise ist die Vorgabe zu schnell für das Gerät. Die GPIB-32.DLL wird automatisch von den IEEE-Modulen verwendet, wenn diese im Verzeichnis liegt; diese muss nicht gesondert initialisiert werden.
  8. Hallo! (1) Durch die Installation der NI-Treiber für GPIB-Hardware sollte es auch eine GPIB32.DLL (bzw. GPIB-32.DLL) im Windows/System32 (bzw. Windows/SysWOW64) geben -- kopieren Sie diese bitte in das DASYLab-Anwendungsverzeichnis, z.B. C:\Programme\DASYLab 2016. (2) Im IEEE-Modul können Sie mit dem Befehl 'ibwrt' eine Anfrage an das Gerät senden, müssen zudem noch die Antwort lesen mit 'ibrd'. Wenn Sie ein neues Eingangsmodul im Schaltbild platzieren, sehen Sie eine Beispielabfolge von Befehlen: ibwrt (user, 'MSV?') ibrd (user) Die zurückgelieferte Antwort muss dann mittels eines Formatstrings interpretiert werden, 'a' sollte für die im Screenshot gezeigte Gleitkommazahl korrekt sein.
  9. Hallo! Auf der Produktseite des Geräts steht, dass es per RS232 und GPIB angesprochen werden kann. Schauen Sie bitte einmal in das Handbuch des Geräts, ob Sie dort bspw. die RS232-Kommandos finden, um DASYLabs RS232-Module für die Kommunikation zu verwenden. https://www.keysight.com/de/de/product/34450A/digital-multimeter-5-5-digit-oled-display.html
  10. Das funktioniert (leider?) nicht. Das würde dem Konzept, die originale Uhrzeit zu verwenden, wiedersprechen, da wir dann mehrfach Daten hätten, die denselben Zeitstempel bekämen -- aber das unterstützt DASYLab nicht: jeder Datenblock hat einen Zeitstempel, aufeinanderfolgende Zeitstempel müssen streng monoton ansteigen, d.h. es dürfen keine Datenblöcke auftreten, die einen Zeitstempel haben, die zeitlich früher liegen als ein schonmal aufgetretener.
  11. Hallo! (1) Die Umwandlungsfunktion verwendet das Dezimaltrennzeichen, welches von Windows als Standard vorgegeben ist. In den EInstellungen zur Region in der WIndows Systemsteuerung können Sie dies von Komma zu Punkt ändern. (2) Im RS232/ICom-Ausgang lassen sich weitere Formatanweisungen angeben, um die zu sendenden Zeichen anzupassen (Hilfe des Moduls: Formatanweisungen für die Datenausgabe). Mit [a5,2] bzw. [a5.2] (Komma vs. Punkt) kann gesteuert werden, welcher Dezimaltrenner genutzt wird, wenn eine Zahl mit fünf Stellen, davon zwei Nachkommastellen, vor dem Senden formatiert werden soll. Hier müsste die zu sendende Zahl über den Eingang des Moduls geliefert werden, diese wird dann in den Platzhalter des Formatstrings eingesetzt (z.B. [a5.2)]. Vor und nach dem Platzhalter im Formatstring des Moduls können natürlich weitere "Dekorationen" hinzugefügt werden, um z.B. einen SCPI-Befehl mit variablem Bestandteil zu vervollständigen. (3) Mit dem Skriptmodul könnte man einen globalen String lesen und enthaltene Zeichen ersetzen. Das "Innenleben" eines Skriptmoduls wird mit der Sprache Python programmiert. Ich habe ein Beispielskript angehängt (ab DASYLab 13), das das Prinzip des Skriptmoduls grob demonstriert: hier wird der Inhalt eines Strings darauf geprüft, ob dieser als Dateiname zu gebrauchen ist. DASYLabs globale Strings können freien Text aufnehmen, aber der Inhalt eines Strings kann natürlich Zeichen enthalten, die nicht in Windows-Dateien/Verzeichnissen vorkommen dürfen, bspw. der Doppelpunkt. Mit dem Schalter kann die Prüfung ausgelöst werden: dies liest einen globalen String, prüft diesen und schreibt das Ergebnis in einen anderen String. Auf ähnliche Weise könnten Sie vor dem Senden eines globalen Strings zunächst mit einem entsprechend angepassten Skriptmodul den Inhalt eines Strings anpassen, das Dezimaltrennzeichen austauschen, und dann die aufbereiteten String senden. Im Konfigurationsdialog des Skriptmoduls können Sie über "Speichern" das im Modul enthaltene Skript als Datei z.B. auf dem Desktop abspeichern und mit einem Texteditor ändern. Anschließend muss das Skript wieder in das Modul mittels "Laden"-Schalter hineingeladen werden. validstring.DSB
  12. Hallo! Führende Nullen darstellen ist leider nicht möglich für DASYLabs Standard-Visualisierungen. Mit dem Skriptmodul könnte man den Inhalt eines globalen Strings vorgeben, sodass bspw. von einer Quelle (globale Variable, Eingang eines Moduls) die übergebene Zahl als zwei Zeichen in einen globalen String geschrieben werden. Den Inhalt des globalen String könnte man dann in einem Layout-Element (Textzeile/-block) anzeigen.
  13. Hallo! Über die Hysterese im Minima/Maxima-Modul können Sie steuern wie fein/groß die "Betrachtungsintervalle" sein sollen. Aber: Ist die Hysteres zu groß gewählt, werden die "hinteren" Maxima nicht mehr gefunden, ist diese zu niedrig, werden zuviele lokale Maxima im vorderen Bereich erkannt.
  14. Hallo! (1) Erhöhen Sie bitte die Blockgröße, grobe Richtlinie für das Verhältnis von Abtastrate zu Blockgröße ist eine 10:1 Ratio -- hier also: 1000 Hz, Blockgröße 100. Das verringert die "Last", da pro Sekunde nicht mehr 100 Datenblöcke (mit je 10 Werten) transportiert/verwaltet werden müssen, sondern nur noch 10 Datenblöcke (mit je 100 Werten). (2) Beim Bild mit der Zeitbasis-Einstellung sieht man, dass der Taskname in runden Klammern eingefasst ist -- das bedeutet, dass dieser Task eigentlich nicht verfügbar ist (quasi ein Platzhalter). Prüfen Sie bitte, ob sie den richtigen Task im Schaltbild verwenden bzw. sich auf den korrekten Task synchronisieren. (3) Für kontinuierliche NI-DAQmx-Tasks können Sie die Puffergröße anpassen: Messen >> Messeistellungen >> NI >> NI-DAQmx/CAN/XNet-Messeinstellungen Die Ringpuffergröße hängt von der verwendeten Blockgröße ab. 30 Blöcke ist die Voreinstellung, probieren Sie bitte einmal 60 Blöcke als Größe für den Puffer aus.
  15. Hallo, können Sie bitte das Schaltbild anhängen? Einfach auf den Beitrag hier im Forum ziehen. Prinzipiell ist das "Delta" in der Datei ohnehin nur ein Platzhalter, da es durch das Resampling der originalen Zeitdaten kein festes Delta mehr gibt. In Ihrem konkreten Beispiel haben Sie zwar alle 8 Sekunden einen neuen Satz Daten, welcher auf 360 Werte modifiziert/resampelt wird, es kann aber auch passieren, dass es mal nur 2 Sekunden oder 20 Sekunden sind, über die Daten gesammelt werden, das hängt schließlich vom nicht zwingend äquidistanten Abstand zweier Peaks am Steuereingang ab. Als Resultat erhält man (hier) 360 Werte, aber das Delta der ursprünglichen Zeitdaten ist einmal kürzer und einmal länger, also variabel, sodass es keinen "einen" Wert gibt, denn man als Delta in die Datei schreiben kann.
  16. Hallo! Schauen Sie einmal in die Optionen des Schaltermoduls. Dort bitte die Zeitbasis einstellen, die das MCC-Modul "Dev1-Ai0" verwendet. Beide Datenquellen, das MCC-Modul und der Schalter, werden dann gleichzeitig Daten ausgeben mit derselben Abtastrate und Blockgröße. Im Schalter ist vermutlich die Zeitbasis "DASYLab" eingestellt, welche standardmäßig auf 10 Hz Blockgröße 1 eingestellt ist. D.h. Datenquellen, welche diese Zeitbasis nutzen, geben jede 1/10 Sekunde einen Datenblock mit einem Einzelwert aus (anders: 10 Werte pro Sekunde im Abstand von 0,1s). Das MCC-Modul wird sicherlich eine andere Abtastrate und Blockgröße verwenden, sodass an der Haltefunktion Datenströme angelangen, die unterschiedliche Abtastraten und Blockgrößen haben. Dies unterstützen viele Module nicht und melden dann, dass die Zeitinformation oder die Blockgröße unterschiedlich ist. Die Zeitinformation (von zu verarbeitenden Datenblöcken) kann unterschiedlich sein, wenn die Abtastraten unterschieldlich sind, aber auch, wenn man einen Datenstrom durch ein Relais führt, welches die Daten zunächst blockiert und dann wieder frei gibt. Solche "unterbrochenen" Datenströme kann man i.A. nicht zusammen mit nicht unterbrochenen Datenströmen verrechnen. Anstatt in den Schalteroptionen eine Zeitbasis einzustellen, können Sie auch die Option "Eingang" aktivieren. Dann erhält der Schalter einen Eingang und leitet die Eigenschaften seines ausgegebenen Datenstroms vom ankommenden Datenstrom ab und gibt zudem immer nur dann Daten aus, wenn am Eingang neue Daten angelangen. Die "eigentlichen" Daten, die am Eingang des Schalters ankommen, werden ignoriert -- der Eingang dient quasi nur zur "Taktung".
  17. haltefunktion.DSB Hallo! Probieren Sie einmal die Haltfunktion "Wert halten bei Low-Pegel am Steuereingang" aus, siehe Bild. Dann gibt das Haltfunktionsmodul kontinuierlich Daten aus. Bei 5.0V am jeweiligen Steuereingang (Schalter EIN, High-Pegel) wird das angeschlossene Signal quasi durchgeschliffen. Bei 0.0V (Schalter AUS, Low-Pegel) hält das Haltmodul den Wert fest und gibt sozusagen "den letzten bekannten Wert" laufend aus. Anbei auch die Schaltbilddatei (DASYLab 2016 SP2)
  18. Wenn Sie einen Schalter verwenden und diesen als "Pause/Weiter"-Taste einsetzen, dann befindet sich dieses Modul (der Schalter) quasi in einem Sondermodus, der auch ohne Datenfluss auskommt -- der Pause/Weiter-Schalter (und der Start/Stopp-Schalter) bedienen dann sozusagen die Buttons in der Symbolleiste (Play, Pause/Weiter, Stopp). Im Allgemeinen sollten Sie Schaltbilder so erstellen, dass diese ohne Pause-Funktion funktionieren und quasi ununterbrochen "durchlaufen", also einen Datenfluss von Datenquellmodulen zu Datensenken gewährleisten. Wenn Sie "nur" die Anzeige im Linienschreiber einfrieren möchten, dann friert eine Pause auch alles andere im Schaltbild ein, was man u.U. nicht haben möchte -- eine Datenerfassung soll ja weiter Daten erfassen, während temporär ein Signalausschnitt im Linienschreiber begutachtet wird. Wie oben erwähnt: mit einem Relais können Sie "lokal" den Datenstrom unterbrechen, sodass keine neuen Daten mehr an das Linienschreiber-Modul geliefert werden -- die Anzeige "steht", während "rundherum" die Schaltbildabarbeitung nicht-pausiert weiterläuft (Datenerfassung, Berechungen, Ablage in Datendatei, ...).
  19. Hallo! Nein. Grob gesagt arbeiten die Module in DASYLab nur dann, wenn diese an Eingängen Daten erhalten. Während einer Pause generieren Datenquellen keine Daten an ihren Ausgängen, sodass ein angeschlossenes Modul nicht prüfen kann, ob eine Pause besteht oder nicht. Pause ist auch nur sinnvoll, wenn man bspw. aufgezeichnete Daten aus einer Datei liest und "mal eben" anhalten möchte, um im z.B. Linienschreiber angezeigte Signalverläufe zu betrachten. Bei einer Erfassung von Daten mit einer Messhardware, wird sich die Ausführung des Schaltbilds zwar "anhalten" lassen, aber Messhardware wird es i.A. nicht unterstützen. Was passiert mit den Daten, die während einer Pause angefallen sind? Was passiert, wenn die Pause zu lange dauert und die Datenpuffer der Hardware vollgelaufen sind? Wenn Sie bspw. Daten für eine bestimmte Dauer nicht in eine Datei speichern möchten, dann können Sie dazu ein Relais-Modul verwenden, um den am Eingang ankommenden Datenstrom am Ausgang nicht auszugeben.
  20. Hallo! Das funktioniert mit dem Layout-Element "Tabelle" in Kombination mit in Zellen verknüpften globalen Variablen oder Strings. Legen Sie eine Tabelle auf einer Layoutseite an, führen Sie einen Doppelklick auf die Zelle aus, die als Eingabefeld dienen soll. In den Eigenschaften der Zelle können Sie nun die "Editierbarkeit" der Zelle bestimmen: 'nicht', 'Text' und 'Variable' -- wählen Sie hier 'Variable'. Im Feld für den Inhalt der Zelle einen Rechtklick ausführen und über das Kontextmenü eine globale Variable oder einen globalen String verknüpfen -- im Textfeld steht dann bspw. ${VAR_1} oder ${MAXIMUM} (falls z.B. String 2 diesen Namen erhalten hat). Die Zelle zeigt nun immer den aktuellen Inhalt der verknüpften Variable/des Strings an, selbst wenn der Variablen/Stringinhalt sich durch z.B. eine Aktion oder das Modul "Variable schreiben" verändert hat. Während der laufenden Messung kann nun ein Doppelklick auf die Zelle ausgeführt und der Wert/Text geändert werden -- dies ändert dann den Wert der Variablen bzw. des Strings. Die Editierbarkeitsoption 'Text' dient "nur" dazu, dass bspw. Kommentare/Notizen in die Zelle geschrieben werden können. Der eingegebe Inhalt ist aber nur "in der Zelle" gespeichert und nicht in einer Variablen oder einem String. Die kann nützlich sein, wenn bspw. die Layoutseite gedruckt wird und der Kommentar dort auftauchen soll.
  21. Hallo! Aktion "String schreiben" überträgt den Inhalt des angegebenen Strings in die DASYLab.INI-Datei, z.B. hier zu finden: "C:\Users\Public\Documents\DASYLab\15.1.0\ger" (für ein deutschsprachiges DASYLab 15/2020.1). Mit der Aktion "String lesen" überträgt man entsprechend den Wert für den String aus der Datei in den globalen String zurück. Auf diese Weise überträgt man bspw. Variablen/String-Werte von einem Schaltbild in ein anderes, wenn man während der Messung die Aktion "Schaltbild laden und starten" verwendet. Das Konzept eignet sich, um in einem "Konfigurations-Schaltbild" Parameter vom Benutzer des Schaltbilds festlegen zu lassen, die man dann im eigentlichen Mess-Schaltbild verwendet. Oder in unterschiedlichen Mess-Schaltbildern -- wenn man im Konfig.-Schaltbild auch eine Wahl anbietet, welches Mess-Schaltbild geladen werden soll. Mit der Aktion "String schreiben (Datei)" kann auch eine eigene Datei (z.B. "config_xyz.ini") angegeben werden, sodass der Variablen-/Stringwert-Transfer nicht über die DASYLab.INI laufen muss -- es können ja unterschieldliche Konfigurationsschaltbilder auf dem Rechner verwendet werden, die sich sonst gegenseitig die Werte in der "zentralen" DASYLab.INI überschreiben würden...
  22. Hallo! Die "Reihenfolge im Startdialog" können Sie über das Menü ändern (s. auch Bild): Optionen >> Globale Variablen und Strings >> "Reihenfolge im Startdialog..."
  23. Hallo! Nein, dies lässt sich nicht abfragen. Wenn Sie aber vor(!) dem Start der Messung Variablen/Strings abfragen möchten, dann setzen Sie bitte für die jeweiligen Variablen die Option "Im Startdialog Wert eingeben" (siehe Bild unten) Wenn Sie nun die Messung starten ("Play" betätigen), dann erscheint ein Dialog, der den Benutzer zur Eingabe der Variablen/Strings auffordert. Der Startdialog kann mit "Starten" und "Abbrechen" verlassen werden: bei "Starten" startet die Messung, bei Abbrechen nicht. Mit der Aktion zum Eingeben von Variablen/Strings können Sie während der bereits laufenden Schaltbildausführung Variablen-/Stringinhalte eingeben lassen. Kontrollieren, ob der Benutzer den Dialog mit "Ok/Abbrechen" verlässt, ist aber nicht möglich. Mit dem Aktions-Ereignis "Globale Variable/String geändert" können Sie sich aber benachrichtigen lassen, ob sich ein Inhalt verändert hat.
  24. Hallo! Das Betriebssystem hat auf die Modbus-Kommunikation (die Funktionen) keinen Einfluss.
×
×
  • Create New...