Jump to content

Anzeige:
nächste DASYLab Schulungstermine bei measX
DASYLab und Python 14.04. + 15.04.2020 Mönchengladbach
Messwerterfassung mit DASYLab – Grundlagen 21.04. + 22.04.2020 Mönchengladbach


HolWo

Administratoren
  • Content Count

    304
  • Joined

  • Last visited

  • Days Won

    5

HolWo last won the day on July 31 2019

HolWo had the most liked content!

About HolWo

  • Rank
    DASYmatrix 001

Profile Information

  • Gender
    Not Telling

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Hallo! DASYLab 2020 wird laufend aktualisiert, und Informationen zu den Details der Aktualisierungen finden Sie im Build-Log des DASYLab 2020-Unterforums: https://www.dasylab-forum.de/forum/index.php?/forum/64-buildlog-dasylab-2020/
  2. Hallo! Wie stark asynchron ist es denn? Millisekunden, Minuten? Welche Zeitbasen finden Verwendung... bei der Erfassung (MCC-Gerät) beim Generator, der den Eingang der Blackbox SAVE-Data speist Was passiert, wenn Sie den Genrator (vmtl. "Taktgeber" für Blockgröße 1) entfernen und stattdessen eine ablaufende Leitung des Analog-Eingangs abgreifen? Mit einem Mittelungsmodul oder einem Seprarierenmodul können Sie die Blockgröße auf 1 reduzieren. Erstellen Sie ein Testschaltbild: Kopie des obigen Schaltbilds erstellen, und darin alles entfernen, ausser dem Generator und dem IO_OUT-MCC-Modul. Den Generator durch einen Schalter ersetzen und seinen Ausgang mit den Eingängen des Analogausgangs verbinden. Wie stark ist die Verzögerung, wenn Sie die Ausgänge nun über den Schalter ein-/ausschalten? Möglicherweise ist es auch hilfreich, wenn Sie das Schaltbild zur Verfügung stellen (an hängen an einen Beitrag oder per Forum-Nachricht).
  3. Hallo! Der Eingang einer Software-Datenquelle dient dazu, dass man sich mit einem anderen Datenstrom synchronisieren kann -- manche Hardware bietet keine Zeitbasis an, die man dann anstatt "DASYLab", "Treiber", "NI DAQmx Tasks" usw. als Zeitbasis in einem Schalter-, Handregler etc einstellen kann. Sie können aber mal die untere Variante (s. Bild) ausprobieren: das "Variable lesen"-Modul hat einen Eingang. Davor sind Relais und Schalter (Impulstaster-Typ). Der Schalter nutzt die Zeitbasis "DASYLab" (10 Hz, BG 1). Betätigt man den Impulstaster, gibt dieser für genau einen Datenwert 5.0V aus (0.0V sonst). Das Relais lässt folglich nur dann einen Datenblock passieren, wenn man den Schalter drückt. Dieser eine Datenblock kommt am Eingang des "Variable lesen"-Moduls an. Das Modul gibt immer nur dann Daten aus, wenn es auch Blöcke am Eingang empfängt. Da dies immer nur bei einem Tastendruck passiert, wird entsprechend der aktuelle Variablenwert nur bei einem Tastendruck ausgegeben und an das "Variable schreiben"-Modul übergeben. Der Inhalt der Datenblöcke, die am Eingang des "Variable lesen-Modul ankommen, sind für das Modul unerheblich: es nutzt nur die Meta-Information über Abtastrate, Blockgröße und den Zeitstempel für seine eigene Ausgabe von Datenblöcken. Alternativ könnten Sie auch eine Aktion (Kategorie: Spezial) nutzen und den Variableninhalt mit der Aktion "Variable kopieren" bzw. "Variable setzen" einmalig bzw. bei Bedarf in einer andere Variable übertragen. Das Ereignis der Aktion könnte bspw. "Steigende Flanke" (oder "Wert erreicht 5.0V) sein, dann müssten Sie in einem Schritt der Statemachine kurzeitig 5.0V ausgeben (im vorherigen und nachfolgenden Schritt muss die Ausgabe 0.0V sein).
  4. Hallo! Die IVI-Module arbeiten (leider), wie Sie bemerkt haben, strikt kanalweise, sodass der erste Kanal das Gerät initialisiert, für sich reserviert und folgende Kanäle, die auf dasselbe Gerät zugreifen wollen, eine belegte Resource vorfinden. Ergo: Es funktioniert leider nicht.
  5. Hallo! Im Beispiel auf dem Bild ist ein "Cariage return"-Symbol, also <CR>, als Nachrichtenabschluss gezeigt. Das Terminal sendet vmtl. automatisch eines mit, da man im Eingabefeld nur die eigentliche Nachricht sieht ("WR0000"). In DASYLabs RS232-Modul, z.B. im Monitor, müssen Sie explizit ein <CR> hinzufügen, da DASYLab nicht wissen kann, dass das Gerät ein <CR> als Abschlusszeichen voraussetzt. D.h. "WR0000\r" (ohne die "") können Sie einmal ausprobieren -- das \r Zeichen ist die in DASYLab gebräuchliche Kurzschreibweise für <CR> (und \n für LF=Line feed). Wenn's funktioniert, bestätigt das Gerät, laut Beispiel oben, den Empfang mit einem "OK<CR><LF>" (ohne "").
  6. HolWo

    Statemachine

    Hallo! Die Ausgänge 1-4 des Schrittkettenmoduls steuern, ob für die vier Kammern "auto_leer" oder "auto_pkw" angezeigt werden. Für die vierte Kammer ist im ENDE-Schritt der Ausgang 4 für die Mindestdauer des Schritts auf 5.0 gesetzt, sodass die Statusanzeige "PKW_Exit" den PWK zeigt.
  7. Hallo! Ein Beispielskript finden Sie im Anhang. In DASYLab (ab Version 13) in Kategorie Spezial ein Skriptmodul ins Schaltbild legen. Im erscheinenden "Assistenten" einstellen, dass das Modul nur Ausgänge haben soll (es ist ja eine Datenquelle). Wenn das Modul im Schaltbild liegt, einen Doppelklick darauf ausführen und den "Externen Editor"-Modus aktivieren. Dann erscheint eine "Laden"-Taste -- hier dann das Skript in das Modul hineinladen. Das Skript liest über die serielle Schnittstelle testweise Daten von einem unserer Messgeräte, ist also speziell darauf ausgelegt und nicht universell einsetzbar! D.h., das Skript kann nur als Ausgangsbasis für Ihre konkrete Anwendung dienen und muss natürlich entsprechen angepasst werden, z.B. bei der Datenanforderung und der Analyse der empfangenen Daten. Im geöffneten Dialog des Skriptmodul können Sie über die Hilfe-Taste weitere Informationen erhalten (oder natürlich hier Fragen stellen ). USBBox_Zeitbasisauswahl.py
  8. Hallo! Die empfangenen Daten lassen sich mit Formatrings analysieren und als Zahlenwerte auf den Modulausgängen ausgeben, aber Texte lassen sich nur in DASYLabs globale Strings übertragen und z.B. per Aktion und Meldung weiterverarbeiten. Ein eleganterer Weg, empfangene Texte in eine Datei zu übertragen, wäre ab DASYLab 13 mit dem Skriptmodul (Kategorie: Spezial) gegeben. Aber hier müsste man dann die RS232-Kommunikation, die Analyse der empfangenen Daten und die Dateibehandlung selber programmieren (Skriptsprache Python).
  9. Danke für den Hinweis -- wir werden versuchen, dies zu korrigieren! Alternativ können Sie auch das ausgefüllte Rechteck als Ersatz für "fette" horizontale Linien verwenden.
  10. Hallo! Beim Build 203, der zurzeit auf measx.com herunterladbar ist, kann die Linienstärke des Layoutelements "Linie" verändert werden (s. Bild). Buildnummer der installierten DASYLab-Version: Menüleiste >> Hilfe >> Info über DASYLab... >> Version (Möglicherweise über den Nummernblock versucht, den Wert zu ändern, und NUM-Taste war nicht gedrückt?)
  11. Wenn die IXXAT VCI 4-Treiberserie genutzt wird, kann es auch dazu kommen, dass keine Daten empfangen werden. Ich hatte dies bereits an den IXXAT-Support gemeldet. Wenn die aktuellsten VCI 4-Treiber das Problem noch nicht gelöst haben, bleibt bis zur Behebung nur, den neusten VCI 3-Treiber zu nutzen.
  12. HolWo

    Diagram

    Hallo! Das Diagramm-Modul beherrscht diese Funktionen leider nicht. Nutzen Sie bitte das Linienschreiber-Modul, wenn Sie das Gitter und höhere Strichstärken benötigen.
  13. Hallo, ich weiss zwar nicht, was Sie mit "permanent zugreifen" meinen, aber mit dem Schreiben in eine Datei und dem Auslesen aus einer Datei kommt man vermutlich in die Nähe dessen, was Sie gerne machen möchten. Da man nicht aus der Datei lesen kann, in die man gerade schreibt, muss man etwas Tricksen. Es gibt zwei Dateien, aus einer wird gelesen, in die andere wird geschrieben -- wenn man den Datensatz "aktualisiert" (Schalter rechts oben: "Aufzeichnen"), dann werden die Dateien quasi beim Schreiber und Lesen getauscht. Mit dem Schalter (links unten) kann man dann wiederholt die gerade auktuelle "Lesedatei" auslesen. Der linke Linienschreiber zeigt, was in eine Datei geschrieben wird, der rechte Schalter zeigt, was gelesen wird -- auch mehrfach denselben "Datensatz", wenn man auf die Taste hämmert. Das Schaltbild ist angehängt (DASYLab 2016 SP2). Da Sie die Dateien "file_a/b" nicht haben, müssen Sie diese erstmal in einem "Trockenlauf" erstellen lassen: Schaltbild laden, den "Lesen"-Zweig entfernen, Schaltbild starten und zweimal "Aufzeichnen" betätigen. Jetzt existieren die Dateien. Nun Schaltbild laden und es funktioniert. 2000werte_datei_schreiben_lesen.DSB
  14. Hallo! Man kann einzelne(!) Zeichen in einem globalen String mit einem Hexcode angeben, z.B. um nicht druckbare Zeichen zu versenden. Siehe Bild: der String SIMU_SENDEN1 hat den Inhalt \x0a\xff\x1f -- das sind eigentlich nur drei Zeichen, aber mit dem Steuerzeichen \x geben wir DASYLab an, dass die beiden folgenden Zeichen der Hexcode sein sollen. Also \x1f ist das Zeichen mit dem Hexcode 31, was dem ASCII-Zeichen '1' entspricht. (siehe ASCII-Tabelle). Der Formatstring im RS232-Ausgang ist der Standardstring [a]/r. -- Für das [a] wird der zu sendende String eingesetzt und ein Carriage return (\r) angehängt, um die Nachricht abzuschließen. Die Aktion (Aktion00) sendet den String 1 und den String 2. String 2 enthält den Text FFFFFFFF (8xF). Im RS232-Eingang gibt es fünf Kanäle: die ersten vier haben als Formatstring ein einzelnen b (für Byte). Der fünfte Kanal enthält den Formatstring ahl\r. Jeder Kanal mit einem b liest ein einzelnen Byte aus dem empfangenen Datenstrom und gibt den (dezimalen) Wert auf dem Ausgang aus, angezeigt im Digitalinstrument. \x0a oder 0x0A oder 0Ahex entspricht 10 dezimal. \xff oder 0xff oder FFhex entspricht 255 dezimal usw. Der letzte Kanal enthält den Formatstring ahl, was soviel bedeutet, dass 8 Bytes als hexcodierte ASCII-Zeichen zu interpretieren sind (a=ascii/h=hex/l=long). 0xFFFFFFFF entspricht eben 4294..blahblah als Dezimalzahl. Mit dem Formatstring $1\r in einem RS232-Eingang kann man Daten in einen globalen String schreiben (hier: $1 >> Variable 1). Allerdings kann man dabei keine Interpretation durchführen, da dies nur für Klartext-Teile einer Nachrichten gedacht ist. rs232simusenden.DSB
  15. Hallo! Über die Stringfunktionen kann man leider keine führenden Nullen bei der Umwandlung hinzufügen lassen. Der RS232-Ausgang hingegen kann dies beispielsweise machen durch Nutzung des Formatstrings [az5]: z=leading zeros, 5=fünf Stellen (siehe Bild / angehängtes Beispielschaltbild / Hilfeseite zu Formatanweisungen des RS232-Ausgangs). Der sich nicht ändernde "Kommando-Teil" ist jetzt direkt im RS232-Ausgang eingegeben, gefolgt vom [az5]-Platzhalter. Eine Aktion sendet über den RS232-Ausgang eine globale Variable (Nr. 1, im Bild Wert =1080). Der Handregler gibt die Spannung vor, das Skalierungsmodul wandelt den Bereich 0-10 zu 0-20000. Das Ergebnis wird in die Variable 1 geschrieben. Vorteil dieser Lösung: Führende Nullen. Nachteil: Die Nachricht G05 i05 f9 aXXXXX an das Gerät kann nur einen variablen Teil haben (aXXXXX). Falls einer der anderen Werte auch variabel sein muss, funktioniert dieses Konzept nicht mehr. Wenn mehrere variable Teil in der zu sendenden Nachricht sind -- UND führende Nullen notwendig sind --, müsste man das Skriptmodul bemühen, um sich die zu sendende Nachricht geeignet zu programmieren. RS232_String_FührendeNullen.DSB
×
×
  • Create New...