Пришлось..серьезно покопать, чтобы объяснить данную ситуацию..и показать, что ОВЕН здесь не причем - с документацией все ок!
И так:
Значение с плавающей точкой, как известно, хранится в 2х регистрах: основном и вторичном.
В основном - запятая и значение до n-го знака..
Во вторичном - с n-го знака до конца.
Так вот, для ТРМ202 Основные регистры для измеренных значений хранятся в первых регистрах Floata: 4105(1009 hex) для 1го входа, 4107(100B hex) для 2го.
Дальше интересней..
В протоколе Modbus не стандартизован тип Float - след. просто происходит передача последовательности 2х регистров, а их расшифровку мастер производит, так как реализовал Разработчик.
К сожалению и мы наступили на эти грабли(с ех пор исправились):
СМИ1 и СП270 абсолютно по разному интерпритируют содержания 2х регистров: СП270 считает что ОСНОВНОЙ регистр-ПЕРВЫЙ(собственно как и есть в ТРМ), а вот СМИ1 - что главный второй регистр.
..еще интересней...то что сделали Вы:
1) На вашем примере..считывая значения 2х регистров с 4106 (4106,4107), СМИ1 ищет измеренное значение во втором регистре и находит!! - там как раз ТРМ хранит его для второго канала.
2) считывая значения 2х регистров с 4108 (4108,4109) СМИ1 посути показывает значения регистра 4109..а что хранится там см. документацию:
"Входная величина для ЛУ1", т.е. значение на входе 1регулятора.. а по умолчанию это значение 1го входа..
Чтобы действительно считать значение с 1 входа ТРМ202 с помощью сми1 по modbus нужно считывать Float c адреса 4104!!
Надеюсь, я смог донести до всех что хотел.. и работая с Флоат.. вы прежде чем ругаться будете пробовать варианты =) ибо мирового стандарта на него нет..




Ответить с цитированием

