资源简介

MODBUS RTU协议中浮点数的相互转换 从浮点数到整形,以及从整形到浮点数 带简单的协议说明文档

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;



namespace CsharpModbusFloatConverter
{
    class Program
    {
        static void Main(string[] args)
        {
            Program p = new Program();
            //浮点数转ModbusRTU格式的2个32位整数
            float f = -234.563F;
            int[] r1 = p.parseFloat2Int(f);
            Console.WriteLine(r1[0].ToString() + ““ + r1[1].ToString());
            //Modbus整数转浮点数
            //实例:C3 6A 90 21 -- x1=50026  x2=36897 -- 浮点数结果-234.56
            int x1 = 50026;
            int x2 = 36897;
            float r2 = p.parseInt2Float(x1 x2);
            Console.WriteLine(“浮点数结果:“ + r2.ToString());
            Console.ReadLine();
        }

        //浮点数转ModbusRTU格式的2个32位整数
        public int[] parseFloat2Int(float f) {
            int[] result = new int[2];
            byte[] byteBuffer = BitConverter.GetBytes(f);//4个byte 示例:[0]33 [1]144 [2]106 [3]195 合16进制[0]21 [1]90 [2]6A [3]C3 
            string high = byteBuffer[3].ToString(“X2“) + byteBuffer[2].ToString(“X2“);//结果示例:C36A
            string low = byteBuffer[1].ToString(“X2“) + byteBuffer[0].ToString(“X2“);//结果示例:9021
            result[0] = Convert.ToInt32(high 16);
            result[1] = Convert.ToInt32(low 16);
            return result;
        }

        //ModbusRTU格式的2个32位整数转浮点数
        public float parseInt2Float(int x1 int x2) {
            int f fRest exponent exponentRest;
            float value weishu;
            f = x1 / 32768;
            fRest = x1 % 32768;
            exponent = fRest / 128;
            exponentRest = fRest % 128;
            weishu = (float)(exponentRest * 65536 + x2) / 8388608;
            value = (float)Math.Pow(-1 f) * (float)Math.Pow(2 exponent - 127) * (weishu + 1);
            return value;
        }


    }
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-12-03 07:05  CsharpModbusFloatConverter\
     目录           0  2016-12-03 07:04  CsharpModbusFloatConverter\CsharpModbusFloatConverter\
     文件         920  2016-12-03 06:48  CsharpModbusFloatConverter\CsharpModbusFloatConverter.sln
     文件       17408  2016-12-03 07:04  CsharpModbusFloatConverter\CsharpModbusFloatConverter.suo
     目录           0  2016-12-03 07:04  CsharpModbusFloatConverter\CsharpModbusFloatConverter\bin\
     目录           0  2016-12-03 07:04  CsharpModbusFloatConverter\CsharpModbusFloatConverter\bin\Debug\
     文件        6144  2016-12-03 07:04  CsharpModbusFloatConverter\CsharpModbusFloatConverter\bin\Debug\CsharpModbusFloatConverter.exe
     文件       11776  2016-12-03 07:04  CsharpModbusFloatConverter\CsharpModbusFloatConverter\bin\Debug\CsharpModbusFloatConverter.pdb
     文件       11600  2016-12-03 07:04  CsharpModbusFloatConverter\CsharpModbusFloatConverter\bin\Debug\CsharpModbusFloatConverter.vshost.exe
     文件         490  2010-03-17 22:39  CsharpModbusFloatConverter\CsharpModbusFloatConverter\bin\Debug\CsharpModbusFloatConverter.vshost.exe.manifest
     文件        2473  2016-12-03 06:48  CsharpModbusFloatConverter\CsharpModbusFloatConverter\CsharpModbusFloatConverter.csproj
     目录           0  2016-12-03 07:04  CsharpModbusFloatConverter\CsharpModbusFloatConverter\obj\
     目录           0  2016-12-03 07:04  CsharpModbusFloatConverter\CsharpModbusFloatConverter\obj\x86\
     目录           0  2016-12-03 07:04  CsharpModbusFloatConverter\CsharpModbusFloatConverter\obj\x86\Debug\
     文件         702  2016-12-03 07:04  CsharpModbusFloatConverter\CsharpModbusFloatConverter\obj\x86\Debug\CsharpModbusFloatConverter.csproj.FileListAbsolute.txt
     文件        6144  2016-12-03 07:04  CsharpModbusFloatConverter\CsharpModbusFloatConverter\obj\x86\Debug\CsharpModbusFloatConverter.exe
     文件       11776  2016-12-03 07:04  CsharpModbusFloatConverter\CsharpModbusFloatConverter\obj\x86\Debug\CsharpModbusFloatConverter.pdb
     文件        5960  2016-12-03 07:04  CsharpModbusFloatConverter\CsharpModbusFloatConverter\obj\x86\Debug\DesignTimeResolveAssemblyReferencesInput.cache
     目录           0  2016-12-03 06:48  CsharpModbusFloatConverter\CsharpModbusFloatConverter\obj\x86\Debug\TempPE\
     文件        2022  2016-12-03 07:04  CsharpModbusFloatConverter\CsharpModbusFloatConverter\Program.cs
     目录           0  2016-12-03 07:04  CsharpModbusFloatConverter\CsharpModbusFloatConverter\Properties\
     文件        1402  2016-12-03 06:48  CsharpModbusFloatConverter\CsharpModbusFloatConverter\Properties\AssemblyInfo.cs
     文件       67885  2016-12-03 07:05  CsharpModbusFloatConverter\附:Modbus IEEE 754标准浮点数举例.pptx

评论

共有 条评论