Просмотр полной версии : Аппаратные часы ПЛК 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
..
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
пытаюсь в эмуляторе разобраться, как на ST считать текущее время,
переменная секунды упорно показывает ноль
поясните пожалуйста, что не так?
(проект во вложении)
lara197a
06.03.2016, 22:51
в эмуляции часы не работают
сто раз писано
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot