Jump to content

HolWo

Administratoren
  • Gesamte Inhalte

    248
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle erstellten Inhalte von HolWo

  1. HolWo

    Skriptmodul-Zeitbasis

    Hallo! Hier fehlt leider im Skript in der Funktion SetupFifo die explizite Rückgabe von True. Ohne explizites return True bzw. return False wird automatisch None zurückgegeben. Wenn das DASYLab-Subsystem den Rückgabewert None erkennt, dann wird die SetupFifo-Funktion des Skripts ignoriert und die Optionen des Dialogs Kanal-Eigenschaften werden stattdessen angewendet -- aber ohne die Information über Abtastrate und Blockgröße auf die Ausgänge anzuwenden: Da man aber im Beispiel eine Datenquelle als Modul vorliegen hat, muss man über die SetupFifo-Funktion nachfolgenden Modulen mitteilen, mit welchen Eigenschaften die Daten während der laufenden Messung ankommen werden (u.a. Abtastrate und Blockgröße). Da die SetupFifo durch das fehlende return True aber gar keine Auswirkung hat, bleiben die Eigenschaften des ausgegebenen Datenstroms nach dem Laden des fehlerhaften(!) Skripts in das Modul aber unverändert (hier: info.timebaseID = 2, also Treiber-Zeitbasis). Ändert man nun im Dialog die Zeitbasis-Einstellung, dann werden in der ProcessData-Funktion zwar die von der nun ausgewählten Zeitbasis vorgegebene Abtastrate und Blockgröße an den leeren angeforderten Block (Funktion GetOutputBlock) geschrieben... aber der leere Block ist weiterhin mit den Eigenschaften der Treiber-Zeitbasis vorkonfiguriert, weil das return True fehlt in der SetupFifo-Funktion! Konkret für das Beispiel heisst das: In der info-Klasse ist die Zeitbasis-ID 2 vorgegeben, die Eigenschaften der Ausgänge werden also von der Treiber-Zeitbasis abgeleitet. Die Treiber-Zeitbasis ist im Schaltbild auf 10 Hz, Blockgröße 4 eingestellt. Startet man die Messung funktioniert alles wie erwartet. Ändert man nun die Zeitbasis auf DASYLab (10000 Hz, BG 1000 im Beispiel), dann werden in der ProcessData-Funktion die Eigenschaften zwar von der DASYLab-Zeitbasis abgefragt, aber durch Funktion GetOutputBlock stellt DASYLab nachwievor einen leeren Block bereit, der eine maximale(!) Blockgröße von 4 hat -- weil die SetupFifo-Funktion des Skripts keine Auswirkung hat und Eigenschaften der Ausgänge nicht an die Zeitbasis-Änderung im Dialog angepasst werden. Die Eigenschaft BlockSize, die an jeden Datenblock noch einmal explizit drangeschrieben wird, ist die reale Blockgröße, die immer kleiner oder gleich der maximalen Blockgröße ist, niemals größer. Da die "alte" maximale Blockgröße aber in diesem Beispiel quasi fest 4 ist (auch wenn's langsam langweilig wird : wegen des fehlenden return True in der SetupFifo-Funktion!), hat der angeforderte Datenblock Platz für höchstens vier Datenwerte. Durch die Umstellung im Dialog auf die DASYLab-Zeitbasis aber sollen 1000 Werte in den Block geschrieben werden. Hier kommt es dann zum Fehler FIFO data mismatch, weil die durch die in der SetupFifo vereinbarte maximale Blockgröße durch das Falschbelegen in der ProcessData-Funktion nicht eingehalten wird -- 1000 Werte passen nunmal nicht in einen Block mit nur 4 Plätzen. Lange Rede, kurzer Sinn: die SetupFifo-Funktion explizit mit return True abschliessen!
  2. Hallo, ich habe ein Beispiel angehängt von dem Sie sich inspierieren lassen können: die Excel-Tabelle müssen Sie zunächst im Windows ODBC Administrator** als Datenquelle namens "Obst-DB" einrichten (s. Schaltbild, ODBC-Module). Das Beispielschaltbild kann ab einschließlich DASYLab 13 verwendet werden. ** Unbedingt die 32-Bit-Version verwenden, wenn Sie ein 64-Bit-Betriebssystem einsetzen: c:\windows\syswow64\odbcad32.exe DASYLab 13_ODBC_Obst-Beispiel.zip
  3. HolWo

    PID PWM Signal erzeugen

    Das PID-Modul gibt keine PWM-Signale aus. Wenn bspw. die Parameter P=1, I=0 und D=0 gewählt sind, dann gibt das Modul die Differenz zwischen den Eingängen (Sollwert oben, Istwert unten) aus.
  4. HolWo

    Verwendung von 2 x NI cDAQ-9174

    DASYLabs bis einschließlich Version 12 sind empfindlich ggü. nicht lauffähigen Tasks, unabhängig davon, ob die Tasks fehlerhaft konfiguriert sind oder verknüpfte Geräte nicht angeschlossen sind. Es kann durchaus sein, dass die "ersten" Tasks, die im MAX lauffähig sind, im DASYLab 12 ebenfalls funktionieren. D.h. alle bis zum ersten nicht lauffähigen Task erfolgreich importierten Tasks können genutzt werden, alle folgenden Tasks -- selbst funktionierende, die nach einem fehlerhaften Task importiert werden -- nicht mehr. Die Fehlermeldung zeigt "nur" an, dass der Abgleich nicht erfolgreich gewesen ist; das bedeutet aber nicht, dass gar nichts importiert werden konnte. Ab einschließlich DASYLab 13 wurde das Verhalten angepasst, sodass bereits im MAX nicht lauffähige Tasks übersprungen werden und die Tasks, die im MAX funktionieren, ins DASYLab importiert werden können. Unabhängig davon sollten Sie Ihren MAX/DAQmx aktualisieren: die "frühen 15er-Versionen" sind nicht empfohlen, wenn DASYLab zum Einsatz kommt. Ab MAX/DAQmx 15.5 und neuer ist man wieder auf der sicheren Seite.
  5. HolWo

    DASYLab – Grundlagenschulung

    bis
    DASYLab – Grundlagenschulung
  6. HolWo

    DASYLab – Skript-Modul

    bis
    DASYLab – Skript-Modul
  7. HolWo

    DASYLab – Grundlagenschulung

    bis
    DASYLab – Grundlagenschulung
  8. HolWo

    DASYLab – Skript-Modul

    bis
    DASYLab – Skript-Modul
  9. HolWo

    DASYLab – Grundlagenschulung

    bis
    DASYLab – Grundlagenschulung
  10. HolWo

    DASYLab – Skript-Modul

    bis
    DASYLab – Skript-Modul
  11. HolWo

    DASYLab – Grundlagenschulung

    bis
    DASYLab – Grundlagenschulung
  12. HolWo

    DASYLab – Skript-Modul

    bis
    DASYLab – Skript-Modul
  13. HolWo

    Zeitbegrenzter Puls an digitalem Ausgang

    Hallo! Das Verzögerungsmodul verzögert nur den Datenstrom für die eingestellte Dauer, d.h. ein Impuls wird nicht in die Länge gezogen, sondern nur "später" aus dem Modul ausgegeben. Sie benötigen vmtl. einen High-Pegel, der für x Sekunden anliegt und dann wieder auf Low zurückfällt. Probieren Sie hierzu einen Schalter (Impulstaster) und ein Trigger-Modul. In der Lite-Version steht nur der Vor-/Nach-Trigger zur Verfügung, der eigentlich für eine Bereichsüberwachung (Ober-/Untergrenze) gedacht ist. Der Schalter gibt entweder 0.0V (AUS) aus oder 5.0V (EIN). Der Impuls-Taster-Modus bewirkt, dass das Schaltermodul beim einschalten einmal kurz 5.0V ausgibt und automatisch wieder auf 0.0V zurückspringt. Diesen Peak nach TTL-High kann man mit dem Trigger "abfragen": - Untergrenze=0.0V - Obergrenze=5.1V - Bereich: innerhalb Wenn das Triggermodul nun den kurzen Peak nach 5.0V vom Schalter ampfängt, gibt das Modul seinerseits 5.0V aus, und fällt wieder auf 0.0V zurück sobald 0.0V vom Schalter kommt. Das hilft bisher noch nicht viel -- solange man die Mindestdauer des Triggers nicht anpasst: Hier kann man die gewünschte Zeit (oder die Anzahl d. Werte) einstellen, die der Trigger weiterhin 5.0V ausgeben soll, selbst dann, wenn das Eingangssignal schon längst wieder aus dem Überwachungsbereich ausgetreten ist! Den Trigger nun mit einem Ausgangsmodul verbinden und durch einmalige Betätigung des Schalters kann man x Sekunden lang 5.0V an das Ausgangsmodul liefern.
  14. Ja, das ist aber kein Fehler, sondern liegt daran, dass man beim Formelinterpreter in jedem Kanal eine Formel hinterlegen kann, die Daten von beliebigen Eingängen verrechnen kann. D.h. die Formel in Kanal 0 gibt ihr Ergbnis an Ausgang 0 aus, nutzt aber z.B. Daten der Eingänge 8 und 11 -- hier gibt es eine beliebige Zuordnung von Eingängen zu Ausgängen, sodass man kaum ermitteln kann, welchen Kanalnamen eines Eingangs man "durchschleifen" soll. Daher "muss" man beim Formelinterpreter für jeden Kanal selber den Namen vergeben.
  15. HolWo

    DASYLab – Skript-Modul

    bis
    DASYLab – Skript-Modul
  16. HolWo

    DASYLab – Grundlagenschulung

    bis
    DASYLab – Grundlagenschulung
  17. Für Diadem ist eine aktualisierte Version des "DASYLab DataPlugin" erschienen: http://www.ni.com/example/29823/en/ ( August 1, 2017 [1.1.06788]) Behobene Fehler: "Corrected package block reading error." Mit diesem Plugin können im DASYLab-eigenen Dateiformat (Endungen *.DDF, *.DDB) aufgezeichnete Daten* direkt in Diadem gelesen werden. Dies ist hilfreich bei Nutzung älterer DASYLab-Versionen, die am Gegensatz zu DASYLab 2016 noch kein TDMS-Format unterstützen. * Das Plugin unterstützt nur Zeitdaten, aber keine Frequenz- und Histogrammdaten.
  18. HolWo

    NI USB 6501 an DL 12

    Hallo Herr Gull, im Measurement & Automation Explorer (MAX) müssen die enstprechenden Tasks erstellt werden, z.B. ein Task für die Digital-Erfassung. Zum Beispiel einen Rechtsklick auf das Gerät in der Baum-Struktur durchführen und im Kontextmenü Task erstellen auswählen. Dann öffnet sich ein Assistent, der Sie durch die Erstellung führt. Prüfen Sie bitte, ob im Configurator von DASYLab 12.0 der NI-DAQmx (ohne Can)-Treiber aktiviert ist. Anschließend bestätigen und nach dem Start von DASYLab finden Sie die entsprechenden Module in der Kategorie "Ein-/Ausgänge" des Modul-Browsers. Im DASYLab-Modul können Sie in der Dropdown-Liste im oberen Bereich des Dialog den zuvor im MAX erstellen Task einstellen. Natürlich nur Analog-Tasks in einem DAQmx-Analog-Eingangsmodul, Digital-Tasks in einem DAQmx-Digital-Eingangsmodul, usw.
  19. HolWo

    speichern eines Protokolls als .png Datei

    Hallo! Im Fenster der Visualisierungsmodule (s. Screenshot) können Sie über das Pinsel-Symbol die Eigenschaften der Darstellung konfigurieren: Liniendicke und -typ, Farbe, usw. Die Eigenschaften des Modul-Fensters gelten auch für die Grafikverknüpfung in der Layout-Ansicht.
  20. HolWo

    speichern eines Protokolls als .png Datei

    Hallo! Sie können bspw. einen PDF-Drucker (FreePDF, doPDF, etc.) installieren und das Layout per Aktion in eine PDF-Datei drucken lassen. Ab DASYLab 2016 kann bei Aktionen (z.B. Layout als PNG speichern) ein zusätzlicher Parameter gesetzt werden (s. Screenshot). Auszug aus der DASYLab-Hilfe: Bei allen Aktionen, bei denen ein Layout gespeichert oder in die Zwischenablage kopiert wird, wird ein zusätzlicher Parameter gesetzt (in alten Schaltbilder ist dieser zu 0 gesetzt). Dieser steuert die Skalierung des jeweiligen Bilds. Ohne zusätzliche Skalierung (bei Faktor 0 und 1) wird das Bitmap in der Größe des Bildschirms (auf dem DASYLab gestartet wurde) abgespeichert. 3 Wertebereiche werden vom Programm als gültig betrachtet, die für unterschiedlichen Skalieroptionen stehen. Alle Werte außerhalb dieser Bereiche werden wie 1.0 behandelt: Multiplikator: 0.125 <= Parameter <= 8.0 (Vergrößerungsfaktor zur Bildschirm- bzw. Layoutauflösung) DPI des Bildes: 150 <= Parameter <= 1200 (Pixelauflösung des resultierenden Bilds in dpi) Breite des zu erstellenden Bildes: 1280 <= Parameter <= 20000 (Breite des resultierenden Bilds in Pixeln (es können Rundungsfehler auftreten, z.B. bei feinen Linien)
  21. HolWo

    RS232 multible Ausgänge

    Möglicherweise sind die beiden einzelnen Aktionen zeitlich zu nahe beieinander. Der zweite Befehl soll gesendet werden während der erste noch nicht ganz "raus" ist. Probieren Sie mal zwei einzelne Aktionsmodule zu nutzen: eine Aktion pro Modul. Beim Modul Aktion03 die Option "Eingänge kopieren" aktivieren und dann das neue Modul anhängen. Evtl. ein Verzögerungsmodul zwischen die beiden Aktionsmodule plazieren (ein Block Verzögerung). Alternativ kann man auch versuchen, die beiden einzlnen Kommandos in einen einziges zu sendendes umzuwandeln. Anstatt eine globale Variable zu senden, die im RS232-Ausgang mit Text "dekoriert" wird, könnte man auch einen globalen String zusammenstellen und diesen dann als einzelne Nachricht versenden. Im Dialog der globalen String können Sie über "Erweitert..." die Option "Ausdruck automatisch berechnen" aktivieren und den Text Inhalt des Strings aus festen Textteilen und variablen Textteilen zusammesetzen.
  22. HolWo

    DasyLab2016 Probleme

    Hallo Herr Schreiber! Können Sie bitte ein mit DASYLab 2016 erstelltes Schaltbild zur Verfügung stellen, bei dem man dieses Verhalten nachvollziehen kann? Die Datei bitte hier an einen Beitrag anhängen oder an meine E--Mail-Adresse versenden: holger.wons@measx.com .
  23. HolWo

    Zufällige Zeitspanne generieren.

    Hallo! Mit Standardmodulen kenne ich keinen Weg, eine Zufallszahl zu bestimmen. Mit dem Skript-Modul hingegen (DASYLab 13 und 2016) geht dies problemlos (siehe Screenshot). Beim Start der Messung wird eine Zufallszahl zwischen "Rand Min" und "Rand Max" in die ausgewählte globale Variable von DASYLab geschrieben. Diese könnte man zum Beispiel in einem Kombitrigger-Modul (Startereignis: Direkt, Stoppereignis: Direkt) als Mindestzeit verwenden, sodass der Trigger dann für eine zufällige Zeit ab dem Start der DASYLab-Messung 5V ausgibt, nach Ablauf der Mindestdauer fällt die Ausgabe dann auf 0V. Diese fallende Flanke kann man dan wiederum für weitere Ereignisse weiterverwenden. Das Skript-Modul ist in der Kategorie "Spezial". Ein neues Modul ins Schaltbild legen, den erscheinenden Dialog einfach mit Ok bestätigen. Im Skript-Modulkonfigurationsdialog (Doppelklick auf das Modul im Schaltbild) den Button "Externen Editor benutzen" einmal anklicken ud mit Ok bestätigen. Jetzt erscheint ein "Laden"-Button. Hierüber können Sie nun die py-Datei "rand_var.py" in das Skript-Modul hineinladen (Link unter dem Screenshot). Mit Ok bestätigen und den Konfigurationsdialog verlassen. Das py-Skript ist nun im Skript-Modul und durch einen erneuten Doppelklick können Sie das Modul nun konfigurieren wie auf dem Screenshot zu sehen: die Nummer der Variablen, in die die Zufallszahl hineingeschrieben werden soll, zwei Werte Rand-Min/Max für den Bereich der Zufallszahl (Ganzzahl), min <= Zahl <= max. VORSICHT: Es sind keine Plausibilitätsprüfungen für die Parameter vorhanden!! Wenn man da z.B. eine Zahl eingibt, die keine gültige Nummer für eine globale DASYLab-Variable ist (1-999), wird es zu einem Fehler kommen. Das py-Skript ist eine Textdatei mit Python-Skript: www.python.org. DASYLab 13 verwendet Python 2.6.5. DASYLab 2016 verwendet Python 2.7.10. rand_var.py
  24. HolWo

    DasyLab und Peawatron Messgerät

    Hallo! Ich bin nicht sicher, aber ich vermute, das Gerät erwartet eine Pause zwischen einzelnen Datenanforderungen, nicht zwischen einzelnen Zeichen, die zum Gerät gesendet werden. Eine Anforderung kann durchaus aus mehreren Zeichen bestehen. Wenn das Gerät Anforderungen bestätigt, dann werden die ACK-Zeichen ebenfalls im Puffer liegen, zusätzlich zu den Antwortzeichen, die die "eigentlichen interessanten" Daten enthalten. D.h. das Datenformat muss ein zusätzlichen Zeichen überspringen. Alternativ können Sie die Anforderungen auch mit einem RS232-Ausgang senden. Dort können Sie nach dem Senden auf Zeichen vom Gerät warten und diese schon "weglesen", sodass diese erst gar nicht im Puffer des RS232-Eingangs landen. Mit \# 1 am Ende des Anforderungsstrings im RS232-Ausgang wird zunächst die Anforderung an das Gerät gesendet und auf die Bestätigung des Geräts des Erhalts der Anforderung gewartet. Wenn das ACK vom Gerät empfangen wird, wird dieses Zeichen nicht mehr in den Puffer vom RS232-Eingang gelegt. Ambei finden Sie Beispiele, um zeitversetzte Anforderungen zu versenden und wie man vorbereitete Anforderungen, die in globalen Strings stehen, versendet. rs232_strings_versenden.DSB rs232_zeitversetzt_senden_zyklus.DSB
  25. HolWo

    Dasylab - S-AGM Gasmitter

    Hallo! Das sollte mit dem folgenden Formatstring für die rot markierte Zahl gehen: 5x fy Die ersten fünf (schwarzen) Zeichen überspringen, dann die nächsten Zeichen als float-Zahl interpretieren und dabei das Big Endian-Format nutzen. Float ist vier Byte "breit", also werden die Zeichen A5 9A E1 3C interpretiert. "f mit y" --> 4-byte Fliesskommazahl im Format Motorola / Big Endian "f ohne y" --> 4-byte Fliesskommazahl im Format Intel / Little Endian
×