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 ve yalnızca Live programı çalıştırır. Tarayıcıdan izlemede ve TV’de çalışmaz.
Dört dil aynı işi görür. Seçim ekibin alışkanlığına ve işin niteliğine bağlıdır. Betiklerin Live’daki kullanımı için Live’da betik ve görevler sayfasına bakın.
Dört dil
VBScript, C ve Python ürünün kendi motorlarında çalışır. Windows Script Host, gerçek bir C derleyicisi ya da CPython kurulumu gerekmez. JavaScript, Live’ın kendi JavaScript ortamında çalışır, ayrı bir motoru yoktur.
| Dil | Betik türleri | Tag erişimi |
|---|---|---|
| VBScript | Modül, Aksiyon | HMIRuntime.Tags("Ad").Read, SmartTags("Ad")
|
| JavaScript | Fonksiyon, Genel modül | Tag.oku("Ad"), Tag.yaz("Ad", 1)
|
| C | Proje işlevleri, Aksiyon, Başlık dosyası | GetTagFloat("Ad"), SetTagBit("Ad", 1)
|
| Python | Modül, Aksiyon | scada.read("Ad"), scada.write("Ad", 1)
|
- VBScript, Windows VBScript’in bir alt kümesidir.
Execute,Eval,GetObject,GetRefveOn Error GoToyoktur.CreateObjectileScripting.Dictionary,VBScript.RegExp,ADODB,WScript.ShellveScripting.FileSystemObjectüretilir. - JavaScript standart nesnelerin (
Math,Date,JSON,setTimeout) yanında hazırTag,Sayfa,BildirveKullanicinesnelerini sunar. Veritabanı, dosya ve program çalıştırma işlevi yoktur. - C, ANSI-C’nin bir alt kümesidir ve ölçüler 32 bitlik düzene göredir:
struct,union,enum,typedef, işaretçi ve makro desteklenir. Bit alanı,long long,scanfvegetsyoktur, gerçek DLL yüklenmez.apdefap.hbaşlığıyla 350’den fazla Live işlevi gelir, örneğinGetTagFloat,SetTagBit,OpenPicture. - Python, Python 3.12’nin bir alt kümesidir: sınırsız
int, sınıf, üreteç,match/case, f-dizgi ve standart kitaplığın hazır bir kısmı (math,random,datetime,json,re,csv,hashlib,decimal).async/await,eval,exec, iş parçacığı, ağ erişimi,ctypesve numpy gibi üçüncü parti paketler yoktur.
Betik türleri ve bağlama
- 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. İş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 Parametreler kolonundaki adlarla parametre alır.
- Başlık dosyası yalnızca C’dedir.
#include "Ad.h"ile alınır, kendi başına çalışmaz.
| Çağıran | Nasıl bağlanır |
|---|---|
| Nesne ya da sayfa olayı | Olaylar sekmesinde Betik çalıştır işlevi. VBS modülü, C proje işlevi ve Python modülü için çağrılacak prosedür / işlev de seçilir. |
| Olaya yazılan kod | VBS kodu çalıştır, C kodu çalıştır ve Python kodu çalıştır işlevleri. Olayın nesnesi Item, sayfası Parent olarak hazır gelir. JavaScript için böyle bir işlev yoktur.
|
| Zamanlanmış görev | Çalıştırılacak betik kolonu. Tag değişince tetiklenen görevde tag’in yeni değeri ilk parametre olarak verilir. Bkz. zamanlanmış görevler. |
| Reçete aktarımı | PLC aktarım ayarındaki Önce betiği ve Sonra betiği. Önce betiği hata verirse aktarım başlamaz. |
| Başka bir betik | Python modülleri import Betik_Adi ile alınır. VBS modül prosedürleri ve C proje işlevleri ortak ad alanındadır.
|
Aynı iş dört dilde
Aşağıdaki dört betik aynı işi yapar: P103_Calisiyor tag’i değişince P103_Ariza bitine ters değeri yazar. Hepsi Tag değişince tetiklenen görevde çalışır, tag’in yeni değeri ilk parametre olarak gelir.
SmartTags("P103_Ariza") = Not deger // VBScript, Modül Tag.yaz('P103_Ariza', !deger); // JavaScript, Fonksiyon SetTagBit("P103_Ariza", (short)!deger); // C, Proje işlevleri scada.write("P103_Ariza", not deger) // Python, Modül
Betik editörü ve derleme
Betikler bölümünde üstte betik tablosu, yanında seçili betiğin kod alanı bulunur. Tabloda Ad, Dil, Tür, Parametreler ve Açıklama kolonları vardır. Kod alanı ürünün kendi editörüdür. Kod renklenir, hatalı satır kırmızı, uyarılı satır sarı işaretlenir. Yazmayı bıraktıktan kısa süre sonra söz dizimi denetlenir, alt şerit hatanın satır ve sütununu gösterir ve tıklayınca hatalı satıra gider. VBS, C ve Python’da prosedür / işlev listesi seçilen satıra götürür.
Derle (F9) seçili betiği, Tümünü derle (Ctrl+Shift+B) bütün betikleri denetler. Derleme betiği çalıştırmaz. Söz dizimi hatalarının yanında projeyle ilgili kuralları da denetler: projede olmayan tag adı, desteklenmeyen üye ya da nesne, izni kapalı veritabanı, dosya ve program çağrısı, iki modülde aynı prosedür adı. Çıktıda bir satıra tıklayınca betik açılır ve o satıra gidilir. Aynı kurallar Projeyi denetle listesinde de görünür.
Çalıştır sırasında derleme hatası varsa Studio Hataları göster, Yine de çalıştır ve Vazgeç seçeneklerini sunar. Hatalı betik Live’da çalışmaz.
Otomatik tamamlama, kesme noktası ve adım adım çalıştırma yoktur. Hata aramak için çıktı yazın: HMIRuntime.Trace (VBS), printf (C), print ya da scada.trace (Python), Bildir (JavaScript). Satırlar olay günlüğüne düşer.
Başvuru paneli ve örnek galerisi
Başvuru paneli VBS, C ve Python’da açılır, JavaScript için yoktur. Panel dile göre sekmelere ayrılır ve arama kutusu hepsinde arar. Satıra tıklayınca örnek imlecin olduğu yere eklenir.
Örnek kodlar galerisinde 120+ hazır örnek vardır: VBS 30, C 32, JavaScript 17, Python 51. Örnekler tag okuma ve yazma, koşul ve döngü, hesap, tarih ve saat, rapor, sayfa ve nesneler, operatör, veritabanı gibi konulara göre gruplanır. Önizlemede Ne yapar, Nasıl bağlanır ve Gerekenler görünür, projede eksik olanlar işaretlenir.
- Projeye ekle örneği yeni betik olarak ekler. İsterseniz eksik tag’ler dahili tag olarak eklenir.
- İmlece ekle örneği açık betiğe koyar, Kodu kopyala panoya alır.
- Örnek kapalı bir izin gerektiriyorsa Studio sorar, izin kendiliğinden açılmaz.
Dosyadan al ve Dosyaya ver .vbs, .bas, .c, .h, .js ve .py dosyalarını okur ve yazar.
İzinler ve Live’da çalışma
Veritabanına bağlanma, program çalıştırma ve dosyalara erişme izinleri varsayılan olarak kapalıdır. İzinler Live Ayarları › Genel › Betik İzinleri kartındadır. İzin kapalıyken VBS, C ya da Python betiği o çağrıyı yapınca hata alır, Studio da izni kapalı çağrıyı derlemede önceden uyarır. Betik bu işlemleri operatöre sormadan Live bilgisayarında yapar. İzinleri yalnızca güvendiğiniz projelerde açın.
- VBS, C ve Python betikleri arka planda çalışır, arayüz kilitlenmez.
- VBS, C ve Python çağrısı en çok 30 saniye hesap yapabilir. Tag yazma, veritabanı, pencere ve bekleme işlemlerinin süresi sayılmaz. JavaScript’te bu sınır yoktur, sonsuz döngü arayüzü kilitleyebilir.
- VBS, C ve Python’da aynı tetik için önceki çağrı sürerken gelen çağrı atlanır.
- Betik hatası programı durdurmaz, olay günlüğüne betik türünde yazılır.
Sınırlar
- Nesne özelliklerini (renk, metin, görünürlük) VBS, C ve Python değiştirebilir, JavaScript değiştiremez. 3B sayfada nesne özelliği yazma desteklenmez.
- Alarm üretme ve onaylama, arşiv ve alarm günlüklerine erişim hiçbir dilde yoktur.
- Diller birer alt kümedir. Desteklenmeyen üye çağrılırsa betik hata verir ya da tanılama satırı yazılır. Başvuru panelinin Desteklenmeyen sekmeleri güncel listeyi verir.
- VBS ve Python’da veritabanı bağlantısında işlem (transaction) ve geçici tablo yoktur.
Sık sorulanlar
Betik için Windows Script Host ya da Python kurmak gerekir mi?
Hayır. VBScript, C ve Python ürünün kendi motorlarında çalışır, JavaScript Live’ın kendi JavaScript ortamında çalışır.
Bir betik birden çok göreve bağlanabilir mi?
Evet. Aynı betik farklı zamanlanmış görevlerden ve olaylardan çağrılabilir.
İlgili sayfalar
Zamanlanmış görevler
10 tetikleyici, kaçırılan görevin açılışta telafisi, görev durum penceresi ve zamanlama örnekleri.
LiveBetik ve görevler
Betik ve görevler yalnız Live’da çalışır: betik izinleri, süre sınırı, görev tetikleyicileri.
StudioHMI tag’leri
Harici ve dahili tag’ler, ölçekleme, kalite, yapılar (UDT) ve Excel ile toplu aktarım.
StudioDenetim ve yedekleme
Projeyi denetle (F7), revizyon ve yedek, .fvs proje dosyası, Live’a yükleme ve Excel ile tablo aktarımı.