OPC UA · BACnet/IP · Modbus TCP · Kepware · UaExpert · Azure IoT · 11 min lasīšanai

OPC UA uz BACnet un Modbus vārteja: protokolu tulkošana BMS integrācijai

Lielākā daļa uzstādīto BMS ierīču — BACnet/IP kontrolleri, Modbus TCP enerģijas skaitītāji un Modbus RTU lauka ierīces — neīsteno OPC UA serveri. Protokolu vārteja aizpilda šo plaisu: tā pieslēdzas vecākām ierīcēm, izmantojot to dzimtos protokolus, un atklāj visus atrastos datu punktus kā OPC UA mezglus vienā pārlūkojamā adrešu telpā. Kepware KEPServerEX ir nozares standarts šai lomai, ko atbalsta Siemens, Schneider un Rockwell Automation daudzprotokolu BMS vārteju izvietošanai.

Kāpēc nepieciešama vārteja

BACnet/IP un BACnet MS/TP ierīces atklāj datus, izmantojot BACnet objektu pakalpojumus (ReadProperty, SubscribeCOV), nevis OPC UA pakalpojumus. Modbus TCP un RTU ierīces atklāj datus kā numurētus reģistrus bez iebūvētiem nosaukumiem, tipu informācijas vai drošības. OPC UA klients nevar tieši sazināties ne ar vienu no šiem protokoliem.

Vārteja darbojas kā tulkošanas slānis. Dienvidu pusē tā aptaujā vai abonē ierīces, izmantojot to dzimtos protokolus. Ziemeļu pusē tā palaiž pilnu OPC UA serveri, kartējot katru ierīces datu punktu uz nosauktu, tipizētu OPC UA mainīgā mezglu. Rezultāts: SCADA sistēma, mākoņsavienotājs vai enerģijas pārvaldības platforma redz vienu OPC UA galapunktu, kas satur visus ēkas datus, neatkarīgi no tā, vai pamatā esošās ierīces runā BACnet, Modbus, KNX vai SNMP.

COV pret aptauju vārtejā: BACnet ierīcēm, kas atbalsta izmaiņu vērtības (COV) abonementus, konfigurējiet Kepware izmantot SubscribeCOV, nevis periodisku ReadProperty aptauju. COV samazina BACnet tīkla trafiku un nodrošina, ka vārteja atspoguļo stāvokļa izmaiņas nekavējoties, nevis gaida nākamo aptaujas ciklu. Modbus ierīcēm vienmēr nepieciešama aptauja — iestatiet skenēšanas ātrumu atbilstoši datu svaiguma prasībām (parasti 1–10 sekundes HVAC, 100–500 ms enerģijas kvalitātei).

Vārteju iespēju salīdzinājums

VārtejaOPC UA serverisBACnet atbalstsModbus atbalstsPlatforma
Kepware KEPServerEX 6Pilns UA serveris (visi drošības režīmi)BACnet/IP + MS/TP; BBMD; COVModbus RTU/TCP/ASCII; 65535 reģ.Windows Server/PC
matrikon OPC UA TunnellerOPC UA serveris + DA/HDA tiltsTikai caur OPC DA tiltuTikai caur OPC DA tiltuWindows
Cogent DataHub OPC UAPilns UA serverisBACnet/IP; ierobežots COVModbus TCPWindows
softing edgeConnector ModbusOPC UA serverisNē — tikai ModbusModbus TCP + RTUDocker / Linux / Windows
softing edgeConnector BACnetOPC UA serverisBACnet/IP + MS/TPDocker / Linux / Windows
Ignition (Inductive Automation)Iebūvēts OPC UA serverisBACnet/IP ar draivera moduliModbus TCP/RTU draiverisWindows / Linux (JVM)

Kepware KEPServerEX: BACnet/IP draivera iestatīšana

Kepware BACnet/IP Ethernet draiveris (licencēts atsevišķi no KEPServerEX pamatpakotnes) savienojas ar BACnet/IP ierīcēm lokālajā apakštīklā vai caur maršrutētājiem, izmantojot BACnet Broadcast Management Device (BBMD). Pēc draivera kanāla pievienošanas Kepware automātiski atklāj visas redzamās BACnet ierīces un importē to objektu sarakstus.

Kepware BACnet/IP draivera konfigurācija

