Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Desigo Insight Citect Scada
Диалог специалистов АВОК > ОБЩИЙ ФОРУМ > Автоматизация систем
zedzedus
Добрый день.
Делаю проект на Desigo Insight Citect Scada.
Есть физический дискретный вход на модуле - кнопка "Сброс". Тег назван допустим "Reset"
Чтобы "эмулировать" нажание кнопки "Сброс" программно - необходимо в "Каталоге обьектов" тег "Reset":
1. установить параметр "OoServ" в значение "On"
2. Параметр "PrVal" в значение "On"
3. установить параметр "OoServ" в значение "Off"
Так из "Каталога обьектов" это получается нормально, но как сделать в Scada кнопку которая бы делала этот сброс?
Далаю на кнопке скрипт примерно так - :
B_Reset_OoServ=1;
B_Reset_PrVal=1;

ну или так
B_Reset_OoServ=true;
B_Reset_PrVal=true;

При этом ошибок нет, компилируется. "тестовые" символы которые отображают состояния параметров Reset_OoServ и Reset_PrVal видно что меняют состояние, но в каталоге обьектов ничего не меняется.

P.S.
код
B_Reset_OoServ=On;
B_Reset_PrVal=On;
выдаёт ошибку что "Не найден тег"

Заранее спасибо огромное!
Polopolar
Если хотите реализовать последовательность каких-то действий, то лучше это делать в Cicode, ибо функционал менюшек тулса ограничен количеством символов.
Цитата
FUNCTION Button_Reset()
IF (0<>Message("Message", "Чтобы произвести сброс, нажмите OK", 1)) THEN RETURN; END
B_Reset_OoServ=1;
SleepMS(50);
B_Reset_PrVal=1;
SleepMS(50);
B_Reset_OoServ=0;
SleepMS(50);
Message("Message", "Сброс произведен", 0);
END

Чтобы переключить значение булевой переменной, надо воспользоваться командой Toggle.
Цитата
Toggle(B_Reset_PrVal)

Однако, не совсем понятно:
1. Зачем переводить ОоСерв туда сюда.
2. Сброс производится импульсом или изменением состояния тэга?
zedzedus
1. Зачем переводить ОоСерв туда сюда.
без этого у PrVal невозможно поменять значение
2. Сброс производится импульсом или изменением состояния тэга?
импульсом - то есть это физическая кнопка "сброс" на щите управления
Polopolar
Если импульс, то Pulse(sTag).

Не понял: хотите управлять исполнительным механизмом (выполненным в виде кнопки) с помощью дискретного модуля входа (типа TXM1.8D или TXM1.16D)? тогда вам нужен релейный модуль выхода типа (TXM1.6R).

Все понял, "сам дурак".

Попробуйте добавить запаздывание (команда Sleep или SleеpMS).
zedzedus
Цитата(Polopolar @ 31.5.2016, 11:50) *
Если импульс, то Pulse(sTag).

Не совсем понял: хотите управлять исполнительным механизмом (выполненным в виде кнопки) с помощью дискретного модуля входа (типа TXM1.8D или TXM1.16D)? тогда вам нужен релейный модуль выхода типа (TXM1.6R)

Нет конечно...
Есть вентустановка (приточка+вытяжка). В случае возникновения аварии на ней ( пожар/обрыв ремнявентилятора/заморозка) для последущего запуска надо нажать кнопку на шкафу управления "Сброс". Проект Xworks программировал подрядчик (хотя у меня есть исходник и возможность исправить и "залить" проект в контроллер PXC100ED ).
Я рисую сейчас только "верхний" уровень. Хочется чтобы диспетчер не бегал на 9 этаж нажимать кнопку, а нажимал её на экране.
Сейчас попробую по Вашим советам реализовать эту кнопку. Спасибо большое.
Обучение по Дезиге проходил 11 лет назад. Уже всё без практики позабылось. Но новое обучение в Сименс начальство не отпускает, хотя Сименс уже и приглашение прислал sad.gif(
Polopolar
Окончательно запутался:
1. Проект вентустановки выполнен на средствах Siemens (контроллеры PXC100ED, PXC200ED, PXC3.E.. и т.д. и т.п...) и логика забита в XWorks, или сделан на другом контроллере (Pixel, Carel, Овен и т.д. и т.п...), не входящих в семейство Siemens, и заведен в скаду посредством станции PXC...-U с модулями и т.п. с забитием тэгов в XWorks или заведен в скаду уже посредством Citect?
2. Если надо сэмулировать нужное положение дискретного входа, то конечно без ОоСерв не обойтись, однако, если логика прописана на более низком уровне, то эта эмуляция ничего не даст кроме изменения состояния на станции диспетчера.
3. Не проще ли прописать в логике вентустановки тэг кнопки сброса и по этому адресу отсылать запрос на срабатывание сброса?
4. Даже если сделаете кнопку сброса аварии, не надо ли будет убедится так сказать на месте по какой причине произошла авария?
zedzedus
Не хочется очень лезть в чужой код ((
Всё на Сименсе
Вот такой код на кнопке (во вложении)
Внизу под кнопокой 2 красных символа -
Первый - состояние PrVal
Второй - состояние OoServ
При нажатии на Сброс эти символы с интервалом 1сек меняют своё состояние на зеленый., потом снова краснеют.
Так же вложил картинку со свойствами тега

zedzedus
Похоже это проблема не в скрипте...
Если меняю "регулятора уставки" (genies wk000_0_mx02_n ) , то ситуация аналогичная - уставка только на экране меняется на 10 секунд, а потом снова возвращается на предыдущее значение. А из Каталога Объектов всё фиксируется на постоянку.
zedzedus
Три дня проб и экспериментов... Результата ноль ((
lamer
Не совсем понял зачем использовать OoServ ??? Попробуйте использовать команду pulse ?

И еще вопрос не по теме. Кружочки на мнемосхеме это и есть вся диспетчеризация вент.установки ?
Polopolar
Цитата(lamer @ 2.6.2016, 13:16) *
Не совсем понял зачем использовать OoServ ??? Попробуйте использовать команду pulse ?

И еще вопрос не по теме. Кружочки на мнемосхеме это и есть вся диспетчеризация вент.установки ?

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

имхо проще в автоматике найти вход резета и параллельно ему воткнуть тэг удаленного ручного резета через блок "или".

Однако, также может не по теме, но все равно не понял зачем сбрасывать аварию того же вентилятора, капилярки или еще какой-нибудь, когда она тут же снова выскочит или вообще не сбросится, пока не устранят непосредственно на месте причину аварии.
lamer
Цитата(Polopolar @ 2.6.2016, 12:04) *
Его используют, потому что меняют значение тэга входа, что, соответственно, никакого результата для тс и не приносит.

имхо проще в автоматике найти вход резета и параллельно ему воткнуть тэг удаленного ручного резета через блок "или".

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


Например дребезг контактов, аварийный сигнал появился и пропал, например. Триггер словил аварию, её сбросили.
Polopolar
Цитата(lamer @ 2.6.2016, 14:09) *
Например дребезг контактов, аварийный сигнал появился и пропал, например. Триггер словил аварию, её сбросили.

Дак тогда для этого запаздывание на срабатывание делают или туже мертвую зону.
zedzedus
Цитата(lamer @ 2.6.2016, 14:16) *
И еще вопрос не по теме. Кружочки на мнемосхеме это и есть вся диспетчеризация вент.установки ?

Нет конечно - вот готовый вариант схемы

И главное - я нашёл ответ на свой вопрос - помогли коллеги!!
В Citect Project Editor надо запустить Tools - Project Wizard - и далее ok ok ok...
Я так и не понял что это даёт, но главное - ВСЁ НАЧИНАЕТ РАБОТАТЬ !!
При чём делать надо это кажый раз при импорте/экспорте проекта на рабочую станцию
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.