首页 > 解决方案 > Modbus TCP Little Endian 字节交换

问题描述

我正在使用 FluentModbus,也尝试过 EasyModbus,与 Delta SE CPU 通信,只要我读/写单个寄存器,我就可以正常通信,问题是我需要转换为 Little Endian ByteSwap 才能访问 PLC Doubles 和 Floats,有使用我不久前为 excel 购买的 ModbussPoll 对此进行了测试。

知道如何解决这个问题吗?

谢谢

标签: .netmodbus-tcp

解决方案


谢谢你的帮助。

这有效

var ReadunitIdentifier = (byte)0xFF;
        var ReadstartingAddress = (ushort)40;
        var Readcount = (ushort)4;

       
        if (modbusTcpClient.IsConnected)
        {
            try
            {
                var byteData = modbusTcpClient.ReadHoldingRegisters<byte>(ReadunitIdentifier, ReadstartingAddress, Readcount);
                byte highByte0 = byteData[0];
                byte lowByte0 = byteData[1];
                byte highByte1 = byteData[2];
                byte lowByte1 = byteData[3];
                byte[] doubleBytes =
                {
                    lowByte0, highByte0,lowByte1,highByte1
                };
                SharedVariables.LoadcellScaled = BitConverter.ToInt32(doubleBytes, 0);
            }

推荐阅读