Просмотр полной версии : Выполнение задачи в определенное время
bladerunner
29.07.2015, 20:57
Добрый вечер!
Мне нужно сохранять в файл переменные и обнулять в 0:00.
Как это лучше реализовать на ПЛК110 в Codesys?
Сделать задачу, которая будет вызываться каждую минуту и проверять текущее время в задаче?
Спасибо!
_Mikhail
29.07.2015, 21:50
А не проще сравнивать свою уставку времени с системными часами и когда они будут равны выполнить условие
Было много раз на форуме.
PROGRAM GetingTime
VAR
GetTime: CurTimeEx;
TimeAndDate: SystemTimeDate;
Sys_Time: SysTime64;
END_VAR
VAR_OUTPUT
out_hour: UINT;
out_minute: UINT;
out_DayOfWeek: UINT;
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);
out_hour:=TimeAndDate.Hour ;
out_minute:=TimeAndDate.Minute;
out_DayOfWeek:=TimeAndDate.DayOfWeek;
Потом использовать например так...
19168
bladerunner
30.07.2015, 01:13
Было много раз на форуме.
Потом использовать например так...
19168
Спасибо. А не могли бы вы пояснить - а таймер тут нужен принципиально? или он берется из логики некоторой программы?
А не проще сравнивать свою уставку времени с системными часами и когда они будут равны выполнить условие
Я так и сделал в результате. Изначально не хотелось в основной цикл вставлять проверку, которая сработает только один раз в сутки...
Спасибо. А не могли бы вы пояснить - а таймер тут нужен принципиально? или он берется из логики некоторой программы?
Я так и сделал в результате. Изначально не хотелось в основной цикл вставлять проверку, которая сработает только один раз в сутки...
Это кусочек из логики программы, для вас никакой полезной нагрузки таймер не несет. Главное создайте PRG\FB, объявите, и пользуйтесь выходными переменными блока, при желании в строки
VAR_OUTPUT
out_hour: UINT;
out_minute: UINT;
out_DayOfWeek: UINT;
END_VAR
можете дописать еще то, что нужно, например год.
brujar12
25.10.2016, 22:06
Доброго времени суток.
Помогите разобраться пожалуйста.
Сделал как показано на примере, но видимо где то ошибка. В режиме эмуляции никаких значений (часы и минут) нет. Или я неправильно что-то понимаю.
Код:
FUNCTION_BLOCK Geting
VAR_INPUT
END_VAR
VAR_OUTPUT
out_hour: UINT;
out_minute: UINT;
out_DayOfWeek: UINT;
END_VAR
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);
out_hour:=TimeAndDate.Hour ;
out_minute:=TimeAndDate.Minute;
out_DayOfWeek:=TimeAndDate.DayOfWeek;
Основная программа (на языке CFC)
Код:
PROGRAM PLC_PRG
VAR
fdv: Geting;
new_fdg: UINT;
ds: BOOL;
new_minute: UINT;
new_hour: UINT;
DayOfWeek: UINT;
END_VAR
27272
Сергей Мих
26.10.2016, 09:14
В режиме эмуляции не получится- нужнО подключение на ПЛК, в нём тикают часики.
lara197a
26.10.2016, 09:14
сто раз писали,
в эмуляции функции часов не работают.
Только в ПЛК.
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot