From OpenSCADAWiki
Q: Как я могу сохранить-восстановить модифицированные данные на логическом уровне?
Re: Действительно, иногда может понадобиться сохранение и затем восстановление, в основном при перезапуске, некоторых модифицированных динамических данных вроде счётчиков пробега оборудования. В целом, обработку такого рода источников данных и оборудования нужно осуществлять на логическом уровне подсистемы "Сбор данных", а реализовать её можно многими путями, предусматривающими сохранение данных на некотором хранилище и последующее их восстановление, однако наиболее известные способы это:
- Периодическое, или при завершении, сохранение контекста параметров шаблона с помощью запроса пользовательского API OpenSCADA через cntrReq(), где "force" для принудительного сохранения немодифицированных параметров:
SYS.cntrReq(SYS.XMLNode("save").setAttr("path",this.nodePath()+"/%2fobj").setAttr("force","1"));
- Если атрибут шаблона со счётчиком архивируется тогда при старте параметра Вы можете получить последнее значение из этого архива, например, так:
if(f_start) prevArchRestore = false;
if(!prevArchRestore && (archEnd=this.cntr.arch().end("FSArch.1s"))) {
SYS.messInfo("testArch", "val="+this.cntr.arch().getVal(archEnd)+"; "
"val1="+this.cntr.arch().getVal(archEnd,false,"FSArch.1s")+"; "
"val2="+this.cntr.get(archEnd/1000000,archEnd%1000000));
cntr = this.cntr.arch().getVal(archEnd);
prevArchRestore = true;
}
- Создание специальной таблицы БД и запись/чтение этих данных прямо в эту таблицу посредством SQL-запросов через SQLReq().