Показано с 1 по 10 из 42

Тема: Контролируем аквариум на ПЛК63

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #33
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    4,110

    По умолчанию

    Цитата Сообщение от tanatholog Посмотреть сообщение
    Оживлю свою старую тему.
    Решил переписать свою программу управления злополучным аквариумом. Основной критерий: суточное переключение света, газа, воздуха. Режимы, в общем.
    Привязано все к реальному времени. И в этом проблема.
    Захотел я сделать так, чтобы в уставках вводилась основная информация: время запуска основного света и продолжительность, а остальной суточный режим пересчитывался сам. Добился, чтобы все переменные были в диапазоне 0-23, чтобы привязать к часам. И тут незадача:
    IF clock>=time_start AND clock< time_end THEN
    day_light:=TRUE;
    Вся беда в том, что по расчётам может получиться так:
    time_start=19
    time_end=3 (3 часа утра следующих суток)
    Тут вся логика и затыкается.
    Подскажите, что можно сделать?
    Код:
    PROGRAM PLC_PRG
    VAR
    	on_Hour: WORD;		(*время включения: часы*)
    	on_Minute: WORD;	(*время включения: минуты*)
    	on_Second: WORD;	(*время включения: секунды*)
    
    	of_Hour: WORD;		(*время выключения: часы*)
    	of_Minute: WORD;	(*время выключения: минуты*)
    	of_Second: WORD;	(*время выключения: секунды*)
    
    	uptime: SysTime64;
    	datetime: SystemTimeDate;
    	clock: CurTimeEx;
    	time_on:DWORD;			(*время включения в секундах*)
    	time_of:DWORD;			(*время отключения в секундах*)
    	current_time:DWORD;	(*текущее время в секундах*)
    	enable: BOOL;	(*разрешение на включение*)
    	day_light: BOOL;	(*выход*)
    END_VAR
    VAR CONSTANT
        nulldt: SystemTimeDate;	(*нужна для обнуления параметров*)
    END_VAR
    
    (*получить текущее время в секундыах*)
    datetime := nulldt;(*обнуляем переменные времени*)
    clock(SystemTime := uptime,		(*текущее время в микросекундах*)
    	TimeDate := datetime);		(*текущее время и дата в развернутом формате*)
    current_time:=(datetime.Hour * 60 + datetime.Minute) * 60 + datetime.Second;	(*текущее время*)
    (*----------------------------------------------------------------*)
    
    (*для уставок собираем часы, минуты и секунды в одну кучу - в секунды*)
    time_on:=(on_Hour * 60 + on_Minute) * 60 + on_Second;	(*время включения*)
    time_of:=(of_Hour * 60 + of_Minute) * 60 + of_Second;		(*время отключения*)
    (*----------------------------------------------------------------*)
    
    (*-----------РЕШЕНИЕ ЗАДАЧИ-----------------*)
    (*ВОПРОС:
    Вся беда в том, что по расчётам может получиться так:
    time_start=19
    time_end=3 (3 часа утра следующих суток)
    Тут вся логика и затыкается.
    *)
    (*Вот ответ на задачу*)
    CASE BOOL_TO_INT(time_on <= time_of) OF
    0:	day_light:=enable AND NOT(current_time >= time_of AND current_time < time_on);
    1:	day_light:=enable AND current_time >= time_on AND current_time < time_of;
    END_CASE
    
    (*Или такой вариант
    IF	time_on <= time_of THEN
    	day_light:=enable AND current_time >= time_on AND current_time < time_of;
    ELSE
    	day_light:=enable AND NOT(current_time >= time_of AND current_time < time_on);
    END_IF
    *)
    Для проекта нужна библиотека SysLibTime
    Последний раз редактировалось petera; 12.04.2020 в 13:21.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

Похожие темы

  1. Встроенная котельная на ПЛК63
    от 6751149 в разделе Наши проекты
    Ответов: 20
    Последнее сообщение: 29.06.2018, 19:26
  2. Ответов: 2
    Последнее сообщение: 05.09.2010, 16:27
  3. Музыка на ПЛК63
    от Гайворонский А. В. в разделе Трёп (Курилка)
    Ответов: 8
    Последнее сообщение: 25.06.2010, 11:23
  4. умный аквариум
    от jammer77 в разделе Подбор Оборудования
    Ответов: 45
    Последнее сообщение: 03.03.2010, 19:38

Метки этой темы

Ваши права

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