PDA

Просмотр полной версии : ОВЕН ПЛК-100 работа с системным временем. Помогите разобраться!



Алексей КИПОВЕЦ
07.12.2020, 22:13
Добрый вечер уважаемые форумчане. Помогите советом. Стоит задача организовать ПИД-регулятор системы отопления на базе ПЛК-100 с функцией снижения уставки регулирование в ночное время. Если с ПИД-регулятором мне все понятно, то как организовать функцию снижения температуры в ночное время? Я так понимаю мне нужно использовать библиотеку SYSLIBTIME? Пока ей еще не пользовался. Подскажите советом как справиться с такой задачей?

melky
07.12.2020, 23:05
бибка есть CurTimeEx или как-то так, или ExCurTime

Алексей КИПОВЕЦ
08.12.2020, 17:43
А как ей пользоваться? Ну при помощи массива CurTimeEx я смогу извлечь системное время из ПЛК-100, а как мне при необходимости ввести коррекцию даты и времени? Можете объяснить, а то пока с системным временем не работал....

petera
08.12.2020, 19:03
А как ей пользоваться? Ну при помощи массива CurTimeEx я смогу извлечь системное время из ПЛК-100, а как мне при необходимости ввести коррекцию даты и времени? Можете объяснить, а то пока с системным временем не работал....

Был у меня пример https://owen.ru/forum/showthread.php?t=10555&p=184015&viewfull=1#post184015 с описанием, но г-н Кислов прибил эту тему вместе с множеством других моих примеров проектов для СП270

Коротко. Время ПЛК выводится на панель и на панели может редактироваться.


PROGRAM PLC_PRG
VAR
GetTime: CurTimeEx;
TimeAndDate: SystemTimeDate;
Sys_Time: SysTime64;
END_VAR

TimeAndDate.Day :=0;
TimeAndDate.DayOfWeek :=0;
TimeAndDate.dwHighMsec :=0;
TimeAndDate.dwLowMSecs :=0;
TimeAndDate.Milliseconds :=0;
TimeAndDate.Minute :=0;
TimeAndDate.Second :=0;
TimeAndDate.Hour :=0;
TimeAndDate.Year :=0;
TimeAndDate.Month :=0;
Sys_time.ulHigh :=0;
Sys_time.ulLow :=0;
GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate);(*Текущее время*)
(*--------------------------------------------------------------*)
HMI_Y:=TimeAndDate.Year;
HMI_M:=TimeAndDate.Month;
HMI_D:=TimeAndDate.Day;
HMI_HH:=TimeAndDate.Hour;
HMI_MM:=TimeAndDate.Minute;
HMI_SS:=TimeAndDate.Second;
(*--------------------------------------------------------------*)
IF set_HH OR set_MM OR set_SS THEN
IF set_HH THEN (*Если set_HH - истина, то менять только часы*)
TimeAndDate.Minute:=HMI_MM; (*Оставляем текущие минуты*)
TimeAndDate.Second:=HMI_SS; (*Оставляем текущие секунды*)
TimeAndDate.Hour:=HH; (*а часы пишем новые*)
ELSIF set_MM THEN (*Если set_MM - истина, то менять только минуты*)
TimeAndDate.Minute:=MM; (*минуты пишем новые*)
TimeAndDate.Second:=HMI_SS; (*Оставляем текущие секунды*)
TimeAndDate.Hour:=HMI_HH; (*Оставляем текущие часы*)
ELSIF set_SS THEN (*Если set_SS - истина, то менять только секунды*)
TimeAndDate.Minute:=HMI_MM; (*Оставляем текущие минуты*)
TimeAndDate.Second:=SS; (*секунды пишем новые*)
TimeAndDate.Hour:=HMI_HH; (*Оставляем текущие часы*)
END_IF
GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate);
set_HH:=set_MM:=set_SS:=FALSE;
END_IF
(*--------------------------------------------------------------*)
IF set_date THEN (*Если set_date - истина, то менять дату*)
TimeAndDate.Day:=D;
TimeAndDate.Month:=M;
TimeAndDate.Year:=Y;
GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate);
set_date:=FALSE;
END_IF

Текущее время ПЛК также выводится в визуализации.

В слейве есть три области для связи с панелью
52375

Соответственно в панели есть поля ввода
52376

И при изменении значений на экране панели, устанавливаются биты уведомлений (команды коррекции часов или календаря)
52377

В проекте панели есть возможность синхронизации времени панели с временем ПЛК,
52379
но это отдельная тема.