Gå till innehållet

Datainsamling via OPC UA

DataPortia är en OPC UA-klient. Den öppnar en förbindelse till anläggningens befintliga OPC UA-server, prenumererar på mätpunkterna och lagrar värdena i en tidsseriedatabas. Automationssystemet ändras inte — data samlas in via det gränssnitt som systemet redan har.

Datainsamlingens flöde Värden läses från automationssystemets OPC UA-server till DataPortia, som lagrar dem i en tidsseriedatabas. Förbindelsen är enkelriktad: DataPortia bara läser. 01 · Anläggning02 · Server03 · Lagring AutomationDataPortiaTimescaleDB OPC UA-serverOPC UA-klientPostgreSQL 18 endast läsning2 000+ /s
Figur 1 · Datainsamlingens flöde — DataPortia läser, skriver inte
2 000+
värden / s Genomströmning
~172 milj.
rader / dygn Motsvarande ackumulering
över 90 %
diskbesparing Komprimering efter 2 dygn
24 mån
standard Lagringstid, justerbar

Fungerar DataPortia med vårt automationssystem?

DataPortia ansluter till vilket system som helst som har en OPC UA-server. Klientstacken är OPC Foundations .NET Standard-implementation och stöder Data Access-tjänsterna samt delen Alarms & Conditions (Part 9). I praktiken täcker det system från Siemens, ABB, Valmet, Beckhoff, Schneider Electric, Honeywell och Rockwell. Det är inte tillverkaren som avgör utan gränssnittet.

DataPortia använder OPC UA-protokollet för kommunikationen och inga andra protokoll. Om systemet bara har OPC Classic (DA/HDA) eller enbart en fältbussanslutning krävs en OPC UA-server eller wrapper däremellan. Kontrollera med automationsleverantören om en OPC UA-server redan är installerad eller licensierad.

Krav på förbindelsen och parallella servrar

En enda DataPortia-installation håller flera parallella förbindelser uppe samtidigt, inom de gränser licensnivån tillåter. En typisk anläggning har sällan bara en server: pannans kontrollrum, ställverket och en separat mätcentral kan alla vara egna OPC UA-servrar. Varje förbindelse definieras separat och har sin egen uppsättning mätpunkter och egna inställningar.

Vad en OPC UA-förbindelse till DataPortia förutsätter
ProtokollOPC UA, OPC Foundations .NET Standard-stack
TjänsterData Access samt Alarms & Conditions (Part 9)
FörbindelserFlera parallella; licensnivån avgör antalet tillåtna förbindelser
ReservserverRedundant serverpar per förbindelse
RiktningDataPortia läser från servern; automationens logik rörs inte
TillverkareSiemens, ABB, Valmet, Beckhoff, Schneider Electric, Honeywell, Rockwell — och andra OPC UA-kompatibla

Krävs det ändringar i automationssystemet?

Nej. DataPortia ansluter till systemet som en klient som öppnar en förbindelse till den befintliga OPC UA-servern och prenumererar på värden från den. Logikprogrammet, kontrollrumsbilderna och befintliga databaser rörs inte. Det som behövs är nätverksförbindelse till servern, läsrättigheter till önskade mätpunkter och en öppnad port i brandväggen — inte mer. Processen behöver inte köras ner, och automationsleverantören behövs inte däremellan.

Var DataPortia installeras

DataPortia installeras på en egen server i anläggningens nätverk — programmet är ASP.NET Core 10.0 och kör sin egen Kestrel — och anslutningsuppgifterna samt de mätpunkter som ska samlas in definieras i användargränssnittet. Servern kan vara Windows 10/11, Windows Server 2016 eller nyare, eller Linux (Debian, Ubuntu).

Hur väljs mätpunkterna och hur ofta lagras värdena?

Mätpunkterna läggs till och underhålls i DataPortias användargränssnitt: varje punkt har en egen krets, ett nodnamn, en enhet och en kategori. Lagringsintervallet ställs in per förbindelse (t.ex. 1 s), så punkterna i samma förbindelse lagras i samma takt. Insamlingen bygger på en OPC UA-prenumeration: servern meddelar värdet själv när det ändras.

