PDA

Просмотр полной версии : СПК107 - сильно отстают часы



Sk007
07.04.2014, 00:06
Сильно отстают часы реального времени на СПК107. Отставание заметно сразу - примерно на 10 сек в течение 10 минут. За две недели работы часы отстали более чем на 5 часов.
Отставание заметили только на объекте - когда контроллер включили в постоянную работу. В процессе периодического изучения его на столе и выключения после работы, отставания вроде не замечали, похоже часы отстают только при работе контроллера.
Используем два контроллера СПК107, прошивка 3.407 - на обоих эта проблема. Работа с системны временем реализована так же, как в примере:
sys_time_SPK107_Target_3.5.2.0.projectarchive (http://www.owen.ru/forum/attachment.php?attachmentid=10162&d=1379502493)
Нам это отставание критично, так как все управление системами завязано на временные программы и заказчику не понравиться часто корректировать часы.
В чем можеть быть проблема?

Мурат Ахриев
11.04.2014, 11:40
Извините за задержку с ответом, ваш вопрос прорабатываться, на данный момент удалось выяснить, что на прошивке 3.653 и таргет файлом 3.5.4.0 v19 данная проблема не наблюдается.
Данная прошивка имеет статус тестовая, подробнее узнать о прошивке вы можете здесь http://www.owen.ru/forum/showthread.php?t=16792
На данный момент выясняем в чем причина отставания на прошивке 3.407.

Mackarich
29.05.2014, 05:18
Здравствуйте Мурат. Есть ли продвижения по решению данной проблемы?

Мурат Ахриев
10.06.2014, 13:45
Отставание происходит в программных часах linux, для того, что бы синхронизировать программные часы с часами реального времени воспользуйтесь командой SysExecute('hwclock -s'); в коде программы в Codesys.

Либо обновите прошивку.

Astronavtik
01.05.2015, 18:22
Есть проблема с отставанием времени в СПК107 прошивка 3.939 +три модуля +ПМ01, отстает минут на 20 в сутки, при отключенных модулях отставания не происходит. Если можно по подробнее о синхронизации командой SysExecute('hwclock -s');

GoodLuck
04.05.2015, 13:49
Есть проблема с отставанием времени в СПК107 прошивка 3.939 +три модуля +ПМ01, отстает минут на 20 в сутки, при отключенных модулях отставания не происходит. Если можно по подробнее о синхронизации командой SysExecute('hwclock -s');

Тоже пришлось столкнуться с такой же проблемой, но на СПК110. Опытным путем удалось выяснить, что если поставить скорость 115200, то часы не отстают.

stas1812
08.05.2015, 21:58
Есть проблема с отставанием времени в СПК110 прошивка 3.939 +8 модулей МУ110 + другое добро, Что такое можно было сотворить, чтобы так безбожно врали часы. Увеличивать скорость до 115200 нет возможности из-за длины линий и помехах. Как дальше жить дорогая редакция :)

Astronavtik
08.05.2015, 23:16
Мы не достойны ответа, мозги наши не сформированы, руки растут из непонятности, звездные мальчики молчат... Увеличение скорости уменьшило отставание с 20 минут в сутки до 2 минут, проблему это не решает, на 115200 модули МВ110Ph отваливаются через 10...15 минут, описание команд SysExecute не нашел в связи со скудоумием, ткните пожалуйста где почитать:confused:

stas1812
09.05.2015, 11:45
Мы не достойны ответа, мозги наши не сформированы, руки растут из непонятности, звездные мальчики молчат... Увеличение скорости уменьшило отставание с 20 минут в сутки до 2 минут, проблему это не решает, на 115200 модули МВ110Ph отваливаются через 10...15 минут, описание команд SysExecute не нашел в связи со скудоумием, ткните пожалуйста где почитать:confused:
Поборол на СПК 110

(*Получаем системное время в формате DATE_AND_TIME*)
GetTime(xExecute:= NOT(GetTime.xDone));
RT_TIME(CLK:=GetTime.xDone);
IF RT_TIME.Q AND GetTime.xBusy=FALSE AND GetTime.xError=FALSE AND GetTime.eError=0 THEN
RTC:=GetTime.dtDateAndTime;
(*Разбираем системное время*)
Error:=DTU.DTSplit(
dtDateAndTime:= RTC,
puiYear:= ADR(Year),
puiMonth:= ADR(Month),
puiDay:= ADR(Day),
puiHour:= ADR(Hour),
puiMinute:= ADR(Minute),
puiSecond:= ADR(Second));
(*Собираем время в строку*)
END_IF

IF SMinute_old <> Minute THEN // синхронизация каждую минуту. Можно сделать и каждую секунду
SysExecute('hwclock -s'); // это вызов команды Linux hwclock с ключом -s
SMinute_old := Minute;
END_IF
Это кусок из sys_time_SPK107_Target_3.5.2.0.projectarchive (без выделенных строк, которые Вам нужно вставить)

После такой синхронизации время стало спешить на панели всего на 2 сек. в сутки. Но это уже реализация аппаратная и корежить панель не имеет смысла. Для установки более точного времени в указанный проект я добавил кнопку , при нажатии на которую сбрасываются секунды в 0. Это позволили в ручном режиме синхронизировать часы по сигналам точного времени. (использую смартфон с установленной программой ClockSync) До точности атомных часов далеко, но для данного случая вполне хватает. Достаточно устанавливать время раз в неделю или месяц. Можно синхронизировать через интернет, но заказчик против подключения к инету.

GoodLuck
13.05.2015, 08:14
Использование команды SysExecute('hwclock -s') действительно позволяет синхронизировать работу часов. Но появляется еще одна неприятная проблема.
Пишу архив на SD с помощью библиотеки ArchivatorOwenLib. Запись происходит два раза в минуту, когда секунда=0, либо 30. Так вот, видимо при синхронизации некоторые секунды "пропадают", поэтому часть записей отсутствует. И что с этим делать?

stas1812
13.05.2015, 12:53
Использование команды SysExecute('hwclock -s') действительно позволяет синхронизировать работу часов. Но появляется еще одна неприятная проблема.
Пишу архив на SD с помощью библиотеки ArchivatorOwenLib. Запись происходит два раза в минуту, когда секунда=0, либо 30. Так вот, видимо при синхронизации некоторые секунды "пропадают", поэтому часть записей отсутствует. И что с этим делать?Можно попробовать синхронизировать часы не по окончанию минуты, а например,

IF ((Second_old = 45) AND (Second = 46)) THEN
SysExecute('hwclock -s'); // это вызов команды Linux hwclock с ключом -s
END_IF
Если же часы уже и не часы, а ... :) ? то
IF ((Second_old = 45) AND (Second = 46)) OR ((Second_old = 15) AND (Second = 16)) THEN
....

(Не забываем поставить где - либо далее Second_old =: Second;

timik2009
03.05.2016, 19:39
при использования Овенской библиотеки CPK_Tools и функционального блока Real_Time_Clock отставание время, также продолжается в СПК107 и СПК110.

Александр Приходько
04.05.2016, 02:45
при использования Овенской библиотеки CPK_Tools и функционального блока Real_Time_Clock отставание время, также продолжается в СПК107 и СПК110.
Попробуйте увеличить цикл основной программы и визуализации.
Такое поведение возможно, если контроллер перегружен.
Какое отставание за сутки?

Фаниль
21.05.2016, 00:55
Попробуйте увеличить цикл основной программы и визуализации.
Такое поведение возможно, если контроллер перегружен.
Какое отставание за сутки?

отставание часов происходит при подключенных приборах по сети RS-485, в чем причина?

ilitium
01.08.2016, 08:57
Добрый день. Контроллер СПК110, очень сильно отстают часы (а вместе с ними и регистрация сообщений), время цикла программы 50 мс, время цикла визуализации 200мс, (в визуализации использованы только элементы КС, текстовые поля, линии, простейшие кнопки). Часы использовались по примеру sys_time_SPK107, по примеру из SPK_FAQ_v.1.2.pdf, а так же выводились простейшей строкой %[HH:mm:ss dd.MM.yyyy] в текстовое поле. Была испробована команда SysExecute('hwclock -s'), sysExecute(sys_command:= 'hwclock -s'), в различных вариациях вызова, безрезультатно. После перезагрузки СПК110 часы начинают показывать верное время, до тех пор пока снова не отстанут. Есть ли варианты решения данной проблемы?

Spawn
04.08.2016, 00:31
Только отложил я свой напильник в ящик с мыслью "ну наконец-то...", как мне позвонил клиент и пожаловался на отставание, отображаемых на экране СПК110, часов...идрид мадрид...придется опять его (напильник) доставать...
"Попробуйте увеличить цикл основной программы и визуализации." - ИМХО, это кривой выход из ситуации...Во-первых, до какого значения увеличить, 10, 20, 100мс? Во-вторых, зачем мне выжидать тех же 20мс, если весь цикл способен выполняться (и мне нужно чтобы он выполнялся) за 5мс? На СПК1хх визуализация и так медленная, куда её ещё замедлять-то?
Кстати, похожие "грабли" обсуждаются и тут http://www.owen.ru/forum/showthread.php?t=23485&highlight=SysExecute%28%27hwclock+-s%27%29

Spawn
04.08.2016, 12:02
По поводу отставания часов. Имеется в наличии еще один СПК110, лежал, ждал своего часа. Решил пока поэксперементировать на нем. Загрузил в него тотже проект, что и в СПК110 установленном на объекте, с единственной разницей - отключил обмен по Modbus (библиотечный). Лежит на столе, работает уже 10 часов (оставлю еще до утра), расхождений в часах не наблюдается. На днях планирую съездить на объект, посмотреть как там дела обстоят. Думается мне, что вся загвоздка именно в обмене по Modbus, как выше и указал Фаниль, хотя это может быть и не единственной причиной. Ну и попробую прикрутить SysExecute('hwclock -s'). По результатам отпишусь.

Эдуард_Н
03.02.2017, 15:35
По поводу отставания часов. Имеется в наличии еще один СПК110, лежал, ждал своего часа. Решил пока поэксперементировать на нем. Загрузил в него тотже проект, что и в СПК110 установленном на объекте, с единственной разницей - отключил обмен по Modbus (библиотечный). Лежит на столе, работает уже 10 часов (оставлю еще до утра), расхождений в часах не наблюдается. На днях планирую съездить на объект, посмотреть как там дела обстоят. Думается мне, что вся загвоздка именно в обмене по Modbus, как выше и указал Фаниль, хотя это может быть и не единственной причиной. Ну и попробую прикрутить SysExecute('hwclock -s'). По результатам отпишусь.

Что у Вас получилось с прикручиванием SysExecute('hwclock -s')?

anto.hin
10.02.2017, 08:51
Что у Вас получилось с прикручиванием SysExecute('hwclock -s')?

Я пробовал "прикручивать" hwclock -s. Это не помогает.

Эдуард_Н
10.02.2017, 18:10
Я пробовал "прикручивать" hwclock -s. Это не помогает.

Что на это скажут производители?

alexx751
10.02.2017, 18:14
Производители грамотно обходят эту ветку стороной.

anto.hin
10.02.2017, 18:55
Можно конечно программно реализовать периодическую перезагрузку контроллера. Тогда часы выравниваются.

Эдуард_Н
11.02.2017, 04:33
Можно конечно программно реализовать периодическую перезагрузку контроллера. Тогда часы выравниваются.

Это ерунда, надо что бы часы без всяких костылей нормально бегали.

Александр Приходько
13.02.2017, 02:10
Если кратко, то суть проблемы в том, что при старте Linux читает RTC (аппаратное из кварца) и передает его процессору. Который в свою очередь начинает его отсчитывать самостоятельно. Если процессор загружен, то у него бывают случаи, когда он проскакивает обработку времени, вытесняются часики CODESYS. При этом аппаратные часики тикают параллльно, и адекватно.
Многие замечали, что перезагрузка помогает. Это так, потому что при первом запуске считывается аппаратное время.
В тестовой ветке под SP7 мы начали решать данную проблему. Причем с 2-х фронов. Первое, это синхронизация аппаратных часов и времени Linux. Второе, возможность примения NTP.
Под SP5 проблему мы не решали, но рекомендация с "hwclock -s" должна помогать. Если нет, присылайте проекты, будем разбираться.

P.S. данный вопрос не привязан именно к СПК107. Он имеет место быть на любой СПК.

Евгений Кислов
13.02.2017, 11:37
Добрый день, уважаемые коллеги.

Для синхронизации времени необходимо использовать команду /sbin/hwclock -s
Т.е. вот так:

SysExecute('/sbin/hwclock -s');

Команда синхронизирует системное время Linux (которое использует CDS) с аппаратными часами СПК.

Не следует вызывать ее циклически - раз в час, например, будет вполне достаточно в большинстве случаев.


https://youtu.be/BEEdhETvdKM

anto.hin
13.02.2017, 12:58
29442
Пробую зайти через putty на спк105 и использовать эту команду. Возникает сообщение ''Segmentation fault''.

Евгений Кислов
13.02.2017, 13:04
Попробуйте выполнить команду ls /dev/rtc* - что будет в терминале?
Также попробуйте запустить hwclock без ключа -s.

И уточните, пожалуйста, какая у вас прошивка СПК105.

anto.hin
13.02.2017, 13:07
29443
/dev/rtc /dev/rtc0

anto.hin
13.02.2017, 13:11
hwclock без ключа выполняется.
СПК105 Версия прошивки 3.947.

Евгений Кислов
13.02.2017, 13:12
Понятно, тогда - strace hwclock -w и все, что выведется - сюда бросьте, пожалуйста.
У вас в этот момент запущен какой-то проект? В нем нет попытки синхронизации этой же командой через SysExecute?

anto.hin
13.02.2017, 13:37
29446
Да. Запущен проект, в котором не производится попыток синхронизации через sysexecute.

Евгений Кислов
13.02.2017, 13:43
В вашей ситуации для синхронизации используйте команду /sbin/strace hwclock -w

Мы постараемся разобраться, почему исходная команда в вашем случае не срабатывает.

anto.hin
13.02.2017, 14:46
Вы имели ввиду /sbin/hwclock -w?

Евгений Кислов
13.02.2017, 14:53
Вы имели ввиду /sbin/hwclock -w?

Простите - действительно, ошибся. Правильная команда (для вашего случая) - /sbin/strace hwclock -s

anto.hin
13.02.2017, 14:56
root@spk105:root# /sbin/strace hwclock -s
-sh: /sbin/strace: not found
root@spk105:root#

Евгений Кислов
13.02.2017, 14:57
Тогда - просто strace hwclock -s

Эдуард_Н
13.02.2017, 15:15
29451 Так нормально?

Евгений Кислов
13.02.2017, 15:21
29451 Так нормально?

Лучше - '/sbin/hwclock -s'

anto.hin
13.02.2017, 15:26
Нормально. Только не работает.

Евгений Кислов
13.02.2017, 15:28
Нормально. Только не работает.

Как можно увидеть в ролике - работает:
http://www.owen.ru/forum/showthread.php?t=17080&p=237131&viewfull=1#post237131

Почему не работает конкретно на вашей СПК - это отдельный вопрос. Если есть возможность - добавьте меня в Skype, хотелось бы удаленно поработать с вашей панелью.

anto.hin
18.02.2017, 13:15
Обновил прошивку на 5.095. Теперь команда '/sbin/hwclock -s' прокатывает. Время синхронизируется.

Mikewolf
02.11.2018, 17:15
Я столкнулся с подобной проблемой. Сделал синхронизацию командой 'hwclock -s' раз в полчаса. На столе всё отлично работает и синхронизируется. На объекте - не работает. Отставание примерно на час в сутки. Разница между столом и объектом - в том, что на объекте к COM1 подключен компьютер со скадой, а к COM2 - 11 различных модулей мв110/му110. Время не синхронизируется ни по таймеру ни по кнопке, только сбросом питания. Пробовал все описанные выше варианты команды hwclock. Контроллер СПК107, прошивка 3.495, Codesys 3.5 SP5 Patch 5. Каким образом решить данную проблему?

Евгений Кислов
02.11.2018, 17:56
Добрый день.

1. Какая скорость обмена с модулями?
2. Есть возможность обновить прошивку до последней версии с сайта?

Mikewolf
04.11.2018, 17:36
Скорость обмена с модулями - 9600, скорость обмена со скадой - 19200. С прошивкой завтра попробую.

Евгений Кислов
04.11.2018, 18:35
Скорость обмена с модулями - 9600, скорость обмена со скадой - 19200. С прошивкой завтра попробую.

Увеличьте скорость обмена до 115200 - это должно редуцировать проблему.

Mikewolf
04.11.2018, 18:52
Если увеличить скорость - начнутся ошибки в обмене ))) Я больше не могу понять почему одна и та же программа ведёт себя по разному на столе и на живом объекте. Контроллер уходит в таймаут и перестаёт пытаться опрашивать модули? И почему не работает синхронизация по кнопке (InputConfiguration->OnMouseClick->Execute ST-code->SysExecute('hwclock -s');

Евгений Кислов
04.11.2018, 18:59
почему одна и та же программа ведёт себя по разному на столе и на живом объекте

Потому что на столе к контроллеру не подключено 11 модулей.
Обновление прошивки должно решить проблему - в версии 5.4xx происходит регулярная синхронизация с аппаратными RTC.

Mikewolf
28.11.2018, 14:24
После смены прошивки всё заработало. Спасибо.

dkotlyar
07.12.2018, 11:14
У меня та же проблема с часами, версия прошивки 3.948. Пробовал обновить прошивку по инструкции на 5.4xx и на завершающем этапе обновления выдаёт ошибку "Ошибка контрольной суммы в файле spk107f.bin". Несколько раз перезаписывал файл, пробовал прошивки постарее, разные загрузчики, даже пробовал перезалить 3.948 - всё равно ошибка контрольной суммы на выходе

Евгений Кислов
07.12.2018, 11:17
У меня та же проблема с часами, версия прошивки 3.948. Пробовал обновить прошивку по инструкции на 5.4xx и на завершающем этапе обновления выдаёт ошибку "Ошибка контрольной суммы в файле spk107f.bin". Несколько раз перезаписывал файл, пробовал прошивки постарее, разные загрузчики, даже пробовал перезалить 3.948 - всё равно ошибка контрольной суммы на выходе

Возможно, проблема уже на этапе скачивания прошивки возникла?
Попробуйте перекачать заново.

dkotlyar
07.12.2018, 11:20
Возможно, проблема уже на этапе скачивания прошивки возникла?
Попробуйте перекачать заново.

У меня скачаны версии 3.939, 3.948, 4.821, 5.231, 5.472 (несколько раз скачивал) и во всех выдаёт эту ошибку. При этом загрузчик обновляется нормально до соответствующих версий.

Мои контрольные суммы для версии 5.472
SHA512 dc5751fe00e58ec0139304bdbae17fd259aeab087d8a9d5fd2 46f4d92e40731fa3b84a4a016cbf712e31ab9ac4cd01ee89eb 007c9b84d462b366a0c3d9da6df7 spk107f.bin
SHA1 ea9430b279b9cdb5962f62c710ef7cfb0f1e6113 spk107f.bin
MD5 88fc3f837c3305ddd92f82c0463492f8 spk107f.bin

firmware_v.5.472_spk_107_110.zip:
SHA1 f61eab83efb037789593f182725ce00553a87dfe

Евгений Кислов
07.12.2018, 11:40
Контрольные суммы правильные.
Я предлагаю вам обратиться в СЦ, чтобы решить проблему.

glazastik
14.07.2022, 19:31
Как работает NTP-клиент в прошивках spk1xxm01 1.2.0803.1220?
Включил ntp клиент на спк, включил сервер на компе, добавил в спк адрес сервера.
Когда он синхронизирует время?
Или он его синхронизирует только по команде?

Евгений Кислов
14.07.2022, 19:36
Когда он синхронизирует время?

https://www.eecis.udel.edu/~mills/ntp/html/poll.html

Я не помню, чему у нас равен maxpoll, но когда я это тестировал - то после установки некорректного времени синхронизация по NTP автоматически произошла через ~30 минут.

glazastik
14.07.2022, 19:39
печально (
думал обойтись малой кровью и не лезть в код чтобы синхронизировать время из-за сдохшей батарейки

а не подскажите терминальную команду для принудительной синхронизации?

Евгений Кислов
15.07.2022, 08:49
а не подскажите терминальную команду для принудительной синхронизации?

/etc/init.d/sysntpd restart