Er wordt uitgegaan van enige basis ervaring met Arduino boards en programming met de Arduino IDE.
Deze kleine proefschakeling is opgebouwd met een master en een enkele slave. De benodigde code is te vinden in downloads Master example en Slave example. Met de voorbeeld software kunnen de acht LEDs in en uit geschakeld worden. Draai hiervoor aan de rotary-encoder tot het nummer van de gewenste LED verschijnt. Druk dan op de drukknop van de encoder om In of Uit te schakelen. De analoge spanning, afgegeven door de potentiometer bij de slave wordt ook op het display getoond, door aan de potentiometer te draaien zie je de waarde veranderen. De LED standen worden opgeslagen, na uitschakelen en later weer inschakelen wordt de laatste toestand weer hersteld.
De software maakt gebruik van de bestaande Arduino-libraries "SimpleModbusMasterV2rev2" en "SimpleModbusSlaveV10" geschreven door Juan Bester. Deze kunnen via de Arduino site worden gedownload. Het gebruik ervan is voor ervaren C/C++ gebruikers eenvoudig, voor een beginner is wat toelichting gewenst. Met name de setup van de master en slave registers is een beetje onduidelijk. Via de setup moet je aangeven hoeveel "slaven" je wilt aansluiten en hoeveel lees en schrijf registers voor elke slaaf moet worden gereserveerd. Verder moet je een baudrate kiezen en welke digitale pin wordt gebruikt voor de RS485 Tx/Rx omschakeling en eventueel een serial port nummer.
De modbus Master en Slave libraries zijn o.a. te vinden op: Github.
Het totale aantal registers moet zo worden geteld: Als je bijvoorbeeld twee slaves wilt gebruiken, Slave 1 met drie schrijf registers en 1 lees register en Slave 2 met twee schrijf registers en vier lees registers dan is het totaal aantal registers 10 (vier voor slave 1 en zes voor slave 2).
Alle lees registers van een slave kunnen samen in 1 packet, voor alle schrijf registers is ook een packet nodig. In het bovenstaande voorbeeld zijn dus vier packets nodig.
In het onderstaande voorbeeld zie je een stukje uit de setup van de analoge ATV zender voor 23,6 en 3cm. Hier zijn zes packets gebruikt. De slaven hebben hier nummer 2, 3 en 4. Nummer 1 is niet in gebruik. Let ook op de getallen achter de blauwe letters: Het eerste nummer is het eerste register nummer van DIT packet, het tweede nummer is het totaal aantal registers in DIT packet. Het derde nummer tenslotte is is het eerste Master register nummer, deze nummering loopt door over alle slaven. in het commentaar (achter//) staat nog vermeld om welke master registers het gaat. Je ziet hier dat dit doornummert van regs[0] tot regs[13], een totaal van 14 registers.
Hiermee is de Master en Slave setup compleet. Het werken met de modbus is verder vrij eenvoudig. In het "loop" deel van de arduino sketch dient de instructie "modbus_update();" minimaal een keer voor te komen. Voor de rest kan er eenvoudig naar schrijfregisers worden geschreven:
regs[0]=RELAYS;
Ook het uitlezen van leesregisters is simpel:
potmeter= regs[1];
Zie hiervoor de voorbeeld sketches Master_example en Slave_example in Downloads.