- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Вывод вещественного числа в WinCC 2008, SP3
Модератор: Глоб.модераторы
-
- осмотрелся
- Сообщения: 139
- Зарегистрирован: 15 дек 2020, 20:29
- Имя: Алексей
- Страна: Россия
- город/регион: Пенза
- Благодарил (а): 30 раз
- Поблагодарили: 8 раз
Вывод вещественного числа в WinCC 2008, SP3
Здравствуйте, уважаемые коллеги.
Я почитал, что уже написали до меня, но для меня это не совсем подходит - похожая тема есть: viewtopic.php?t=13388, но там версия WinCC другая, соответственно я таких пунктов у себя не нахожу.
Суть проблемы: вывести значение в поле output в формате с плавающей точкой. И почему-то именно формат float или real отсутвуют в списке. Хотя мне это странно - аналоговый сигнал проще отображать в формате с плавающей точкой. Допустим я беру переменную уже после перемасштабирования - т.е. у неё уже представление real - почему нет механизмов напрямую вывести такие значения? Я читал про использование каких-то скриптов для преобразования. C WinCC мало работал. Буду благодарен за советы.
Я почитал, что уже написали до меня, но для меня это не совсем подходит - похожая тема есть: viewtopic.php?t=13388, но там версия WinCC другая, соответственно я таких пунктов у себя не нахожу.
Суть проблемы: вывести значение в поле output в формате с плавающей точкой. И почему-то именно формат float или real отсутвуют в списке. Хотя мне это странно - аналоговый сигнал проще отображать в формате с плавающей точкой. Допустим я беру переменную уже после перемасштабирования - т.е. у неё уже представление real - почему нет механизмов напрямую вывести такие значения? Я читал про использование каких-то скриптов для преобразования. C WinCC мало работал. Буду благодарен за советы.
-
- освоился
- Сообщения: 222
- Зарегистрирован: 19 сен 2019, 10:09
- Имя: Макс
- Страна: Россия
- город/регион: Славянск-на-Кубани
- Благодарил (а): 5 раз
- Поблагодарили: 38 раз
Вывод вещественного числа в WinCC 2008, SP3
У вас большое число или маленькое? Если маленькое указываете OutputFormat что-то типа 9,999.
Если большое - 999,9, или какое вам подходит. Универсального варианта который сам подстраивается под значение тега - нет.
Можно нагородить скриптами но зачем?
Если большое - 999,9, или какое вам подходит. Универсального варианта который сам подстраивается под значение тега - нет.
Можно нагородить скриптами но зачем?
WinCC 7.4 SP1 Upd15, Step5.6
-
- осмотрелся
- Сообщения: 139
- Зарегистрирован: 15 дек 2020, 20:29
- Имя: Алексей
- Страна: Россия
- город/регион: Пенза
- Благодарил (а): 30 раз
- Поблагодарили: 8 раз
Вывод вещественного числа в WinCC 2008, SP3
В том и дело - он мне в выборе не даёт поставить 9,999 или хоть что-то с запятой. Сама переменная на которую ссылается тэг находится в блоке данных и имеет тип DWORD - там уже перемасштабированное значение, снятое с аналогового канала. Я нашёл видео, где человек объяснял как сделать впринципе вывод числа real - но он там ввёл внутренний тэг, соответсвенно real-типа и у него там был в выборе 9,999. Но в этом случае нужен механизм постоянного переноса значения из переменной, которая мне нужна в этот внутренний тег типа real. Я такого механизма пока не знаю, плюс как-то это всё сложно - должно быть проще - указал в теге, что он связан с переменной вещественного типа - дайте мне возможность вывести эту переменную как есть - без всяких округлений.
-
- не первый раз у нас
- Сообщения: 306
- Зарегистрирован: 26 май 2022, 12:10
- Имя: Александр
- Страна: Россия
- город/регион: lipetsk
- Благодарил (а): 5 раз
- Поблагодарили: 28 раз
-
- освоился
- Сообщения: 222
- Зарегистрирован: 19 сен 2019, 10:09
- Имя: Макс
- Страна: Россия
- город/регион: Славянск-на-Кубани
- Благодарил (а): 5 раз
- Поблагодарили: 38 раз
Вывод вещественного числа в WinCC 2008, SP3
DWORD это же вид представления данных, а не тип переменной, как я понимаю. Можно и число с плавающей точкой 32бит представить как DWORD и целое число 32бит представить как DWORD. У вас этот тег вообще какое значение имеет? Это целое число или с точкой?
WinCC 7.4 SP1 Upd15, Step5.6
-
- осмотрелся
- Сообщения: 139
- Зарегистрирован: 15 дек 2020, 20:29
- Имя: Алексей
- Страна: Россия
- город/регион: Пенза
- Благодарил (а): 30 раз
- Поблагодарили: 8 раз
Вывод вещественного числа в WinCC 2008, SP3
Думал про это - но программа рабочая, правда работал CPU 315 с другой панелью - MONITOUCH модель: V606eM20, от которой не знают пароль. Собственного с этого всё и началось - оборудование (компрессор) сначала приказали разобрать, так он простоял около двух лет. Потом приказали собрать - когда собрали выяснилось, что панель почему-то не принимает пароль. Мне поручено переписать HMI-программу под панель фирмы Siemens. На родной панели всё отображалось корректно. Без десятых долей вывести в поля я могу - с этим проблем нет.
Переделать в DB тип данных этого поля - думаю это потащит за собой переделывание интерфейсов функций, как минимум, а то и переписка самих функций, которые работают с этим DB. Я то думал обойдусь малой кровью - найду переменные которые выводились, вводились - раз она уже работала - значит они должны быть уже в правильном формате представления. Но увы и ах...
Отправлено спустя 1 минуту 38 секунд:
Это уже число с плавающей точкой. Тоже думал про это. По идее DWORD говорит только о длинне переменной, а не о её внутреннем представлении. Думаете можно безболезненно поменять?
-
- освоился
- Сообщения: 222
- Зарегистрирован: 19 сен 2019, 10:09
- Имя: Макс
- Страна: Россия
- город/регион: Славянск-на-Кубани
- Благодарил (а): 5 раз
- Поблагодарили: 38 раз
Вывод вещественного числа в WinCC 2008, SP3
Если это уже число с плавающей точкой но просто в представлении DWORD, то в WinCC на этом теге указываете тип Floating-point number 32-bit IEEE 754 и все.
WinCC 7.4 SP1 Upd15, Step5.6
-
- не первый раз у нас
- Сообщения: 396
- Зарегистрирован: 28 сен 2022, 15:26
- Имя: Андрей
- Благодарил (а): 12 раз
- Поблагодарили: 54 раза
Вывод вещественного числа в WinCC 2008, SP3
Всё так, только не о "внутреннем представлении", а о её содержании, значении для "конечного потребителя". Внутреннее представление - это как раз DWORD. А содержание - от битовой маски до fp 32-бит.
-
- осмотрелся
- Сообщения: 139
- Зарегистрирован: 15 дек 2020, 20:29
- Имя: Алексей
- Страна: Россия
- город/регион: Пенза
- Благодарил (а): 30 раз
- Поблагодарили: 8 раз
Вывод вещественного числа в WinCC 2008, SP3
Да - получилось. По крайней мере он дал возможность поменять. Спасибо большое - дальше буду разбираться. Думаю там ещё много всего любопытного.
-
- осмотрелся
- Сообщения: 139
- Зарегистрирован: 15 дек 2020, 20:29
- Имя: Алексей
- Страна: Россия
- город/регион: Пенза
- Благодарил (а): 30 раз
- Поблагодарили: 8 раз
Вывод вещественного числа в WinCC 2008, SP3
Ещё вопросик появился: как правильно передавать значение типа S5TIME?
Сначала я думал, что для этого используются специальное поле "Date-Time Field". Но попробовав его использовать - понял, что не для этого. Вернулся к полю "IO Field". Но какой формат там ставить? по смыслу подходит "Time", но он явно конфликтует с самой переменной расположенной в блоке данных и имеющей тип "S5TIME". Не конфликтует обычный "Decimal", но это же просто для десятичных чисел в представлении. Я читал про организацию переменных типа "S5TIME" - там в BCD формате в младших 12 битах, потом ещё 2 разряда база времени. Как правильно передать?
Сначала я думал, что для этого используются специальное поле "Date-Time Field". Но попробовав его использовать - понял, что не для этого. Вернулся к полю "IO Field". Но какой формат там ставить? по смыслу подходит "Time", но он явно конфликтует с самой переменной расположенной в блоке данных и имеющей тип "S5TIME". Не конфликтует обычный "Decimal", но это же просто для десятичных чисел в представлении. Я читал про организацию переменных типа "S5TIME" - там в BCD формате в младших 12 битах, потом ещё 2 разряда база времени. Как правильно передать?
-
- освоился
- Сообщения: 222
- Зарегистрирован: 19 сен 2019, 10:09
- Имя: Макс
- Страна: Россия
- город/регион: Славянск-на-Кубани
- Благодарил (а): 5 раз
- Поблагодарили: 38 раз
Вывод вещественного числа в WinCC 2008, SP3
Насколько я знаю - по простому никак. Я писал функцию которая переводит S5Time в Time.
WinCC 7.4 SP1 Upd15, Step5.6
-
- не первый раз у нас
- Сообщения: 318
- Зарегистрирован: 14 фев 2014, 11:55
- Имя: Николай
- Страна: Россия
- Благодарил (а): 16 раз
- Поблагодарили: 72 раза
Вывод вещественного числа в WinCC 2008, SP3
Вы что хотите сказать, что кто на S7-300 наваял проект, где в блоке данных объявил тип DWord для переменной, которая по факту является Real? Да еще и какие-то функции написал, которые принимают аргументы типа Dword, а работают с ними как с Real? Господи... Не, ну понятно, что прямая адрессация и работай с данными как хочешь... но по-моему это какой-то идиотизм...Alex80 писал(а): ↑15 ноя 2023, 13:01 Сама переменная на которую ссылается тэг находится в блоке данных и имеет тип DWORD - там уже перемасштабированное значение, снятое с аналогового канала
...
Переделать в DB тип данных этого поля - думаю это потащит за собой переделывание интерфейсов функций, как минимум, а то и переписка самих функций, которые работают с этим DB.
-
- осмотрелся
- Сообщения: 139
- Зарегистрирован: 15 дек 2020, 20:29
- Имя: Алексей
- Страна: Россия
- город/регион: Пенза
- Благодарил (а): 30 раз
- Поблагодарили: 8 раз
Вывод вещественного числа в WinCC 2008, SP3
Да - он там даже для перемасштабирования не стандартную функцию использует, а свою - ручками написанную.Nicolayy писал(а): ↑17 ноя 2023, 00:25 Вы что хотите сказать, что кто на S7-300 наваял проект, где в блоке данных объявил тип DWord для переменной, которая по факту является Real? Да еще и какие-то функции написал, которые принимают аргументы типа Dword, а работают с ними как с Real? Господи... Не, ну понятно, что прямая адрессация и работай с данными как хочешь... но по-моему это какой-то идиотизм...
-
- здесь недавно
- Сообщения: 35
- Зарегистрирован: 02 фев 2023, 10:38
- Имя: Владимир
- Страна: РФ
- город/регион: Восьмипалатинск
- Благодарил (а): 4 раза
- Поблагодарили: 12 раз
Вывод вещественного числа в WinCC 2008, SP3
Все зависит от конкретной ситуации. В данном случае возможно панель MONITOUCH подключалась по какому-нибудь Modbus. Если драйвер обмена устройства не позволяет менять порядок регистров/байтов для корректного представления данных, зачастую приходится выполнять данные манипуляции программно в коде ПЛК, и в данном случае DWORD - то, что нужно для такого рода операций.
-
- не первый раз у нас
- Сообщения: 318
- Зарегистрирован: 14 фев 2014, 11:55
- Имя: Николай
- Страна: Россия
- Благодарил (а): 16 раз
- Поблагодарили: 72 раза
Вывод вещественного числа в WinCC 2008, SP3
Если бы суть была в этом, то эти данные не считались бы нормально, когда для них в WinCC просто указали тип данных Float (=Real).AppCreator писал(а): ↑17 ноя 2023, 08:42 В данном случае возможно панель MONITOUCH подключалась по какому-нибудь Modbus. Если драйвер обмена устройства не позволяет менять порядок регистров/байтов для корректного представления данных, зачастую приходится выполнять данные манипуляции программно в коде ПЛК
p.s. Кстати, забавен тот факт, что менять 16-битные слова местами не умеют и сименовские панели в том числе. Поэтому контроллер Siemens не может нормально обмениваться данными типа Real с панелями того же Siemens'а по modbus ))) это какой-то позор, да
-
- осмотрелся
- Сообщения: 139
- Зарегистрирован: 15 дек 2020, 20:29
- Имя: Алексей
- Страна: Россия
- город/регион: Пенза
- Благодарил (а): 30 раз
- Поблагодарили: 8 раз
Вывод вещественного числа в WinCC 2008, SP3
Вообщем написал я дополнительных пару функций для преобразования INT в S5TIME - должно работать в теории. Не понятно только как предыдущая панель корректно работала. Может там конечно прям в поле ввода можно выбрать тип S5TIME - кстати было бы очень удобно - не понимаю почему нет такого. Как допишу HMI - отпишусь работает или нет. Мой первый крупный проект именно в HMI. До этого писал - но по мелочи.
-
- не первый раз у нас
- Сообщения: 318
- Зарегистрирован: 14 фев 2014, 11:55
- Имя: Николай
- Страна: Россия
- Благодарил (а): 16 раз
- Поблагодарили: 72 раза
Вывод вещественного числа в WinCC 2008, SP3
Ну, возможно, что как с 8-битным числом BCD-формата. В самом формате S5TIME оно там 12-битное используется (три 4-битных BCD-числа), но может быть достаточно и двух, так что...
-
- освоился
- Сообщения: 290
- Зарегистрирован: 09 авг 2016, 13:49
- Имя: Чистилин Андрей Анатольевич
- Страна: Россия
- город/регион: Малоярославец
- Благодарил (а): 31 раз
- Поблагодарили: 36 раз
Вывод вещественного числа в WinCC 2008, SP3
Сейчас посмотрел как я выводил время в секундах: выводено как Decimal в формате 999. Data type тега выставлен Timer. Масштабирование тега 1000:1 (т.к. из ПЛК получим время в миллисекундах) .WinCC Flexible 2008. Панель MP277. Формат данных в блоке данных - S5TIME.
Так же делал в ТИА Portal V16 для КТР400, только тип данных тега -Time.
Так же делал в ТИА Portal V16 для КТР400, только тип данных тега -Time.
-
- освоился
- Сообщения: 222
- Зарегистрирован: 19 сен 2019, 10:09
- Имя: Макс
- Страна: Россия
- город/регион: Славянск-на-Кубани
- Благодарил (а): 5 раз
- Поблагодарили: 38 раз
Вывод вещественного числа в WinCC 2008, SP3
Это не совсем правильно. В S5Time в качестве единицы времени может быть 10мс;100мс;1с;10с, а в BCD указывается количество этих единиц. Если конкретно ваше время такое что единица времени 1 секунда, то вы УГАДАЛИ с масштабированием 1000:1, в остальных трех случаях ваш вариант переводит S5Time в секунды неправильно.ZuElecRu писал(а): ↑20 ноя 2023, 13:22 Сейчас посмотрел как я выводил время в секундах: выводено как Decimal в формате 999. Data type тега выставлен Timer. Масштабирование тега 1000:1 (т.к. из ПЛК получим время в миллисекундах) .WinCC Flexible 2008. Панель MP277. Формат данных в блоке данных - S5TIME.
Так же делал в ТИА Portal V16 для КТР400, только тип данных тега -Time.
PS. Что-то не клеится, S5Time/1000 адекватное время никак не получим. Просто TIME/1000 = секунды, правильно, как вы и сказали в ПЛК TIME указывает количество миллисекунд. S5Time минимальный блок 10мс, поэтому если и делить то не на 1000, а на 100, да и то этот вариант применим к одному варианту из трех (блок 10мс от 10мс до 9с990мс).
WinCC 7.4 SP1 Upd15, Step5.6
-
- освоился
- Сообщения: 290
- Зарегистрирован: 09 авг 2016, 13:49
- Имя: Чистилин Андрей Анатольевич
- Страна: Россия
- город/регион: Малоярославец
- Благодарил (а): 31 раз
- Поблагодарили: 36 раз
Вывод вещественного числа в WinCC 2008, SP3
Да я как то тоже задумался после ваших слов и полез еще раз все проверить и в мануал. Все работает как я описал, проверил на "живом"оборудовании CPU317 и MP277 на реально работающей сейчас установке. В ПЛК в блоке данных формат данных S5TIME. Тег в WinCC Flexible - Timer. Масштабирование тега 1000:1. Сравниваю число в ПЛК в мониторе Simatic Manager и на панели MP277. Все в соответсвии с Вашими словами и теорией. На пример, на панели стоит 10 сек, в ПЛК в бинарном формате 2#0001_0001_0000_0000 = 100*100ms=10000ms=10s.
Задаю с панели 10 минут, ввожу в поле соотвественно 600 секунд. В ПЛК 2#0010_0110_0000_0000 - базис поменялся как видим. 600*1s=600s=10m. Все как бы работает. Видимо идет автоматическая конвертация данных из формата S5TIME при опросе тега.
Масштабирование я ввел чуть позже, поначалу так и выводил время в миллисекундах, но механики, для которых нониус есть повседневность жизни, отказались воспринимать время в тясячных секунды. Пришлось масштабировать. :-)
-
- освоился
- Сообщения: 222
- Зарегистрирован: 19 сен 2019, 10:09
- Имя: Макс
- Страна: Россия
- город/регион: Славянск-на-Кубани
- Благодарил (а): 5 раз
- Поблагодарили: 38 раз
Вывод вещественного числа в WinCC 2008, SP3
Я сравниваю с WinCC 7.4, и там в принципе нет такого формата как Timer. Есть только Integer с/без знака и длиной 8/16/32 через которое выводят количество "блоков времени". Там само по себе ничто не конвертируется.ZuElecRu писал(а): ↑21 ноя 2023, 11:30Да я как то тоже задумался после ваших слов и полез еще раз все проверить и в мануал. Все работает как я описал, проверил на "живом"оборудовании CPU317 и MP277 на реально работающей сейчас установке. В ПЛК в блоке данных формат данных S5TIME. Тег в WinCC Flexible - Timer. Масштабирование тега 1000:1. Сравниваю число в ПЛК в мониторе Simatic Manager и на панели MP277. Все в соответсвии с Вашими словами и теорией. На пример, на панели стоит 10 сек, в ПЛК в бинарном формате 2#0001_0001_0000_0000 = 100*100ms=10000ms=10s.
Задаю с панели 10 минут, ввожу в поле соотвественно 600 секунд. В ПЛК 2#0010_0110_0000_0000 - базис поменялся как видим. 600*1s=600s=10m. Все как бы работает. Видимо идет автоматическая конвертация данных из формата S5TIME при опросе тега.
Масштабирование я ввел чуть позже, поначалу так и выводил время в миллисекундах, но механики, для которых нониус есть повседневность жизни, отказались воспринимать время в тясячных секунды. Пришлось масштабировать. :-)
То есть данные с ПЛК в формате Time(32bit) без проблем конвертируется в WinCC как Unsigned 32-bit value/1000=количество сек.
А S5Time никак.
А если и попробовать то 2#0001_0001_0000_0000 = 4352 что никак не перевести в 10 секунд.
А 2#0010_0110_0000_0000 = 9728 что тоже не лучше.
WinCC 7.4 SP1 Upd15, Step5.6
-
- освоился
- Сообщения: 290
- Зарегистрирован: 09 авг 2016, 13:49
- Имя: Чистилин Андрей Анатольевич
- Страна: Россия
- город/регион: Малоярославец
- Благодарил (а): 31 раз
- Поблагодарили: 36 раз
Вывод вещественного числа в WinCC 2008, SP3
Топикстартер делает панель и скорее всего средствами ТИА, так что все должно получиться. Со взрослым WinCC я не работал, так только мимо проходил, насколько я осведомлен - это не про панели, а про компьютеры и сервера?
-
- освоился
- Сообщения: 222
- Зарегистрирован: 19 сен 2019, 10:09
- Имя: Макс
- Страна: Россия
- город/регион: Славянск-на-Кубани
- Благодарил (а): 5 раз
- Поблагодарили: 38 раз
Вывод вещественного числа в WinCC 2008, SP3
Да
WinCC 7.4 SP1 Upd15, Step5.6
-
- эксперт
- Сообщения: 1035
- Зарегистрирован: 31 мар 2018, 12:05
- Имя: Вячеслав
- Благодарил (а): 100 раз
- Поблагодарили: 141 раз
Вывод вещественного числа в WinCC 2008, SP3
И зачем тогда запятая? Если число остаётся целым?
Отправлено спустя 8 минут 30 секунд:
Любопытно - что получилось? Было на выводе 220в,стало 220.00?
Смотрите,если у вас реальное число идёт в формате десятичного, то есть 22035, и вы понимаете, что это 220,35В, то нужно просто сделать шифт запятой в I/O окошке.
И ещё непонятно, пишите в названии темы WinCC 2008 sp3, а это Flexible, а потом оказывается что все таки ТИА...
Или я не все осмыслил по текстам?)