AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Modbus RTU Pausen Problem

Ein Thema von PhilmacFLy · begonnen am 28. Sep 2012 · letzter Beitrag vom 27. Feb 2021
Antwort Antwort
Benutzerbild von PhilmacFLy
PhilmacFLy

Registriert seit: 20. Jan 2008
Ort: Nürnberg
340 Beiträge
 
FreePascal / Lazarus
 
#1

Modbus RTU Pausen Problem

  Alt 28. Sep 2012, 14:26
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?
Philipp N.
"Programmiern ist wie küssen:
Mann kan darüber reden, mann kann es beschreiben,
aber man weiss erst, was es bedeutet,
wenn man es getan hat"
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Modbus RTU Pausen Problem

  Alt 28. Sep 2012, 14:44
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).
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von PhilmacFLy
PhilmacFLy

Registriert seit: 20. Jan 2008
Ort: Nürnberg
340 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Modbus RTU Pausen Problem

  Alt 28. Sep 2012, 15:07
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
Philipp N.
"Programmiern ist wie küssen:
Mann kan darüber reden, mann kann es beschreiben,
aber man weiss erst, was es bedeutet,
wenn man es getan hat"
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Modbus RTU Pausen Problem

  Alt 28. Sep 2012, 15:16
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
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

AW: Modbus RTU Pausen Problem

  Alt 28. Sep 2012, 17:49
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
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#6

AW: Modbus RTU Pausen Problem

  Alt 28. Sep 2012, 21:21
Vielleicht ist ein Interface interessant Modbus2USB
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Modbus RTU Pausen Problem

  Alt 28. Sep 2012, 21:24
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
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
Benutzerbild von PhilmacFLy
PhilmacFLy

Registriert seit: 20. Jan 2008
Ort: Nürnberg
340 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Modbus RTU Pausen Problem

  Alt 1. Okt 2012, 07:23
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.
Philipp N.
"Programmiern ist wie küssen:
Mann kan darüber reden, mann kann es beschreiben,
aber man weiss erst, was es bedeutet,
wenn man es getan hat"
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#9

AW: Modbus RTU Pausen Problem

  Alt 27. Feb 2021, 17:16
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...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:41 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