DataPortias vy för hantering av mätpunkter, där punkterna som samlas in listas med kolumner för krets, nodnamn, enhet och kategori
Figur 2 · Hantering av mätpunkter — punkterna som samlas in och deras uppgifter
Prenumerationens och lagringsintervallets betydelse
Prenumeration
Punkterna avfrågas inte varv för varv, utan servern skickar det ändrade värdet utifrån prenumerationen. Långsamt varierande punkter ger därför ingen onödig trafik.
Lagringsintervall
Ställs in per förbindelse (t.ex. 1 s). Intervallet avgör hur många rader en förbindelse ger per dygn och påverkar därmed direkt behovet av diskutrymme.

Hur mycket data klarar DataPortia?

Genomströmningen är över 2 000 värden per sekund, vilket motsvarar cirka 172 miljoner rader per dygn. Lagringen sker i PostgreSQL 18 och tillägget TimescaleDB, som är gjort för tidsseriedata. Den praktiska gränsen kommer sällan från protokollet — den kommer från disken och från hur tätt värdena lagras och hur länge de sparas.

Genomströmning och serverkrav i tabellform
Genomströmning och serverkrav
Genomströmning2 000+ värden per sekund
Ackumulering172 miljoner rader per dygn
DatabasPostgreSQL 18 + TimescaleDB
ServerprogramASP.NET Core 10.0, egen Kestrel
MinneMinst 8 GB, rekommendation 16–32 GB
DiskMinst 100 GB SSD
OperativsystemWindows 10/11, Windows Server 2016+, Linux (Debian, Ubuntu)

Det här är kapacitetssiffror, inte löften. De visar att insamlingsmängden sällan är det som tar emot först. Om den planerade insamlingen är av samma storleksordning eller större lönar det sig att gå igenom dimensioneringen från fall till fall: antalet punkter, lagringsintervallen och lagringstiden avgör tillsammans behovet av diskutrymme.

Hur länge sparas data och hur mycket diskutrymme tar den?

Mätdata komprimeras automatiskt efter två dygn, och komprimeringen sparar över 90 procent av diskutrymmet. De senaste två dygnens data förblir okomprimerad. Lagringstiden är justerbar; standard är 24 månader, varefter äldsta data raderas. Behovet av diskutrymme bestäms av antalet punkter, lagringsintervallet och lagringstiden tillsammans, och växer klart långsammare efter de första två dygnen.

Val av lagringstid och dimensionering av diskutrymme

Lagringstiden kan ställas kortare eller längre efter vad rapporteringen och eventuella myndighetskrav förutsätter. Ett tätt lagringsintervall för hundra punkter tar mer disk än ett glest intervall för tusen — dimensioneringen bör göras utifrån punktlistan, inte utifrån antalet punkter enbart.

Går det att importera gammal historik till DataPortia?

Ja, om automationssystemets OPC UA-server har ett historikregister. DataPortia läser historiken via samma förbindelse och lagrar den i samma tidsseriedatabas som den realtidsinsamlade datan. Importen är luckbaserad: den läser bara de perioder som ännu inte finns i databasen, så en avbruten import kan fortsätta utan dubbletter.

DataPortias OPC UA-historikläsning: tidsintervall, val mellan att endast lägga till saknade data eller ersätta befintliga, och val av mätpunkter
Figur 3 · Historikläsning: att endast lägga till saknade data lämnar befintliga orörda
Luckbaserad historikimport Tidsaxel i två rader: den övre raden visar de perioder som redan finns i tidsseriedatabasen och luckorna mellan dem, den nedre raden visar att importen läser endast luckorna från servern. 01 · Historik i databasen luckalucka 02 · Luckbaserad import endast saknade perioder läses äldstnu
Figur 4 · Luckbaserad import hämtar bara de perioder som ännu saknas i databasen

Gränsen sitter i servern, inte i DataPortia: bara det som historikregistret har sparat går att importera. Om servern håller historik i 30 dygn finns det inget äldre att hämta.

Vad luckbaserad import i praktiken tillåter

Samma import kan köras om utan skada, en lucka efter ett förbindelseavbrott kan fyllas i i efterhand, och för en ny mätpunkt kan tidigare historik hämtas först när punkten läggs till i insamlingen.

Hur får man värden som automationen inte ger direkt?

Med beräkningspunkter. De är formelbaserade härledda mätpunkter som räknas ut från de insamlade värdena — till exempel energi (kWh) ur momentan effekt (kW). Beräkningen anpassar sig till rapportens tidsintervall, så samma punkt ger rätt summa både i dygns- och i månadsrapporten. Formeln skrivs en gång, och inga nya mätningar behöver läggas till på automationssidan.

När en beräkningspunkt ersätter en ändring i automationen

När förbrukning, verkningsgrad eller specifik förbrukning saknas i rapporten görs den i DataPortia som en beräkningspunkt i stället för att en ny räknare läggs till i logiken. En beräkningspunkt beter sig som vilken mätpunkt som helst: den syns i trender, på dashboards och i rapporter.

Vad händer när förbindelsen till OPC UA-servern bryts?

För varje förbindelse kan ett redundant serverpar definieras. Om den primära servern inte svarar går DataPortia över till reservservern och insamlingen fortsätter. Värden som saknas under avbrottet kan fyllas i i efterhand med historikimport, om serverns historikregister täcker perioden. Övriga förbindelser fortsätter samla in oberoende av avbrottet, så ett fel i en automationsserver stoppar inte hela insamlingen.

DataPortias anslutningsinställningar: fyra parallella OPC UA-anslutningar, varav två har både primär- och reservserver konfigurerade
Figur 5 · Anslutningsinställningar: fyra parallella OPC UA-anslutningar, två av dem med primär- och reservserver
Redundans för DataPortias egen installation

Att göra DataPortias egen installation redundant är något annat än ett redundant serverpar: till det används PostgreSQL:s fysiska streaming replication — omkopplingen automatiseras av DataPortias egen DPFC-kontroller eller på Linux av pg_auto_failover eller Patroni — och ett aktivt–passivt par på applikationsnivå. Detaljerna: hög tillgänglighet.

Vanliga frågor om datainsamling via OPC UA

Nedan har jag samlat de frågor som oftast kommer upp före den första förbindelsen: molnförbindelse, antalet servrar, att lägga till mätpunkter i efterhand och operativsystem som stöds. Om din egen fråga inte finns på listan svarar jag gärna på den.

Behövs moln- eller internetförbindelse?

Nej. DataPortia körs on-premises: programmet installeras i anläggningens eget nätverk och data stannar där. Användargränssnittet är en Vue 3-webbapp som öppnas inifrån nätverket. Detsamma gäller AI-analysen, som körs med en lokal Ollama-språkmodell.

Hur många OPC UA-servrar kan kopplas till en installation?

Flera parallella förbindelser, var och en med egna mätpunkter och eget redundant serverpar. Antalet samtidiga förbindelser är en fråga om licensnivå: licensen avgör antalet tillåtna förbindelser, och priset skalar efter antalet OPC UA-förbindelser. Den tekniska gränsen kommer först därefter, från serverhårdvaran och det sammanlagda antalet insamlade punkter. Se DataPortias licensiering.

Går det att lägga till mätpunkter efter driftsättningen?

Ja. Mätpunkterna hanteras i användargränssnittet, så insamlingen behöver inte byggas färdig på en gång. För en ny punkt kan även tidigare historik hämtas, om automationsserverns historikregister har sparat den.

Hur kommer andra system åt den insamlade datan?

Via REST-gränssnittet: v1, endast läsning, API-nyckel och 120 förfrågningar per minut per nyckel. Gränssnittet och webhookarna beskrivs på sidan integrationer.

Samlar DataPortia in även larm?

Ja, via samma OPC UA-förbindelse. Larm och händelser läses med Alarms & Conditions-tjänsterna, och automationsserverns ursprungliga tidsstämpel bevaras oavkortad med millisekunds noggrannhet. Se larm och händelser.

Vilka operativsystem fungerar insamlingsservern på?

Windows 10/11, Windows Server 2016 och nyare samt Linux (Debian, Ubuntu). Minimikravet är 8 GB minne och 100 GB SSD-disk; vid kontinuerlig insamling är rekommendationen 16–32 GB minne.

Var lönar det sig att börja när förbindelsen ska testas?

Med en OPC UA-server och tio mätpunkter. Det visar redan samma dag om förbindelsen öppnas, om de önskade mätpunkterna hittas och om värdena kommer in i databasen. Först därefter lönar det sig att fundera på hela punktlistan, lagringsintervallen och lagringstiden. Testperioden är 30 dagar, alla funktioner utom HA-tillägget är i bruk och den binder inte till något.

Se även DataPortia i översikt och dashboards och trender.

Begär en testperiod på 30 dagar Kontakta mig