Modbus Master

ellawo

Level-1
Beiträge
51
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

habe eine CPU 315-2DP mit einem CP 341-RS232C und ein Woodward 505e (Regler für Dampfturbinen).

Die CPU ist Master, der Woodward Slave.

Die Parameter sind frei wählbar und auch kein Problem.

Der Woodward gibt mir die Datenpunktliste wie Folgt an:
boolean writes
0:0001
..
0:0080

boolean read
1:0001
..
1:0208

analog read
3:0001
..
3:0120

analog writes
4:0001
..
4:0008


bei durchwühlen der Beschreibungen und Hilfe stoße ich immer nur auf FBs bei denen ich die Nummer der DBs auf der Slave CPU angeben muss. Da mir diese nicht bekannt sind und ich nur die Adressen laut Datenpunktliste kenn weiß ich nicht mehr weiter.
Bitte um Hilfe
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das steht an welcher Stelle du Bool bzw Analog lesen und schreiben kannst.

So, jetzt schreib was du machen willst und dann kannst du das Problem lösen


bike
 
sorry für die schlechte beschreibung

möchte die adressen "boolean writes" (0:0001..0:0080) beschreiben

die "boolean read" (1:0001..1:0200 ) auslesen und in einem DB speichern

die "analog read" (3:0001..3:0120 ) ebenfalls

und die "analog writes" (4:0001..4:0008 ) wieder beschreiben


als SLAVE ist das ganze ja recht einfach aber als MASTER hab ich wie gesagt nur den FB 7+8 (im beispeil projekt zXX21_04_PtP_Com_MODMA) gefunden
wo die daten aus einem DB in einen DB der partner CPU gesendet werden
jedoch ist mir da kein DB bekannt und ich weiß nicht wie bzw wo ich angeben kann auf welches Register gesendet bzw von welchem Register gelesen werden soll

in dem Programm steht im DB der gesendet wird als BYTE 0 die SLAVE Adresse und im BYTE 1 der Funktionscode...reicht das schon?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
boolean writes
0:0001
..
0:0080

==> Coil-Status 1-80, Funktionscode 1 (lesen), Funktioncode 5 (schreiben)

boolean read
1:0001
..
1:0208

==> Input-Status 1-208, Funktionsocde 2 (nur lesen)

analog read
3:0001
..
3:0120

==> Input-Register 1-120, Funktioncode 4 (lnur lesen)

analog writes
4:0001
..
4:0008

==> Holding-Register 1-8, Funktioncode 3 (lesen), Funktionscode 6 (schreiben)
 
das ist mir im groben schon bekannt gewesen

mir ist nur noch nicht ganz klar wie ich den inhalt eines DB in
==> Coil-Status 1-80, Funktioncode 5 (schreiben)
==> Holding-Register 1-8, Funktionscode 6 (schreiben)
schreibe

oder wie ich die daten aus
==> Input-Status 1-208, Funktionsocde 2 (nur lesen)
==> Input-Register 1-120, Funktioncode 4 (lnur lesen)
lese und in einen DB schreibe
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Abend,

ich geh mal davon aus, dass du den ladbaren Siemens-Treiber "Modbus Master für S7300/400" verwendest.

In dem Paket sollte doch neben Treiber und Dongle auch noch eine Dokumentation dabei gewesen sein. Wenn nicht, dann kann man sich die bei Siemens auch runterladen Link

In diesem Handbuch ist die ganze Sache mit den Functioncodes beschrieben.

Du musst im Prinzip Modbus Telegramme in einer DB-Struktur zusammenbauen und diese mittels P_SND an den CP übergeben. Vom CP erhälst du dann den Modbus-Response via P_RCV zurück, welche du wiederum in einem DB ablegen kannst.
 
der Dongle vergoldet den Treiber.

Eine Modbus-Master Lizenz kostet bei Siemens richtig Kohle.

Der Preis ist für die Leistung eigentlich eine Frechheit.

Der "Treiber" im CP macht eigentlich nur noch den CRC-Check - das Modbus-Telegramm an sich muss man ja als Programmierer in Step7 schon zusammenbasteln.

Wenn man sich ein bissel auskennt, dann kann man aber den CRC-Check auch selbst in Step7 ausprogrammieren und so auf den Siemens-Treiber verzichten. Dann reicht für die Modbus-Kommunikation auch ein CP340 aus.
 
Zurück
Oben