Artur Programování Mosaic 24. 3. 2023 18:39 29. 3. 2023 17:28

Dobrý den, 

měl bych dva dotazy:

1)

Pokouším se do existující skupiny projektů vložit další projekt, ale neúspěšně. Konkrétně se mi sice podaří vložit projekt nicméně jak ho přidám do skupiny tak už nejde zkompilovat a vypadá to jako by se ztratily nadefinované proměnné. Projekt vkládám v Mosaicu v levém okně na záložce "Skupiny Projektů" pomocí tlačítka "Importovat existující projekt". V příloze posílám screenshoty co se přihodí po přidání projektu. Jedná se o PLC TC700. Jak toto vyřešit??

2)

Přidávání proměnných v programu. Jde o to, že mám hotový PLC SW, k němu dodělanou SCADU která se kouká na proměnné v PLC a vše chodí jak má. No a najednou si vzpomenu, že potřebuji přidat retainovanou proměnou. Tak ji vytvořím pomocí "Definice proměnné", zkompiluji a nahraji SW do PLC.. No a co se nestane... Pro všechny proměnné se změní offset adres v paměti PLC a pokud se podívám do SCADy tak vidím samé nesmysly (což je logické protože nesedí adresy proměnných v PLC vs SCADA) a musím u VŠECH proměnných ve SCADě upravit adresy.. Je to velmi nepříjemná komplikace (obzvláště když jich je třeba 200) a občas se to stane i když přidám jinou proměnnou ne jen retainovanou.. Jde toto chování kompilátoru nějak ošetřit nebo je to prostě vlastnost? Upřímně řečeno jste první výrobce PLC kde jsem se s tímto setkal a to už jsem pár konkurenčních PLC nasoftil...

Předem děkuji za odpovědi. 

Odpovědi 2

Luboš Urban 29. 3. 2023 16:54

Přidání projektu proběhne v pořádku, problém ale způsobí soubory, které leží mimo něj v adresáři projektové skupiny. Konkrétně jde o operátorský panel. V projektu panel připojujete v manažeru přes konfiguraci sítě a když porovnáte ten předchozí projekt s tím naimportovaným, tak uvidíte že se tato konfigurace nepřenesla. V naimportovaném projektu musíte tedy v projektovém manažeru ručně přidat operátorský panel, připojit ho na správné rozhraní TC700 a ten panel musí být pojmenovaný stejně jako v původním projektu, aby se ta symbolická označení proměnných odvozená od názvu propojila s těmi původními proměnnými v naimportovaném projektu. Když to nepůjde, pošlete mi zaarchivovaný ten projekt  na podpora@tecomat.cz a my vám ho zprovozníme, aby šel přeložit.

 

Luboš Urban 29. 3. 2023 17:28

Při přidávání proměnných do programu kompilátor postupně obsazuje volné adresy tak, jak překládá kód a nachází nové deklarace proměnných. Když budete mít soubor s deklaracemi proměnných a přidáte novou proměnnou doprostřed seznamu, tak se všechny proměnné umístěné za ní přesunou na vyšší adresy. Navíc u TC700 byla paměť organizovaná tak, že zálohované proměnné (tedy ty deklarované jako VAR_GLOBAL RETAIN) ležely v zóně umístněné na začátku paměti od adresy 0 a ty nezálohované se pak umísťovaly až za tuto zónu zase od první volné adresy. To je vlastnost a s tím se nic udělat nedá.

Když chceme umístit proměnnou na určitou konkrétní adresu a nehýbat s ní, můžeme využít v deklaraci klíčové slovo AT  a proměnnou na té adrese zafixovat, např.:

room1rqTempCooling AT %R49145 : REAL := 22.0;

Fixace proměnné na adresu

Obecně platí, že proměnné, které zveřejňujeme pro Relianci, přidáváme do *.pub souboru označením direktivou {PUBLIC}. Soubor pak můžeme naimportovat do Reliance. Když se nezmění jména proměnných, ale dojde k posunu adres, tak si Reliance podle platného pub souboru přidělení adres opraví a není potřeba každou proměnnou opravovat ručně, stačí znovu naimportovat ten pub soubor.

Vaše odpověď

Pro vložení odpovědi je nezbytné být přihlášený. Pokračujte na přihlášení.