Skip to content
Metin 2.10'a göre güncellendi; ekran görüntüleri 2.5.0 sürümünden ve arayüzden farklı olabilir.

Veritabanı (ODBC) ​

Yaklaşık 8 dk okuma

Veritabanı protokolü, 2WinScada'nın başka bir sistemin veritabanındaki bir tablodan tag değerlerini periyodik olarak okumasını ve gerekirse bu tabloya değer yazmasını sağlar. Her satırda bir değişkenin adresi (adı veya numarası) ve değeri bulunan "adres–değer" biçimindeki tablolar için tasarlanmıştır.

2WinScada veritabanına yalnızca ODBC üzerinden bağlanır. Sunucuda ODBC sürücüsü kurulu olan her veritabanı (örn. Microsoft SQL Server, PostgreSQL, MySQL) kullanılabilir; veritabanına özel yerleşik bir bağlantı sürücüsü yoktur. Okuma ve yazma sorguları, girilen tablo ve kolon adlarından 2WinScada tarafından oluşturulur; serbest SQL sorgusu yazılmaz.

Lisans ​

Veritabanı entegrasyonu Standard ve Professional lisans sürümlerinde kullanılabilir; Starter sürümünde kullanılamaz. Lisans veritabanı entegrasyonunu içermiyorsa bağlantı testi ve çalışma zamanı haberleşmesi engellenir. Ayrıntılar için Lisans sayfasına bakın.

ODBC veri kaynağı tanımlama ​

Bağlantı metninde DSN kullanılacaksa, kanal tanımlanmadan önce 2WinScada sunucusunda bir ODBC veri kaynağı oluşturulur:

  1. Bağlanılacak veritabanının 64 bit ODBC sürücüsünü sunucuya kurun. 2WinScada servisi 64 bit çalıştığı için 32 bit sürücüler ve 32 bit veri kaynakları kullanılamaz.
  2. Windows'ta ODBC Veri Kaynakları (64 bit) aracını açın (Başlat menüsünde "ODBC" araması veya Windows Araçları).
  3. Sistem DSN sekmesini seçin. 2WinScada bir Windows servisi olarak çalıştığından, servis hesabından farklı bir Windows kullanıcısının Kullanıcı DSN kayıtlarını göremez.
  4. Ekle butonuna tıklayın, sürücüyü seçin ve Son butonuna tıklayın. Sürücünün kendi penceresinde sunucu, veritabanı ve kimlik doğrulama bilgilerini girerek veri kaynağını kaydedin.

ODBC Veri Kaynağı Yöneticisi

Yeni veri kaynağı için sürücü seçimi

İstediğiniz sürücü listede yoksa doğru sürücüyü edinmek için veritabanı yöneticinize başvurun.

Kanal Tanımı ​

Yeni kanal penceresinin Genel sekmesinde kanal adı girilir ve Bağlantı Tipi olarak Database seçilir. Bağlantı ayarları yapıldıktan sonra Kaydet butonuna tıklanır.

Veritabanı kanalının Bağlantı Parametereleri sekmesi

Bağlantı Parametereleri sekmesi:

AlanAçıklamaVarsayılan
Veri Kaynağı AdıSunucuda tanımlı ODBC veri kaynaklarını listeler. Seçilen veri kaynağı Bağlantı Metni içindeki DSN= değerine otomatik yazılır; metnin diğer bölümleri korunur.Boş
Bağlantı MetniODBC bağlantı metni. Bağlantıda yalnızca bu metin kullanılır. Zorunludur.DSN=ServerName;UID=;PWD=;
Bağlantıyı Test EtFormdaki Bağlantı Metni ile sunucudan veritabanına bir bağlantı açmayı dener (bkz. Kayıtlı parola).—

Bağlantı metnindeki başlıca anahtarlar:

  • DSN: ODBC veri kaynağının adı
  • UID: Veritabanı kullanıcı adı
  • PWD: Bu kullanıcının parolası

