S7-1200 Modbus TCP

ПЛК / Децентрализованная периферия
Ответить
Ivydy
Дилетант
Сообщения: 18
Зарегистрирован: 13 фев 2018, 16:17

S7-1200 Modbus TCP

Сообщение Ivydy »

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

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: S7-1200 Modbus TCP

Сообщение Михайло »

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

Борисыч
Любитель
Сообщения: 41
Зарегистрирован: 20 дек 2017, 17:01

Re: S7-1200 Modbus TCP

Сообщение Борисыч »

Добрый день.
Для физического соединения данных устройств (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.

Ivydy
Дилетант
Сообщения: 18
Зарегистрирован: 13 фев 2018, 16:17

Re: S7-1200 Modbus TCP

Сообщение 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.
Спасибо за подробный ответ. А не могли бы ссылку на документацию дать ?

Борисыч
Любитель
Сообщения: 41
Зарегистрирован: 20 дек 2017, 17:01

Re: S7-1200 Modbus TCP

Сообщение Борисыч »

например: https://www.prosoft.ru/cms/f/464634.pdf
начиная с 1008 страницы - Modbus TCP коммуникации, а конкретно - 1021 страница.

Борисыч
Любитель
Сообщения: 41
Зарегистрирован: 20 дек 2017, 17:01

Re: S7-1200 Modbus TCP

Сообщение Борисыч »

В структуре TCON_IP_V4 пробивается порт (в LocalPort) - это если в блоке (MB_SERVER) явно нет, если в блоке (MB_SERVER) есть явно то просто порт, как в руководстве пробиваете.

Борисыч
Любитель
Сообщения: 41
Зарегистрирован: 20 дек 2017, 17:01

Re: S7-1200 Modbus TCP

Сообщение Борисыч »

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

Ivydy
Дилетант
Сообщения: 18
Зарегистрирован: 13 фев 2018, 16:17

Re: S7-1200 Modbus TCP

Сообщение Ivydy »

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

asnik
Дилетант
Сообщения: 7
Зарегистрирован: 01 май 2018, 09:57

Re: S7-1200 Modbus TCP

Сообщение asnik »

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

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: S7-1200 Modbus TCP

Сообщение Михайло »

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

asnik
Дилетант
Сообщения: 7
Зарегистрирован: 01 май 2018, 09:57

Re: S7-1200 Modbus TCP

Сообщение asnik »

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

Ответить