FabyaVisionKullanım Kılavuzu
/

JavaScript betikleri

3 dk okumaBetikler

JavaScript betiğinin yapısı (Fonksiyon ve Genel modül), hazır Tag, Sayfa, Bildir ve Kullanici nesneleri, parametre alma ve dikkat edilecek farklar.

Yapı

JavaScript betikleri Live'ın kendi JavaScript ortamında çalışır; ayrı bir motor yoktur. Betik, Live açılırken derlenir. Betikler tablosunda iki tür vardır.

Fonksiyon
Her çağrıda çalışan koddur. Live kodunuzu function (parametreler) { kod } biçiminde sarar: kodda return yazabilirsiniz, Parametreler kolonuna yazdığınız adlar (ör. deger) fonksiyonun parametreleri olur.
Genel modül
Proje açılırken bir kez çalışır. Başka betiklerin kullanacağı yardımcılar window üzerine eklenir (window.Ortak = { … }); gövdedeki var ve function tanımları yerel kalır.
JavaScript fonksiyonu: Parametreler kolonunda deger yazılıdır; kod alanında araç satırı ve Başvuru paneli yoktur.12
JavaScript fonksiyonu: Parametreler kolonunda deger yazılıdır; kod alanında araç satırı ve Başvuru paneli yoktur.
  1. Parametreler — yalnız JavaScript'te kullanılır.
  2. Kod — Live bu kodu function (deger) { … } içine alır.

Fonksiyon betiği olaydan ya da görevden çağrılır. Tag değişince tetikli görevde tag'in yeni değeri ilk parametreye verilir; olaydan çağrılınca parametre gelmez (undefined). Prosedür / İşlev alanı JavaScript betiklerinde kullanılmaz.

Hazır nesneler

NesneNe yapar
Tag.oku(ad)Tag'in geçerli değerini döndürür. Bool tag için true / false, sayı tag'i için sayı, metin tag'i için metin gelir. Tag yoksa undefined döner. Tag adı büyük / küçük harfe duyarlıdır.
Tag.yaz(ad, değer)Değeri yazar ve bir Promise döndürür. Yazma reddedilirse (tag yok, değer alt / üst sınırın dışında, bağlantı durum tag'i) Live operatöre İşlem Yapılamadı penceresini gösterir; betik durmaz.
Sayfa.ac(ad), Sayfa.ac(ad, önek)Ana sayfayı değiştirir. İkinci parametre, yapı (UDT) cihaz penceresi için tag öneki verir.
Sayfa.geri()Önceki sayfaya döner.
Bildir(metin)Operatöre ortada bir bilgi penceresi gösterir; betik beklemeden sürer.
Kullanici.adOturumu açık kullanıcının adı; oturum yoksa boş metin.

Betik ortamında standart JavaScript nesneleri (Math, Date, JSON, String, setTimeout …) kullanılabilir. Ürünün sağladığı nesneler yukarıdaki dörttür; VBS'teki HMIRuntime, SmartTags, ScreenItems JavaScript'te yoktur (Studio kullanılırsa uyarır). Ürün, JavaScript betiğine sayfa nesnelerinin özelliklerini (renk, yazı, görünürlük) değiştirme işlevi sağlamaz; bunun için VBS, C ya da Python kullanın.

Örnekler

Tag okuma ve yazma:

var seviye = Tag.oku('Tank1_Seviye');
// Kalan boşluk (%) = 100 - seviye
Tag.yaz('Tank1_Bosluk', 100 - seviye);

Parametreli fonksiyon. Tanıtım_Tesisi'ndeki Pompa_Ariza_Esle betiğinde Parametreler kolonu deger yazılıdır; P103_Calisiyor tag'i değişince çalışan görev, tag'in yeni değerini bu parametreye verir:

// P-103 durunca arıza bitini kaldırır, çalışınca indirir.
Tag.yaz('P103_Ariza', !deger);

Kullanıcı ve bildirim, return ile erken çıkış:

if (!Kullanici.ad) {
  Bildir('Bu işlem için önce giriş yapın.');
  return;
}
Tag.yaz('Son_Islem_Yapan', Kullanici.ad);
Tag.yaz('Uretim_Sayaci', 0);

Genel modül ve kullanımı. Genel modül:

window.Ortak = {
  // Değeri iki sınır arasında tutar
  sinirla: function (deger, enAz, enCok) { return Math.min(enCok, Math.max(enAz, deger)); }
};

Başka bir fonksiyon betiğinde:

Tag.yaz('Motor1_Hiz', Ortak.sinirla(Tag.oku('Motor1_Hiz_Ayar'), 0, 100));

Daha fazla örnek (koşul, döngü, ölçekleme, try / catch, setTimeout) için Betik örnekleri konusuna bakın.

Sıra ve zamanlama

  • Tag.yaz beklemeden döner. PLC tag'ine yazdıktan hemen sonra Tag.oku çağırırsanız yazılan değer henüz okuma döngüsünden gelmemiş olabilir. Yazma bittikten sonra bir işlem yapmanız gerekiyorsa Tag.yaz(…).then(function () { … }) kullanın.
  • await yazılamaz: betik işlevi async değildir. Studio await burada kullanılamaz hatası verir; sonucu beklemek için .then(…) kullanın.
  • setTimeout ile geciktirilen işlem çalışır; zamanlayıcı betik bittikten sonra da sürer.

Hatalar

Söz dizimi hatası Studio'da canlı denetimle ve derlemede (F9) gösterilir; V8 iletileri Türkçeye çevrilir (ör. Beklenmeyen simge, Kod beklenmedik biçimde bitti). Hata, Live'ın kodu derlediği biçimde ve satır numarasıyla bildirilir.

Çalışma sırasında oluşan hata olay günlüğüne betik türünde Betik_Adı: ileti olarak yazılır ve program çalışmaya devam eder. Reçete aktarımının Önce betiği / Sonra betiği adımında hata, aktarımın hatası sayılır. Kendi hata yönetiminiz için try / catch kullanın.

Sınırlar ve dikkat edilecekler

  • Veritabanı, dosya ve program çalıştırma işlevi sağlanmaz; bunlar için VBS, C ya da Python kullanın.
  • VBS, C ve Python'daki 30 saniye süre sınırı ve üst üste çağrının atlanması kuralı JavaScript'te yoktur: uzun süren ya da sonsuz döngü arayüzü kilitleyebilir. Döngülerde çıkış koşulundan emin olun; sık tetiklenen görevlerde betiği kısa tutun.
  • JavaScript için başvuru paneli, prosedür listesi ve otomatik tamamlama yoktur; Başvuru için Betik nesne modeli başvurusu konusuna bakın.
  • Tarayıcıdan ve TV'den izleme kipinde betik çalışmaz.

İlgili konular

FabyaVision 0.1.0 Kullanım Kılavuzu · 18 Ekim 2026© Fabyatek Yazılım Bilişim Teknolojileri Ltd. Şti.