Инструкции TIA Portal

Дата и время
Временная логика

Управляйте часами вашего PLC. От точной фиксации времени событий до сложных расчетов времени и преобразования форматов — контролируйте каждую миллисекунду.

Зачем управлять временем в PLC?

Управление временем критически важно для промышленной автоматизации. Оно позволяет точно протоколировать события производства, запускать запланированные задачи обслуживания, рассчитывать время цикла оборудования и синхронизировать распределенные системы по протоколам NTP.

Современные PLC Siemens предлагают расширенные типы данных, такие как DTL (Date and Time Long), которые обеспечивают прямой доступ к отдельным компонентам (год, месяц, день, час) без сложных битовых манипуляций, что значительно упрощает программирование по сравнению с устаревшими форматами DT.

Чтение времени

Доступ к системным и локальным часам

T_CONV — Извлечение системного времени

T_CONV

Что она делает

Извлекает определенные компоненты из значения даты/времени или конвертирует форматы. Это необходимо для получения читаемых часов/минут из необработанной метки времени.

Когда использовать

Когда вам нужно отобразить на HMI только время из полного тега Date_And_Time.

Советы экспертов

Используйте T_CONV для преобразования TOD (Time_Of_Day) в String для удобного логирования.

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

В SCL эта инструкция часто обрабатывается неявно простым присваиванием.

RD_SYS_T — Чтение системного времени

RD_SYS_T

Что она делает

Считывает текущее системное время CPU (UTC). В отличие от RD_LOC_T, оно не включает переход на летнее время или смещение часовых поясов.

Когда использовать

Идеально подходит для внутреннего логирования, где требуется непрерывный, не скачущий эталон времени (позволяет избежать проблем при переходе на летнее/зимнее время).

Советы экспертов

Всегда используйте UTC для хранения в базе данных, чтобы обеспечить глобальную согласованность.

Выход RET_VAL предоставляет информацию о статусе (например, синхронизированы ли часы).

Комбинируйте с RD_LOC_T, если вам нужно отображать как «техническое», так и «человеческое» время.

Арифметика

Расчеты длительности и меток времени

T_ADD — Добавить время

T_ADD

Что она делает

Добавляет длительность (Time или LTime) к определенной точке даты/времени. Она корректно обрабатывает переполнение минут, часов и дней.

Когда использовать

Расчет времени истечения или запланированной точки перезапуска (например, текущее время + 24 часа).

Советы экспертов

Очень полезно для реализации пользовательских сторожевых таймеров с динамической длительностью.

Используйте типы LTime для наносекундной точности на CPU S7-1500.

Если результат превышает максимальную дату (2262 год), CPU устанавливает статус ошибки.

T_DIFF — Разница во времени

T_DIFF

Что она делает

Вычисляет разницу между двумя метками времени и возвращает результат в виде длительности (Time или LTime).

Когда использовать

Измерение точной продолжительности этапа процесса или расчет времени безотказной работы оборудования.

Советы экспертов

Идеально подходит для расчетов OEE (Overall Equipment Effectiveness).

Вычитание большей даты из меньшей возвращает отрицательное значение Time.

На S7-1200/1500 используйте теги DTL для упрощения доступа к компонентам разницы.

Преобразование

Изменение форматов и работа со String

T_CONV — Преобразование DT в DTL

T_CONV

Что она делает

Преобразует устаревший формат DATE_AND_TIME (8 байт) в современный формат DTL или наоборот.

Когда использовать

При сопряжении устаревшего кода или блоков связи с новой оптимизированной логикой S7-1500.

Советы экспертов

Предпочитайте DTL для всех новых проектов, чтобы избежать сложности BCD (Binary Coded Decimal).

Преобразование в DTL позволяет писать «MyTag.MONTH» прямо в коде.

Будьте осторожны с точностью до миллисекунд, которая может быть обрезана в некоторых форматах.

DT_TO_STRING — Сериализация времени

DT_TO_STR

Что она делает

Преобразует значение даты/времени в читаемый формат String. STRING_TO_DT выполняет обратное действие.

Когда использовать

Отправка меток времени в CSV-файл на карту памяти или связь с веб-API.

Советы экспертов

Выходная строка следует формату ISO 8601 (YYYY-MM-DD-HH:MM:SS.ms).

Используйте STRING_TO_DT для разбора дат, полученных из внешней базы данных SQL.

Обратите внимание, что операции со String более ресурсоемки для CPU; используйте их экономно в быстрых циклах.

DATE_AND_TIME против DTL

Выбор правильной временной структуры

ФункцияDATE_AND_TIME (Устаревший)DTL (Современный)
Размер8 байт12 байт
КодированиеBCD (Сложно читать)Целые числа (Читаются напрямую)
Доступ к компонентамТребует битовых масокСтруктурный (Tag.Month)
Диапазонс 1990 по 2089с 1970 по 2262
Поддержка S7-1200/1500Только для совместимостиНативная и рекомендуемая
Точность10 мс1 наносекунда

Часто задаваемые вопросы

В чем разница между системным и локальным временем?

Системное время (RD_SYS_T) — это всегда UTC, обеспечивающее стабильный эталон. Локальное время (RD_LOC_T) настраивается с учетом вашего часового пояса и правил перехода на летнее время (DST), сконфигурированных в свойствах CPU.

Как синхронизировать часы PLC с сервером?

Включите NTP (Network Time Protocol) в конфигурации оборудования CPU. Укажите IP-адрес вашего сервера времени, и PLC автоматически подстроит свои внутренние часы.

Почему мой DATE_AND_TIME показывает странные значения в Hex?

Устаревший DT использует кодировку BCD. Значение 25 в десятичной системе хранится как 16#25 в BCD. Всегда используйте инструкции преобразования или DTL для правильного чтения значений.

Можно ли вычислить разницу между двумя тегами DTL напрямую?

В SCL вы можете просто использовать оператор «-» между двумя тегами DTL. TIA Portal автоматически вызовет инструкцию T_DIFF за вас.

Автоматизируйте управление временем

Нужно создавать отчеты о производстве с точными метками времени или синхронизировать 50 PLC? T-IA Connect автоматизирует генерацию временной логики.