пора закрывать.
я ему заготовку 30.03 сбросил.
спасибо не сказал.
а вы все рекомендации пишете...
пора закрывать.
я ему заготовку 30.03 сбросил.
спасибо не сказал.
а вы все рекомендации пишете...
Всем откликнувшимся-огромное спасибо, отдельно-lara197a !
Извиняюсь за молчание-не было возможности.
Тема еще актуальна, просто жду ПЛК, чтобы проверить. В симуляторе ведь не работает.
Последний раз редактировалось KRUPSKIY; 13.04.2016 в 11:33.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
https://www.youtube.com/@%D0%9F%D0%B...BA%D0%BE%D0%B2
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Что-то никто не предложил набивать таблицу прямо в КДС, в визуализации.
Для упрощения ввода данных пришлось расписание в таблице с 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/ПетрАртюков
https://www.youtube.com/@%D0%9F%D0%B...BA%D0%BE%D0%B2
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
То, что надо, petera! Спасибо!
petera! Все отлично работает, но возникла другая проблема. Мне необходимо вводить не два, а четыре значения времени на каждый день. В этом случае уже не хватает памяти в ПЛК, чтобы объявить переменные как RETAIN PERSISTENT. Что-либо можно придумать?
Тогда хранить таблицу расписания в файле.
Редактирование файла в визуализации можно сделать по аналогии с тем, как я делал для рецептов (доп кнопки Сохранить и Отменить) http://www.owen.ru/forum/showthread....l=1#post186999
Если сами не справитесь, то буду помогать.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
https://www.youtube.com/@%D0%9F%D0%B...BA%D0%BE%D0%B2
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
ОК! petera всегда помогает! Буду пробовать, спасибо!
А как сделать, чтобы в таблице было переменное число строк? Сейчас оно равно количеству дней, то есть 365, а нужно чтобы на СПК была такая же таблица, но были кнопки Добавить/Удалить запись. Пользователь сам сможет добавлять/удалять нужную запись с временем включения/выключения
нужно прописывать всю таблицу и через "видимость" открывать-закрывать строки.
(с СПК не работал, как конкретно там не знаю)
кстати у меня пример тоже был с визуализацией.
час, минуты, секунды
и того 6 значений на событие.
т.е. если даже использовать по событию в день, то нужно отрисовать почти 2000 ячеек, присвоить переменные
и свойства заполнить....