This commit is contained in:
CSSC-WORK\murmur 2024-12-13 10:54:29 +08:00
parent 7995848f05
commit 9fbe044705
2 changed files with 50 additions and 53 deletions

View File

@ -2,12 +2,12 @@
#include <string.h> #include <string.h>
static DeviceStatus deviceStatus = {0}; static DeviceStatus deviceStatus = {0};
DeviceDefaultParam dp = { DeviceDefaultParam dp = {{
{"pump1", 1, 100, 100, 100}, {"pump1", 1, 100, 100, 100},
{"pump2", 2, 100, 100, 100}, {"pump2", 2, 100, 100, 100},
{"valve1", 3, 100, 100, 100}, {"valve1", 3, 100, 100, 100},
{"valve2", 4, 100, 100, 100} {"valve2", 4, 100, 100, 100}
}; }};
@ -108,41 +108,7 @@ void updateInitStatus(InitStatus_t status) {
deviceStatus.initStatus = status; deviceStatus.initStatus = status;
} }
uint8_t InitPump(void) {
// 初始化泵
WriteJogAcc(dp.pump[0].id, dp.pump[0].maxAccel);
WriteJogDec(dp.pump[0].id, dp.pump[0].maxDecel);
WriteJogSpeed(dp.pump[0].id, dp.pump[0].maxSpeed);
WriteStepAcc(dp.pump[0].id, dp.pump[0].maxAccel);
WriteStepDec(dp.pump[0].id, dp.pump[0].maxDecel);
WriteStepSpeed(dp.pump[0].id, dp.pump[0].maxSpeed);
WriteJogAcc(dp.pump[1].id, dp.pump[1].maxAccel);
WriteJogDec(dp.pump[1].id, dp.pump[1].maxDecel);
WriteJogSpeed(dp.pump[1].id, dp.pump[1].maxSpeed);
WriteStepAcc(dp.pump[1].id, dp.pump[1].maxAccel);
WriteStepDec(dp.pump[1].id, dp.pump[1].maxDecel);
WriteStepSpeed(dp.pump[1].id, dp.pump[1].maxSpeed);
}
// 初始化设备状态
void InitDeviceStatus() {
// 初始化泵
InitPump();
// 更新设备状态
updateDeviceStatus(DEVICE_ONLINE);
updateValveStatus(1, 120);
updateValveStatus(2, 210);
updatePumpStatus(1, PUMP_CLOCKWISE);
updatePumpStatus(2, PUMP_ANTICLOCKWISE);
updatePumpSpeedStatus(1, 100);
updatePumpSpeedStatus(2, 100);
updateBubbleSensor(BUBBLE_DETECTED);
updateEmergencyStop(ESTOP_NORMAL);
updateInitStatus(INIT_SUCCESS);
}
//modBUS RTU 写命令 //modBUS RTU 写命令
@ -515,10 +481,6 @@ static uint8_t SetValveHomeTime(uint8_t index, uint16_t time) {
writeValve1Reg(index, RTU_VALVE_CMD_HOME_TIME, time); writeValve1Reg(index, RTU_VALVE_CMD_HOME_TIME, time);
} }
uint8_t updateValveStatus(uint8_t index, uint16_t status) {
// writeValve1Reg(index, RTU_VALVE_CMD_STATUS, status);
}
uint8_t ValveBackToOrigin(uint8_t index) { uint8_t ValveBackToOrigin(uint8_t index) {
// 1.设置原点回归方式 // 1.设置原点回归方式
// (0416h)=37;17=负限位18=正限位 // (0416h)=37;17=负限位18=正限位
@ -555,7 +517,7 @@ uint8_t ValveRunInit(uint8_t index) {
// 2.4设置位移的减速度 (03FEh)(用户单位/s2) // 2.4设置位移的减速度 (03FEh)(用户单位/s2)
SetValvePPDec(index, 40000); SetValvePPDec(index, 40000);
// 3.写控制字使电机使能 // 3.写控制字使电机使能
// (0380h)= 0x06→0x07→ 0x0F电机使能: // (0380h)= 0x06→0x07→ 0x0F 电机使能:
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);
@ -597,9 +559,42 @@ void UpdatePumpStatus() {
ReadPumpAlarm(1); ReadPumpAlarm(1);
} }
uint8_t InitPump(void) {
// 初始化泵
log_e("InitPump");
WriteJogAcc(dp.pump[0].id, dp.pump[0].maxAccel);
WriteJogDec(dp.pump[0].id, dp.pump[0].maxDecel);
WriteJogSpeed(dp.pump[0].id, dp.pump[0].maxSpeed);
WriteStepAcc(dp.pump[0].id, dp.pump[0].maxAccel);
WriteStepDec(dp.pump[0].id, dp.pump[0].maxDecel);
WriteStepSpeed(dp.pump[0].id, dp.pump[0].maxSpeed);
WriteJogAcc(dp.pump[1].id, dp.pump[1].maxAccel);
WriteJogDec(dp.pump[1].id, dp.pump[1].maxDecel);
WriteJogSpeed(dp.pump[1].id, dp.pump[1].maxSpeed);
WriteStepAcc(dp.pump[1].id, dp.pump[1].maxAccel);
WriteStepDec(dp.pump[1].id, dp.pump[1].maxDecel);
WriteStepSpeed(dp.pump[1].id, dp.pump[1].maxSpeed);
}
// 初始化设备状态
void InitDeviceStatus() {
// 初始化泵
// 更新设备状态
updateDeviceStatus(DEVICE_ONLINE);
updateValveStatus(1, 120);
updateValveStatus(2, 210);
updatePumpStatus(1, PUMP_CLOCKWISE);
updatePumpStatus(2, PUMP_ANTICLOCKWISE);
updatePumpSpeedStatus(1, 100);
updatePumpSpeedStatus(2, 100);
updateBubbleSensor(BUBBLE_DETECTED);
updateEmergencyStop(ESTOP_NORMAL);
updateInitStatus(INIT_SUCCESS);
}
// 初始化处理 // 初始化处理
static uint8_t HandleInit(uint8_t *rxBuf, uint8_t *txBuf, uint16_t *txLen) { static uint8_t HandleInit(void) {
// 实现初始化逻辑 // 实现初始化逻辑
InitDeviceStatus(); InitDeviceStatus();
return 1; return 1;
@ -620,18 +615,18 @@ static uint8_t HandleValveControl(uint8_t *Buff, uint8_t len) {
// 实现三通阀控制逻辑 // 实现三通阀控制逻辑
if(len != 8) { if(len != 8) {
printf("三通阀控制错误\r\n"); log_e("三通阀控制错误");
return 0; return 0;
} }
uint8_t index = Buff[0]; uint8_t index = Buff[0];
uint8_t direction = Buff[1]; uint8_t direction = Buff[1];
uint16_t angle = (Buff[2]<<8) | Buff[3]; uint16_t angle = (Buff[2]<<8) | Buff[3];
if(angle > 360) { if(angle > 360) {
printf("三通阀控制错误\r\n"); log_e("三通阀控制错误");
return 1; return 1;
} }
if (angle != VALVE_ANGLE_120 && angle != VALVE_ANGLE_210) { if (angle != VALVE_ANGLE_120 && angle != VALVE_ANGLE_210) {
printf("三通阀控制错误\r\n"); log_e("三通阀控制错误");
return 1; return 1;
} }
@ -647,7 +642,7 @@ static uint8_t HandleValveControl(uint8_t *Buff, uint8_t len) {
static uint8_t HandlePumpTimeControl(uint8_t *Buff, uint8_t len) { static uint8_t HandlePumpTimeControl(uint8_t *Buff, uint8_t len) {
// 实现泵时长控制逻辑 // 实现泵时长控制逻辑
// 暂未知控制方法,是直接设置泵运行时间,还是设置泵运行步数 // 使用定时器更靠谱
return 1; return 1;
} }
@ -656,13 +651,13 @@ static uint8_t HandlePumpTimeControl(uint8_t *Buff, uint8_t len) {
static uint8_t HandlePumpSpeedControl(uint8_t *Buff, uint8_t len) { static uint8_t HandlePumpSpeedControl(uint8_t *Buff, uint8_t len) {
// 实现泵速度设置逻辑 // 实现泵速度设置逻辑
if(len != 4) { if(len != 4) {
printf("泵速度设置错误\r\n"); log_e("泵速度设置错误");
return 0; return 0;
} }
uint8_t index = Buff[0]; uint8_t index = Buff[0];
uint16_t speed = Buff[1]; uint16_t speed = Buff[1];
if (speed > 100) { if (speed > 100) {
printf("泵速度设置错误\r\n"); log_e("泵速度设置错误");
return 0; return 0;
} }
WriteJogSpeed(index, speed); WriteJogSpeed(index, speed);
@ -670,7 +665,7 @@ static uint8_t HandlePumpSpeedControl(uint8_t *Buff, uint8_t len) {
index = Buff[2]; index = Buff[2];
speed = Buff[3]; speed = Buff[3];
if (speed > 100) { if (speed > 100) {
printf("泵速度设置错误\r\n"); log_e("泵速度设置错误");
return 0; return 0;
} }
WriteJogSpeed(index, speed); WriteJogSpeed(index, speed);
@ -680,7 +675,7 @@ static uint8_t HandlePumpSpeedControl(uint8_t *Buff, uint8_t len) {
static uint8_t HandlePumpStepControl(uint8_t *Buff, uint8_t len) { static uint8_t HandlePumpStepControl(uint8_t *Buff, uint8_t len) {
if(len != 10) { if(len != 10) {
printf("泵步进设置错误\r\n"); log_e("泵步进设置错误");
return 0; return 0;
} }
uint8_t index = Buff[0]; uint8_t index = Buff[0];
@ -693,7 +688,7 @@ static uint8_t HandlePumpStepControl(uint8_t *Buff, uint8_t len) {
// 软急停功能处理 // 软急停功能处理
static uint8_t HandleSoftStop(uint8_t *rxBuf, uint16_t rxLen) { static uint8_t HandleSoftStop(uint8_t *rxBuf, uint16_t rxLen) {
if(rxLen != 1) { if(rxLen != 1) {
printf("软急停设置错误\r\n"); log_e("软急停设置错误");
return 1; return 1;
} }
// 实现软急停功能逻辑 // 实现软急停功能逻辑
@ -767,7 +762,7 @@ CmdFrameError_t ProcessHostCommand(uint8_t *rxBuf, uint16_t rxLen) {
error = HandlePumpStep(data, dataLen); error = HandlePumpStep(data, dataLen);
break; break;
case CMD_SYSTEM_INIT: case CMD_SYSTEM_INIT:
error = HandleInit(data, dataLen); error = HandleInit();
break; break;
default: default:
error = CMD_FRAME_CMD_ERROR; error = CMD_FRAME_CMD_ERROR;

View File

@ -2,6 +2,8 @@
#define PROTOCOL_H #define PROTOCOL_H
#include <stdint.h> #include <stdint.h>
#define LOG_TAG "motor"
#include <elog.h>
// 帧头帧尾定义 // 帧头帧尾定义
#define FRAME_HEADER 0xA55A5AA5 #define FRAME_HEADER 0xA55A5AA5