Jump to content

HolWo

Administratoren
  • Content Count

    315
  • Joined

  • Last visited

  • Days Won

    5

Everything posted by HolWo

  1. Hallo! Leider funktioniert dies nicht per Kanal, sondern nur pro Property, welche es jeweils einmal gibt, aber mit bis zu 16 zugewiesenen Werten (einer Wert pro Kanal).
  2. Hallo! Können Sie bitte konkrete Zahlen-Beispiele nennen?
  3. Hallo! Ja, DASYLab bietet nur das "einkanalige" Regressionsmodul an. Es besteht aber die Möglichkeit, mit dem Skriptmodul (ab DASYLab 13) ein eigenes, kleines Modul zu erstellen, um Funktionalität, die im Standardvorrat der Module nicht vorhanden ist, hinzuzufügen. Das Verhalten des eigenen (Skrip)Moduls kann mit der Skriptsprache Python programmiert werden. Python wiederum kann erweitert werden, z.B. mit der numpy-Bibliothek. Und numpy bietet eine Funktion polyfit an, welche die "zweikanalige" Regression mit einem wählbaren Grad für das Polynom bestimmen kann (s. Link) https://numpy.org/doc/stable/reference/generated/numpy.polyfit.html Um das in DASYLab interegrierte die Python um die numpy-Bibiothek zu erweitern, können Sie entweder die Dateien im Anhang dieses Beitrags nutzen oder den Python-"Paketmanager" PIP verwenden. Manuell: Die beiden Verzeichnisse im ZIP-Archiv in das folgende Verzeichnis kopieren: C:\Program Files (x86)\DASYLab 2020\python\Lib\site-packages Fertig. PIP: Hierzu müssen Sie zuerst eine Kommandozeile öffnen mit Administrator-Privilegien und dann in das folgende Verzeichnis wechseln: C:\Program Files (x86)\DASYLab 2020\python Hier bitte folgendes eingeben und bestätigen: python.exe -m pip install numpy==1.11.0 Dies installiert die numpy-Version 1.11.0 in das Python, das ins DASYLab 2020 integriert ist. Um zu prüfen, ob die numpy-Erweiterung erfolgreich eingebunden worden ist, können Sie das Testschaltbild (DASYLab 2020) im Anhang verwenden. Hier werden zwei fest vorgegebene Zahlenreihen (X, Y) der polyfit-Funktion übergeben (Polynom 3. Grades), siehe Screenshot im Anhang. Das Skript muss noch entsprechend angepasst werden, um die Daten über zwei Moduleingänge entgegenzunehmen, diese in die Funktion einzusetzen und das Ergebnis wieder auf einem Ausgang auszugeben. Dies stellt (natürlich) die Hauptarbeit dar, das Skriptmodul entsprechend zu programmieren, um die Daten von DASYLab an die Funktion zu übergeben (und wieder zurück). Wenn Sie dies selber machen möchten, stehe ich natürlich für die Beantwortung konkreter Fragen im Umgang mit dem Skriptmodul zur Verfügung. Alternativ können Sie dies natürlich auch bei uns (measX GmbH&Co. KG) in Auftrag geben. numpy_1.11.0.zip numpy_polyfit.DSB
  4. Hallo, dies befindet sich schon in der Entwicklung...
  5. Hallo! Ich konnte leider keine Fehlermeldung auslösen, wenn ich bei laufendem Schaltbild die änderbaren Einstellungen manipuliert habe. Alles, was sich ändern lässt, habe ich in den drei Kanälen umgeschaltet (Checkboxen) oder um 1 inkrementiert bzw. dekrementiert. Dann mit Ok bestätigt. Aber auch nach dem 11. Änderungsmarathon war kein MemoryError ausgelöst worden. Im Skript ist in der ProcessData aber alles in eine Ausnahmebehandlung eingeschlossen (try-catch), sodass man nicht feststellen kann, wo genau diese Exception ausgelöst wird. Lassen Sie diese entweder weg, um dann, wenn es zur Ausnahme kommt, ablesen zu können, in welcher Zeile der Fehler aufgetreten ist oder verwenden Sie Pythons 'traceback' Modul/Bibliothek. import traceback try: x = 1/0 except ZeroDivisionError: print(traceback.format_exc()) --------------------------------------------------------------- Traceback (most recent call last): File "C:\Users\holgerwo\Desktop\test.py", line 4, in <module> x=1/0 ZeroDivisionError: integer division or modulo by zero Außerdem ist die "eingebettete Funktion" bitfield ungünstig platziert, da bei jedem Aufruf der ProcessData, noch vor der Prüfung, ob überhaupt Blöcke an den Eingängen sind, ein Funktionsobjekt erstellt werden muss. Da die ProcessData hunderte/tausende Male pro Sekunde aufgerufen wird, kommt möglicherweise die GarbageCollection von Python nicht nach und irgendwann ist nicht mehr genug Speicher da. Die "nested functions" in DlgOk hingegen (varInRange, etc.), werden nur bei Bedarf/einmalig genutzt, sodass es hier problemlos ist. Probieren Sie daher bitte, 'bitfield' außerhalb der pscript-Klasse zu implementieren und übergeben Sie notwendige Werte als Parameter, z.B. bitfield(self.pvar).
  6. Hallo! Zu 1: Können Sie das betreffende Schaltbild und das Skript bitte zur Verfügung stellen? Zu 2: Im Anhang finden Sie dazu ein Beispiel-Schaltbild/Skript. Bei Fragen dazu, bitte fragen. DASYLab Storage Beispiel.zip
  7. Hello! I am sorry, but you cannot do that. The first DASYLab will open/use the serial port, so a second DASYLab will find the same serial port reserved. But you cannot run two DASYLabs simultaneously.
  8. Hallo! Das wird nicht funktionieren, da die serielle Schnittstelle kein Bus ist, sondern quasi eine Punkt-zu-Punkt-Verbindung. Hier müssten Sie mit den Adam-Geräten und den ICPCon-Geräte jeweils über separate serielle Schnittstellen kommunizieren. Die jeweiligen Treiber (Adam, Icpcon) verwalten "ihre" Geräte über eine ID oder Adresse, sodass Treiber intern Anfragen und Anworten an/von unterschiedlichen Geräten desselben Herstellers durchaus über dieselbe Schnittstelle erfolgen können. Damit der Treiber aber entscheiden kann, welches Gerät nun eine Antwort gesendet hat, muss der Treiber die serielle Schnittstelle überwachen und die eintreffenden Daten aus dem Empfangspuffer "weglesen". Diese sind dann nicht mehr im Puffer der Schnittstelle. Wenn die Daten aber nun nicht für diesen Treiber (zB Adam) gedacht wären, sondern für irgendeinen anderen Treiber (kann nicht passieren), dann kann dieser die Daten nicht einfach wieder zurücklegen, sodass "der andere" sein Glück versuchen kann. Bei einer seriellen Kommunikation reserviert ein Treiber/Anwendung die Schnittstelle, damit es zu solcher "Mehrfachnutzung" durch unterschiedliche Teilnehmer nicht kommen kann. Eine Möglichkeit wäre, dass Sie z.B. einen USB-Adapter einsetzen, um eine weitere serielle Schnittstelle am Rechner anzubieten, sodass entweder die Adam- oder die Icpcon-Gerät darüber erreichbar sind.
  9. DASYLab für die Hochschule Virtuelles Fachseminar zur Nachrichtentechnik setzt auf die „Easy-to-use“-Software Die Software DASYLab unterstützt Dozenten, Studierende und Schüler bei virtuellen Lehrveranstaltungen zur Nachrichtentechnik. Sie ist wesentlicher Bestandteil des Lernsystems „Signale - Prozesse - Systeme: Eine multimediale und interaktive Einführung in die Signalverarbeitung“ von Ulrich Karrenberg (Verlag Springer Vieweg). Das Programm steht hierfür in der Studienversion DASYLab S kostenlos zur Verfügung. Das Buch im Springer Vieweg Verlag: https://www.springer.com/de/book/9783662526583 Das interaktive, multimediale Lernsystem „Signale - Prozesse - Systeme“ versteht sich als virtuelles Fachseminar für die technisch-naturwissenschaftliche Aus- und Weiterbildung. Das didaktische Konzept zielt darauf ab, die Grundlagen der digitalen Signalverarbeitung direkt am PC anschaulich und nachvollziehbar zu vermitteln, sodass auch beim selbstforschenden Lernen der Lernerfolg gesichert ist. Zur Visualisierung von Signalen und Prozessen sowie für die grafische Programmierung signaltechnischer Systeme nutzt das Lernsystem die international etablierte Messtechnik-Software DASYLab. Als „Easy-to-use“-Software mit einem intuitiven, grafisch-interaktiven Bedienkonzept ist das Programm auch als Lernsoftware hervorragend geeignet und wird seit langem erfolgreich in der Hochschulausbildung eingesetzt. Das mit dem Deutschen Bildungsmedien-Preis (digita 2003) ausgezeichnete multimediale Lernsystem bietet Lehrenden vielfältiges Bildmaterial, interaktive Simulationen und anschauliche Visualisierungen signaltechnischer Prozesse zur Einbindung in Vorlesungen und andere Lehrveranstaltungen. Studierende können sich selbst komplexe signaltechnische Prozesse mit Hilfe der DASYLab-Software experimentell erschließen. Die aktuelle, 7. Auflage enthält rund 300 Beispiele in Form vorprogrammierter Anwendungen für DASYLab S. „DASYLab stellt ein nahezu vollständiges Experimentallabor mit allen erforderlichen Modulen und Messgeräten zur Verfügung. Die Software ist leicht zu bedienen und bietet alle Möglichkeiten, eigene Systeme zu entwickeln und immer wieder zu modifizieren“, sagt Autor Ulrich Karrenberg, Didaktiker und Ingenieur für Nachrichtentechnik. Das bei Springer Vieweg verlegte Lernsystem steht in deutscher Sprache als Buch mit DVD sowie als eBook und in der 3. Auflage auch in englischer Sprache als Buch mit DVD zur Verfügung. Weitere Informationen und ein kostenloser Download für Hochschulen und andere Bildungseinrichtungen sind auf der Website https://www.asat.de zu finden. Für Datenerfassung und Datenausgabe verwendet das Lernsystem die interne Soundkarte, es können aber auch USB-Audiogeräte genutzt werden. Weitere Treiber zur Messdatenerfassung enthalten die Industrieversionen von DASYLab, für die es günstige Hochschulangebote gibt. Support und Vertrieb liegen bei der measX GmbH & Co. KG aus Mönchengladbach. Quelle: https://www.measx.com/de/aktuelles/news/726-dasylab-fuer-die-hochschule.html
  10. HolWo

    E-Mail

    Hallo! Das Email-Modul beherrscht kein (START)TLS, und kann derzeit nur ohne Authentifizierung (unverschlüsselt) verwendet werden: z.B. wenn der Prüfstandrechner direkt über den unternehmenseigenen Mail-Server verwendet wird, authentifiziert sich der Benutzer bereits durch das Anmelden am Windows-Rechner.
  11. Danke für den Hinweis. Demnächst kann das nicht mehr passieren...
  12. 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/
  13. 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).
  14. 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).
  15. 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.
  16. 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 "").
  17. 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.
  18. 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
  19. 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).
  20. 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.
  21. 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?)
  22. 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.
  23. 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.
  24. 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
  25. 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
×
×
  • Create New...