Статья описывает доступ к текущему времени в Step 7 STL через системный формат DATE_AND_TIME. Рассмотрены два способа получения времени и структура DT в BCD-формате.
- Разговор ограничен системным форматом времени DATE_AND_TIME, другие форматы упомянуты кратко.
- Первый вариант доступа — стандартная функция READ_CLK (SFC1), возвращающая время в структуре DATE_AND_TIME.
- Второй вариант — использование 8 байт системных данных в каждом организационном блоке.
- В каждом OB стандартом определено 20 байт системных данных, из которых первые 12 содержат информацию об OB.
- Структура DATE_AND_TIME включает байты года, месяца, дня, часа, минуты, секунды, миллисекунды и недели.
- Данные в структуре представлены в двоично-десятичном BCD формате, по две цифры в байте.
- DATE_AND_TIME
- READ_CLK
- SFC1
- TIME_OF_DAY
- S5TIME
- TIME
- DATE
- BCD
Кому полезно: Инженерам АСУ ТП, программирующим ПЛК Simatic в Step 7 на STL.
Первоисточник: we.easyelectronics.ru
Выжимка составлена редакцией сайта с помощью ИИ по тексту статьи.
В предыдущей статье Simatic Step 7. STL. Вычисление числа дней в месяце (DayOfMonth) пришлось немного углубиться в преставление системного времени Simatic Step 7. Получилось не очень (ни туда, ни сюда), решил оформить эту тему отдельной статьей. Разговор пойдет только о системном формате времени DATE_AND_TIME. Simatic поддерживает и другие форматы (TIME_OF_DAY (DWord, время суток), S5TIME (Word, время в формате Simatic, для таймеров и счетчиков), TIME (DWord, время в формате IEC), DATE (DWord, дата в формате IEC)), межформатные преобразования предусмотрены стандартной библиотекой.
Чтобы обеспечить доступ в Step 7 STL к текущему времени есть два варианта:
- Воспользоваться встроенной стандартной функцией считывания системного времени «READ_CLK» (SFC1). Она возвращает время в структуре DATE_AND_TIME (DT), которая должна быть определена и создана;
- В каждом организационном блоке программы Step 7 уже определено стандартом 20 байт для системных данных. Первые 12 содержат общую информацию о ОB (класс приоритета, номер OB) и информацию зависящую от типа ОB. Последние 8 байт в каждом ОB занимает структура типа DATE_AND_TIME (DT);
Структура DATE_AND_TIME (DT):
DATE_TIME_BCD_YEAR : BYTE; //Текущий год
DATE_TIME_BCD_MONTH : BYTE; //Текущий месяц
DATE_TIME_BCD_DAY : BYTE; //Текущий день
DATE_TIME_BCD_HOUR : BYTE; //Текущий час
DATE_TIME_BCD_MIN : BYTE; //Текущая минута
DATE_TIME_BCD_SEC : BYTE; //Текущая секунда
DATE_TIME_BCD_MSEC : BYTE; //Текущая милисекунда
DATE_TIME_BCD_WEEK : BYTE; //Текущая неделя (7..4, 3..0 милисекунды)
Данные представлены в двоично-десятичном BCD формате, в каждом байте две цифры.
В предыдущей статье Simatic Step 7. STL. Вычисление числа дней в месяце (DayOfMonth) пришлось немного углубиться в преставление системного времени Simatic Step 7. Получилось не очень (ни туда, ни сюда), решил оформить эту тему отдельной статьей. Разговор пойдет только о системном формате времени DATE_AND_TIME. Simatic поддерживает и другие форматы (TIME_OF_DAY (DWord, время суток), S5TIME (Word, время в формате Simatic, для таймеров и счетчиков), TIME (DWord, время в формате IEC), DATE (DWord, дата в формате IEC)), межформатные преобразования предусмотрены стандартной библиотекой.
Чтобы обеспечить доступ в Step 7 STL к текущему времени есть два варианта:
- Воспользоваться встроенной стандартной функцией считывания системного времени «READ_CLK» (SFC1). Она возвращает время в структуре DATE_AND_TIME (DT), которая должна быть определена и создана;
- В каждом организационном блоке программы Step 7 уже определено стандартом 20 байт для системных данных. Первые 12 содержат общую информацию о ОB (класс приоритета, номер OB) и информацию зависящую от типа ОB. Последние 8 байт в каждом ОB занимает структура типа DATE_AND_TIME (DT);
Структура DATE_AND_TIME (DT):
DATE_TIME_BCD_YEAR : BYTE; //Текущий год
DATE_TIME_BCD_MONTH : BYTE; //Текущий месяц
DATE_TIME_BCD_DAY : BYTE; //Текущий день
DATE_TIME_BCD_HOUR : BYTE; //Текущий час
DATE_TIME_BCD_MIN : BYTE; //Текущая минута
DATE_TIME_BCD_SEC : BYTE; //Текущая секунда
DATE_TIME_BCD_MSEC : BYTE; //Текущая милисекунда
DATE_TIME_BCD_WEEK : BYTE; //Текущая неделя (7..4, 3..0 милисекунды)
Данные представлены в двоично-десятичном BCD формате, в каждом байте две цифры.
Источник: