Jump to content

HolWo

Administratoren
  • Posts

    358
  • Joined

  • Last visited

  • Days Won

    6

Everything posted by HolWo

  1. 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
  2. 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?
  3. 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
  4. 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.
  5. 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.
  6. 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.
  7. 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
  8. 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.
  9. 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
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. 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".
  15. 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)
  16. 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, ...).
  17. 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.
  18. 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.
  19. 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...
  20. Hallo! Die "Reihenfolge im Startdialog" können Sie über das Menü ändern (s. auch Bild): Optionen >> Globale Variablen und Strings >> "Reihenfolge im Startdialog..."
  21. 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.
  22. Hallo! Das Betriebssystem hat auf die Modbus-Kommunikation (die Funktionen) keinen Einfluss.
  23. Hallo, argh, Sie haben den Beitrag editiert... Für das vorige Gerät BK8100 gibt es ein PDF mit einem RSR232-Beispiel: https://download.beckhoff.com/download/Document/io/bus-terminals/bk8100de.pdf Allerdings muss man hier eine Prüfsumme ausrechnen und anhängen. Ich konnte nicht ausmachen, welche verwendet wird. DASYLab bietet einige automatisch berechnete an; wenn davon keine mit der notwendigen Prüfsumme für das Gerät übereinstimmt, müsste man diese manuell berechnen und einen festen Anfrage-String senden. Die Kontrolle der vom Gerät gelieferten Antwort inkl. Prüfsumme kann das Standard-RS232-Modul leider nicht leisten. Entweder ignoriert man das Verhandensein der Prüfsumme der Antwort oder man könnte das Skriptmodul verwenden, um die Kommunikation (vollständig!) selber zu implementieren. Das BK9050 sollte sich laut Handbuch (https://download.beckhoff.com/download/document/io/bus-terminals/bk9000_bk9050_bk9100de.pdf) via Modbus auch von DASYLab ansprechen lassen. Beachten Sie aber bitte, dass DASYLab nicht alle Modubus-Funktionen unterstützt, sondern sich auf die Modbus-Funktionen 1, 3, 4, 15 und 16 beschränkt: 0x01 Read Multiple Coils Digital-Eingang 0x03 Read Holding Register 40000 Analog-Eingang 0x04 Read Input Register 30000 Analog-Eingang 0x10 Write Multiple Register Analog-Ausgang 0x0F Write Multiple Coils Digital-Ausgang
  24. Hallo! Die Anzeigemodule haben eine feste Grenze der Anzahl der gleichzeitig darstellbaren Daten. Die Aufzeichnung in eine Datei kann natürlich (nahezu) beliebig schnell passieren, aber für die Darstellung muss man reduzieren, wenn (vergleichsweise) hohe Abtastraten und lange Historien der Anzeige zusammentreffen. Für die reine Darstellung über Tage ist es möglicherweise ausreichend, wenn man bspw. statt 100 Hz nur einen reduzierten Datenstrom mit 1 Hz verwendet -- für den "groben" Überblick über mehrere Tage. In der Datendatei steht ja die volle Auflösung zur Verfügung. Hier gibt es mehrere Möglichkeiten, den Datenstrom vor der Anzeige im Linenschreiber zu reduzieren. Bspw. mit dem Separieren-Modul: bei einem Datenstrom mit 1000Hz/BG100 könnte man 99 Werte ignorieren und einen passieren lassen, sodass der Datenstrom nur noch ein Zehntel der Werte umfasst. Oder mit einem Kombitrigger (Steigende Flanke/Direkt) und einem Relais (mit Steuereingang): am Steuereingang schließt man ein Generatormodul an, welches alle paar Sekunden, Minuten oder Stunden einen Impuls erzeugt. Das Relais wird zum Zeitpunkt des Impulses nur einen Wert jedes Kanals passieren lassen. Auf diese Weise könnte man für kürzere Historien eine höhere Auflösung der Daten ermöglichen, in dem man weniger stark reduziert, und gleichzeitig über längere Zeiträume stärker reduzierte Datenströme darstellen.
×
×
  • Create New...