Tools


«Сименс» в России

«Сименс» в России

Использование CM PtP RS232 HF как Modbus RTU Slave

Компоненты для сетей Industrial Ethernet, ProfiNet, Profibus, AS-интерфейс, системы телеметрии SINAUT, беспроводные сети промышленного Wifi, оборудование SCALANCE

Модератор: Boris_Fedoseev

Дмитрий Лавров
Сообщения: 3
Зарегистрирован: 21 июн 2019, 09:29

Сообщение Дмитрий Лавров » 21 июн 2019, 09:50

Здравствуйте.

Работаю над проектом, в котором контроллер S7-1500 (6ES7 511-1AK02-0AB0) c CM PtP RS232 HF (6ES7 541-1AD00-0AB0) используются в качестве ведомого устройства в сети Modbus RTU. Программа пишется в TIA Portal V15.0.

Для работы CM использую блоки MODBUS_COMM_LOAD и MODBUS_SLAVE.

С MODBUS_COMM_LOAD проблем нет, отрабатывает нормально, а вот блок MODBUS_SLAVE выдает статус #7000, Block Idle, без каких-либо комментариев по поводу возможных путей исправления.

При этом сам блок работает нормально, при смене адреса Slave-устройства на 0 он меняет статус на "Недопустимый адрес Slave-устройства".

В параметр MB_HOLD_REG в блоке MODBUS_SLAVE задаю указатель на глобальный блок данных, в котором лежит массив из 10 переменных типа INT, которые я собираюсь передавать.

Сталкивался ли кто-то с такой проблемой? У меня осталось единственное предположение - я неправильно создал блок для передачи данных, но вот примера, как именно этот блок должен выглядеть - найти не могу.


Дмитрий Лавров
Сообщения: 3
Зарегистрирован: 21 июн 2019, 09:29

Сообщение Дмитрий Лавров » 23 июн 2019, 12:51

Проверил пример, взял из него один в один вызов MODBUS_SLAVE и структуру данных для Slave-устройства (до этого тоже всё правильно задавалось, но решил сделать один в один) - всё равно статус #7000.

Не могу понять, что не так, задача должна быть примитивной.

Возможно ли такое, что для нормальной настройки необходимо писать что-либо в instance DB блока MODBUS_SLAVE (в исходной программе ничего похожего не вижу)? Или же что без мастера так и будет выдаваться статус #7000?

Вызов блока и структуру DB под данные приложу, на всякий случай.


Изображение

Изображение

Potapov
Сообщения: 447
Зарегистрирован: 16 апр 2018, 16:32

Сообщение Potapov » 23 июн 2019, 21:11

Статус всегда будет показывать 7000
Результат передачи надо фиксировать по Значению битов результата
NDR
FALSE – No new data
TRUE – Indicates that new data was written by the Modbus master
The NDR bit is TRUE for one cycle after the last request has been completed without errors.

NDR активен в течении одного цикла... = не видим для глаза
На выходе надо использовать вспомогательные элементы триггеры, счётчики, Move для фиксации факта события
и запоминать Статус при NDR = TRUE
типа как на картинках ниже
Изображение

фиксация факта события по флагу, активному только в течение ОДНОГО цикла
Изображение

Дмитрий Лавров
Сообщения: 3
Зарегистрирован: 21 июн 2019, 09:29

Сообщение Дмитрий Лавров » 24 июн 2019, 08:48

potapov, спасибо за консультацию, тогда буду подключать MASTER и пробовать уже с ним.

А не подскажете, те данные, которые предполагаются к передаче - как то можно отследить, что они действительно переданы из ПЛК в коммуникационник и доступны в сети без подключенного MASTER-устройства?

Potapov
Сообщения: 447
Зарегистрирован: 16 апр 2018, 16:32

Сообщение Potapov » 24 июн 2019, 12:57

я игрался с настоящими устройствами и смотрел что они реально передают с помощью логического анализатора USBee Logic.
Изображение