Добрый день.
Есть такая схема:
SCADA ---- OPC ---- WinDecont ---- Ethernet ---- A9
Задача: хранение некоторых значений в энергонезависимой памяти A9 с заданием их из скады.
Реализовано: уставки хранятся в массиве глобальных переменных компонента разработчика, в контроллере WinDecont организованы два списка (аналоги-чтение/аналоги-запись) на одни и теже списки переменных, написан компонент разработчика, который в зависимости от некоторых условий (первый старт, состояние связи с A9) включает/отключает эти списки обмена.
Проблемы: при кратковременном пропадании связи с A9 дискрет состояния связи с ним (который выставляется компонентом База-Клиент при неудачной попытке чтения другого списка из A9) не успевает сбрасываться и переменные получают значение "0" и код ошибки 2819, которые потом при восстановлении связи передаются в A9, затирая реальные значения уставок.
Вопрос: вероятно, что эта схема избыточна и неправильна. Каким образом ПРАВИЛЬНО организовать схему передачи уставок из скады в A9?
Хранение уставок в A9. Организация обмена
pooh писал(а):В компоненте Разработчика сделайте регистрацию значения неопределенности при чтении аналогов. Если у входного аналога есть значение неопределенности, значит в глобальную переменную (уставку) ничего не пишите.
Так и сделано (в A9 и в WD). Но мне такой путь кажется несколько неправильным, костыль, если это можно так назвать.
Проверку на неопределенность надо проводить в любом случае.
Правильно сделать так: уставка пишется из SCADA через WinDecont, например, в 301 аналог А9-го через список аналоги-запись. Если нужно узнать реальное значение уставки (действительно-ли то записалось), тогда через компонент Разработчика в А9-ом из глобальной переменной выводится в 302 аналог и списком аналоги чтение читается в базу параметров WinDecont и оттуда попадает в SCADA.
Правильно сделать так: уставка пишется из SCADA через WinDecont, например, в 301 аналог А9-го через список аналоги-запись. Если нужно узнать реальное значение уставки (действительно-ли то записалось), тогда через компонент Разработчика в А9-ом из глобальной переменной выводится в 302 аналог и списком аналоги чтение читается в базу параметров WinDecont и оттуда попадает в SCADA.
я сделал так: у меня изменение кэффициента. В компоненте входной аналог я присваивал глоб.переменной с проверкой что аналог больше "0" иначе оставалось старое значение, а потом в этот же аналог(входной) записывал значение из глоб.переменной. Все работает замечательно.
В вашем случае, если требуются отрицательные значение можно изменить проверку входного аналога только на "неопределенность"
В вашем случае, если требуются отрицательные значение можно изменить проверку входного аналога только на "неопределенность"