Просмотр полной версии : несколько программ на ПР200
ДмитрийТ69
05.12.2022, 16:39
Добрый день. Наверное немного глупый вопрос, но можно ли залить на одно реле несколько программ (сценариев) работы, и осуществлять их выбор через встроенную клавиатуру реле?
Нет, сама программа (одна) должна предполагать работу с несколькими сценариями, для ПР это достаточно сложно, но можно менять наборы переменных одной программы
Добрый день. Наверное немного глупый вопрос, но можно ли залить на одно реле несколько программ (сценариев) работы, и осуществлять их выбор через встроенную клавиатуру реле?
Можно. Надо просто рассматривать эти несколько сценариев как одну программу. И переключаться между ними с помощью переменной. Только непонятно - что такое "встроенная клавиатура реле".
Ну, несколько сценариев замутить можно, но, вот, если для каждого сценария нужно отдельное меню, то не получится - Овен, вроде планировал что-то такое, и в менеджере экранов есть группы, но они присутствуют в единственном экземпляре
Особенность ПР в том, что весь код залитый будет выполняться, не зависимо используется в текущий момент выбранный сценария или нет, соответственно время цикла увеличится на количество сценариев.
Сергей0308
05.12.2022, 21:32
Ну, несколько сценариев замутить можно, но, вот, если для каждого сценария нужно отдельное меню, то не получится - Овен, вроде планировал что-то такое, и в менеджере экранов есть группы, но они присутствуют в единственном экземпляре
С меню также как с рецептами, в смысле, можно разбить на несколько участков, даже закольцевать можно эти участки и переходить на нужный участок при выборе рецепта(одновременно с выбором рецепта), всё! И не будешь знать, что существует другое меню(другие участки меню), пока не выберешь нужный рецепт и не перейдёшь на соответствующий участок меню, это я так думаю!
Сергей0308
05.12.2022, 21:34
Особенность ПР в том, что весь код залитый будет выполняться, не зависимо используется в текущий момент выбранный сценария или нет, соответственно время цикла увеличится на количество сценариев.
Придётся это компенсировать применением полинома Жегалкина, можно существенно упростить алгоритм, в смысле, количество элементов!
А сколько, интересно, может быть максимальный цикл? Секунду? ))
Думаю, такая программа просто не влезет. ;-)
kondor3000
04.03.2023, 16:45
Всем здравствуйте. Вот у меня похожая дилемма... Есть проект в нем нужно реализовать 3 сценария (режима работы) которые управляют одинаковыми каналами выхода. Режимы должны выбираться 3 кнопками, выбором с дисплея (с расширенным управлением: уставка температуры, таймеры исполнения 1 сценария из 3, тайминги и т.д) контроллера а также дистанционно через rs485. Может кто ни будь из гуру подскажет или направит на правильный путь решения данной задачи (примером)? От решения на ПЛК я не отказываюсь, но сценарии по сути своей не сложные и хотелось бы решить задачу малой кровью. Если нужно понимание о чем идет речь прикреплю ссылки на проект.
Проект и надо прикреплять (добавить файл в расширенном режитме), и подробно описать всё, что должно быть в проекте.
Тут Сергей0308 выкладывал возможное решение на ПЗУ https://owen.ru/forum/showthread.php?t=26216&page=287#2867
https://owen.ru/forum/showthread.php?t=37112&page=4#39
RustyBlend если ваши сценарии предполагают одну и ту же программу, но с разными входными переменными, просто используйте макросы ППЗУ и соответственно выбор требуемых ячеек.
Ну предусмотреть замену переменных только через "СТОП" программы (установки)
Сергей0308
04.03.2023, 17:24
Если только уставки разные, в смысле, температуры и времени, то мультиплексоры существуют разные, в смысле, для булевых переменных, целочисленных и с плавающей запятой.
В крайнем случае(если алгоритмы совсем разные) входа-выхода демультиплексировать-мультиплексировать! Проблема в чём, вроде широко известные элементы, Вы их найти не можете и не сообразите как сделать или у Вас они есть, затрудняетесь(не знаете как) применить? А, читать справку, это не ваше, в смысле, не для того Вас мать с отцом растили?!
Разные сценарии реализовать не проблема, а вот в меню скрыть ненужные пункты не получится
А вообще, что значит разные режимы работы?
Сергей0308
04.03.2023, 17:35
Разные сценарии реализовать не проблема, а вот в меню скрыть ненужные пункты не получится
Если для каждого сценария сделать отдельные экраны, в смысле, специально их не пересекать, то и о существовании другого меню можно не узнать пока не перейдёте туда по активации необходимого алгоритма, уже писал об этом Вам в одной из тем, непонятно зачем упорствовать, меню для каждого сценария можно даже закольцевать!
Разные сценарии реализовать не проблема, а вот в меню скрыть ненужные пункты не получится
А вообще, что значит разные режимы работы?
На самом деле и пунктами меню тоже можно управлять - координаты положения элементов на экране можно задавать переменными
Сергей0308
04.03.2023, 17:45
На самом деле и пунктами меню тоже можно управлять - координаты положения элементов на экране можно задавать переменными
Это если меню было бы ограничено одним экраном, у нас никто не запрещает создать для каждого сценария свои экраны, чтобы исключить ненужные для данного сценария!
Это если меню было бы ограничено одним экраном, у нас никто не запрещает создать для каждого сценария свои экраны, чтобы исключить ненужные для данного сценария!
Подскажите тогда, как мне сделать. Есть два варианта одной программы. У первой программы есть 2 пункта меню - Настройки и HMI, у другой только Настройки. Как мне для второй программы скрыть второй пункт меню?
Сергей0308
04.03.2023, 21:36
Подскажите тогда, как мне сделать. Есть два варианта одной программы. У первой программы есть 2 пункта меню - Настройки и HMI, у другой только Настройки. Как мне для второй программы скрыть второй пункт меню?
Я же предлагал создавать отдельные экраны для разных сценариев, тогда и не придётся скрывать отдельные пункты меню(строки).
Товарищ вроде подробно объяснил, в смысле, задать начало(координату) по оси икс 16 или более, но я не хочу быть посредником, можно же к нему напрямую и обратится, в смысле, я этого не предлагал, обращайтесь к тому, кто это предлагал!
Мне кажется мой вариант предпочтительным, в смысле он проще, его легче сделать и он более универсален.
Вы, как я понимаю, легких путей не ищите?
RustyBlend
05.03.2023, 10:19
Если только уставки разные, в смысле, температуры и времени, то мультиплексоры существуют разные, в смысле, для булевых переменных, целочисленных и с плавающей запятой.
В крайнем случае(если алгоритмы совсем разные) входа-выхода демультиплексировать-мультиплексировать! Проблема в чём, вроде широко известные элементы, Вы их найти не можете и не сообразите как сделать или у Вас они есть, затрудняетесь(не знаете как) применить? А, читать справку, это не ваше, в смысле, не для того Вас мать с отцом растили?!
Не пинайте меня сильно, я только начал осваивать программирование контроллеров и это мой первый проект в принципе. Много не ясно пока, куча нюансов. Сценарии похожи, но есть отличия в количестве используемых переменных, последовательности выполнения, контроля состояния...
RustyBlend
05.03.2023, 10:22
RustyBlend если ваши сценарии предполагают одну и ту же программу, но с разными входными переменными, просто используйте макросы ППЗУ и соответственно выбор требуемых ячеек.
Ну предусмотреть замену переменных только через "СТОП" программы (установки)
Не совсем понял про "СТОП", не могли бы вы пояснить примером?
RustyBlend
05.03.2023, 10:31
Разные сценарии реализовать не проблема, а вот в меню скрыть ненужные пункты не получится
А вообще, что значит разные режимы работы?
Я думаю в моем случае это не нужно. По сути мне нужен выбор текущего режима (сценария), выбор уставок для термостатирования в каждом из режимов и таймингов для отладки системы. То есть 3,4 экрана мне будет достаточно. При том что основное управление: выбор сценария, планируется с панели управления системы "умный дом".
RustyBlend ну если у вас программа запущена и идет процесс, а вы ей на лету поменяете уставки, может что-то неудачно произойти. Следовательно в программе необходимо предусмотреть, что уставки можно поменять только когда вы остановите установку, дождетесь завершения работы предыдущего цикла и так далее...
Я же предлагал создавать отдельные экраны для разных сценариев, тогда и не придётся скрывать отдельные пункты меню(строки).
Товарищ вроде подробно объяснил, в смысле, задать начало(координату) по оси икс 16 или более, но я не хочу быть посредником, можно же к нему напрямую и обратится, в смысле, я этого не предлагал, обращайтесь к тому, кто это предлагал!
Мне кажется мой вариант предпочтительным, в смысле он проще, его легче сделать и он более универсален.
Вы, как я понимаю, легких путей не ищите?
Хорошо, у меня два экрана: Настройки и HMI. Как программно убрать экран HMI?
Хорошо, у меня два экрана: Настройки и HMI. Как программно убрать экран HMI?
Что такое HMI
Не пинайте меня сильно, я только начал осваивать программирование контроллеров и это мой первый проект в принципе. Много не ясно пока, куча нюансов. Сценарии похожи, но есть отличия в количестве используемых переменных, последовательности выполнения, контроля состояния...
Организуйте такую штуку:
66313
Команды включения режима могут быть постоянными или импульсными.
В результате получите переменную Режим, значение которой будет соответствовать номеру одного из режимов. Переменную Режим можно сделать энергонезависимой.
В зависимости от значения переменной Режим организуйте управление и индикацию на экране.
Сергей0308
05.03.2023, 13:09
Хорошо, у меня два экрана: Настройки и HMI. Как программно убрать экран HMI?
А просто два экрана, нельзя написать, любите Вы всё усложнять.
Создаёте целочисленную переменную, типа "режим" или "сценарий", можете как-то по своему обозвать, по заморочестей!
Выводите в комбобокс, например: 0 - 1 режим; 1 - 2 режим; 2 - 3 режим, у Вас же три режима(если не ошибаюсь), впрочем это не важно, будь их хоть 100, в смысле, подписывайте так, чтобы вам понятно было, далее по этой переменной осуществляем переход на нужный(соответствующий заданному значению) экран, эту переменную с комбобоксом помещаем на все экраны и делаем энергонезависимой, чтобы сохранялись последние настройки режима работы при выключении ПР. Как формировать короткий импульс для перехода на экран я много раз выкладывал, думаю Вам это не нужно, в смысле сами знаете(сообразите), всё!
Вот пример реализации трех режимов. При смене режима применяются соответствующие уставки и при изменении общей уставки, соответственно перезаписывается уставка текущего режима
Что такое HMI
Панель оператора
Сергей0308
05.03.2023, 14:33
Вот пример реализации трех режимов. При смене режима применяются соответствующие уставки и при изменении общей уставки, соответственно перезаписывается уставка текущего режима
Не нашёл двух экранов, в смысле, нет экрана, чтобы его можно было скрыть в одном из режимов работы!
Может Вы с внешних кнопок хотите менять режимы работы, когда-то такое делал:
66316
Там и короткий импульс формируется для перехода, но я обычно увеличиваю до 255 мс, на всякий случай!
Вот для вашего тестового проекта сделал для каждого режима по три экрана, при активации одного из режимов будет переход на первый экран группы, дальнейшая навигация осуществляется кнопками вверх-вниз путём их удержания, но в пределах этой группы экранов! В группу экранов для другого режима переход только при его активации, в смысле, как Вы хотели меню(группу экранов) для своего режима Вы можете просматривать как угодно, я даже закольцевал экраны для каждого из режимов, но меню другого режима Вы не видите, даже не знаете о его существовании пока туда не перейдёте по активации другого режима:
66320
Вот пример реализации трех режимов. При смене режима применяются соответствующие уставки и при изменении общей уставки, соответственно перезаписывается уставка текущего режима
Действительно, спрашиваете про скрытие одного из двух экранов, но пока экран в проекте только один.
Как пример: в режимах 1 и 2 есть переход к меню, а в режиме 3 - нет
Не нашёл двух экранов, в смысле, нет экрана, чтобы его можно было скрыть в одном из режимов работы!
Действительно, спрашиваете про скрытие одного из двух экранов, но пока экран в проекте только один.
Про скрытие экрана я спрашивал для себя.
Но фишку я понял - просто надо создать несколько групп экранов и в зависимости от режима переходить на нужную группу
Сергей0308
05.03.2023, 16:23
Про скрытие экрана я спрашивал для себя.
Но фишку я понял - просто надо создать несколько групп экранов и в зависимости от режима переходить на нужную группу
Ну Слава Богу, с экранами разобрались!
Я бы сказал не группу, а подгруппу, так как группы Овен уже обозначил!
Если переменную хотите скрыть на экране, уже писал как: привязываете её начальную координату к целочисленной переменной и для скрытия назначаете значение переменной "16" или более, всё - переменной нет на экране!
Подобным образом бегущую строку делали, только значение переменной(координата) меняется и этот эффект проявляется!
В смысле, посмотрите проекты с бегущей строкой, мне так кажется Вы затрудняетесь привязать начальные координаты по оси икс к переменной, иначе, в принципе не понятно, какие могут быть проблемы?!
66327
RustyBlend
05.03.2023, 16:37
Действительно, спрашиваете про скрытие одного из двух экранов, но пока экран в проекте только один.
Как пример: в режимах 1 и 2 есть переход к меню, а в режиме 3 - нет
Спасибо вам большое! Вы подтвердили что я двигаюсь в правильном направлении, но я маленько пошел из за своей не опытности по более сложному пути. У меня режим переводиться в bool и записывается в свою переменную. Буду оптимизировать... А вообще по вашему мнению, подобные решения насколько отказоустойчивы в исполнении на ПР в сравнении с исполнением на ПЛК (я имею ввиду языки программирования)? И еще в вашем примере не будет таких проблем о которых писал выше melky (нужно промежуточное состояние "СТОП" при переключении режимов)?
Спасибо вам большое! Вы подтвердили что я двигаюсь в правильном направлении, но я маленько пошел из за своей не опытности по более сложному пути. У меня режим переводиться в bool и записывается в свою переменную. Буду оптимизировать... А вообще по вашему мнению, подобные решения насколько отказоустойчивы в исполнении на ПР в сравнении с исполнением на ПЛК (я имею ввиду языки программирования)? И еще в вашем примере не будет таких проблем о которых писал выше melky (нужно промежуточное состояние "СТОП" при переключении режимов)?
А какая разница, ПЛК или ПР - и то и то железки. По поводу проблем - вы лучше знаете тех. процесс и как на него влияют уставки. Но можно сделать доп условие - при переключении режима сначала дожидаемся благоприятных условий и только потом запускаем процесс
RustyBlend
05.03.2023, 17:29
А какая разница, ПЛК или ПР - и то и то железки. По поводу проблем - вы лучше знаете тех. процесс и как на него влияют уставки. Но можно сделать доп условие - при переключении режима сначала дожидаемся благоприятных условий и только потом запускаем процесс
Я просто подумал, что на ПЛК с помощью использования другого языка или комбинацией языков можно сделать "много режимность" более красиво и правильно. Я предполагал на ПЛК такую схему: Делаются отдельно режимы (нужная нам логика для каждого режима), далее делаем подпрограмму по выбору режимов, которая в зависимости от выбранного делает "активным" выбранный режим (запускается заложенная в режим логика), а остальные стоят в "неактивном" состоянии (не используют процессор и память).
Если ПР по количеству и типу входов/выходов, по быстродействию, по объему памяти, по количеству и типу сетевых интерфейсов подходит под вашу задачу, то какая разница что и как будет использовать процессорное время и ресурсы
Спасибо вам большое! Вы подтвердили что я двигаюсь в правильном направлении, но я маленько пошел из за своей не опытности по более сложному пути. У меня режим переводиться в bool и записывается в свою переменную. Буду оптимизировать... А вообще по вашему мнению, подобные решения насколько отказоустойчивы в исполнении на ПР в сравнении с исполнением на ПЛК (я имею ввиду языки программирования)? И еще в вашем примере не будет таких проблем о которых писал выше melky (нужно промежуточное состояние "СТОП" при переключении режимов)?
Как уже написали, проблем у ПР при переключении нет, проблемы могут возникнуть у техпроцесса управляемого ей.
Я просто подумал, что на ПЛК с помощью использования другого языка или комбинацией языков можно сделать "много режимность" более красиво и правильно. Я предполагал на ПЛК такую схему: Делаются отдельно режимы (нужная нам логика для каждого режима), далее делаем подпрограмму по выбору режимов, которая в зависимости от выбранного делает "активным" выбранный режим (запускается заложенная в режим логика), а остальные стоят в "неактивном" состоянии (не используют процессор и память).
Вы слишком сильно переживаете за использование процессора и памяти. Пусть за них переживает OWEN
RustyBlend
05.03.2023, 21:09
Как уже написали, проблем у ПР при переключении нет, проблемы могут возникнуть у техпроцесса управляемого ей.
Вы слишком сильно переживаете за использование процессора и памяти. Пусть за них переживает OWEN
Успокоили....:) Вопрос не по теме. В вашем примере управление режимами с кнопок происходит через фиксацию, а как сделать переключение без фиксации? И еще нужна цикличность или разрешение переключения в определенной последовательности режимов (то есть включение режимов должно происходить строго по порядку 1,2,3 и нельзя переходить из режима 2 в 1 или 3 в 2)?
Сергей0308
05.03.2023, 21:18
Успокоили....:) Вопрос не по теме. В вашем примере управление режимами с кнопок происходит через фиксацию, а как сделать переключение без фиксации? И еще нужна цикличность или разрешение переключения в определенной последовательности режимов (то есть включение режимов должно происходить строго по порядку 1,2,3 и нельзя переходить из режима 2 в 1 или 3 в 2)?
Ставите кольцевой, инкрементный счётчик необходимого диапазона, всё!
Насчёт кольцевого не уверен, может быть и не кольцевой, а со сбросом(предустановкой) и ограничением диапазона, в смысле, не до конца ясны хотелки!
Успокоили....:) Вопрос не по теме. В вашем примере управление режимами с кнопок происходит через фиксацию, а как сделать переключение без фиксации? И еще нужна цикличность или разрешение переключения в определенной последовательности режимов (то есть включение режимов должно происходить строго по порядку 1,2,3 и нельзя переходить из режима 2 в 1 или 3 в 2)?
Я же написал, что команды переключения могут быть в виде одиночного импульса.
Можете ограничить возможности переключения, пропустив команду переключения через блок "И", например, в режим 3 только из режима 2:
(Команда переключения в режим 3) И (Текущий режим = 2)
И не советую использовать счётчик для переключения режимов - это вы сейчас думаете, что ВСЕ режимы у вас идут последовательно, завтра вы придёте к тому, например, что необходим ещё один режим - авария, и перейти в него нужно из ЛЮБОГО режима при неисправности
Сергей0308
06.03.2023, 21:08
Я просто подумал, что на ПЛК с помощью использования другого языка или комбинацией языков можно сделать "много режимность" более красиво и правильно. Я предполагал на ПЛК такую схему: Делаются отдельно режимы (нужная нам логика для каждого режима), далее делаем подпрограмму по выбору режимов, которая в зависимости от выбранного делает "активным" выбранный режим (запускается заложенная в режим логика), а остальные стоят в "неактивном" состоянии (не используют процессор и память).
Красивость не зависит от вида танца(вальс, танго), а только от умения танцора, это если образно выражаться! Главное - чтобы ничего не мешало!
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot