SmartPi 3.0 / 3.1 Modbus TCP und Modbus RTU Einstellungen
Modbus
Der SmartPi verfügt ab Softwareversion 1.0.0 - 3.0.0 über die Möglichkeit, per Modbus RTU (nur SmartPi 3.1) und Modbus TCP ausgelesen zu werden (Slave).
Bei Modbus TCP erfolgt die Kommunikation über die Netwerkschnittstelle.
Bei Modbus RTU findet die Kommunikation über die RS485-Schnittstelle des SmartPi statt.
Aktuell müssen die Modbus-Einstellungen noch manuell in der Konfigurationsdatei /etc/smartpi durchgeführt werden.
Eigene Installation vs fertiges Image
Wir empfehlen Ihnen, bei der Verwendung von Modbus RTU (nur SmartPi 3.1) unser fertiges Image zu verwenden, da für einen reibungslosen Betrieb einige Einstellungen an den seriellen Schnittstellen des Raspberry Pi durchgeführt werden müssen.
Bei einem eigenen Image gehen Sie bitte wie folgt vor:
Loggen Sie sich bitte über SSH auf den SmartPi ein.
sudo nano /boot/cmdline.txt
dort entfernen Sie
console=/dev/serial1
und
console=serial0,115200
speichern STRG+O und schließen STRG+C
sudo nano /boot/config.txt
am Ende die beiden Zeilen einfügen
dtoverlay=pi3-miniuart-bt
enable_uart=1
core_freq=250
speichern STRG+O und schließen STRG+C
sync
sudo reboot
Nun können Sie über /dev/serial0 den RS485 Bus nutzen.
Modbus RTU (nur SmartPi 3.1)
Schließen Sie den SmartPi über die RS485-Klemmen A und B an den von Ihnen verwendeten Modbus-Master an. Bitte achten Sie auf die richtige Polung der Klemmen A und B. Sind A und B vertauscht, kann keine Kommunikation stattfinden.
Über den Jumper kann der Abschlusswiderstand aktiviert und deaktiviert werden. Ist der SmartPi am Anfang oder am Ende des RS485-Busses oder sind nur Master und Slave angeschlossen, muss der Jumper gesetzt sein. Ist der SmartPi in der Mitte des Busses, sollte der Jumper gezogen werden.
Konfiguration
Sie können die Modbus-Konfiguration über die Konfigurationsdatei /etc/smartpi einstellen.[modbus]
modbus_rtu_enabled=0
modbus_tcp_enabled=0
modbus_rtu_address=1
modbus_rtu_device_id="/dev/serial0"
modbus_tcp_address=":502"
Sollte der Eintrag nicht in der Konfigurationsdatei vorhanden sein, können Sie den Eintrag einfach am Ende der Datei erstellen.
Um Modbus-RTU zu aktivieren, stellen Sie den Wert von modbus_rtu_enabled auf 1.
Mit Hilfe des Wertes modbus_rtu_address können Sie die SlaveID einstellen. Eine SlaveID darf in einem Bus nur einmal vorkommen. Sollten Sie zum Beispiel mehrere SmartPi ein einem Modbus betreiben, stellen Sie die SlaveIDs dementsprechend um.
Über den Wert modbus_rtu_device_id kann die entsprechende serielle Schnittstelle ausgewählt werden. Dieser Wert muss eigentlich nicht verändert werden.
Modbus TCP
Bei Modbus TCP findet die Kommunikation über die Netzwerkschnittstelle (LAN oder WLAN) im Netzwerk statt.
Auch bei Modbus TCP finden Sie die Einstellungen in der Konfigurationsdatei /etc/smartpi.
[modbus]
modbus_rtu_enabled=0
modbus_tcp_enabled=0
modbus_rtu_address=1
modbus_rtu_device_id="/dev/serial0"
modbus_tcp_address=":502"
Sollte der Eintrag nicht in der Konfigurationsdatei vorhanden sein, können Sie den Eintrag einfach am Ende der Datei erstellen.
Um Modbus TCP zu aktivieren, stellen Sie den Wert modbus_tcp_enabled auf 1.
Der einzige weitere Parameter ist modbus_tcp_address. Mit diesen Wert kann die IP-Adresse und der Port eingestellt werden, auf dem der SmartPi lauscht.
Standard ist, dass auf allen IP-Adressen des SmartPis auf Port 502 gelauscht wird.
Modbus Register
Datentyp: IEEE-754 Floating Point
Register | Wert | |
---|---|---|
0 | I1 | MSB |
1 | LSB | |
2 | I2 | MSB |
3 | LSB | |
4 | I3 | MSB |
5 | LSB | |
6 | I4 | MSB |
7 | LSB | |
8 | U1 | MSB |
9 | LSB | |
10 | U2 | MSB |
11 | LSB | |
12 | U3 | MSB |
13 | LSB | |
14 | P1 | MSB |
15 | LSB | |
16 | P2 | MSB |
17 | LSB | |
18 | P3 | MSB |
19 | LSB | |
20 | CosPhi 1 | MSB |
21 | LSB | |
22 | CosPhi 2 | MSB |
23 | LSB | |
24 | CosPhi 3 | MSB |
25 | LSB | |
26 | F1 | MSB |
27 | LSB | |
28 | F2 | MSB |
29 | LSB | |
30 | F3 | MSB |
31 | LSB | |
32 | Balanced | MSB |
33 | LSB |