A partire dalla versione V2.3.56 possono essere emessi i seguenti messaggi di errore quando vengono compilati vecchi progetti.
Errore: 'Counter ritentivi' riservati per il compilatore insufficienti. Modificare il registro di sistema 5 o 6. oppure Errore: 'Counter non ritentivi' riservati per il compilatore insufficienti. Modificare i registri di sistema 5 o 6.
Il motivo sta nel fatto che iniziando con la versione V2.3.56 potete allocare istanze di Function Block alle aree ritentive o non ritentive. Nel farlo il compilatore alloca un contatore di sistema dall'area per timer/counter a partire dal limite superiore fino all'inizio dell'area ritentiva (registro di sistema 6) per ogni istanza VAR_RETAIN del Function Block CT_FB. Per ciascuna istanza della classe VAR il compilatore alloca un contatore di sistema dalla fine dell'area non ritentiva (valore dei registri di sistema 6 - 1) fino al numero iniziale per il contatore (registro di sistema 5). Se i registri di sistema 5 o 6 sono impostati in modo tale per cui l'area da allocare non è disponibile, si verifica uno degli errori elencati sopra. I registri di sistema 5 o 6 devono essere adeguati opportunamente oppure si deve cambiare la classe dell'istanza del Function Block.
In una versione precedente alla V2.3.56, al contatore era allocato il numero 3071, che si trova nell'area ritentiva. A partire dalla versione V2.3.56, il compilatore cerca di allocare il contatore all'area non ritentiva. Comunque è nascosto nei registri di sistema 5 o 6.
Soluzione: cambiare i registri di sistema 5 o 6 per aprire aree non ritentive per il contatore
o
Cambiare la classe nell'intestazione del programma affinché l'istanza sia allocata all'area ritentiva.