update functions

This commit is contained in:
CSSC-WORK\murmur 2024-12-23 11:13:24 +08:00
parent 90d7bed5b4
commit dee9ff6204
2 changed files with 51 additions and 39 deletions

View File

@ -11,12 +11,16 @@ DeviceStatus deviceStatus = {
.initStatus = 1 .initStatus = 1
}; };
DeviceParam dp = {{ DeviceParam dp = {
{"pump1", 4, 60, 100, 100}, .pump = {
{"pump2", 3, 10, 100, 100}, {"pump1", 4, 60, 100, 100},
{"valve1", 3, 10, 100, 100}, {"pump2", 3, 10, 100, 100}
{"valve2", 4, 10, 100, 100} },
}}; .valve = {
{"valve1", 1, 10, 100, 100},
{"valve2", 2, 10, 100, 100}
}
};
@ -206,7 +210,7 @@ void writeCMD(uint8_t *txBuf, uint16_t txLen) {
void sendMsgToHost(uint8_t *txBuf, uint16_t txLen) { void sendMsgToHost(uint8_t *txBuf, uint16_t txLen) {
// 发送数据 // 发送数据
// HAL_UART_Transmit_DMA(&huart1, txBuf, txLen); // HAL_UART_Transmit_DMA(&huart1, txBuf, txLen);
transDataToHost(txBuf, txLen); // transDataToHost(txBuf, txLen);
} }
@ -688,7 +692,7 @@ void (*readValve2Reg)(uint8_t index, uint16_t reg) = ReadPump2Reg;
* @return 0: : * @return 0: :
*/ */
static uint8_t SetValveCOMMMode(uint8_t index, uint16_t mode) { static uint8_t SetValveCOMMMode(uint8_t index, uint16_t mode) {
WritePump1Reg(index, RTU_VALVE_CMD_CTL_MODE, mode); WritePump1Reg(dp.valve[index].id, RTU_VALVE_CMD_CTL_MODE, mode);
} }
/** /**
@ -699,7 +703,7 @@ static uint8_t SetValveCOMMMode(uint8_t index, uint16_t mode) {
* @return 0: : * @return 0: :
*/ */
static uint8_t SetValveRunMode(uint8_t index, uint16_t mode) { static uint8_t SetValveRunMode(uint8_t index, uint16_t mode) {
WritePump1Reg(index, RTU_VALVE_CMD_RUN_MODE, mode); WritePump1Reg(dp.valve[index].id, RTU_VALVE_CMD_RUN_MODE, mode);
} }
// PP=轮廓位置模式 // PP=轮廓位置模式
@ -711,7 +715,7 @@ static uint8_t SetValveRunMode(uint8_t index, uint16_t mode) {
* @return 0: : * @return 0: :
*/ */
static uint8_t SetValvePPPos(uint8_t index, uint32_t pos) { static uint8_t SetValvePPPos(uint8_t index, uint32_t pos) {
writeValve2Reg(index, RTU_VALVE_CMD_PP_POS, pos); writeValve2Reg(dp.valve[index].id, RTU_VALVE_CMD_PP_POS, pos);
} }
/** /**
@ -722,7 +726,7 @@ static uint8_t SetValvePPPos(uint8_t index, uint32_t pos) {
* @return 0: : * @return 0: :
*/ */
static uint8_t SetValvePPSpeed(uint8_t index, uint32_t speed) { static uint8_t SetValvePPSpeed(uint8_t index, uint32_t speed) {
writeValve2Reg(index, RTU_VALVE_CMD_PP_SPEED, speed); writeValve2Reg(dp.valve[index].id, RTU_VALVE_CMD_PP_SPEED, speed);
} }
/** /**
@ -733,7 +737,7 @@ static uint8_t SetValvePPSpeed(uint8_t index, uint32_t speed) {
* @return 0: : * @return 0: :
*/ */
static uint8_t SetValvePPAcc(uint8_t index, uint32_t acc) { static uint8_t SetValvePPAcc(uint8_t index, uint32_t acc) {
writeValve2Reg(index, RTU_VALVE_CMD_PP_ACCEL, acc); writeValve2Reg(dp.valve[index].id, RTU_VALVE_CMD_PP_ACCEL, acc);
} }
/** /**
@ -744,7 +748,7 @@ static uint8_t SetValvePPAcc(uint8_t index, uint32_t acc) {
* @return 0: : * @return 0: :
*/ */
static uint8_t SetValvePPDec(uint8_t index, uint32_t dec) { static uint8_t SetValvePPDec(uint8_t index, uint32_t dec) {
writeValve2Reg(index, RTU_VALVE_CMD_PP_DECEL, dec); writeValve2Reg(dp.valve[index].id, RTU_VALVE_CMD_PP_DECEL, dec);
} }
// HM=原点回归模式 // HM=原点回归模式
@ -756,7 +760,7 @@ static uint8_t SetValvePPDec(uint8_t index, uint32_t dec) {
* @return 0: : * @return 0: :
*/ */
static uint8_t SetValveHomeDetectMode(uint8_t index, uint16_t mode) { static uint8_t SetValveHomeDetectMode(uint8_t index, uint16_t mode) {
writeValve1Reg(index, RTU_VALVE_CMD_HOME_MODE, mode); writeValve1Reg(dp.valve[index].id, RTU_VALVE_CMD_HOME_MODE, mode);
} }
/** /**
@ -767,7 +771,7 @@ static uint8_t SetValveHomeDetectMode(uint8_t index, uint16_t mode) {
* @return 0: : * @return 0: :
*/ */
static uint8_t SetValveHomeSwtSpeed(uint8_t index, uint32_t speed) { static uint8_t SetValveHomeSwtSpeed(uint8_t index, uint32_t speed) {
writeValve2Reg(index, RTU_VALVE_CMD_HOME_SWT_SPEED, speed); writeValve2Reg(dp.valve[index].id, RTU_VALVE_CMD_HOME_SWT_SPEED, speed);
} }
/** /**
@ -778,7 +782,7 @@ static uint8_t SetValveHomeSwtSpeed(uint8_t index, uint32_t speed) {
* @return 0: : * @return 0: :
*/ */
static uint8_t SetValveHomeOriSpeed(uint8_t index, uint32_t speed) { static uint8_t SetValveHomeOriSpeed(uint8_t index, uint32_t speed) {
writeValve2Reg(index, RTU_VALVE_CMD_HOME_ORI_SPEED, speed); writeValve2Reg(dp.valve[index].id, RTU_VALVE_CMD_HOME_ORI_SPEED, speed);
} }
/** /**
@ -789,7 +793,7 @@ static uint8_t SetValveHomeOriSpeed(uint8_t index, uint32_t speed) {
* @return 0: : * @return 0: :
*/ */
static uint8_t SetValveHomeAcc(uint8_t index, uint32_t acc) { static uint8_t SetValveHomeAcc(uint8_t index, uint32_t acc) {
writeValve2Reg(index, RTU_VALVE_CMD_HOME_ACCEL, acc); writeValve2Reg(dp.valve[index].id, RTU_VALVE_CMD_HOME_ACCEL, acc);
} }
/** /**
@ -800,7 +804,7 @@ static uint8_t SetValveHomeAcc(uint8_t index, uint32_t acc) {
* @return 0: : * @return 0: :
*/ */
static uint8_t SetValveFunc(uint8_t index, uint16_t func) { static uint8_t SetValveFunc(uint8_t index, uint16_t func) {
writeValve1Reg(index, RTU_VALVE_CMD_FUNC, func); writeValve1Reg(dp.valve[index].id, RTU_VALVE_CMD_FUNC, func);
} }
/** /**
@ -811,7 +815,7 @@ static uint8_t SetValveFunc(uint8_t index, uint16_t func) {
* @return 0: : * @return 0: :
*/ */
static uint8_t SetValveHomeTorque(uint8_t index, uint16_t torque) { static uint8_t SetValveHomeTorque(uint8_t index, uint16_t torque) {
writeValve1Reg(index, RTU_VALVE_CMD_HOME_TORQUE, torque*10); writeValve1Reg(dp.valve[index].id, RTU_VALVE_CMD_HOME_TORQUE, torque*10);
} }
/** /**
@ -822,7 +826,7 @@ static uint8_t SetValveHomeTorque(uint8_t index, uint16_t torque) {
* @return 0: : * @return 0: :
*/ */
static uint8_t SetValveHomeTime(uint8_t index, uint16_t time) { static uint8_t SetValveHomeTime(uint8_t index, uint16_t time) {
writeValve1Reg(index, RTU_VALVE_CMD_HOME_TIME, time*10); writeValve1Reg(dp.valve[index].id, RTU_VALVE_CMD_HOME_TIME, time*10);
} }
/** /**
@ -836,9 +840,11 @@ uint8_t ValveBackToOrigin(uint8_t index,uint8_t direction) {
// 1.设置原点回归方式 // 1.设置原点回归方式
// (0416h)=37;17=负限位18=正限位 // (0416h)=37;17=负限位18=正限位
if(direction) { if(direction) {
printf("back to Origin, +\r\n");
SetValveHomeDetectMode(index, 37);//正方向堵转 SetValveHomeDetectMode(index, 37);//正方向堵转
} }
else { else {
printf("back to Origin, -\r\n");
SetValveHomeDetectMode(index, 38);//反方向堵转 SetValveHomeDetectMode(index, 38);//反方向堵转
} }
// 2.设置堵转检测力矩和堵转检测时间 // 2.设置堵转检测力矩和堵转检测时间
@ -846,8 +852,8 @@ uint8_t ValveBackToOrigin(uint8_t index,uint8_t direction) {
SetValveHomeTorque(index, 600);//60% SetValveHomeTorque(index, 600);//60%
SetValveHomeTime(index, 10000);//1000ms SetValveHomeTime(index, 10000);//1000ms
// 3.写 (00B1h)=0、运行模式 (03C2h)=0x06使其工作在原点回归模式 // 3.写 (00B1h)=0、运行模式 (03C2h)=0x06使其工作在原点回归模式
// SetValveCOMMMode(index, RTU_VALVE_CFG_COMM_CIA402); SetValveCOMMMode(index, RTU_VALVE_CFG_COMM_CIA402);
// SetValveRunMode(index, RTU_VALVE_CFG_MODE_HM); SetValveRunMode(index, RTU_VALVE_CFG_MODE_HM);
// 4.写寻找限位开关速度和寻找原点信号速度(0417h)= 10000 (0419h)=1000; // 4.写寻找限位开关速度和寻找原点信号速度(0417h)= 10000 (0419h)=1000;
// SetValveHomeSwtSpeed(index, 20000); // SetValveHomeSwtSpeed(index, 20000);
SetValveHomeOriSpeed(index, 20000); SetValveHomeOriSpeed(index, 20000);
@ -855,9 +861,9 @@ uint8_t ValveBackToOrigin(uint8_t index,uint8_t direction) {
SetValveHomeAcc(index, 200000); SetValveHomeAcc(index, 200000);
// 6.写控制字 // 6.写控制字
// (0380h)= 0x06→0x07→0x0F→0x1F电机运行 // (0380h)= 0x06→0x07→0x0F→0x1F电机运行
// SetValveFunc(index, RTU_VALVE_CFG_PREPARE); SetValveFunc(index, RTU_VALVE_CFG_PREPARE);
// SetValveFunc(index, RTU_VALVE_CFG_DISABLE); SetValveFunc(index, RTU_VALVE_CFG_DISABLE);
// SetValveFunc(index, RTU_VALVE_CFG_ENABLE); SetValveFunc(index, RTU_VALVE_CFG_ENABLE);
SetValveFunc(index, RTU_VALVE_CFG_RUN_ORIGIN); SetValveFunc(index, RTU_VALVE_CFG_RUN_ORIGIN);
} }
@ -869,6 +875,7 @@ uint8_t ValveBackToOrigin(uint8_t index,uint8_t direction) {
* @return 0: : * @return 0: :
*/ */
uint8_t ValveRunInit(uint8_t index) { uint8_t ValveRunInit(uint8_t index) {
printf("set mode to PP\r\n");
// 1.配置模式: // 1.配置模式:
// 00B1h=0、运行模式 03C2h=0x01使设备工作在轮廓位置模式 // 00B1h=0、运行模式 03C2h=0x01使设备工作在轮廓位置模式
SetValveCOMMMode(index, RTU_VALVE_CFG_COMM_CIA402); SetValveCOMMMode(index, RTU_VALVE_CFG_COMM_CIA402);
@ -894,6 +901,7 @@ uint8_t ValveRunInit(uint8_t index) {
* @return 0: : * @return 0: :
*/ */
uint8_t ValveRunToAngle(uint8_t index, uint32_t angle) { uint8_t ValveRunToAngle(uint8_t index, uint32_t angle) {
printf("set angel to %d\r\n",angle);
// 限制角度的逻辑不在这里,此处只执行控制逻辑 // 限制角度的逻辑不在这里,此处只执行控制逻辑
if(angle > 360) { if(angle > 360) {
log_e("阀门角度设置错误"); log_e("阀门角度设置错误");
@ -916,13 +924,14 @@ uint8_t ValveRunToAngle(uint8_t index, uint32_t angle) {
* @return 0: : * @return 0: :
*/ */
uint8_t InitValve(void) { uint8_t InitValve(void) {
SetValvePPSpeed(dp.valve[0].id, dp.valve[0].maxSpeed); printf("InitValve\n");
SetValvePPAcc(dp.valve[0].id, dp.valve[0].maxAccel); SetValvePPSpeed(0, dp.valve[0].maxSpeed);
SetValvePPDec(dp.valve[0].id, dp.valve[0].maxDecel); SetValvePPAcc(0, dp.valve[0].maxAccel);
SetValvePPDec(0, dp.valve[0].maxDecel);
SetValvePPSpeed(dp.valve[1].id, dp.valve[1].maxSpeed); SetValvePPSpeed(1, dp.valve[1].maxSpeed);
SetValvePPAcc(dp.valve[1].id, dp.valve[1].maxAccel); SetValvePPAcc(1, dp.valve[1].maxAccel);
SetValvePPDec(dp.valve[1].id, dp.valve[1].maxDecel); SetValvePPDec(1, dp.valve[1].maxDecel);
} }
/** /**
@ -1253,29 +1262,31 @@ CmdFrameError_t ProcessHostCommand(uint8_t *rxBuf, uint8_t rxLen) {
void runPumpDemo(void) { void runPumpDemo(void) {
printf("runPumpDemo\r\n"); printf("runPumpDemo\r\n");
// printf("InitPump\n"); // printf("InitPump\n");
InitPump(); // InitPump();
// 泵1正转100步 // 泵1正转100步
printf("SetPumpStepTarget(0, 100)\n"); printf("SetPumpStepTarget(0, 100)\n");
SetPumpStepTarget(0, 200000); SetPumpStepTarget(0, 200000);
printf("StartPumpRelativeMove(0)\n"); printf("StartPumpRelativeMove(0)\n");
StartPumpRelativeMove(0); StartPumpRelativeMove(0);
HAL_Delay(1000); // HAL_Delay(1000);
// 泵1反转100步 // 泵1反转100步
printf("SetPumpStepTarget(0, -100)\n"); printf("SetPumpStepTarget(0, -100)\n");
SetPumpStepTarget(1, -300000); SetPumpStepTarget(1, -300000);
printf("StartPumpRelativeMove(0)\n"); printf("StartPumpRelativeMove(0)\n");
StartPumpRelativeMove(1); StartPumpRelativeMove(1);
HAL_Delay(1000); // HAL_Delay(1000);
printf("StopPump(0)\n"); printf("StopPump(0)\n");
StopPump(0); StopPump(0);
HAL_Delay(1000); // HAL_Delay(1000);
} }
void runValveDemo(void) { void runValveDemo(void) {
InitValve();
ValveBackToOrigin(0);
printf("runValveDemo\r\n"); printf("runValveDemo\r\n");
InitValve();
ValveBackToOrigin(0,1);
// 阀门1正转120度 // 阀门1正转120度
printf("ValveRunToAngle(0, 120)\n"); printf("ValveRunToAngle(0, 120)\n");
ValveRunInit(0);
ValveRunToAngle(0, 120); ValveRunToAngle(0, 120);
} }

View File

@ -102,7 +102,7 @@ typedef union {
}AlarmCode_t; }AlarmCode_t;
// 用于输出具体的告警信息字符串 // 用于输出具体的告警信息字符串
static const uint8_t alarmInfo[16][32]={ static const uint8_t alarmInfo[16][50]={
"位置误差超限", "位置误差超限",
"CCW方向禁止限位", "CCW方向禁止限位",
"CW方向禁止限位", "CW方向禁止限位",
@ -166,7 +166,7 @@ typedef union {
} bits; } bits;
uint16_t all; uint16_t all;
} StatusCode_t; } StatusCode_t;
static const uint8_t statusInfo[16][32]={ static const uint8_t statusInfo[16][60]={
"使能", "使能",
"采样中(软件示波器功能开启)", "采样中(软件示波器功能开启)",
"驱动器报故障", "驱动器报故障",
@ -423,4 +423,5 @@ void DecodePumpStatusMsg(uint16_t reg4002);
void UpdatePumpStatus(); void UpdatePumpStatus();
void ProcessMotorMsg(uint8_t *rxBuf, uint16_t rxLen); void ProcessMotorMsg(uint8_t *rxBuf, uint16_t rxLen);
void runPumpDemo(void); void runPumpDemo(void);
void runVavleDemo(void);
#endif // PROTOCOL_H #endif // PROTOCOL_H