AGB  ·  Datenschutz  ·  Impressum  







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

Modbus langsam

Ein Thema von ConnorMcLeod · begonnen am 23. Jun 2012 · letzter Beitrag vom 23. Jun 2012
Antwort Antwort
Benutzerbild von ConnorMcLeod
ConnorMcLeod

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

Modbus langsam

  Alt 23. Jun 2012, 12:31
Hallo Freunde,
ich möchte ein paarmal pro Sekunde einige Werte von einem modbusfähigen Messgerät seriell einlesen. Das funktioniert auch, aber: laut Modbus-Protokoll muss immer eine Pause zwischen den einzelnen Sendungen gemacht werden als Zeichen dafür, dass das Ende der Sendung erreicht ist. Auf diese Art komme ich auf ca. 2-3 Abfragen pro Sekunde und das ist mir zuwenig. Habe ich einen Fehler in meiner Überlegung oder geht das wirklich nicht schneller?
Wie immer: danke für alle Wortspenden!
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#2

AW: Modbus langsam

  Alt 23. Jun 2012, 15:20
Laut Protokoll muss die Wartezeit mindestens 3,5 Zeichen lang dauern.
Wie ist das bei Dir realisiert?
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

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

AW: Modbus langsam

  Alt 23. Jun 2012, 15:43
Hallo Hathor,
die 3,5 Sek gelten aber nur bei RTU, nicht bei seriell, oder?
Delphi-Quellcode:
        if (lMessage.FTransmissionMode = mbtmRTU) then // Pause machen
        begin
          lcSendTicks := GetTickCount + (44000 div ACPD.BaudRateValue) + 1; // 4 Zeichen, aber mindestens 1/1000 sec
                                                                            // *1000 => Millisekunden
                                                                            // *11 => Länge eines Bytes in Bit (Start + 8 + Parity + Stop)
          while (GetTickCount < lcSendTicks) do
          begin
            Application.ProcessMessages; // auf die Antwort im SeriellThread warten
          end;
        end;
RTU liefert manchmal schlechte Sendungen, das hängt vllt mit dem Messgerät zusammen.
Bei der seriellen Variante bekomme ich bessere Ergebnisse, aber eben nicht sehr flott.
Nr.1 Delphi-Tool: [F7]

Geändert von ConnorMcLeod (23. Jun 2012 um 15:45 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#4

AW: Modbus langsam

  Alt 23. Jun 2012, 15:55
die 3,5 Sek gelten aber nur bei RTU, nicht bei seriell, oder?
Er sagte ja auch Zeichen und nicht Sekunden.

Ich würde es so übersetzen:
Wenn man 300 Zeichen die Sekunde übertragen kann (quasi 300 BAUD aka Zeichen pro Sekunde),
dann muß die Pause mindesten 1 Sekunde / 300 Zeichen|Sekunde * 3.5 Zeichen lang sein, also 0,011666667 Sekunden oder 11.7 Millisekunden.

Ich sollte schneller antworten und mich nicht auf die faule RedBox verlassen.


Delphi-Quellcode:
while (GetTickCount < lcSendTicks) do
          begin
            Application.ProcessMessages; // auf die Antwort im SeriellThread warten
          end;
Tipp: DelayDelay
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (23. Jun 2012 um 15:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

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

AW: Modbus langsam

  Alt 23. Jun 2012, 16:01
... und ich meinte Zeichen, nicht Sekunden. Passt schon. Ich rechne es ja auch so um, aber wir bewegen uns vom Thema weg.

Mein Fehler.

Ich glaube, heute lass ich es lieber ... wenn ich sagte seriell, meinte ich *ASCII*

Es gibt zwei Varianten: ASCII und RTU. Bei ASCII habe ich das Geschwindigkeitsproblem. Sorry nochmal, ich geh jetzt mal an die frische Luft und hole tief ebendiese.
Nr.1 Delphi-Tool: [F7]
  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 05:01 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