WinCC unified Tia portal v18 преобразование типа тега

Панели оператора PP/OP/TP/TD/MP.
Программные пакеты ProTool/WinCC flexible, SCADA система WinCC
Lochin
Posts: 3
Joined: Wed Jul 05, 2023 6:15 am
Location: Moldova

WinCC unified Tia portal v18 преобразование типа тега

Post by Lochin » Thu Jul 06, 2023 1:13 pm

Добрый день.
Осваиваю 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 нагружает передачу данных, большим количеством пакетов.

Image

Спасибо за ваше время.

Answers to FAQs
Faq & Info
Faq & Info
Posts: 173
Joined: Thu Oct 13, 2005 6:42 pm
Location: Frequently Asked Questions – Часто Задаваемые Вопросы

Re: WinCC unified Tia portal v18 преобразование типа тега

Post by Answers to FAQs » Thu Jul 06, 2023 3:05 pm

<< Я пробовал в свойствах тега включать linear scalling...
всё верно, только ещё в свойствах самого поля задай "ххххх.х" и не будет округления

<< Так же как передать байт аварий в другой тег локальный другого типа, что бы можно было расписать в HMI alarms каждый бит аварии
в "дискретных алармах" прописываются аварии и указываются биты из слова...

Lochin
Posts: 3
Joined: Wed Jul 05, 2023 6:15 am
Location: Moldova

Re: WinCC unified Tia portal v18 преобразование типа тега

Post by Lochin » Fri Jul 07, 2023 5:33 am

Так как тип данный int, полученных с modbus он мне не дает в linear scalling указать значение с точкой.
В выводе данных я указал что он будет вещественного типа {F} bar и данные округляются в большую сторону.

Code: Select all

Lochin - картинки выкладывай на https://ru.imgbb.com/
Не знаю если правильно, но у меня была идея сделать скрипт в Scripts -> global module, который выполнял следующее.
По изменению 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']);

Answers to FAQs
Faq & Info
Faq & Info
Posts: 173
Joined: Thu Oct 13, 2005 6:42 pm
Location: Frequently Asked Questions – Часто Задаваемые Вопросы

Re: WinCC unified Tia portal v18 преобразование типа тега

Post by Answers to FAQs » Fri Jul 07, 2023 12:44 pm

оставляешь инт с линеаризацией.
это адванс, в юнифай должно быть похоже
дексимальная точка
Show
Image
как передать значение одного тага в другой:
Show
Image
алармы из инт:
Show
Image

Lochin
Posts: 3
Joined: Wed Jul 05, 2023 6:15 am
Location: Moldova

Re: WinCC unified Tia portal v18 преобразование типа тега

Post by Lochin » Mon Jul 10, 2023 6:49 am

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. Сейчас я из устройства в модбасе читаю каждый бит из того же адреса алармов, таким образом сильно загрузив передачу данных.