Добрый день коллеги.
Я более контроллерщик, но держать еще и визуализатора не позволяют финансы и объем задач, потому прошу у вас помощи по WinCC.
Имеем PCS 8.1 и WinCC 7.3 в ее составе. На копме, где я практикуюсь WinCC in demo mode.
Поставлена задача руководством изменять размер окна графика в FacePlate. Не самая сложная задача, но делать надо и я затруднился.
Как я понял, делать это непосредственно через FacePlate невозможно (или возможно?) и потому сделал около каждого параметра кнопочку, которая вызывает WinCCOnlineTrendControl с графиком и все замечательно, кроме того, что экран с 30 такими контролами грузиться ооочень долго (они скрыты сначала, но все равно грузятся).
Сделал WinCCOnlineTrendControl - 1 шт. Пытаюсь С-экшеном по кнопочке на этом же экране туда записать нужные настроечные параметры.
Покопавшись в сети, нашел функцию SetPropBOOL("LNG.Pdl","Control23","Display",1); //имя экрана, контрола правильно до буковки
Это я делаю видимость, а потом хочу функцией SetPropCHAR записать в соответствующее поле нужный мне тэг.
Но оно не работает!
Help me please? Nu chto vam stoit?
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Проблема с функцией SetPropBOOL - она не работает :(
Модератор: Глоб.модераторы
-
- здесь недавно
- Сообщения: 20
- Зарегистрирован: 04 авг 2017, 11:19
- Имя: Сергей
- Страна: Россия
- город/регион: Новокузнецк
-
- здесь недавно
- Сообщения: 20
- Зарегистрирован: 04 авг 2017, 11:19
- Имя: Сергей
- Страна: Россия
- город/регион: Новокузнецк
Проблема с функцией SetPropBOOL - она не работает :(
Нашел как вставлять диагностическое окно, вот что оно пишет:
====================================OnErrorExecute====================================
SystemTime: (ThreadId 14856) 2017-08-04 09:17:11.969
dwErrorCode1: (ThreadId 14856) 1007007
dwErrorCode2: (ThreadId 14856) 2
szErrorText: (ThreadId 14856) PDLRTAPI oder DMAPI
szErrorTextInfo: (ThreadId 14856) Error in DMApi
szApplicationName: (ThreadId 14856) PDLRuntimeSystem
bCycle: (ThreadId 14856) acycle
szFunctionName: (ThreadId 14856) @1fc
lpszPictureName: (ThreadId 14856) @SCREEN.@WIN12:@1001.@DESK:LNG
lpszObjectName: (ThreadId 14856) Button7
lpszPropertyName: (ThreadId 14856) (NULL)
dwParamSize: (ThreadId 14856) 12
szErrortext: (ThreadId 14856) WinCC Runtime: PDL Run time: Property not found
====================================OnErrorExecute====================================
====================================OnErrorExecute====================================
SystemTime: (ThreadId 14856) 2017-08-04 09:17:11.969
dwErrorCode1: (ThreadId 14856) 1007007
dwErrorCode2: (ThreadId 14856) 2
szErrorText: (ThreadId 14856) PDLRTAPI oder DMAPI
szErrorTextInfo: (ThreadId 14856) Error in DMApi
szApplicationName: (ThreadId 14856) PDLRuntimeSystem
bCycle: (ThreadId 14856) acycle
szFunctionName: (ThreadId 14856) @1fc
lpszPictureName: (ThreadId 14856) @SCREEN.@WIN12:@1001.@DESK:LNG
lpszObjectName: (ThreadId 14856) Button7
lpszPropertyName: (ThreadId 14856) (NULL)
dwParamSize: (ThreadId 14856) 12
szErrortext: (ThreadId 14856) WinCC Runtime: PDL Run time: Property not found
====================================OnErrorExecute====================================
-
- эксперт
- Сообщения: 1739
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 78 раз
- Поблагодарили: 235 раз
Проблема с функцией SetPropBOOL - она не работает :(
Добрый день. Во первых для управления видимостью есть специальная функция
SetVisible(lpszPictureName,lpszObjectName,bVisible);
Во вторых, вы делаете типичную ошибку. Свойства Display нет, есть свойство Visible. Поэтому и не работает, что не существующее свойство пытаетесь выставить. Т.е. если пользоваться SetPropBOOL то там должно быть не Display, а Visible.
Для того, что бы узнать Name свойства, щелкаете по нему (в Propertiies) правой кнопкой, и в справке уведите какой у него Name/
SetVisible(lpszPictureName,lpszObjectName,bVisible);
Во вторых, вы делаете типичную ошибку. Свойства Display нет, есть свойство Visible. Поэтому и не работает, что не существующее свойство пытаетесь выставить. Т.е. если пользоваться SetPropBOOL то там должно быть не Display, а Visible.
Для того, что бы узнать Name свойства, щелкаете по нему (в Propertiies) правой кнопкой, и в справке уведите какой у него Name/
-
- здесь недавно
- Сообщения: 20
- Зарегистрирован: 04 авг 2017, 11:19
- Имя: Сергей
- Страна: Россия
- город/регион: Новокузнецк
Проблема с функцией SetPropBOOL - она не работает :(
Спасибо большое. Получилось через SetVisible. Очень полезна информация как узнать имя свойства для программирования.petr2off писал(а): Добрый день. Во первых для управления видимостью есть специальная функция
SetVisible(lpszPictureName,lpszObjectName,bVisible);
Во вторых, вы делаете типичную ошибку. Свойства Display нет, есть свойство Visible. ...
Для того, что бы узнать Name свойства, щелкаете по нему (в Propertiies) правой кнопкой, и в справке уведите какой у него Name/
Еще подскажите пожалуйста, как изменить размер экрана через функцию?
Пытаюсь сделать вот так:
SetPropWord("P2.Pdl",NULL,"Width",100);
SetPropDouble("P2.Pdl",NULL,"Height",100); // чтобы хоть одно сработало :)
Диагностическое окно:
===================================OnErrorExecute====================================
SystemTime: (ThreadId 16128) 2017-08-04 10:29:37.902
dwErrorCode1: (ThreadId 16128) 1007007
dwErrorCode2: (ThreadId 16128) 2
szErrorText: (ThreadId 16128) PDLRTAPI oder DMAPI
szErrorTextInfo: (ThreadId 16128) Error in DMApi
szApplicationName: (ThreadId 16128) PDLRuntimeSystem
bCycle: (ThreadId 16128) acycle
szFunctionName: (ThreadId 16128) @2bd
lpszPictureName: (ThreadId 16128) @SCREEN.@WIN12:@1001.@DESK:LNG
lpszObjectName: (ThreadId 16128) Button9
lpszPropertyName: (ThreadId 16128) (NULL)
dwParamSize: (ThreadId 16128) 12
szErrortext: (ThreadId 16128) WinCC Runtime: PDL Run time: Picture not selected
====================================OnErrorExecute====================================
-
- эксперт
- Сообщения: 1739
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 78 раз
- Поблагодарили: 235 раз
Проблема с функцией SetPropBOOL - она не работает :(
Добрый день. В диагностике Вам на чистом англицком языке сообщают, что не указан Pcture, и это так - у Вас этот параметр равен NULL,
WinCC вообще то говоря предполагает определенный стиль программирования. На этом сайте, кстати неплохая библиотека документации есть. Очень рекомендую ознакомится с Configuration_Manual. Что бы просто понять методику работы. Хотя со временем у Вас конечно же накопятся и свои приемы. Теперь к теме. Сам файл pdl конечно имеет свои геометрические характеристики, но нужно понимать, что он вообще то говоря вставляется в кадр, и размеры при этом вполне могут масштабироватся. Соответственно 1-й параметр это имя кадра, куда Вы вставляете свой объект. 2-й параметр это имя объекта, в котором вы ходите изменить свойства. 3-й параметр это собствнно говоря имя свойства и далее его значение. Ну как то так.
WinCC вообще то говоря предполагает определенный стиль программирования. На этом сайте, кстати неплохая библиотека документации есть. Очень рекомендую ознакомится с Configuration_Manual. Что бы просто понять методику работы. Хотя со временем у Вас конечно же накопятся и свои приемы. Теперь к теме. Сам файл pdl конечно имеет свои геометрические характеристики, но нужно понимать, что он вообще то говоря вставляется в кадр, и размеры при этом вполне могут масштабироватся. Соответственно 1-й параметр это имя кадра, куда Вы вставляете свой объект. 2-й параметр это имя объекта, в котором вы ходите изменить свойства. 3-й параметр это собствнно говоря имя свойства и далее его значение. Ну как то так.
-
- здесь недавно
- Сообщения: 20
- Зарегистрирован: 04 авг 2017, 11:19
- Имя: Сергей
- Страна: Россия
- город/регион: Новокузнецк
Проблема с функцией SetPropBOOL - она не работает :(
Спасибо уважаемый petr2off за отсылку на библиотеку и пояснения. Собственно, могу ли я поменять размер файла по ширине и высоте?petr2off писал(а):Добрый день. В диагностике Вам на чистом англицком языке сообщают, что не указан Pcture, и это так - у Вас этот параметр равен NULL,
Сам файл pdl конечно имеет свои геометрические характеристики, но нужно понимать, что он вообще то говоря вставляется в кадр, и размеры при этом вполне могут масштабироватся. Соответственно 1-й параметр это имя кадра, куда Вы вставляете свой объект. 2-й параметр это имя объекта, в котором вы ходите изменить свойства. 3-й параметр это собствнно говоря имя свойства и далее его значение. Ну как то так.
BOOL SetPropWord(LPCTSTR lpszPictureName, LPCTSTRlpszObjectName, LPCTSTR lpszPropertyName, long lValue) - вроде все верно, я указал имя картинки "P2.Pdl" первым аргументом.
Откуда возник вопрос. Если я руками меняю размеры файла фейсплейта, на котором располагается график (@PG_APL_TrendMonAnL.PDL), то все под-окошки всех фейсплейтов меняются так же. Т.е. размер зависит не от Picture Window (которого я не могу найти), а от самого @PG_APL_TrendMonAnL.PDL
---
Тебе печенек, мне печенек.., ВСЕМ ПЕЧЕНЕК!
Тебе печенек, мне печенек.., ВСЕМ ПЕЧЕНЕК!
-
- эксперт
- Сообщения: 1739
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 78 раз
- Поблагодарили: 235 раз
Проблема с функцией SetPropBOOL - она не работает :(
Как вариант. Если нет Picture Window, значит его нужно создать. Т.е. есть например имеем кадр - MyCadre.dpl. Заводим в нем Smart Object Picture Wundow, называете его MyWindow (если стандартное сильно не нравится). В свойствах MyWindows прописываете Вашу картинку и свойства по масштабирования картинки. Т.е. при открытии окна картинка должна масштабироватся по размерам окна. И теперь у Вас есть все. Основная идея - меняется окошко, а не файл. Файл имеет фиксированный размер. А вот картинка,описываемая в файле, когда открывается в окне подстраивается под размеры окна, которые можно менять.