Populaire vragen (FAQ's) zoeken
Wat is Modbus en hoe werkt het?
Wat is Modbus?
Modicon Modbus is een serieel communicatieprotocol dat in 1979 door Modicon ® ontwikkeld werd voor gebruik met Modicon PLC's (programmeerbare logic controllers). Eenvoudig gezegd is het een methode die wordt gebruikt voor het overbrengen van informatie over seriële lijnen tussen elektronische apparaten. Het apparaat dat de informatie aanvraagt wordt de Modbus-klant genoemd en de apparaten die informatie leveren zijn Modbus-servers. In een standaard Modbus-netwerk is er één client en maximaal 247 servers, elk met een uniek serveradres van 1 tot 247. De klant kan ook informatie naar de servers schrijven.
De officiële Modbus-specificatie is te vinden op http://www.modbus.org/
Waarvoor wordt het gebruikt?
Modbus is een open protocol, wat betekent dat fabrikanten gratis apparatuur kunnen inbouwen zonder royalty's te moeten betalen. Het is uitgegroeid tot een standaard communicatieprotocol in de industrie en is nu de meest gebruikte wijze om industriële elektronische apparaten te verbinden. Het wordt wijd gebruikt door vele fabrikanten in vele industrieën. Modbus wordt doorgaans gebruikt om signalen van instrumentatie- en besturingsapparaten terug te zenden naar een hoofdcontroller of een gegevensverzamelingssysteem, bijvoorbeeld een systeem dat de temperatuur en vochtigheid meet en de resultaten naar een computer communiceert. Modbus wordt vaak gebruikt om een supervisie-computer aan te sluiten op een remote terminal unit (RTU) in supervisie-en gegevensverwervingssystemen (SCADA). Er bestaan versies van het Modbus-protocol voor seriële lijnen (Modbus RTU en Modbus ASCII) en voor Ethernet (Modbus TCP).
Hoe werkt dit systeem?
Modbus wordt overgedragen over seriële lijnen tussen apparaten. De eenvoudigste installatie zou een enkele seriële kabel zijn die de seriële poorten op twee apparaten verbindt, een client en een server.
De gegevens worden verzonden als reeks enen en nullen, ook wel 'bits' genoemd. Elk bit wordt verzonden als voltage. Nullen zijn positieve voltages, enen negatieve voltages. De bits worden zeer snel verzonden. Een typische transmissiesnelheid is 9600 baud (bits per seconde).
Wat is hexadecimaal?
Bij probleemoplossing kan het handig zijn om de onbewerkte data te bekijken. Lange strings van enen en nullen zijn moeilijk te lezen, dus de bits worden gecombineerd en weergegeven in hexadecimaal. Elk blok van 4 bits wordt weergegeven door een van de zestien karakters van 0 tot F.
Elk blok van 8 bits (een byte genoemd) wordt weergegeven door een van de 256 karakterparen van 00 tot FF.
Hoe worden gegevens opgeslagen in de Standaard Modbus?
De informatie wordt opgeslagen in het serverapparaat in vier verschillende tabellen. Twee tabellen slaan discrete waarden (coils) aan/uit en twee numerieke waarden (registers) op. De coilsen registers hebben elk een alleen-lezen tabel en lees-schrijftabel. Elke tabel heeft 9999 waarden. Elke spoel of contact is 1 bit en heeft een data adres tussen 0000 en 270E. Elk register is 1 woord = 16 bits = 2 bytes en heeft ook een data-adres tussen 0000 en 270E.
Coil-/registernummers kunnen worden gezien als locatienamen, omdat ze niet voorkomen in de daadwerkelijke berichten. De data-adressen worden gebruikt in de berichten. Het eerste register, nummer 40001, heeft bijvoorbeeld het data-adres 0000. Het verschil tussen deze twee waarden is de offset. Elke tabel heeft een andere offset. 1, 10001, 30001 en 40001.
Wat is de server-id?
Aan elke server in een netwerk is een uniek adres van 1 tot 247 toegewezen. Wanneer de client data aanvraagt, is de eerste byte die hij verzendt het serveradres. Zo weet elke server na de eerste byte of het bericht wel of niet moet worden genegeerd.
Wat is een functiecode?
De tweede byte verzonden door de client is de functiecode. Dit nummer vertelt de server tot welke tabel toegang moet worden verleend en of de tabel moet worden gelezen of geschreven.
Wat is een CRC?
CRC staat voor Cyclic Redundancy Check. Het is twee bytes toegevoegd aan het einde van elk Modbus-bericht voor foutdetectie. Elke byte in het bericht wordt gebruikt om de CRC te berekenen. Het ontvangstapparaat berekent ook de CRC en vergelijkt deze met de CRC van het zendende apparaat. Als zelfs maar een bit in het bericht onjuist wordt ontvangen, zullen de CRCs anders zijn en zal er een fout ontstaan. .
Wat zijn de formaten van Modbus-opdrachten en antwoorden?
Wat zijn data-types?
Het voorbeeld van FC03 laat zien dat register 40108 AE41 bevat, wat converteert naar de 16 bits 1010 1110 0100 0001 Mooi! Maar wat betekent dit? Nou, het kan een paar dingen betekenen. Registreer 40108 kan worden gedefinieerd als een van de volgende 16-bits data-typen:
Een 16-bits niet-ondertekend geheel getal (een geheel getal tussen 0 en 65535) 40108 bevat AE41 = 44,609 (hex-naar-decimaal conversie)
Een 16-bits getekend geheel getal (een geheel getal tussen -32768 en 32767) AE41 = -20,927 (hex-naar-decimaal conversie die de omhulsels omhult, als het over-32767 dan 65536 aftrekken)
Een ASCII-tekenreeks van twee tekens (2 getypte letters) AE41 = ® A
Een discrete aan/uit-waarde (dit werkt hetzelfde als 16-bits gehele getallen met een waarde van 0 of 1. De hex-gegevens zouden 0000 of 0001 zijn) Registreer 40108 ook kan worden gecombineerd met 40109 om een van deze 32-bits data-typen te vormen:
Een 32-bits niet-ondertekend geheel getal (een getal tussen 0 en 4.294.967.295) 40108,40109 = AE41 5652 = 2.923.517.522
Een 32-bits getekend geheel getal (een getal tussen -2.147.483.648 en 2.147.483.647) AE41 5652 = -1.371.449.774
Een 32-bits dubbele precisie IEEE floating point-nummer. Dit is een wiskundige formule waarmee elk reëel getal (een getal met decimale punten) kan worden weergegeven door 32 bits met een nauwkeurigheid van ongeveer zeven cijfers. AE41 5652 = -4.395978 E-11 Hier is een spreadsheet IEEE float calculator voor ingangen van 4 bytes of 2 woorden. Als u een kopie wilt downloaden, klikt u met de rechter muistoets en selecteert u Doel opslaan als...
Een vier tekens tellende ASCII-string (4 getypte letters) AE41 5652 = ® A V R Meer registers kunnen worden gecombineerd om langere ASCII-strings te vormen. Elk register wordt gebruikt om twee ASCII-karakters (twee bytes) op te slaan.
Wat is volgorde van bytes en woorden?
De Modbus-specificatie definieert niet precies hoe de gegevens in de registers worden opgeslagen. Daarom hebben sommige fabrikanten Modbus geïmplementeerd in hun apparatuur om de hogere byte op te slaan en te verzenden, gevolgd door de lagere byte. (AE vóór 41). Anderen slaan als alternatief de lagere byte eerst op en zenden deze door (41 vóór AE). Wanneer registers worden gecombineerd om 32-bits data-types te vertegenwoordigen, slaan sommige apparaten de hogere 16 bits (hoog woord) op in het eerste register en het resterende lage woord in het tweede (AE41 vóór 5652), terwijl anderen het tegenovergestelde doen (5652 vóór AE41) Het maakt niet uit in welke volgorde de bytes of woorden worden verzonden, zolang het ontvangende apparaat weet welke manier het moet verwachten. Als bijvoorbeeld het nummer 29,235,175,522 als een 32-bits niet-ondertekend geheel getal moest worden verzonden, zou het op een van deze vier manieren kunnen worden gerangschikt.
AE41 5652 hoge byte eerste hoge woord eerst
5652 AE41 hoog byte eerste laag woord eerst
41AE 5256 lage byte eerste hoge woord eerst
5256 41AE laag byte eerste laag woord eerst
Wat is een Modbus-kaart?
Een Modbus-kaart is eenvoudigweg een lijst voor een individueel serverapparaat dat definieert - wat de data betreft (bijv. druk- of temperatuurmetingen).
- waar de gegevens worden opgeslagen (welke tabellen en data-adressen)
- hoe de gegevens worden opgeslagen (data-types, volgorde byte en woord )
Sommige apparaten zijn gebouwd met een vaste kaart die door de fabrikant is gedefinieerd. Terwijl andere apparaten de operator in staat stellen om een aangepaste kaart te configureren of te programmeren op basis van hun behoeften.
Wat is het verschil tussen Modbus ASCII en Modbus RTU?
Modbus RTU en Modbus ASCII praten middels hetzelfde protocol. Het enige verschil is dat de bytes die via de kabel worden verstuurd, gepresenteerd worden als binair met RTU en als leesbare ASCII met Modbus RTU. Belangrijk om op te merken over RTU is dat het RTU-bericht geen Start_of_text indicatie heeft. De ontvangende partij in de communicatie gebruikt een "stille" tijd om het begin van een nieuw bericht te bepalen. ASCII heeft een start-of-text token. Binaire berichten zijn korter dan ASCII en daardoor theoretisch sneller te verzenden/ontvangen. U kunt blij zijn om update rates van ongeveer 100 ms te zien in uw HMI/SCADA en kunt kiezen voor een van beide communicatiemogelijkheden.
Overzicht:
- gebruik van RTU is mogelijk
- gebruik ASCII voor het geval RTU time-out problemen geeft op WinNT of bij het gebruik van trage communicatiemmedia zoals 300 bps of dialup modems De meeste OPC Servers voor Modbus ondersteunen zowel ASCII als RTU communicatie.
Wat zijn extended registeradressen?
Aangezien het bereik van de analoge outputregisters 40001 is tot 49999, impliceert dit dat er niet meer dan 9999 registers kunnen zijn. Hoewel dit voor de meeste toepassingen meestal voldoende is, zijn er gevallen waarin meer registers nuttig zouden zijn. De te 40001 registers komen 49999 overeen met de data-dressen 0000 tot en met 270E. Als we de resterende data-adressen 270F tot FFFF gebruiken, kunnen er meer dan zes keer zoveel registers beschikbaar zijn, 65536 in totaal. Dit zou overeenkomen met registratienummers van 40001 tot 105536. Veel Modbus-softwaredrivers (voor client-pc's) zijn geschreven met de 40001 tot 49999 limieten en hebben geen toegang tot uitgebreide registers in serverapparaten. En veel server-apparaten ondersteunen geen kaarten met de extended registers. Maar aan de andere kant ondersteunen sommige server-apparaten deze registers wel en kunnen sommige Client-software er toegang toe krijgen, vooral als aangepaste software wordt geschreven.
Hoe werkt 2-byte server adressering?
Aangezien één enkele byte normaal wordt gebruikt om het serveradres te definiëren en elke server op een netwerk een uniek adres vereist, is het aantal servers op een netwerk beperkt tot 256. De in de modbus-specificatie gedefinieerde limiet is zelfs lager bij 247. Om verder te gaan dan deze limiet, kan een wijziging worden aangebracht aan het protocol om twee bytes te gebruiken voor het adres. De client en de servers zouden allemaal nodig zijn om deze wijziging te ondersteunen. Twee byte adressering verlengt de limiet van het aantal servers in een netwerk naar 65535. De Simply Modbus-software maakt standaard gebruik van 1-byte adressering. Wanneer een adres hoger dan 255 is ingevoerd, schakelt de software automatisch over op 2-byte adressering en blijft deze in deze modus staan voor alle adressen totdat de 2-byte adressering handmatig wordt uitgeschakeld.
Hoe kunt u gebeurtenissen en historische gegevens verzenden?
Enron Modbus bevat opdrachten voor het verplaatsen van gebeurtenissen en historische gegevens.
Wat is Enron Modbus?
Enron Modbus is een wijziging van het standaard Modicon Modbus-communicatieprotocol dat is ontwikkeld door Enron Corporation.