В части систем действительно измеренное значение передается как числитель в виде целочисленного числа дроби в знаменателе которой максимальное значение целочисленного числа (65535), а эта дробь в свою очередь умножается на размах диапазона измерения и к этому ко всему прибавляется нижнее значение диапазона. Вот кое у кого так. Но передаются и честные плавающие числа в виде пары целочисленных регистров.
Конечно же расположение переменных для каждого прибора свое. Но тут ведь как: OPC сервера уникальны и каждый работает только с той железкой под которую заточен, а в MOdbus - по другому. Устройства поддерживают стандартный набор команд и из устройства можно вытащить данные в сложившийся и как правило поддерживаемой скадами форме (стандарта тут нет но исторически сложилось несколько общепринятых видов представления чисел).
Т е OPC уже написан и в теории должен работать с прибором, Modbus требует задания взаимодействия с прибором, адресов и типов данных в которые получатся переменные при обмене по этим адресам.
Да, при работе с Modbus нужно провести определенную работу при подключении прибора, но она посильная. При затыках с OPC придется держать программиста и общаться с разработчиками (у брендов это теоретически вылизано, но периодические вопросы на этом форуме заставляют насторожиться).
Никакие адреса не смещаются - они как сидели на своих местах прописанных разработчиками железа так и сидят.
Через Modbus передается все что угодно и когда угодно.
OPC - это технология Windows по передачи данных между приложениями работающими при управлении или отображении в промышленности. Естественно что под другими операционками это не работает. Там как правило обмены пишут сами под конкретику и там кстати modbus крепко облегчает жизнь при обмене с приборами.
Все что я написал каксается обмена с приборами. При обмене между приложениями в Win работает OPC. В других ситемах - не скажу.