PDA

Просмотр полной версии : Поведение системы после перезагрузки ПК



Hemann
12.07.2022, 07:38
Коллеги, доброе утро!

Наша SCADA передает уставки и сигналы управления по сети Ethernet на программируемое реле ОВЕН ПР103. Если по какой-то причине произошла перезагрузка ПК, то при новом запуске SCADA-проекта он выдает на ПР103 нули по всем уставкам. Подскажите, пожалуйста, как можно сделать так, чтобы запоминались значения регистров, передаваемых на ПР103, и при новом запуске проекта на этот ПР103 выдавались именно запомненные значения, а не нулевые?

b_aleks
12.07.2022, 08:08
Коллеги, доброе утро!

Наша SCADA передает уставки и сигналы управления по сети Ethernet на программируемое реле ОВЕН ПР103. Если по какой-то причине произошла перезагрузка ПК, то при новом запуске SCADA-проекта он выдает на ПР103 нули по всем уставкам. Подскажите, пожалуйста, как можно сделать так, чтобы запоминались значения регистров, передаваемых на ПР103, и при новом запуске проекта на этот ПР103 выдавались именно запомненные значения, а не нулевые?

У переменных, которые формируют значения уставок установить свойство "Сохранять = Да", также поставить периодиеческий тип записи у протокола.

Hemann
12.07.2022, 10:17
Спасибо, попробую!

Hemann
12.07.2022, 10:25
А вот еще вопрос. Мы используем бесплатную версию на 32 тэга. Когда запускаем проект из системы разработки, то можем подключаться к проекту с других устройств (например, смартфона) просто вводя в адресную строку браузера адрес вида 192.168.0.23:8043 и все нормально работает. Но если мы запускаем проект через среду исполнения, то с удаленного устройства подключиться не можем совсем. На самом же компьютере при запуске с адресом 127.0.0.1:8043 все работает, а при адресе 192.168.0.23:8043 только открывается окно идентификации пользователя, мы вводим в него пароль — и появляется внизу экрана на красном фоне надпись «Ошибка подключения».
Подскажите, пожалуйста, в чем дело?

b_aleks
12.07.2022, 13:17
А вот еще вопрос. Мы используем бесплатную версию на 32 тэга. Когда запускаем проект из системы разработки, то можем подключаться к проекту с других устройств (например, смартфона) просто вводя в адресную строку браузера адрес вида 192.168.0.23:8043 и все нормально работает. Но если мы запускаем проект через среду исполнения, то с удаленного устройства подключиться не можем совсем. На самом же компьютере при запуске с адресом 127.0.0.1:8043 все работает, а при адресе 192.168.0.23:8043 только открывается окно идентификации пользователя, мы вводим в него пароль — и появляется внизу экрана на красном фоне надпись «Ошибка подключения».
Подскажите, пожалуйста, в чем дело?

Хз, у меня на демо РТ32 с вашим проектом все работает
61623

P.s. А, стоп, я же на локалхост заходил. RT32 не поддерживает удаленных клиентов, насколько я знаю.

Hemann
12.07.2022, 18:16
У переменных, которые формируют значения уставок установить свойство "Сохранять = Да", также поставить периодиеческий тип записи у протокола.

Попробовал. Так не работает.

Hemann
12.07.2022, 18:17
Хз, у меня на демо РТ32 с вашим проектом все работает
61623

P.s. А, стоп, я же на локалхост заходил. RT32 не поддерживает удаленных клиентов, насколько я знаю.

Да, это ограничение бесплатной версии.

b_aleks
13.07.2022, 09:00
Попробовал. Так не работает.

Здесь должно работать. У меня такой функционал реализован в проекте.

Hemann
13.07.2022, 11:00
Здесь должно работать. У меня такой функционал реализован в проекте.

Это если данные на тэг передаются непосредственно с контрола. Если эти данные передаются с контрола на тэг через какю-либо программу, то кроме того что Вы написали, нужно сделать следующее (по данным наконец-то ответившей техподдержки MS4D):
Заголовок ST:

VAR_INPUT RETAIN
SourceTag: LREAL := 0;
END_VAR

VAR_OUTPUT
EnO: BOOL := True;
TargetTag: SYSTEM_LREAL_PARAM := (Value := 0, SourceTime := DT#0001-01-01-00:00, StatusCode := 16#80320000);
END_VAR

VAR
Initialised: BOOL := False;
LastTagValue: LREAL := 0;
END_VAR



Код:

IF NOT Initialised THEN
LastTagValue := SourceTag;
Initialised := True;
END_IF;

IF LastTagValue <> SourceTag THEN
TargetTag.StatusCode := 0;
END_IF;

TargetTag.Value := SourceTag;
LastTagValue := SourceTag;

b_aleks
14.07.2022, 09:25
Это если данные на тэг передаются непосредственно с контрола. Если эти данные передаются с контрола на тэг через какю-либо программу, то кроме того что Вы написали, нужно сделать следующее (по данным наконец-то ответившей техподдержки MS4D):
Заголовок ST:

VAR_INPUT RETAIN
SourceTag: LREAL := 0;
END_VAR

VAR_OUTPUT
EnO: BOOL := True;
TargetTag: SYSTEM_LREAL_PARAM := (Value := 0, SourceTime := DT#0001-01-01-00:00, StatusCode := 16#80320000);
END_VAR

VAR
Initialised: BOOL := False;
LastTagValue: LREAL := 0;
END_VAR



Код:

IF NOT Initialised THEN
LastTagValue := SourceTag;
Initialised := True;
END_IF;

IF LastTagValue <> SourceTag THEN
TargetTag.StatusCode := 0;
END_IF;

TargetTag.Value := SourceTag;
LastTagValue := SourceTag;

Так я это вам и написал в самом начале, что переменные, которые формируют значение уставок, нужно сделать сохраняемыми (т.е. RETAIN)

P.S. Но вообще, целесообразнее это делать в самом ПЛК (или ПР), так будет логически правильно, чтобы процесс управления не зависел от скады

Hemann
14.07.2022, 10:49
Так я это вам и написал в самом начале, что переменные, которые формируют значение уставок, нужно сделать сохраняемыми (т.е. RETAIN)

P.S. Но вообще, целесообразнее это делать в самом ПЛК (или ПР), так будет логически правильно, чтобы процесс управления не зависел от скады

То что RETAIN - это понятно. Но, как выяснилось, еще и вышеуказанный скрипт тоже нужен. А с ПЛК - согласен, но нам такая система досталась, а денег на переписывание программы ПЛК нам давать не хотят.