Страница 1 из 1

S7-1200 Modbus TCP

СообщениеДобавлено: 13 фев 2018, 16:25
Ivydy
Добрый день. Задача: ПЛК S7-1200 1214С (Slave). Должна быть организована связь с двумя панелями (Master) по Modbus TCP. S7-1200 имеет только один порт для соединения по Modbus . Существует ли какой-нибудь дополнительный коммуникационный модуль для организации связи по Modbus TCP. Или как еще можно это сделать? Спасибо

Re: S7-1200 Modbus TCP

СообщениеДобавлено: 13 фев 2018, 21:14
Михайло
TCP-протокол имеет возможность наложения нескольких протоколов "друг на друга". Соответственно Modbus TCP можно наложить друг на друга. Физически это означает, что достаточно устройства соединить в сеть Ehernet между собой, а дальше все проблемы решать программно. И эти "проблемы" решаемы.

Re: S7-1200 Modbus TCP

СообщениеДобавлено: 14 фев 2018, 07:38
Борисыч
Добрый день.
Для физического соединения данных устройств (2 панели + 1 ПЛК) Вам необходимо, только все эти устройства подключить в один свитч. Обмен будет по TCP/IP. Profinet - используется тот же TCP/IP только в него встроен протокол Profinet. Михайло выше об это написал.
Но есть один нюанс. Программно в CPU1214 создаете MB_SERVER, но в документации на ПЛК S7-1200 написано: S7-1200 позволяет только одно соединение на IP-порт. Т.е. Вам необходимо создать два MB_SERVER у которых будут отличаться IP_PORT(например, 502 и 503) и ID соединения (например 1 и 2). Один MB_SERVER работает с одной панелью по Modbus TCP, другой MB_SERVER работает с другой панелью по Modbus TCP. Об этом хорошо написано в документации на S7-1200 (на 1296 стр.). Посмотрите страницу - 1021.

Re: S7-1200 Modbus TCP

СообщениеДобавлено: 14 фев 2018, 10:15
Ivydy
Борисыч писал(а):Добрый день.
Для физического соединения данных устройств (2 панели + 1 ПЛК) Вам необходимо, только все эти устройства подключить в один свитч. Обмен будет по TCP/IP. Profinet - используется тот же TCP/IP только в него встроен протокол Profinet. Михайло выше об это написал.
Но есть один нюанс. Программно в CPU1214 создаете MB_SERVER, но в документации на ПЛК S7-1200 написано: S7-1200 позволяет только одно соединение на IP-порт. Т.е. Вам необходимо создать два MB_SERVER у которых будут отличаться IP_PORT(например, 502 и 503) и ID соединения (например 1 и 2). Один MB_SERVER работает с одной панелью по Modbus TCP, другой MB_SERVER работает с другой панелью по Modbus TCP. Об этом хорошо написано в документации на S7-1200 (на 1296 стр.). Посмотрите страницу - 1021.

Спасибо за подробный ответ. А не могли бы ссылку на документацию дать ?

Re: S7-1200 Modbus TCP

СообщениеДобавлено: 14 фев 2018, 10:25
Борисыч
например: https://www.prosoft.ru/cms/f/464634.pdf
начиная с 1008 страницы - Modbus TCP коммуникации, а конкретно - 1021 страница.

Re: S7-1200 Modbus TCP

СообщениеДобавлено: 14 фев 2018, 10:30
Борисыч
В структуре TCON_IP_V4 пробивается порт (в LocalPort) - это если в блоке (MB_SERVER) явно нет, если в блоке (MB_SERVER) есть явно то просто порт, как в руководстве пробиваете.

Re: S7-1200 Modbus TCP

СообщениеДобавлено: 14 фев 2018, 10:38
Борисыч
Посмотрел у Siemens есть описание:
https://cache.industry.siemens.com/dl/f ... 200_en.pdf
Там и блоки расписаны и структуры (типа TCON_IP_V4). Что, куда и зачем.

Re: S7-1200 Modbus TCP

СообщениеДобавлено: 15 фев 2018, 10:13
Ivydy
Борисыч писал(а):Посмотрел у Siemens есть описание:
https://cache.industry.siemens.com/dl/f ... 200_en.pdf
Там и блоки расписаны и структуры (типа TCON_IP_V4). Что, куда и зачем.

спасибо, будем разбираться

Re: S7-1200 Modbus TCP

СообщениеДобавлено: 04 июл 2018, 23:10
asnik
Кто сталкивался подскажите. Организовал Modbus TCP server. На вход MB_Hold дал DB с аналогами (т.е. Real). Все замечательно, Modbus клиентом опрашиваю и получаю значения параметров (почему то лектус не берет 0-й адрес, но это мелочи). Кроме этого мне нужно было получить еще входные-выходные дискреты, которые хранятся в другом DB. И вот тут меня ждал облом. Сначала я объединил аналоги и дискреты в одном DB, предполагая что клиенту все равно что читать в регистрах хранения, нужно задать только адрес регистра или бита. Номер не прошел, ошибка соединения с сервером. Тогда сделал два блока MB_SERVER с другим ID и номером порта . На 1-й блок DB с аналогами, на 2-й DB с дискретами, опять фигвам, значения недостоверны. Что я делаю не так? Документацию уже наизусть выучил. Там кроме всего прочего сказано, что можно получить прямой доступ к образу процесса, задавая адреса типа 10001, 30001, но как это сделать практически?

Re: S7-1200 Modbus TCP

СообщениеДобавлено: 04 июл 2018, 23:46
Михайло
asnik писал(а):сказано, что можно получить прямой доступ к образу процесса, задавая адреса типа 10001, 30001, но как это сделать практически?

Прямой доступ к памяти означает: Q0.0...Q1249.6, I0.0...I1249.6, IW0...IW19996, но используя адресацию 1...9999 (во всех случаях).
Holding registers - эти данные особые, их можно размещать в датаблоке DB или в памяти M, да наверное и в Q можно, только зачем?

Re: S7-1200 Modbus TCP

СообщениеДобавлено: 07 июл 2018, 00:09
asnik
В Holding registers (регистры хранения) вы можете хранить все что угодно. Биты, слова, двойные слова, Float. Для организации связи по Modbus TCP, по-моему это очень удобный вариант, когда в одной DB вы объединяете все необходимые данные для запросов Modbus TCP клиентов, будь-то верхняя SCADA или ОРС сервер.