Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Modbus RTU Pausen Problem (https://www.delphipraxis.net/170685-modbus-rtu-pausen-problem.html)

PhilmacFLy 28. Sep 2012 13:26

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?

Bummi 28. Sep 2012 13:44

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).

PhilmacFLy 28. Sep 2012 14:07

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

Bummi 28. Sep 2012 14:16

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 ....
http://www.modbusdriver.com/shop/index.php?cPath=46
http://www.windows7download.com/win7.../lssakayv.html

shmia 28. Sep 2012 16:49

AW: Modbus RTU Pausen Problem
 
Zitat:

Zitat von PhilmacFLy (Beitrag 1184849)
Das Problem ist nur, dass die Zeit so klein ist das Windows das ja garnicht mitkriegt.

Da hast du keine Chance, denn es ist ja nicht nur die kurze Zeit sondern auch die FIFO-Buffer der ser. Schnittstelle die verhindern, dass du die Pause sehen kannst.
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

mschaefer 28. Sep 2012 20:21

AW: Modbus RTU Pausen Problem
 
Vielleicht ist ein Interface interessant Modbus2USB

ConnorMcLeod 28. Sep 2012 20:24

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

PhilmacFLy 1. Okt 2012 06:23

AW: Modbus RTU Pausen Problem
 
Zitat:

Zitat von shmia (Beitrag 1184866)
Mögliche Abhilfe
* auf MODBUS Ascii-Modus umschalten
* MODBUS-TCP verwenden - dann brauchst du natürlich einen neuen Adapter

Sind beides keine validen Abhilfen, da ich nicht frei entscheiden kann was auf dem BUS gesprochen wird.

TurboMagic 27. Feb 2021 16:16

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 07:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz