TEHTALNA TEHNIKA · LASTEN RAZVOJ · PODPORA
+386 2 320 33 46info@preciz.si
PRECIZTehnika tehtanja.
Povezana z vašim procesom.

PRECIZ · NEUTRON OPC UA

Neutron OPC UA — navodila za integracijo

Integracija Neutrona prek OPC UA: varna povezava, sprotni tehtalni podatki, stabilni zajem ter povezovanje s PLC in SCADA.

1. Pregled in podprte funkcije

Neutron OPC UA

Revizija navodil: 1.0 · Datum: 17. oktober 2026
Velja za: Neutron s strojno programsko opremo 2.5.0 in podporo OPC UA · Informacijski model proizvajalca 1.2.0

Neutron proizvajalca PRECIZ vključuje strežnik OPC UA za povezovanje s PLC-ji, sistemi SCADA, MES in računalniškimi aplikacijami. Vmesnik uporablja komunikacijo OPC UA Client/Server prek UA-TCP s kodiranjem UA Binary.

Strežnik omogoča:

  • Sprotno branje bruto, neto in tara mase, bruto mase visoke ločljivosti, surove vrednosti ADC, stabilnosti, statusa tehtnice, kode napake in enote.

  • Metapodatke meritve: razdelek, decimalna mesta, zmogljivost, mersko enoto in merilno območje.

  • Identifikacijo naprave in standardne podatke strežnika OPC UA.

  • Naročnine na spremembe sprotnih vrednosti.

  • Usklajeno branje enajstih merilnih polj iz istega posnetka.

  • Asinhroni zajem sveže stabilne meritve in prevzem rezultata.

  • Tariranje, nastavljeno taro, ničlenje in brisanje tare.

  • Nastavitev filtra FT in funkcije izmeničnega preklapljanja ADC (chopping) FC.

  • Dve sočasni seji odjemalcev.

  • Izbirno šifriranje, zaupanje aplikacijskim certifikatom ter pravice za branje ali branje in izvajanje ukazov.

Vse procesne spremenljivke so samo za branje. Operacije se izvajajo z metodami. Vmesnik ne omogoča poljubnih izvornih ukazov, kalibracije, krmiljenja izhodov, izbire aplikacije, rezultatov štetja, zgodovine, dogodkov ali OPC UA PubSub. Informacijski model je model proizvajalca PRECIZ in ni spremljevalni model OPC UA Weighing ali Device Integration.

Trije načini pridobivanja meritve imajo različne namene:

Tabela 1

Vmesnik

Uporaba

Sprotne spremenljivke in naročnine

Prikaz ali stalno spremljanje posameznih vrednosti

ReadMeasurement

Branje vseh enajstih merilnih polj iz enega trenutnega posnetka

CaptureStableWeight in nato GetCapturedMeasurement

Zamrznitev sveže veljavne stabilne meritve in prevzem z ID-jem zahteve

2. Hitri začetek

2.1 Vklop strežnika

  1. Odprite lokalno konfiguracijsko stran Neutrona ali konfiguracijsko orodje Bluetooth. Za upravljanje uporabnikov in certifikatov uporabite HTTPS ali overjeno povezavo Bluetooth.

  2. Izberite omrežni vmesnik in pridobite dodeljeni naslov IP.

  3. V nastavitvah Scale pustite zajem tehtnice vključen.

  4. Odprite zavihek OPC UA. Strojna programska oprema mora prikazovati razpoložljivo podporo OPC UA.

  5. Za šifriran dostop najprej ustvarite uporabnika v Users & permissions.

  6. V Settings vključite strežnik in izberite varnostni način. Za začetno povezavo ohranite vrata 4840 in najmanjši interval 100 ms.

  7. Kliknite Save. Naslov povezave kopirajte z Copy endpoint.

Primer končne točke:

opc.tcp://192.168.50.73:4840

2.2 Povezava z UAExpert

  1. Dodajte končno točko kot strežnik v UAExpert.

  2. V šifriranem načinu izberite Basic256Sha256 / SignAndEncrypt in overjanje Username/Password. V nezaščitenem načinu izberite None in Anonymous.

  3. Za šifriran dostop primerjajte certifikat Neutrona in mu zaupajte. Če Neutron še ne zaupa certifikatu odjemalca, sledite poglavju 4.2 in se povežite znova.

  4. Povežite se in odprite Objects → CS-NEUTRON Scale. NodeId objekta je Scale, prikazano ime pa CS-NEUTRON Scale.

  5. Povlecite Gross, Net, Tare, Stable, Status, ErrorCode in Unit v Data Access View.

  6. V priročnem meniju Data Access View nastavite interval objavljanja naročnine in interval vzorčenja spremljanih elementov; za začetek oba na 100 ms.

Vrednost uporabite le, ko je njen OPC UA StatusCode Good. ErrorCode=1 pomeni, da tehtnica nima izvorne napake. Status=1 ali Status=3 označuje stabilen prikaz.

3. Povezava in konfiguracija

3.1 Končna točka in omrežje

Končna točka ima obliko opc.tcp://<assigned-device-IP>:<port>. Uporabite naslov izbranega vmesnika Wi-Fi, Ethernet ali LTE. Zavihek OPC UA prikaže naslov in omogoča kopiranje. Stalen naslov IP poenostavi integracijo.

V napravi ni treba nastaviti naslova IP krmilnika PLC. Dovolite dohodni promet TCP na izbrana vrata. Odjemalec potrebuje omrežno pot do Neutrona; naslov LTE za operaterjevim NAT ni samodejno dostopen od zunaj. Uporabite ustrezno usmerjeno omrežje, zasebni APN ali VPN.

3.2 Nastavitve

Tabela 2

Nastavitev

Ključ

Privzeto

Vrednosti / učinek

Razpoložljivost OPC UA

OUB

Odvisno od strojne programske opreme

Samo branje: 0 ni na voljo, 1 na voljo

Varnostna podpora

OUS

Odvisno od strojne programske opreme

Samo branje: 0 ni na voljo, 1 na voljo

Strežnik OPC UA

OUE

Izključen

0 izključen, 1 vključen

Vrata TCP

OUP

4840

1024–65535; izberite nezasedena vrata storitve

Najmanjši interval posodabljanja

