#ifndef __DigtalPower_ModbusRTU_REG_List_H__ #define __DigtalPower_ModbusRTU_REG_List_H__ #include "USART1_Modbus_RTU.h" #include "dac.h" #define ModbusRTU_SW_Version 0x0301; //01是电源代号,02是负载代号,03是非节能源载代号,04是节能电源代号;低字节01是版本号,V0.1 //ModbusRTU 从站地址//工作状态及运行参数显示 #define ModbusRTU_Power_Status 0x00 //R,工作状态指示,00 预充电;01就绪/停止 02 缓启动;03 运行;04 故障:03 03 00 00 00 01 85 E8 #define ModbusRTU_Relay_Status 0x01 //bit0=0 主继电器断开 bit0=1 主继电器闭合;;;bit1=0 滤波继电器断开 bit1=1 滤波继电器闭合 #define ModbusRTU_Fault_Status 0x02 //故障状态寄存器 #define ModbusRTU_Flash_Status 0x03 //flash存储状态 #define ModbusRTU_Role_ModeFlag 0x04 //0x04 源载指令,默认是电子负载,1是supply,2是eload //故障寄存器 /*****************************故障类型*****************/ #define F_NOERR 0x0000//无故障 #define F_SW_VIN_UVP 0x0001//输入欠压 #define F_SW_VIN_OVP 0x0002//输入过压 #define F_SW_VOUT_UVP 0x0004//输出欠压 #define F_SW_VOUT_OVP 0x0008//输出过压 #define F_SW_IOUT_OCP 0x0010//输出过流 #define F_SW_SHORT 0x0020//输出短路 #define F_SW_OTP 0x0040//过温保护 //电源控制指令 #define ModbusRTU_PowerCmd 0x05 //05 W 0x01 开机,0x02 关机,0x03故障复位;0xAA 存储数据到flash;0xBB 恢复默认参数 #define ModbusRTU_WorkMode 0x06 //06 WR 0x01 恒压,0x02 恒流,0x03开环,04 恒功率,05恒阻 #define ModbusRTU_Volt 0x07 //07-08 WR 设置输出电压 uint32,0.001V, 0~60V,默认5V,查询电压也是这个指令 #define ModbusRTU_Current 0x09 //09-0A WR 设置输出电流 uint32 ,0.001A,, 0~60A,默认值1A,查询电压也是这个指令 #define ModbusRTU_ShortTest_VoltShort 0x0B //无论short测试成功或者失败,都给出短路恒流值的时候的电压 #define ModbusRTU_ShortTest_CurrentShort 0x0C //无论测试成功或者失败,都给出短路恒流值的时候的电压 #define ModbusRTU_OCPTest_VoltOCP 0x0D //无论short测试成功或者失败,都给出短路恒流值的时候的电压 #define ModbusRTU_OCPTest_CurrentOCP 0x0E //无论测试成功或者失败,都给出短路恒流值的时候的电压 #define ModbusRTU_DUT_Vpkp 0x0F //量测正峰值 #define ModbusRTU_DUT_Vpkn 0x10 //量测负峰值 #define ModbusRTU_DUT_Vpp 0x11 //量测峰峰值 //纹波寄存器 #define ModbusRTU_Ripple_Value 0x12 //读取纹波 #define ModbusRTU_Temp 0x1A //WR 11,当前内部温度读取点 #define ModbusADDR_SW_Version 0x1B //10,12地址,读取版本号,03代表buckboost半桥,01是版本号 #define ModbusADDR_SlaveID_Modify 0x1C //11,13地址,修订SlaveID #define Line_Compensation 0X1D //1F 14d地址,线损补偿,正负5V,1mv,精度0.001,放大1000倍,5000 #define Eload_Start_VON 0x20 //10 16寄存器存储电子负载启动电压,负载检测到电压值为启动电压,才开启电子负载; #define Eload_Stop_Volt 0x21 //11 17寄存器存储电子负载关闭电压; #define Eload_Slew_Rate 0x22 //12 18寄存器存储电子负载上升斜率参数; #define ModbusRTU_CPower 0x24 //36-37 功率值 #define ModbusRTU_CResistor 0x26 //38 电阻值 //6.3.1电源控制参数 #define ModbusRTU_VoltLimit 0x28 //0x29 40-41 0x2A 42寄存器输出电压限值,默认是6.0V,可以微调到6.5V; #define ModbusRTU_CurrentLimit_H 0x2A //42~43WR 输出电流限值 #define ModbusRTU_CurrentLimit_L 0x2B //42~43WR 输出电流限值 #define ModbusRTU_Volt_CAL_K 0x2C //2C~2D 电压校准K值,被放大Q16倍,再移动16回去;使用两个字节 #define ModbusRTU_Volt_CAL_K_L 0x2D #define ModbusRTU_Volt_CAL_B 0x2E //2E 电压校准B值 #define ModbusRTU_Current_CAL_K 0x2F //2F-30 电流校准K值 #define ModbusRTU_Current_CAL_K_L 0x30 #define ModbusRTU_Current_CAL_B 0x31 //31 电流校准B值 #define ModbusRTU_SourceCurrent_CAL_K 0x32 //32-33 电流校准K值 #define ModbusRTU_SourceCurrent_CAL_K_L 0x33 #define ModbusRTU_SourceCurrent_CAL_B 0x34 //34 电流校准B值 #define ModbusRTU_SourceSink_Current_Offset 0x35 //电源的电流上报offset //#define ModbusRTU_Sink_Current_Offset 0x33 //负载的电流上报offset #define ModbusRTU_CALI_CRC 0x36 //校准偏移6参数的校验值;使用CRC16-Modbus校验; #define ModbusRTU_CAL_WriteEnable 0x37 //使能写入FLASH;下次调用使用这个参数;是个魔数:0x4361 (C+a) #define ModbusRTU_CAL_WriteRecovery 0x38 //使能写入出厂数据区域;0x5763 #define ModbusRTU_CAL_ReadRecovery 0x39 //使能读出;将出厂数据读到当前的bank中,并更新6个参数 //short测试 #define ModbusRTU_ShortTest_CMD_MODE_FLAG 0x40 //16位;0x0101; 01启动,低字节的01,保持电流,为0是释放电流; 20260601新增一个低字节的bit7=0用于是恢复以前的状态,bit7=1是将卸载电流归零; #define ModbusRTU_ShortTest_Hold_Time 0x41 //单位是ms,最大65535ms,给0是立即释放,给一个时间值,是保持这个时间不变; //#define ModbusRTU_ShortTest_CurrentShort 0x42 //无论测试成功或者失败,都给出短路恒流值的时候的电压 //OCP测试 #define ModbusRTU_OCPTest_CMD_MODE_FLAG 0x43 //16位;0x0101; 01启动,低字节的01,保持电流,为0是释放电流; 20260601新增一个低字节的bit7=0用于是恢复以前的状态,bit7=1是将卸载电流归零; #define ModbusRTU_OCPTest_StartCurrent 0x44 //起始电流 #define ModbusRTU_OCPTest_StopCurrent 0x45 //终止电流 #define ModbusRTU_OCPTest_StepCurrent 0x46 //每一步的电流 #define ModbusRTU_OCPTest_Step_Hold_Time 0x47 //每一步的保持时间;默认10ms;范围1ms到100ms; #define ModbusRTU_OCPTest_Vtrig_Stop 0x48 //达到触发OCP流点的电压值; #define ModbusRTU_OCPTest_Hold_Time 0x49 //#define ModbusRTU_OCPTest_VoltOCP 0x49 //无论short测试成功或者失败,都给出短路恒流值的时候的电压 //#define ModbusRTU_OCPTest_CurrentOCP 0x4A //无论测试成功或者失败,都给出短路恒流值的时候的电压 //DYNA 电子负载的动态测试模式,也叫动态负载或瞬态测试。在该模式下,负载会按设定的斜率、频率和占空比,在两个电流值(如高负载和低负载)之间周期性跳变,用来测试电源的瞬态响应、恢复时间等特性。 #define ModbusRTU_DYNA_CMD_MODE_FLAG 0x4B //动态测试 CMD启动、退出、 以及模式:Continuous、PULSE、Toggle;LSB8 BIT7 短路测试时候的电流:保持/归零;bit1 过流; bit0 成功/失败 #define ModbusRTU_DYNA_L1 0x4C //动态测试电流1 #define ModbusRTU_DYNA_L2 0x4D //动态测试电流2 #define ModbusRTU_DYNA_T1 0x4E //动态测试电流1的时间 #define ModbusRTU_DYNA_T2 0x4F //动态测试电流2的时间 #define ModbusRTU_DYNA_Rise_Slew_Rate 0x50 //动态测试上升斜率 #define ModbusRTU_DYNA_Fall_Slew_Rate 0x51 //动态测试下降斜率 #define ModbusRTU_DUT_ValueReset 0x5D //复位数值 #define ModbusRTU_SYS_Reset 0x61 //系统复位指令,如果异常过压,通常发指令,让系统复位 //#define ModbusRTU_Volt_Kp 0x30 //48-49 RW 电压环kp //#define ModbusRTU_Volt_Ki 0x32 //50-51WR 电压环ki //#define ModbusRTU_Curr_Kp 0x34 //52-53WR 电流环kp //#define ModbusRTU_Curr_Ki 0x36 //54-55WR 电流环ki //#define ModbusRTU_CP_Kp 0x38 //56-57 RW 功率环kp //#define ModbusRTU_CP_Ki 0x3A //58-59 WR 功率环ki //#define ModbusRTU_CR_Kp 0x3C //60-61 WR 电阻环kp //#define ModbusRTU_CR_Ki 0x3E //62-63 WR 电阻环ki //112,0x70寄存器,改为当前内部温度读取点; #define ModbusRTU_TempLimit 0x71 //WR 温度限值 #define ModbusRTU_FANSpeed 0x72 //风速控制,上位机可以设定;自动模式下,温度高于一个值,最大风速跑,低于则最小风速跑 #define SMU_Relay_ON 0x0001 //源载主继电器 #define SMU_EL_PB15_EMI_Bypass_ON 0x0002 //旁路滤波继电器 //定义电流保护值的关系:Y(VDAC) = K*X(I-real)+B #define Init_OCP_VALUE 12000 //12A //正向: #define K_COEFF_FWD_Q16 (9960) #define B_Intercept_FWD (1846) //反向: #define K_COEFF_REV_Q16 (-9960) #define B_Intercept_REV (1846) //结构体 //6.2.1工作状态及运行参数显示 PowerStatusAndParaShow typedef struct { uint16_t Power_Status; uint16_t Relay_Status; uint16_t Fault_Status; uint16_t Flash_Status; uint32_t InputVolt; uint32_t InputCurr; uint32_t OutputVolt; uint32_t OutputCurr; uint32_t OutputPower; uint16_t statusRsv1; //预留位 uint16_t statusRsv2; }S_PowerStatusAndParaShow; extern S_PowerStatusAndParaShow PowerStatusAndParaShow; //6.2.2电源控制指令PowerControlCmd typedef struct{ uint16_t PowerCmd; uint16_t WorkMode; uint32_t Vout; uint32_t Iout; uint8_t Remote_Power_ON_Flag; //开关机指示 uint8_t Remote_Power_Reset_Flag; //复位指示 }S_PowerControlCmd; extern S_PowerControlCmd PowerControlCmd; //6.3.1电源控制参数 typedef struct{ uint32_t VoutLimit; uint32_t IoutLimit; uint16_t DutyLimit; uint16_t FrequnceLimit; float VoltKp; float VoltKi; float CurrKp; float CurrKi; }S_PowerControlPara; extern uint8_t Power_OnOff_Flag,Power_OnOff_Flag; extern S_PowerControlPara PowerControlPara; //Modbus 参数初始化 extern void Modbus_Para_Init(void); #endif