Страница 13 из 14 ПерваяПервая ... 311121314 ПоследняяПоследняя
Показано с 121 по 130 из 138

Тема: IntraSCADA

  1. #121

    По умолчанию

    В телеграмме техподдержка отвечает всем. По электронной почте аналогично. Про какую наживку Вы говорите?

  2. #122

    По умолчанию

    По последнему вопросу, опять же 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
    Применение скриптов позволяет делать так как нужно вам, а не как замыслил и воплотил разработчик системы 🙂
    Вложения Вложения

  3. #123

    По умолчанию

    Цитата Сообщение от VladimirIS Посмотреть сообщение
    JavaScript довольно простой язык, стандартный, результат виден сразу.
    Наша документация содержит много примеров и даже краткое описание основ JS https://docs.intrascada.com/ru/pg338
    Применение скриптов позволяет делать так как нужно вам, а не как замыслил и воплотил разработчик системы ��
    Спасибо Владимир!
    За примеры и особенно за ссылку, https://learn.javascript.ru/ очень дельно, буду вукуривать)))

    ...я в выходные сам чуток по "кодил" ...хотя и это громко сказано и тем не мене кое что получил)))
    Но ваш код однозначно лучше, всё лаконично и почти понятно, обязательно его попробую!2025-09-22_16-41-15.jpg
    Последний раз редактировалось yurgin_757; 22.09.2025 в 15:44.

  4. #124
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    13,001

    По умолчанию

    Вот и вопрос о замысле разработчика.
    За собой заметил, что начало напрягать вводить значение/10, значение/100 и при командах обратное.
    Мое мнение, что эта базовая вещь должна быть прописана в шаблоне устройства, которое мы настраиваем (простой пример модули Овен)
    . И при использования таких же модулей в других проектах мы просто подгружает шаблон, где все уже прописано и не надо на каналах снова писать /10 или /100.
    Ну и плюс скрипты уже для изменений других настроек, как раз для "программистов"

    Собственно всему виной отсутствие времени и день.

  5. #125
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,579

    По умолчанию

    на 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 суммирует все валидные значения.

    Деление происходит на количество валидных значений, которое автоматически определяется.

    Преимущества такого подхода:

    Гибкость: количество датчиков может меняться

    Надежность: автоматически игнорирует нерабочие датчики

    Ошибка обработки: выбрасывает ошибку, если все датчики не работают

    Точность: результат округляется до двух знаков после запятой

    Вы можете легко модифицировать этот код, добавив дополнительные проверки или изменяя способ обработки ошибок в зависимости от ваших требований.
    для пользователя остается только адаптировать предложенный вариант и отладить на предмет ошибок
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  6. #126

    По умолчанию

    Вы совершенно правы. Наши интеграторы используют ИИ для написания нетривиальных скриптов, конечно при наличии базовых знаний js. А некоторые наши разработчики используют ИИ для решения сложных задач по развитию системы. Особенно в этом плане интересен grok.

  7. #127

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Вот и вопрос о замысле разработчика.
    За собой заметил, что начало напрягать вводить значение/10, значение/100 и при командах обратное.
    Мое мнение, что эта базовая вещь должна быть прописана в шаблоне устройства, которое мы настраиваем (простой пример модули Овен)
    . И при использования таких же модулей в других проектах мы просто подгружает шаблон, где все уже прописано и не надо на каналах снова писать /10 или /100.
    Ну и плюс скрипты уже для изменений других настроек, как раз для "программистов"

    Собственно всему виной отсутствие времени и день.
    А кто сказал, что в IntraSCADA этого нет?

  8. #128
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    13,001

    По умолчанию

    VladimirIS, это отлично. Осталось решить глобальную проблему по части интегратора или фрилансера. Но вы по данный вопрос просто проигнорировали.

    Любое программирование это время, время это деньги. Не вижу интереса тратить свое время, а деньги платить другим. По этому очень интересует вариант раздельного лицензирования, вариант представления каналов как внутренних из собственного кода.

  9. #129

    По умолчанию

    Спасибо capzap за знакомство с умным "пареньком" ))
    ИИ, это сила!!!
    ...но и melky тогда прав в плане "готового продукта" за полтора ляма и последующего времени на "допилы" в купе с ИИ
    Согласитесь, если сказано что "уневерсальный" и я его купил, то там должно быть всё, как в МастерСкада или Кодесюс...
    И это еще повезёт если есть Ведущий типа Владимера который может послать в нужном направлении, на которое к стати тоже нужно время, а вот с ним всегда на производстве туговато увы!

    Спасибо всем парни! Не сердитесь и давайте жить дружно!!!

  10. #130

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    VladimirIS, это отлично. Осталось решить глобальную проблему по части интегратора или фрилансера. Но вы по данный вопрос просто проигнорировали.

    Любое программирование это время, время это деньги. Не вижу интереса тратить свое время, а деньги платить другим. По этому очень интересует вариант раздельного лицензирования, вариант представления каналов как внутренних из собственного кода.
    Проблем "по части интегратора или фрилансера" у нас нет.
    Что предлагаете? Конкретнее, пока не совсем понятно.

Страница 13 из 14 ПерваяПервая ... 311121314 ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •