添加自检粘度计测试、弃用状态机、修改电眼设置默认最小值
This commit is contained in:
+176
-133
@@ -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,130 +2451,13 @@ void InkJetPrinter::autoControlValvePump(void)
|
||||
|
||||
/*------------------------------------粘度泵,混合阀-----------------------------------------*/
|
||||
|
||||
if(sysPara->status.selfCheckDone)
|
||||
autoControlViscosityPump();
|
||||
else
|
||||
autoControlViscosityPumpForSelfCheck(sysPara->status.selfCheckCnt);
|
||||
|
||||
/*-----------------------------每30s打开一次粘度泵以及相关处理--------------------------------------*/
|
||||
static bool hasDetectedBellow = false; // 检测到下位灯
|
||||
static bool hasDetectedTop = false; // 检测到上位灯
|
||||
static int viscosity_low = 0; //统计粘度连续偏低10%次数
|
||||
static unsigned char Mixing_valve_open = 0; //统计粘度连续偏高5%次数
|
||||
static unsigned char viscosity_faulty_num = 0; //统计粘度连续偏高13%次数
|
||||
static bool flag = 0;
|
||||
|
||||
if(sysPara->status.cycleValveOpenCntAfterSWintOff) { //关闭墨线的时候要提前开粘度泵
|
||||
sysPara->status.viscosityDelayCnt = sysPara->para.viscosityPumpInterval*100 + 100;
|
||||
}
|
||||
++sysPara->status.viscosityDelayCnt;
|
||||
int mixer_open_threshold = (105*sysPara->para.viscosity)/100;
|
||||
int viscosity_faulty_threshold =(113*sysPara->para.viscosity)/100;
|
||||
if(sysPara->status.viscosityDelayCnt >= sysPara->para.viscosityPumpInterval*100 && flag == 0)
|
||||
{
|
||||
flag=1;
|
||||
if (!sysPara->devOp->isViscosityPumpOpen())
|
||||
{
|
||||
sysPara->devOp->controlViscosityPump(true);
|
||||
viscosity_timer->start(10000);
|
||||
qDebug()<<"粘度: "<<QString::number(sysPara->status.viscosity);
|
||||
}
|
||||
if((sysPara->status.viscosity >= 90*sysPara->para.viscosity/100) && (sysPara->status.viscosity <= mixer_open_threshold))
|
||||
{
|
||||
sysPara->status.viscosityFault = 0;
|
||||
viscosity_low=0;
|
||||
Mixing_valve_open = 0;
|
||||
viscosity_faulty_num = 0;
|
||||
}
|
||||
if(sysPara->status.viscosity < 90*sysPara->para.viscosity/100)
|
||||
{
|
||||
viscosity_low++;
|
||||
viscosity_faulty_num = 0;
|
||||
Mixing_valve_open = 0;
|
||||
}
|
||||
if(sysPara->status.viscosity > mixer_open_threshold && sysPara->status.viscosity <= viscosity_faulty_threshold)
|
||||
{
|
||||
Mixing_valve_open++;
|
||||
viscosity_low = 0;
|
||||
viscosity_faulty_num = 0;
|
||||
}
|
||||
if(sysPara->status.viscosity > viscosity_faulty_threshold){
|
||||
Mixing_valve_open++;
|
||||
viscosity_faulty_num++;
|
||||
viscosity_low = 0;
|
||||
}
|
||||
|
||||
if((!sysPara->devOp->isMixValveOpen()) && (((Mixing_valve_open > 1) && (!sysPara->para.gearPumpEnable)) || ((Mixing_valve_open > 4) && sysPara->para.gearPumpEnable))) { //
|
||||
sysPara->devOp->controlMixValve(true);
|
||||
Mixing_valve_open = 0;
|
||||
// LogInfo::setRunStatusText(tr("添加溶剂:")+QString::number(sysPara->status.viscosity));
|
||||
qDebug()<<"添加溶剂";
|
||||
}
|
||||
|
||||
if(viscosity_low >= 60)
|
||||
{
|
||||
// LogInfo::setRunStatusText(tr("警告!!!!!!!!!!!粘度值偏低")+QString::number(sysPara->status.viscosity));
|
||||
qDebug()<<"粘度值偏低";
|
||||
sysPara->status.viscosityFault = 2;
|
||||
if(sysPara->devOp->isMixValveOpen()) {
|
||||
sysPara->devOp->controlMixValve(false);
|
||||
}
|
||||
}
|
||||
if(viscosity_faulty_num >= 5)
|
||||
{
|
||||
// LogInfo::setRunStatusText(tr("错误!!!!!!!!!!!粘度偏大故障")+QString::number(sysPara->status.viscosity));
|
||||
qDebug()<<"粘度偏大故障";
|
||||
sysPara->status.viscosityFault = 1;
|
||||
}
|
||||
|
||||
}
|
||||
if((sysPara->status.viscosityDelayCnt >= (sysPara->para.viscosityPumpInterval*100+120)) && flag==1)
|
||||
{
|
||||
if(sysPara->devOp->isMixValveOpen()) {
|
||||
sysPara->devOp->controlMixValve(false);
|
||||
}
|
||||
}
|
||||
|
||||
if((sysPara->status.viscosityDelayCnt >= (sysPara->para.viscosityPumpInterval*100+130)) && flag==1)
|
||||
{
|
||||
if (sysPara->devOp->isViscosityPumpOpen()) {
|
||||
sysPara->devOp->controlViscosityPump(false);
|
||||
}
|
||||
sysPara->status.viscosityDelayCnt = 0;
|
||||
flag=0;
|
||||
}
|
||||
|
||||
if(sysPara->status.statWarn & WARN_STATUS_VISCOTITY_MEASURE_READY){ //上位灯检测标志位
|
||||
viscosity_timer->stop();
|
||||
}
|
||||
|
||||
if(sysPara->status.viscosityDelayCnt < sysPara->para.viscosityPumpInterval*100) {
|
||||
static int detectBelow = 0;
|
||||
if (++detectBelow%400 == 0) {
|
||||
if(sysPara->status.statWarn & WARN_STATUS_VISCOTITY_MEASURE_READY)
|
||||
{
|
||||
if(sysPara->status.rWarnViscoReady>=15){
|
||||
sysPara->status.viscosityFault = 1;
|
||||
sysPara->status.viscosity=0;
|
||||
if(!firstTime)
|
||||
qDebug()<<"错误!粘度计下位灯故障."+QString::number(sysPara->status.viscosity);
|
||||
// LogInfo::setRunStatusText(tr("错误!粘度计下位灯故障.")+QString::number(sysPara->status.viscosity));
|
||||
hasDetectedBellow = true;
|
||||
}
|
||||
else sysPara->status.rWarnViscoReady++;
|
||||
}
|
||||
else {
|
||||
sysPara->status.rWarnViscoReady = 0;
|
||||
sysPara->status.viscosityFault = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(hasDetectedBellow && hasDetectedTop)
|
||||
{
|
||||
if(sysPara->devOp->isMixValveOpen()) { //
|
||||
sysPara->devOp->controlMixValve(false); //如果检测不到上下位灯就关掉混合阀
|
||||
}
|
||||
}
|
||||
if(sysPara->status.viscosityFault==0)
|
||||
{
|
||||
hasDetectedBellow = false;
|
||||
hasDetectedTop = false;
|
||||
}
|
||||
// }
|
||||
/*-----------------------------------回收泵------------------------------------------*/
|
||||
|
||||
@@ -2600,6 +2481,168 @@ void InkJetPrinter::autoControlValvePump(void)
|
||||
}
|
||||
}
|
||||
|
||||
void InkJetPrinter::autoControlViscosityPump()
|
||||
{
|
||||
static bool hasDetectedBellow = false; // 检测到下位灯
|
||||
static bool hasDetectedTop = false; // 检测到上位灯
|
||||
static int viscosity_low = 0; //统计粘度连续偏低10%次数
|
||||
static unsigned char Mixing_valve_open = 0; //统计粘度连续偏高5%次数
|
||||
static unsigned char viscosity_faulty_num = 0; //统计粘度连续偏高13%次数
|
||||
static bool flag = 0;
|
||||
|
||||
if(sysPara->status.cycleValveOpenCntAfterSWintOff) { //关闭墨线的时候要提前开粘度泵
|
||||
sysPara->status.viscosityDelayCnt = sysPara->para.viscosityPumpInterval*100 + 100;
|
||||
}
|
||||
++sysPara->status.viscosityDelayCnt;
|
||||
int mixer_open_threshold = (105*sysPara->para.viscosity)/100;
|
||||
int viscosity_faulty_threshold =(113*sysPara->para.viscosity)/100;
|
||||
if(sysPara->status.viscosityDelayCnt >= sysPara->para.viscosityPumpInterval*100 && flag == 0)
|
||||
{
|
||||
flag=1;
|
||||
if (!sysPara->devOp->isViscosityPumpOpen())
|
||||
{
|
||||
sysPara->devOp->controlViscosityPump(true);
|
||||
viscosity_timer->start(10000);
|
||||
qDebug()<<"粘度: "<<QString::number(sysPara->status.viscosity);
|
||||
}
|
||||
if((sysPara->status.viscosity >= 90*sysPara->para.viscosity/100) && (sysPara->status.viscosity <= mixer_open_threshold))
|
||||
{
|
||||
sysPara->status.viscosityFault = 0;
|
||||
viscosity_low=0;
|
||||
Mixing_valve_open = 0;
|
||||
viscosity_faulty_num = 0;
|
||||
}
|
||||
if(sysPara->status.viscosity < 90*sysPara->para.viscosity/100)
|
||||
{
|
||||
viscosity_low++;
|
||||
viscosity_faulty_num = 0;
|
||||
Mixing_valve_open = 0;
|
||||
}
|
||||
if(sysPara->status.viscosity > mixer_open_threshold && sysPara->status.viscosity <= viscosity_faulty_threshold)
|
||||
{
|
||||
Mixing_valve_open++;
|
||||
viscosity_low = 0;
|
||||
viscosity_faulty_num = 0;
|
||||
}
|
||||
if(sysPara->status.viscosity > viscosity_faulty_threshold){
|
||||
Mixing_valve_open++;
|
||||
viscosity_faulty_num++;
|
||||
viscosity_low = 0;
|
||||
}
|
||||
|
||||
if((!sysPara->devOp->isMixValveOpen()) && (((Mixing_valve_open > 1) && (!sysPara->para.gearPumpEnable)) || ((Mixing_valve_open > 4) && sysPara->para.gearPumpEnable))) { //
|
||||
sysPara->devOp->controlMixValve(true);
|
||||
Mixing_valve_open = 0;
|
||||
// LogInfo::setRunStatusText(tr("添加溶剂:")+QString::number(sysPara->status.viscosity));
|
||||
qDebug()<<"添加溶剂";
|
||||
}
|
||||
|
||||
if(viscosity_low >= 60)
|
||||
{
|
||||
// LogInfo::setRunStatusText(tr("警告!!!!!!!!!!!粘度值偏低")+QString::number(sysPara->status.viscosity));
|
||||
qDebug()<<"粘度值偏低";
|
||||
sysPara->status.viscosityFault = 2;
|
||||
if(sysPara->devOp->isMixValveOpen()) {
|
||||
sysPara->devOp->controlMixValve(false);
|
||||
}
|
||||
}
|
||||
if(viscosity_faulty_num >= 5)
|
||||
{
|
||||
// LogInfo::setRunStatusText(tr("错误!!!!!!!!!!!粘度偏大故障")+QString::number(sysPara->status.viscosity));
|
||||
qDebug()<<"粘度偏大故障";
|
||||
sysPara->status.viscosityFault = 1;
|
||||
}
|
||||
|
||||
}
|
||||
if((sysPara->status.viscosityDelayCnt >= (sysPara->para.viscosityPumpInterval*100+120)) && flag==1)
|
||||
{
|
||||
if(sysPara->devOp->isMixValveOpen()) {
|
||||
sysPara->devOp->controlMixValve(false);
|
||||
}
|
||||
}
|
||||
|
||||
if((sysPara->status.viscosityDelayCnt >= (sysPara->para.viscosityPumpInterval*100+130)) && flag==1)
|
||||
{
|
||||
if (sysPara->devOp->isViscosityPumpOpen()) {
|
||||
sysPara->devOp->controlViscosityPump(false);
|
||||
}
|
||||
sysPara->status.viscosityDelayCnt = 0;
|
||||
flag=0;
|
||||
}
|
||||
|
||||
if(sysPara->status.statWarn & WARN_STATUS_VISCOTITY_MEASURE_READY){ //上位灯检测标志位
|
||||
viscosity_timer->stop();
|
||||
}
|
||||
|
||||
if(sysPara->status.viscosityDelayCnt < sysPara->para.viscosityPumpInterval*100) {
|
||||
static int detectBelow = 0;
|
||||
if (++detectBelow%400 == 0) {
|
||||
if(sysPara->status.statWarn & WARN_STATUS_VISCOTITY_MEASURE_READY)
|
||||
{
|
||||
if(sysPara->status.rWarnViscoReady>=15){
|
||||
sysPara->status.viscosityFault = 1;
|
||||
sysPara->status.viscosity=0;
|
||||
if(!firstTime)
|
||||
qDebug()<<"错误!粘度计下位灯故障."+QString::number(sysPara->status.viscosity);
|
||||
// LogInfo::setRunStatusText(tr("错误!粘度计下位灯故障.")+QString::number(sysPara->status.viscosity));
|
||||
hasDetectedBellow = true;
|
||||
}
|
||||
else sysPara->status.rWarnViscoReady++;
|
||||
}
|
||||
else {
|
||||
sysPara->status.rWarnViscoReady = 0;
|
||||
sysPara->status.viscosityFault = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(hasDetectedBellow && hasDetectedTop)
|
||||
{
|
||||
if(sysPara->devOp->isMixValveOpen()) { //
|
||||
sysPara->devOp->controlMixValve(false); //如果检测不到上下位灯就关掉混合阀
|
||||
}
|
||||
}
|
||||
if(sysPara->status.viscosityFault==0)
|
||||
{
|
||||
hasDetectedBellow = false;
|
||||
hasDetectedTop = false;
|
||||
}
|
||||
}
|
||||
|
||||
void InkJetPrinter::autoControlViscosityPumpForSelfCheck(int selfCheckCnt)
|
||||
{
|
||||
if(sysPara->devOp->isCycleValveOpen()) {
|
||||
sysPara->devOp->controlCycleValve(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.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void InkJetPrinter::autoControlCycleValve()
|
||||
{
|
||||
if(!sysPara->status.selfCheckDone || (sysPara->status.flagOfPowerOnMode && sysPara->para.gearPumpEnable)){
|
||||
@@ -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();
|
||||
|
||||
@@ -115,6 +115,10 @@ private:
|
||||
|
||||
void autoControlCycleValve();
|
||||
|
||||
void autoControlViscosityPump();
|
||||
|
||||
void autoControlViscosityPumpForSelfCheck(int selfCheckCnt);
|
||||
|
||||
void pressureAdj();
|
||||
void autoControlHeater();
|
||||
void cycleValveRunForSelfCheck();
|
||||
|
||||
+9
-6
@@ -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
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user