E-logger | Manualer | Forum

Modbus TCP

Från Loggerwiki
Hoppa till: navigering, sök

Innehåll

Modbus TCP

Logger 1010 och 3030 kan agera både Modbus TCP master och Modbus TCP slave, och bägge funktioner kan användas parallellt. Med funktionen Modbus TCP master kan Logger 1010 och 3030 läsa ut mätvärden från utrustning som stöder Modbus TCP. Via funktionen Modbus TCP slave kan utrustning som stöder Modbus TCP läsa ut mätvärden från Logger 1010 eller 3030.

Modbus TCP skiljer sig från "vanlig" Modbus (Modbus RTU) i det att kommunikation sker över nätverket istället för via en seriekabel*.

Modbus TCP kan alla versioner av Logger 1010 och 3030 köra eftersom alla loggrar har nätverkskontakt.

(*) Modbus RTU via seriekabel kräver Logger 1010 Modbus eller 3030 PRO, dvs en logger som har hårdvarustöd för den seriella standarden RS485. För modbus RTU via seriekabel finns inget som motsvarar "Modbus TCP slave" med vilken det går att läsa ut mätvärden från loggern, endast en masterfuktion där loggern kan läsa ut mätvärden från annan utrustning.

Driftläge och nätverksinställningar

För att använda Modbus TCP krävs att loggern står i driftläge E-logger eller LoggerSoft. Driftläge SD-kort kan ej användas eftersom loggerns nätverksstöd är inaktiverat i det läget.

Om Modbus TCP-anrop skall ske mot loggern i ett internt nätverk utan att uppkoppling mot omvärlden så måste driftläge LoggerSoft användas. Detta då driftläge E-logger förutsätter att loggern har kontakt mot webbtjänsten E-logger, och har den inte det kommer den att fastna i uppstartsfasen.

Loggern använder normalt DHCP (dynamisk ip-adress-tilldelning) för att erhålla ip-adress. Om DHCP-server saknas i nätverket går det att istället använda fast adress. Detta görs genom att gå till inställningsmenyn i loggern, välja nätverk och DHCP disabled och fylla i ip-adress manuellt.

För att loggerns interna klocka hela tiden skall gå rätt används NTP (utläsning av exakt tid via tidsserver på nätet). Om loggern körs i driftläge LoggerSoft i ett internt nätverk utan att kunna anropa en NTP-server kommer felmeddelandet "Internet err #2" att visas. Det finns två sätt att komma till rätta med det. Enklast är att stänga av NTP i loggerns inställningsmeny, då synkroniseras klockan inte längre och den kommer med tiden att visa mer och mer fel. Om det är viktigt att loggerns klocka går exakt rätt, vanligtvis om data skall lagras till SD-kort, kan det vara idé att installera en lokal NTP-server i det egna nätverket. För att nyttja egen NTP-server behöver ni skapa en DNS-post som pekar se.pool.ntp.org till er egen server.

Modbus TCP master

Med funktionen Modbus TCP master kan Logger 1010 och 3030 läsa ut mätvärden från utrustning som stöder Modbus TCP. Till exempel invertrar/växelriktare för solfångare, PLC:er, Modbus gateways och andra Logger 1010 eller 3030. Förutom standardprotokollet för Modbus TCP klarar Logger 1010 och 3030 även Eastrons protokoll mot Eastron LoraMesh-gateway ESP-6 för trådlös fjärravläsning av elmätare.

Givare för Modbus TCP skapas i givarinställningarna för loggern. Dessa givare fungerar sedan som vilken givare som helst i loggersystemet, det går att logga dem, skapa larm, styrningar osv.

För att kunna skapa en givare för Modbus TCP krävs en del information. IP-adress till enheten, portnummer på enheten samt modbusadress på enheten behöver man alltid ta reda på. För ett fåtal enheter finns sedan fördefinierade register så att det bara går att klicka på en parameter för att skapa en givare för den. Men det vanliga är det som kallas "egen definition", vilket innebär att man själv behöver ta reda på och fylla i rätt registerparametrar - utläsningsfunktion, registeradress, dataformat, omskalning och givartyp. Denna information kan ofta hittas under rubriken Modbus TCP i användarhandboken för den utrustning som skall läsas av. Om registerparametrarna inte går att hitta i användarhandboken kan man behöva kontakta tillverkaren av utrustningen.

Utläsningsfunktioner som stöds är 03 Read holding registers och 04 Read input registers. Registeradress kan vara mellan 0-65535. Dataformat som stöds är INT16/UINT16 (16-bitars heltal med/utan tecken), INT32/UINT32 (32-bitars heltal med/utan tecken), FLOAT32 IEEE 754 (flyttal), INT64/UINT64 (64-bitars heltal med/utan tecken). Och dessutom olika byteordningar såsom big-endian, little endian, för 32-bitarstal även omkastade bytes inom varje word (ABCD, DCBA, BADC, CDAB).

Mätvärden kan skalas om mellan /10000 till *10000. Tätaste avläsningsintervall är var 10:e sekund.

Exempel

Utläsning av temperatur från annan Logger 1010/3030

Utläsning av mätarställning från elmätare Carlo Gavazzi EM24 Modbus TCP

Utläsning av spänning fas 1 samt räkneverk från elmätare Eastron SDM630 LoraMesh

För att kunna läsa av Eastron LoraMesh-mätare trådlöst så behövs en ESP-6 radiokommunikationsmodul som placeras på loggersidan och ansluts med nätverkskabel till samma router som loggern.

