Bikeprincess_ Programování Mosaic 1. 9. 2026 14:34 1. 9. 2026 16:50

Narazil jsem na zajímavou vlastnost v CFC a bylo to na více místech s různými bloky. Je to jakoby nebylo přesně definovaná posloupnost volání bloků v CFC a né vždy se to chová stejně.

Viz. přiložený snímek (a ano, nemusí to tak být, ale je to pro demonstraci). Předpokládal bych, že se prvně vykoná blok SUB a až pak MOVE, ale stalo se, že tam byla přetečená hodnota, což nasvědčuje tomu, že se vykonal prvně MOVE a pak až SUB.

Podobně se stalo, že byly 2 MOVE za sebou, kde to fungovalo jako FIFO. Tam to bylo ale pro LREAL. Tam to tedy někdy fungovalo správně a někdy ne (z toho, co jsem vypozoroval, tak to bylo každé druhé volání). Tam to způsobilo, že proměnná pak obsahovala nesmysly s vysokými exponenty, ale nebylo to vždy stejné. Když jsem to přepsal do ST, tak to fungovalo bez problému.

Odpovědi 2

Luboš Urban 1. 9. 2026 14:34

Když se přepnete/kliknete do okna editoru CFC a stisknete Ctrl+F2, resp. si stejnou funkci zvolíte v lokálním menu přes pravé tlačítko myši, v pravém horním rohu každé instance funkčního bloku a také u každého výstupního elementu se objeví pořadové číslo a bude z něj patrné, v jakém pořadí se zpracovávají a kdy se do proměnné zapíše. Při překreslení schématu se může pořadí změnit. Toto pořadí odpovídá tomu, jak jsou jednotlivé instrukce přepsány do textové podoby (což můžete prověřit, když si otevřete CFC soubor v běžném textovém editoru).

Bikeprincess_ 1. 9. 2026 16:50

Zkusil jsem to nasimulovat a je to tedy opravdu jinak ta posloupnost. Jak je to možné? 😱

Přiložil jsem také část, kde byl problém s tím každým 2 voláním a tam to vypadá dobře, ale není to funkční.

Vaše odpověď

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