Jump to content
Anzeige:
nächste DASYLab Schulungstermine bei measX
DASYLab und Python 17.10. + 18.10.2017 Mönchengladbach
DASYLab und Python 14.11. + 15.11.2017 Ludwigsburg
Melde dich an, um diesem Inhalt zu folgen  
Bösewill

Dasylab - S-AGM Gasmitter

Empfohlene Beiträge

Hallo,

Als neuer User hier bitte ich um Hilfe:

Ich benutze Dasylab unter Windows 10 und möchte 3 S-AGM Gasmitter anbinden.

Leider scheitere ich schon dabei, die Verbindung herzustellen:

Wnn ich die RS232 Schnittstell ins Dasylab ziehe und den Monitor verwende, den (meiner Meinung nach richtigen String) sende, wird nur kurz der Satus (Warte auf Daten) verändert (aber so kurz, dass man es nicht erkennen kann). Mehr passiert nicht.

Kann mir jemand den richtigen Anforderungsstrin mitteilen?

Kann man den Monitor so einstellen, dass man die Änderung des Status sehen kann?

 

Über die S-AGM Software bekomme ich Daten geliefert.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo,

das richtige Kommando für die Anforderung von Daten hängt vom konkreten Gerät ab.

Meistens müssen die Kommandos mit einem Terminator abgeschlossen werden, damit die "Gegenseite" weiss, dass jetzt keine weiteren Zeichen mehr zu erwarten sind.
So ein Abschlusszeichen kann ein "Carriage Return"- oder ein "Line Feed"-Symbol (oder beides oder ein ganz anderes Symbol) sein.

Probieren Sie daher einmal aus, was passiert, wenn Sie das Kommando im RS232-Monitor mit einem \r oder einem \n abschließen bevor die Anforderung gesendet wird.
Beispielweise: "*IDN?\r"   (ohne die "")

Welches Zeichen genutzt werden sollte, müsste in der Beschreibung der Kommandos des Geräts zu finden sein.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Vielen Dank für die Antwort und den Tip,

leider war das nicht die Lösung.

Ich habe mal das das Protokoll angehängt.

Jegliche Sendung an das Gerät mit DasyLab bekommt für den Bruchteil einer Sekunde den Status "Zeichenkette gesendet" im Monitor (habe ich gefilmt und langsam ablaufen lassen), ich bekomme aber keine Antwort.

S-AGM Plus Protocol_V.2.2_Eng.pdf

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Jetzt habe ich das Projekt weitgehend unter Kontrolle, 3 RS232 Eingänge, einer davon mit2 Kanälen, deren Ergebnis ich umrechne und dann in einer Digitalanzeige ausgebe.

Die 4 Daten werden als Graph angezeigt.

Nur beim Schreiben in eine Excel-CSV habe ich folgendes Problem:

 

Wenn ich alle 4 Ergebnisse in getrennte Daten schreibe, klapp alles.

Wenn ich alle in eine Datei schreiben will, bekomme ich die Nachricht: Schreiben00: einer der Eingänge hat einen falschen Typ.

Wenn ich Kanal 1 und 2 des ersten Eingangs in eine Datei schreib, klappt es zu 75%, die Nachricht kommt aber gelegentlich nach einigen Messvorgängen und die Messung bricht ab.

Woran kann das liegen?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo!

In eine ASCII-Datei zu schreiben erfordert synchrone Datenströme an den Eingängen: gleiche Abtastrate, gleiche Blockgröße und ein gleicher Zeitstempel. Eine von DASYLab geschriebene ASCII-Datei ist im Prinzip eine Tabelle, eine Spalte ist der Zeitkanal, die folgenden Spalten sind die Datenkanäle.
Wenn an einem Eingang Daten vorhanden sind, dann müssen an den anderen Eingängen ebenfalls Daten vorhanden sein -- damit DASYLab eine Zeile in dieser Tabelle vollschreiben kann.

Die RS232-Module fordern Daten von einem Gerät an, das Gerät sendet eine Antwort. Die Module sind vmtl so konfiguriert, dass sie die Daten sofort nach dem Empfang an das Schaltbild ausgeben. D.h., die Module geben die Daten nicht gleichzeitig aus, sodass am Schreiben-Modul auch mal Daten angelangen, zu denen es an den anderen Eingängen keine zeitlich passenden Daten gibt. Die Tabellenzeile kann nciht vollgeschrieben werden!

In den Optionen der RS232-Module können Sie aber die Ausgabe der Daten an das Schaltbild von einer Zeitbasis abhängig machen. In allen Rs232-Modulen, die die Daten liefern, welche in die ASCII-Datei geschrieben werden soll, stellen Sie dieselbe Zeitbasis ein. Jetzt geben alle RS232-Module in festen Zeitabständen die Daten an das Schaltbild aus.

Hier kann es natürlich auch mal dazu kommen, dass derselbe Datenwert mehrfach aus einem Modul ausgegeben wird oder ein Wert verloren geht, da die Ausgabe aus dem Modul nun nicht mehr von der Ankunft der Geräteantwort abhängt.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Jetzt ist es mir inzwischen gelungen, den Kontakt über die Schnittstelle herzustellen und die richtigen Antworten zu bekommen.

Problem: Ich kriege nur Hex-Daten zurückgeliefert, die umgedreht werden müssen und dann Type-Konvertiert.

Sprich:

Ich bekomme geliefert:

10 02 00 9B 41 A5 9A E1 3C 00 00 C8 39 42 2A 77 7F 44 00 00 00 00 00 00 F2 16 42 10 03

Die farbig markierten sind meine benötigten Daten

A5 9A E1 3C muss ich umstellen zu 3CE19AA5, dies ergibt dann  0.02753956 (IEEE754 encoded floating point values)

Frage: Wie macht man das mit Dasylab?

Gibt es noch andere Möglichkeiten als evtl ein Scriptmodul?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

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

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Jetzt ist es mir inzwischen gelungen, den Kontakt über die Schnittstelle herzustellen und die richtigen Antworten zu bekommen.

Problem: Ich kriege nur Hex-Daten zurückgeliefert, die umgedreht werden müssen und dann Type-Konvertiert.

Sprich:

Ich bekomme geliefert:

10 02 00 9B 41 A5 9A E1 3C 00 00 C8 39 42 2A 77 7F 44 00 00 00 00 00 00 F2 16 42 10 03

Die farbig markierten sind meine benötigten Daten

A5 9A E1 3C muss ich umstellen zu 3CE19AA5, dies ergibt dann  0.02753956 (IEEE754 encoded floating point values)

Frage: Wie macht man das mit Dasylab?

Gibt es noch andere Möglichkeiten als evtl ein Scriptmodul?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
Melde dich an, um diesem Inhalt zu folgen  

×