Страница 3 из 3 ПерваяПервая 123
Показано с 21 по 30 из 30

Тема: реализация годового графика включения/выключения

  1. #21
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    пора закрывать.
    я ему заготовку 30.03 сбросил.
    спасибо не сказал.
    а вы все рекомендации пишете...

  2. #22

    По умолчанию

    Всем откликнувшимся-огромное спасибо, отдельно-lara197a !
    Извиняюсь за молчание-не было возможности.
    Тема еще актуальна, просто жду ПЛК, чтобы проверить. В симуляторе ведь не работает.
    Последний раз редактировалось KRUPSKIY; 13.04.2016 в 11:33.

  3. #23
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,851

    По умолчанию

    Цитата Сообщение от KRUPSKIY Посмотреть сообщение
    Всем откликнувшимся-огромное спасибо, отдельно-lara197a !
    Извиняюсь за молчание-не было возможности.
    Тема еще актуальна, просто жду ПЛК, чтобы проверить. В симуляторе ведь не работает.
    Зато работает в PLCWinNT. Так, что проверить можно.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  4. #24
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,851

    По умолчанию

    Что-то никто не предложил набивать таблицу прямо в КДС, в визуализации.

    Для упрощения ввода данных пришлось расписание в таблице с Time Of Day заменить на пользовательский тип данных
    Код:
    TYPE Schedule :
    STRUCT
    	HourOff: INT;
    	MinuteOff: INT;
    	HourOn: INT;
    	MinuteOn: INT;
    END_STRUCT
    END_TYPE
    Код:
    PROGRAM PLC_PRG
    VAR RETAIN PERSISTENT
    	Table:ARRAY [1..366] OF Schedule; (* Расписание: *)
    END_VAR
    VAR CONSTANT
    	dpm: ARRAY [1..12] OF INT := 31, 28, 31,30, 31, 30, 31, 31, 30, 31, 30, 31; (*Чисол дней в месяце*)
    	nulldt: SystemTimeDate;	(*нужна для обнуления параметров*)
    END_VAR
    VAR
        CurTimeExInst: CurTimeEx;
        CurSystemTimeDate: SystemTimeDate;
        CurSysTime64: SysTime64;
        year: INT;
        second: INT;
        day: INT;
        hour: INT;
        minute: INT;
        month: INT;
    	LEAP_YEAR: BOOL;		(*Флаг високосного года*)
    	Curr_DAY: INT;		(*Номер дня в году*)
    	i: INT;
    	Now: TOD;		(*Текущее время*)
    	Stop: TOD;		(*Время выключения*)
    	Start: TOD;		(*Время включения*)
    	Light: BOOL;		(*Освещение вкл.*)
    	selX:INT :=1;	(*Используется в визуализации (в таблице)*)
    	selY:INT :=1;	(*Используется в визуализации (в таблице)*)
    END_VAR
    CurSystemTimeDate:=nulldt;
    CurTimeExInst(TimeDate := CurSystemTimeDate, SystemTime := CurSysTime64);
        year :=CurSystemTimeDate.Year;
        month :=CurSystemTimeDate.Month;
        day :=CurSystemTimeDate.Day;
        hour :=CurSystemTimeDate.Hour;
        minute :=CurSystemTimeDate.Minute;
        second :=CurSystemTimeDate.Second;
    (*------------------------------------------------------------------------*)
    LEAP_YEAR := SHL(year,14) = 0; (*Проверить високосный год*)
    
    
    (*номер дня в году*)
    Curr_DAY:=day + BOOL_TO_INT(month > 2 AND LEAP_YEAR);
    FOR i:=1 TO 12 DO
    	IF i < month THEN Curr_DAY:=Curr_DAY + dpm[i] ; END_IF
    END_FOR
    (*------------------------------------------------------------------------*)
    Now := DWORD_TO_TOD( INT_TO_DWORD(SECOND)*1000+ INT_TO_DWORD(MINUTE) * 60000 + INT_TO_DWORD(HOUR) * 3600000);
    Stop:= DWORD_TO_TOD(INT_TO_DWORD(Table[Curr_DAY].HourOff) * 3600000 + INT_TO_DWORD(Table[Curr_DAY].MinuteOff) * 60000);
    Start:=DWORD_TO_TOD(INT_TO_DWORD(Table[Curr_DAY].HourOn) * 3600000 + INT_TO_DWORD(Table[Curr_DAY].MinuteOn) * 60000);
    IF stop < start THEN
    	Light := start <= Now OR Now < stop;
    ELSE
    	Light := start <= Now AND Now < stop;
    END_IF;
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  5. #25

    По умолчанию

    То, что надо, petera! Спасибо!

  6. #26

    По умолчанию

    petera! Все отлично работает, но возникла другая проблема. Мне необходимо вводить не два, а четыре значения времени на каждый день. В этом случае уже не хватает памяти в ПЛК, чтобы объявить переменные как RETAIN PERSISTENT. Что-либо можно придумать?

  7. #27
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,851

    По умолчанию

    Цитата Сообщение от KRUPSKIY Посмотреть сообщение
    petera! Все отлично работает, но возникла другая проблема. Мне необходимо вводить не два, а четыре значения времени на каждый день. В этом случае уже не хватает памяти в ПЛК, чтобы объявить переменные как RETAIN PERSISTENT. Что-либо можно придумать?
    Тогда хранить таблицу расписания в файле.
    Редактирование файла в визуализации можно сделать по аналогии с тем, как я делал для рецептов (доп кнопки Сохранить и Отменить) http://www.owen.ru/forum/showthread....l=1#post186999

    Если сами не справитесь, то буду помогать.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  8. #28

    По умолчанию

    ОК! petera всегда помогает! Буду пробовать, спасибо!

  9. #29

    По умолчанию

    А как сделать, чтобы в таблице было переменное число строк? Сейчас оно равно количеству дней, то есть 365, а нужно чтобы на СПК была такая же таблица, но были кнопки Добавить/Удалить запись. Пользователь сам сможет добавлять/удалять нужную запись с временем включения/выключения

  10. #30
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    Цитата Сообщение от dkapotov Посмотреть сообщение
    А как сделать, чтобы в таблице было переменное число строк? Сейчас оно равно количеству дней, то есть 365, а нужно чтобы на СПК была такая же таблица, но были кнопки Добавить/Удалить запись. Пользователь сам сможет добавлять/удалять нужную запись с временем включения/выключения
    нужно прописывать всю таблицу и через "видимость" открывать-закрывать строки.
    (с СПК не работал, как конкретно там не знаю)
    Цитата Сообщение от petera Посмотреть сообщение
    Что-то никто не предложил набивать таблицу прямо в КДС, в визуализации.
    [/CODE]
    кстати у меня пример тоже был с визуализацией.
    час, минуты, секунды
    и того 6 значений на событие.
    т.е. если даже использовать по событию в день, то нужно отрисовать почти 2000 ячеек, присвоить переменные
    и свойства заполнить....

Страница 3 из 3 ПерваяПервая 123

Похожие темы

  1. Ответов: 21
    Последнее сообщение: 26.05.2016, 19:02
  2. Ответов: 4
    Последнее сообщение: 12.07.2015, 11:48
  3. Ответов: 4
    Последнее сообщение: 28.03.2014, 15:51
  4. Ответов: 6
    Последнее сообщение: 06.02.2014, 16:31
  5. УТ1 с коррекцией выключения по восходу
    от Юрий_Уфа в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 22.03.2012, 13:28

Ваши права

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