TIA Modbus Server

BauerS7

Level-2
Beiträge
53
Reaktionspunkte
3
Hallo zusammen,

habe eine S7-1211 mit TiA V19 Programmiert und die CB-1241(RS485) verbaut. Aufgabe ist das die S7-1211 als Server fungiert und eine Phönix als Master auf die Datenzugreift. Dies funktioniert alles aber wie kann ich es machen das der Master nur einen definierten Bereich schreiben kann und nicht jeden Beliebigen Holdingregister, oder funktioniert das nicht zum einstellen. Habe schon mit den Data_Area_Array probiert ist aber auch nichts da ja nicht zwischen Funktion 3 und Funkiton 16 unterschieden wird?

Somit kann die Phönix nur alle Holdingregister lesen und schreiben aber ich kann nicht sagen ab hier nur lesen und ab hier nur schreiben?

Verwendeter Funktionsbaustein ist Modbus_Slave V6.0.

Danke für eure Infos.

BG
 
Die Beiträge kennst du?

Wie realisieren Sie eine MODBUS-RTU-Kommunkation mit STEP 7 (TIA Portal) für die SIMATIC S7-1200?​


Master-Slave Kommunikation über einen CM PtP mit Hilfe des Modbus RTU Protokolls​

 
Hallo @DCDCDC ,

habe schon als Master_RTU Projekte gemacht, da hatte ich nie ein Thema. RegisterAdresse und länge da konnte ich auslesen und schreiben wie ich wollte bzw. was der Slave(Sensoren, FU's) zuließ.

Auch mittels Modbus-TCP Siemens Master und eine andere Slave ist das gleiche kann man schreiben anfang und länge einstellen (Auf der Masterseite)... aber irgendwie bei dieser Geschichte geht das nicht.

Haben mit dem gegenüber Fehler gesucht da überhaupt nichts ging. Bis ich mich mit einem USB-RS485 Adapter und mit dem "Modbus-tool" draufgeschlossen habe und versucht die Situation zu verstehen.

Ergebnis:
Ich muss das ganze Holdingregister lesen oder schreiben sonst geht nichts, bekomme eine Errormeldung auf Siemens 16#8383 und in dem Tool abweisung? Er kann nicht einfach wie gewohnt ab 40035 schreiben und das z.B.: 11 Register oder ab 40001 34 Register lesen sondern ich muss alle 45 lesen?

Bild Modbus_Slave
1741875765166.png
 
Welche Modbus-Slave Anweisung genau verwendest du? Und welche Version? Direkt in TIA neu eingefügt oder aus einem anderen Projekt kopiert? Oder irgendwie migriert?
Hast du schon die TIA-Hilfen zu der Anweisung gelesen, insbesondere die Beschränkungen auf vorgebbare Register-Bereiche?
Liegt die Modbus-Slave-Anweisung im Quelltext vor? Dann könntest du in dem Quelltext selber beliebige Register-Adressen erlauben und verbieten.

Eigentlich sollte es egal sein, ob der Partner (Master, Client) nur 1 oder 3 oder 20 Register liest oder schreibt. Ab bestimmten Versionen des Modbus_Slave kann man den Bereich der zulässigen Register beschränken. Wenn der Fehlerstatus 16#8383 kommt, dann müsste der Partner Daten von einer unzulässigen Adresse angefordert haben. Hast du die Kommunikationsanfragen des Partners mitge-sniffert? Oder mal mit einem Modbus-Testtool die gewünschten Anfragen an deinen Modbus_Slave erzeugt/getestet?

Protokollfehler - Modbus_Slave
16#8383Unzulässige Datenadresse im AnforderungstelegrammWählen Sie am Parameter DATA_ADDR einen geeigneten Wert für Datenadresse.
 
Hallo @PN/DP

ich verwende die Modbus_Slave V6.0 direkt in TiA eingefügt. Wie schon oben geschrieben funktioniert dies mit einem Modbus-Testtool auch nicht muss immer alle Register lesen oder schreiben sonst kommt der Fehlerstatus 16#8383... dies verstehe ich einfach nicht. denn mit der funktion von Modbus TCP geht es das ich einzelne Halteregister lesen oder schreiben kann...

Wie kann ich die Anfrage hier mitsniffern, habe keine Idee wie dies gemacht werden soll...
 
mitsniffern: mit einem geeigneten USB-RS485-Adapter oder USB-RS232-Adapter und RS232-RS485-Adapter den PC mit dem RS485 verbinden und auf dem PC mit einem Terminal-Programm oder Serialport Monitor den Datenverkehr ansehen
hier im Forum oder im Inet suchen: rs485 sniffer
 
Zurück
Oben