A partir de la version V2.3.56, la compilation d’anciens projets peut entraîner le problème suivant : un temporisateur placé par le compilateur dans une zone maintenue, dans une version antérieure, est affecté à la zone non maintenue à partir de la version V2.3.56.
Ce problème peut apparaître, car à partir de la version V2.3.56, vous avez la possibilité d’affecter des instances de blocs fonctions aux zones maintenues ou non maintenues. Le compilateur affecte un temporisateur système de la fin de la zone mémoire du temporisateur (registres système 5 - 1) au début de la zone maintenue (registre système 6) à chaque instance VAR_RETAIN du bloc fonction ‘TM_xxxs_FB’. A chaque instance de la classe VAR, le compilateur affecte un temporisateur système de la fin de la zone non maintenue (valeur des registres système 6 - 1) à 0.
Si les registres système 5 et 6 sont paramétrés comme dans l’exemple ci-dessous, le problème mentionné ci-dessus apparaît. Vous devez alors modifier les registres système 5 ou 6, ou la classe de l’instance du bloc fonction.
Dans une version antérieure à V2.3.56, le numéro 2999 a été affecté au temporisateur. Ce numéro est situé dans la zone maintenue. A partir de la version V2.3.56, le compilateur essaie d’affecter le temporisateur à la zone non maintenue. Le compilateur affecte le numéro 2499.
Solution : Modifiez la classe dans l’en-tête du programme pour que l’instance soit affectée à la zone maintenue.