update MotorDefaultParam_t HandleValveControl
This commit is contained in:
parent
c77352d0be
commit
7926184501
44
protocol.c
44
protocol.c
@ -465,7 +465,7 @@ static uint8_t SetPumpStepDec(uint8_t index, uint16_t dec) {
|
|||||||
* @return 实际速度值
|
* @return 实际速度值
|
||||||
*/
|
*/
|
||||||
uint16_t transSpeedPercentToSpeed(uint8_t index, uint8_t speedPercent) {
|
uint16_t transSpeedPercentToSpeed(uint8_t index, uint8_t speedPercent) {
|
||||||
return speedPercent * dp.pump[index].speed / 100;
|
return speedPercent * dp.pump[index].fullSpeed / 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -476,7 +476,7 @@ uint16_t transSpeedPercentToSpeed(uint8_t index, uint8_t speedPercent) {
|
|||||||
* @return 百分比速度
|
* @return 百分比速度
|
||||||
*/
|
*/
|
||||||
uint8_t transSpeedToSpeedPercent(uint8_t index, uint32_t speed) {
|
uint8_t transSpeedToSpeedPercent(uint8_t index, uint32_t speed) {
|
||||||
return speed * 100 / dp.pump[index].speed;
|
return speed * 100 / dp.pump[index].fullSpeed;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -661,7 +661,7 @@ void ReadPumpSpeedPos(void)
|
|||||||
|
|
||||||
uint16_t speed = ReadPump2Reg(dp.pump[index].id,RTU_PUMP_CMD_SPEED);
|
uint16_t speed = ReadPump2Reg(dp.pump[index].id,RTU_PUMP_CMD_SPEED);
|
||||||
systemStatus.pumpsSpeed[index] = speed;
|
systemStatus.pumpsSpeed[index] = speed;
|
||||||
systemStatus.pumpsSpeedPercent[index] = (uint8_t)(speed * 100 / dp.pump[index].speed);
|
systemStatus.pumpsSpeedPercent[index] = (uint8_t)(speed * 100 / dp.pump[index].fullSpeed);
|
||||||
log_d("%s speed = %d",dp.pump[index].name,speed);
|
log_d("%s speed = %d",dp.pump[index].name,speed);
|
||||||
|
|
||||||
//判断正转、反转
|
//判断正转、反转
|
||||||
@ -706,10 +706,10 @@ uint8_t InitPump(void) {
|
|||||||
|
|
||||||
SetPumpJogAcc(index, dp.pump[index].accel);
|
SetPumpJogAcc(index, dp.pump[index].accel);
|
||||||
SetPumpJogDec(index, dp.pump[index].decel);
|
SetPumpJogDec(index, dp.pump[index].decel);
|
||||||
SetPumpJogSpeed(index, dp.pump[index].speed*dp.pump[index].speedPercent/100);
|
SetPumpJogSpeed(index, dp.pump[index].fullSpeed*dp.pump[index].speedPercent/100);
|
||||||
SetPumpStepAcc(index, dp.pump[index].accel);
|
SetPumpStepAcc(index, dp.pump[index].accel);
|
||||||
SetPumpStepDec(index, dp.pump[index].decel);
|
SetPumpStepDec(index, dp.pump[index].decel);
|
||||||
SetPumpStepSpeed(index, dp.pump[index].speed*dp.pump[index].speedPercent/100);
|
SetPumpStepSpeed(index, dp.pump[index].fullSpeed*dp.pump[index].speedPercent/100);
|
||||||
if (rst != systemStatus.rst)
|
if (rst != systemStatus.rst)
|
||||||
{
|
{
|
||||||
log_e("InitPump %s failed!", dp.pump[index].name);
|
log_e("InitPump %s failed!", dp.pump[index].name);
|
||||||
@ -1399,19 +1399,22 @@ static uint8_t HandleValveControl(uint8_t *Buff, uint8_t len) {
|
|||||||
log_e("三通阀控制错误");
|
log_e("三通阀控制错误");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
// for
|
uint8_t rst = systemStatus.rst;
|
||||||
uint8_t index = Buff[0];
|
for(uint8_t index = 0; index < len; index++) {
|
||||||
uint8_t direction = Buff[1];//此状态位无效,目前三通阀有硬件限位,且指定角度必须为120或210
|
|
||||||
uint16_t angle = (Buff[2]<<8) | Buff[3];
|
if(memcmp(Buff+index*2, "\xFF\xFF", 2) == 0) {
|
||||||
if (angle > 360 || angle != VALVE_ANGLE_120 || angle != VALVE_ANGLE_210) {
|
continue;
|
||||||
log_e("三通阀控制错误");
|
}
|
||||||
return 1;
|
uint16_t angle = (Buff[index*2]<<8) | Buff[index*2+1];
|
||||||
|
ValveRunToAngle(index,angle);
|
||||||
|
|
||||||
|
if(rst != systemStatus.rst) {
|
||||||
|
log_e("泵角度控制错误");
|
||||||
|
return ACK_FAILED;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 具体实现
|
return ACK_OK;
|
||||||
ValveRunToAngle(index,angle);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 泵时长控制处理
|
// 泵时长控制处理
|
||||||
@ -1443,11 +1446,12 @@ static uint8_t HandlePumpTimeControl(uint8_t *Buff, uint8_t len) {
|
|||||||
uint16_t time = (Buff[index*3+1]<<8) | Buff[index*3+2];
|
uint16_t time = (Buff[index*3+1]<<8) | Buff[index*3+2];
|
||||||
if(time == 0) {
|
if(time == 0) {
|
||||||
// 方向控制办法待确定
|
// 方向控制办法待确定
|
||||||
|
SetPumpJogSpeed(index,-1*dp.pump[index].fullSpeed*dp.pump[index].speedPercent);
|
||||||
StartPumpJog(index);
|
StartPumpJog(index);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// 使用步数方式更靠谱,通过时间和速度计算步数,结束时不用发送停止命令
|
// 使用步数方式更靠谱,通过时间和速度计算步数,结束时不用发送停止命令
|
||||||
int32_t step = direction*time*dp.pump[index].speed*dp.pump[index].speedPercent/100;
|
int32_t step = direction*time*dp.pump[index].fullSpeed*dp.pump[index].speedPercent/100;
|
||||||
SetPumpStepTarget(index, step);
|
SetPumpStepTarget(index, step);
|
||||||
StartPumpRelativeMove(index);
|
StartPumpRelativeMove(index);
|
||||||
|
|
||||||
@ -1484,8 +1488,7 @@ static uint8_t HandlePumpSpeedControl(uint8_t *Buff, uint8_t len) {
|
|||||||
log_e("泵速度设置错误");
|
log_e("泵速度设置错误");
|
||||||
return ACK_FAILED;
|
return ACK_FAILED;
|
||||||
}
|
}
|
||||||
//更新参数
|
|
||||||
systemStatus.ds.pumps.speed[index] = speedPercent;
|
|
||||||
|
|
||||||
// 写入指令
|
// 写入指令
|
||||||
uint16_t speed = transSpeedPercentToSpeed(index, speedPercent);
|
uint16_t speed = transSpeedPercentToSpeed(index, speedPercent);
|
||||||
@ -1496,6 +1499,9 @@ static uint8_t HandlePumpSpeedControl(uint8_t *Buff, uint8_t len) {
|
|||||||
log_e("泵速度设置错误");
|
log_e("泵速度设置错误");
|
||||||
return ACK_FAILED;
|
return ACK_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//更新参数
|
||||||
|
systemStatus.ds.pumps.speed[index] = speedPercent;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ACK_OK;
|
return ACK_OK;
|
||||||
|
@ -377,7 +377,7 @@ typedef enum {
|
|||||||
|
|
||||||
// 三通阀结构体
|
// 三通阀结构体
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint16_t angle[2]; // 阀门角度 (120/210)
|
uint16_t angle[2]; // 阀门实时角度
|
||||||
} ValveStatus_t;
|
} ValveStatus_t;
|
||||||
|
|
||||||
// 泵结构体
|
// 泵结构体
|
||||||
@ -392,7 +392,7 @@ typedef struct {
|
|||||||
ValveStatus_t valves; // 两个三通阀状态
|
ValveStatus_t valves; // 两个三通阀状态
|
||||||
PumpStatus_t pumps; // 两个泵状态
|
PumpStatus_t pumps; // 两个泵状态
|
||||||
uint8_t bubbleStatus; // 气泡状态
|
uint8_t bubbleStatus; // 气泡状态
|
||||||
uint16_t activityMeter; // 活度计mCi
|
float activityMeter; // 活度计uCi
|
||||||
uint8_t estopStatus; // 急停状态
|
uint8_t estopStatus; // 急停状态
|
||||||
uint8_t errorCode; // 错误码
|
uint8_t errorCode; // 错误码
|
||||||
uint8_t initStatus; // 初始化状态
|
uint8_t initStatus; // 初始化状态
|
||||||
@ -417,7 +417,7 @@ typedef struct
|
|||||||
typedef struct {
|
typedef struct {
|
||||||
uint8_t name[20];
|
uint8_t name[20];
|
||||||
uint8_t id;
|
uint8_t id;
|
||||||
uint32_t speed;//满速
|
uint32_t fullSpeed;//满速
|
||||||
uint32_t accel;
|
uint32_t accel;
|
||||||
uint32_t decel;
|
uint32_t decel;
|
||||||
uint16_t fullCount;//电机总步数,用于根据角度估算需要移动的步数
|
uint16_t fullCount;//电机总步数,用于根据角度估算需要移动的步数
|
||||||
|
Loading…
Reference in New Issue
Block a user