Bağlantı metni örnekleri (köşeli parantezli değerleri kendi bilgilerinizle değiştirin):

text
DSN=<veri-kaynağı-adı>;UID=<kullanıcı>;PWD=<parola>;

DSN tanımlamadan, sürücü adını doğrudan yazarak da bağlanılabilir:

text
Driver={ODBC Driver 17 for SQL Server};Server=192.168.1.10;Database=<veritabanı>;UID=<kullanıcı>;PWD=<parola>;

Bağlantı metninde, 2WinScada'nın yalnızca gerekli tabloyu okuyabilen (yazma kullanılacaksa ilgili kolonu güncelleyebilen) ayrı bir veritabanı kullanıcısı kullanın.

Kayıtlı parola ​

Kaydedilmiş bir kanal açıldığında bağlantı metnindeki parola gösterilmez; PWD=******** olarak görünür ve kayıtlı parola korunur.

  • Bağlantı metnini PWD=******** ile değiştirmeden kaydetmek kayıtlı parolayı korur.
  • Parolayı değiştirmek için ******** yerine yeni parolayı yazın.
  • PWD= değerini boş bırakmak veya PWD anahtarını silmek parolayı kaldırır.
  • Izgarada kopyala/yapıştır ile oluşturulan yeni kanalda parola kopyalanmaz; yeniden girilmelidir.

Bağlantıyı Test Et, kaydedilmiş bir kanalda bağlantı metni değişmediyse kayıtlı parolayı kullanır. Bağlantı metninde sunucu, DSN, sürücü, kullanıcı gibi herhangi bir alan değiştirildiyse kayıtlı parola başka bir hedefe gönderilmez ve test Bağlantı metni kayıtlı kanaldan farklı olduğu için kayıtlı parola kullanılamaz. hatasıyla (3056) durur. Bu durumda parolayı yeniden yazın veya kanalı önce kaydedip sonra test edin. Yeni (kaydedilmemiş) bir kanalda parolayı açıkça yazın.

Bağlantıyı Test Et başarılı olursa buton onay işaretli görünüme geçer. Test başarısız olursa ekranda genel bir hata mesajı görünür; sürücünün döndürdüğü ayrıntılı hata metni güvenlik nedeniyle yalnız servis günlüğüne yazılır.

Başarılı bağlantı testi

Cihaz Tanımı ​

Her cihaz, kanalın bağlandığı veritabanındaki bir tabloyu temsil eder. Genel sekmesinde Adı ve Aktif alanları diğer protokollerdeki gibi belirlenir.

Veritabanı cihazının Parametreler sekmesi

Parametreler sekmesi:

AlanAçıklamaKural
Tablo AdıVerilerin okunacağı tabloZorunlu; en az 2 karakter
Zaman Kolon AdıSatırın güncellenme zamanını tutan kolon. Girilirse her adres için en son zamanlı satır okunur.İsteğe bağlı
Adres Kolon AdıDeğişkeni tanımlayan değerin (ad veya numara) bulunduğu kolon. Tag Adres alanları bu kolondaki değerlerle eşleştirilir.Zorunlu
Değer Kolon AdıDeğişkenin güncel değerinin bulunduğu kolonZorunlu
Yazma Değeri Kolon AdıTag'e yazılan değerin kaydedileceği kolon. Boş bırakılırsa yazma yapılamaz. Değer Kolon Adı ile aynı kolon da girilebilir.İsteğe bağlı
Tag Kalitesi Kolon AdıDeğerin geçerli olup olmadığını belirten kolonİsteğe bağlı
İyi Kalite DeğeriKalite kolonunda "iyi" anlamına gelen değer (örn. 1, true veya OK)Kalite kolonu kullanılıyorsa doldurulmalıdır
Sadece Tetiklendiğinde Tarama Yapİşaretlenirse tablo periyodik okunmaz; yalnızca dışarıdan tetiklendiğinde okunur (bkz. Tetiklemeli tarama).Kapalı

