Возникла такая проблема.Поступило задание на проект для суммирования полезного времени работы станка по сменам по 12 часов в графике 1_1.
Контроллер S315-2.
Все шло нормально,все считаю,раскидал в таблице , 32 разрядного слова вполне хватило в каждой ячейке.
Теперь загвоздка встала в подсчете общего времени за месяц.
Размер форматов данных в STEP7 не позволяют суммировать в одно слово типа формате TIME_OF_DAY для подсчета окончательной суммы рабочего времени за месяц.
Или как то надо изощриться преобразованием в BCD или разбить двойное слово формате TIME_OF_DAY на часы,минуты и секунды.
Отправлено спустя 1 минуту 3 секунды:
Вопрос,как ?
Отправлено спустя 3 минуты 57 секунд:
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Как просуммировать 31 значение DB в формате TIME_OF_DAY STEP7
Модератор: Глоб.модераторы
-
- здесь недавно
- Сообщения: 6
- Зарегистрирован: 23 июн 2022, 12:21
- Имя: Сергей
- Страна: Россия
- город/регион: Свердловская область
- Поблагодарили: 1 раз
Как просуммировать 31 значение DB в формате TIME_OF_DAY STEP7
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- здесь недавно
- Сообщения: 98
- Зарегистрирован: 21 мар 2023, 02:12
- Имя: Владимир
- Страна: РФ
- город/регион: Псков
- Благодарил (а): 2 раза
- Поблагодарили: 21 раз
Как просуммировать 31 значение DB в формате TIME_OF_DAY STEP7
Функция FC1 AD_DT_TM должна подойти. Находится в Libraries stdlibs iec.
-
- здесь недавно
- Сообщения: 6
- Зарегистрирован: 23 июн 2022, 12:21
- Имя: Сергей
- Страна: Россия
- город/регион: Свердловская область
- Поблагодарили: 1 раз
Как просуммировать 31 значение DB в формате TIME_OF_DAY STEP7
Начальное слово DB23.DBD 0 (формат TIME) , в каждую ячейку пишется не более T#11h59m59s
Конечное DB23.DBD 244
Результат суммы в часах,минутах и секундах поместить в DB23.DBD 250 (формат TIME или куда то в другое слово ?)
Максимальное значение T#23h59m59s в DBD
Не могу сообразить,как прописать .
Конечное DB23.DBD 244
Результат суммы в часах,минутах и секундах поместить в DB23.DBD 250 (формат TIME или куда то в другое слово ?)
Максимальное значение T#23h59m59s в DBD
Не могу сообразить,как прописать .
-
- здесь недавно
- Сообщения: 98
- Зарегистрирован: 21 мар 2023, 02:12
- Имя: Владимир
- Страна: РФ
- город/регион: Псков
- Благодарил (а): 2 раза
- Поблагодарили: 21 раз
Как просуммировать 31 значение DB в формате TIME_OF_DAY STEP7
Очевидно же, что вы не сможете поместить целый месяц в одни сутки. Для суммы времени берите переменную DATE_AND_TIME (8 байт).
Вы ещё определитесь, в чём у вас время хранится. В посте пишете TIME_OF_DAY, а в программе TIME. Функция FC1 AD_DT_TM принимает в формате TOD.
Для суммы времён можете взять начало месяца в формате DATE_AND_TIME, через AD_DT_TM добавить все времена работы, из результата вычесть начало месяца. Получите количество часов наработки.
Вообще можно гораздо проще. TIME_OF_DAY и TIME хранят время одинаково, в мс. Берёте время, конвертируете его через TIME_TO_DINT или через DWORD_TO_DINT(DB23.DBDxx). Складываете все времена как DINT, получите полное время наработки в мс, уж во время его как-нибудь переведёте. Максимум можно насчитать почти 25 сутков, следите за переполнением DINT переменной.
Вы ещё определитесь, в чём у вас время хранится. В посте пишете TIME_OF_DAY, а в программе TIME. Функция FC1 AD_DT_TM принимает в формате TOD.
Для суммы времён можете взять начало месяца в формате DATE_AND_TIME, через AD_DT_TM добавить все времена работы, из результата вычесть начало месяца. Получите количество часов наработки.
Вообще можно гораздо проще. TIME_OF_DAY и TIME хранят время одинаково, в мс. Берёте время, конвертируете его через TIME_TO_DINT или через DWORD_TO_DINT(DB23.DBDxx). Складываете все времена как DINT, получите полное время наработки в мс, уж во время его как-нибудь переведёте. Максимум можно насчитать почти 25 сутков, следите за переполнением DINT переменной.
-
- здесь недавно
- Сообщения: 6
- Зарегистрирован: 23 июн 2022, 12:21
- Имя: Сергей
- Страна: Россия
- город/регион: Свердловская область
- Поблагодарили: 1 раз
Как просуммировать 31 значение DB в формате TIME_OF_DAY STEP7
Разве в STEP7 есть эти функции ?Joshua писал(а): ↑18 окт 2024, 11:32 Вообще можно гораздо проще. TIME_OF_DAY и TIME хранят время одинаково, в мс. Берёте время, конвертируете его через TIME_TO_DINT или через DWORD_TO_DINT(DB23.DBDxx). Складываете все времена как DINT, получите полное время наработки в мс, уж во время его как-нибудь переведёте. Максимум можно насчитать почти 25 сутков, следите за переполнением DINT переменной.
-
- здесь недавно
- Сообщения: 98
- Зарегистрирован: 21 мар 2023, 02:12
- Имя: Владимир
- Страна: РФ
- город/регион: Псков
- Благодарил (а): 2 раза
- Поблагодарили: 21 раз
Как просуммировать 31 значение DB в формате TIME_OF_DAY STEP7
Приведение типов есть во всех МЭКовский языках.
А сложение и вычитание есть в школе.
А сложение и вычитание есть в школе.