Channel settings (Connectivity > BACnet/IP Ethernet):
  Network adapter: 192.168.10.5 (Kepware server OT NIC)
  UDP port: 47808 (BAC0 — standard BACnet/IP port)
  BACnet device instance: 1001 (Kepware gateway identity on BACnet network)
  BBMD address: 192.168.10.1 (router acting as BBMD for cross-subnet discovery)
  BBMD UDP port: 47808
  Foreign device registration: enabled (for devices on other subnets)

Auto-discovery:
  Tools > Device Discovery > BACnet/IP
  Scan range: all subnets registered on BBMD
  Result: discovered 47 BACnet devices with object counts
  Import: select all → creates Kepware device entries with all objects

COV subscription (preferred over polling):
  Device property > Subscriptions > Use COV: Enabled
  Lifetime: 3600 seconds (re-subscribe hourly)
  COV increment for Analog Values: 0.5 (only report if change > 0.5 units)
  Fallback poll rate (if COV not supported): 5000 ms

Katrs importētais BACnet objekts kļūst par Kepware tagu. Kepware automātiski kartē BACnet Present_Value īpašību ar taga primāro vērtību. Taga nosaukums seko paraugam DeviceName.ObjectType_Instance.Property, piemēram: PXC_01.AnalogInput_1.Present_Value. Šie tagi uzreiz tiek eksponēti kā OPC UA mainīgo mezgli KEPServerEX iebūvētajā OPC UA galapunktā.

Modbus TCP uz OPC UA: reģistru kartes imports

Modbus TCP ierīcēm nepieciešama skaidra reģistru kartes konfigurācija — atšķirībā no BACnet, nav pašaprakstošas objektu atklāšanas. Kepware Modbus TCP/IP Ethernet draiveris pieņem CSV taga importa failu vai manuālu taga konfigurāciju, norādot reģistra adresi, datu tipu un inženierijas pārveidošanu.

Kepware Modbus TCP taga konfigurācija

Channel: Modbus TCP/IP Ethernet
  Network adapter: 192.168.10.5
  Port: 502 (standard Modbus TCP port)
  Request timeout: 1000 ms
  Failure count before error: 3

Device: Schneider_PM5100
  IP address: 192.168.10.21
  Unit ID (slave address): 1
  Scan rate: 1000 ms (1 second)

Tags (imported from Schneider PM5100 register map):
  Tag name            | Address        | Data type | Scaling
  ActivePower_Total   | 400593 (HR593) | Float (4B) | ×1 → kW
  ActiveEnergy_Import | 400001 (HR001) | DWord (4B) | ×0.1 → kWh
  Voltage_L1_N        | 400003 (HR003) | Float (4B) | ×1 → V
  Current_L1          | 400013 (HR013) | Float (4B) | ×1 → A
  PowerFactor_Total   | 400085 (HR085) | Float (4B) | ×1 (dimensionless)
  Frequency           | 400073 (HR073) | Float (4B) | ×1 → Hz

# Tag addressing format for Kepware Modbus driver:
# Holding Register 40001 → address "400001" or "4:1"
# Input Register 30001   → address "300001" or "3:1"
# Coil 1                 → address "000001" or "0:1"
# Discrete Input 10001   → address "100001" or "1:1"

BACnet objekta kartēšana uz OPC UA mezglu

Kepware kartē katru BACnet objekta tipu uz OPC UA mainīgā mezglu ar atbilstošo OPC UA datu tipu. BACnet objekta Present_Value īpašība kļūst par OPC UA mezgla vērtību. Status_Flags un Reliability īpašības tiek kartētas uz OPC UA mainīgā StatusCode.