OUI

100 ms

10–5000 ms; najmanjši interval vzorčenja in objavljanja, ki ga strežnik sprejme

Varnost povezave

OUM

Nezaščitena

0 None/anonymous; 1 Basic256Sha256/SignAndEncrypt z uporabniškim imenom in geslom

Anonimni dostop do ukazov

OUC

Izključen

Samo v nezaščitenem načinu: 0 samo branje; 1 dovoljeni vsi podprti ukazi

Shranjevanje nastavitev OPC UA ponovno zažene storitev in prekine povezave odjemalcev. Tudi spremembe uporabnikov in zaupanja ponovno zaženejo storitev. Nato se povežite znova. Uporabljajo se obstoječe nastavitve naslova IP, tehtnice in ure.

Najmanjši interval je spodnja meja, ne fiksna perioda prenosa ali zagotovilo zakasnitve celotne povezave. Odjemalci zahtevajo svoje intervale in morajo upoštevati popravljene vrednosti, ki jih vrne strežnik.

4. Varnost in pravice

4.1 Načini povezave

Tabela 3

Način

Politika / varnost sporočil

Overjanje

Pravica za ukaze

Nezaščiten

None / None

Anonymous

Določa nastavitev Anonymous command access

Šifriran

Basic256Sha256 / SignAndEncrypt

Uporabniško ime in geslo ter zaupan aplikacijski certifikat odjemalca

Določa pravica uporabnika

V šifriranem načinu anonimne seje in prijava uporabnika s certifikatom niso podprte. Aplikacijski certifikat odjemalca identificira programsko opremo in ne nadomesti uporabniškega imena ter gesla. PIN spletne konfiguracije in certifikat HTTPS sta ločena od poverilnic in certifikatov OPC UA.

Nezaščiten način uporabljajte v zaupanja vrednem, izoliranem omrežju. Ne šifrira podatkov in ne overja posameznih uporabnikov.

4.2 Prva šifrirana povezava

  1. Odprite nastavitve OPC UA prek HTTPS ali overjene povezave Bluetooth.

  2. Dodajte uporabnika. Uporabniška imena imajo 1–64 znakov ASCII: črke, številke, podčrtaje ali vezaje. Velikost črk je pomembna. Gesla imajo 12–128 znakov. Podprtih je največ osem uporabnikov; privzetega računa OPC UA ni.

  3. Izberite Read only ali Read and execute commands.

  4. Vključite šifrirani OPC UA in shranite. Ura naprave mora biti sinhronizirana in obstajati mora vsaj en uporabnik. Varni zagon počaka na sinhronizacijo ure.

  5. Ob prvem varnem zagonu Neutron ustvari zasebni ključ in samopodpisani aplikacijski certifikat RSA-2048 z veljavnostjo pet let.

  6. V odjemalcu primerjajte prstni odtis SHA-256 certifikata Neutrona s prikazom v konfiguracijskem vmesniku in nato certifikatu zaupajte.

  7. Poskusite vzpostaviti šifrirano povezavo. Neutron neznani aplikacijski certifikat odjemalca zavrne in ga v Certificates prikaže kot rejected.

  8. Kliknite Refresh certificates and users, primerjajte prstni odtis odjemalca in kliknite Approve pri tem certifikatu.

  9. Znova se povežite z uporabniškim imenom in geslom.

Odjemalec mora zaupati Neutronu, da lahko postopek nadaljuje do pošiljanja lastnega certifikata. Odobritev ne izključi preverjanja veljavnosti, podpisa, uporabe ključa ali aplikacijskega URI-ja.

4.3 Pravice

Tabela 4

Operacija

Samo branje

Branje in izvajanje ukazov

Branje spremenljivk / naročnine

Da

Da

ReadMeasurement

Da

Da

GetCapturedMeasurement

Da

Da

CaptureStableWeight

Ne

Da

TareCurrent, SetTare, Zero, ClearTare

Ne

Da

SetFilter, SetHRFilter

Ne

Da

Pisanje spremenljivk / upravljanje uporabnikov ali certifikatov prek OPC UA

Ne

Ne

Shranjeni vlogi Reader in Operator ustrezata tema pravicama. Ločenih ravni pravic za posamezne ukaze ni. Pri šifriranju veljajo pravice uporabnika, OUC se ne upošteva. V nezaščitenem načinu OUC dovoli vse podprte ukaze ali nobenega.

Pet neuspešnih prijav povzroči 30-sekundno blokado prijav za celoten strežnik, kar lahko začasno vpliva tudi na druge uporabnike. Gesla se hranijo kot zgoščene vrednosti PBKDF2-HMAC-SHA256 s soljo; administracija ne izvaža gesel ali zasebnih ključev.

4.4 Identiteta naprave, certifikati CA in obnova

Aplikacijski URI Neutrona:

urn:preciz:cs-neutron:<MID>

Ustvarjeni certifikat vključuje ta URI, ime gostitelja <MID>.local z malimi črkami in naslov IP ob ustvarjanju. Ohranite stalen naslov ali izdajte nadomestni certifikat z naslovi, ki jih uporabljajo odjemalci.

Za izrecno zaupane samopodpisane aplikacijske certifikate certifikat CA ni potreben. Za PKI podjetja:

  1. Izberite Create and download CSR. Zahteva CSR uporabi obstoječi ključ naprave.

  2. CA naj izda aplikacijski certifikat OPC UA z ohranjenim aplikacijskim URI-jem v SAN, ustrezno razširjeno uporabo ključa za strežnik/odjemalca ter uporabo za digitalni podpis in šifriranje ključa.

  3. Uvozite ga kot CA-signed device certificate. Zasebni ključ se mora ujemati z obstoječim ključem Neutrona. V odjemalca namestite potrebno verigo CA.

  4. Za zaupanje odjemalcem s certifikati CA uvozite korenski CA kot Trusted client certificate or CA, vmesne CA pa kot Intermediate issuer CA. Sam vnos vmesnega izdajatelja ne podeli zaupanja.

  5. Če uporabljate preverjanje preklica, uvozite sezname CRL s podpisom CA kot Certificate revocation list in jih posodobite pred iztekom. Najprej uvozite njihove izdajatelje CA.

