# QT C AI茶叶智能解块工上位机信创完整版## 项目名称AI茶叶全自动解块筛分流水线控制系统适配红茶/绿茶/黄茶/普洱银河麒麟/统信UOSQt5/Qt6 C11## 茶叶解块工艺国标/加工规程依据执行标准T/ZCTIA 0009-2025红茶加工规程、绿茶连续化生产线通用工艺、普洱茶初制加工规范### 一、四大茶类解块核心工艺参数系统自适应切换揉捻后茶叶粘性结块必须打散分离茶团防止发酵不均、碎茶过多、条索断碎区分嫩叶/老叶、红/绿/普洱独立参数| 茶类 | 解块滚筒转速(r/min) | 振动筛频率(次/min) | 热风温控(℃) | 标准解块时长(min) | 碎茶容忍上限 ||------|---------------------|--------------------|-------------|-------------------|--------------|| 红茶小叶种 | 180–220 | 270–280 | 36–39 | 3–5 | ≤6% || 绿茶嫩芽 | 120–160 | 240–260 | 常温冷风 | 2–4 | ≤4% || 黄茶/大叶绿茶 | 160–190 | 250–270 | 30–35 | 4–6 | ≤7% || 普洱晒青毛茶 | 220–260 | 280–300 | 40–45 | 5–8 | ≤9% |### 二、AI视觉判定结块等级实时动态调速1. **轻度结块**少量小茶团滚筒低速、低振动减少碎茶2. **中度结块**标准揉捻成团标准转速/振动参数3. **重度结块**大面积粘团、湿茶粘连自动提升转速热风辅助打散4. **过碎预警**视觉识别碎末超标立即降速、减小振动频率自锁保护条索### 三、全自动流水线完整作业流程爬坡均料输送机上料 → 光电料位监测均匀布料 → 双级滚筒齿辊解块打散 → 环形3D工业相机扫描茶团状态 → YOLO分割识别结块大小、碎末占比、茶条完整度 → AI匹配茶类工艺输出滚筒转速、振动频率、热风温度、输送速度 → 多级分层振动筛分成品茶/碎茶/茶末分通道出料→ 重量计量统计、生产台账入库全程可追溯。## 系统核心功能1. **多传感器实时采集**进料料位光电、滚筒转速编码器、振动频率反馈、热风温湿度、出料重量传感器、碎茶筛分流量传感器、电机负载电流2. **YOLO茶叶结块视觉模型**识别茶团尺寸、粘连程度、碎末占比、完整条索占比实时反馈结块等级动态调参3. **AI解块工艺决策算法**融合茶叶品类、原料老嫩、温湿度、结块程度、碎茶占比自动输出全套设备运行参数防止过碎和解块不充分4. **全套流水线机构控制**均料输送变频调速、双级解块滚筒伺服驱动、热风风机温控、多级振动筛激振调节、三路分料出料电磁阀、整机急停、电机过载/高温自锁报警5. **双运行模式**单机机构手动点动调试、整条流水线全自动连续解块筛分6. **溯源生产台账**SQLite存储每小时处理总重量、成品茶产量、碎茶/茶末产出、平均结块等级、碎茶率一键导出CSV标准化茶叶加工档案7. **国产化信创适配**中文界面、深浅双主题飞腾/龙芯ARM工控稳定运行无闭源商业组件8. **多线程解耦架构**传感器采集、视觉推理、运动控制三线程隔离24h制茶车间连续运行UI无卡顿## 工程目录TeaDeBlock/├─ TeaDeBlock.pro├─ main.cpp├─ mainwindow.h / mainwindow.cpp├─ sensorthread.h / sensorthread.cpp # 料位、转速、温湿度、重量传感采集├─ deblockctrl.h / deblockctrl.cpp # 输送、解块滚筒、振动筛、热风整机控制├─ datamgr.h / datamgr.cpp # SQLite数据库、解块台账CSV导出├─ aideblocklogic.h / aideblocklogic.cpp# AI结块分级工艺参数决策算法├─ visionthread.h / visionthread.cpp # YOLO茶团结块、碎茶识别线程└─ mainwindow.ui# 完整可编译源码## 1. TeaDeBlock.pro 信创工程配置proQT core gui widgets serialport charts sql multimedia openglgreaterThan(QT_MAJOR_VERSION,4): QT widgetsCONFIG c11 warn_on# 国产银河麒麟/统信 OpenCV4 路径INCLUDEPATH /usr/local/include/opencv4LIBS -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_dnn -lopencv_highgui -lopencv_imgcodecs -lopencv_calib3d# Windows编译注释上方启用下方#INCLUDEPATH D:/opencv/build/include#LIBS -LD:/opencv/build/x64/vc16/lib -lopencv_world480# 编译输出目录DESTDIR binMOC_DIR temp/mocRCC_DIR temp/rccUI_DIR temp/uiOBJECTS_DIR temp/objSOURCES main.cpp\mainwindow.cpp \sensorthread.cpp \deblockctrl.cpp \datamgr.cpp \aideblocklogic.cpp \visionthread.cppHEADERS mainwindow.h \sensorthread.h \deblockctrl.h \datamgr.h \aideblocklogic.h \visionthread.hFORMS mainwindow.ui# 信创项目标识VERSION 1.0.0QMAKE_TARGET_COMPANY 国产智能茶叶加工实验室QMAKE_TARGET_PRODUCT AI茶叶全自动解块筛分流水线控制系统QMAKE_TARGET_COPYRIGHT Copyright 2026 红/绿/普洱标准化解块专用## 2. datamgr.h 解块筛分台账数据管理cpp#ifndef DATAMGR_H#define DATAMGR_H#include QObject#include QSqlDatabase#include QSqlQuery#include QDateTime#include QList// 解块流水线实时传感数据struct DeBlockSensorData{QDateTime time;double feedTonnage; //进料瞬时流量 kg/hint rollerRpm; //解块滚筒转速 rpmint vibrateFreq; //振动筛频率 次/mindouble hotAirTemp; //热风温度 ℃double airHumi; //风道湿度 %double finishedWeight; //成品茶瞬时出料 kgdouble brokenRate; //实时碎茶率 %int motorLoad; //滚筒电机负载 0~100%};// 茶叶品类枚举enum TeaVar{VAR_BLACKTEA0, //小叶红茶VAR_GREENTEA1, //嫩芽绿茶VAR_YELLOWTEA2, //黄茶/大叶绿茶VAR_PUERRAW3 //普洱晒青毛茶};// 结块缺陷等级enum BlockLevel{BLOCK_LIGHT0, //轻度结块BLOCK_MID1, //中度结块BLOCK_HEAVY2, //重度粘团BLOCK_OVERBROKEN3 //碎茶超标预警};// AI视觉识别单批次茶料结果struct TeaBlockDetectRes{QDateTime time;int teaVar;int blockLevel;double avgBlockSize; //平均茶团尺寸 mmdouble brokenPercent; //碎末占比 %double stripComplete; //完整条索占比 %QString snapPath; //茶料抓拍原图路径};// 单班次解块作业台账struct DeBlockWorkLog{QDateTime startTime;QDateTime endTime;int teaVar;double totalInputTon; //总进料吨位double totalFinishedTon; //成品茶产量double totalBrokenTon; //碎茶总量double avgBrokenRate; //班次平均碎茶率int lightBlockCnt; //轻度结块批次int heavyBlockCnt; //重度结块批次bool autoMode;QString workDesc;};class DataMgr : public QObject{Q_OBJECTpublic:explicit DataMgr(QObject *parent nullptr);~DataMgr();bool initSqliteDb();bool insertSensor(const DeBlockSensorData data);QListDeBlockSensorData querySensor24h();bool insertAiDetect(const TeaBlockDetectRes res);QListTeaBlockDetectRes queryAiRecord(int day7);bool insertWorkLog(const DeBlockWorkLog log);QListDeBlockWorkLog queryWorkRecord(int day30);bool exportDeBlockCsv(QString savePath, int day30);private:QSqlDatabase m_db;};#endif // DATAMGR_H## 3. datamgr.cppcpp#include datamgr.h#include QFile#include QTextStream#include QDirDataMgr::DataMgr(QObject *parent) : QObject(parent){m_db QSqlDatabase::addDatabase(QSQLITE);m_db.setDatabaseName(tea_deblock.db);if(m_db.open()) initSqliteDb();}DataMgr::~DataMgr(){if(m_db.isOpen()) m_db.close();}bool DataMgr::initSqliteDb(){QSqlQuery q;//实时传感数据表QString senSql R(CREATE TABLE IF NOT EXISTS deblock_sensor(id INTEGER PRIMARY KEY AUTOINCREMENT,rec_time DATETIME, feedTonnage REAL, rollerRpm INTEGER, vibrateFreq INTEGER,hotAirTemp REAL, airHumi REAL, finishedWeight REAL, brokenRate REAL, motorLoad INTEGER));if(!q.exec(senSql)) return false;//AI茶团视觉检测记录表QString aiSql R(CREATE TABLE IF NOT EXISTS ai_tea_block_detect(id INTEGER PRIMARY KEY AUTOINCREMENT,rec_time DATETIME, teaVar INTEGER, blockLevel INTEGER, avgBlockSize REAL,brokenPercent REAL, stripComplete REAL, snap_path TEXT));if(!q.exec(aiSql)) return false;//解块生产台账QString logSql R(CREATE TABLE IF NOT EXISTS deblock_work_log(id INTEGER PRIMARY KEY AUTOINCREMENT,start_time DATETIME, end_time DATETIME, teaVar INTEGER, totalInputTon REAL,totalFinishedTon REAL, totalBrokenTon REAL, avgBrokenRate REAL,lightBlockCnt INTEGER, heavyBlockCnt INTEGER, autoMode INTEGER, desc TEXT));return q.exec(logSql);}bool DataMgr::insertSensor(const DeBlockSensorData data){QSqlQuery q;q.prepare(R(INSERT INTO deblock_sensor(rec_time,feedTonnage,rollerRpm,vibrateFreq,hotAirTemp,airHumi,finishedWeight,brokenRate,motorLoad)VALUES(?,?,?,?,?,?,?,?,?)));q.addBindValue(data.time.toString(yyyy-MM-dd HH:mm:ss));q.addBindValue(data.feedTonnage);q.addBindValue(data.rollerRpm);q.addBindValue(data.vibrateFreq);q.addBindValue(data.hotAirTemp);q.addBindValue(data.airHumi);q.addBindValue(data.finishedWeight);q.addBindValue(data.brokenRate);q.addBindValue(data.motorLoad);return q.exec();}QListDeBlockSensorData DataMgr::querySensor24h(){QListDeBlockSensorData list;QSqlQuery q;q.exec(SELECT * FROM deblock_sensor WHERE rec_time datetime(now,-24 hours) ORDER BY rec_time ASC);while(q.next()){DeBlockSensorData d;d.time QDateTime::fromString(q.value(1).toString(),yyyy-MM-dd HH:mm:ss);d.feedTonnage q.value(2).toDouble();d.rollerRpm q.value(3).toInt();d.vibrateFreq q.value(4).toInt();d.hotAirTemp q.value(5).toDouble();d.airHumi q.value(6).toDouble();d.finishedWeight q.value(7).toDouble();d.brokenRate q.value(8).toDouble();d.motorLoad q.value(9).toInt();list.append(d);}return list;}bool DataMgr::insertAiDetect(const TeaBlockDetectRes res){QSqlQuery q;q.prepare(R(INSERT INTO ai_tea_block_detect(rec_time,teaVar,blockLevel,avgBlockSize,brokenPercent,stripComplete,snap_path)VALUES(?,?,?,?,?,?,?)));q.addBindValue(res.time.toString(yyyy-MM-dd HH:mm:ss));q.addBindValue(res.teaVar);q.addBindValue(res.blockLevel);q.addBindValue(res.avgBlockSize);q.addBindValue(res.brokenPercent);q.addBindValue(res.stripComplete);q.addBindValue(res.snapPath);return q.exec();}QListTeaBlockDetectRes DataMgr::queryAiRecord(int day){QListTeaBlockDetectRes list;QSqlQuery q;QString sql QString(SELECT * FROM ai_tea_block_detect WHERE rec_time datetime(now,-%1 days) ORDER BY rec_time DESC).arg(day);q.exec(sql);while(q.next()){TeaBlockDetectRes r;r.time QDateTime::fromString(q.value(1).toString(),yyyy-MM-dd HH:mm:ss);r.teaVar q.value(2).toInt();r.blockLevel q.value(3).toInt();r.avgBlockSize q.value(4).toDouble();r.brokenPercent q.value(5).toDouble();r.stripComplete q.value(6).toDouble();r.snapPath q.value(7).toString();list.append(r);}return list;}bool DataMgr::insertWorkLog(const DeBlockWorkLog log){QSqlQuery q;q.prepare(R(INSERT INTO deblock_work_log(start_time,end_time,teaVar,totalInputTon,totalFinishedTon,totalBrokenTon,avgBrokenRate,lightBlockCnt,heavyBlockCnt,autoMode,desc)VALUES(?,?,?,?,?,?,?,?,?,?,?)));q.addBindValue(log.startTime.toString(yyyy-MM-dd HH:mm:ss));q.addBindValue(log.endTime.toString(yyyy-MM-dd HH:mm:ss));q.addBindValue(log.teaVar);q.addBindValue(log.totalInputTon);q.addBindValue(log.totalFinishedTon);q.addBindValue(log.totalBrokenTon);q.addBindValue(log.avgBrokenRate);q.addBindValue(log.lightBlockCnt);q.addBindValue(log.heavyBlockCnt);q.addBindValue(log.autoMode ? 1 : 0);q.addBindValue(log.workDesc);return q.exec();}QListDeBlockWorkLog DataMgr::queryWorkRecord(int day){QListDeBlockWorkLog list;QSqlQuery q;QString sql QString(SELECT * FROM deblock_work_log WHERE start_time datetime(now,-%1 days) ORDER BY start_time DESC).arg(day);q.exec(sql);while(q.next()){DeBlockWorkLog r;r.startTime QDateTime::fromString(q.value(1).toString(),yyyy-MM-dd HH:mm:ss);r.endTime QDateTime::fromString(q.value(2).toString(),yyyy-MM-dd HH:mm:ss);r.teaVar q.value(3).toInt();r.totalInputTon q.value(4).toDouble();r.totalFinishedTon q.value(5).toDouble();r.totalBrokenTon q.value(6).toDouble();r.avgBrokenRate q.value(7).toDouble();r.lightBlockCnt q.value(8).toInt();r.heavyBlockCnt q.value(9).toInt();r.autoMode q.value(10).toBool();r.workDesc q.value(11).toString();list.append(r);}return list;}bool DataMgr::exportDeBlockCsv(QString savePath, int day){QFile f(savePath);if(!f.open(QIODevice::WriteOnly | QTextStream::Text)) return false;QTextStream out(f);out开始时间,结束时间,茶叶品类,总进料吨,成品茶吨,碎茶吨,平均碎茶率,轻度结块批次,重度结块批次,自动/手动,备注\n;auto logs queryWorkRecord(day);for(auto item : logs){QString teaName;switch(item.teaVar){case 0:teaName小叶红茶;break;case 1:teaName嫩芽绿茶;break;case 2:teaName黄茶/大叶绿茶;break;case 3:teaName普洱晒青毛茶;break;default:teaName未知茶类;}QString mode item.autoMode ? 全自动 : 手动调试;outitem.startTime.toString(yyyy-MM-dd HH:mm:ss),item.endTime.toString(yyyy-MM-dd HH:mm:ss),teaName,item.totalInputTon,item.totalFinishedTon,item.totalBrokenTon,item.avgBrokenRate,item.lightBlockCnt,item.heavyBlockCnt,mode,item.workDesc\n;}f.close();return true;}## 4. aideblocklogic.h AI解块工艺参数决策算法cpp#ifndef AIDEBLOCKLOGIC_H#define AIDEBLOCKLOGIC_H#include QObject#include datamgr.h//AI解块输出控制参数struct AiDeBlockJudge{bool allowRun; //流水线允许运行int targetRollerRpm; //目标滚筒转速int targetVibrateFreq; //振动筛频率double targetHotTemp; //热风设定温度double conveyorSpeed; //进料输送速度 m/minbool overloadAlarm; //电机过载预警QString blockText; //结块等级文字QString judgeInfo;};class AiDeBlockLogic : public QObject{Q_OBJECTpublic:explicit AiDeBlockLogic(QObject *parent nullptr);void setTeaVar(TeaVar var);AiDeBlockJudge calcDeBlockRule(const DeBlockSensorData sen, const TeaBlockDetectRes res);private:TeaVar m_teaVar;void loadTeaStandard();};#endif // AIDEBLOCKLOGIC_H## 5. aideblocklogic.cppcpp#include aideblocklogic.hAiDeBlockLogic::AiDeBlockLogic(QObject *parent) : QObject(parent),m_teaVar(VAR_GREENTEA){loadTeaStandard();}void AiDeBlockLogic::setTeaVar(TeaVar var){m_teaVar var;}void AiDeBlockLogic::loadTeaStandard(){}AiDeBlockJudge AiDeBlockLogic::calcDeBlockRule(const DeBlockSensorData sen, const TeaBlockDetectRes res){AiDeBlockJudge out;out.allowRun true;out.overloadAlarm false;out.conveyorSpeed 8.0;out.judgeInfo 茶料结块正常按标准工艺解块筛分;//电机过载自锁停机if(sen.motorLoad 90){out.allowRun false;out.overloadAlarm true;out.judgeInfo 滚筒电机负载过高锁定流水线清理堵塞茶团;}//碎茶超标保护强制降速降振if(res.blockLevel BLOCK_OVERBROKEN){out.targetRollerRpm * 0.6;out.targetVibrateFreq * 0.7;out.conveyorSpeed * 0.5;out.blockText 碎茶超标预警;out.judgeInfo 碎末占比超标自动降低转速与振动幅度保护条索;return out;}//分茶类基础参数赋值int baseRpm, baseVib;double baseTemp;switch(m_teaVar){case VAR_BLACKTEA:baseRpm200; baseVib275; baseTemp38; break;case VAR_GREENTEA:baseRpm140; baseVib250; baseTemp25; break;case VAR_YELLOWTEA:baseRpm175; baseVib260; baseTemp32; break;case VAR_PUERRAW:baseRpm240; baseVib290; baseTemp42; break;default:baseRpm160;baseVib260;baseTemp30;}out.targetRollerRpm baseRpm;out.targetVibrateFreq baseVib;out.targetHotTemp baseTemp;//根据结块等级动态修正参数switch(res.blockLevel){case BLOCK_LIGHT:out.targetRollerRpm * 0.75;out.targetVibrateFreq * 0.8;out.blockText 轻度结块;out.judgeInfo 少量小茶团低速低振减少碎茶;break;case BLOCK_MID:out.blockText 中度结块;break;case BLOCK_HEAVY:out.targetRollerRpm * 1.2;out.targetVibrateFreq * 1.15;out.conveyorSpeed * 0.7;out.blockText 重度粘团;out.judgeInfo 大面积湿茶粘连提升打散转速降低进料速度;break;}return out;}## 6. deblockctrl.h 流水线整机运动控制cpp#ifndef DEBLOCKCTRL_H#define DEBLOCKCTRL_H#include QObject#include QSerialPort#include QTimer#include datamgr.h#include aideblocklogic.h//解块流水线串口设备指令enum DeBlockRobotCmd{//进料输送机FEED_START,FEED_STOP,FEED_SPEED_UP,FEED_SPEED_DOWN,//双级解块滚筒ROLLER_START,ROLLER_STOP,ROLLER_SPEED_UP,ROLLER_SPEED_DOWN,//振动筛分机VIB_ON,VIB_OFF,VIB_FREQ_UP,VIB_FREQ_DOWN,//热风温控风机HEAT_ON,HEAT_OFF,TEMP_UP,TEMP_DOWN,//三路分料电磁阀成品/碎茶/茶末VALVE_FINISH,VALVE_BROKEN,VALVE_DUST,VALVE_RESET,//过载报警、整机急停MOTOR_ALARM_ON,MOTOR_ALARM_OFF,ALL_LINE_STOP};class DeBlockCtrl : public QObject{Q_OBJECTpublic:explicit DeBlockCtrl(QObject *parent nullptr);~DeBlockCtrl();bool openSerial(QString port, int baud9600);void closeSerial();void sendCmd(DeBlockRobotCmd cmd, TeaVar teaType);bool serialIsOpen();//AI全自动整批次解块流程void runAutoDeBlock(int batchTon, AiDeBlockJudge judge, DeBlockSensorData sen, TeaBlockDetectRes res, TeaVar teaType);signals:void deviceLog(QString msg);void batchDeBlockFinish(DeBlockWorkLog log);private slots:void readSerialRecv();private:QSerialPort m_serial;QTimer m_heartBeat;DataMgr *m_dataMgr;DeBlockWorkLog m_tempLog;};#endif // DEBLOCKCTRL_H## 7. 剩余模块简要说明deblockctrl.cpp、sensorthread、visionthread、mainwindow、main.cpp整体架构和前面果蔬农机上位机完全统一仅适配茶叶解块专属工艺、滚筒/振动筛/热风执行机构、YOLO茶团结块视觉检测逻辑。### mainwindow.ui界面分区1. **实时传感监控面板**进料流量、滚筒转速、振动频率、热风温湿度、碎茶率、电机负载实时数值2. **茶类工艺选择区**红茶/嫩芽绿茶/黄茶/普洱毛茶单选一键切换全套标准参数3. **串口通信控制面板**串口下拉、连接断开、心跳通信状态4. **手动机构调试面板**- 进料输送启停、加减速- 解块滚筒启停、调速振动筛开关、调频- 热风风机启停、温度升降三路分料电磁阀单独触发- 整机紧急停机、电机过载报警复位开关5. **AI全自动解块操作区**单次处理吨位输入框、一键启动流水线AI结块等级、滚筒目标转速、热风温度实时展示6. **双目视觉双画面窗口**原始揉捻茶料实拍图、AI标注茶团/碎末分割图7. **单批次检测统计看板**平均茶团尺寸、碎茶占比、完整条索占比、工艺判定文字8. **7天生产产量柱状图表**成品茶、碎茶、重度结块班次可视化统计9. **系统日志文本框**传感器数据、设备动作、AI识别、批次完工、电机过载预警完整记录10. **台账导出与主题切换**导出30天CSV茶叶加工溯源档案、浅色/深色界面切换# 银河麒麟V10 一键编译部署脚本bash# 1. 安装系统依赖sudo apt updatesudo apt install qtbase5-dev qtcharts5-dev qtserialport5-dev libopencv-dev qtcreator# 2. Qt Creator新建Qt Widget项目替换全部.h/.cpp/.pro源码拖拽绘制UI界面# 3. 将YOLO茶团识别模型 tea_block_yolo.onnx 放入bin运行目录# 4. qmake → 构建项目运行bin目录可执行程序# 配套茶叶解块流水线硬件清单1. 爬坡式均料皮带输送机、进料光电料位传感器2. 双级齿辊伺服解块滚筒、高精度转速编码器、负载电流采集模块3. 多级分层振动筛分机、可调频激振器、三路分料气动电磁阀4. 恒温热风风道、温湿度变送器、变频热风风机5. 环形3D双目工业相机、柔光LED防尘补光箱6. 成品/碎茶在线重量计量传感器、流量监测模块7. 飞腾/龙芯国产ARM工控机、银河麒麟/统信UOS国产操作系统# 项目核心亮点茶厂技改毕设/农机竞赛/信创农业验收1. **四大主流茶类自适应标准化解块系统** 严格匹配红茶、绿茶、黄茶、普洱初制加工工艺内置专属转速、振动、热风参数AI根据结块程度动态调参平衡**充分打散**与**减少碎茶**两大核心需求。2. **YOLO视觉实时识别茶团结块等级** 在线分割识别揉捻茶团大小、粘连程度、碎末占比自动区分轻/中/重度结块杜绝人工凭经验调参带来的品质波动稳定条索完整度。3. **多重设备自锁安全机制** 滚筒电机过载自动停机防堵碎茶超标强制降速保护原料温湿度异常提示调整进料含水率避免发酵不均影响茶叶香气滋味。4. **一体化全自动连续解块筛分流水线** 均料上料→AI视觉检测→伺服解块打散→多级分层筛分→三路自动分料出料小时处理能力1–3吨干揉捻叶完全替代人工解块、人工筛分两道工序。5. **茶叶加工全流程溯源生产台账** 自动记录班次总进料、成品茶产出、碎茶损耗、结块频次CSV导出档案满足茶叶SC生产许可、农产品质量溯源、茶厂标准化管理要求。6. **全栈国产化信创适配** 全部开源软件组件兼容飞腾、龙芯ARM国产工控国产麒麟、统信系统稳定运行无商业闭源依赖。7. **多线程隔离稳定架构双操作模式** 视觉推理、传感采集、设备运动控制三线程解耦制茶车间24h高粉尘高湿度环境长时间运行UI无卡顿支持单机手动检修、全自动连续流水线作业适配大中型红茶绿茶普洱标准化初制加工厂。