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

Проблема с функцией SetPropBOOL - она не работает :(

Ответить

Автор темы
LevSP
здесь недавно
здесь недавно
Сообщения: 20
Зарегистрирован: 04 авг 2017, 11:19
Имя: Сергей
Страна: Россия
город/регион: Новокузнецк

Проблема с функцией SetPropBOOL - она не работает :(

Сообщение LevSP »

Добрый день коллеги.
Я более контроллерщик, но держать еще и визуализатора не позволяют финансы и объем задач, потому прошу у вас помощи по WinCC.
Имеем PCS 8.1 и WinCC 7.3 в ее составе. На копме, где я практикуюсь WinCC in demo mode.
Поставлена задача руководством изменять размер окна графика в FacePlate. Не самая сложная задача, но делать надо и я затруднился.
Как я понял, делать это непосредственно через FacePlate невозможно (или возможно?) и потому сделал около каждого параметра кнопочку, которая вызывает WinCCOnlineTrendControl с графиком и все замечательно, кроме того, что экран с 30 такими контролами грузиться ооочень долго (они скрыты сначала, но все равно грузятся).

Сделал WinCCOnlineTrendControl - 1 шт. Пытаюсь С-экшеном по кнопочке на этом же экране туда записать нужные настроечные параметры.
Покопавшись в сети, нашел функцию SetPropBOOL("LNG.Pdl","Control23","Display",1); //имя экрана, контрола правильно до буковки
Это я делаю видимость, а потом хочу функцией SetPropCHAR записать в соответствующее поле нужный мне тэг.

Но оно не работает! :affliction:

Help me please? Nu chto vam stoit?

Автор темы
LevSP
здесь недавно
здесь недавно
Сообщения: 20
Зарегистрирован: 04 авг 2017, 11:19
Имя: Сергей
Страна: Россия
город/регион: Новокузнецк

Проблема с функцией SetPropBOOL - она не работает :(

Сообщение LevSP »

Нашел как вставлять диагностическое окно, вот что оно пишет:

====================================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====================================
Аватара пользователя

petr2off
эксперт
эксперт
Сообщения: 1602
Зарегистрирован: 06 янв 2016, 19:45
Имя: Петров В.Л.
Страна: Россия
город/регион: Красноярск
Благодарил (а): 69 раз
Поблагодарили: 185 раз

Проблема с функцией SetPropBOOL - она не работает :(

Сообщение petr2off »

Добрый день. Во первых для управления видимостью есть специальная функция
SetVisible(lpszPictureName,lpszObjectName,bVisible);
Во вторых, вы делаете типичную ошибку. Свойства Display нет, есть свойство Visible. Поэтому и не работает, что не существующее свойство пытаетесь выставить. Т.е. если пользоваться SetPropBOOL то там должно быть не Display, а Visible.
Для того, что бы узнать Name свойства, щелкаете по нему (в Propertiies) правой кнопкой, и в справке уведите какой у него Name/

Автор темы
LevSP
здесь недавно
здесь недавно
Сообщения: 20
Зарегистрирован: 04 авг 2017, 11:19
Имя: Сергей
Страна: Россия
город/регион: Новокузнецк

Проблема с функцией SetPropBOOL - она не работает :(

Сообщение LevSP »

petr2off писал(а): Добрый день. Во первых для управления видимостью есть специальная функция
SetVisible(lpszPictureName,lpszObjectName,bVisible);
Во вторых, вы делаете типичную ошибку. Свойства Display нет, есть свойство Visible. ...
Для того, что бы узнать Name свойства, щелкаете по нему (в Propertiies) правой кнопкой, и в справке уведите какой у него Name/
Спасибо большое. Получилось через SetVisible. Очень полезна информация как узнать имя свойства для программирования.
Еще подскажите пожалуйста, как изменить размер экрана через функцию?
Пытаюсь сделать вот так:
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====================================
Аватара пользователя

petr2off
эксперт
эксперт
Сообщения: 1602
Зарегистрирован: 06 янв 2016, 19:45
Имя: Петров В.Л.
Страна: Россия
город/регион: Красноярск
Благодарил (а): 69 раз
Поблагодарили: 185 раз

Проблема с функцией SetPropBOOL - она не работает :(

Сообщение petr2off »

Добрый день. В диагностике Вам на чистом англицком языке сообщают, что не указан Pcture, и это так - у Вас этот параметр равен NULL,
WinCC вообще то говоря предполагает определенный стиль программирования. На этом сайте, кстати неплохая библиотека документации есть. Очень рекомендую ознакомится с Configuration_Manual. Что бы просто понять методику работы. Хотя со временем у Вас конечно же накопятся и свои приемы. Теперь к теме. Сам файл pdl конечно имеет свои геометрические характеристики, но нужно понимать, что он вообще то говоря вставляется в кадр, и размеры при этом вполне могут масштабироватся. Соответственно 1-й параметр это имя кадра, куда Вы вставляете свой объект. 2-й параметр это имя объекта, в котором вы ходите изменить свойства. 3-й параметр это собствнно говоря имя свойства и далее его значение. Ну как то так.

Автор темы
LevSP
здесь недавно
здесь недавно
Сообщения: 20
Зарегистрирован: 04 авг 2017, 11:19
Имя: Сергей
Страна: Россия
город/регион: Новокузнецк

Проблема с функцией SetPropBOOL - она не работает :(

Сообщение LevSP »

petr2off писал(а):Добрый день. В диагностике Вам на чистом англицком языке сообщают, что не указан Pcture, и это так - у Вас этот параметр равен NULL,
Сам файл pdl конечно имеет свои геометрические характеристики, но нужно понимать, что он вообще то говоря вставляется в кадр, и размеры при этом вполне могут масштабироватся. Соответственно 1-й параметр это имя кадра, куда Вы вставляете свой объект. 2-й параметр это имя объекта, в котором вы ходите изменить свойства. 3-й параметр это собствнно говоря имя свойства и далее его значение. Ну как то так.
Спасибо уважаемый petr2off за отсылку на библиотеку и пояснения. Собственно, могу ли я поменять размер файла по ширине и высоте?
BOOL SetPropWord(LPCTSTR lpszPictureName, LPCTSTRlpszObjectName, LPCTSTR lpszPropertyName, long lValue) - вроде все верно, я указал имя картинки "P2.Pdl" первым аргументом.

Откуда возник вопрос. Если я руками меняю размеры файла фейсплейта, на котором располагается график (@PG_APL_TrendMonAnL.PDL), то все под-окошки всех фейсплейтов меняются так же. Т.е. размер зависит не от Picture Window (которого я не могу найти), а от самого @PG_APL_TrendMonAnL.PDL
---
Тебе печенек, мне печенек.., ВСЕМ ПЕЧЕНЕК!
Аватара пользователя

petr2off
эксперт
эксперт
Сообщения: 1602
Зарегистрирован: 06 янв 2016, 19:45
Имя: Петров В.Л.
Страна: Россия
город/регион: Красноярск
Благодарил (а): 69 раз
Поблагодарили: 185 раз

Проблема с функцией SetPropBOOL - она не работает :(

Сообщение petr2off »

Как вариант. Если нет Picture Window, значит его нужно создать. Т.е. есть например имеем кадр - MyCadre.dpl. Заводим в нем Smart Object ->Picture Wundow, называете его MyWindow (если стандартное сильно не нравится). В свойствах MyWindows прописываете Вашу картинку и свойства по масштабирования картинки. Т.е. при открытии окна картинка должна масштабироватся по размерам окна. И теперь у Вас есть все. Основная идея - меняется окошко, а не файл. Файл имеет фиксированный размер. А вот картинка,описываемая в файле, когда открывается в окне подстраивается под размеры окна, которые можно менять.
Ответить

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