Podprt je uvoz PEM ali DER do 8192 bajtov na datoteko. Vsaka shramba zaupanih, zavrnjenih, izdajateljskih certifikatov in CRL hrani največ 12 vnosov. Ko je shramba zavrnjenih polna, odstranite zastarele vnose. Preverjajo se datumi in podpis izdajatelja nameščenih CRL; pretečeni CRL zavrnejo zadevne nove povezave. Brez nameščenih CRL se preklic ne preverja. Samodejnega prenosa CRL, OCSP ali upravljanja GDS ni.

Za obnovo ustvarite CSR in uvozite obnovljeni certifikat. Pretečeni certifikat naprave prepreči varen zagon. Replace device identity odstrani trenutni ključ/certifikat/CSR in ob naslednjem varnem zagonu ustvari novo identiteto; odjemalci ji morajo znova zaupati. Uporabniki in zaupani odjemalci se ohranijo.

Uporabniki in shrambe certifikatov se ohranijo pri običajnih ponovnih zagonih in posodobitvah OTA. Brisanje datotečnega sistema naprave jih odstrani. Pred predajo naprave drugemu lastniku izrecno odstranite stare uporabnike in vnose zaupanja.

5. Naslovni prostor in predstavitev podatkov

5.1 Imenski prostor in NodeId

URI imenskega prostora proizvajalca:

urn:preciz:cs-neutron:weighing:1

Ob vsaki povezavi razrešite URI v Server/NamespaceArray. Ne zapišite indeksa 1 ali 2 trajno v program. Pripona :1 pripada stalnemu URI-ju imenskega prostora; različica prenosljivega modela je 1.2.0.

Primer dveh zapisov iste spremenljivke:

nsu=urn:preciz:cs-neutron:weighing:1;s=Scale.Gross
ns=2;s=Scale.Gross

Številski zapis velja samo, ko strežnik temu URI-ju trenutno dodeli indeks 2. Če odjemalec ne podpira sintakse nsu=, razrešite URI in sestavite NodeId s številskim indeksom. Identifikatorji proizvajalca so nizi, občutljivi na velikost črk, vključno s pikami v Scale.Gross.

Tabela 5

Mesto v naslovnem prostoru

Nizovni NodeId objekta

Objects / CS-NEUTRON Scale

Scale

Objects / Device

Device

Objects / Server

Standardni imenski prostor 0, številski NodeId i=2253

Metode kličite z Scale kot nadrejenim ObjectId in z NodeId metode kot MethodId.

5.2 Enote in številska natančnost

Gross, Net in Tare so vrednosti Double, normalizirane na nastavljeno število decimalnih mest. HR je bruto masa visoke ločljivosti pred zaokroževanjem prikaza, ne neto masa ali surovi ADC. Vse mase uporabljajo trenutno Scale.Unit; OPC UA ne pretvarja enot. Prenosni tip Double ne izboljša točnosti senzorja.

Binarna plavajoča vejica ne predstavi vsake decimalne vrednosti natančno. Prikaz oblikujte s Scale.Decimals, za tehtalni korak pa uporabite Scale.Division. HR se lahko prikaže v znanstvenem zapisu: 9.31e-5 kg pomeni 0.0000931 kg.

5.3 Čas, posnetki in kakovost

Neutron prekopira zadnje tehtalne vrednosti v posnetek OPC UA približno vsakih min(OUI, 50) milisekund, odvisno od razpoložljivosti zajema. Branje ali naročnina ne sprožita dodatne pretvorbe ADC.

SourceTimestamp označuje čas merilnega posnetka pri sinhronizirani uri naprave. Pred sinhronizacijo ga ni. ServerTimestamp je strežnikov časovni žig DataValue in ni nujno enak SourceTimestamp. Časovni žigi OPC UA uporabljajo UTC.

Posamezna branja ali obvestila naročnin lahko pripadajo različnim posnetkom. Kadar morajo polja pripadati isti meritvi, uporabite ReadMeasurement ali zajeti rezultat. Nespremenjena spremljana vrednost ne povzroči nujno novega obvestila ob vsakem intervalu.

Tabela 6

DataValue StatusCode

Pomen / ukrep odjemalca

Good

Vrednost je uporabna; po potrebi preverite Stable in izvorni status

BadNoCommunication

Ni posnetka ali več kot dve sekundi ni novega posnetka; sprotno meritev zavrzite

BadSensorFailure

Izvorna napaka tehtnice; preverite ErrorCode

BadOutOfRange

Podobremenitev ali preobremenitev; meritev zavrzite

Kakovost velja za mase, ADC in Stable. Status, ErrorCode in Unit ostanejo berljivi med izvornimi napakami tehtnice, a postanejo zastareli, če se posnetki nehajo posodabljati. Diagnostika ukazov/zajema ostane berljiva neodvisno od kakovosti sprotne tehtnice. Metapodatki opisujejo konfiguracijo; njihov status Good ne dokazuje veljavnosti sprotnega rezultata tehtanja.

6. Referenca podatkov

Vsi spodnji vnosi so samo za branje. NodeId so nizovni identifikatorji proizvajalca, razen označenih v standardnem imenskem prostoru 0. Vsi skalarni vnosi imajo ValueRank −1.

6.1 Sprotne meritve in konfiguracija

Tabela 7

Nizovni NodeId

Tip

Enota

Opis

Scale.Gross

Double

Scale.Unit

Zaokrožena bruto masa

Scale.Net

Double

Scale.Unit

Zaokrožena neto masa

Scale.Tare

Double

Scale.Unit

Uveljavljena tara

Scale.HR

Double

Scale.Unit

Nezaokrožena bruto masa visoke ločljivosti

Scale.ADC

Int32

Enote ADC

Obstoječa vrednost ADC tehtnice, prekopirana s posnetkom; brez dodatnega branja strojne opreme

Scale.Stable

Boolean

—

Zastavica stabilnosti tehtnice

Scale.Status

UInt16

—

Status prikaza; spodnja tabela

Scale.ErrorCode

UInt16

—

Izvorna napaka; 1 pomeni brez napake

Scale.Unit

String

—

Nastavljena enota, npr. kg ali g

Scale.Decimals

UInt16

Decimalna mesta

Število decimalnih mest prikazane mase

Scale.Division

Double

Scale.Unit

Aktivni tehtalni razdelek

Scale.Capacity

Double

Scale.Unit

Zmogljivost aktivnega območja

Scale.Filter

UInt16

—

Aktivna nastavitev FT, 1–1023

Scale.HRFilter

Boolean

—

Nastavitev FC: false izključeno, true vključeno; krmili ADC chopping

ADC ni ločeno odčitavanje posameznih merilnih celic. Spremenljivka mV ni na voljo. Kljub imenu HRFilter krmili obstoječo funkcijo FC/ADC chopping, ne programskega filtra samo za spremenljivko OPC UA HR.

6.2 Izvorni status tehtnice

Tabela 8

Scale.Status

Pomen

0

Podobremenitev

1

V območju ničle

2

Nestabilno

3

Stabilno

4

Preobremenitev

255

Posnetek ni inicializiran

Za zastavico stabilnosti uporabite Scale.Stable. Scale.Status in OPC UA StatusCode sta ločena pojma; izvorni status 3 ni koda kakovosti OPC UA.

6.3 Izvorne kode napak

Tabela 9

Scale.ErrorCode

Pomen

1

Brez napake

99

Časovna omejitev ukaza

98

Neznan ukaz

97

Tehtnica izključena

96

Manjka kalibracija

95

Manjkajo meroslovni podatki

94

Napaka statusnega registra ADC

93

Napaka reference ADC

92

Napaka načina pretvorbe ADC

91

Napaka konfiguracije ure ADC

90

Napaka konfiguracije enega cikla ADC

89

Napaka konfiguracije izločitvenega filtra ADC

88

Neujemanje filtra ADC

87

Napaka konfiguracije kanala ADC

86

Neujemanje nastavitve ADC chopping

85

Napaka bipolarnega načina ADC

84

Napaka konfiguracije zunanje reference ADC

83

Neujemanje ojačenja ADC

82

Napaka filtra povprečenja ADC

6.4 Lastnosti meritev

Lastnosti imajo spodnje nizovne NodeId proizvajalca. Njihovi BrowseName so v imenskem prostoru 0, na primer 0:EngineeringUnits.

Tabela 10

Vzorec nizovnega NodeId

Tip

Pomen

Scale.Gross.EngineeringUnits, Scale.Net.EngineeringUnits, Scale.Tare.EngineeringUnits, Scale.HR.EngineeringUnits

EUInformation

Metapodatki enote

Scale.Gross.EURange, Scale.Net.EURange, Scale.Tare.EURange, Scale.HR.EURange

Range

Spodnja/zgornja meja merilnega območja

Scale.Gross.ValuePrecision, Scale.Net.ValuePrecision, Scale.Tare.ValuePrecision

Double

Izvoženo število decimalnih mest, enako Decimals

EURange je [0, Capacity], pri Net pa [-Capacity, Capacity]. Merilno območje je metapodatek, ne navodilo za omejevanje vrednosti. ValuePrecision je število decimalnih mest, ne razdelek ali specifikacija točnosti. HR nima lastnosti ValuePrecision.

EngineeringUnits uporablja kode UN/CEFACT za kg (4933453), g (4674125), lb (4997714) in oz (5197402). Drugi simboli enot imajo UnitId −1 in prazen standardni imenski prostor. Po spremembi enote, območja ali konfiguracije tehtnice osvežite metapodatke.

6.5 Diagnostika ukazov in zajema

Tabela 11

Nizovni NodeId

Tip

Opis

Scale.LastCommandId

UInt32

ID zadnjega sprejetega ukaza tare/ničlenja/filtra

Scale.LastCommandState

UInt16

0 mirovanje; 1 v vrsti; 2 izvajanje; 3 uspešno; 4 neuspešno

Scale.LastCommandResult

String

Izvorni odgovor ali razlog zavrnitve

Scale.LastCaptureId

UInt32

ID zadnje sprejete zahteve za stabilni zajem

Scale.LastCaptureState

UInt16

0 mirovanje; 1 čakanje; 2 zaključeno; 3 časovna omejitev

ID-ji ukazov in zajemov so ločeni zaporedji. Obe si delijo vsi odjemalci, veljata samo med delovanjem storitve in se ob njenem ponovnem zagonu ponastavita.

6.6 Identifikacija naprave

Tabela 12

Nizovni NodeId

Tip

Opis

Device.Manufacturer

String

PRECIZ

Device.Model

String

Model naprave

Device.SerialNumber

String

MID

Device.SoftwareRevision

String

Različica strojne programske opreme

Device.HardwareRevision

String

Različica strojne opreme

Device.DeviceName

String

Nastavljeno ime naprave

Identifikacijske vrednosti se naložijo ob zagonu OPC UA. Po spremembi imena naprave ponovno zaženite storitev, da osvežite DeviceName.

6.7 Standardni podatki strežnika

Naslednje poti so relativne glede na Objects / Server in uporabljajo imenski prostor 0.

Tabela 13

Pot za brskanje

Tip / vrednost

ServerArray

String[]; indeks 0 je aplikacijski URI naprave

NamespaceArray

String[]; indeks 0 je imenski prostor OPC UA, indeks 1 je aplikacijski URI naprave; v tem polju razrešite URI proizvajalca

ServerStatus

ServerStatusDataType

ServerStatus/StartTime, CurrentTime

DateTime, deklariran UtcTime

ServerStatus/State

ServerState; 0 Running pri običajnem delovanju

ServerStatus/SecondsTillShutdown

UInt32; 0, kadar zaustavitev ni načrtovana

ServerStatus/ShutdownReason

LocalizedText

ServerStatus/BuildInfo

BuildInfo: ProductUri, ManufacturerName, ProductName, SoftwareVersion, BuildNumber, BuildDate

ServiceLevel

Byte; 255 pri običajnem delovanju

Auditing

Boolean; false

VendorServerInfo

Objekt s podatki proizvajalca

ServerRedundancy/RedundancySupport

RedundancySupport; 0 None

ServerCapabilities/ServerProfileArray

String[]; URI-ji izvedbenega profila in funkcijskih sklopov

ServerCapabilities/LocaleIdArray

LocaleId[]; en

ServerCapabilities/MinSupportedSampleRate

Duration v ms; aktivni minimum OUI

ServerCapabilities/MaxBrowseContinuationPoints

UInt16; 5 na sejo

ServerCapabilities/SoftwareCertificates

SignedSoftwareCertificate[]; prazno

ServerCapabilities/ModellingRules, AggregateFunctions

Mape

ServerCapabilities/OperationLimits

Omejitve na zahtevo iz poglavja 9

Standardne spremenljivke polj imajo ValueRank 1 in ArrayDimensions [0]; ničla pomeni nedoločeno največjo dolžino. ServerProfileArray označuje izvedbeni cilj Micro Embedded Device 2017 in aktivne sklope prenosa/metod/varnosti. Identifikator profila ni certifikacijska oznaka OPC Foundation.

7. Metode in izvajanje ukazov

7.1 Pregled metod

Vsako metodo kličite na nadrejenem objektu Scale. Podajte skalarne argumente s točno prikazanimi tipi OPC UA; za argument UInt32 ali Boolean ne uporabite String, Int32 ali Double.

Tabela 14

Nizovni NodeId metode

Vhodni argumenti

Izhod

Pravica

Scale.ReadMeasurement

Brez

Enajst merilnih polj, poglavje 8.1

Branje

Scale.CaptureStableWeight

TimeoutMs: UInt32

RequestId: UInt32

Izvajanje

Scale.GetCapturedMeasurement

RequestId: UInt32

Enajst merilnih polj, poglavje 8.1

Branje

Scale.TareCurrent

Brez

RequestId: UInt32

Izvajanje

Scale.SetTare

Value: Double

RequestId: UInt32

Izvajanje

Scale.Zero

Brez

RequestId: UInt32

Izvajanje

Scale.ClearTare

Brez

RequestId: UInt32

Izvajanje

Scale.SetFilter

Value: UInt16

RequestId: UInt32

Izvajanje

Scale.SetHRFilter

Enabled: Boolean

RequestId: UInt32

Izvajanje

7.2 TareCurrent

Tarira trenutno stabilno bruto maso z izvorno operacijo T. Taro nastavi na bruto maso, neto pa postane nič; ničelne točke bruto mase ne spremeni. Tehtnica mora operacijo stabilnega tariranja sprejeti znotraj časovne omejitve ukaza.

Primer z 1,11 kg na tehtnici: Gross ostane 1,11 kg, Tare postane 1,11 kg, Net pa 0,00 kg. Izvorni uspešni odgovor je oblike T S 1.11 kg.

7.3 SetTare

Nastavi prednastavljeno taro v Scale.Unit z izvorno operacijo TA. Value mora biti končen, nenegativen, največ 1.000.000.000 in največ enak zmogljivosti tehtnice. Uveljavljena tara se zaokroži na razdelek tehtnice. Po zaključku preberite Scale.Tare za dejansko uveljavljeno vrednost. Primer vhoda: Double 0.250, kadar je Unit kg.

7.4 Zero

Izvede izvorni Z ob upoštevanju stabilnosti in nastavljenega območja ničlenja. Ob uspehu prilagodi ničelno točko in izbriše obstoječo uveljavljeno/prednastavljeno taro. Izvorni uspešni odgovor je Z A. To se razlikuje od TareCurrent.

7.5 ClearTare

Izvede izvorni TAC in odstrani uveljavljeno ter prednastavljeno taro. Gross se ohrani, Net pa postane enak Gross. Vhodnih argumentov ni.

7.6 SetFilter

Value je UInt16, 1–1023 vključno. S tem prek obstoječe konfiguracijske funkcije filtra nastavite FT za aktivni kanal tehtnice. Nič in vrednosti nad 1023 vrnejo BadOutOfRange. Primer: UInt16 512.

7.7 SetHRFilter

Enabled je Boolean: true vključi FC/ADC chopping, false ga izključi. Številska vrednost, poslana s številskim tipom OPC UA, ni Boolean in se zavrne.

FT in FC se aktivirata in shranita za aktivni kanal prek izvornih konfiguracijskih funkcij. Neuspešno preverjanje strojne opreme pomeni neuspešen rezultat ukaza. Zajem se med uveljavljanjem nastavitve lahko ustavi. Po zaključku preberite Scale.Filter ali Scale.HRFilter za aktivno nastavitev.

7.8 Asinhrono zaporedje ukazov

Za TareCurrent, SetTare, Zero, ClearTare, SetFilter in SetHRFilter:

  1. Pokličite metodo in shranite vrnjeni RequestId.

  2. Berite ali naročite se na LastCommandId, LastCommandState in LastCommandResult.

  3. Rezultat povežite samo z ujemajočim se LastCommandId.

  4. Stanje 3 pomeni uspeh, 4 neuspeh. Stanji 1 in 2 pomenita čakanje oziroma izvajanje.

  5. Po uspešnem zaključku preberite spremenjene procesne/konfiguracijske vrednosti.

Rezultat klica Good potrjuje sprejem, ne zaključka. V vrsti ali izvajanju je lahko samo en tak ukaz; naslednji prejme BadResourceUnavailable. Še vedno veljajo obstoječi pogoji stabilnosti, razpoložljivosti, zasedenosti in blokade aplikacije.

Mesto za ukaz in diagnostika zadnjega rezultata sta skupna celotni napravi. Če ukaze pošiljata dva odjemalca, uskladite pisce: poznejši ukaz lahko zamenja zadnjo zaključeno diagnostiko, preden jo drugi prebere. Diagnostika ni zgodovina ukazov.

ID-ji zahtev niso trajni identifikatorji operacij. Po izgubi povezave pred ponovitvijo ukaza z neznanim izidom preverite dejansko stanje tehtnice. Ponovni zagon storitve izbriše diagnostiko in prekliče nedokončane ukaze tehtnice v lasti OPC UA; že izvedenega tariranja, ničlenja ali spremembe nastavitve ne razveljavi.

8. Usklajene meritve in stabilni zajem

8.1 Izhod ReadMeasurement

ReadMeasurement() takoj vrne zadnji veljavni posnetek. Ne čaka na stabilnost in ne zahteva novega odčitka ADC. GetCapturedMeasurement vrne enak izhodni podpis za zamrznjen stabilni rezultat.

Tabela 15

Položaj (od nič)

Argument

Tip OPC UA

Pomen

0

MeasurementId

UInt64

Zaporedna številka posnetka

1

Gross

Double

Bruto masa

2

Net

Double

Neto masa

3

Tare

Double

Uveljavljena tara

4

HR

Double

Bruto masa visoke ločljivosti

5

Stable

Boolean

Stabilnost tega posnetka

6

Status

UInt16

Izvorni status tehtnice

7

ErrorCode

UInt16

Izvorna koda napake tehtnice

8

Unit

String

Enota tega rezultata

9

Timestamp

DateTime

UTC čas posnetka ali nič, če ura ni sinhronizirana

10

TimeSynchronized

Boolean

Ali je Timestamp uporaben kot koledarski čas

Vsa polja pripadajo istemu posnetku. MeasurementId narašča za vsak posnetek OPC UA, ne za vsako fizično pretvorbo ADC, in se ponastavi s storitvijo. Pri shranjevanju ohranite natančnost UInt64. ADC, metapodatki in filtri so ločena sprotna vozlišča in niso vključeni v ta enajstpoljni rezultat metode.

Če je TimeSynchronized false, Timestamp ne razlagajte kot koledarski datum. ReadMeasurement vrne BadNoCommunication, BadSensorFailure ali BadOutOfRange, kadar sprotni posnetek manjka/je zastarel, ima izvorno napako ali je izven območja.

8.2 CaptureStableWeight in GetCapturedMeasurement

  1. Pokličite CaptureStableWeight(TimeoutMs) z UInt32 100–60000 ms. Na primer 5000 omogoči do pet sekund čakanja na veljavno stabilno meritev. Nič ni veljavna vrednost.

  2. Shranite vrnjeni UInt32 RequestId.

  3. Pokličite GetCapturedMeasurement(RequestId) s tem ID-jem. Med čakanjem vrne BadWaitingForInitialData. Prevzem ponavljajte z zmernim intervalom, na primer 100 ms.

  4. Ob uspehu shranite vseh enajst polj skupaj z RequestId zajema.

Lahko se naročite tudi na LastCaptureId in LastCaptureState ter rezultat prevzamete, ko ujemajoča se zahteva doseže stanje 2.

Tabela 16

LastCaptureState

Pomen

0

Mirovanje

1

Čakanje

2

Zaključeno; rezultat je na voljo

3

Časovna omejitev

Zajeti posnetek mora biti objavljen po začetku zahteve ter biti stabilen, svež, brez izvornih napak in znotraj območja. Neveljavni posnetki se preskakujejo do primernega posnetka ali izteka časa. Če je tehtnica že stabilna, lahko naslednji veljavni posnetek zajem zaključi takoj; prehod iz nestabilnega v stabilno stanje ali dodatno obdobje zadrževanja nista potrebna.

Operacija ne tarira ali ničli tehtnice in ne blokira drugih odjemalcev. Čaka lahko samo en zajem. Celotna naprava hrani en zamrznjen rezultat, skupen vsem odjemalcem. Ostane nespremenjen tudi ob spremembi ali nedostopnosti sprotne mase. Nov zajem nadomesti prejšnjo zahtevo/rezultat. Zgodovine zajemov ni.

Tabela 17

Rezultat GetCapturedMeasurement

Pomen

Good

Vrne zamrznjeni rezultat

BadWaitingForInitialData

Ujemajoči se zajem še čaka

BadTimeout

Čas ujemajočega se zajema je potekel brez veljavne stabilne meritve

BadNotFound

ID je nič, neznan, nadomeščen ali po ponovnem zagonu ni več na voljo

BadNoData

Za ujemajoče se stanje zajema ni zaključenega rezultata

Za vhod v GetCapturedMeasurement uporabite RequestId zajema, ne MeasurementId rezultata. Zajem se lahko zaključi po odklopu začetnega odjemalca. Po ponovni povezavi ga lahko prevzamete z istim ID-jem, če je storitev OPC UA ves čas delovala. Ponovni zagon izbriše čakajoče zajeme, rezultate in ID-je; uskladite zahteve za zajem med odjemalci.

9. Naročnine, časovni parametri in omejitve

9.1 Časovni parametri

Tabela 18

Parameter

Pomen

OUI

Nastavljena spodnja meja vzorčenja in objavljanja

Interval vzorčenja

Kako pogosto se vzorči spremljani element

Interval objavljanja

Kako pogosto naročnina lahko objavi čakajoča obvestila

Velikost vrste

Število shranjenih obvestil na spremljani element

Keepalive

Potrditev aktivne naročnine, kadar ni obvestil

Za sprotni prikaz začnite s 100–250 ms in vrsto velikosti 1. Za najhitrejšo razpoložljivo posodobitev nastavite OUI na 10 ms, se po shranjevanju znova povežite in zahtevajte vzorčenje/objavljanje 10 ms. V logiki odjemalca uporabite popravljene intervale strežnika.

Hitrejše vzorčenje od fizičnega zajema ne ustvari novih meritev. Omrežna zakasnitev, šifriranje, obremenitev odjemalca in nastavitve objavljanja vplivajo na opažen odziv. UAExpert Server Status / Response Time ni interval vzorčenja ali objavljanja naročnine.

9.2 Zmogljivost in omejitve na zahtevo

Tabela 19

Vir

Omejitev

SecureChannels

Skupaj 4, vključno s prekrivanjem ob ponovni povezavi

Seje

2 sočasni

Časovna omejitev seje

Največji dogovorjeni čas 30 sekund

Naročnine

Skupaj 4; 2 na sejo

Spremljani elementi

Skupaj 64; 32 na naročnino

Vrsta spremljanega elementa

1–16 vrednosti na element

Čakajoče zahteve Publish

4 na sejo

Vrsta za ponovni prenos

16 sporočil na naročnino

Nadaljevalne točke brskanja

5 na sejo

Najmanjši interval vzorčenja/objavljanja

OUI, 10–5000 ms; privzeto 100 ms

Operacije Read / Write / Browse

32 na zahtevo

Operacije RegisterNodes / TranslateBrowsePaths

32 na zahtevo

Operacije Method Call

8 na zahtevo

Operacije spremljanih elementov

32 na zahtevo

Če ni navedena omejitev na sejo/naročnino, gre za skupne omejitve strežnika. Ko je vrsta Publish polna, najstarejša čakajoča zahteva prejme BadTooManyPublishRequests, da lahko strežnik uvrsti novo. Potrjevanje in Republish uporabljata omejeno vrsto za ponovni prenos. Omejitev operacij Write ne omogoči pisanja v spremenljivke samo za branje.

Seje pravilno zaprite. Odklopljeni odjemalec lahko do izteka še zaseda mesto s prejšnjo sejo. Kjer je podprto, ponovno uporabite/aktivirajte obstoječo sejo, sicer počakajte na iztek. Nova instanca strežnika ne more ponovno aktivirati seje iz časa pred ponovnim zagonom: ustvarite sejo, razrešite imenske prostore in obnovite naročnine. Odjemalci TCP, ki ne prevzemajo podatkov, se lahko odklopijo po enosekundnem roku za pošiljanje.

10. Primeri integracije

10.1 UAExpert: stabilni zajem

  1. Odprite CS-NEUTRON Scale, z desno tipko izberite CaptureStableWeight in nato Call.

  2. Vnesite TimeoutMs 5000 in kliknite Call. Zapišite vrnjeni RequestId.

  3. Odprite GetCapturedMeasurement in vnesite isti RequestId.

  4. Kliknite Call. Če zajem še čaka, ponovite GetCapturedMeasurement z istim ID-jem.

  5. Iz rezultata preberite Gross, Net, Tare, HR, Stable, Status, ErrorCode, Unit in Timestamp. Med čakanjem pustite obstoječi zajem delovati; ne začenjajte vedno novih zajemov.

10.2 Python: varna povezava, usklajeno branje in izbirni zajem

Odjemalski paket namestite v virtualno okolje Python:

python -m pip install asyncua

Pripravite aplikacijski certifikat odjemalca OPC UA in zasebni ključ. Aplikacijski URI v SAN mora ustrezati CLIENT_URI spodaj. Na Neutronu odobrite certifikat in prenesite certifikat Neutrona kot neutron.der. Zamenjajte končno točko, uporabniško ime in URI odjemalca s svojimi vrednostmi. Zasebni ključ v tem primeru pripada odjemalcu Python; ni zasebni ključ Neutrona.

import asyncio
import getpass

from asyncua import Client, ua
from asyncua.crypto.security_policies import SecurityPolicyBasic256Sha256
from asyncua.ua.uaerrors import UaStatusCodeError

URL = "opc.tcp://192.168.50.73:4840"
NS_URI = "urn:preciz:cs-neutron:weighing:1"
CLIENT_URI = "urn:example:neutron-client"
FIELDS = ("MeasurementId", "Gross", "Net", "Tare", "HR", "Stable",
          "Status", "ErrorCode", "Unit", "Timestamp", "TimeSynchronized")
CAPTURE = False  # Set True when logged in with command permission.


async def main():
    client = Client(URL, timeout=10)
    client.application_uri = CLIENT_URI
    await client.set_security(
        SecurityPolicyBasic256Sha256,
        certificate="client.der",
        private_key="client-key.pem",
        server_certificate="neutron.der",
        mode=ua.MessageSecurityMode.SignAndEncrypt,
    )
    client.set_user(input("Username: "))
    client.set_password(getpass.getpass("Password: "))

    async with client:
        ns = await client.get_namespace_index(NS_URI)
        scale = client.get_node(ua.NodeId("Scale", ns))

        def method(name):
            return ua.NodeId("Scale." + name, ns)

        values = await scale.call_method(method("ReadMeasurement"))
        result = dict(zip(FIELDS, values))
        print("Current snapshot:", result)

        if CAPTURE:
            request_id = await scale.call_method(
                method("CaptureStableWeight"),
                ua.Variant(5000, ua.VariantType.UInt32),
            )
            deadline = asyncio.get_running_loop().time() + 7
            while True:
                try:
                    values = await scale.call_method(
                        method("GetCapturedMeasurement"),
                        ua.Variant(request_id, ua.VariantType.UInt32),
                    )
                    print("Capture", request_id, dict(zip(FIELDS, values)))
                    break
                except UaStatusCodeError as exc:
                    if exc.code != ua.StatusCodes.BadWaitingForInitialData:
                        raise
                    if asyncio.get_running_loop().time() >= deadline:
                        raise TimeoutError("Client capture wait expired") from exc
                    await asyncio.sleep(0.1)


asyncio.run(main())

ReadMeasurement zahteva veljavne sprotne podatke. Klicna aplikacija mora obravnavati izjeme, kot sta BadSensorFailure in BadOutOfRange. BadTimeout iz GetCapturedMeasurement pomeni iztek časa zajema na strežniku; ni razlog, da bi star shranjeni rezultat uporabili kot nov uspešen zajem.

10.3 Python: naročnina na sprotno maso

Naslednja koda deluje znotraj že vzpostavljene povezave async with client. Obravnavalnik pred uporabo vrednosti preveri kakovost.

class WeightHandler:
    def datachange_notification(self, node, value, data):
        status = data.monitored_item.Value.StatusCode
        if status.is_good():
            print(node.nodeid.to_string(), value)
        else:
            print("Invalid measurement:", status)


ns = await client.get_namespace_index(NS_URI)
gross = client.get_node(ua.NodeId("Scale.Gross", ns))
subscription = await client.create_subscription(100, WeightHandler())
try:
    await subscription.subscribe_data_change(gross, queuesize=1)
    await asyncio.sleep(30)
finally:
    await subscription.delete()

Zahtevani interval objavljanja je 100 ms. Po potrebi prek odjemalske knjižnice nastavite vzorčenje spremljanih elementov in upoštevajte popravljene vrednosti strežnika.

10.4 Zaporedje integracije PLC

Uporabite odjemalske bloke OPC UA proizvajalca PLC. Nizovne NodeId razrešite prek URI-ja imenskega prostora proizvajalca. Naslednji primer je zaporedje, neodvisno od proizvajalca, ne izvedba v konkretnem programskem jeziku PLC:

CONNECT -> TRUST / AUTHENTICATE -> RESOLVE NAMESPACE URI
        -> RESOLVE Scale object and required variable/method NodeIds
        -> CREATE SUBSCRIPTION -> MONITOR LIVE DATA

On a stable-result request:
  Call Scale.CaptureStableWeight(TimeoutMs := UInt32(5000))
  Save returned RequestId
  Call Scale.GetCapturedMeasurement(RequestId)
    BadWaitingForInitialData -> wait 100 ms and repeat retrieval
    Good                    -> store the eleven fields as one record
    BadTimeout              -> report no stable result
    Other failure           -> handle the error; do not use old data

On tare request:
  Call Scale.TareCurrent()
  Save returned command RequestId
  Wait for matching LastCommandId and LastCommandState 3 or 4
  On success read Gross / Net / Tare; on failure read LastCommandResult

UInt64 MeasurementId preslikajte v ustrezen celoštevilski tip PLC. Metodi SetHRFilter ne pošiljajte številskega nadomestka za Boolean. Če ima več odjemalcev pravico za ukaze, v PLC/aplikaciji zaporedno uskladite ukaze in lastništvo stabilnega zajema.

11. Odpravljanje težav, prenosi in združljivost

11.1 Napake povezave in metod

Tabela 20

Simptom / status

Pomen in ukrep

BadCommunicationError / zavrnjena povezava

Preverite vklop OPC UA, IP/vrata končne točke, omrežno pot in požarni zid. Zagonski dnevnik mora vsebovati OPC UA listening on port ...

BadCertificateUntrusted

V odjemalcu zaupajte Neutronu in v Neutronu odobrite certifikat odjemalca ali namestite ustrezno verigo CA

Napake časa/URI-ja certifikata

Sinhronizirajte uri ter uporabite certifikat z veljavnimi datumi in nastavljenim aplikacijskim URI-jem odjemalca

BadIdentityTokenRejected / BadUserAccessDenied

Uporabite pravilno ime/geslo in potrebno pravico za ukaze; po ponavljajočih se neuspehih počakajte na iztek 30-sekundne blokade

BadTooManySessions / dosežena omejitev sej

Dve mesti sta zasedeni; odklopite drugega odjemalca ali počakajte na iztek opuščene seje

BadNodeIdUnknown

Znova razrešite URI proizvajalca, preverite velikost črk v nizovnem NodeId in združljivost strojne programske opreme/modela

BadTypeMismatch

Uporabite točen skalarni tip argumenta iz poglavja 7.1

BadOutOfRange pri CaptureStableWeight

Čas mora biti UInt32 100–60000; nič ni veljavna

BadOutOfRange pri SetFilter / SetTare

Uporabite FT 1–1023 ali končno nenegativno taro znotraj zmogljivosti in 1e9

BadResourceUnavailable

Mesto za ukaz ali zajem je zasedeno; počakajte na trenutno operacijo

Klic ukaza vrne Good, operacija pa ne uspe

Preverite ujemajoča se LastCommandState in LastCommandResult; Good potrjuje le uvrstitev

BadNotWritable pri pisanju spremenljivk

Procesne spremenljivke so samo za branje; uporabite podprto metodo

Zajem BadWaitingForInitialData

Nadaljujte prevzem istega ID-ja; strežnik čaka na veljaven stabilen vzorec

Zajem BadTimeout

Do roka ni prispel ustrezen stabilen vzorec

Zajem BadNotFound

Uporabite vrnjeni RequestId zajema; novejši zajem ali ponovni zagon je razveljavil stari ID

Po spremembi strojne programske opreme manjka ServerCapabilities

Osvežite naslovni prostor ali se povežite s svežim projektom odjemalca, da odstranite predpomnjene rezultate brskanja

Prazne/zastarele meritve

Zajem tehtnice naj ostane vključen; preverite ErrorCode, izvorni status in kakovost DataValue

11.2 Prenosi in povezana navodila

NodeSet2 opisuje naslovni prostor proizvajalca, argumente metod, reference in tipe za orodja za modeliranje brez povezave. Indeksi imenskih prostorov veljajo samo znotraj XML; na živi napravi razrešite URI imenskega prostora. XML vsebuje definicije modela, ne trenutnih meritev ali varnostne kopije uporabnikov/certifikatov/nastavitev. Dejanski intervali in pravice izvajanja sledijo aktivni konfiguraciji naprave.

11.3 Združljivost različic

Tabela 21

Informacijski model

Dodane funkcije vmesnika

1.0

Osnovne tehtalne vrednosti in metode tare/ničlenja

1.1.0

Metapodatki meritve, identifikacija, usklajena meritev in stabilni zajem

1.2.0

ADC, vrednosti FT/FC in SetFilter/SetHRFilter

URI ostane urn:preciz:cs-neutron:weighing:1. Obstoječi podpisi metod se ohranijo; ReadMeasurement/GetCapturedMeasurement vrneta enajst polj. Izberite strojno programsko opremo s podporo OPC UA in funkcijami, ki jih integracija potrebuje. Različica brez OPC UA ne more ponuditi končne točke.

Pogosta vprašanja

Ali Neutron podpira šifriran OPC UA?

Da. Izberite Basic256Sha256 / SignAndEncrypt, uporabite uporabniško ime in geslo ter uredite obojestransko zaupanje aplikacijskim certifikatom. Na voljo je tudi nezaščiten način None/Anonymous.

Kako pridobim eno usklajeno stabilno meritev?

Pokličite CaptureStableWeight z omejitvijo UInt32 100–60000 ms, shranite RequestId in z istim ID-jem prek GetCapturedMeasurement prevzemite enajstpoljni rezultat. Med čakanjem ponavljajte prevzem, ne začenjajte novega zajema.

Ali klic metode s statusom Good pomeni zaključen ukaz?

Pri ukazih tare, ničlenja in filtrov Good potrjuje sprejem. LastCommandId povežite z vrnjenim RequestId in počakajte na LastCommandState 3 (uspeh) ali 4 (neuspeh).

Kateri URI imenskega prostora in različico modela uporabim?

Ob vsaki povezavi razrešite urn:preciz:cs-neutron:weighing:1 v NamespaceArray. Prenosljivi informacijski model ima različico 1.2.0; številski indeks imenskega prostora, na primer 2, je samo primer.