PDA

Просмотр полной версии : Аппаратные часы ПЛК 110



Mikalay83
30.08.2013, 15:23
Здравствуйте, не получается c помощью функционального блока CurTimeEx использовать аппаратные часы В ПЛК 110. Считывать время в ПЛК-Браузер получается, а вот когда в программу на языке LD включаю блок CurTimeEx значения остаются неизменными что в ПЛК-Браузер что и в CurTimeEx. Буду признателен за пример на LD.
Зранее благодарен Николай.
9832

Евгений_Томск
30.08.2013, 19:55
Здравствуйте, не получается c помощью функционального блока CurTimeEx использовать аппаратные часы В ПЛК 110. Считывать время в ПЛК-Браузер получается, а вот когда в программу на языке LD включаю блок CurTimeEx значения остаются неизменными что в ПЛК-Браузер что и в CurTimeEx. Буду признателен за пример на LD.
Зранее благодарен Николай.
9832

После того ,как получили значения в TimeIn, надо их переприсвоить другим переменным.
А TimeIn обнулить для того ,чтобы при следующем обращении к функциональному блоку
TimeIn заполнился обновлёнными данными о времени и дате. Если TimeIn не равен 0,то это расценивается как команда
установки времени и даты.

А первый раз у Вас прокатило,т.к. значения были нулевыми при первом обращении.

Mikalay83
30.08.2013, 23:48
После того ,как получили значения в TimeIn, надо их переприсвоить другим переменным.
А TimeIn обнулить для того ,чтобы при следующем обращении к функциональному блоку
TimeIn заполнился обновлёнными данными о времени и дате. Если TimeIn не равен 0,то это расценивается как команда
установки времени и даты.

А первый раз у Вас прокатило,т.к. значения были нулевыми при первом обращении.

Присвоить не проблема, а вот как обнулить не понятно.9835

lara197a
31.08.2013, 09:01
В первых строках фб часов
запишите к примеру:
TimeAndDate.Day :=Ust_Day;
TimeAndDate.DayOfWeek :=0;
TimeAndDate.dwHighMsec :=0;
TimeAndDate.dwLowMSecs :=0;
TimeAndDate.Milliseconds :=0;
TimeAndDate.Minute :=Ust_Minute;
TimeAndDate.Second :=Ust_Sek;
TimeAndDate.Hour :=Ust_Hour;
TimeAndDate.Year :=Ust_Year;
TimeAndDate.Month :=Ust_Month;

записывая в переменные Ust_xxxxx нужные значения, получите эти значения в часах.
в данном случае это часы мин и сек.

Mikalay83
31.08.2013, 19:29
На форуме нашел вот такой пример:

1. Открываем в менеджере библиотек -Syslibtime.lib
2. В объявлении переменных прописываем
TimeAndDate:SystemTimeDate;
Sys_Time: SysTime64;
GetTime:CurTimeEx;
3. В теле программы прописываем
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);

4. Значения какого либо параметра времени присваем пользовательской переменной, например
sec:=TimeAndDate.Second;
И все работает.( Формат sec-UINT).

Правильно я его реализовал на LD9837

Валенок
31.08.2013, 21:26
..
2.В объявлении переменных прописываем
TimeAndDate,Z:SystemTimeDate;
Sys_Time: SysTime64;
GetTime:CurTimeEx;

3. В теле программы прописываем
TimeAndDate :=Z;
GetTime (SystemTime:=Sys_Time,TimeDate:=TimeAndDate);
..

Mikalay83
31.08.2013, 22:00
Не совсем понятна строка: GetTime (SystemTime:=Sys_Time,TimeDate:=TimeAndDate);

Mikalay83
02.09.2013, 18:24
Присваиваю всё как в примере, часы в ПЛК Браузер идут а в программе нет. Если в теле программы например WY2.Second не присваивать 0, а в объявлении переменных присвоить 0 без отмены фиксации, секунды идут.
При попытке присваивании CurTime выдает ошиб9845ку

Mikalay83
02.09.2013, 18:25
Вместо CurTime -TimeEX.

Евгений_Томск
02.09.2013, 20:02
Присваиваю всё как в примере, часы в ПЛК Браузер идут а в программе нет. Если в теле программы например WY2.Second не присваивать 0, а в объявлении переменных присвоить 0 без отмены фиксации, секунды идут.
При попытке присваивании CurTime выдает ошиб9845ку

А почему Вы решили выбрать язык LD ? Мне кажется ,он не удобный.
Попробуйте CFC или ST.И примеров под эти языки много по форуму и в описании библиотеки.
Как правило с часами проблем нет,пока есть питание,приколы позже будут.
Проще всего взять кусок кода готовой программы и вставить в свой проект.
Можете использовать точки останова для наблюдения за значениями переменных.
Онлайновый мониторинг реализован в CDS великолепно, воспользуйтесь его возможностями.

Николаев Андрей
02.09.2013, 22:51
В примерах есть готовые блоки считывания и записи времени.
Рекомендую их использовать.

Mikalay83
03.09.2013, 09:18
На языке ST работает, но как в LD? присвоить TimeAndDate.Day :=0; и т.д. получается, а вот со строкой GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate); как её реализовать в LD?

Mikalay83
03.09.2013, 10:46
Получилось! Вместо строки GetTime (SystemTime:=Sys_Time , TimeDate:= TimeAndDate); в языке LD нужно вставить ФБ CurTimeEx и всё!9848

login-l
06.03.2016, 22:45
пытаюсь в эмуляторе разобраться, как на ST считать текущее время,
переменная секунды упорно показывает ноль
поясните пожалуйста, что не так?
(проект во вложении)

lara197a
06.03.2016, 22:51
в эмуляции часы не работают
сто раз писано