• No results found

Modbuskommunikation mellan PLC och växelriktare

N/A
N/A
Protected

Academic year: 2021

Share "Modbuskommunikation mellan PLC och växelriktare"

Copied!
46
0
0

Loading.... (view fulltext now)

Full text

(1)

Modbuskommunikation mellan PLC och växelriktare

Hantering av register och implementeringsmöjligheter

Modbus communication between PLC and inverter How to handle registers and possible implementations

Andreas Råberg

Ett samarbete mellan Karlstads universitet och Rejlers

Fakulteten för natur, hälsa- och teknikvetenskap Högskoleingenjörsprogrammet i elektroteknik Examensarbete 22,5hp

Stefan Hedberg - Karlstads universitet & Marcus Eriksson - Rejlers Magnus Mossberg

2020-06-05

(2)

Förord

Stort tack till Marcus Eriksson på Rejlers i Göteborg för all handledning och goda samtal. Det har varit ett privilegium att få ha dig som handledare under detta projekt både som teknisk mentor och medmänniska i livet. Tack till Daniel på Industry för experthjälp i all typ av datakommunikation och säkerheten kring det. Tack till Mikael på kontoret för all support med datorer, kablar och patchning.

Tack till Jimmy på Industry som tillhandahållit apparater, mätinstrument och verktyg. Tack till Niklas och Anders på Embriq för all experthjälp med IT system och säker dataöverföring. Tack till alla på Rejlers kontor i Göteborg som delat med sig av förslag, ställt nyfikna frågor eller bara tittat förbi på kontoret och skapat skön stämning på arbetsplatsen. Tack till Jan Bengtsson och Patrik Casteborn båda enhetschefer på Rejlers i Göteborg för att jag fick möjligheten att göra detta projekt hos er. Nu när projektet nått sitt slut kan jag säga att Rejlers i Göteborg är en arbetsplats där lärandet finns i fokus, där ”Home of the learning minds” inte bara är en slogan för Rejlers utan en reell del i verksamheten som får den att blomstra och utvecklas. Jag känner både tacksamhet och glädje för att jag fått uppleva en sådan arbetsplats. Till sist men inte minst vill jag tacka Stefan Hedberg på Karlstads universitet för all handledning under projektet både med det tekniska och rapportskrivningen. Uppskattar mycket våra lärande samtal under projektets gång och att du tagit dig tid att svara på alla mina frågor och funderingar i stort och smått.

(3)

Sammanfattning

Mätning av elproduktion i solcellsparker och i större installationer sker vanligtvis med separata elmätare inbyggda i respektive växelriktare eller med externa elmätare för grupper av växelriktare. I större installationer kan det även förekomma växelriktare med olika märken. Lösningar för att sammanställa elproduktionsdata från olika växelriktare och märken är ofta kostsamma, vilket har skapat behov av att sammanställa elproduktionsdata på ett effektivare sätt och med färre apparater.

Utöver elproduktion finns även en stor mängd data tillgänglig i en växelriktare som kan vara användbar vid driftövervakning och utvärdering av prestanda.

I samarbete mellan Karlstads universitet och Rejlers i Göteborg undersöktes möjligheten att använda en PLC (Programmable Logic Controller) för att sammanställa data från en växelriktare. Både PLC och de flesta växelriktare använder Modbus® som protokoll för att kommunicera med andra apparater.

Målet med projektet var att skapa en fungerande kommunikation mellan vald PLC och växelriktare för att hämta driftdata från växelriktaren och antingen spara informationen som Rejlers IT division Embriq kan hämta eller skicka direkt till Embriq.

I projektet upprättades kommunikation mellan PLC och växelriktare via Modbusprotokollet där vald PLC klarade av att hämta och sammanställa information från vald växelriktare. PLC:n hade även begränsningar som försvårade hanteringen av hämtade driftdata och sändning till Embriq. Rapporten ger förslag på hur hämtade driftdata kan hanteras i PLC:n och alternativ till säker överföring till Embriq.

(Modbus® is a registered trademark of Schneider Electric, licensed to the Modbus Organization, Inc.)

(4)

Abstract

Measurement of electricity production in solar parks and in larger installations is usually done with separate electricity meters built into each inverter or with external electricity meters for groups of inverters. In larger installations there may also be inverters with different brands. Solutions for compiling electricity production data from different inverters and brands are often costly, which has created the need to compile electricity production data more efficiently and with fewer devices. In addition to electricity production, a large amount of data is also available in an inverter that can be useful in operation monitoring and performance evaluation.

In collaboration between Karlstad University and Rejlers in Gothenburg, the possibility of using a PLC (Programmable Logic Controller) was explored to compile data from an inverter. Both PLC and most inverters use the Modbus® protocol to communicate with other devices.

The objective of the project was to create a working communication between the selected PLC and inverter to retrieve operating data from the inverter and either save the information that Rejlers IT division Embriq can retrieve or send directly to Embriq.

In the project, communication was established between PLC and inverter via the Modbus protocol where the selected PLC was able to retrieve and compile information from the selected inverter. The PLC also had limitations that made it difficult to handle retrieved operating data and transmission to Embriq. The report provides suggestions on how retrieved operational data can be handled in the PLC and alternatives for secure transfer to Embriq.

(Modbus® is a registered trademark of Schneider Electric, licensed to the Modbus Organization, Inc.)

(5)

Förkortningar

ADU – Application Data Unit ARP – Address Resolution Protocol

ASCII – American Standard Code for Information Interchange

CIGS – en sammanslagning av de första bokstäverna från de grundelement som solcellspanelen är gjord av; koppar - Cu, indium - In, gallium - Ga och selen – Se

CM – Common mode

csv – Comma-separated values EMI – Elektromagnetisk interferens FAT – File Allocation Table

IDE – Integrated Development Environment IP – Internet Protocol

LAN – Local Area Network

LSB – Least significant bit (Kan betyda Least significant byte men den betydelsen används ej i denna rapport)

MBAP - Modbus Application Protocol MPPT – Maximum Power Point Tracking

MSB – Most significant bit (Kan betyda Most significant byte men den betydelsen används ej i denna rapport)

OPC UA – Open Platform Communications Unified Architecture PDU – Protocol Data Unit

PICS – Protocol Implementation Conformance Statement PLC – Programmable Logic Controller

RS – Recommended Standard RTU – Remote Terminal Unit

SCADA – Supervisor Control And Data Acquisition SMA – System Mess Anlagentechnik (Företag) TCP – Transmission Control Protocol

VPN – Virtual Private Network WAN – Wide Area Network

(6)

Figurer

Figur 1: Koppling RS232. ... 3

Figur 2: RS485 koppling med halv och full duplex. ... 5

Figur 3: Exempel på kopplingsschema för RJ45 vid användning av Modbus TCP. ... 5

Figur 4: Kommunikationsmodell för Modbus TCP (gjord efter [13]). ... 6

Figur 5: Olika lager med protokoll för dataöverföring via Ethernet (gjord efter [13]). ... 6

Figur 6: PDU som innehåller funktionskod och data (gjord efter [12]). ... 6

Figur 7: ADU för Modbus RTU (gjord efter [12]). ... 7

Figur 8: ADU för Modbus TCP (gjord efter [13]). ... 7

Figur 9: Felfri eller ej felfri transaktion av PDU (gjord efter [14]). ... 8

Figur 10: PLC modell TM221CE16R. ... 12

Figur 11: MAC-adress för Schneider PLC TM221CE16R. ... 12

Figur 12: Exempel på inställning av IP adress och Subnet Mask i Machine Expert Basic. ... 13

Figur 13: Exempel på inställning av Modbus TCP i Machine Expert Basic. ... 13

Figur 14: Channel assistant i Machine Expert Basic som skapar kommunikationskanaler mellan PLC och server. ... 14

Figur 15: Exempel på inställning av kommunikationskanal i Channel assistant. ... 14

Figur 16: Lista med minnesobjekt i PLC under fliken Programming. ... 15

Figur 17: Funktionsblocket DATALOG. ... 16

Figur 18: Växelriktare Sunny tripower 3.0 från SMA. ... 17

Tabeller

Tabell 1: Olika benämning på ut- och ingångar vid seriell kommunikation. ... 4

Tabell 2: Sanningstabell för differensen mellan ledarna i RS485. ... 4

Tabell 3: Exempel på Modbus olika funktionskoder. ... 8

Tabell 4: Exempel på transaktion mellan klient och server. ... 9

Tabell 5: Exempel på 2-komplement och dess decimala värde. ... 10

Tabell 6: Modbus registertyper med dess specifika adresseringsområden. ... 11

Tabell 7: Förinställda datatyper i Machine Expert Basic. ... 16

Tabell 8: Modbus funktionskoder som SMA använder. ... 17

Tabell 9: SunSpecs olika datatyper. ... 17

Tabell 10: Beskrivning av rubrikerna i PICS tabellerna för växelriktaren. ... 18

Tabell 11: Exempel från växelriktarens PICS tabeller. ... 18

Tabell 12: Utrustning och materiel som använts. ... 20

(7)

Innehåll

1 Inledning ... 1

1.1 Bakgrund ... 1

1.2 Syfte ... 1

1.3 Mål ... 1

1.4 Arbetets upplägg ... 2

1.5 Begränsningar ... 2

2 Teori ... 3

2.1 Modbus ... 3

2.2 Controller ... 12

2.3 Växelriktare och SunSpec ... 17

2.4 Säker dataöverföring ... 19

3 Utförande ... 20

3.1 Utrustning ... 20

3.2 Konstruktion av laborationsplattform ... 22

3.3 Idrifttagning och inställning av växelriktare ... 23

3.4 Konfiguration av PLC ... 23

3.5 Kommunikation med Modbusprotokollet ... 23

3.6 Programmering av PLC ... 24

3.7 Överföring av data till Embriq ... 24

4 Resultat ... 26

4.1 Hämtning av olika datatyper och storlek ... 26

4.2 Logga data i SD kort ... 26

4.3 Skicka data till Embriq ... 28

5 Slutsatser ... 29

Referenser ... 31

Bilaga A ... 33

Bilaga B ... 36

Bilaga C ... 37

(8)

1

1 Inledning

1.1 Bakgrund

Det finns behov av att sammanställa elproduktion i solcellsparker och i större installationer på fastigheter där det förekommer olika fabrikat på växelriktare. I dagsläget mäts produktionen oftast med separata elmätare som är kopplade till respektive grupp av växelriktare som är inkopplade på samma undercentral i en fastighet eller på samma lokala transformator i en solcellspark.

En extern/universell controller ger möjlighet för ägare till solcellsanläggningar med flera olika växelriktarfabrikat och/eller installationsplatser att bli oberoende av respektive solcellsentreprenörs installerade apparater för datainsamling och hantering. Exempelvis kan detta ge möjlighet till flexibla visualiseringslösningar. Det kan också möjliggöra en enhetlig sammanställning av driftdata från växelriktare såsom jämförelse mellan olika MPPT (Maximum Power Point Tracking), växelriktares arbetstemperaturer, DC-strömmar och spänningar med mera.

Vidare kan en extern/universell controller användas mer brett i fastigheter för att även samla data från exempelvis solinstrålningsgivare, elkonsumtionsmätare etc. och sammanställa detta enhetligt, vilket kan komma att möjliggöra ökad integrering av solcellsanläggningar i fastigheters energisystem.

Rejlers önskar en lösning med en controller som kan kommunicera direkt med flera växelriktare oberoende av fabrikat och spara eller skicka informationen direkt till Rejlers IT division Embriq som hanterar data inom energibranschen.

En typ av controller som uppfyller kriterierna för att både hämta och sammanställa driftdata från växelriktare och hantera externa givare är PLC (Programmable Logic Controller). Både PLC och de flesta växelriktare använder Modbusprotokollet för att kommunicera med andra apparater. PLC är dessutom en relativt billig hyllvara och kan på ett enkelt sätt programmeras och installeras.

1.2 Syfte

Syftet med projektet är att skapa en kunskapsbank om växelriktares och PLC:s sätt att kommunicera med Modbusprotokollet, utvärdera vald PLC samt skapa en grund för fortsatt utveckling med PLC:n så att den kan användas som färdig produkt med olika tjänster där information till Embriq är en.

1.3 Mål

Målet med projektet är att skapa en fungerande kommunikation mellan vald PLC och växelriktare som kommunicerar med Modbusprotokollet för att hämta driftdata från växelriktaren. Målet är också att antingen spara driftdata i någon typ av lagringsmedia som Embriq kan hämta alternativt att PLC:n sammanställer driftdata som sedan skickas direkt till Embriq.

(9)

2

1.4 Arbetets upplägg

Inledningsvis undersöks hur Modbusprotokollet fungerar som underlag till inställning och programmering av vald PLC. Därefter undersöks det program som används för att konfigurera och programmera PLC:n. Även uppbyggnaden av växelriktarens register undersöks samt hur säker överföring till Embriq kan lösas.

För att hämta driftdata från växelriktare i ett solcellssystem byggs en laborationsplattform bestående av solpaneler, en växelriktare och en PLC. Vid utvärdering av PLC:n testas först hämtning av växelriktarens olika datatyper som förekommer i dess register. Efter detta testas lagring av hämtade driftdata och därefter undersöks överföring till Embriq.

1.5 Begränsningar

Växelriktare är en dyr produkt vilket föranleder till att endast en köps in till projektet. Då Modbusprotokollet fungerar på samma sätt oavsett vilken apparat som använder det, kan informationen om Modbusprotokollet i detta projekt användas på andra fabrikat av växelriktare.

Den PLC som kommer användas i projektet är dels en av de billigare på marknaden samt att den redan var inköpt innan projektet startades. Tanken med att använda en av de billigare varianterna av PLC är inte bara för att hålla nere budgeten i projektet utan även utvärdera en så billig produkt som möjligt för att kunna erbjuda konkurrenskraftigt pris till kund. I och med att mesta delen av projektets pengar går till växelriktaren, testas endast den redan inköpta PLC:n.

(10)

3

2 Teori

2.1 Modbus

Modbus är ett protokoll för seriell kommunikation som innebär att en bitström, det vill säga en följd av ettor och nollor skickas på en tråd. Motsatsen är parallell kommunikation där flera trådar används för att skicka en etta eller nolla i varje tråd. Ett protokoll som Modbus är hur ettor och nollor ska skickas i bestämda mönster för att sändare och mottagare ska kunna tolka bitströmmen. [18]

Modbus utvecklades av Modicon 1979 för att användas till kommunikation i deras PLC-baserade system. Modbus är ett öppet protokoll och är bland det mest använda protokoll för kommunikation mellan elektroniska apparater inom industrin. Modbus protokollet kan användas för trådlös kommunikation eller trådbunden med RS232, RS485 eller Ethernet. [1, 18]

När RS232 eller RS485 används benämns kommunikationen Modbus RTU och vid Ethernet används Modbus TCP även benämnt Modbus TCP/IP. Dessutom skiljer sig datapaketen mellan Modbus RTU och Modbus TCP. Vid Modbus RTU benämns sändare som master och mottagare som slave. När Modbus TCP används kallas sändaren för klient och mottagaren server. [3, 11]

Kommunikation med Modbus RTU via RS485 är det endast en masterenhet. För Modbus TCP kan flera klienter existera i samma system. Principen för master/slave protokoll är att masterenheten initierar all kommunikation, masterenheten kommunicerar endast med en slavenhet åt gången samt att slavenheter aldrig kommunicerar med varandra. [12, 18]

2.1.1 Modbus RTU

RTU står för Remote Terminal Unit och är en mikroprocessbaserad enhet, exempelvis en PLC vars syfte är att hämta mätvärden från andra enheter och skicka vidare till styr- och övervakningssystem som exempelvis SCADA (Supervisor Control And Data Acquisition). RTU:n kan även ha till uppgift att ta emot kommandon från styr- och övervakningssystem för att utföra styrning av andra enheter exempelvis ventiler eller reläer. [2]

Det kan lätt uppstå förvirring i de olika begreppen. En RTU är som nämnt en mikroprocessbaserad enhet som används vid kommunikation vid både Modbus RTU och Modbus TCP.

2.1.1.1 RS232

RS står för Recommended Standard där RS232 är en punkt-till-punkt kommunikation, vilket betyder att det bara är två enheter som är ihopkopplade. RS232 har full duplex transmission vilket innebär att det kan sändas och tas emot data samtidigt. I Figur 1 visas hur Tx kopplas ihop med Rx för att få full duplex samt en tråd för gemensam jord. Tx står för sändning(Transmit) och Rx för mottagning(Receive).

[3]

Figur 1: Koppling RS232.

RS232 definierar ettor och nollor med spänning refererat till den gemensamma jordreferensen där en logisk nolla representeras med 3V till 15V och en logisk etta med -3 till -15V. Med RS232 är kabelns

(11)

4

längd begränsad till ca 15m för god kommunikation och klarar en överföringshastighet på 256kb/s, men kan klara högre hastigheter vid kortare avstånd. RS232 är känslig för störningar då signalens referens är mot jord, det vill säga om en tillräckligt hög spänning skulle induceras i en av trådarna kan det tolkas som en etta eller nolla. [3, 4, 5]

2.1.1.2 RS485

RS485 är multipunktkommunikation, det vill säga upp till 32 enheter kan kopplas samman där en enhet sänder och de andra lyssnar. RS485 använder differentiell signalering. Det innebär att sändningen sker via minst två ledare där spänningsdifferensen mellan ledarna ger antingen en logisk etta eller nolla.

Respektive ut- och ingång till ledarnas inkoppling kan benämnas olika. I Tabell 1 visas olika typer av benämningar där varje kolumn representerar olika benämningar. Raderna visar hur de olika benämningarna har samma funktion. [3, 5, 6, 7]

Tabell 1: Olika benämning på ut- och ingångar vid seriell kommunikation.

Benämning Funktion Tx+/Rx+ TD+ D+ B

Tx-/Rx- TD- D- A

Ledarna i RS485 har sin spänningsreferens mot jord där en logisk etta är mellan -1,5V och -6V och en logisk nolla mellan 1,5V och 6V. I Tabell 2 visas sanningstabell för differensen mellan ledarna. [8, 9]

Tabell 2: Sanningstabell för differensen mellan ledarna i RS485.

Sändare D- D+ Mottagare

0 1 0 0

1 0 1 1

Det räcker med en differens på 200mV mellan D- och D+ för att mottagaren ska kunna definiera en logisk etta eller nolla. RS485 har hög tålighet för störningar på grund av den differentiella signaleringen.

Störningar förekommer oftast simultant och lika kraftiga på respektive ledare vilket gör att det inte blir någon differens mellan ledarna. Dessa typer av störningar kallas CM (Common Mode) spänningar, det vill säga den del av spänningen på de två ledarna som är lika. En RS485 ska klara en CM spänning mellan -7V till 12V, där CM spänningar utanför detta spann kan resultera i fel eller förlorad data och i värsta fall förstöra enheten om CM spänningen blir för stor. [5, 6, 8, 10]

Vid kommunikation med två ledare (ej räknat jord) kallas det för halv duplex då det inte kan sändas och mottas data samtidigt. För full duplex krävs fyra ledare och i Figur 2 visas koppling mellan sändare och mottagare för två ledare respektive fyra ledare. [9]

(12)

5

Figur 2: RS485 koppling med halv och full duplex.

Vid dataöverföring med RS485 kan det uppstå reflektioner i ledarnas ändar. Detta kan förebyggas med 120Ω motstånd kopplade mellan ledarna i varje ände. [9]

2.1.2 Modbus TCP

När Modbus kom ut på marknaden användes RS som standard för kommunikationen. Senare började Ethernet användas på grund av dess höga överföringshastighet, vilket innebar att betydligt fler enheter kunde anslutas samtidigt än med RS485 samt att överföringssträckan ökade markant. Figur 3 visar ett exempel på en koppling av ledare för RJ45 kontakt till Modbus TCP över Ethernet. [11]

Figur 3: Exempel på kopplingsschema för RJ45 vid användning av Modbus TCP.

Kommunikationsmodellen för Modbus TCP (klient/server) baseras på fyra begrepp [13]:

• Förfrågan – meddelande skickat av klient för att initiera kommunikation.

• Indikation – Förfrågan mottaget av server.

• Respons – En respons är skickad av server.

• Bekräftelse – Respons mottaget av klient.

RJ45 kontakt Pin Signal

8 -

7 -

6 RD-

5 -

4 -

3 RD+

2 TD-

1 TD+

(13)

6 Figur 4 ger en blid av kommunikationsmodellen.

Figur 4: Kommunikationsmodell för Modbus TCP (gjord efter [13]).

2.1.3 Dataöverföring

När Modbus TCP skickar data över Ethernet används fler protokoll än Modbus för att hantera överföringen. Dessa är TCP (Transmission Control Protocol), IP (Internet Protocol) och ARP (Address Resolution Protocol). De olika protokollen kan representeras genom olika lager och Figur 5 visar hur de olika protokollen bäddas in i varandra där Modbusprotokollets data ligger i TCP lagret och dessa två i IP lagret som sedan ligger i ARP och Ethernetlagret. Varje protokoll innehåller lite olika typ av information där TCP innehåller portnummer för att specificera vad för typ av dataöverföring som ska göras exempelvis om det är mail som ska överföras. Modbus är registrerat att använda port 502. [13]

Figur 5: Olika lager med protokoll för dataöverföring via Ethernet (gjord efter [13]).

ADU (Application Data Unit) är Modbusprotokollets lager med data. Det ser lite olika ut beroende på om det skickas med Modbus RTU eller Modbus TCP men i ADU:n ligger en PDU (Protocol Data Unit) som ser lika ut för båda dataöverföringarna. Det består av två delar, funktionskod och data. Se Figur 6.

[12]

Figur 6: PDU som innehåller funktionskod och data (gjord efter [12]).

Funktionskoden används för att bestämma vilken funktion eller operation som ska utföras, det vill säga om en coil ska läsas eller styras eller om ett register ska läsas eller skrivas. Fältet data är vad funktionen/operationen ska göra exempelvis om en coil ska slås på eller av. Den kan också innehålla information som ska skrivas in i ett eller flera register, alternativt vad som hämtats från ett eller flera register. [12]

Benämningen coil representerar ett relä och kommer från ladderlogik som är ett grafiskt programspråk för PLC. Register är i Modbusprotokollet ett 16-bitars minne för lagring av data. [18]

(14)

7

2.1.3.1 ADU för Modbus RTU

För Modbus RTU tillkommer två delar i ADU:n utöver PDU:n. Det första delen är adressen till slavenheten, som innehåller 2-byte, det vill säga 0-255 decimalt. En slavenhet kan endast använda nummer mellan 1-247 decimalt. Nummer 0 samt 248-255 decimalt är reserverade där nummer 0 är reserverad för broadcast mode/flersändning. Den sista delen i datapaketet, CRC (Cyclic Redundancy Check) eller LRC (Longitudinal Redundancy Check), är två olika matematiska metoder för feldetektering av överfört datapaket. Figur 7 visar ADU för Modbus RTU. [12]

Figur 7: ADU för Modbus RTU (gjord efter [12]).

2.1.3.2 ADU för Modbus TCP

ADU:n för Modbus TCP skiljer sig från Modbus RTU. De har samma PDU men Modbus TCP har en MBAP (ModBus Application Protocol) Header och ingen feldetektering se Figur 8. [13]

Figur 8: ADU för Modbus TCP (gjord efter [13]).

MBAP Header består av 7 byte och är uppdelat i fyra fält [13]:

1. Transaktionsidentifiering – 2-byte som används för att hålla koll på vilken transaktion datapaketet tillhör. Klienten skapar identifieringen i förfrågan och servern kopierar den till responspaketet.

2. Protokollidentifiering – 2-byte som används för intra-system multiplexing där Modbus protokollet identifierar sig med värdet 0.

3. Enhetsidentifiering – 1-byte där klienten lägger in serverns id nummer och servern svarar med sitt eget id nummer.

4. Längd – 2-byte som anger det sammanlagda antal byte i enhetsidentifieringen och PDU:n.

PDU paketet kan som mest vara på 253-byte vilket ger maximalt 260-byte för hela ADU:n. [14]

2.1.3.3 Transaktionsmodell för Modbus PDU

Transaktionen av PDU paketet kan ses utifrån två perspektiv där den ena är felfri transaktion och den andra om det uppstått fel. Figur 9 visar de två olika transaktionerna där responsen från server innehåller undantagskoder när det uppstått ett fel. [14]

(15)

8

Figur 9: Felfri eller ej felfri transaktion av PDU (gjord efter [14]).

2.1.3.4 Funktionskodens olika kategorier

Det är vanligt att funktionskoderna, undantagskoderna och data representeras hexadecimalt. Istället för att skriva hex eller 2316 vid referering till hexadecimalt kommer rapporten innehålla syntax från C programmering där det skrivs 0xYZ. 0x representerar hexadecimalt, Y är värdet för plats 7 till 4 på bitarnas position i byten och Z är värdet på positionerna 3 till 0 exempelvis 0𝑥23 = 2 ∗ 161+ 3 ∗ 160= 32 + 3 = 3510 ⇒ 0010 0011 = 25+ 21+ 20= 32 + 2 + 1 = 3510.

Funktionskoden är 1 byte där MSB (Most Significant Bit) alltid är 0 i klientens förfrågan samt att kod 0x00 inte är giltig. Det innebär att det finns 27− 1 = 127𝑠𝑡 funktionskoder där 1-64, 73-99 samt 111- 127 (decimalt) har fastställda/”standardiserade” funktioner (Public function codes) exempelvis funktionskod 0x01 läser coils och 0x10 skriver till flera register. Funktionskoder mellan 65-72 och 100- 110 (decimalt) är öppna för användare att definiera (User defined function codes). I Tabell 3 är några av de vanligaste funktionskoderna listade. [14]

Tabell 3: Exempel på Modbus olika funktionskoder.

Funktion Funktionskod

