PDA

Просмотр полной версии : разные вопросы новичка



Страницы : 1 2 3 [4] 5 6 7 8 9 10 11 12 13 14 15

Aviator_VZh
27.08.2018, 15:22
Aviator_VZh еще раз, не надо в макрос вводить и выводить ничего, переменная должна быть снаружи макроса и являться как входной так и выходной, если это возможно. Идея именно в этом.

Я это прекрасно понимаю. Давайте начнем с начала. Была задача из четырех энергонезависимых переменных с диапазоном 0-255 сделать одну.
Вот её реализация, спасибо Сергей0308

38487

Я пытаюсь сделать макрос

38486

Не работает (

melky
27.08.2018, 16:27
Вопрос был выше, работа только с экраном или еще верхний уровень ?

Aviator_VZh
27.08.2018, 17:24
Пока только экраны. Если возникнет задача с верхним уровнем - буду разбираться отдельно.

melky
27.08.2018, 23:30
Все равно не понимаю логики, вы распаковываете одну 32-х битную переменную в программе на ЧЕТЫРЕ 32-х битных переменных в программе для отображения и ввода с экрана. Итого ПЯТЬ переменных съели и это не считая дополнительных FBD для реализации. СМЫСЛ ?

Сергей0308
28.08.2018, 01:46
Все равно не понимаю логики, вы распаковываете одну 32-х битную переменную в программе на ЧЕТЫРЕ 32-х битных переменных в программе для отображения и ввода с экрана. Итого ПЯТЬ переменных съели и это не считая дополнительных FBD для реализации. СМЫСЛ ?

Объём энергонезависимой памяти ограничен, в данном случае позволяет использовать в четыре раза больше переменных(8 битных), диапазона 0-255 с функцией энергонезависимости! Что Вам не понятно, что такое в четыре раза??? И я программу готовую выложил, для демонстрации, Вы просто попробуйте, может тогда Вам станет понятней?! Короче, здесь разбивается одна 32 битная энергонезависимая переменная на 4 байта, четыре 8 битных переменных диапазона 0-255!
Или зайдём с другого конца: вам нужна энергонезависимая переменная диапазона 0-255, В ОЛ переменные 32 битные и хотя вам достаточно 8 бит, вы занимаете все 32 бита, то есть используете не более 25% ресурсов, остальные стоят мёртвым грузом(не используются), может так будет понятней!
К слову такое расточительство преобладает во Вселенной, например, если не ошибаюсь на Солнце(на всех подобных звёздах) используется около 2% топлива на главной последовательности(это когда из водорода гелий получается), что находится в центре звезды, так что 25% по звёздным меркам это очень много! https://ru.wikipedia.org/wiki/Звёздная_эволюция https://indicator.ru/article/2018/03/11/zhizn-i-smert-zvezd/

melky
28.08.2018, 09:11
Сергей0308 да что вы говорите, а переменные для экрана и редактирования уставок с него какой будут иметь тип ? и сколько будут занимать бит ?
Скачал посмотреть, интересно получилось, надо будет на ПР-ке погонять...

Ревака Юрий
28.08.2018, 09:20
Сергей0308 да что вы говорите, а переменные для экрана и редактирования уставок с него какой будут иметь тип ? и сколько будут занимать бит ?
Если переменную для экрана предварительно вычитать из энергонезависимой переменной и преобразовать по маске, то все должно сработать, у меня в одном устройстве, так решается задача упаковки в 32 разрядное число 5 или 6 переменных, главное уложиться в диапазон для нужных переменных, при этом все они энергонезависимые, таких групп 10, итого вместо 60 переменных, используется 10 полноценно используемых в памяти.

Сергей0308
28.08.2018, 09:22
Сергей0308 да что вы говорите, а переменные для экрана и редактирования уставок с него какой будут иметь тип ? и сколько будут занимать бит ?

Зачем Вы на другую тему перескакиваете? Ну если сильно хотите можно поговорить о переменных, что выводятся и редактируются с экрана: они тоже занимают 32 бита, но они не энергонезависимые и при включении при первом цикле они перезаписываются значением из энергонезависимой переменной, а так как диапазон этих переменных 0-255, то хватает одной энергонезависимой переменной для 4 таких диапазонов! Вы лучше попробуйте на практике, тогда и вопросов не будет!
Можно и побитно писать-читать как Юрий предлагает, но наверно проще побайтно!

melky
28.08.2018, 09:30
Да, я уже понял идею, посмотрев программу Сергея... просто руки дойдут до ПР-ки опробую. Экран то на самом деле пол дела, еще надо Scada научить запаковывать часть неизменяемых переменных с одной изменяемой например и послать обратно в ПР, чтобы те переменные, которые мы не меняем в 0 не превратились.
В принципе тоже решаемо, зависит от возможностей Scada.

Ревака Юрий, а, ну еще из-за вашего глюка с Modbus переменными и возможностью задавать начальные значения тоже придется дополнительно разделять переменные, что приводит к увеличению переменных в два раза и необходимости использовать дополнительно FBD в программе. Не смотрел еще в новых версиях, вылечили или все по старому и конь не валялся ?

Ну или как простой вариант, после запуска ПР после прошивки необходимо все переменные отредактировать нужными значениями да не ошибиться, что есть что и какие значения должны быть...

Aviator_VZh
28.08.2018, 10:06
Но вопрос остался открытым. Как эту программу запихнуть в макрос? У меня не получается. Это вообще возможно?

Сергей0308
28.08.2018, 10:23
Но вопрос остался открытым. Как эту программу запихнуть в макрос? У меня не получается. Это вообще возможно?

Какие здесь сложности? Ранее в макросах энергонезависимую переменную создавал - никаких трудностей не было или Вы ещё хотите по команде восстанавливать значения по умолчанию? Так добавьте в макрос дискретный вход и константу со значениями по умолчанию!
Как-то примерно так:

38501

В макрос сами засовывайте, я обычно решаю проблемы, а не создаю!

Ревака Юрий
28.08.2018, 11:18
Не смотрел еще в новых версиях, вылечили или все по старому и конь не валялся ?


Конь не валялся, по причине сложности в реализации, подробностей не знаю.

melky
28.08.2018, 11:24
Ревака Юрий а почему работало на версиях 1.8 и ПР114 ? Это очень важная вещь как раз в рамках дублирования прошивки без ОЛ, зашил заказчику ПР и отдал.

Чтобы сейчас добиться такого эффекта необходимо применять макросы IChange, FChange что в рамках программирования ПР является откровенным костылем, учитывая еще дублирование переменных.

Ревака Юрий
28.08.2018, 12:18
Ревака Юрий а почему работало на версиях 1.8 и ПР114 ? Это очень важная вещь как раз в рамках дублирования прошивки без ОЛ, зашил заказчику ПР и отдал.

Чтобы сейчас добиться такого эффекта необходимо применять макросы IChange, FChange что в рамках программирования ПР является откровенным костылем, учитывая еще дублирование переменных.

Видимо работало до определенного момента, потом появилась проблема и опцию заморозили.

Aviator_VZh
28.08.2018, 15:35
Какие здесь сложности? Ранее в макросах энергонезависимую переменную создавал - никаких трудностей не было или Вы ещё хотите по команде восстанавливать значения по умолчанию? Так добавьте в макрос дискретный вход и константу со значениями по умолчанию!
Как-то примерно так:

38501

В макрос сами засовывайте, я обычно решаю проблемы, а не создаю!


Выкладыаю рабочее решение

38507

38508

Для работы макроса в свойствах выходных переменных необходимо включить запись в конце цикла. В этом и заключалась проблема упаковки решения в макрос.
Выкладываю отдельно макрос и проект. Загрузить на форум удалось только в архиве.

Сергей0308
29.08.2018, 00:45
Выкладыаю рабочее решение

38507

38508

Для работы макроса в свойствах выходных переменных необходимо включить запись в конце цикла. В этом и заключалась проблема упаковки решения в макрос.
Выкладываю отдельно макрос и проект. Загрузить на форум удалось только в архиве.

А зачем логику усложнили, что так не получается как я предлагал:

38521

Aviator_VZh
29.08.2018, 00:53
У меня так не заработало.

Сергей0308
29.08.2018, 05:22
У меня так не заработало.

У меня получилось обойтись без "селов" на каждую переменную:


38525


Эксперимент наше всё(с Овеном иначе не получается!) и со свойствами переменных не всё понятно, я имею ввиду запись в конце цикла, для одних переменных(не энергонезависимых) она появляется, для других нет, какая логика, пока не пойму!
В справке ничего об этом не нашёл, может кто об этом чего знает?

Aviator_VZh
29.08.2018, 11:39
А чем "сел" плох? Решение без "селов" ест ПЗУ 1472, а с "селами" 196.

petera
29.08.2018, 11:46
Эксперимент наше всё(с Овеном иначе не получается!) и со свойствами переменных не всё понятно, я имею ввиду запись в конце цикла, для одних переменных(не энергонезависимых) она появляется, для других нет, какая логика, пока не пойму!
В справке ничего об этом не нашёл, может кто об этом чего знает?

Логика простая - если переменная используется на экранах, то у нее появляется свойство "Запись в конце цикла"

Сергей0308
29.08.2018, 12:32
А чем "сел" плох? Решение без "селов" ест ПЗУ 1472, а с "селами" 196.

Немного проще схема получается:

38564

По ресурсам, вполне сравнимо, почти тоже самое, Вы наверно не те проекты сравниваете, там упаковывается-распаковывается другим способом, тогда логично сравнить тоже самое, только без "селов"!

Сергей0308
29.08.2018, 12:38
Логика простая - если переменная используется на экранах, то у нее появляется свойство "Запись в конце цикла"

Спасибо, прояснили немного! В последних 2 проектах только благодаря записи в конце цикла и работает, то есть переменные начинают работать по-разному, здесь боюсь мне ещё предстоит узнать всю разницу в работе, пока не очень и понятно!

Aviator_VZh
29.08.2018, 14:02
Немного проще схема получается:

38532

По ресурсам, вполне сравнимо, почти тоже самое, Вы наверно не те проекты сравниваете, там упаковывается-распаковывается другим способом, тогда логично сравнить тоже самое, только без "селов"!

Да, рабочее решение и ест меньше ресурсов. Переделал макрос. Думаю его можно выложить в соответствующей теме. Он будет интересен многим.

Aviator_VZh
31.08.2018, 17:09
При импорте макроса произошла ошибка. Выкладываю рабочий вариант. Внутри макроса есть краткое описание.
Макрос позволяет из четырех энергонезависимых переменных с диапазоном 0-255 сделать одну.

Aviator_VZh
31.08.2018, 18:31
И в догонку аналогичный макрос, но с возможностью сохранения пользовательских уставок. Потребление памяти экономится уже только в 2 раза. В архиве макрос и проект, поясняющий применение.

И возник вопрос. Как упорядочить выбор изменяемых уставок на экране. Раньше проходил фокус с последовательным копированием и вставкой. В этом проекте не удалось. Может дело в версии ОЛ? Кто-нибудь знает надежный способ?

Ревака Юрий
31.08.2018, 19:23
И в догонку аналогичный макрос, но с возможностью сохранения пользовательских уставок. Потребление памяти экономится уже только в 2 раза. В архиве макрос и проект, поясняющий применение.

И возник вопрос. Как упорядочить выбор изменяемых уставок на экране. Раньше проходил фокус с последовательным копированием и вставкой. В этом проекте не удалось. Может дело в версии ОЛ? Кто-нибудь знает надежный способ?

Насколько я знаю, последовательность выбора зависит он порядка добавления на экран, или у Вас это не работает?

Aviator_VZh
31.08.2018, 21:31
Насколько я знаю, последовательность выбора зависит он порядка добавления на экран, или у Вас это не работает?

Давно я не сталкивался с этим вопросом. Раньше да, или порядком добавления на экран, или, если нужно исправить порядок на готовом экране, копирование через Shift и вставкой. Но в данном проекте у меня никак не получилось. Может посмотрите и подскажите в чем моя ошибка. А то, честно говоря, становится страшно, что не смогу этого сделать в реальном проекте.

Сергей0308
01.09.2018, 09:45
Да, рабочее решение и ест меньше ресурсов. Переделал макрос. Думаю его можно выложить в соответствующей теме. Он будет интересен многим.

Что бы энергонезависимую память занять, надо 254 целочисленных переменных, неужели у вас столько? И ещё заметил, если добавляешь булеву энергонезависимую переменную(входной и выходной блок переменной), то занимается 1 байт памяти! Наверно в целях экономии нужно сделать аналогично, то есть сохранять побитно в целочисленной переменной:


38581

Я уже такое выкладывал в этой теме, короче это мой вариант решения, могут быть и другие(ранее выкладывал решения, без записи в конце цикла), что позволит использовать в 8 раз больше булевых энергонезависимых переменных:

Aviator_VZh
01.09.2018, 11:35
Да, я тоже грешил на булевые переменные и думал, что с ними придется разбираться, но руки пока не дошли. Надеялся, что решение с int поможет снять вопрос с памятью.

Сергей0308
01.09.2018, 12:00
Да, я тоже грешил на булевые переменные и думал, что с ними придется разбираться, но руки пока не дошли. Надеялся, что решение с int поможет снять вопрос с памятью.

Ну, если у Вас в проекте присутствуют энергонезависимые булевы переменные, то несомненно можно сократить объём энергонезависимой занимаемой памяти в 8 раз!

Diminator
16.09.2018, 23:37
Подскажите правильный пример изменения переменной. Есть управление через вход и индикация/управление с дисплея. Необходимо изменить переменную при срабатывании входа и наоборот, при изменении переменной на дисплее выход должен отключиться до следующего изменения любого из входов.
На дисплее "Насос1 - Выкл", вход 1 термостат управления. Выход 1 - Насос1. Срабатывает вход 1 на дисплее должно изменить на "Насос1 - Вкл", Выход 1 - Вкл. Меняю на дисплее Насос1 - Выкл, Выход 1 - Выкл

Aviator_VZh
17.09.2018, 09:18
Как-то так.

38779

Макрос в Онлайн базе/Дискретные преобразования.
Переменная Out на экран и на выход.

jury_yamal
17.09.2018, 10:34
Добрый день.
Подскажите как сделать следующее:
1. При наличии импульса на дискретном входе надо включить на заданное время дискретный выход.
2. После отключения дискретного выхода нужно выдержать заданную паузу до следующего включения при этом не реагировать на сигнал на входе.
Проще говоря при срабатывании фотоэлемент посылает импульс, включаем нагрузку на 5 сек, после отработки включаем паузу на 3 сек (не реагируем на вход).
Накидал пример но может можно проще.
С уважением Юрий.

rovki
17.09.2018, 11:20
Добрый день.
Подскажите как сделать следующее:
1. При наличии импульса на дискретном входе надо включить на заданное время дискретный выход.
2. После отключения дискретного выхода нужно выдержать заданную паузу до следующего включения при этом не реагировать на сигнал на входе.
Проще говоря при срабатывании фотоэлемент посылает импульс, включаем нагрузку на 5 сек, после отработки включаем паузу на 3 сек (не реагируем на вход).
Накидал пример но может можно проще.
С уважением Юрий.

Как слышим ,так и пишим -38781

jury_yamal
17.09.2018, 14:10
Спасибо то что нужно!

Сергей0308
17.09.2018, 19:35
Мой вариант:

38786

Работает(перезапускается) по фронту, а не по уровню сигнала на входе, в вашем ТЗ это не оговорено! То есть, после окончания цикла(8 секунд) для перезапуска вход должен перейти из состояния "0" в состояние "1"! Если он постоянно находится в состоянии "1" - перезапуска(повторного включения выхода) не произойдёт!

jury_yamal
18.09.2018, 05:50
Спасибо и Вам!

Андрей Посохов
03.10.2018, 14:22
Если проект сделан в ОЛ 9.148 для платформы ПР200-200.2.2, то будет ли он грузиться в ПР200-220.22.2? Очень надо знать заранее, а проверить не могу.

Откроете проект в последней версии OL, сделаете смену целевой платформы в меню, и будет грузиться.

игорь68
07.10.2018, 03:58
Что то совсем запутался. ПР200.23.3.1.0 Есть три входа.на которых весят кнопки(NO). Нажал 1 кнопку(вход1)= сработал выход 1. Нажал кнопку 2(вход 2)+ сработал выход 2. Нажал кнопку 3 (вход 3) = сработал выход 3. Если нажата любая из 3х кнопок (например кнопка 1) то нажатие кнопок 2 и/или 3 не должны приводить к срабатыванию выходов 2 и 3. тоже самое и для кнопок номер 2 и номер 3. Нужна взаимная блокировка кнопок относительно нажатой любой "первой кнопки".

Сергей0308
07.10.2018, 05:36
Что то совсем запутался. ПР200.23.3.1.0 Есть три входа.на которых весят кнопки(NO). Нажал 1 кнопку(вход1)= сработал выход 1. Нажал кнопку 2(вход 2)+ сработал выход 2. Нажал кнопку 3 (вход 3) = сработал выход 3. Если нажата любая из 3х кнопок (например кнопка 1) то нажатие кнопок 2 и/или 3 не должны приводить к срабатыванию выходов 2 и 3. тоже самое и для кнопок номер 2 и номер 3. Нужна взаимная блокировка кнопок относительно нажатой любой "первой кнопки".

Что-то Вы в двух соснах блуждаете, здесь много вариантов, вот мой, с возможностью легкого увеличения числа входов до 32:

39041

И мне не понятно, при чём здесь модификация реле?

rovki
07.10.2018, 08:57
Что то совсем запутался. ПР200.23.3.1.0 Есть три входа.на которых весят кнопки(NO). Нажал 1 кнопку(вход1)= сработал выход 1. Нажал кнопку 2(вход 2)+ сработал выход 2. Нажал кнопку 3 (вход 3) = сработал выход 3. Если нажата любая из 3х кнопок (например кнопка 1) то нажатие кнопок 2 и/или 3 не должны приводить к срабатыванию выходов 2 и 3. тоже самое и для кнопок номер 2 и номер 3. Нужна взаимная блокировка кнопок относительно нажатой любой "первой кнопки".

Это игра - Кто первый ...

Что-то Вы в двух соснах блуждаете, здесь много вариантов, вот мой, с возможностью легкого увеличения числа входов до 32:

А не кто старше ;)