Ad boşluk veya ayrılmış sözcük içeriyorsa veritabanının kendi tırnaklama biçimiyle yazın (örn. SQL Server için [Tag Değerleri], PostgreSQL için "TagDegerleri"). Şema adı gerekiyorsa tablo adıyla birlikte yazılabilir (örn. dbo.TagValues).

Örnek tablo:

tag_idtag_valueupdated_atquality
100115.742026-01-23 10:35:071
1002-23.382026-01-23 10:35:071
100313.532026-01-23 10:35:070

Bu tablo için Tablo Adı TagValues, Adres Kolon Adı tag_id, Değer Kolon Adı tag_value, Zaman Kolon Adı updated_at, Tag Kalitesi Kolon Adı quality ve İyi Kalite Değeri 1 girilir.

Okuma sorgusu ​

Zaman Kolon Adı boşsa tablonun tüm satırları okunur. Bu durumda tabloda her adres için tek satır bulunmalıdır; aynı adresli birden fazla satır varsa hangisinin değer olarak kalacağı garanti edilmez.

Zaman Kolon Adı girilmişse yalnızca tanımlı tag adresleri sorgulanır ve her adres için en son zamanlı satır alınır.

WARNING

Zaman Kolon Adı kullanıldığında adres kolonu sayısal olmalı ve tag adresleri yalnız sayı olarak girilmelidir. Adres kolonu metin ise Zaman Kolon Adı alanını boş bırakın ve tabloda her adres için tek satır tutun.

Okuma kuralları:

  • Sorgu en fazla 30 saniye sürebilir; süre aşılırsa okuma başarısız sayılır.
  • Bir sorgu en fazla 100.000 satır döndürebilir. Daha fazla satır dönerse okuma başarısız olur; büyük geçmiş tablolarında Zaman Kolon Adı kullanın veya yalnızca güncel değerleri tutan bir tablo ya da görünüm (view) okuyun.
  • Tag Kalitesi Kolon Adı girilmemişse okunan tüm tag'lerin kalitesi Good olur. Girilmişse satırdaki kalite değeri İyi Kalite Değeri ile karşılaştırılır: kolon mantıksal (bool) tipindeyse true/false veya 1/0 olarak, sayısal tipteyse sayı olarak, metin tipindeyse birebir metin olarak. Eşleşmeyen satırların tag kalitesi Bad olur.
  • Okuma hatasında (bağlantı, sorgu veya zaman aşımı) cihazın ve o sorgudaki tag'lerin kalitesi Bad olur. Başarılı okumada cihaz kalitesi Good olur.

Tag Tanımı ​

Soldaki kanal ağacından cihaz seçilir ve tag tablosunda yeni tag eklenir (bkz. Tag Yönetimi).

Veritabanı cihazının tag tablosu

AlanVeritabanı kuralı
AdresAdres kolonundaki değerin metin karşılığı. Eşleştirme büyük/küçük harf duyarlıdır ve birebir yapılır (örn. 1001 veya Tank1_Seviye).
Veri TipiDeğer kolonundaki veriye uygun tip. Bool ve String dışındaki tiplerde ondalık ayırıcı otomatik dönüştürülür.
Güncelleme Süresi[s]Tablonun okunma periyodu. Aynı güncelleme süresine sahip tag'ler tek sorguda okunur; her farklı süre ayrı bir sorgu oluşturur.
Sadece Okumaİşaretliyse 2WinScada bu tag'e yazmaz.

Tag değeri yalnızca okunan değer değiştiğinde güncellenir. Tablodaki bir satırla eşleşmeyen tag'ler güncellenmez.

Yazma ​

Bir tag'e değer yazıldığında 2WinScada, adresi eşleşen satırlarda Yazma Değeri Kolon Adı kolonunu parametreli bir sorguyla günceller.

  • Değer ve adres sorguya metin olarak eklenmez, parametre olarak gönderilir. Bool değerler 1 veya 0 olarak yazılır.
  • Adres tek tırnak içinde girilmişse (örn. 'Tank1') metin olarak, sayı ise sayı olarak, diğer durumlarda metin olarak gönderilir.
  • Sorgu, adresi eşleşen tüm satırları günceller. Aynı adresin birden fazla satırı olan geçmiş tablolarına yazmayın.
  • Yazmalar sıraya alınır ve her biri bir kez denenir; başarısız yazma tekrarlanmaz. Sırada en fazla 64 yazma bekleyebilir; sıra doluysa yeni yazma reddedilir.
  • Yazmanın sonucu tag'in bir sonraki okumasında görülür. Yazma kolonu değer kolonundan farklıysa, değeri değer kolonuna aktarmak karşı sistemin sorumluluğundadır.

Tetiklemeli tarama ​

Sadece Tetiklendiğinde Tarama Yap işaretliyse cihaz, tetiklenene kadar tabloyu okumaz. Tetiklendiğinde Güncelleme Süresi[s] dikkate alınmadan cihazın tüm tag'leri bir kez okunur ve değerler değişmemiş olsa bile yeniden yayımlanır.

Tarama iki yolla tetiklenebilir:

  • Sayfa betiklerinden: await this.srt.triggerDatabaseScan(<cihaz-id>);
  • 2WinScada servis API'sinden, cihazın kimlik numarasıyla:
http
GET /api/DbClient/ScanTrigger?deviceId=<cihaz-id>

Her iki yol da Editor rolüne sahip, oturum açmış bir kullanıcı gerektirir.

Sorun giderme ​

BelirtiKontroller
Veri Kaynağı Adı listesi boşVeri kaynağını 64 bit ODBC aracında Sistem DSN olarak tanımlayın. Alternatif olarak Bağlantı Metni alanına Driver= ile başlayan bir bağlantı metni yazın.
Bağlantıyı Test Et 3056 hatası veriyorBağlantı metni kayıtlı kanaldan farklı. Parolayı ******** yerine yeniden yazın veya kanalı önce kaydedin.
Bağlantıyı Test Et başarısızServis günlüğündeki sürücü ayrıntısını, sunucu adresini, kullanıcı adı ve parolayı, veritabanı sunucusuna ağ erişimini ve 64 bit sürücünün kurulu olduğunu kontrol edin. Lisansın veritabanı entegrasyonunu içerdiğini doğrulayın.
Cihaz ve tag kalitesi BadTablo Adı ve kolon adlarının yazımını, kullanıcının tabloyu okuma yetkisini ve sorgunun 30 saniyede tamamlandığını kontrol edin.
Zaman Kolon Adı girilince okuma duruyorAdres kolonu metin ise Zaman Kolon Adı alanını boş bırakın (bkz. Okuma sorgusu).
Tag değeri hiç güncellenmiyorTag Adres değerinin adres kolonundaki değerle birebir aynı olduğunu (büyük/küçük harf, boşluk) kontrol edin.
Tag kalitesi sürekli Badİyi Kalite Değeri alanının kalite kolonundaki "iyi" değerle aynı olduğunu kontrol edin.
Okuma, satır sayısı nedeniyle başarısızTablo 100.000 satırdan fazla döndürüyor. Zaman Kolon Adı kullanın veya güncel değerleri içeren bir görünüm (view) okuyun.
Yazma etkisizYazma Değeri Kolon Adı alanının dolu olduğunu, Sadece Okuma seçimini, kullanıcının güncelleme yetkisini ve adres değerinin tablodaki satırla eşleştiğini kontrol edin.
Tetiklemeli tarama çalışmıyorCihazın aktif olduğunu, doğru cihaz kimliğinin kullanıldığını ve tetikleyen kullanıcının Editor rolüne sahip olduğunu kontrol edin.

2WinScada 2.10