Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 23

Тема: Повышение/понижение температуры от количества дней.

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию Повышение/понижение температуры от количества дней.

    Здравствуйте всем. Нужна помощь в создании или у кого то есть готовый макрос такого вида - есть допустим количество дней, пусть 35, и есть начальная температура первого дня допустим 32 градуса и конечная температура последнего дня, 23 градуса. Как с этими данными сделать макрос чтоб с каждым днем температура понижалась или повышалась на такой размер градуса, в зависимости какое количество дней задано. Может кто сталкивался? Спасибо.

  2. #2

    По умолчанию

    Как с этими данными сделать макрос
    ну для начала сформулировать внятно словесно описание работы макроса/программы со всеми входящими/выходящими и взять ОЛ, открыть и начать писать алгоритм
    потмоу что то, что вы называете "готовый макрос" - это и есть программа, которую надо сделать
    Последний раз редактировалось In_Da_Cher_A; 19.09.2025 в 06:00.

  3. #3

    По умолчанию

    Есть фото примерного описания. Да, это для выращивания птицы. Вот такой алгоритм. На нем и споткнулся. Имеется инструкция от другого контроллера, необходимо это как то реализовать в OL.IMG_0145.jpg

  4. #4

    По умолчанию

    Цитата Сообщение от EgorMasterov Посмотреть сообщение
    Есть фото примерного описания. Да, это для выращивания птицы. Вот такой алгоритм. На нем и споткнулся. Имеется инструкция от другого контроллера, необходимо это как то реализовать в OL.IMG_0145.jpg
    На рисунке температурный график, как для отопления, пример функции графика от температуры на 10 точек тут,
    вам нужна температура от времени ( кол-ва дней).
    https://owen.ru/forum/showthread.php...l=1#post369459
    Последний раз редактировалось kondor3000; 19.09.2025 в 10:47.

  5. #5
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    2,017

    По умолчанию

    Цитата Сообщение от EgorMasterov Посмотреть сообщение
    Есть фото примерного описания. Да, это для выращивания птицы. Вот такой алгоритм. На нем и споткнулся. Имеется инструкция от другого контроллера, необходимо это как то реализовать в OL.IMG_0145.jpg
    В первом приближении как-то так, но я сильно не проверял
    Нюансы: энергонезависимость - после перезагрузки работа продолжится, и дежурный режим - температура, поддерживаемая, когда блок выключен
    Вложения Вложения
    Последний раз редактировалось Dimensy; 19.09.2025 в 20:33.

  6. #6
    Пользователь
    Регистрация
    09.12.2013
    Адрес
    Ставрополь
    Сообщений
    2,017

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    В первом приближении как-то так, но я сильно не проверял
    Нашел косяк - после первого дня на блок SCALE должны подаваться секунды от 0 до последнего дня, а у меня подавались секунды начиная с первого дня. Исправил
    Второй косяк - забыл что get_time выдает время в миллисекундах - исправил
    Вложения Вложения
    Последний раз редактировалось Dimensy; 20.09.2025 в 15:12.

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

    По умолчанию

    Цитата Сообщение от EgorMasterov Посмотреть сообщение
    Нужна помощь в создании или у кого то есть готовый макрос такого вида - есть допустим количество дней, пусть 35, и есть начальная температура первого дня допустим 32 градуса и конечная температура последнего дня, 23 градуса. Как с этими данными сделать макрос чтоб с каждым днем температура понижалась или повышалась на такой размер градуса, в зависимости какое количество дней задано.
    алиса на это придумала такой подход к решению задачи
    Код:
    FUNCTION CalculateTemperature : REAL
    VAR_INPUT
        StartTemp : REAL;    // Начальная температура (например, 32°C)
        EndTemp : REAL;      // Конечная температура (например, 23°C)
        TotalDays : INT;     // Общее количество дней (например, 35)
        CurrentDay : INT;    // Текущий день для расчета
    END_VAR
    VAR
        TempDifference : REAL;    // Разница температур
        DailyChange : REAL;      // Ежедневное изменение
        Result : REAL;          // Результат расчета
    END_VAR
    
    // Проверка на корректность входных данных
    IF TotalDays <= 0 THEN
        Result := StartTemp;    // Если дней нет, возвращаем начальную температуру
    ELSE
        // Рассчитываем разницу температур
        TempDifference := EndTemp - StartTemp;
        
        // Вычисляем ежедневное изменение
        DailyChange := TempDifference / TotalDays;
        
        // Рассчитываем температуру для заданного дня
        Result := StartTemp + DailyChange * (CurrentDay - 1);
    END_IF;
    
    // Возвращаем результат
    CalculateTemperature := Result;
    END_FUNCTION
    Особенности реализации

    Функция работает как для понижения, так и для повышения температуры

    Корректно обрабатывает крайние значения (первый и последний день)

    Возвращает линейно изменяющееся значение

    Можно легко модифицировать для других единиц измерения

    Рекомендации по использованию

    Добавьте проверку на корректность входных данных

    При необходимости добавьте округление результата

    Можно модифицировать для работы с массивом температур

    Учтите особенности целочисленного деления при расчете DailyChange
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  8. #8

    По умолчанию

    Алиса не подумала о том, как из пр брать время... И вроде не во всех пр есть время...

    PS А нет, во всех есть часы реального времени. Но думаю работа со временем будет основной сложностью. Из координат прямой нам температура 100% известна, а время надо во-первых выбирать как то, а там уже начнутся во-вторых...
    Последний раз редактировалось МихаилГл; 19.09.2025 в 07:49.

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

    По умолчанию

    Решал такую задачу на C# через шаблон дней. Причина проста, технолог должен изменить карту температур. И вторая причина, там не равномерное увеличение, уменьшение температуры если по курицы например смотреть. Макрос, который будет делать это равными кусками, только трата времени.

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

    По умолчанию

    Пока забудьте про контроллер. Определитесь с конечной целью.
    1. для разных птиц, разные уставки температуры по дням.
    2. Технолог должен иметь возможность корректировать эти уставки.
    3. Там не равномерные уставки Т и H по дням.
    4. Возможность задать 0 день (точку старта)

    если все это нужно, меняйте подход. Рецепты, массивы последовательных регистров (если на ПР), чтобы из scada или чего там записать сразу всем массивом новые уставки.
    могу по курице табличку температур скинуть, вроде на перепелку еще было.

Страница 1 из 3 123 ПоследняяПоследняя

Похожие темы

  1. Повышение цен на продукцию
    от ALFIX в разделе Трёп (Курилка)
    Ответов: 536
    Последнее сообщение: 15.10.2022, 20:28
  2. 20 дней...
    от Рашид в разделе Трёп (Курилка)
    Ответов: 18
    Последнее сообщение: 08.08.2018, 22:14
  3. Повышение напряжения
    от wecand0it в разделе Подбор Оборудования
    Ответов: 7
    Последнее сообщение: 18.06.2015, 09:13
  4. Ответов: 5
    Последнее сообщение: 26.01.2009, 14:33
  5. ТРМ-151 Две уставки на повышение
    от незарегистрированный в разделе Эксплуатация
    Ответов: 3
    Последнее сообщение: 26.11.2007, 14:25

Ваши права

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