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

Как сделать в TIA Portal WinCC Professional неоднократно-открываемые отдельные окна

ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)
Ответить

Автор темы
AlexRezn
здесь недавно
здесь недавно
Сообщения: 20
Зарегистрирован: 22 июн 2017, 03:55
Имя: Александр
Страна: Россия
город/регион: Иркутск
Благодарил (а): 4 раза
Поблагодарили: 4 раза

Как сделать в TIA Portal WinCC Professional неоднократно-открываемые отдельные окна

Сообщение AlexRezn »

Вопрос возник по следующей причине.

Для открытия по кнопке отдельного окна с экранной формой я нашёл лишь функцию ActivateScreenInScreenWindow.
Кладу на форму ScreenWindow, для стандартного закрытия его по крестику разрешаю в свойствах "Header" и "Close button".
На кнопке на Click садится вызов ActivateScreenInScreenWindow с указанием в параметрах этого окна и нужного экрана.

Работает только один раз. То есть кликом открываем, закрываем крестиком - больше не вызывается.

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

Отсюда второй вопрос:
В нормальном WinCC есть базовые функции библиотеки под названием "BASIC PROCESS CONTROL". В частности, SSMOpenTopField и т.п. для создания окон процесса с выдачей туда экранных форм. Куда делась эта библиотека в Тиа Портале, и что её заменяет?
Аватара пользователя

M3f
не первый раз у нас
не первый раз у нас
Сообщения: 377
Зарегистрирован: 31 янв 2017, 11:08
Имя: Николай
Благодарил (а): 8 раз
Поблагодарили: 116 раз

Как сделать в TIA Portal WinCC Professional неоднократно-открываемые отдельные окна

Сообщение M3f »

AlexRezn, при нажатии "крестика" объект "Screen window" скрывается, поэтому при его вызове надо прописывать св-ва "Visibility".
Например, я вызываю окно так:

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

Sub OnClick(ByVal item)
SetPropertyByConstant "Main_Screen", "SW_Pump_3_4", "ScreenName", "Pump_3_Screen"
SetPropertyByConstant "Main_Screen", "SW_Pump_3_4", "CaptionText", "Насосный агрегат №3"
SetPropertyByConstant "Main_Screen", "SW_Pump_3_4", "Left", "673"
SetPropertyByConstant "Main_Screen", "SW_Pump_3_4", "Top", "409"
SetPropertyByConstant "Main_Screen", "SW_Pump_3_4", "Visible", "TRUE"
End Sub
EPLAN Electric P8 Professional+ 2.7 HF1 11496 | TIA Portal Professional V17 Upd1 | Creo Parametric 4.0 M070

Автор темы
AlexRezn
здесь недавно
здесь недавно
Сообщения: 20
Зарегистрирован: 22 июн 2017, 03:55
Имя: Александр
Страна: Россия
город/регион: Иркутск
Благодарил (а): 4 раза
Поблагодарили: 4 раза

Как сделать в TIA Portal WinCC Professional неоднократно-открываемые отдельные окна

Сообщение AlexRezn »

M3f, Спасибо, получилось!

Касательно заголовка вопрос.
SetPropertyByConstant "Main_Screen", "SW_Pump_3_4", "CaptionText", "Насосный агрегат №3"

Я пробовал двумя вариантами: этим и SetPropChar
В обоих вариантах на месте русских букв вопросительные знаки. В языках проекта указано два языка - английский и русский. В прямом задании в свойствах экранных объектов русских текстов всё работает.
Но здесь - скрипт, почему-то не ловит кодировку. Что делать?
Аватара пользователя

M3f
не первый раз у нас
не первый раз у нас
Сообщения: 377
Зарегистрирован: 31 янв 2017, 11:08
Имя: Николай
Благодарил (а): 8 раз
Поблагодарили: 116 раз

Как сделать в TIA Portal WinCC Professional неоднократно-открываемые отдельные окна

Сообщение M3f »

AlexRezn, Скрипт на VBA или C?
EPLAN Electric P8 Professional+ 2.7 HF1 11496 | TIA Portal Professional V17 Upd1 | Creo Parametric 4.0 M070

Автор темы
AlexRezn
здесь недавно
здесь недавно
Сообщения: 20
Зарегистрирован: 22 июн 2017, 03:55
Имя: Александр
Страна: Россия
город/регион: Иркутск
Благодарил (а): 4 раза
Поблагодарили: 4 раза

Как сделать в TIA Portal WinCC Professional неоднократно-открываемые отдельные окна

Сообщение AlexRezn »

На С скрипт.
Аватара пользователя

M3f
не первый раз у нас
не первый раз у нас
Сообщения: 377
Зарегистрирован: 31 янв 2017, 11:08
Имя: Николай
Благодарил (а): 8 раз
Поблагодарили: 116 раз

Как сделать в TIA Portal WinCC Professional неоднократно-открываемые отдельные окна

Сообщение M3f »

AlexRezn, была аналогичная проблема с С-скриптами, перелопатил кучу вариантов ничего не помогло. Была какая-то несовместимость сборки и кодировки под С. Как вариант попробуйте в настройках: "WinCC-Language&font-Language settings for script" выставить нужный язык.
В итоге писал вызов окон, и там где надо было прописывать наименование на русском, на VB.
EPLAN Electric P8 Professional+ 2.7 HF1 11496 | TIA Portal Professional V17 Upd1 | Creo Parametric 4.0 M070

Автор темы
AlexRezn
здесь недавно
здесь недавно
Сообщения: 20
Зарегистрирован: 22 июн 2017, 03:55
Имя: Александр
Страна: Россия
город/регион: Иркутск
Благодарил (а): 4 раза
Поблагодарили: 4 раза

Как сделать в TIA Portal WinCC Professional неоднократно-открываемые отдельные окна

Сообщение AlexRezn »

M3f, Николай, ну, установка языков ничего не даёт, придётся переводить скрипт в Бэйсик.
Не подскажете, как мне в Бэйсике заменить Сишное

SetPropertyByConstant(GetParentScreen(screenName), GetParentScreenWindow(screenName),"CaptionText", "Дозатор 1_1");
(то есть у родительского ScreenWindow, которое вызвало текущий Screen, заменить заголовок)

и типа
SetPropertyByConstant(ParentScreen, ParentWindow,"Height", "424");
SetPropertyByConstant (screenName, "", "Height", "375");
(менять свойства родительского и своего окон)

В Си screenName дают прямо в параметрах обработчика. А в Бэйсике нет функций GetParentScreen и GetParentScreenWindow, и входных параметров.

Видимо, всё надо брать в объекте HMIRuntime, но я не могу в нём разобраться по бестолковому хэлпу. Пример нужен.
Аватара пользователя

M3f
не первый раз у нас
не первый раз у нас
Сообщения: 377
Зарегистрирован: 31 янв 2017, 11:08
Имя: Николай
Благодарил (а): 8 раз
Поблагодарили: 116 раз

Как сделать в TIA Portal WinCC Professional неоднократно-открываемые отдельные окна

Сообщение M3f »

Из руководства, для примера:

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

'Programming language: VBS
SetPropertyByTagIndirect GetParentScreen(screenName), GetParentScreenWindow(screenName), "ScreenName", "HMI_value_1"
'User defined code
...
Аналог:

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

{
// Programming language: C
SetPropertyByTagIndirect (GetParentScreen(screenName), GetParentScreenWindow(screenName), "ScreenName", "HMI_value_1");
// User defined code
...
}
EPLAN Electric P8 Professional+ 2.7 HF1 11496 | TIA Portal Professional V17 Upd1 | Creo Parametric 4.0 M070

Автор темы
AlexRezn
здесь недавно
здесь недавно
Сообщения: 20
Зарегистрирован: 22 июн 2017, 03:55
Имя: Александр
Страна: Россия
город/регион: Иркутск
Благодарил (а): 4 раза
Поблагодарили: 4 раза

Как сделать в TIA Portal WinCC Professional неоднократно-открываемые отдельные окна

Сообщение AlexRezn »

M3f,
Видел это в хэлпе. Я пробовал эти родительские функции, не работают они в Бэйсике. (((

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

Либо screenName, передаваемое в Си-варианте, какое-то не то, что я вынужден указывать в явном виде стрингом в Бэйсике. Как получить программно текущее screenName, совпадающее с Си-шным, непонятно.

Конкретно иерархия:

Окно рантайма c StartScreen - ScreenWindow - Screen "Dozirovka" - по клику ScreenWindow "Window_BATCHER" в него функцией установлен Screen "Batcher_1_1" - у него на Loaded скрипт.

Попытка выставить размеры и заголовок Window_BATCHER в этом скрипте. Типа
SetPropertyByConstant GetParentScreen ("BATCHER_1_1"), GetParentScreenWindow ("BATCHER_1_1"),"Height", "424"

Изменяет окно рантайма.

Вариант с явным указанием имени родительского экрана
SetPropertyByConstant "Dozirovka", GetParentScreenWindow ("BATCHER_1_1"),"Height", "424"

ничего не изменяет вообще.

Автор темы
AlexRezn
здесь недавно
здесь недавно
Сообщения: 20
Зарегистрирован: 22 июн 2017, 03:55
Имя: Александр
Страна: Россия
город/регион: Иркутск
Благодарил (а): 4 раза
Поблагодарили: 4 раза

Как сделать в TIA Portal WinCC Professional неоднократно-открываемые отдельные окна

Сообщение AlexRezn »

M3f,

Николай, ну, нашёл я правильное решение. Пусть пригодится кому-то ещё.
Применил следующий способ:
В прямом задании функций без скрипта задал три функции "SetPropertyCurrentWindow" с размерами и заголовком.
проверил, что работают как надо, потом задал "Конвертировать в VBS". Вот что получилось:

SetPropertyByConstant GetParentScreen(AccessPath), GetParentScreenWindow(AccessPath), "Height", "424"
SetPropertyByConstant GetParentScreen(AccessPath), GetParentScreenWindow(AccessPath), "Width", "623"
SetPropertyByConstant GetParentScreen(AccessPath), GetParentScreenWindow(AccessPath), "CaptionText", """Дозатор 1_1"""

То есть оказалось:
1). Свойство объекта экрана AccessPath = "Returns the storage path of a screen" здесь надо применять вместо имени экрана. Очевидно, прямое задание стринговой константы должно включать в себя весь путь, начиная со стартового экрана.
2). Свойство объекта экрана AccessPath (и, наверняка, прочие тоже) можно применять без указания самого объекта. Очевидно, они тогда берутся из текущего экрана, в котором задан скрипт.
SetPropertyByConstant AccessPath, "MainButton1", "Backcolor", "65280" (и т.п.) - Тоже всё работает верно.

3). Текст заголовка указала аж в ТРОЙНЫХ кавычках. Убрал лишние две пары - всё равно работает верно. Это было что-то, связанное с интерпретацией параметра функции SetPropertyCurrentWindow.

Поди вычитай всё это из разных мест хэлпа и увяжи воедино!

Теперь буду знать )))
===========================

С вопросом русского текста в С-скриптах тоже разобрался.
После того, как в настройки проекта и настройки рантайма WinCC добавляешь русский язык, в редакторе С-скрипта становится доступным выбор параметра "Code page". Там два варианта: "device settings" и "Russian". Устанавливаешь "Russian" - и всё отображается верно!
Так что теперь у меня оба варианта работают правильно, и Сишный, и бейсиковский. )))
Ответить

Вернуться в «Simatic TIA Portal»