修改排气流程

This commit is contained in:
2026-08-27 10:28:31 +08:00
parent c2ecabffc9
commit a99094c58a
13 changed files with 344 additions and 151 deletions
+81 -62
View File
@@ -1241,7 +1241,8 @@ void InkJetPrinter::timerHandler(void){
xxxm=1;
#endif
if(!sysPara->status.isPumpValveControledByHand)
++sysPara->status.viscosityDelayCnt;
sysPara->para.ReadFileErrorCnt=0; // 正常打开文件
// /opt/FriendlyARM/mini2440/rootfs_qtopia_qt4/usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib
@@ -1708,6 +1709,8 @@ void InkJetPrinter::timerHandler(void){
autoControlValvePump();
sysPara->devOp->mainInkCtrl();
sysPara->status.canRunAirPushing = true;
// 初始化粘度泵延迟计时,避免首次触发延迟过长
sysPara->status.viscosityDelayCnt = sysPara->para.viscosityPumpInterval*100 + 100;
if(sysPara->para.Reciclar)
test_flag = 1;
}
@@ -1720,7 +1723,7 @@ void InkJetPrinter::timerHandler(void){
}
else {
// 开机自检完成的前提下
if (!sysPara->status.airPushing || ui->tabMainWindow->m_2sFlag) {
if (!sysPara->status.airPushing) {
autoControlValvePump();
}
// 检测回收泵模式切换,切换时重置泄漏保护学习状态和软启动状态
@@ -2405,68 +2408,17 @@ void InkJetPrinter::autoControlValvePump(void)
if(!sysPara->status.isPumpValveControledByHand){
/*---------------------------------供墨阀--------------------------------------------*/
bool enableFlag = ((sysPara->status.statWarn & WARN_STATUS_INK_SWINT)
|| (sysPara->status.lastRecycleWarn && sysPara->para.RecycleWarnAction) // 2017.8.15版本回收故障关供墨阀问题
|| ( sysPara->status.HVFaultCloseEn ) //高压故障关闭墨线
)?false:true; //墨线开关
// if(enableFlag != sysPara->devOp->isInkValveOpen()){
// sysPara->devOp->controlInkValve(enableFlag); //供墨阀
// if(enableFlag == false){ //关闭
// sysPara->status.cycleValveOpenCntAfterSWintOff = MAX_CYCLEVALVE_OPEN_TIME_AFTER_SWITN_OFF;
// }
// }
if(enableFlag != sysPara->devOp->isInkValveOpen()){
if(enableFlag == false) { //关闭供墨阀的顺序 先开循环阀后关闭供墨阀
//#ifdef __AIR_RELEASE_OLD__ // 旧管路关闭墨线后 开粘度泵和循环阀一段时间
if (sysPara->status.cycleValveOpenCntAfterSWintOff == 0) {
sysPara->status.cycleValveOpenCntAfterSWintOff = MAX_CYCLEVALVE_OPEN_TIME_AFTER_SWITN_OFF;
}
if (sysPara->status.cycleValveOpenCntAfterSWintOff < 60) { //在准备关闭循环阀的时候关闭供墨阀
sysPara->devOp->controlInkValve(enableFlag); //关供墨
sysPara->devOp->controlInkValvePWM(enableFlag); //关供墨
}
//#else
// // 新管路直接关闭墨线
// sysPara->devOp->controlInkValve(enableFlag); //关供墨
//#endif
if(sysPara->status.selfCheckDone) {
autoControlInkValve();
autoControlCycleValve();
}
else { //开供墨阀
if(!sysPara->devOp->isReclaimPumpOpen()) //开供墨阀之前要判断回收泵有没有开,没开就提前打开
{
sysPara->devOp->controlReclaimPump(true, false); // 回收泵开
}
if(!ui->tabMainWindow->m_2sFlag)
{
sysPara->devOp->controlInkValve(enableFlag);
sysPara->devOp->controlInkValvePWM(enableFlag);
}
}
}
/*----------------------------------循环阀-------------------------------------------*/
if(!sysPara->status.selfCheckDone || (sysPara->status.needPowerOffTimerout && sysPara->para.gearPumpEnable)){
// if(!sysPara->devOp->isCycleValveOpen()){ //循环阀 //定时开机循环时隔膜泵不开关循环阀
// sysPara->devOp->controlCycleValve(true);
// }
cycleValveRunForSelfCheck();
if(sysPara->status.needPowerOffTimerout)
{
if(sysPara->devOp->isMixValveOpen()) { //
sysPara->devOp->controlMixValve(false);
}
}
}
else {
if(sysPara->status.cycleValveOpenCntAfterSWintOff){ // 开循环阀
if(!sysPara->devOp->isCycleValveOpen()){
sysPara->devOp->controlCycleValve(true);
}
sysPara->status.cycleValveOpenCntAfterSWintOff --;
}
else if(sysPara->devOp->isCycleValveOpen()){ // 关循环阀
// autoControlInkValveForSelfCheck();
// autoControlCycleValveForSelfCheck();
autoControlInkValve();
if(sysPara->devOp->isCycleValveOpen())
sysPara->devOp->controlCycleValve(false);
}
}
/*----------------------------------泄压阀-------------------------------------------*/
@@ -2614,7 +2566,7 @@ void InkJetPrinter::autoControlValvePump(void)
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)
@@ -2753,6 +2705,73 @@ void InkJetPrinter::autoControlValvePump(void)
}
}
}
void InkJetPrinter::autoControlInkValve()
{
bool enableFlag = ((sysPara->status.statWarn & WARN_STATUS_INK_SWINT)
|| (sysPara->status.lastRecycleWarn && sysPara->para.RecycleWarnAction) // 2017.8.15版本回收故障关供墨阀问题
|| ( sysPara->status.HVFaultCloseEn ) //高压故障关闭墨线
)?false:true; //墨线开关
if(enableFlag != sysPara->devOp->isInkValveOpen()){
if(enableFlag == false) { //关闭供墨阀的顺序 先开循环阀后关闭供墨阀
//#ifdef __AIR_RELEASE_OLD__ // 旧管路关闭墨线后 开粘度泵和循环阀一段时间
if (sysPara->status.cycleValveOpenCntAfterSWintOff == 0) {
sysPara->status.cycleValveOpenCntAfterSWintOff = MAX_CYCLEVALVE_OPEN_TIME_AFTER_SWITN_OFF;
}
if (sysPara->status.cycleValveOpenCntAfterSWintOff < 60) { //在准备关闭循环阀的时候关闭供墨阀
sysPara->devOp->controlInkValve(enableFlag); //关供墨
sysPara->devOp->controlInkValvePWM(enableFlag); //关供墨
}
}
else { //开供墨阀
if(!sysPara->devOp->isReclaimPumpOpen()) //开供墨阀之前要判断回收泵有没有开,没开就提前打开
{
sysPara->devOp->controlReclaimPump(true, false); // 回收泵开
}
if(!sysPara->status.airPushing)
{
sysPara->devOp->controlInkValve(enableFlag);
sysPara->devOp->controlInkValvePWM(enableFlag);
}
}
}
}
void InkJetPrinter::autoControlCycleValve()
{
if(!sysPara->status.selfCheckDone || (sysPara->status.needPowerOffTimerout && sysPara->para.gearPumpEnable)){
cycleValveRunForSelfCheck();
if(sysPara->status.needPowerOffTimerout)
{
if(sysPara->devOp->isMixValveOpen()) { //
sysPara->devOp->controlMixValve(false);
}
}
}
else {
if(sysPara->status.cycleValveOpenCntAfterSWintOff){ // 开循环阀
if(!sysPara->devOp->isCycleValveOpen()){
sysPara->devOp->controlCycleValve(true);
}
sysPara->status.cycleValveOpenCntAfterSWintOff --;
}
else if(sysPara->devOp->isCycleValveOpen()){ // 关循环阀
sysPara->devOp->controlCycleValve(false);
}
}
}
void InkJetPrinter::autoControlCycleValveForSelfCheck()
{
if(sysPara->status.selfCheckCnt < 100 * 10 && !sysPara->devOp->isCycleValveOpen()) {
sysPara->devOp->controlCycleValve(true);
}
else if(sysPara->status.selfCheckCnt >= 100 * 10 && sysPara->devOp->isCycleValveOpen()) {
sysPara->devOp->controlCycleValve(false);
}
}
//==========================
// 放在10ms的定时器运行,但和粘度泵工作周期一致
void InkJetPrinter::checkMixValveOpen(){