Сергей0308
07.10.2018, 09:39
Это игра - Кто первый ...

А не кто старше ;)

Я понял, что приоритет по меньшему номеру входа, если по более раннему времени нажатия, то вот не так давно макрос "очередь" выкладывал, он подходит для этой цели, в посте#333: http://www.owen.ru/forum/showthread.php?t=25068&page=34
Тогда беру свои слова обратно, это самый сложный мой макрос, хотя он абсолютно понятный, даже комментариев по нему никто не осмелился дать! Там и вопрос одновременного включения входов разруливается, тогда включается выход с меньшим номером!
Вот на 8 входов-выходов!
Если не хватит 8, по ссылке есть и на 32 входа-выхода!

rovki
07.10.2018, 10:34
В задачах кто первый ,при абсолютно одновременных событиях не так важно кому отдать приоритет ,имхо

Сергей0308
07.10.2018, 13:31
В задачах кто первый ,при абсолютно одновременных событиях не так важно кому отдать приоритет ,имхо

Случаи бывают разные! Наверно в большинстве случаев это может быть не важно, но это никак не может исключить случаев, когда это важно! Вот и у меня в "очереди" в случае одновременного включения входов сначала какой выход включится выбиралось чисто случайно(боюсь Ситников поспорит), а в последующих модификациях макроса уже приоритет отдал выходу с меньшим числом, короче можно применять и в тех случаях, когда это важно(приоритет включения выхода в случае одновременного включения входов), что на мой взгляд, скорее плюс, чем минус!

rovki
07.10.2018, 13:48
Когда есть не определенность ее можно трактовать по разному - отдавать приоритет случайно или исходя из логики( кто старше) ,а можно всегда одному...И где у кого плюсы или минусы сложно сказать ибо сама ситуация подчиняется случайности (вероятности). Например у триггера R-S приоритет на выключение ,а у S-R на включение ...при оновременном сингнале на входах .Кроме того это зависит от самого проекта - какая из обратных связей будет орабатываться первой ...

Сергей0308
07.10.2018, 14:08
Когда есть не определенность ее можно трактовать по разному - отдавать приоритет случайно или исходя из логики( кто старше) ,а можно всегда одному...

Вот этот один, наиболее приоритетный вход-выход - повесьте на верхний вход-выход макроса(с наибольшим приоритетом) и всё, кури бамбук!

Yaroslav_22
09.10.2018, 07:01
Здравствуйте.

Не понял почему так происходит: ПР 200, аналоговый вход перевел в дискретный, запускаю эмуляцию, пока вход 0. то все ок, записываю туда 1. и получается НЕ нужное мне число на выходе. что не так делаю?
39057

Ревака Юрий
09.10.2018, 09:09
Здравствуйте.

Не понял почему так происходит: ПР 200, аналоговый вход перевел в дискретный, запускаю эмуляцию, пока вход 0. то все ок, записываю туда 1. и получается НЕ нужное мне число на выходе. что не так делаю?
39057

Добрый день, это баг, пока не исправили, для отладки можно использовать внутреннюю переменную в формате bool установив режим энергонезависимости, после отладки алгоритма, вернете на место сигнал, в железе все должно работать как 0/1.

Yaroslav_22
10.10.2018, 09:20
не отображаются комментарии ко входам/выходам ПРМ
39082

Никита Сергеев
11.10.2018, 11:33
не отображаются комментарии ко входам/выходам ПРМ
39082

Информация передана разработчикам. В ближайших обновлениях поправим.
Спасибо за обратную связь!

VN53
12.10.2018, 11:27
Добрый день! Вопрос: как запрограммировать выход в исходное состояние при подаче питания на ПЛК110 ? Заранее спасибо за ответ!

Uniqum
12.10.2018, 14:30
globar var
x:bool:=true;
end_var

в теле PLC_PRG
out:=x;

Алексей#
14.10.2018, 13:38
Помогите есть ли какой ни будь пример для ПЛК110-60MS и СП3ХХ хотя бы с одним триггером RS и двумя кнопками вкл, выкл. Просто MasterScada 4D для меня новая программа. Никак не могу связать их между собой. Заранее спасибо.

игорь68
18.10.2018, 15:10
Добрый день. Можно как то сделать переход на экран по изменению булевой переменной. Сам экран просто метка. У меня что то не как не выходит. При переходе переменной"наработка" из "0" в "1" должен быть переход на экран номер три.В симуляторе работает а в железе нет(
PS Приносим извинение закинул не тот файл. перезагрузил.

Aviator_VZh
18.10.2018, 16:31
Интересно, как у Вас в симуляторе работают экраны? Переход на нужный экран возможен только с экрана, на котором этот переход запрограммирован. Для перехода лучше использовать отдельную переменную, т.к. после перехода эта переменная автоматически обнуляется.

игорь68
18.10.2018, 16:38
Aviator VZh я вижу единичку в симуляторе. И поэтому залил в железо и проверил. В железе у меня перехода на экран нет. А можно по подробнее про "Для перехода лучше использовать отдельную переменную, т.к. после перехода эта переменная автоматически обнуляется"

Aviator_VZh
18.10.2018, 17:28
39295

Переменная, по которой происходит переход на экран, обнуляется после перехода и, если она участвует в других местах проекта, это может повлиять на работу.

Мимоход
18.10.2018, 19:35
Добрый день. Можно как то сделать переход на экран по изменению булевой переменной. Сам экран просто метка. У меня что то не как не выходит. При переходе переменной"наработка" из "0" в "1" должен быть переход на экран номер три.В симуляторе работает а в железе нет(
Проект "левый"
- экрана номер 3 нет вообще
39297

- переменная наработка нигде не используется.
39298

Мимоход
18.10.2018, 19:53
39295

Переменная, по которой происходит переход на экран, обнуляется после перехода и, если она участвует в других местах проекта, это может повлиять на работу.

А кто же ей даст обнулиться, ежели она есть результат какой-либо логической операции в схеме?
Например
Если А > B перейти на экран
39299

Переменная "А > B" не сможет "обнулиться" ни какими переходами, а только если условие больше не будет выполняться

Или положим, по сети хочу переключить экраны
39300

Никаких самостоятельных обнулений переменных "ГлЭкран", "Экр_3", "Экр_7" не наблюдаю. Состояние этих переменных однозначно определяется содержимым сетевой переменной "RG_Экраны".
Что имели ввиду писатели про автоматическое обнуление я так и не понял.

Aviator_VZh
18.10.2018, 20:52
Переменная обнулится в момент перехода на экран и в дальнейшем будет обработана в соответствии с логикой программы. А вот перезапишется она сначала на 1 или 0 успеет оказать воздействие на программу - я не знаю. Если эта переменная нигде больше не используется, то проблем нет.
Не забывайте, что работа программы состоит из циклов, а последовательность выполнения операций в цикле строго не определена.

Мимоход
18.10.2018, 22:11
Переменная обнулится в момент перехода на экран и в дальнейшем будет обработана в соответствии с логикой программы. А вот перезапишется она сначала на 1 или 0 успеет оказать воздействие на программу - я не знаю. Если эта переменная нигде больше не используется, то проблем нет.
Не забывайте, что работа программы состоит из циклов, а последовательность выполнения операций в цикле строго не определена.
Практика не подтверждает Вашу теорию по поводу "Переменная обнулится в момент перехода на экран и в дальнейшем будет обработана в соответствии с логикой программы"

Вот реальный пример
с экрана 2 переход на экран Авария - по фронту переменной [Авария]
39301

Возврат с экрана Авария - автоматический по фронту переменной [Return]
39302

Сигнал авария - интегральный формируется из 16 дискретных переменных
39303
Но это и не важно, как формируется Авария.
А важно то, что переменная Return формируется по спаду Аварии
39304

т.е тогда, когда Авария ОБНУЛИТЬСЯ !
таким образом, согласно Вашей теории
Переменная Авария обнулится в момент перехода на экран "Аварии" и в дальнейшем будет обработана в соответствии с логикой программы, т.е. в момент обнуления Аварии переменная Return станет =1 аж на 0,3 сек(см таймер ТР1), что по идее должно вызвать переход обратно на Экран2.

Но вся эта лабуда с автоматическим обнулением по факту не работает
иначе переход на экран Авария никогда бы не произошел.
Однако у меня все работает. При наличии любого аварийного сигнала или их комбинации --> переход на экран Авария. С экрана Авария возврат на Экран2, автоматом если нет ни одного аварийного сигнала.
Наверно потому, что я про автообнуление ничего не знал, когда делал эту программу

Сергей0308
18.10.2018, 23:56
Что то совсем запутался. ПР200.23.3.1.0 Есть три входа.на которых весят кнопки(NO). Нажал 1 кнопку(вход1)= сработал выход 1. Нажал кнопку 2(вход 2)+ сработал выход 2. Нажал кнопку 3 (вход 3) = сработал выход 3. Если нажата любая из 3х кнопок (например кнопка 1) то нажатие кнопок 2 и/или 3 не должны приводить к срабатыванию выходов 2 и 3. тоже самое и для кнопок номер 2 и номер 3. Нужна взаимная блокировка кнопок относительно нажатой любой "первой кнопки".

Попробуйте, может и так достаточно:

39308

А то "очередь" я вроде не для этого создавал, а так на много проще, если вас конечно это устроит!

Или так:

39309

Aviator_VZh
19.10.2018, 00:39
To Мимоход
В Вашем случае переменная авария перезаписывается на 1 раньше, чем считывается ее задний фронт. Другого объяснения у меня нет. В другом случае все может быть по другому. Стоит ли рисковать? Проделайте простой эксперимент. Введите переменную для перехода с экрана и посмотрите, что с ней будет после перехода.

игорь68
19.10.2018, 16:02
Добрый день. Вчера в торопях загрузил не тот файл. Проблема с переменной" наработка" В симуляторе единичка есть а в железе нет вызова экран номер 3

Aviator_VZh
19.10.2018, 22:50
Пожалуйста, будьте внимательнее. У Вас всё работает. На счетчик у Вас идет импульс 20 сек. Что-бы послать второй импульс нужно дождаться окончания первого.

игорь68
22.10.2018, 11:29
Пожалуйста, будьте внимательнее. У Вас всё работает. На счетчик у Вас идет импульс 20 сек. Что-бы послать второй импульс нужно дождаться окончания первого. "Это все работает. Даже если я выставлю "равенство" руками и на выходе переменной "наработка будет единица" вызова экрана наработка нет.

Aviator_VZh
22.10.2018, 12:06
Залейте свой проект в прибор, подайте с задержкой 30 сек три импульса включения на вход DI3 или DI4 и увидите, что переход на экран 3 работает. Но при этом Вы должны находится на экране 1, с которого запрограммирован переход.

игорь68
22.10.2018, 14:04
Залейте свой проект в прибор, подайте с задержкой 30 сек три импульса включения на вход DI3 или DI4 и увидите, что переход на экран 3 работает. Но при этом Вы должны находится на экране 1, с которого запрограммирован переход. Правильно сказали будь внимателен. Я смотрел работу перехода с ВТОРОГО экрана. А нужно было с первого. Спасибо. Всё работает. Вопрос закрыт.

Aviator_VZh
22.10.2018, 16:07
Отлично, а то я собирался видео снимать :)

WeSs
23.10.2018, 17:05
А как осуществить преобразование времени таймера?
Т.е. таймер работает в режиме mm, ss, ms, а выводить переменную типа Float в формате, например, 1.20 (1 минута, 20 секунд)

Сергей0308
23.10.2018, 17:56
А как осуществить преобразование времени таймера?
Т.е. таймер работает в режиме mm, ss, ms, а выводить переменную типа Float в формате, например, 1.20 (1 минута, 20 секунд)

Что выводить собираетесь, время уставки таймера?
Другого вы с таймера(что имеется в ОЛ) не выведете!
И у вас получится смесь бульдога с носорогом, минуты и секунды в одной переменной, но так к сожалению тоже можно сделать и очень просто: искомая смесь = мин + сек/100.

xarfan
25.10.2018, 15:51
Добрый день!
Подскажите, как реализовать функционал - на входе кнопка. Нажатием на нее последовательно переключаем состояние 4-х выходов (0001 -> 0010 -> 0100 -> 1000 -> 0001).
Ранее никогда опыта работы с языком графических блоков не имел, поэтому даже такие несложные вещи вызывают ступор). Спасибо!

Мимоход
25.10.2018, 16:09
Добрый день!
Подскажите, как реализовать функционал - на входе кнопка. Нажатием на нее последовательно переключаем состояние 4-х выходов (0001 -> 0010 -> 0100 -> 1000 -> 0001).
Ранее никогда опыта работы с языком графических блоков не имел, поэтому даже такие несложные вещи вызывают ступор). Спасибо!
Регистр сдвига
39468

melky
25.10.2018, 17:04
Можно и без регистра сдвига слепить, например так.

Схемы работают по разному, у меня выходы изначально выключены и переходят через выключенное состояние.

xarfan
25.10.2018, 17:24
Мда :confused: Спасибо за помощь, придется на ST и ПЛК писать. Квадратики не для меня)

melky
25.10.2018, 17:26
xarfan - Если вы алгоритм ST внимательно посмотрите, то увидите, что там тоже самое :) только соединительных линий не видно, они у вас в голове :)

Сергей0308
25.10.2018, 18:10
Можно и кольцевой счётчик по-человечьи сделать(мелкому шикарный подарок) и не только счётчик, например так:

39474

Sel
03.11.2018, 22:06
Добрый день.
Помогите реализовать выключатель многорежимной лампы.
Есть лампа с 7-ю режимами работы и 2 выключателя (без фиксации)
Хочу сделать при нажатии кнопки 1 (К1) вкл/вык первый режим лампы (Р1).
При удержании кнопки 2 (К2) более 5-ти сек, каждое нажатие К1 переключает режимы Р2, Р3 и т.д. по кругу.
При отпущенной К2, К1 работает как и раньше (выключает всю лампу и следующее нажатие вкл Р1).
В принципе у меня получилось реализовать данный режим (экспериментирую с тремя режимами). Но сложность возникла в том, что данный алгоритм у меня получается реализовать только для 1 лампы. А мне нужно с тех же 2-х кнопок управлять 2мя аналогичными лампами, Т.е. для первой лампы режимы переключаются при нажатой К2, нажатием К1, а для второй, при удержании К1, выбираем режимы К2. Так же, хотелось бы реализовать запоминание режима, т.е. - выбрали Р3 и в дальнейшем нажатие К1 (или К2 на второй лампе) включает Р3 или выключает всю лампу. (запоминание производить только той лампы, которая последняя переключалась)
Так как алгоритм очень заморочен всеми и, не , сбросами, то, видимо путаюсь в логике и прикрутить вторую лампу не получается.
Помогите оптимизировать алгоритм. Регистрами сдвига пользоваться не умею.
В идеале, если бы писал в коде, то взял бы переменную и добавлял по единице при каждом нажатии. Каждому значению присвоил режим, при достижении переменной равной 7, обнулял ее. Но в лоджике не понял как обнулять, да и с выбором не разобрался.
Так же запутался с задержками при нажатии кнопок


39601

melky
03.11.2018, 23:28
Sel лень разбираться в вашем творчестве. Начните с того, что чтобы клавиша работала на удержание и не мешала обычному режиму работы то обычный режим должен срабатывать по ЗАДНЕМУ фронту. Тогда удерживая клавишу можно этот фронт заблокировать.
И второй момент - зачем удерживать соседнюю кнопку, если можно удерживать ту же самую и применять действие, которое вы прекрасно увидите по смене режима лампы ?

Сергей0308
03.11.2018, 23:37
Добрый день.
Помогите реализовать выключатель многорежимной лампы.
Есть лампа с 7-ю режимами работы и 2 выключателя (без фиксации)
Хочу сделать при нажатии кнопки 1 (К1) вкл/вык первый режим лампы (Р1).
При удержании кнопки 2 (К2) более 5-ти сек, каждое нажатие К1 переключает режимы Р2, Р3 и т.д. по кругу.
При отпущенной К2, К1 работает как и раньше (выключает всю лампу и следующее нажатие вкл Р1).
В принципе у меня получилось реализовать данный режим (экспериментирую с тремя режимами). Но сложность возникла в том, что данный алгоритм у меня получается реализовать только для 1 лампы. А мне нужно с тех же 2-х кнопок управлять 2мя аналогичными лампами, Т.е. для первой лампы режимы переключаются при нажатой К2, нажатием К1, а для второй, при удержании К1, выбираем режимы К2. Так же, хотелось бы реализовать запоминание режима, т.е. - выбрали Р3 и в дальнейшем нажатие К1 (или К2 на второй лампе) включает Р3 или выключает всю лампу. (запоминание производить только той лампы, которая последняя переключалась)
Так как алгоритм очень заморочен всеми и, не , сбросами, то, видимо путаюсь в логике и прикрутить вторую лампу не получается.
Помогите оптимизировать алгоритм. Регистрами сдвига пользоваться не умею.
В идеале, если бы писал в коде, то взял бы переменную и добавлял по единице при каждом нажатии. Каждому значению присвоил режим, при достижении переменной равной 7, обнулял ее. Но в лоджике не понял как обнулять, да и с выбором не разобрался.
Так же запутался с задержками при нажатии кнопок


39601

Наверно, как-то так:

39602

И што, такой простенький алгоритм у Вас не получается, минут 5-10 времени надо!

Если предпочитаете чтобы при включении светильника не сохранялся тот режим который был в момент выключения, а всё начиналось с 1 режима, то как-то так:

39607

Можно и все сигналы в одну переменную собрать, мало ли что, может по сети надо передавать одним регистром или ещё какие заморочки:

39609

Это в работе схемы абсолютно ничего не изменит!

И я бы предпочёл, как мелкий советовал, каждая кнопка отвечает за свою лампу, например в режиме включения светильника(режим не имеет значения) удержание кнопки свыше 5 секунд переводит её из режима включения-выключения в режим переключения режимов работы(переключается выход 1-8 на каждую лампу) достижение времени нажатия в 5 секунд сопровождается переключением режима(или начинает мигать лампа включенного в данный момент режима), что бы было видно и кнопку лишние секунды не держать, при отпускании каждое последующее кратковременное(менее 0,5 секунды) нажатие переключает режим работы светильника по кругу(как сейчас), если 10 секунд кнопка не нажата(отпущена), то режим работы кнопки переключается обратно на режим включения-выключения, надеюсь понятно объяснил, как я это вижу, лучше уже тем, что для манипуляций со светильниками достаточно одной руки(пальца), что на мой взгляд гораздо удобнее, короче примерно как-то так:

39612

rovki
03.11.2018, 23:40
Наверно, как-то так:

39602

И што, такой простенький алгоритм у Вас не получается, минут 5-10 времени надо!
Наверное потому ,что еще новичек ;) Лет через 5 такой же вопрос будет задавать новым пользователям...

Sel
04.11.2018, 14:29
Наверно, как-то так:
39612
Спасибо большое, то, что надо.

Хотелось бы разобраться с данным алгоритмом.
Ответьте, пожалуйста на пару вопросов новичка:
1. Почему периодически не срабатывает включение/выключение? Если подряд нажимать кнопку (любую), то периодически не изменяется значение на выходе.(не срабатывает при быстром нажатии)
2. В макросе СТМ что означает цифра 31? Смотрел предыдущие примеры, там Вы так же устанавливает 31.
3. Каким образом устанавливается величина цикла до сброса? В данном случае СТМ сбрасывается на цифре 7, где указать, что сброс будет, допустим после 4?


И што, такой простенький алгоритм у Вас не получается, минут 5-10 времени надо!
39612
Я пока не въехал как с квадратиками работать, поэтому любое что-то более-менее замороченное дается не просто, надож понять как обойти ограничения привычной логики ))


И я бы предпочёл, как мелкий советовал, каждая кнопка отвечает за свою лампу
39612
Спасибо за идею. Сейчас работает лампа в 3-х режимах и управляется с 2-х кнопок, как показала практика, довольно удобно. Единственная задержка 1с, перед переключением режимов (хотя, я бы и от нее отказался, но в квадратиках пока не понял как это реализовать). Из плюсов отсутствия задержек возможность сразу включать\выключать лампу или сразу менять режимы второй лампы.

Сергей0308
04.11.2018, 14:58
Спасибо большое, то, что надо.

Хотелось бы разобраться с данным алгоритмом.
Ответьте, пожалуйста на пару вопросов новичка:
1. Почему периодически не срабатывает включение/выключение? Если подряд нажимать кнопку (любую), то периодически не изменяется значение на выходе.(не срабатывает при быстром нажатии)
2. В макросе СТМ что означает цифра 31? Смотрел предыдущие примеры, там Вы так же устанавливает 31.
3. Каким образом устанавливается величина цикла до сброса? В данном случае СТМ сбрасывается на цифре 7, где указать, что сброс будет, допустим после 4?


Я пока не въехал как с квадратиками работать, поэтому любое что-то более-менее замороченное дается не просто, надож понять как обойти ограничения привычной логики ))


Спасибо за идею. Сейчас работает лампа в 3-х режимах и управляется с 2-х кнопок, как показала практика, довольно удобно. Единственная задержка 1с, перед переключением режимов (хотя, я бы и от нее отказался, но в квадратиках пока не понял как это реализовать). Из плюсов отсутствия задержек возможность сразу включать\выключать лампу или сразу менять режимы второй лампы.

1. : если Вы в железе проверяете(в симуляторе много зависит от настроек симулятора и я пока это не хочу даже обсуждать), то я предлагаю уменьшить время импульса до 0,5 секунд, как у меня в последнем проекте про лампы, если не устроит, то до 0,3-0,2 секунд:


39615

Дело в том, что функциональный блок "Импульс включения заданной длительности" не может перезапустится до истечении этого времени!


Или как-то так сделать:


39617

2-3. : в свойствах макроса таятся настройки:

39616

"0" и "31" - значения назначенные в макросе, а не свойствах макроса и значения не имеют!

Sel
04.11.2018, 15:20
Дело в том, что функциональный блок "Импульс включения заданной длительности" не может перезапустится до истечении этого времени!

Я пока тестировал только на компе, может на устройстве будет по другому.
Этот баг выскакивает когда ТР досчитывает до конца и сбрасывается на 0, если нажать кнопку в этот момент, то она не сработает.

Спасибо за разъяснения.



2-3. : в свойствах макроса таятся настройки:

Как параметры макроса связаны с самим макросом? В лоджике не увидел как макрос учитывает эти парметры и где идет обнуление.
Не нашел в помощи про параметры макроса. Где почитать как их задавать и как они будут влиять на выполнение программы?

Сергей0308
04.11.2018, 15:53
Я пока тестировал только на компе, может на устройстве будет по другому.
Этот баг выскакивает когда ТР досчитывает до конца и сбрасывается на 0, если нажать кнопку в этот момент, то она не сработает.

Спасибо за разъяснения.


Как параметры макроса связаны с самим макросом? В лоджике не увидел как макрос учитывает эти парметры и где идет обнуление.
Не нашел в помощи про параметры макроса. Где почитать как их задавать и как они будут влиять на выполнение программы?

Надо понимать только одно: что значения назначенные в свойствах макроса имеют преимущество над значением назначенным в макросе, всё!
Это кольцевой инкрементный счётчик, назначаются минимальное и максимальные значения, достигнув максимального значения с приходом следующего счётного импульса счёт начнётся заново с минимального значения, при сбросе счётчик примет минимальное значение, а не "0", всё!

Sel
04.11.2018, 17:11
Надо понимать только одно: что значения назначенные в свойствах макроса имеют преимущество над значением назначенным в макросе, всё!
Это кольцевой инкрементный счётчик, назначаются минимальное и максимальные значения, достигнув максимального значения с приходом следующего счётного импульса счёт начнётся заново с минимального значения, при сбросе счётчик примет минимальное значение, а не "0", всё!
Логично. С этим счетчиком я все понял и как параметры задаются и как он отрабатывает.
Мне интересно как делать такие макросы (сдается они не в лоджике сделаны). Сейчас я столкнулся с проблемой, если я решу изменить первоначальные условия, то я не смогу переделать эти макросы под новую задачу. Первоначальная задача это пример, разобрав который, я смогу реализовать часть задуманного. В реальности у меня 15 ламп и порядка 20 схем их работы и этим всем надо управлять с 2х выключателей. Но поправить макрос EXTRACT8 под реальную задачу я не могу, ведь параметры рассчитаны на 8 ламп. Даже добавив дополнительный выход, надо добавить и его описание в параметрах, иначе на него сигнал не приходит. А я не знаю как это сделать.
Я за то, чтобы разобраться в работе алгоритма и самому его повторить. Отсюда и пытаюсь понять как делать макросы с параметрами. Кстати, очень полезная функция, помогает обойти некоторые ограничения лоджика.
Если Вам не сложно, объясните, пожалуйста, как работать (создавать, редактировать) подобные макросы с параметрами. Если это секрет, спасибо за помощь, Ваши решения помогли мне кое в чем разобраться.

Сергей0308
04.11.2018, 17:30
Логично. С этим счетчиком я все понял и как параметры задаются и как он отрабатывает.
Мне интересно как делать такие макросы (сдается они не в лоджике сделаны). Сейчас я столкнулся с проблемой, если я решу изменить первоначальные условия, то я не смогу переделать эти макросы под новую задачу. Первоначальная задача это пример, разобрав который, я смогу реализовать часть задуманного. В реальности у меня 15 ламп и порядка 20 схем их работы и этим всем надо управлять с 2х выключателей. Но поправить макрос EXTRACT8 под реальную задачу я не могу, ведь параметры рассчитаны на 8 ламп. Даже добавив дополнительный выход, надо добавить и его описание в параметрах, иначе на него сигнал не приходит. А я не знаю как это сделать.
Я за то, чтобы разобраться в работе алгоритма и самому его повторить. Отсюда и пытаюсь понять как делать макросы с параметрами. Кстати, очень полезная функция, помогает обойти некоторые ограничения лоджика.
Если Вам не сложно, объясните, пожалуйста, как работать (создавать, редактировать) подобные макросы с параметрами. Если это секрет, спасибо за помощь, Ваши решения помогли мне кое в чем разобраться.

Сначала по макросу извлечения(чтения бита): Вам ничего не надо там переделывать, в свойствах макроса, как и для счётчика, есть настройки, можно задавать значения извлекаемого(читаемого) бита в диапазоне 0-31, дальше всё будет циклически повторятся с кратностью 32, короче поставьте сколько Вам нужно экземпляров макроса 1-4 и настройками "рулите", в принципе у меня есть и на 16, 32 выхода, но никакой разницы нет, подобно я делал в третьей версии проекта ламп(где все сигналы в одну переменную собирал), посмотрите!

Теперь о создании: при создании, редактировании макроса в свойствах константы есть пункт использовать в макросе - ставите "Да":


39620

Также можете переименовать(подписать), как вам угодно, строчка выше преведущей, всё!

Sel
04.11.2018, 21:09
Также можете переименовать(подписать), как вам угодно, строчка выше преведущей, всё!

Спасибо, пойду править проект

Sel
05.11.2018, 00:37
Доброй ночи.
Квадратики даются с трудом.
Подскажите, как осуществить алгоритм: Кнопка без фиксации. При обычной работе с кнопкой, выход меняет статус. При удержании кнопки в нажатом состоянии более 3-х секунд, при отпускании кнопки статус выхода не именяется.
Суть: С кнопки включаем/выключаем лампу. Нажали кнопку, включается лампа, отпустили кнопку. Потом нажимаем кнопку на удержание 3 сек. И нужно, чтобы отпустив кнопку лампа не погасла.
Вроде все просто, но прога меняет статус выхода как ТОН меняет свой.
39623

Посмотрел ранее, мне отвечали на этот вопрос, предложив добавить ТР. Но я хочу полностью уйти от таймеров в последствии. Есть ли другие способы не считывать изменение статуса кнопки, при длительном нажатии.
(год назад я решил этот вопрос без ТР. Но не помню как, а исходники проекта умерли вместе с винтом)

Сергей0308
05.11.2018, 00:45
Доброй ночи.
Квадратики даются с трудом.
Подскажите, как осуществить алгоритм: Кнопка без фиксации. При обычной работе с кнопкой, выход меняет статус. При удержании кнопки в нажатом состоянии более 3-х секунд, при отпускании кнопки статус выхода не именяется.
Суть: С кнопки включаем/выключаем лампу. Нажали кнопку, включается лампа, отпустили кнопку. Потом нажимаем кнопку на удержание 3 сек. И нужно, чтобы отпустив кнопку лампа не погасла.
Вроде все просто, но прога меняет статус выхода как ТОН меняет свой.
39623

Можно не мудрить, есть же Д-триггер, делайте как хочется, я до конца не понял, как Вы хотите, лучше диаграмму состояний, для ясности!

39624

Насколько смог Вас понять, у меня так и было, поэтому мне непонятно, что Вы хотите!
Вот мой последний вариант, в преведущих аналогично и уставка времени в мс, при превышении времени нажатия выше этого времени импульс не проходит:


39625

Sel
05.11.2018, 01:36
Можно не мудрить, есть же Д-триггер, делайте как хочется, я до конца не понял, как Вы хотите, лучше диаграмму состояний, для ясности!

Да, Вы мне в прошлый раз советовали использовать Д-триггер. Но на нем та же обвязка из ТР
Вот Ваш пример
39626

На счет диаграммы не понимаю как ее нарисовать.
Суть простая, это часть предыдущей задачи - первой клавишей (КЛ1) управляем лампой 1 (Л1), второй клавишей (КЛ2) лампой 2 (Л2). Обычные нажатия 1КЛ1 вкл.выкл Л1, при удержании КЛ1 более 3-х с, нажимая на КЛ2 меняем режимы лампы. Т.е. после удержания КЛ1, Л1 не должна никак реагировать, а в моем примере она включается.

Убрав задержки, я получил не верные срабатывания. При отпускании КЛ2 после удержания, включается Л2. Так же есть зависимость в последовательности отпускания клавиш. С задержками они тоже есть, но реже.

Сейчас в прибор залита программа, которая лишена этих тонкостей, т.е. она работает как и должна. Но я не помню что я там нарисовал. Помню только что я почти все строил на Д-триггерах, так как с битами и другими регистрами не разобрался.

Сергей0308
05.11.2018, 01:42
Доброй ночи.
Квадратики даются с трудом.
Подскажите, как осуществить алгоритм: Кнопка без фиксации. При обычной работе с кнопкой, выход меняет статус. При удержании кнопки в нажатом состоянии более 3-х секунд, при отпускании кнопки статус выхода не именяется.
Суть: С кнопки включаем/выключаем лампу. Нажали кнопку, включается лампа, отпустили кнопку. Потом нажимаем кнопку на удержание 3 сек. И нужно, чтобы отпустив кнопку лампа не погасла.
Вроде все просто, но прога меняет статус выхода как ТОН меняет свой.
39623

Посмотрел ранее, мне отвечали на этот вопрос, предложив добавить ТР. Но я хочу полностью уйти от таймеров в последствии. Есть ли другие способы не считывать изменение статуса кнопки, при длительном нажатии.
(год назад я решил этот вопрос без ТР. Но не помню как, а исходники проекта умерли вместе с винтом)

Вам всё равно надо как-то время измерять и Вам разумно предложили измерять время таймером, но Вы понятное дело, лёгких путей не ищете и таймеры Вам неприемлемы, тогда задача становится неразрешимой! Время можно измерять и циклами программы, но это всё равно таймер получится, только сложней станет! Хорошо если вспомните, как Вы год назад время считали без таймеров, пишите, вместе посмеёмся!
И Вы наверно не смотрели мой последний вариант программы для ламп, там не надо секунду(как в первых вариантах) ждать для переключения режимов работы и включения-выключения ламп, можно "щёлкать" без перекуров, ТР будет перезапускаться, что ещё надо?

Sel
05.11.2018, 14:11
Вам всё равно надо как-то время измерять и Вам разумно предложили измерять время таймером, но Вы понятное дело, лёгких путей не ищете и таймеры Вам неприемлемы, тогда задача становится неразрешимой! Время можно измерять и циклами программы, но это всё равно таймер получится, только сложней станет! Хорошо если вспомните, как Вы год назад время считали без таймеров, пишите, вместе посмеёмся!
И Вы наверно не смотрели мой последний вариант программы для ламп, там не надо секунду(как в первых вариантах) ждать для переключения режимов работы и включения-выключения ламп, можно "щёлкать" без перекуров, ТР будет перезапускаться, что ещё надо?
Пример посмотрел, спасибо. Я понимаю, что связка, с использованием задержки выключения ТР спасает от ложных срабатываний, срезая передний фронт, но это костыль, который будет приводить к несрабатываниям (нажал на кнопку и задумался). А хотелось бы уйти от этого ограничения.

Понятно, что таймеры нужны будут, особенно там, где событие по удержанию клавиши. Но меня убивает ограничение, которые без танцев с бубнами не обойти. Те же таймеры удержания для переключения режимов это вынужденная мера из-за того, что я не понимаю как переключить контуры управления лампами. В коде все просто с точки зрения условий, а вот лоджик очень сильно ограничивает (если бы можно было вводить условия кодом, все было бы проще).

Для понимания чего хочу. Вариант временный. Удержание 2-х нажатых клавиш более 5-ти секунд выключает свет во всей квартире (здесь точно нужен таймер). l1 влк\вык лампу с 7-ю схемами включения Лампа_1, l2 управляет одной лампой Лампа_2. Если зажимаем l2, то нажатием l1 меняем режимы включения Лампа_1. (это реализовано). Выключение всего света в квартире производится путем сброса макроса Т-риггера в 0 (для Вашего примера везде устанавливается Q=0)
Что не реализовано:
1. если зажималась l2 и переключались режимы Лампа_1, то статус Лампа_2 не меняется (на данный момент Лампа_2 реагирует на любое нажатие)
2. если, после изменения режима Лампа_1 сначала отпустить l2, а потом l1, то Лампа_1 выключается.
3. При отпускании обеих клавиш после сброса, лампы должны оставаться выключенными. (в данном примере, если после сброса первой отпустить l2, Т-триггер поменяет статус, что приведет к выключению лампы. В случае сброса, если отпустить клавишу после обнуления переменных, триггер будет отрабатывать в обычном режиме)
4. Все переключения ламп должны происходить только если нет сброса (не уверен на счет заднего фронта выключателя, так как экспериментируя с фронтами, некоторые замечания уходят).


В этом примере хорошо, если бы прямая линия от l2 до Т-триггер2 разрывалась, если при удержании l2 была нажата l1 и восстанавливалась только при отпускании l2. Такое своеобразное программное реле. Даже не знаю как проще объяснить, чтобы Вы меня поняли.
пример 1:
39633

Теперь вариант с двумя многорежимными лампами.
Я убрал таймеры, которые заставляют лишнее время стоять у выключателя, в итоге переключая режимы на Лампа_1 (удерживаем l2 и щелкаем l1), Лампа_1 переключает режимы, Лампа_2 мигает и переключает режимы.

Пример 2:
39634

Для решения моего вопроса хорошо помогла бы функция оценки статуса выключателя (нажат\отпущен), в этом случае, можно сделать условие:
если были нажаты клавиши l1 и l2, то Лампа_2 игнорирует выключатель; иначе слушается

Сергей0308
05.11.2018, 15:38
Пример посмотрел, спасибо. Я понимаю, что связка, с использованием задержки выключения ТР спасает от ложных срабатываний, срезая передний фронт, но это костыль, который будет приводить к несрабатываниям (нажал на кнопку и задумался). А хотелось бы уйти от этого ограничения.

Понятно, что таймеры нужны будут, особенно там, где событие по удержанию клавиши. Но меня убивает ограничение, которые без танцев с бубнами не обойти. Те же таймеры удержания для переключения режимов это вынужденная мера из-за того, что я не понимаю как переключить контуры управления лампами. В коде все просто с точки зрения условий, а вот лоджик очень сильно ограничивает (если бы можно было вводить условия кодом, все было бы проще).

Для понимания чего хочу. Вариант временный. Удержание 2-х нажатых клавиш более 5-ти секунд выключает свет во всей квартире (здесь точно нужен таймер). l1 влк\вык лампу с 7-ю схемами включения Лампа_1, l2 управляет одной лампой Лампа_2. Если зажимаем l2, то нажатием l1 меняем режимы включения Лампа_1. (это реализовано). Выключение всего света в квартире производится путем сброса макроса Т-риггера в 0 (для Вашего примера везде устанавливается Q=0)
Что не реализовано:
1. если зажималась l2 и переключались режимы Лампа_1, то статус Лампа_2 не меняется (на данный момент Лампа_2 реагирует на любое нажатие)
2. если, после изменения режима Лампа_1 сначала отпустить l2, а потом l1, то Лампа_1 выключается.
3. При отпускании обеих клавиш после сброса, лампы должны оставаться выключенными. (в данном примере, если после сброса первой отпустить l2, Т-триггер поменяет статус, что приведет к выключению лампы. В случае сброса, если отпустить клавишу после обнуления переменных, триггер будет отрабатывать в обычном режиме)
4. Все переключения ламп должны происходить только если нет сброса (не уверен на счет заднего фронта выключателя, так как экспериментируя с фронтами, некоторые замечания уходят).


В этом примере хорошо, если бы прямая линия от l2 до Т-триггер2 разрывалась, если при удержании l2 была нажата l1 и восстанавливалась только при отпускании l2. Такое своеобразное программное реле. Даже не знаю как проще объяснить, чтобы Вы меня поняли.
пример 1:
39633

Теперь вариант с двумя многорежимными лампами.
Я убрал таймеры, которые заставляют лишнее время стоять у выключателя, в итоге переключая режимы на Лампа_1 (удерживаем l2 и щелкаем l1), Лампа_1 переключает режимы, Лампа_2 мигает и переключает режимы.

Пример 2:
39634

Для решения моего вопроса хорошо помогла бы функция оценки статуса выключателя (нажат\отпущен), в этом случае, можно сделать условие:
если были нажаты клавиши l1 и l2, то Лампа_2 игнорирует выключатель; иначе слушается

У меня создаётся впечатление, что Вы не смотрели мои варианты включения-выключения ламп, там как раз как Вы хотите при переключении режима работы кнопок с первого(включение-выключение) на второй(переключение по кругу выходов одного светильника 1-8), как раз первый режим блокируется на время и если кнопка не нажимается некоторое время(10 с) опять переключается на первый режим работы! Вам ничего и думать-понимать не нужно, можно сделать аналогично! И если Вы сторонник текстовых языков, то только из-за принципа должны были взять что-то вроде СПК, дюймов на 10 и не заморачиваться, там на экране места хватит для двух кнопок на каждый светильник и главное реализовали бы свои способности, может завидовать все вам стали!

Sel
05.11.2018, 16:10
У меня создаётся впечатление, что Вы не смотрели мои варианты включения-выключения ламп, там как раз как Вы хотите при переключении режима работы кнопок с первого(включение-выключение) на второй(переключение по кругу выходов одного светильника 1-8), как раз первый режим блокируется на время и если кнопка не нажимается некоторое время(10 с) опять переключается на первый режим работы! Вам ничего и думать-понимать не нужно, можно сделать аналогично! И если Вы сторонник текстовых языков, то только из-за принципа должны были взять что-то вроде СПК, дюймов на 10 и не заморачиваться, там на экране места хватит для двух кнопок на каждый светильник и главное реализовали бы свои способности, может завидовать все вам стали!

Я посмотрел их, даже разобрался что и как работает. Но убрать задержки я пока не могу, не понимаю как (не хочу ждать, перед возможностью переключать лампы)
Кстати, в пятом примере ложные срабатывания есть (т.е. одна из ламп выключается). А там, где есть ТР, при сбросе на 0, происходит подвисание (вполне возможно что на приборе такого не будет, но пока с ПР не могу эксперементировать, могу остаться без света).
Ладно, буду думать как обойти ограничения и убрать задержки и лишние срабатывания.
Спасибо за помощь.

Сергей0308
05.11.2018, 16:24
Я посмотрел их, даже разобрался что и как работает. Но убрать задержки я пока не могу, не понимаю как (не хочу ждать, перед возможностью переключать лампы)
Кстати, в пятом примере ложные срабатывания есть (т.е. одна из ламп выключается). А там, где есть ТР, при сбросе на 0, происходит подвисание (вполне возможно что на приборе такого не будет, но пока с ПР не могу эксперементировать, могу остаться без света).
Ладно, буду думать как обойти ограничения и убрать задержки и лишние срабатывания.
Спасибо за помощь.

Надеюсь Вы прикупили пару ПР для экспериментов и на железе экспериментируете, я уже писал, что в симуляторе и у меня случалась не правильная работа, многое зависит от настроек, так что повторюсь на всякий случай: я не уверен, что Вы в симуляторе делаете идеальные настройки!

Sel
05.11.2018, 16:55
повторюсь на всякий случай: я не уверен, что Вы в симуляторе делаете идеальные настройки!
Спасибо. Но единственное, что может зависеть от железа, это время сброса ТР (возможно на ПР сложнее будет попасть в момент сброса из-за времени отклика). Все остальное, что написал это проблема логики (алгоритма), т.е. данная логика приведет на любом устройстве и на любом языке к данным срабатываниям. Это и есть ограничения логики лоджика, которая очень не привычна. Ну и не привычно, что в лоджике мало ресурсов (мало функциональных возможностей). Поэтому и приходится городить костыли в виде блока, который Вы предложили с использованием ТР.
Если смогу без костылей реализовать задуманное, выложу, может кому пригодится. Хотя сейчас понимаю, что пока проще использовать костыли (хотя они приводят к ограничениям меня как пользователя светом в квартире). Заодно мозги разомну, а то давно не решал сложных задачек

Сергей0308
05.11.2018, 18:53
Я посмотрел их, даже разобрался что и как работает. Но убрать задержки я пока не могу, не понимаю как (не хочу ждать, перед возможностью переключать лампы)
Кстати, в пятом примере ложные срабатывания есть (т.е. одна из ламп выключается). А там, где есть ТР, при сбросе на 0, происходит подвисание (вполне возможно что на приборе такого не будет, но пока с ПР не могу эксперементировать, могу остаться без света).
Ладно, буду думать как обойти ограничения и убрать задержки и лишние срабатывания.
Спасибо за помощь.

Это Вы так придумали алгоритм работы, что надо ждать 5 секунд, нажав одну кнопку, что бы переключился режим работы другой, для всех остальных людей, кроме Вас, такой проблемы не существует в принципе, можно сразу без задержки переключить режим работы другой кнопки и Вы ещё пытаетесь несовершенство ваших задумок преподнести как какой-то косяк ПР или ОЛ, по крайней мере это неразумно, а по мне просто дикость дикая, мягко выражаясь!

Вот так попробуйте, я убрал задержки в 5 с, что Вы придумали(зачем они мне не понятно):


39641

Вот так с сохранением(запоминанием) режима работы светильника что был на момент выключения и его восстановлением при включении для обеих светильников и без всяких задержек всё переключается и выключается-включается, я так понимаю, Вы так хотели?


39645

Sel
05.11.2018, 21:36
Это Вы так придумали алгоритм работы, что надо ждать 5 секунд, нажав одну кнопку, что бы переключился режим работы другой, для всех остальных людей, кроме Вас, такой проблемы не существует в принципе, можно сразу без задержки переключить режим работы другой кнопки и Вы ещё пытаетесь несовершенство ваших задумок преподнести как какой-то косяк ПР или ОЛ, по крайней мере это неразумно, а по мне просто дикость дикая, мягко выражаясь!

39641

Спасибо за пример. Но я бы хотел убрать и TP. В Вашем примере если переключить режим Лампы_1 и отпустить обе клавиши и управиться меньше чем за 1с, то Лампа_2 погаснет (если была включена) и наоборот. А если уменьшить значение ТП, то будет мало времени на "подумать" с нажатым выключателем. Когда такое возможно - я точно знаю, что следующий режим лампы нужный и я нажму сразу 2 клавиши и отпущу их, это займет менее секунды, в итоге вторая лампа или включится или выключится. Согласен, это редко бывает, когда нажатие меньше сек, но бывает.

Кстати, задумка самая обычная - чтобы не было лишних срабатываний или не срабатываний, а если задумался, то выключатель выполнил свою функцию. У меня больше года свет работает на ПР и эти тонкости оказались актуальны. Сейчас подключена 1 лампа с 3-мя режимами и 1 обычная лампа, управляются с 2-х выключателей . При этом описанные выше нюансы не возникают. Но я не помню какими условиями я этого добился. Помню только, что условий было мало и делал на DTRIG. Единственная тонкость работы нынешнего переключения - лампы вкл\выкл по заднему фронту, а переключение режимов по переднему. Короче, не помню, а восстановить не могу.

Сейчас ковырялся, надумал следующий алгоритм. Если нажимались 2 клавиши одновременно (например l2 зажата, l1 выбираем режим), создаем переменную и сохраняем в ней логическую 1 (в моем примере DTRIG2). При срабатывании заднего фронта l2 (отпускаем клавишу) проверяем условие DTRIG2 равен 1, статус Лампа_2 не меняется и обнуляется DTRIG2. Если же DTRIG2 равен 0, то меняем статус Лампа_2 на противоположное.
В принципе, для Лампа_2 я этой логикой убрал лишние срабатывания и предыдущие замечания. Но вот если удержать l1 и быстро понажимать на l2, то Лампа_2 меняет свой статус. На железе, чтобы получить этот глюк, надо нажимать клавишу со скоростью 1 раз в цикл. Пока не знаю реально это или нет, так как не знаю времени цикла.
Чтобы вообще убрать лишнее срабатывание, надо разорвать связь между FTRIG1 и DTRIG1, но как это сделать, я не знаю. (есть идея убрать все в переменные и работать с переменными, но на практике пока не проверял, да и в прошлый раз, когда писал программу, столкнулся с какими-то сложностями, когда лоджик оказался записывать переменную)

Пример для Лампы с 3-мя режимами и для 1 обычной. Но, в дальнейшем прейду на 2 многорежимные лампы. Отлаживать проект пока проще на одной многорежимной лампе. Кстати, так как для многорежимной лампы пока не ввел алгоритм разделения выключателя и триггера, то можно посмотреть как она себя ведет, если зажать l1 и нажимать на l2 (в реальной жизни пользователь выбрал нужный режим Лампа_1 и отпустил сначала l2, а потом l1).
Пример 3:
39647

P.S. Нашел, почему при быстром нажатии меняется статус лампы. У DTRIG приоритет по сбросу. Если команда на сброс приходит одновременно с одновременным нажатием 2-х клавиш, то программа не запоминает, что клавиши были нажаты. Надо еще условие добавлять перед DTRIG2. Ндя, куда проще убрать связь между кнопкой и триггером, но просто в теории, а на практике...

Сергей0308
05.11.2018, 22:08
Спасибо за пример. Но я бы хотел убрать и TP. В Вашем примере если переключить режим Лампы_1 и отпустить обе клавиши и управиться меньше чем за 1с, то Лампа_2 погаснет (если была включена) и наоборот. А если уменьшить значение ТП, то будет мало времени на "подумать" с нажатым выключателем. Когда такое возможно - я точно знаю, что следующий режим лампы нужный и я нажму сразу 2 клавиши и отпущу их, это займет менее секунды, в итоге вторая лампа или включится или выключится. Согласен, это редко бывает, когда нажатие меньше сек, но бывает.

Кстати, задумка самая обычная - чтобы не было лишних срабатываний или не срабатываний, а если задумался, то выключатель выполнил свою функцию. У меня больше года свет работает на ПР и эти тонкости оказались актуальны. Сейчас подключена 1 лампа с 3-мя режимами и 1 обычная лампа, управляются с 2-х выключателей . При этом описанные выше нюансы не возникают. Но я не помню какими условиями я этого добился. Помню только, что условий было мало и делал на DTRIG. Единственная тонкость работы нынешнего переключения - лампы вкл\выкл по заднему фронту, а переключение режимов по переднему. Короче, не помню, а восстановить не могу.

Сейчас ковырялся, надумал следующий алгоритм. Если нажимались 2 клавиши одновременно (например l2 зажата, l1 выбираем режим), создаем переменную и сохраняем в ней логическую 1 (в моем примере DTRIG2). При срабатывании заднего фронта l2 (отпускаем клавишу) проверяем условие DTRIG2 равен 1, статус Лампа_2 не меняется и обнуляется DTRIG2. Если же DTRIG2 равен 0, то меняем статус Лампа_2 на противоположное.
В принципе, для Лампа_2 я этой логикой убрал лишние срабатывания и предыдущие замечания. Но вот если удержать l1 и быстро понажимать на l2, то Лампа_2 меняет свой статус. На железе, чтобы получить этот глюк, надо нажимать клавишу со скоростью 1 раз в цикл. Пока не знаю реально это или нет, так как не знаю времени цикла.
Чтобы вообще убрать лишнее срабатывание, надо разорвать связь между FTRIG1 и DTRIG1, но как это сделать, я не знаю. (есть идея убрать все в переменные и работать с переменными, но на практике пока не проверял, да и в прошлый раз, когда писал программу, столкнулся с какими-то сложностями, когда лоджик оказался записывать переменную)

Пример для Лампы с 3-мя режимами и для 1 обычной. Но, в дальнейшем прейду на 2 многорежимные лампы. Отлаживать проект пока проще на одной многорежимной лампе. Кстати, так как для многорежимной лампы пока не ввел алгоритм разделения выключателя и триггера, то можно посмотреть как она себя ведет, если зажать l1 и нажимать на l2 (в реальной жизни пользователь выбрал нужный режим Лампа_1 и отпустил сначала l2, а потом l1).
Пример 3:
39647

P.S. Нашел, почему при быстром нажатии меняется статус лампы. У DTRIG приоритет по сбросу. Если команда на сброс приходит одновременно с одновременным нажатием 2-х клавиш, то программа не запоминает, что клавиши были нажаты. Надо еще условие добавлять перед DTRIG2. Ндя, куда проще убрать связь между кнопкой и триггером, но просто в теории, а на практике...

Можно конечно и все таймеры(ТР) убрать, но возможно это не принесёт счастья, если сейчас допустим Вы случайно нажали какую-то кнопку, можно подержать её не менее секунды и ничего не случится при её отпускании, то тогда это станет невозможным! Вы же рассматриваете какие-то случайные нажатия?! Но попытка - не пытка! У Вас как будто не лампочка, а ядерная боеголовка! Применяйте мажоритарную логику, типа если в течении 5 минут более 100 раз повторится какая-то команда, то будет выполнена, тогда наверняка ничего лишнего не включится, не переключится, одна трудность: Вам минимум 100 раз придётся команду выполнять и укладываться по времени, Вы так хотите?

Василий Кашуба
05.11.2018, 22:57
Можно конечно и все таймеры(ТР) убрать, но возможно это не принесёт счастья, если сейчас допустим Вы случайно нажали какую-то кнопку, можно подержать её не менее секунды и ничего не случится при её отпускании, то тогда это станет невозможным! Вы же рассматриваете какие-то случайные нажатия?! Но попытка - не пытка! У Вас как будто не лампочка, а ядерная боеголовка! Применяйте мажоритарную логику, типа если в течении 5 минут более 100 раз повторится какая-то команда, то будет выполнена, тогда наверняка ничего лишнего не включится, не переключится, одна трудность: Вам минимум 100 раз придётся команду выполнять и укладываться по времени, Вы так хотите?

Сергей предложи ему использовать XOR на входах 1 и 2, чтобы при одновременном нажатии сигнал от них не проходил.

Sel
05.11.2018, 23:05
Вы так хотите?
Все гораздо проще, я хочу удобно. А значит должно сработать с первого раза и правильно (даже если пользователь я сделал что-то не так).
А на счет "случайно нажали какую-то кнопку, можно подержать её не менее секунды" мне ближе заложить двойное быстрое нажатие, чтобы восстановить режим. Не дружу я со всем удержаниями кнопок, поэтому стараюсь от них уйти.

Sel
05.11.2018, 23:08
Сергей предложи ему использовать XOR на входах 1 и 2, чтобы при одновременном нажатии сигнал от них не проходил.
И как только я отпущу одну из клавиш, отработает вторая. В этом то вся и проблема, чтобы сигнал обрубить и не пустить его дальше. Вся логика сигнал не рубит, а пускает дальше, как только условие соблюдается

capzap
05.11.2018, 23:12
И как только я отпущу одну из клавиш, отработает вторая. В этом то вся и проблема, чтобы сигнал обрубить и не пустить его дальше. Вся логика сигнал не рубит, а пускает дальше, как только условие соблюдается

ну так напишите таблицу истинности, внесите туда все свои алгоритмы и стразу станет ясна вся картина, на какой логике это можно сделать. В СДНФ/СКНФ нет ни каких таймеров как Вам и хочется

Сергей0308
06.11.2018, 00:38
Все гораздо проще, я хочу удобно. А значит должно сработать с первого раза и правильно (даже если пользователь я сделал что-то не так).
А на счет "случайно нажали какую-то кнопку, можно подержать её не менее секунды" мне ближе заложить двойное быстрое нажатие, чтобы восстановить режим. Не дружу я со всем удержаниями кнопок, поэтому стараюсь от них уйти.

Короче, насколько Вас понял, Вы так хотели, без всяких таймеров:

39650

Sel
06.11.2018, 03:24
Короче, насколько Вас понял, Вы так хотели, без всяких таймеров:

39650

Спасибо, то, что надо.


Начал собирать временную сборку для ПР200. Добавил в нее Ваш пример но переделал на одну многорежимную лампу и заменил Т-триггер на свой макрос, который работает через DTRIG. В итоге в проекте, включени\выключение лампы происходит только по завершению отсчета ТР. При этом это единственный триггер, который ждет окончания отсчета, все остальные отрабатывают за 1 цикл. Например, если включить пошаговое выполнение, смоделировать одновременное нажатие l2, l3, l6, пройти цикл и отпустить l2, l3, l6 то в следующем цикле будут активны только Q2 и Q3, чтобы активировался Q5 нужно шагать до истечения таймера ТР. Если же запускать управление лампой в отдельном проекте, все происходит за 1 цикл.
Как вариант, именно для этого выключателя вместо DTRIG использовать XOR (в этом случае проект отрабатывает за 1 цикл)
Пробовал уйти от макроса и в поле проекта прописал триггер. Как только в цепочке именно этого выключателя появляется триггер, исполнение зависает на время, указанное для ТР.
Это фича лоджика, или на железе будет так же? Если на железе, то как отвязать триггер от ТР?

Макрос для кнопки со сбросом:
39652

Фрагмент проекта в котором проявляется фича:
39653

petera
06.11.2018, 10:01
Спасибо, то, что надо.


Начал собирать временную сборку для ПР200. Добавил в нее Ваш пример но переделал на одну многорежимную лампу и заменил Т-триггер на свой макрос, который работает через DTRIG. В итоге в проекте, включени\выключение лампы происходит только по завершению отсчета ТР. При этом это единственный триггер, который ждет окончания отсчета, все остальные отрабатывают за 1 цикл. Например, если включить пошаговое выполнение, смоделировать одновременное нажатие l2, l3, l6, пройти цикл и отпустить l2, l3, l6 то в следующем цикле будут активны только Q2 и Q3, чтобы активировался Q5 нужно шагать до истечения таймера ТР. Если же запускать управление лампой в отдельном проекте, все происходит за 1 цикл.
Как вариант, именно для этого выключателя вместо DTRIG использовать XOR (в этом случае проект отрабатывает за 1 цикл)
Пробовал уйти от макроса и в поле проекта прописал триггер. Как только в цепочке именно этого выключателя появляется триггер, исполнение зависает на время, указанное для ТР.
Это фича лоджика, или на железе будет так же? Если на железе, то как отвязать триггер от ТР?

Макрос для кнопки со сбросом:
39652

Фрагмент проекта в котором проявляется фича:
39653

Нафига в макросе D триггер, который используется как обычный SR триггер?
39659

melky
06.11.2018, 13:19
Откопал в старом проекте. Может сейчас это все можно сделать более красиво ?

1. Кнопка работает на однократное срабатывание - режим вкл/откл
2. При удержании кнопки при выключенном состоянии выхода происходит откл/вкл дополнительной функции (включать свет от команды роллеты в данном случае)
3. был вариант, где было две функции, каждую из которых можно было активировать и деактивировать 1-ю при выключенном выходе, 2-ю при включенном удержанием кнопки.

Для понимания, что произошла активация или деактивация после удержания кнопки происходит смена состояния выхода.

выключатели использовались кнопочные.

Sel
06.11.2018, 14:18
Нафига в макросе D триггер, который используется как обычный SR триггер?
39659

Потому что мне так проще. А, вообще это дело привычки. Если рассматривать именно как блок управления кнопкой, то туда и DTRIG, и SR, и XOR подходят и на всех можно организовать принудительный сброс. Но, так как я новичек, то я беру что мне проще. В DTRIG есть гарантированный сброс и мне это нужно. Да и не думаю, что DTRIG в рамках загрузки Пр200+прм, при минимальных расчетах, сильно съест рессурсы.

P.S. а если относительно моего вопроса, то любой триггер заставляет ждать окончания отсчета ТР.

melky
06.11.2018, 14:28
Sel по этому я выше и писал, что при нормальной работе кнопка должна давать команду срабатывания по заднему фронту
1 его легче заблокировать программно на режим удержания
2 его не надо ждать программно, только ваше физическое удержание кнопки увеличивает время реакции.

Sel
06.11.2018, 16:38
Sel по этому я выше и писал, что при нормальной работе кнопка должна давать команду срабатывания по заднему фронту
1 его легче заблокировать программно на режим удержания
2 его не надо ждать программно, только ваше физическое удержание кнопки увеличивает время реакции.
Это все понятно. Как с клавиши снять сигнал, я понял, а вот как его обрубить полностью, пока не понял.
Ну и второй вопрос - как учесть нюанс с задержкой работы триггера при использовании ТР.

Сергей0308
07.11.2018, 06:33
Потому что мне так проще. А, вообще это дело привычки. Если рассматривать именно как блок управления кнопкой, то туда и DTRIG, и SR, и XOR подходят и на всех можно организовать принудительный сброс. Но, так как я новичек, то я беру что мне проще. В DTRIG есть гарантированный сброс и мне это нужно. Да и не думаю, что DTRIG в рамках загрузки Пр200+прм, при минимальных расчетах, сильно съест рессурсы.

P.S. а если относительно моего вопроса, то любой триггер заставляет ждать окончания отсчета ТР.

Ну что за бред, если у Вас импульс формируется по заднему фронту(спаду), то разумеется он произойдёт по окончанию импульса ТР, кто же Вам запрещает, делайте как хочется! Тем более я в примере показал, как можно "прерывать" импульс ТР до окончания времени первоначальной уставки!

Sel
07.11.2018, 12:20
Ну что за бред, если у Вас импульс формируется по заднему фронту(спаду), то разумеется он произойдёт по окончанию импульса ТР, кто же Вам запрещает, делайте как хочется! Тем более я в примере показал, как можно "прерывать" импульс ТР до окончания времени первоначальной уставки!
Нашел свою ошибку. В примере "без проекта", в макросе был передний фронт (макросы называются одинаково, но разные в каждом проекте, поэтому и по разному работают).
Да, я бы хотел включать свет по заднему фронту. Есть ли способ это делать проще, чем использовать обнуление через сброс ТР?

Пока экспериментировал с выключателями, логика упорно вела приоритет выключателя. Но с появлением ТР, приоритет по импульсу переходит на ТР. Ведь задний фронт приходит на триггер от выключателя, но игнорируется.

melky
07.11.2018, 13:04
Да, я бы хотел включать свет по заднему фронту - так F-Trig же

Sel
07.11.2018, 13:24
Да, я бы хотел включать свет по заднему фронту - так F-Trig же
Если в данном примере заменить передний фронт на задний, то все будет срабатывать только по окончании отсчета таймера ТР.
А, на данный момент таймер ТР нужен (когда куплю прм, тогда буду писать полную версию и там уйду от данного таймера в этой связке выключателей)

melky
07.11.2018, 13:55
тьфу ты, при чем тут ваш ТР, я не привязываюсь к вашей схеме сейчас, я о принципе...
Нажали отпустили кнопку - сработал задний фронт
Держите кнопку - НЕТ заднего фронта.
Держите дольше кнопку, другим таймером БЛОКИРУЕТ работу заднего фронта.

Sel
07.11.2018, 17:37
тьфу ты, при чем тут ваш ТР, я не привязываюсь к вашей схеме сейчас, я о принципе...
Нажали отпустили кнопку - сработал задний фронт
Держите кнопку - НЕТ заднего фронта.
Держите дольше кнопку, другим таймером БЛОКИРУЕТ работу заднего фронта.
Вне задачи это просто, а когда есть конкретная задача, туда добавляются ограничения и все начинает работать по другому.
Поэтому я и пишу про свой пример. Простое нажатие на клавишу вкл\вык лампу. Удержание этой кнопки более 5с вводит в режим переключения режимов. Переключение режимов происходит соседней клавишей.
В этом варианте, который мне показал Сергей0308, если установить переключение по переднему фронту, все работает, как переводишь схему на задний фронт, срабатывание происходит после выполнения ТР. (так как у меня весь проект под включение света под задний фронт, то хочется и эту лампу посадить на задний фронт. а переводить весь проект на передний фронт, очень не просто)
39690

Чего-то я совсем запутался в квадратиках. То у меня все работает, но лампа выключается, то с переключениями режимов лампа мигает.

capzap
07.11.2018, 17:41
Вне задачи это просто, а когда есть конкретная задача, туда добавляются ограничения и все начинает работать по другому.
Поэтому я и пишу про свой пример. Простое нажатие на клавишу вкл\вык лампу. Удержание этой кнопки более 5с вводит в режим переключения режимов. Переключение режимов происходит соседней клавишей.
В этом варианте, который мне показал Сергей0308, если установить переключение по переднему фронту, все работает, как переводишь схему на задний фронт, срабатывание происходит после выполнения ТР. (так как у меня весь проект под включение света под задний фронт, то хочется и эту лампу посадить на задний фронт. а переводить весь проект на передний фронт, очень не просто)
39690

Чего-то я совсем запутался в квадратиках. То у меня все работает, но лампа выключается, то с переключениями режимов лампа мигает.
ну напишите логику в текстовом виде, её в "квадраты" перевести пару кликов мыши можно

Sel
07.11.2018, 19:24
ну напишите логику в текстовом виде, её в "квадраты" перевести пару кликов мыши можно

Это как? при помощи какого приложения?

capzap
07.11.2018, 19:31
CoDeSys из ST в FBD например

Sel
07.11.2018, 20:13
Понятно, там тоже свой синтаксис.
Я подумываю над изучением чего-нибудь в чем попроще для меня программировать. Под основной проект я, скорее всего так и сделаю, но временный проект уже в лоджике и осталось решить только последний вопрос с данной клавишей.

Сергей0308
07.11.2018, 23:26
Понятно, там тоже свой синтаксис.
Я подумываю над изучением чего-нибудь в чем попроще для меня программировать. Под основной проект я, скорее всего так и сделаю, но временный проект уже в лоджике и осталось решить только последний вопрос с данной клавишей.

Ну а зачем тогда говорили, что Вам текстовым языком программирования легче написать, так и сказали бы: если изучу текстовый язык программирования, то я предполагаю, что мне будет легче написать программу!
Я предполагаю, всё будет с точностью до наоборот: если Вы плохой водитель и Вас посадить на формулу один, Вы от этого лучше водить не станете, только больше неприятностей доставите и себе и людям!

Sel
08.11.2018, 10:54
Ну а зачем тогда говорили, что Вам текстовым языком программирования легче написать, так и сказали бы: если изучу текстовый язык программирования, то я предполагаю, что мне будет легче написать программу!
Я предполагаю, всё будет с точностью до наоборот: если Вы плохой водитель и Вас посадить на формулу один, Вы от этого лучше водить не станете, только больше неприятностей доставите и себе и людям!
Потому что я раньше изучал текстовые языки и мне понятнее текстовые условия.
В лоджик залез, так как в нем уже описаны все прерывания порты и прочее, что в текстовом языке (берем тот же С++) замумукаешься делать и надо изучать структуру аппаратной части. Вторая причина выбора лоджика, купил ПР и надо было его быстро внедрить. А прострую переключалку света на лоджике можно нарисовать минут за 5, даже не имея опыта с лоджиком и программированием.
Про кодесис слышал, но не вникал, так как он может чем-то и похож на С++, но в нем будут свои нюансы, которые тоже надо изучить. По прошлому опыту помню, что любой текстовый язык требует глубокого вникания и погружения в нюансы.
Плюс в лоджике есть макросы для работы с некоторыми устройствами, которые мне пригодятся. Да и он мне показался проще.
На деле же оказалось, что все просто, если простые условия, как только начинаются не стандартные условия, то берем бубен и в пляс.
Для примера: в текстовом языке по таймеру соединяем нужный вход с нужным выходом (пишется одной строчкой (условно if...{вых1:=вык1;}else{вых1:=вых1;}) и в итоге мы будем получать импульс с выключателя (а не таймера или условия) на нужный выход, в лоджике надо будет городить огород из условий. Конечно можно придумать сброс таймера, чтобы импульс формировался вовремя или прочие приблуды. Но для новичка это довольно сложно.
Я не говорил, что лоджик плохой (я говорю, что он мне не понятен, а точнее я не понял основного принципа лоджика), у него есть ряд плюсов, но он имеет много ограничений, на обход который требуется полное понимание как в нем все работает. И, конечно, практика.
Поэтому я и хочу этот проект домучить в лоджике, а когда буду делать полный проект, уже выбрать более удобную среду для реализации.

А на счет формулы 1. Конечно лучше водить не буду, но поеду быстрее ;)

P.S. Вот еще одно ограничение - в одну переменную нельзя записывать из нескольких источников. В итоге я имею сброс таймера или удобное задание параметров системы. Либо надо брать бубен и в пляс (в данном случае создаем отдельную переменную и ей перекидываем параметры, а вот если надо принудительно переменную обнулить, тут бубен большой понадобится). И именно поэтому мне дается лоджик с трудом. В нем встречаются ограничения, там где по моей логике их быть не должно. (относительно примера ниже, конечно можно задать переменные, которым в таблице переменных назначить значение по умолчанию, но это дико не удобно. У меня может быть до 25 выключателей и на них на всех будет висеть отключение всего света при удержании и, решив поменять величину задержки, мне придется 25 параметров менять, это явно не удобно. Проще по схеме ниже, Но...)
39697

P.P.S. Странно, но в прошлый раз (только познакомившись с лоджиком) я нарисовал алгоритм для этих двух ламп довольно быстро и у меня нет ложных выключений. А во второй заход, когда знаний должно быть больше, я забуксовал на том, что лампа своевременно не включается или вообще выключается. Когда не знаешь и мало практики, тяжко не линейные проекты рисовать.

Sel
08.11.2018, 12:52
Поэтому я и пишу про свой пример. Простое нажатие на клавишу вкл\вык лампу. Удержание этой кнопки более 5с вводит в режим переключения режимов. Переключение режимов происходит соседней клавишей.
В этом варианте, который мне показал Сергей0308, если установить переключение по переднему фронту, все работает, как переводишь схему на задний фронт, срабатывание происходит после выполнения ТР. (так как у меня весь проект под включение света под задний фронт, то хочется и эту лампу посадить на задний фронт. а переводить весь проект на передний фронт, очень не просто)
39690

Чего-то я совсем запутался в квадратиках. То у меня все работает, но лампа выключается, то с переключениями режимов лампа мигает.

Решил вопрос добавив DTRIG (правда мне кажется немного кривой способ и не все тонкости учтены, из-за чего могут быть ложные срабатывания)
После отпускании клавиши, при окончания отсчета ТР, лампа не меняет свой статус. При нажатии на клавишу и активном ТР, лампа вкл\выкл по заднему фронту. При удержании клавиши, соседней клавишей можно переключать режимы. (третья клавиша эмулятор программного сброса, т.е. принудительное выключение).
Пока промоделировал разные варианты нажатия и отпускания клавиши, ложных срабатываний нет. Есть глюк с пропуском срабатывания клавиши при сбросе ТР (переход с 1 сек на 0, выявляется быстрыми множественными нажатиями на клавишу), но, думаю на ПР такого не будет.

(FTRIG1 и DTRIG1 убираются в макрос, который един для всего проекта, поэтому введен отдельный триггер)
39698
Предполагаю, что при добавлении второй многорежимной лампы на второй выключатель, могут быть ложные срабатывания, но это уже не в этом проекте.


P.S. Спасибо всем за помощь. Отдельная благодарность Сергей0308 за разъяснения и примеры.
P.P.S. Входное задание немного изменилось. Сначала я предполагал, что для переключения режимов надо будет удерживать противоположную клавишу и переключать режимы клавишей вкл\выкл, но в последствии понял, что это не удобно, поэтому перешел к алгоритму - одной клавишей вкл\векл, ее же удерживаем для переключения режимов, переключаем режимы соседней. Задержку на удержание клавиши перед переключением режимов решил оставить, так как люблю лампы выключать одновременным мгновенным нажатием, в случае отсутствия задержки это приведет к переключению режима одной из ламп.

petera
08.11.2018, 13:14
to Sel
Так и не понял, http://www.owen.ru/forum/showthread.php?t=26216&p=291796&viewfull=1#post291796
в чем заключается "фишка" использовать D-триггер с двумя "болтающимися" входами D и C, когда для этого есть обычный RS-триггер. Да и места на схеме RS триггер занимает меньше

melky
08.11.2018, 13:19
я бы вообще делал на одной клавише ибо это ЛОГИЧНЕЕ. короткое нажатие - вкл/выкл, удерживание - смена режима, индикация смены режима собственно его изменение в реале на выходах.
з.ы. и по возможности режимов меньше

Newcomer
08.11.2018, 13:46
Добрый день.

В ПР200 оба интерфейса RS-485 сконфигурировал как Slave и задал одинаковые сетевые адреса. Одинаковые сетевые адреса допустимы ?

melky
08.11.2018, 13:50
Нет, или скажем так для разных переменных НЕТ. Адресное пространство общее.

Newcomer
08.11.2018, 14:05
Нет, или скажем так для разных переменных НЕТ. Адресное пространство общее.

Речь идет не об адресах сетевых переменных, а об сетевых адресах Slave устройств.

melky
08.11.2018, 14:13
Так вам о том же. Регистр 512 будет общим для обоих слейв интерфейсов. Недавно в какой-то теме это всплывало и Ревака Юрий это подтвердил, что адресное пространство общее.

Newcomer
08.11.2018, 14:29
Я веду речь об адресах прибора (ПР200) в двух разных сетях. Так понятно ?

melky
08.11.2018, 14:35
Newcomer вам в какой раз ответить ? найдите соответствующую тему или сообщение, где человек жаловался, на что и был дан ответ представителя Овен - АДРЕСНОЕ ПРОСТРАНСТВО ОБЩЕЕ

Newcomer
08.11.2018, 14:38
melky, сетевой адрес прибора и адрес сетевой переменной - это разные вещи.

Sel
08.11.2018, 14:56
to Sel
Так и не понял, http://www.owen.ru/forum/showthread.php?t=26216&p=291796&viewfull=1#post291796
в чем заключается "фишка" использовать D-триггер с двумя "болтающимися" входами D и C, когда для этого есть обычный RS-триггер. Да и места на схеме RS триггер занимает меньше
Дело привычки. Когда начал ковырять лоджик, запутался в регистрах, единственный на котором у меня получалось хоть что-то был DTRIG, вот он и остался. И, конечно я его и использую по старой памяти. Конечно я понимаю, что висячие хвосты и не определенные переменные это плохо, но учитывать все тонкости, особенно когда это не мое поле деятельности...
А, вообще, кмк если рассматривать выключатель, то мне кажется, что XOR более выгодное решение с точки зрения расхода системных ресурсов контроллера и триггеры избыточны для обычного выключателя. По крайней мере меня учили, что простая логика более выгодна чем все остальное. Все равно в итоге любая функция в процессоре приходит к элементарной логике, расходуя при этом дополнительные ресурсы.



я бы вообще делал на одной клавише ибо это ЛОГИЧНЕЕ. короткое нажатие - вкл/выкл, удерживание - смена режима, индикация смены режима собственно его изменение в реале на выходах.
з.ы. и по возможности режимов меньше
Мне удобнее на 2-х выключателях. Да и при 2-х клавишах я могу подумать, достаточно ли мне выбранного режима, а поняв, что я не хочу белый свет, а хочу желтый, сразу же выключить лампу и включить вторую. При использовании одной клавиши, добавляется лишнее время на "передумал"(сразу после выбора режима выключить лампу нельзя) и меньше времени на "подумал" ("а хватит ли мне столько света"). Любое ограничение это ограничение, я стараюсь их избегать. Да и не хочу вводить индикацию (мигание светом). А, вообще, все эти режимы это дело предпочтения каждого. Я больше года живу на переключении с 2-х клавиш и меня это полностью устраивает

melky
08.11.2018, 15:24
Newcomer извиняюсь, торможу. Если прибор на руках, проверить же легко, но я бы не стал так делать по одной причине - например одновременном запросе данных от панели и от Scada. Адрес совпадает, а запросы регистров могут не совпадать и вы получите кашу вместо данных.

Ревака Юрий
08.11.2018, 15:25
Newcomer вам в какой раз ответить ? найдите соответствующую тему или сообщение, где человек жаловался, на что и был дан ответ представителя Овен - АДРЕСНОЕ ПРОСТРАНСТВО ОБЩЕЕ

На разных интерфейсах адрес может быть одинаковый, если не писать в одни и те же сетевые адреса внутри ПР, проблем быть не должно. Просто это не очень целесообразно вешать 2 слейва отдельно на каждый интерфейс.

melky
08.11.2018, 15:31
Поигрался на тему режимов ламп и использовании одного кнопочного выключателя.
Смена режима удержанием только при включенных лампах. При выключенных кое что неправильно работает, так как каким-то лампам уже может быть разрешено включение.

Newcomer
08.11.2018, 15:37
Просто это не очень целесообразно вешать 2 слейва отдельно на каждый интерфейс.

На одном интерфейсе Master - ИП320, на другом интерфейсе Master - SCADA. Что тут нецелесообразно ? Вы как бы сделали ?

Ревака Юрий
08.11.2018, 16:19
На одном интерфейсе Master - ИП320, на другом интерфейсе Master - SCADA. Что тут нецелесообразно ? Вы как бы сделали ?

А, мне показалось что на интерфейсах слейвы.

Серёга Букашкин
08.11.2018, 16:25
На разных интерфейсах адрес может быть одинаковый, если не писать в одни и те же сетевые адреса внутри ПР, проблем быть не должно. Просто это не очень целесообразно вешать 2 слейва отдельно на каждый интерфейс.
Общее пространство действительно более удобно когда на каждый свой мастер. Грузишь только один буфер. Глобальный недостаток для меня - маленький размер этого буфера. Удвоить бы. Писать с разных мастеров надо конечно в разные адреса. Кстати есть проблемка когда два слейва: после записи программы и само запуска после этого они работают не так как просто при включении. В первом случае второй буфер бывает остается в нулях. Приходится всегда передёргивать питание после записи программы если два слейва, а программа грузит данные только в первый.

Sel
08.11.2018, 16:37
Правда не придумал как сделать индикацию смены режима...
Можно моргнуть рабочими лампами 1 раз, при переходе в режим переключения, ну а дальше индикацией будут сами лампы, работающие в разных режимах. Это-то не проблема.
И я бы использовал немного другой алгоритм. Включаем свет, далее удерживаем кнопку допустим 5с, рабочие лампы мигают, значит можно переключать режимы. Далее кнопкой выбираем нужный режим. Выбрали режим, подождали пару секунд, программа возвращается в начало (т.е. выходит из режима переключения). Можно завершать режим переключения двойным нажатием, но это не удобно, если вдруг переключать режимы захочется быстро (обычно это происходит когда знаешь какой режим нужен)

melky
08.11.2018, 16:43
Не думаю, что нужно моргать, это вредно для ламп. Да и быстро переключать тоже не думаю что нужно, так как переключать режимы можно только по кругу, а городить огород чтобы счетчиком считать номер режима и потом его включать тоже глупость...

з.ы. это надо даже не знаю куда? например кафе, рестораны и т.д. но иногда проще поставить 8 выключателей за стойкой ресепшена и вообще любой режим...

melky
12.11.2018, 17:29
Вот упростил несколько. Удержанием можно менять режим хоть из выключено, хоть из включенного состояния. 4 выхода на лампы, 15 комбинаций.

Вопрос только по круговому счетчику, а как сделать чтобы при отключении питания сохранялся режим ? пробовал через переменную, тогда он ведет себя неадекватно.

Сергей0308
12.11.2018, 18:43
Вот упростил несколько. Удержанием можно менять режим хоть из выключено, хоть из включенного состояния. 4 выхода на лампы, 15 комбинаций.

Вопрос только по круговому счетчику, а как сделать чтобы при отключении питания сохранялся режим ? пробовал через переменную, тогда он ведет себя неадекватно.

Наверно Вы опять как то по-своему пробовали: ВМЕСТО обратной связи(задержки на цикл) ставите входной и выходной блок энергонезависимой переменной, всё! Для этого специально вход счётчику прилепил, что бы переменная была вне макроса и везде доступная!

Короче, как-то так:


39750

И для светильников это не нужно, а в других местах вполне может пригодиться, например при ротации двигателей и тому подобному!
И зачем к значению счётчика всегда единичку прибавлять, не проще диапазон счётчика сделать не 0-14 как сейчас, а 1-15?!

melky
13.11.2018, 13:40
Сергей0308 вы когда делаете макросы, проверяйте их работу в разных комбинациях. +1 для того, чтобы при запуске ПР после подачи питания сразу был режим 1, а не 0. Но это до полного круга изменений, потом уже с 1 начинается, но при включении у меня было с 0.
По крайней мере так себя ведет симулятор.
Да вроде пробовал без обратной связи сделать переменные, сейчас проверю, но в симуляторе тоже вроде был косяк.

Не, это не столько для светильников а для сценариев для светильников. Я же выше писал, рестораны, кафе например.
Но как правило это прячется кучей выключателей за стойкой ресепшена, такое я точно видел часто.
А программа это так, баловство скорее всего.

з.ы. Мне всегда было непонятно, когда у макросов присутствует неадекватное поведение при разных схемах включения. Первый запуск симулятора ОЛ при использовании обратной связи и при использовании энергонезависимой переменной на скринах.

Сергей0308
13.11.2018, 14:13
Сергей0308 вы когда делаете макросы, проверяйте их работу в разных комбинациях. +1 для того, чтобы при запуске ПР после подачи питания сразу был режим 1, а не 0. Но это до полного круга изменений, потом уже с 1 начинается, но при включении у меня было с 0.
По крайней мере так себя ведет симулятор.
Да вроде пробовал без обратной связи сделать переменные, сейчас проверю, но в симуляторе тоже вроде был косяк.

Не, это не столько для светильников а для сценариев для светильников. Я же выше писал, рестораны, кафе например.
Но как правило это прячется кучей выключателей за стойкой ресепшена, такое я точно видел часто.
А программа это так, баловство скорее всего.

з.ы. Мне всегда было непонятно, когда у макросов присутствует неадекватное поведение при разных схемах включения. Первый запуск симулятора ОЛ при использовании обратной связи и при использовании энергонезависимой переменной на скринах.
Переменная энергонезависимая, какое значение было до выключения, такое и останется, спешу Вам напомнить, что собственно для этого Вы это и затеяли, плохо что уже забыли, также можно задать значение по умолчанию энергонезависимой переменной и даже при первом включении после заливки программы всё будет как задумано, если Вы этого не понимаете - никто Вам не виноват! Так что при энергонезависимых переменных никаких проблем не возникнет!

melky
13.11.2018, 14:30
Сергей0308 посмотрите внимательно на скрин. первая и вторая половины это ПЕРВЫЙ запуск в симуляторе, поведение макроса РАЗЛИЧНО при разных комбинациях включения.
На форуме много замечательных макросов всплывает, но что-то в ОЛ иногда приводит к тому. что поведение макросов меняется в зависимости от типа подключения, и именно такие вещи лично меня пугают :)

сейчас нет под рукой живой ПР-ки чтобы проверить. можно было бы через сетевую переменную прочесть что там при первом запуске при разных типах включения макроса.

Мое мнение такое, что работа макроса должна быть всегда одинакова как бы его не использовал.

Сергей0308
13.11.2018, 15:05
Сергей0308 посмотрите внимательно на скрин. первая и вторая половины это ПЕРВЫЙ запуск в симуляторе, поведение макроса РАЗЛИЧНО при разных комбинациях включения.
На форуме много замечательных макросов всплывает, но что-то в ОЛ иногда приводит к тому. что поведение макросов меняется в зависимости от типа подключения, и именно такие вещи лично меня пугают :)

сейчас нет под рукой живой ПР-ки чтобы проверить. можно было бы через сетевую переменную прочесть что там при первом запуске при разных типах включения макроса.

Мое мнение такое, что работа макроса должна быть всегда одинакова как бы его не использовал.

Вы хотите энергонезависимость симулировать, так она же не симулируется сейчас в ОЛ, мне кажется все проблемы в вашем воображении, имею ввиду с энергонезависимыми переменными! Короче, будет что-то реальное, а не ваши страхи - пишите, поправим!

melky
13.11.2018, 16:59
Сергей0308 все, нашел почему у меня так, я начальное значение задал равной 1. Работает как надо макрос, хотя и на Sel со счетчиком "кольцевой счетчик" работает так же в принципе. Блин, у вас в макросе 7 элементов, не считая всяких буль-ту-инт.

Ну, если высчитывать процессорное время может и важно как сделано, но если не париться то вариантов масса. в том числе и на обычном счетчике плюс 2 элемента.

Pavel7456
24.11.2018, 16:15
Доброго дня! Прошу помои в написании макроса на ПР110-220.12ДФ.8Р для управления 2 циркуляционными насосами. конфигурация должна включать ротацию по времени (2 недели) сигнал пуск, сигнал сухого хода( датчик реле давления на входе насосной группы ), сигнал работа насоса ( датчик реле перепада давления на входе и выходе насосной группы ), сигнал сброс аварии, а также общий выход аварии при возникновении нештатной ситуации на любом из насосов. Whats App 89053622565

vanoguru
11.12.2018, 14:35
Добрый день,помогите с кнопкой, вроде должно быть все просто, а не могу даже в голове накидать из чего должно это дело состоять. кнопка значит такая первое нажатие- старт, второе нажатие- стоп, долгое нажатие при старте - пауза , долгое нажатие при стопе - сброс. И еще одно как сделать так чтобы процесс продолжился если отключилось питание (таймер продолжил обратный отсчет после подачи питания до завершения). Заранее благодарю всем печенек. :)

Пьер
11.12.2018, 15:17
Добрый день,помогите с кнопкой, вроде должно быть все просто, а не могу даже в голове накидать из чего должно это дело состоять. кнопка значит такая первое нажатие- старт, второе нажатие- стоп, долгое нажатие при старте - пауза , долгое нажатие при стопе - сброс. И еще одно как сделать так чтобы процесс продолжился если отключилось питание (таймер продолжил обратный отсчет после подачи питания до завершения). Заранее благодарю всем печенек. :)

R_trig, F_TRIG, TON,TOF
При отключении питания, надо поставить ИБП и с реле сигнал.

Pavel_
11.12.2018, 15:50
И еще одно как сделать так чтобы процесс продолжился если отключилось питание (таймер продолжил обратный отсчет после подачи питания до завершения).
как вариант привязаться к часам реального времени.

Сергей0308
11.12.2018, 15:57
И еще одно как сделать так чтобы процесс продолжился если отключилось питание (таймер продолжил обратный отсчет после подачи питания до завершения). Заранее благодарю всем печенек. :)

Сделать таймер на основе энергонезависимого счётчика!

Типа такого:

40327

vanoguru
15.12.2018, 00:08
Спасибо примерно понял, но если можно распишете по выходам не могу понять что к чему. PS прошлая подсказка отлично работает, но с кнопкой я та и не могу понять как это делается, если можно ваши примеры объяснить, я далек от программирования, само-учусь а мануала мало и показать некому а готовое решение это не интересно, если не трудно прошу помощи с комментариями.

Сергей0308
15.12.2018, 02:28
Спасибо примерно понял, но если можно распишете по выходам не могу понять что к чему. PS прошлая подсказка отлично работает, но с кнопкой я та и не могу понять как это делается, если можно ваши примеры объяснить, я далек от программирования, само-учусь а мануала мало и показать некому а готовое решение это не интересно, если не трудно прошу помощи с комментариями.

Вы начните сначала: изучите функциональное назначение элементов ОЛ, это можно сравнить с буквами, а то, на мой взгляд, Вы пытаетесь написать слово не зная букв, что в принципе невозможно!
Макросы и назначение входов-выходов можно посмотреть здесь: http://www.owen.ru/forum/showthread.php?t=22361&page=16

Dallas
18.12.2018, 21:32
Не могу найти, где находятся макросы преобразования типов данных int to bool, bool to int и другие.
Подскажите, где лежат.

rovki
18.12.2018, 21:40
Не могу найти, где находятся макросы преобразования типов данных int to bool, bool to int и другие.
Подскажите, где лежат.

Это не макросы ,а преобразование типов данных

Dallas
19.12.2018, 07:24
Как задать время включения и время выключения с экрана для таймера Clock, чтобы он срабатывал 1 раз в сутки.

rovki
19.12.2018, 08:33
Ни как .используйте сравнение переменных с экрана (в которые задаете значение времени) и сервисные переменные времени .

Dallas
19.12.2018, 08:47
Ни как .используйте сравнение переменных с экрана (в которые задаете значение времени) и сервисные переменные времени .

rovki, спасибо Вам большое.

Могли бы написать более детально. Как задать часы и минуты с экрана я понимаю. А откуда взять часы и минуты сервисных переменных.

Aviator_VZh
19.12.2018, 09:31
Прямо из сервисных переменных.

40434

Dallas
19.12.2018, 17:37
Подскажите как красиво решить следующюю задачу.

Котел управляется по таймеру.
Предусматриваю три режима работы:
1. Выкл 0
2. Вкл. 1 постоянно включено
3. Авто 2 - работа по таймеру.

Как лучше реализовать данный алгоритм?

melky
19.12.2018, 22:26
Dallas планируете использовать физические входы для переключения или просто переменные ? в любом случае нужно два входа или две переменных чтобы получить 3 состояния.

Aviator_VZh
19.12.2018, 23:32
Если управлять с экрана достаточно одной int переменной и мультиплексор MXB или самому забабахать на 3 входа.

Dallas
20.12.2018, 07:43
Подскажите как красиво решить следующюю задачу.

Котел управляется по таймеру.
Предусматриваю три режима работы:
1. Выкл 0
2. Вкл. 1 постоянно включено
3. Авто 2 - работа по таймеру.

Как лучше реализовать данный алгоритм?

У меня получилось как то так.
40449

Ревака Юрий
20.12.2018, 11:21
У меня получилось как то так.
40449

Посмотрите макрос CLOCK_WEEK, там часть алгоритма уже реализована, точнее там это уже все есть и даже больше, но возможно не все потребуется для котла.

Сергей0308
20.12.2018, 20:19
У меня получилось как то так.
40449

Вот здесь когда-то делал на 32 уставки: http://www.owen.ru/forum/showthread.php?t=23201&page=13

40467

Dallas
23.12.2018, 12:06
Хочу сделать отображение в задании таймера минут в таком виде : 01:05
А получается 1: 1
Как добавить нолики?
40498
40499

Еще вопрос. Таймер у меня запускается RS тригером и если, например, по причине отсутствия питания контроллер пропустит время включения, то тригер не взведется - таймер не включится. Как лучше реализовать, чтобы таймер в любом случае включился.

Сергей0308
23.12.2018, 14:39
Хочу сделать отображение в задании таймера минут в таком виде : 01:05
А получается 1: 1
Как добавить нолики?
40498
40499

Еще вопрос. Таймер у меня запускается RS тригером и если, например, по причине отсутствия питания контроллер пропустит время включения, то тригер не взведется - таймер не включится. Как лучше реализовать, чтобы таймер в любом случае включился.

Если только отображение, то без проблем можно как-то так сделать(в часах, минутах и секундах зажёг потухшие нули): http://www.owen.ru/forum/showthread.php?t=30286!
У Вас насколько я понял, и редактировать нужно, тогда это довольно проблематично, на мой взгляд, если вообще возможно, я такого не встречал и городить бы сам не стал, смирился бы с потухшими нолями!

По второму вопросу: делайте сравнение на большее, как-то так:


40501

Dallas
23.12.2018, 17:54
Сергей0308,
перевел все время в минуты от начала суток. Если время включения меньше времени выключения, то все Ок.
Если наоборот время включения больше времени выкл, например вкл. в 23:00 выкл в 7:00.
Нужно еще одно условие добавить - придумать не могу :-)

Сергей0308
23.12.2018, 18:36
Сергей0308,
перевел все время в минуты от начала суток. Если время включения меньше времени выключения, то все Ок.
Если наоборот время включения больше времени выкл, например вкл. в 23:00 выкл в 7:00.
Нужно еще одно условие добавить - придумать не могу :-)

Такое уже в какой-то теме обсуждали(http://www.owen.ru/forum/showthread.php?t=17153&page=272) и многие свои варианты предлагали на случай случайного отключения-включения питания и я в том числе, если не ошибаюсь в онлайн базе макросов должен быть подобный макрос! Вы для чего свой вариант пытаетесь сделать? Если пока не получается пользуйтесь уже рабочими вариантами!
Вот мой вариант:


40502


40503


Или тему поищите где это обсуждали или в онлайн базе макросов посмотрите, может и там есть!

Dallas
24.12.2018, 10:08
Как можно вывести мигающий символ или строку?

melky
24.12.2018, 10:24
Dallas кажется через список, значение 0 - пусто, значение 1 - ваш символ

Ревака Юрий
24.12.2018, 10:54
Как можно вывести мигающий символ или строку?

Можно на переменную типа BOOL назначить текст(символ) для true и false, и блинком или по событию вкл/выкл.

Dallas
25.12.2018, 10:12
Хочу подключить Модбас реле, при помощи 5 функции, адрес 1, регистры от 0 до 7

Соответственно иду в закладку Настройки.
4053340533

Что такое Статус, что значит Опрос.

Какие параметры на данном экране вписать, чтобы девайс заработал?

Салихов Ильдар
26.12.2018, 13:16
ошибся... :)

Ревака Юрий
26.12.2018, 14:20
Хочу подключить Модбас реле, при помощи 5 функции, адрес 1, регистры от 0 до 7

Соответственно иду в закладку Настройки.
4053340533

Что такое Статус, что значит Опрос.

Какие параметры на данном экране вписать, чтобы девайс заработал?

Смотрите описание в Help к OWENLogic, у меня в подписи обновленная версия, в которой постарались раскрыть наиболее часто задаваемые вопросы, пока она адаптируется для включения в основной релиз и в составе пакета ее нет.

Diminator
08.01.2019, 15:23
Думаю что такой вопрос уже был, но найти ответ не могу, подскажите можно ли Таймер с задержкой включения/отключения выставлять время через переменную?

Ревака Юрий
08.01.2019, 15:32
Думаю что такой вопрос уже был, но найти ответ не могу, подскажите можно ли Таймер с задержкой включения/отключения выставлять время через переменную?

Можно, смотрите Help у меня в подиси, раздел "Быстрый старт".

Diminator
08.01.2019, 15:59
Простите, туповат, но так и не понял как переменную назначить функциональному блоку TOF или TON для установки времени? Или я вообще не в ту сторону смотрю?

Ревака Юрий
08.01.2019, 16:49
Простите, туповат, но так и не понял как переменную назначить функциональному блоку TOF или TON для установки времени? Или я вообще не в ту сторону смотрю?

Там же все с картинками разрисовано,:) тут проект http://www.owen.ru/forum/showthread.php?t=28369&p=272136&viewfull=1#post272136.

sebikov
11.01.2019, 09:04
Добрый день, забацал макрос селектор выбора состояний исполнительного устройства по нажатию кнопки
Имеет вход положительного счета, входы задания нижнего и верхнего предела счета, вход сброса, вход разрешения перехода в выключенное состояние.
На выходе есть 4 состояния рабочей программы Q1-Q4, выход индикации перехода в состояние "0" QZ, выход индикации сбора или неинициализированного состояния макроса, выход целочисленного счета.
Работает так. При первом нажатии счетного входа устанавливает в "1" выход соответствующий нижнему пределу счета. При каждом нажатии увеличивает счет и включает соответствующий выход. При достижении максимального чтета происходит переключение на выход минимальной уставки.
При наличии на входе разрешения нуля счетчик с максимального значения переходит на состояние "0", а с него при следущем нажатии тактовой кнопки на минимальное значение. Например если уставка Мин=3, то с н" 0" перейдет сразу на "3".
При сбросе переходит в состояние "выключен" с отдельной индикацией по выходу QR
При любых режимах работает строго за один цикл

Для чего этот макрос мне нужен. Он будет управлять работой аспирационной установки в мастерской. Каждое нажатие на кнопку счета переключает скорости работы вытяжного вентилятора. При включении двух и более станков будет блокироваться переход на минимальные режимы работы вытяжки а также выключение в момент работы. Этот же макрос будет задавать уставку времени отключения установки после окончания работы, мгновенное отключение, 1 минута, 5 минут, 30 минут

sebikov
13.01.2019, 07:05
добрый день. Ищу простой способ снять тайминги (временные диаграммы) с программы или макроса в ОЛ. Пролистал все темы в первой части форума, ничего не нашел. На ум пришло уже сделать сдвиговый регистр, поставить несколько штук в ряд и затем делать распознавание через снимок экрана

Ревака Юрий
13.01.2019, 12:16
добрый день. Ищу простой способ снять тайминги (временные диаграммы) с программы или макроса в ОЛ. Пролистал все темы в первой части форума, ничего не нашел. На ум пришло уже сделать сдвиговый регистр, поставить несколько штук в ряд и затем делать распознавание через снимок экрана

Добрый день. Какая цель всего этого мероприятия?

sebikov
13.01.2019, 12:59
Добрый день. Какая цель всего этого мероприятия?
Еть
Цель простая, быстро и качественно сделать работоспособную программу, точно соответствующую техзаданию. Для этого хочу сделать листинг работы схемы или макроса по входам-выходам а также контрольным точкам. В идеале это могли бы сделать вы, усовершенствовав таблицу "Переменные" с выводом в текстовый файл. Иначе видимо придется делать по колхозному симулировать с выводом на сдвиговых регистрах , затем скриншотить экран и распознавать

Ревака Юрий
15.01.2019, 12:31
Еть
Цель простая, быстро и качественно сделать работоспособную программу, точно соответствующую техзаданию. Для этого хочу сделать листинг работы схемы или макроса по входам-выходам а также контрольным точкам. В идеале это могли бы сделать вы, усовершенствовав таблицу "Переменные" с выводом в текстовый файл. Иначе видимо придется делать по колхозному симулировать с выводом на сдвиговых регистрах , затем скриншотить экран и распознавать

А какое у Вас техзадание? Последние три предложения я не понял, если честно.

sebikov
15.01.2019, 21:03
Техзадание я придумаю любое какое удастся воплотить на ПР, не вышивать же мне его заставлять )))
По последнему вопросу. Делаем простой макрос из элементов ИЛИ столбиком, выход каждого соединяем со входом следущего связью с задержкой. Я вот сделал 40 штук в высоту, больше у меня на экран не лезет. Главный вход макроса соединяем с той точкой где хотим снять временную диаграмму, а выход через элемент ИЛИ соединяем на любой физ выход Q схемы, главное чтобы симулятор его из просчета не выкинул. Теперь при каждом нажатии кнопки Такт мы имеем сдвиг вниз по схеме нулей и единиц. То же самое и для типов INT и FLOAT. После запуска схемы прогнали то количество тактов на которое расчитан этот импровизированный регистр, заскриншотили экран и прогнали через распознаватель типа FineReader. И дальше пошли гонять пока не закончатся все варианты входных условий.
После окончания симуляции все данные выгружаются из распознавалки в эксель и в нем строится диаграмма состояний входов и выходов схемы. На этой схеме уже будет видно всё что творится со схемой, все косяки и ляпы как исполнения так и задания.
Вчера я таким костылем прогнал несколько своих пробных макросов и сразу нашел где в каждом из них ошибки.
Скрин приложить не могу, но думаю всё и так понятно

rovki
16.01.2019, 01:34
Обычно все диаграммы прогоняются в голове у разработчика на этапе рисования схемы ...А если не владеть схемотехникой ,то и эксель не поможет ...Зачем такие крайности и инструменты в проектировании схем .Даже когда раньше делали схемы на куче ИС ,при отладке ни кто осциллографом не тыкал и не запоминал все входа \выхода.

sebikov
16.01.2019, 06:57
Rovki, гормальный костыль должен быть не заметен в работе, с этим согласен. Но вот мне даже такой неудобный инструмент мгновенно помог понять где ошибка , например один из выходов макроса запаздывал на такт изза циклической связи. Переделал на задержку в правильном месте - всё стало нормально

capzap
16.01.2019, 08:25
Rovki, гормальный костыль должен быть не заметен в работе, с этим согласен. Но вот мне даже такой неудобный инструмент мгновенно помог понять где ошибка , например один из выходов макроса запаздывал на такт изза циклической связи. Переделал на задержку в правильном месте - всё стало нормально

а не пробовали просто проект в эмуляции пошагово выполнять?

Ревака Юрий
16.01.2019, 09:00
Техзадание я придумаю любое какое удастся воплотить на ПР, не вышивать же мне его заставлять )))
По последнему вопросу. Делаем простой макрос из элементов ИЛИ столбиком, выход каждого соединяем со входом следущего связью с задержкой. Я вот сделал 40 штук в высоту, больше у меня на экран не лезет. Главный вход макроса соединяем с той точкой где хотим снять временную диаграмму, а выход через элемент ИЛИ соединяем на любой физ выход Q схемы, главное чтобы симулятор его из просчета не выкинул. Теперь при каждом нажатии кнопки Такт мы имеем сдвиг вниз по схеме нулей и единиц. То же самое и для типов INT и FLOAT. После запуска схемы прогнали то количество тактов на которое расчитан этот импровизированный регистр, заскриншотили экран и прогнали через распознаватель типа FineReader. И дальше пошли гонять пока не закончатся все варианты входных условий.
После окончания симуляции все данные выгружаются из распознавалки в эксель и в нем строится диаграмма состояний входов и выходов схемы. На этой схеме уже будет видно всё что творится со схемой, все косяки и ляпы как исполнения так и задания.
Вчера я таким костылем прогнал несколько своих пробных макросов и сразу нашел где в каждом из них ошибки.
Скрин приложить не могу, но думаю всё и так понятно

Мысль интересная, но временные ресурсы, я для подобных задач битовые логи на карту делал, но пока ни разу в "бою" не применял.

эндрю
18.02.2019, 19:04
Добрый вечерНи как не получаеться переложить на язык Лоджика алгоритм:
IF i4=0 THEN
temp_1: = TRUE;
END IF

IF temp_1=1 THEN
Q5: = мигаем выходом;
END IF

IF I4 = 1 & temp_1 =0 THEN
Q5: = TRUE;
END IF

IF I6 =1 THEN
temp_1: = FOLSE;
END IF
Я не прошу чтобы мне написали прогу, как установить TEMP_1 в 1 если изначально до запуска программы там высокий логичиский уровень? 41286

эндрю
18.02.2019, 19:07
И второй вопрос, не нашел в лоджике описание работы с линией задержки на один цикл, справка открывает пустую страницу. Спасибо.

Василий Кашуба
18.02.2019, 22:39
И второй вопрос, не нашел в лоджике описание работы с линией задержки на один цикл, справка открывает пустую страницу. Спасибо.
Почитайте здесь. Обновленная справка по OWENLogic http://ftp-ow.owen.ru/softupdate/OWE..._HELP_1.12.chm (http://ftp-ow.owen.ru/softupdate/OWEN%20Logic/OnlineMacroes/OwenLogic_HELP_1.12.chm)

sdy
18.02.2019, 22:55
Добрый вечерНи как не получаеться переложить на язык Лоджика алгоритм:
IF i4=0 THEN
temp_1: = TRUE;
END IF

IF temp_1=1 THEN
Q5: = мигаем выходом;
END IF

IF I4 = 1 & temp_1 =0 THEN
Q5: = TRUE;
END IF

IF I6 =1 THEN
temp_1: = FOLSE;
END IF
Я не прошу чтобы мне написали прогу, как установить TEMP_1 в 1 если изначально до запуска программы там высокий логичиский уровень? 41286

Может так:
41288

FDU1970
19.02.2019, 07:32
Здравствуйте, подскажите пожалуйста как сделать ( может есть у кого готовое решение): нужен таймер с задержкой на отключение с принудительным сбросом. Пытаюсь решить следующую задачу: Есть 9 аварийных сигналов, по поступлению любого или нескольких звучит сирена.(это сделал). Есть кнопка сброса звука сирены (при нажатии звук сбрасывается на определенное время), если за это время аварии не устранены звук возобновляется.(это сделал). Теперь что не получается: получили аварию, звук сбросили, устранили аварию, а отсчет времени сброса звука продолжается. и если в момент продолжения отсчета времени сброса звука получаем новую аварию, сирена не звучит, а должна!

эндрю
19.02.2019, 07:51
Нет к сожалению вариант предложеный sdy не работает, Если словами то алгоритм следоющий. Есть концевик который контролирует работу конвеера и нормальное (замкнутое ) состояние концевика отражаеться постоянно горящей лампой. Если в силу обстоятельств концевик разомкнулся лампа должна мигать конвеер остановиться и оставаться в таком состоянии до момента пока оператор не сбросит (квитирует)ошибку концевика. Дело в том что концевиков 4 и для того чтобы ремонтная служба смогла быстро понять ричину остановки вот и решил ввести элимент квитирования.. Без квитрирования у меня все получаеться, а вот как запомнить аварийную ситуацию пока туго. Ну ладно напишу упрощённый вариант а там может и переделую.
Почитал справку но про линию задержки так и не встретил описания, только о времени цикла и все может ткнёте. Спасибо.

эндрю
19.02.2019, 11:26
нашёл видио https://www.youtube.com/watch?v=mv6fStxYf8w про обратную связь с этого же топика, обяснения с 10 минуты, подпробно

Ревака Юрий
19.02.2019, 11:55
Нет к сожалению вариант предложеный sdy не работает, Если словами то алгоритм следоющий. Есть концевик который контролирует работу конвеера и нормальное (замкнутое ) состояние концевика отражаеться постоянно горящей лампой. Если в силу обстоятельств концевик разомкнулся лампа должна мигать конвеер остановиться и оставаться в таком состоянии до момента пока оператор не сбросит (квитирует)ошибку концевика. Дело в том что концевиков 4 и для того чтобы ремонтная служба смогла быстро понять ричину остановки вот и решил ввести элимент квитирования.. Без квитрирования у меня все получаеться, а вот как запомнить аварийную ситуацию пока туго. Ну ладно напишу упрощённый вариант а там может и переделую.
Почитал справку но про линию задержки так и не встретил описания, только о времени цикла и все может ткнёте. Спасибо.

Описание дает больше информации, чем код выше, у меня вырисовался такой вариант, думаю можно размножить на несколько каналов.

игорь68
19.02.2019, 12:28
Можно как то так. Только в моем варанте пока нет питания на КВ( конвеер не ВКЛЮЧЕН) АВАРИЯ . После "запуска конвеера (1ка на входах ПР200) произвести "сброс" это вход номер 5 ПР200. Конвеер в работе. При Аварии любого входа (1-4) тот вход и начинает мигать. После починки нужно сбросить аварию.

Сергей0308
19.02.2019, 13:17
Нет к сожалению вариант предложеный sdy не работает, Если словами то алгоритм следоющий. Есть концевик который контролирует работу конвеера и нормальное (замкнутое ) состояние концевика отражаеться постоянно горящей лампой. Если в силу обстоятельств концевик разомкнулся лампа должна мигать конвеер остановиться и оставаться в таком состоянии до момента пока оператор не сбросит (квитирует)ошибку концевика. Дело в том что концевиков 4 и для того чтобы ремонтная служба смогла быстро понять ричину остановки вот и решил ввести элимент квитирования.. Без квитрирования у меня все получаеться, а вот как запомнить аварийную ситуацию пока туго. Ну ладно напишу упрощённый вариант а там может и переделую.
Почитал справку но про линию задержки так и не встретил описания, только о времени цикла и все может ткнёте. Спасибо.

Тогда до кучи, мой вариант:

41303

Или так:

41306

German03
21.02.2019, 05:04
Добрый день!

Может кто подскажет, что сие значит?

41345

Пытаюсь открыть некоторые программы с форума, и появляется оно. Со своими программами проблем нет. Использую версию 1.11, возможен конфликт версий? Или проект созданный на одной версии обязан открываться любой версией OwenLogic? И еще вопрос: Есть какая либо возможность переносить обновления версии на другой комп? Использую три компа, один из которых ноутбук. Не всегда есть возможность подключать его к интернету, например на объекте. И выходит, что если обновил на одном стационарном компе, то надо не просто обновлять на двух других, но делать это как можно быстрее. Иначе обновление это потеряет актуальность, а выходят они очень часто, как я заметил. Проекты у меня кочуют из одного компа в другой, и случалось после обновления через неделю на домашнем, оказывалось что эта версия более новая, чем обновленная неделей раньше на работе. И опять все по кругу, геморр какой-то бестолковый, короче говоря, получается. Да и дома не всегда интернет есть. Выходит, проекты адаптированные к новой версии, уже дома, на старой, не откроешь. В итоге отказался я от всех обновлений и работаю без них. Просто игнорирую сообщения при запуске.

melky
21.02.2019, 09:09
Ставьте параллельно новые версии ОЛ, просто программа создана в более новой версии.
Да, с поддержкой старыми версиями программ из новых у них полная беда....

Алексеев
21.02.2019, 09:26
Все программы с форума открываются в ОЛ13.184 .
В папку OWENLOGIC (13) установите OWENLOGIC 1.13.184

German03
21.02.2019, 09:47
Все программы с форума открываются в ОЛ13.184 .


да, я это уже понял. Придется обновлять по кругу на всех ПК

Алексеев
21.02.2019, 10:04
да, я это уже понял. Придется обновлять по кругу на всех ПК

Можно не обновлять а установить в отдельную папку и обновлять только ОЛ13 41350

German03
23.02.2019, 12:00
Можно не обновлять а установить в отдельную папку и обновлять только ОЛ13 41350

Можно конечно, но больше путаницы будет. Я уже обновил

ded_ivan
10.03.2019, 11:44
Это же проще пареной репы, короче, как-то так:

37006

Можете поставить такой кольцевой счётчик с входами для настройки диапазона, тогда диапазон и с экрана можно менять, без перезаливки программы!

37007

В этой теме: http://www.owen.ru/forum/showthread.php?t=28531&page=9
И в этой: http://www.owen.ru/forum/showthread.php?t=27872
Ещё более подходящий здесь в посте#4918: http://www.owen.ru/forum/showthread.php?t=7023&page=492

Сергей, добрый день!

вот я опять вернусь к проекту. пока писал вопрос 10 раз все переделал и додумал как через сетевую переменную передать номер пары, которая должна работать также по таймеру с теми же самыми условиями.
вообщем по модбасу передаю общее время работы, время циклов(работа /пауза), номер рабочей пары, режим работы авто или мануал, и обратно отдаю режимы работы и прочие параметры.
если параметры меньше допустимых корретирую на минимальные. Оптимально ли я сделал или нет?
оцените кривизну

Сергей0308
10.03.2019, 16:15
Сергей, добрый день!

вот я опять вернусь к проекту. пока писал вопрос 10 раз все переделал и додумал как через сетевую переменную передать номер пары, которая должна работать также по таймеру с теми же самыми условиями.
вообщем по модбасу передаю общее время работы, время циклов(работа /пауза), номер рабочей пары, режим работы авто или мануал, и обратно отдаю режимы работы и прочие параметры.
если параметры меньше допустимых корретирую на минимальные. Оптимально ли я сделал или нет?
оцените кривизну

Я не вхожу в общество почитателей Вашего таланта! Мне кажется этот макрос надо доделать, там на выход ничего не приходит:


41597

41598

И в данном случае вообще нет необходимости в данном макросе, достаточно преведущего на четыре входа!

И я бы вот этот макрос переделал, просто лабуда какая-то получилась:

41599

41600

Это так, на первый взгляд, не вникая в тонкости, чего вы хотели и как это добились!

В общем, главное, что бы работало, так, как Вы хотели, остальное, надеюсь, придёт!
Помните, как в армии говорили: дембель, как и смерть - неизбежен, но что из них наступит раньше?

ded_ivan
10.03.2019, 16:57
Я не вхожу в общество почитателей Вашего таланта! Мне кажется этот макрос надо доделать, там на выход ничего не приходит:


41597

41598

И в данном случае вообще нет необходимости в данном макросе, достаточно преведущего на четыре входа!

И я бы вот этот макрос переделал, просто лабуда какая-то получилась:

41599

41600

Это так, на первый взгляд, не вникая в тонкости, чего вы хотели и как это добились!

В общем, главное, что бы работало, так, как Вы хотели, остальное, надеюсь, придёт!
Помните, как в армии говорили: дембель, как и смерть - неизбежен, но что из них наступит раньше?

Странно, мне показалось, что то промелькнуло в мою сторону! =)
Жаль, что в моем таланте вы не нашли талант. =)

Вообщем, в макросе описка, просто хотел сократить и поспешил.

про второй макрос понял, исправлюсь.

Большое спасибо за Ваши труды и педагогические старания. очень полезный опыт!!! Готов отблагодарить душевно!

ВладиславВладимирович
10.03.2019, 20:32
Всем доброго времени суток.
Имеется такая проблема: есть контроллер источника питания магнетрона, который выступает слэйвом. В него необходимо записывать 8 отдельных бит(т.е., в скаде есть 8 кнопок включить-выключить определенные функции ИП) единым словом - числом от 0 до 256. Есть ли стандартная или библиотечная функция для этого и как обычно решается такой вопрос?

bayk
10.03.2019, 20:35
Непонятно. Так вам отдельно надо биты или их надо в байт запаковывать и передавать?

ВладиславВладимирович
10.03.2019, 20:51
Нужно отдельные биты запаковать в байт и передать

Сергей0308
10.03.2019, 21:37
Странно, мне показалось, что то промелькнуло в мою сторону! =)
Жаль, что в моем таланте вы не нашли талант. =)

Вообщем, в макросе описка, просто хотел сократить и поспешил.

про второй макрос понял, исправлюсь.

Большое спасибо за Ваши труды и педагогические старания. очень полезный опыт!!! Готов отблагодарить душевно!

И в первом макросе 5 и 6 входы соответствуют "5" на выходе, тоже надо поменять, что бы их различать! По второму макросу, мне кажется так всё очевидным, короче, я как бы так сделал:


41604

Здесь действительно мне не понятно: если напрашивается простой и очевидный вариант, зачем что-то выдумывать более сложное?

Сергей0308
10.03.2019, 21:44
Нужно отдельные биты запаковать в байт и передать

Наверно так:

41607

ded_ivan
10.03.2019, 23:16
И в первом макросе 5 и 6 входы соответствуют "5" на выходе, тоже надо поменять, что бы их различать! По второму макросу, мне кажется так всё очевидным, короче, я как бы так сделал:


41604

Здесь действительно мне не понятно: если напрашивается простой и очевидный вариант, зачем что-то выдумывать более сложное?

уже поправил. голова не соображала вечером наверное.


Пытаюсь извлечть из Blink1 время работы и паузы. Но похоже в режиме запуска таймера считать текущие значения Ti и Th

Сергей0308
11.03.2019, 00:16
уже поправил. голова не соображала вечером наверное.


Пытаюсь извлечть из Blink1 время работы и паузы. Но похоже в режиме запуска таймера считать текущие значения Ti и Th

А зачем их считывать с блинка, если они заранее известны, Вы же их задаёте! Со вторым макросом всё ещё хуже, Вы никак не можете отойти от своих чудачеств, впрочем, без этого жизнь наверно стала бы скучнее!

ded_ivan
11.03.2019, 09:56
А зачем их считывать с блинка, если они заранее известны, Вы же их задаёте! Со вторым макросом всё ещё хуже, Вы никак не можете отойти от своих чудачеств, впрочем, без этого жизнь наверно стала бы скучнее!

=) ну можно было проще, я уже потом увидел =)
по поводу блинка - я хотел на втором экране увидеть оставшееся время работы реле. но видимо это нужно как то по другому решать. примерно как в среде программирования - изменяются показания Th и Ti в интерактивном режиме

Сергей0308
11.03.2019, 10:05
=) ну можно было проще, я уже потом увидел =)
по поводу блинка - я хотел на втором экране увидеть оставшееся время работы реле. но видимо это нужно как то по другому решать. примерно как в среде программирования - изменяются показания Th и Ti в интерактивном режиме

А сейчас, что нельзя уже поправить, я же и свой вариант выложил, даже не вариант, какой там вариант, самая наипростейшая логика, 2И, первый вход инверсный!
Для этого нужен специальный таймер с обратным отсчётом времени, я выкладывал подобные:
http://www.owen.ru/forum/showthread.php?t=27872&page=12

ded_ivan
11.03.2019, 13:53
А сейчас, что нельзя уже поправить, я же и свой вариант выложил, даже не вариант, какой там вариант, самая наипростейшая логика, 2И, первый вход инверсный!
Для этого нужен специальный таймер с обратным отсчётом времени, я выкладывал подобные:
http://www.owen.ru/forum/showthread.php?t=27872&page=12
исправлю конечно...
по таймеру - он запускается параллельно blink1 и живет своей жизнью, я так понимаю?

игорь68
11.03.2019, 17:48
Как точнее перевести сопротивление (1ком) в INT.

Сергей0308
11.03.2019, 18:21
исправлю конечно...
по таймеру - он запускается параллельно blink1 и живет своей жизнью, я так понимаю?

Вместо блинка! Блинк тогда станет не нужен!

Сергей0308
11.03.2019, 18:31
Как точнее перевести сопротивление (1ком) в INT.

Я так предполагаю диапазона 0-1000 Ом? Если для передачи куда либо можно FLOAT умножить на 10, округлить до целых и преобразовать в INT, после передачи преобразовать во FLOAT и разделить на 10, получится с точностью до десятых долей ома!

игорь68
12.03.2019, 10:21
Продолжение о переводе перевести сопротивление (1ком) в INT. Нужно при 0 ом INT должен иметь значение 0. При значении 1000 ом INT должен иметь значение 255.
Объясняю почему и для чего. Хочу сделать контроллер декоративной подсветки на LED ленте. Практически во всех программах задача уровня цвета от 0-255.
Как будет работать. 3 переменных резистора на аналоговых входа. Задаем цвет. Получаем 3 переменных INT (RGB) которые записываю в "РЕЦЕПТ". По внешней кнопке меняю рецепт тем самым меняю цвет ленты.

Сергей0308
12.03.2019, 10:33
Продолжение о переводе перевести сопротивление (1ком) в INT. Нужно при 0 ом INT должен иметь значение 0. При значении 1000 ом INT должен иметь значение 255.
Объясняю почему и для чего. Хочу сделать контроллер декоративной подсветки на LED ленте. Практически во всех программах задача уровня цвета от 0-255.
Как будет работать. 3 переменных резистора на аналоговых входа. Задаем цвет. Получаем 3 переменных INT (RGB) которые записываю в "РЕЦЕПТ". По внешней кнопке меняю рецепт тем самым меняю цвет ленты.

Вот подобное делал, Вам останется в инт преобразовать:

41669

Вот чуть выше, полностью аналогично как у Вас и переменный резистор номиналом 1 кОм:

41697

Только вместо константы 1000(я отметил) нужное Вам значение поставить 255, всё!

Finik33
12.03.2019, 10:34
Добрый день, помогите со схемой подключения преобразователя АС3М к rs232 ПЛК110 М02. Пробовал через кабель КС16 не работает, подключаю СИ8 протокол ОВЕН.
Спасибо.

Ревака Юрий
12.03.2019, 10:37
Продолжение о переводе перевести сопротивление (1ком) в INT. Нужно при 0 ом INT должен иметь значение 0. При значении 1000 ом INT должен иметь значение 255.
Объясняю почему и для чего. Хочу сделать контроллер декоративной подсветки на LED ленте. Практически во всех программах задача уровня цвета от 0-255.
Как будет работать. 3 переменных резистора на аналоговых входа. Задаем цвет. Получаем 3 переменных INT (RGB) которые записываю в "РЕЦЕПТ". По внешней кнопке меняю рецепт тем самым меняю цвет ленты.

Так в моем примере уже все есть, только у меня резистор был на 4500 Ом и масштабирование к 0-100, Вам соответвенно делитель надо подобрать под резистор и нужный диапазон.

игорь68
14.03.2019, 09:53
Сергейй 0308. Спасибо. Сделал по вашей схеме.

Алексеев
11.04.2019, 11:08
Кто может разъяснить параметр "использования в макросе" ?????
В справке не нашел . Не использовал ( всегда по умолчанию НЕТ) и в блоках и в переменных не было проблем.
А может надо использовать ??????????????????42200

В справке не нашел4220142202

Сергей0308
11.04.2019, 11:38
Кто может разъяснить параметр "использования в макросе" ?????
В справке не нашел . Не использовал ( всегда по умолчанию НЕТ) и в блоках и в переменных не было проблем.
А может надо использовать ??????????????????42200

В справке не нашел4220142202

Что там непонятного?! При использовании этого элемента в макросе в свойствах макроса появятся настройки, в данном случае, универсального счётчика:

42203

И свойства макроса имеют приоритет перед значением установленным в макросе!
Удобная штука, не надо в макрос залезать, например, чтобы изменить константу, я так делаю на кольцевых счётчиках(задаю минимальное и максимальные значения диапазона), в функциях извлечения бита(номер извлекаемого бита) и т. д.

42204

42205

42208

42209

Алексеев
11.04.2019, 12:29
Что там непонятного?! При использовании этого элемента в макросе в свойствах макроса появятся настройки, в данном случае, универсального счётчика:

42203

И свойства макроса имеют приоритет перед значением установленным в макросе!
Удобная штука, не надо в макрос залезать, например, чтобы изменить константу, я так делаю на кольцевых счётчиках(задаю минимальное и максимальные значения диапазона), в функциях извлечения бита(номер извлекаемого бита) и т. д.

Для удобства . Только мне не понятно как определить что к чему относится если несколько блоков и переменных ??????42206
Нет в справке и не кто и не пользуется .

И еще вопрос ,а это для чего ????42207 То есть макрос в макросе ??????
Вывел то что не понятно что 42210

Сергей0308
11.04.2019, 12:37
Для удобства . Только мне не понятно как определить что к чему относится если несколько блоков и переменных ??????42206
Нет в справке и не кто и не пользуется .

И еще вопрос ,а это для чего ????42207 То есть макрос в макросе ??????

Каждую переменную можно подписать понятным Вам образом!
Да, наверно, чтобы макрос ничем не отличался от других элементов, при добавлении макроса в макрос!

Алексеев
11.04.2019, 12:55
Каждую переменную можно подписать понятным Вам образом!
Это понятно .



Да, наверно, чтобы макрос ничем не отличался от других элементов, при добавлении макроса в макрос!
Эти переменные из макроса в макрос должны доходить до схемы .

Доходят забыл сохранить и заново все вывести макрос на экран .

Я и не знал в руководстве об этом не сказано и даже не показано .

Большое спасибо за пояснения .

Алексеев
11.04.2019, 13:22
И последнее в руководстве отсутствует раздел симуляции .
Где бы было рассказано о всех нюансах позволяющих ускорить процесс отладки проекта .
И даже мне кажется не все понимают что такое период и время цикла в симуляции ( как пример ) .:(

Алексеев
11.04.2019, 13:45
Что там непонятного?! При использовании этого элемента в макросе в свойствах макроса появятся настройки, в данном случае, универсального счётчика:

42203

И свойства макроса имеют приоритет перед значением установленным в макросе!
Удобная штука, не надо в макрос залезать, например, чтобы изменить константу, я так делаю на кольцевых счётчиках(задаю минимальное и максимальные значения диапазона), в функциях извлечения бита(номер извлекаемого бита) и т. д.

42204

42205

42208

42209

Как ты выводишь дампы памяти для просмотра не где об этом не сказано .
Отлаживаю и не когда ими не пользовался или нельзя пока нету переменных для просмотра ????????????????

Или Я не правильно понял 42216

Скорей всего Я не правильно понял . У тебя названия соответствующие ввели в заблуждения .

Еще раз спасибо за разъяснение . Буду пробовать в симуляции .

И еще раз к Модераторам просьба пожелания . Создать раздел ( симулирование проекта ) в справке где бы рассказать про все нюансы
процесса симулирования .

игорь68
12.04.2019, 10:17
Вопрос в VK в группе ОВЕН. Подскажите как на ПР200 реализовать, что бы выход Q1 срабатывал при нажатии кнопки"ОК" на самом приборе?
Сделал вот так. Проверил на ПР200.24.4 переключение по нажатию ОК. Мне сказали что нельзя.

Алексеев
12.04.2019, 10:27
Вопрос в VK в группе ОВЕН. Подскажите как на ПР200 реализовать, что бы выход Q1 срабатывал при нажатии кнопки"ОК" на самом приборе?
Сделал вот так. Проверил на ПР200.24.4 переключение по нажатию ОК. Мне сказали что нельзя.

Год назад собирали пожелания обещали нам пользователям использовать кнопки не только для
переходов между экранами но и в пользовательской программе . Но пока не реализовано .
А будет ли вообще это реализовано вопрос к VK в группе ОВЕН ????????????????????????????????

melky
12.04.2019, 10:29
игорь68 вданном случае выход срабатывает не по нажатию кнопки ОК а по изменению переменной "ок" которую вы создали.
Так можно создать на одном экране сколько угодно переменных и все они будут срабатывать по кнопке ОК :).

А вот опрос кнопок в ОЛ еще не притянули, только обещают.

игорь68
12.04.2019, 10:31
Знаю что нельзя и не сделали. Но работает.

Сергей0308
12.04.2019, 10:32
Вопрос в VK в группе ОВЕН. Подскажите как на ПР200 реализовать, что бы выход Q1 срабатывал при нажатии кнопки"ОК" на самом приборе?
Сделал вот так. Проверил на ПР200.24.4 переключение по нажатию ОК. Мне сказали что нельзя.

Вам правильно сказали! Без предварительных манипуляций(условий) - никак! Маразм крепчает?!
А так любую переменную можно редактировать с экрана, об этом никто и не спорит, это одно из его предназначений!

игорь68
12.04.2019, 10:33
Так переход происходит при нажатии кнопки ОК.

Сергей0308
12.04.2019, 10:43
Так переход происходит при нажатии кнопки ОК.

Не только OK, но и SEL!
Перезагрузите ПР(выключите-включите), теперь нажмите ОК, выход включится? Вы лукавите, упускаете массу манипуляций(условий) чтобы это произошло! Наверно каждый может быть здоровым и богатым, но не каждый здоровый и богатый!
Что Вы делаете, называется - редактированием переменной с экрана! Нажатие ОК это всего лишь завершающая точка!

игорь68
12.04.2019, 11:11
пусть будет так как вы сказали.

melky
12.04.2019, 12:01
Ну таким способом уже давно все пользуются. А это несколько неудобно, но работает.

Ревака Юрий
12.04.2019, 12:03
Ну таким способом уже давно все пользуются. А это несколько неудобно, но работает.

Это более удобнее, чем если дать возможность устанавливать биты с кнопок напрямую, а потом при редактировании чего-либо, будут включаться выходы и т.д, уверен что разделить эти два сценария будет сложновато.

Алексеев
12.04.2019, 12:22
Это более удобнее, чем если дать возможность устанавливать биты с кнопок напрямую, а потом при редактировании чего-либо, будут включаться выходы и т.д, уверен что разделить эти два сценария будет сложновато.

Включать выход одной кнопкой это грубо . А допустим пришла Авария (зафиксировалась ) необходимо её квитировать . Нажали кнопку ОК . И квитировали .

В настоящий момент необходимо войти в редактирование убрать и выйти . Много ситуаций которые требуют нажатие одной кнопки .

В ПЛК63 допустим есть кнопка пуск/стоп которая используется в технологическом процессе .
А ПР200 необходимо задействовать вход ( исключая его из техпроцесса их и так мало ) .
Или макрос ( управление одной кнопкой) который ВЫ разработали можно было бы использовать
клавиатуру ПР200 . Очень много ситуаций .

melky
12.04.2019, 13:05
Ревака Юрий Включать выход это пример, а так, Алексеев все правильно написал, нужны все возможности.

Вот пример, появляется ошибка, мы переходим на экран ошибок, нажатие ESC на данном экране сбрасывает ошибку, в случае сброса ошибки ESC дает возможность вернуться на главный экран. И мало того, при сбросе требовать подтверждения нажатия ОК.

Без возможности понимания, на каком экране находишься, и возможности получать в программе коды кнопок меню становятся таким гемороем иногда... А было бы куда проще, были бы такие возможности.

Ревака Юрий
12.04.2019, 13:27
Я как бы и не против,:) но слишком много всего завязано на текущие кнопки, в идеале должны быть специализированные отдельные F1...Fn, и уже там можно развернуться. А так даже сейчас, часто вижу проекты где назначают переходы на вверх/вниз, и потом при редактировании уставок начинаются переходы и т.д.

Алексеев
12.04.2019, 13:40
У ВАС в ПР200 есть 2 кнопки ОК ESC они задействованы в прошивки только на редактирования . Запретить пользоваться ( в проекте) пока идет
режим редактирования . В других ситуациях разрешить как например менеджере экранов передний фронт, задний фронт, удержание .
И пользователь будет думать когда их использовать . А кнопки вверх/вниз тоже запретить использовать в процессе редактирования --- это БАГ или фич.