添加自检粘度计测试、弃用状态机、修改电眼设置默认最小值

This commit is contained in:
2026-09-09 18:14:40 +08:00
parent dc2004506b
commit 5f96e8d592
4 changed files with 203 additions and 147 deletions
+68 -25
View File
@@ -1026,17 +1026,17 @@ void InkJetPrinter::timerHandler(void){
m_MainWidget->setRunStatus(tr("开始自检,请等待%1秒...").
arg((MAX_SELF_CHECK_CNT - sysPara->status.selfCheckCnt)/100));
}
#ifdef QT_DEBUG
if(sysPara->status.selfCheckCnt >= 500) // 测试自检改为15s
#ifdef BNS_DEBUG
if(sysPara->status.selfCheckCnt >= MAX_SELF_CHECK_CNT) // 测试自检改为15s
#else
if(sysPara->status.selfCheckCnt >= MAX_SELF_CHECK_CNT)
#endif
{
// sysPara->status.selfCheckDone = true;
sysPara->status.selfCheckDone = true;
// 通过状态管理器发送事件,在 onStateChanged 中更新 sysPara
if (m_stateManager && m_stateManager->isState(PrinterState::SELF_CHECK)) {
m_stateManager->requestTransition(PrinterEvent::SelfCheckDone);
}
// if (m_stateManager && m_stateManager->isState(PrinterState::SELF_CHECK)) {
// m_stateManager->requestTransition(PrinterEvent::SelfCheckDone);
// }
// 自检完成后管道恢复正常阻力,重置软启动让压力重新平稳收敛
// 不清零 u,从当前控制字开始,避免突变
@@ -1833,8 +1833,8 @@ void InkJetPrinter::initStateManager()
m_stateManager = PrinterStateManager::instance();
// 连接状态变化信号 DirectConnection:确保相关状态实时更新
connect(m_stateManager, &PrinterStateManager::sig_stateChanged,
this, &InkJetPrinter::slt_stateChanged, Qt::DirectConnection);
// connect(m_stateManager, &PrinterStateManager::sig_stateChanged,
// this, &InkJetPrinter::slt_stateChanged, Qt::DirectConnection);
// ============ 开机时重置状态 ============
m_stateManager->initFromSysPara();
@@ -1880,8 +1880,6 @@ void InkJetPrinter::handleReady()
void InkJetPrinter::handleStartPrint()
{
sysPara->status.isPrinting = true;
sysPara->devOp->highVoltageCtrl(1);
sysPara->devOp->setHighVoltageAmplitudetoSTM32();
@@ -2453,7 +2451,38 @@ void InkJetPrinter::autoControlValvePump(void)
/*------------------------------------粘度泵,混合阀-----------------------------------------*/
if(sysPara->status.selfCheckDone)
autoControlViscosityPump();
else
autoControlViscosityPumpForSelfCheck(sysPara->status.selfCheckCnt);
/*-----------------------------每30s打开一次粘度泵以及相关处理--------------------------------------*/
// }
/*-----------------------------------回收泵------------------------------------------*/
if(!sysPara->status.autoCtlReclaimAfterSWintOff)
{
if(!sysPara->devOp->isReclaimPumpOpen() ){ //回收泵
// ui->tabMainWindow->setRunStatus(tr("全速回收泵!!!"));
sysPara->status.reclaimPumpFullSpeedCnt = 0;
sysPara->devOp->controlReclaimPump(true,true); //先全速,后降速
}
else if(sysPara->status.reclaimPumpFullSpeedCnt <= RECLAIM_PUMP_FULL_SPEED_CNT){
sysPara->status.reclaimPumpFullSpeedCnt ++;
if(sysPara->status.reclaimPumpFullSpeedCnt == RECLAIM_PUMP_FULL_SPEED_CNT){ //降速
// ui->tabMainWindow->setRunStatus(tr("降速回收泵!!!"));
sysPara->devOp->controlReclaimPump(true,false);
}
}
}
/*-----------------------------------------------------------------------------*/
}
}
}
void InkJetPrinter::autoControlViscosityPump()
{
static bool hasDetectedBellow = false; // 检测到下位灯
static bool hasDetectedTop = false; // 检测到上位灯
static int viscosity_low = 0; //统计粘度连续偏低10%次数
@@ -2577,25 +2606,39 @@ void InkJetPrinter::autoControlValvePump(void)
hasDetectedBellow = false;
hasDetectedTop = false;
}
// }
/*-----------------------------------回收泵------------------------------------------*/
}
if(!sysPara->status.autoCtlReclaimAfterSWintOff)
void InkJetPrinter::autoControlViscosityPumpForSelfCheck(int selfCheckCnt)
{
if(!sysPara->devOp->isReclaimPumpOpen() ){ //回收泵
// ui->tabMainWindow->setRunStatus(tr("全速回收泵!!!"));
sysPara->status.reclaimPumpFullSpeedCnt = 0;
sysPara->devOp->controlReclaimPump(true,true); //先全速,后降速
if(sysPara->devOp->isCycleValveOpen()) {
sysPara->devOp->controlCycleValve(false);
}
else if(sysPara->status.reclaimPumpFullSpeedCnt <= RECLAIM_PUMP_FULL_SPEED_CNT){
sysPara->status.reclaimPumpFullSpeedCnt ++;
if(sysPara->status.reclaimPumpFullSpeedCnt == RECLAIM_PUMP_FULL_SPEED_CNT){ //降速
// ui->tabMainWindow->setRunStatus(tr("降速回收泵!!!"));
sysPara->devOp->controlReclaimPump(true,false);
if(sysPara->devOp->isMixValveOpen()) {
sysPara->devOp->controlMixValve(false);
}
if(selfCheckCnt >= MAX_SELF_CHECK_CNT) {
if(sysPara->devOp->isViscosityPumpOpen())
sysPara->devOp->controlViscosityPump(false);
return;
}
int stageCnt = selfCheckCnt % 1000;
if(stageCnt >= 0 && stageCnt < 150) {
if(!sysPara->devOp->isViscosityPumpOpen()) {
sysPara->devOp->controlViscosityPump(true);
qDebug() << "Start test viscosity pump.";
}
}
}
/*-----------------------------------------------------------------------------*/
if(stageCnt >= 150) {
if(sysPara->devOp->isViscosityPumpOpen()) {
sysPara->devOp->controlViscosityPump(false);
qDebug() << "Stop test viscosity pump.";
}
}
}
@@ -2750,7 +2793,7 @@ void InkJetPrinter::detectAndcontrolReclaimTank(){
if(sysPara->status.reclaimTankstatus != 2 && rate != 0) {
m_MainWidget->setReclaimStatus(sysPara->status.reclaimTankstatus == 1, rate);
#ifdef QT_DEBUG
#ifdef BNS_DEBUG
if(rate == 100) {
m_MainWidget->enablePrintButton(true);
m_MainWidget->stopFlashReclaimOpenBtn();
+4
View File
@@ -115,6 +115,10 @@ private:
void autoControlCycleValve();
void autoControlViscosityPump();
void autoControlViscosityPumpForSelfCheck(int selfCheckCnt);
void pressureAdj();
void autoControlHeater();
void cycleValveRunForSelfCheck();
+9 -6
View File
@@ -26,7 +26,7 @@
<enum>Qt::StrongFocus</enum>
</property>
<property name="currentIndex">
<number>0</number>
<number>1</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
@@ -428,7 +428,7 @@
</size>
</property>
<property name="minimum">
<number>0</number>
<number>1</number>
</property>
<property name="maximum">
<number>2147483647</number>
@@ -491,13 +491,13 @@
</size>
</property>
<property name="minimum">
<number>1</number>
<number>0</number>
</property>
<property name="maximum">
<number>65535</number>
</property>
<property name="value">
<number>1</number>
<number>0</number>
</property>
</widget>
</item>
@@ -541,14 +541,17 @@
</size>
</property>
<property name="minimum">
<number>1</number>
<number>0</number>
</property>
<property name="maximum">
<number>65535</number>
</property>
<property name="value">
<property name="singleStep">
<number>1</number>
</property>
<property name="value">
<number>0</number>
</property>
</widget>
</item>
</layout>
+13 -7
View File
@@ -951,8 +951,8 @@ void MainWidget::on_m_StartBtn_clicked()
if (!checkTriggerMode()) return;
// 打印状态交给状态机修改
// sysPara->status.isPrinting=false;
auto mgr = PrinterStateManager::instance();
sysPara->status.isPrinting=false;
// auto mgr = PrinterStateManager::instance();
#if !defined(FPGA_TEST) && !defined(QT_DEBUG)
// if (mgr && mgr->canStopPrint()) {
// mgr->requestTransition(PrinterEvent::StopPrint);
@@ -970,6 +970,10 @@ void MainWidget::on_m_StartBtn_clicked()
setReclaimOpenBtnStatus(false);
updatePrintDisplayLabel();
sysPara->devOp->highVoltageCtrl(1);
sysPara->devOp->setHighVoltageAmplitudetoSTM32();
// 20170717 移动此,以观察条形码打印异常问题。
if(!startPrintingFlag)
{
@@ -979,9 +983,11 @@ void MainWidget::on_m_StartBtn_clicked()
startPrintingFlag = true;
// sysPara->status.isPrinting=true;
if (mgr->canStartPrint() || mgr->isState(PrinterState::PRINTING)) {
mgr->requestTransition(PrinterEvent::StartPrint);
}
// if (mgr->canStartPrint() || mgr->isState(PrinterState::PRINTING)) {
// mgr->requestTransition(PrinterEvent::StartPrint);
// }
sysPara->status.isPrinting = true;
sysPara->status.waitHightVolOff = 0;
// 高亮切换
changeHighLight(true);
@@ -994,8 +1000,8 @@ void MainWidget::on_m_StopBtn_clicked()
if (!sysPara->status.reclainTankReachEnd && !SIMULATE_PRINTING_MODE) {
return;
}
// sysPara->status.isPrinting=false;// 打印状态交给状态机修改
auto mgr = PrinterStateManager::instance();
sysPara->status.isPrinting=false;// 打印状态交给状态机修改
// auto mgr = PrinterStateManager::instance();
#if !defined(FPGA_TEST) && !defined(QT_DEBUG)
// if (mgr && mgr->canStopPrint()) {
// mgr->requestTransition(PrinterEvent::StopPrint);