修改排气流程
This commit is contained in:
+2
-1
@@ -228,4 +228,5 @@ clear_svn.bat
|
|||||||
buge_*.*
|
buge_*.*
|
||||||
dbg.*
|
dbg.*
|
||||||
Public (2).h
|
Public (2).h
|
||||||
*_bak
|
*_bak
|
||||||
|
latest/
|
||||||
@@ -816,7 +816,10 @@ unsigned int DevOp::fpgaRdD(int addr,int len){
|
|||||||
|
|
||||||
|
|
||||||
void DevOp::controlReleaseValve(bool openFlag){
|
void DevOp::controlReleaseValve(bool openFlag){
|
||||||
ioctl(iocontrl, openFlag, 7);
|
|
||||||
|
if(!sysPara->para.gearPumpEnable)
|
||||||
|
ioctl(iocontrl, openFlag, 7);
|
||||||
|
|
||||||
releaseValveOpenFlag = openFlag;
|
releaseValveOpenFlag = openFlag;
|
||||||
pumpValveCtrl();
|
pumpValveCtrl();
|
||||||
}
|
}
|
||||||
|
|||||||
+81
-62
@@ -1241,7 +1241,8 @@ void InkJetPrinter::timerHandler(void){
|
|||||||
xxxm=1;
|
xxxm=1;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
if(!sysPara->status.isPumpValveControledByHand)
|
||||||
|
++sysPara->status.viscosityDelayCnt;
|
||||||
sysPara->para.ReadFileErrorCnt=0; // 正常打开文件
|
sysPara->para.ReadFileErrorCnt=0; // 正常打开文件
|
||||||
|
|
||||||
// /opt/FriendlyARM/mini2440/rootfs_qtopia_qt4/usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib
|
// /opt/FriendlyARM/mini2440/rootfs_qtopia_qt4/usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib
|
||||||
@@ -1708,6 +1709,8 @@ void InkJetPrinter::timerHandler(void){
|
|||||||
autoControlValvePump();
|
autoControlValvePump();
|
||||||
sysPara->devOp->mainInkCtrl();
|
sysPara->devOp->mainInkCtrl();
|
||||||
sysPara->status.canRunAirPushing = true;
|
sysPara->status.canRunAirPushing = true;
|
||||||
|
// 初始化粘度泵延迟计时,避免首次触发延迟过长
|
||||||
|
sysPara->status.viscosityDelayCnt = sysPara->para.viscosityPumpInterval*100 + 100;
|
||||||
if(sysPara->para.Reciclar)
|
if(sysPara->para.Reciclar)
|
||||||
test_flag = 1;
|
test_flag = 1;
|
||||||
}
|
}
|
||||||
@@ -1720,7 +1723,7 @@ void InkJetPrinter::timerHandler(void){
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// 开机自检完成的前提下
|
// 开机自检完成的前提下
|
||||||
if (!sysPara->status.airPushing || ui->tabMainWindow->m_2sFlag) {
|
if (!sysPara->status.airPushing) {
|
||||||
autoControlValvePump();
|
autoControlValvePump();
|
||||||
}
|
}
|
||||||
// 检测回收泵模式切换,切换时重置泄漏保护学习状态和软启动状态
|
// 检测回收泵模式切换,切换时重置泄漏保护学习状态和软启动状态
|
||||||
@@ -2405,68 +2408,17 @@ void InkJetPrinter::autoControlValvePump(void)
|
|||||||
if(!sysPara->status.isPumpValveControledByHand){
|
if(!sysPara->status.isPumpValveControledByHand){
|
||||||
|
|
||||||
/*---------------------------------供墨阀--------------------------------------------*/
|
/*---------------------------------供墨阀--------------------------------------------*/
|
||||||
bool enableFlag = ((sysPara->status.statWarn & WARN_STATUS_INK_SWINT)
|
if(sysPara->status.selfCheckDone) {
|
||||||
|| (sysPara->status.lastRecycleWarn && sysPara->para.RecycleWarnAction) // 2017.8.15版本回收故障关供墨阀问题
|
autoControlInkValve();
|
||||||
|| ( sysPara->status.HVFaultCloseEn ) //高压故障关闭墨线
|
autoControlCycleValve();
|
||||||
)?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
|
|
||||||
}
|
}
|
||||||
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 {
|
else {
|
||||||
if(sysPara->status.cycleValveOpenCntAfterSWintOff){ // 开循环阀
|
// autoControlInkValveForSelfCheck();
|
||||||
if(!sysPara->devOp->isCycleValveOpen()){
|
// autoControlCycleValveForSelfCheck();
|
||||||
sysPara->devOp->controlCycleValve(true);
|
autoControlInkValve();
|
||||||
}
|
|
||||||
sysPara->status.cycleValveOpenCntAfterSWintOff --;
|
if(sysPara->devOp->isCycleValveOpen())
|
||||||
}
|
|
||||||
else if(sysPara->devOp->isCycleValveOpen()){ // 关循环阀
|
|
||||||
sysPara->devOp->controlCycleValve(false);
|
sysPara->devOp->controlCycleValve(false);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*----------------------------------泄压阀-------------------------------------------*/
|
/*----------------------------------泄压阀-------------------------------------------*/
|
||||||
@@ -2614,7 +2566,7 @@ void InkJetPrinter::autoControlValvePump(void)
|
|||||||
if(sysPara->status.cycleValveOpenCntAfterSWintOff) { //关闭墨线的时候要提前开粘度泵
|
if(sysPara->status.cycleValveOpenCntAfterSWintOff) { //关闭墨线的时候要提前开粘度泵
|
||||||
sysPara->status.viscosityDelayCnt = sysPara->para.viscosityPumpInterval*100 + 100;
|
sysPara->status.viscosityDelayCnt = sysPara->para.viscosityPumpInterval*100 + 100;
|
||||||
}
|
}
|
||||||
++sysPara->status.viscosityDelayCnt;
|
|
||||||
int mixer_open_threshold = (105*sysPara->para.viscosity)/100;
|
int mixer_open_threshold = (105*sysPara->para.viscosity)/100;
|
||||||
int viscosity_faulty_threshold =(113*sysPara->para.viscosity)/100;
|
int viscosity_faulty_threshold =(113*sysPara->para.viscosity)/100;
|
||||||
if(sysPara->status.viscosityDelayCnt >= sysPara->para.viscosityPumpInterval*100 && flag == 0)
|
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的定时器运行,但和粘度泵工作周期一致
|
// 放在10ms的定时器运行,但和粘度泵工作周期一致
|
||||||
void InkJetPrinter::checkMixValveOpen(){
|
void InkJetPrinter::checkMixValveOpen(){
|
||||||
|
|||||||
+7
-1
@@ -75,6 +75,12 @@ private:
|
|||||||
QTime t1;
|
QTime t1;
|
||||||
void autoControlHeater();
|
void autoControlHeater();
|
||||||
void autoControlValvePump();
|
void autoControlValvePump();
|
||||||
|
|
||||||
|
void autoControlInkValve();
|
||||||
|
|
||||||
|
void autoControlCycleValve();
|
||||||
|
void autoControlCycleValveForSelfCheck();
|
||||||
|
|
||||||
void detectAndcontrolReclaimTank();
|
void detectAndcontrolReclaimTank();
|
||||||
void refreshModbusStatus(void);
|
void refreshModbusStatus(void);
|
||||||
void checkPressureControl();
|
void checkPressureControl();
|
||||||
@@ -92,7 +98,7 @@ Q_SIGNALS:
|
|||||||
void reclaimTankCloseDone();
|
void reclaimTankCloseDone();
|
||||||
void reclaimTankBlock(); //回收槽卡住
|
void reclaimTankBlock(); //回收槽卡住
|
||||||
//void changeEditMode(int);
|
//void changeEditMode(int);
|
||||||
void SpeedOver(int mode);
|
void SpeedOver(int mode);
|
||||||
void updateCnt1GroupDisp(bool);
|
void updateCnt1GroupDisp(bool);
|
||||||
void updataPara2UI();
|
void updataPara2UI();
|
||||||
void sendPicScene(PicScene* pPicScene);
|
void sendPicScene(PicScene* pPicScene);
|
||||||
|
|||||||
@@ -30,6 +30,11 @@ SysPara::SysPara(void):
|
|||||||
loadParaFromFile();
|
loadParaFromFile();
|
||||||
//qDebug("loadParaFromFile ok.");
|
//qDebug("loadParaFromFile ok.");
|
||||||
|
|
||||||
|
if(para.airPushDurationSec <= 0 || para.airPushDurationSec > 30) {
|
||||||
|
para.airPushDurationSec = 4;
|
||||||
|
saveParaToFile();
|
||||||
|
}
|
||||||
|
|
||||||
//para.HVFaultCloseEn= 0;
|
//para.HVFaultCloseEn= 0;
|
||||||
|
|
||||||
if(para.ReadFileErrorCnt<10) para.ReadFileErrorCnt++;
|
if(para.ReadFileErrorCnt<10) para.ReadFileErrorCnt++;
|
||||||
@@ -191,6 +196,7 @@ void SysPara::loadDefaultPara(){
|
|||||||
para.reclaimPumpPWMWidth = 50;//回收泵力度
|
para.reclaimPumpPWMWidth = 50;//回收泵力度
|
||||||
para.viscosityPumpInterval = 30;//粘度泵动作时间间隔
|
para.viscosityPumpInterval = 30;//粘度泵动作时间间隔
|
||||||
para.reclaimTankTime = 25;//回收槽电机当前开关时长(s)
|
para.reclaimTankTime = 25;//回收槽电机当前开关时长(s)
|
||||||
|
para.airPushDurationSec = 4; // 默认排气时长 4 秒
|
||||||
para.septalPostion = 500;//隔膜位置
|
para.septalPostion = 500;//隔膜位置
|
||||||
para.pressure = 520;//压力
|
para.pressure = 520;//压力
|
||||||
para.viscosity = 1200;//粘度设定值
|
para.viscosity = 1200;//粘度设定值
|
||||||
|
|||||||
@@ -573,7 +573,7 @@ typedef struct {
|
|||||||
int highVoltageLevel;
|
int highVoltageLevel;
|
||||||
int pressure;
|
int pressure;
|
||||||
int viscosityPumpInterval;
|
int viscosityPumpInterval;
|
||||||
int reclaimTankTime;
|
int reclaimTankTime;
|
||||||
int temperature;//喷头温度
|
int temperature;//喷头温度
|
||||||
int viscosity;
|
int viscosity;
|
||||||
int viscosityAdjust;
|
int viscosityAdjust;
|
||||||
@@ -716,6 +716,7 @@ typedef struct {
|
|||||||
unsigned int inkWarnTime;
|
unsigned int inkWarnTime;
|
||||||
unsigned int solventWarnDate;
|
unsigned int solventWarnDate;
|
||||||
unsigned int solventWarnTime;
|
unsigned int solventWarnTime;
|
||||||
|
int airPushDurationSec; // 排气时间,单位 秒, 可配置 1~30
|
||||||
/* */
|
/* */
|
||||||
// 1108Bytes
|
// 1108Bytes
|
||||||
}sysPara_t;
|
}sysPara_t;
|
||||||
|
|||||||
@@ -102,6 +102,8 @@ void SystemSetting::updateSysParaToUI(){
|
|||||||
if(sysPara->para.EditMode>SCENE)
|
if(sysPara->para.EditMode>SCENE)
|
||||||
sysPara->para.EditMode=TXTFILE;
|
sysPara->para.EditMode=TXTFILE;
|
||||||
ui->comboBoxEditMode->setCurrentIndex(sysPara->para.EditMode);
|
ui->comboBoxEditMode->setCurrentIndex(sysPara->para.EditMode);
|
||||||
|
|
||||||
|
ui->spinBoxAirPushDuration->setValue(sysPara->para.airPushDurationSec);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -149,6 +151,9 @@ void SystemSetting::applyUIPara(){
|
|||||||
sysPara->para.septalPostion = ui->spinBoxSeptalPostion->value();
|
sysPara->para.septalPostion = ui->spinBoxSeptalPostion->value();
|
||||||
quint16 diaphramOffset = 5*(ui->comboBoxDiaphramOffset->currentIndex()+1);
|
quint16 diaphramOffset = 5*(ui->comboBoxDiaphramOffset->currentIndex()+1);
|
||||||
sysPara->para.diaphramOffset = diaphramOffset;
|
sysPara->para.diaphramOffset = diaphramOffset;
|
||||||
|
|
||||||
|
sysPara->para.airPushDurationSec = ui->spinBoxAirPushDuration->value();
|
||||||
|
|
||||||
//sysPara->para.mixValveisNewVersion = ui->radioButtonMixValveNewVersion->isChecked();
|
//sysPara->para.mixValveisNewVersion = ui->radioButtonMixValveNewVersion->isChecked();
|
||||||
if(sysPara->devOp->writeFpgaPrintPara() != -1){
|
if(sysPara->devOp->writeFpgaPrintPara() != -1){
|
||||||
QMessageBox::information(this,tr("提示"),tr("应用成功"));
|
QMessageBox::information(this,tr("提示"),tr("应用成功"));
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
*/
|
*/
|
||||||
#define UP_PRINTER_MAJOR_VER 6
|
#define UP_PRINTER_MAJOR_VER 6
|
||||||
#define UP_PRINTER_MINOR_VER 8
|
#define UP_PRINTER_MINOR_VER 8
|
||||||
#define UP_PRINTER_RIVISION_VER 1
|
#define UP_PRINTER_RIVISION_VER 2
|
||||||
#define UP_PRINTER_STAGE_VER "Std"
|
#define UP_PRINTER_STAGE_VER "Std"
|
||||||
#define SUB_VERSION "WeiDL2"
|
#define SUB_VERSION "WeiDL2"
|
||||||
//#define UP_PRINTER_STAGE_VER "Beta"
|
//#define UP_PRINTER_STAGE_VER "Beta"
|
||||||
|
|||||||
@@ -1720,7 +1720,7 @@ void InkJetPrinter::timerHandler(void){
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// 开机自检完成的前提下
|
// 开机自检完成的前提下
|
||||||
if (!sysPara->status.airPushing || ui->tabMainWindow->m_2sFlag) {
|
if (!sysPara->status.airPushing) {
|
||||||
autoControlValvePump();
|
autoControlValvePump();
|
||||||
}
|
}
|
||||||
// 检测回收泵模式切换,切换时重置泄漏保护学习状态和软启动状态
|
// 检测回收泵模式切换,切换时重置泄漏保护学习状态和软启动状态
|
||||||
@@ -2820,7 +2820,7 @@ void InkJetPrinter::autoControlInkValve()
|
|||||||
{
|
{
|
||||||
sysPara->devOp->controlReclaimPump(true, false); // 回收泵开
|
sysPara->devOp->controlReclaimPump(true, false); // 回收泵开
|
||||||
}
|
}
|
||||||
if(!ui->tabMainWindow->m_2sFlag)
|
if(!sysPara->status.airPushing)
|
||||||
{
|
{
|
||||||
sysPara->devOp->controlInkValve(enableFlag);
|
sysPara->devOp->controlInkValve(enableFlag);
|
||||||
sysPara->devOp->controlInkValvePWM(enableFlag);
|
sysPara->devOp->controlInkValvePWM(enableFlag);
|
||||||
|
|||||||
+24
-81
@@ -225,7 +225,7 @@ MainWindow::MainWindow(QWidget *parent) :
|
|||||||
qDebug()<<"edit geometry x:"<<ui->stackedWidgetText->geometry().x();
|
qDebug()<<"edit geometry x:"<<ui->stackedWidgetText->geometry().x();
|
||||||
qDebug()<<"edit geometry y:"<<ui->stackedWidgetText->mapToGlobal(ui->stackedWidgetText->pos());
|
qDebug()<<"edit geometry y:"<<ui->stackedWidgetText->mapToGlobal(ui->stackedWidgetText->pos());
|
||||||
#endif
|
#endif
|
||||||
m_2sFlag = false;
|
|
||||||
moveToThread(&ShowThead);
|
moveToThread(&ShowThead);
|
||||||
//connect(&ShowThead, SIGNAL(started()), this, SLOT(onShowAndHideItem()),Qt::QueuedConnection);
|
//connect(&ShowThead, SIGNAL(started()), this, SLOT(onShowAndHideItem()),Qt::QueuedConnection);
|
||||||
ShowThead.start();
|
ShowThead.start();
|
||||||
@@ -292,18 +292,7 @@ void MainWindow::displayTime()
|
|||||||
preCleanUP=CleanUPEn;
|
preCleanUP=CleanUPEn;
|
||||||
|
|
||||||
//static int delayCount2 = 0;
|
//static int delayCount2 = 0;
|
||||||
if(m_2sFlag)
|
|
||||||
{
|
|
||||||
//++delayCount2;
|
|
||||||
//if(delayCount2 %10 ==5)
|
|
||||||
{
|
|
||||||
|
|
||||||
sysPara->devOp->controlInkValve(!sysPara->devOp->isInkValveOpen()); //控制供墨阀开关
|
|
||||||
sysPara->devOp->controlInkValvePWM(!sysPara->devOp->isInkValveOpen1()); //控制供墨阀开关
|
|
||||||
//setRunStatus(tr("我已关闭供墨阀"));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if(sysPara->status.boardTemp >= sysPara->para.FanTemperature)
|
if(sysPara->status.boardTemp >= sysPara->para.FanTemperature)
|
||||||
{
|
{
|
||||||
@@ -2448,84 +2437,38 @@ void MainWindow::enablePrintButton(bool enable){
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int mainInkPumpCtrlStatus = 0;
|
static int mainInkPumpCtrlStatus = 0;
|
||||||
static int mainInkPumpCtrlCnt = 0;
|
// airPushing now uses ms unit (timer 100ms -> +=100)
|
||||||
//100ms 为单位
|
|
||||||
void MainWindow::airPushingProcess()
|
void MainWindow::airPushingProcess()
|
||||||
{
|
{
|
||||||
if(sysPara){
|
if(sysPara){
|
||||||
if (sysPara->status.airPushing) {
|
if (sysPara->status.airPushing) {
|
||||||
//qDebug()<< "start airPushingProcess "<<sysPara->status.airPushingOnTime;
|
|
||||||
// 执行排气 7 秒
|
|
||||||
setRunStatus(tr("正在排气 ..............."));
|
setRunStatus(tr("正在排气 ..............."));
|
||||||
++sysPara->status.airPushingOnTime;
|
sysPara->status.airPushingOnTime += 100;
|
||||||
if(sysPara->status.airPushingOnTime >= 50) {
|
|
||||||
static int delayCount = 0;
|
|
||||||
++delayCount;
|
|
||||||
m_2sFlag = true;
|
|
||||||
//sysPara->devOp->controlInkValve(false); //关供墨阀
|
|
||||||
if(delayCount >= 40)
|
|
||||||
{
|
|
||||||
m_2sFlag = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(delayCount >= 60)
|
|
||||||
{
|
|
||||||
delayCount = 0;
|
|
||||||
airPushTimer->stop();
|
|
||||||
sysPara->devOp->controlViscosityPump(false);
|
|
||||||
reclaimTanOpen();
|
|
||||||
//qDebug()<< "start stop";
|
|
||||||
sysPara->status.airPushingDone = 1;
|
|
||||||
sysPara->status.airPushing = 0;
|
|
||||||
sysPara->status.airPushingOnTime = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if(sysPara->para.airPushDurationSec <= 0 || sysPara->para.airPushDurationSec > 30) {
|
||||||
|
sysPara->para.airPushDurationSec = 4;
|
||||||
|
sysPara->saveParaToFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 延迟 500ms 后才开回收槽,正式结束排气阶段
|
||||||
|
if(sysPara->status.airPushingOnTime >= sysPara->para.airPushDurationSec * 1000 + 500){
|
||||||
|
reclaimTanOpen();
|
||||||
|
sysPara->status.airPushingDone = 1;
|
||||||
|
sysPara->status.airPushing = 0;
|
||||||
|
sysPara->status.airPushingOnTime = 0;
|
||||||
|
airPushTimer->stop();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sysPara->status.airPushingOnTime%10 >= 5) {
|
// 排气时间到:关粘度泵、关循环阀、开回收泵
|
||||||
sysPara->devOp->controlCycleValve(true);
|
if(sysPara->status.airPushingOnTime >= sysPara->para.airPushDurationSec * 1000){
|
||||||
}
|
sysPara->devOp->controlViscosityPump(false);
|
||||||
else {
|
|
||||||
sysPara->devOp->controlCycleValve(false);
|
sysPara->devOp->controlCycleValve(false);
|
||||||
}
|
|
||||||
if (mainInkPumpCtrlStatus == 0) {
|
if(!sysPara->devOp->isReclaimPumpOpen())
|
||||||
if(++mainInkPumpCtrlCnt > 15) { //100ms 为单位, 时间到关闭
|
sysPara->devOp->controlReclaimPump(true, false);
|
||||||
sysPara->devOp->controlMainInkPump(false);
|
|
||||||
sysPara->devOp->mainInkCtrl();
|
return;
|
||||||
mainInkPumpCtrlStatus = 1;
|
|
||||||
mainInkPumpCtrlCnt = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (mainInkPumpCtrlStatus == 1) { //100ms 为单位, 时间到开启
|
|
||||||
sysPara->devOp->controlMainInkPump(true);
|
|
||||||
sysPara->devOp->mainInkCtrl();
|
|
||||||
mainInkPumpCtrlStatus = 2;
|
|
||||||
}
|
|
||||||
else if (mainInkPumpCtrlStatus == 2) {
|
|
||||||
if(++mainInkPumpCtrlCnt>7) {
|
|
||||||
sysPara->devOp->controlMainInkPump(false);
|
|
||||||
sysPara->devOp->mainInkCtrl();
|
|
||||||
mainInkPumpCtrlStatus = 3;
|
|
||||||
mainInkPumpCtrlCnt = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (mainInkPumpCtrlStatus == 3) {
|
|
||||||
if(++mainInkPumpCtrlCnt>8) {
|
|
||||||
sysPara->devOp->controlMainInkPump(true);
|
|
||||||
sysPara->devOp->mainInkCtrl();
|
|
||||||
mainInkPumpCtrlStatus = 4;
|
|
||||||
mainInkPumpCtrlCnt = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (mainInkPumpCtrlStatus == 4) {
|
|
||||||
if(++mainInkPumpCtrlCnt>8) {
|
|
||||||
sysPara->devOp->controlMainInkPump(false);
|
|
||||||
sysPara->devOp->mainInkCtrl();
|
|
||||||
mainInkPumpCtrlStatus = 3;
|
|
||||||
mainInkPumpCtrlCnt = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2576,7 +2519,7 @@ void MainWindow::on_pushButtonReclaimTanOpen_pressed()
|
|||||||
// 粘度泵跟随循环阀动作
|
// 粘度泵跟随循环阀动作
|
||||||
sysPara->devOp->controlViscosityPump(true);
|
sysPara->devOp->controlViscosityPump(true);
|
||||||
#else
|
#else
|
||||||
sysPara->devOp->controlViscosityPump(false);//关粘度泵
|
sysPara->devOp->controlViscosityPump(true);//开粘度泵
|
||||||
#endif
|
#endif
|
||||||
sysPara->devOp->controlMainInkPump(true);//主墨泵敞开
|
sysPara->devOp->controlMainInkPump(true);//主墨泵敞开
|
||||||
sysPara->devOp->mainInkCtrl();
|
sysPara->devOp->mainInkCtrl();
|
||||||
|
|||||||
@@ -86,7 +86,6 @@ public:
|
|||||||
QString strWarring,strTitle;
|
QString strWarring,strTitle;
|
||||||
QMessageBox *msgtest;
|
QMessageBox *msgtest;
|
||||||
void updateTotalCnt(int en);
|
void updateTotalCnt(int en);
|
||||||
bool m_2sFlag;
|
|
||||||
QTimer *timerShowItem;
|
QTimer *timerShowItem;
|
||||||
void UpdateDateTimeQRCode(QString strContent);
|
void UpdateDateTimeQRCode(QString strContent);
|
||||||
|
|
||||||
|
|||||||
@@ -531,6 +531,26 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="10" column="1">
|
||||||
|
<widget class="QLabel" name="lb_airPushDuration">
|
||||||
|
<property name="text">
|
||||||
|
<string>排气时间:</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="10" column="2">
|
||||||
|
<widget class="QSpinBox" name="spinBoxAirPushDuration">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>37</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="3" column="6">
|
<item row="3" column="6">
|
||||||
<widget class="QLabel" name="labelTemperature">
|
<widget class="QLabel" name="labelTemperature">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
|||||||
+190
@@ -0,0 +1,190 @@
|
|||||||
|
排气流程迁移方案
|
||||||
|
一、背景概述
|
||||||
|
将 latest/mainwindow.cpp(新项目)中的排气流程逻辑迁移到当前项目 mainwindow.cpp(旧项目)的 airPushingProcess() 函数中。
|
||||||
|
|
||||||
|
项目 文件位置 行号
|
||||||
|
源(新项目) latest/mainwindow.cpp L2354-2387
|
||||||
|
目标(旧项目) mainwindow.cpp L2456-2530
|
||||||
|
二、新旧流程对比分析
|
||||||
|
2.1 计时器累加方式
|
||||||
|
维度 旧流程 新流程
|
||||||
|
累加方式 ++airPushingOnTime(计 tick 数) airPushingOnTime += 100(计毫秒)
|
||||||
|
1 tick 含义 100ms 100ms
|
||||||
|
迁移动作:将 ++ 改为 += 100,所有时间阈值需同步换算。
|
||||||
|
|
||||||
|
2.2 排气时长控制
|
||||||
|
维度 旧流程 新流程
|
||||||
|
时长控制 硬编码(~11s 总时长) 可配置参数 airPushDurationSec
|
||||||
|
参数定义 无 SysPara.h para 结构体中 int airPushDurationSec
|
||||||
|
默认值 无 4 秒
|
||||||
|
取值范围 无 1~30 秒
|
||||||
|
UI 配置 无 SystemSetting 中 spinBoxAirPushDuration
|
||||||
|
迁移动作:
|
||||||
|
|
||||||
|
在 SysPara.h 的 para 结构体中添加 int airPushDurationSec;
|
||||||
|
在 SysPara.cpp 初始化中设置默认值 4
|
||||||
|
在 SystemSetting 中添加排气时长 UI 控件
|
||||||
|
在 airPushingProcess() 中添加参数合法性校验
|
||||||
|
2.3 排气阶段划分
|
||||||
|
旧流程(3 阶段):
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
阶段1(0~4.9s,tick 0~49):
|
||||||
|
├── 循环阀:每 500ms 交替开关
|
||||||
|
└── 主墨泵:5 状态状态机循环
|
||||||
|
|
||||||
|
阶段2(5.0~10.9s,tick 50~109):
|
||||||
|
├── static delayCount 累加
|
||||||
|
├── m_2sFlag = true(前 40 tick),后 false
|
||||||
|
└── delayCount >= 60 时 → 结束排气
|
||||||
|
|
||||||
|
阶段3(tick >= 110):停止 timer,关粘度泵,开回收槽
|
||||||
|
新流程(2 阶段):
|
||||||
|
|
||||||
|
text
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
阶段1(0 ~ airPushDurationSec 秒):
|
||||||
|
└── 循环阀保持 ON,主墨泵保持 ON(触发入口设置)
|
||||||
|
|
||||||
|
阶段2-子阶段A(>= airPushDurationSec 秒):
|
||||||
|
├── 关粘度泵、关循环阀
|
||||||
|
└── 开回收泵
|
||||||
|
|
||||||
|
阶段2-子阶段B(>= airPushDurationSec + 0.5 秒):
|
||||||
|
├── 开回收槽 reclaimTanOpen()
|
||||||
|
└── 标记完成,停止 timer
|
||||||
|
迁移动作:用新流程的 2 阶段替换旧流程的 3 阶段。
|
||||||
|
|
||||||
|
2.4 循环阀控制
|
||||||
|
维度 旧流程 新流程
|
||||||
|
排气期间 每 500ms 交替开关 保持 ON
|
||||||
|
排气结束 不处理 显式关闭
|
||||||
|
迁移动作:删除 toggle 逻辑,排气时间到时显式关闭循环阀。
|
||||||
|
|
||||||
|
2.5 主墨泵控制(mainInkPumpCtrl 状态机)
|
||||||
|
旧流程:airPushingProcess() 内有 5 状态循环开关主墨泵
|
||||||
|
新流程:已移除,主墨泵由触发入口保持 ON
|
||||||
|
迁移动作:从 airPushingProcess() 中删除整个 mainInkPumpCtrl 状态机
|
||||||
|
⚠️ 旧项目 SystemManage.cpp 的 autoCleanTimerHandler() (L885-946) 也有一套 mainInkPumpCtrl 逻辑,用于 pushButtonPushAir 独立排气流程。如果该功能需保留,则不应删除那套逻辑。
|
||||||
|
|
||||||
|
2.6 m_2sFlag 标志
|
||||||
|
旧流程:在排气延迟阶段设置,影响 InkJetPrinter.cpp 喷墨行为
|
||||||
|
新流程:未使用
|
||||||
|
迁移动作:删除相关设置逻辑
|
||||||
|
⚠️ InkJetPrinter.cpp L1723、L2729 仍引用 m_2sFlag,需确认是否改用 airPushing 状态直接判断。
|
||||||
|
|
||||||
|
2.7 粘度泵控制
|
||||||
|
维度 旧流程 新流程
|
||||||
|
触发入口 controlViscosityPump(false) 关 controlViscosityPump(true) 开
|
||||||
|
迁移动作:将 on_pushButtonReclaimTanOpen_pressed() 中的粘度泵控制改为 true。
|
||||||
|
|
||||||
|
2.8 static 变量
|
||||||
|
变量 旧流程 新流程
|
||||||
|
static int delayCount 函数内 无
|
||||||
|
static int mainInkPumpCtrlStatus/Cnt 文件级,使用中 文件级,已废弃
|
||||||
|
三、数据结构变更
|
||||||
|
3.1 SysPara.h — 在 para 结构体中新增:
|
||||||
|
cpp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int airPushDurationSec; // 排气时间,单位 秒
|
||||||
|
3.2 SysPara.cpp — 初始化默认值:
|
||||||
|
cpp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
para.airPushDurationSec = 4;
|
||||||
|
if(para.airPushDurationSec == 0)
|
||||||
|
para.airPushDurationSec = 4;
|
||||||
|
3.3 SystemSetting — 添加 UI 控件 spinBoxAirPushDuration(范围 1~30,默认 4)
|
||||||
|
四、迁移步骤
|
||||||
|
步骤 1:数据结构准备
|
||||||
|
序号 文件 修改内容
|
||||||
|
1.1 SysPara.h 添加 int airPushDurationSec;
|
||||||
|
1.2 SysPara.cpp 初始化默认值 4
|
||||||
|
1.3 SysPara.cpp 添加零值保护
|
||||||
|
1.4 SystemSetting 添加 UI 配置控件
|
||||||
|
步骤 2:修改触发入口
|
||||||
|
序号 文件 修改内容
|
||||||
|
2.1 mainwindow.cpp controlViscosityPump(false) → true
|
||||||
|
步骤 3:替换 airPushingProcess() 核心逻辑
|
||||||
|
序号 修改内容
|
||||||
|
3.1 ++airPushingOnTime → airPushingOnTime += 100
|
||||||
|
3.2 添加 airPushDurationSec 参数校验
|
||||||
|
3.3 删除循环阀 toggle 逻辑
|
||||||
|
3.4 删除 mainInkPumpCtrl 状态机
|
||||||
|
3.5 删除 delayCount 和 m_2sFlag 逻辑
|
||||||
|
3.6 替换为新的两阶段结束逻辑
|
||||||
|
步骤 4:清理
|
||||||
|
序号 修改内容
|
||||||
|
4.1 删除文件级 static int mainInkPumpCtrlStatus/Cnt(如不再需要)
|
||||||
|
4.2 删除 static int delayCount
|
||||||
|
五、新 airPushingProcess() 代码
|
||||||
|
cpp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void MainWindow::airPushingProcess()
|
||||||
|
{
|
||||||
|
if(sysPara){
|
||||||
|
if (sysPara->status.airPushing) {
|
||||||
|
setRunStatus(tr("正在排气 ..............."));
|
||||||
|
sysPara->status.airPushingOnTime += 100;
|
||||||
|
|
||||||
|
if(sysPara->para.airPushDurationSec <= 0 || sysPara->para.airPushDurationSec > 30) {
|
||||||
|
sysPara->para.airPushDurationSec = 4;
|
||||||
|
sysPara->saveParaToFile();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 延迟 500ms 后才开回收槽,正式结束排气阶段
|
||||||
|
if(sysPara->status.airPushingOnTime >= sysPara->para.airPushDurationSec * 1000 + 500){
|
||||||
|
reclaimTanOpen();
|
||||||
|
sysPara->status.airPushingDone = 1;
|
||||||
|
sysPara->status.airPushing = 0;
|
||||||
|
sysPara->status.airPushingOnTime = 0;
|
||||||
|
airPushTimer->stop();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 排气时间到:关粘度泵、关循环阀、开回收泵
|
||||||
|
if(sysPara->status.airPushingOnTime >= sysPara->para.airPushDurationSec * 1000){
|
||||||
|
sysPara->devOp->controlViscosityPump(false);
|
||||||
|
sysPara->devOp->controlCycleValve(false);
|
||||||
|
|
||||||
|
if(!sysPara->devOp->isReclaimPumpOpen())
|
||||||
|
sysPara->devOp->controlReclaimPump(true, false);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
六、风险评估
|
||||||
|
高风险
|
||||||
|
风险 说明 缓解措施
|
||||||
|
m_2sFlag 移除 InkJetPrinter.cpp L1723/L2729 依赖此标志 改用 airPushing 状态判断
|
||||||
|
SystemManage 双入口 SystemManage::pushButtonPushAir 是另一套排气流程 (90ms timer) 确认两套是否需要统一
|
||||||
|
中风险
|
||||||
|
风险 说明 缓解措施
|
||||||
|
mainInkPumpCtrl 移除 主墨泵从状态机→常开 确认新管路硬件是否支持
|
||||||
|
循环阀 toggle 移除 循环阀从交替→常开 确认新管路硬件是否支持
|
||||||
|
粘度泵策略变化 OFF→ON 确认硬件管路版本
|
||||||
|
低风险
|
||||||
|
风险 说明
|
||||||
|
计时单位 tick→ms 检查所有引用 airPushingOnTime 的地方
|
||||||
|
排气时长可配置 需同步更新 UI
|
||||||
|
七、建议
|
||||||
|
优先确认硬件管路版本:新旧流程粘度泵、循环阀、主墨泵的策略差异取决于硬件管路设计,需与硬件工程师确认。
|
||||||
|
|
||||||
|
统一排气入口:建议评估 SystemManage::on_pushButtonPushAir_pressed() 和 MainWindow::on_pushButtonReclaimTanOpen_pressed() 是否可以合并为一套流程。
|
||||||
|
|
||||||
|
分步迁移:先迁移核心 airPushingProcess(),再处理 SystemManage,最后统一 UI。
|
||||||
|
|
||||||
|
测试验证:在实际设备上测试正常排气、中断恢复、回收槽联动、喷墨行为。
|
||||||
|
|
||||||
Reference in New Issue
Block a user