EnglishУкраїнськаmRussian
Login/New
Topic with no new replies

Коррекция системной даты


Author Message
Written on: 10. 08. 2015 [09:01]
IrmIngeneer
Константин \m/
Contributor
Sponsor
Topic creator
registered since: 16.09.2010
Posts: 185
Роман, возможны ли негативные последствия от коррекции системной даты-времени при запущенной OpenSCADA? Если возможны, то какие и в каких пределах допустима коррекция?
Written on: 10. 08. 2015 [10:07]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"IrmIngeneer" wrote:

Роман, возможны ли негативные последствия от коррекции системной даты-времени при запущенной OpenSCADA? Если возможны, то какие и в каких пределах допустима коррекция?

Да, возможны, как на любой системе реального времени.
Гипотетически безболезненными должны быть все шаговые изменения времени в большую сторону с единомоментным пробуждением всех задач. А вот изменение в меньшую сторону может привести к продолжению сна уже спящих задач на размер шага изменения времени.
Отсюда и делайте выводы.

Из моего опыта: я полностью отказался от шагового изменения системного времени с работающей OpenSCADA и на ПЛК перешёл на схему:
- ntpdate и просто шаговое изменение времени, вызываются исключительно руками, когда OpenSCADA не запущена;
- запускается при загрузке демон "ntp" для плавной-мягкой синхронизации по образцу в сети;
- добавляется в крон вызов "hwclock -wu", раз в сутки — для компенсации ухода аппаратных часов от синхронизированных системных;
- демон OpenSCADA запускается при старте как можно раньше.

Learn, learn and learn better than work, work and work.
Written on: 10. 08. 2015 [10:19]
IrmIngeneer
Константин \m/
Contributor
Sponsor
Topic creator
registered since: 16.09.2010
Posts: 185
Ок, спасибо.
Written on: 11. 08. 2015 [09:35]
fido_max
Maxim Kochetkov
Contributor
registered since: 28.10.2010
Posts: 129
Тоже много думал над этим вопросом. Ничего толком и не придумал. Когда есть ethernet - вопросов нет, синхронизируемся через ntp. а как быть в случаях, когда до PLC есть только RS-485/422 с модбасом? Роман, как бы вы поступили?
Written on: 11. 08. 2015 [10:02]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"fido_max" wrote:

Тоже много думал над этим вопросом. Ничего толком и не придумал. Когда есть ethernet - вопросов нет, синхронизируемся через ntp. а как быть в случаях, когда до PLC есть только RS-485/422 с модбасом? Роман, как бы вы поступили?

Добавил-бы специфическую адаптацию:
- Написание процедуры коррекции времени в окружении OpenSCADA с модификацией мелкими шагами, в меньшую сторону или сразу в большую (а может и тоже шагами).
- В коде OpenSCADA, функция TSYS::taskSleep() — контроль за шаговой модификацией времени.
- В коде окружения OpenSCADA — исключение задач с продолжительным периодом.
- Возможно потребуются ещё дополнительные адаптации где-то.

Однако, в целом, можно попробовать в TSYS::taskSleep() сменить таймер CLOCK_REALTIME на CLOCK_MONOTONIC, вроде он по разрешающей способности такой-же, но не привязан к реальному времени.

Learn, learn and learn better than work, work and work.
Written on: 11. 08. 2015 [12:31]
IrmIngeneer
Константин \m/
Contributor
Sponsor
Topic creator
registered since: 16.09.2010
Posts: 185
"roman" wrote:

...
Добавил-бы специфическую адаптацию:
- Написание процедуры коррекции времени в окружении OpenSCADA с модификацией мелкими шагами, в меньшую сторону или сразу в большую (а может и тоже шагами).
- В коде OpenSCADA, функция TSYS::taskSleep() — контроль за шаговой модификацией времени.
- В коде окружения OpenSCADA — исключение задач с продолжительным периодом.
- Возможно потребуются ещё дополнительные адаптации где-то.

Однако, в целом, можно попробовать в TSYS::taskSleep() сменить таймер CLOCK_REALTIME на CLOCK_MONOTONIC, вроде он по разрешающей способности такой-же, но не привязан к реальному времени.


"Мелкими шагами" - это по сколько?
Written on: 12. 08. 2015 [07:43]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"IrmIngeneer" wrote:

"roman" wrote:

...
Добавил-бы специфическую адаптацию:
- Написание процедуры коррекции времени в окружении OpenSCADA с модификацией мелкими шагами, в меньшую сторону или сразу в большую (а может и тоже шагами).
- В коде OpenSCADA, функция TSYS::taskSleep() — контроль за шаговой модификацией времени.
- В коде окружения OpenSCADA — исключение задач с продолжительным периодом.
- Возможно потребуются ещё дополнительные адаптации где-то.

Однако, в целом, можно попробовать в TSYS::taskSleep() сменить таймер CLOCK_REALTIME на CLOCK_MONOTONIC, вроде он по разрешающей способности такой-же, но не привязан к реальному времени.

"Мелкими шагами" - это по сколько?

Нужно пробовать.
Речь о гипотезе, которая работать должна при выполнении всех пунктов.

Learn, learn and learn better than work, work and work.



12514