# Modbus Master



## ellawo (16 Februar 2011)

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


----------



## profichip (16 Februar 2011)

Was willst Du den eigentlich machen? Das kommt aus deinem Post nicht so richtig raus.
-- Frank


----------



## bike (16 Februar 2011)

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


----------



## Lars Weiß (16 Februar 2011)

ellawo schrieb:


> 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.



Und was ist das für eine Beschreibung ? Der Modbus kennt keine DBs und FBs, nur Register, Coils und Inputs.


----------



## ellawo (17 Februar 2011)

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?


----------



## Lars Weiß (17 Februar 2011)

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)


----------



## ellawo (17 Februar 2011)

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


----------



## Lars Weiß (17 Februar 2011)

Kapitel 4, Modbus Funktionscodes:

http://www.vipa.de/uploads/tx_sbdownloader/HB97d_cp_09-26_01.pdf

Was du in deinem 2ten Post geschrieben hast ist richtig, Slaveadresse, Funktionscode, Startadresse und Anzahl der Bits bzw. Register und los gehts.


----------



## uncle_tom (17 Februar 2011)

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.


----------



## Lars Weiß (17 Februar 2011)

Hm, was genau macht denn der Treiber bzw. das Dongle ? CRC-Check im Hintergrund  ?


----------



## uncle_tom (18 Februar 2011)

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.


----------



## Lars Weiß (18 Februar 2011)

Dann ist das allerdings eine Frechheit - den Quellcode für den CRC gibts hier im Forum.


----------



## ellawo (18 Februar 2011)

*Danke*

vielen danke erstmal für eure hilfe 

ich werd mich in die beiden dokus jetzt mal einlesen


----------

