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

Скрипт

Ответить

Автор темы
DIMITRII
здесь недавно
здесь недавно
Сообщения: 17
Зарегистрирован: 18 авг 2023, 08:08
Имя: Дмитрий
Страна: Казахстан
Благодарил (а): 1 раз

Скрипт

Сообщение DIMITRII »

Добрый день. Нужна помощь. Имеется IOField в сойство OutputValue я прописал скрипт ВБА типа считывать тег и в зависимости от значения тега выводить тот или иной тег

Dim Num, tag
Set num = HMIRuntime.ActiveScreen.ScreenItems("IOField1")
tag = SmartTags("agzu.RealCodePSM").Value
If tag = 1 Then nUM.OutputValue = SmartTags("agzu.Well1_GeoNum").Value

Но скрипт срабатывает только когда я нажимаю на это поле. Как сделать чтоб срабатывал скрипт при открытии окна

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

Скрипт

Сообщение makesstr »

В таких случаях лучше обходиться без скрипта. Создаете два IOField, на Visible первого назначаете agzu.RealCodePSM, Value - agzu.Well1_GeoNum, второй видим всегда value - иной тег. Первый располагаете по слоям выше второго.
WinCC 7.4 SP1 Upd15, Step5.6

Автор темы
DIMITRII
здесь недавно
здесь недавно
Сообщения: 17
Зарегистрирован: 18 авг 2023, 08:08
Имя: Дмитрий
Страна: Казахстан
Благодарил (а): 1 раз

Скрипт

Сообщение DIMITRII »

Да можно было бы но проблема в том что условий 14 а я показал только одно. Но большое спасибо за совет

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

Скрипт

Сообщение makesstr »

Тогда лучше использовать не VBS а C-Script, потому что в Си есть функция привязки связи IOField и тега.
То есть в VBSе вы можете только прочитать значение тега и положить значение в поле IOFieldа. И это надо делать периодически, будете повторять ежесекундно скрипт - будет ежесекундно обновляться ИОфилд. В общем чтобы это работало нормально надо чтобы скрипт постоянно висел в фоне и выполнялся.
В Си можно один раз при открытии выполнить скрипт по привязке тега к ИОфилд как мы делаем это руками в ГрафикДизайнере один раз и оно будет работать.
Функция называется SetLink
[+]
https://support.industry.siemens.com/fo ... ipt/155880
Но если честно я не вижу преимуществ в писании скрипта на 14 условий чем добавлений 14ИОфилдов с назначением условий на Visible.
WinCC 7.4 SP1 Upd15, Step5.6

Автор темы
DIMITRII
здесь недавно
здесь недавно
Сообщения: 17
Зарегистрирован: 18 авг 2023, 08:08
Имя: Дмитрий
Страна: Казахстан
Благодарил (а): 1 раз

Скрипт

Сообщение DIMITRII »

Еще раз спасибо совет :good:

iceman
здесь недавно
здесь недавно
Сообщения: 22
Зарегистрирован: 15 фев 2018, 07:17
Имя: Александр
Поблагодарили: 7 раз

Скрипт

Сообщение iceman »

День добрый.

Событие окна Events-OpenPicture не подходит?
Если есть окна (PictureWindow), то вместо SetLink лучше использовать префиксы (TagPrefix).

Fess
здесь недавно
здесь недавно
Сообщения: 7
Зарегистрирован: 20 ноя 2023, 23:33
Имя: Владимир
Поблагодарили: 1 раз

Скрипт

Сообщение Fess »

Здравствуйте,
постарайтесь не использовать
HMIRuntime.ActiveScreen
Чтобы ActiveScreen правильно работал, фокус должен находиться на правильном окне. Во время загрузки окна, фокус может находиться в другом окне и скипт не сработает.
Если вы написали скрипт в свойстве OutputValue можете полюзоваться объектом Item , в данном случае это будет ваш I/O-Field
Далее SmartTags использутся только в TIA WinCC Professional/Advanced или в Faceplates в WinCC V7.x/8.0, но в faceplates не работает HMIRuntime.
В вашем случае можно сделать так:

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

tag = HMIRuntime.Tags("agzu.RealCodePSM").Read
If tag = 1 Then Item.OutputValue = HMIRuntime.Tags("agzu.Well1_GeoNum").Read
С уважением
Fess
Ответить

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