D2000 ponúka možnosť skriptovania - písania užívateľských skriptov v jazyku ESL (Event Script Language) a v jazyku Java.

Skript môže existovať: 

ESL skripty môžu používať (podobne ako počítané body) rozsiahly matematický aparát (Typy hodnôt, Systémové konštanty, Atribúty hodnoty objektu, Výrazy, Funkcie).

Navyše existujú rozšírené funkcie ESL, ktoré v počítaných bodoch  nie sú dostupné. Medzi ne patria aj funkcie pre prácu s XML súbormi a Funkcie pre prácu s JSON formátom.

ESL skripty môžu navyše môžu obsahovať aj Akcie, ktoré môžu sprostredkovať aj funkčnosť iných procesov (DBManager) a dajú sa rozdeliť do viacerých skupín:


V konfigurácii objekt typu Event sa špecifikuje jeden z nasledovných typov:

  • Trigger event - skript sa vykoná, keď nastane špecifikovaná podmienka - zmení sa hodnota, nastane procesný alarm na trigger objekte, nastane požadovaný limit hodnoty a iné.
    Poznámka: akciou EVENT je možné trigger event spustiť z iného skriptu (synchrónne či asynchrónne - v tomto prípade dokonca viackrát).
  • Server event - skript vykoná svoju inicializačnú časť (medzi BEGIN a END) po spustení (štandardne po štarte procesu D2000 Event Handler, prípadne po naštartovaní akciou OPENEVENT resp. po jeho prechode do stavu aktívnej inštancie v redundantných systémoch). Následne je možné volať RPC procedúry, ktoré server event implementuje (volaním akcie CALL) a recipročne, server event môže volať RPC procedúry iných server eventov. Server event sa môže pomocou akcie ON CHANGE registrovať na zmenu hodnoty ľubovolného objektu - následne je vyvolaná špecifikovaná procedúra.
    Poznámka: akciou OPENEVENT je možné server event štartovať nielen na ľubovolnom procese D2000 Event Handler, ale aj na procese D2000 HI. Navyše je možné špecifikovať číslo inštancie server eventu a tak dosiahnuť viacnásobné spustenie Server Eventu v rámci daného procesu.
  • Klient a server event - má podobné vlastnosti ako Server event, ale ak je otvorený akciou OPENEVENT na procese D2000 HI, tak klientska časť skriptu je spustená v procese D2000 HI a serverovská časť skriptu je spustená v procese D2000 SES (ktorý je štandardne spustený na serveri). Rozdelenie skriptu na dve časti umožňuje jednak výkonnostnú optimalizáciu a jednak kombinovanie prístup ku klientskemu počítaču a serveru.
  • Unit event - takýto skript je "knižnica", ktorá môže byť vložená do iného eventu (prípadne do schémy) deklaráciou UNIT a jej verejné (PUBLIC) procedúry môžu byť volané akciou CALL.



Príklady skriptovania sú súčasťou dokumentácie jednotlivých akcií, existujú však aj príklady týkajúce sa rôznych tém:

Príklad práce s XML exportom/importom, štruktúrami a súbormi je možné nájsť v nástroji XML Tool.

Príklad pokročilejšej práce so štruktúrovanými premennými je v implementácii protokolu Danfoss Ally Cloud.


Tip

V prostredí nástrojov D2000 CnfD2000 GrEditor je možné otvoriť si ESL Diagnostic Pack. Slúži na diagnostiku skriptov, zisťovanie používaných zdrojov (napr. veľkosti lokálnych premenných, veľkosti a počty dátových kontajnerov, databázové transakcie, spojenia, otvorené JSON handle, otvorené XML dokumenty a iné). Taktiež je možné zobraziť detaily jednotlivých skriptov včítane trvania jednotlivých akcií skriptu (maximálne trvanie, sumárne trvanie, počet vykonaní), čo je možné použiť na ladenie výkonnosti skriptov.

K dispozícii je aj DbManager Diagnostic Pack slúžiaci na ladenie databázových akcií.


Pre pokročilých

Pomocou objektu ESL Interface je možné definovať zoznam a parametre RPC procedúr. Následne v evente pomocou kľúčového slova IMPLEMENTATION sa deklaruje, že event implementuje tieto RPC procedúry a v tele eventu je potrebné pri definícii RPC procedúry tiež uviesť kľúčové slovo (IMPLEMENTATION RPC PROCEDURE NejakaProcedura). Event sa bude dať uložiť iba keď implementuje všetky RPC procedúry všetkých objektov ESL Interface, na ktoré sa odvoláva. ESL Interface teda slúži na vynútenie kontroly implementovania dohodnutých RPC procedúr.



0 komentárov

Nie ste prihlásený. Akékoľvek zmeny, ktoré vykonáte, sa označia ako anonymné. Ak už máte svoj účet, pravdepodobne sa budete chcieť prihlásiť .