Read coils 0x01

Read discrete inputs 0x02

Read holding registers 0x03

Read input register 0x04

Write single coil 0x05

Write single register 0x06

Wite multiple coils 0x0F

Write multiple registers 0x10 Read/Write multiple registers 0x17

Funktionskodens MSB är reserverad till undantagskoden om servern upptäckt ett fel. Det betyder att en server alltid skickar samma funktionskod tillbaka i sin respons om det inte uppstått något fel. Vid fel sätts funktionskodens MSB till 1 vilket är 0x80 hexadecimalt. [14]

(16)

9

2.1.3.5 PDU:s datapaket

PDU:s datapaket ser lite olika ut beroende på vilken funktionskod som används och om den skickas som en förfrågan från klienten eller från servern som respons. Modbus använder som standard Big- Endian vilket innebär att most significant byte skickas först, exempelvis om 0x1234 ska skickas så läggs 0x12 före 0x34 i datapaketet. I Tabell 41 nedan visas ett exempel på transaktion mellan klient och server med funktionskoden Read holding registers 0x03. [14, 18]

Tabell 4: Exempel på transaktion mellan klient och server.

Read holding registers, funktionskod 0x03

Förfrågan från klient Byte nr 0: Funktionskod = 0x03

Byte nr 1-2: Vilken adress som läsningen ska starta på (16-bit) Byte nr 3-4: Antal register som ska läsas (1-125st)

Respons från server Byte nr 0: Funktionskod = 0x03

Byte nr 1: Antal byte i responsen 𝐵 = 2 ∗ 𝑎𝑛𝑡𝑎𝑙 𝑟𝑒𝑔𝑖𝑠𝑡𝑒𝑟 Byte nr 2-(B+1): Registervärdena

Undantags respons från server

Byte 0: Funktionskod + undantagskod = 0x83 Byte 1: undantagskod

Exempel: Läs 2st 16-bitars holding register med adress 0 till 1 där register med adress 0 har värde 10 (DEC) och det andra har värde 16 (DEC).

(1-byte är två siffror hexadecimalt. Byte nr 0 är längst till vänster och sedan i stigande ordning.) Förfrågan klient: 03 00 00 00 02

Respons server: 03 04 00 0A 00 10

Exempel: Läs 2st 16-bitars holding register med adress 0 till 1 som ger undantagsrespons.

Förfrågan klient: 03 00 00 00 02 Respons server: 83 02

(Undantagskod 02 innebär att båda eller någon av adresserna inte finns i servern.)

2.1.3.6 Register

Alla register i Modbusprotokoll är 16-bit, det vill säga 2-byte som i exemplet ovan i tabell 4. Om ett värde är större än 16bit skickas registren som 16-bit efter varandra i samma datapaket. Det kan liknas med att skicka flera delregister i ett registerblock, exempelvis 2st delregister som tillsammans blir ett registerblock på 32-bit eller 4st delregister som blir ett registerblock på 64-bit. Dessa register ska ses som hoplänkade, i engelskan concatenated, det vill säga bitarna läggs på rad efter varandra när de läses. Med andra ord så ska respektive register inte adderas på mottagarsidan. [18, 23]

Registren kan ha olika datatyper deklarerade till sig som exempelvis signed och unsigned integer. Ett 16-bitars register kan med unsigned data ha ett heltalsvärde mellan 0 och 65535 decimalt eller 0x0000 och 0xFFFF hexadecimalt. [18]

För ett 16-bitars register med signed integer kan det decimala värdet vara mellan -32768 och 32767.

För att representera negativa tal används MSB:n till att avgöra om talet är negativt eller positivt där en

1 Tabell 4 är en omgjord version av en tabell i boken Modbus: The Everyman’s Guide to Modbus. Tack till John Rinaldi på Real Time Automation för tillstånd att använda tabellen som referens. Boken finns på:

https://www.rtautomation.com/product/modbus-the-everymans-guide-to-modbus/

(17)

10

etta på MSB är negativt och en nolla positivt. Därav att ett 16-bitars register med datatypen signed integer byter tecken efter övergången från 32767 till 32768 alltså det läses som -32768:

32767 (𝐷𝐸𝐶) = 0111 1111 1111 1111 (𝐵𝐼𝑁)

−32768 (𝐷𝐸𝐶) = 1000 0000 0000 0000 (𝐵𝐼𝑁)

När en dator hanterar signed integers används 2-komplementet till det binära talet. Fördelen med 2- komplementet är att datorn kan utföra binära räkneoperationer med endast addition. [1, 19]

Exempel på 2-komplementet från binärt till decimalt:

32769 = 1000 0000 0000 0001 1. 𝐼𝑛𝑣𝑒𝑟𝑡𝑒𝑟𝑎 𝑠𝑎𝑚𝑡𝑙𝑖𝑔𝑎 𝑏𝑖𝑡𝑎𝑟 𝑖 𝑡𝑎𝑙𝑒𝑡

1000 0000 0000 0001 ⟹ 0111 1111 1111 1110 = 32766 (𝐷𝐸𝐶) 2. 𝐴𝑑𝑑𝑒𝑟𝑎 1 𝑡𝑖𝑙𝑙 det 𝑖𝑛𝑣𝑒𝑟𝑡𝑒𝑟𝑎𝑑𝑒 𝑡𝑎𝑙𝑒𝑡

0111 1111 1111 1110 + 1 = 0111 1111 1111 1111 = 32767 (𝐷𝐸𝐶)

Detta betyder att när en mottagare tar emot talet 32769 och är inställd på att tolka det som ett signed integer tolkas det mottagna talet 32769 som -32767. Talet 32770 blir -32766 och så vidare. Används ett mindre tal, exempelvis ett 4-bitars kan det enklare illustreras. Se Tabell 5 nedan.

Tabell 5: Exempel på 2-komplement och dess decimala värde.

DEC BIN 2-komplement DEC efter 2-komplementering

0 0000 - 0

1 0001 - 1

2 0010 - 2

3 0011 - 3

4 0100 - 4

5 0101 - 5

6 0110 - 6

7 0111 - 7

8 1000 1000 -8

9 1001 0111 -7

10 1010 0110 -6

11 1011 0101 -5

12 1100 0100 -4

13 1101 0011 -3

14 1110 0010 -2

15 1111 0001 -1

Detta betyder att både server och klient behöver veta på förhand vilka datatyper som registren är deklarerade med för att rätt värde ska tolkas eller behandlas av mottagaren. Detta gäller även om datatypen är ASCII format. [1, 18]

(18)

11

Det finns fyra olika registertyper i Modbusprotokollet där varje typ har adressutrymme mellan 1-9999.

I senare versioner av Modbus finns det även möjlighet till utökat adressutrymme mellan 1-65535. De olika registertyperna har även en specifik förstasiffra för respektive registertyp. I Tabell 6 visas de olika registertyperna och deras specifika adressområden. [15]

Tabell 6: Modbus registertyper med dess specifika adresseringsområden.

Registertyper Tillgång Storlek Adresseringsutrymme Utökad adresseringsutrymme

Coil Read-write 1 bit 00001-09999 000001-065536

Discrete input Read-only 1 bit 10001-19999 100001-165536

Input register Read-only 16 bit 30001-39999 300001-365536 Holding register Read-write 16 bit 40001-49999 400001-465536

Adresseringen i PDU:s datapaket består av 2-byte (se exempel i Tabell 4) där adresseringsutrymmet 1- 9999 representeras av 0x0000 till 0x270E och det utökade adresseringsutrymmet 1-65536 av 0x0000 till 0xFFFF. Det är lätt att blanda ihop adressering och adresseringsutrymme. Adresseringsutrymme är antal register som finns tillgängliga i klient eller server och adresseringen är registrets adress eller dess plats i minnet. Exempelvis vid utökat adresseringsutrymme finns det register mellan 1-65536st som är adresserat mellan 0 till 65535. Då adresseringsutrymmet startar med nummer 1 och adresseringen startar med 0 innebär det att adresseringen i datapaketet alltid har en offset med n-1 i förhållande till adressutrymmet. Exempelvis om adresseringsutrymme nummer 108 ska läsas blir adresseringen i kodningen 107 decimalt, eller 0x006B hexadecimalt. [1]

Vid läsning av Modbusprotokoll är det till fördel att vara uppmärksam så att inte funktionskoderna blandas ihop med adresseringsutrymmets specifika förstasiffra där funktionskoden för read holding register är 0x03 men där adresseringsutrymmets specifika förstasiffra för holding register börjar på siffran 4.

Registertypen coil kan användas för att slå av eller på reläer eller för att läsa av reläers tillstånd.

