Sunucu betiği örnekleri
Bu örnekler bir sunucu betiğinin olağan kalıbını gösterir: saha sinyallerini oku, karar ver ve sonucu bir dahili bellek sinyaline yaz. Alarmlar, ekranlar ve tarihçe o dahili sinyali her sinyal gibi kullanır: onay, alarm listesi ve olay listesi hiç betik kodu olmadan çalışır.
Başlamadan önce
- Sunucu betiği oluşturmayı ve kaydetmeyi biliyorsunuz; bkz. Sunucu betikleri.
- Örneklerin saha sinyalleri var (
Motor1.Sicaklik;Pompa1.GirisBasinci,Pompa1.Calisiyor) ya da onları kendi sinyallerinizle değiştiriyorsunuz.
Adımlar
1. Dahili sinyalleri oluşturun
Konfigürasyon editöründe açık/kapalı tipinde dahili bellek sinyalleri oluşturun: ilk örnek için Motor1.SicaklikYuksek ve
Motor1.SicaklikCokYuksek, ikinci örnek için Pompa1.DusukBasincKilidi. Betik dahili bellek sinyallerine her zaman
yazabilir; komut izni gerekmez.
2. Motor sıcaklık uyarısı
Betik sıcaklık her değiştiğinde çalışır, kötü kaliteli değerleri yok sayar ve iki düzey ayarlar:
defineScript({
tags: ["Motor1.Sicaklik"],
onChange(ctx, path) {
if (ctx.quality(path) !== "good") {
ctx.warn("kalite iyi değil: " + path + ", atlandı");
return;
}
const v = Number(ctx.value(path));
const cokYuksek = v > 85;
const yuksek = !cokYuksek && v > 70; // yüksek yalnız 70 < v <= 85
ctx.setTag("Motor1.SicaklikCokYuksek", cokYuksek);
ctx.setTag("Motor1.SicaklikYuksek", yuksek);
if (cokYuksek) ctx.log("Sıcaklık KRİTİK: " + v + " °C");
else if (yuksek) ctx.log("Sıcaklık YÜKSEK: " + v + " °C");
},
});
3. Alarmları tanımlayın
Motor1.SicaklikYuksek (örneğin yüksek öncelik) ve Motor1.SicaklikCokYuksek (kritik öncelik) üzerinde, her açık/kapalı
sinyalde olduğu gibi bir alarm tanımlayın; bkz. Alarm tanımlama. Betik karar verir, alarm
motoru bildirir.
4. Pompa düşük basınç kilidi
Betik iki girişin de değeri olana kadar bekler ve pompa çok düşük giriş basıncıyla çalışırken kilidi ayarlar:
const BASINC = "Pompa1.GirisBasinci";
const CALISIYOR = "Pompa1.Calisiyor";
defineScript({
tags: [BASINC, CALISIYOR],
onChange(ctx) {
const p = ctx.value(BASINC);
const run = ctx.value(CALISIYOR);
if (p === undefined || p === null || run === undefined || run === null) return; // iki giriş de gerekli
const kilit = Number(run) > 0.5 && Number(p) < 1.5;
ctx.setTag("Pompa1.DusukBasincKilidi", kilit);
if (kilit) ctx.warn("Pompa düşük giriş basıncıyla çalışıyor: " + p + " bar");
},
});
Pompa1.DusukBasincKilidi'ni bir alarmda, ekranda ya da pompa komutu için koşul olarak kullanın. Betik pompayı kendisi
durduracaksa, Pompa1.Stop gibi dar bir hedef deseniyle Can command field points gerekir; bkz.
Yazma.
5. Deneyin ve etkinleştirin
Her betik için onChange tetikleyicisiyle Run now / try kullanın: sonuç, betiğin yazacağı değerleri yazmadan listeler. Sonra Active'i açıp Compile and save'e tıklayın.
Sonuç
Dahili sinyaller saha değerlerini izler; alarmlar onlarla birlikte gelir ve gider. Her betiğin Log and status sekmesi günlük satırlarını ve çalışma ve hata sayılarını gösterir.
Bilmekte yarar var
- Kararı betikte, tepkiyi alarm tanımında tutun: alarm böylece ek kod olmadan metinlerine, önceliğine, onayına ve tarihçesine sahip olur.
- Bu betikleri aynı anda birkaç projeye yüklemek için onları
.jsdosyası olarak kaydedin ve script import kullanın.