I.L. Programování Mosaic 12. 6. 2024 11:08 10. 5. 2021 12:32

Narazil jsem na divné chování WebMakeru, když jsem v jednom projektu omylem inicializoval String[20] řetězcem délky 21 končícím mezerou.

Přikládám ořezaný projekt a obrázek, který to demonstruje.

Děje se to v softwarovém PLC i na fyzické CP-2090, ale ne přímo v simulátoru stránek přímo v Mosaicu.

Odpovědi 2

M.B. 10. 5. 2021 12:12

Problém způsobuje chyba v překladači, která povoluje inicializaci delší, než je prostor vyhrazený na data textového řetězce. Řetězce jsou v PLC ukončovány binární nulou. Aby bylo možné řetězec ukončit i v případě, že má maximální délku, je v registrech vyhrazen prostor o jeden bajt větší. V tomto případě překladač chybně vyhodnotil maximální délku inicializace a přepsal i bajt vyhrazený na koncovou nulu. Chybějící koncová nula, pak způsobuje špatné zobrazení řetězce na webových stránkách (jsou vypsáno data, která leží v paměti za řetězcem, až do místa, kde se narazí na binární nulu nebo se dosáhne 255 znaků). V simulaci se problém neprojevuje jen díky tomu, jakým způsoben Mosaic získává z PLC data.

Omlouváme se za způsobené potíže, chybu se pokusíme co nejdříve odstranit.

I.L. 10. 5. 2021 12:32

Díky. My to samozřejmě nepotřebujeme asap, naše stringy jsem zkrátil...

Tento dotaz je vyřešený.