PDA

Просмотр полной версии : "Прозрачный" режим RS232/RS485



KoryaevAN
28.04.2011, 12:50
Здравствуйте!
Прошу помощи в следующем вопросе:
К ПЛК110-60М в сеть RS485 подключен преобразователь частоты Emotron.
Для диспетчеризации по RS232 он опрашивается ICONICS Modbus OPC Server 3.12 по протоколу ModBus RTU. При использовании в конфигурации ПЛК ModBus (master) и ModBus (slave) количество читаемых ModBus адресов ограничено прописанными в конфигурации. А в Emotron более 1500 ModBus адресов, и какой мне понадобится в следующий раз при реализации мнемосхем для диспетчеризации неизвестно. Отсюда возникает необходимость в «прозрачном» канале RS232/RS485, т.е. работы ПЛК как конвертера RS232/RS485.
Подскажите, как можно реализовать «прозрачный» режим между портами ПЛК или ткните в готовые наработки.

Александр Приходько
28.04.2011, 16:27
Не совсем ясна задача. Вы хотите на ПЛК по 485-у подключить частотник, а по 232-у подключить к ПК через OPC? и при этом менять конфигурацию ОРС?

Если так, то по 485 вы читаете все возможные переменный с частотника. Делаете такой же набор переменных по RS-232 и копируете одни переменные в другие. Соответственно в OPC вы используете только те, которые вам необходимы. Прозрачный режим боюсь вы не реализуете.

Как вариант можно обойти ПЛК и взять просто конвертер интерфейса 232 в 485, например АС3М.

Что касается ПЛК вам нужно на диске с контроллером посмотреть документ PLC_Configuration_OWEN, разделы:
-Modbus master
-Modbus slave

KoryaevAN
29.04.2011, 10:29
Да, все именно так и хотелось бы.
Небольшое уточнение, объект не один и объекты удаленные-тепловые насосные станции (ТНС).
Соединение с сервером, в настоящее время, через конвертер RS485/232 -> GPRS коммуникатор -> "дырка" в Интернет на сервере -> виртуальный COM port -> OPC.
Но имея на борту ПЛК кучу портов (что и привлекло при выборе ПЛК), как то неправильно ставить еще одну железку. Тем более, что на некоторых объектах имеется, или появится еще и Ethernet сеть, какой тогда еще хитрый конвертер искать и закупать?
С ModBus (master) и ModBus (slave) я разобрался, все работает, но согласитесь, заносить в конфигурацию все ModBus адреса которые могут понадобится, сейчас или в будущем, не очень интересно. И в случае необходимости, а система у нас не стоит на месте, для внесения потребовавшихся, но не занесенных в конфигурацию адресов, необходимо будет мотаться по ТНС-кам с ноутом и менять на ПЛК программы. А я уж и не говорю про эти муки с выравниванием ModBus адресов.
Насколько я понимаю, OPC ModBus сервер отдает по RS232 посылку уже в формате ModBus RTU , ее надо тупо направить в RS485, дождаться ответа от ModBus устройства и отправить его обратно.
Может с библиотекой UNM поэксперементировать?
PS. Данные с частотника в основной программе ПЛК не участвуют, используются только для диспетчеризации

Николаев Андрей
29.04.2011, 13:11
В Вашем случае, с такими неопределенностями, действительно стоит организовать обмен не через PLC Configuration, а реализовать программно.
И если все 1500 (с ума сойти... и действительно все нужны, а не 1,5% из них???) одинакового формата, то Вы по сети говорите какой параметр нужно опросить. Контроллер получает "запрос", формирует опрос именно этого регистра, получает ответ, и возвращает спрашивающему.
То есть можно сделать один блок опроса, и просто менять номер регистра.
Конфигурация ПЛК тут конечно бессильна. За базу можно взять библиотеку ModBus.lib

KoryaevAN
29.04.2011, 15:04
Ну, нет конечно же! Все 1500 не нужны! Но и 1,5% это 20-25 адресов.
Плюс к этому, частотников там два и парочка 8 канальных модулей аналоговых входов, да и сам ПЛК необходимо опрашивать.

То есть, если использовать библиотеку ModBus, то необходимо в конфигурации прописать чтение в ModBus(master) 25+25+8+8+15=81 ModBus регистра из 5-и ModBus модулей, выставить в ModBus(slave) 81 переменную для чтения (расставив их в соответствии с форматом числа для выравнивания ModBus адресов регистров), в программе сделать пересылку прочитанных ModBus(master) переменных в переменные ModBus(slave) и только после этого читать их ОРС сервером прописав там ПЛК как ModBus модуль с адресом установленным в ModBus(slave) и читая из него регистры с адресами рассчитанными в ModBus(slave).

После этого, конечно, покажется проще поставить конвертер 232/485 и не заморачиваться, но я не верю, что такая мощная железка как ПЛК не справится с задачей которую выполняет маленькая коробочка которую сделали в Китае!

В запросе, который посылает ModBus OPC по протоколу ModBus RTU, уже содержится адрес ModBus модуля в сети, адрес ModBus регистра в этом модуле, количество байт которые необходимо отдать (или записать и сами данные для записи).
Получив этот запрос ModBus модуль с адресом указанным в запросе готовит и отсылает ответ (или производит запись).

Для получения "прозрачного" режима необходимо получить запрос от ОРС по RS232 и не меняя отправить его в RS485, дождаться ответа от модуля и отправить его, опять таки не меняя, через RS232 к ОРС.