Jump to content

Kaschi

Mitglieder
  • Posts

    18
  • Joined

  • Last visited

  1. Hallo, Ich habe ein ähnliches Problem. Ich möchte es jedoch genau umgekehrt. Also eine HEX-Zahl (bzw. Kombination in eine Dezimalzahl wandeln) Folgendes wird mir permanent ohne Befehlsstring im HEX-Format vom Gerät ausgegeben. 1. 31 = Kontollbit 2. 01 = Anzahl der Parameter (Je nach Geräteeinstellung.. Momentan auf 01) 3. 67 = Messwert 1 4. 34 = Messwert 2 5. 01 = Kontrollbit 6. 01 = Kontrollbit Die HEX-Folge lautet also 31 01 67 34 01 01. Diese Folge wird permanent vom Gerät gesendet, nur dass sich die Hex-Werte unter 3. und 4. ändern. Darin stecken meine Werte die ich auslesen und verarbeiten möchte. Dies soll laut Hersteller folgendermaßen durchgeführt werden. Die Hexwerte 67 und 34 werden aneinandergefügt. Jedoch in umgekehrter Reihenfolge. Also 3467. Danach soll diese HEX-Kombi ins Dezimalsystem überführt werden. Ergibt 13415. Mit einer Formel wird dieser Dezimalwert dann auf ein Ergebnis gerechnet. Leider weiss ich jetzt nicht wie ich dort vorgehen soll. Ich habe mein Format-String mal folgenderweise definiert: 2x2ah2x. Damit funktioniert das Parsing schon mal (siehe Anhang), jedoch weiss ich jetzt nicht wie ich am Ausgang der COM-Schnittstelle erst den hinteren Wert (also 34) und dann den vorderen Wert (also 67) aneinanderfügen und ins Deziamlsystem überführen kann. Dann habe ich es noch mit zwei Kanälen versucht. Dazu habe ich als Formatstring im ersten Kanal 2x1ah verwendet und im zweiten Kanal 1ah. Leider funktioniert damit das parsing nicht (siehe Bild Ausgabe 2). Ich weiss nicht wie ich Dasylab dort sagen kann das es bei den beiden Kontrollbitts am ende aufhalten soll. Also bei 01 01 aufhalten und hinter 31 01 wieder anfangen. Kann mir da jemand weiterhelfen? Grüße Kaschi
  2. Hallo, Ok. Schade. Trotzdem danke für die Antwort. Ich werde es dann mit Ihrer Methode mal aufbauen. Grüße
  3. Hallo, Nur eine kurze Frage. Gibt es eine Möglichkeit in Dasylab relativ einfach Terzen oder Oktaven in einem X/y oder y/t Diagramm als Balken darzustellen? Ich lese die einzelnen Pegelwerte der Mittenfrequenzen über eine RS232 Verbindung aus. Die Pegelwerte liegen also in einem Kanal hintereinander. Als Beispiel: T1,(23);T2,(25);T3,(28);T4,(26) usw.. Diese einzelnen Terzlinien sollen nun in einem Balkendiagramm mit deren Mittenfrequenzen dargestellt werden. (Siehe Bild im Anhang --> rote Linien). Über eine Antwort würde ich mich freuen. Gruß
  4. Hallo, Danke für die schnelle Hilfe. Das hat mir sehr weitergeholfen. Zwar zeigten die Digitalmessinstrumente zuerst auch weiterhin mit der von Ihnen genannten Methode nichts an, jedoch habe ich es nun heraus gefunden. Das Problem war, das mein COM-Eingang mit 12 Eingängen belegt ist, die nicht alle denselben ASCII-String zurückgeben. Ich hatte für diesen einen speziellen Fall (siehe Anfrage von Mittwoch 31.08.2016) nun die von Ihnen genannte Zeichensuche ausprobiert. Es wurde weiterhin nichts angezeigt. Eine Erweiterung führte jedoch zum Erfolg. Als Beispiel: Kanal 1: Anforderungsstring: #2,1,S; --> Zurückgegebener Wert ist: #2,1,S41,5; Angewendeter Formatstring: "#2,1,S"a\x3B (funktioniert ergibt 41,5) Kanal 2: Anforderungsstring: #2,1,R; --> Zurückgegebener Wert ist: #2,1,R50,3; Angewendeter Formatstring: "#2,1,R"a\x3B (funktioniert ergibt 50,3) Kanal 3: ... usw Kanal 4 Anforderungsstring: #2,1,L(95); --> Zurückgegebener Wert ist: #2,1,L(95)36.1,L(95)35.2,L(95)33.4 Angewendeter Formatstring: "#2,1,L(95)"a\x2c (funktioniert ergibt 36,1,) --> Das eigenartige daran ist, dass der Wert mir nun im Schalbild angezeigt wird, obwohl der Formatstring noch ein Komma hinter der 36,1 erkennt. Also 36,1, (Zumindestens im Monitor) Das kann ich mir noch nicht wirklich erklären, da ich ja beim Komma (Hex 2c) im Formatstring "abbreche" und die restliche Zeichenkette L(95)35.2,L(95)33.4 überspringe. Nun denn.. Man muss nicht alles verstehen :-) Es klappt ja. Danke nochmal für die schnelle Hilfe!! Echt super! Gruß Kaschi
  5. Hallo, Danke für die schnelle Antwort. Es hat sich vermutlich tatsächlich ein Fehler in einer der Formatstrings eingeschlichen. (warum auch immer). Ich habe jedoch nun ein Problem die richtigen terminatoren dafür festzulegen. Ich gebe folgende Datenanforderung heraus. #2,1,L95; Im Monitor bekomme ich als Rückgabewert nun folgendes angezeigt: #2,1,L(95)36.1,L(95)36.1,L(95)36.1 Aus ihrer Antwort vom 24.11.2015 habe ich folgendes Messdatenformat abgeleitet: 10xa\x2c --> Überspringe bzw. lösche mir die ersten 10 Werte --> erkenne mir die nachfolgenden Werte als ASCII --> Aufhalten wenn Komma erkannt (Hexadezimal 2c) Was mich jetzt irretiert ist, dass das Komma wie oben dargestellt noch mit "rot" erkannt wird. Eigentlich hätte ich erwartet, dass ich nun nur die 36,1 zurückgegeben bekomme. Warum ist das so? Drücke ich erneut auf die Datenanforderung, kommt folgendes heraus: 2. #2,1,L(95)36.1,L(95)36.1,L(95)36.1#2,1,L(95)35.1,L(95)35.1,L(95)35.1 Ich möchte jedoch immer nur pro Anforderung die erste Fließkommazahl zurückgegeben bekommen. Also folgendes: #2,1,L(95)36.1,L(95)36.1,L(95)36.1#2,1,L(95)35.1,L(95)35.1,L(95)35.1 Was mache ich da falsch? Normalerweise müsste mir mein Messdatenformat doch die Werte ,L(95)36.1,L(95)36.1 nach der ersten Anforderung nicht mehr mit berücksichtigen.. Eigenartig ist auch, dass mir der Wert bei der ersten Anforderung (also 36,1) trotz des dargestellten Kommas trotzdem im Digitalinstrument als Wert angezeigt wird?! Es wäre nett wenn man mir hier nochmal weiterhelfen könnte. Gruß Kaschi
  6. Hallo, Ich habe ein kleines merkwürdiges Problem mit RS232 Daten. Seit ein paar Monaten nutze ich eine kabelgebundene Strecke mit einer TTY-Wandlung um einen Analysator auf große Distanz auszulesen. Das hat auch immer einwandfrei funktioniert. Nun habe ich anstatt eines TTY eine Funkstrecke verwendet. (Auch über RS232). Die Datenanforderung aus Dasylab heraus ist alles gleich geblieben da sich das Endgerät ja nicht geändert hat. RX/TX-Signale etc. ist eins zu eins ersetzt wurden. Wenn ich nun über den Dasylab-Monitor die Anforderungs-Strings manuell sende, bekomme ich auch wie gewohnt die Daten die ich auslesen möchte richtig und aktualisiert angezeigt ( z.B. #2,1,S30,0, wie ich es schon über das kabelgebundene System kannte. Leider werden mir jetzt merkwürdigerweise die Werte nicht mehr in meiner Benutzeroberfläche angezeigt wie z.b. in einem Digitalinstrument. Ich verstehe jetzt aber ehrlich gesagt nicht wieso das nicht mehr funktioniert? Ich habe bereits in Dasylab auch die Datenanforderung auf "wiederholen" gesetzt und "erneut verbinden" versucht. Das hilft aber alles nichts. Die Befehle werden nur gesendet/empfangen wenn ich den Monitor benutze. Kann mir da jemand zufällig weiterhelfen, sodass ich die Werte auch wieder auf meiner Benutzeroberfläche sehen kann?
  7. Hallo und danke für ihre Antwort. Ich glaube ich habe das Problem gefunden. Ich habe den Abtastabstand nun einmal auf 0,66 sek. gesetzt. Ich habe irgendwo in einer Beschreibung gelesen, dass die Zeit ein vielfaches von 55ms und nicht kleiner 0,5 sek. sein soll. Eine Testmessung ergab nun, dass sie nach 20 Std. noch immer lief. Danach habe ich abgebrochen. Ich weiss nicht ob das nun Zufall war, aber ich kann wieder darüber berichten wenn es nicht mit dieser Konfiguration läuft. Danke und Gruß Kaschi
  8. Hallo, Ich nutze Dasylab 13 zur Datenerfassung mit einer analogen Messkarte und zusätzlich ein RS232 Eingang. Nun habe ich leider das Problem, dass die Daten der RS232-Schnittstelle nach einer bestimmten Zeit (ist immer dieselbe von ca. 265 min) einfrieren. Die Signale der analogen Messkarte werden weiterhin ordnungsgemäß erfasst und aktualisieren sich auch weiterhin. Ich habe das Gefühl, dass irgendein interner Puffer der RS232-Schnittstelle in Dasylab vollgeschrieben wird. Ich lasse die Werte der RS232 Schnittstelle mit folgender Konfi ausgeben: Datenanforderung: aktiv Abtastabstand: 0,5 sek. Anforderung wiederholen: nein Verbindung wiederherstellen: nein Datenausgabe: Messwerte von allen Kanälen ausgeben Schnittstelle: COM 1/115200 Baud/ 8 Datenbits/Stoppbits 1/Parität: Keine/Handshake R1/D1/Eingangspuffer 4 KByte Ich wäre für jede Hilfe dankbar. Gruß Kaschi
  9. Hallo, Hat jemand eine Idee zu meinem vorherigen Beitrag mit dem Datums-Zeit Problem? Ich komme dort leider nicht weiter. Grüße Kaschi
  10. Hallo, Problem hat sich erledigt. Es hatte nichts mit den Datenanforderungen zu tun, sondern mit der Datenausgabe. Ich musste lediglich die Datenausgabe auf "Messwerte von allen Kanälen ausgeben" ändern und die "Anforderung wiederholen" sowie die "Verbindung wiederherstellen" in den Optionen des RS232-Moduls auf Nein setzen. Jetzt scheint es zu funktionieren. Ich nehme an, dass die RS232 Verbindung zu langsam ist und durch die erneute Anforderung der Daten irgendetwas unsynchron lief. Aber noch ein kleines Problem mit dem Messdaten-Format habe ich dennoch. Ich möchte mir gerne die Uhrzeit von meinem Gerät bei jeder Anfrage ausgeben lassen. Dieses erreiche ich mit der Anforderung #7,RT; Der zurückgegebene Wert kommt dann im folgenden Format: #7,RT,hh,mm,ss,DD,MM,YYYY; also als Beispiel: #7,RT,20,45,10,22,12,2015: Ich möchte mir jetzt jedoch nur die Uhrzeit ohne Datum anzeigen lassen. Leider bekomme ich das entsprechende Messdatenformat nicht so hin gebastelt, dass es mir in einem Digitalinstrument oder in einer Textbox angezeigt wird. Hat da jemand eine Idee? Gruß Kaschi
  11. Hallo nochmal.. Ich habe mal wieder ein kleines Problem. Folgendes.. Ich habe inzwischen mehrere Befehle in das COM-Modul von Dasylab eingegeben. Der erste (wie bereits aus meinen vorherigen Beiträgen) ist geblieben. #2,1,S; --> Mit dem Messdatenformat 6xa\x3b bekomme ich auch die Float-Werte zurückgegeben. z.B. #2,1,S30,0; Jetzt habe ich zwei weitere Kanäle eingefügt. Die Messdatenanforderung unterscheidet sich nicht wesentlich. Nr. 2 ist: #2,2,S; und Nr. 3 ist: #2,3,S; (Ich lese mit dieser Messdatenanforderung lediglich andere Profile aus meinem Gerät aus wo andere Werte enthalten sind). Ich verwende dazu dasselbe Messdaten-Format wie oben. Also 6xa\x3b und lasse sie mir jeweils an einem Digitalinstrument anzeigen. Funktioniert auch soweit. Leider habe ich nun festgestellt, dass wenn ich die Messung zwischendurch am externen Messgerät stoppe und danach wieder aktiviere, dass Dasylab dann die Werte verschiebt. D.h. Ich möchte Wert Nr. 1 auch am Digitalinstrument 1 angezeigt bekommen, Nr. 2 an Digitalinstrument 2, und Nr. 3 auch am Digitalinstrument 3. Nach dem Neustart stehen nun (manchmal) Die Werte aus Nr. 1 am Digitalinstrument 2, Nr. 2 am Instrument 1 usw. Nach einem weiteren start bleibt es manchmal so, oder sie werden wieder in der richtigen Reihenfolge dargestellt. Dasylab bleibt dabei permanent im Run-Modus. Also Messung ist nicht gestoppt. Gibt es eine Möglichkeit, diesen Fehler zu unterbinden? Also das die Reihenfolge immer richtig eingehalten wird? Ich dachte evtl. daran, dass man das Messdatenformat anpasst. Also das man nach einer fixen String-Reihe sucht und nicht zu Anfang die Werte mit X überspringt. Bestände die Möglichkeit nach #2,1,S bzw. #2,2,S oder #2,3,S zu suchen danach alles was vorher Stand zu löschen? Ich habe das Gefühl, dass sich in Dasylab irgendwo in einem Puffer noch Werte befinden, die nach dem Start des externen Gerätes noch irgendwie dazwischen mogeln bzw. das Dasylab nach dem starten des Geräts mit Kanal 2 oder 3 weiter macht und nicht mit Kanal 1 als Ausgangspunkt. Leider habe ich für das externe Gerät auch keinen Reset-Befehl zur Verfügung um einen eindeutigen Zustand herzustellen. Ich würde mich über eine Antwort freuen. Grüß Kaschi
  12. Hallo, Super! Hat funktioniert. Danke nochmal für die schnelle Rückmeldung! Grüße Kaschi
  13. Der genue Fehler lautet: [2015-11-24 11:32:34] RS Master : Fehlerhafte Definition des Datentyps im Format-String. Kanal Nr.: 0
  14. Hallo nochmal, Wie es scheint habe ich mich zu früh gefreut. Nochmal zu meiner Frage am Anfang zurück. Ich habe in Dasylab 13 den Befehlsstring aus meiner ersten Frage gesendet. Jedoch habe ich damals als Messdatenformat nicht 6XA1X sondern 6X4A1X eingegeben. Mit letzterem funktioniert alles auch einwandfrei und ich bekomme die entsprechende Fließkommazahl zurückgegeben und wird auch angezeigt. Ich habe nun in der Dasylabhilfe gesehen, dass man den Befehl 6XA1X verwenden kann, um einen entsprechenden Wert (in meinem Falle eine Fließkommazahl) von unbestimmter Länge auszulesen. (Also wenn die Länge des auszulesenden Wertes vorher nicht bekannt ist. Das ist bei mir gerde der Fall. Leider tritt bei Dasylab immer ein Fehler auf, dass das Messdatenformat falsch sei! In der Hilfe ist es so aber eindeutig beschrieben. Immer wenn ich Werte vor dem A setze, also z.B 6X1A1X oder 6X2A1X, funktioniert alles. Lasse ich das A allein stehen erscheint der Fehler und der Monitor erkennt das meine Fließkommawerte nicht mehr. Ich befürchte es ist ein Bug in Dasylab 13. Kann das sein? Ich würde mich über eine Antwort freuen. Grüße Kaschi
  15. Hallo, Super. Gefunden und funktioniert. Das war es was ich gesucht habe. Ich muss sagen, ein super Forum! Man bekommt immer schnell Antworten. Ich hoffe ich kann dem einen oder anderen irgendwann auch mal weiterhelfen. ;-) Danke und Gruß Kaschi
×
×
  • Create New...