PDA

Просмотр полной версии : Получить системное время не удается!



JuLi
21.01.2010, 13:53
Каким образом получить системное время в CodeSys, чтобы была возможность оперировать им?
Использование в визуализации шаблона типа %t %d %m %y дает результат (на экране отображается текущая дата). Но производить вычисления с этой датой не удается...
Попытка подключения библиотек SysLibRtc и SysLibTime оканчивается неудачей. Причем не совсем ясно, какой библиотекой пользоваться для получения системного времени. Склоняюсь к SysLibRtc. В результате использования функции SysRtcGetTime библиотеки SysLibRtc не происходит загрузки программы в контроллер. Появляется сообщение: "Неразрешенные ссылки на внешние POU: SysRtcGetTime, SysRtcCheckBattery, SysRtcSetTime"

Филоненко Владислав
21.01.2010, 14:30
SysLibTime пользуйтесь, RTC не поддерживается, т.к. не соответствует стандарту МЭК

JuLi
27.01.2010, 09:54
Я понимаю, что SysLibTime используется для получения/установки системного времени ПЛК. Так? Причем, если установить системное время ПЛК (например, 27.01.2010) и отключить питание, то оно (время) примет прежнее заводское значение (01.01.2000).
Есть библиотека, которая обращается к системному времени компьютера, а не ПЛК?

Малышев Олег
27.01.2010, 10:07
Я, конечно, понимаю, что примеры и документацию читать вредно...
Обнуляйте ВСЕ! поля в передаваемой структуре для чтения времени
Выставляйте для записи.

Александр Ч.
27.01.2010, 20:18
В теме \плк\ на третьей странице: "таймер реального времени на плк150" - сделал все так как написано в инструкции. Работает. Дата/время с прошлого года сохранилось, после 2х недельных каникул - с отключением питания.
Причем, как мне кажется, этот же плк без обращения к библиотеке систайм д/в не сохранял, вероятно оптимизировал работу-нет запросов из программы -останавливается счетчик времени..

Филоненко Владислав
28.01.2010, 12:36
Время считается на отдельном процессоре. Зачем его останавливать?

Александр Ч.
03.02.2010, 21:47
Тогда видимо элемент питания садится(долго без сети) и сбрасывает время.
Кстати таймер RTC работает, но без привязки к системному времени, просто как счетчик(таймер). Задав определенную дату и время на входе и привязав вход EN к дискретному входу(или button), можно запустить счетчик в установленное время. Если конечно далее не будет сбоев по сети (тогда подключить ИБП).

dima-profi
04.02.2010, 09:21
SysLibTime как раз и нужен для того чтобы загрузить время в FB RTC при сбросе питания.
(а что мешает использовать SysLibTime напрямую?)

kaktus3431
05.02.2010, 16:24
Коллега: Если знаешь что такое аналоговый мультиметр, то его берёшь и меряй Ёмкость этого самого аккумулятора, и не важно что его купил вчера. Аккумулятор это расходное железо, процедура измерения должна быть как моно короче (ведь ни танковый аккумулятор чай меряешь) Шо ? J= 200-500ма за t=0.5-1.0 сек? На свалку! Я например их дёргаю из ЗИП-коллекции (ЗИП расплодился поманеньку) и должон где то более 1000 - щи J= 1500ма а повезёт увидишь и 3-4 тыщи ма , число, месяц, год рулишь через КодеСис, пъЁш Чай и радуешься не менее годика, а к этому времени прикупи пару ящиков. ПРИМЕЧАНИЕ: Если в щите где маются контроллеры 35-45 по цельсию, приготовься менять их раз в 6-9месяцев, и не тоды когда у них ёмкость уже 30-35 ма... Да и паяй сие добро на плате паяльником без утечек, утечку паяльника моно мерят мультиком, в том числе и изоляцию паяльника, не проходит на свалку. Не понял о чЁм речь? Читай толстые Вумные книги. И заодно новый паяльник, также и браслет на драйвер прикупи и сеть протащи по Евро Стандарту, или при пайке выдёргивай паяльник из сети.

vlad72
05.04.2012, 02:37
Я понимаю, что SysLibTime используется для получения/установки системного времени ПЛК. Так? Причем, если установить системное время ПЛК (например, 27.01.2010) и отключить питание, то оно (время) примет прежнее заводское значение (01.01.2000).
Есть библиотека, которая обращается к системному времени компьютера, а не ПЛК?

