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

Как правильно отдать архив значений во внешнюю систему?


Author Message
Written on: 21. 12. 2021 [07:23]
andrey-sw
Андрей Сычев
Topic creator
registered since: 10.12.2008
Posts: 32
При интеграции с внешней системой возник ряд вопросов

Как правильно отдавать архив значений за указанный период во внешнюю систему?
Как правильно отдавать в режиме максимально приближенном к runtime?

В случае с архивированием на БД, ответ вроде очевиден, можно значения брать напрямую из базы, но как то не красиво...
И как быть с архивами на ФС?

Первое что приходит в голову это Пользовательский протокол и входной транспорт... Правда пока не понял как быть с аутентификацией...
Да и реализация довольно сложная получится, может есть решения попроще.
В идеале хотелось бы получить что то вроде REST API к архивам OpenScada.
Written on: 22. 12. 2021 [01:02]
walhi
Sergey Karpesh
registered since: 26.01.2016
Posts: 29
"andrey-sw" wrote:

Как правильно отдавать в режиме максимально приближенном к runtime?

Отдавать что? Текущие значения с датчиков? Так OpenSCADA же умеет в режим Slave.

"andrey-sw" wrote:

Первое что приходит в голову это Пользовательский протокол и входной транспорт... Правда пока не понял как быть с аутентификацией...

Если это связано с предыдущим вопросом, то подобрать то, что оно умеет из коробки. Можно хоть по http выдавать json. Никто не запрещает. По поводу аутентификации. Можно работать туннелями (входящий транспорт на localhost или VPN интерфейс) или просто настройками firewall ограничить доступ. Сам ещё не пробовал, но сокеты в OpenSCADA умеют в SSL.

"andrey-sw" wrote:

В случае с архивированием на БД, ответ вроде очевиден, можно значения брать напрямую из базы, но как то не красиво...
И как быть с архивами на ФС?

На странице http://oscada.org/wiki/Modules/FSArch/ru есть описание формата архиватора на файловую систему. Думаю, что вам проще будет все же через базы данных работать. А там уж любым удобным способом. Хоть PHP.

Written on: 22. 12. 2021 [03:46]
andrey-sw
Андрей Сычев
Topic creator
registered since: 10.12.2008
Posts: 32
"walhi" wrote:

"andrey-sw" wrote:

Как правильно отдавать в режиме максимально приближенном к runtime?

Отдавать что? Текущие значения с датчиков? Так OpenSCADA же умеет в режим Slave.


Имелся в виду следующий момент. Допустим я хочу рисовать график значений за последние 10мин, Данные пишутся каждые 5сек, а архивируются каждую мин. Соответственно будут моменты что данные получены, находятся в буфере но в архив еще не записались. Вот и спросил как избежать таких потерь.

"walhi" wrote:

"andrey-sw" wrote:

Первое что приходит в голову это Пользовательский протокол и входной транспорт... Правда пока не понял как быть с аутентификацией...

Если это связано с предыдущим вопросом, то подобрать то, что оно умеет из коробки. Можно хоть по http выдавать json. Никто не запрещает. По поводу аутентификации. Можно работать туннелями (входящий транспорт на localhost или VPN интерфейс) или просто настройками firewall ограничить доступ. Сам ещё не пробовал, но сокеты в OpenSCADA умеют в SSL.

Имеется ввиду стандартный http транспорт или реализованный через пользовательский протокол?

"walhi" wrote:

"andrey-sw" wrote:

В случае с архивированием на БД, ответ вроде очевиден, можно значения брать напрямую из базы, но как то не красиво...
И как быть с архивами на ФС?

На странице http://oscada.org/wiki/Modules/FSArch/ru есть описание формата архиватора на файловую систему. Думаю, что вам проще будет все же через базы данных работать. А там уж любым удобным способом. Хоть PHP.


С форматами архива сообщений понятно - он хорошо описан, но формат архива значений намного сложнее, описаны лишь принципы и его реализация не совсем тривиальная задача.
А что касается прямого доступа к БД я уже писал, к тому же архивация на ФС все таки более производительна и может случится что писать в БД невыгодно с точки зрения быстродействия, но данные отдавать на внешку для построения например отчетов или другой аналитики нужно...
Written on: 22. 12. 2021 [04:31]
IrmIngeneer
Константин \m/
Contributor
Sponsor
registered since: 16.09.2010
Posts: 185
Вертикальное резервирование. В документации описано.
Written on: 27. 12. 2021 [07:25]
almaz
Almaz Karimov
Contributor
registered since: 25.09.2008
Posts: 516
"andrey-sw" wrote:

При интеграции с внешней системой возник ряд вопросов

Как правильно отдавать архив значений за указанный период во внешнюю систему?
Как правильно отдавать в режиме максимально приближенном к runtime?

Забирать данные в реальном времени по MODBUS/TCP и выполнять архивацию средствами внешней системы.

21 век - век повсеместной автоматизации. Главное - во благо всем людям.



15847