Anropslogg Modbus TCP master

Anropsloggen visar en lista med information kring de senaste anropen för alla givare av typen Modbus-TCP. Praktiskt vid felsökning.

Loggen nås i webbläsare via loggerns ip-adress och sökvägen /mtmlog.

Exempel på adressfält i webbläsare:

http://192.168.1.23/mtmlog

Loggerns IP-adress syns i inställningsmenyn i loggern i menyvalet "Om". (Öppna under inga omständigheter upp brandväggen mot port 80 i loggern för att komma åt loggern utifrån, det kan utgöra en säkerhetsrisk.)

Följande visas i anropsloggen, med ett anrop per rad:

Modbus TCP slave

Via funktionen Modbus TCP slave kan till exempel en PLC, PC, Rasberry PI eller en annan Logger 1010 eller 3030 läsa ut mätvärden från Logger 1010 eller 3030.

Det finns två typer av utläsningsanrop mot loggern. Den första typen av anrop innebär att valfritt givarnummer läses av. Fördelen med detta är att mappningen är enkel. Nackdelen är att givarnummer kan ändras när givare kopplas in eller om, så det gäller att hålla koll på adresserna vid förändringar i givarna. Den andra typen av anrop finns bara på Logger 1010, det är ett anrop där alla HAN/H1-register från ansluten elmätare alltid ligger på samma adress.

En klient i taget kan vara uppkopplad mot loggern, ytterligare klienter kan inte koppla upp samtidigt. Om klienten själv inte kopplar ner TCP-förbindelsen kommer loggern själv att koppla ner efter 65 sekunders inaktivitet. Då kan en annan klient ansluta.

Mätvärden kan läsas ut via Modbus TCP var 10:e sekund som tätast. Det vill säga: gör avläsning 1, vänta 10 sekunder, gör avläsning 2, vänta 10 sekunder, gör avläsning 3, vänta 10 sekunder osv.

Viktigt: Modbus-TCP-anrop får endast ske i det egna lokala nätverket innanför en brandvägg. Aldrig över internet mellan olika platser. Öppna aldrig upp port 502 mot loggern för åtkomst från utsidan av en brandvägg, det kan utgöra en säkerhetsrisk. Om data behöver komma ut på det allmänna internet kan funktionen "Skicka mätvärden till egen webbserver" användas, då skickar loggern data med HTTP-anrop helt utan portöppning.

Utläsning valfri givare

Exempel på adresser:

Givare Adress
1 0
2 2
3 4
... ...

Utdataformat är float 32 big endian enligt IEEE 754

Utläsning alla HAN/H1-givare

HAN/H1 är endast tillgängligt på Logger 1010

För att mätvärden för HAN/H1 skall kunna läsas ut behöver HAN/H1-enheten först konfigureras i E-logger. Det görs genom att först lägga till HAN/H1-enheten och sedan skapa givare för de register som skall läsas av.

Utdata

Adress Register
1000 (1000) Effekt totalt import - momentaneffekt (W)
1002 (1001) Effekt totalt export (W)
1004 (1002) Reaktiv effekt import (W)
1006 (1003) Reaktiv effekt export (W)
1008 (1004) Ström fas 1 (V)
1010 (1005) Ström fas 2 (A)
1012 (1006) Ström fas 3 (A)
1014 (1007) Spänning fas 1 (V)
1016 (1008) Spänning fas 2 (V)
1018 (1009) Spänning fas 3 (V)
1020 (1010) Energi totalt import - räkneverk (kWh)
1022 (1011) Energi totalt export (kWh)
1024 (1012) Reaktiv energi totalt import (kWh)
1026 (1013) Reaktiv energi totalt export (kWh)

(Adresser inom parentes är alternativ adress. Hur adresserna visas beror på system, vissa system visar adresser utifrån 16-bitarstal, medan andra visar dem utifrån 32-bitarstal.)

Utdataformat är float 32 big endian enligt IEEE 754.

Observera att räkneverk för HAN bara skickas en gång i timmen från elmätaren på jämna klockslag. Det innebär alltså att från det att loggern startas kommer räkneverket att visa noll ända tills dess att klockan passerat jämn timme. Och sedan visar räkneverket samma till nästa jämna timme passerats.

Felkoder (exceptions)

Givare Adress
0x03 Illegal Data Value Försök att läsa ut för många register på en gång
0x02 Illegal Data Address Försök att läsa ut data från adress som inte finns
0x06 Slave/Server Device Busy Logger upptagen eller utläsningsanrop sker tätare än var 10:e sekund
0x0A Gateway Problem HAN/H1-enhet saknas
Det måste finnas minst en definierad givare av typ HAN/H1 för att kunna läsa ut värden

Anropslogg Modbus TCP slave

Anropsloggen visar en lista med de senaste anropen mot loggern. Praktiskt vid felsökning.

Loggen nås i webbläsare via loggerns ip-adress och sökvägen /mtslog.

Exempel på adressfält i webbläsare:

http://192.168.1.22/mtslog

Loggerns IP-adress syns i inställningsmenyn i loggern i menyvalet "Om". (Öppna under inga omständigheter upp brandväggen mot port 80 i loggern för att komma åt loggern utifrån, det kan utgöra en säkerhetsrisk.)

Följande visas i anropsloggen, med ett anrop per rad:

Längst nere, under raderna med anrop, visas följande information:

Manualer