Simatic Step 7. STL. Доступ к текущему времени. — АСУ ТП: сообщество инженеров

Simatic Step 7. STL. Доступ к текущему времени.

В предыдущей статье 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 к текущему времени есть два варианта:

  1. Воспользоваться встроенной стандартной функцией считывания системного времени «READ_CLK» (SFC1). Она возвращает время в структуре DATE_AND_TIME (DT), которая должна быть определена и создана;
  2. В каждом организационном блоке программы 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 к текущему времени есть два варианта:

  1. Воспользоваться встроенной стандартной функцией считывания системного времени «READ_CLK» (SFC1). Она возвращает время в структуре DATE_AND_TIME (DT), которая должна быть определена и создана;
  2. В каждом организационном блоке программы 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. Доступ к текущему времени.

Оставьте комментарий

Войти

Зарегистрироваться

Сбросить пароль

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

Прокрутить вверх