hlp:修改版本号规则
This commit is contained in:
@@ -2700,23 +2700,30 @@ int DevOp::writeFpgaPrintPara(bool ignoreWarn){
|
|||||||
QMessageBox::critical(NULL,tr("错误"),tr("在同步计米的情况下无打印串或显示区域为零"));
|
QMessageBox::critical(NULL,tr("错误"),tr("在同步计米的情况下无打印串或显示区域为零"));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(currPrintCol && type == 2){
|
// if(currPrintCol && type == 2){
|
||||||
int synNumPerCol = displayAreaTotalSynNum*(1<<8)/(currPrintCol*(1 + sysPara->para.charBold));
|
// int synNumPerCol = displayAreaTotalSynNum*(1<<8)/(currPrintCol*(1 + sysPara->para.charBold));
|
||||||
//加宽的时候,相当于列数翻倍
|
// //加宽的时候,相当于列数翻倍
|
||||||
if(displayAreaTotalSynNum >= (1<<24)){
|
// if(displayAreaTotalSynNum >= (1<<24)){
|
||||||
if(!ignoreWarn)
|
// if(!ignoreWarn)
|
||||||
QMessageBox::critical(NULL,tr("错误"),tr("在同步计米的情况下喷印同步脉冲数过多,请检查你的配置"));
|
// QMessageBox::critical(NULL,tr("错误"),tr("在同步计米的情况下喷印同步脉冲数过多,请检查你的配置"));
|
||||||
}
|
// }
|
||||||
if(synNumPerCol >= (1<< 16)){
|
// if(synNumPerCol >= (1<< 16)){
|
||||||
if(!ignoreWarn)
|
// if(!ignoreWarn)
|
||||||
QMessageBox::critical(NULL,tr("警告"),tr("喷印字符串太短,请增加字符串长度或在打印设置中减少喷印长度"));
|
// QMessageBox::critical(NULL,tr("警告"),tr("喷印字符串太短,请增加字符串长度或在打印设置中减少喷印长度"));
|
||||||
}
|
// }
|
||||||
if(synNumPerCol < 5){
|
// if(synNumPerCol < 5){
|
||||||
if(!ignoreWarn)
|
// if(!ignoreWarn)
|
||||||
QMessageBox::critical(NULL,tr("警告"),tr("喷印长度太短,请减少字符串长度或在打印设置中增加喷印长度"));
|
// QMessageBox::critical(NULL,tr("警告"),tr("喷印长度太短,请减少字符串长度或在打印设置中增加喷印长度"));
|
||||||
}
|
// }
|
||||||
sysPara->para.synNumPerCol = synNumPerCol;
|
// sysPara->para.synNumPerCol = synNumPerCol;
|
||||||
|
|
||||||
|
// sysPara->para.synNumPerCol = sysPara->para.printColDelay << 8;
|
||||||
|
// }/
|
||||||
|
|
||||||
|
if(currPrintCol){
|
||||||
|
sysPara->para.synNumPerCol = sysPara->para.printColDelay << 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(sysPara->para.synPulseNumPerMm<1 || sysPara->para.synPulseNumPerMm>50) {
|
if(sysPara->para.synPulseNumPerMm<1 || sysPara->para.synPulseNumPerMm>50) {
|
||||||
}
|
}
|
||||||
sysPara->para.synPulsePerMmX8 = (unsigned short)((unsigned int)sysPara->para.synPulseNumPerMm <<8);
|
sysPara->para.synPulsePerMmX8 = (unsigned short)((unsigned int)sysPara->para.synPulseNumPerMm <<8);
|
||||||
@@ -3377,6 +3384,8 @@ void DevOp::printCtrl2(int cmd){
|
|||||||
}
|
}
|
||||||
|
|
||||||
unsigned int DevOp::readFpgaVersionNum(){
|
unsigned int DevOp::readFpgaVersionNum(){
|
||||||
|
if (sysPara == NULL) return 0;
|
||||||
|
|
||||||
fpgaRd(0x00EC,&sysPara->status.FPGAChipType,1);
|
fpgaRd(0x00EC,&sysPara->status.FPGAChipType,1);
|
||||||
fpgaRd(0x00FE,(unsigned char *)&sysPara->status.fpgaVersionNum,2);
|
fpgaRd(0x00FE,(unsigned char *)&sysPara->status.fpgaVersionNum,2);
|
||||||
fpgaRd(READ_BUILD_DAT, (unsigned char *)&sysPara->status.build_dat.builTime, sizeof(sysPara->status.build_dat.builTime));
|
fpgaRd(READ_BUILD_DAT, (unsigned char *)&sysPara->status.build_dat.builTime, sizeof(sysPara->status.build_dat.builTime));
|
||||||
|
|||||||
+239
-201
@@ -26,7 +26,7 @@ InkJetPrinter::InkJetPrinter(QWidget *parent) :
|
|||||||
ui(new Ui::InkJetPrinter)
|
ui(new Ui::InkJetPrinter)
|
||||||
{
|
{
|
||||||
// 隐藏系统任务栏,隐藏后,如果需要激活任务栏,则需要呼出QtUI中的任意弹出式、非全屏窗口,然后使用鼠标将光标移动至屏幕最左侧或最顶部则可以呼出任务栏
|
// 隐藏系统任务栏,隐藏后,如果需要激活任务栏,则需要呼出QtUI中的任意弹出式、非全屏窗口,然后使用鼠标将光标移动至屏幕最左侧或最顶部则可以呼出任务栏
|
||||||
int ret = system("xfconf-query -c xfce4-panel -p /panels/panel-1/autohide-behavior -s 2");
|
int ret = system("xfconf-query -c xfce4-panel -p /panels/panel-0/autohide-behavior -s 2");
|
||||||
qInfo() << "Hide system panel ret:" << ret;
|
qInfo() << "Hide system panel ret:" << ret;
|
||||||
|
|
||||||
// system("ifconfig eth1 down");
|
// system("ifconfig eth1 down");
|
||||||
@@ -52,14 +52,13 @@ InkJetPrinter::InkJetPrinter(QWidget *parent) :
|
|||||||
m_serialThreadFPGA = new QThread;
|
m_serialThreadFPGA = new QThread;
|
||||||
serialFPGA = new Serial("/dev/ttyAS5");
|
serialFPGA = new Serial("/dev/ttyAS5");
|
||||||
|
|
||||||
connect(m_serialThreadFPGA,&QThread::started,serialFPGA,&Serial::startInitSlot);
|
|
||||||
|
|
||||||
serialFPGA->moveToThread(m_serialThreadFPGA);
|
serialFPGA->moveToThread(m_serialThreadFPGA);
|
||||||
connect(serialFPGA,SIGNAL(sendQueueData(int,int,unsigned char*,int,int)),sysPara->devOp,SLOT(resendFPGADate(int,int,unsigned char*,int,int)));
|
connect(serialFPGA,SIGNAL(sendQueueData(int,int,unsigned char*,int,int)),sysPara->devOp,SLOT(resendFPGADate(int,int,unsigned char*,int,int)));
|
||||||
connect(serialFPGA,SIGNAL(resendFPGAData(int,int,unsigned char*,int,int)),sysPara->devOp,SLOT(resendFPGADate(int,int,unsigned char*,int,int)));
|
connect(serialFPGA,SIGNAL(resendFPGAData(int,int,unsigned char*,int,int)),sysPara->devOp,SLOT(resendFPGADate(int,int,unsigned char*,int,int)));
|
||||||
connect(sysPara->devOp,SIGNAL(sendSerialDataToFPGA(int,int,unsigned char*,int,int)),serialFPGA,SLOT(sendSerialData(int,int,unsigned char*,int,int)),Qt::QueuedConnection);
|
connect(sysPara->devOp,SIGNAL(sendSerialDataToFPGA(int,int,unsigned char*,int,int)),serialFPGA,SLOT(sendSerialData(int,int,unsigned char*,int,int)),Qt::QueuedConnection);
|
||||||
connect(serialFPGA,SIGNAL(getFPGAVersion(uint)),this,SLOT(saveFPGAVersionNum(uint)));
|
connect(serialFPGA,SIGNAL(getFPGAVersion(uint)),this,SLOT(saveFPGAVersionNum(uint)));
|
||||||
|
connect(m_serialThreadFPGA,&QThread::started,serialFPGA,&Serial::startInitSlot);
|
||||||
connect(serialFPGA,SIGNAL(stopSendData(bool)),this,SLOT(stopSendFPGAData(bool)));
|
connect(serialFPGA,SIGNAL(stopSendData(bool)),this,SLOT(stopSendFPGAData(bool)));
|
||||||
connect(serialFPGA,SIGNAL(getFPGAPhaseDetectHighTm(unsigned char*)),this,SLOT(saveFPGAPhaseDetectHighTm(unsigned char*)));
|
connect(serialFPGA,SIGNAL(getFPGAPhaseDetectHighTm(unsigned char*)),this,SLOT(saveFPGAPhaseDetectHighTm(unsigned char*)));
|
||||||
connect(serialFPGA,SIGNAL(getFPGAStatus(unsigned char*)),this,SLOT(saveFPGAStatus(unsigned char*)));
|
connect(serialFPGA,SIGNAL(getFPGAStatus(unsigned char*)),this,SLOT(saveFPGAStatus(unsigned char*)));
|
||||||
@@ -75,9 +74,6 @@ InkJetPrinter::InkJetPrinter(QWidget *parent) :
|
|||||||
|
|
||||||
m_serialThreadSTM32 = new QThread();
|
m_serialThreadSTM32 = new QThread();
|
||||||
serialSTM32 = new Serial("/dev/ttyAS2");
|
serialSTM32 = new Serial("/dev/ttyAS2");
|
||||||
|
|
||||||
connect(m_serialThreadSTM32,&QThread::started,serialSTM32,&Serial::startInitSlot);
|
|
||||||
|
|
||||||
serialSTM32->moveToThread(m_serialThreadSTM32);
|
serialSTM32->moveToThread(m_serialThreadSTM32);
|
||||||
connect(serialSTM32,SIGNAL(sendQueueData(int,int,unsigned char*,int,int)),sysPara->devOp,SLOT(resendSTM32Date(int,int,unsigned char*,int,int)));
|
connect(serialSTM32,SIGNAL(sendQueueData(int,int,unsigned char*,int,int)),sysPara->devOp,SLOT(resendSTM32Date(int,int,unsigned char*,int,int)));
|
||||||
connect(sysPara->devOp,SIGNAL(sendSerialDataToSTM32(int,int,unsigned char*,int,int)),serialSTM32,SLOT(sendSerialData(int,int,unsigned char*,int,int)));
|
connect(sysPara->devOp,SIGNAL(sendSerialDataToSTM32(int,int,unsigned char*,int,int)),serialSTM32,SLOT(sendSerialData(int,int,unsigned char*,int,int)));
|
||||||
@@ -88,7 +84,7 @@ InkJetPrinter::InkJetPrinter(QWidget *parent) :
|
|||||||
connect(serialSTM32,SIGNAL(getSTM32Time(unsigned char*)),this,SLOT(saveSTM32Time(unsigned char*)));
|
connect(serialSTM32,SIGNAL(getSTM32Time(unsigned char*)),this,SLOT(saveSTM32Time(unsigned char*)));
|
||||||
connect(serialSTM32,SIGNAL(stopSendData(bool)),this,SLOT(stopSendSTM32Data(bool)));
|
connect(serialSTM32,SIGNAL(stopSendData(bool)),this,SLOT(stopSendSTM32Data(bool)));
|
||||||
connect(serialSTM32,SIGNAL(powerOffReady()),ui->tabMainWindow,SLOT(powerOffConfirmed()));
|
connect(serialSTM32,SIGNAL(powerOffReady()),ui->tabMainWindow,SLOT(powerOffConfirmed()));
|
||||||
|
connect(m_serialThreadSTM32,&QThread::started,serialSTM32,&Serial::startInitSlot);
|
||||||
connect(serialSTM32,SIGNAL(queueSizeSTM32(int)),ui->tabMainWindow,SLOT(showSTM32queuesize(int)));
|
connect(serialSTM32,SIGNAL(queueSizeSTM32(int)),ui->tabMainWindow,SLOT(showSTM32queuesize(int)));
|
||||||
connect(ui->tabSystemManage,SIGNAL(upgradeSTM32(QString)),serialSTM32,SLOT(upgradeSTM32File(QString)));
|
connect(ui->tabSystemManage,SIGNAL(upgradeSTM32(QString)),serialSTM32,SLOT(upgradeSTM32File(QString)));
|
||||||
connect(ui->tabSystemManage,SIGNAL(enableClick(bool)),this,SLOT(enableInkJetTabClick(bool)));
|
connect(ui->tabSystemManage,SIGNAL(enableClick(bool)),this,SLOT(enableInkJetTabClick(bool)));
|
||||||
@@ -187,11 +183,9 @@ InkJetPrinter::InkJetPrinter(QWidget *parent) :
|
|||||||
connect(ui->tabSystemSetting,SIGNAL(pressureAdjust()),this,SLOT(pressureAdjustForsystemseeting()));
|
connect(ui->tabSystemSetting,SIGNAL(pressureAdjust()),this,SLOT(pressureAdjustForsystemseeting()));
|
||||||
|
|
||||||
#ifdef COUNTER1_BY_GROUP /* 分段计米 */
|
#ifdef COUNTER1_BY_GROUP /* 分段计米 */
|
||||||
connect(this,SIGNAL(updateCnt1GroupDisp(bool)),
|
connect(this,SIGNAL(updateCnt1GroupDisp(bool)),ui->tabPrintSetting,SLOT(onUpdateCnt1GroupDisp(bool)));
|
||||||
ui->tabPrintSetting,SLOT(onUpdateCnt1GroupDisp(bool)));
|
|
||||||
#endif
|
#endif
|
||||||
initCntGroup();
|
initCntGroup();
|
||||||
|
|
||||||
msgtest = new QMessageBox(this);
|
msgtest = new QMessageBox(this);
|
||||||
connect(msgtest, SIGNAL(finished(int)), this, SLOT(OnFinished(int)));
|
connect(msgtest, SIGNAL(finished(int)), this, SLOT(OnFinished(int)));
|
||||||
msgBox1 = new QMessageBox(this);
|
msgBox1 = new QMessageBox(this);
|
||||||
@@ -236,11 +230,6 @@ InkJetPrinter::InkJetPrinter(QWidget *parent) :
|
|||||||
connect(ui->tabPrintSetting,SIGNAL(engineerMode(bool)),ui->tabSystemManage,SLOT(engieerModeAcceptSystemManage(bool)));
|
connect(ui->tabPrintSetting,SIGNAL(engineerMode(bool)),ui->tabSystemManage,SLOT(engieerModeAcceptSystemManage(bool)));
|
||||||
connect(ui->tabPrintSetting, SIGNAL(engineerMode(bool)), ui->tabSystemSetting, SLOT(setFreqFixVisible(bool)));
|
connect(ui->tabPrintSetting, SIGNAL(engineerMode(bool)), ui->tabSystemSetting, SLOT(setFreqFixVisible(bool)));
|
||||||
|
|
||||||
// 这段代码是为了解决2026年7月11日 新巴 打印参数异常的问题的,后更换核心板,问题已解决,因此不再启用这段代码
|
|
||||||
// connect(ui->tabMainWindow, &MainWindow::printBefore, this, [this](){
|
|
||||||
// ui->tabPrintSetting->applyUIPara(false);
|
|
||||||
// }, Qt::DirectConnection);
|
|
||||||
|
|
||||||
sysPara->status.rWarnViscoReady=0;
|
sysPara->status.rWarnViscoReady=0;
|
||||||
|
|
||||||
// hlp: 260608: 以授权为标准,不过度开放权限
|
// hlp: 260608: 以授权为标准,不过度开放权限
|
||||||
@@ -264,7 +253,7 @@ InkJetPrinter::InkJetPrinter(QWidget *parent) :
|
|||||||
sysPara->status.FileChangeRestCntFlag=0;
|
sysPara->status.FileChangeRestCntFlag=0;
|
||||||
sysPara->status.HVFaultCloseEn=0;
|
sysPara->status.HVFaultCloseEn=0;
|
||||||
sysPara->devOp->printCtrl( PRINT_CTRL_STOP);
|
sysPara->devOp->printCtrl( PRINT_CTRL_STOP);
|
||||||
sysPara->devOp->writeFpgaCalandar(1);
|
sysPara->devOp->writeFpgaCalandar(1);//
|
||||||
//qDebug()<<sysPara->para.calandar_and_dat.year;
|
//qDebug()<<sysPara->para.calandar_and_dat.year;
|
||||||
sysPara->status.cnt1GroupRunningIndex=0;
|
sysPara->status.cnt1GroupRunningIndex=0;
|
||||||
//sysPara->status.cnt1RepeatCurrent=0;
|
//sysPara->status.cnt1RepeatCurrent=0;
|
||||||
@@ -308,6 +297,8 @@ InkJetPrinter::InkJetPrinter(QWidget *parent) :
|
|||||||
ui->tabMainWindow->enableReclaimCtrlButton(false);
|
ui->tabMainWindow->enableReclaimCtrlButton(false);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//edit@12-14
|
//edit@12-14
|
||||||
connect(this,SIGNAL(currentChanged(int)),ui->tabMainWindow,SLOT(onInkJetPrinterCurrentChanged(int)), Qt::QueuedConnection);
|
connect(this,SIGNAL(currentChanged(int)),ui->tabMainWindow,SLOT(onInkJetPrinterCurrentChanged(int)), Qt::QueuedConnection);
|
||||||
//pidControllerInit();
|
//pidControllerInit();
|
||||||
@@ -713,7 +704,6 @@ void InkJetPrinter::initCntGroup()
|
|||||||
connect(this, &InkJetPrinter::sig_updateDisp,
|
connect(this, &InkJetPrinter::sig_updateDisp,
|
||||||
SectionalManager::instance(), &SectionalManager::sig_updateCntGroupDisp);
|
SectionalManager::instance(), &SectionalManager::sig_updateCntGroupDisp);
|
||||||
}
|
}
|
||||||
|
|
||||||
float PID_realize(float speed);
|
float PID_realize(float speed);
|
||||||
|
|
||||||
struct _pid{
|
struct _pid{
|
||||||
@@ -790,20 +780,23 @@ float PID_realize2(float speed, float act){
|
|||||||
|
|
||||||
void InkJetPrinter::pressureAdj()
|
void InkJetPrinter::pressureAdj()
|
||||||
{
|
{
|
||||||
|
// 故障停机处理
|
||||||
if(sysPara->status.gearPumpRunStopFlag || sysPara->status.flagOfSpeedAlarm)
|
if(sysPara->status.gearPumpRunStopFlag || sysPara->status.flagOfSpeedAlarm)
|
||||||
{
|
{
|
||||||
sysPara->para.gearPumpValue = 0;
|
sysPara->para.gearPumpValue = 0;
|
||||||
u = 0.0f;
|
u = 0.0f;
|
||||||
m_rampDone = false;
|
m_pumpState = DPUMP_STOPPED;
|
||||||
|
m_stateChangeCount = 0;
|
||||||
m_adjSkip = 0;
|
m_adjSkip = 0;
|
||||||
m_lastPressure = 0;
|
m_lastActualPressure = 0;
|
||||||
m_stableCount = 0;
|
m_bufValidCount = 0;
|
||||||
for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0;
|
for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0;
|
||||||
m_bufIdx = 0;
|
m_bufIdx = 0;
|
||||||
sysPara->devOp->WriteMoterPump();
|
sysPara->devOp->WriteMoterPump();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 泵未使能时的PID控制(保持原有逻辑)
|
||||||
if(!sysPara->para.gearPumpEnable)
|
if(!sysPara->para.gearPumpEnable)
|
||||||
{
|
{
|
||||||
if(u > 0 || ((sysPara->para.pressure - sysPara->status.PRESSURE) > 0))
|
if(u > 0 || ((sysPara->para.pressure - sysPara->status.PRESSURE) > 0))
|
||||||
@@ -815,172 +808,213 @@ void InkJetPrinter::pressureAdj()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int maxValue = sysPara->para.flagOfReclaimPumEnable ? 420 : 800;
|
// 隔膜泵控制参数
|
||||||
if(maxValue < 60) maxValue = 60;
|
const int STOP_TO_START_THRESHOLD = 5; // 停止→启动:压力低于目标15(扩大滞环)
|
||||||
|
const int RUN_TO_STOP_THRESHOLD = 5; // 运行→停止:压力高于目标10(扩大滞环)
|
||||||
int maxSpeed = (int)sysPara->para.gearPumpSpeedAlarm;
|
const int MIN_STATE_INTERVAL = 8; // 最小状态切换间隔:8个100ms = 800ms
|
||||||
|
|
||||||
auto clampU = [&]() {
|
|
||||||
if(u < 60.0f) u = 60.0f;
|
|
||||||
if(u > (float)maxValue) u = (float)maxValue;
|
|
||||||
};
|
|
||||||
|
|
||||||
int actual = sysPara->status.PRESSURE;
|
int actual = sysPara->status.PRESSURE;
|
||||||
int target = (int)sysPara->para.pressure;
|
int target = (int)sysPara->para.pressure;
|
||||||
int cur;
|
int err = target - actual; // 正值=压力偏低,负值=压力偏高
|
||||||
|
|
||||||
// 每次进入都更新滑动平均缓冲(软启动用瞬时值,闭环用平均值)
|
// 更新滑动平均缓冲
|
||||||
m_pressureBuf[m_bufIdx] = actual;
|
m_pressureBuf[m_bufIdx] = actual;
|
||||||
m_bufIdx = (m_bufIdx + 1) % 10;
|
m_bufIdx = (m_bufIdx + 1) % 10;
|
||||||
int avgPressure = 0;
|
int avgPressure = 0;
|
||||||
for(int i = 0; i < 10; i++) avgPressure += m_pressureBuf[i];
|
for(int i = 0; i < 10; i++) avgPressure += m_pressureBuf[i];
|
||||||
avgPressure /= 10;
|
avgPressure /= 10;
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// 状态切换计数器递增
|
||||||
// 硬保护:压力超过目标+50,立即强制减速,优先级最高
|
m_stateChangeCount++;
|
||||||
// 覆盖自检、软启动、闭环所有阶段
|
|
||||||
// ---------------------------------------------------------------
|
// 检查是否允许状态切换(距上次切换>=800ms)
|
||||||
if(actual > target + 50)
|
bool canSwitch = (m_stateChangeCount >= MIN_STATE_INTERVAL);
|
||||||
|
|
||||||
|
// 硬保护:压力严重超标,立即强制停泵(不受800ms限制)
|
||||||
|
if(actual > target + 80)
|
||||||
{
|
{
|
||||||
float overErr = (float)(actual - (target + 50));
|
if(m_pumpState != DPUMP_STOPPED) {
|
||||||
float delta = -0.1f * overErr;
|
u = 0.0f;
|
||||||
if(delta < -15.0f) delta = -15.0f;
|
sysPara->para.gearPumpValue = 0;
|
||||||
u += delta;
|
|
||||||
clampU();
|
|
||||||
m_lastPressure = actual;
|
|
||||||
sysPara->para.gearPumpValue = (unsigned short)(int)u;
|
|
||||||
sysPara->devOp->WriteMoterPump();
|
sysPara->devOp->WriteMoterPump();
|
||||||
|
m_pumpState = DPUMP_STOPPED;
|
||||||
|
m_stateChangeCount = 0;
|
||||||
|
m_adjSkip = 0;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// 状态机处理
|
||||||
// 软启动:自适应步长,每 800ms 一次
|
switch(m_pumpState) {
|
||||||
// 自检期间也走此逻辑(硬保护兜底),自检完成后重置重新收敛
|
case DPUMP_STOPPED:
|
||||||
// 软启动阶段不做压力稳定检测,优先快速收敛
|
handleStoppedState(err, canSwitch);
|
||||||
// ---------------------------------------------------------------
|
break;
|
||||||
if(!m_rampDone)
|
|
||||||
|
case DPUMP_STARTING:
|
||||||
|
handleStartingState(err, actual, target);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DPUMP_RUNNING:
|
||||||
|
handleRunningState(err, canSwitch);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 停止状态处理:压力低于目标较多时启动泵
|
||||||
|
void InkJetPrinter::handleStoppedState(int err, bool canSwitch)
|
||||||
{
|
{
|
||||||
if(++m_adjSkip < 8)
|
const int STOP_TO_START_THRESHOLD = 5; // 压力低于目标15启动(扩大滞环)
|
||||||
|
const float START_INIT_SPEED = 80.0f; // 启动初始转速
|
||||||
|
|
||||||
|
// 压力低于目标较多,且允许切换(距上次停止>=800ms),启动泵
|
||||||
|
if(err > STOP_TO_START_THRESHOLD && canSwitch) {
|
||||||
|
u = START_INIT_SPEED;
|
||||||
|
m_startingStepCount = 0;
|
||||||
|
m_adjSkip = 0;
|
||||||
|
sysPara->para.gearPumpValue = (unsigned short)(int)u;
|
||||||
|
sysPara->devOp->WriteMoterPump();
|
||||||
|
m_pumpState = DPUMP_STARTING;
|
||||||
|
m_stateChangeCount = 0; // 重置计数器
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 启动爬升状态处理:从低转速逐步提升到工作转速
|
||||||
|
void InkJetPrinter::handleStartingState(int err, int actual, int target)
|
||||||
{
|
{
|
||||||
|
const int STARTING_TO_RUNNING_RANGE = 30; // 进入目标±50范围转到运行状态
|
||||||
|
const float MAX_WORKING_SPEED = 500.0f; // 最大工作转速
|
||||||
|
const float START_SPEED_STEP_LARGE = 40.0f;
|
||||||
|
const float START_SPEED_STEP_MED = 30.0f;
|
||||||
|
const float START_SPEED_STEP_SMALL = 20.0f;
|
||||||
|
|
||||||
|
m_adjSkip++;
|
||||||
|
|
||||||
|
// 每800ms调整一次(8个100ms周期)
|
||||||
|
if(m_adjSkip < 8) {
|
||||||
sysPara->para.gearPumpValue = (unsigned short)(int)u;
|
sysPara->para.gearPumpValue = (unsigned short)(int)u;
|
||||||
sysPara->devOp->WriteMoterPump();
|
sysPara->devOp->WriteMoterPump();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
m_adjSkip = 0;
|
m_adjSkip = 0;
|
||||||
|
|
||||||
int err = target - actual;
|
// 判断是否进入运行状态
|
||||||
|
int absErr = (err >= 0) ? err : -err;
|
||||||
|
bool nearTarget = (absErr <= STARTING_TO_RUNNING_RANGE);
|
||||||
|
bool reachedMaxSpeed = (u >= MAX_WORKING_SPEED - 10);
|
||||||
|
|
||||||
if(err < 0)
|
if(nearTarget || reachedMaxSpeed) {
|
||||||
{
|
// 转到运行微调状态
|
||||||
// 超压:小步减速
|
m_pumpState = DPUMP_RUNNING;
|
||||||
u -= 1.0f;
|
m_lastActualPressure = actual;
|
||||||
|
m_stateChangeCount = 0; // 重置计数器
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
// 继续爬升:根据误差自适应增速
|
||||||
// 自适应步长:差得远步子大,差得近步子小
|
|
||||||
float step;
|
float step;
|
||||||
if (err > 200) step = 5.0f;
|
if(err > 100) step = START_SPEED_STEP_LARGE;
|
||||||
else if(err > 100) step = 3.0f;
|
else if(err > 50) step = START_SPEED_STEP_MED;
|
||||||
else if(err > 50) step = 2.0f;
|
else step = START_SPEED_STEP_SMALL;
|
||||||
else step = 1.0f;
|
|
||||||
u += step;
|
u += step;
|
||||||
}
|
if(u > MAX_WORKING_SPEED) u = MAX_WORKING_SPEED;
|
||||||
|
|
||||||
clampU();
|
sysPara->para.gearPumpValue = (unsigned short)(int)u;
|
||||||
|
|
||||||
// 转速上限保护
|
|
||||||
if(sysPara->para.flagOfReclaimPumEnable &&
|
|
||||||
sysPara->status.gearPumpRunSpeed >= maxSpeed)
|
|
||||||
{
|
|
||||||
u -= 3.0f;
|
|
||||||
clampU();
|
|
||||||
}
|
|
||||||
|
|
||||||
cur = (int)u;
|
|
||||||
|
|
||||||
// 进入闭环条件:压力已稳定在目标±50以内
|
|
||||||
if(sysPara->status.selfCheckDone && err >= -50 && err <= 50)
|
|
||||||
{
|
|
||||||
m_rampDone = true;
|
|
||||||
m_adjSkip = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
sysPara->para.gearPumpValue = (unsigned short)cur;
|
|
||||||
sysPara->devOp->WriteMoterPump();
|
sysPara->devOp->WriteMoterPump();
|
||||||
|
m_startingStepCount++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 运行微调状态处理:使用增量式控制算法
|
||||||
|
void InkJetPrinter::handleRunningState(int err, bool canSwitch)
|
||||||
|
{
|
||||||
|
const int RUN_TO_STOP_THRESHOLD = 5; // 压力高于目标10准备停泵(扩大滞环)
|
||||||
|
const int EMERGENCY_STOP_THRESHOLD = 10; // 压力高于目标20立即停泵(不受800ms限制)
|
||||||
|
|
||||||
|
// 紧急停泵:压力严重超标,立即停泵(不受800ms限制)
|
||||||
|
if(err < -EMERGENCY_STOP_THRESHOLD) {
|
||||||
|
u = 0.0f;
|
||||||
|
sysPara->para.gearPumpValue = 0;
|
||||||
|
sysPara->devOp->WriteMoterPump();
|
||||||
|
m_pumpState = DPUMP_STOPPED;
|
||||||
|
m_stateChangeCount = 0;
|
||||||
|
m_adjSkip = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// 常规停泵:压力略高于目标,等待800ms后停泵
|
||||||
// 闭环:等压力稳定后再调速,自适应管路响应时间
|
if(err < -RUN_TO_STOP_THRESHOLD && canSwitch) {
|
||||||
//
|
u = 0.0f;
|
||||||
// 每100ms采样一次,连续3次压力变化<15认为稳定,才执行调速
|
sysPara->para.gearPumpValue = 0;
|
||||||
// 最长等待5s(50次)兜底,防止管路持续抖动导致永远不调
|
sysPara->devOp->WriteMoterPump();
|
||||||
//
|
m_pumpState = DPUMP_STOPPED;
|
||||||
// 调速后立即重置稳定计数,重新等待下一次稳定
|
m_stateChangeCount = 0;
|
||||||
//
|
m_adjSkip = 0;
|
||||||
// 分区Kp:误差大步子大,误差小步子小
|
return;
|
||||||
// |err| > 100 → Kp=0.05,限幅±5
|
}
|
||||||
// |err| 50~100→ Kp=0.04,限幅±4
|
|
||||||
// |err| < 50 → Kp=0.03,限幅±3
|
|
||||||
// ---------------------------------------------------------------
|
|
||||||
{
|
|
||||||
// 稳定检测用平均值,滤掉传感器噪声
|
|
||||||
int pressureChange = avgPressure - m_lastPressure;
|
|
||||||
if(pressureChange < 0) pressureChange = -pressureChange;
|
|
||||||
m_lastPressure = avgPressure;
|
|
||||||
m_adjSkip++; // 复用为超时计数
|
|
||||||
|
|
||||||
bool stable = (pressureChange < 10);
|
// === 增量式微调控制(每200ms调整一次)===
|
||||||
bool timeout = (m_adjSkip >= 50); // 5s兜底
|
m_adjSkip++;
|
||||||
|
if(m_adjSkip < 2) {
|
||||||
|
sysPara->para.gearPumpValue = (unsigned short)(int)u;
|
||||||
|
sysPara->devOp->WriteMoterPump();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
m_adjSkip = 0;
|
||||||
|
|
||||||
if(stable)
|
int actual = sysPara->status.PRESSURE;
|
||||||
m_stableCount++;
|
float error = (float)err;
|
||||||
else
|
float absErr = (error >= 0) ? error : -error;
|
||||||
m_stableCount = 0;
|
|
||||||
|
|
||||||
bool readyToAdj = (m_stableCount >= 15) || timeout;
|
// 死区:误差≤0.5不调整
|
||||||
|
if(absErr < 0.5f) {
|
||||||
if(!readyToAdj)
|
m_lastActualPressure = actual;
|
||||||
{
|
|
||||||
sysPara->para.gearPumpValue = (unsigned short)(int)u;
|
sysPara->para.gearPumpValue = (unsigned short)(int)u;
|
||||||
sysPara->devOp->WriteMoterPump();
|
sysPara->devOp->WriteMoterPump();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 平均压力已稳定(或超时兜底),执行调速,重置计数
|
// 计算压力变化率(微分项)
|
||||||
m_adjSkip = 0;
|
int pressureChange = actual - m_lastActualPressure;
|
||||||
m_stableCount = 0;
|
m_lastActualPressure = actual;
|
||||||
|
|
||||||
// 误差用平均值计算,避免瞬时噪声影响调速幅度
|
// 增量式控制公式
|
||||||
float absErr = (float)(target - avgPressure);
|
float delta_u;
|
||||||
if(absErr < 0.0f) absErr = -absErr;
|
|
||||||
|
|
||||||
float kp, capDelta;
|
// 近目标刹车策略:误差≤5且正在接近目标,只刹车不加速
|
||||||
if(absErr > 100.0f) { kp = 0.05f; capDelta = 5.0f; }
|
if(absErr <= 5.0f &&
|
||||||
else if(absErr > 50.0f) { kp = 0.04f; capDelta = 4.0f; }
|
((error > 0.0f && pressureChange > 0) || // 压力低且在上升
|
||||||
else { kp = 0.03f; capDelta = 3.0f; }
|
(error < 0.0f && pressureChange < 0))) // 压力高且在下降
|
||||||
|
|
||||||
float err = (float)(target - avgPressure);
|
|
||||||
float delta_u = kp * err;
|
|
||||||
|
|
||||||
if(delta_u > capDelta) delta_u = capDelta;
|
|
||||||
if(delta_u < -capDelta) delta_u = -capDelta;
|
|
||||||
|
|
||||||
// 转速上限软限制:转速已达上限时禁止继续加速
|
|
||||||
if(sysPara->para.flagOfReclaimPumEnable &&
|
|
||||||
sysPara->status.gearPumpRunSpeed >= maxSpeed)
|
|
||||||
{
|
{
|
||||||
if(delta_u > 0.0f) delta_u = 0.0f;
|
delta_u = -0.20f * (float)pressureChange; // 只刹车
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// 标准增量式控制:比例项 + 微分项
|
||||||
|
delta_u = 0.05f * error - 0.20f * (float)pressureChange;
|
||||||
}
|
}
|
||||||
|
|
||||||
u += delta_u;
|
// 分级限幅(根据误差大小限制调节幅度)
|
||||||
clampU();
|
float maxDelta;
|
||||||
cur = (int)u;
|
if(absErr > 30.0f) maxDelta = 1.0f;
|
||||||
|
else if(absErr > 10.0f) maxDelta = 0.6f;
|
||||||
|
else maxDelta = 0.3f;
|
||||||
|
|
||||||
sysPara->para.gearPumpValue = (unsigned short)cur;
|
if(delta_u > maxDelta) delta_u = maxDelta;
|
||||||
|
if(delta_u < -maxDelta) delta_u = -maxDelta;
|
||||||
|
|
||||||
|
// 更新控制量
|
||||||
|
u += delta_u;
|
||||||
|
|
||||||
|
// 限制范围
|
||||||
|
const float MIN_RUNNING_SPEED = 30.0f; // 最低运行转速(低于此值泵不转)
|
||||||
|
const float MAX_WORKING_SPEED = 500.0f;
|
||||||
|
|
||||||
|
if(u < MIN_RUNNING_SPEED) u = MIN_RUNNING_SPEED;
|
||||||
|
if(u > MAX_WORKING_SPEED) u = MAX_WORKING_SPEED;
|
||||||
|
|
||||||
|
sysPara->para.gearPumpValue = (unsigned short)(int)u;
|
||||||
sysPara->devOp->WriteMoterPump();
|
sysPara->devOp->WriteMoterPump();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void InkJetPrinter::DacAdjustStore()
|
void InkJetPrinter::DacAdjustStore()
|
||||||
@@ -1189,6 +1223,10 @@ void InkJetPrinter::timerHandler(void){
|
|||||||
static float gearPumpRunNormalValue = 0.0;
|
static float gearPumpRunNormalValue = 0.0;
|
||||||
if(sysPara){
|
if(sysPara){
|
||||||
xxxm=1;
|
xxxm=1;
|
||||||
|
if(sysPara->para.flagOfModuleDecimal || sysPara->para.flagOfModuleHide){
|
||||||
|
sysPara->para.flagOfModuleDecimal = 0;
|
||||||
|
sysPara->para.flagOfModuleHide = 0;
|
||||||
|
}
|
||||||
|
|
||||||
sysPara->para.ReadFileErrorCnt=0; // 正常打开文件
|
sysPara->para.ReadFileErrorCnt=0; // 正常打开文件
|
||||||
|
|
||||||
@@ -1234,16 +1272,22 @@ void InkJetPrinter::timerHandler(void){
|
|||||||
if(pulse_300ms) tempFlag=1;
|
if(pulse_300ms) tempFlag=1;
|
||||||
if((sysPara->status.delay10ms%3) == 0) //读取状态后再检測
|
if((sysPara->status.delay10ms%3) == 0) //读取状态后再检測
|
||||||
{
|
{
|
||||||
// 检测是否需要启动泵泵,注意启动条件:1. 无墨水警告 2. 未运行 3. 未手动控制
|
|
||||||
if(!(sysPara->status.statWarn & WARN_STATUS_INK_WARN) && !gearPumpRunFlag && !sysPara->status.isPumpValveControledByHand)//刚启动前3秒
|
if(!(sysPara->status.statWarn & WARN_STATUS_INK_WARN) && !gearPumpRunFlag && !sysPara->status.isPumpValveControledByHand)//刚启动前3秒
|
||||||
{
|
{
|
||||||
if(sysPara->para.gearPumpEnable) {
|
if(sysPara->para.gearPumpEnable) {
|
||||||
// 确保开机时控制字从 0 开始,让 pressureAdj 软启动从 0 爬坡,避免突变到高转速
|
// 隔膜泵初始化:确保从停止状态开始
|
||||||
if(sysPara->para.gearPumpValue != 0) {
|
if(sysPara->para.gearPumpValue != 0) {
|
||||||
sysPara->para.gearPumpValue = 0;
|
sysPara->para.gearPumpValue = 0;
|
||||||
u = 0.0f;
|
u = 0.0f;
|
||||||
sysPara->devOp->WriteMoterPump();
|
sysPara->devOp->WriteMoterPump();
|
||||||
}
|
}
|
||||||
|
// 初始化隔膜泵状态机
|
||||||
|
m_pumpState = DPUMP_STOPPED;
|
||||||
|
m_stateChangeCount = 0;
|
||||||
|
m_adjSkip = 0;
|
||||||
|
m_lastActualPressure = 0;
|
||||||
|
m_bufValidCount = 0;
|
||||||
|
m_startingStepCount = 0;
|
||||||
gearPumpStartFlag = true;
|
gearPumpStartFlag = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1277,10 +1321,16 @@ void InkJetPrinter::timerHandler(void){
|
|||||||
{
|
{
|
||||||
ControledSwitchFlag = true;
|
ControledSwitchFlag = true;
|
||||||
u = (float)sysPara->para.gearPumpValue; // 同步当前转速,避免突变
|
u = (float)sysPara->para.gearPumpValue; // 同步当前转速,避免突变
|
||||||
m_rampDone = false; // 重新软启动,适应切换后的压力状态
|
// 重置隔膜泵状态机,从当前转速状态开始
|
||||||
|
if(u > 40.0f) {
|
||||||
|
m_pumpState = DPUMP_RUNNING; // 如果当前有转速,进入运行状态
|
||||||
|
} else {
|
||||||
|
m_pumpState = DPUMP_STOPPED; // 否则从停止状态开始
|
||||||
|
}
|
||||||
|
m_stateChangeCount = 0;
|
||||||
m_adjSkip = 0;
|
m_adjSkip = 0;
|
||||||
m_lastPressure = 0;
|
m_lastActualPressure = 0;
|
||||||
m_stableCount = 0;
|
m_bufValidCount = 0;
|
||||||
for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0;
|
for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0;
|
||||||
m_bufIdx = 0;
|
m_bufIdx = 0;
|
||||||
}
|
}
|
||||||
@@ -1299,25 +1349,29 @@ void InkJetPrinter::timerHandler(void){
|
|||||||
}
|
}
|
||||||
if(gearPumpRunNormalFlag && !sysPara->status.isPumpValveControledByHand && sysPara->para.gearPumpEnable)
|
if(gearPumpRunNormalFlag && !sysPara->status.isPumpValveControledByHand && sysPara->para.gearPumpEnable)
|
||||||
{
|
{
|
||||||
static int count_3s = 0;
|
// 隔膜泵泄漏检测:运行状态下,压力持续不上升或下降
|
||||||
if(u > gearPumpRunNormalValue*1.5)//改大一点
|
static int leakCheckCount = 0;
|
||||||
|
static int lastPressureForLeak = 0;
|
||||||
|
|
||||||
|
if(m_pumpState == DPUMP_RUNNING && pulse_1s)
|
||||||
{
|
{
|
||||||
if(pulse_1s)
|
int pressureChange = sysPara->status.PRESSURE - lastPressureForLeak;
|
||||||
{
|
|
||||||
count_3s++;
|
// 泵运行中(转速>40),压力不升反降,或上升太慢(<5/秒)
|
||||||
if(count_3s == 3)
|
if(u > 40.0f && pressureChange < 5) {
|
||||||
{
|
leakCheckCount++;
|
||||||
count_3s = 0;
|
if(leakCheckCount >= 5) { // 连续5秒
|
||||||
ui->tabMainWindow->setRunStatus(tr("压力泄漏或压力传感器故障!"));
|
leakCheckCount = 0;
|
||||||
|
ui->tabMainWindow->setRunStatus(tr("压力异常,可能泄漏!"));
|
||||||
sysPara->status.gearPumpRunStopFlag = true;
|
sysPara->status.gearPumpRunStopFlag = true;
|
||||||
gearPumpRunNormalFlag = false;
|
gearPumpRunNormalFlag = false;
|
||||||
LogInfo::setRunStatusText(tr("运行中压力泄漏,停齿轮泵!"));
|
LogInfo::setRunStatusText(tr("运行中压力泄漏,停泵!"));
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
leakCheckCount = 0;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
lastPressureForLeak = sysPara->status.PRESSURE;
|
||||||
{
|
|
||||||
count_3s = 0;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(sysPara->para.gearPumpEnable && (sysPara->status.gearPumpRunSpeed < 100) && test_flag){
|
if(sysPara->para.gearPumpEnable && (sysPara->status.gearPumpRunSpeed < 100) && test_flag){
|
||||||
@@ -1385,16 +1439,12 @@ void InkJetPrinter::timerHandler(void){
|
|||||||
|
|
||||||
if(pulse_1s && flagOfSerialThreadStratEn){
|
if(pulse_1s && flagOfSerialThreadStratEn){
|
||||||
if (!m_serialThreadFPGA->isRunning()) {
|
if (!m_serialThreadFPGA->isRunning()) {
|
||||||
#ifndef ARCH_X86
|
|
||||||
qDebug()<<"start FPGA tread";
|
qDebug()<<"start FPGA tread";
|
||||||
m_serialThreadFPGA->start();
|
m_serialThreadFPGA->start();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
if (!m_serialThreadSTM32->isRunning()){
|
if (!m_serialThreadSTM32->isRunning()){
|
||||||
#ifndef ARCH_X86
|
|
||||||
qDebug()<<"start STM32 tread";
|
qDebug()<<"start STM32 tread";
|
||||||
m_serialThreadSTM32->start();
|
m_serialThreadSTM32->start();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
flagOfSerialThreadStratEn = false;
|
flagOfSerialThreadStratEn = false;
|
||||||
}
|
}
|
||||||
@@ -1505,20 +1555,11 @@ void InkJetPrinter::timerHandler(void){
|
|||||||
if(gearPumpRunFlag || sysPara->para.gearPumpEnable == 0)
|
if(gearPumpRunFlag || sysPara->para.gearPumpEnable == 0)
|
||||||
{
|
{
|
||||||
if(!sysPara->status.selfCheckDone && sysPara->status.isPrinting){
|
if(!sysPara->status.selfCheckDone && sysPara->status.isPrinting){
|
||||||
|
sysPara->status.selfCheckDone = true;
|
||||||
|
ui->tabMainWindow->updatePrintDisplayLabel();
|
||||||
sysPara->status.flagOfAbnormalStatus = true;
|
sysPara->status.flagOfAbnormalStatus = true;
|
||||||
|
|
||||||
static bool onceLog = true;
|
|
||||||
if(onceLog) {
|
|
||||||
LogInfo::setRunStatusText(tr("打印过程中死机了!!!"));
|
LogInfo::setRunStatusText(tr("打印过程中死机了!!!"));
|
||||||
qDebug()<<"打印过程中死机了!!!";
|
qDebug()<<"打印过程中死机了!!!";
|
||||||
onceLog = false;
|
|
||||||
|
|
||||||
ui->tabMainWindow->updatePrintDisplayLabel();
|
|
||||||
}
|
|
||||||
|
|
||||||
ui->tabMainWindow->on_pushButtonStopPrint_pressed();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
if(!sysPara->status.selfCheckDone)
|
if(!sysPara->status.selfCheckDone)
|
||||||
{
|
{
|
||||||
@@ -1550,15 +1591,17 @@ void InkJetPrinter::timerHandler(void){
|
|||||||
{
|
{
|
||||||
sysPara->status.selfCheckDone = 1;
|
sysPara->status.selfCheckDone = 1;
|
||||||
u = (float)sysPara->para.gearPumpValue;
|
u = (float)sysPara->para.gearPumpValue;
|
||||||
// 自检完成后管道恢复正常阻力,重置软启动让压力重新平稳收敛
|
// 自检完成后管道恢复正常阻力,重置状态机让压力重新平稳收敛
|
||||||
// 不清零 u,从当前控制字开始,避免突变
|
// 不清零 u,从当前控制字开始,避免突变
|
||||||
// m_rampDone = false;
|
if(u > 40.0f) {
|
||||||
// m_adjSkip = 0;
|
m_pumpState = DPUMP_RUNNING; // 如果当前有转速,进入运行状态
|
||||||
// m_lastPressure = 0;
|
} else {
|
||||||
// m_stableCount = 0;
|
m_pumpState = DPUMP_STOPPED; // 否则从停止状态开始
|
||||||
|
}
|
||||||
autoControlValvePump();
|
m_stateChangeCount = 0;
|
||||||
|
m_adjSkip = 0;
|
||||||
|
m_lastActualPressure = 0;
|
||||||
|
m_bufValidCount = 0;
|
||||||
for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0;
|
for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0;
|
||||||
m_bufIdx = 0;
|
m_bufIdx = 0;
|
||||||
LogInfo::setRunStatusText(tr("自检完成!!!"));
|
LogInfo::setRunStatusText(tr("自检完成!!!"));
|
||||||
@@ -1590,10 +1633,12 @@ void InkJetPrinter::timerHandler(void){
|
|||||||
m_lastReclaimMode = sysPara->para.flagOfReclaimPumEnable;
|
m_lastReclaimMode = sysPara->para.flagOfReclaimPumEnable;
|
||||||
gearPumpRunNormalFlag = false; // 泄漏保护重新学习
|
gearPumpRunNormalFlag = false; // 泄漏保护重新学习
|
||||||
gearPumpRunNormalValue = 0.0f;
|
gearPumpRunNormalValue = 0.0f;
|
||||||
m_rampDone = false; // 软启动重新爬坡适应新上限
|
// 重置隔膜泵状态机,适应新模式
|
||||||
|
m_pumpState = DPUMP_STOPPED;
|
||||||
|
m_stateChangeCount = 0;
|
||||||
m_adjSkip = 0;
|
m_adjSkip = 0;
|
||||||
m_lastPressure = 0;
|
m_lastActualPressure = 0;
|
||||||
m_stableCount = 0;
|
m_bufValidCount = 0;
|
||||||
for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0;
|
for(int i = 0; i < 10; i++) m_pressureBuf[i] = 0;
|
||||||
m_bufIdx = 0;
|
m_bufIdx = 0;
|
||||||
}
|
}
|
||||||
@@ -2067,38 +2112,29 @@ void InkJetPrinter::timerHandler(void){
|
|||||||
}
|
}
|
||||||
else if(pulse_1s && sysPara->para.gearPumpEnable && sysPara->status.selfCheckDone
|
else if(pulse_1s && sysPara->para.gearPumpEnable && sysPara->status.selfCheckDone
|
||||||
&& (!sysPara->status.statWarn) && !sysPara->status.powerOffAppending){
|
&& (!sysPara->status.statWarn) && !sysPara->status.powerOffAppending){
|
||||||
if((!sysPara->para.flagOfReclaimPumEnable && sysPara->status.gearPumpRunSpeed <= 2000)
|
// 隔膜泵速度告警逻辑:检测转速是否异常超过最大工作转速
|
||||||
||(sysPara->para.flagOfReclaimPumEnable && sysPara->status.gearPumpRunSpeed <= sysPara->para.gearPumpSpeedAlarm))
|
// 最大工作转速对应的RPM约为:300 * 60 * 1000 / (500 * 2) = 1800 RPM
|
||||||
|
// 给予余量,告警阈值设为2200 RPM
|
||||||
|
const int MAX_SPEED_ALARM = 2200;
|
||||||
|
|
||||||
|
if(sysPara->status.gearPumpRunSpeed <= MAX_SPEED_ALARM)
|
||||||
{
|
{
|
||||||
pulse_30s = 0;
|
pulse_30s = 0;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
pulse_30s++;
|
pulse_30s++;
|
||||||
if(pulse_30s >= 30){
|
if(pulse_30s >= 30){
|
||||||
if((sysPara->status.gearPumpRunSpeed >= 2500)||(sysPara->devOp->color_flag == 2)
|
|
||||||
||(sysPara->para.flagOfReclaimPumEnable && sysPara->status.gearPumpRunSpeed > sysPara->para.gearPumpSpeedAlarm))
|
|
||||||
{
|
|
||||||
sysPara->status.flagOfSpeedAlarm = true;
|
sysPara->status.flagOfSpeedAlarm = true;
|
||||||
sysPara->devOp->color_flag = 2;
|
sysPara->devOp->color_flag = 2;
|
||||||
if(pulse_30s % 500 == 0){
|
if(pulse_30s % 500 == 0){
|
||||||
LogInfo::setRunStatusText(tr("齿轮泵转速过高,请立即停机并联系供应商!"));
|
LogInfo::setRunStatusText(tr("泵转速异常过高,请立即停机并联系供应商!"));
|
||||||
qDebug()<<"齿轮泵转速过高,请立即停机并联系供应商!";
|
qDebug()<<"泵转速异常过高,请立即停机并联系供应商!";
|
||||||
}
|
}
|
||||||
ui->tabMainWindow->setRunStatus(tr("齿轮泵转速过高,请立即停机并联系供应商!"));
|
ui->tabMainWindow->setRunStatus(tr("泵转速异常过高,请立即停机并联系供应商!"));
|
||||||
sysPara->devOp->controlRedLight(true);
|
sysPara->devOp->controlRedLight(true);
|
||||||
if(sysPara->status.isPrinting)
|
if(sysPara->status.isPrinting)
|
||||||
ui->tabMainWindow->on_pushButtonStopPrint_pressed();
|
ui->tabMainWindow->on_pushButtonStopPrint_pressed();
|
||||||
}
|
}
|
||||||
else{
|
|
||||||
sysPara->devOp->color_flag = 1;
|
|
||||||
if(pulse_30s % 500 == 0){
|
|
||||||
LogInfo::setRunStatusText(tr("齿轮泵转速过高,请清理过滤器或者检查是否泄露!"));
|
|
||||||
qDebug()<<"齿轮泵转速过高,请清理过滤器或者检查是否泄露!";
|
|
||||||
}
|
|
||||||
ui->tabMainWindow->setRunStatus(tr("齿轮泵转速过高,请清理过滤器或者检查是否泄露!"));
|
|
||||||
sysPara->devOp->controlYellowLight(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(pulse_30s % 10 == 0)
|
if(pulse_30s % 10 == 0)
|
||||||
qDebug()<<"粘度: "<<QString::number(sysPara->status.viscosity);
|
qDebug()<<"粘度: "<<QString::number(sysPara->status.viscosity);
|
||||||
}
|
}
|
||||||
@@ -2167,6 +2203,8 @@ void InkJetPrinter::cnt1GroupCheck(void)
|
|||||||
static unsigned char lastGroupRunningIndex = 0;
|
static unsigned char lastGroupRunningIndex = 0;
|
||||||
if(sysPara->para.cnt1ByGroupEnalbe)
|
if(sysPara->para.cnt1ByGroupEnalbe)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
sysPara->devOp->ReadCnt1GroupStatus();
|
sysPara->devOp->ReadCnt1GroupStatus();
|
||||||
if(lastGroupRunningIndex == sysPara->status.cnt1GroupRunningIndex)
|
if(lastGroupRunningIndex == sysPara->status.cnt1GroupRunningIndex)
|
||||||
return;
|
return;
|
||||||
|
|||||||
+26
-8
@@ -101,14 +101,32 @@ private:
|
|||||||
QTimer* viscosity_timer;
|
QTimer* viscosity_timer;
|
||||||
QTimer* timer;
|
QTimer* timer;
|
||||||
QTime t1;
|
QTime t1;
|
||||||
bool m_rampDone = false; // pressureAdj 软启动完成标志
|
|
||||||
int m_adjSkip = 0; // pressureAdj 节拍计数
|
// 隔膜泵状态枚举
|
||||||
int m_lastPressure = 0; // pressureAdj 上次采样压力(稳定检测用)
|
enum DiaphragmPumpState {
|
||||||
int m_stableCount = 0; // pressureAdj 压力连续稳定计数
|
DPUMP_STOPPED = 0, // 停止状态
|
||||||
int m_pressureBuf[10] = {}; // pressureAdj 压力滑动平均缓冲(10点=1s)
|
DPUMP_STARTING = 1, // 启动爬升状态
|
||||||
int m_bufIdx = 0; // pressureAdj 滑动平均写入索引
|
DPUMP_RUNNING = 2 // 运行微调状态
|
||||||
bool m_lastReclaimMode = false; // 上次 flagOfReclaimPumEnable 状态,用于检测切换
|
};
|
||||||
bool m_lastByHand = false; // 上次 isPumpValveControledByHand 状态,用于检测手动、自动
|
|
||||||
|
// 隔膜泵控制参数
|
||||||
|
DiaphragmPumpState m_pumpState = DPUMP_STOPPED; // 泵当前状态
|
||||||
|
int m_stateChangeCount = 0; // 状态切换计数器(用于实现800ms间隔)
|
||||||
|
int m_adjSkip = 0; // 调节跳过计数器
|
||||||
|
int m_lastActualPressure = 0; // 上次实时压力(微分项用)
|
||||||
|
int m_startingStepCount = 0; // 启动步进计数器
|
||||||
|
int m_pressureBuf[10] = {}; // 压力滑动平均缓冲(10点=1s)
|
||||||
|
int m_bufIdx = 0; // 滑动平均写入索引
|
||||||
|
int m_bufValidCount = 0; // 缓冲区有效点数(用于启动阶段判断)
|
||||||
|
bool m_lastReclaimMode = false; // 上次回收泵使能状态
|
||||||
|
bool m_lastByHand = false; // 上次手动控制状态
|
||||||
|
|
||||||
|
// 隔膜泵控制函数
|
||||||
|
float calculateTargetSpeed(int err);
|
||||||
|
void handleStoppedState(int err, bool canSwitch);
|
||||||
|
void handleStartingState(int err, int actual, int target);
|
||||||
|
void handleRunningState(int err, bool canSwitch);
|
||||||
|
|
||||||
void autoControlHeater();
|
void autoControlHeater();
|
||||||
void autoControlValvePump();
|
void autoControlValvePump();
|
||||||
void detectAndcontrolReclaimTank();
|
void detectAndcontrolReclaimTank();
|
||||||
|
|||||||
+3
-2
@@ -417,13 +417,14 @@ void PrintSetting::updateSysParaToUI(){
|
|||||||
void PrintSetting::showMachInfo(QString Mac)
|
void PrintSetting::showMachInfo(QString Mac)
|
||||||
{
|
{
|
||||||
QString VernonBach;
|
QString VernonBach;
|
||||||
VernonBach.sprintf("%d.%d.%02d%s%s_", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION,SUB_RFID);
|
VernonBach.sprintf("%s.%s.", MACHINAE_VER, PUMP_VER);
|
||||||
VernonBach = VernonBach + (QString) Public::DateToString(__DATE__)+"_";//+UP_PRINTER_STAGE_VER;
|
VernonBach = VernonBach + (QString) Public::DateToString(__DATE__)+"_";//+UP_PRINTER_STAGE_VER;
|
||||||
}
|
}
|
||||||
void PrintSetting::showRemoteControl(QString SuperNodeIP,QString EdgeIP)
|
void PrintSetting::showRemoteControl(QString SuperNodeIP,QString EdgeIP)
|
||||||
{
|
{
|
||||||
QString VernonBach;
|
QString VernonBach;
|
||||||
VernonBach.sprintf("%d.%d.%02d%s%s_", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION,SUB_RFID);
|
// VernonBach.sprintf("%d.%d.%02d%s%s_", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION,SUB_RFID);
|
||||||
|
VernonBach=SUB_RFID;
|
||||||
VernonBach = VernonBach + (QString) Public::DateToString(__DATE__)+"_";//+UP_PRINTER_STAGE_VER;
|
VernonBach = VernonBach + (QString) Public::DateToString(__DATE__)+"_";//+UP_PRINTER_STAGE_VER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-23
@@ -369,33 +369,12 @@ QString Public::DateToString(char const *time){
|
|||||||
int month, day, year;
|
int month, day, year;
|
||||||
//struct tm t = {0};
|
//struct tm t = {0};
|
||||||
static const char month_names[] = "JanFebMarAprMayJunJulAugSepOctNovDec";
|
static const char month_names[] = "JanFebMarAprMayJunJulAugSepOctNovDec";
|
||||||
//qDebug()<<time;
|
|
||||||
sscanf(time, "%s %d %d", s_month, &day, &year);
|
sscanf(time, "%s %d %d", s_month, &day, &year);
|
||||||
//qDebug()<<time<<s_month<<day<<year;
|
|
||||||
|
|
||||||
month = ((strstr(month_names, s_month)-month_names)/3)+1;
|
month = ((strstr(month_names, s_month)-month_names)/3)+1;
|
||||||
//qDebug()<<month<<s_month;
|
|
||||||
QString s;
|
QString s;
|
||||||
s.sprintf("%04d-%02d-%02d",year,month,day);
|
// s.sprintf("%04d-%02d-%02d",year,month,day);
|
||||||
return s;
|
s.sprintf("%02d%02d",month,day);
|
||||||
}
|
|
||||||
|
|
||||||
QString Public::ArmDate2String(const char *date, const char *time)
|
|
||||||
{
|
|
||||||
char s_month[5];
|
|
||||||
int month, day, year;
|
|
||||||
static const char month_names[] = "JanFebMarAprMayJunJulAugSepOctNovDec";
|
|
||||||
sscanf(date, "%s %d %d", s_month, &day, &year);
|
|
||||||
month = ((strstr(month_names, s_month)-month_names)/3)+1;
|
|
||||||
QString dateStr;
|
|
||||||
dateStr.sprintf("A%04d%02d%02d",year,month,day);
|
|
||||||
|
|
||||||
int hour, min, secend;
|
|
||||||
sscanf(time, "%d:%d:%d", &hour, &min, &secend);
|
|
||||||
QString timeStr;
|
|
||||||
timeStr.sprintf("%02d%02d", hour, min);
|
|
||||||
|
|
||||||
QString s = dateStr+timeStr;
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,8 +36,6 @@ public:
|
|||||||
static time_t getDateFromMacro(const char *time);
|
static time_t getDateFromMacro(const char *time);
|
||||||
static QString DateToString(const char *time);
|
static QString DateToString(const char *time);
|
||||||
|
|
||||||
static QString ArmDate2String(const char * date, const char * time);
|
|
||||||
|
|
||||||
static QString ReadKeyBoardUse();
|
static QString ReadKeyBoardUse();
|
||||||
|
|
||||||
static int getType(int vartype); // 将变量类型进行转换,以处理横向字体
|
static int getType(int vartype); // 将变量类型进行转换,以处理横向字体
|
||||||
|
|||||||
+7
-21
@@ -93,13 +93,11 @@ TriggerCtrl::TriggerCtrl(QWidget *parent) :
|
|||||||
connect(pulseNumFix,SIGNAL(pulseNuxFixDone(float)),this,SLOT(onPulseNumFixDone(float)));
|
connect(pulseNumFix,SIGNAL(pulseNuxFixDone(float)),this,SLOT(onPulseNumFixDone(float)));
|
||||||
|
|
||||||
updateSysStatusToUI();
|
updateSysStatusToUI();
|
||||||
|
|
||||||
QString s;
|
QString s;
|
||||||
|
// s.sprintf("%d.%d.%02d%s%s_", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION,SUB_RFID);
|
||||||
s.sprintf("%d.%d.%02d%s%s_", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION,SUB_RFID);
|
s.sprintf("%s.%s.", MACHINAE_VER, PUMP_VER);
|
||||||
s = s + (QString) Public::DateToString(__DATE__)+"_"+ QString(__TIME__)+"_";
|
s = s + (QString) Public::DateToString(__DATE__)+"."+SUB_VER+SUB_RFID;
|
||||||
// hlp :邓总要求,采用新的格式进行转换 0727
|
|
||||||
// s = Public::ArmDate2String(__DATE__, __TIME__);
|
|
||||||
|
|
||||||
ui->test_version->setText(s);
|
ui->test_version->setText(s);
|
||||||
ui->checkBoxEleEyeMakeClean->setVisible(false);
|
ui->checkBoxEleEyeMakeClean->setVisible(false);
|
||||||
tr("独立参数");
|
tr("独立参数");
|
||||||
@@ -398,16 +396,6 @@ void TriggerCtrl::updateSysStatusToUI(){
|
|||||||
ui->spinBoxpluseSinal->setValue(sysPara->para.pulse_sinal_value);
|
ui->spinBoxpluseSinal->setValue(sysPara->para.pulse_sinal_value);
|
||||||
t_init = 1;
|
t_init = 1;
|
||||||
}
|
}
|
||||||
// if((sysPara->para.printTriggerMode == PRINT_TRIGGER_SYNCHRONIZER))
|
|
||||||
// {
|
|
||||||
// ui->lineEditPulseCount ->setText(QString::number((int )((sysPara->para.synTriggerPrintLenMm)*sysPara->para.synPulseNumPerMm)));
|
|
||||||
// }
|
|
||||||
// else if(((sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_VOLTATE_LEVEL
|
|
||||||
// ||sysPara->para.printTriggerMode == PRINT_TRIGGER_ELEC_EYE_EDGE)
|
|
||||||
// && sysPara->para.eleEyeTriggerSynPrintEn))
|
|
||||||
// {
|
|
||||||
// ui->lineEditPulseCount ->setText(QString::number( (int )((sysPara->para.elecEyeTriggerInterval)*sysPara->para.synPulseNumPerMm)));
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -511,11 +499,9 @@ void TriggerCtrl::on_checkBoxPulseOutputEnable_clicked()
|
|||||||
void TriggerCtrl::setBuildTime(QString s1)
|
void TriggerCtrl::setBuildTime(QString s1)
|
||||||
{
|
{
|
||||||
QString s;
|
QString s;
|
||||||
s.sprintf("A%d.%d.%02d%s%s_", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION,SUB_RFID);
|
// s.sprintf("A%d.%d.%02d%s%s_", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION,SUB_RFID);
|
||||||
s = s + (QString) Public::DateToString(__DATE__)+ "_"+ QString(__TIME__);
|
s.sprintf("%s.%s.", MACHINAE_VER, PUMP_VER);
|
||||||
// hlp :邓总要求,采用新的格式进行转换 0727
|
s = s + (QString) Public::DateToString(__DATE__)+"."+SUB_VER+SUB_RFID;//+ "_"+ QString(__TIME__)
|
||||||
// s = Public::ArmDate2String(__DATE__, __TIME__);
|
|
||||||
|
|
||||||
ui->test_version->setText(s+s1);
|
ui->test_version->setText(s+s1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-10
@@ -2,21 +2,17 @@
|
|||||||
#define VERBVERSION_H
|
#define VERBVERSION_H
|
||||||
#include "myinclude.h"
|
#include "myinclude.h"
|
||||||
/*
|
/*
|
||||||
Major.Minor.Rivison.yyyy-MM-DD_Beta
|
VX5.D.0826.0100-C
|
||||||
|
MACHINAE_VER.PUMP_VER.MMdd.SUB_VER+SUB_RFID
|
||||||
*/
|
*/
|
||||||
#define UP_PRINTER_MAJOR_VER 6
|
#define MACHINAE_VER "VX5"
|
||||||
#define UP_PRINTER_MINOR_VER 8
|
#define PUMP_VER "D"
|
||||||
#define UP_PRINTER_RIVISION_VER 3
|
#define SUB_VER "0100"
|
||||||
// #define SUB_VERSION "_GuiL"
|
|
||||||
//#define SUB_VERSION "_JingZ"
|
|
||||||
//#define SUB_VERSION "_RFID"
|
|
||||||
#define SUB_VERSION "_Std"
|
|
||||||
// #define SUB_VERSION "_Std_VZ"
|
|
||||||
|
|
||||||
#ifdef __RFID_OLD
|
#ifdef __RFID_OLD
|
||||||
#define SUB_RFID "_RO"
|
#define SUB_RFID "_RO"
|
||||||
#else
|
#else
|
||||||
#define SUB_RFID ""
|
#define SUB_RFID "-C"
|
||||||
#endif
|
#endif
|
||||||
//#define UP_PRINTER_STAGE_VER "Std"
|
//#define UP_PRINTER_STAGE_VER "Std"
|
||||||
//#define UP_PRINTER_STAGE_VER "Beta"
|
//#define UP_PRINTER_STAGE_VER "Beta"
|
||||||
|
|||||||
+17
-11
@@ -706,12 +706,12 @@ bool MainWindow::updatePhaseIndicatorLight(){
|
|||||||
return sysPara->status.lastPhaseFault;
|
return sysPara->status.lastPhaseFault;
|
||||||
}
|
}
|
||||||
|
|
||||||
int MainWindow::getMaxSpeedCalcPara(){
|
double MainWindow::getMaxSpeedCalcPara(){
|
||||||
sysPara->para.printRowDelay = sysPara->para.currPrintMode;
|
sysPara->para.printRowDelay = sysPara->para.currPrintMode;
|
||||||
if(sysPara->status.isPrinting == false)
|
if(sysPara->status.isPrinting == false)
|
||||||
sysPara->status.pixNumPerCol = sysPara->status.currPrintRow;
|
sysPara->status.pixNumPerCol = sysPara->status.currPrintRow;
|
||||||
else
|
// else
|
||||||
sysPara->status.currPrintRow = sysPara->status.pixNumPerCol;
|
// sysPara->status.currPrintRow = sysPara->status.pixNumPerCol;
|
||||||
sysPara->para.pixNumPerCol = sysPara->status.pixNumPerCol;
|
sysPara->para.pixNumPerCol = sysPara->status.pixNumPerCol;
|
||||||
|
|
||||||
sysPara->para.reducedPixelNum = sysPara->para.reducedPixelNumRatio*sysPara->para.pixNumPerCol/100;
|
sysPara->para.reducedPixelNum = sysPara->para.reducedPixelNumRatio*sysPara->para.pixNumPerCol/100;
|
||||||
@@ -724,9 +724,15 @@ int MainWindow::getMaxSpeedCalcPara(){
|
|||||||
|
|
||||||
int dotNum = sysPara->para.divideRatio?(FPGA_SYS_HZ/(sysPara->para.divideRatio*2)):0;// 1s时间内墨点数 (即晶振频率 64000)
|
int dotNum = sysPara->para.divideRatio?(FPGA_SYS_HZ/(sysPara->para.divideRatio*2)):0;// 1s时间内墨点数 (即晶振频率 64000)
|
||||||
int colNum = dotNumPerCol?dotNum/dotNumPerCol:0; // 第列可用墨点数 = 1s时间内墨点数/ 列需要墨点数
|
int colNum = dotNumPerCol?dotNum/dotNumPerCol:0; // 第列可用墨点数 = 1s时间内墨点数/ 列需要墨点数
|
||||||
int pulseNum = colNum*sysPara->para.synNumPerCol/(1<<8); //synNumPerCol是被放大后的值
|
double pulseNum = colNum*sysPara->para.synNumPerCol/(1<<8); //synNumPerCol是被放大后的值
|
||||||
|
|
||||||
return pulseNum;
|
if(sysPara->para.divideRatio == 0 || sysPara->para.synPulseNumPerMm == 0)
|
||||||
|
return 600.0f;
|
||||||
|
|
||||||
|
double freq = (FPGA_SYS_HZ/(sysPara->para.divideRatio*2));
|
||||||
|
double ddotNumPerCol = sysPara->status.currPrintRow - (sysPara->status.currPrintRow * sysPara->para.reducedPixelNumRatio / 100.0);
|
||||||
|
pulseNum = sysPara->para.printColDelay / sysPara->para.synPulseNumPerMm / 1000.0 * freq / ddotNumPerCol * 60.0;
|
||||||
|
return qBound(0.0, pulseNum, 600.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int reclaimTankDelay = 0;
|
static int reclaimTankDelay = 0;
|
||||||
@@ -792,8 +798,8 @@ void MainWindow::updateSysStatusToUI(){ //100ms
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int pulsePS = getMaxSpeedCalcPara();//No67
|
double speed = getMaxSpeedCalcPara();//No67
|
||||||
maxMM = (pulsePS/sysPara->para.synPulseNumPerMm) * 60;// 列的最大间距
|
maxMM = int(speed * 1000.0);
|
||||||
}
|
}
|
||||||
ui->labelSynRate->setText(tr("%1.%2[%3.%4]米/分").arg(mm/1000).arg(mm%1000,3,10,QLatin1Char('0'))
|
ui->labelSynRate->setText(tr("%1.%2[%3.%4]米/分").arg(mm/1000).arg(mm%1000,3,10,QLatin1Char('0'))
|
||||||
.arg(maxMM/1000).arg(maxMM%1000,3,10,QLatin1Char('0')));
|
.arg(maxMM/1000).arg(maxMM%1000,3,10,QLatin1Char('0')));
|
||||||
@@ -846,8 +852,8 @@ void MainWindow::updateSysStatusToUI(){ //100ms
|
|||||||
emit readFPGAVersionReady();
|
emit readFPGAVersionReady();
|
||||||
logflag5 = false;
|
logflag5 = false;
|
||||||
sysPara->devOp->writeFpgaPrintPara(true);
|
sysPara->devOp->writeFpgaPrintPara(true);
|
||||||
QString ARM_Version;
|
QString ARM_Version = SUB_RFID;
|
||||||
ARM_Version.sprintf("%d.%d.%02d%s%s", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION,SUB_RFID);
|
// ARM_Version.sprintf("%d.%d.%02d%s%s", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION,SUB_RFID);
|
||||||
ui->labelFpgaVersionNum->setText(QString("A%1/F%2.%3.%4").arg(ARM_Version).arg(sysPara->status.fpgaVersionNum >> 12)
|
ui->labelFpgaVersionNum->setText(QString("A%1/F%2.%3.%4").arg(ARM_Version).arg(sysPara->status.fpgaVersionNum >> 12)
|
||||||
.arg((sysPara->status.fpgaVersionNum>>8) & 0x0f).arg(sysPara->status.fpgaVersionNum&0xff) );
|
.arg((sysPara->status.fpgaVersionNum>>8) & 0x0f).arg(sysPara->status.fpgaVersionNum&0xff) );
|
||||||
}
|
}
|
||||||
@@ -4621,8 +4627,8 @@ void MainWindow::UpdateUIVersion(){
|
|||||||
QString STM32Ver = QString("S:%1.%2.%3_B%4").arg((sysPara->status.stm32Verion>>16)&0x7F)
|
QString STM32Ver = QString("S:%1.%2.%3_B%4").arg((sysPara->status.stm32Verion>>16)&0x7F)
|
||||||
.arg((sysPara->status.stm32Verion>>8) & 0xFF).arg(sysPara->status.stm32Verion&0xFF).arg(baudRateValue);
|
.arg((sysPara->status.stm32Verion>>8) & 0xFF).arg(sysPara->status.stm32Verion&0xFF).arg(baudRateValue);
|
||||||
|
|
||||||
QString VernonBach;
|
QString VernonBach = SUB_RFID;
|
||||||
VernonBach.sprintf("A%d.%d.%02d%s%s", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION,SUB_RFID);
|
// VernonBach.sprintf("A%d.%d.%02d%s%s", UP_PRINTER_MAJOR_VER, UP_PRINTER_MINOR_VER,UP_PRINTER_RIVISION_VER,SUB_VERSION,SUB_RFID);
|
||||||
|
|
||||||
QString Mac = QString::number(sysPara->status.machineMac);
|
QString Mac = QString::number(sysPara->status.machineMac);
|
||||||
LogInfo::showVerionInformation(Mac,VernonBach,fpgaVersion,STM32Ver,sysPara->status.flagOfPowerOnMode);
|
LogInfo::showVerionInformation(Mac,VernonBach,fpgaVersion,STM32Ver,sysPara->status.flagOfPowerOnMode);
|
||||||
|
|||||||
+1
-1
@@ -63,7 +63,7 @@ public:
|
|||||||
void enableReclaimCtrlButton(bool enable);
|
void enableReclaimCtrlButton(bool enable);
|
||||||
void resetReclaimCtrlButtonText();
|
void resetReclaimCtrlButtonText();
|
||||||
void enablePushButtonStart(bool enable);
|
void enablePushButtonStart(bool enable);
|
||||||
int getMaxSpeedCalcPara();
|
double getMaxSpeedCalcPara();
|
||||||
|
|
||||||
void PreviewPressed();
|
void PreviewPressed();
|
||||||
int getCurrPrintStatus();
|
int getCurrPrintStatus();
|
||||||
|
|||||||
+1
-1
@@ -301,7 +301,7 @@ QTabBar::tab:selected {background-color: rgb(255, 170, 127)}
|
|||||||
QTabBar::tab:!selected {margin-top: 5px;}</string>
|
QTabBar::tab:!selected {margin-top: 5px;}</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="currentIndex">
|
<property name="currentIndex">
|
||||||
<number>2</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="tab_3">
|
<widget class="QWidget" name="tab_3">
|
||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
|
|||||||
Reference in New Issue
Block a user