Registertypen discrete input används för att läsa reläers tillstånd om de är av eller på. Holding registers var ursprungligen tänkt att användas för tillfällig lagring av programdata. Dessa register används numera som lagring av data i den apparat som använder protokollet exempelvis i en växelriktare kan den momentana effekten lagras i ett holding register. Input registers var ursprungligen tänkt att reflektera värdet i en analog ingång exempelvis spänningen från en givare men används idag på samma sätt som holding registers. [18]

(19)

12

2.2 Controller

Den controller som används i projektet är en PLC TM221CE16R från Schneider Electric se Figur 10.

Figur 10: PLC modell TM221CE16R.

TM221CE16R har två RJ45 uttag där den övre benämnd seriell i Figur 10 används för Modbus RTU både RS232 och RS485 och den undre benämnd Ethernet är för Modbus TCP. USB uttaget kan användas för att ladda upp program i strömlöst läge.

2.2.1 EcoStruxure Machine Expert – Basic

Schneider har utvecklat ett eget program för programmering och inställning av olika PLC modeller.

Programmet heter EcoStruxure Machine Expert – Basic där TM221CE16R är en PLC modell som programmet är gjort för. Länk till Schneider där programmet kan laddas ned finns i bilaga B.

(EcoStruxure Machine Expert – Basic kommer benämnas Machine Expert Basic framöver.)

2.2.1.1 Konfiguration

Under fliken Configuration i Machine Expert Basic finns inställningarna för Ethernet och Modbus. Vid konfiguration av Ethernet ska PLC:s IP adress skrivas in. IP adresser för de PLC:er som kan väljas i Machine Expert Basic ska alltid börja med 10.10.XX.YY. De två sista platserna i IP adressen fås genom PLC:s två sista hexadecimala tal i dess MAC-adress. MAC-adressen finns på PLC:n ovanför Ethernetporten se Figur 11.

Figur 11: MAC-adress för Schneider PLC TM221CE16R.

De två sista hexadecimala talen i Figur 11 är 0xD1 och 0x2A som är decimalt 209 och 42. IP adressen för denna PLC blir då 10.10.209.42. Subnet Masken kan ställas in som klass C, det vill säga 255.255.255.0, vilket gör det möjligt att koppla samman 254st enheter då 0 och 255 är upptagna. PLC:n

(20)

13

i projektet kan ha maximalt 16st servrar kopplat till sig. I Figur 12 visas exempel på inställning i programmet.

Figur 12: Exempel på inställning av IP adress och Subnet Mask i Machine Expert Basic.

Inställningarna till Modbusprotokollet görs i fliken Modbus TCP IOScanner. Här skapas tabell med de servrar som ska läggas till (servrar kallas devices i programmet) se Figur 13.

Figur 13: Exempel på inställning av Modbus TCP i Machine Expert Basic.

Rutan Enable Modbus TCP IOScanner behöver väljas för att PLC:n ska fungera som klient. I rutan för IP adress skrivs serverns IP adress. När servrar läggs till i tabellen får de egna ID nummer i Machine Expert Basic programmet. ID numret är längst till vänster på raden för den tillagda servern. Observera att detta inte är serverns ID adress i TCP paketets MBAP header utan bara programmets interna ID av servern.

Machine Expert Basic använder begreppet Channels för att representera kanaler som upprättas till servern där varje kanal använder en specifik Modbusfunktion som exempelvis Read holding registers 0x03. Näst längst till höger finns rubriken Channels Unit ID. Här skrivs serverns ID för datapaketet i TCP MBAP header. Ungefär i mitten på raden finns rubriken Reset variable. Den används för att återställa

(21)

14

uppkopplingen mot servern när ett fel uppstått. Här kan vilken tillgänglig minnesbit som helst användas och kommer senare användas i programmeringen exempelvis %M1. Om resetvariablen inte används i programmeringen kommer kommunikationen att låsa sig om det uppstår ett fel i kommunikationen.

Längst till höger under rubriken Channels skapas kanaler med de register som ska läsas och/eller skrivas i servern. För att skapa kanaler används knappen under rubriken Channels vilket öppnar upp ett fönster som heter Channel assistant se Figur 14.

Figur 14: Channel assistant i Machine Expert Basic som skapar kommunikationskanaler mellan PLC och server.

Varje kanal får ett eget internt ID nummer längst till vänster på raden. Under rubriken Configuration ställs kanalen in se Figur 15.

Figur 15: Exempel på inställning av kommunikationskanal i Channel assistant.

På raden Message type väljs den funktionskod som ska användas. Raden Trigger hur ofta som funktionen ska exekveras. Rutan Read objects anger vilken registeradress som kanalen ska börja läsa från och sedan hur många registeradresser som totalt ska läsas efter det. I Figur 15 läses registeradress 0 och 1, det vill säga 2st. I programmet kallas modbusfunktionen Read holding registers för Read multiple words. Word är ett 16-bit register och i rullistan står det även Modbus 0x03 vilket är funktionskoden för Read holding registers.

(22)

15

2.2.1.2 Programmering i Machine Expert Basic

I fliken Programming finns lista för PLC:s olika minnesobjekt se Figur 16.

Figur 16: Lista med minnesobjekt i PLC under fliken Programming.

I den röda rutan längst ner i Figur 16 finns de nätverksobjekt (Network objects) som skapats vid inställningarna för kanalerna. För exemplet i Figur 15 kommer nätverksobjekten finnas i Input registers (IOScanner) och har följande format %IWM(i+x).y.z. där IMW står för Input Memory Word, i är index för att kanalen är via Ethernet där Ethernet har nummer 300, x är programmets egna ID på servern (längst till vänster på raden i Figur 13), y är kanalens ID (längst till vänster på raden i Figur 14), z är numrering utifrån de antal register som ska läsas.

Exemplet i Figur 15 ger följande utseende på nätverksobjekten %IMW300.0.0 och %IMW300.0.1.

Eftersom serverns interna ID i Machine Expert Basic är noll blir första siffran 300+0, det vill säga 300, andra siffran blir 0 för att kanalens ID är 0 och sista siffran är 0 och 1 för att det är inställt att två register ska läsas och första börjar med 0. Om det hade stått registeradress 40021 i offset i Figur 15 hade sista siffran ändå börjat på 0 i nätverksobjektet.

I rutan System objects finns färdigprogrammerade funktioner exempelvis felkoder för Ethernetuppkopplingen, 1s av och på funktion etc. I System objects finns även tomma minnesobjekt som kan förprogrammeras eller användas som lagring. I rutan Memory objects är tomma minnesobjekt för programmeringen och i rutan Animation tables kan tabeller skapas för att se tilldelade värden i valda minnesobjekt. I Machine expert basic har samtliga minnesobjekt förinställda datatyper och kan inte ändras se Tabell 7.

(23)

16

Tabell 7: Förinställda datatyper i Machine Expert Basic.

Minnesobjekt Nyckelord Storlek

(bit)

Storleksintervall (decimalt)

%S (System bit) bit 1 0 - 1

%SW (System word) unsigned integer 16 0 till 65535

%M (Memory bit) bit 1 0 - 1

%MW (Memory word) signed integer 16 -32768 till 32767

%MD (Memory Double word)

signed integer 32 -2147483648 till 2147483647

%MF (Memory

Floating-point word)

Single-precision floating point

32 Bit 31 Bits {30-23} Bits {22-0}

Teckenbit Exponent Signifikand

Minnesobjekten Memory word, Memory double word och Memory floating-point word använder samma minnesplatser i PLC:n. Det betyder att det går att se värdet i ett %MW som unsigned genom att titta på samma minnesplats med double word %MD i Animationtable exempelvis om %MW10 har värdet -219 så går det att se det som 65317 i %MD10.

2.2.1.3 Lagra data i SD kort

I PLC:n TM221CE16R finns plats för SD kort (se benämning Minneskort i Figur 10) som klarar antingen SC (Standard Capacity) eller HC (High Capacity) upp till 32GB. Dataloggning i Machine expert basics ladderprogrammering kan göras med funktionsblocket DATALOG se Figur 17.

Figur 17: Funktionsblocket DATALOG.

Det går även att göra en tillfällig nedladdning av minnesobjekt till SD kort eller till PC i fliken Memory management i fliken Comissioning. För att lagra data med funktionsblocket DATALOG behövs SD kortet vara formaterat med FAT eller FAT32. SD kortet behöver dessutom namnges DATA för att Machine Expert Basic ska kunna logga data till kortet.

Loggning med blocket DATALOG sparas som csv fil och det går att välja storlek mellan 1-500kB på csv filen som skapas. Om lagringen överskrider angiven storlek sparas loggade data i en backupfil .BAK i samma mapp som csv filen i SD kortet. PLC:n skapar mapparna själv och loggningsfilerna ligger i DATA/usr/datalog. Det går även att välja om tidsstämpel ska loggas med valda minnesobjekt. [21, 22]

