Hoe kunnen we helpen?
Subroutine: Modbus Master RTU voor lezen van houdingsregisters, lezen van ingangsregisters en schrijven van houdingsregisters
Deze Modbus Master-subroutine is erg handig als je onze ongelooflijke ACE PLC wilt gebruiken voor lezen of schrijven in Modbus RTU-slaveapparaten.
Als je de ACE PLC wilt verbinden met een frequentieregelaar, een intelligente sensor, een eenvoudig display, I/O op afstand of zelfs een ACE PLC!
Met deze subroutine kun je:
- Holdingregisters lezen – Functiecode 03
- Ingangsregisters lezen – Functiecode 04
- Holdingregisters schrijven – Functiecode 06
Je kunt de subroutine met het bijbehorende voorbeeld hierdownloaden .
Let op, deze Modbus Master is niet zo snel als een native Modbus Master. Bekijk deze video om een idee te krijgen.
We peilen 8 Modbus slave temperatuursensoren op het RS485 netwerk. (ACE-1430)
Hoe werkt de Modbus Master subroutine?
Je ACE PLC moet worden geconfigureerd als Type = “Custom” seriële poort.

Importeer in je project de 2 subroutines via de knop “Add Subroutine” (Subroutine toevoegen):
- MBCRC16
- ModbusMaster

Definieer je Modbus-verzoeken om gegevens te lezen en te schrijven. Het is erg belangrijk om eerst de data te lezen en dan de andere te schrijven.
In ons voorbeeld willen we deze Modbus-registers lezen en schrijven:
| Nummer ” n ” van de Modbus Request | Slave-ID van het Modbus-slaveapparaat SlaveID |
Lezen of schrijven in het register ? Functiecode |
Adres in het Modbus-register ? Register |
| 01 | 03 (Holdingregisters lezen) | 00 | |
| 01 | 03 (Holdingregisters lezen) | 01 | |
| 01 | 06 (Holdingregisters schrijven) | 02 (In ons voorbeeld schrijven we 65432) | |
| 01 | 06 (Holdingregisters schrijven) | 03 (We schrijven in de tag “ValueMove” in ons voorbeeld) |
We gebruiken een array van “n” elementen voor elke parameter
Stel deze tags in:
Als je bijvoorbeeld maar 3 registers hebt om te lezen/schrijven, kun je de array aanpassen van 16 naar 3. |
![]() ![]() |
| Nu kun je je array aanvullen met de 3 waarden voor elk Modbus-verzoek:
We beginnen met n = 0
en volgende… n = 1
… < ! > Belangrijk: De laatste regel moet zijn SlaveID[n 1] = 00, in ons voorbeeld SlaveID[4] = 00 |
![]() |
| En voeg nu de ModbusMaster subroutine toe!
Je moet deze subroutine bij elke PLC-cyclus aanroepen. |
![]() |
U haalt uw gegevens op in de Data
Als je de write-functie gebruikt, vergeet dan niet de waarde in te voeren. In ons voorbeeld schrijven we 65432 in Data




