Jump to content

Anzeige:
Nächste DASYLab-Schulungstermine bei measX:
Messwerterfassung mit DASYLab – Grundlagen 28.01. + 29.01.2020 Mönchengladbach
DASYLab und Python 04.02. + 05.02.2020 Mönchengladbach


HolWo

Administratoren
  • Content Count

    298
  • Joined

  • Last visited

  • Days Won

    5

HolWo last won the day on July 31

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! 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
  2. 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).
  3. 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.
  4. 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?)
  5. 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.
  6. 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.
  7. 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
  8. 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
  9. 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
  10. Vermutlich müssen Sie zuerst das Gerät passend konfigurieren, sodass es eine Verbindung über Ethernet akzeptiert, und dann im DASYLab-ICOM-Modul die IP-Adresse entsprechend einstellen. https://web-material3.yokogawa.com/IMMW100-01E.pdf https://web-material3.yokogawa.com/IMMW100-71E.pdf
  11. Hallo! Das Schaltbild soll zeigen, wie man "zusammengesetzte" Kommandos an ein Gerät versendet. Im Ausgangsmodul "RS232 Aus00" sehen Sie den Formatstring \x02[a]\x03\r. Im Aktionsmodul "Aktion00" ist definiert, dass beim Auslösen der Aktion (Eingangswert hat sich geändert), über den RS232-Ausgang der globale DASYLab-String Nr. 1 gesendet wird. Das [a] im Formatstring des Ausgangsmoduls ist der Platzhalter, der durch den zu sendenden Text ersetzt wird. Die "Dekoration" rund um das [a], also das Symbol \x02, \x03 und das \r werden immer mitgesendet. Im Infofenster sehen Sie den Inhalt d4200 des Strings 1 (Name: DUTYCYCLE_STR). Wenn die Aktion also ausgelöst wird, wird der Text \x02d4200\x03\r an das Gerät geschickt. Wenn Sie rechts in DASYLabs Symbolleiste auf den grünen "Ball" mit der 2 klicken, finden Sie die Liste der globalen DASYLab-Strings. Doppelklick auf den String 1: hier sehen Sie, dass der Inhalt des Strings 1 berechnet ist. Der String besteht aus dem festen Teil d und dem Teil, welcher wiederum vom aktuellen Wert der globalen Variable DUTYCYCLE (Variable 1) abhängt. Das d ist bei "meinem" Gerät das Kommando für das Setzen des Duty Cycles auf 42% (übertragen als 4200). In dem anderen Aktionsmodul "Aktion01" sehen Sie, dass ein anderer String über dasselbe Modul geschickt wird. In diesem String (Nr. 2, Name ist FRQ_STR) wird ein anderes Kommando berechnet, das dann aus einem f und einer Zahl besteht. f steht bei "meinem" Gerät für das Kommando "Frequency", die Zahl ist die Prozentzahl (1000 = 100%). Das alles sind aber Kommandos, die nur für "mein" Gerät geeignet sind, weil "mein" Gerät etwas mit den Kommandos d und f anfangen kann. Zudem möchte "mein" Gerät, dass alle Kommandos explizit mit den Symbolen <STX> und <ETX> anfangen bzw. enden (STX = Start of Text, ETX = End of Text). Die Schreibweise in DASYLab für diese beiden Symbole ist \x02 (STX) bzw. \x03 (ETX) -- siehe ASCII-Tabelle (links oben bei hex 02 bzw. 03). Ausserdem verlangt mein Gerät, dass Nachrichten mit einem Carriage return-Symbol abgeschlossen werden: DASYLab nutzt hier auch die häufig anzutreffende Kurzschreibeweise \r für das CR-Symbol (siehe ASCII-Tabelle, hex 0D, <CR>). Das kann bei Ihrem Gerät natürlich ganz anders sein. D.h. nun, dass Sie für Ihre Anwendung den Formatstring G05 i05 f9 a15000 ersteinmal in den RS232-Ausgang schreiben. Anstelle der fest vorgegebenen 15000 schreiben Sie den Platzhalter [a]. Erstellen Sie ein Aktionsmodul, ein "Variable schreiben"-Modul, schließen Sie einen Handregler an. Der Wert des Handreglers wird in die Variable geschrieben und an das Aktionsmodul weitergegeben. Die Konfiguration des Aktionsmoduls können Sie 1:1 meinem Demoschaltbild entnehmen. Die Berechnung des Strings... müssen Sie entwas abwandeln, weil bei dem Demoschaltbild noch das "d" bzw. "f" Teil des zu versendenen Strings ist, was bei Ihrer Anwendung ja entfällt (nur die 15000 wurde ja gegen den Platzhalter [a] ersetzt, das a in Ihrem Kommando steht fest im RS232-Ausgang.) Bei weiteren Fragen...fragen!
  12. Hallo! Ich habe ein Beispielschaltbild (ab DASYLab 13) angehängt: im Beispiel wird einem Gerät via RS232 mitgeteilt wie Frequenzen und Abtastabstände (Duty cycle) zu setzen sind. Dabei werden Kommandos bestehend aus festen Bestandteilen und Variablen/Strings verschickt. Bitte einfach mal ansehen und bei Bedarf nochmal nachfragen. rs232_messedemo.DSB
  13. Hallo! Sie können probieren, mit dem ICOM-Modul Daten anzufordern. Das Modul ist vergleichbar mit dem RS232-Modul, nur dass es über eine Netzwerkverbindung (TCP/IP) mit Geräten kommunizieren kann. Es gibt auch einen "ICOM-Monitor" mit dem Sie testweise Kommandos zum Gerät senden können, und sehen können, was es antwortet. Die Kommandos des Yokogawa-MW100 können Sie der ANleitung entnehmen: https://web-material3.yokogawa.com/IMMW100-17E.pdf
  14. In diesem Bild (siehe unten) haben Sie kein Gerät angegeben, sondern nur "S1" gesendet. Vmtl. antwortet dann nur das erste Gerät. Schreiben Sie im Kanal0 "G00 S1\r" und verarbeiten Sie, wie auf dem Bild zu sehen, die erhaltenen Daten. Erstellen Sie einen fünften Kanal und schreiben Sie dort als Datenanforderung "G01 S1\r" und verarbeiten Sie in den weiteren Kanälen die Antworten des zweiten Geräts. Die Start- und Stoppkommandos müssen Sie vmtl. auch noch gerätespezifisch angeben ("G00 X\rG01 X\r"), evtl. können SIe diese auch weglassen, da Sie ja in den Kanälen zyklisch die Datenanfrage durchführen. Die Start/Stopp-Kommandos kann man bei anderen Geräten u.a. dazu verwenden, einmal einen Datenanforderung auszulösen, sodass das Gerät dann selbstständig kontinuierlich Daten sendet.
  15. Was passiert denn, wenn Sie nicht nur "S1" senden, sondern zusätzlich auch "G00" bzw. "G01" -- also bspw. "G00S1\r" oder "G00\rS1\r"? Dies können Sie auch im RS232-Monitor ausprobieren -- im oberen Bereich können Sie Befehle eintragen und absenden, ähnlich zum HyperTerminal, und im unteren Bereich die Antworten ablesen.
×
×
  • Create New...