OPC UA ile PLC Konuşturma: Versiyon, Sertifika ve Sahadaki 5 Sorun
Modbus TCP ile konuşurduk, şimdi OPC UA gerekli oldu. Ama 'secure connection failed' uyarısı verdi. Versiyon, sertifika ve gerçek sahadaki 5 sorunu, takıldığım yerlerden anlatacağım.

Geçen sene bir veri entegrasyonu projesi yaptık. Amacımız, fabrikadaki makinelerden topladığımız verileri merkeze göndermekti. Modbus TCP ile başladık; ama merkeze giden sistem, “ben OPC UA isterim” dedi. Tamamdır, OPC UA’ya geçtik. İlk bağlantıda “secure connection failed” uyarısı geldi. O günden beri, OPC UA’nın Modbus TCP’den ne kadar farklı olduğunu, sahada hangi noktalarda takıldığımı anlatacağım.
Neden Modbus TCP Yetmiyordu?
Modbus TCP, basit ve yaygın bir protokoldür. Ama veri yapısı basittir: register tabanlıdır, yani her veri bir numaradır. “Register 40001 sıcaklık” gibi. Bu basitlik, veri azken işe yarar; ama veri çoğaldığında, veri anlamı kaybolur.
OPC UA ise, verinin anlamını (semantiği) de taşır. Sadece “40001 = sıcaklık” demez; “bu sıcaklık, bu makininin bu bölümüne ait, birimi Celsius, güncelleme sıklığı 1 second” gibi bilgileri de taşır. Bu, makinelerin birbirini otomatik anlaması için önemlidir.
Versiyon Uyuşmazlığı: En Sık Karşılaştığım Sorun
OPC UA’nın farklı versiyonları var. Cihazın desteklediği versiyon ile yazılımın beklediği versiyon farklıysa, bağlantı kurulamaz. Benim ilk takıldığım yer tam olarak buydu.
Cihazın OPC UA versiyonunu kontrol etmek için, üretici dokümanını okumak gerekir. Bazı eski PLC’ler, sadece OPC UA’nın belli bir versiyonunu destekler. Yazılımın da aynı versiyonu desteklemesi gerekir. Versiyonları eşitlemek, ilk çözüm adımdır.
Sertifika: Secure Bağlantının Bedeli
OPC UA, secure (şifreli) bağlantıyı destekler. Bu, verinin çalınmasını veya değiştirilmesini engeller. Ama secure bağlantı için sertifikalar gerekir. Bir tarafın bir sertifikası, diğer tarafın onu tanıması gerekir.
Sertifika kurulumu, sahada en çok vakit kaybettirdiğim konulardan biriydi. Sertifika oluşturmak, cihaza aktarmak, karşı tarafta tanıtmak — her adım dikkat ister. Eğer secure bağlantı şart değilse, ilk başta secure olmayan bir bağlantı kurup, sonra güvenliği eklemek de bir seçenektir.
Client ve Server: Kim Kimden Sorar?
OPC UA’da iki rol vardır: Server ve Client. PLC genellikle Server olur; verileri sunar. Yazılım veya merkez ise Client olur; verileri ister. Client, Server’a bağlanır ve istediği verileri alır.
Bu rol dağılımını doğru yapmak gerekir. PLC’yi Server olarak, yazılımı Client olarak yapılandırmak gerekir. Tersini yaparsanız, bağlantı kurulmaz.
Adres Uzayı: Veri Nerede?
Modbus TCP’de veri register adreslerindeydi. OPC UA’da ise veri, “address space” (adres alanı) denilen bir yapıda sunulur. Bu yapı, bir ağaç gibi dallanır. Veriler, bu ağacın dallarında bulunur.
OPC UA client’ı, bu ağacı tarar ve istediği veriyi bulur. Bu, Modbus TCP’deki gibi manuel register aramaktan farklıdır. Ama ağacın doğru yapılandırılması gerekir. PLC’de hangi verilerin sunulacağı, OPC UA konfigürasyonundan belirlenir.
Gerçek Sahadaki 5 Sorun
- Versiyon uyumsuzluğu: Cihaz ve yazılım versiyonlarını eşitleyin.
- Sertifika hatası: Sertifika kurulumunu doğru yapın; secure bağlantı için sertifikayı karşı tarafta tanıtarak çalıştırın.
- Client/Server karışıklığı: Rol dağılımını doğru yapın.
- Adres alanı eksikliği: PLC’de sunulacak verileri OPC UA konfigürasyonunda tanıtarın.
- Ağ / ateş duvarı: OPC UA, belirli bir port kullanır (genelde 4840). Bu portun ateş duvarından geçebilmesi gerekir.
“Secure Connection Failed” Demeden Önce
OPC UA, Modbus TCP’den daha güçlü bir protokoldür. Verinin anlamını da taşır, güvenli bağlantıyı destekler. Ama Modbus TCP’den farklı bir yapıya sahiptir: versiyon, sertifika, client/server rolü, adres alanı ve port. Bu beşini bilerek başlarsanız, OPC UA’ya geçiş kolay olur. Benim gibi “secure connection failed” diyerek takılmak istemiyorsanız, yukarıdaki beşi kontrol edin.