скажите, а ПЕ210 можно использовать в качестве Мастера для взаимодействия двух ПР102?
Вид для печати
скажите, а ПЕ210 можно использовать в качестве Мастера для взаимодействия двух ПР102?
DkCat Вы выше внимательно прочитали? два устройства в Облаке не умеют передавать данные друг другу через облако
DkCat у вас один мастер, второй slave в доме и управление идет всегда через мастер? То есть так понимаю переменных между ними хватает, чтобы управлять?
Тогда да, Мастеру добавляете второй интерфейс для шлюза и все переменные настраиваете в облаке.
Шлюз уже приобретен? если нет, может другие решения, например купить себе маршрутизатор Кинетик из последних, у них есть доступ через их облако. На Android только нужно стороннее решение для VPN
Есть еще решение для передачи данных между устройствами Овен облака, но тогда у обоих устройств должен быть slave и программы по возможности автономные в ПР, так как передача данных между ними будет через облако :) То есть скорость тут будет не алё...
Почему если сделать переменные энергонезависимыми то начинается какое то перемаргивание?
вот так надо делать
Вложение 64396
А по поводу перемаргивания - энергонезависимые переменные записываются в конце цикла. У вас просто при изменении сетевой переменной она перезаписывается макросом BOOL_INT на входе которого еще "старые" значения
Потому, что нужно вот так п.3 https://owen.ru/forum/showthread.php?t=32194
Вложение 64417
Добрый день.
Натолкните на мысль как это сделать (не получается 2 день).
Имеем шесть входов . Вход кнопки без фиксации Run, Вход (Float)с вакуумного манометра (-0,1 mPa ...1 mPa) Vacuum. Есть 2 входных переменных (OnTime и OffTime типа int) для уставки таймеров (у меня ТР и TOF). Один булев вход Reset для сброса триггеров. И 2 булевых выхода один Q управляет клапаном переключения (вакуумный насос/атмосфера), второй Fin сигнализирует о окончании продувки
Задача автоматизировать процесс откачки газа из и газа из баллона.
Как я это вижу при нажатии на кнопу включится выход Q и начнётся отсчет таймера ТР (время с запасом для откачки баллона) если сигнал от датчика сравнялся с -0,1 mPa то отключаем выход Q (при этом баллон соединится с атмосферой и давление на датчике будет падать до 0) одновременно с этим включаем таймер TOF (Время на стравливание баллона с запасом) если сигнал от датчика стал ~0 mPa подаем импульс на счетчик (один цикл прошел) и так повторяем то количество раз которое задано на счетчике. После последнего импульса счетчик сбрасывается и включается выход Fin. Если по какой-то причине таймер ТP отработал, а давление не упало - то отключаем все и включаем выход Alarm. Аналогично поступаем если TOF отработал, а давление не выросло до 0. Можно еще небольшой гистерезис прикрутить.
Основная проблема возникла с отслеживанием давления по датчику и отключением таймеров. То есть они продолжали работать. Нужно как то по другому включить не могу понять как.
С уважением ко Всем откликнувшимся Юрий.Вложение 64425
Спасибо Dimensy! Скачал попробую завтра на работе.
День добрый
Есть задача получить битовую маску (нажата одна из 6 кнопок на пр200 которая по модбасу подключена), изменить ее (закодировать что должно на модуле соответствовать кнопке) и передать маску на модуль 16р. Это работает.
Но есть необходимость когда после любого значения битовая маска становится 0, что бы один выход на 16р оставался включенным на заданное время. В мультиплексоре я это повесил на 7 канал 128 значение. И это тоже работает.
Но нужно что бы во время когда подставлено 128, а битовая маска изменилась с 0 на любое значение - это значение в мультиплексор передать, а у меня что то не получается так сделать.
Вложение 64496Вложение 64497
Буду благодарен за любую помощь.
Спасибо
Например так
Вложение 64499
ЗЫ
не увидел требование "на заданное время"
Вот так можно
Вложение 64501
Всех приветствую! Прошу помощи с разработкой алгоритма работы сушильной камеры для бумажных изделий, на пр200 и датчике влажности и температуры пвт100(подключен по rs485). Принцип работы такой- при запуске цикла- печь плавно набирает температуру до необходимой( изменяемая величина), к примеру 50 градусов, и работает необходимое количество часов(изменяемая величина)- затем, после выделения из изделия максимально количества влаги(по датчику), печь немного остывает -до 37-38 градусов, включается осушитель, а температура поддерживается далее, до перезапуска цикла. В идеале: хотелось бы ещё сделать ручное управление пускателями тэнов, вентиляторов и осушителя( для отладки и ремонта). Сейчас всё работает на овен 2трм1 с двумя выносными датчиками, но хочется как то оптимизировать данный процесс, в планах у руководства ещё поставить шлюз и контролировать и управлять процессом по сети.
Здравствуйте, коллеги.
Сломал голову с самодельным макросом. В эмуляторе битовую маску преобразует в набор номеров аварий корректно: при наборе аварий 0011 1110 (62 dec на вход) выдает коды аварий "23456", а на ПР200 отображает "23452". Далее при наборе аварий 0010 1110 (46 dec на вход) на ПР200 отображает "2343" (ожидалось "2346").
Не пойму где я ошибся, уже несколько раз макрос пересобирал.
Вложение 64791
Вложение 64792
Весь проект не могу выложить, заказчик не позволит. Этот макрос выходом подключен к переменной, выводимой на экран. В режиме онлайн отладки и в режиме эмуляции на вход приходит в обоих случаях одинаковое значение, а на выходе получаются разные. То есть алгоритм на ПР200 работает совсем не так, как в OL.
1.Здесь всем на..рать на Вашего заказчика, тем более что решается Ваша проблема.Цитата:
Весь проект не могу выложить, заказчик не позволит.
2.Какая-то дичь : целочисленные преобразуемые во флоаты, возведение в степени, флоаты обратно во целые. Там что угодно потеряете.
Изначально стояла задача вывести на экран номер аварии цифрой, соответственно, если несколько аварий включаются одновременно - на экран выводятся несколько цифр подряд. Сходу кроме пошагового умножения на степени 10 ничего не придумал.
Возможно стоит возводить в степень целые, а не флоаты. Тут согласен, попробую.
Кусок проекта во вложении, спасибо за помощь.
Вложение 64795
Передавайте на ИПП120(по сети) битовой маской в панели уже преобразуете как надо!
Я бы писал сразу название аварии, например с помощью динамического текста, чтобы голову не морочить и если аварий больше одной выводил их по очереди, кстати было много подобных тем!
И хочу Вас поздравить, такое впечатление, что Вам не дают форум смотреть и даже саму программу ОЛ, в смысле, там уже есть функция вставки бит и многое другое, зачем что-то придумывать, их заменяющее, тем более у Вас это не получается, в смысле, на много сложней!
Посмотрите эти темы, может чего почерпнёте:
https://owen.ru/forum/showthread.php?t=31076&page=2
https://owen.ru/forum/showthread.php?t=31113&page=7
https://owen.ru/forum/showthread.php?t=29865&page=8
Короче, если решите по очереди аварии выводить, я и проект выкладывал(по верхней ссылке), то и битовую маску даже не придётся на биты обратно разбивать, в смысле, там такой алгоритм, он данные сразу из битовой маски берёт!
И, вот здесь выкладывал макрос поиска максимального значения из 16 и номера входа с максимальным значением:
https://owen.ru/forum/showthread.php?t=25067&page=70
Так если на нескольких входах максимальные значения, то все номера таких входов отображаются по очереди, начиная с самого маленького входа по числовому значению, короче, как у Вас в макросе, но он проще вашего на порядок при большей функциональности.
Вложение 64798
Можно его использовать, в смысле, булевы сигналы преобразовать в целочисленные и подать на входа 1-10 макроса!
Вот, немного поправил старый проект(были небольшие косяки):
Вложение 64803
Но все десять входов одновременно активировать нельзя, переменная переполнится, нужно ограничиваться девятью, в остальном вроде всё нормально работает:
Вложение 64804
Варианты:
1.
Циклически номера текущих аварий прям текстом - это же понятней безликих цифирей
Дин.текст рулит
(Сергей0308 - выше сказал)
2.
Хоцца все сразу : 8 буль.текстов и (2456) в виде "-2-456--" . Даже как-то кошерней. Цифры на своих местах
(распоковать биты в були нужно будет)
3.
Уперся за каким-то именно десятичный (да еще и обратный вид) - да накой степени и квадратики - то ?
или по-кодерскиКод:функция индус : udint
инпут
маска //аварий
--
if маска.0 then индус := индус + 80000000; end_if //индус не любит человеческих уступов когда много строк
if маска.1 then индус := индус + 7000000; end_if
...
if маска.6 then индус := индус + 20; end_if
if маска.7 then индус := индус + 1; end_if
Код:функция неиндус : udint
---
for i := 1 to 8 do
if маска.0 then
неиндус := неиндус * 10 + i;
end_if
маска := маска / 2;
end_for
Посмотрел проект, в смысле, лучше создавать некоторую функционально законченную группу элементов и оформлять в виде макросов, пусть это получится немного избыточно для конкретного случая, но тогда не придётся каждый проект начинать с чистого листа, будет своя библиотека макросов, в смысле на форуме ранее выкладывали целочисленные стеки, в том числе и я! Не хочу искать тему, кому интересно найдёт, мне проще проект с макросом выложить!
Там кстати, применительно к нашему случаю, есть выбор выводимого из макроса разряда стека(диапазон 0-31), в смысле, одного выхода будет достаточно:
Вложение 64808
Вложение 64809
Вы создаёте как правило узкоспециализированные макросы для каждого конкретного проекта, для другого проекта их использовать будет проблематично!
Я бы стек выделил в отдельный макрос, всё равно он у Вас присутствует в составе, но не в виде отдельного макроса.
Тогда появилась бы возможность использовать его в любом проекте, где нужен стек, а не делать заново!
Надеюсь понятно выразил свою мысль?!
В перспективе одного проекта конечно проще, никто с этим и не спорит! Но Вы же не собираетесь заканчивать со своим хобби(насколько я понимаю) в течении ближайшего времени, в смысле, если посмотреть в перспективе 1 года, то всё может изменится, скажу больше, даже систему для названия макроса лучше изначально разработать, чтобы потом проще было нужный макрос найти(бывает несколько подобных макросов), это я так думаю!
Я, большинство макросов специально не создавал, но когда вижу, что в процессе создания проекта получается функционально законченный макрос, прерываю проект, создаю такой макрос, потом просто использую его в проекте и добавляю в свою библиотеку макросов, библиотека тоже разбита на группы и подгруппы для более лёгкого поиска, за год уже можно забыть все тонкости работы каждого макроса!
Dimensy, cпасибо за проект, по нему сразу понял, где я накосячил в своем макросе. Только триггеры в "маске" заменил на SR, ибо с RS многократное нажатие кнопки "сброс" при висящей аварии забивало весь стек одним значением.
Валенок, Сергей0308 тоже большое спасибо за участие.