Dynamické přidávaní prvků do PmaCommGroup

V tomto fóru můžete hlásit nalezené chyby, dávat návrhy na vylepšení vývojářům PROMOTIC SCADA software a vkládat ostatní témata.

Dynamické přidávaní prvků do PmaCommGroup

Postby rseb » Tue 08. Mar 2022 10:19:07

Dobrý den,
obracím se na Vás s dotazem, zda-li by nebylo možné implementovat dynamické přidávání prvků do objektu PmaCommGroup podobně jako to je u PmaDataTable.
Děkuji
rseb
 
Posts: 11
Joined: Tue 05. Apr 2016 16:39:01

Re: Dynamické přidávaní prvků do PmaCommGroup

Postby Petr Návrat » Tue 08. Mar 2022 11:09:18

Dobrý den
Skutečné dynamické přídávání proměnných do PmaCommGroup: to zatím není možné implementovat a ani o tom neuvažujeme.
O čem uvažujeme je spíš opak: dynamické zakazování proměnných.
Tzn v aplikaci byste si definoval maximalní počet proměnných ale v runtime byste pak mohl vybrané proměnné zakázat (aby se komunikačně nepřenášely atd.)

Bylo by dobré kdybyste více sdělil jaké máte praktické potřeby toto dělat.
Petr Návrat
Petr Návrat
Administrátor
 
Posts: 77
Joined: Thu 13. Dec 2012 14:32:08

Re: Dynamické přidávaní prvků do PmaCommGroup

Postby rseb » Tue 08. Mar 2022 12:10:00

Jedná se o mi o to, aby bylo možné inicializovat proměnné v komunikaci dynamicky při startu aplikace z externího cfg souboru,
tak aby nebyla nutná úprava aplikace při přidání dat.
Jako příklad bych uvedl aplikaci realizující konverzi dvou protokolu, tj. s daty se vždy pracuje stejně, jen jich je různý počet s různými parametry.

Dynamické zakazování by tuto situaci moc neřešilo.
rseb
 
Posts: 11
Joined: Tue 05. Apr 2016 16:39:01

Re: Dynamické přidávaní prvků do PmaCommGroup

Postby Petr Návrat » Tue 08. Mar 2022 12:53:06

Takže nechcete dynamické přidávání za běhu runtime ale jen při spuštění aplikace.
To lze udělat následujícím postupem:

1. Komunikační proměnné nebudete definovat v PmaCommGroup ale v PmaData s tím že budou mít datové rozšíření pro komunikaci
viz https://www.promotic.eu/cz/pmdoc/Objects/Others/PmVar/DExtn/ExtComm/ExtComm.htm

2. Vytvoříte si maximální počet objektů PmaData, každý s 1 proměnnou (nebo s více proměnnými pokud se proměnné přidávají ve skupinách)
Každá proměnná bude mít datové rozšíření ExtComm a toto rozšíření bude parametrizováno makro výrazem $.cfgfile
viz https://www.promotic.eu/cz/pmdoc/Directions/Macro/MacroCfgfile.htm

3. Každý takový objekt PmaData bude mít nastaven konfigurátor "Zakázat objekt při spuštění" opět pomocí makro výrazy $.cfgfile
viz https://www.promotic.eu/cz/pmdoc/Objects/Pma/PmaObject/Cfg/Object.htm

Tak se při spuštění aplikace vytvoří např. jen 5 objektů PmaData (ze 100 možných objektů)
a každý se zinicializuje podle obsahu konfiguračního souboru.
Každá proměnná těchto objektů se zaregistruje do PmaCommGroup, tzn jednou bude v PmaCommGroup 5 proměnných a jindy třeba 100.

Pozn1: Pravděpodobně by bylo lepší místo 100 objektů PmaData vytvořit jeden PmaPrototype a 100 PmaInstance.
Pozn2: Do budoucna plánujeme zobecnit PmaInstance tak že by se nemuselo vytvářet 100 objektů PmaInstance ale parametrem v Cfg souboru by se 1 instance "roznásobila sama".
Petr Návrat
Administrátor
 
Posts: 77
Joined: Thu 13. Dec 2012 14:32:08

Re: Dynamické přidávaní prvků do PmaCommGroup

Postby rseb » Wed 09. Mar 2022 10:31:19

Děkuji za odpověď.
Toto je do jisté míry použitelné, ovšem má to svá omezení:
- Pořád jsem omezen nějakým statickým počtem, který si dříve vydefinuju
- u vytvoření PmaData bych musel do předu vědět datové typy položek

Usuzuji, že chci po promoticu věci, na které není stavěny...

Děkuji.
rseb
 
Posts: 11
Joined: Tue 05. Apr 2016 16:39:01


Return to Hlášení chyb, návrhy na vylepšení, ostatní...

Who is online

Users browsing this forum: No registered users and 2 guests