По кратным двойке адресам регистров и по фактическим значениям на скриншоте предположу, что ПЛК настроен на передачу 32-битных плавающих в формате IEEE754. В таком случае надо склеивать чётный регистр с нечётным соседом и интерпретировать это как float. Вместо этого вы шпарите по чётным регистрам как по целым числам. Для простоты преобразования в NModbus4 (который в NuGet доступен) предусмотрена функция Modbus.Utility.ModbusUtility.GetSingle, принимающая на вход два ushort и отдающая float. Однако может потребоваться попереставлять местами байты каким-то образом (не имел дел с ПЛК63).
Ну и просто пример на калькуляторе: 53.8 = 01000010010101110011001100110011 = 0x42573333 = (0x4257, 0x3333) = (16983, 13107). Примерно так из 53,8 получается 16983. Не вижу этого числа на скриншоте, но здесь большую роль могут играть округления и порядок байтов.




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