Сдвиг Slave ID

Сдвиг Slave ID очень полезен в ситуациях, когда нужно работать с ведомыми устройствами Modbus, которые не позволяют менять ID (или позволяют делать это только в ограниченном диапазоне).

Например, допустим, ведущему устройству Modbus TCP нужно работать с двумя ведомыми устройствами Modbus RTU, подключёнными к последовательным портам 1 и 2. Ведущему устройству необходимо, чтобы ID этих ведомых были разными, например 1 и 2, но оба ведомых имеют одинаковый фиксированный ID, равный 1. Проблемы нет, на помощь приходит сдвиг ID!

Для этого примера используйте маршрутизацию по Slave ID:

• Настройте первый диапазон ID следующим образом:

o ID From = 1

o ID To = 1

o ID Shift = 0

o Destination = Serial 1

• Настройте второй диапазон ID следующим образом:

o ID From = 2

o ID To = 2

o ID Shift = -1

o Destination = Serial 2

Сдвиг Slave ID при маршрутизации

Сдвиг ID для первого диапазона равен 0, то есть сдвига нет. Когда ведущее устройство Modbus TCP отправляет запрос ведомому устройству с ID = 1, этот запрос пересылается без изменений в последовательный порт 1. Сдвиг ID для второго диапазона равен -1, то есть из ID любого запроса в этом диапазоне вычитается 1. Когда ведущее устройство Modbus TCP отправляет запрос ведомому устройству с ID = 2, этот запрос пересылается в последовательный порт 2. Номер ID в этом запросе изменяется: к исходному ID, заданному ведущим устройством, добавляется -1. Поэтому поле ID в переданном сообщении становится равным 1, как и требуется получателю запроса!

Сдвиг ID может быть как положительным, так и отрицательным. Сдвиг ID можно использовать совместно с маршрутизацией по Slave ID и маршрутизацией по TCP-портам.