From version V2.3.56 and higher, compiling old projects can lead to the following problems: A timer that was placed in a holding area in an earlier version by the compiler is assigned to the non-holding area beginning with Version V2.3.56.
The reason for this is that, beginning with version V2.3.56, you can assign function block instances to the holding or non-holding areas. Thereby the compiler assigns a system timer from the end of the timer’s memory area (system registers 5 - 1) to the beginning of the holding area (system register 6) for each VAR_RETAIN instance of the function block ‘TM_xxxs_FB’. For each instance of the class VAR the compiler assigns a system timer from the end of the non-holding area (value of system registers 6 - 1) up to 0.
If the system registers 5 and 6 are set as in the example below, the effects described above occur. System registers 5 or 6 must be adjusted accordingly or the class of the function block instance changed.
In a version earlier than V2.3.56, the timer was assigned the number 2999, which lies in the holding area. Beginning with version V2.3.56, the compiler tries to assign the timer to the non-holding area. The compiler assigns the number 2499.
Solution: Change the class in the program header to have the instance assigned to the holding area.