How Can We Help?
Unterroutine: Modbus Master RTU für Read Holding Registers, Read Input Registers und Write Holding Registers
Diese Modbus Master Subroutine ist sehr nützlich, wenn Sie unsere unglaubliche ACE PLC zum Lesen oder Schreiben in einem Modbus RTU Slave Gerät verwenden möchten.
Wenn Sie die ACE SPS an einen Frequenzumrichter, einen intelligenten Sensor, ein einfaches Display, Remote I/O oder sogar eine ACE SPS anschließen möchten!
Diese Subroutine ermöglicht es Ihnen:
- Lesen von Holding-Registern – Funktionscode 03
- Lesen von Eingangsregistern – Funktionscode 04
- Schreiben von Holding-Registern – Funktionscode 06
Sie können die Subroutine mit dem Beispiel hierherunterladen .
Achtung, dieser Modbus Master ist nicht so schnell wie ein nativer Modbus Master. Sehen Sie sich dieses Video an, um eine Vorstellung zu bekommen.
Wir fragen 8 Modbus-Slave-Temperatursensoren über das RS485-Netzwerk ab. (ACE-1430)
Wie funktioniert das Unterprogramm Modbus Master?
Ihre ACE SPS muss als Typ = „Custom“ serielle Schnittstelle konfiguriert sein.
Importieren Sie in Ihr Projekt die 2 Unterprogramme über die Schaltfläche „Add Subroutine“:
- MBCRC16
- ModbusMaster
Definieren Sie Ihre Modbus-Anforderungen zum Lesen und Schreiben von Daten. Es ist sehr wichtig, dass Sie zuerst die Daten lesen und dann die anderen schreiben.
In unserem Beispiel wollen wir diese Modbus-Register lesen und schreiben:
Nummer “ n “ der Modbus-Anfrage | Slave-ID des Modbus-Slave-Geräts SlaveID |
Lesen oder Schreiben im Register ? FunktionsCode |
Adresse im Modbus-Register ? Register |
01 | 03 (Lesen von Holding-Registern) | 00 | |
01 | 03 (Lesen von Halteregistern) | 01 | |
01 | 06 (Schreiben von Holding-Registern) | 02 (In unserem Beispiel schreiben wir 65432) | |
01 | 06 (Schreiben von Holding Registern) | 03 (In unserem Beispiel schreiben wir in den Tag „ValueMove“) |
Wir verwenden ein Array mit „n“ Elementen für jeden Parameter
Richten Sie diese Tags ein:
Wenn Sie zum Beispiel nur 3 Register lesen/schreiben müssen, können Sie das Array von 16 auf 3 anpassen. |
Nun können Sie Ihr Array mit den 3 Werten für jede Modbus-Anfrage vervollständigen:
Wir beginnen mit n = 0
und weiter… n = 1
… < ! > Wichtig: Die letzte Zeile muss SlaveID[n 1] = 00 sein, in unserem Beispiel SlaveID[4] = 00 |
Und fügen Sie jetzt einfach das Unterprogramm ModbusMaster hinzu!
Sie müssen dieses Unterprogramm bei jedem SPS-Zyklus aufrufen. |
Sie erhalten Ihre Daten in der Datei Data
Wenn Sie die Schreibfunktion verwenden, vergessen Sie nicht, den Wert einzugeben. In unserem Beispiel schreiben wir 65432 in Data