EnglishУкраїнськаmRussian
Login/New
Topic with many replies

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


| 1 | 2 | Last
Author Message
Written on: 30. 01. 2019 [07:19]
vV_2738JJ
vV 2738JJ
Topic creator
registered since: 30.01.2019
Posts: 6
Добрый день,
В конфигураторе OpenScada пункт Архивы/Модуль/Архиватор на файловую систему, вкладка Архивы есть возможность экспорта архивов в форматах ascii и wav.
В формате ascii выводится перечень параметров без указания меток времени.
Формат wav - RIFF WAVEfmt - звуковой? Или его каким то образом можно просмотреть?
И есть ли возможность вывести ascii с метками времени?
Written on: 30. 01. 2019 [11:49]
arcsin
Аркадий Кисель
Contributor
registered since: 17.02.2017
Posts: 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"/
Спрашивайте, что не ясно


[This article was edited 1 times, at last 30.01.2019 at 11:54.]
Written on: 30. 01. 2019 [20:10]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"vV_2738JJ" wrote:

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

ЧаВо читаем!

Learn, learn and learn better than work, work and work.
Written on: 01. 02. 2019 [10:11]
vV_2738JJ
vV 2738JJ
Topic creator
registered since: 30.01.2019
Posts: 6
"arcsin" wrote:

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

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

И все таки по экспорту архивов:
в ascii - нет метки времени. Т.е. формат для анализа данных мало пригоден.
wav - записывать с микрофона и затем воспроизводить звук - тоже не совсем типичная задача для SCADA.
Тот же csv с выбором из архива полей для экспорта наверное был бы более удобен для технологического персонала?
Written on: 01. 02. 2019 [11:37]
arcsin
Аркадий Кисель
Contributor
registered since: 17.02.2017
Posts: 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.
Attachment

Диаграмма csv.png (File type: image/png, Size: 182.16 kilobytes) — 1189 downloads
Written on: 05. 02. 2019 [07:04]
vV_2738JJ
vV 2738JJ
Topic creator
registered since: 30.01.2019
Posts: 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 возвращает ноль. Никакой ошибки не выдает ни при компиляции, ни при исполнении. Как найти причину? Может где-то сохраняются логи с детальной информацией?
Written on: 05. 02. 2019 [08:58]
arcsin
Аркадий Кисель
Contributor
registered since: 17.02.2017
Posts: 77
попробуйте уйти от "~". Возможно это из bash и openscada его не понимает. если надо именно в каталог пользователя попробуйте выполнить команду баша pwd, думаю что это будеь /home/user/.openscada/project , а потом как-то так: ../../exmaple.csv. возможно поможет.
"vV_2738JJ" wrote:

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

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

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

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

"arcsin" wrote:

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

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

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

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

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

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

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

[This article was edited 1 times, at last 05.02.2019 at 09:56.]
Written on: 05. 02. 2019 [10:00]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"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.
| 1 | 2 | Last



11840