Modbus TCP
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 kunna 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 då nätverket är inaktiverat i det läget.
När loggern startar används 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.
Varje gång loggern startar ställs dessutom den interna klockan över nätverket via NTP (utläsning av exakt tid via allmänna tidsservrar). Om loggern körs i driftläge LoggerSoft i ett internt nätverk utan att kunna anropa en NTP-server kommer ett felmeddelande 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 klocka 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
- Gå till E-logger->Inställningar->Givare.
- I panelen "Seriella/TCP-enheter Modbus/M-bus/HAN/H1" klicka "Lägg till Modbus TCP-enhet"
- Namn = Logger #2
- IP-adress = den andra loggerns ip-adress, exempelvis 192.168.36
Loggerns IP-adress syns i inställningsmenyn i loggern i menyvalet "Om". - Port = 502
- Enhetstyp = Egen definition
- Modbusadress = 0
- Avläsningsintervall = önskat avläsningsintervall, var 10:e sekund kan vara lämpligt.
- Klicka "Lägg till"
- I panelen "Seriella/TCP-enheter Modbus/M-bus/HAN/H1" klicka "Hantera" för den nyss tillagda enheten
- Gå till panelen "Skapa givare"
- Välj utläsningsfunktion 04 Read Input Register
- Registeradress = 12
Vi vill här läsa ut givare 7, då är adress = (7-1)*2=12. - Dataformat FLOAT32 big endian ABCD
- Omskalning = Ingen
- Givartyp = Temperatur
- Klicka "Lägg till"
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.
- Gå till E-logger->Inställningar->Givare.
- I panelen "Seriella/TCP-enheter Modbus/M-bus/HAN/H1" klicka "Lägg till Modbus TCP-enhet"
- Namn = Garage
- IP-adress = ip-adress till ESP-6, default är 192.168.1.200
Inställningar i ESP-6 kan göras från pc med Eastron-mjukvaran "EEM Lora Setting EU868". - Port = 502
- Enhetstyp = LoraMesh Eastron SDM630
- Serienummer = enhetens serienummer
Serienummer, står tryckt på elmätaren "SN:XXXXXXXX". - Avläsningsintervall = önskat avläsningsintervall, 1 gång i minuten kan vara lämpligt.
LoraMesh-enheter tar ett tag att läsa av, så vid många givare kommer alltför tätt intervall inte att hinnas med. - Klicka "Lägg till"
- I panelen "Seriella/TCP-enheter Modbus/M-bus/HAN/H1" klicka "Hantera" för den nyss tillagda enheten
- Klicka "Lägg till" på raden för "Spänning fas 1".
- Klicka "Lägg till" på raden för "Räkneverk ".
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:
- Klockslag för senaste anrop
- Givarnummer
- Givarnamn
- IP-adress och port
- Tid för uppkoppling i ms (Tc)
- Svarstid i ms (Tr)
- Ev. exception/felkod från anropad enhet (Ex)
- Resultat av anropet, ex "OK" om ok eller "TIMEOUT" vid timeout från anropad enhet.
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
- IP-adress = loggerns ip-adress
Loggerns IP-adress syns i inställningsmenyn i loggern i menyvalet "Om". - Port = 502
- Modbus-id = 0
- Funktion = 4 Read Input Register
- Adress motsvarar (givarnummer-1)*2
- Antal register = 2 per givare
Max 28 på en gång, dvs max 14 givare per avläsningsanrop
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.
- IP-adress = loggerns ip-adress
Loggerns IP-adress syns i inställningsmenyn i loggern i menyvalet "Om". - Port = 502
- Modbus-id = 0
- Funktion = 4 Read Input Register
- Adress = 1000
- Antal register = 28
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 |
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:
- Klockslag för senaste anrop
- Ip-adress från vilket anropet skedde
- Modbusadress (DAd)
- Registeradress (RAd)
- Antal register att läsa ut (Pt)
- Ev. exception/felkod från anropad enhet (Ex)
- Utläst värde - det sista om flera register/points vid samma utläsning (Val)
Längst nere, under raderna med anrop, visas följande information:
- Hex-rådata för senaste anropet
- Om någon klient är ansluten samt antal sekunder kvar till nedkoppling