УкраїнськаEnglishmRussian
Вхід/Новий
У темі немає нових постів

Локальные переменные, сохраняющие значение при перезапуске scada- есть ли аналог такого в openSCADA ?


Автор Повідомлення
Повідомлення створено: 15. 02. 2013 [11:53]
s60ru
Антон Петров
Автор теми
Зареєстрован(а) с: 10.05.2012
Повідомлення: 141
В скадах обучно теги делятся на связанные с устройством и локальные, которые можно использовать на свое усмотрение, в частности как глобальные переменные по всех скаде. В некоторых скадах локальные переменные сохраняют свое значение при перезапуске скады.
Мы это используем для сохранения уставок . Например, скада работает, уставки записаны в ПЛК, а потом ПЛК перезапустили - с входов то он значения подтянет, а вот свои внутренние переменные (где уставки и хранятся) обнулит. При условии , что в этот момент скада работает, средствами скады мониторим значение уставки, которая не может иметь нулевое значение в штатном режиме и копируем теги в ПЛК, если при запуске скады обнаруживается, что уставки в ПЛК не нулевые, а в скаде нулевые, то скада копирует их из ПЛК к себе.

Есть ли в openSCADA сущность, подобная "локальным тегам" в других скада ?
Повідомлення створено: 15. 02. 2013 [12:04]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3747
"s60ru" wrote:

Есть ли в openSCADA сущность, подобная "локальным тегам" в других скада ?

Есть гараздо более мощное, понятие виртуальных источников данных и логического уровня.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 15. 02. 2013 [12:51]
s60ru
Антон Петров
Автор теми
Зареєстрован(а) с: 10.05.2012
Повідомлення: 141
1) C логическим уровнем все понятно, это обработка "железного" сигнала . Создается шаблон, шаблон натягивается на железный сигнал... Как его можно "прикрутить" в качестве локальной переменной ?

2) ЯваКалькулятор - это первое на чем стал делать... НО! Мне нужна универсальная функция (без набивания 100 строк-аттрибутов, железно привязывающих ее к чему-либо) - а-ля copy_tags(int CopyDir), где CopyDir - это направление копирования: 1 - SCADA->PLC, 2 - PLC->SCADA.

Я создал контроллер "sets". В поля данных внес список тегов:
I_TAG1
I_TAG2
I_TAG3
I_TAG4
I_TAG5

Функция должна быть универсальная, для всех проектов, меняешь только поля данных соотвествующего контроллера в ЯваКалькуляторе....

в функции я читаю с поле конфигурации FLD, могу работать с этим списком тегов, например, в массив распарсить и т.д. В ней же можно получить список железных тегов и их значений, далее что-либо с ними делать.

У функции есть атрибуты inp_arr, out_arr типа ОБЪЕКТ. Получается эту функцию можно вызывать с любого места в openSCADA, например, по кнопке, по событию...

Вопрос как сохранять значения "локальных тегов"-полей данных между перезапусками скады?

Или остается только писать/читать в БД или файл ?
Повідомлення створено: 15. 02. 2013 [13:33]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3747
"s60ru" wrote:

1) C логическим уровнем все понятно, это обработка "железного" сигнала . Создается шаблон, шаблон натягивается на железный сигнал... Как его можно "прикрутить" в качестве локальной переменной ?

Значит не понятно раз переспрашиваете!

"s60ru" wrote:

2) ЯваКалькулятор - это первое на чем стал делать... НО! Мне нужна универсальная функция (без набивания 100 строк-аттрибутов, железно привязывающих ее к чему-либо) - а-ля copy_tags(int CopyDir), где CopyDir - это направление копирования: 1 - SCADA->PLC, 2 - PLC->SCADA.

В шаблон положите и используйте многократно. Концепцию логического уровня перечитайте!

"s60ru" wrote:

Вопрос как сохранять значения "локальных тегов"-полей данных между перезапусками скады?
Или остается только писать/читать в БД или файл ?

Или не строить догадок, а читать документацию.
Где написано, что вычислительный контекст всех вычислителей сохраняется: по нажатию на кнопку сохранить в БД, функцией сохранить при выходе или сохранять периодически: http://wiki.oscada.org/Doc/OpisanieProgrammy/part4/files?get=sys_st.png

Learn, learn and learn better than work, work and work.
Повідомлення створено: 18. 02. 2013 [07:55]
s60ru
Антон Петров
Автор теми
Зареєстрован(а) с: 10.05.2012
Повідомлення: 141
Логический уровень требует набивания атрибутов, чтоб ы к ним можно было обратится из любого другого места скады, чего по условию задачи хотелось бы избежать....
Повідомлення створено: 18. 02. 2013 [08:52]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3747
"s60ru" wrote:

Логический уровень требует набивания атрибутов, чтоб ы к ним можно было обратится из любого другого места скады, чего по условию задачи хотелось бы избежать....

Вы сами себе противоречите и примеров похоже не замечаете!
Если условия задачи это первое сообщение:
"s60ru" wrote:

Мы это используем для сохранения уставок . Например, скада работает, уставки записаны в ПЛК, а потом ПЛК перезапустили - с входов то он значения подтянет, а вот свои внутренние переменные (где уставки и хранятся) обнулит.

В библиотеке базовых шаблонов есть "Аналог. сигн. (Униф)", который содержит уставки, границы и т.д. типового аналогового параметра, которые сохраняются в контексте контроллера логического уровня, "ModBus" или "Siemens". Это позволяет реализовать объектный подход — инкапсуляцию свойств логической единицы в одном месте!

В конце концов если уставки в виде атрибутов очень смущают то их можно реализовать и в виде "Публичная константа", которую можно будет затем указать во вкладке "Конфигурация шаблона" и она будет сохраняться на равне с атрибутами. А если уставок много и лень для каждой создавать IO шаблона, то их можно сделать группой в виде типа "Объект" или даже структурированным текстом "Текст", хотя потом всё равно обычно нужно передавать отдельно.

Learn, learn and learn better than work, work and work.
Повідомлення створено: 18. 02. 2013 [09:03]
s60ru
Антон Петров
Автор теми
Зареєстрован(а) с: 10.05.2012
Повідомлення: 141
..... но в функции можно набить атрибутов вида tag_1, tag_2, tag_3 , а связывать с конкретными переменными в конкретном проект через "Поля данных" .....
Повідомлення створено: 18. 02. 2013 [09:54]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3747
"s60ru" wrote:

..... но в функции можно набить атрибутов вида tag_1, tag_2, tag_3 , а связывать с конкретными переменными в конкретном проект через "Поля данных" .....

Набивайте и связывайте, хотя можно и не связывать а обращаться напрямую, ещё можно написать свою функцию досупа к переменным через БД и вызывать её и ещё много чего можно с помощью пользовательского API: http://wiki.oscada.org/Doc/OpisanieProgrammy#h920-1

У меня с этим небыло и нет никаких проблем. Если они у Вас есть то пора ломать устоявшиеся стериотипы мышления тэгами!

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



7522