Betiklere genel bakış
FabyaVision'da betik dört dille yazılır (VBScript, JavaScript, C, Python). Bu konu hangi dilin ne zaman uygun olduğunu, betiklerin nerelerden çalıştırıldığını ve Studio'da yazılan betiğin Live'a nasıl ulaştığını anlatır.
Betik ne işe yarar
Tag yazma, sayfa açma, hesaplama ya da operatöre soru sorma gibi işler olay işlevleriyle yapılamıyorsa betik yazılır. Betik, Live çalışırken tag'lere ve açık sayfaların nesnelerine erişen küçük bir programdır. Betikler Betikler bölümünde yazılır; Live'da yalnızca Live programı çalıştırır.
Dört dilin hepsi aynı işi görür. Dil seçimi, ekibin alışkanlığına ve işin niteliğine bağlıdır.
Dört dil
| Dil | Betik türleri | Tag erişimi | Ne zaman uygun |
|---|---|---|---|
| VBScript (VBS) | Modül, Aksiyon | HMIRuntime.Tags("Ad").Read, SmartTags("Ad") | WinCC VBS alışkanlığı olan ekipler; metin, tarih ve sözlük işleri; ODBC ile veritabanı. |
| JavaScript | Fonksiyon, Genel modül | Tag.oku('Ad'), Tag.yaz('Ad', değer) | Kısa tag işlemleri ve hesaplar. Ürün yalnızca dört hazır nesne sağlar (Tag, Sayfa, Bildir, Kullanici); veritabanı, dosya ve program çalıştırma işlevi yoktur. |
| C | Proje işlevleri, Aksiyon, Başlık dosyası | GetTagFloat("Ad"), SetTagBit("Ad", 1) | WinCC C betiği alışkanlığı olan ekipler; yapı, dizi ve işaretçi kullanan hesaplar. |
| Python | Modül, Aksiyon | scada.read("Ad"), scada.write("Ad", değer) | Okunaklı kod, liste ve sözlük işleme, JSON, düzenli ifade, geniş standart kitaplık. |
Dillerin ayrıntısı: VBScript, JavaScript, C, Python. Tüm diller için nesne ve işlev listesi Betik nesne modeli başvurusu konusundadır.
Betik türleri
Türün adı dile göre değişir, ancak iki temel kalıp vardır.
- Yeniden kullanılan işlevler
- VBS ve Python'da Modül, C'de Proje işlevleri, JavaScript'te Genel modül. İşlevler adıyla başka betiklerden çağrılır. Modül düzeyindeki kod (işlev dışındaki satırlar) proje açılırken bir kez çalışır.
- Doğrudan çalıştırılan kod
- VBS, C ve Python'da Aksiyon, JavaScript'te Fonksiyon. Her çağrıda baştan çalışır. JavaScript fonksiyonu parametre alabilir (Parametreler kolonu).
- Başlık dosyası
- Yalnızca C'de. Betiğin başında
#include "Ad.h"ile alınır; kendi başına çalıştırılamaz.
Türlerin kullanım kuralları dil konularında anlatılır: tablodaki Tür kolonu seçilince kod şablonu da değişir (kod henüz şablon durumundaysa).
Betik nerelerden çalışır
| Çağıran | Nasıl bağlanır |
|---|---|
| Nesne ya da sayfa olayı | Olaylar sekmesinde Betik çalıştır işlevi: betik ve (VBS modülü, C proje işlevi, Python modülü için) çağrılacak prosedür / işlev seçilir. Seçilmezse betikle aynı adlı prosedür çalışır. Bkz. Olaylar ve işlevler. |
| Olaya yazılan kod | VBS kodu çalıştır, C kodu çalıştır, Python kodu çalıştır işlevleri: kod doğrudan olaya yazılır; olayın nesnesi Item, sayfası Parent olarak hazır gelir. JavaScript için böyle bir işlev yoktur. |
| Zamanlanmış görev | Zamanlanmış Görevler tablosunda Çalıştırılacak betik ve Prosedür / İşlev kolonları. Tag değişince tetikli görevde tag'in yeni değeri betiğe ilk parametre olarak verilir. Bkz. Zamanlanmış görevler. |
| Reçete aktarımı | Reçetenin PLC aktarım ayarındaki Önce betiği ve Sonra betiği. Önce betiği hata verirse aktarım başlamaz. Bkz. Reçete tasarımı. |
| Başka bir betik | Python modülleri import Betik_Adi ile alınır; VBS modüllerinin prosedürleri ve C proje işlevleri bütün betiklerin ortak ad alanındadır. |
Yazımdan çalışmaya
- Betiği yazın
Betikler bölümünde satır ekleyin, dili ve türü seçin, kodu sağdaki kod alanına yazın. Ayrıntı: Betik editörü.
- Derleyin
F9 betiği, Ctrl+Shift+B tüm betikleri denetler. Söz dizimi hataları ve projeyle ilgili uyarılar (olmayan tag, kapalı izin) kodun altında listelenir.
- Bağlayın
Betiği bir olaya, göreve ya da reçeteye bağlayın.
- Sınayın ve yükleyin
Çalıştır projeyi kaydedip Live'da açar. Betiklerde derleme hatası varsa Studio Hataları göster, Yine de çalıştır ve Vazgeç seçeneklerini sunar; hatalı betik Live'da çalışmaz. Kalıcı kurulum için projeyi Live'a yükleyin.
Live'da betiklerin çalışma kuralları
- Arayüz kilitlenmez. VBS, C ve Python betikleri arka planda çalışır; tag yazma, bekleme, pencere ve dosya işlemleri otomatik beklenir.
- 30 saniye sınırı. VBS, C ve Python çağrısı en çok 30 saniye hesap yapabilir. Daha uzun döngü
Betik süre sınırını aştı (30 sn); sonsuz döngü olabiliriletisiyle kesilir. Sınır yalnızca kodun kendi çalıştığı süreyi ölçer: tag yazma, veritabanı, pencere ve bekleme işlemlerinin (C'deSleep, Python'dascada.sleep,MsgBox) bekleme süresi sayılmaz. JavaScript için böyle bir sınır uygulanmaz. - Üst üste çağrı atlanır. VBS, C ve Python'da aynı tetik (aynı görev ya da aynı olay satırı) için önceki çağrı sürerken gelen yeni çağrı atlanır; olay günlüğüne bir kez not düşülür. JavaScript'te bu denetim yoktur.
- Hatalar günlüğe yazılır. Betik hatası programı durdurmaz; olay günlüğüne
betiktüründe yazılır. Bkz. Günlük dosyaları. - Tarayıcıdan ve TV'den izlemede betik çalışmaz. Betikler yalnızca Live programında çalışır.
- Hizmet kapalıysa görev çalışmaz. Live Ayarları › Başlangıç Dizisi'nde Zamanlanmış görevler kapalıysa hiçbir görev tetiklenmez.
Sınırlar ve dikkat edilecekler
- Betik motorları ürünün kendi motorlarıdır; Windows Script Host, gerçek C derleyicisi ya da CPython kurulumu gerekmez. Diller tam değil, alt kümedir; farklar dil konularında listelenir.
- Alarm üretme ve onaylama, arşiv günlükleri gibi bazı WinCC nesneleri betiklerde yoktur. Çağrılırsa betik açık bir hata verir ya da tanılama satırı yazılır (Bilinen sınırlar).
- Sahada ilk denemede veritabanı, dosya ve program çalıştırma işlevlerini izin açıkken gerçek ortamda deneyin.