Да, расход за час, ну то-есть с часу до двух, с двух до трех и т.д., общий накопленный уже есть.
Ну, как вариант
Вложение 34031
Понял ваш вариант, но у меня немного другие обстоятельства. У меня час, день, месяц - ваша minute всегда будет больше 0. Я беру время из плк с помощью библиотеки. Мне нужно фиксировать изменение времени, прошу прощения за туфтологию. Например переменная hour (час) увеличилась на 1 час (то есть прошел 1 час) срабатывает бит, по которому я пишу в архив накопленный расход за этот час, далее часовой расход обнуляется и накапливается на следующий час и т.д. Точно также мне нужно фиксировать изменение суток и месяца. Вроде все просто но никак не дойду,как это провернуть. Кто делал архив расхода, может есть другие способы?
Такие вещи элементарно делаются если вместо отдельно взятых ЧЧ ММ СС использовать время в формате TOD (TIME_OF_DAY).Я беру время из плк с помощью библиотеки. Мне нужно фиксировать изменение времени, прошу прощения за туфтологию. Например переменная hour (час) увеличилась на 1 час (то есть прошел 1 час) срабатывает бит, по которому я пишу в архив накопленный расход за этот час, далее часовой расход обнуляется и накапливается на следующий час и т.д.
Соберите время суток в секунды, результат разделите по модулю 86400. Получите нолик строго в момент начала очередного часа. Т.к. длительность нолика - 1 сек, то нужно еще добавить F_TRIGGEG - получите нужный импульс.
А начало суток получите в момент когда TOD = 0.
Вложение 34034
А для того, чтобы фиксировать изменение недели, месяца, или года нужно использовать время в формате TD(TIME_AND_DATE).
Только упаковка времени в TOD немного по хитрее будет.
ЗЫ.
Почитайте на досуге статью И.Петрова "Программируем временные сложности" http://prolog-plc.ru/docs/TimeExperience.pdf
Я думаю, что это Вам поможет
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Хорошо, тогда так
Вложение 34040
как только час поменяется, будет импульс. Аналогично можно сделать для дня, недели, месяца и года. Только здесь важен порядок блоков - MOVE должен исполняться последним
Всем спасибо за помощь, буду пробовать.
как в кодесис можно реализовать резервирование подсетей? Ситуация следующая. У меня на одном компьютере трудится ОРС сервер кодесис, и проект АРМ мастер скада. В ОРС сервере настроены две подсети до одного контрлоллера.Вложение 34081 Мастер скада не позволяет резервировать подстеи в таком случае, только когда используется удалённый ОРС. можно ли в кодесис настроить одну группу тегов которая бы общалась с двумя подсетями и при выдёргивании одного из шнурков из адаптера автоматически подтягивал данные с другого адаптера?
Довольно часто встречается вроде бы несложная ситуация: нужно управлять одним выходом по сигналу с 2х и более битовых переменных (например DI или ModBus), а также синхронизировать состояние этого выхода с управляющими переменными.
Сейчас решаю следующим способом:
Вложение 34125
Оно конечно работает, но как то уж очень громоздко выходит: куча переменных и триггеров, а когда таких выходов много, разбираться становится тяжело, невольно вспоминается слово "быдлокод"
Может быть есть более элегантное (эффективное) решение, подскажите пожалуйста?
Иногда достаточно спросить у кого-нибудь, чтобы додуматься самому
В результате переделал алгоритм на ST и оформил в виде блока:
Вложение 34130
Получилось 20 переменных и 20 строк -- уже веселее, хотя на мой взгляд все еще как на кировце огород пахать...
Let it be, поскольку других идей все равно больше нет.
Скрытый текст: