1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Winc 7.3 Использование глобального тега внутри TagPrefix

Ответить

Автор темы
Verner
здесь недавно
здесь недавно
Сообщения: 24
Зарегистрирован: 21 авг 2020, 14:51
Имя: Андрей
Страна: РФ
Поблагодарили: 1 раз

Winc 7.3 Использование глобального тега внутри TagPrefix

Сообщение Verner »

Коллеги, доброго времени суток.

Такой вопрос. Wincc 7.3.
Задача отобразить на главном экране 60 строк с информацией о материале. На главной картинке соответственно 60 pdl и передача данных через тегпрефикс. Всё работает, без проблем.
А теперь поставили задачу, что данные внутри строк (pdl) должны зависеть от глобального тэга, который един на все 60 строк. (если глобальный бит=1 показывать вес, если 0- длину материала)
Банальное решение в виде двух I/O field, видимость которых через Dinamic Dialog свойства Display(зависящего от глобального тега) внутри pdl не сработало.
Подскажите, как внутри pdl с тегпрефиксом, обращаться к глобальному тегу?

stesl
эксперт
эксперт
Сообщения: 1001
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 87 раз
Поблагодарили: 126 раз

Winc 7.3 Использование глобального тега внутри TagPrefix

Сообщение stesl »

Verner писал(а): 27 янв 2021, 12:46 соответственно 60 pdl и передача данных через тегпрефикс
Зачем их столько? Или префикс разный?

Глобальный тег на родительский экран и добирайтесь до Parent.ScreenItems("name_teg_IOfield").OutputValue

Автор темы
Verner
здесь недавно
здесь недавно
Сообщения: 24
Зарегистрирован: 21 авг 2020, 14:51
Имя: Андрей
Страна: РФ
Поблагодарили: 1 раз

Winc 7.3 Использование глобального тега внутри TagPrefix

Сообщение Verner »

stesl писал(а): 27 янв 2021, 12:51 Зачем их столько? Или префикс разный?
Разный. Место1, место2 и так далее.
Глобальный тег на главном экране, по кнопке вкл/выкл.
stesl писал(а): 27 янв 2021, 12:51 Глобальный тег на родительский экран и добирайтесь до Parent.ScreenItems("name_teg_IOfield").OutputValue
А можно чутка подробнее, через куда добираться?)

makesstr
осмотрелся
осмотрелся
Сообщения: 187
Зарегистрирован: 19 сен 2019, 10:09
Имя: Макс
Страна: Россия
город/регион: Славянск-на-Кубани
Благодарил (а): 5 раз
Поблагодарили: 32 раза

Winc 7.3 Использование глобального тега внутри TagPrefix

Сообщение makesstr »

К глобальному тегу в тегпрефиксном окне можно обращаться указав перед названием тега @NOTP::
Привязывать тег к IOField, или к чему угодно можно также через @NOTP::
WinCC 7.4 SP1 Upd15, Step5.6

Автор темы
Verner
здесь недавно
здесь недавно
Сообщения: 24
Зарегистрирован: 21 авг 2020, 14:51
Имя: Андрей
Страна: РФ
Поблагодарили: 1 раз

Winc 7.3 Использование глобального тега внутри TagPrefix

Сообщение Verner »

Коллеги, подскажите что делаю не так?
Название тега "BOOL". Начал тестить на главной страничке. I/o Field, свойство Display. Открываю dinamic Dialog, bool типа, вставляю тэг "@NOTP::Bool" (check проходит без проблем). Внизу соответственно YES/NO. С-акция свойства выглядит вот так
if ("@NOTP::Bool")
return 1;
else
return 0;
Сохраняю, включаю- никакой реакции на изменение тега. Убираю @NOTP- все работает.
И акция стала не Тэг типа, а на Default Trigger.
Внутри тег-префикса аналогично, не реагирует на изменение тега

makesstr
осмотрелся
осмотрелся
Сообщения: 187
Зарегистрирован: 19 сен 2019, 10:09
Имя: Макс
Страна: Россия
город/регион: Славянск-на-Кубани
Благодарил (а): 5 раз
Поблагодарили: 32 раза

Winc 7.3 Использование глобального тега внутри TagPrefix

Сообщение makesstr »

А зачем вы собственно это делаете ч/з С-action? Просто сделайте напрямую без скриптов. Если конечно тег BOOL типа Binary Tag.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
WinCC 7.4 SP1 Upd15, Step5.6

Автор темы
Verner
здесь недавно
здесь недавно
Сообщения: 24
Зарегистрирован: 21 авг 2020, 14:51
Имя: Андрей
Страна: РФ
Поблагодарили: 1 раз

Winc 7.3 Использование глобального тега внутри TagPrefix

Сообщение Verner »

Пробывал напрямую, ничего не вышло.
Да, BOOL тип Binary Tag.
https://yadi.sk/i/iLO94hUa1LcbPA -ссылка на скриншот, через форум добавить не могу.

Сработало только через вот такую костыльную акцию
if ((unsigned long)GetTagDouble ("@NOTP::Bool"))
return 1;
else
return 0;
}

P.s. И я слукавил, Wincc 7.0, систем много, началась путаница в головах...

stesl
эксперт
эксперт
Сообщения: 1001
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 87 раз
Поблагодарили: 126 раз

Winc 7.3 Использование глобального тега внутри TagPrefix

Сообщение stesl »

Verner писал(а): 27 янв 2021, 13:23@NOTP
Отлично. Попробую и возьму в копилку )

makesstr
осмотрелся
осмотрелся
Сообщения: 187
Зарегистрирован: 19 сен 2019, 10:09
Имя: Макс
Страна: Россия
город/регион: Славянск-на-Кубани
Благодарил (а): 5 раз
Поблагодарили: 32 раза

Winc 7.3 Использование глобального тега внутри TagPrefix

Сообщение makesstr »

if ("@NOTP::Bool")
return 1;
else
return 0;
else
return 0;
Не сработало потому что должно быть
if (GetTagBit("@NOTP:Bool"))
{return 1;}
else return 0;
Вы брали не значение тега Bool, а текст "@NOTP::Bool"
WinCC 7.4 SP1 Upd15, Step5.6

stesl
эксперт
эксперт
Сообщения: 1001
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 87 раз
Поблагодарили: 126 раз

Winc 7.3 Использование глобального тега внутри TagPrefix

Сообщение stesl »

makesstr писал(а): 27 янв 2021, 16:00 if (GetTagBit("@NOTP:Bool"))
{return 1;}
else return 0;
Объясните, пожалуйста, по коду, для моего развития, зачем фигурные скобки на первом Return, разве не вся конструкция (c else) должны быть в них? Или же это для объединения операторов, которых здесь один? И также не вижу отличия от кода
Verner писал(а): 27 янв 2021, 13:39 if ((unsigned long)GetTagDouble ("@NOTP::Bool"))
только другой тип...
Или все дело в тех самых фигурных скобках? Которые автор даже не открывает

makesstr
осмотрелся
осмотрелся
Сообщения: 187
Зарегистрирован: 19 сен 2019, 10:09
Имя: Макс
Страна: Россия
город/регион: Славянск-на-Кубани
Благодарил (а): 5 раз
Поблагодарили: 32 раза

Winc 7.3 Использование глобального тега внутри TagPrefix

Сообщение makesstr »

Если честно, я даже не знал что можно писать без скобок :crazy0to:
Интернет выдает сразу вариант со скобками, поэтому и сам их добавлял. Вот тут объясняют.
[+]
https://younglinux.info/c/if-else
Скрипт verner не работал не из-за скобок, а из-за того что он брал имя тега, а не его значение.
WinCC 7.4 SP1 Upd15, Step5.6

stesl
эксперт
эксперт
Сообщения: 1001
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 87 раз
Поблагодарили: 126 раз

Winc 7.3 Использование глобального тега внутри TagPrefix

Сообщение stesl »

makesstr писал(а): 28 янв 2021, 08:14 из-за того что он брал имя тега, а не его значение
Где разница?
stesl писал(а): 28 янв 2021, 04:52 if (GetTagBit("@NOTP:Bool"))
stesl писал(а): 28 янв 2021, 04:52 if ((unsigned long)GetTagDouble ("@NOTP::Bool"))
makesstr писал(а): 28 янв 2021, 08:14 Если честно, я даже не знал что можно писать без скобок
Я вроде знал, но Си у Симатика - чем черт не шутит )))

makesstr
осмотрелся
осмотрелся
Сообщения: 187
Зарегистрирован: 19 сен 2019, 10:09
Имя: Макс
Страна: Россия
город/регион: Славянск-на-Кубани
Благодарил (а): 5 раз
Поблагодарили: 32 раза

Winc 7.3 Использование глобального тега внутри TagPrefix

Сообщение makesstr »

Ну смотрите в теле if должно быть значение типа bool, TRUE или FALSE, то есть надо либо значение бинарного тега брать, либо использовать какое-нибудь сравнение.
if (GetTagBit("@NOTP:Bool")) - здесь берется значение бинарного тега, в теле if'a bool, все ок
if ("@NOTP::Bool") - а здесь текст "@NOTP::Bool", в теле if'a string, а не bool.

if ((unsigned long)GetTagDouble ("@NOTP::Bool")) ну а тут с, натяжечкой, более-менее работоспособно
WinCC 7.4 SP1 Upd15, Step5.6

stesl
эксперт
эксперт
Сообщения: 1001
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 87 раз
Поблагодарили: 126 раз

Winc 7.3 Использование глобального тега внутри TagPrefix

Сообщение stesl »

makesstr писал(а): 28 янв 2021, 08:41 ну а тут с, натяжечкой, более-менее работоспособно
Все, понял. Проморгал выше
Verner писал(а): 27 янв 2021, 13:23 if ("@NOTP::Bool")
Ответить

Вернуться в «WinCC»