Merge branch 'PureCode' of http://x-copper.cn:8418/WolfSpirit/EJM_Display into PureCode

This commit is contained in:
2025-10-20 22:29:29 +08:00
17 changed files with 451 additions and 1 deletions

View File

@@ -169,6 +169,7 @@ void P401_CuttingPage::UIRefreshTimeOut()
{
if(!gPageIndexStr.contains("P04"))
return;
<<<<<<< HEAD
// 使用多核心管理器异步获取切割页面数据
//MultiCoreManager::instance()->submitTask([this]() {
@@ -277,6 +278,85 @@ void P401_CuttingPage::TrailRefreshTimeOut(){
ui->Cut_CPW_1->appendPoint(1, getNodeValue("IN_PhaseCut.Filtered30_V") .toReal());
ui->Cut_CPW_1->appendPoint(2, getNodeValue("IN_PhaseCut.Filtered30_W") .toReal());
ui->Cut_CPW_2->appendPoint(0,getNodeValue("IN_PhaseCut.Filtered_Temp") .toDouble());
=======
/************************************* 电机基本信息 *************************************/
// 从OPC节点获取切割设备电机相关的状态数据32位无符号整数
uint32_t PB_Group1 = getNodeValue("PB_Curr_Cut.PageGroup1").toUInt(); // 电流显示组1数据
uint32_t PB_Group2 = getNodeValue("PB_Curr_Cut.PageGroup2").toUInt(); // 电流显示组2数据
uint32_t PB_MotorTemp = getNodeValue("PB_Temp_Cut.PageGroup").toUInt(); // 电机温度显示数据
uint32_t SSConditions = getNodeValue("StartStopConditions.Cut").toUInt(); // 启停条件状态数据
// 从32位数据中提取16位百分比值高16位和低16位拆分
uint16_t PercentageCurU = static_cast<uint16_t>(PB_Group1 >> 16); // U相电流百分比高16位
uint16_t PercentageCurV = static_cast<uint16_t>(PB_Group1 & 0xFFFF); // V相电流百分比低16位
uint16_t PercentageCurW = static_cast<uint16_t>(PB_Group2 >> 16); // W相电流百分比高16位
uint16_t PercentageTmpColor = static_cast<uint16_t>(PB_Group2 & 0xFFFF); // 温度颜色百分比低16位
uint16_t PercentageMotorTemp= static_cast<uint16_t>(PB_MotorTemp >> 16); // 电机温度百分比高16位
uint16_t ColorTemp = static_cast<uint16_t>(PB_MotorTemp & 0xFFFF); // 温度颜色值低16位
// 解析颜色值(从百分比中提取个位、十位、百位)
uint8_t ColorU = (PercentageTmpColor / 10) % 10; // U相颜色值十位
uint8_t ColorV = (PercentageTmpColor / 100) % 10; // V相颜色值百位
uint8_t ColorW = PercentageTmpColor % 10; // W相颜色值个位
// 设置进度条显示(电流和温度)
SetProgressBar(ui->PB_Cur_1, PercentageCurU, ColorU, glMotorCurColor); // U相电流进度条
SetProgressBar(ui->PB_Cur_2, PercentageCurV, ColorV, glMotorCurColor); // V相电流进度条
SetProgressBar(ui->PB_Cur_3, PercentageCurW, ColorW, glMotorCurColor); // W相电流进度条
SetProgressBar(ui->PB_Temp, PercentageMotorTemp, ColorTemp, glMotorTempColor); // 电机温度进度条
// 在LCD上显示实际测量值电流和温度
ui->LCD_Cur_1->display(getNodeValue("IN_PhaseCut.Filtered30_U").toReal()); // U相电流实际值
ui->LCD_Cur_2->display(getNodeValue("IN_PhaseCut.Filtered30_V").toReal()); // V相电流实际值
ui->LCD_Cur_3->display(getNodeValue("IN_PhaseCut.Filtered30_W").toReal()); // W相电流实际值
ui->LCD_Temp->display(getNodeValue("IN_PhaseCut.Filtered_Temp").toReal()); // 电机温度实际值
// 更新32个启停条件状态标签的显示样式
for (int i = 0; i < 32; ++i)
{
// 根据索引查找对应的标签控件
QLabel* Label = findChild<QLabel*>(QString("Text_SSConditions_%1").arg(i+1));
// 如果找到标签
if (Label){
// 基础样式:默认背景图
QString StyleStr = "border-image: url(:/Frames/null.png);\n";
// 根据状态位设置不同颜色True/False对应不同样式
StyleStr += getBitOf32Data(SSConditions, i, false) ? TrueColor[i] + "\n" : FalseColor[i] + "\n";
// 应用样式到标签
Label->setStyleSheet(StyleStr);
}
}
/**************************************************************************************/
/************************************ 截割油缸压力信息 ***********************************/
SetProgressBar(ui->PB_1,ui->LCD_1,"PB_Pressure_Cut.PageGroup","IN_Sersor.Pressure_Cut");
/**************************************************************************************/
/************************************ 掏槽油缸压力信息 ***********************************/
SetProgressBar(ui->PB_2,ui->LCD_2,"PB_Pressure_Cutt.PageGroup","IN_Sersor.Pressure_Cutt");
/**************************************************************************************/
/************************************ 截割喷雾压力信息 ***********************************/
SetProgressBar(ui->PB_3,ui->LCD_3,"PB_Pressure_CutSpray.PageGroup","IN_Sersor.Pressure_CutSpray");
/**************************************************************************************/
/************************************ 截割喷雾流量信息 ***********************************/
SetProgressBar(ui->PB_4,ui->LCD_4,"PB_SprayFlow_Cut.PageGroup","IN_Sersor.SprayFlow_Cut");
/**************************************************************************************/
}
void P401_CuttingPage::TrailRefreshTimeOut(){
ui->CPW_1->appendPoint(0, getNodeValue("IN_PhaseCut.Filtered30_U") .toReal());
ui->CPW_1->appendPoint(1, getNodeValue("IN_PhaseCut.Filtered30_V") .toReal());
ui->CPW_1->appendPoint(2, getNodeValue("IN_PhaseCut.Filtered30_W") .toReal());
ui->CPW_2->appendPoint(0,getNodeValue("IN_PhaseCut.Filtered_Temp") .toDouble());
>>>>>>> f88b815723b08bbfe04dcdec05fc5555cef9352c
}