Исходя из Вашей программы, Вы записываете значения в свойства блоков dSET(83), SP(53) и SP_M(54).
Блок dSET(83) имеет одно свойство (dSET), значение которого имеет тип «Целое длинное». Это означает, что целое число (без запятой) представляется в виде четырех байт. Указанный Вами способ записи значения «1» в свойство этого блока ([1E] [10] [01] [01] [00] [02] [04] [00] [00] [00] [01] [9A] [E7], где [00] [00] [00] [01] – 4 байта, что представляют собой запись целого числа «1») с использованием функции 16 протокола ModBus RTU является правильным.
В отличие от dSET(83), свойства блоков SP(53) и SP_M(54) имеют тип «Вещественное» («FLOAT»). Это подразумевает иной метод представления числа в виде 4 байт, который описывается стандартом IEEE 754 (широко распространённый стандарт формата представления чисел с плавающей запятой).
Запись числа с плавающей запятой «1.000» в свойство блока SP(53) (свойство №1 блока №2 в Вашей программе) с использованием функции 16 протокола ModBus RTU в прибор, который имеет адрес №30, будет выглядеть следующим образом: [1E] [10] [02] [01] [00] [02] [04] [3F] [80] [00] [00] + 2 байта контрольной суммы. Здесь [3F] [80] [00] [00] – 4 байта, что представляют собой запись числа с плавающей запятой «1.000».
Следует учитывать, что число с плавающей запятой одинарной точности (4 байта на число), в зависимости от порядка записи байт, может быть представлено четырьмя разными способами (байты условно маркируем буквами A, B, C, и D):
1. Прямой порядок («Intel byte order») – A B C D.
2. Перестановка байт – B A D C.
3. Перестановка слов – C D A B.
4. Перестановка байт и перестановка слов («big-endian») – D C B A.
В контроллерах МИК-51 и МИК-52 используется последний способ («big-endian») порядка записи байт числа в формате «FLOAT».
|