Funktionsblocket är försett med fyra utgångar av datatypen bool. Utgången DONE är sann när en loggning har exekverats, BUSY är sann under tiden exekvering av en loggning sker, ERROR är sann när ett fel har detekterats varvid felkod ges i blocket vid rubriken Errorld samt BAK är sann när en .BAK fil har skapats av DATALOG:en.

(24)

17

2.3 Växelriktare och SunSpec

I projektet används en Sunny tripower 3.0 växelriktare från SMA se Figur 18.

Figur 18: Växelriktare Sunny tripower 3.0 från SMA.

Växelriktaren använder sig av Modbus TCP för att läsa och skriva register. Märket SMA och många andra tillverkare är med i SunSpec Alliance vars mål bland annat är att standardisera innehåll och adresseringen av register i växelriktare. Allokeringstabellerna för de olika registeradresserna kallas utifrån SunSpecs terminologi PICS (Protocol Implementation Conformance Statement). Varje tabell har ett unikt ID nummer efter SunSpecs standard där exempelvis ID 11 är Ethernet inställningar, ID 103 är uppmätta värden för trefas och ID 120 är växelriktarens märkvärden exempelvis märkeffekt och så vidare. [16, 17, 20]

Det finns många olika funktionskoder i Modbusprotokollet. I Tabell 8 är de Modbus funktioner som SMA använder i växelriktaren.

Tabell 8: Modbus funktionskoder som SMA använder.

Funktion Funktionskod

Read holding registers 0x03

Read input register 0x04

Write single register 0x06 Write multiple registers 0x10 Read/Write multiple registers 0x17

SunSpec använder olika datatyper till registren mellan 16-bit och 64-bit. I Tabell 9 listas de olika datatyperna. [17]

Tabell 9: SunSpecs olika datatyper.

Datatyp Beskrivning

acc32 och acc64 Används för ackumulerade värden exempelvis

total ackumulerad aktiv effekt i Wh.

bitfield16 och bitfield32 Använder varje bit för att representera alarmflaggor eller status.

(25)

18

enum16 Använder specifika heltalsnummer för att

representera olika tillstånd eller konfigurationer.

int16 och int32 Signed integer.

string ASCII kodat 16bit register, det vill säga två ASCII

tecken per register.

sunssf SunSpecs skalfaktor där registret innehåller

värdet på en exponent till andra register.

uint16, uint 32 och uint64 Unsigned integer.

Från SunSpecs krav har SMA fem kolonnrubriker i sina PICS tabeller. I Tabell 10 redovisas en kort beskrivning av varje rubrik. [17]

Tabell 10: Beskrivning av rubrikerna i PICS tabellerna för växelriktaren.

No (DEC) Adresseringsnummer decimalt

Description/Number Code(s) Beskrivning av registrets innehåll CNT (WORD) Antal delregister i registerblocket

Type Registrets datatyp

Access Om registret kan läsas, skrivas eller både och.

Nedan i Tabell 11 visas exempel från PICS tabellerna i SMA:s växelriktare. [17]

Tabell 11: Exempel från växelriktarens PICS tabeller.

No (DEC) Description/Number Code(s) CNT

(WORD)

Type Access

40005 Manufacturer (Mn): "SMA" 16 string RO

--- --- --- --- --- 40200 Active power (W), in 𝑊 ∗ 10𝑊_𝑆𝐹 (40201). 1 int16 RO

40201 Scale factor active power (W_SF): 1 1 sunssf RO

--- --- --- --- --- 40210 Total yield (WH), in 𝑊ℎ ∗ 10𝑊ℎ_𝑆𝐹 (40212). 2 acc32 RO

40212 Scale factor total yield (WH_SF): 1 1 sunssf RO

--- --- --- --- --- 40354 Parameter for PV system control:

Set power factor to a certain value (𝑂𝑢𝑡𝑃𝐹𝑆𝑒𝑡) ∗ 10𝑂𝑢𝑡𝑃𝐹𝑆𝑒𝑡_𝑆𝐹 (40368), (SMA:

specification of the displacement power factor cos ϕ via the system control).

1 int16 WO

--- --- --- --- --- 40368 Scale factor power factor (OutPFSet_SF): -4 1 sunssf RO

Register med sunssf ligger oftast direkt efter de register som använder dess värde. Värdet i sunssf används som exponent till en tiopotens i syfte att skala upp eller ner värden i andra register.

(26)

19

2.4 Säker dataöverföring

Modbusprotokollet är ett öppet protokoll vilket innebär att uppkoppling mot internet gör det möjligt för vem som helst att hämta och ändra register i både PLC och växelriktare om inte uppkopplingen görs säker. Brandvägg och/eller VPN (Virtual Private Network) är två möjliga alternativ. Endast brandvägg gör att kommunikationen är synlig jämfört med VPN som krypterar kommunikationen och kräver krypteringsnycklar för att kunna läsas.

Ett sätt att kryptera kommunikation med VPN är att använda router med VPN funktion.

Kommunikationen sker då i en så kallad VPN tunnel. Ett sätt att upprätta VPN tunnel är med plats-till- plats kommunikation där vardera plats har varsin VPN router vilket ger en krypterad kommunikation åt båda hållen. [24]

(27)

20

3 Utförande

3.1 Utrustning

Den utrustning som användes återfinns i Tabell 12 och teknisk beskrivning till samtliga apparater finns som länkar i bilaga B.

Tabell 12: Utrustning och materiel som använts.

Utrustning Antal / längd

Växelriktare av märket SMA modell Sunny tripower 3.0 1st Solpaneler av märket TSMC solar som är typen CIGS2 tunnfilm 3st

PLC TM221CE16R från Schneider Electric 1st

SanDisk SD kort HC 32GB 1st

5 portars switch av märket NETGEAR GS105v5 1st

Nätverkskabel 3st

Säkerhetsbrytare 3-polig 1st

Förskruvning polyamid IP68 M25 2st

CEE stickpropp 16A trefas 1st

Kraftkabel ACEFLEX RV-K 5G2,5 25m

DC kabel PV1-F 4mm² med MC4 och sunclix kontakter 2st (6m/st)

eWON cosy 131 router 1st

SIM-kort från nätverksoperatören COM4 1st

Mean Well MD-60-24 spänningsaggregat 1st

DIN-skena 35/7,5mm 20cm

3.1.1 Val av utrustning

• Växelriktare

o 3-fas valdes för att representera den typ som förekommer mest på marknaden.

o Minsta möjliga växelriktare valdes för att göra installationen så billig som möjligt.

o Kommunicerar med Modbus TCP då det blir allt vanligare med denna kommunikation hos växelriktare.

• Solpaneler

o Minsta möjliga antal för att uppnå startspänning för växelriktaren på DC sidan. Detta för att få möjlighet att hämta värden från växelriktaren när den är i drift.

o Tunnfilmspanel för att den ger betydligt högre spänning än kristallin solcellspanel.

Detta medför att färre solpaneler behövde användas för att uppnå startspänning på DC sidan.

• PLC och DIN-skena

o PLC:n var inköpt innan projektet startades och användes därav för att hålla nere kostnaden i projektet.

o PLC:n är en av de billigare varianterna på marknaden för att hålla nere kostanden för framtida kund.

o DIN-skena användes för att kunna montera PLC nära växelriktare.

2 CIGS är en sammanslagning av de första bokstäverna från de grundelement som solcellspanelen är gjord av;

koppar - Cu, indium - In, gallium - Ga och selen - Se.

(28)

21

• SD kort

o 32GB valdes för att det är maximal storlek som PLC:n klarar av.

• Switch

o Fanns tillgänglig att låna från Rejlers kontor för att hålla nere projektets kostnader.

• Nätverkskabel

o Fanns tillgänglig att låna från Rejlers kontor för att hålla nere projektets kostnader.

• Säkerhetsbrytare och förskruvningar

o Med säkerhetsbrytaren säkerställs att ingen spänning förekommer på CEE stickproppen efter att växelriktaren slås av och stickproppen avlägsnas från 3-fas uttaget på väggen.

o Förskruvningarna används som dragavlastning för kabeln till säkerhetsbrytaren.

• Kraftkabel

o 3-fas uttaget som matar växelriktaren är säkrad med 3st C16A dvärgbrytare samt att växelriktarens producerade märkeffekt på AC sidan är 3kW. Sett från säkringens begränsning att mata växelriktaren kan formel (1) användas. Den ger en ungefärlig beräkning av minsta area (för 3-fas) som måste användas för att inte kabeln ska förstöras:

𝐴𝑚𝑖𝑛=𝐼𝑏∗𝜌∗𝑙∗√3∗𝑘∆𝑈 𝑡2∗cos(𝜑)

𝑚𝑎𝑥 [𝑚𝑚2] (1)

