- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Как сделать в TIA Portal WinCC Professional неоднократно-открываемые отдельные окна
-
- здесь недавно
- Сообщения: 20
- Зарегистрирован: 22 июн 2017, 03:55
- Имя: Александр
- Страна: Россия
- город/регион: Иркутск
- Благодарил (а): 4 раза
- Поблагодарили: 4 раза
Как сделать в TIA Portal WinCC Professional неоднократно-открываемые отдельные окна
Вопрос возник по следующей причине.
Для открытия по кнопке отдельного окна с экранной формой я нашёл лишь функцию ActivateScreenInScreenWindow.
Кладу на форму ScreenWindow, для стандартного закрытия его по крестику разрешаю в свойствах "Header" и "Close button".
На кнопке на Click садится вызов ActivateScreenInScreenWindow с указанием в параметрах этого окна и нужного экрана.
Работает только один раз. То есть кликом открываем, закрываем крестиком - больше не вызывается.
Такое впечатление, что это окно при загрузке рантайма существует невидимым, функция делает его видимым, а крестик уничтожает в принципе.
Тогда непонятно, как его создавать заново следующим кликом?
---------------------------------------------------------------------------------------
Отсюда второй вопрос:
В нормальном WinCC есть базовые функции библиотеки под названием "BASIC PROCESS CONTROL". В частности, SSMOpenTopField и т.п. для создания окон процесса с выдачей туда экранных форм. Куда делась эта библиотека в Тиа Портале, и что её заменяет?
Для открытия по кнопке отдельного окна с экранной формой я нашёл лишь функцию ActivateScreenInScreenWindow.
Кладу на форму ScreenWindow, для стандартного закрытия его по крестику разрешаю в свойствах "Header" и "Close button".
На кнопке на Click садится вызов ActivateScreenInScreenWindow с указанием в параметрах этого окна и нужного экрана.
Работает только один раз. То есть кликом открываем, закрываем крестиком - больше не вызывается.
Такое впечатление, что это окно при загрузке рантайма существует невидимым, функция делает его видимым, а крестик уничтожает в принципе.
Тогда непонятно, как его создавать заново следующим кликом?
---------------------------------------------------------------------------------------
Отсюда второй вопрос:
В нормальном WinCC есть базовые функции библиотеки под названием "BASIC PROCESS CONTROL". В частности, SSMOpenTopField и т.п. для создания окон процесса с выдачей туда экранных форм. Куда делась эта библиотека в Тиа Портале, и что её заменяет?
-
- не первый раз у нас
- Сообщения: 377
- Зарегистрирован: 31 янв 2017, 11:08
- Имя: Николай
- Благодарил (а): 8 раз
- Поблагодарили: 116 раз
Как сделать в TIA Portal WinCC Professional неоднократно-открываемые отдельные окна
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
-
- здесь недавно
- Сообщения: 20
- Зарегистрирован: 22 июн 2017, 03:55
- Имя: Александр
- Страна: Россия
- город/регион: Иркутск
- Благодарил (а): 4 раза
- Поблагодарили: 4 раза
Как сделать в TIA Portal WinCC Professional неоднократно-открываемые отдельные окна
M3f, Спасибо, получилось!
Касательно заголовка вопрос.
SetPropertyByConstant "Main_Screen", "SW_Pump_3_4", "CaptionText", "Насосный агрегат №3"
Я пробовал двумя вариантами: этим и SetPropChar
В обоих вариантах на месте русских букв вопросительные знаки. В языках проекта указано два языка - английский и русский. В прямом задании в свойствах экранных объектов русских текстов всё работает.
Но здесь - скрипт, почему-то не ловит кодировку. Что делать?
Касательно заголовка вопрос.
SetPropertyByConstant "Main_Screen", "SW_Pump_3_4", "CaptionText", "Насосный агрегат №3"
Я пробовал двумя вариантами: этим и SetPropChar
В обоих вариантах на месте русских букв вопросительные знаки. В языках проекта указано два языка - английский и русский. В прямом задании в свойствах экранных объектов русских текстов всё работает.
Но здесь - скрипт, почему-то не ловит кодировку. Что делать?
-
- не первый раз у нас
- Сообщения: 377
- Зарегистрирован: 31 янв 2017, 11:08
- Имя: Николай
- Благодарил (а): 8 раз
- Поблагодарили: 116 раз
Как сделать в TIA Portal WinCC Professional неоднократно-открываемые отдельные окна
AlexRezn, Скрипт на VBA или C?
EPLAN Electric P8 Professional+ 2.7 HF1 11496 | TIA Portal Professional V17 Upd1 | Creo Parametric 4.0 M070
-
- не первый раз у нас
- Сообщения: 377
- Зарегистрирован: 31 янв 2017, 11:08
- Имя: Николай
- Благодарил (а): 8 раз
- Поблагодарили: 116 раз
Как сделать в TIA Portal WinCC Professional неоднократно-открываемые отдельные окна
AlexRezn, была аналогичная проблема с С-скриптами, перелопатил кучу вариантов ничего не помогло. Была какая-то несовместимость сборки и кодировки под С. Как вариант попробуйте в настройках: "WinCC-Language&font-Language settings for script" выставить нужный язык.
В итоге писал вызов окон, и там где надо было прописывать наименование на русском, на VB.
В итоге писал вызов окон, и там где надо было прописывать наименование на русском, на VB.
EPLAN Electric P8 Professional+ 2.7 HF1 11496 | TIA Portal Professional V17 Upd1 | Creo Parametric 4.0 M070
-
- здесь недавно
- Сообщения: 20
- Зарегистрирован: 22 июн 2017, 03:55
- Имя: Александр
- Страна: Россия
- город/регион: Иркутск
- Благодарил (а): 4 раза
- Поблагодарили: 4 раза
Как сделать в TIA Portal WinCC Professional неоднократно-открываемые отдельные окна
M3f, Николай, ну, установка языков ничего не даёт, придётся переводить скрипт в Бэйсик.
Не подскажете, как мне в Бэйсике заменить Сишное
SetPropertyByConstant(GetParentScreen(screenName), GetParentScreenWindow(screenName),"CaptionText", "Дозатор 1_1");
(то есть у родительского ScreenWindow, которое вызвало текущий Screen, заменить заголовок)
и типа
SetPropertyByConstant(ParentScreen, ParentWindow,"Height", "424");
SetPropertyByConstant (screenName, "", "Height", "375");
(менять свойства родительского и своего окон)
В Си screenName дают прямо в параметрах обработчика. А в Бэйсике нет функций GetParentScreen и GetParentScreenWindow, и входных параметров.
Видимо, всё надо брать в объекте HMIRuntime, но я не могу в нём разобраться по бестолковому хэлпу. Пример нужен.
Не подскажете, как мне в Бэйсике заменить Сишное
SetPropertyByConstant(GetParentScreen(screenName), GetParentScreenWindow(screenName),"CaptionText", "Дозатор 1_1");
(то есть у родительского ScreenWindow, которое вызвало текущий Screen, заменить заголовок)
и типа
SetPropertyByConstant(ParentScreen, ParentWindow,"Height", "424");
SetPropertyByConstant (screenName, "", "Height", "375");
(менять свойства родительского и своего окон)
В Си screenName дают прямо в параметрах обработчика. А в Бэйсике нет функций GetParentScreen и GetParentScreenWindow, и входных параметров.
Видимо, всё надо брать в объекте HMIRuntime, но я не могу в нём разобраться по бестолковому хэлпу. Пример нужен.
-
- не первый раз у нас
- Сообщения: 377
- Зарегистрирован: 31 янв 2017, 11:08
- Имя: Николай
- Благодарил (а): 8 раз
- Поблагодарили: 116 раз
Как сделать в TIA Portal WinCC Professional неоднократно-открываемые отдельные окна
Из руководства, для примера:
Аналог:
Код: Выделить всё
'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
-
- здесь недавно
- Сообщения: 20
- Зарегистрирован: 22 июн 2017, 03:55
- Имя: Александр
- Страна: Россия
- город/регион: Иркутск
- Благодарил (а): 4 раза
- Поблагодарили: 4 раза
Как сделать в TIA Portal WinCC Professional неоднократно-открываемые отдельные окна
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"
ничего не изменяет вообще.
Видел это в хэлпе. Я пробовал эти родительские функции, не работают они в Бэйсике. (((
Точнее, они, вроде бы, работают, но вообще не так, как в Си. Обращаются не к ближайшему уровню, а ещё выше. Они изменяют параметры самого верхнего окна - рантайма.
Либо 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"
ничего не изменяет вообще.
-
- здесь недавно
- Сообщения: 20
- Зарегистрирован: 22 июн 2017, 03:55
- Имя: Александр
- Страна: Россия
- город/регион: Иркутск
- Благодарил (а): 4 раза
- Поблагодарили: 4 раза
Как сделать в TIA Portal WinCC Professional неоднократно-открываемые отдельные окна
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" - и всё отображается верно!
Так что теперь у меня оба варианта работают правильно, и Сишный, и бейсиковский. )))
Николай, ну, нашёл я правильное решение. Пусть пригодится кому-то ещё.
Применил следующий способ:
В прямом задании функций без скрипта задал три функции "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" - и всё отображается верно!
Так что теперь у меня оба варианта работают правильно, и Сишный, и бейсиковский. )))