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ārteja | OPC UA serveris | BACnet atbalsts | Modbus atbalsts | Platforma |
|---|---|---|---|---|
| Kepware KEPServerEX 6 | Pilns UA serveris (visi drošības režīmi) | BACnet/IP + MS/TP; BBMD; COV | Modbus RTU/TCP/ASCII; 65535 reģ. | Windows Server/PC |
| matrikon OPC UA Tunneller | OPC UA serveris + DA/HDA tilts | Tikai caur OPC DA tiltu | Tikai caur OPC DA tiltu | Windows |
| Cogent DataHub OPC UA | Pilns UA serveris | BACnet/IP; ierobežots COV | Modbus TCP | Windows |
| softing edgeConnector Modbus | OPC UA serveris | Nē — tikai Modbus | Modbus TCP + RTU | Docker / Linux / Windows |
| softing edgeConnector BACnet | OPC UA serveris | BACnet/IP + MS/TP | Nē | Docker / Linux / Windows |
| Ignition (Inductive Automation) | Iebūvēts OPC UA serveris | BACnet/IP ar draivera moduli | Modbus TCP/RTU draiveris | Windows / 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 tips | Present_Value tips | OPC UA datu tips | Tipisks pielietojums |
|---|---|---|---|
| Analogā ieeja (AI) | REAL (Float) | Float | Temperatū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ūla | Ieslē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 INT | Int32 | Darbības režīma nolasījums (Izsl=0, Sild=1, Dzes=2) |
| Daudzstāvokļu izeja (MO) | UNSIGNED INT | Int32 (rakstāms) | Režīma komanda, ātruma solis |
| Daudzstāvokļu vērtība (MV) | UNSIGNED INT | Int32 (rakstāms) | Konfigurējama uzskaitījuma vērtība |
| Akumulators | UNSIGNED INT (32-bitu) | UInt32 | Impulsu 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 kontrole | Ieviešana |
|---|---|
| Atsevišķa OT VLAN | Novietojiet 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 noteikumi | Atļ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ācija | Atspē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 kontrole | Izveidot 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āls | Ieslē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 →