vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: Modbus in VB 
Autor: Wöllmi
Datum: 29.04.03 18:56

Hi redo,

also erstmal ist dies nicht ganz so einfach in 10 Zeilen bsp. Code zu fassen.

Da gibt ein paar grundlegende Dinge, die man verstehen sollte, um
dann auf einige Schwerpunkte konzentriert einzugehen.

Zuallererst sollte man sich mit dieser Unterlage mal etwas vertraut machen.
http://www.eecs.umich.edu/~modbus/documents/PI_MBUS_300.pdf
Modicon ist ja der "Erfinder" von Modbus und hier sind so einige wesentliche
Aspekte beleuchtet. Vielleicht ist ja schon einiges geklärt.

Weiterhin ein paar Basisausführungen:
1. Für MODBUS gibt es z.B. Ankoppelmöglichkeiten über RS232 und RS485
(weiterhin geht natürlich auch MODBUS über TCP/IP, sei hier aber nur
erwähnt)
2. Mal abgesehen von der Hardware der seriellen Schnittstelle ist das
Protokoll (die Befehlsbildung) identisch.
3. Ergo liegt eigentlich das Hauptproblem darin eine derartige Schnittstelle
zu bedienen und die gewünschten Befehle umzusetzen.
Weiterhin muß man sich darüber im Klaren sein, ob man MASTER oder SLAVE
spielen will!
Also will ich Befehle senden und die Antworten vom Slave bekommen, oder will
ich auf Befehle warten und darauf reagieren?
4. Die grundlegenden Befehle beziehen sich immer auf festgelegte Speichertypen
z.B. Coils, Holding Register, Input Register usw.
Dazu ist es natürlich erforderlich die Spezifika des Hardwareherstellers bzgl. der
konkreten Umsetzung zu kennen. Z.B. welche Daten entsprechen in der SPS vom
Hersteller XY den Holding Registers? Sonst kann ich zwar einen Befehl erzeugen,
aber habe keine Ahnung was ich da gerade auslese oder wohin ich was schreibe.
5. Die Erzeugung der CRC. Wie wird diese gebildet. Wie wird das ergebnis an den
Befehl angehängt.

Dann erst spielt die Umsetzung in die Programmiersprache eine Rolle.

Also eine Vielzahl von diesen Grundlagen-Fragen wird in dem genanntem Dokument
beantwortet. Die genaue Beziehung der relativen MODBUS Adressirung zur absoluten
Adresse eines Hardwareanbieters ist dann beim Hardwarehersteller zu finden.

Versuche also bitte einfach mal dein Problem etwas einzugrenzen. Evtl. kann ich ja
ein paar Hinweise geben
RTU, die Befehle werden binär übertragen, es wird eine CRC16 erwendet
Adresse: FF = Master, 01..FE= Slave, Adr: 00 = Befehl gilt für alle

Bsp.: CMD03 "0203000A0002E43A" = Read holding register
02 = Slave Adresse, 03 = Befehlsnummer,
000A = ab rel. Adresse 10 (&h0A) => Referenzadresse 40011 = 10 + 40001
0002 = Anzahl = 2 Register
E43A = CRC16 (&h3AE4) => erst LOW dann HIGH
'Wenn in sCMD das Bsp. CMD03 also "0203000A0002E43A" steht,
'einfach sCMDHex draus machen und ab auf die Reise über die RS232!
 
Dim iIdx as Integer
Dim sCMD as String
Dim sCMDHex as String
 
sCMD="0203000A0002E43A"
sCMDHex=""
For iIdx = 0 To Len(sCmd) / 2 - 1
        sCmdHex = sCmdHex & Chr$(CInt("&h" & Mid(sCmd, iIdx * 2 + 1, 2)))
Next iIdx
Viel Erfolg!

Tschaui
Woellmi

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Modbus in VB142redo28.04.03 09:57
Re: Modbus in VB3.528Wöllmi29.04.03 18:56
Re: Modbus in VB1.436det_aus_e10.02.20 10:44

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel