<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <html class="client-nojs" dir="ltr" lang="en"> <head> <meta charset="UTF-8" /> <title>Модули/ÐÑ€Ñ…Ð¸Ð²Ð°Ñ†Ð¸Ñ Ð½Ð° ФС - OpenSCADAWiki</title> <meta content="MediaWiki 1.26.4" name="generator" /> <link href="https://www.gnu.org/copyleft/fdl.html" rel="copyright" /> <link href="../../en/files/doc.css" rel="stylesheet" /></head> <body><div class="floatright"><a href="../index.html"><img alt="OpenSCADA" src="../../en/files/index.png" /></a></div><div id="mw_header"> <div class="mw-indicators"> </div> <h1 id="firstHeading" lang="ru">Модули/ÐÑ€Ñ…Ð¸Ð²Ð°Ñ†Ð¸Ñ Ð½Ð° ФС</h1> </div><div class="mw-content-ltr" dir="ltr" id="mw-content-text" lang="ru"><div class="mw-pt-translate-header noprint" dir="ltr" lang="en">This page is a <span class="plainlinks"><a class="external text" href="http://oscada.org/wiki/index.php?title=Special:Translate&group=page-Modules%2FFSArch&action=page&filter=&language=ru" rel="nofollow noreferrer noopener" target="_blank">translated version</a></span> of the page <a class="external" href="http://oscada.org/wiki/Modules/FSArch" title="Modules/FSArch">Modules/FSArch</a> and the translation is 98% complete.</div><hr /><div class="mw-pt-languages" dir="ltr" lang="en"><div class="mw-pt-languages-list autonym"><a class="mw-pt-languages-ui mw-pt-progress mw-pt-progress--complete" href="../../en/Modules/FSArch.html" title="Modules/FSArch (100% translated)">English</a> • ‎<span class="mw-pt-languages-selected mw-pt-progress mw-pt-progress--complete">mRussian</span> • ‎<a class="mw-pt-progress mw-pt-progress--complete" href="../../uk/Modules/FSArch.html" title="Модулі/ÐÑ€Ñ…Ñ–Ð²Ð°Ñ†Ñ–Ñ Ð½Ð° ФС (100% translated)">УкраїнÑька</a></div></div> <table class="wikitable"> <tr> <th> Модуль </th> <th> Ð˜Ð¼Ñ </th> <th> ВерÑÐ¸Ñ </th> <th> Ð›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ </th> <th> ИÑточник </th> <th> Языки </th> <th> Платформы </th> <th> Тип </th> <th> Ðвтор </th> <th> ОпиÑание </th></tr> <tr> <td> <a href="../Modules/FSArch.html" title="Special:MyLanguage/Modules/FSArch">FSArch</a> </td> <td> Ðрхиватор на файловую ÑиÑтему </td> <td> 3.8 </td> <td> GPL2 </td> <td> arh_FSArch.so </td> <td> en,uk,ru,de </td> <td> x86,x86_64,ARM </td> <td> Ðрхив </td> <td> Роман Савоченко </td> <td> Модуль архиватора. ПредоÑтавлÑет функции Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñообщений и значений на файловую ÑиÑтему. </td></tr></table> <p>Модуль предназначен Ð´Ð»Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñообщений и значений OpenSCADA на файловую ÑиÑтему. </p><p>Ð›ÑŽÐ±Ð°Ñ SCADA ÑиÑтема предоÑтавлÑет возможноÑÑ‚ÑŒ Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñобранных данных, Ñ‚.е. формирование иÑтории Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ (динамики) процеÑÑов. Ðрхивы уÑловно можно разделить на два типа: архивы Ñообщений и архивы значений. </p><p>ОÑобенноÑтью архивов Ñообщений ÑвлÑетÑÑ Ñ‚Ð¾, что архивируютÑÑ Ñ‚Ð°Ðº называемые ÑобытиÑ. Характерным признаком ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ ÑвлÑетÑÑ ÐµÐ³Ð¾ Ð²Ñ€ÐµÐ¼Ñ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½Ð¸Ñ. Ðрхивы Ñообщений обычно иÑпользуютÑÑ Ð´Ð»Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñообщений программы, Ñ‚.е. ведение логов и протоколов. Ð’ завиÑимоÑти от иÑточника, ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ клаÑÑифицироватьÑÑ Ð¿Ð¾ различным критериÑм. Ðапример, Ñто могут быть: протоколы аварийных Ñитуаций, протоколы дейÑтвий операторов, протоколы Ñбоев ÑвÑзи и др. </p><p>ОÑобенноÑтью архивов значений ÑвлÑетÑÑ Ð¸Ñ… периодичноÑÑ‚ÑŒ, определÑÐµÐ¼Ð°Ñ Ð¿Ñ€Ð¾Ð¼ÐµÐ¶ÑƒÑ‚ÐºÐ¾Ð¼ времени между Ð´Ð²ÑƒÐ¼Ñ Ñмежными значениÑми. Ðрхивы значений применÑÑŽÑ‚ÑÑ Ð´Ð»Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ñтории непрерывных процеÑÑов. ПоÑкольку процеÑÑ Ð½ÐµÐ¿Ñ€ÐµÑ€Ñ‹Ð²Ð½Ñ‹Ð¹ то и архивировать его можно только путём Ð²Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð½ÑÑ‚Ð¸Ñ ÐºÐ²Ð°Ð½Ñ‚Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ опроÑа, поÑкольку иначе мы получаем архивы беÑконечных размеров ввиду непрерывноÑти Ñамой природы процеÑÑа. Кроме Ñтого, практичеÑки мы можем получать Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ñ Ð¿ÐµÑ€Ð¸Ð¾Ð´Ð¾Ð¼ ограниченным Ñамими иÑточниками данных. Ðапример, довольно качеÑтвенные иÑточники данных в промышленноÑти редко позволÑÑŽÑ‚ получать данные Ñ Ñ‡Ð°Ñтотой более 1кГц. И Ñто без учёта Ñамих датчиков, имеющих ещё менее качеÑтвенные характериÑтики. </p><p>Ð”Ð»Ñ Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð¾Ð² в OpenSCADA предуÑмотрена <a href="../Program_manual.html#Arch" title="Special:MyLanguage/Documents/Program manual">подÑиÑтема "Ðрхивы-ИÑториÑ"</a>. Ð”Ð°Ð½Ð½Ð°Ñ Ð¿Ð¾Ð´ÑиÑтема, в ÑоответÑтвии Ñ Ñ‚Ð¸Ð¿Ð°Ð¼Ð¸ архивов, ÑоÑтоит из двух чаÑтей: архив Ñообщений и архивы значений. ПодÑиÑтема, в целом, ÑвлÑетÑÑ Ð¼Ð¾Ð´ÑƒÐ»ÑŒÐ½Ð¾Ð¹, что позволÑет Ñоздавать архивы, оÑнованные на различной природе и ÑпоÑобах Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ…. Данный модуль предоÑтавлÑет механизм Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð° файловую ÑиÑтему как Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÐ° Ñообщений, так и Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÐ° значений. </p> <div class="toc" id="toc"><div id="toctitle"><h2>Contents</h2></div> <ul> <li class="toclevel-1 tocsection-1"><a href="#.D0.90.D1.80.D1.85.D0.B8.D0.B2.D0.B0.D1.82.D0.BE.D1.80_.D1.81.D0.BE.D0.BE.D0.B1.D1.89.D0.B5.D0.BD.D0.B8.D0.B9"><span class="tocnumber">1</span> <span class="toctext">Ðрхиватор Ñообщений</span></a> <ul> <li class="toclevel-2 tocsection-2"><a href="#.D0.A4.D0.BE.D1.80.D0.BC.D0.B0.D1.82_.D1.84.D0.B0.D0.B9.D0.BB.D0.BE.D0.B2_.D0.B0.D1.80.D1.85.D0.B8.D0.B2.D0.B0_.D1.81.D0.BE.D0.BE.D0.B1.D1.89.D0.B5.D0.BD.D0.B8.D0.B9"><span class="tocnumber">1.1</span> <span class="toctext">Формат файлов архива Ñообщений</span></a></li> <li class="toclevel-2 tocsection-3"><a href="#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80_.D1.84.D0.B0.D0.B9.D0.BB.D0.B0_.D0.B0.D1.80.D1.85.D0.B8.D0.B2.D0.B0_.D1.81.D0.BE.D0.BE.D0.B1.D1.89.D0.B5.D0.BD.D0.B8.D1.8F"><span class="tocnumber">1.2</span> <span class="toctext">Пример файла архива ÑообщениÑ</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-4"><a href="#.D0.90.D1.80.D1.85.D0.B8.D0.B2.D0.B0.D1.82.D0.BE.D1.80_.D0.B7.D0.BD.D0.B0.D1.87.D0.B5.D0.BD.D0.B8.D0.B9"><span class="tocnumber">2</span> <span class="toctext">Ðрхиватор значений</span></a> <ul> <li class="toclevel-2 tocsection-5"><a href="#.D0.A4.D0.BE.D1.80.D0.BC.D0.B0.D1.82_.D1.84.D0.B0.D0.B9.D0.BB.D0.BE.D0.B2_.D0.B0.D1.80.D1.85.D0.B8.D0.B2.D0.B0_.D0.B7.D0.BD.D0.B0.D1.87.D0.B5.D0.BD.D0.B8.D0.B9"><span class="tocnumber">2.1</span> <span class="toctext">Формат файлов архива значений</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-6"><a href="#.D0.AD.D1.84.D1.84.D0.B5.D0.BA.D1.82.D0.B8.D0.B2.D0.BD.D0.BE.D1.81.D1.82.D1.8C"><span class="tocnumber">3</span> <span class="toctext"><span>ÐффективноÑÑ‚ÑŒ</span></span></a></li> <li class="toclevel-1 tocsection-7"><a href="#.D0.A1.D1.81.D1.8B.D0.BB.D0.BA.D0.B8"><span class="tocnumber">4</span> <span class="toctext">СÑылки</span></a></li> </ul> </div> <h2><span class="mw-headline" id=".D0.90.D1.80.D1.85.D0.B8.D0.B2.D0.B0.D1.82.D0.BE.D1.80_.D1.81.D0.BE.D0.BE.D0.B1.D1.89.D0.B5.D0.BD.D0.B8.D0.B9"><span class="mw-headline-number">1</span> Ðрхиватор Ñообщений</span></h2> <p>Ðрхивы Ñообщений формируютÑÑ Ð°Ñ€Ñ…Ð¸Ð²Ð°Ñ‚Ð¾Ñ€Ð°Ð¼Ð¸, которых может быть множеÑтво и Ñ Ð¸Ð½Ð´Ð¸Ð²Ð¸Ð´ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ð¼Ð¸ наÑтройками, что позволÑет разделÑÑ‚ÑŒ архивирование различных клаÑÑов Ñообщений. </p><p>Ðрхиватор Ñообщений Ñтого Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñет хранить данные как в файлах формата Ñзыка XML, так и в формате плоÑкого текÑта. Язык разметки XML ÑвлÑетÑÑ Ñтандартным форматом, который Ñ Ð»Ñ‘Ð³ÐºÐ¾Ñтью понимают многие Ñторонние приложениÑ. Однако, открытие и разбор файлов в таком формате требует значительных реÑурÑов. С другой Ñтороны, формат плоÑкого текÑта требует значительно меньше реÑурÑов, Ñ…Ð¾Ñ‚Ñ Ð¸ не ÑвлÑетÑÑ ÑƒÐ½Ð¸Ñ„Ð¸Ñ†Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼, а также требует Ð·Ð½Ð°Ð½Ð¸Ñ ÐµÐ³Ð¾ Ñтруктуры Ð´Ð»Ñ Ñтороннего разбора. </p><p>Ð’ любом Ñлучае, поддерживаютÑÑ Ð¾Ð±Ð° формата и пользователь может выбрать любой из них в ÑоответÑтвии Ñо Ñвоими требованиÑми. </p><p>Файлы архивов именуютÑÑ Ð°Ñ€Ñ…Ð¸Ð²Ð°Ñ‚Ð¾Ñ€Ð°Ð¼Ð¸ ÑоглаÑно даты первого ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² архиве, например, так: "2018-05-03 17.57.03.msg". </p><p>Файлы архивов могут ограничиватьÑÑ Ð¿Ð¾ размеру и времени. ПоÑле Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐµÐ½Ð¸Ñ Ð»Ð¸Ð¼Ð¸Ñ‚Ð° ÑоздаётÑÑ Ð½Ð¾Ð²Ñ‹Ð¹ файл. МакÑимальное количеÑтво файлов в директории архиватора также может быть ограничено. ПоÑле Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐµÐ½Ð¸Ñ Ð»Ð¸Ð¼Ð¸Ñ‚Ð° на количеÑтво файлов, Ñтарые файлы начнут удалÑÑ‚ÑŒÑÑ! </p><p>С целью оптимизации иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¸Ñкового проÑтранÑтва архиваторы поддерживают упаковку Ñтарых архивов упаковщиком gzip. Упаковка производитÑÑ Ð¿Ð¾Ñле продолжительного неиÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð°. </p><p>При иÑпользовании архивов в формате Ñзыка XML, ÑоответÑтвующие файлы загружаютÑÑ Ñ†ÐµÐ»Ð¸ÐºÐ¾Ð¼! Ð”Ð»Ñ Ð²Ñ‹Ð³Ñ€ÑƒÐ·ÐºÐ¸ неиÑпользуемых продолжительное Ð²Ñ€ÐµÐ¼Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð¾Ð² применÑетÑÑ Ñ‚Ð°Ð¹Ð¼Ð°ÑƒÑ‚ доÑтупа к архиву, поÑле Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐµÐ½Ð¸Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ архив выгружаетÑÑ Ð¸Ð· памÑти, а затем и пакуетÑÑ. </p><p>Модулем предоÑтавлÑÑŽÑ‚ÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ðµ параметры наÑтройки процеÑÑа архивированиÑ, риÑунок 1. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:923px;"><a class="image" href="http://oscada.org/wiki/File:FSArch_mess_a_prm_ru.png"><img class="thumbimage" height="769" src="../files/FSArch_mess_a_prm_ru.png" width="921" /></a> <div class="thumbcaption">РиÑ.1. Дополнительные параметры наÑтройки процеÑÑа Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñообщений.</div></div></div></div> <p>Ð’ чиÑло Ñтих параметров входÑÑ‚: </p> <ul><li> <i>Файлы архивов в XML</i> — включает архивирование Ñообщений в файлы XML-формата, вмеÑто плоÑкого текÑта. ИÑпользование в архивировании XML-формата требует больше оперативной памÑти поÑкольку необходима: Ð¿Ð¾Ð»Ð½Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° файла, XML-разбор и хранение в памÑти на момент иÑпользованиÑ.</li> <li> <i>Предотвращать дубликаты</i> — включает проверку Ð½Ð°Ð»Ð¸Ñ‡Ð¸Ñ Ð´ÑƒÐ±Ð»Ð¸Ñ€ÑƒÑŽÑ‰Ð¸Ñ… Ñообщений во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² архив. При наличии дубликата Ñообщение не помещаетÑÑ Ð² архив. Ð”Ð°Ð½Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½ÐµÑколько повышает Ð²Ñ€ÐµÐ¼Ñ Ð·Ð°Ð¿Ð¸Ñи в архив, но, в ÑлучаÑÑ… Ð¿Ð¾Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ñообщений в архив обратным чиÑлом из внешних иÑточников, позволÑет иÑключить дублирование.</li> <li> <i>Считать дубликатами и предотвращать Ñ Ñ€Ð°Ð²Ð½Ñ‹Ð¼ временем, категорией, уровнем</i> — включает проверку Ð½Ð°Ð»Ð¸Ñ‡Ð¸Ñ Ð´ÑƒÐ±Ð»Ð¸Ñ€ÑƒÑŽÑ‰Ð¸Ñ… Ñообщений во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² архив. Дублирующими ÑчитаютÑÑ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñ Ñ€Ð°Ð²Ð½Ñ‹Ð¼ временем, категорией и уровнем. Ðовое дублирующее Ñообщение заменÑет в архиве Ñтарое. Ð”Ð°Ð½Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð² оÑновном полезна Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‚ÐµÐºÑта запиÑи ÑообщениÑ, например, Ð´Ð»Ñ ÑтатуÑа нарушениÑ.</li> <li> <i>МакÑимальный размер файла архива, в килобайтах</i> — уÑтанавливает ограничение на размер одного файла архива. Отключить ограничение можно уÑтановив параметр в ноль.</li> <li> <i>МакÑимальное количеÑтво файлов</i> — ограничивает макÑимальное количеÑтво файлов архива и, ÑовмеÑтно Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼ отдельного файла, определÑет размер архива на диÑка. ПолноÑтью ÑнÑÑ‚ÑŒ Ñто ограничение можно уÑтановив параметр в ноль.</li> <li> <i>Размер файла по времени, в днÑÑ…</i> — уÑтанавливает ограничение на размер одного файла архива по времени.</li> <li> <i>Таймаут упаковки файлов, в минутах</i> — уÑтанавливает промежуток времени по иÑтечению которого, и в Ñлучае отÑутÑÑ‚Ð²Ð¸Ñ Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ð¹, файлы архивов будут упаковыватьÑÑ gzip архиватором. УÑтановить в ноль Ð´Ð»Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ ÑƒÐ¿Ð°ÐºÐ¾Ð²ÐºÐ¸ gzip.</li> <li> <i>Период проверки архивов, в минутах</i> — уÑтанавливает периодичноÑÑ‚ÑŒ проверки архивов на предмет поÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð² директории файлов архивов, а также превышение лимитов и удаление Ñтарых файлов архивов.</li> <li> <i>ИÑпользовать информационный файл Ð´Ð»Ñ ÑƒÐ¿Ð°ÐºÐ¾Ð²Ð°Ð½Ð½Ñ‹Ñ… архивов</i> — указывает на необходимоÑÑ‚ÑŒ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸ÐµÐ¹ о запакованных gzip-архиватором файлах архива. При копировании файлов архива на другую Ñтанцию Ñтот информационный файл позволÑÑŽÑ‚ уÑкорить процеÑÑ Ð¿ÐµÑ€Ð²Ð¾Ð³Ð¾ запуÑка целевой Ñтанции, за Ñчёт иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾Ñти раÑпаковки gzip-архивов Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸.</li> <li> <i>Проверить директорию архиватора ÑейчаÑ</i> — команда, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñет запуÑтить проверку архивов немедленно, например, поÑле ручного Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² директории архиватора.</li></ul> <p>Ð”Ð»Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð·Ð° файлами архиватора Ð’Ñ‹ можете поÑмотреть во вкладке "Файлы", риÑунок 2. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:1083px;"><a class="image" href="http://oscada.org/wiki/File:FSArch_mess_files_ru.png"><img class="thumbimage" height="769" src="../files/FSArch_mess_files_ru.png" width="1081" /></a> <div class="thumbcaption">РиÑ.2. Вкладка "Файлы" архиватора Ñообщений.</div></div></div></div> <h3><span class="mw-headline" id=".D0.A4.D0.BE.D1.80.D0.BC.D0.B0.D1.82_.D1.84.D0.B0.D0.B9.D0.BB.D0.BE.D0.B2_.D0.B0.D1.80.D1.85.D0.B8.D0.B2.D0.B0_.D1.81.D0.BE.D0.BE.D0.B1.D1.89.D0.B5.D0.BD.D0.B8.D0.B9"><span class="mw-headline-number">1.1</span> Формат файлов архива Ñообщений</span></h3> <p>Ð’ таблице ниже приведен ÑинтакÑÐ¸Ñ Ñ„Ð°Ð¹Ð»Ð° архива, поÑтроенного на XML-Ñзыке: </p> <table class="wikitable"> <tr> <th> Тег </th> <th> ОпиÑание </th> <th> Ðтрибуты </th> <th> Содержит </th></tr> <tr> <td> FSArch </td> <td> Корневой Ñлемент. Идентифицирует файл, как принадлежащий данному модулю. </td> <td> <p><i>Version</i> — верÑÐ¸Ñ Ñ„Ð°Ð¹Ð»Ð° архива;<br /> <i>Begin</i> — Ð²Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° архива (hex - UTC в Ñекундах от 01/01/1970);<br /> <i>End</i> — Ð²Ñ€ÐµÐ¼Ñ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð° (hex - UTC в Ñекундах от 01/01/1970). </p> </td> <td> (m) </td></tr> <tr> <td> m </td> <td> Тег отдельного ÑообщениÑ. </td> <td> <p><i>tm</i> — Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ (hex - UTC в Ñекундах от 01/01/1970);<br /> <i>tmu</i> — микроÑекунды времени ÑообщениÑ;<br /> <i>lv</i> — уровень ÑообщениÑ;<br /> <i>cat</i> — ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ ÑообщениÑ. </p> </td> <td> ТекÑÑ‚ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ </td></tr></table> <p>Ðрхивный файл на оÑнове плоÑкого текÑта ÑоÑтоит из: </p> <ul><li> заголовок в формате: "<b>FSArch {vers} {charset} {beg_tm} {end_tm}</b>"; Где: <ul><li> <i>vers</i> — верÑÐ¸Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ;</li> <li> <i>charset</i> — кодировка файла, обычно UTF-8;</li> <li> <i>beg_tm</i> — UTC Ð²Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° архива Ñ Ñпохи 01.01.1970, в шеÑтнадцатеричной форме;</li> <li> <i>end_tm</i> — UTC Ð²Ñ€ÐµÐ¼Ñ ÐºÐ¾Ð½Ñ†Ð° файла архива Ñ Ñпохи 01.01.1970, в шеÑтнадцатеричной форме. </li></ul></li> <li> запиÑи Ñообщений в формате: "<b>{tm} {lev} {cat} {mess}</b>"; Где: <ul><li> <i>tm</i> — Ð²Ñ€ÐµÐ¼Ñ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² виде: "<b>{utc_sec}:{usec}</b>", где: <ul><li> <i>utc_sec</i> — UTC Ð²Ñ€ÐµÐ¼Ñ Ñ Ñпохи 01.01.1970, в шеÑтнадцатеричной форме;</li> <li> <i>usec</i> — микроÑекунды времени, в деÑÑтичной форме.</li></ul></li> <li> <i>lev</i> — уровень важноÑти ÑообщениÑ;</li> <li> <i>cat</i> — ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ ÑообщениÑ;</li> <li> <i>mess</i> — текÑÑ‚ ÑообщениÑ.</li></ul></li></ul> <p>ТекÑÑ‚ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¸ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ ÐºÐ¾Ð´Ð¸Ñ€ÑƒÑŽÑ‚ÑÑ Ñ Ñ†ÐµÐ»ÑŒÑŽ иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñимволов разделителей — Ñимвол пробела. </p> <h3><span class="mw-headline" id=".D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80_.D1.84.D0.B0.D0.B9.D0.BB.D0.B0_.D0.B0.D1.80.D1.85.D0.B8.D0.B2.D0.B0_.D1.81.D0.BE.D0.BE.D0.B1.D1.89.D0.B5.D0.BD.D0.B8.D1.8F"><span class="mw-headline-number">1.2</span> Пример файла архива ÑообщениÑ</span></h3> <p><b>Пример Ñодержимого архивного файла в формате Ñзыка XML:</b> </p> <pre style="white-space: pre-wrap;"> <?xml version='1.0' encoding='UTF-8' ?> <FSArch Version="3.2.0" Begin="4a27dfbc" End="4a28c990"> <m tm="4a28c982" tmu="905587" lv="4" cat="/sub_DAQ/mod_DiamondBoards/">Ошибка dscInit.</m> <m tm="4a28c990" tmu="595549" lv="4" cat="/sub_Transport/mod_Sockets/out_HDDTemp/">Ошибка Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº Internet Ñокету: ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑетÑÑ Ð² данный момент!</m> </FSArch> </pre> <p><b>Пример Ñодержимого архивного файла в формате плоÑкого текÑта:</b> </p> <pre style="white-space: pre-wrap;"> FSArch 3.2.0 UTF-8 4a27dfbb 4a28c991 4a28c98f:432619 1 / ЗапуÑк! 4a28c98f:432858 1 /sub_Transport/ ПуÑк%20подÑиÑтемы. 4a28c98f:455400 1 /sub_DAQ/mod_DAQGate/cntr_test/ Включение%20контроллера! 4a28c98f:457360 1 /sub_DAQ/mod_ModBus/cntr_testTCP/ Включение%20контроллера! 4a28c98f:460691 1 /sub_DAQ/mod_ModBus/cntr_testRTU/ Включение%20контроллера! 4a28c98f:464227 1 /sub_DAQ/mod_BlockCalc/cntr_Anast1to2node/ Включение%20контроллера! 4a28c98f:680767 1 /sub_DAQ/mod_BlockCalc/cntr_KM102cntr/ Включение%20контроллера! 4a28c98f:705683 1 /sub_DAQ/mod_BlockCalc/cntr_Anast1to2node_cntr/ Включение%20контроллера! 4a28c98f:753659 1 /sub_DAQ/mod_BlockCalc/cntr_KM101/ Включение%20контроллера! 4a28c98f:905073 1 /sub_DAQ/mod_BlockCalc/cntr_KM102/ Включение%20контроллера! 4a28c990:81670 1 /sub_DAQ/mod_BlockCalc/cntr_KM201/ Включение%20контроллера! 4a28c990:206208 1 /sub_DAQ/mod_BlockCalc/cntr_КМ202/ Включение%20контроллера! 4a28c990:333471 1 /sub_DAQ/mod_BlockCalc/cntr_KM301/ Включение%20контроллера! 4a28c990:457490 1 /sub_DAQ/mod_BlockCalc/cntr_KM302/ Включение%20контроллера! 4a28c990:591702 1 /sub_DAQ/mod_System/cntr_AutoDA/ Включение%20контроллера! 4a28c990:595549 4 /sub_Transport/mod_Sockets/out_HDDTemp/ Ошибка%20подключениÑ%20к%20Internet%20Ñокету:%20ОперациÑ%20выполнÑетÑÑ%20в%20данный%20момент! 4a28c990:618617 1 /sub_DAQ/mod_SoundCard/cntr_test/ Включение%20контроллера! 4a28c990:621487 1 /sub_DAQ/mod_LogicLev/cntr_experiment/ Включение%20контроллера! 4a28c990:729323 1 /sub_DAQ/mod_JavaLikeCalc/cntr_testCalc/ Включение%20контроллера! 4a28c990:733434 1 /sub_DAQ/mod_Siemens/cntr_test/ Включение%20контроллера! 4a28c990:754368 1 /sub_DAQ/mod_DAQGate/cntr_test/ Включение%20контроллера! 4a28c990:786925 1 /sub_Archive/ ПуÑк%20подÑиÑтемы. 4a28c990:955967 1 /sub_DAQ/mod_BlockCalc/cntr_Anast1to2node/ ЗапуÑк%20контроллера! 4a28c990:957251 1 /sub_DAQ/mod_BlockCalc/cntr_KM102cntr/ ЗапуÑк%20контроллера! 4a28c990:957636 1 /sub_DAQ/mod_BlockCalc/cntr_Anast1to2node_cntr/ ЗапуÑк%20контроллера! 4a28c990:958006 1 /sub_DAQ/mod_BlockCalc/cntr_KM101/ ЗапуÑк%20контроллера! 4a28c990:958637 1 /sub_DAQ/mod_BlockCalc/cntr_KM102/ ЗапуÑк%20контроллера! 4a28c990:959268 1 /sub_DAQ/mod_BlockCalc/cntr_KM201/ ЗапуÑк%20контроллера! 4a28c990:959875 1 /sub_DAQ/mod_BlockCalc/cntr_КМ202/ ЗапуÑк%20контроллера! 4a28c990:961261 1 /sub_DAQ/mod_BlockCalc/cntr_KM301/ ЗапуÑк%20контроллера! 4a28c990:961919 1 /sub_DAQ/mod_BlockCalc/cntr_KM302/ ЗапуÑк%20контроллера! 4a28c990:963775 1 /sub_DAQ/mod_System/cntr_AutoDA/ ЗапуÑк%20контроллера! 4a28c990:966980 1 /sub_DAQ/mod_LogicLev/cntr_experiment/ ЗапуÑк%20контроллера! 4a28c991:26791 1 /sub_Archive/ ПуÑк%20подÑиÑтемы. 4a28c991:28489 1 /sub_UI/mod_VCAEngine/ Старт%20модулÑ. </pre> <h2><span class="mw-headline" id=".D0.90.D1.80.D1.85.D0.B8.D0.B2.D0.B0.D1.82.D0.BE.D1.80_.D0.B7.D0.BD.D0.B0.D1.87.D0.B5.D0.BD.D0.B8.D0.B9"><span class="mw-headline-number">2</span> Ðрхиватор значений</span></h2> <p>Ðрхивы значений формируютÑÑ Ð°Ñ€Ñ…Ð¸Ð²Ð°Ñ‚Ð¾Ñ€Ð°Ð¼Ð¸ значений индивидуально Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ зарегиÑтрированного архива. Ðрхиваторов может быть множеÑтво и Ñ Ð¸Ð½Ð´Ð¸Ð²Ð¸Ð´ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ð¼Ð¸ наÑтройками, которые позволÑющими разделить архивы по различным параметрам, например, по точноÑти и глубине. </p><p>Ðрхив значений ÑвлÑетÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸Ñимым компонентом, который включает буфер, обрабатываемый архиваторами. ОÑновным параметром архива Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÑвлÑетÑÑ Ð¸Ñточник данных. Ð’ роли иÑточника данных могут выÑтупать атрибуты параметров подÑиÑтемы "Сбор данных", а также другие внешние иÑточники данных (паÑÑивный режим). Другими иÑточниками данных могут быть: Ñетевые архиваторы удалённых OpenSCADA Ñтанций, Ñреда Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ OpenSCADA и др. Ðе менее важными параметрами архива ÑвлÑÑŽÑ‚ÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ‹ его буфера. От параметров буфера завиÑит возможноÑÑ‚ÑŒ работы архиваторов. <a class="image" href="http://oscada.org/wiki/File:At.png"><img alt="At.png" height="22" src="../../en/files/At.png" width="22" /></a> Так, периодичноÑÑ‚ÑŒ значений в буфере должна быть не больше периодичноÑти Ñамого быÑтрого архиватора, а размер буфера не менее двойного размера Ð´Ð»Ñ Ñамого медленного архиватора. Ð’ противном Ñлучае возможны потери данных. </p><p>ÐžÐ±Ñ‰Ð°Ñ Ñхема Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ наглÑдно изображена на риÑунке 3. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:621px;"><a class="image" href="http://oscada.org/wiki/File:Arch_val_sh_ru.png"><img class="thumbimage" height="391" src="../files/Arch_val_sh_ru.png" width="619" /></a> <div class="thumbcaption">РиÑ.3. ÐžÐ±Ñ‰Ð°Ñ Ñхема процеÑÑа Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹.</div></div></div></div> <p>Файлы архивов именуютÑÑ Ð°Ñ€Ñ…Ð¸Ð²Ð°Ñ‚Ð¾Ñ€Ð°Ð¼Ð¸ в ÑоответÑтвии Ñ Ð´Ð°Ñ‚Ð¾Ð¹ первого Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² архиве и идентификатора архива, например, так: "CPULoad_load 2018-04-03 19.13.52.val". </p><p>Файлы архивов могут ограничиватьÑÑ Ð¿Ð¾ времени. ПоÑле Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐµÐ½Ð¸Ñ Ð»Ð¸Ð¼Ð¸Ñ‚Ð° ÑоздаётÑÑ Ð½Ð¾Ð²Ñ‹Ð¹ файл. МакÑимальное количеÑтво файлов в директории архиватора также может ограничиватьÑÑ. ПоÑле Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐµÐ½Ð¸Ñ Ð»Ð¸Ð¼Ð¸Ñ‚Ð° на количеÑтво файлов Ñтарые файлы начнут удалÑÑ‚ÑŒÑÑ! </p><p>С целью Ñкономии диÑкового проÑтранÑтва архиваторы поддерживают упаковку, в дополнении к поÑледовательной упаковке, Ñтарых архивов упаковщиком gzip. Упаковка производитÑÑ Ð¿Ð¾Ñле продолжительного неиÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð°. Ð”Ð»Ñ Ð¾Ð±ÐµÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñти быÑтрого Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ñ… архивов к другой Ñтанции можно Ð´Ð»Ñ ÑƒÐ¿Ð°ÐºÐ¾Ð²Ð°Ð½Ð½Ñ‹Ñ… файлов включить иÑпользование информационного файла, что предотвратит предварительную раÑпаковку вÑех файлов на другой Ñтанции. </p><p>Модулем предоÑтавлÑÑŽÑ‚ÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ðµ параметры наÑтройки процеÑÑа архивированиÑ, риÑунок 4. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:795px;"><a class="image" href="http://oscada.org/wiki/File:FSArch_val_a_prm_ru.png"><img class="thumbimage" height="746" src="../files/FSArch_val_a_prm_ru.png" width="793" /></a> <div class="thumbcaption">РиÑ.4. Дополнительные параметры наÑтройки процеÑÑа Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹.</div></div></div></div> <p>These additional parameters: </p> <ul><li> <i>Time size of the archive files, in hours</i> — the parameter is set automatically when the value periodicity of the archiver is changed and is generally proportional to the periodicity of the values of the archiver.</li></ul> <dl><dd><a class="image" href="http://oscada.org/wiki/File:At.png"><img alt="At.png" height="22" src="../../en/files/At.png" width="22" /></a> Large files of the archive will be longer processed due to the long unpacking of gzip files and initial indexing, while accessing archives is deeply in the history.</dd></dl> <ul><li> <i>Maximum number of files per archive</i> — limits the maximum number of archive files and, together with the size of a single file, determines the size of the archive on the disk. Completely remove this restriction by setting the parameter to zero.</li> <li> <i>Maximum size of all archives, in megabytes</i> — sets limits on the maximum occupied volume of disk space for files of all archives of the archivers. The check is carried out with the periodicity of checking the archives (beyond), as a result of which, and for exceeding the limit, the oldest files of all archives are removed. Completely remove this restriction by setting the parameter to zero.</li> <li> <i>Rounding for numeric values (%)</i> — sets the marginal percentage of the difference between the values of the parameters of the integer and the real types at which they are considered identical and are arranged in the archive as one value, through sequential packaging. Allows you to well pack parameters beyond the validity — which are lightly changed. Disabling this property can be set to zero.</li> <li> <i>Timeout packaging archive files, in minutes</i> — sets the time after which, in the absence of requests, the archive file will be packaged in a gzip archive. Set to zero for disabling the packaging by gzip.</li> <li> <i>Period of the archives checking, in minutes</i> — sets the periodicity of checking archives for the appearance or deletion in the archive files folder, as well as exceeding the limits and removing old archives files.</li> <li> <i>Use info file for packaged archives</i> — points to the need to create a file containing information about the packed gzip-archiver archive files. When copying the archive files to another station, this information file allows you to accelerate the process of first launching the destination station by eliminating the need to unzip the gzip-archives for the information.</li> <li> <i>Remove original archive file at error unpacking</i> — removing is performed during the archives checking and that is useful for broken archive files.</li> <li> <i>Check now for the directory of the archiver</i> — command that allows you to run the archives checking immediately, for example, after manually modifying the archiver folder.</li></ul> <p>Ð”Ð»Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð·Ð° файлами архиватора Ð’Ñ‹ можете поÑмотреть во вкладке "Файлы", риÑунок 5. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:1213px;"><a class="image" href="http://oscada.org/wiki/File:FSArch_val_files_ru.png"><img class="thumbimage" height="746" src="../files/FSArch_val_files_ru.png" width="1211" /></a> <div class="thumbcaption">РиÑ.5. Вкладка "Файлы" архиватора значений.</div></div></div></div> <h3><span class="mw-headline" id=".D0.A4.D0.BE.D1.80.D0.BC.D0.B0.D1.82_.D1.84.D0.B0.D0.B9.D0.BB.D0.BE.D0.B2_.D0.B0.D1.80.D1.85.D0.B8.D0.B2.D0.B0_.D0.B7.D0.BD.D0.B0.D1.87.D0.B5.D0.BD.D0.B8.D0.B9"><span class="mw-headline-number">2.1</span> Формат файлов архива значений</span></h3> <p>К реализации Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ð° файловую ÑиÑтему предъÑвлÑлиÑÑŒ Ñледующие требованиÑ: </p> <ul><li> быÑтрый и проÑтой доÑтуп на добавление в архив и чтение из архива;</li> <li> возможноÑÑ‚ÑŒ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ в ÑущеÑтвующем архиве, Ñ Ñ†ÐµÐ»ÑŒÑŽ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð´Ñ‹Ñ€ в дублированных ÑиÑтемах;</li> <li> цикличноÑÑ‚ÑŒ, ограничение размера;</li> <li> возможноÑÑ‚ÑŒ ÑÐ¶Ð°Ñ‚Ð¸Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð¾Ð¼ упаковки поÑледовательноÑти одинаковых значений, ÑохранÑющим возможноÑÑ‚ÑŒ быÑтрого доÑтупа — поÑÐ»ÐµÐ´Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ ÑƒÐ¿Ð°ÐºÐ¾Ð²ÐºÐ°;</li> <li> возможноÑÑ‚ÑŒ упаковки уÑтаревших данных Ñтандартными архиваторами (gzip, bzip2 ...) Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñтью раÑпаковки при обращении.</li></ul> <p>Ð’ ÑоответÑтвии Ñ Ð²Ñ‹ÑˆÐµÐ¿Ñ€Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ‹Ð¼Ð¸ требованиÑми, организовано архивирование методом множеÑтвенноÑти файлов (Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ иÑточника). ЦикличноÑÑ‚ÑŒ архива реализуетÑÑ Ð½Ð° уровне файлов, Ñ‚.е. ÑоздаетÑÑ Ð½Ð¾Ð²Ñ‹Ð¹ файл, а Ñамый Ñтарый удалÑетÑÑ. Ð”Ð»Ñ Ð±Ñ‹Ñтрого ÑÐ¶Ð°Ñ‚Ð¸Ñ Ð¸ÑпользуетÑÑ Ð¼ÐµÑ‚Ð¾Ð´ притÑÐ³Ð¸Ð²Ð°Ð½Ð¸Ñ Ðº поÑледнему одинаковому значению. Ð”Ð»Ñ Ñтих целей в файле архива предуÑматриваетÑÑ Ð±Ð¸Ñ‚Ð¾Ð²Ð°Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° упаковки размером один в один Ñ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑтвом хранимых данных. Т.е. каждый бит ÑоответÑтвует одному значению в архиве. Значение бита указывает на наличие значениÑ. Ð”Ð»Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÐ° одинаковых значений биты обнулены. Ð’ Ñлучае Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð¾Ð¼ Ñтрок таблица ÑвлÑетÑÑ Ð½Ðµ битовой а байтовой и Ñодержит длину ÑоответÑтвующего значениÑ. Ð’ Ñлучае поÑÑ‚ÑƒÐ¿Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÐ° одинаковых значений, длина будет нулевой и читатьÑÑ Ð±ÑƒÐ´ÐµÑ‚ первое одинаковое значение. ПоÑкольку таблица Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð°Ñ Ñ‚Ð¾ архив может хранить Ñтроки длиной не более 255 Ñимволов. Таким образом, методики Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ разделить на методику данных фикÑированного и нефикÑированного размера. ÐžÐ±Ñ‰Ð°Ñ Ñтруктура файла архива приведена на риÑунке 6. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:202px;"><a class="image" href="http://oscada.org/wiki/File:FSArch_file_struct_ru.png"><img class="thumbimage" height="339" src="../files/FSArch_file_struct_ru.png" width="200" /></a> <div class="thumbcaption">РиÑ.6. ÐžÐ±Ñ‰Ð°Ñ Ñтруктура файла архива значений.</div></div></div></div> <p>При Ñоздании нового файла архива формируютÑÑ: заголовок (Ñтруктура заголовка в таблице 1), Ð½ÑƒÐ»ÐµÐ²Ð°Ñ Ð±Ð¸Ñ‚Ð¾Ð²Ð°Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° упаковки архива и первое недоÑтоверное значение (EVAL). Таким образом, получитÑÑ Ð°Ñ€Ñ…Ð¸Ð², инициализированный недоÑтоверными значениÑми. Ð’ дальнейшем, новые Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ вÑтавлÑÑ‚ÑŒÑÑ Ð² облаÑÑ‚ÑŒ значений Ñ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð¸Ñ€Ð¾Ð²ÐºÐ¾Ð¹ индекÑной таблицы упаковки. Из Ñтого Ñледует, что паÑÑивные архивы будут вырождатьÑÑ Ð² файлы размером в заголовок и битовую таблицу. </p><p><b>Таблица 1.</b> Структура заголовка файла архива </p> <table class="wikitable"> <tr> <th> Поле </th> <th> ОпиÑание </th> <th> Размер байт(бит) </th></tr> <tr> <td> f_tp </td> <td> СиÑтемное Ð¸Ð¼Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð° ("OpenSCADA Val Arch.") </td> <td> 20 </td></tr> <tr> <td> archive </td> <td> Ð˜Ð¼Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð° к которому принадлежит файл. </td> <td> 20 </td></tr> <tr> <td> beg </td> <td> Ð’Ñ€ÐµÐ¼Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° архивных данных, в микроÑекундах </td> <td> 8 </td></tr> <tr> <td> end </td> <td> Ð’Ñ€ÐµÐ¼Ñ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð½Ñ‹Ñ… данных, в микроÑекундах </td> <td> 8 </td></tr> <tr> <td> period </td> <td> Период архива, в микроÑекундах </td> <td> 8 </td></tr> <tr> <td> vtp </td> <td> Тип Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð² архиве: ЛогичеÑкий, Целый (Целый16, Целый32, Целый64), Реальный (Float, Double), Строка </td> <td> (3) </td></tr> <tr> <td> hgrid </td> <td> Признак иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¶Ñ‘Ñткой Ñетки в буфере архива </td> <td> (1) </td></tr> <tr> <td> hres </td> <td> Признак иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ выÑокого Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ (микроÑекунды) в буфере архива </td> <td> (1) </td></tr> <tr> <td> reserve </td> <td> Резерв </td> <td> 14 </td></tr> <tr> <td> term </td> <td> Символ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° архива (0x55) </td> <td> 1 </td></tr></table> <p>РазъÑÑнение механизма поÑледовательной упаковки приведено на риÑунке 7. Как можно видеть из риÑунка, признак упаковки Ñодержит длину (нефикÑированные типы) или признак упаковки (фикÑированные типы) отдельно взÑтого значениÑ. Ðто значит, что Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð½ÑƒÐ¶Ð½Ð¾Ð³Ð¾ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾ Ñложить длины вÑех предыдущих дейÑтвительных значений. Выполнение данной операции каждый раз и Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÑвлÑетÑÑ ÐºÑ€Ð°Ð¹Ð½Ðµ накладной операцией поÑтому был внедрён механизм ÐºÐµÑˆÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñмещений значений. Механизм кеширует ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ через предопределённое их количеÑтво, а также кеширует Ñмещение поÑледнего значениÑ, к которому производилÑÑ Ð´Ð¾Ñтуп (отдельно на чтение и запиÑÑŒ). </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:602px;"><a class="image" href="http://oscada.org/wiki/File:FSArch_file_mpack_ru.png"><img class="thumbimage" height="327" src="../files/FSArch_file_mpack_ru.png" width="600" /></a> <div class="thumbcaption">РиÑ.7. Механизм поÑледовательной упаковки значений.</div></div></div></div> <p>Изменение значений внутри ÑущеÑтвующего архива также предуÑмотрено. Однако, ÑƒÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ñ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾ÑÑ‚ÑŒ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñдвига хвоÑта архива, рекомендуетÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑÑ‚ÑŒ Ñту операцию как можно реже и как можно большими блоками. </p> <h2><span class="mw-headline" id=".D0.AD.D1.84.D1.84.D0.B5.D0.BA.D1.82.D0.B8.D0.B2.D0.BD.D0.BE.D1.81.D1.82.D1.8C"><span class="mw-headline-number">3</span> <span id="Efficiency" title="#Efficiency">ÐффективноÑÑ‚ÑŒ</span></span></h2> <p>При проектировании и реализации данного Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð±Ñ‹Ð»Ð¸ заложены механизмы Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ñ ÑффективноÑти процеÑÑа архивированиÑ. </p><p>Первым механизмом ÑвлÑетÑÑ Ð±Ð»Ð¾Ñ‡Ð½Ð¾Ðµ (покадровое или транзакционное) помещение данных в файл архива значений. Такой механизм позволÑет доÑтичь макÑимальной ÑкороÑти архивированиÑ, а Ñледовательно и позволÑет одновременно архивировать больше потоков данных. Опыт практичеÑкого применение показал, что ÑиÑтема K8-3000 Ñ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼ IDE жеÑтким диÑком ÑпоÑобна архивировать до 300000 потоков данных Ñ Ð¿ÐµÑ€Ð¸Ð¾Ð´Ð¾Ð¼ 1 Ñекунда или, ÑиÑтема K5-400 Ñ IDE диÑком (2.5") ÑпоÑобна архивировать до 100 параметров Ñ Ð¿ÐµÑ€Ð¸Ð¾Ð´Ð¾Ð¼ 1 миллиÑекунда. </p><p>Вторым механизмом ÑвлÑетÑÑ ÑƒÐ¿Ð°ÐºÐ¾Ð²ÐºÐ° как текущих значений, так и уÑтаревших файлов архивов, Ð´Ð»Ñ Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ð¸ иÑпользуемого диÑкового проÑтранÑтва. Реализовано два механизма упаковки: механизм поÑледовательной упаковки (архивы значений) и механизм Ð´Ð¾Ð¶Ð°Ñ‚Ð¸Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð¾Ð² Ñтандартным упаковщиком (gzip). Данный подход позволил доÑтичь выÑокой производительноÑти в процеÑÑе Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ… данных Ñ Ñффективным механизмом поÑледовательного ÑжатиÑ, а дожатие Ñтандартным упаковщиком уÑтаревших архивов завершает общую картину компактного Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ñ… маÑÑивов данных. СтатиÑтика практичеÑкого Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² уÑловиÑÑ… реального зашумленного Ñигнала(Ñ…ÑƒÐ´ÑˆÐ°Ñ ÑитуациÑ) показала, что Ñтепень поÑледовательной упаковки ÑоÑтавила 10%, а Ñтепень полной упаковки ÑоÑтавила 71%. </p> <h2><span class="mw-headline" id=".D0.A1.D1.81.D1.8B.D0.BB.D0.BA.D0.B8"><span class="mw-headline-number">4</span> СÑылки</span></h2> <ul><li> <a class="external" href="http://oscada.org/wiki/File:Arch_val_sh_ru.odg" title="File:Arch val sh ru.odg">Диаграмма: ÐžÐ±Ñ‰Ð°Ñ Ñхема процеÑÑа Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹.</a></li> <li> <a class="external" href="http://oscada.org/wiki/File:FSArch_file_struct_ru.dia" title="File:FSArch file struct ru.dia">Диаграмма: ÐžÐ±Ñ‰Ð°Ñ Ñтруктура файла архива значений Archive.FSArch.</a></li> <li> <a class="external" href="http://oscada.org/wiki/File:FSArch_file_mpack_ru.dia" title="File:FSArch file mpack ru.dia">Диаграмма: Механизм поÑледовательной упаковки значений Archive.FSArch.</a></li></ul> </div><table style="border-top: dotted 2px #999999; margin-top: 20pt; color: gray;" width="100%"><tr><td style="text-align: left;" width="40%"><a href="http://oscada.org/wiki/Modules/FSArch/ru">Modules/FSArch/ru</a> - <a href="http://oscada.org/en/main/about-the-project/licenses/">GFDL</a></td><td style="text-align: center;">April 2025</td><td style="text-align: right;" width="40%">OpenSCADA 1+r3018</td></tr></table></body> </html>