Всем доброго времени суток. Подскажите, пожалуйста, как правильно написать ссылку в C script в WinCC на структурированный тег. Значение данного тега (TT5055.Out_Value) мне необходимо присвоить для тренда в всплывающем окне. Теги соответственно могут меняться, а внутренняя часть одинакова для всех. Часть скрипта для вызова окна с графиком ниже: const char* tagPrefix = "TT5055"; SetPropertyByConstant (screenControl, "Trend_X", "TrendTagName", "tagPrefix.Out_Value"); Если напрямую написать "TT5055.Out_Value", то всё работает. Пробовал и через + и через &, но только ошибки при компиляции. Поэтому прошу подсказать как организовать данную составную часть?

Комментарии: 8

  1. Gabrrr

    разве tagPrefix &".OutValue" не работает? Я по памяти сейчас пытаюсь, нет винцц под рукой

    • Alexey

      Пробовал, ошибка

      • Gabrrr

        Но он у вас просит интегер. Т.е. вам надо не тег, а значение тега наверное туда подставить.

        • Alexey

          Если написать вместо tagPrefix имя тэга (тт5501.out_value) то всё работает. В tagPrefix находится тт5501 по сути. И оно должно меняться Я пробовал создавать переменную, её использовать в конструкции, а писать в неё тэг + out_value, но тоже ругается. Получается нельзя к переменной что-то присоединить. Может две переменные попробовать? Мануал бы почитать, но блочит сименс

          • Fedor

            Объедините строки до, а не в процессе вызова. Concat или как там это делается. How to get values, write texts, concatenate and after this write to one tag? - 142013 - Industry Support Siemens https://support.industry.siemens.com/forum/WW/en/posts/how-to-get-values-write-texts-concatenate-and-after-this-write-to-one-tag/142013 I am not sure about other things but I find two problems in string manipulation: first thing: Gets() function ? I think you can remove it. second thing: strcpy (strTag1,"charMachine"); in this statement, "charMachine" is a TAG name. you need to get the TAG value using GetTag function. see below char strTag1[100], strTag2[100]; strcpy (strTag1, GetTagChar("charMachine")); strcpy (strTag2,GetTagChar("charReport")); strcat(strTag1, strTag2); strTag1[100] = '\0'; \\ terminate the string Note: please take care of the string lengths. it is safer to use strncpy, strncat function. and I will take strTag1 string bigger then the size of strTag1 and strTag2 combined. you may need to put proper checks for empty string if required. Цитата оттуда

          • Gabrrr

            нуу в 2023 году в России пора бы уже иметь VPN. А вообще ещё раз глянул ваши скрины. У вас функция просит integer, а вы ей real суете. Так что имена тегов у вас скkеиваются нормально через &, но вот аргумент в функцию вы неправильного типа передаете

            • Alexey

              Нет, компилятор пишет не integer, а integral. Пробую объединить до и в переменную, как Фёдор написал. Пока с ошибками.

              • Gabrrr

                Извиняюсь, действительно я слепой.

Не нашли ответ?

Вам также может быть интересно