Modbus TCP Slave Adresse Register anpassen
Posted: 10 Apr 2023, 22:20
Guten Abend,
ich verwende die Modbus TCP Slave Verbindung mit 16 Inputs und 16 Outputs
Die Adresse Register beginnen ja beide bei 0 ist es möglich dies anzupassen?
Damit die Inputs bei Adresse Register 0 beginnen und die Outputs bei Adresse Register 1024 beginnen.
Wir haben vorher den Kunbus Modbus TCP Gateway Modul verwendet daher stammen diese Adressen.
Anleitung Kunbus Modbus TCP Gateway Modul Bedienungsanleitung Seite 21
Übersicht Adresse Register
https://www.kunbus.de/files/media/bedie ... busTCP.pdf
Aktuelle Adresse Register für Input: Start bei 0 ----> Anpassen auf 0
Aktuelle Adresse Register für Output: Start bei 0 ---< Anpassen auf 1024
Schonmal vielen Dank für die Hilfe.
Das verwendet Programm ist mit Python erstellt worden.
#!/usr/bin/python3
import array
import struct
import revpimodio2
from time import sleep
rpi = revpimodio2.RevPiModIO(autorefresh=True)
while True:
Modbus_Input_1 = rpi.io.Input_1.value #Einlesen Modbus Slave Pilz ----> wStatus_Anlage
Modbus_Input_2 = rpi.io.Input_2.value #Einlesen Modbus Slave Pilz ----> Stroemungswaechter
Modbus_Input_3 = rpi.io.Input_3.value #Einlesen Modbus Slave Pilz ----> wStatus_AbschPumpen_Gruppe1_2
Modbus_Input_4 = rpi.io.Input_4.value #Einlesen Modbus Slave Pilz ----> wStatus_AbschPumpen_Gruppe3_4
Modbus_Input_5 = rpi.io.Input_5.value #Einlesen Modbus Slave Pilz ----> wStatus_AbschGleichrichter_Gruppe1_2
Modbus_Input_6 = rpi.io.Input_6.value #Einlesen Modbus Slave Pilz ----> wStatus_AbschGleichrichter_Gruppe3_4
Modbus_Input_7 = rpi.io.Input_7.value #Einlesen Modbus Slave Pilz ----> wStatus_AbschGleichrichter_Gruppe5_6
Modbus_Input_8 = rpi.io.Input_8.value #Einlesen Modbus Slave Pilz ----> Reserve
print("Modbus Input_1 wStatus_Anlage ---> ", Modbus_Input_1) #Print Ausgabe Modbus Input_1 wStatus_Anlage
print("Modbus Input_2 Stroemungswaechter --->", Modbus_Input_2) #Print Ausgabe Modbus Input_2 Stroemungswaechter
print("Modbus Input_3 Abschaltung Pumpen Gruppe 1 und 2 ---> ", Modbus_Input_3) #Print Ausgabe Modbus Input_3 wStatus_AbschPumpen_Gruppe1_2
print("Modbus Input_4 Abschaltung Pumpen Gruppe 3 und 4 ---> ", Modbus_Input_4) #Print Ausgabe Modbus Input_4 wStatus_AbschPumpen_Gruppe3_4
print("Modbus Input_5 Abschaltung Gleichrichter Gruppe 1 und 2 ---> ", Modbus_Input_5) #Print Ausgabe Modbus Input_5 wStatus_AbschGleichrichter_Gruppe1_2
print("Modbus Input_6 Abschaltung Gleichrichter Gruppe 3 und 4 ---> ", Modbus_Input_6) #Print Ausgabe Modbus Input_6 wStatus_AbschGleichrichter_Gruppe3_4
print("Modbus Input_7 Abschaltung Gleichrichter Gruppe 5 und 6 ---> ", Modbus_Input_7) #Print Ausgabe Modbus Input_7 wStatus_AbschGleichrichter_Gruppe5_6
print("Modbus Input_8 Reserve ---> ", Modbus_Input_8) #Print Ausgabe Modbus Input_8 Reserve
print("------------------------------------------------------------------------------")
Modbus_Input_bytes = Modbus_Input_1.to_bytes(2, byteorder='big') #Modubus_Input_1 wStatus_Anlage in ein Array Byte packen
rpi.io.Output_1_i06.value = Modbus_Input_bytes[1] #Schreiben Profibus Output 1 wStatus_Anlage Byte 0
rpi.io.Output_2_i06.value = Modbus_Input_bytes[0] #Schreiben Profibus Output 1 wStatus_Anlage Byte 1
Modbus_Input_bytes = Modbus_Input_2.to_bytes(2, byteorder='big') #Modubus_Input_2 Stroemungswaechter in ein Array Byte packen
rpi.io.Output_3_i06.value = Modbus_Input_bytes[1] #Schreiben Profibus Output 3 wStatus_Anlage Byte 0
rpi.io.Output_4_i06.value = Modbus_Input_bytes[0] #Schreiben Profibus Output 4 wStatus_Anlage Byte 1
Modbus_Input_bytes = Modbus_Input_3.to_bytes(2, byteorder='big') #Modubus_Input_3 wStatus_AbschPumpen_Gruppe1_2 in ein Array Byte packen
rpi.io.Output_5_i06.value = Modbus_Input_bytes[1] #Schreiben Profibus Output 5 wStatus_Anlage Byte 0
rpi.io.Output_6_i06.value = Modbus_Input_bytes[0] #Schreiben Profibus Output 6 wStatus_Anlage Byte 1
Modbus_Input_bytes = Modbus_Input_4.to_bytes(2, byteorder='big') #Modubus_Input_4 wStatus_AbschPumpen_Gruppe3_4 in ein Array Byte packen
rpi.io.Output_7_i06.value = Modbus_Input_bytes[1] #Schreiben Profibus Output 7 wStatus_Anlage Byte 0
rpi.io.Output_8_i06.value = Modbus_Input_bytes[0] #Schreiben Profibus Output 8 wStatus_Anlage Byte 1
Modbus_Input_bytes = Modbus_Input_5.to_bytes(2, byteorder='big') #Modubus_Input_5 wStatus_AbschGleichrichter_Gruppe1_2 in ein Array Byte packen
rpi.io.Output_9_i06.value = Modbus_Input_bytes[1] #Schreiben Profibus Output 9 wStatus_Anlage Byte 0
rpi.io.Output_10_i06.value = Modbus_Input_bytes[0] #Schreiben Profibus Output 10 wStatus_Anlage Byte 1
Modbus_Input_bytes = Modbus_Input_6.to_bytes(2, byteorder='big') #Modubus_Input_6 wStatus_AbschGleichrichter_Gruppe3_4 in ein Array Byte packen
rpi.io.Output_11_i06.value = Modbus_Input_bytes[1] #Schreiben Profibus Output 11 wStatus_Anlage Byte 0
rpi.io.Output_12_i06.value = Modbus_Input_bytes[0] #Schreiben Profibus Output 12 wStatus_Anlage Byte 1
Modbus_Input_bytes = Modbus_Input_7.to_bytes(2, byteorder='big') #Modubus_Input_7 wStatus_AbschGleichrichter_Gruppe5_6 in ein Array Byte packen
rpi.io.Output_13_i06.value = Modbus_Input_bytes[1] #Schreiben Profibus Output 13 wStatus_Anlage Byte 0
rpi.io.Output_14_i06.value = Modbus_Input_bytes[0] #Schreiben Profibus Output 14 wStatus_Anlage Byte 1
Modbus_Input_bytes = Modbus_Input_8.to_bytes(2, byteorder='big') #Modubus_Input_8 Reserve in ein Array Byte packen
rpi.io.Output_15_i06.value = Modbus_Input_bytes[1] #Schreiben Profibus Output 15 wStatus_Anlage Byte 0
rpi.io.Output_16_i06.value = Modbus_Input_bytes[0] #Schreiben Profibus Output 16 wStatus_Anlage Byte 1
Modbus_Output_bytes = bytearray(2) #Bytearray Profibus Input_1_i06 wSteuerung_Siemens anlegen
Modbus_Output_bytes[1] = rpi.io.Input_1_i06.value #Lesen Profibus Input 1 wSteuerung_Siemens Byte 0
Modbus_Output_bytes[0] = rpi.io.Input_2_i06.value #Lesen Profibus Input 2 wSteuerung_Siemens Byte 1
Modbus_Output_Word = int.from_bytes(Modbus_Output_bytes, byteorder='big') #Profibus Input 1 zusammenbauen
print("Modbus Output_1 Steuerung Siemens---> ", Modbus_Output_Word) #Print Ausgabe Modbus Output 1 wSteuerung_Siemens
print("") #Print Ausgabe Ende
rpi.io.Output_1.value = Modbus_Output_Word #Schreiben Modbus Output 1 wSteuerung_Siemens
sleep(0.50)
ich verwende die Modbus TCP Slave Verbindung mit 16 Inputs und 16 Outputs
Die Adresse Register beginnen ja beide bei 0 ist es möglich dies anzupassen?
Damit die Inputs bei Adresse Register 0 beginnen und die Outputs bei Adresse Register 1024 beginnen.
Wir haben vorher den Kunbus Modbus TCP Gateway Modul verwendet daher stammen diese Adressen.
Anleitung Kunbus Modbus TCP Gateway Modul Bedienungsanleitung Seite 21
Übersicht Adresse Register
https://www.kunbus.de/files/media/bedie ... busTCP.pdf
Aktuelle Adresse Register für Input: Start bei 0 ----> Anpassen auf 0
Aktuelle Adresse Register für Output: Start bei 0 ---< Anpassen auf 1024
Schonmal vielen Dank für die Hilfe.
Das verwendet Programm ist mit Python erstellt worden.
#!/usr/bin/python3
import array
import struct
import revpimodio2
from time import sleep
rpi = revpimodio2.RevPiModIO(autorefresh=True)
while True:
Modbus_Input_1 = rpi.io.Input_1.value #Einlesen Modbus Slave Pilz ----> wStatus_Anlage
Modbus_Input_2 = rpi.io.Input_2.value #Einlesen Modbus Slave Pilz ----> Stroemungswaechter
Modbus_Input_3 = rpi.io.Input_3.value #Einlesen Modbus Slave Pilz ----> wStatus_AbschPumpen_Gruppe1_2
Modbus_Input_4 = rpi.io.Input_4.value #Einlesen Modbus Slave Pilz ----> wStatus_AbschPumpen_Gruppe3_4
Modbus_Input_5 = rpi.io.Input_5.value #Einlesen Modbus Slave Pilz ----> wStatus_AbschGleichrichter_Gruppe1_2
Modbus_Input_6 = rpi.io.Input_6.value #Einlesen Modbus Slave Pilz ----> wStatus_AbschGleichrichter_Gruppe3_4
Modbus_Input_7 = rpi.io.Input_7.value #Einlesen Modbus Slave Pilz ----> wStatus_AbschGleichrichter_Gruppe5_6
Modbus_Input_8 = rpi.io.Input_8.value #Einlesen Modbus Slave Pilz ----> Reserve
print("Modbus Input_1 wStatus_Anlage ---> ", Modbus_Input_1) #Print Ausgabe Modbus Input_1 wStatus_Anlage
print("Modbus Input_2 Stroemungswaechter --->", Modbus_Input_2) #Print Ausgabe Modbus Input_2 Stroemungswaechter
print("Modbus Input_3 Abschaltung Pumpen Gruppe 1 und 2 ---> ", Modbus_Input_3) #Print Ausgabe Modbus Input_3 wStatus_AbschPumpen_Gruppe1_2
print("Modbus Input_4 Abschaltung Pumpen Gruppe 3 und 4 ---> ", Modbus_Input_4) #Print Ausgabe Modbus Input_4 wStatus_AbschPumpen_Gruppe3_4
print("Modbus Input_5 Abschaltung Gleichrichter Gruppe 1 und 2 ---> ", Modbus_Input_5) #Print Ausgabe Modbus Input_5 wStatus_AbschGleichrichter_Gruppe1_2
print("Modbus Input_6 Abschaltung Gleichrichter Gruppe 3 und 4 ---> ", Modbus_Input_6) #Print Ausgabe Modbus Input_6 wStatus_AbschGleichrichter_Gruppe3_4
print("Modbus Input_7 Abschaltung Gleichrichter Gruppe 5 und 6 ---> ", Modbus_Input_7) #Print Ausgabe Modbus Input_7 wStatus_AbschGleichrichter_Gruppe5_6
print("Modbus Input_8 Reserve ---> ", Modbus_Input_8) #Print Ausgabe Modbus Input_8 Reserve
print("------------------------------------------------------------------------------")
Modbus_Input_bytes = Modbus_Input_1.to_bytes(2, byteorder='big') #Modubus_Input_1 wStatus_Anlage in ein Array Byte packen
rpi.io.Output_1_i06.value = Modbus_Input_bytes[1] #Schreiben Profibus Output 1 wStatus_Anlage Byte 0
rpi.io.Output_2_i06.value = Modbus_Input_bytes[0] #Schreiben Profibus Output 1 wStatus_Anlage Byte 1
Modbus_Input_bytes = Modbus_Input_2.to_bytes(2, byteorder='big') #Modubus_Input_2 Stroemungswaechter in ein Array Byte packen
rpi.io.Output_3_i06.value = Modbus_Input_bytes[1] #Schreiben Profibus Output 3 wStatus_Anlage Byte 0
rpi.io.Output_4_i06.value = Modbus_Input_bytes[0] #Schreiben Profibus Output 4 wStatus_Anlage Byte 1
Modbus_Input_bytes = Modbus_Input_3.to_bytes(2, byteorder='big') #Modubus_Input_3 wStatus_AbschPumpen_Gruppe1_2 in ein Array Byte packen
rpi.io.Output_5_i06.value = Modbus_Input_bytes[1] #Schreiben Profibus Output 5 wStatus_Anlage Byte 0
rpi.io.Output_6_i06.value = Modbus_Input_bytes[0] #Schreiben Profibus Output 6 wStatus_Anlage Byte 1
Modbus_Input_bytes = Modbus_Input_4.to_bytes(2, byteorder='big') #Modubus_Input_4 wStatus_AbschPumpen_Gruppe3_4 in ein Array Byte packen
rpi.io.Output_7_i06.value = Modbus_Input_bytes[1] #Schreiben Profibus Output 7 wStatus_Anlage Byte 0
rpi.io.Output_8_i06.value = Modbus_Input_bytes[0] #Schreiben Profibus Output 8 wStatus_Anlage Byte 1
Modbus_Input_bytes = Modbus_Input_5.to_bytes(2, byteorder='big') #Modubus_Input_5 wStatus_AbschGleichrichter_Gruppe1_2 in ein Array Byte packen
rpi.io.Output_9_i06.value = Modbus_Input_bytes[1] #Schreiben Profibus Output 9 wStatus_Anlage Byte 0
rpi.io.Output_10_i06.value = Modbus_Input_bytes[0] #Schreiben Profibus Output 10 wStatus_Anlage Byte 1
Modbus_Input_bytes = Modbus_Input_6.to_bytes(2, byteorder='big') #Modubus_Input_6 wStatus_AbschGleichrichter_Gruppe3_4 in ein Array Byte packen
rpi.io.Output_11_i06.value = Modbus_Input_bytes[1] #Schreiben Profibus Output 11 wStatus_Anlage Byte 0
rpi.io.Output_12_i06.value = Modbus_Input_bytes[0] #Schreiben Profibus Output 12 wStatus_Anlage Byte 1
Modbus_Input_bytes = Modbus_Input_7.to_bytes(2, byteorder='big') #Modubus_Input_7 wStatus_AbschGleichrichter_Gruppe5_6 in ein Array Byte packen
rpi.io.Output_13_i06.value = Modbus_Input_bytes[1] #Schreiben Profibus Output 13 wStatus_Anlage Byte 0
rpi.io.Output_14_i06.value = Modbus_Input_bytes[0] #Schreiben Profibus Output 14 wStatus_Anlage Byte 1
Modbus_Input_bytes = Modbus_Input_8.to_bytes(2, byteorder='big') #Modubus_Input_8 Reserve in ein Array Byte packen
rpi.io.Output_15_i06.value = Modbus_Input_bytes[1] #Schreiben Profibus Output 15 wStatus_Anlage Byte 0
rpi.io.Output_16_i06.value = Modbus_Input_bytes[0] #Schreiben Profibus Output 16 wStatus_Anlage Byte 1
Modbus_Output_bytes = bytearray(2) #Bytearray Profibus Input_1_i06 wSteuerung_Siemens anlegen
Modbus_Output_bytes[1] = rpi.io.Input_1_i06.value #Lesen Profibus Input 1 wSteuerung_Siemens Byte 0
Modbus_Output_bytes[0] = rpi.io.Input_2_i06.value #Lesen Profibus Input 2 wSteuerung_Siemens Byte 1
Modbus_Output_Word = int.from_bytes(Modbus_Output_bytes, byteorder='big') #Profibus Input 1 zusammenbauen
print("Modbus Output_1 Steuerung Siemens---> ", Modbus_Output_Word) #Print Ausgabe Modbus Output 1 wSteuerung_Siemens
print("") #Print Ausgabe Ende
rpi.io.Output_1.value = Modbus_Output_Word #Schreiben Modbus Output 1 wSteuerung_Siemens
sleep(0.50)