![]() |
Modbus RTU Pausen Problem
Hey Leute
Ich hab folgendes Problem, ich häng mit meinem Rechner über RS232 an einem Modbus, und will da die einzelnen Pakete auslesen und anschließend auswerten/übersetzten. Nun hab ich nur das Problem das Ende des Pakets zu ermitteln. Auf die RS232 greif ich per Tcomport zu. Ich dachte mir, eigentlich müsst ich doch nur abwarten in welchem Zeitraum die abgefeuert werden und wenn die größer 1/19200 * 3,5 ist ist ein Paket zu ende. Das Problem ist nur, dass die Zeit so klein ist das Windows das ja garnicht mitkriegt. Irgendwelche Ideen wie ich das lösen könnt? |
AW: Modbus RTU Pausen Problem
Du bekommst die Daten ohnehin in zerhackten Päckchen und musst Sie Dir in einem Puffer sammeln. Um sie auswerten zu können brauchst Du ein definiertes Protokoll. Im einfachsten Fall ein #13 als "Paketende", oft auch definierte Header (mit/ohne Längenangeben) (+Footer).
|
AW: Modbus RTU Pausen Problem
Ja das hilft mir nur alles nichts weil das Protokoll mir schon gegeben ist, und ich das nicht ändern kann und es keinen Header oder Footer hat, die einzige Trennung ist eben die 3,5 Zeichen pause zwischen den Paketen
|
AW: Modbus RTU Pausen Problem
Realtimekomunikation kenne ich bisher nur mit Realtimeunterbauten wie Twincat ....
nach Software gesucht hast Du sicher schon? k.a. ob das hilfreich ist .... ![]() ![]() |
AW: Modbus RTU Pausen Problem
Zitat:
Ok, man kann die FIFO Puffer in der Geräteverwaltung ausschalten aber das bleibt trotzdem unstabil. Mögliche Abhilfe * auf MODBUS Ascii-Modus umschalten * MODBUS-TCP verwenden - dann brauchst du natürlich einen neuen Adapter |
AW: Modbus RTU Pausen Problem
Vielleicht ist ein Interface interessant
![]() |
AW: Modbus RTU Pausen Problem
Mit RTU hatte ich auch Probleme (IIRC beim Auslesen von 3000er Adressen), im ASCII-Modus funkt es problemlos. Die serielle Schnittstelle mach ich mit CPDrv.pas
|
AW: Modbus RTU Pausen Problem
Zitat:
|
AW: Modbus RTU Pausen Problem
Bei MODBUS RTU kommt man nicht drumherum die Antwort des Slave zu parsen und sich auszurechnen,
vieviele Bytes diese umfassen müsste. Mit der Info kann man dann noch die Prüfsumme prüfen und somit ganz gut erkennen ob das ein vollständoiges und korrektes Paket ist. Das müsste man, wenn man's richtig macht eh' tun... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz