Modbus

Vad är är Modbus?

Modbus är ett protokoll som många mätutrustningar använder för att tillgängliggöra aktuella avläsningar för andra system. Mätutrustningar med stöd för Modbus har en tabell med register som innehåller bland annat aktuella avläsningar. En så kallad ”master” kan ansluta till en eller flera mätutrustningar (kallade ”slavar”) och läsa aktuella värden från specifika register. Ofta är en master någon form av hårdvara så som exempelvis en PLC men även mjukvaror så som EasyView kan agera master.

Kom igång

Om du är ansluten till din enhet via USB-kabel eller via en USB till RS485-adapter så väljer du ”RTU” högst upp. Om du är ansluten till din enhet via nätverk så väljer ”TCP”.

Om du ska logga via Modbus TCP behöver du veta vilken IP-adress din enhet har samt vilken port som ska användas. Om enheten har display så kan ibland IP-adress och port gå att ta reda på där. I annat fall kan man ta reda på IP-adressen genom att logga in i nätverkets router. Standardporten för Modbus TCP är 502.

Om du ska logga via Modbus RTU behöver du veta COM-port, baudrate, paritet, stoppbitar och databitar. COM-port kan man ta reda på genom att se vilken COM-port som tillkommer i Enhetshanteraren i Windows när USB-kabeln ansluts. Övriga inställningar står ofta i manualen eller väljs i enhetens konfigurationsprogramvara. Om du är ansluten till en Flexible Huvudenhet via USB-jacket på framsidan av enheten så spelar baudrate, paritet, stoppbitar och databitar ingen roll.

När kommunikationsinställningarna är korrekta klickar du på ”Nytt register” längst ner för att lägga till ett nytt register. En ny rad bör nu byka upp i tabellen där du kan ange slavadress, register, antal decimaler, funktionskod, datatyp, benämning, enhet och intervall.

Om enheterna som du vill kommunicera med har display så står ofta slavadressen där. I annat fall kan man behöva använda enhetens konfigurationsprogramvara för att ta reda på och ändra slavadressen. Det är viktigt att inga enheter har samma slavadress. Om du är ansluten till en Flexible Huvudenhet via Ehternet eller via USB-jacket på framsidan så är slavadressen 255 som standard.

Vilka register som motsvarar vad, antal decimaler, funktionskod och datatyp står ofta angivet i enhetens manual. Notera att vissa tillverkare börjar räkna från register 1 medans andra räknar från register 0. EasyView börjar räkna från register 0 så om man stöter på bekymmer kan det vara bra att prova föregående register. Notera också att vissa tillverkare skriver ihop register och funktionskod. Står det exempelvis register 30001 i manualen så innebär det ofta att du i EasyView ska ange register 0 och funktionskod 04. Står det i 40001 så innebär det sannolikt att register 0 och funktionskod 03 ska användas.

Om det i manualen för din enhet står Int16*10 i tabellen med register så betyder det att värdet som enheten skickar är 10 gånger så stort vilket innebär att decimaltecknet ska flyttas ett steg för att värdet ska presenteras korrekt. I detta fallet ska man alltså ange 1 under antal decimaler. Om du använder en Flexible Huvudenhet så väljs antalet decimaler för respektive kanal i stället i konfigurationsprogramvaran. För att värdet ska presenteras korrekt är det viktigt att samma antal decimaler anges även i EasyView.

När du är färdig med konfigurationen och vill se så att allting fungerar så kan du klicka på ”Läs mätvärden...”. EasyView kommer då att läsa aktuella värden och skriva dem under ”Uppmätt värde” för respektive register. Innan du startar mätningen kan det vara bra att spara dina inställningar. Detta gör du genom att klicka på ”Spara mall...” högst upp. All konfigurering som du precis har gjort lagras då i en fil och kan enkelt läsas in igen genom att klicka på ”Öppna mall...”.

Exempel

Här nedan är ett exempel på hur en konfiguration för en Intab Flexible huvudenhet skulle kunna se ut. I detta fallet så är huvudenheten ansluten på nätverket och har 5 stycken PT100-givare anslutna på kanal 1-5. Varje kanal är inställda på att lagra 2 decimaler.

Felsökning

Om ”Uppmätt värde” blir rött och det står ”Misslyckades” så innebär det antingen att EasyView aldrig fick något svar, att svaret tog för lång tid eller att ett felaktigt register efterfrågades. Om detta inträffar så kan man börja med att bocka i ”Logga kommandon” och sedan välja var loggfilen ska lagras. Klicka sedan på ”Läs mätvärden...” och öppna sedan loggfilen. Varje rad i loggfilen har en tidsstämpel följt av antingen > eller <. Rader med > är det som skickats från EasyView och rader med < är ett svar. Finns det inget svar så innebär det med största sannolikhet att kommunikationsinställningarna är felaktiga.

Gör följande om du försöker hämta data via Modbus RTU:

  1. Kontrollera att angivna kommunikationsinställningar är korrekta.
  2. Kontrollera att slavadress och funktionskod är korrekta.
  3. Öka ”Tid mellan meddelande” och försök igen.

Gör följande om du försöker hämta data via Modbus TCP:

  1. Kontrollera att angiven IP-adress och port är korrekt.
  2. Kontrollera att slavadress och funktionskod är korrekta.
  3. Öppna kommandotolken på datorn, skicka ping följt av IP-adressen och se så att enheten svarar.
  4. Kontrollera så att kommunikation på angiven port är tillåten i brandväggen.

Om det finns ett svar i loggfilen men det ändå står ”Misslyckades” så kan det innebära att ett felaktigt register är angivet.