by Tomáš Bräuer » Tue 30. Apr 2013 14:30:38
Dobrý den!
Jestli jsem to pochopil, tak máte jednu proměnnou, která reprezentuje vlastní alarm (nejspíše bool ano/ne , 0/1) a ve druhé proměnné máte doprovodnou informaci, kterou chcete zobrazit v daném alarmu.
Řešení je asi více např:
1) Ovládat alarm skriptem. Kdykoliv získáte novou hodnotu proměnné s alarmem (na konci komunikace nebo v události onItemAfterWrite) zavoláte buď ActivateNew nebo Inactivate podle proměnné. Text alarmu si můžete složit dle libosti.
2) Datové rozšíření AlBinary. V konfigurátoru pro text alarmu můžete napsat makro výraz. Důležité je, že makro výraz se vyhodnotí při každé změně alarmu vždy znova (v dokumentaci postaru uvedeno že jenom při startu aplikace, od 8.2.6 se vyhodnocuje vždy). Problémem je, že v makro výrazu $.expr se dá odkázat pouze pomocí pDE.var na proměnnou vlastního rozšíření, ne na jiný Var v PmData. Mohl byste např hodnotu přenášet v poznámce proměnné Var.Note, která je RW. To by znamelo v onItemAfterWrite pro tu druhou proměnnou zkopírovat její novou hodnotu do poznámky té první proměnné. Potom by text alarmu mohl být např
$.join("Muj text alarmu: moje poznamka=",$.expr("pDE.var.Note"))
Skriptové řešení je asi čistější. V obou případech ale musíte zajistit, že se nejprve změní pomocná proměnná (takt) a potom hlavní proměnná (alarm), aby při vzniku alarmu už byla pomocná proměnná v novém stavu a ne o krok pozadu. Pokud kopírujete data skriptem po komunikaci ze zdroje (komunikace) do cíle (PmData), pak je stačí kopírovat v pořadí pomocná a potom hlavní.