Доброго времени суток, уважаемые!
Есть набор текстовых переменных в PLC (S7-315), они передаются на панель оператора (WinCC Comfort), они же передаются по TCP/IP на SCADA WinCC (WinCC Runtime V7.2 + Upd5). В PLC и на панели оператора эти переменные отображается как нужно, но на SCADA WinCC происходит какое то чудо чудесное и в начале переменной добавляются каких-то 2 непонятных символа.
Теперь по скринам. Скрин мониторингом PLC тэгов:
Скрин с мониторингом тэгов в SCADA WinCC:
Кажется что проблема на поверхности, но не могу понять куда копать.
на SCADA пробовал менять все типы переменных - не помогло.
P.S. Попробовал передать переменную типа Array[1..10] of Char - на SCADA все передалось как надо. Но мне кажется есть более стандартный метод решения проблемы, т.к. на других мнемосхемах текстовые данные отображаются как надо (с теми же свойствами и типами данных что и у меня).
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
SCADA WinCC и текстовые данные
-
- корифей
- Сообщения: 768
- Зарегистрирован: 12 авг 2008, 11:05
- Имя: Патрушев Олег Валерьевич
- Страна: Россия
- город/регион: г. Н.Новгород
- Благодарил (а): 105 раз
- Поблагодарили: 146 раз
SCADA WinCC и текстовые данные
Классический тип STRING у SIEMENSа в PLC под Step7 в начале содержит байт с максимальным размером строки и байт с текущей длиной.
WinCC вроде всегда умел обращаться с такими строками.
WinCC вроде всегда умел обращаться с такими строками.
-
- здесь недавно
- Сообщения: 69
- Зарегистрирован: 06 окт 2015, 09:31
- Имя: Антонов Артём Викторочич
- Страна: Россия
- город/регион: Ленинградская область, порт Усть-Луга
- Благодарил (а): 5 раз
- Поблагодарили: 2 раза
SCADA WinCC и текстовые данные
что вы имеете в виду?
Переменная инициализируется и формируется в PLC и передается на Верхний Уровень. Тип данных определяется в PLC и больше нигде не меняется.
Отправлено спустя 1 минуту 1 секунду:
Так вот жеж.. Не понятно почему тут так получается.
Пока разумного ответа не нашел
-
- здесь недавно
- Сообщения: 69
- Зарегистрирован: 06 окт 2015, 09:31
- Имя: Антонов Артём Викторочич
- Страна: Россия
- город/регион: Ленинградская область, порт Усть-Луга
- Благодарил (а): 5 раз
- Поблагодарили: 2 раза
SCADA WinCC и текстовые данные
Спасибо за наводку! Заработало! Нужно было всего лишь сдвинуть чтение данных в SCADA вправо и все.
Получается - на скрине у меня DB1,DBB48 - вместо этого ставим DB1,DBB50 и все замечтательно работает.
-
- корифей
- Сообщения: 768
- Зарегистрирован: 12 авг 2008, 11:05
- Имя: Патрушев Олег Валерьевич
- Страна: Россия
- город/регион: г. Н.Новгород
- Благодарил (а): 105 раз
- Поблагодарили: 146 раз
SCADA WinCC и текстовые данные
WinCC должен бы использовать конвертацию типов при чтении-записи (есть же там RealToFloat и т.д.), так как типы этих строк все таки разные.
Вы учитывайте, что если строка в PLC будет заполнена полностью, то у вас не будет "\0" в конце строки - для него просто места не останется и как тогда поведут себя скрипты WinCC (язык Си) немного непонятно.
Вы учитывайте, что если строка в PLC будет заполнена полностью, то у вас не будет "\0" в конце строки - для него просто места не останется и как тогда поведут себя скрипты WinCC (язык Си) немного непонятно.
-
- почётный участник форума
- Сообщения: 3576
- Зарегистрирован: 10 ноя 2009, 04:58
- Имя: Толмачев Михаил Алексеевич
- город/регион: г. Чехов, МО
- Благодарил (а): 6 раз
- Поблагодарили: 271 раз
SCADA WinCC и текстовые данные
Строка (String) и набор символов (Char set) - это разные типы данных. Строка содержит в первых двух байтах длину строки и если вы пытаетесь её интерпретировать как набор символов, то эти первые два байта превратятся в "непонятные" символы. Решение следующее: замените Char set (или array of char) на String.