...Я уже отписывался в теме "вопросы новичков" ;- "Уважаемые форумчане! есть примеры на форуме с использованием
библиотеки SysLibTime, в которых предусмотрена коррекция времени
ПЛК. Т.е. синхронизацию с системным временем ПК.
Для визуала времени ПЛК воспользовались переменными из CurTimeEx
Для визуала времени с ПК строкой - %t%X %d/%m/%Y в конфигурировании элемента ...
Собственно задача- как или где снять время ПК для использования
в основной программе PLC_PRG.Ведь %X или %Y куда то обращаются за информацией для отображения в визуале,а как .где.,чем снять показания
для основной проги?
В "трендах" ведь отображается время ПК? а время ПЛК туда ...))))) никак.. "
.....а здесь та же проблема.То что надо обнулить и поставить на чтение
вместо записи понятно теоритически, но практически как это выглядит???
Если не трудно скиньте в тему такой пример.
Новички будут признательны))))

Yegor
05.04.2012, 07:44
Можно написать программу, реализующую Modbus и передаюущую по запросу ПЛК текущее время.
%X или %Y куда то обращаются за информацией для отображения в визуалеВизуализация работает на ПК. Насколько я понимаю, значения в форматные строки подставляются вне ПЛК.

vlad72
05.04.2012, 20:38
Можно написать программу, реализующую Modbus и передаюущую по запросу ПЛК текущее время.Визуализация работает на ПК. Насколько я понимаю, значения в форматные строки подставляются вне ПЛК.

Спасибо! это исчерпывающий ответ.
Может разработчики подтвердят или чЁ нибудь прокомммментируют по
этому поводу?
....а пока пойду МоДбус изучать)))

Николаев Андрей
07.04.2012, 00:00
Что Вам должны разработчики прокомментировать я так и не понял...
Опишите - что Вы хотели бы увидеть?

vlad72
07.04.2012, 12:46
Хотелось програмку получить, где можно при старте основной ПО
время ПЛК синхронизировать с системным временем ПК автоматически.
Для этого Основное ПО должно получить время с ПК.
Видимо это (автокоррекция) неосуществимо))

[QUOTE=Николаев Андрей;80639]Что Вам должны разработчики прокомментировать я так и не понял...
Опишите - что Вы хотели бы увидеть?

предыдущий пост раскрывает причины по которым это сделать нельзя.
...собственно и коменты по этому поводу - Правильно ли я все понял?

vlad72
07.04.2012, 12:48
Можно написать программу, реализующую Modbus и передаюущую по запросу ПЛК текущее время.Визуализация работает на ПК. Насколько я понимаю, значения в форматные строки подставляются вне ПЛК.

Этот пост имел ввиду.

lara197a
07.04.2012, 14:00
Я вот отвечал в первом клоне этой темы.
В чем проблема? все работает. И пример несколько раз на форуме выкладывал. называется "будильник"

BETEP
07.04.2012, 16:40
Хотелось програмку получить, где можно при старте основной ПО
время ПЛК синхронизировать с системным временем ПК автоматически
При добавлении (изменении) пары строк в реестр винды, комп становится сервером времени для остальных участников сети (ничего не мешает этому компу получать время из инета)
некоторые контроллеры умеют работать с сервером времени.
это я так, для справки.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\W32Time\Config]
"AnnounceFlags"=dword:00000005

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\W32Time\TimeProviders\NtpServer]
"Enabled"=dword:00000001
по строчкам из примера можно найти в инете подробное описание.

vlad72
08.04.2012, 12:46
Я вот отвечал в первом клоне этой темы.
В чем проблема? все работает. И пример несколько раз на форуме выкладывал. называется "будильник"

...может я не точно формулирую,,,вот уважаемый CAPZAP прокоментил;
-"теоретически согласно документации можно передавать текст элемента как свойство объекта в переменную плк. "...

...вот давайте разберем "будильник". ИМЕЕМ;визуал системного времени
ПК (компа) и ПЛК. Для ПЛК время в теле программы (PLC_PRG)уже есть,
определено переменными CurTimeEx (библ.систаим).
...системное же время ПК испольуется только в визуале (PLC_VISU).Определено строкой %t%X %d/%m/%Y.....

ЗАДАЧА; получить и использовать системное время ПК (компа) в тело основной программы (PLC_PRG)
Либо использовав переменные из визуала передав их из PLC_VISU в
PLC_PRG,......строку -t%X %d/%m/%Y (текст элемента), как свойство обьекта в переменную ПЛК (PLC_PRG)...
Либо как-то еще???
У кого есть практический пример ну или дельный совет,дайте плиз,
Не дАвно занимаюсь ПЛКами.Буду очень признателен.
Пока только один пример - видео выложено.Немного неудачно,так что
пока только теория...

lara197a
08.04.2012, 14:29
ну тамже в визуализации есть кнопка "Коррекция".
По фронту нажатия кнопки в контроллер записывается системное время ПК.
http://s19.postimage.org/oidicj36r/image.png (http://postimage.org/)

lara197a
08.04.2012, 14:30
http://s19.postimage.org/88nc9msir/image.png (http://postimage.org/)
image host (http://postimage.org/)

ssl
27.04.2012, 08:34
Я для задания времени и даты использовал дополнительную визуализацию, при нажатии кнопки открывается окно визуализации в котором вводиться дата и время, но это все немного не то, время ПЛК я могу изменить и через ПЛК-браузер, если оно отличается от времени ПК, задача заключается в том чтобы синхронизировать время ПК и ПЛК, раз в сутки или раз в неделю, для этого надо время ПК ввести в PLC_PRG в виде переменной(-ых). Весь вопрос как это сделать, структура VisualObjectType из библиотеки SysLibVisu для этого не подходит (она только для записи).

vlad72
14.09.2012, 04:09
Доброго времени суток!

Цитата:
я могу изменить и через ПЛК-браузер, если оно отличается от времени ПК,
задача заключается в том чтобы синхронизировать время ПК и ПЛК, раз в сутки или раз в неделю, для этого надо время ПК ввести в PLC_PRG в виде переменной(-ых). Весь вопрос как это сделать, структура VisualObjectType из библиотеки SysLibVisu для этого не подходит (она только для записи).



...вот например при "сдохшем" аккумуляторе, при откл/вкл
питания коррекция происходила АВТОМАТИЧЕСКИ.
( не в ручную нажатием "корркция" или через браузер)

понятно,что структура VisualObjectType, только для записи, но может есть варианты решить эту задачу "обходным" путем???
Подскажите Вы как-нибудь решили эту задачу???

kazhenek
16.03.2018, 11:59
Каким образом получить системное время в CodeSys, чтобы была возможность оперировать им?
Использование в визуализации шаблона типа %t %d %m %y дает результат (на экране отображается текущая дата). Но производить вычисления с этой датой не удается...
Попытка подключения библиотек SysLibRtc и SysLibTime оканчивается неудачей. Причем не совсем ясно, какой библиотекой пользоваться для получения системного времени. Склоняюсь к SysLibRtc. В результате использования функции SysRtcGetTime библиотеки SysLibRtc не происходит загрузки программы в контроллер. Появляется сообщение: "Неразрешенные ссылки на внешние POU: SysRtcGetTime, SysRtcCheckBattery, SysRtcSetTime"

Хватит флудить всем. Конкретный вопрос. У меня точно такой же. Как получить системное время в codesys программе, а не в визуализации? (Нужно вести системный журнал для вывода на печать). Чтоб все просто было: я как человек, отослал событие и время отрезки изделия. А не сам писал дату, типо тогда то у меня отрезало) 21 век все таки.

Sergeba
18.03.2018, 17:41
Я, для получения системного времени использовал функцию GetSysDT. Две недели работало нормально, сегодня что-то произошло, функция перестала работать. GetSysDT.xDone приняло значение False и время не удаётся получить...

ASo
18.03.2018, 18:45
Как получить системное время в codesys программе, а не в визуализации?

VAR
SysTime: SysTime64;
DateTime: SystemTimeDate;
GetDateTime: CurTimeEx;
END_VAR

DateTime.Day:= 0;
DateTime.DayOfWeek:= 0;
DateTime.dwHighMsec:= 0;
DateTime.dwHighMsec:= 0;
DateTime.Hour:= 0;
DateTime.Milliseconds:= 0;
DateTime.Minute:= 0;
DateTime.Month:= 0;
DateTime.Second:= 0;
DateTime.Year:= 0;
SysTime.ulHigh:= 0;
SysTime.ulLow:= 0;
GetDateTime(SystemTime:= SysTime, TimeDate:= DateTime);

Зинько Владислав
18.03.2018, 18:45
Хватит флудить всем. Конкретный вопрос. У меня точно такой же. Как получить системное время в codesys программе, а не в визуализации? (Нужно вести системный журнал для вывода на печать). Чтоб все просто было: я как человек, отослал событие и время отрезки изделия. А не сам писал дату, типо тогда то у меня отрезало) 21 век все таки.

Добрый день.

Для получения системного времени на ПЛК используетя библиотека SysLibTime.
Я ниже приложу файл .exp функционального блока, который будет возвращать целочисленные значения года, месяца, дня, часов, минут и секунд.

НО часы на ПЛК необходимо будет переодически калибровать. Это можно сделать через ПЛК-Браузер в Онлайн режиме.
Для этого используйте команды SetTime и SetDate.

Sergeba
18.03.2018, 20:04
Добрый день.
используетя библиотека SysLibTime.


Ок, где её взять?

Зинько Владислав
18.03.2018, 21:39
Ок, где её взять?

В архиве все библиотеки серии SysLib.
В т.ч. SysLibTime.

Sergeba
18.03.2018, 22:33
В архиве все библиотеки серии SysLib.

Спасибо.
Вопрос, а есть предпочтение использовать эту библиотеку или библиотеку с функцией GetSysDT (https://ftp.owen.ru/CoDeSys3/11_Documentation/01_SPK/SPK_SystemTime_v.1.1.pdf?_ga=2.256890700.613804178 .1520461421-1195179985.1518719521)? Пока искал решение - починилась моя... Перегрузил ПЛК с отключением от сети, после этого опять заработало время...

жекон
19.03.2018, 04:55
Развели флуд на 3 страницы, какая такая задача требуется от ПЛК?

petera
19.03.2018, 06:59
Спасибо.
Вопрос, а есть предпочтение использовать эту библиотеку или библиотеку с функцией GetSysDT (https://ftp.owen.ru/CoDeSys3/11_Documentation/01_SPK/SPK_SystemTime_v.1.1.pdf?_ga=2.256890700.613804178 .1520461421-1195179985.1518719521)? Пока искал решение - починилась моя... Перегрузил ПЛК с отключением от сети, после этого опять заработало время...

Нет в Среде программирования CoDeSys v2 библиотеки GetSysDT.

kazhenek
19.03.2018, 11:57
Спасибо за поддержку форумчане! Попробую разобраться сейчас.

kazhenek
19.03.2018, 11:59
Добрый день.

Для получения системного времени на ПЛК используетя библиотека SysLibTime.
Я ниже приложу файл .exp функционального блока, который будет возвращать целочисленные значения года, месяца, дня, часов, минут и секунд.

НО часы на ПЛК необходимо будет переодически калибровать. Это можно сделать через ПЛК-Браузер в Онлайн режиме.
Для этого используйте команды SetTime и SetDate.

Архив поврежден!!!

kazhenek
19.03.2018, 12:02
Развели флуд на 3 страницы, какая такая задача требуется от ПЛК?

Как получить системное время в codesys программе, а не в визуализации? (Нужно вести системный журнал для вывода на печать). Чтоб все просто было: я как человек, отослал событие и время отрезки изделия. А не сам писал дату, типо тогда то у меня отрезало) 21 век все таки.

capzap
19.03.2018, 12:04
Архив поврежден!!!
отнюдь, всё с архивом нормально, а вот пытаться командовать прекратить флудить людям писавшим аж в 2012 году это нельзя назвать нормой

kazhenek
19.03.2018, 12:10
отнюдь, всё с архивом нормально, а вот пытаться командовать прекратить флудить людям писавшим аж в 2012 году это нельзя назвать нормой

Спасибо за перевод архива. У меня почему то он ругается. На счет флуда - не приятно когда люди отвечают не на тот вопрос о котором идет речь.