İçeriğe geç

OPC DA

OPC DA (Data Access), OPC Classic standartlarının en yaygın kullanılan bileşenidir. Windows COM/DCOM teknolojisi üzerine inşa edilmiştir ve gerçek zamanlı veri erişimi sağlar. OPC UA’dan önce endüstriyel otomasyonda fiili standart olarak kullanılmıştır.

inSCADA, OPC DA protokolünü yalnızca Client rolünde destekler.

ÖzellikOPC DAOPC UA
PlatformYalnızca WindowsPlatform bağımsız
TeknolojiCOM/DCOMTCP/IP, HTTP, WebSocket
GüvenlikDCOM güvenliğiTLS, sertifika, kullanıcı auth
KeşifDCOM ileBrowse + Discovery
DurumEski (legacy)Aktif geliştirme
Connection (Bağlantı — COM ProgID) Device (Cihaz) / Frame (Veri Bloğu — Subscription grubu) / Variable (Değişken — Item ID) Connection (Bağlantı — COM ProgID) Device (Cihaz) Frame (Veri Bloğu — Subscription grubu) Variable (Değişken — Item ID)
ParametreÖrnekAçıklama
ProtocolOPC DAProtokol seçimi
IP Address192.168.1.100OPC DA sunucusunun IP adresi
Port135DCOM portu (varsayılan: 135)
COM ProgIDMatrikon.OPC.SimulationOPC sunucusunun COM programatik tanımlayıcısı
Separator.Tag yolu ayırıcı karakteri (varsayılan: nokta)
Max Depth12Tag ağacı tarama derinliği
Server Status Check Time30000 msSunucu durum kontrol periyodu
UsernameSUNUCU\opcuserBağlantının Windows hesabı — uzak bağlantıda bakın Windows hesabı
Password••••O hesabın parolası
ParametreÖrnekAçıklama
Scan Time1000 msTarama periyodu
Scan TypePERIODICPERIODIC veya FIXED_DELAY
ParametreÖrnekAçıklama
Use Subscription ModetrueSubscription tabanlı veri alma (değişiklikte bildirim)
Percent Deadband0.5Analog değer değişim eşiği (%)

Subscription Mode: true olduğunda OPC sunucusu yalnızca değer değiştiğinde bildirim gönderir — ağ trafiği ve işlemci yükü azalır. false olduğunda periyodik polling yapılır.

ParametreÖrnekAçıklama
NameTemperatureDeğişken adı (OPC Item ID olarak da kullanılır)
TypeVT_R4OPC DA veri tipi
Array Index0Dizi değerli bir item’da eleman indeksi (0 – 65535)
Veri TipiAçıklama
VT_BOOLBoolean
VT_I1İşaretli 8-bit tam sayı
VT_UI1İşaretsiz 8-bit tam sayı
VT_I2İşaretli 16-bit tam sayı
VT_UI2İşaretsiz 16-bit tam sayı
VT_INTİşaretli 32-bit tam sayı
VT_UINTİşaretsiz 32-bit tam sayı
VT_I8İşaretli 64-bit tam sayı
VT_R432-bit kayan nokta (float)
VT_R864-bit kayan nokta (double)
VT_BSTRKarakter dizisi (string)

inSCADA, OPC DA sunucusunun tag ağacını browse ederek mevcut item’ları keşfedebilir. Bu özellik, variable tanımlarken doğru Item ID bilgilerine ulaşmanızı kolaylaştırır.

Bu bölüm, OPC sunucusunun başka bir Windows makinesinde olduğu durumu anlatır. Sunucu inSCADA ile aynı makinedeyse bunların hiçbiri gerekmez — DCOM hiç devreye girmez.

DCOM bağlantısı üç ayrı adımdan geçer ve her birinin kendi gereksinimi vardır. Bir kurulumun neden çalışmadığını anlamanın en hızlı yolu, hangi adımda takıldığını bulmaktır.

AdımYönNe olurGerekenler
1. BaşlatmainSCADA → sunucu makinesi, TCP 135Sunucu makinesi OPC sunucusunu başlatır; COM ProgID orada çözülürHesap ve DCOM izni, 135 açık
2. ÇağrılarinSCADA → OPC sunucusu süreci, dinamik portOkuma, yazma, browseSunucu makinesinde OPC sunucusu programına gelen bağlantı izni
3. Geri çağrısunucu → inSCADA, dinamik portSubscription değerleriinSCADA makinesinde Java’ya gelen bağlantı izni ve uygun DCOM izni

1. Windows hesabı: inSCADA sunucuya kim olarak bağlanır

Section titled “1. Windows hesabı: inSCADA sunucuya kim olarak bağlanır”

İki yol vardır.

a) Bağlantıya özel hesap — önerilen. Bağlantı formundaki Username ve Password alanlarını doldurursunuz; kullanıcı adı SUNUCU\kullanıcı (workgroup) ya da DOMAIN\kullanıcı biçimindedir. inSCADA o bağlantının bütün giden çağrılarını bu hesapla yapar: başlatma, okuma, yazma, browse ve sunucu listesi. Windows’taki runas /netonly ile aynı şeydir — inSCADA servisi kendi hesabıyla çalışmaya devam eder, yalnızca ağa o hesapla çıkar.

Kazancı şudur: inSCADA servisinin hesabının sunucu makinesinde bir aynası gerekmez ve farklı sunucular farklı hesaplarla kullanılabilir.

b) Servis hesabı. Kullanıcı adı boş bırakılırsa çağrılar inSCADA servisinin çalıştığı hesapla gider. Workgroup’ta bu, sunucu makinesinde aynı ad ve aynı parolayla bir yerel hesap açmayı gerektirir. Servis LocalSystem ile çalışıyorsa workgroup’taki uzak bir sunucuya bu yolla bağlanılamaz; (a) yolunu kullanın.

Her iki yolda da: sunucu makinesindeki grup üyelikleri

Section titled “Her iki yolda da: sunucu makinesindeki grup üyelikleri”

Verilen hesap, OPC sunucusu makinesinde var olmalı ve iki gruba üye olmalıdır:

Terminal window
Add-LocalGroupMember -SID S-1-5-32-562 -Member <hesap> # Distributed COM Users
Add-LocalGroupMember -Group Users -Member <hesap>

Distributed COM Users, uzaktan başlatma ve erişim hakkını verir. Users grubu da gerekir çünkü bazı OPC sunucuları kendi DCOM erişim listelerini yalnızca Users ve SYSTEM’e açar — ve New-LocalUser ile açılan bir hesap Users grubuna kendiliğinden girmez.

Bu iki üyelik yeterlidir: dcomcnfg altındaki makine düzeyi sınırlara ya da uygulama bazlı başlatma/erişim ayarlarına dokunmak gerekmez.

2. Güvenlik duvarı: OPC sunucusu makinesi

Section titled “2. Güvenlik duvarı: OPC sunucusu makinesi”

TCP 135 yalnızca başlatma içindir. Başladıktan sonra OPC sunucusu kendi sürecinde dinamik bir port açar ve okuma, yazma, browse çağrıları oraya gider. Sunucu makinesinde gelen bağlantıya izin verilmesi gerekenler:

  • TCP 135
  • OPC sunucusunun çalıştırılabilir dosyası
  • OpcEnum.exe — COM ProgID burada çözülür, sunucu listesi de buradan gelir
Terminal window
New-NetFirewallRule -DisplayName "OPC DA: sunucu runtime" -Direction Inbound -Action Allow -Profile Any `
-Program "C:\Program Files (x86)\<üretici>\<sunucu>.exe" -RemoteAddress <inSCADA IP>

Ağ ekibi tek bir port aralığı açmak isterse Windows’un dinamik RPC aralığı sunucu makinesinde HKLM\SOFTWARE\Microsoft\Rpc\Internet altından daraltılabilir. Bu, makinedeki bütün DCOM sunucularını etkileyen genel bir ayardır; program bazlı kural daha dar ve daha öngörülebilirdir.

3. Subscription: sunucunun inSCADA’ya geri çağrısı

Section titled “3. Subscription: sunucunun inSCADA’ya geri çağrısı”

Use Subscription Mode açık olan frame’lerde (varsayılan) değerleri OPC sunucusu inSCADA’ya kendisi gönderir.

inSCADA makinesinin güvenlik duvarında, inSCADA’yı çalıştıran java.exe için gelen bağlantı izni olmalıdır.

Gereken DCOM izni ise OPC sunucusunun hangi hesapla çalıştığına bağlıdır:

OPC sunucusunun çalıştığı hesapGeri çağrının kimliğiinSCADA makinesinde gereken
Adı verilmiş bir hesap, aynı ad ve parolayla inSCADA makinesinde de varO hesap, NTLMv2Ek izin gerekmez — önerilen
LocalSystem, workgroupANONYMOUS LOGON, NTLMv1ANONYMOUS LOGON’a DCOM uzaktan erişim

Sunucu LocalSystem ile ve workgroup’ta çalışıyorsa anonim izin, inSCADA makinesinde dcomcnfg → Bilgisayarım → Özellikler → COM Güvenliği → Erişim İzinleri → Sınırları Düzenle → ANONYMOUS LOGON → Uzaktan Erişim: İzin Ver yolundan verilir.

HRESULTAnlamıNereye bakılır
0x80070005 E_ACCESSDENIEDHesabın DCOM izni yokAdım 1 — grup üyelikleri, parola
0x800401F3COM ProgID kayıtlı değilProgID yazımı; sunucu gerçekten kurulu mu
0x800706BA RPC_S_SERVER_UNAVAILABLESunucuya ya da sunucu sürecinin portuna ulaşılamıyorAdım 2 — program bazlı güvenlik duvarı kuralı
0xC0040007 / 0xC0040008Değişken adı sunucuda yokDeğişkenin Name alanı
0x80040202Subscription geri çağrısı kurulamadıAdım 3
0xC0040004 OPC_E_BADTYPESunucu yazılan değeri item’ın tipine çeviremediDeğişkenin Type’ı

OPC sunucusu makinesi

  • Bağlantıda verilen hesap burada var ve Distributed COM Users + Users gruplarında
  • Güvenlik duvarı: TCP 135, OPC sunucusunun programı ve OpcEnum.exe için gelen bağlantı izni
  • OPC sunucusu mümkünse adı verilmiş bir hesapla çalışıyor

inSCADA makinesi

  • inSCADA Windows üzerinde çalışıyor
  • Güvenlik duvarı: java.exe için gelen bağlantı izni
  • OPC sunucusu LocalSystem ile ve workgroup’ta çalışıyorsa: ANONYMOUS LOGON’a DCOM uzaktan erişim

OPC DA’yı belirli bir Windows sürümünden sonra kullanılamaz hâle getiren bir karar yoktur. Microsoft DCOM’u hiçbir Windows sürümünden kaldırmadı ve kaldıracağını da duyurmadı. Ama OPC DA’nın ömrünü fiilen daraltan üç gelişme var ve yeni bir kurulum planlarken bunlar hesaba katılmalıdır.

DCOM sıkılaştırması kalıcı oldu (14 Mart 2023). Microsoft, CVE-2021-26414 için üç aşamalı bir sıkılaştırma yayımladı: Haziran 2021’de kapalı, Haziran 2022’de açık ama kapatılabilir, Mart 2023’te açık ve kapatılamaz. Aktivasyon artık en az RPC_C_AUTHN_LEVEL_PKT_INTEGRITY ister; kapatmaya yarayan RequireIntegrityActivationAuthenticationLevel kaydı artık işe yaramaz. Yalnızca makineler arası OPC DA etkilenir — aynı makinedeki istemci ve sunucu DCOM’u hiç kullanmaz.

Altındaki Windows sürümleri destek dışına çıkıyor. OPC DA kurulumlarının çoğu eski Windows üzerinde durur. Windows 10 desteği 14 Ekim 2025’te bitti; Windows 10 Enterprise LTSC 2021 için tarih 12 Ocak 2027. Bu bir OPC DA kısıtı değil, ama OPC DA’nın yaşadığı makineleri doğrudan ilgilendirir.

NTLMv1 kaldırılıyor. LocalSystem ile çalışan bir sunucunun anonim geri çağrısı NTLMv1 kullanır ve bu kimlik doğrulama yöntemi Windows’tan çekilmektedir. Yukarıdaki önerilen kurulum (adı verilmiş hesap, NTLMv2) bu riski taşımaz.