----在找答案区看到一个贴子
将SIMOTION 需要掉电保持的数据单元变量定义为保持性变量,即将程序单元变量(interface或implementation)定义为VAR_GLOBAL_RETAIN数据类型,将全局变量(Global device variables)设置为RETAIN;
想永久保存可通过一下两种方法:
① 加电池模块,可保持3年以上;
② 通过系统数据存储指令进行数据保存,在SIMOTION掉电之前,将变量中的数据保存至CF卡,SIMOTION上电后再从CF卡将数据读取出来。
关于SIMOTION D数据存储,请参考以下文档
http://www2.ad.siemens.com.cn/download/Upload/MC/application/A0255.pdf
---------------------------------------------------------------------------------------------------------------------------
于是读了参考文档并做了如下试验(ST编程),出现一些疑问
1、在Global device variables中可以将数据定义为RETAIN,但新建一个UNIT并在INTERFACE中定义变量使用VAR_GLOBAL_RETAIN 时不识别此指令,应该如何来指定数据为RETAIN呢?
2、使用_SAVEUNITDATASET函数将数据保存在CF卡中,调用函数的返回值是什么类型?EnumDeviceUnitDataSetCommand还是StructRetUnitDataSetCommand,按照帮助文档上的数据类型应为第一个,但编译是出现“Type conflict in the expression at ""s_myRetStructRetUnitDataSetCommand" :="; conversion from "StructRetUnitDataSetCommand" to "EnumDeviceUnitDataSetCommand" is not possible;
3、unitName的数据类型为string,可以为新建的UNIT的名称,但是如果数据是建在Global device variables 中的,这个输入值应如何填写?填入“Global device variables”是不行的。
4、ID值为DINT类型的,应填入“Number of the data set”,在这里应该填入什么值?
有使用过此功能的老师,请给予指教。