Skip to content

Olay Kodu ​

Yaklaşık 15 dk okuma

Olay kodu, bir widget'a tıklandığında veya değeri değiştiğinde çalışan kısa bir JavaScript kodudur. Kod sunucuda değil, sayfayı açan kullanıcının tarayıcısında çalışır. Bir butonla birden fazla tag'e yazmak, değere göre karar vermek veya bir reçeteyi uygulamak gibi işler için kullanılır. Tek bir tag'e değer yazmak için olay kodu gerekmez; widget'ın Proses Değeri bağlantısı yeterlidir.

Sahaya yazma

Olay kodundaki yazma fonksiyonları değeri doğrudan sahadaki cihaza gönderir. Kodun yanlış tag'e veya yanlış değerle yazması makineyi beklenmedik şekilde çalıştırabilir. Kodu sahada kullanmadan önce güvenli bir ortamda deneyin. Kullanıcı onayı gereken yazmalarda setTag fonksiyonunu this ile çağırın ve widget'ta Onay Gerektirir ayarını açın. Olay kodu emniyet veya kilitleme işlevi için kullanılmaz; bu işlevler PLC'de ve emniyet devresinde sağlanır.

Olay kodu sayfayı açan kullanıcının yetkileriyle çalışır

Olay kodu, sayfayı açan kullanıcının oturumuyla ve bütün yetkileriyle çalışır; kodu yazan kişinin değil, sayfayı o anda kullanan kişinin yetkileri geçerlidir. Sayfayı yönetici yetkileri olan bir kullanıcı açtığında kod da bu yetkilerle çalışır. Olay kodu sayfayla birlikte kaydedilir. 2.11'den itibaren olay kodunu yalnız SystemAdmin hesapları ekleyebilir veya değiştirebilir; Editor rolündeki kullanıcılar kodu görür ve silebilir (bkz. Olay kodunu kimler ekleyebilir).

Olay kodu yazılabilen widget'lar ​

WidgetOlaylar
Buton, Toggle buton, Switch, Kart, KutuonClick, onMouseDown, onMouseUp
Buton grubu, Checkbox, Radio gruponClick, onMouseDown, onMouseUp, onChange
DropdownonChange
OlayNe zaman çalışır
onClickWidget'a tıklandığında.
onMouseDownFare düğmesine basıldığında. Buton, Toggle buton, Switch ve Buton grubunda dokunmatik ekranda parmak değdiğinde de (bkz. Olay kodu ve dokunma).
onMouseUpFare düğmesi bırakıldığında. Buton, Toggle buton, Switch ve Buton grubunda dokunmatik ekranda parmak kalkınca veya basış iptal olunca da.
onChangeWidget'ın değeri değiştiğinde. Yeni değer event.value ile okunur. Checkbox ve Dropdown'da bağlı tag'in değeri değişince kullanıcı işlemi olmadan da çalışabilir; 2.11'den itibaren bu çalışmada yazma fonksiyonları kullanılamaz (bkz. Kullanıcı işlemi olmadan çalışan kod).

Widget'ların listesi ve ayarları için Widget Referansı sayfasına bakın.

Fare olayları 2.10.1'den itibaren çalışır

Checkbox, Switch, Radio grup ve Buton grubunda onMouseDown ve onMouseUp kodu 2.10.1'den itibaren çalışır. Bu widget'lara önceki bir sürümde yazılmış onMouseDown ve onMouseUp kodları yükseltmeden sonra her fare basışında ve bırakışında çalışmaya başlar; tag yazan böyle bir kod varsa yükseltmeden önce gözden geçirin.

Olay kodu yalnız çalışma modunda çalışır: görüntüleyicide ve editörde tasarım modu kapatıldığında. Tasarım modunda tıklamalar kodu çalıştırmaz. Değer giren widget'larda Salt Okunur ayarı açıkken olay kodu da çalışmaz.

Buton

Paletten eklenen Buton widget'ında Salt Okunur varsayılan olarak açıktır. Olay kodunun çalışması için bu ayarı kapatın. Eylem Modu yazma yapıyorsa ve Proses Değeri bir tag'e bağlıysa, tıklamada önce bu değer yazılır, sonra onClick kodu çalışır.

Kompozit bileşenin kendisinde Olaylar bölümü yoktur. İçindeki widget'ların olay kodu, bileşen şablonunda Kod tipinde bir parametre olarak dışarı açılırsa her kopyada ayrı düzenlenebilir. Bkz. Bileşen şablonu editörü.

Olay kodunu kimler ekleyebilir ​

Olay kodu sayfayı açan her kullanıcının tarayıcısında, o kullanıcının oturumu ve yetkileriyle çalışır. Bu nedenle 2.11'den itibaren olay kodunu yalnız SystemAdmin grubundaki hesaplar ekleyebilir veya değiştirebilir. Kural sunucuda uygulanır ve olay kodunun kaydedildiği her yerde geçerlidir:

  • sayfa kaydetme ve yeni sayfa oluşturma,
  • Sayfaları İçe Aktar (.zip) ile sayfa paketi içe aktarma,
  • sayfa şablonu ve kompozit bileşen şablonu kaydetme, Sayfayı Şablon Olarak Kaydet ve şablon paketi içe aktarma,
  • konfigürasyon yedeğinden Sayfalar veya Sayfa Şablonları modülünü geri yükleme.

Kompozit bileşenlerdeki Kod tipindeki parametreler de olay kodudur: şablondaki Varsayılan Değer ve kopyalarda girilen değer.

SystemAdmin dışındaki kullanıcılar (ör. Editor rolündekiler):

  • Mevcut olay kodunu görür; kayıtlı kod çalışmaya devam eder.
  • Kodu değiştirmeyen her düzenlemeyi yapıp kaydedebilir. Sayfanın tüm içeriğini değiştiren işlemler kodu da değiştirebilir: olay kodunun içindeki bir metni (ör. tag adını) değiştiren Bul ve Değiştir kod değişikliği sayılır (bkz. Bul ve değiştir).
  • Olay kodunu silebilir; kodlu bir widget'ı aynı sayfada taşıyabilir ve kopyalayabilir. Başka bir sayfadan yapıştırılan veya JSON Dosyasından İçe Aktar ile alınan widget'ların kodu, aynı metin bu sayfanın kayıtlı halinde yoksa yeni kod sayılır.
  • Yeni kod ekleyemez ve mevcut kodu değiştiremez. Olay kodu içeren bir şablondan sayfa oluşturmak veya böyle bir şablonu sayfaya eklemek de SystemAdmin ister; bağlı kompozit bileşen kopyaları bu kuralın dışındadır, çünkü kodları kayıtlı şablondan gelir.

Bu kullanıcılar için editörde Olaylar bölümü ve Olay Kodu Düzenle penceresi salt okunur görünür; altlarında Olay kodunu yalnız SystemAdmin ekleyebilir veya değiştirebilir. Kodu görüntüleyebilir ve kaldırabilirsiniz. notu bulunur. Kompozit bileşenin Kod parametreleri ve bileşen şablonundaki Kod parametresinin Varsayılan Değer alanı da salt okunurdur; altlarında Kod parametrelerini yalnız SystemAdmin değiştirebilir. notu bulunur.

Kaydedilen içerik yeni veya değiştirilmiş olay kodu içeriyorsa hiçbir şey kaydedilmez ve Olay kodu eklemek veya değiştirmek için SystemAdmin yetkisi gerekir. Değişiklik kaydedilmedi; mevcut olay kodunu kaldırabilir ya da aynı sayfada taşıyıp kopyalayabilirsiniz. mesajı gösterilir. Sunucu yeni içeriği kayıtlı haliyle karşılaştırır: kodun metni kayıtlı sayfada veya sayfadaki bağlı kompozit bileşenin şablonunda zaten varsa değişiklik sayılmaz. Paket içe aktarma ve geri yükleme, tek bir sayfa veya şablon bu kurala takılsa da tamamen reddedilir.

Yapay zekâ asistanı (MCP) ile yapılan sayfa değişiklikleri de aynı kurala bağlıdır. Asistan olay kodu ekleyen, değiştiren veya silen bir değişikliği uygulamadan önce yeni kodun tamamını göstermeli ve ayrıca onay istemelidir; kodu okumadan onay vermeyin.

Olay kodu editörü ​

Olay kodu, widget seçiliyken sağ paneldeki Olaylar bölümünde yazılır. Widget'ın desteklediği her olay için ayrı bir alan vardır. Alanın başlığında olayın adı (ör. onClick), sağında şu düğmeler bulunur:

Düğmeİşlev
Tag Ekle (etiket simgesi)Tag seçiciyi açar; seçilen tag imlecin olduğu yere eklenir.
Snapshot adı oluşturucu (saat simgesi)Tüketim veya geçmiş snapshot adını oluşturup imlecin olduğu yere ekler.
Diyalog içerisinde aç (kalem simgesi)Kodu daha geniş Olay Kodu Düzenle penceresinde açar.
SilBu olayın kodunu siler.

Olay Kodu Düzenle penceresinde de Tag Ekle ve snapshot düğmeleri vardır. Pencerede yapılan değişiklikler Tamam ile koda aktarılır, İptal ile bırakılır. Olay kodu sayfayla birlikte kaydedilir; değişiklikten sonra sayfayı Kaydet ile kaydedin.

Otomatik tamamlama ​

Editör, yazarken SCADA çalışma zamanı fonksiyonlarını önerir:

  • this. yazınca kullanılabilir alanlar listelenir: srt (SCADA çalışma zamanı), twCommon (widget'ın kendisi) ve editorOptions (editör durumu).
  • this.srt. yazınca fonksiyonlar parametreleriyle listelenir. Seçili önerinin yanında kısa açıklama ve kullanım örneği görünür.
  • Bir kelimenin başını yazınca (ör. setT) fonksiyonun tam yazımı (this.srt.setTag(...)) önerilir. Öneri listesi Ctrl+Space ile de açılır.
  • Fonksiyon eklenince parametre alanları seçili gelir; alanlar arasında Tab ile geçilir.
  • this.srt.tag("…"). yazınca veya this.srt.tag(...) sonucunun atandığı değişkenden sonra nokta konunca tag nesnesinin alanları önerilir (bkz. Tag okuma).
  • this.twCommon.properties.value. yazınca düzenlenen widget'ın özellikleri listelenir.
  • Metin (tırnak içi) ve yorum içinde öneri gösterilmez.

Tag seçici ​

Tag seçici Tag Ekle düğmesiyle veya Alt+T ile açılır. Tag adı alan bir fonksiyon (ör. tag, tagValue, setTag, addTag) öneri listesinden seçildiğinde tag seçici kendiliğinden açılır. Seçilen tag'in tam adı imlecin olduğu yere eklenir. İmleç tırnak içindeyse ad olduğu gibi, değilse tırnak içinde eklenir.

Tag seçicinin Sistem sekmesindeki sistem tag'leri yalnız okunabilir. Bu nedenle bu sekme, yazma fonksiyonlarının tag alanında gösterilmez.

Olay kodu uyarıları ​

2.11'den itibaren editör, olay kodundaki riskli çağrıları kodun altında Olay kodu uyarıları başlığıyla listeler. Uyarılar Olaylar bölümünde ve Olay Kodu Düzenle penceresinde görünür; her uyarı Satır numarasıyla ve kısa bir öneriyle gösterilir. Uyarı verilen durumlar:

DurumÖneri
Sahaya onay sormadan ve widget ayarlarını atlayarak yazan çağrı; üçüncü parametresi this olmayan setTag dahil.this.srt.setTag(tag, değer, this) kullanın.
Checkbox ve Dropdown'un onChange kodunda, kullanıcı işlemi olmadan çalışırken kullanılamayan bir fonksiyon (ör. setTag, alarm ve reçete uygulama fonksiyonları).Checkbox'ta yazma işlemlerini onClick'e taşıyın. Dropdown'da onClick yoktur; yazmadan önce kullanıcı seçimini denetleyin (bkz. Dropdown'da yazma).
Bütün sayfaya, kullanıcının oturum bilgilerine veya tarayıcı depolamasına erişim, this.srt dışında ağ isteği, editörde görünmeyen kodu çalıştırma.Gerekmiyorsa kaldırın; olay kodunda this.srt fonksiyonlarını kullanın.

Uyarılar kaydetmeyi engellemez ve kodu değiştirmez; kod yazıldığı gibi çalışır. Sayfa kaydedilirken uyarı varsa uyarı sayısı ve ilgili widget'lar (Elemanlar sekmesindeki adlarıyla) kısa bir bildirimle özetlenir. Yorum ve metin (tırnak) içindeki adlar uyarı vermez. Uyarı olmaması kodun güvenli olduğunu göstermez; uyarılar yalnız bilinen adlara bakar.

Yazım kuralları ​

Olay kodu bir fonksiyonun gövdesi olarak çalışır:

  • Çalışma zamanı fonksiyonlarına this.srt, widget'ın kendisine this.twCommon, editör durumuna this.editorOptions ile erişilir. Olayın bilgisi event değişkenindedir; içeriği widget'a göre değişir.
  • await kullanılabilir. Kod return ile erken bitirilebilir.
  • Kod çalıştırılmadan önce satır sonları silinir ve bütün kod tek satıra dönüşür. Bu yüzden:
    • her komutu noktalı virgülle (;) bitirin;
    • // ile satır yorumu yazmayın; yorumun arkasındaki bütün kod da yorum sayılır. Yorum için /* … */ kullanın.
js
/* Doğru: her komut ; ile biter, yorum blok yorumdur */
const hiz = this.srt.tagValue("Hat1.Hiz");
if (hiz > 100) { this.srt.setTag("Hat1.Uyari", 1, this); }
  • Hata oluşursa kullanıcıya kısa bir uyarı gösterilir: Özel kod çalıştırılırken bir hata oluştu ve hatanın kısa açıklaması. Hatanın ayrıntısı tarayıcının geliştirici konsoluna (F12) yazılır.
  • Kod widget'ın ilk olayında derlenir. Editörde olay kodu değiştirildiğinde sonraki olayda yeni kod derlenir; sayfayı yeniden açmak gerekmez ve eski kod çalışmaz.

SCADA çalışma zamanı fonksiyonları ​

Aşağıdaki fonksiyonlar this.srt. ile çağrılır. Listede olmayan fonksiyonlar olay kodunda kullanım için desteklenmez.

Tag okuma ​

FonksiyonAçıklama
tag(fullName)Tag nesnesini döndürür. Tag yoksa sonuç undefined olur.
tagValue(fullName)Tag'in güncel değerini döndürür.
isNumberOrDefaultZero(value)Değeri sayıya çevirir; sayı değilse 0 döndürür.

tag() ile alınan nesnenin alanları: Value (değer), PreviousValue (önceki değer), Quality (kalite), ChangedTime (son değişim zamanı), AlarmState (alarm durumu), Unit (birim), Description (açıklama), Name (tam ad), Id (kimlik).

js
const t = this.srt.tag("Hat1.Hiz");
if (t?.Value > 100) { this.srt.setTag("Hat1.Uyari", 1, this); }

Bağlı olmayan tag ilk okumada boş döner

Tarayıcıya yalnız sayfanın okuduğu tag'lerin değeri gelir. Sayfadaki widget bağlantılarında kullanılan tag'lerin değeri sayfa açılınca gelir. 2.10.1'den itibaren olay kodunda tag() veya tagValue() ile okunan ve sayfada hiçbir widget'a bağlı olmayan bir tag, adı birleştirmeyle kurulmuş olsa da, ilk okumada sayfanın tag listesine eklenir: ilk okuma boş döner, değer kısa süre sonra gelir ve sonraki okumalar güncel değeri verir. Kod değeri ilk çalışmasında kullanıyorsa (ör. sayfa açılınca bir kez çalışan kod) tag'i sayfadaki bir widget'a da (gerekirse gizli bir değer etiketine) bağlayın. Bunun için sunucu ve web arayüzü birlikte 2.10.1 veya üstü olmalıdır; ikisinden biri daha eskiyse olay kodunda okunan tag listeye eklenmez; değeri yalnız tag sayfada bir widget'a bağlıysa gelir. Snapshot adları bunun dışındadır: olay kodunda tırnak içinde tam yazılan snapshot adı (ör. "Hat1.PLC.__hist.today.avg.Hiz") sayfa açılırken koddan bulunur ve bağlantı gerekmeden okunur; birleştirmeyle kurulan snapshot adları bulunmaz. Tarayıcının kendi ürettiği sistem tag'leri (ör. __activeAlarmCount, __currentUserRoles) her zaman okunabilir.

Tag yazma ​

FonksiyonAçıklama
setTag(fullName, value, this)Tag'e değer yazar. Üçüncü parametre this verilirse widget'ın ayarları uygulanır (aşağıdaki tablo). Önerilen yazma yoludur.
addTag({ Name: fullName, Value: value })Değeri yalnız bu tarayıcıdaki tag listesine yazar; sahaya gönderilmez. Sayfa ön eki uygulanmaz. Değer, canlı veri bağlantısı kopup yeniden kurulduğunda korunur; oturum kapatılınca veya tarayıcı sayfası yenilenince (kiosk ekranının kendiliğinden yeniden yüklenmesi dahil) silinir. Sunucuda tanımlı bir tag'in adını kullanmayın.

setTag fonksiyonuna this verildiğinde şu kontroller yapılır:

Widget ayarıEtkisi
Salt Okunur açıkYazılmaz.
Editör tasarım modundaYazılmaz.
Onay Gerektirir açıkYazmadan önce Devam etmek istediğinize emin misiniz? sorusu gelir.

Tag adı boşsa setTag yazmaz ve TAG bulunamadı! mesajını gösterir.

Bütün yazma fonksiyonları için şu koşullar geçerlidir:

  • Sunucu bağlantısı olmalıdır.
  • Kullanıcının Operate veya Editor rolü olmalıdır.
  • Tag salt okunur olmamalıdır.
  • Pulse veya Yükselen kenar komut davranışlı tag'lerde kullanıcı tag'i proses grubu kapsamında görmelidir (bkz. Tag yazma kapsamı).

Kullanıcıların yaptığı yazmalar, yazan kullanıcıyla birlikte Operasyon Geçmişi'ne kaydedilir.

js
/* Onaylı başlatma: widget'ta Onay Gerektirir açık olmalı */
this.srt.setTag("Hat1.Motor1.Start", 1, this);

Yazma sonucu ​

Yazma sonucu kullanıcıya uyarı olarak bildirilir. Bu davranış widget'lardan yapılan yazmalar ve olay kodundaki yazma fonksiyonları için aynıdır:

DurumUyarı
Sunucu bağlantısı yokYazma isteği gönderilmedi: SCADA bağlantısı yok.
Kullanıcının yazma rolü yokYazma isteği gönderilmedi: tag yazma yetkiniz yok.
Sunucu yazmayı reddettiYazma isteği reddedildi: … ve nedeni: yetki yok (rol veya proses grubu kapsamı), tag salt okunur, tag çalışma zamanında bulunamadı, tag çalışma zamanına alınmamış (lisans veya sürücü sınırı), tag veya değer eksik ya da sunucu isteği sürücüye iletemedi (ör. cihazın reddettiği BACnet yazması)
Yazma gönderildi, ama cihaz veya tag kalitesi kötüYazma isteği gönderildi, ancak cihaz veya tag kalitesi kötü; değer cihaza ulaşmayabilir.

Başarılı yazmada mesaj gösterilmez. "Gönderildi", isteğin sürücüye iletildiği anlamına gelir; PLC'nin veya cihazın değeri uyguladığını göstermez. Kritik komutlarda sonucu, yazılan tag'in (veya PLC'nin geri bildirim tag'inin) sonraki değerinden doğrulayın.

Alarm ​

Alarm fonksiyonları için kullanıcının alarm yetkisi olmalıdır.

FonksiyonAçıklama
ackAlarm(alarmId)Alarmı onaylar. 0 verilirse kullanıcının görebildiği bütün alarmlar onaylanır.
ackSingleAlarm(alarmId)Yalnız verilen alarmı onaylar; bütün alarmları hiçbir zaman onaylamaz. Alarm kullanıcının alarm listesinde olmalı ve onay beklemelidir; boş, 0 veya bilinmeyen kimlikte ya da onaylanmış alarmda onay gönderilmez. Alarm tablosundaki onay butonuyla aynı yetki denetimini kullanır. Onay gönderildiyse true döndürür.
muteAlarm(mute)Bu tarayıcıda alarm sesini kapatır (true) veya açar (false).
lockAlarm(alarm)Alarm satırının kilit durumunu sunucuya gönderir. Alarm nesnesinin Ignored alanı istenen durumu belirtir.
js
this.srt.ackAlarm(0);

Tag'den gelen bir kimlik için ackSingleAlarm kullanın; örneğin en yeni alarmı onaylayan buton (bkz. En yeni alarm):

js
this.srt.ackSingleAlarm(this.srt.tagValue("@NOP::__latestAlarmId"));

Cihaz ve bağlantı ​

Fonksiyon / alanAçıklama
reInitDevice(deviceId)Cihazı yeniden başlatır. Operate veya Editor rolü gerekir ve cihaz, kullanıcının proses grubunda olmalıdır.
reInitDataGroups()Proses grubu tanımlarını yeniden yükler. Editor veya UserAdministrator rolü gerekir.
triggerDatabaseScan(deviceId)Veritabanı protokolündeki cihazda okuma taramasını hemen başlatır. await ile kullanılır. Editor rolü gerekir.
connectedSunucu bağlantısının durumu. Değer .value ile okunur.
deviceStatesCihaz durumları. Değer .value ile okunur.
js
if (!this.srt.connected.value) { return; }
await this.srt.triggerDatabaseScan(3);

Reçete ​

Reçete fonksiyonları await ile kullanılır. Reçete uygulamak için kullanıcının reçete uygulama yetkisi ve lisansta reçete özelliği olmalıdır.

FonksiyonAçıklama
applyRecipe({ RecipeId, ContinueOnError })Reçeteyi uygular. ContinueOnError: true ise hatalı bir kalemde durmadan devam eder. Sonuçtaki FailedItemCount yazılamayan kalem sayısıdır.
getRecipes(recipeGroupId, includeItems)Reçeteleri listeler. Parametreler isteğe bağlıdır: grup kimliği ve kalemlerin de getirilip getirilmeyeceği (varsayılan false).
getRecipeGroups(includeTags)Reçete gruplarını listeler. includeTags varsayılan olarak truedur.
js
const sonuc = await this.srt.applyRecipe({ RecipeId: 7, ContinueOnError: true });
if (sonuc?.FailedItemCount > 0) { console.warn(sonuc); }

Arayüz ​

FonksiyonAçıklama
setLoadingPanel({ visible })Sayfanın üstünde yükleniyor panelini gösterir (true) veya gizler (false).
visualElements(widgetId, path)Başka bir widget'ın bir özelliğini, widget kimliği ve noktalı özellik yolu ile okur. Widget veya özellik bulunamazsa 0 döndürür.
js
this.srt.setLoadingPanel({ visible: true });
try { await this.srt.applyRecipe({ RecipeId: 7 }); } finally { this.srt.setLoadingPanel({ visible: false }); }

Widget ve editör alanları ​

AlanAçıklama
this.twCommon.properties.valueWidget'ın bağlantılar uygulanmış güncel özellikleri.
this.editorOptions.editModeSayfa editörde tasarım modundaysa true.

Kullanılması önerilmeyenler ​

Otomatik tamamlamada bu sayfada anlatılmayan başka öğeler de görünebilir. Bunlar olay kodunda kullanım için desteklenmez. Sayfa geçişi için olay kodu yerine widget'ın Yönlendirme (To) ayarlarını kullanın.

Kullanıcı işlemi olmadan çalışan kod ​

Checkbox ve Dropdown'un onChange kodu, bağlı tag'in değeri değişince (PLC'den veya başka bir ekrandan) kimse tıklamadan da çalışır ve sayfa açık olan her ekranda tekrarlanır. 2.11'den itibaren bu çalışmalarda this.srt kısıtlıdır: yalnız okuma fonksiyonlarını ve bu tarayıcıdaki yerel değerleri içerir, sahaya veya sunucuya yazamaz.

WidgetonChange kısıtlı çalışıronChange bütün fonksiyonlarla çalışır
CheckboxHer zaman: işaret bağlı değerden geldiği için tıklamadan sonra daHiçbir zaman; tıklamaya bağlı işi onClick'e yazın
DropdownBağlı değer değişinceKullanıcı listeden seçim yapınca
Buton grubuÇalışmaz; onChange yalnız kullanıcı seçiminde çalışırKullanıcı butona tıklayınca, dokununca veya Enter ya da Boşluk tuşuyla seçince
Radio grupÇalışmaz; onChange yalnız kullanıcı seçiminde çalışırKullanıcı seçim yapınca

onClick, onMouseDown ve onMouseUp kodu her zaman bütün fonksiyonlarla çalışır.

Kısıtlı this.srt:

Fonksiyonlar
Kullanılabilirtag, tagValue, isNumberOrDefaultZero, connected, deviceStates, visualElements, addTag, reçete okuma (getRecipes, getRecipeGroups)
KullanılamazsetTag, alarm fonksiyonları (ackAlarm, ackSingleAlarm, muteAlarm, lockAlarm), applyRecipe, reInitDevice, reInitDataGroups, triggerDatabaseScan, setLoadingPanel ve bu sayfada anlatılmayan diğer fonksiyonlar

Kullanılamayan bir fonksiyon çağrılırsa kod o satırda durur; önceki satırlar çalışmış olur. Kullanıcıya Özel kod çalıştırılırken bir hata oluştu uyarısı ve "srt.setTag, kullanıcı işlemi olmadan çalışan olay kodunda (ör. bağlı değer değişince onChange) kullanılamaz. Çağrıyı onClick'e taşıyın." gibi bir açıklama gösterilir. Uyarı aynı widget ve fonksiyon için tarayıcı sayfası yenilenene kadar bir kez gösterilir; sayfa yenilenince (kiosk ekranının kendiliğinden yeniden yüklenmesi dahil) yeniden gösterilebilir. Tarayıcı konsoluna her çalışmada yazılır. Editör bu çağrıları kaydetmeden önce uyarı olarak gösterir.

addTag yalnız bu tarayıcıdaki tag değerini değiştirir; cihaza ve sunucuya yazmaz.

Yükseltmede davranış değişikliği

Bir tag'in değişimini bu widget'ların onChange kodunda başka bir tag'e yazarak aktaran kayıtlı kodlar 2.11'de yazmayı bırakır. Operatörün işlemiyle yazmak için Checkbox'ta kodu onClick'e taşıyın. Dropdown'da onClick yoktur; kullanıcı listeden seçim yaptığında onChange kodundaki yazma çalışmaya devam eder (bkz. Dropdown'da yazma). Buton grubunun onChange kodu 2.10.1'den itibaren yalnız kullanıcı seçiminde ve bütün fonksiyonlarla çalışır; bu değişiklikten etkilenmez. Tag'ler arası aktarmayı PLC'de veya sunucu tarafında yapın; aynı kod açık her ekranda ayrı ayrı çalıştığı için tarayıcıda yapılan aktarma yazmayı ekran sayısı kadar tekrarlar.

Bu kısıtlama yanlışlıkla yazmayı önler; bir güvenlik sınırı değildir. Kod yine sayfayı açan kullanıcının oturumuyla çalışır (bkz. Olay kodunu kimler ekleyebilir).

Dropdown'un tek olayı onChange'dir; onClick olayı yoktur. Kullanıcı listeden seçim yaptığında onChange kodu bütün fonksiyonlarla çalışır ve setTag(..., this) ile yazabilir. Bağlı değer kendiliğinden değiştiğinde aynı kod kısıtlı çalışır ve yazma çağrısında durur. Bu durmayı ve uyarıyı önlemek için yazmadan önce kodun kullanıcı seçimiyle çalışıp çalışmadığını denetleyin. Dropdown'da event.event yalnız kullanıcı seçiminde doludur:

js
/* Bağlı değer değişti, kullanıcı seçim yapmadı: yazma */
if (!event.event) return;
this.srt.setTag("Hat1.Recete.Secim", event.value, this);

Dropdown'da kullanılamayan fonksiyon uyarısı ve editör uyarısı onClick yerine bu denetimi önerir: çağrıdan önce if (!event.event) return; ekleyin. Buton grubunda bu denetim gerekmez: onChange kodu yalnız kullanıcı seçiminde ve bütün fonksiyonlarla çalışır. Checkbox'ın onChange kodu her zaman kısıtlı çalışır; Checkbox'ta yazmayı onClick'e yazın.

Tag önekleri ve @NOP:: ​

Sayfaya bir Tag Ön Eki tanımlıysa, olay kodunda yazılan tag adları bu ön eke göre çözülür. Bu kural tag, tagValue ve setTag için geçerlidir. addTag ön ek uygulamaz. Modal pencerede açılan sayfalarda modal sayfanın ön eki kullanılır. Bağlantıların Tag İsmi alanındaki ifadelerde de tag("…") ve tagValue("…") 2.10.1'den itibaren göreli adları ifadenin bulunduğu sayfanın veya modalın ön ekiyle çözer; kompozit bileşenin Tag Prefix değeri ise yalnız doğrudan veya tek tırnakla yazılan adlara uygulanır (bkz. Ortak ekipman penceresi). Ön ekin tanımı için Tag adı ve sayfa ön eki bölümüne bakın.

Kodda yazılanTag Ön EkiKullanılan tag
"Hiz"Hat1.Hat1.Hiz
".Hiz"Hat1Hat1.Hiz (baştaki nokta ayıraç olur)
"Hat2.Hiz"Hat1.Hat1.Hat2.Hiz
"@NOP::Hat2.Hiz"Ne olursa olsunHat2.Hiz
"Hat2.Hiz"YokHat2.Hiz

Olay kodunda ön ek, noktalı tam adların da önüne eklenir. Ön ekli bir sayfada ön ekten bağımsız bir tag'e erişmek için adın başına @NOP:: yazın. @NOP:: ifadesi her zaman silinir, ön eki olmayan sayfalarda da güvenle kullanılabilir.

js
const sicaklik = this.srt.tagValue("@NOP::Genel.DisSicaklik");
const alarmSayisi = this.srt.tagValue("@NOP::__activeAlarmCount");

Kompozit bileşenin Tag Prefix değeri yalnız bileşenin tag bağlantılarına uygulanır; olay koduna uygulanmaz. Bileşen içindeki olay kodunda tag adını sayfa ön ekine göre yazın.

Snapshot adları (__cons.…, __hist.…) için ön ek kuralları Tüketim Snapshot'ları sayfasındakiyle aynıdır.

2WinScada 2.10