Сдвиг 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

Сдвиг 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-портам.