M.D. Programování Mosaic 3. 2. 2023 9:28 3. 2. 2023 9:00

Dobrý den,

Mám problém s přidáním knihovny GSMLib (v4.0). Vždy, když knihovnu přidám a spustím kompilaci, tak vyhlásí dvě chyby níže. 

0    :[Xpro:Fatální] SYSGEN\JTEKT_VZT$2.MAS (4090): prostor dat 'D' přeplněn

1    :[Xpro:Fatální] SYSGEN\JTEKT_VZT$2.MAS (4090): proces 'P 0' není vytvořen

Můžete mi prosím poradit, čím by to mohlo být způsobeno? Knihovny jsem zkoušel updatovat, takže by měli být aktuální. Verze Mosaic je 2022.2

Ještě posílám screenshot po kompilaci. Předem moc děkuji.

Odpovědi 4

Luboš Urban 1. 2. 2023 20:13

Do prostoru dat D si systém ukládá různé inicializace, konstanty, které jsou pevně dané a nebude se do nich sahat, proto by zbytečně zabíraly místo v paměti proměnných. Ve vašem případě si tam knihovna GSMLib dává ty tabulky pro překódování textu z jedné znakové sady do jiné. Té paměti je omezené množství a liší se to podle typu centrální jednotky. U Foxtrotu by jí mělo být 42 kB, přičemž knihovna GSMLib spotřebuje asi 4 kB. Co obsadilo zbývajících 90 % té paměti se z toho obrázku poznat nedá.

Každopádně se potřebná data do té paměti nevejdou, proto nejde dokončit překlad a důsledkem toho je ta chyba na druhém řádku. Cesta z toho ven je taková, že mi pošlete zaarchivovaný projekt na urban@tecomat.cz, podíváme se, co tu paměť %D obsadilo, jestli by se obsah nedal někam přesunout, něco vypustit a zoptimalizovat tak, aby se program dal přeložit. Buď to půjde nebo v opačném případě prostě budete muset respektovat to, že se program do paměti toho konkrétního systému už nevejde.

M.D. 2. 2. 2023 10:10

Dobrý den,

Děkuji za odpověď a vysvětlení. Zákazník má u sebe PLC CP-7003. (PLC měnit nechce) V HW konfiguraci jsem koukal, že je u procesoru v DataBox settings velikost 3072kB. Tato paměť tedy předpokládám, že asi není určená pouze pro prostor dat D? Protože když jsem se díval do informací o programu, tak bez přidané GSM knihovny je v 'D' Tabulce zabraných 16%(333bytes). Lze nějak tento prostor ještě rozšířit, nebo je to takto pevně dané?

Popřípadě mám tedy zasílat SW na váš mail pro optimalizaci, nebo to nemá cenu, když je ta knihovna prakticky 2x větší, než prostor dat? 

Luboš Urban 2. 2. 2023 17:23

Dobrý den,

tím je vysvětleno vše. Centrální jednotky CP-7003 jsou hodně staré a knihovna GSMLib je na těchto centrálách použitelná jen do verze 1.5. Pozdější verze knihovny už nejsou s těmito jednotkami kompatibilní. I kdyby se ty konverzní tabulky do paměti vešly, stejně by ten program nešel přeložit. Knihovnu v.1.5 posílám zazipovanou v příloze, můžete vyzkoušet, jestli to s ní půjde, jestli si pro změnu bude rozumět  s dnešními modemy.

Ještě pro doplnění, Databox je rozšiřující paměť do centrálních jednotek, ale s tou pamětí D souvislost nemá. Paměť D je jakýsi vyhrazený prostor v paměti registrů, kam se ukládají inicializační hodnoty složitějších proměnných, např. u proměnných typu string, polí apod. To je vidět třeba na té konverzní tabulce s převody z jedné kódové stránky do druhé. Ta je konstantní, měnit se nikdy nebude a proto patří sem. A k té rozšiřitelnosti, velikost pamětí X, Y R, D apod. je pro konkrétní centrální jednotky také pevně daná. 

M.D. 3. 2. 2023 9:00

Dobrý den,

Dnes jsem zkusil importovat knihovnu, co jste mi poslal a program zkompilovat jde. Modem u zákazníka také není nový, takže předpokládám, že to fungovat bude. 

Děkuji za zaslání staré verze knihovny a za vysvětlení Databoxu s pamětí.

Tento dotaz je vyřešený.