
Сообщение от
Алексей КИПОВЕЦ
А как ей пользоваться? Ну при помощи массива CurTimeEx я смогу извлечь системное время из ПЛК-100, а как мне при необходимости ввести коррекцию даты и времени? Можете объяснить, а то пока с системным временем не работал....
Был у меня пример https://owen.ru/forum/showthread.php...l=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
Текущее время ПЛК также выводится в визуализации.
В слейве есть три области для связи с панелью
Захват-100.png
Соответственно в панели есть поля ввода
Захват-102.png
И при изменении значений на экране панели, устанавливаются биты уведомлений (команды коррекции часов или календаря)
Захват-103.png
В проекте панели есть возможность синхронизации времени панели с временем ПЛК,
Захват-20.png
но это отдельная тема.