Вложение 67685
++10
Вид для печати
Вложение 67685
++10
А для любителей "плести паутину" разве нет решения?
Кто мешает назначить в счётчик внешнюю запись в N ( кол-во срабатываний). Счётчик замените на CTN с выхода через сравнение переведите в в булевую переменную.
Запись делается через Write To FB Вложение 67699
Связь ПР200 по Modbus с ESP32.
Цель задачи была такая, использовать ESP32 в качестве устройства для связи с ПР200, считывать с него данные и передавать комманды. Также используется Home Assistant для отображения и управления, прошивка ESPHome для ESP32.
Пока пытаюсь просто считать данные с датчиков температуры. Сделал ПР200 slave, создал три сетевые переменные, записал в них значения с датчиков. На ESP32 записал код считывания этих регистров, все записалось и считывается, но значения какие-то неправильные.
Вложение 67703
Вложение 67704
Вложение 67705
Вложение 67706
при ПР200 слейв вы должны сами переставить байты, как при чтении так и при записи. Галочки в настройках ПР действуют только для мастера.
RomanKk можно где угодно. порядок байт в ПР200 2301 (3412) как вам удобнее. попробуйте переставить в ПР программно и отобразить на экране. Или в самой ESP что вам проще сделать.
Поменял тип данных в ESP и теперь отображается нормально. Спасибо за подсказку.
Просто вопрос на будущее, если я хочу подавать команды с ESP на ПР200 например включить какой-то выход, то есть команда 0/1, как тогда задавать сетевые переменные, если в ПР в режиме слейв только целые и с плавающей точкой? Преобразовать их и все?
Тема: Обмен битовыми (BOOL) переменными с ПР Slave https://owen.ru/forum/showthread.php?t=32194
Коллеги. Помогите с решением вопроса об адресации счётчиков воды по интерфейсу RS-485. На канал приходится свыше 256 счётчиков (максимум на канал). Устанавливаю повторители интерфейса. Как в этом случае будет выглядеть идентификационный номер счётчика после 256?
GiPe вы и 256 не сможете указать. Если речь о Modbus то смотрите сколько там может быть максимально. 0 и 255 кажется нельзя указывать. И на адрес отводится всего один байт. Соответственно приборов больше, то вторая линия. По другому никак.
Спасибо, но выглядит страшно :) Пока не понимаю как оно работает и как использовать в моем случае... А желание простое, с ESP32 передавать команду вкл/выкл (то есть 1/0), а на ПР200 принимать ее и делать дальше по сценарию. В моем случае это вкл/выкл приточный или вытяжной вентилятор, нагрев и тд, то есть чтобы немного удаленно можно было управлять без необходимости ходить к щиту управления.
Кстати, может в этом случае сделать ПР200 мастером? Я просто не совсем понял принцип и отличия, и что лучше выбрать.
Конкретно в моем случае использую ESP32 с rs485 модулем для следующего:
1. Получать данные с датчиков подключенных к аналоговым входам ПР200.
2. Возможно получать состояния дискретных выходов или других переменных (например какой режим вклчюен - зима, лето, авто, количество ошибок, статусы и тд).
3. Возможность удаленно по сети посредствами связи с ESP32 передавать команды на ПР200, такие как вкл/выкл вентиляторы, нагрев, менять уставки.
В данном случае ПР200 может быть мастером или лучше слейвом? Данные которые получит ESP32 будут передаватся в Home Assistant и там отображатся, то есть по сути ESP32 собирает данные с ПР200 и передает некие команды обратно.
У вас уже всё работает с ПР слейвом, осталось разобраться только с битами. Целочисленные (1 регистр) вы уже можете передавать, в 1 регистре 16 бит (с 0 по 15).
То есть передав 1 регистр, вы можете упаковать в него до 16 битовых сигналов. При приёме распаковать и использовать.
По ссылке показано как собрать и разобрать биты в маску и уже Маску ( целочисленное ) передать.
А здесь, как пересчитать адрес бита, в адрес регистра
https://owen.ru/forum/showthread.php?t=37704#9
https://owen.ru/forum/showthread.php...052#post407052
Все таки что-то не то... Не могу с этим разобратся, тут скорее уже на стороне кода в ESP или не правильно адреса прописываю.
В ПР есть такое (пока для теста), адрес переменных 520 и 521, в коде ESP прописано два переключателя. В итоге ничего не происходит. На ПР в режиме онлайн отладки работает, по идее состояния (on/off) должны передаватся на ESP, но ничего нет.
Вложение 67757
Вложение 67758
Вложение 67759
---
Отмена! Разобрался, нужно было просто адрес бита указывать и все работает :)
Вложение 67761
Продолжаю играть с modbus и esp32. Как записать простую задачку. Сейчас уставку температуры можно менять с меню ПР200, как добавить к этому возможность менять уставки и на ESP? И чтобы при этом данные синхронизировались, то есть если поменял на ПР, то должны изменится и на ESP, и наоборот.
Добрый день. Подскажите, возможно ли средствами Овен Лоджик создать сетевую переменную с командой 0х010 и записью 4х регистров?
Вот пример из мануала
write relay(multi register)
_________________type pwd rly time
01 10 0003 0004 08 0001 0000 0f0f 0000 91A9 1~4 on
01 10 0003 0004 08 0001 0000 0f00 0000 A1AA 1~4 off
01 10 0003 0004 08 0001 0000 0606 0000 4237 2,3 on
01 10 0003 0004 08 0002 0000 0000 0005 51BD relay 1 off,delay 5 second on
01 10 0003 0004 08 0002 0000 0001 0005 007D relay 1 on,delay 5 second off
01 10 0003 0004 08 0002 0000 0002 0005 F07D relay 2 off,delay 5 second on
01 10 0003 0004 08 0002 0000 0003 0005 A1BD relay 2 on,delay 5 second off
01 10 0003 0004 08 0002 0000 0004 0005 107C relay 3 off,delay 5 second on
01 10 0003 0004 08 0002 0000 0005 0005 41BC relay 3 on,delay 5 second off
01 10 0003 0004 08 0002 0000 0006 0005 B1BC relay 4 off,delay 5 second on
01 10 0003 0004 08 0002 0000 0007 0005 E07C relay 4 on,delay 5 second off
01 10 0003 0004 08 0003 0000 0000 0005 417D relay 1 off,Jogging 0.5 second on
01 10 0003 0004 08 0003 0000 0001 0005 10BD relay 1 on,Jogging 0.5 second off
01 10 0003 0004 08 0003 0000 0003 0005 B17D relay 2 on,Jogging 0.5 second off
01 10 0003 0004 08 0003 0000 0005 0005 517C relay 3 on,Jogging 0.5 second off
01 10 0003 0004 08 0003 0000 0007 0005 F0BC relay 4 on,Jogging 0.5 second off
01 10 0003 0004 08 0003 0000 0006 0005 BBD6 relay 4 off,Jogging 0.5 second on
Добрый день,прошло время был занят некоторыми другими задачами.Пришло время доделать начатое.
Напомню что необходимо,нужно сделать последовать из 4 выходов с заданным интервалом времени.При чем чтобы после отключения одного выхода по времени включался следующий.
В проекте со светофором не смог толком разобратся.
Добрый день,полностью разобрался в этих деталях.
Смотрите про ручной режим и автоматический забудьте.Это чисто механическая(электрическая часть).Которая нам в данном случае не нужна.
Всего 6 клемм:
1.Вращение вперед
2.Авар.останов
3.Скорость 1
4.Скорость 2
5.Скорость 3
6.Скорость 4
Клеммы 1 и 2 нам полностью не нужны - это просто управление с кнопок.Направление вращения клемма 1 я могу менять в самом приводе.То есть в 1 клемме есть внутренние параметры.
То есть 1 и 2 клемма, это отдельные режимы,несвязанные со скоростями.
3,4,5,6 это отдельные режимы связи нет между ними.Ранее я думал что нужна связь.После общения с тех.поддержкой на привод этот момент я прояснил.
То есть сначала мы включаем 1 клемму двигатель понимает направление вращение(вперед),далее Нам необходимо ему включить скорость чтобы он понял с какой скоростью вращаться.
То есть в данном случаем про клеммы 1 и 2.Они нам не нужны.
Мне только необходимо включать последовательно клеммы 3-4-5-6 по 5 минут в разных очередностях.
То есть после того допустим как клемма 3 проработала 5 минут,мне необходимо сразу включить клемму 3 и 5 (пример).
На 8 вариаций клемм я написал следующий макрос.На сочетание клемм в зависимости от оборотов.Да простой,но мне необходимо попробовать как все это будет работать.
У меня вот что вышло.Вложение 67882
Ого...Спасибо попробую разобраться.
Сразу вопрос возник.
Пример программы и у Вас и как я сделал по примеру.Выполнен у нас таким образом что параметры FC-00 выполняются по возрастанию.Но допустим мне будет необходимо выполнить через параметр.
Пример для ясности:
FC-00 5 мин
FC-01 5 мин
FC-02 5 мин
FC-03 5 мин
FC-04 5 мин
FC-05 5 мин
FC-00 5 мин
FC-08 60 мин
FC-12 10 мин
FC-13 20 мин
FC-14 20 мин
FC-15 20 мин
FC-00 5 мин
Конец программы
Меняйте как вам надо, можно в программе изменить, можно с экрана, если выведите на экран FC-00 - FC-15
Сейчас сделано так, с 1 по 4 режим, FC-00 - FC-07, с 5 по 6 режим FC-08 - FC-15 и не по порядку FC-00 вставлена и в середине и в конце.
Время тоже можно изменять, если вывести на экран.
Задача вроде простая, но интересует как можно сделать такое. Есть на DO1 ПР200 2-поз переключатель (0-1), когда переключаешь на 1 запускается все система, на 0 - все выключается. То есть это основная команда запуска программы. Дополнительно хочу производить вкл/выкл системы из ESP32 через модбас.
Получается условие такое, когда физически включил, то система запускается не зависимо от значения которое было передано через модбас, то есть оно должно сбрасиватся. А через модбас включай сколько хочешь, но если выключить физически, то оно не работает. То есть приоритет имеет физическая кнопка, модбас команда ее дублирует, если можно так сказать.
Собственно самый простой вариант, который я вижу, записывать значение физического переключателя в сетевую переменную. Таким образом на ESP32 сразу будет отображатся реальный статус и можно вкл/выкл оттуда. Но если выключить выключателем, то по модбас все равно можно будет включать, что не совсем корректно. Запутался немного с этим.
Что-то не получается так или я не так сделал... Вот по такой схеме при попытке поменять значение сетевой переменной оно сбрасивается, так как туда записывается значение с переключателя...
Вложение 67922
Вот концепт
Вложение 67923
Ха, одна деталь и все работает :) Вроде то что нужно, спасибо.
Кстати, вопрос такой, если я использую сетевые переменные, в данном случае с того же ESP, в случае отключения ESP от RS485, данные переменных сохранятся на ПР? Для примера уставки задаю через сетевую переменную, также данные датчиков температур подключенных к ПР хранятся в сетевых переменных. Если убрать связь по модбас, ПР продолжить работать с сохраненными данными или нужно будет переписывать программу?
Как реализовать блок MOVE ? Давно бы его в лоджик приписали.
MOVE реализуется легко
Вложение 67948