FID 放大器通信协议说明 (GCKC版)

1. 串口配置参数

  • 波特率 (Baud Rate): 38400
  • 数据位 (Data Bits): 8
  • 停止位 (Stop Bits): 1
  • 校验位 (Parity): None (无)
  • 硬件流控 (Flow Control): None (无)

⚠️ 硬件连接注意事项 设备的输出信号为 TTL 电平。严禁使用无自动收发流控的简易 TTL-RS485 模块进行转接,否则会导致底层 UART 帧极性颠倒,出现全 FF/FE 的硬件级乱码。 推荐连接方式:直接使用标准 USB-TTL 模块(如 CH340、CP2102)将设备的 TX/RX/GND 直连电脑进行通信,或使用带自动流控的工业级 TTL-RS485 模块。


2. 数据主动上报协议 (设备 -> 上位机)

设备上电后会以固定频率(约 2Hz)主动向上位机上报数据。

2.1 帧结构概览

每帧固定长度为 131 字节

偏移地址 (Offset)长度 (Bytes)字段名称说明
0x00 ~ 0x034包头 (Header)固定为 0x47 0x43 0x4B 0x43 (ASCII: "GCKC")
0x041预留 (Reserved)通常为 0x00
0x05 ~ 0x2F43设备信息区包含设备 SN 序列号等 ASCII 字符串信息
0x30 ~ 0x7F80通道数据区20组采样数据,每组4字节,大端模式(Big-Endian)
0x801参数数值当前量程/桥流等设置值 (例如: 0x08 = 8)
0x81 ~ 0x822校验/其他待定(可能是累加和或 CRC,根据实际情况处理)

2.2 核心数据解析规则 (Offset: 0x30 / 48)

数据区从第 48 个字节(偏移量 0x30)开始,总共 80 个字节。 这 80 个字节包含了 20 组连续的采样数据,每组数据占用 4 字节

数据格式说明

  • 字节序:大端模式 (Big-Endian),即高位字节在前,低位字节在后。
  • 符号位:最高位 (Bit 31) 为符号位。
    • 0 表示正数
    • 1 表示负数
  • 数值域:低 31 位 (Bit 0 ~ Bit 30) 表示实际的绝对值。
  • 单位换算:解析出的绝对值,若要转换为毫伏 (mV) 或微伏 (uV),需参考旧版说明书的比例(例如:解析值为 2345678 时,代表 -2345.678 mV 或 2345678 uV,具体小数点视实际标定而定)。

解析代码示例 (C#)

// 假设 frame 是接收到的 131 字节完整数组
if (frame.Length == 131 && frame[0] == 0x47 && frame[1] == 0x43 && frame[2] == 0x4B && frame[3] == 0x43)
{
    int dataOffset = 48; // 数据区起始偏移
    double[] fidValues = new double[20];

    for (int i = 0; i < 20; i++)
    {
        int currentIndex = dataOffset + (i * 4);
        
        // 提取 4 字节合并为 32 位整数 (大端)
        uint rawValue = (uint)((frame[currentIndex] << 24) | 
                               (frame[currentIndex + 1] << 16) | 
                               (frame[currentIndex + 2] << 8) | 
                                frame[currentIndex + 3]);

        // 判断符号位 (最高位)
        int sign = ((rawValue & 0x80000000) != 0) ? -1 : 1;
        
        // 取绝对值 (低31位)
        uint absValue = rawValue & 0x7FFFFFFF;
        
        // 计算最终真实值
        fidValues[i] = sign * absValue;
    }
    
    // 提取参数值
    int configValue = frame[128]; // 偏移量 0x80
}

3. 下发控制命令 (上位机 -> 设备)

(注:根据旧版说明书推测,具体需根据设备实际响应测试确认)

3.1 设置参数命令

  • 发送格式: 0x47 0x45 0x45 0x02 0x0E [参数数值]
  • 说明: 0x0E 为参数设置命令字,最后一位为具体的参数数值(如 0x50)。

3.2 调零命令

  • 发送格式: 0x47 0x45 0x45 0x02 0x0B 0x00
  • 说明: 0x0B 为调零命令字,固定跟随 0x00

3.3 读取设置参数

  • 发送格式: 0x47 0x45 0x45 0x02 0x08 0x50
  • 说明: 0x08 为读取参数命令字。