I formeln är 𝐼𝑏 belastningsströmmen i ampere och väljs samma som säkringens strömstorlek eftersom det är den som ska bryta strömmen vid kortslutning och överbelastning. Faktorn 𝜌 är resistiviteten hos koppar vid 20°C och dess värde är

1

57[𝑚𝑚Ω𝑚 ], 𝑙 är ledarens längd i meter, 𝑘𝑡2 är en enhetslös konstant med värdet 1,25 som används för att beräkningen ska stämma vid normaldrift, det vill säga när kabeln har en arbetstemperatur, cos(𝜑) är effektfaktorn som kan sättas till 0,9 då denna är okänd i detta fall och ∆𝑈𝑚𝑎𝑥 är maximalt spänningsfall i volt. Det maximala spänningsfallet kan beräknas med följande formel:

∆𝑈𝑚𝑎𝑥 = 𝑈𝑛∆𝑢

100 [𝑉] (2)

där 𝑈𝑛 är den nominella spänningen i volt och är i detta fall huvudspänningen för 3-fas.

∆𝑢 är spänningsfallet i procent och kan sättas till 3% vilket är inom tillåten gräns för kravet på eldistributör. Beräkning av minsta area med formel (2) insatt i formel (1) ger:

𝐴𝑚𝑖𝑛 =16∗

1

57∗25∗√3∗1,25∗0,9 400∗3

100

≈ 1,14𝑚𝑚2

Den närmsta tillverkade kabelarea på marknaden som överstiger den beräknade arean är 1,5𝑚𝑚2. För beräkning av växelriktarens effektmatning kan följande formel användas för att beräkna maximal ström som kommer flyta i kabeln vid märkeffekt:

𝐼𝑚𝑎𝑥= 𝑃𝑛

√3∗𝑈𝑛[𝐴] (3)

där 𝑃𝑛 är märkeffekten i watt och 𝑈𝑛 är den nominella spänningen i volt, det vill säga huvudspänningen för 3-fas i detta fall. Beräkning av 𝐼𝑚𝑎𝑥 ger:

𝐼𝑚𝑎𝑥= 3000

√3∗400≈ 4,33𝐴

(29)

22

I detta projekt kommer strömmen aldrig nå denna storlek då det endast används 3st solpaneler men för eventuellt framtida bruk med fler solpaneler beräknades strömmen från märkeffekten.

Då säkringens strömstorlek användes i formel (1) och är större än den beräknade strömmen i formel (3) innebär det att kraftkabelns beräknade area klarar effektmatningen från växelriktaren.

Val av kabelarea bestäms också utifrån kabeltyp och förläggningssätt. Förläggningen är inomhus och öppen, det vill säga den kommer ligga på golvet på Rejlers kontor. Detta innebär att den kommer ha tillräckligt med kylning vid denna förläggning. Den valda kabeltypen är ej mantlad vilket innebär att värmen inte kapslas in som för en mantlad kabel. Enligt beräkningarna och reflektion av förläggningssätt och kabeltyp är det möjligt att använda 1,5𝑚𝑚2 kabel i detta projekt.

Enligt branschpraxis används 2,5𝑚𝑚2 när kabeln är säkrad med C16A och övrig hänsyn är tagen för längd, förläggning och kabeltyp. En 2,5𝑚𝑚2 är dyrare än 1,5𝑚𝑚2 men med tanke på att det är en tillfällig installation och kabeln med påkopplad CEE stickpropp kan komma att användas till andra typer av installationer beslutades att använda 2,5𝑚𝑚2.

• DC kabel

o Användes för att förlänga kablarna från solpanelerna så att de skulle nå fram till växelriktaren.

• Router

o Den valda routern har VPN vilket Embriq använder sig av för säker kommunikation över internet.

o Fanns tillgänglig att låna från Rejlers kontor för att hålla nere projektets kostnader.

• SIM-kort

o Fanns tillgänglig att låna från Rejlers kontor för att hålla nere projektets kostnader.

• Spänningsaggregat till router

o En övervägning gjordes att använda PLC:s 24V utgång som är till för att mata externa apparater. PLC:s utgång klarar dock maximalt en ström på 240mA och routern kräver 2,5A.

o Fanns tillgänglig att låna från Rejlers kontor för att hålla nere projektets kostnader.

3.2 Konstruktion av laborationsplattform

Laborationsplattformen byggdes på en skrivbordshurts med hjul för att kunna flytta installationen och vrida den mot solen se bilaga A. Några kriterier behövde uppfyllas vid bygget. Det ena var att växelriktaren krävde vertikal upphängning. Ett annat kriterium var att växelriktaren inte fick installeras direkt mot brännbart material. Då laborationsplattformen byggdes med plywood och träreglar löstes detta med att regla ut växelriktarens infästning för att få distans till plywoodskivan.

De tre solpanelerna vägde tillsammans ca 50kg och för att få bättre stabilitet flyttades tyngdpunkten för solpanelerna mot centrum av skrivbordshurtsen genom att vinkla dem. Ingen hänsyn har tagits till solpanelernas vinkel vad gäller solinstrålning mot solpanelerna.

Ingen hänsyn har tagits till EMI (Elektromagnetisk interferens) vid installationen på laborationsplattformen då den är tillfällig och inte befinner sig i en miljö som är känslig för EMI.

(30)

23

Materiel och beräkningar för att bygga laborationsplattformen tas inte med i denna rapport då specifik laborationsplattform inte är avgörande för att kunna göra mätningarna.

3.3 Idrifttagning och inställning av växelriktare

Efter bygget av laborationsplattformen driftsattes växelriktaren utifrån dess manual. Till driftsättningen används ett program från SMA som heter Sunny Explorer se bilaga B. Driftsättningen av denna specifika växelriktare redogörs inte i detalj i denna rapport dels för att programmet Sunny Explorer guidar installatören genom idrifttagningen, dels för att förfarandet står i medföljande manual samt för att idrifttagning varierar beroende på tillverkare.

En parameter som kan behöva nämnas vid driftsättning är inställning av landskoden. Den återfinns inte i manualen och är EN50438:2013 för denna växelriktare. Landskodens syfte är att spänningsnivå, frekvens med mera som matas ut på AC sidan ska stämma överens med det svenska nätet.

Växelriktarens Modbuskommunikation behövde aktiveras för att kunna användas. Det kunde göras i Sunny Explorer eller logga in i växelriktaren via webbläsaren antingen med Ethernet eller WiFi.

Växelriktaren som användes i detta projekt har separata IP adresser för Ethernet och WiFi när de skrivs in i webbläsaren. Vid test av kommunikationen mellan PLC och växelriktare upptäcktes att det inte gick att upprätta Modbuskommunikation och hämta register när PC:n var inloggad på växelriktaren i webbläsaren via Ethernet.

Vanligtvis används Subnet mask som klass C med inställningen 255.255.255.0 i mindre nätverk, se exempel i Figur 12. När PLC:n var inställd med denna Subnet mask behövde växelriktarens IP adress för Ethernet ändras så att den fick kontakt med PLC. IP adressen i växelriktaren kunde ändras i både Sunny expert och webbläsaren. Om ändring gjordes via webbläsare kunde det ibland uppstå komplikationer där växelriktaren inte sparade den nya IP adressen. Dessutom sparades inga ändringar permanent i växelriktaren innan den hade fått inspänning över inställt tröskelvärde på DC sidan oavsett vilket användargränssnitt som användes. Det betyder att om IP adressen ändras och AC matningen slås av innan växelriktaren fått DC spänning över tröskelvärdet kommer den gamla IP adressen vara den aktuella när AC matningen slås på igen.

3.4 Konfiguration av PLC

PLC:s inställning för Modbus TCP gjordes enligt Figur 12 där IP adress och Subnet mask var samma som i figuren. Växelriktaren lades in som server med dess inställda IP adress, se Figur 13, där minnesobjekt

%M1 användes som resetvariabel.

3.5 Kommunikation med Modbusprotokollet

Till undersökning av bitströmmen och Modbus funktionskod och datapaket har Wireshark och två program från modbustools.com som heter Modbus Slave och Modbus Poll använts. I bilaga B finns länkar till respektive hemsida för nedladdning av programmen. Dessa program har använts till kommunikation mellan PC och PLC för att utvärdera och skapa förståelse för hur Modbusprotokollets bitström fungerar och ser ut i praktiken. Programmen visar bitströmmen hexadecimalt för både förfrågan och respons. Programmen kan även vara användbara verktyg vid felsökning.

Ett annat verktyg som använts är Modbus tester som finns på Schneiders hemsida, se bilaga B. På hemsidan finns även instruktionsvideo hur programmet kan användas. Fördelen med programmet är att det snabbt och enkelt kan läsa och skriva register via Modbus RTU eller TCP. Det sparade en hel del

(31)

24

