С виду - верх совершенства, пытался понять как это работает, не понял... Пошел дальше монтировать шкаф управления =)
Вид для печати
С виду - верх совершенства, пытался понять как это работает, не понял... Пошел дальше монтировать шкаф управления =)
что за расширение .owle ?
это в последних лоджиках такое мордвинизировали?
Добрый день, всем.
Прошу прощения, за пропажу с радаров. Был сильно занят, да еще и и.о. директора назначили... В общем жопа была в мыле.
Ко мне наконец все приборы пришли, все смонтировал, сегодня залил, буду отлаживать.
Может я что-то накосячил, но не пойму смысла очереди. Сейчас программа работает следующим образом:
Включаю кам1, через пару минут включаю кам2, задержка 1 мин выдержка 2 мин, кам2 неначинает работу пока кам1 не закончит работу.
Так мне не нужно было, по идее.
Или я где-то накосячил?
В принципе очередь и делал чтобы другой выход не включился пока текущий(включённый) не выключится! Но в принципе можно только запуск в работу по очереди сделать(если это надо), а дальше камеры будут работать одновременно(параллейно)!
Насколько я помню, очередь я и добавлял, чтобы одновременно могла работать только одна камера.
В общем, не знаю с какого перепуга я решил что мощности котельной хватает только на одну камеру.
Вот, я переделал макрос управления камерой. Теперь все камеры в очереди запустятся. Еще у макроса добавился вход "Задержка след" - следующая в очереди камера запуститься с задержкой.
Макрос просто импортируйте в проект, щелкаете на старом макросе правой кнопкой и выбираете в меню "Заменить элемент"
Какой мне сигнал к нему (задержка след.) подключать?
Уставку "Задержка включения" можно менять на лету (во время отсчета) - время включения измениться. Но можно и макрос переделать с отдельным входом для коррекции и с обнулением этой коррекции после выключения камеры
Очередь лучше оставить - она правильно запустит камеры после выходных. Хотя, возникает нюанс - если камеру включили позже, а время включения у нее меньше чем у предыдущей, она все равно запуститься после
Если менять уставку на лету, то во первых не происходит перерасчет индикации времени включения/выключения (вчера заметил на "железе"), во вторых система менее гибкой становится, при работе нескольких камер одновременно меняется уставка на всех а если к примеру нужно поменять время включения одной из камер?
Вчера перекопал весь форум, так и не нашел ни у кого алгоритма изменения времени "на лету", не пойму как можно перезаписать переменную с новыми данными, если она уже посчитана, даже если кучу промежуточных переменных использовать...
Я понимаю, что этот функционал увеличивает количество сетевых переменных и нагрузку на панель оператора особенно на запросы, но считаю, что такой функционал просто необходим.
Во второй версии макроса управления камерой точно при изменении уставки задержки включения все пересчитывается и отображается. А вот если изменить уставку выдержки, то там да, время выключения не пересчитывается - если это необходимо, то сделать не проблема.
Далее, у каждой камеры должна быть своя уставка включения/выключения. И сделать надо так, чтобы эта уставка записывалась из двух мест - либо напрямую, либо из какой-нибудь общей уставки. Тоже, в принципе, сделать не проблема, надо только подумать как это лучше организовать
Я сейчас пытаюсь оперировать переменной время старта (по моему мнению это разумней), а не уставкой, к сожалению все еще не придумал как её изменять, при этом чтобы она не зациклилась. Т.е. я научился сохранять по твоему примеру, через триггер и селект, но он почему-то ругается на зацикленность и просит добавить линию задержки, хотя у тебя ее нет, и он не ругается, хотя скорее всего я догнал, это из-за операции сложения перед селектом.
Не ругается, скорее всего, потому, что переменная энергонезависимая. В принципе можно и время старта менять, но дело в том, что она запоминается в формате Д.М.Г Ч:М:С, т.е. нужно будет вычленять часы и минуты, а потом обратно интегрировать
А так, время включения на лету можно менять таким макаром
Вложение 63999
+/- тоже можно реализовать
Вложение 64003
Но я тут подумал, может быть не городить огород, а сделать проще: убрать макрос расписания, на панель вывести время включения в формате Д.М.Г Ч:М:С. Если нужно на выходные сделать паузу, просто в панели для каждой камеры задаем новые Д.М.Г Ч:М:С и все
Ну, во-первых, переменная "Время выключения" используется только для проверки разрешения на запуск в случае выходных дней. На время выдержки она не влияет.
Во-вторых, зачем вы день недели в секунды записываете?
Далее, в вашем случае при изменении времени включения не учитывается переход через полночь - т.е., допустим, камеру нужно включить в 8 часов вечера и она должна заработать в 2 ночи, работники забыли ее включить - до полуночи вы не сможете поставить 2 часа ночи.
Поэтому менять время надо либо +/-, либо полным календарем с указанием даты и времени.
И еще, вам обязательно надо иметь возможность изменить время выключения? Оно ведь автоматом рассчитывается от времени включения и выдержки
Это я честно говоря не тот модуль сбросил, у меня 4 проекта открыты (и во всех разные эксперименты), его я исправил, но на полночь не проверил пока...
В принципе время выключения менять нет особой необходимости, вы правы.
У меня во всяком случае (в эмуляторе и на железе) не редактирует время включения, точнее когда камера находится в статусе "0" - время прибавляется/отнимается, но когда запускаю кнопкой (статус "1") - время высчитывается по умолчанию и его нет возможности поменять (на долю секунды меняется, и возвращается обратно).
Я так понимаю время выключения я могу вычислить только из переменной "таймер"?
Upd: понял что делает таймер: это грубо говоря отсчет времени до следующего события - время до включения - время до выключения...
Тогда от куда мне можно взять время выключения?
Попробуйте этот макрос
Вложение 64013
пока камера выключена (статус 0) изменить время включения нельзя - показывается время включения и выключения, привязанные к текущему времени и уставкам.
после включения (статус 1) макрос на основе расписания пересчитывает время включения и, соответственно выключения (пока по умолчанию поставил работать всегда - тоже нужно тестить).
пока действует задержка (статус 1) время включения можно изменять
основная заморока здесь - учесть перерыв в электроснабжении когда камера уже работает (статус 3). Я его вроде решил, т.е. время без питания не входит в выдержку и после восстановления питания время выключения пересчитается, но это надо проверить
кнопки +/- работают так: краткое нажатие - единичное срабатывание, удерживание - изменение со скоростью 10 мин/сек. Не знаю как это по сети будет работать.
удалил таймер - вы его все равно не используете
Я вот, что предлагаю - разделить управление камерами на "с кнопки" и "по сети". При запуске с кнопки автоматом на основе уставок рассчитывается время включения и выключения. При запуске по сети можно скорректировать время включения (время выключения автоматом подтянется) после чего уже запустить камеру. После запуска корректировать время уже нельзя.
Стоит разрабатывать этот вариант?
Я думаю нынешний функционал боле чем должен всех устраивать.
Кстати вы говорили про расписание с датой, я не нашел такого макроса, существует ли макрос типа Clock_week но с переносом остатка времени на следующий день (если он выключен в расписании)?
Есть очень неприятный баг вычисления времени, если к примеру оператор нажмет кнопку запуска сегодня в 23:59, а завтра (к примеру) мы не работаем, то время запуска и остановки не вычисляется и бегает по кругу. Так же происходит если ни один из дней не выставлен. То же самое происходит если время задержки переходит на следующий (не рабочий) день.
Так вот он
Вложение 64023
А это расписание для него
Вложение 64024
И, еще, в свете того, что время запуска редактируется, необходимо избавляться от макроса "Очередь". Дело в том, что если какую-то камеру запустили уже после остальных с коррекцией запуска, то она в очередь станет последней, даже если по времени должна запуститься раньше. Вместо очереди нужен макрос, который просто делает задержку запуска следующей камеры. После выходных камеры будут запускаться по очереди в порядке возрастания от первой и далее, а не в порядке нажимания кнопки
В общем пока проект в разработке, меня начальник терроризирует (особенно понравилось высказывание:" Какой то таймер за 1к рублей сам включает по расписанию, а эта штука за 30к не может? " =) Поэтому пока выкатываю версию на таймерах которые вы мне показывали ранее, на сегодня это приемлемо (режим работы завода на данный момент позволяет).
Но есть одно НО, время включения каждой камеры содержится в сетевой переменной, соответственно как только выключится питание все настройки слетят? Если да то как мне заставить их запоминаться в энергонезависимую память малыми усилиями?
Сетевые переменные энергонезависимые
Временную программу отладил, ошибки устранил, но не закрыл один вопрос: как заставить запомнить состояние сигнала "кнопка" при отключении питания, галку энергонезависимость галку ставил не помогло, видимо макрос "ON_OFF" при включении питания перезаписывает состояние на "0".
Вот так
Вложение 64057
Переменная Пуск энергонезависимая
Вам же много Т-триггеров требуется, в смысле, здесь в посте #622: https://owen.ru/forum/showthread.php?t=12691&page=63
выкладывал до 32 Т-триггера в одном флаконе с функцией энергонезависимости и ещё преимущество этого алгоритма в том, что количество используемой энергонезависимой памяти может уменьшится до 8 раз!
Бывает это критично, в смысле, объём памяти ограничен!
Такое впечатление, что Вы с Луны упали и даже не вчера, а только что, в смысле, ничего не знаю и смотреть не хочу!
И, здесь, в посте #4699: https://owen.ru/forum/showthread.php?t=17153&page=470