Мы в своих проектах используем СЕВ (Сервер Единого Времени), который по протоколу SNTP в сети Ethernet рассылает метку единого времени, а по ней уже синхронизируются все узлы. Я даже у себя в своей скаде прописал поддержку протокола SNTP. Есть куча утилит в Интернет, которые под MS Windows умеют по протоколу SNTP выполнять синхронизацию.
У нас задача специфическая малость, по требованиям отрасли у нас в системе разбег времени по всем узлам системы не должен превышать 20 миллисекунд от эталонного времени по GPS или Глонас. И если под MS Windows (XP,7,Server2008 и так далее) эти утилиты нормально работают без особых танцев с бубном в диапазоне требуемой нами погрешности в 20мс, то под WindowsCE (у нас под ней контроллеры работают) с этим есть серьезные проблемы - там даже после синхронизации время от эталона может скакать от 100 до 400мс, причем проверяли как утилитами, службой винды штатной и даже сами писали синхронизацию по SNTP-протоколу - бестолку, в диапазон 20мс никак не попадали. Пришлось мне малость стандарт NTP доработать и внести кое-какие корректировки в алгоритм его работы, только после этого удалось уложиться в требуемые ограничения.
Кстати, проверку как раз делаем по строб-импульсу PPS, который большинство оборудования типа GPS-приемников или СЕВов выдают как дискретный сигнал, передний фронт которого четко синхронизирован с 000 миллисекунд каждой секунды. Когда его в узел проверяемый заводишь, то регистрация сигнала должна четко совпадать с началом каждой секунды в пределах требуемой погрешности.
|