Promotic
WikipediaLinkedInYoutubeTwitterFacebook

Manuál pro školitele systému PROMOTIC

- Ověřit, zda mají všichni nainstalovaný PROMOTIC požadované verze
- Verze PROMOTIC na školení

Část 1.

- Jak nainstalovat PROMOTIC
- cesta k \Promotic bez mezer, diakritiky
- složka pro projekty (\Promotic\Apps) - cesta bez mezer, diakritiky
- říct co vše je ve složce \Promotic
- umístění \Promotic\Apps
 
- Jak spouštět aplikace (viz Jak spustit runtime aplikaci PROMOTIC):
- pomocí PmManager.exe
- klikem na .pra
- příkazový řádek "\Promotic\PmVXXYY\Bin32\PromoticRt32.exe s parametrem .pra"
 
- Založení projektu
- Předkonfigurace - společné znaky
- dialog pro nastavení parametrů PreCfg (např. kom. médium Ethernet x COM -> IP x COM port, atd.)
- je možné později změnit, upravit, přidat, smazat
- Zapnout Web, JavaScript
- Vytvořit aplikaci typu PmRtFree
- rozdíl mezi režimem PmRtFree a PmRtTestFree (ukázat)
- Říct, že vše je v PRA souboru
- PmaWorkspace - vysvětlení a ukázka (velikost rámce 20px, 20%, *)
- Vysvětlit PmaRoot, PmaWeb
- použití PmaFolder v PmaRoot a PmaFolder
 
- Vytvořit /Kotelna/Kotel1/Data
- proměnné Teplota (Alt+0176 = °), Vykon, Status - datové typy
 
- Vytvořit /Kotelna/Kotel1/Kotel
- PmgBar, PmgNumber pro Teplota
- PmgSlider, PmgNumber zapnout editaci v místě (pro Vykon)
- netvořit datové vazby v PreCfg - vysvětlit složené Pmg objekty
- formátování dle C

Část 2.

- INFO systém
- Zjišťování chyb v aplikaci, ladění komunikací, DEBUG okno
- Zadání teploty v INFO systému, pro projektanty, ne pro uživatele
- Maximální počet oken = 4 (všechny jsou závislé na hlavním, ale vlastní refresh)
 
- První spuštění aplikace ve Web prohlížeči (localhost, 127.0.0.1)
- vypnout antivir
 
- Co je to objekt na příkladě člověka
- vlastnosti (pro čtení i zápis): věk, pohlaví, výška
(a=obj.Value, obj.Value=12.5)
- parametry vlastností: zub, ale který
(b=obj.vlastnost(parametry))
- metody (můžeme je spustit): jdi s parametrem kam
- události (vyskytují se - informují o stavu objektu): jdi ke dveřím a potvrď, že jsi došel
 
- Časovač /Kotelna/Kotel1/Timer 1 sec
 
- Skript pro změnu teploty
- zvětšit velikost písma
- lokální menu editoru skriptu
- nejdřív průvodce pro odkaz na objekt
- skript bez proměnných - vysvětlení neefektivity skriptu
- if...else, absolutní/relativní cesty
- lokální proměnné - existence, vliv na velikost aplikace
- Průvodce pro JavaScript příkazy (for, var)
- Undo/Redo
- Průvodce
- Zakomentářování skriptu:
// - 1 řádek
nebo blokově
/* před , */ za skript
Příklad:
JavaScriptVyber a zkopíruj do schránky

//pMe.Pm("../Data/#vars/Teplota").Value = pMe.Pm("../Data/#vars/Teplota").Value + 3;

var oTemp = pMe.Pm("../Data/#vars/Teplota");
if (oTemp.Value < 100)
{
//oTemp.Value += 3
oTemp.Value = oTemp.Value + 3;
}
else
oTemp.Value = 0;
 
- Karta "Objekt" (počet proměnných)
- celé školení je v PmFree
- Karta "Události" (dva parametry)
- pMe.Pm - dědění rozhraní

Část 3. - Trendy

- Vytvořit /Kotelna/Kotel1/PmaTrendGroup pro Teplota a Vykon
- PmaTrendGroup pro úschovu a nabízení ale i GetData, statistika, SaveToFile, atd.
- Vytvořit /Kotelna/PanelTrend z Předkonfigurace Pma objektů
- PmgTrendViewer
- Ukázka nastavení trendu v runtime módu, uložení nastavení TG
- Nastavení ve vývojovém prostředí
- Slovně další možnosti (automatické načtení TG při otevření panelu trendů, použití parametrů atd.)

- přesnost času v trendech
- způsob zápisu času (lokální čas/letní čas/ vždy zimní čas)
- v prohlížeči vždy ve správném čase
- lepší je standardní čas
- způsob zápisu - zálohovací (backups) a cyklický (cyclic),
- různé formáty,
NEUKLÁDAT ZMĚNY
- optimalizace zápisu
- jednoduchá dle změny hodnoty
- dle změny "rychlosti změny" hodnoty
- konfigurátor "Necitlivost" = 4 (+2/-2)
- pokud není změna, pak ulož po 3600 s
- zpožděný zápis na disk - počet intervalů z bufferu paměti na disk
- přepnout trendy zpátky na dBase

Část 4.

- PmaPanel
- co to je, parametry, způsoby otevření - příklad
- kdy existují objekty v objektu PmaPanel, jak zjišťovat
- seznam obrazů - Ctrl+O
- v MainPanel vytvořit PmgString (editace na místě hodnoty) a PmgWEdit s vazbou PP na proměnnou Vykon
- skupinové operace pomocí klávesy Shift
- kopírování pomocí klávesy Ctrl
- nejsou vrstvy -> pořadí objektů - klávesa "O" nad aktuálním objektem
 
- Pmg objekty jako objekty
- přístup k Pmg objektům ve skriptu
- proč nepracovat s Pmg objekty v editoru Pma objektů
- nutné zjišťovat, zda panel je otevřený
- pouze pro lokální aplikaci, ne na Webu
- hromadná editace
- PmgObject - předek Pmg objektů
- jak najít kompletní rozhraní Pmg objektu
- Složené Pmg objekty
 
- CreateView
- způsob volání - otevření objektu PmaPanel
- parametry metody
- tlačítko na otevření obrazu
v události onButtonUp:
JavaScriptVyber a zkopíruj do schránky

var oCreator = Pm.CreateView(pMe.PmPanel, "../../PanelTrend", "", "target:main;");
oCreator.Open();
//nebo
Pm.CreateView(pMe.PmPanel, "../Kotel_1/Kotel", "", "target:main;").Open();
- použití v jiných Pmg objektech - událost onMousePress
- v MainPanel obrázek s kotlem, na klinutí otevřít Kotel
dvojklik myší v události onMousePress:
JavaScriptVyber a zkopíruj do schránky

//dvojklik myší
if (pEvent.Action == 2)
Pm.CreateView(pMe.PmPanel, "/Kotelna/Kotel_1/Kotel", "", "target:main;").Open();
- V obraze Kotel vytvořit Button pro ../MainPanel
v události onButtonUp:
JavaScriptVyber a zkopíruj do schránky

Pm.CreateView(pMe.PmPanel, "/MainPanel", "", "target:main;").Open();
 
- Způsoby zadávání vstupních dat do PROMOTIC:
- další způsoby (ukázka se skriptem z dokumentace):
- PmForm, příklad PmgButton + Akce "Otevřít okno formuláře (PmForm)"
- modální okno CreateView, modal:1;)
- do MainPanel vložit panel ModalDlg (Obecné modální okno)
 
- Typy datových vazeb v aplikaci PROMOTIC:
- změna barvy sloupce teploměru - použití vazby
- datová vazba "GP - Datová vazba na vlastnost Pmg objektu" (PmgButtonState, vrtule, plamen - animace povolena)
 
- Seznam Pmg objektů
- PmgRasterImage
- SVG ale i jiné (rastrové) formáty
- kam dávat vlastní obrázky - Resource
- PmgAnimImage
- animovaný GIF
- výhody použití (nenáročný, Web)
- PmgVideo
- multimediální soubory
- nevýhody (CPU, kodeky, Web)
- k čemu používat (videotutoriály)
- PmgPipe - potrubí - zapnout animaci, možnost vazby, Web
- PmgCanvas
- princip + ukázka (např. trojúhelník z Elementárních)
- karta "Draw"
- vždy JavaScript, kdy se provádí
- omezen přístup mimo objekt
- měřiče
- statická vs dynamická část
- grafy, vzduchotechnika

Část 5.

Alarmy/Eventy
- Vytvořit /Kotelna/Kotel1/PmAlarm
- Datová rozšíření typu ExtAlarmAnalog pro teplotu
- výhody a omezení ExtAlarmAnalog
- jeden alarm pro všechny stavy
- když zanikne nelze ani potvrdit
 
- JavaScript
- založit nové proměnné Tlak_1-3 v objektu PmaData (kde teplota), lze trendovat
- generování hodnot tlaků
- cyklus for - průvodce
- switch (ukázat na existujícím ToolBar)
- použít PmaKey (F2)
Příklad 1:
JavaScriptVyber a zkopíruj do schránky

var i;
var oData = pMe.Pm("../Data");
for (i = 1; i < 4; i++)
{
oData.Item("Tlak" + i).Value = Pm.Random(0, 10);
//nutno znát index proměnné v PmaData
//oData.Item(i + 2).Value = Random(0, 10);
}
 
- Datová rozšíření typu ExtAlarmAnalog pro Tlak_1
(Typ deaktivace = 2, meze: 5,10,90,95)
- alarmy ve skriptu
- PmaKey, alarm pro Tlak_2
Příklad 2:
JavaScriptVyber a zkopíruj do schránky

var oData = pMe.Pm("../Data");
var oAlm = pMe.Pm("../Alarms");

if (oData.Item("Tlak_2").Value < 5)
oAlm.ActivateNew("Tlak_2_ll", "alarm0", "Můj kotel č. 1", "Příliš nízký tlak 2 v kotli č. 1", oData.Item("Tlak_2").Value);
else
oAlm.Inactivate("Tlak_2_ll");
 
- Inteligentní metody ActivateNew/Inactivate - Pokud alarm ne/existuje -> ne/vytvoří se
 
- PmgButtonState pro Status
- s ikonou - State0
- zapni/vypni - bit 0
- MAN/AUTO - bit 1
 
- PmgRasterImage (žárovka) - znázornění poruchy kotle - Status, bit 2
- datová vazba T (tabulka)
- datová vazba T (tabulka)
 
- Vytvořit /Kotelna/Kotel1/PmEvent
- Vytvořit Datová rozšíření typu ExtEvent pro Vykon (testuj celou hodnotu, při každé změně)
- Vytvořit Datová rozšíření typu ExtEvent pro Status Bit(0), Zapnutí kotle -> změna na true
- Vytvořit Datová rozšíření typu ExtEvent pro Status Bit(0), Vypnutí kotle -> změna na false
 
- PmaData
- příklad PmaData.Item("...").Value
- lze bez datových vazeb
- Transformační a konverzní metody (ToNumber, TransformValue, ArrayOper, PmBuffer ..)
 
 
- VBScript/VisualBasic vs JavaScript
- Co je to objekt: vlastnosti/metody/události
- Jak s nimi pracovat v systému PROMOTIC
- Parametry metod s () - metoda vrací hodnoty, a bez () - metoda nevrací hodnoty
- Jazyk VBScript
- Podmnožina VB = omezení -> proto globální objekt Pm
- Globální objekt Pm, metoda Pm.Debug v objektu PmaTimer
Příklad3:
JavaScriptVyber a zkopíruj do schránky

Pm.Debug("čas:" + Pm.Time);
-
- Dokumentace PROMOTIC
- úplný index
- v příkladech jsou odkazy na metody/vlastnosti
- název vlastnosti nebo metody - přímý odkaz do dokumentace
 
- Globální metody a proměnné
- vytvoření metody "Add" se dvěma parametry
Debug v těle metody:
JavaScriptVyber a zkopíruj do schránky

var a = 3;
var b = 4;
var c = a + b;
Pm.Debug("Metoda 'Add':" + c, 2);
return c;
volání metody v objektu PmaKey:
JavaScriptVyber a zkopíruj do schránky

//- bez návratové hodnoty
Pm.Methods.Add(3.14159, 2.78456);

//- s návratovou hodnotou
Pm.Debug("PmaKey-add:" + Pm.Methods.Add(2, 5.3));
 
- PmaFolder Methods
v PmaPanel Kotel vytvořit metodu GetData
Příklad 3:
JavaScriptVyber a zkopíruj do schránky

var i;
var aValues = Pm.CreatePmArray().Create(30);
for (i = 0; i < 30; i++)
aValues.SetItem(Pm.Random(0, 100), i);
return aValues;
 
- PmaPanel Methods
tlačítko v obraze volající metodu pro různé testy (onButtonUp)
Příklad 4:
JavaScriptVyber a zkopíruj do schránky

var aRes = pMe.PmPanel.Methods.GetData();
if (Pm.IsValid(aRes))
{
Pm.Debug(aRes, 1);
Pm.Debug("Value 0: " + aRes.GetItem(0), 2);
}
 
- jsou funkční ve Web aplikacích
- jak volat takové metody (aplikace vs. panel)
 
- Řízení přístupu
- skupiny uživatelů
- definice uživatelů
- systémové skupiny, uživatelé
- výchozí nastavení aplikace
- po startu useroper - proč
- ukázka jak to funguje bez toho
- Karta "Oprávnění"
- mají objekty, u kterých to má smysl
- vše co jde do Webu
- řízení přístupu v Pmg objektech
- v tlačítku zapni/vypni, Ovládaní povoleno - UP - Datová vazba na vlastnost přihlášeného uživatele / TestInGroup("$ADMIN")
 

Část 6. - Komunikace

- Pm.FileText...
- zdůraznit: nepoužívat absolutní cesty ale PROMOTIC cesta k souborům nebo složkám
- INI soubor (IniFileRead, IniFileWrite)
- textový soubor (FileTextRead, FileTextWrite)
- binární soubor (PmBuffer.LoadFromFile, PmBuffer.SaveToFile) - viz příklad v dokumentaci (DLL, PmaComm)
- PmaDll
- kontejner pro samotnou DLL knihovnu, vlastnost Fce
- umí pouze volání funkcí, nepodporuje události
- PmaActiveX
- kontejner pro samotnou knihovnu ActiveX, vlastnost Acx
- umí vlastnosti, metody i události ActiveX knihovny
- ExtDdeClient
(DDE jen zmínit)
- ExtOpcDa
- čtení dat z OPC -> po navázaní spojení PROMOTIC čeká na data, u kterých došlo ke změně - ty budou zaslány z paměti CACHE
- zápis dat do OPC -> PROMOTIC zapisuje skrz OPC (tunel) přímo do zařízení a to vrací hodnotu do paměti CACHE
- ukázat na Graybox OPC simulátoru
- pro Tlak_2 přidat rozšíření OpcDa, Item ID: numeric.sin.double, k:1, d:2, q:50
- dále dodat rozšíření Trend
- PmaComm, Ethernet
- Dokumentace a návody na komunikaci (Allen-Bradley, Simatic, ADAM, ...)
- vysvětlení datové vazby
- Praktická ukázka na PreCfg Komunikace protokolem Modbus TCP/IP s měřičem TH2E
- IP addr: 192.168.3.240

Část 7.

- Parametry + PmaPrototype/PmaInstance
- Jak na aplikace, které obsahují více stejných objektů (kotlů)
- Vytvořit vždy novou strukturu - pracné, neefektivní
- Kopie + úprava parametrů
- Rychlejší, nutnost pamatovat co všechno upravit
- Parametrizace
- jako výše, ale jednodušší množení
- potíž při dodatečné změně
- Prototypy/instance - vyšší úroveň
- snadné dodatečné změny
- (téměř) stejné objekty (dle parametrů)
- Parametry Pma objektů
- ukázka na folderu Kotel1
- parametrizovat PmaPanel, PmaData, PmaTrendGroup, PmaAlarmGroup,... (název pro zobrazení, ID skupiny, Web adresy atd.)
- parametrizovat skript v objektu PmaTimer
Příklad:
JavaScriptVyber a zkopíruj do schránky

