Blog
Modbus TCP
Modbus-protokollens klare og enkle struktur har ført til, at andre producenter også har integreret Modbus i deres enheder. Modbus har således udviklet sig til en standard, der stadig er etableret i dag.
Herre/slave princippet
Modbus arbejder efter master/slave princippet. Det betyder, at der er mindst én master og mindst én slave.
Modbus-slaver er f.eks. B. PLC-styringer, Web-IO’er eller andre decentrale IO-moduler til digitale og analoge signaler.
Masteren er altid den kommunikationspartner, der tager initiativet, dvs. sender en forespørgsel eller det ønskede funktionskald til en slave. Hver slave har en unik adresse. Normalt er slaven rent passiv og reagerer kun, når den er specifikt adresseret med sin adresse.

Master/Slave – Klient/Server
Med den stigende betydning af TCP/IP Ethernet som transmissionsmulighed blev Modbus-protokollen tilpasset næsten 1:1 fra seriel datatransmission til TCP.
Modbus TCP arbejder efter klient/server-princippet, hvor masteren påtager sig rollen som klient, og slaverne fungerer som servere. Modbus-masteren skal derfor oprette en eksplicit TCP-forbindelse til hver Modbus-slave. Denne forbindelse forbliver på plads, så længe kommunikationen varer. Der oprettes ikke en ny forbindelse for hver anmodning.
Den standardiserede TCP-serverport til Modbus TCP er 502.
registre og variabler
Hukommelsesadresser eller registre af Modbus-masteren, dvs. klienten.
Man kan forestille sig det, som om Modbus-slaven, altså serveren, havde et skab med et stort antal skuffer, som alle er nummererede. Funktioner er tildelt skufferne.
Hvis Modbus-masteren ønsker at kalde visse oplysninger frem, indtaster den nummeret på det tilsvarende rum i sin anmodning og får indholdet tilbage fra Modbus-slaven.
Hvis Modbus-masteren vil udløse noget på slaven, f.eks. B. betjener en koblingsudgang, lægger han den nødvendige information i rummet med det tilsvarende nummer.
Som beskrevet i starten sker dette faktisk via tilsvarende hukommelsesadresser (registeradresser). Der er maksimalt 65536 adresser tilgængelige. Hvilken funktion er defineret bag hvilken – er derfor ikke specificeret ensartet.
Som regel er hukommelsen opdelt i områder efter funktioner.
| betegnelse | datatype | adgang | beskrivelse |
|---|---|---|---|
| diskret | 1 bit | bare læs | digital indgang eller skiftetilstand |
| spole | 1 bit | Læse skrive | digital udgang eller skiftetilstand |
| input registre | 16-bit | bare læs | Værdi mellem 0 og 65535 eller analog værdi eller tællerværdi |
| holde register | 16-bit | Læse skrive | Værdi mellem 0 og 65535 eller analog værdi eller tællerværdi |
Funktionskode
Inden for Modbus-protokollen angiver funktionskoder, hvilken datatype der skal tilgås og hvordan. Her er en liste over de mest almindelige funktionskoder:
| FC (dec.) | FC (hex.) | beskrivelse |
|---|---|---|
| 01 | 0x01 |
Aflæsningsspoler |
| 02 | 0x02 |
Læs diskrete indgange |
| 03 | 0x03 |
Læs holdregistre |
| 04 | 0x04 |
Læs |
| 05 | 0x05 |
Skriv enkelt spole |
| 06 | 0x06 |
Skriv enkelt register |
| 15 | 0x0F |
Skriv flere spoler |
| 16 | 0x10 |
Skriv flere registre Skriv flere |
| 07 | 0x07 |
Læs undtagelsesstatus Anmodningsfejlstatus |
Modbus protokol struktur
Modbus TCP-protokolrammen har følgende struktur:

Transaktions-id
Transaktions-id’et er noget som et anmodningsnummer og øges med et af masteren for hver anmodning. Klienten svarer med det samme transaktions-id.
Protokol ID
Altid 0 med Modbus TCP.
Længde
Længde af Modbus-data i bytes plus to.
Enheds-ID
Med den serielle Modbus-protokol var dette adressen på slaven. Feltet er blevet vedtaget af hensyn til kompatibilitet. Med Modbus-TCP sker den unikke adressering dog via slavens IP-adresse.
Funktionskode
Modbus-protokollen bruger nummererede funktionskoder til at definere, hvad anmodningen sendt af masteren skal udløse på slaven.
Modbus Data
Modbus dataområdet er fyldt med forskelligt indhold afhængigt af den anvendte funktionskode og kan derfor variere i størrelse. Dataretningen spiller også en rolle i strukturen af Modbus-dataområdet.
Med dataretningen master til slave indeholder de første to bytes altid den hukommelsesadresse, der skal adresseres.

Følgende eksempel viser, hvordan en Modbus-TCP-pakke ser ud, når to registre med funktionskode 3 hentes fra hukommelsesadressen 0x1020.

Svarpakken er struktureret anderledes. Antallet af overførte registerbytes er indkodet i den første byte af Modbus-data. Indholdet af de ønskede registre er i de næste 4 bytes.

På trods af den klare protokolstruktur tilbyder Modbus TCP stor fleksibilitet til industriel kommunikation.
Tip: Vær opmærksom på, om enhedsproducenten angiver værdierne i decimal eller hexadecimal, når du beskriver hukommelsesadresserne .