PDA

Просмотр полной версии : СПК207 <--> MOXA NPort 5150 <--> М110



Сергей Рогов
17.08.2015, 10:29
Решаю задачку.

Исходные данные:
1. Есть ПЛК ф.ОВЕН модели СПК207;
2. Есть модуль дискретных выходов ф.ОВЕН модели МУ110-16Р;
3. Есть конвертор интерфейсов (Ethernet-RS485) ф. MOXA модели NPort 5150;
4. ПЛК связан с конвертором по сети Ethernet через хаб, протокол - ModBus TCP;
5. Модуль имеет заводские настройки, один на шине, соединен с конвертором по RS485, протокол - ModBus RTU;
6. Оборудование собрано на стенде. Среда разработки проекта ПО - CoDeSys v3.5.3.

19567

Задача: обеспечить управление дискретными выходами модуля МУ110-16Р от ПЛК через сеть Ethernet с применением указанного конвертора интерфейсов.

Этапы решения задачи:
1. Для начала конвертер был сконфигурирован в режим виртуального COM-порта. Успешно осуществлен обмен данными с модулем от ПК через ПО "Конфигуратор M110". Делаем вывод, что Мокса умеет быть "прозрачной" для обмена данными по ModBus.

ВНИМАНИЕ:
В документации у Моксы А = (Data-), В = (Data+).
У ОВЕН A = (Data+), B = (Data-). (http://www.owen.ru/forum/showthread.php?t=5462)

2. После изучения мануала на Моксу сделан вывод, что для работы в связке с ПЛК ОВЕН СПК207 требуется сконфигурировать ее в режиме "TCP Server Mode".

Мануал на MOXA NPort (http://www.moxa.com/support/DownloadFile.aspx?type=support&id=205)

3. Создан тестовый проект для ПЛК, сконфигурированы соответствующие устройства в проекте, сконфигурирована Мокса.

19568

19569 19570 19571

4. Запускаю проект. Вижу частое промаргивание лампочки Link и нечастое помаргивание лампочки Tx/Rx на Моксе. В отладке вижу, что данные (единичка в нулевой бит) выставляются в регистр (функция 16, 0#0032), но не видны при чтении (функция 03, 0#0032). Связь со Слэйвом в дереве девайсов при этом отваливается раз в секунду, после промаргивания лампочки Tx/Rx.

ПРИМЕЧАНИЕ: Если задать "левый" IP в настройках девайса, связь отваливается намного чаще, лампочка Tx/Rx не моргает. Восстанавливается связь за счет активирования функции "авто переподключение" в настройках Мастера.


Делаю вывод, что ПЛК видит Моксу, производится попытка передачи неких данных по RS485, но модуль не откликается.

Вопрос: как сделать, чтобы все работало ;)

А если серьезно - прошу помочь дельными советами.

murdemon
17.08.2015, 14:49
никак :) поставить еще один моха его в режим TCP client и СПК207 к нему по 485 .. (он не умеет переколбашивать Modbus TCP в Modbus RTU, на удивление) есть еще вариант: взять реализацию Modbus RTU (бибку тот же OSCAT) и заменить работу с последовательным портом на работы по сокету с сетевым адресом.

Сергей Рогов
17.08.2015, 15:29
...он не умеет...
Он, в смысле, Moxa? То есть, получается, в режиме виртуального СОМ-порта (см. этап 1), драйвер Моксы для ПК изначально передает данные по ModBus RTU ?

Scream
17.08.2015, 15:31
Посылаете в одном протоколе, а модули работают на другом... ясен пень никто отвечать не будет. Если Вас зовут Петя вы ведь на Васю откликаться не будете еще и на китайском?
Делать свою реализацию, работать будет. Еще бы я проснифферил rs485 на выходе моксы, чтобы убедиться приходит все как надо...
конечно с crc\lrc заморочиться надо будет, но всё вполне возможно.

murdemon
17.08.2015, 15:34
нет.. просто СПК207 не умеет делать виртуальный порт.. (пока сам это не за программируешь) ...

Сергей Рогов
17.08.2015, 15:42
нет.. просто СПК207 не умеет делать виртуальный порт.. (пока сам это не за программируешь) ...
Да, но мне не нужен, как бы, виртуальный порт. В проекте я пытаюсь работать через Modbus TCP Master - Modbus TCP Slave.

murdemon
17.08.2015, 15:50
в виде мастера у вас ПЛК Modbus TCP ... а кто в виде слейва ? (я написал же выше ... почему не будет работать... и как можно сделать.. к чему эти вопросы??? )

Сергей Рогов
17.08.2015, 16:42
В техподдержке MOXA подтвердили, что NPort 5150 преобразовывают только физический интерфейс, протокол не преобразовывают.
Конвертеры же типа MGate MB3170 умеют преобразовывать и физический интерфейс и протокол.

К сожалению, изменить комплектацию в текущем проекте вряд ли возможно. А конвертеров в проекте много. Придется выкручиваться.

murdemon
17.08.2015, 17:17
Напиши ко мне на email или в Skype ... могу взяться за такую разработку...

Сергей Рогов
25.08.2015, 09:49
В итоге, задача решена путем замены преобразователей интерфейсов в проекте с IA5150 на MB3170 (см. выше).

Спасибо Scream, murdemon, за помощь в локализации проблемы!

murdemon
25.08.2015, 11:51
расскажи это девайс сам маппинг RTU регистров и адресов из Modbus TCP запроса подхватывает или еще что внутри надо настраивать?

Сергей Рогов
25.08.2015, 14:10
murdemon, не хочу отвечать голословно, словами из мануала. С Вашего позволения, отвечу после того, как исследую устройство "живьем".

melky
26.08.2015, 13:06
Чтобы работать через Modbus TCP надо было брать Moxa NGate ModbusTCP -> Modbus RTU.
В данном случае либо писать свой опрос, либо доставлять такую же моха на 485 интерфейс ПЛК в режиме сервера или клиента уже моховского.

Сергей Рогов
26.08.2015, 15:15
А что за устройство "Moxa NGate ModbusTCP -> Modbus RTU"? Если я не ошибаюсь, у MOXA есть серии NPort (http://moxa.ru/shop/com_v_ethernet/) (преобразователи СОМ-портов) и MGate (http://moxa.ru/shop/com_v_ethernet/modbus/) (преобразователи протоколов).

Сергей Рогов
30.09.2015, 14:25
murdemon, наконец исследовал коробочку MGate MB3170 на стенде (http://www.owen.ru/forum/attachment.php?attachmentid=20187&stc=1&d=1443608226).
Из настроек изменил только самые необходимые, расширенную настройку не проводил:
1. Установил режим RTU Slave;
2. Записал IP-Адрес, такой же, как в проекте;
3. Изменил настройки последовательного интерфейса (шины RS-485);
4. Все остальные настройки оставил по умолчанию.
Пользовался конфигуратором "MGate Manager". Коробочка также поддерживает конфигурирование через web-интерфейс.
В проекте CoDeSys модуль дискретных выходов описан как "Modbus TCP Slave" под мастером сети типа "Modbus TCP Master" (см. проект). В настройках "Modbus TCP Slave" указал IP Моксы, 502 порт, номер модуля выходов в сети RS-485 (параметр "Unit-ID"). Собственно, все.
Всю остальную работу берет на себя софт, прошитый в MGate.

Заработало сразу же, под тем же проектом (http://www.owen.ru/forum/attachment.php?attachmentid=19568&d=1439795521http://) (см. первое сообщение (http://www.owen.ru/forum/showthread.php?t=21926&p=178261&viewfull=1#post178261)). Всё четко, без проблем.
Как будет работать в реальной конфигурации, какие тонкие настройки понадобятся - посмотрим. На данный момент считаю вопрос закрытым.

murdemon
01.10.2015, 09:12
ОК это хорошо... те у вас за MGate на 485 подключено много modbus rtu модулей? И MGate всасывает много IP адресов или один и тот же IP с разными сокет портами? (просто 1 MGate на 1 модуль 485, немного накладно получается)

Сергей Рогов
01.10.2015, 10:45
Да, к одному MGate будет подключено на шине RS-485 много модулей. Для этой конкретной шины для всех модулей будет указан один сокет (IP-Адрес + Номер порта). А обращение к конкретному модулю на этой шине будет производиться по уникальному "Unit-ID". Этот параметр и есть адрес модуля на шине RS-485 (modbus rtu в данном случае).

Помимо этого, к ПЛК, через хаб, будет подключаться по несколько конвертеров MGate. Таким образом будет создаваться множество шин RS-485 для одного ПЛК, а не две(три), как в базовой конфигурации СПК270.