Открываешь журнал событий ПЛК или экран панели — а там 1 января 1970 года. Завод ещё не построили, контроллер не выпустили, а авария уже зарегистрирована 😄

Откуда взялась эта дата?

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

В Unix точкой отсчёта стало 1 января 1970 года, 00:00:00 UTC:

• 0 — начало 1970 года. • 3600 — прошёл один час. • 86400 — наступило 2 января.

Так удобнее сравнивать временные метки и вычислять интервалы.

Но сначала было ещё интереснее.

В раннем Unix время отсчитывали с 1 января 1971 года, причём в долях секунды — по 1/60.

Хранили счётчик в 32 битах. Его диапазона хватало примерно на… 2,5 года.

Разработчикам приходилось переносить начало отсчёта. В 1973 году перешли на целые секунды и закрепили начало эпохи в 1970 году. Это решение пережило поколения компьютеров.

Как эта дата добралась до ПЛК?

Такой формат используют и в промышленной автоматизации. Например, в CODESYS тип DATE_AND_TIME хранит число секунд с начала 1970 года.

Поэтому ноль в переменной времени отображается вполне конкретной датой — 01.01.1970.

Панель может ждать актуальное время, но получить сброшенное или ещё не обновлённое значение. Она честно преобразует ноль в дату — и отправляет журнал событий на полвека назад.

Увидели 1970 год? Не спешите менять батарейку.

Сначала разберитесь:

• Сбились ли часы самого контроллера? • Успешно ли выполнено чтение времени? • Не сбрасывается ли переменная программой? • Получает ли панель актуальную временную метку?

У разных платформ и форматов даты точки отсчёта отличаются. Но если используется отсчёт от 1970 года, такая дата — хороший повод поискать, откуда пришёл ноль.

И небольшой сюжетный поворот: классический счётчик секунд в 32-битном целом со знаком достигает предела в 2038 году. Поэтому важен не только правильный часовой пояс, но и формат хранения времени.

Иногда путешествие в прошлое начинается с одной обнулённой переменной.

#кип #асутп #плк #автоматизация #программирование #пнр #завод

Фриланс инженер ТГ @Freelanceforengineer

Открываешь журнал событий ПЛК или экран панели — а там 1 января 1970 года | Сетка — социальная сеть от hh.ru Открываешь журнал событий ПЛК или экран панели — а там 1 января 1970 года | Сетка — социальная сеть от hh.ru