Да, @1exan абсолютно прав. Если подробнее:
1. Нужно создать новый тип устройства с такими например свойствами:
value - входное значение, тип Number, значение по умолчанию 0
out1, out2 - два свойства типа Bool
Далее в типе на первой вкладке галочкой выбираем Обработчик: При изменении свойств устройства или глобальных переменных
В строке Свойства указываем value
Обработчик заполняется на вкладке Обработчики - узел OnChange
module.exports = function(device, triggers, globals, debug) {
switch (device.value) {
case 1:
device.assign('out1', 0);
device.assign('out2', 0);
break;
case 2:
device.assign('out1',1);
device.assign('out2', 0);
break;
case 3:
device.assign('out1', 0);
device.assign('out2', 1);
break;
case 4:
device.assign('out1', 1);
device.assign('out2', 1);
break;
default:
device.assign('out1', 0);
device.assign('out2', 0);
break;
}
}
Типы можно переносить между проектами. Можно загрузить из файла
Теперь можно создавать устройства этого типа
2. Создать устройство этого типа.
Свойство value привязать к входному каналу Modbus со значениями 1-4
out1, out2 к каналам не привязываем, они будут заполняться из обработчика
Работоспособность скрипта можно проверить до привязки к каналу.
Для этого присвойте значение value в Устройстве (Вкладка Значения - столбик Присвоить значение, нажмите Сохранить)
Спасибо @1exan, спасибо Владимир.
...с обработчиком всё получилось, даже нашел время поиграться)))
Отлично! Уверен, что и дальше все получится. IntraSCADA гибкая и возможностей у нее много
Доброго времени суток Владимир.
…и снова вопрос по теме – если можно конечно?!
В ИнтраСкаде мы настраивая свойство параметра, для отображения его в строковом формате имеем возможность присвоить этому параметру прификс «единица измерения» и соответственно при выводе этого параметра на экран мы видим, например 22,5 °C. Так вот а нет ли возможности установить еще один прификс до параметра, то есть что бы их было два, до и после и в строке выводилось, например Т.ул 22.5 °C.
…это бы очень облегчило создание объектов и сделало интерфейс более логичным и понятным
2025-09-18_06-37-58.jpg
Последний раз редактировалось yurgin_757; 18.09.2025 в 05:44.
И опять уважаемый 1exan прав на 100%!
Если для разных устройств одного типа префиксы должны быть разные, нужно так и поступить.
В типе устройства:
1. Добавить новое свойство (например, prefvalue), Тип "Parameter", Тип переменной "String"
2. Для основного свойства (например, value) заменить форматирующий обработчик, для этого в столбце "Значение в виде строки" выбрать "Пользовательский".
3. Доработать форматирующий обработчик: на вкладке "Обработчики" для узла "value#string" заменить код:
/**
* Функция вывода значения "value" в виде строки
*
* device - это устройство
* prop = "value"
* val - входное значение
*/
module.exports = function(device, prop, val, debug) {
// Строку стандартного обработчика расширить
// return isNaN(val) ? val : Number(val).toFixed(device.getDig(prop)) + device.getMu(prop);
const str = isNaN(val) ? val : Number(val).toFixed(device.getDig(prop)) + device.getMu(prop);
return device.prefvalue+' '+str;
}
В устройствах заполнить свойство prefvalue
Другой вариант:
Если префикс - константа для свойства этого типа, то можно prefvalue не добавлять, а просто в форматирующем обработчике вернуть : return 'Т. ул. '+str;
Спасибо!
..с наскока не получилось почему то?!
...буду разбираться, почему не получается2025-09-18_15-39-27.jpg
Это сработает после изменения значения.
...оказывается это можно и стандартным способом сотворить))
у элементта input_classic есть такая функция ввода, префикс и суфикс, потом привязываю к параметру данных value#string и получаю = Т1_ 29.3 ºC
...НО КОНЕЧНО ЭТО НЕ ТО, БУДУ ВАШ МЕТОД СТАРАТЬСЯ ПОЛУЧИТЬ, ТАК КАК ЭТО ПОЛЕ input_classic РЕДАКТИРУЕТСЯ, А ЭТО НЕ ЕСТЬ АЙС
IMPUT CLASSIC.jpg
Последний раз редактировалось yurgin_757; 18.09.2025 в 15:17.