Для ознакомления с основными возможностями библиотеки рекомендуется использовать симуляторы слейв-устройств, такие как:
Строго рекомендуется пересоздавать сокеты после сеанса работы с симулятором. Причина заключается в том, что после закрытия соединения сокет остается активным некоторое время, что приводит к невозможности подключения.
Симулятор поддерживает работу только с регистрами хранения (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')