从版本V2.3.56开始,编译旧项目时可能出现以下错误信息。
[错误:没有为编译器保留足够的'计数器保持'。请更改系统寄存器5或6。]或[错误:没有为编译器保留足够的'计数器非保持'。请更改系统寄存器5或6。]
原因是从版本V2.3.56开始,可以将功能块实例分配给保持区域或非保持区域。因此,对于功能块CT_FB的每个VAR_RETAIN实例,编译器从定时器/计数器的区域分配一个系统计数器,从上限值直到保持区域的开头(系统寄存器6)。对于类别VAR的每个实例,编译器分配一个系统计数器,从非保持区域的末尾(系统寄存器6 - 1的值)直到计数器的开始数字(系统寄存器5)。如果设置了系统寄存器5或6,使得要分配的区域不可用,则会出现上面列出的错误信息之一。必须相应调整系统寄存器5或6,或者更改功能块实例的类别。
在早于V2.3.56的版本中,计数器被分配到位于保持区域的编号3071。从版本V2.3.56开始,编译器尝试将计数器分配到非保持区域。但是,在系统寄存器5或6中被阻止。
解决方案:更改系统寄存器5或6,为计数器打开非保持区域
或者
更改程序头中的类别以将实例分配给保持区域。