Добрый день. Наверное немного глупый вопрос, но можно ли залить на одно реле несколько программ (сценариев) работы, и осуществлять их выбор через встроенную клавиатуру реле?
Вид для печати
Добрый день. Наверное немного глупый вопрос, но можно ли залить на одно реле несколько программ (сценариев) работы, и осуществлять их выбор через встроенную клавиатуру реле?
Нет, сама программа (одна) должна предполагать работу с несколькими сценариями, для ПР это достаточно сложно, но можно менять наборы переменных одной программы
Ну, несколько сценариев замутить можно, но, вот, если для каждого сценария нужно отдельное меню, то не получится - Овен, вроде планировал что-то такое, и в менеджере экранов есть группы, но они присутствуют в единственном экземпляре
Особенность ПР в том, что весь код залитый будет выполняться, не зависимо используется в текущий момент выбранный сценария или нет, соответственно время цикла увеличится на количество сценариев.
С меню также как с рецептами, в смысле, можно разбить на несколько участков, даже закольцевать можно эти участки и переходить на нужный участок при выборе рецепта(одновременно с выбором рецепта), всё! И не будешь знать, что существует другое меню(другие участки меню), пока не выберешь нужный рецепт и не перейдёшь на соответствующий участок меню, это я так думаю!
А сколько, интересно, может быть максимальный цикл? Секунду? ))
Думаю, такая программа просто не влезет. ;-)
Проект и надо прикреплять (добавить файл в расширенном режитме), и подробно описать всё, что должно быть в проекте.
Тут Сергей0308 выкладывал возможное решение на ПЗУ https://owen.ru/forum/showthread.php...&page=287#2867
https://owen.ru/forum/showthread.php?t=37112&page=4#39
RustyBlend если ваши сценарии предполагают одну и ту же программу, но с разными входными переменными, просто используйте макросы ППЗУ и соответственно выбор требуемых ячеек.
Ну предусмотреть замену переменных только через "СТОП" программы (установки)
Если только уставки разные, в смысле, температуры и времени, то мультиплексоры существуют разные, в смысле, для булевых переменных, целочисленных и с плавающей запятой.
В крайнем случае(если алгоритмы совсем разные) входа-выхода демультиплексировать-мультиплексировать! Проблема в чём, вроде широко известные элементы, Вы их найти не можете и не сообразите как сделать или у Вас они есть, затрудняетесь(не знаете как) применить? А, читать справку, это не ваше, в смысле, не для того Вас мать с отцом растили?!
Разные сценарии реализовать не проблема, а вот в меню скрыть ненужные пункты не получится
А вообще, что значит разные режимы работы?
Если для каждого сценария сделать отдельные экраны, в смысле, специально их не пересекать, то и о существовании другого меню можно не узнать пока не перейдёте туда по активации необходимого алгоритма, уже писал об этом Вам в одной из тем, непонятно зачем упорствовать, меню для каждого сценария можно даже закольцевать!
Я же предлагал создавать отдельные экраны для разных сценариев, тогда и не придётся скрывать отдельные пункты меню(строки).
Товарищ вроде подробно объяснил, в смысле, задать начало(координату) по оси икс 16 или более, но я не хочу быть посредником, можно же к нему напрямую и обратится, в смысле, я этого не предлагал, обращайтесь к тому, кто это предлагал!
Мне кажется мой вариант предпочтительным, в смысле он проще, его легче сделать и он более универсален.
Вы, как я понимаю, легких путей не ищите?
Не пинайте меня сильно, я только начал осваивать программирование контроллеров и это мой первый проект в принципе. Много не ясно пока, куча нюансов. Сценарии похожи, но есть отличия в количестве используемых переменных, последовательности выполнения, контроля состояния...
Я думаю в моем случае это не нужно. По сути мне нужен выбор текущего режима (сценария), выбор уставок для термостатирования в каждом из режимов и таймингов для отладки системы. То есть 3,4 экрана мне будет достаточно. При том что основное управление: выбор сценария, планируется с панели управления системы "умный дом".
RustyBlend ну если у вас программа запущена и идет процесс, а вы ей на лету поменяете уставки, может что-то неудачно произойти. Следовательно в программе необходимо предусмотреть, что уставки можно поменять только когда вы остановите установку, дождетесь завершения работы предыдущего цикла и так далее...
Организуйте такую штуку:
Вложение 66313
Команды включения режима могут быть постоянными или импульсными.
В результате получите переменную Режим, значение которой будет соответствовать номеру одного из режимов. Переменную Режим можно сделать энергонезависимой.
В зависимости от значения переменной Режим организуйте управление и индикацию на экране.
А просто два экрана, нельзя написать, любите Вы всё усложнять.
Создаёте целочисленную переменную, типа "режим" или "сценарий", можете как-то по своему обозвать, по заморочестей!
Выводите в комбобокс, например: 0 - 1 режим; 1 - 2 режим; 2 - 3 режим, у Вас же три режима(если не ошибаюсь), впрочем это не важно, будь их хоть 100, в смысле, подписывайте так, чтобы вам понятно было, далее по этой переменной осуществляем переход на нужный(соответствующий заданному значению) экран, эту переменную с комбобоксом помещаем на все экраны и делаем энергонезависимой, чтобы сохранялись последние настройки режима работы при выключении ПР. Как формировать короткий импульс для перехода на экран я много раз выкладывал, думаю Вам это не нужно, в смысле сами знаете(сообразите), всё!
Вот пример реализации трех режимов. При смене режима применяются соответствующие уставки и при изменении общей уставки, соответственно перезаписывается уставка текущего режима
Не нашёл двух экранов, в смысле, нет экрана, чтобы его можно было скрыть в одном из режимов работы!
Может Вы с внешних кнопок хотите менять режимы работы, когда-то такое делал:
Вложение 66316
Там и короткий импульс формируется для перехода, но я обычно увеличиваю до 255 мс, на всякий случай!
Вот для вашего тестового проекта сделал для каждого режима по три экрана, при активации одного из режимов будет переход на первый экран группы, дальнейшая навигация осуществляется кнопками вверх-вниз путём их удержания, но в пределах этой группы экранов! В группу экранов для другого режима переход только при его активации, в смысле, как Вы хотели меню(группу экранов) для своего режима Вы можете просматривать как угодно, я даже закольцевал экраны для каждого из режимов, но меню другого режима Вы не видите, даже не знаете о его существовании пока туда не перейдёте по активации другого режима:
Вложение 66320
Ну Слава Богу, с экранами разобрались!
Я бы сказал не группу, а подгруппу, так как группы Овен уже обозначил!
Если переменную хотите скрыть на экране, уже писал как: привязываете её начальную координату к целочисленной переменной и для скрытия назначаете значение переменной "16" или более, всё - переменной нет на экране!
Подобным образом бегущую строку делали, только значение переменной(координата) меняется и этот эффект проявляется!
В смысле, посмотрите проекты с бегущей строкой, мне так кажется Вы затрудняетесь привязать начальные координаты по оси икс к переменной, иначе, в принципе не понятно, какие могут быть проблемы?!
Вложение 66327
Спасибо вам большое! Вы подтвердили что я двигаюсь в правильном направлении, но я маленько пошел из за своей не опытности по более сложному пути. У меня режим переводиться в bool и записывается в свою переменную. Буду оптимизировать... А вообще по вашему мнению, подобные решения насколько отказоустойчивы в исполнении на ПР в сравнении с исполнением на ПЛК (я имею ввиду языки программирования)? И еще в вашем примере не будет таких проблем о которых писал выше melky (нужно промежуточное состояние "СТОП" при переключении режимов)?
Я просто подумал, что на ПЛК с помощью использования другого языка или комбинацией языков можно сделать "много режимность" более красиво и правильно. Я предполагал на ПЛК такую схему: Делаются отдельно режимы (нужная нам логика для каждого режима), далее делаем подпрограмму по выбору режимов, которая в зависимости от выбранного делает "активным" выбранный режим (запускается заложенная в режим логика), а остальные стоят в "неактивном" состоянии (не используют процессор и память).
Если ПР по количеству и типу входов/выходов, по быстродействию, по объему памяти, по количеству и типу сетевых интерфейсов подходит под вашу задачу, то какая разница что и как будет использовать процессорное время и ресурсы
Успокоили....:) Вопрос не по теме. В вашем примере управление режимами с кнопок происходит через фиксацию, а как сделать переключение без фиксации? И еще нужна цикличность или разрешение переключения в определенной последовательности режимов (то есть включение режимов должно происходить строго по порядку 1,2,3 и нельзя переходить из режима 2 в 1 или 3 в 2)?
Я же написал, что команды переключения могут быть в виде одиночного импульса.
Можете ограничить возможности переключения, пропустив команду переключения через блок "И", например, в режим 3 только из режима 2:
(Команда переключения в режим 3) И (Текущий режим = 2)
И не советую использовать счётчик для переключения режимов - это вы сейчас думаете, что ВСЕ режимы у вас идут последовательно, завтра вы придёте к тому, например, что необходим ещё один режим - авария, и перейти в него нужно из ЛЮБОГО режима при неисправности