Modbus is na 30 jaar nog steeds een van de populairste industriële netwerken. Ook al lijkt het erg simpel in vergelijking met moderne protocollen, die eenvoud heeft blijkbaar ook zijn charme, zowel voor gebruikers als leveranciers. Geen XML, object-oriëntatie of OPC; gewoon bits en bytes, dat snapt elke programmeur. Zelfs in Ethernet blaast Modbus/TCP zijn partijtje mee, het is nog steeds de nr. 3 op de lijst (na ProfiNet en Ethernet/IP).

Functionaliteit

Ook qua werking is Modbus simpel: master/slave. De master geeft een opdracht, de slave voert dit uit en geeft antwoord terug. In principe wordt rechtstreeks gelezen uit/geschreven naar I/O registers of configuratieregisters van een slave. Dit is een aspect van Modbus dat niet gestandaardiseerd is, elke leverancier geeft hier een eigen invulling aan.

Als we refereren aan het OSI-model zien we dat Modbus alleen de datalinklaag en de applicatielaag invult: het formaat van de netwerkberichten is beschreven en de mogelijke commando’s (“functiecodes” in Modbus jargon). Het is vrij eenvoudig, en al decennialang hetzelfde. Wie de aloude seriële Modbus varianten kent, heeft weinig moeite met het begrijpen van het moderne Modbus/TCP (gebaseerd op TCP/IP).

Modbus legt ook de fysieke laag van een netwerk niet vast. Dat zal veelal RS-232 of RS-485 zijn, of tegenwoordig Ethernet. Maar omdat er in dit laatste geval nog TCP/IP tussen zit, kan Modbus/TCP óók werken op basis van internet, WiFi, GSM of Bluetooth.

Ingebruikname

De ingebruikname van een serieel Modbus netwerk (op basis van RS-232 of RS-485) is vaak lastig, omdat Modbus hier niets specificeert. Elke leverancier maakt zijn keuze, en dat is niet altijd makkelijk op elkaar aan te sluiten. Enige kennis van RS-232 / 485 is daarom wel nuttig.

Daarna komt de vraag: hebben met elkaar samenwerkende apparaten wel een gemeenschappelijke set functiecodes? De meeste hebben wel functiecodes 3 en 16, zeg maar de “read” en “write”, maar wie meer wil moet goed kijken wat er in elk apparaat aan extra ondersteuning is ingebouwd.

De laatste hobbel is vervolgens: hoe krijg ik de data aangeleverd? Gebruik van data die groter is dan 16 bits of floating-point data, dat kent Modbus niet (een erfenis uit de 90’er jaren). Het vereist enig uitzoekwerk bij het programmeren, en leveranciers helpen ook niet altijd mee door het slecht te documenteren.

Zelf maken

Het leuke aan Modbus is dat het eenvoudig zelf te maken is. Een gewone seriele poort of een TCP/IP protocolstack met Ethernet volstaat als netwerkinterface. Voor de protocolstack kan men putten uit véél open-source software (alhoewel de kwaliteit soms slecht is), maar ook zelf programmeren behoort tot de mogelijkheden.

“Modbus The Manual” boek

Auteur Rob Hulsebos werkt zelf al decennia met Modbus. Het viel hem op dat gebruikers steeds tegen dezelfde problemen aanlopen: bekabeling, configuratie, functiecodes, data. Er bleek echter nauwelijks literatuur over Modbus te vinden die deze zaken eens op een rij zet. Dit is in het boekje “Modbus The Manual” nu beschreven. Naast de beschrijving over het protocol bevat het veel tips uit de dagelijkse praktijk.

ISBN 978-946-386-7641 (Engelstalig), te koop via https://www.mijnbestseller.nl/shop of elke boekhandel, prijs ca. € 40.