В телеграмме техподдержка отвечает всем. По электронной почте аналогично. Про какую наживку Вы говорите?
Вид для печати
В телеграмме техподдержка отвечает всем. По электронной почте аналогично. Про какую наживку Вы говорите?
По последнему вопросу, опять же 1exan вам уже ответил, большое ему спасибо!
Если нужны данные разных устройств - можно использовать сценарии
Здесь есть несколько вариантов (скрипты во вложении):
Вариант 1: Датчиков ограниченное число - будем пересчитывать среднее в момент изменения значения любого из датчиков
Вариант 2: Датчиков много, среднее значение достаточно считать с заданной периодичностью
В этом случае не будем прописывать каждый датчик в скрипте, а будем выбирать по какому-то признаку:
можно по названию, размещению, метке.
Сценарий можно вызывать по расписанию с нужной периодичностью.
При таком подходе среднее значение доступно в любом месте, можно даже вывести график/отчет средних значений
Если же хотите все делать прямо на экране в точке визуализации, можно и так:
В привязке выберите для каждого датчика значение и состояние канала, например:
inData TE_001.value
inData1 TE_001.value#chstatus
inData2 TE_002.value
inData3 TE_002.value#chstatus
В окне Function поместите скрипт:
let sum = 0;
let n = 0;
if (inData1 == 0) {sum = sum + inData; n = n +1;}
if (inData3 == 0) {sum = sum + inData2; n = n +1;}
if (n>0) return Math.round(sum/n);
return '-';
JavaScript довольно простой язык, стандартный, результат виден сразу.
Наша документация содержит много примеров и даже краткое описание основ JS https://docs.intrascada.com/ru/pg338
Применение скриптов позволяет делать так как нужно вам, а не как замыслил и воплотил разработчик системы 🙂
Спасибо Владимир!
За примеры и особенно за ссылку, https://learn.javascript.ru/ очень дельно, буду вукуривать)))
...я в выходные сам чуток по "кодил" ...хотя и это громко сказано и тем не мене кое что получил)))
Но ваш код однозначно лучше, всё лаконично и почти понятно, обязательно его попробую!Вложение 85866
Вот и вопрос о замысле разработчика.
За собой заметил, что начало напрягать вводить значение/10, значение/100 и при командах обратное.
Мое мнение, что эта базовая вещь должна быть прописана в шаблоне устройства, которое мы настраиваем (простой пример модули Овен)
. И при использования таких же модулей в других проектах мы просто подгружает шаблон, где все уже прописано и не надо на каналах снова писать /10 или /100.
Ну и плюс скрипты уже для изменений других настроек, как раз для "программистов"
Собственно всему виной отсутствие времени и день.
на javasript написаны милиарды строк кода, там вкуривать уже не надо, достаточно задать вопрос ИИ и вот ответдля пользователя остается только адаптировать предложенный вариант и отладить на предмет ошибокЦитата:
Для решения задачи расчета средней температуры с учетом возможного отсутствия данных с некоторых датчиков, можно использовать следующий подход:
Как это работает:Код:// Создаем массив с данными датчиков
// null означает, что датчик не работает
const sensors = [22.5, null, 24.3, 23.1];
// Функция для расчета средней температуры
function calculateAverageTemperature(sensors) {
// Фильтруем массив, оставляя только валидные значения
const validTemperatures = sensors.filter(temp => temp !== null && temp !== undefined);
// Проверяем, есть ли хотя бы один работающий датчик
if (validTemperatures.length === 0) {
throw new Error('Нет работающих датчиков');
}
// Считаем сумму всех валидных температур
const sum = validTemperatures.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
// Вычисляем среднее значение
const average = sum / validTemperatures.length;
return average;
}
try {
const averageTemperature = calculateAverageTemperature(sensors);
console.log(`Средняя температура: ${averageTemperature.toFixed(2)}°C`);
} catch (error) {
console.error(error.message);
}
Массив датчиков содержит значения температур, где null означает нерабочий датчик.
Метод filter удаляет все null и undefined значения, оставляя только валидные температуры.
Метод reduce суммирует все валидные значения.
Деление происходит на количество валидных значений, которое автоматически определяется.
Преимущества такого подхода:
Гибкость: количество датчиков может меняться
Надежность: автоматически игнорирует нерабочие датчики
Ошибка обработки: выбрасывает ошибку, если все датчики не работают
Точность: результат округляется до двух знаков после запятой
Вы можете легко модифицировать этот код, добавив дополнительные проверки или изменяя способ обработки ошибок в зависимости от ваших требований.
Вы совершенно правы. Наши интеграторы используют ИИ для написания нетривиальных скриптов, конечно при наличии базовых знаний js. А некоторые наши разработчики используют ИИ для решения сложных задач по развитию системы. Особенно в этом плане интересен grok.
VladimirIS, это отлично. Осталось решить глобальную проблему по части интегратора или фрилансера. Но вы по данный вопрос просто проигнорировали.
Любое программирование это время, время это деньги. Не вижу интереса тратить свое время, а деньги платить другим. По этому очень интересует вариант раздельного лицензирования, вариант представления каналов как внутренних из собственного кода.
Спасибо capzap за знакомство с умным "пареньком" ))
ИИ, это сила!!!
...но и melky тогда прав в плане "готового продукта" за полтора ляма и последующего времени на "допилы" в купе с ИИ
Согласитесь, если сказано что "уневерсальный" и я его купил, то там должно быть всё, как в МастерСкада или Кодесюс...
И это еще повезёт если есть Ведущий типа Владимера который может послать в нужном направлении, на которое к стати тоже нужно время, а вот с ним всегда на производстве туговато увы!
Спасибо всем парни! Не сердитесь и давайте жить дружно!!!
VladimirIS. На уровне ядра механизмы изменения внешних тегов на внутренние. В общем я не специалист по части объяснений. Суть - интегратор написал драйвер, и использует его экземпляры бесплатно. А не доплачивает ещё за каналы, которые займут эти экземпляры.
1. Такой механизм интересен интегратора , так как позволит делать скидки за счёт стоимости своего продукта
2. Такой механизм должен быть интересен разработчикам, так как продукт сможет развиваться не только руками разработчиков.
Решать не мне и не пользователям такое, а только вам.
Сейчас у вас все заточено на конечного пользователя, который чаще выбирает систему по существующему набору поддерживаемых устройств, а не по наличию возможности запрограммировать...
Опять двадцать пять. Вы не посмотрели и не попробовали систему. У вас "нет времени", понятно. В первую очередь мы работаем с интеграторами, которые, кстати, достаточно часто пишут свои плагины для нестандартных протоколов.
Теперь понятна суть ваших хотелок. Хочу написать свой плагин и продавать его конечным заказчикам, естественно в комплекте с системой. Но платить разработчикам системы не хочу.
Кстати, хочу напомнить, все плагины у IntraSCADA бесплатные.
И где здесь наш интерес?
Ну поставьте себя на место интегратора, где здесь их интерес, постоянно выбивать скидки на вашу систему это раз.
И два, а почему затраченное время однажды, должно стать в последующем бесплатным?
Все же достаточно просто
Вполне может быть реализован механизм, при котором простое использование драйвера будет ограничено 2-3 устройствами без лицензирования самого драйвера, и тогда участвуют в расчете каналы.
И ещё момент, в сфере ЖКХ поканальное лицензирование не прокатывает, слишком дорого выходит для УК например.
Доброго времени суток Владимир.
Если можно, пару вопросов:
Допустим я делаю основной проект, делая его в чистовом виде, параллельно веду черновой проект, где что-то отлаживаю, копирую с каких то других примеров что-то нужное для себя, подгоняю это что-то нужное, а потом хоп и не могу это экспортировать на чистовик "импортированный компонент не может быть экспортирован" это фича или баг??
И второй очень актуальный вопросик, в МСкада есть компонент повторитель, там мы делали как: создавали папку данные в объекте и связывали вход повторителя с данными из ОПС , а выход повторителя многократно могли использовать, в расчётах, в формулах скриптов, в элементах отображения, а в ИСкаде как то возможно реализовать такое - это бы очень облегчило создание проекта
Еще раз извините за беспокойство Владимир, что то я не могу ваш код запустить....
...а можно реальный проектик с этим примером у вас попросить?!
К сожалению, примера нет. Рекомендую обратиться в наш телеграм канал @IntraSCADA Там есть представители техподдержки.
В чате только купившие, а мы вроде как только планировали...
Спасибо Владимир за терпение.