Добрый день.
Осваиваю winCC unified Tia portal v18.
Опрашиваю контроллер частотника по modbus ТСР. Читаю значение уставки поддержания давления. Данные опрашиваю с типом данных Int. Число приходит умноженное на 10. Если давление уставки 2.8 bar то приходит 28.
Какие есть варианты чтобы получить число в 10 раз меньшее с запятой, а когда меняешь значение в поле ввода значение что бы отправлялось умноженное на 10?
Я пробовал в свойствах тега включать linear scalling. Делит на 10 но показывает число округленное в большую сторону - 3.0 bar.
Четко понятно, что регистр из двух байт. Поэтому читать как real (4 байта) нет смысла. Когда читаешь как real выходит полная ерунда.
Может есть способ в строну обработки сигнала и передачи уже в другой тег, например при помощи скрипта? Как это сделать правильно и где можно найти информацию по скриптам, как с ними работать?
Так же как передать байт аварий в другой тег локальный другого типа, что бы можно было расписать в HMI alarms каждый бит аварии, так как чтение каждого бита из байта по modbus нагружает передачу данных, большим количеством пакетов.
Спасибо за ваше время.
WinCC unified Tia portal v18 преобразование типа тега
-
- Posts: 3
- Joined: Wed Jul 05, 2023 6:15 am
- Location: Moldova
-
- Faq & Info
- Posts: 179
- Joined: Thu Oct 13, 2005 6:42 pm
- Location: Frequently Asked Questions – Часто Задаваемые Вопросы
Re: WinCC unified Tia portal v18 преобразование типа тега
<< Я пробовал в свойствах тега включать linear scalling...
всё верно, только ещё в свойствах самого поля задай "ххххх.х" и не будет округления
<< Так же как передать байт аварий в другой тег локальный другого типа, что бы можно было расписать в HMI alarms каждый бит аварии
в "дискретных алармах" прописываются аварии и указываются биты из слова...
всё верно, только ещё в свойствах самого поля задай "ххххх.х" и не будет округления
<< Так же как передать байт аварий в другой тег локальный другого типа, что бы можно было расписать в HMI alarms каждый бит аварии
в "дискретных алармах" прописываются аварии и указываются биты из слова...
-
- Posts: 3
- Joined: Wed Jul 05, 2023 6:15 am
- Location: Moldova
Re: WinCC unified Tia portal v18 преобразование типа тега
Так как тип данный int, полученных с modbus он мне не дает в linear scalling указать значение с точкой.
В выводе данных я указал что он будет вещественного типа {F} bar и данные округляются в большую сторону.
Не знаю если правильно, но у меня была идея сделать скрипт в Scripts -> global module, который выполнял следующее.
По изменению teg полученного с modbus выполнялся бы скрипт. Который преобразовывал данные из int в float передавая в локальный тег.
Уже если я хочу изменить данные в блоке ввода IO field (локальный тег), я в Events -> Release key прописываю скрипт, который умножает мое значение и передает в тег modbus.
Что то в этом духе в Scripts -> global module -> Global definition area
Тут возможно много ошибок но по крайней мере он сперва жалуется на строку
let subSetBar = HMIRuntime.Tags.CreateSubscription(['SetBar']);
В выводе данных я указал что он будет вещественного типа {F} bar и данные округляются в большую сторону.
Code: Select all
Lochin - картинки выкладывай на https://ru.imgbb.com/
По изменению teg полученного с modbus выполнялся бы скрипт. Который преобразовывал данные из int в float передавая в локальный тег.
Уже если я хочу изменить данные в блоке ввода IO field (локальный тег), я в Events -> Release key прописываю скрипт, который умножает мое значение и передает в тег modbus.
Что то в этом духе в Scripts -> global module -> Global definition area
Code: Select all
let subSetBar = HMIRuntime.Tags.CreateSubscription(['SetBar']);
subSetBar.Add(tagSetBar);
subSetBar.OnChange = function()
{
// выполнение скрипта при изменении значения тега
// Записываем значение полученое с modbus teg SetBar в локальный тег SetBarValue типа Real
let tagSetBarValue = Tags("SetBarValue");
tagSetBarValue.Write(float(subSetBar) / 10);
};
let subSetBar = HMIRuntime.Tags.CreateSubscription(['SetBar']);
-
- Faq & Info
- Posts: 179
- Joined: Thu Oct 13, 2005 6:42 pm
- Location: Frequently Asked Questions – Часто Задаваемые Вопросы
-
- Posts: 3
- Joined: Wed Jul 05, 2023 6:15 am
- Location: Moldova
Re: WinCC unified Tia portal v18 преобразование типа тега
1)В версии unified, в Output format я указал {F2}, что значит вывод данных будет такой 0.00. Это никак не помогает решить проблему вывода, как и ввода информации. Уставка стоит 2.5 bar а показывает 3.0, то есть округляет данные. Данные получаю по modbus тип int, то есть значение 25.
2)Как нормализовать данные так понимаю глобально (скрипт), что бы их передать в другой таг и далее логировать этот таг в тренде?
3)В discrete alarm принимаются данные либо типа bit или word, dword. Тип данных int полученный из modbus не воспринимается в версии unified. Поэтому как его тоже глобально собрать из двух данных типа int и преобразовать в dword и далее обрабатывать в discrete alarm. Сейчас я из устройства в модбасе читаю каждый бит из того же адреса алармов, таким образом сильно загрузив передачу данных.
2)Как нормализовать данные так понимаю глобально (скрипт), что бы их передать в другой таг и далее логировать этот таг в тренде?
3)В discrete alarm принимаются данные либо типа bit или word, dword. Тип данных int полученный из modbus не воспринимается в версии unified. Поэтому как его тоже глобально собрать из двух данных типа int и преобразовать в dword и далее обрабатывать в discrete alarm. Сейчас я из устройства в модбасе читаю каждый бит из того же адреса алармов, таким образом сильно загрузив передачу данных.