Просмотр полной версии : Как достучаться до Master в Slave
Конфигурация ПЛК150-У-М:
14562
Пытаюсь по TCP/IP считать данные с ПЛК, который по Ethernet является Slave. ПЛК через RS485 опрашивает успешно (на скрине ошибки при отключении устройств показаны) МДВВ и СП270.
Пытаюсь по Ethernet прочитать данные по МДВВ и СП270. Все по нулям.
Программой Modbus Poll (SCADA-системой тоже) считываются значения только 7 регистров:
14564
При считывании 8 и более регистров имеем:
14565
Первые три - понятно, что последний адрес и ошибка в модуле Modbas (Master). Остальные считываемые 4 - ?
По моим расчетам (с учетом распределения памяти) получаем 10 регистров в Slave (на скрине пронумерованы).
Чтение производил и по 03, и по 04 функциям и отдельно по регистрам, и групповым запросом. Результат один.
Соединение с CoDeSys по RS232.
Как для представленной конфигурации определить адреса Modbus? Что сделано не так?
приборист
30.09.2014, 21:08
Либо я что-то не понимаю, либо что это за Мастер у вас в модуле Slave?
Создайте обычный Modbus (Master) и там опрашивайте МДВВ и СП
И создайте Modbus (Slave) - в нем опрашивайте ПЛК с чего-то.
В этот же слейв копируйте данные полученные при опросе МДВВ и СП.
lara197a
30.09.2014, 21:24
Вам нужно использовать промежуточные переменные.
Получаете данные мастером от СП И МВ, копируете их в промежуточные переменные.
Данные из них копируете в переменные слейва, который и опрашиваете по ТСР др. мастером.
Мы не ищем легких путей :)
Хотел именно такой подход протестировать. Вроде как позволяет память сократить.
Здесь 14568 на стр. 48 (п. 3.1.3.2). Хотелось бы знать данная функциональность поддерживается или нет? Может кто-то уже использовал или пробовал?
Конфигурация ПЛК150-У-М:
14562
Пытаюсь по TCP/IP считать данные с ПЛК, который по Ethernet является Slave. ПЛК через RS485 опрашивает успешно (на скрине ошибки при отключении устройств показаны) МДВВ и СП270.
Пытаюсь по Ethernet прочитать данные по МДВВ и СП270. Все по нулям.
Программой Modbus Poll (SCADA-системой тоже) считываются значения только 7 регистров:
14564
При считывании 8 и более регистров имеем:
14565
Первые три - понятно, что последний адрес и ошибка в модуле Modbas (Master). Остальные считываемые 4 - ?
По моим расчетам (с учетом распределения памяти) получаем 10 регистров в Slave (на скрине пронумерованы).
Чтение производил и по 03, и по 04 функциям и отдельно по регистрам, и групповым запросом. Результат один.
Соединение с CoDeSys по RS232.
Как для представленной конфигурации определить адреса Modbus? Что сделано не так?
Может так?
14570
Может так?
14570
Так у Вас всего 8 регистров (0-7). А считываются 7 (0-6). Кое-что уже стало проясняться в ходе экспериментов, но вопросы остались...
Результаты экспериментов.
Для данной конфигурации получаем следующий порядок регистров Modbus:
14592
Как видно регистр 3 отсутствует, хотя доступен на чтение. Будем считать, что он зарезервирован для протокола OWEN (в нем 4 регистра параметров модуля).
Последний регистр REG_6 в данной конфигурации не доступен для чтения, а для записи существует. Данное обстоятельство исправляется добавлением в Modbus (slave) дополнительного регистра REG_7.
14593
Однако, в любом случае регистры типа input в Modbus (Master) для Modbus (slave) вообще не существуют для записи/чтения. Хотелось бы полной прозрачности Master. Был бы разумен для данных регистров доступ на считывание.
lara197a
02.10.2014, 19:27
в инструкции по программированию есть описание выравнивания адресного пространства.
прочтите все сразу станет понятно.
нет там ни какого резервирования. это вы так криво обмен организовали, без учета выравнивания адресного пространства.
в инструкции по программированию есть описание выравнивания адресного пространства.
прочтите все сразу станет понятно.
нет там ни какого резервирования. это вы так криво обмен организовали, без учета выравнивания адресного пространства.
Вы сами пробовали такой "механизм" реализации связи?!
Есть опыт, сообщите как правильно определить расчет номера регистра.
Про выравнивание адресов мне известно, с этим учетом и производил определение адреса.
Для последнего скрина прономеруйте сами все регистры (много времени это не займет). И поясните, какой номер регистра будет у Register input module. При этом внимательно рассмотрите картинку справа, где указаны адреса регистров и их значения. Обмен реализован просто - подряд считываются несколько регистров (указан начальный адрес и кол-ко регистров).
Можно вводить адрес регистр 5,5?
у Вас REG_4 занимает 1 байт. Логично было бы сразу после него поставить 8 бит для выравнивания. Может в этом причина?
у Вас REG_4 занимает 1 байт. Логично было бы сразу после него поставить 8 бит для выравнивания. Может в этом причина?
Пробовал, результат тот же. Вариантов много перебрал, сейчас все уже точно не вспомнить. В этом случае видно было бы значение регистров со смещением байта, однако в регистре REG_5 значение 5.
Если, что можно попробовать, если у кого есть какие мысли.
А где REG_3?
Вот с выравниванием:
14594
Вы сами пробовали такой "механизм" реализации связи?!
Есть опыт, сообщите как правильно определить расчет номера регистра.
Такая тема уже поднималась несколько лет назад, совет Вам был дан создать отдельные мастер и слейв,а в проге копировать из одного в другое,много памяти это не займет. А то что в конфигураторе имеется такая возможность,так тут такая же ситуация как с шаблонами,создать создали,но поддерживать не стали,поэтому глюки и непонятки не избежны, ищите легкие пути
lara197a
03.10.2014, 09:39
Я не обратил внимания, что у Вас мастер внутри слейва.
Как-то и в голову не приходила такая конструкция.
Создайте отдельно.
У меня при связи с несколькими слейвами и мастерами на др. портах, с десятками переменных, биты-байты-DW, работает много лет и без проблем.
Причем из конфигуратора.
Тоже всегда разделение делал. Просто решил такой подход попробовать, а кроме упоминания в описании конфигурирования ПЛК больше информации не нашел. Теперь ясно, что данная возможность до конца не реализована
Тоже всегда разделение делал. Просто решил такой подход попробовать, а кроме упоминания в описании конфигурирования ПЛК больше информации не нашел. Теперь ясно, что данная возможность до конца не реализована
поиск на форуме достаточно быстро найдет ответы на поднятую тему, вот к примеру http://www.owen.ru/forum/showthread.php?t=10555&p=72391&viewfull=1#post72391
самое смешное мой ответы и там и здесь идентичны)))
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot