Suche Modbus komponenten

Rund um die LCL und andere Komponenten
Antworten
DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Suche Modbus komponenten

Beitrag von DL3AD »

Hallo,

ich möchte einen Solarladeregler auslesen - der wird mit dem Modbus RTU-Protokoll üder eine serielle Schnittstelle (RS485) angesprochen.
Serielle habe ich bisher immer mit Synapse gemacht.
Nun suche ich Komponenten / Paket mit dem ich das Modbus RTU-Protokoll handeln kann.

Welche Möglichkeiten gibt es da ?

Gruß Frank

Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Suche Modbus komponenten

Beitrag von Mathias »

Wie ist diese Schnittstelle in deinem PC vorhanden ?
Wird sie als als COM-Port präsentiert ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Suche Modbus komponenten

Beitrag von af0815 »

Grundlegend fällt mir da PascalScada ein. Das macht den Modbus Master. IMHO kann das sowohl über seriell als auch über TCP/IP. Ich habe bisher nur den TCP/IP Teil verwendet. Pascalscada ist im OPM enthalten.

In den Examples sind 2 Beispiele vorhanden mit denen du was anfangen könntest: laz_modbus_rtu_scanner und laz_modbus_rtu_ats48
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Suche Modbus komponenten

Beitrag von DL3AD »

Die Schnittstelle ist als Serial Port auf dem PC vorhanden - als normaler COM-Port bzw. USBttyxxx

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Suche Modbus komponenten

Beitrag von af0815 »

Übrigends könnte man das auch mit Synaser selbst implementieren, besonders wenn man nur 1 oder 2 Befehle übertragen will.

Infos dazu hier: http://www.modbus.org/docs/Modbus_Appli ... V1_1b3.pdf besonders so um Seite 11 herum sieht man die grundlegenden Kommandos und auch die Antworten.

Die Frage ist vielmehr, was brauchst du genau um den Solarladeregler auszulesen. Ich gehe fast davon aus, das die Werte in Registern liegen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: Suche Modbus komponenten

Beitrag von DL3AD »

... ja ich möchte eigentlich nur eine Batteriespannung und den Ladezustand auslesen - und ja die liegen in Registern - alles lt. Modbus RTU Standard.
Die Register, Datenformate, ... ist alles bekannt.
Ich werde dann mal selber was stricken - hätte ja sein können dass es eine Komponente / Paket gibt die das Standard Modbus RTU kann.

Danke
Gruß Frank

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Suche Modbus komponenten

Beitrag von af0815 »

DL3AD hat geschrieben:Ich werde dann mal selber was stricken - hätte ja sein können dass es eine Komponente / Paket gibt die das Standard Modbus RTU kann.

Dazu verwende ich u.a. PascalScada. Es darf dich nicht erschrecken, das kann mehr, Ich verwende auch nur den Modbusteil davon.

Wenn man die Komponenten plaziert und konfiguriert hat, reduziert sich der Aufwand auf:

Code: Alles auswählen

procedure TForm1.BuReadClick(Sender: TObject);
begin
  TagMod1.Read;
  TagMod2.Read;
  TagMod3.Read;
  TagMod4.Read;
  TagMod5.Read;
  SG.Cells[1,1]:= FloatToStr(TagMod1.Value);
  SG.Cells[2,1]:= FloatToStr(TagMod2.Value);
  SG.Cells[3,1]:= FloatToStr(TagMod3.Value);
  SG.Cells[4,1]:= FloatToStr(TagMod4.Value);
  SG.Cells[5,1]:= FloatToStr(TagMod5.Value);
end;
 


SG ist ein StringGrid auf dem ich die Werte Anzeige. Der Rest wird im OI auf den Komponenten eingestellt. Du hast dann eine PortKomponnete (RS232/485), das Protokoll (Modbus) und die diversen Tags. Mehr ist es nicht.

So nebenbei - ist auch der Entwickler erreichbar und macht auch Wartung seiner Komponente. Habe selbst schon persönlichen Kontakt mit ihm gehabt um ein paar kleinere Probleme zu lösen, die im industriellen Umfeld auftreten können.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Suche Modbus komponenten

Beitrag von corpsman »

Bei meiner UUart Komponente ist im UNterordner das Program Modbus Diagnostics mit dabei, es demonstriert wie man Modbus RTU und Modbus TCP Verbindungen mit Synapse und ich glaube L-Net aufbauen kann (die Demo liest nur).

Das hilft evtl auch weiter *g*
--
Just try it

Antworten