В предыдущей статье 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 формате, в каждом байте две цифры.
Источник: