PDA

Просмотр полной версии : Контроллер + модули Modbus



Sergeba
05.02.2016, 19:11
Пытаюсь подружить систему (контроллер + модули) и OPC-сервер. Контроллер с модулями (диммеры, реле и т.д.) работают в сети RS-485 по протоколу Modbus. OPC-сервер работает на Win-машине по протоколу Modbus TCP. Соединение с контроллером прописал без проблем, по ID=1 контроллер подключился, настроил тэги - всё работает. Далее пытаюсь подключить остальные модули в сети, но не удаётся... Каждый модуль в сети имеет свой индивидуальный адрес, к примеру диммер - 18. Прописываю в OPC-сервер Device2, указываю ID=18, далее конфигурирую тэги. Запускаю - всё, что касается Device1 (ID=1) работает нормально, напротив тэгов Device2 (ID=18) написано BAD, хотя с помощью Modbus Poll могу по адресу 18 записать в регистр значение - диммер реагирует...

Данные из листа описания по диммеру:
Регистры, функции (чтение 3, запись 16) Holding Registers
Адрес_____Доступ__________Описание
1_______чтение/запись______Задержка переключения кратная 1мс, максимальное время 1 минута (60000)
2_______чтение/запись______Значение яркости (0-100%)

Как прицепить модули к OPC-серверу?...

SCADAMaster
05.02.2016, 20:15
Контроллер с модулями (диммеры, реле и т.д.) работают в сети RS-485 по протоколу Modbus. OPC-сервер работает на Win-машине по протоколу Modbus TCP.
У вас Modbus TCP и RS-485 - как такое может быть?

Sergeba
05.02.2016, 22:59
Что тут удивительного? Контроллер соединён с модулями по 485, у него есть порт Ethernet, и комп, на котором установлен OPC-сервер общается с контроллером
по протоколу Modbus TCP. Вроде верно я понимаю взаимодействие в сети?

_Mikhail
05.02.2016, 23:35
Что тут удивительного? Контроллер соединён с модулями по 485, у него есть порт Ethernet, и комп, на котором установлен OPC-сервер общается с контроллером
по протоколу Modbus TCP. Вроде верно я понимаю взаимодействие в сети?
Нет не верно, по протоколу Modbus TCP идет подключение ПК к ПЛК, в свою очередь ПЛК связан с модулями по 485 и это абсолютно другая сеть, никак не связанная с Modbus TCP.

Sergeba
05.02.2016, 23:55
Так вроде бы я так и написал, может неверно мысль выразил... Хорошо, так у ПК с OPC-сервером есть возможность получать данные и производить запись в модули, которые подключены к ПЛК по 485?

_Mikhail
06.02.2016, 00:01
Так вроде бы я так и написал, может неверно мысль выразил... Хорошо, так у ПК с OPC-сервером есть возможность получать данные и производить запись в модули, которые подключены к ПЛК по 485?
В сети Modbus TCP всего одно опрашиваемое устройство - ПЛК с адресом 1. Модули находятся в другой сети со своей адресацией, никак не связанной с Modbus TCP. Надо создать промежуточные переменные в ПЛК, которые будет опрашивать ПК и которые будут связаны с переменными из модулей

Sergeba
06.02.2016, 00:10
В сети Надо создать промежуточные переменные в ПЛК, которые будет опрашивать ПК и которые будут связаны с переменными из модулей

Вот это поворот!!! Я, правда, уже начал догадываться об этом, но надеялся что если у ПЛК адрес 1, а у модулей 2,3,4 и т.д., то можно к ним подключиться аналогичным способом... Интересно, у производителя ПЛК есть "куцее" приложение для Android-устройств - я в нём тупо прописываю адрес 18, регистр 40002, значение 100 и у меня модуль (диммер) включает свет а так же есть "ползунок" - могу выставить яркость. Это тоже происходит посредством контроллера или напрямую с диммером?

Sergeba
06.02.2016, 00:23
В сети Надо создать промежуточные переменные в ПЛК, которые будет опрашивать ПК и которые будут связаны с переменными из модулей

Стоп! А какже такой момент. Есть программа для ПК Modbus Poll. В ней я настроил подключение к ПЛК по Modbus TCP, при опросе ПЛК использую адрес 1, но если выбираю функцию записи (06), выставляю адрес 18 и адрес регистра 1 (т.е. он 2), величину 100 - свет включается, величину 0 - свет выключается. Т.е., получается, я посредством Modbus TCP управляю модулем, подключенным к ПЛК по 485?

