Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

General

Resources

The Modbus protocol is one of the most widely used fieldbus communication protocols in the industry. The main reason for this is that no licence is needed and it is free to any user. Many producers of automation equipment have it as a standard integration into their in devices.
Modbus is a master-slave protocol that transmits over a bus through serial lines, ethernet or a wireless network. It can mainly be classified in RTU and TCP mode, where RTU directly transmits binary data over serial communication, while TCP allows transmission over a network. The figure shows a combination of the different modes using gateways.

Image Added
A Modbus message being sent from the master includes what action it is to perform in a function code. It could be read registers and would have information of which register to start at. In the message there is an error check field that allows the slave to check the message's integrity.


The function code from the master should be echoed back in a normal response, with the data collected by the slave. This would be as register values or status. Additionally, the code can be changed to respond there is an error, if one has been detected. 

Modbus TM-FLOW

Modbus CODESYS

Videre måtte vi grave oss inn i kommunikasjonsoppsettet til MODBUS protokollen. Det var mange manualer fra både CodeSys sin side:

For å kunne finne roboten måtte man ha en eldre versjon av TM FLOW, altså system versjon 1.88.2400.

Etter mange timer med prøving og feiling ble det endelig forstått hvordan oppsettet på Modbus dataen skulle legges inn.

I CODESYS blir det lagt inn

  • Holding registers for å lese data (WORD) fra OMRON PLS-en inn til WAGO-en
  • Coils for å sende BOOL Coil/booleans
  • Input registers for å sende WORD

Image Removed

For å sette innstillinger for variablene måtte det settes opp slik. Antallet avhenger av hvor mange variabler man vil sende over MODBUS:

Image Removed

Holding registers

For å lese inn holding registers data måtte variablene deklareres slik som i den øverste figuren ,og bli koblet til en variabel i et kjørende program (kan ikke bare mappes direkte til en global variabel).

Image Removed

For variabler som skal sendes til OMRON kan de bare mappes til variabelen.

Input register

Input registers blir brukt til å sende variabler i WORD format fra Wago PLC. Disse er relativt simple å sette opp og krever bare at man mapper variablene til det registeret det skal sendes på. Ettersom en setter det til WORD (16 bit)  må en passe på at variablene blir konvertert riktig når det skal sendes. I vårt tilfelle ble INT_TO_WORD brukt, siden robotkoordinatene var i mm, og vi ikke trengte høyere oppløsning en hele tall.

Coil/booleans

Coil/booleans

For å sende BOOL må en variabel deklareres til typen byte og bli koblet til en coil som vist under.

Image Removed

Image Removed

Deretter må en aktivere enkelte bits i byte variabelen. Det går ikke an å koble en enkelt bit til en BOOL uten å mappe til en byte.

Selve programstrukturen må se slik ut, med Ethernet porten og ei Slave lagt til i devices:

Image Removed

Ruter Setup

Ressurser

En egen ruter skulle kobles opp for å opprette et LAN som Wago PLS-en og roboten kunne kobles til. Da blir det også mulig å koble seg til systemet med PC-en trådløst, på det lukkede nettverket.

Image Removed

På dette nettverket skulle både Modbus RTU kommunikasjonen og MQTT protokollene kjøre. Utstyret som kom fra lageret på NTNU var ikke alltid like stabilt. Tre rutere ble testet før det fungerte til å sette opp nettverket.

Ettersom PLS-ene hadde en fastsatt IP-adresse, ble det bestemt at den skulle beholde samme adresse, for ikke å ødelegge dens innstillinger. Siden det ikke var en standard IP på 158.38.140.87, måtte oppsettet på ruteren endres. Gateway adressen ble endret til 158.38.140.1 for å gjøre det enkelt for Wago PLS-en å koble seg på.

Det fungerte fint på et lokalt nettverk fram til ruteren koblet ut, som skjedde med en av de første ruterne som ble prøvd. Hver gang ruteren ble resatt for å få tilbake kommunikasjonen ble den også satt til standard IP på 192.168.0.1.

For at enhetene ikke skulle miste kontakten, måtte de også bli tildelt statiske IP-adresser. I OMRON ble den nye Gateway adressen lagt inn slik at det skulle vite hvilket nettverk den skulle forvente en IP-adresse fra. Ettersom OMRON PLS og TM-5 roboten er separate systemer, hadde roboten også en helt annen IP-adresse. Dette ble heldigvis ikke noe problem for OMRON PLS-en.

Nettverksoppsettet til PLS-en ser slik ut:

 24_6 Modbus kommunikasjon

 og TM FLOW: