Вход

Просмотр полной версии : Немного про библиотеку SyslibTime



Ильнур
04.05.2012, 19:19
Нашел пример получения системного времени ПЛК:
(*Текущее время*)
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);

(*Если set_time - истина, то можно менять время*)

IF set_time THEN

TimeAndDate.Minute:=MM;
TimeAndDate.Second:=SS;
TimeAndDate.Hour:=HH;
GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate);

END_IF

(*Если set_date - истина, то можно менять дату*)

IF set_date THEN

TimeAndDate.Day:=D;
TimeAndDate.Month:=M;
TimeAndDate.Year:=Y;
GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate);

END_IF
Вопрос у меня в следующем.Зачем обнуляют переменные SystemTimeDate???

capzap
04.05.2012, 20:44
чтоб программа поняла, что сейчас будет вводиться новое время

Ильнур
05.05.2012, 07:04
По сути ФБ CurTimeEx возвращает текущее время ПЛК и если не обнулить переменные SystemTimeDate, этот блок разве не перезапишет эти переменные???Или можно объяснить,что может произойти, если не обнулять эти переменные?

Ильнур
25.05.2012, 14:39
Хотел бы поднять тему)))что может произойти, если не обнулять эти переменные в CurTimeEx?

lazy
25.05.2012, 14:51
По идее если обнулить SystemTimeDate, CurTimeEx возвратит время ПЛК в SystemTimeDate. А если заполнить "чем нибудь", то CurTimeEx установит это "что нибудь" как новое время ПЛК. Соответственно, если вызывать CurTimeEx в цикле для получения текущего времени не обнуляя прежних результатов то время "остановицо" ))

osv007
04.11.2012, 16:43
Как в LD будет выглядеть:
GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate);

Пытаюсь в LD это все сделать, не получается. А именно строку указанную выше не пойму как внедрить.

capzap
04.11.2012, 16:48
Как в LD будет выглядеть:
GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate);

Пытаюсь в LD это все сделать, не получается. А именно строку указанную выше не пойму как внедрить.

EN/ENO Вам в помощь

osv007
04.11.2012, 18:14
Что то не получается. Сapzap посмотрите пожалуйста

capzap
04.11.2012, 18:59
Сделайте проще, создайте поу на ст, с примером таймера который тут приводился или еще от куда нибудь и уж если есть необходимость все сделать в лд, переконвертируйте в требуемый язык, возможности кдс это предоставлют

Николаев Андрей
04.11.2012, 20:42
Можно еще проще.
1. Используйте пример как ФБ.
2. на LD просто вызывайте данный ФБ с нулями или не нулями.

Как делать и вызывать подпрограммы так же есть готовый наглядный пример в разделе примеров.

osv007
04.11.2012, 23:19
Сapzap, Николаев Андрей спасибо вам огромное. Все получилось :-)