_Mikhail
06.02.2016, 00:28
Я не могу видеть что и как вы подключаете и опрашиваете. Вам объяснили что Modbus ТСР и Modbus 485 - это разные сети в которых свои адресации.

Sergeba
06.02.2016, 00:34
Я понял что это разные сети, но у ПЛК есть подключение к Ethernet сети (он имеет свой IP-адрес). Из программы Modbus Poll я могу управлять как ПЛК, так и модулями - причём адресация совпадает с адресацией ПЛК (он работает в 485 сети по протоколу Modbus). Как эту адресацию реализовать в OPC-сервере для дальнейшего использования в MasterSCADA?

SCADAMaster
06.02.2016, 07:44
Что у вас за контроллер?
Он способен работать в режиме конвертера Modbus TCP - Modbus RTU?
Вообще если ваша задача подключить сеть RS-485 в сеть Ethernet, то для этого есть устройства проще. В частности Moxa Nport:
http://insat.ru/products/?category=1122
Они могут создавать виртуальный СОМ порт или работать в режиме TCP Server Mode - оба этих режима в ОРС сервере поддержаны.

Sergeba
06.02.2016, 11:03
Что у вас за контроллер?
Он способен работать в режиме конвертера Modbus TCP - Modbus RTU?


Контроллер Spider 2.3 - вот техническое описание (http://www.insyte.ru/upload/iblock/aea/tekhnicheskoe-opisanie-spider2.3.pdf) - но в описании насчёт конвертера не заявлено, тем не менее я могу находясь в локальной сети, с помощью программы Modbus Poll, указав IP-адрес контроллера и порядковый номер компонента, управлять компонентами сети контроллера (Modbus RTU). Т.е. получается есть конвертер? Как этот успех перенести в OPC-сервер? Мне не удаётся подключить компоненты 485 сети по аналогии с Modbus Poll...

Вольд
06.02.2016, 11:32
Контроллер Spider 2.3 - вот техническое описание (http://www.insyte.ru/upload/iblock/aea/tekhnicheskoe-opisanie-spider2.3.pdf) - но в описании насчёт конвертера не заявлено, тем не менее я могу находясь в локальной сети, с помощью программы Modbus Poll, указав IP-адрес контроллера и порядковый номер компонента, управлять компонентами сети контроллера (Modbus RTU). Т.е. получается есть конвертер? Как этот успех перенести в OPC-сервер? Мне не удаётся подключить компоненты 485 сети по аналогии с Modbus Poll...

Тебе надо написать простенькую программу для ПЛК SPIDER на языке С.

Sergeba
06.02.2016, 12:24
Тебе надо написать простенькую программу для ПЛК SPIDER на языке С.

Подскажите, что нужно описать в программе? Имеется в виду передача значений переменных в модули через переменные контроллера?

Sergeba
06.02.2016, 12:47
Кстати, попробовал во время работы OPC-сервера внести в соответсвующий тэг диммера (несмотря на то, что он BAD) значение 100... и чудо, но свет включился... Т.е. наплевать на BAD - трансляция работает... теперь бы с чтением регистров определиться...

Интересно, что после передачи, тэг на некоторое время становится ОК, а потом опять BAD.

Sergeba
06.02.2016, 13:12
Вообщем получилось передать значение в модуль (диммер) из MasterScada. Управлять модулями могу, но считывать значения регистров из модулей пока не получается... но если использовать переменные контроллера - то без проблем.

SCADAMaster
06.02.2016, 18:53
А Modbus Poll нормально опрашивает?
Приложите логи обмена из Modbus Poll и Modbus OPC сервера.

Sergeba
06.02.2016, 23:51
А Modbus Poll нормально опрашивает?
Приложите логи обмена из Modbus Poll и Modbus OPC сервера.

Нет, с Modbus Poll тоже не удаётся опросить. Лог OPC не нашёл, а лог Modbus Poll - там сначала идёт опрос переменных контроллера (там где OK), когда подходит очередь к опросу модуля (диммера) - пишет time out.

SCADAMaster
07.02.2016, 11:12
Если и через другие Modbus программы не удается опросить, значит что-то нужно в контроллере настроить.
Ну или сменить на Nport.

Sergeba
07.02.2016, 11:51
Если и через другие Modbus программы не удается опросить, значит что-то нужно в контроллере настроить.
Ну или сменить на Nport.

Меня смущает эта фраза в описании контроллера:

Управление сторонней периферией: RS485/RS232, гальваническая развязка 1500В (только передача, полностью настраиваемый)

В понедельник попробую уточнить у производителя...