BACnet objekta tipsPresent_Value tipsOPC UA datu tipsTipisks pielietojums
Analogā ieeja (AI)REAL (Float)FloatTemperatūras sensors, spiediens, plūsma
Analogā izeja (AO)REAL (Float)Float (rakstāms)Vārsta pozīcijas iestatījums, ventilatora ātrums
Analogā vērtība (AV)REAL (Float)Float (rakstāms)Iestatījums, aprēķinātā vērtība
Binārais ieeja (BI)ENUMERATED (Aktīvs/Neaktīvs)BūlaIeslēgts/Izslēgts statuss, trauksmes stāvoklis
Binārā izeja (BO)ENUMERATED (Aktīvs/Neaktīvs)Būla (rakstāms)Ieslēgts/Izslēgts komanda, releja vadība
Binārā vērtība (BV)ENUMERATED (Aktīvs/Neaktīvs)Būla (rakstāms)Režīma karogs, pārrakstīšanas stāvoklis
Daudzstāvokļu ieeja (MI)UNSIGNED INTInt32Darbības režīma nolasījums (Izsl=0, Sild=1, Dzes=2)
Daudzstāvokļu izeja (MO)UNSIGNED INTInt32 (rakstāms)Režīma komanda, ātruma solis
Daudzstāvokļu vērtība (MV)UNSIGNED INTInt32 (rakstāms)Konfigurējama uzskaitījuma vērtība
AkumulatorsUNSIGNED INT (32-bitu)UInt32Impulsu skaitītājs: kWh, m³, litri

OPC UA vārteju drošība

OPC UA vārteja ir IT/OT robežierīce. Ja tā tiek apdraudēta, uzbrucējs var rakstīt uz BACnet izejām (vārsti, releji) vai Modbus spolēm, izmantojot OPC UA rakstīšanas servisu. Pielietojiet dziļuma aizsardzību: tīkla segmentācija, sertifikātu autentifikācija, minimālas rakstīšanas tiesības.

Drošības kontroleIeviešana
Atsevišķa OT VLANNovietojiet Kepware serveri izolētā VLAN; BACnet un Modbus ierīces tajā pašā VLAN; bez tiešas maršrutēšanas uz IT tīklu
Ugunsmūra noteikumiAtļaut TCP 4840 ienākošos tikai no zināmām OPC UA klientu IP adresēm; bloķēt visus pārējos ienākošos; atļaut Kepware izejošos uz BACnet UDP 47808 un Modbus TCP 502
Sertifikātu autentifikācijaAtspējot anonīmo piekļuvi; pieprasīt X.509 klientu sertifikātus; importēt uzticamos klientu sertifikātus Kepware uzticības krātuvē
Kepware lietotāju piekļuves kontroleIzveidot tikai lasāmu UA lomu monitoringa klientiem; lasīšanas-rakstīšanas UA lomu tikai BMS integrācijai; MFA uz Kepware administrācijas konsoles
Aizsardzība pret rakstīšanu tagu līmenīIestatīt Modbus tagus tikai lasāmus Kepware, ja rakstīšana nav nepieciešama; BACnet AO/BO/MO tagus ar rakstīšanas tiesībām tikai SCADA lomai
Audita žurnālsIeslēgt Kepware notikumu žurnālu; nosūtīt uz Windows notikumu žurnālu → SIEM; brīdināt par neatļautiem rakstīšanas mēģinājumiem

Noklusējuma ports 4840: Kepware KEPServerEX pēc noklusējuma klausās TCP portā 4840 — IANA reģistrētais OPC UA ports. Šis ports ir jāatver Windows ugunsmūrī Kepware datorā, lai OPC UA klienti varētu pieslēgties. Nepakļaujiet portu 4840 neuzticamiem tīkliem. Ja Kepware serverim nepieciešama interneta piekļuve OPC UA (mākoņa savienotājiem), izmantojiet reverso starpniekserveri ar savstarpējo TLS, nevis tiešu portu pāradresāciju.

OPC UA savienojumu testēšana ar UaExpert

UaExpert (no Unified Automation) ir standarta bezmaksas OPC UA klients nodošanai un diagnostikai. Tas nodrošina pilnu adrešu telpas pārlūku, reāllaika datu monitoringu, abonēšanas testēšanu un drošības sertifikātu pārvaldību. Lejupielādējiet no unified-automation.com (nepieciešama bezmaksas reģistrācija).

UaExpert — savienojuma un pārbaudes soļi

1. Add server:
   Server menu > Add > Advanced > Enter URL:
   opc.tcp://192.168.10.50:4840
   Security policy: Basic256Sha256
   Message security mode: SignAndEncrypt
   Authentication: Certificate (browse to client_cert.pem + client_key.pem)

2. First connection — certificate exchange:
   UaExpert generates a self-signed client cert on first run
   Server will show certificate as "untrusted" initially
   On Kepware: OPC UA Configuration > Trusted Clients > Move cert to Trusted
   On UaExpert: OPC UA > Manage Certificates > Trust the server cert

3. Browse address space:
   Expand Root > Objects > (your channel name) > (device name)
   Locate BACnet tags: PXC_01 > AnalogInput_1 > Present_Value
   Locate Modbus tags: Schneider_PM5100 > ActivePower_Total

4. Read values:
   Double-click any Variable node to open Data Monitor
   Verify values match expected engineering units and range
   Check StatusCode column — should show "Good (0x00000000)"
   StatusCode "Bad_NoCommunication" → check BACnet/Modbus connectivity from Kepware

5. Create subscription:
   Data Access View panel (bottom): drag Variable nodes from address space
   Set PublishingInterval 1000 ms
   Watch values update in real time — confirms subscription pipeline is working

6. Test write (writable tags only):
   Right-click Variable node > Write Value
   Enter test value within EU range
   Verify change reflected on BACnet device Present_Value
   Note: writes on Kepware require the connecting client to have write permission in UA role

Mākoņa integrācija, izmantojot Azure IoT Hub OPC Publisher

Azure IoT Hub OPC Publisher ir Microsoft atvērtā koda OPC UA klients, kas savienojas ar OPC UA serveriem (tostarp Kepware) un nosūta telemetriju uz Azure IoT Hub. Tas darbojas kā Azure IoT Edge modulis Linux konteineru saimniekdatorā ēkā, savienojot OT OPC UA slāni ar Azure mākoņpakalpojumiem.

OPC Publisher — publishednodes.json Kepware

// publishednodes.json — defines which OPC UA nodes to publish to Azure IoT Hub
[
  {
    "EndpointUrl": "opc.tcp://192.168.10.50:4840",
    "UseSecurity": true,
    "OpcAuthenticationMode": "UsernamePassword",
    "OpcAuthenticationUsername": "azure-publisher",
    "OpcAuthenticationPassword": "<from keyvault>",
    "OpcNodes": [
      {
        "Id": "ns=2;s=Channel1.PXC_01.AnalogInput_1.Present_Value",
        "DisplayName": "AHU01_SupplyAirTemp",
        "OpcPublishingInterval": 10000,
        "OpcSamplingInterval": 5000,
        "HeartbeatInterval": 60
      },
      {
        "Id": "ns=2;s=Channel1.Schneider_PM5100.ActivePower_Total",
        "DisplayName": "MainMeter_ActivePower_kW",
        "OpcPublishingInterval": 5000,
        "OpcSamplingInterval": 2000
      },
      {
        "Id": "ns=2;s=Channel1.Schneider_PM5100.ActiveEnergy_Import",
        "DisplayName": "MainMeter_Energy_kWh",
        "OpcPublishingInterval": 60000,
        "OpcSamplingInterval": 30000,
        "SkipFirst": true
      }
    ]
  }
]

// Azure IoT Hub receives JSON telemetry:
// {
//   "NodeId": "ns=2;s=Channel1.Schneider_PM5100.ActivePower_Total",
//   "DisplayName": "MainMeter_ActivePower_kW",
//   "Value": { "Value": 47.3, "StatusCode": "Good", "SourceTimestamp": "2025-03-14T10:30:00Z" }
// }

No Azure IoT Hub telemetrija tiek novirzīta uz Azure Time Series Insights, Azure Data Explorer vai pielāgotu Azure Stream Analytics darbu reāllaika enerģijas KPI informācijas paneļiem Power BI. OPC Publisher konteiners pārvalda atkārtotu savienojumu, buferizāciju savienojuma zuduma gadījumā (konfigurējama glabāšana un pārsūtīšana) un sertifikātu pārvaldību OPC UA savienojumam ar Kepware.

Vai jūsu projektam nepieciešams BACnet vai Modbus uz OPC UA vārteja?

Mēs konfigurējam un nododam ekspluatācijā Kepware KEPServerEX vārtejas, kas savieno BACnet/IP, Modbus TCP un KNX ēkas ierīces ar OPC UA klientiem, SCADA platformām un Azure IoT Hub — ar pilnu drošības nostiprināšanu un sertifikātu pārvaldību.

Pieprasīt piedāvājumu →
Ielādējas...
Uz augšu