Modbus

is een protocol waarmee toestellen communiceren in een gebouw.

Werking

Modbus, niet te verwarren met M-Bus, een gelijkaardig klinkend protocol, bestaat al sinds 1979 en is nog steeds een zeer populaire manier van communicatie tussen toestellen in een gebouw.

Er is telkens een client (vroeger: master) die met hoogstens 247 servers (vroeger: slaves) in verbinding staat over een seriele lijn of per IP-adres.

Registers

Een Modbus server heeft registers, wat men kan zien als postbussen waar informatie in zit.

De holding registers zijn registers waar de client naar kan schrijven. Hier bevinden zich vaak de instellingen of parameters van het toestel.

De input registers kan de client uitlezen. Daar leven meestal metingen of andere informatie over het systeem.

Alle registers bevatten 16-bit waarden. Dit kunnen 16-bit signed of unsigned integers zijn, maar het kan ook dat bijvoorbeeld twee registers samen een 32-bit integer of een 32-bit float vormen. De interpretatie van de bits moet correct geimplementeerd worden aan de clientzijde om een juiste uitlezing te bekomen.

TCP/IP of RTU

Modbus kan gecommuniceerd worden over ethernet (TCP/IP) of seriële lijn met RTU (RS-485, RS-232).

Wij zullen altijd ethernet aanraden, vanwege de betrouwbaarheid ervan en ook omdat er naast Modbus ook andere informatie gecommuniceerd kan worden, zoals de web interface van een toestel.

Seriële bekabeling, kan gekozen worden om kosten te drukken bij installatie of wanneer er een toestel op een zeer grote afstand van al de rest ligt en een netwerkverbinding niet mogelijk is. Vaak zien we dat de besparing bij installatie terugbijt met extra werkuren vanwege debugging. Een seriële bus kan namelijk last hebben van ruis, inkoppeling, interacties tussen toestellen, moeilijker configuratie, … hierdoor kunnen de kosten soms veel hoger oplopen dan een netwerkverbinding te voorzien.

Modbus RTU

De bekabeling moet voorzien zijn van een 120 Ohm-weerstand na het laatste toestel op de bus. In tegenstelling tot M-Bus, moet er bij Modbus goed gelet worden op de – en + van de aansluiting (ook wel A en B in Modbus-taal)

De volgende instellingen moeten overeenkomen voor de client en alle servers op de bus:

  • Baud rate (meestal 9600 bits/s)
  • Stop bits (meestal 1 bit)
  • Parity (meestal None)

Ook moet elk toestel een unieke slave ID hebben, die dan door die client ook juist gekozen wordt.

Modbus TCP

Modbus TCP is een stuk eenvoudiger dan RTU. Daar moet enkel het juiste IP-adres gekozen worden. De slave ID wordt dan ook vaak op 1 gelaten, aangezien er meestal maar één server per IP-adres is.

De default poort waarover de communicatie gebeurt is 502, dus een firewall moet deze dan ook toelaten.

Een Modbus server heeft registers, wat men kan zien als postbussen waar informatie in zit.

De holding registers zijn registers waar de client naar kan schrijven. Hier bevinden zich vaak de instellingen of parameters van het toestel.

De input registers kan de client uitlezen. Daar leven meestal metingen of andere informatie over het systeem.

Alle registers bevatten 16-bit waarden. Dit kunnen 16-bit signed of unsigned integers zijn, maar het kan ook dat bijvoorbeeld twee registers samen een 32-bit integer of een 32-bit float vormen. De interpretatie van de bits moet correct geimplementeerd worden aan de clientzijde om een juiste uitlezing te bekomen.