Автор |
Сообщение |
Сообщение создано: 10. 08. 2015 [09:01]
|
IrmIngeneer
Константин \m/
Contributor Sponsor
Создатель темы
Зарегистрирован(а) с: 16.09.2010
Сообщения: 185
|
Роман, возможны ли негативные последствия от коррекции системной даты-времени при запущенной OpenSCADA? Если возможны, то какие и в каких пределах допустима коррекция?
|
Сообщение создано: 10. 08. 2015 [10:07]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3743
|
"IrmIngeneer" wrote:
Роман, возможны ли негативные последствия от коррекции системной даты-времени при запущенной OpenSCADA? Если возможны, то какие и в каких пределах допустима коррекция?
Да, возможны, как на любой системе реального времени.
Гипотетически безболезненными должны быть все шаговые изменения времени в большую сторону с единомоментным пробуждением всех задач. А вот изменение в меньшую сторону может привести к продолжению сна уже спящих задач на размер шага изменения времени.
Отсюда и делайте выводы.
Из моего опыта: я полностью отказался от шагового изменения системного времени с работающей OpenSCADA и на ПЛК перешёл на схему:
- ntpdate и просто шаговое изменение времени, вызываются исключительно руками, когда OpenSCADA не запущена;
- запускается при загрузке демон "ntp" для плавной-мягкой синхронизации по образцу в сети;
- добавляется в крон вызов "hwclock -wu", раз в сутки — для компенсации ухода аппаратных часов от синхронизированных системных;
- демон OpenSCADA запускается при старте как можно раньше.
Learn, learn and learn better than work, work and work.
|
Сообщение создано: 10. 08. 2015 [10:19]
|
IrmIngeneer
Константин \m/
Contributor Sponsor
Создатель темы
Зарегистрирован(а) с: 16.09.2010
Сообщения: 185
|
Ок, спасибо.
|
Сообщение создано: 11. 08. 2015 [09:35]
|
fido_max
Maxim Kochetkov
Contributor
Зарегистрирован(а) с: 28.10.2010
Сообщения: 129
|
Тоже много думал над этим вопросом. Ничего толком и не придумал. Когда есть ethernet - вопросов нет, синхронизируемся через ntp. а как быть в случаях, когда до PLC есть только RS-485/422 с модбасом? Роман, как бы вы поступили?
|
Сообщение создано: 11. 08. 2015 [10:02]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3743
|
"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.
|
Сообщение создано: 11. 08. 2015 [12:31]
|
IrmIngeneer
Константин \m/
Contributor Sponsor
Создатель темы
Зарегистрирован(а) с: 16.09.2010
Сообщения: 185
|
"roman" wrote:
...
Добавил-бы специфическую адаптацию:
- Написание процедуры коррекции времени в окружении OpenSCADA с модификацией мелкими шагами, в меньшую сторону или сразу в большую (а может и тоже шагами).
- В коде OpenSCADA, функция TSYS::taskSleep() — контроль за шаговой модификацией времени.
- В коде окружения OpenSCADA — исключение задач с продолжительным периодом.
- Возможно потребуются ещё дополнительные адаптации где-то.
Однако, в целом, можно попробовать в TSYS::taskSleep() сменить таймер CLOCK_REALTIME на CLOCK_MONOTONIC, вроде он по разрешающей способности такой-же, но не привязан к реальному времени.
"Мелкими шагами" - это по сколько?
|
Сообщение создано: 12. 08. 2015 [07:43]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3743
|
"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.
|