#ifndef __MB_REGS_DEF_H__ #define __MB_REGS_DEF_H__ #include #define MB_SLAVE_ID 0x01 // -------------------------- 保持寄存器(3xxxx,可读写)-------------------------- // 相对地址对应:30001 = 0x0000,30002 = 0x0001,以此类推 #define HOLD_REG_SYS_CTRL_CMD 0x0000 // 系统控制命令(30001,uint16_t) #define HOLD_REG_MEAS_MODE 0x0001 // 测量模式设置(30002,uint8_t,低8位有效) #define HOLD_REG_TARGET_TEMP_H 0x0002 // 目标温度高16位(30003,float高半字) #define HOLD_REG_TARGET_TEMP_L 0x0003 // 目标温度低16位(30004,float低半字) #define HOLD_REG_TUBE_LEN 0x0004 // 旋光管长度高16位(30005,float高半字) #define HOLD_REG_MEAS_PRECISION 0x0005 // 测量精度设置(30007,uint8_t,低8位有效) #define HOLD_REG_AUTO_MEAS_CNT 0x0006 // 自动测量次数(30008,uint8_t,低8位有效) #define HOLD_REG_HIST_QUERY_START 0x0007 // 历史数据起始序号(30009,uint16_t) #define HOLD_REG_HIST_QUERY_CNT 0x0008 // 历史数据查询数量(30010,uint16_t) // -------------------------- 输入寄存器(4xxxx,只读)-------------------------- // 相对地址对应:40001 = 0x0000,40002 = 0x0001,以此类推 #define INPUT_REG_REAL_TEMP_H 0x0000 // 实时温度高16位(40001,float高半字) #define INPUT_REG_REAL_TEMP_L 0x0001 // 实时温度低16位(40002,float低半字) #define INPUT_REG_REAL_ROT_H 0x0002 // 实时旋光度高16位(40003,float高半字) #define INPUT_REG_REAL_ROT_L 0x0003 // 实时旋光度低16位(40004,float低半字) #define INPUT_REG_RESULT_MODE 0x0004 // 测量结果-模式代码(40005,uint8_t) #define INPUT_REG_RESULT_VAL_H 0x0005 // 测量结果-数值高16位(40006,float高半字) #define INPUT_REG_RESULT_VAL_L 0x0006 // 测量结果-数值低16位(40007,float低半字) #define INPUT_REG_RESULT_TEMP_H 0x0007 // 测量结果-温度高16位(40008,float高半字) #define INPUT_REG_RESULT_TEMP_L 0x0008 // 测量结果-温度低16位(40009,float低半字) #define INPUT_REG_DEV_RUNNING_STATE 0x0009 // 设备状态码(40010,uint8_t,低8位) #define INPUT_REG_ALARM_STATUS 0x000A // 报警状态码(占用两个寄存器,40011-40012,U32) #define INPUT_REG_MEAS_DONE_FLAG 0x000C // 测量完成标志(40013,uint8_t) #define INPUT_REG_DEVICE_MODEL_H 0x000D // 设备型号(4字节,两个寄存器)高16位(40014,40015,ASCII) #define INPUT_REG_DEVICE_MODEL_L 0x000E // 设备型号低16位(40016,40017,ASCII) #define INPUT_REG_FW_VERSION_H 0x000F // 固件版本高16位(40018,主/次版本) #define INPUT_REG_FW_VERSION_L 0x0010 // 固件版本低16位(40019,修订/构建号) // -------------------------- 测量模式代码(HOLD_REG_MEAS_MODE和INPUT_REG_RESULT_MODE)-------------------------- #define MEAS_MODE_ROTATION 0x00 // 旋光度模式 #define MEAS_MODE_SPECIFIC_ROT 0x01 // 比旋度模式 #define MEAS_MODE_CONCENTRATION 0x02 // 浓度模式 #define MEAS_MODE_SUGAR_DEGREE 0x03 // 国际糖度模式 // -------------------------- 状态码与错误码(INPUT_REG_DEVICE_STATUS)-------------------------- #define STATUS_SUCCESS 0x00 // 操作成功 #define STATUS_PARAM_ERROR 0x01 // 参数格式错误(对应Modbus异常0x03) #define STATUS_DEVICE_BUSY 0x02 // 设备忙(对应Modbus异常0x06) #define STATUS_OP_FAILED 0x03 // 操作失败(对应Modbus异常0x04) #define STATUS_NOT_INITED 0x04 // 功能未初始化(对应Modbus异常0x02) #define STATUS_CMD_UNSUPPORTED 0x05 // 不支持的指令(对应Modbus异常0x01) #endif /* __MB_REGS_DEF_H__ */