УкраїнськаEnglishmRussian
Вход/Новый
В теме много сообщений

Формат файлов архивов


Автор Сообщение
Сообщение создано: 30. 01. 2019 [07:19]
vV_2738JJ
vV 2738JJ
Создатель темы
Зарегистрирован(а) с: 30.01.2019
Сообщения: 6
Добрый день,
В конфигураторе OpenScada пункт Архивы/Модуль/Архиватор на файловую систему, вкладка Архивы есть возможность экспорта архивов в форматах ascii и wav.
В формате ascii выводится перечень параметров без указания меток времени.
Формат wav - RIFF WAVEfmt - звуковой? Или его каким то образом можно просмотреть?
И есть ли возможность вывести ascii с метками времени?
Сообщение создано: 30. 01. 2019 [11:49]
arcsin
Аркадий Кисель
Contributor
Зарегистрирован(а) с: 17.02.2017
Сообщения: 77
Добрый день! Вот игрался с экспротом в wav файл. формат звуковой.
openscada soundcard wav


csv генерировал из JavaLikeCalc

JAVASCRIPT
path = "/home/scada/Reports/"+SYS.strftime(time1,"%Y/%m_%B")+"/";
test=SYS.system("mkdir -p "+path+"csv/");
 
var fileName = SYS.strftime(time1,"%Y-%m-%d %H-%M-%S");
 
function getVal(addr,time,prec)
{
	archtor = "FSArch.1s";
	uTime = 0;
	strong = false;
	return DAQ.JavaLikeCalc.lib_doc.getVal(addr,time,uTime,prec,archtor,strong);
}
 
function getRow_csv (time) 
{
	status = SYS.str2int(DAQ.JavaLikeCalc.lib_Avtoklav.getVal("DAQ.ModBus.Avtoklav.Owen_PLC63.status",time,0));
 
	Row = "\""+SYS.strftime(time,"%H:%M:%S")+"\";";
	Row +="\""+DAQ.JavaLikeCalc.lib_Avtoklav.status2str(status)+"\";";
	Row +="\""+SYS.strftime(getVal("DAQ.LogicLev.time_rel.time_rel.time_rel",time,0),"%M:%S")+"\";";
	Row +="\""+getVal("DAQ.ModBus.Avtoklav.Owen_PLC63.Temperature1",time,1)+"\";";
	Row +="\""+getVal("DAQ.ModBus.Avtoklav.Owen_PLC63.Pressure",time,2)+"\";\n";
 return Row.replace(".",","); 
}
 
var saveFile="\"Время\";\"Состояние\";\"Время состояния\";\"Температура\";\"Давление\"\n";
saveFile+="\"\";\"\";\"сек\";\"град.С\";\"атм.\"\n";
for(time=time1;time<time2;time+=60)
{
	saveFile+=getRow_csv(time);
}
for(time=time2;time<time3;time+=10)
{
	saveFile+=getRow_csv(time);
}
for(time=time3;time<time4;time+=60)
{
	saveFile+=getRow_csv(time);
}
 
SYS.fileWrite(path+"csv/"+fileName+".csv",saveFile);


входные переменные time1, time2, time3, time4(начала технологических операции) в формате unixtime (колво секунд с 70ого года)
архив назывался "1s"/
Спрашивайте, что не ясно


[Сообщение редактировалось 1 раз(а), в последний раз 30.01.2019 в 11:54.]
Сообщение создано: 30. 01. 2019 [20:10]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
"vV_2738JJ" wrote:

В конфигураторе OpenScada пункт Архивы/Модуль/Архиватор на файловую систему, вкладка Архивы есть возможность экспорта архивов в форматах ascii и wav.
В формате ascii выводится перечень параметров без указания меток времени.
Формат wav - RIFF WAVEfmt - звуковой? Или его каким то образом можно просмотреть?
И есть ли возможность вывести ascii с метками времени?

ЧаВо читаем!

Learn, learn and learn better than work, work and work.
Сообщение создано: 01. 02. 2019 [10:11]
vV_2738JJ
vV 2738JJ
Создатель темы
Зарегистрирован(а) с: 30.01.2019
Сообщения: 6
"arcsin" wrote:

Спрашивайте, что не ясно

Добрый день!
Спасибо за ответ.
В целом скрипт понятен. Полистал справку по OpenScada - там достаточно подробно описана архитектура системы, есть описание модулей, но не нашел описание библиотек и функций.
Так, у вас в коде используются DAQ.JavaLikeCalc.lib_doc.getVal(), DAQ.JavaLikeCalc.lib_Avtoklav.getVal, системные функции и пр. Хотелось бы знать какие еще есть библиотеки и функции и как их использовать. Где можно найти эту информацию?

И все таки по экспорту архивов:
в ascii - нет метки времени. Т.е. формат для анализа данных мало пригоден.
wav - записывать с микрофона и затем воспроизводить звук - тоже не совсем типичная задача для SCADA.
Тот же csv с выбором из архива полей для экспорта наверное был бы более удобен для технологического персонала?
Сообщение создано: 01. 02. 2019 [11:37]
arcsin
Аркадий Кисель
Contributor
Зарегистрирован(а) с: 17.02.2017
Сообщения: 77
"vV_2738JJ" wrote:

Полистал справку по OpenScada - там достаточно подробно описана архитектура системы, есть описание модулей, но не нашел описание библиотек и функций.
Так, у вас в коде используются DAQ.JavaLikeCalc.lib_doc.getVal(), DAQ.JavaLikeCalc.lib_Avtoklav.getVal, системные функции и пр. Хотелось бы знать какие еще есть библиотеки и функции и как их использовать. Где можно найти эту информацию?

я обычно гуглю.
вот стандартные функции: http://oscada.org/wiki/Modules/JavaLikeCalc/ru

Роман давал ссылку наверно на эту текстовку
Q: Can I export archived data (history) to a different format, say — CSV, Excel?
Re: In general, you can export archived data, and here are three features, that is: location, formats and export mode. Since the end user for whom this data is being formed is the user of the end visual interface — operator, the built-in export function is provided by these interfaces for the data primitives of the diagram and the document where you can export to CSV, image file and HTML. With regard to other data formats, especially closed and one-platform formats, such as Excel, then their export can be implemented by a user procedure through the common user interface of the visualization as a direct formation, if the format is simple, and the call of the external transformation utility, if available. Exports generally can be in two modes: interactive and flowing. It is the interactive mode embedded in the user interface and it involves determining the range and quality of data (the primitives data) as the limiting factors of the advisable execution time of this operation. The flowing mode provides a background, possibly even with the main processes, exporting both current data and local archive data and is often used to export to a database table with the desired structure. Exporting from the developer environment, like the flowing mode, do not have embedded functions, except for experimental ones such as WAV exports. This can, if necessary, be implemented by service procedure or part of the code of the main process for the flowing mode.


можно легко(забыл об этом) экспортировать в csv из визуализации. на графиках (см рис) сохранить в csv.
Вложенный файл

Диаграмма csv.png (Тип файла: image/png, Размер: 182.16 килобайт) — 1049 загрузок
Сообщение создано: 05. 02. 2019 [07:04]
vV_2738JJ
vV 2738JJ
Создатель темы
Зарегистрирован(а) с: 30.01.2019
Сообщения: 6
"arcsin" wrote:

Спрашивайте, что не ясно

Необходимо вытащить из архива значения параметра за определенный период.
Сделал так:
JAVASCRIPT
using Special.FLibSYS;
path = "~/";
 
a_src = vArh(strPath2Sep(addr));
 
count=0; buf_beg_u=buf_end_u=0;
buf_beg=max(a_src.begin(0,archtor),bTime);
buf_end=min(a_src.end(0,archtor),eTime);
var saveFile = "";
while( true )
{
  r_val = a_src.get(buf_beg,buf_beg_u,true,archtor);
  if(r_val != EVAL_REAL) {
		saveFile += SYS.strftime(buf_beg,"%Y-%m-%d %H-%M-%S")+"    ";
		saveFile += real2str(r_val,prec)+"\n";
	}
  if( !buf_beg || buf_beg>=buf_end ) break;
  buf_beg++;
	count++;
}
written=SYS.fileWrite(path+addr+".csv", saveFile);
return count+"/"+written;

Значения из архива получаю, но не могу сохранить в файл. Функция fileWrite возвращает ноль. Никакой ошибки не выдает ни при компиляции, ни при исполнении. Как найти причину? Может где-то сохраняются логи с детальной информацией?
Сообщение создано: 05. 02. 2019 [08:58]
arcsin
Аркадий Кисель
Contributor
Зарегистрирован(а) с: 17.02.2017
Сообщения: 77
попробуйте уйти от "~". Возможно это из bash и openscada его не понимает. если надо именно в каталог пользователя попробуйте выполнить команду баша pwd, думаю что это будеь /home/user/.openscada/project , а потом как-то так: ../../exmaple.csv. возможно поможет.
"vV_2738JJ" wrote:

Может где-то сохраняются логи с детальной информацией?

еще где-то на форуме уже был похожий вопрос, по памяти могу посоветовать: Стать на вкладку архивы, иногда там видны ошибки или сообщения.
Также туда можно писать таким образом: SYS.messInfo("export iz arhiva","text oshibki");
Сообщение создано: 05. 02. 2019 [09:31]
vV_2738JJ
vV 2738JJ
Создатель темы
Зарегистрирован(а) с: 30.01.2019
Сообщения: 6
"arcsin" wrote:

попробуйте уйти от "~"

Изначально путь указывал как "/home/Documents/", "/home/" и пр. Результат тот же: fileWrite ничего не возвращает.

"arcsin" wrote:

Также туда можно писать таким образом: SYS.messInfo("export iz arhiva","text oshibki");

Знать бы еще что туда писать. Возвращаемое fileWrite значение и так знаю, а откуда взять код ошибки с которой завершается fileWrite - неизвестно )
Сообщение создано: 05. 02. 2019 [09:54]
arcsin
Аркадий Кисель
Contributor
Зарегистрирован(а) с: 17.02.2017
Сообщения: 77
"vV_2738JJ" wrote:

Изначально путь указывал как "/home/Documents/", "/home/" и пр. Результат тот же: fileWrite ничего не возвращает.

для "/home/Documents/" пропущен пользователь. папка не создается и будет отказано в доступе.
для /home/ будет отказано в доступе
попробуйте /tmp

в моем случае пользователь назывался "scada"

должно быть /home/пользователь. только туда может писать пользователь. в /home не может. выполните команды
JAVASCRIPT
cd ~
pwd

также попробуйте вывести адрес полностью и вручную создать в bash через touch. может с доступами проблема.

[Сообщение редактировалось 1 раз(а), в последний раз 05.02.2019 в 09:56.]
Сообщение создано: 05. 02. 2019 [10:00]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3742
"vV_2738JJ" wrote:

"arcsin" wrote:

попробуйте уйти от "~"

Изначально путь указывал как "/home/Documents/", "/home/" и пр. Результат тот же: fileWrite ничего не возвращает.

И элементарно и просто проверить запись в рабочую директорию проекта никак нельзя?!
JAVASCRIPT
wLen = SYS.fileWrite("test.csv", "123456");
SYS.messInfo("TEST","wLen="+wLen);

2019-02-05T09:55:16 1[TEST] wLen=6


Learn, learn and learn better than work, work and work.



1213