0
Отвечен

масштабирование в iRidium Gate

BlackAngel 9 лет назад в Tips and Tricks обновлен Aleksandr Romanov (CTO) 7 лет назад 5
Скажите, возможно ли в иридиум делать масштабирование, т.е. например по Modbus TCP в iRidium я получаю данные и в окне вижу эти данные, но я вижу данные без масштабирования точнее говоря выводится у меня значение 768, датчик 4-20мА, от 0 до 150 градусов, диапазон 800-4000. т.е. 768= примерно 19,2 градуса.
+1
Отвечен
Вы можете преобразовать полученные данные, применив к ним математическую операцию через скрипт:

var gDriver = IR.GetDevice("Modbus TCP");

IR.AddListener(IR.EVENT_TAG_CHANGE, gDriver, function(name,value)
{   
   if (name == "Temperature") // имя канала обратной связи
        IR.GetItem("Page 1").GetItem("Item 1").Value = (value/40).toFixed(1).toString();  // куда вывести, формула преобразования
});
В текстовое поле элемента (Type: Button, Feedback: Channel, 1 State) впишите специальный шаблон: $V, тогда полученное целое значение запишется в текстовое поле элемента. Рядом с шаблоном можно указать единицы измерения. Для вывода дробного значения, используйте шаблон $F1 ... $F5 (от 1 до 5 знаков после запятой).

Другие значения пересчитываютя по тому же принципу, внутри уже созданного слушателя. Пример:
!Математика для Modbus.irpz

преобразования значения сделал внутри PLC теперь на панель получаю нормальные значения, за исключением одного момента, на панели я вижу 2765 (на самом деле это 27.6 градусов) как сделать чтобы 2765 стало 27,6? пробовал $F2 стало 2765.00....
Значение с плавающей запятой можно передать только в адрес размерностью Float 32-bit. Измените тип регистра, по умолчанию он Unsigned 16-bit, т.е. не поддерживает Float.
Нашел пример на вашем сайте и реализовал таким образом:

IR.AddListener(IR.EVENT_TAG_CHANGE, IR.GetDevice("Modbus TCP"), function(name,value){ if(name == "температура на улице")
IR.GetItem("Главная 1").GetItem("Item 4").Value = (value*0.01).toFixed(1).toString();


Математику можно использовать в случаях, если контроллер не может отдать данные в нужном формате. Возможно, у вас как раз такая ситуация. Решение подходящее.

Сервис поддержки клиентов работает на платформе UserEcho