11.01.2024, 20:30
Hallo Forum,
ich habe hier ein Messgerät mit RS485-Schnittstelle und einen dazugehörenden Konverter mit RS232.
Es gibt eine Hersteller-Software, die funktioniert, und mein LabVIEW-Programm, welches von dem Gerät keine Antwort bekommt.
Ich habe die Kommunikation mit einem Port-Monitor aufgezeichnet und verglichen, finde aber keine relevanten Unterschiede (mehr).
Es werden die IOCTL_SERIAL_SET_irgendwas mit den zugehörigen Bytes angezeigt, deren Bedeutung man bei microsoft findet.
Keine relevanten Unterschiede: z.B. XonLim, XoffLim, was nach meinem Verständnis nicht relevant ist.
Ablauf
Das Gerät gibt die gesendeten Bytes zur Kontrolle zurück.
Einstellungen: 9600, 8, 1, Space, kein Handshake, kein Parity-Replace
DTR wird gesetzt und bleibt es.
RTS wird gesetzt
Senden eines Adress-Bytes - Lesen des Adress-Bytes
Senden von 4 Bytes (vermutlich Empfänger-Adresse und Anzahl Bytes) - Lesen dieser 4 Bytes
Senden von zwei Bytes (wohl ein Kommando) - Lesen dieser 2 Bytes
Senden von 4 Bytes CRC - Lesen dieser 4 Bytes
RTS wird zurück gesetzt
Bei der Herstelle-Software sehe ich jetzt sofort die Antwort, bei meiner LabVIEW-Software kommt nichts.
Ursprünglich wurde das Parity-Bit verwendet, um das Adress-Byte zu kennzeichnen. Wie es wohl manchmal bei RS485 gemacht wird.
Laut Hersteller ist das aber deaktiviert und ich sehe auch in deren Kommunikation keine Änderung der Parity.
Sollten die gesendeten Bytes das Bit verwenden, müsste ich die Bytes ja trotzdem bekommen, da Parity-Replace deaktiviert ist.
Wo kann ich noch schauen? Was kann ich noch probieren?
Kennt jemand dieses Protokoll?
(Es erinnert ein bisschen an Modbus, aber dort habe ich weder das mit dem RTS, noch mit dem Kommando so gesehen...)
Viele Grüße
Nominas
ich habe hier ein Messgerät mit RS485-Schnittstelle und einen dazugehörenden Konverter mit RS232.
Es gibt eine Hersteller-Software, die funktioniert, und mein LabVIEW-Programm, welches von dem Gerät keine Antwort bekommt.
Ich habe die Kommunikation mit einem Port-Monitor aufgezeichnet und verglichen, finde aber keine relevanten Unterschiede (mehr).
Es werden die IOCTL_SERIAL_SET_irgendwas mit den zugehörigen Bytes angezeigt, deren Bedeutung man bei microsoft findet.
Keine relevanten Unterschiede: z.B. XonLim, XoffLim, was nach meinem Verständnis nicht relevant ist.
Ablauf
Das Gerät gibt die gesendeten Bytes zur Kontrolle zurück.
Einstellungen: 9600, 8, 1, Space, kein Handshake, kein Parity-Replace
DTR wird gesetzt und bleibt es.
RTS wird gesetzt
Senden eines Adress-Bytes - Lesen des Adress-Bytes
Senden von 4 Bytes (vermutlich Empfänger-Adresse und Anzahl Bytes) - Lesen dieser 4 Bytes
Senden von zwei Bytes (wohl ein Kommando) - Lesen dieser 2 Bytes
Senden von 4 Bytes CRC - Lesen dieser 4 Bytes
RTS wird zurück gesetzt
Bei der Herstelle-Software sehe ich jetzt sofort die Antwort, bei meiner LabVIEW-Software kommt nichts.
Ursprünglich wurde das Parity-Bit verwendet, um das Adress-Byte zu kennzeichnen. Wie es wohl manchmal bei RS485 gemacht wird.
Laut Hersteller ist das aber deaktiviert und ich sehe auch in deren Kommunikation keine Änderung der Parity.
Sollten die gesendeten Bytes das Bit verwenden, müsste ich die Bytes ja trotzdem bekommen, da Parity-Replace deaktiviert ist.
Wo kann ich noch schauen? Was kann ich noch probieren?
Kennt jemand dieses Protokoll?
(Es erinnert ein bisschen an Modbus, aber dort habe ich weder das mit dem RTS, noch mit dem Kommando so gesehen...)
Viele Grüße
Nominas