在 CodeSys手册中,我们可以读到:
"如果将功能块中的局部变量声明为 RETAIN,CODESYS 会将这个功能块的完整实例存储在 Retain 范围内(功能块的所有数据);但是,只有声明的 RETAIN 变量会被这样处理。 "
但是真的有人测试过吗?我创建了一个只有以下变量的功能块:
VAR
Test1: ARRAY[1..50] OF UINT; //100 bytes
END_VAR
VAR RETAIN
Test2: ARRAY[1..50] OF DINT; //200 bytes
END_VAR
我的程序只实现了这个功能块的一个实例。在运行时使用SIZEOF
显示功能块大小为 312 字节
现在,如果我右键单击设备,然后转到“设备内存信息”,我的保留数据的大小只有 203 字节。
如果功能块的完整实例存储在保留范围中,我希望保留数据大小与功能块大小(312 字节)相同,但事实并非如此,它只有 203 字节(大小保留数据)。说明书有误吗?