This is topic Чтение 2-х регистровых значений in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.
Здравствуйте! Хочу снять показания с аналоговых датчиков с прибора Ш932.9А. Связь через виртуальный COM порт по Modbus RTU. В TM использую Rout_Word(3). В описании к прибору написано: "Номера «регистров хранения» с плавающей точкой, используемые для чтения из Ш932.9А числовых данных функцией 0Х03 и для записи этих данных в Ш932.9А функцией 0Х10: 2192-2287(890Н) Результаты опроса аналоговых датчиков (каналы 1-48) Примечание: каждый регистр с плавающей точкой, согласно протоколу MODBUS, передается двумя 16- разрядными, младшим регистром вперед." И загвоздка в том, что я не понимаю как соединить 2 регистра одного канала в реальное значение. Может в TM есть стандартные средства для этого? Или необходимо писать подпрограмму для вычисления?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Надо использовать функцию Rout_Float(3) – считать 4-байтовую переменную с плавающей точкой типа out.
Для адекватного преобразования, возможно, придется задать порядок следования байтов - см. описание файла modbus.set и ключей для файла конфигурирования запуска узла TMcom_<ordinal>.cnf: MDB_FLOATCNV=101 – этот ключ разрешает задание порядка следования байтов отдельно для каждого устройства (с помощью ключей MDB_AFCNV<nn>);
MDB_AFCNV<nn>=<M, DEC> – порядок следования байтов для устройства с адресом nn. Число M вычисляется следующим образом (BO – номер порядка следования байтов, см. Обмен по MODBUS ):
для переменных FLOAT BO записывается в полубайт 0xF;