Přístup k proměnným

Každá proměnná projektu je ve skriptu dostupná jako objekt pod svým jménem. Proměnná pojmenovaná OilTemp se tedy ve skriptu používá přímo:

teplota = OilTemp.RawValue      # čtení raw hodnoty
OilTemp.RawValue = 42           # zápis raw hodnoty (typ se převede automaticky)
eng = OilTemp.EngValue          # čtení engineering hodnoty (po konverzi)
OilTemp.EngValue = 105.5        # zápis engineering hodnoty (inverzní konverzí)
print(OilTemp.Name, OilTemp.Id) # jméno a Id proměnné
  • RawValue — syrová hodnota, čtení i zápis,
  • EngValue — hodnota po konverzi (viz Konverze a prezentace), čtení i zápis,
  • Name, Id — identifikace proměnné.

Zápis do EngValue provede inverzní přepočet na raw hodnotu (u lineární konverze raw = (eng − offset) / multiplier) a výsledek převede na datový typ proměnné — celočíselné typy se zaokrouhlují. Hodnota, která se do typu nevejde (přetečení, NaN), zápis neprovede a skript skončí chybou s varováním v logu — hodnota proměnné zůstane nezměněná. Pozor u konverzí s offsetem: „nula" v engineering světě není totéž co raw nula (EngValue = 0 uloží raw −offset/multiplier).

Zápis a zobrazení: virtuální proměnné

Zápis ze skriptu (RawValue i EngValue) hodnotu proměnné jen uloží — sám o sobě nevytvoří vzorek signálu, takže se zapsaná hodnota neobjeví v controlech, grafech ani v logovaných datech. Controly totiž žijí z notifikací komunikovaných proměnných, a ty vydávají protokoly.

Proto existuje dvojice Virtual Variables Host (driver) + Virtual Variables (protokol): proměnnou, kterou má skript počítat a uživatel vidět, přiřaďte tomuto protokolu. Každý zápis skriptu se pak publikuje jako vzorek s časovou značkou okamžiku zápisu a proměnná se chová jako každý jiný signál. Dvojice funguje jen spolu — Project Configuration pod tímto driverem jiný protokol nenabídne. Podrobnosti: Virtual Variables, kompletní ukázka: Simulace: všechny signály. Proměnná bez přiřazení protokolu zůstává levným mezivýpočtem — skripty ji sdílejí, ale nikde se nezobrazuje.

Sdílený prostor skriptů

Všechny skripty projektu sdílejí jeden prostor — co si Startup skript připraví (funkce, připojení, počítadla), mohou periodické skripty používat a Shutdown skript uklidit.

Reakce na změnu hodnoty

Skript v režimu OnValueChanged se váže na konkrétní proměnnou. Podmínka spuštění se ladí v Parameters:

source=eng;mode=above;threshold=50;hysteresis=2
  • source — vyhodnocovat raw, nebo eng hodnotu,
  • mode — delta (změna o víc než práh), above/below (překročení hranice, s hysterezí),
  • threshold, hysteresis — práh a hystereze.

Trigger lze pohodlně nastavit i přímo u proměnné (sekce Variables, On-change triggers → Add trigger):

On-change trigger u proměnnéOn-change trigger u proměnné

Engine skriptu při spuštění předá kontext v proměnných qenex_trigger_variable_name, qenex_trigger_old_value, qenex_trigger_new_value a qenex_trigger_delta.

Dále

Celý příklad pohromadě — Příklad skriptu.