Свяжитесь, пожалуйста, со мной по телеграм (см. в подписи) и продемонстрируйте вашу проблему по AnyDesk.
Добрый вечер. Вопрос может банальный, но всё же: есть ПЛК и две ПР-ки. с одной плк читает переменную, в другую её пишет. Как писать переменную во вторую ПР только по её изменению? Какой триггер выбрать? Или сохранять в третьей локальной переменной состояние, сравнивать входящую и, если изменилась, то писать её с триггером "приложение"? и как это кстати делается с таким триггером?
Сделать можно как угодно, достаточно сравнить новую и записанную переменную, если изменилась, то выставить флаг на 1 цикл или 100-300 мс.
Только сегодня выложил ФБ для управления из 2 мест (сравнения переменных), вам надо сравнить одну переменную, значит ФБ можно сократить вдвое и прикрутить булевый флаг и триггер (таймер ТР), который включит триггер записи.
https://owen.ru/forum/showthread.php...st456513#11223
выставить флаг - это с выбором триггера "передний фронт, получается". Как и в каких случаях писать переменную с триггером "приложение"?
Дополнение: и еще, если я прям из программы пишу значение в переменную напрямую, а слейва два - как объявлять тогда переменную, как правильно выбрать слейв? вот написал я "iSomeVar AT %QW0 : INT; - и как ПЛК догадается, в какой ПР она, если и в обоих слейвах есть такой канал?
Вложение 81776 вот так я могу писать переменную в ПР по изменению? просто она так не доходит до ПР... Вложение 81777Вложение 81778
Если вы записываете ПЛК мастером в два слейва, у слейвов разные адреса, значит надо сделать 2 слейва.
В двух слейвах сделайте два разных бита для записи по переднему фронту. Какой бит включите тот слейв и запишите.
ФБ вы просто скопировали половину ( и то не правильно), а бит записи с триггером не добавили.
Короче для начала сделайте просто запись по фронту бита. Проверьте, что она работает, записав бит руками.
Потом делайте запись по изменению, с выставлением бита записи.
как писать по переднему фронту булевой команды, я разобрался, благодарю, всё получилось и пишется. Очень хочется понять, как работает триггер "приложение", и как писать переменные в слейвах с таким триггером в обоих вариантах: либо привязывая переменную из программы к входу, либо объявляя адрес хранения переменной с помощью "AT %..." - и в этом варианте актуален вопрос с двумя слейвами с одинаковыми именами каналов, как правильно выбрать нужный слейв
Здравствуйте !
Столкнулся со следующей проблемой.
Создал передачу входов/выходов 2-ого ПЛК на 1-ый при помощи сетевых переменных.
На контроллерах другого производителя, все успешно работает, при попытке сделать подобное на ОВЕН ПЛК210-03-CS, происходит неудача.
Вложение 82245
Связались с Евгением, успешно решили проблему.
У меня используется Codesys 3.5 SP19 Patch5.
Для установки связи с плк при помощи сетевых переменных необходимо в значение Broadcast Adr. записать значение Широковещательный IPv4-адрес
Вложение 82251Вложение 82250
День добрый. Возникла такая проблема. Решил воспользоваться библиотекой OwenCommunication для ModbusTCP чтобы получать данные с модулей Mx210. Проблема возникает при использовании ФБ mb_tcpRequest. Обращаюсь к регистру 51 (читаю битовую маску), а блок выдает ошибку ILLEGAL_DATA_ADRESS. Не могу понять из-за чего возникает ошибка, настроил блок по примеру из документа, регистр вроде выбрал правильный (модуль МВ210-202). Пишу на ST, не использую case тк необходимо выполнять все действия в одном и том же цикле
Цитата:
MU210_202_DI_Client(xEnable := TRUE,
tTimeout := T#0S,
sIpAddr := ip_202_di,
uiPort := 502
);
MU210_202_DI_request(
xExecute := MU210_202_DI_Client.xActive,
tTimeout := T#0S,
usiRetry := 3,
hConnection := MU210_202_DI_Client.hConnection,
xIsRtuOverTcpMode := FALSE,
usiUnitId := 1,
eFuncCode := OCL.MB_FC.READ_HOLDING_REGISTERS,
uiDataAddr := 51,
uiDataCount := 1,
pData := ADR(wDImask),
szSize := SIZEOF(wDImask)
);
IF MU210_202_DI_request.xDone OR MU210_202_DI_request.xError THEN
MU210_202_DI_Client.xEnable := FALSE;
END_IF
Надо запрашивать 2 регистра, а не 1.
В реализации модулей - нельзя считать часть параметра (например, "половину" битовой маски входов).
Спасибо, как-то не обратил на это внимание
Здравствуйте.
Терморегулятор ТРМ10 подключен через преобразователь интерфейсов RS485-USB к ПК. В начале работал на виртуальном контроллере и обращался к регистрам по Modbus RTU, указывая соответствующий COM-порт, к которому подключен прибор. Сейчас уже работаю с СПК207, подключенному к ПК по LAN для отладки и загрузки проекта.
Вопрос: Можно ли при нынешних подключениях как-то обратиться к ТРМ, подключенному к ПК, или же 100% нужно переподключать его напрямую к COM-порту СПК207? Возможно, ответ очевиден, но вдруг есть какие-то варианты
Добрый день.
Вы можете запустить на ПК программу, которая будет выполнять роль шлюза Modbus TCP/Modbus RTU.
Например - в качестве такой программы можно использовать упомянутый вами виртуальный контроллер.
Соответственно, СПК207 будет обращаться к ПК, используя протокол Modbus TCP.
Спасибо. Получается, я на виртуальном контроллере через Modbus RTU задаю каналы с регистрами и привязываю их к переменным, а потом эти переменные как сетевые передаю на СПК207?
Мне нужен ФБ (функциональный блок) для пропорционального клапана давления Atos RZMO-AES-BC-010
Использую Codesys 3.5
ValveContinuous (FB) подойдет для управления клапаном?
вы бы схему управления нарисовали что-ли
так вам FB нужен не для клапана, а для управления по 4-20мА
(в смысле какая разница тут что за управляющее устройство если у него управление по 4-20) Хоть PID к нему лепите...
Смешались в кучу кони, люди... У ПЛК Овен неожиданно появился EtherCAT?
Ну я почитал об этом протоколе... Можно и самому такое реализовать на ПЛК2ХХ, документация к нему вроде бесплатна для членов "клуба", при этом регистрация в этом "клубе" вроде бесплатная... В принципе. Хотя ТС не говорил какой у него ПЛК, может Дельта или еще какой, а там протокол поддерживается!
МихаилГл и логически тут легко и просто найти человека, знакомого с "сусликом" ? :) (я про логику поиска решения на данном конкретном форуме)
Всегда поражался людям, которые ищут масло в мясном отделе, просто исходя из логики наличия холодильника.
нет, но вас не смущает формулировкаЦитата:
У ПЛК Овен неожиданно появился EtherCAT?
? просто - ФБ использовать. Ставишь какой-то "ФБ" и хоп, всё работает, самое главное - найти его в "холодильнике"Цитата:
Я планировал FB использовать.
Вот она, великая сила замещения. Российский ПЛК - CodeSys 3.5 до этого работали на Импортном ПЛК CodeSys 3.5 ну там же работало :)
Добрый день!
Возник вопрос. Есть ПЛК-210, он по 1 RS-485 опрашивает 7 однотипных частоников, по 2RS-485 опрашивает 12 однотипных частоников + 2 ТД + ПР102, обмен, учитывая, что есть много однотипных устройств, реализован через библиотеку OwenCommunication, всё работает стабильно.
Есть еще один шкаф, где стоит 12 частоников + ПР102 + картридер. Там поставил МКОН 24, и здесь начались проблемы. Если пишу модуль программы, то обмен не идет совсем. Если реализую обмен стандартными средствами, то 2,3 прибора опрашиваются, если подключаю больше, то начинаются сбои, если подключаю все, то обмен встает совсем. Может подскажите, что можно поправить
Без МКОН 24 пробовали опросить?
А теперь опишите отличия, как сделано в 1 случае и как во 2.
Вот тема, как должно быть сделано https://owen.ru/forum/showthread.php...l=1#post460538
Без МКОН не пробовал, но аналогичная без него схема уже работет на порту ПЛК, ссылку посмотрю, спасибо
провода экранированные, мысль про помехи, есть, но думаю проблема не в этом, так как почти все тоже самое уже реализовано без МКОНа и там оно работает
Здравствуйте, подскажите, пожалуйста, почему при подключении дополнительных модулей ввода/вывода к плк210 по протоколу Modbus TCP у всех модулей прописывается значение "1" в графе "Unit-ID"? По логике как будто им нужно давать разные ID?
https://www.youtube.com/watch?v=mkpY...KheVx&index=11
минуты 4:20 и 4:56
Заранее благодарю за ответ)
Для Modbus TCP значение имеет IP-адрес в компьютерной сети. По нему и определяется, что это за устройство.Цитата:
по протоколу Modbus TCP у всех модулей прописывается значение "1" в графе "Unit-ID"
Для работы со шлюзами Modbus TCP/Modbus RTU - в их случае этот адрес потом используется в RTU-пакете.Цитата:
для чего тогда нужна графа Unit-ID?
Зависит от конкретного устройства.Цитата:
И если туда вписывать случайные числа, все так же будет работать?
С точки зрения спецификации Modbus TCP - если опрашиваемое устройство не является шлюзом, то используемый в запросе Unit ID должен иметь значение 0 или 255.
По историческим причинам - многие устройства используют Unit ID = 1.
Спасибо всем за ответы)
Добрый день,
Имеем следующую схему сети:
Вложение 82958
Подскажите как и что нужно подключить, что бы организовать опрос ПЛК 210 по ModbusTCP?
Разработчик прислал таблицу регистров и данные для подключения.
При попытке соединения от Switch до любого из Ethernet порта ПЛК210 - порт не открывается (ошибка связи).
При соединении ПК напрямую с портом Ethernet ПЛК210 - то же самое, но если установить IP адресс ПК что то типа 192.168.0.100 то пинг проходит.
Связь хотелось бы настроить с применением библиотеки OwenCommunication т.к. опрашивать нужно всего 1 - 2 регистра, да и вообще хочется разобраться как она работает).