Не мигает значок по функции.

Обсуждение SCADA-систем: Citect SCADA, Vijeo Citect, CitectSCADA, CitectFacilities, PowerLogic SCADA, PowerSCADA, MX4SCADA, Desigo Insight.
romasimeiz
Сообщений в теме: 4
Сообщения: 32
Зарегистрирован: 14 май 2015, 09:48

Не мигает значок по функции.

#1

Сообщение romasimeiz » 23 сен 2015, 17:29

Добрый день! Подскажите пожалуйста, почему не удаётся запустить мигание значка по результату функции?
Создал символ, в поле "Анимировать при" написал имя функции iGetKO_Valve2()
Вот сама функция :


Код: Выделить всё

STRING KO;
INT res;

PUBLIC INT FUNCTION iGetKO_Valve2()
KO = "iDigValveCmd_" + IntToStr(curInd) + "[" + IntToStr(iZ2_MF1[1]) + "]";

   IF "1" = TagRead(KO) THEN
   res = 1
   ELSE
   res = 0
   END
   RETURN res;
   
END

Если пробовать отладчиком проверить, то выскакивает ошибка : Error 343: Foreground Cicode Cannot break.
Убрал эту функцию из анимации и попробовал в отладчике по нажатию кнопки (чтобы не было вышепреведенной ошибки), функция возвращает 1. Т.е. всё нормально. Алгоритм работает как надо.



Аватара пользователя
alex
Администратор
Сообщений в теме: 3
Сообщения: 1764
Зарегистрирован: 05 апр 2010, 21:58
Откуда: Москва
Благодарил (а): 50 раз
Поблагодарили: 107 раз
Контактная информация:

Re: Не мигает значок по функции.

#2

Сообщение alex » 23 сен 2015, 19:36

Есть такая функция как TraceMsg, с помощью которой можно через окно отладки посмотреть как идет выполнение фунцкии, но мне кажется что проблема как и с Cicode object, нельзя вызывать блокирующие функции,к которым относится TagRead. Попробуйте.



romasimeiz
Сообщений в теме: 4
Сообщения: 32
Зарегистрирован: 14 май 2015, 09:48

Re: Не мигает значок по функции.

#3

Сообщение romasimeiz » 24 сен 2015, 10:13

спасибо.
функция, алгоритмически работает правильно. я убирал её из объекта анимации и удалось проверить результаты её работы в отладчике.
но какова альтернатива:
допустим есть десять девайсов. чтобы не размножать десять страниц с одинаковыми лампочками, я хотел написать скрипт, который в зависимости от выбора страницы, одна лампочка тянула данные из разных массивов ?
почему этот Citect такой мудрёный, что нельзя сделать элементарную вещь ?



Аватара пользователя
alex
Администратор
Сообщений в теме: 3
Сообщения: 1764
Зарегистрирован: 05 апр 2010, 21:58
Откуда: Москва
Благодарил (а): 50 раз
Поблагодарили: 107 раз
Контактная информация:

Re: Не мигает значок по функции.

#4

Сообщение alex » 24 сен 2015, 10:27

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



romasimeiz
Сообщений в теме: 4
Сообщения: 32
Зарегистрирован: 14 май 2015, 09:48

Re: Не мигает значок по функции.

#5

Сообщение romasimeiz » 24 сен 2015, 11:09

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

вот это мне и не очень понятно...



Аватара пользователя
alex
Администратор
Сообщений в теме: 3
Сообщения: 1764
Зарегистрирован: 05 апр 2010, 21:58
Откуда: Москва
Благодарил (а): 50 раз
Поблагодарили: 107 раз
Контактная информация:

Re: Не мигает значок по функции.

#6

Сообщение alex » 24 сен 2015, 14:26

Тут наверное с джиннами программно не получится, во всяком случае я не нашел, с ними мы наверное имеет то что надо только в режиме конфигурирования, а в режиме исполнения с ними так не получится, но связывать графику с нужным тегом программно "на лету" в режиме исполнения можно следующим образом:

  • В нужное поле, например, в поле Appearance->Display Value->Numeric expression графического объекта Text вписываем такую конструкцию: ?TagName?
  • Далее вызываем такой код для привязки этого поля к тегу Tag1:

    Код: Выделить всё

    Ass(-3,"TagName", "Tag1",0);
    PageDisplay("PageNameWithTextObject");
  • Или другой код, для привязки этого поля к тегу Tag2:

    Код: Выделить всё

    Ass(-3,"TagName", "Tag2",0);
    PageDisplay("PageNameWithTextObject");



romasimeiz
Сообщений в теме: 4
Сообщения: 32
Зарегистрирован: 14 май 2015, 09:48

Re: Не мигает значок по функции.

#7

Сообщение romasimeiz » 24 сен 2015, 14:48

спасибо! полезная информация! буду иметь в виду!
в моём случае, чувствую, наверное придётся мучиться с CASE'ами




Если эта тема может быть полезна другим, поделитесь ссылкой:

Вернуться в «Citect SCADA, Vijeo Citect, CitectSCADA, CitectFacilities, PowerLogic SCADA, PowerSCADA, MX4SCADA, Desigo Insight»