Работа с библиотекой блоков Modbus TCP

Рекомендуемое ПО для ознакомления с библиотекой

Для ознакомления с основными возможностями библиотеки рекомендуется использовать симуляторы слейв-устройств, такие как:

Особенности работы с симулятором ModRSsim2

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

Особенности работы с симулятором ModbusPal

Симулятор поддерживает работу только с регистрами хранения (Holding Registers) и регистрами флагов (Coils)

Особенности работы библиотеки

Карта смещений

Библиотека блоков использует следующую карту смещений:

Начало работы

Минимальное необходимое ПО

ВНИМАНИЕ: для корректной работы демонстрации требуется запустить ModRSSim2 и включить станцию 1

ВНИМАНИЕ: для быстрого старта рекомендуется войти в обучающий режим перед нажатием кнопки Run. Для этого нажмите кнопку Learn

Простой обмен данными

Рассмотрим модель:

open_system('ritmdemo_block_modbus_ops')

Соединение с сервером Modbus устанавливается при помощи блока Modbus TCP Setup. Его параметры следующие:

Из настроек видно, что устанавливается связь с сервером 192.168.56.3:502, время ожидания ответа - 0,01 секунд, а максимальное количество попыток переподключения к серверу - 5. Данному соединению присваивается внутренний идентификатор 0. В дальнейшем, данный идентификатор будет использоваться в блоках чтения и записи, например, в блоке Modbus Read Registers:

Рассмотрим область Чтение регистра HOLDING. В этой области, выход “Статус” блока чтения регистров подается на подсистему “Обработка ошибки соединения”.

Назначение этой подсистемы - отслеживать статус операции. Если статус операции равен -1, то блок Assertion выдаст предупреждение. Применяя такую конструкцию моделирования, можно останавливать исполнение модели при длительном обрыве соединения.

Рекомендуемые приемы моделирования

Запись множественных значений

В том случае, если требуется записать несколько последовательных регистров или битов, рекомендуется формировать вектор значений с помощью блока Vector Concatenate. Блоки для записи последовательности регистров или битов требуют явного задания количества записываемых данных. Количество данных вычисляется с помощью блока Probe Width.

В качестве примера обратитесь к модели:

open_system('ritmdemo_block_modbus_vectors')