Promotic

PmaPrototype - Podrobný popis objektu

Viz: Objekt PmaPrototype

Zjednodušeně si lze funkci objektů PmaPrototype a PmaInstance představit tak, že při spuštění aplikace se automaticky rozkopíruje obsah příslušného prototypu do všech instancí, které tento vzor používají.
Výhoda konceptu prototypů a instancí je, že k rozkopírování prototypu do všech instancí dochází automaticky při každém spuštění aplikace, takže změna provedená v prototypu se projeví automaticky při příštím spuštění i ve všech instancích. Obsah originálního prototypu existuje pouze ve vývojovém prostředí, ve spuštěné aplikaci neexistuje. Existují pouze jeho kopie v jednotlivých instancích.

Parametrizovatelné prototypy:
Obvykle je potřeba zajistit, aby se jednotlivé instance téhož prototypu od sebe mírně odlišovaly. Obvykle se jedná o odlišné zobrazované texty, inicializační hodnoty konstant, napojení vazeb na proměnné, vlastní soubory nebo databázové tabulky, skupiny trendů, alarmů, eventů nebo odlišnosti ve skriptech. K tomuto účelu slouží Parametry Pma objektu, kdy lze ve vzoru definovat sadu parametrů a konkrétní instance pak nastaví skutečnou hodnotu těchto parametrů, platných pro tuto instanci. K definování parametrů objektů PmaPrototype a PmaInstance slouží konfigurátor "Parametry Pma objektu". K odkazu na hodnoty parametrů Pma objektu v konfigurátorech objektu lze použít Makro výraz $.par a ve skriptech lze použít metodu PmaObject.GetPar. Důležité pro zjištění hodnoty parametru je, že při zjišťování hodnoty konkrétního parametru se parametr hledá od daného objektu, přes jeho rodiče kaskádním způsobem (bubláním).

Upozornění pro prototypy a instance: Pro objekt PmaInstance platí, že přejímá pouze parametry příslušného objektu PmaPrototype, kterým může (ale nemusí) zadat změněné hodnoty. To znamená, že instance může pouze měnit hodnoty existujících parametrů příslušného prototypu. Instance, ale ani rodiče instance, nesmí přidávat parametry nové. Instance (prototyp) má přístupné pouze parametry definované v prototypu, nemá přístup k parametrům rodiče instance. Tím je zajištěno, že všechny instance téhož prototypu mají stejnou sadu parametrů i když s různými hodnotami. Objekt PmaInstance je tedy vyjímečný z hlediska hledání parametrů (bublání), protože v tomto objektu hledání parametrů končí a nepokračuje k rodiči objektu PmaInstance. Z hlediska parametrů je tedy instance prototypu izolována od parametrů zbytku aplikace. Pokud je nutno získat hodnotu parametru pro prototyp z rodičů instance, pak je nutno založit tento parametr v objektu PmaPrototype (se stejným nebo jiným názvem) a na parametr rodiče instance se odkázat buď zde nebo v objektu PmaInstance. Reference na parametr rodiče se provede jako Makro výraz $.par v hodnotě parametru instance nebo prototypu.
Například v prototypu založíme nový parametr boiler, jehož hodnotu nastavíme na hodnotu parametru boiler rodiče instance: boiler:$.par("boiler");

Vztah parametrů Pma objektů a Pmg objektů:
Důležité je, že lze předat parametr Pma objektu do obrazu jako parametr Pmg objektu. Princip je, že parametr Pma objektu se nedostane dovnitř obrazu automaticky (Pmg objekt přímo "nevidí" parametr, který je definován mimo obraz). V obrazu je nutno založit příslušný parametr v objektu PmgRoot a při otevření obrazu ho nastavit na hodnotu parametru Pma objektu. Toho lze dosáhnout:
- pomocí parametru sViewPars metody Pm.CreateView nebo
- pomocí makro výrazu v obrazu v konfigurátoru "Výchozí hodnota sViewPars".


Použití konceptu prototypu a instancí:
Koncept prototypu a instancí je velmi vhodný pro situace, kdy se v aplikaci vyskytne několik velmi podobných nebo shodných celků. Například aplikace monitoruje 5 kotlů, kdy jednotlivé kotle jsou v podstatě totožné a část aplikace týkající se jednoho kotle se skládá z komunikace s příslušným PLC, dat kotle, trendování, alarmů, eventů a grafické obrazovky.
Nyní stačí založit prototyp "Kotel", který představuje jeden kotel, implementující kompletně funkčnost jednoho kotle (komunikace, zobrazení, trendy a alarmy) a vytvořit 5 instancí tohoto prototypu s názvem "Kotel1", "Kotel2", atd. Pro postihnutí odlišností jednotlivých instancí se vytvoří nezbytný počet parametrů Pma objektu. Nejdůležitější by byl parametr "číslo kotle", ale mohla by tam být i IP adresa PLC automatu, atd.

Upozornění! U všech objektů v prototypu je potřeba zajistit jedinečnost globálních názvů a systémových prostředků (identifikátory, názvy, soubory, adresy, databázové tabulky, atd.), nejlépe použít Makro výraz $.par. Týká se to zejména objektů PmaTrendGroup, PmaAlarmGroup, PmaAdo zpřístupněných do Webu nebo v síti, atd.
Například u trendů, alarmů i eventů je nutno parametrizovat identifikátor skupiny, zobrazovaný název skupiny, název souboru a složky, název databáze, tabulky, kam komponenta ukládá data. Pokud se toto neprovede, pak je to stejné, jako by ve vývojovém prostředí byly vyrobeny dvě komponenty se stejným nastavením. Pak si navzájem začnou přepisovat data nebo se nepodaří globálně zaregistrovat pod stejným identifikátorem, atd.

Historie:
Pm8.00.06: Vytvořeno
© MICROSYS, spol. s r.o.