tid för att testa kommunikationen med växelriktaren. Programmet gav snabb åtkomst till innehållet i växelriktarens register jämfört med att bara använda PLC:n som krävde programmering och sedan uppladdning av programmet för varje ändring som gjordes. Modbus tester har använts för att testa kommunikation mellan både PC - PLC och PC - växelriktare.

Inledningsvis gjordes olika tester med ovannämnda program. Programmen användes till att få förståelse för hur PLC:n skulle programmeras för att upprätta kommunikation och hämta register med Modbusprotokollet.

3.6 Programmering av PLC

För att utvärdera PLC:n programmerades den att hämta register från växelriktaren med olika datatyper och storlekar. För respektive datatyp skapades en kanal som ställdes in att hämta utvalt register. Se Figur 14 och Figur 15 för exempel. De datatyper som hämtades var uint32, string, bitfield16, enum16 och sunssf. Se Tabell 9. Register specificerad med datatypen int16 testas inte då datatypen sunssf är samma som int16. Datatypen acc64 testas inte heller då inget register med denna datatyp hade ackumulerat värde över 32767 (DEC). Programmet som användes till test finns i bilaga C.

Då växelriktaren inte innehöll eller har hunnit ackumulera värden större än 32767 (DEC) testades PLC:s minnesobjekt med tilldelade värden i PLC:s program för att fastställa hur minnesobjekten behöver hanteras. Programmeringen för test med värden större än 32767 (DEC) finns inte med i programmet i bilaga C. Istället redovisas resultaten i kapitel 4.2.2 Hantering vid loggning av hämtade datatyper.

Loggning av data till SD kortet utvärderades med funktionsblocket DATALOG. Loggning av olika datatyper och storlekar på register testades samt vad som händer när en .BAK fil redan är skapad och en ny skapas. Hämtning av data från SD kortet utvärderades också. Storlek på loggad tidsstämpel bestämdes genom att först logga data och sedan ta bort all data utom två tidsstämplar och dess rubrik.

Storleken på filen med de två tidsstämplarna jämfördes sedan med samma fil men med bara en tidsstämpel.

3.7 Överföring av data till Embriq

Embriq använder plats-till-plats kommunikation med VPN. Routern användes med SIM-kort för dataöverföring via 3G till Embriq. Till inställning av router användes eWONs egna programvara eBuddy.

Se bilaga B. Inställning av router redogörs inte i detalj i denna rapport då eBuddy guidar användaren genom inställningarna.

När kommunikation med Embriq testades kopplades router ihop med PLC och PC via switchen. PC:n användes för att kontrollera routerns uppkoppling och status samt för att kontrollera och göra ändringar i PLC. I PLC:n tilldelades tre minneobjekt olika värden.

• Ett positivt värde mindre än 32767 (DEC) till ett %MW för att testa överföring av positiva värden inom ramen för PLC:s gränser för %MW.

• Ett negativt värde större än -32768 (DEC) tilldelat till ett %MW för att representera exempelvis datatypen sunssf i växelriktaren som kan vara negativt värde.

• Ett värde mellan 65535 och 2147483647 (DEC) tilldelat ett %MD för att representera ackumulerade värden som inte ryms i ett %MW, antingen i PLC:n eller växelriktaren.

Värdena valdes godtyckligt inom ovanstående ramar för att ge förutsättning till Embriq att testa hantering av olika värden från vald PLC. Se Tabell 7 för PLC:s datatyper och dess gränsvärden.

(32)

25

Routern har en IP adress för WAN (Wide Area Network) och en IP adress för LAN (Local Area Network).

IP adressen för LAN i både router och PC tilldelades värden inom ramen för PLC:s Subnet mask. Detta för att alla tre apparater ska kunna kommunicera med varandra i det lokala nätverket.

(33)

26

4 Resultat

4.1 Hämtning av olika datatyper och storlek

När hämtning av växelriktarens register till PLC testades framkom det att det endast kan göras till minnesobjekten systemwords %SW eller memorywords %MW. Decimalt värde över 32767 tolkas som negativt av %MW och positivt av %SW. Hämtning av register kan alltså inte göras till memory double words %MD.

I SMA:s SunSpec tabeller anges registrens plats i adresseringsutrymmet. Då programmet Machine Expert Basic använder registeradressens nummer måste hänsyn tas till det vid hämtning (som tidigare nämnt under rubriken Register). Exempelvis hämtning av registernummer 40003 i SunSpec tabellen anges adressen 40002 i Machine Expert Basic programmet.

Modbus protokollet använder som tidigare nämnt 16bitars register. Det innebär att om SunSpecs datatyp är 32bit eller 64bit kommer exempelvis ett 32bit registerblock bestå av två stycken ihopkopplade 16bitar. När PLC:n ska hämta ett registerblock på 32bit det vill säga två delregister måste inställning i Machine Expert Basic göras så att det hämtar båda delregistren annars sker ingen hämtning. Detta måste göras oavsett om endast ett av delregistren i registerblocket ska användas.

Datablocket Manufacturer har exempelvis 16st delregister i sitt registerblock med registernummer 40005 till 40020 det vill säga 16 st delregister är ihopkopplade och tilldelade datatypen string. Se Tabell 9. Dessa register innehåller tillverkarens namn SMA. Bokstäverna i SMA är fördelade i de två första av de 16 delregistren då ett tecken har storleken 1byte och varje enskilt register kan innehålla två tecken det vill säga 2byte. För att kunna hämta dessa två delregister måste alla 16 delregister mappas i Channels assistant, det vill säga i rutan Read objects skrivs 40004 i Offset och 16 i Length. Se Figur 15.

I programmeringen kan sedan valfritt antal eller inga register väljas för hämtning. I detta fall de två första där det första registret innehåller bokstäverna SM och det andra registret bokstaven A.

4.2 Logga data i SD kort

4.2.1 Hantering av funktionen DATALOG och tidsstämpel

Testerna visar att det som mest går att använda fyra DATALOGblock numrerade 0-3. Dessa block måste användas i nummerordning, det vill säga det går ej att använda DATALOG1 om inte DATALOG0 används. Varje DATALOGblock kan lagra som mest 500kB och dessutom skapa en .BAK fil med samma storlek. Detta ger totalt 4MB som kan loggas innan SD kortet behöver tömmas. Om SD kortet inte är tömt kommer existerande .BAK fil att skrivas över om det inte förhindras med att använda den booleska variabeln BAK från DATALOGblocket eller någon annan programmeringsfunktion.

I varje DATALOGblock finns det plats för 32 st minnesobjekt som kan loggas med tillval att ha med tidsstämpel till varje loggning. Varje tidsstämpel tar ett utrymme på ca 18byte och innehåller datum och tid ner till sekunder. I csv filen får tidsstämpel och varje minnesobjekt en egen kolumn och varje loggning ger en ny rad. Avslutas loggningen och startas igen vid ett senare tillfälle fortsätter loggningen på raden efter den senaste loggningen.

PLC:n loggar tidsstämpel med formatet dd/MM/yyyy. Om datorn som används för att öppna csv filen inte har samma datumformat blir tidsstämpeln fel. Datumformatet som loggas av PLC:n går inte att ändra vilket innebär att datumformatet måste ändras i datorn. Det är vanligt att datumformatet är yyyy-MM-dd i datorn så ett program tillverkades i Python som gör om datumformatet till yyyy-MM-dd

References

Related documents

Såväl USA:s försvars- minister Donald Rumsfeld som Dan Fisk, vice utrikesminister med ansvar för bland annat Centralamerika, kom till Nicaragua strax efter valet och läxade upp

Frekvenční měnič nebo také měnič s proměnným či nastavitelným kmitočtem je zařízení sloužící k přeměně síťového napětí s konstantní frekvencí na jiné napětí

Uplnost abstraktu, klidov6 slova odpovidaji naplni pr6ce Velmi dobfe (2)B. Kvalila zpracov6ni reserie Viborne minus

Den höga mättnadsspänningen bidrar till högre ledningsförluster för SiC BJT.. Orsaken till att SiC BJT hade högre mättnadsspänning kan vara basströmmen som inte var

Skapa ett nytt projekt på ladderform och koda in programmet ovan med hjälp av de olika symbolerna som finns tillgängliga efter att POU:n markerats.. Tidskretsarna (TIMER_M) hittas

Det finns många olika protokoll som arbetar på olika nivåer inom data och telekommunikation. Dessa olika protokoll sätts ihop likt legoklossar för att man skall få en

Sida 1 av 2 Anmälan gäller växelriktare för produktionsanläggning Typ A som ska uppfylla alla krav enligt EU-förordningen 2016/631 ”Om fastställande av nätföreskrifter med

Datalogger disponuje celkem dvanácti kanály, a to znamená, že uživatel může najednou zvolit 12 proměnných jednoduchého datového typu, které mají být