var nInt = Pm.ToNumber(pMe.GetPar("boil"));
var oTemp = pMe.Pm("../Data/#vars/Teplota");

if (oTemp.Value < 100)
oTemp.Value = oTemp.Value + nInt + 2;
else
oTemp.Value = 0;

Pm.Debug("Now: " + Pm.Time);
 
- Kopie Kotel1 na Kotel2 se změnou parametru - použití parametrů v PmaPrototype/PmaInstance
- Obsah folderu Kotel1 zkopírovat do prototypu Kotel_Vzor
- Vytvořit několik instancí kotle
- P/I v DEVELOP vs RT (kdy je jaký obsah)
- Parametry Pmg objektů
- Parametry se vyhodnocují při překladu
- v ../Kotelna/ vytvořit PmaPanel "Kotelna"
- v něm vytvořit inteligentní kotel (teplota, název, kliknutí atd.)
$.join($.text("appxxx","boiler"),$.par("boil"))
- vícejazyčná aplikace / editace pomocí Total Commander atd.
- kopírování + změna parametrů
- grafické prototypy/instance
- rozdíly vůči Proto/Inst v Edit.Apl
- inteligentní kotel přenést do PmgPrototype
- nezapomenout na odstranění parametrů z kotle
- zavést parametr do prototypu/instance boil:0;
- vytvoření X instancí vč. změny hodnoty parametru (pro každý kotel)
- ukázka snadné změny Pmg objektu
 
- Tenký klient
- principy vytváření Web aplikací
- ve skriptech Pmg objektů nejsou dostupné Pma objekty
- aplikace lokálně (na serveru), obraz (panel) u klienta
- přístup možný pouze pomocí metod panelu
- pro jiné Web prohlížeče nutno panel do JavaScript, všechny skripty se musí přepsát do JavaScriptu
- Tlustý klient
- Data/Web klient
- Koncepce jak dělat PROMOTIC aplikace
- 2 aplikace - komunikační a vizualizační
- v jednom projektu 2 foldry - logika a komunikace
- pak ve 3. folderu lze udělat emulace komunikace a zakazovat objekty
- Souhrnný seznam Pma objektů
- Bezpečnostní komponenty:

Část 8. - Práce s databázemi

- Nic se nevytváří, pouze povídání
- Příklady na hotových aplikacích
- Rozdělení databází (souborové vs serverové)
- Základy práce s DB
- otevření databáze, tabulky, zavření DB, TBL
- pohyb v tabulce
- proč nepoužívat Move a MoveTo
- přístup k hodnotám záznamu (FieldValues, Fields)
- základní SQL příkaz typu select
- jazyk SQL - musí se naučit mimo školení PROMOTIC
- transakce - co to je, jak se to používá
- bez příkladu
- Objekt PmaAdo
- vlastnost ADO ConnectionString - kde lze najít
- Microsoft objekty dostupné v PROMOTIC
- odchytávání chyb u Ado
- Příklady práce s DB
- aplikace Examples/Others/AppDb
- aplikace "Příklady v aplikaci" z Welcome obrazovky

Část 9. - Obchodní část

- Ceník systému PROMOTIC
- Verze PROMOTIC
- jedna instalace = DEVELOP/RT/FREE
- stabilní vs vývojové verze
- rozšíření RT licencí
- pouze Web/Data klienti prodáváni na kusy, ostatní licence ANO/NE
- distribuce licencí
- HW klíč
- SW klíč s kontrolou HW - nestandard, nevýhody
- NET key - jak používat
- rozšíření licence
- PmUpgrade10
- pouze když chce rozšířit nebo nový PROMOTIC
- RT funguje bez časového omezení
- Služby
- tech. support (placený vs neplacený)
- aplikace
- různé stadium rozpracovanosti
- https://www.promotic.eu
- aktuální verze PROMOTIC + letáky
- bez registrace
- e-shop
- on-line dokumentace vždy k poslední verzi
- nabídka služeb
- kontakty
- naše kontakty
- distributoři
- integrátoři
- reference
Navigace:
 
 
- Manuál pro školitele systému PROMOTIC
 
 
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice