update south proto
This commit is contained in:
@@ -222,7 +222,7 @@ void chrg_north_thread_entry (void *data)
|
||||
|
||||
chrg_north_switch(IDX_NOR_CH1);
|
||||
|
||||
pTTY = chrg_tty_create(pNOR->devname, BAUD_RATE_2000000, 0, -1, 1);
|
||||
pTTY = chrg_tty_create(pNOR->devname, BAUD_RATE_921600, 0, -1, 1);
|
||||
if (RT_NULL == pTTY) {
|
||||
LOG_E("tty can't create.");
|
||||
return ;
|
||||
|
||||
@@ -23,7 +23,7 @@ void chrg_roll_sou_thread_entry (void *data)
|
||||
return ;
|
||||
}
|
||||
|
||||
rt_uint8_t index = 0, idx = 0, part = 0, pt = 0, manu = 0;
|
||||
rt_uint8_t index = 0, idx = 0, pt = 0, manu = 0;
|
||||
rt_err_t ret = RT_EOK;
|
||||
struct chrg_south_t *pSOU = &chrgsouth;
|
||||
struct chrg_thread_t *pTS = &chrgthr[IDX_THR_SOUTH];
|
||||
@@ -36,17 +36,16 @@ void chrg_roll_sou_thread_entry (void *data)
|
||||
|
||||
if (1 == manu) {
|
||||
chrg_south_switch((eIDX_SOU_CH)sou_ch);
|
||||
pt = sou_pt;
|
||||
chrg_eload_refresh(ID_ELOAD, sou_pt);
|
||||
|
||||
} else { // 轮巡4个通道,每个通道3条读取命令
|
||||
} else { // 轮巡4个通道
|
||||
if (0 == sou_run) {
|
||||
rt_thread_mdelay(1000);
|
||||
continue;
|
||||
}
|
||||
|
||||
part = index%(TOTAL_SOU_CHS*TOTAL_MB_R); // [0, 11]
|
||||
idx = part/TOTAL_MB_R; // [0, 3]
|
||||
pt = part%TOTAL_MB_R;
|
||||
idx = index%(TOTAL_SOU_CHS); // [0, 3]
|
||||
|
||||
if (0 == pSOU->enable[idx]) {
|
||||
pSOU->idx = (eIDX_SOU_CH)idx;
|
||||
@@ -60,7 +59,8 @@ void chrg_roll_sou_thread_entry (void *data)
|
||||
chrg_south_switch(pSOU->idx);
|
||||
}
|
||||
|
||||
chrg_eload_refresh(ID_ELOAD, pt);
|
||||
pt = MB_R_PART1;
|
||||
chrg_eload_refresh(ID_ELOAD, MB_R_PART1);
|
||||
}
|
||||
|
||||
index++;
|
||||
|
||||
@@ -40,11 +40,9 @@ int chrg_eload_refresh (rt_uint8_t addr, rt_uint8_t part)
|
||||
int ret = 0;
|
||||
|
||||
if (0 == part) {
|
||||
chrg_eload_read_regs(addr, REG_TEMPERATUE, SIZE_P1_RD); // reg 112~123
|
||||
chrg_eload_read_regs(addr, REG_TEMPERATUE, SIZE_P1_RD); // reg 0~13
|
||||
} else if (1 == part) {
|
||||
chrg_eload_read_regs(addr, REG_STA1, SIZE_P2_RD); // reg 0~39
|
||||
} else if (2 == part) {
|
||||
chrg_eload_read_regs(addr, REG_LIMIT_VOL, SIZE_P3_RD); // reg 40~63
|
||||
chrg_eload_read_regs(addr, REG_POWER, SIZE_P2_RD); // reg 20~39
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -66,6 +64,19 @@ int chrg_eload_parse (rt_uint8_t idx, rt_uint8_t pt, rt_uint8_t *data, rt_uint16
|
||||
|
||||
struct eload_p1_t *pP1 = (struct eload_p1_t *)&data[3];
|
||||
|
||||
pLOAD->status1 = pP1->status1;
|
||||
pLOAD->status2 = pP1->status2;
|
||||
pLOAD->fault1 = pP1->fault1;
|
||||
pLOAD->fault2 = (rt_uint8_t)pP1->fault2;
|
||||
pLOAD->eload = (rt_uint8_t)pP1->eload;
|
||||
pLOAD->work = (rt_uint8_t)pP1->work_cmd;
|
||||
pLOAD->mode = (rt_uint8_t)pP1->work_mode;
|
||||
rt_memcpy((rt_uint8_t *)&pLOAD->voltage, (rt_uint8_t *)&pP1->voltage, sizeof(float));
|
||||
rt_memcpy((rt_uint8_t *)&pLOAD->current, (rt_uint8_t *)&pP1->current, sizeof(float));
|
||||
pLOAD->temperatue = pP1->temperature;
|
||||
pLOAD->version = pP1->version;
|
||||
pLOAD->address = (rt_uint8_t)pP1->addr;
|
||||
rt_kprintf("vol %f, cur %f\r\n", pLOAD->voltage, pLOAD->current);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -79,16 +90,6 @@ int chrg_eload_parse (rt_uint8_t idx, rt_uint8_t pt, rt_uint8_t *data, rt_uint16
|
||||
}
|
||||
break;
|
||||
|
||||
case MB_R_PART3: {
|
||||
if ((SIZE_P3_RD*2+5) != len) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
struct eload_p3_t *pP3 = (struct eload_p3_t *)&data[3];
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -30,123 +30,125 @@
|
||||
#define ELOAD_SOURCE (0x01) // 电源
|
||||
#define ELOAD_LOAD (0x02) // 负载
|
||||
|
||||
#define REG_WORK (0x1E) // W 16bit 工作指令
|
||||
#define REG_WORK (0x05) // W 16bit 工作指令
|
||||
#define WORK_START (0x01) // 启动
|
||||
#define WORK_STOP (0x02) // 停止
|
||||
#define WORK_RESET (0x03) // 故障复位
|
||||
#define WORK_SAVE (0xAA) // 存储数据到FLASH
|
||||
#define WORK_RESTORE (0xBB) // 恢复默认参数
|
||||
|
||||
#define REG_MODE (0x1F) // RW 16bit 工作模式
|
||||
#define REG_MODE (0x06) // RW 16bit 工作模式
|
||||
#define MODE_CONSTANT_VOLTAGE (0x01) // 恒压
|
||||
#define MODE_CONSTANT_CURRENT (0x02) // 恒流
|
||||
#define MODE_OPEN_LOOP (0x03) // 开环
|
||||
#define MODE_CONSTANT_POWER (0x04) // 恒功率
|
||||
#define MODE_CONSTANT_RESISTANCE (0x05) // 恒阻
|
||||
|
||||
#define REG_VOLTAGE (0x20) // RW 32bit 电压 0.001V (0~60V) 默认5V
|
||||
#define REG_VOLTAGE (0x07) // RW 32bit 电压 0.001V (0~60V) 默认5V
|
||||
|
||||
#define REG_CURRENT (0x22) // RW 32bit 电流 0.001A (0~60A) 默认1A
|
||||
#define REG_CURRENT (0x09) // RW 32bit 电流 0.001A (0~60A) 默认1A
|
||||
|
||||
#define REG_POWER (0x24) // RW 32bit 功率 0.01W (0~600W)
|
||||
#define REG_TEMPERATUE (0x0B) // RWP 16bit 读取温度 0.01C (0~100C)
|
||||
|
||||
#define REG_RESISTANCE (0x26) // RW 16bit 电阻 0.001R
|
||||
#define REG_VERSION (0x0C) // R 16bit 版本号 0~0xFFFF
|
||||
|
||||
#define REG_LIMIT_VOL (0x28) // RW 32bit 电压限值 0.001V (0~60V) 默认48V
|
||||
#define REG_ADDRESS (0x0D) // RWP 16bit 从机地址
|
||||
|
||||
#define REG_LIMIT_VUR (0x2A) // RW 32bit 电流限值 0.001A (0~60A) 默认10A
|
||||
|
||||
#define REG_ADJUST_VOL_K (0x2C) // RWP 16bit 电压矫正K 0~65535 默认4096
|
||||
#define REG_POWER (0x14) // RW 32bit 功率 0.01W (0~600W)
|
||||
|
||||
#define REG_ADJUST_VOL_B (0x2D) // RWP 16bit 电压矫正B 0~65535 默认0
|
||||
#define REG_RESISTANCE (0x16) // RW 16bit 电阻 0.001R
|
||||
|
||||
#define REG_ADJUST_CUR_K (0x2E) // RWP 16bit 电流矫正K 0~65535 默认4096
|
||||
#define REG_LIMIT_VOL (0x17) // RW 32bit 电压限值 0.001V (0~60V) 默认48V
|
||||
|
||||
#define REG_ADJUST_CUR_B (0x2F) // RWP 16bit 电流矫正B 0~65535 默认0
|
||||
#define REG_LIMIT_VUR (0x19) // RW 32bit 电流限值 0.001A (0~60A) 默认10A
|
||||
|
||||
#define REG_VOL_LOOP_KP (0x30) // RWP float 电压环KP 0.001~100 默认0.1
|
||||
#define REG_ADJUST_VOL_K (0x1B) // RWP 16bit 电压矫正K 0~65535 默认4096
|
||||
|
||||
#define REG_VOL_LOOP_KI (0x32) // RWP float 电压环KI 0.001~100 默认0.01
|
||||
#define REG_ADJUST_VOL_B (0x1C) // RWP 16bit 电压矫正B 0~65535 默认0
|
||||
|
||||
#define REG_CUR_LOOP_KP (0x34) // RWP float 电流环KP 0.001~100 默认0.1
|
||||
#define REG_ADJUST_CUR_K (0x1D) // RWP 16bit 电流矫正K 0~65535 默认4096
|
||||
|
||||
#define REG_CUR_LOOP_KI (0x36) // RWP float 电流环KI 0.001~100 默认0.01
|
||||
#define REG_ADJUST_CUR_B (0x1E) // RWP 16bit 电流矫正B 0~65535 默认0
|
||||
|
||||
#define REG_POWER_LOOP_KP (0x38) // RWP float 功率环KP 0.001~100 默认0.1
|
||||
#define REG_VOL_LOOP_KP (0x1F) // RWP float 电压环KP 0.001~100 默认0.1
|
||||
|
||||
#define REG_POWER_LOOP_KI (0x3A) // RWP float 功率环KI 0.001~100 默认0.01
|
||||
#define REG_VOL_LOOP_KI (0x21) // RWP float 电压环KI 0.001~100 默认0.01
|
||||
|
||||
#define REG_RESIS_LOOP_KP (0x3C) // RWP float 恒阻环KP 0.001~100 默认0.1
|
||||
#define REG_CUR_LOOP_KP (0x23) // RWP float 电流环KP 0.001~100 默认0.1
|
||||
|
||||
#define REG_RESIS_LOOP_KI (0x3E) // RWP float 恒阻环KI 0.001~100 默认0.01
|
||||
#define REG_CUR_LOOP_KI (0x25) // RWP float 电流环KI 0.001~100 默认0.01
|
||||
|
||||
#define REG_TEMPERATUE (0x70) // RWP 16bit 读取温度 0.01C (0~100C)
|
||||
#define REG_POWER_LOOP_KP (0x27) // RWP float 功率环KP 0.001~100 默认0.1
|
||||
|
||||
#define REG_TEMP_PROTECT (0x71) // RWP 16bit 温度保护值 0.01C (60~100C) 默认90C
|
||||
#define REG_POWER_LOOP_KI (0x29) // RWP float 功率环KI 0.001~100 默认0.01
|
||||
|
||||
#define REG_RESIS_LOOP_KP (0x2B) // RWP float 恒阻环KP 0.001~100 默认0.1
|
||||
|
||||
#define REG_RESIS_LOOP_KI (0x2D) // RWP float 恒阻环KI 0.001~100 默认0.01
|
||||
|
||||
#define REG_TEMP_PROTECT (0x2F) // RWP 16bit 温度保护值 0.01C (60~100C) 默认90C
|
||||
|
||||
#define REG_ADDRESS (0x7A) // RWP 16bit 从机地址
|
||||
|
||||
#define REG_VERSION (0x7B) // R 16bit 版本号 0~0xFFFF
|
||||
|
||||
typedef enum {
|
||||
MB_R_PART1 = 0, // 寄存器分段1
|
||||
MB_R_PART2, // 寄存器分段2
|
||||
MB_R_PART3, // 寄存器分段3
|
||||
|
||||
TOTAL_MB_R
|
||||
} eIDX_MB_PART;
|
||||
|
||||
#define SIZE_P1_RD 12 // 读12个寄存器
|
||||
#define SIZE_P2_RD 40 // 读40个寄存器
|
||||
#define SIZE_P3_RD 24 // 读24个寄存器
|
||||
#define SIZE_P1_RD 13 // 读13个寄存器
|
||||
#define SIZE_P2_RD 28 // 读28个寄存器
|
||||
|
||||
struct eload_p1_t {
|
||||
rt_uint16_t temperature; // reg112
|
||||
rt_uint16_t temp_protect; // reg113
|
||||
rt_uint16_t reserv[8];
|
||||
rt_uint16_t addr; // reg122
|
||||
rt_uint16_t version; // reg123
|
||||
};
|
||||
|
||||
struct eload_p2_t {
|
||||
rt_uint16_t status1; // reg0
|
||||
rt_uint16_t status2; // reg1
|
||||
rt_uint16_t fault1; // reg2
|
||||
rt_uint16_t fault2; // reg3
|
||||
rt_uint16_t eload; // reg4
|
||||
rt_uint16_t reserv1[25];
|
||||
rt_uint16_t work_cmd; // reg30
|
||||
rt_uint16_t work_mode; // reg31
|
||||
rt_uint32_t voltage; // reg32-33
|
||||
rt_uint32_t current; // reg34-35
|
||||
rt_uint32_t power; // reg36-37
|
||||
rt_uint16_t resistance; // reg38
|
||||
rt_uint16_t reserv2;
|
||||
rt_uint16_t work_cmd; // reg5
|
||||
rt_uint16_t work_mode; // reg6
|
||||
rt_uint32_t voltage; // reg7-8
|
||||
rt_uint32_t current; // reg9-10
|
||||
rt_uint16_t temperature; // reg11
|
||||
rt_uint16_t version; // reg12
|
||||
rt_uint16_t addr; // reg13
|
||||
};
|
||||
|
||||
struct eload_p3_t {
|
||||
rt_uint32_t limit_vol; // reg40-41
|
||||
rt_uint32_t limit_cur; // reg42-43
|
||||
rt_uint16_t adj_vol_k; // reg44
|
||||
rt_uint16_t adj_vol_b; // reg45
|
||||
rt_uint16_t adj_cur_k; // reg46
|
||||
rt_uint16_t adj_cur_b; // reg47
|
||||
rt_uint32_t loop_vol_kp; // reg48-49 float
|
||||
rt_uint32_t loop_vol_ki; // reg50-51 float
|
||||
rt_uint32_t loop_cur_kp; // reg52-53 float
|
||||
rt_uint32_t loop_cur_ki; // reg54-55 float
|
||||
rt_uint32_t loop_pwr_kp; // reg56-57 float
|
||||
rt_uint32_t loop_pwr_ki; // reg58-59 float
|
||||
rt_uint32_t loop_resis_kp; // reg60-61 float
|
||||
rt_uint32_t loop_resis_ki; // reg62-63 float
|
||||
struct eload_p2_t {
|
||||
rt_uint32_t power; // reg20-21
|
||||
rt_uint16_t resistance; // reg22
|
||||
rt_uint32_t limit_vol; // reg23-24
|
||||
rt_uint32_t limit_cur; // reg25-26
|
||||
rt_uint16_t adj_vol_k; // reg27
|
||||
rt_uint16_t adj_vol_b; // reg28
|
||||
rt_uint16_t adj_cur_k; // reg29
|
||||
rt_uint16_t adj_cur_b; // reg30
|
||||
rt_uint32_t loop_vol_kp; // reg31-32 float
|
||||
rt_uint32_t loop_vol_ki; // reg33-34 float
|
||||
rt_uint32_t loop_cur_kp; // reg35-36 float
|
||||
rt_uint32_t loop_cur_ki; // reg37-38 float
|
||||
rt_uint32_t loop_pwr_kp; // reg39-40 float
|
||||
rt_uint32_t loop_pwr_ki; // reg41-42 float
|
||||
rt_uint32_t loop_resis_kp; // reg43-44 float
|
||||
rt_uint32_t loop_resis_ki; // reg45-46 float
|
||||
rt_uint16_t temperature; // reg47
|
||||
};
|
||||
|
||||
struct chrg_eload_t {
|
||||
rt_uint16_t status1; // 工作状态1
|
||||
rt_uint16_t status2; // 工作状态2
|
||||
rt_uint16_t falut1; // 故障状态1
|
||||
rt_uint16_t falut2; // 故障状态2
|
||||
|
||||
rt_uint16_t fault1; // 故障状态1
|
||||
rt_uint8_t fault2; // 故障状态2
|
||||
rt_uint8_t eload; // 源载 1:电源 2:负载
|
||||
rt_uint8_t work; // 工作指令
|
||||
rt_uint8_t mode; // 工作模式
|
||||
float voltage; // 电压
|
||||
float current; // 电流
|
||||
rt_uint16_t temperatue; // 温度
|
||||
rt_uint16_t version; // 版本
|
||||
rt_uint8_t address; // 地址
|
||||
};
|
||||
|
||||
extern int chrg_eload_read_regs (rt_uint8_t addr, rt_uint16_t reg, rt_uint16_t len);
|
||||
|
||||
Reference in New Issue
Block a user