Bladeren bron

中转车隐藏和工位修改

liuwei 2 weken geleden
bovenliggende
commit
dae93971e2

+ 44 - 29
src/com/mes/component/PlcSignalMonitor.java

@@ -1,11 +1,14 @@
 package com.mes.component;
 
 import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
+import com.mes.ui.MesClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.swing.*;
 import java.awt.*;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * PLC信号监控组件
@@ -138,20 +141,21 @@ public class PlcSignalMonitor {
      * 创建信号详情面板
      */
     private JPanel createSignalDetailPanel() {
-        String[][] signals = {
-            {"请求扫码", plcDb + ".0.0", "PLC→MES"},
-            {"下料信号", plcDb + ".0.1", "PLC→MES"},
-            {"设备运行", plcDb + ".0.2", "PLC→MES"},
-            {"设备通讯", plcDb + ".0.3", "PLC状态"},
-            {"MES允许上料", plcDb + ".0.4", "MES→PLC"},
-            {"MES允许下料", plcDb + ".0.5", "MES→PLC"},
-            {"心跳信号", plcDb + ".0.6", "MES→PLC"},
-            {"上料到设备", plcDb + ".0.7", "PLC→MES"},
-            {"上料到中转车", plcDb + ".1.0", "PLC→MES"},
-            {"中转车上料到设备", plcDb + ".1.1", "PLC→MES"}
-        };
-        
-        JPanel panel = new JPanel(new GridLayout(signals.length + 1, 4, 5, 5));
+        List<String[]> signalList = new ArrayList<>();
+        signalList.add(new String[]{"请求扫码", plcDb + ".0.0", "PLC→MES"});
+        signalList.add(new String[]{"下料信号", plcDb + ".0.1", "PLC→MES"});
+        signalList.add(new String[]{"设备运行", plcDb + ".0.2", "PLC→MES"});
+        signalList.add(new String[]{"设备通讯", plcDb + ".0.3", "PLC状态"});
+        signalList.add(new String[]{"MES允许上料", plcDb + ".0.4", "MES→PLC"});
+        signalList.add(new String[]{"MES允许下料", plcDb + ".0.5", "MES→PLC"});
+        signalList.add(new String[]{"心跳信号", plcDb + ".0.6", "MES→PLC"});
+        signalList.add(new String[]{"上料到设备", plcDb + ".0.7", "PLC→MES"});
+        if (MesClient.transferEnabled) {
+            signalList.add(new String[]{"上料到中转车", plcDb + ".1.0", "PLC→MES"});
+            signalList.add(new String[]{"中转车上料到设备", plcDb + ".1.1", "PLC→MES"});
+        }
+
+        JPanel panel = new JPanel(new GridLayout(signalList.size() + 1, 4, 5, 5));
         panel.setBorder(BorderFactory.createTitledBorder(stationName + " 信号状态"));
         
         // 表头
@@ -172,18 +176,27 @@ public class PlcSignalMonitor {
         signal_toTransfer = createStatusLabel();
         signal_transferToDevice = createStatusLabel();
         
-        JLabel[] statusLabels = {
-            signal_feeding, signal_blanking, signal_running, signal_deviceStatus,
-            signal_allowFeeding, signal_allowBlanking, signal_heart,
-            signal_toDevice, signal_toTransfer, signal_transferToDevice
-        };
+        List<JLabel> statusLabels = new ArrayList<>();
+        statusLabels.add(signal_feeding);
+        statusLabels.add(signal_blanking);
+        statusLabels.add(signal_running);
+        statusLabels.add(signal_deviceStatus);
+        statusLabels.add(signal_allowFeeding);
+        statusLabels.add(signal_allowBlanking);
+        statusLabels.add(signal_heart);
+        statusLabels.add(signal_toDevice);
+        if (MesClient.transferEnabled) {
+            statusLabels.add(signal_toTransfer);
+            statusLabels.add(signal_transferToDevice);
+        }
         
         // 添加信号行
-        for (int i = 0; i < signals.length; i++) {
-            panel.add(new JLabel(signals[i][0], SwingConstants.CENTER));
-            panel.add(new JLabel(signals[i][1], SwingConstants.CENTER));
-            panel.add(new JLabel(signals[i][2], SwingConstants.CENTER));
-            panel.add(statusLabels[i]);
+        for (int i = 0; i < signalList.size(); i++) {
+            String[] signals = signalList.get(i);
+            panel.add(new JLabel(signals[0], SwingConstants.CENTER));
+            panel.add(new JLabel(signals[1], SwingConstants.CENTER));
+            panel.add(new JLabel(signals[2], SwingConstants.CENTER));
+            panel.add(statusLabels.get(i));
         }
         
         return panel;
@@ -229,8 +242,8 @@ public class PlcSignalMonitor {
             boolean allowBlanking = s7PLC.readBoolean(plcDb + ".0.5");
             boolean heart = s7PLC.readBoolean(plcDb + ".0.6");
             boolean toDevice = s7PLC.readBoolean(plcDb + ".0.7");
-            boolean toTransfer = s7PLC.readBoolean(plcDb + ".1.0");
-            boolean transferToDevice = s7PLC.readBoolean(plcDb + ".1.1");
+            boolean toTransfer = MesClient.transferEnabled && s7PLC.readBoolean(plcDb + ".1.0");
+            boolean transferToDevice = MesClient.transferEnabled && s7PLC.readBoolean(plcDb + ".1.1");
             
             // 在EDT线程中更新UI
             SwingUtilities.invokeLater(() -> {
@@ -242,8 +255,10 @@ public class PlcSignalMonitor {
                 updateStatusLabel(signal_allowBlanking, allowBlanking);
                 updateStatusLabel(signal_heart, heart);
                 updateStatusLabel(signal_toDevice, toDevice);
-                updateStatusLabel(signal_toTransfer, toTransfer);
-                updateStatusLabel(signal_transferToDevice, transferToDevice);
+                if (MesClient.transferEnabled) {
+                    updateStatusLabel(signal_toTransfer, toTransfer);
+                    updateStatusLabel(signal_transferToDevice, transferToDevice);
+                }
             });
             
         } catch (Exception e) {
@@ -269,7 +284,7 @@ public class PlcSignalMonitor {
         };
         
         for (JLabel label : labels) {
-            if (label != null) {
+            if (label != null && label.getParent() != null) {
                 label.setText("ERR");
                 label.setBackground(Color.ORANGE);
                 label.setForeground(Color.WHITE);

+ 15 - 12
src/com/mes/component/WorkJPanelOP40.java

@@ -24,7 +24,7 @@ public class WorkJPanelOP40 extends JPanel {
 
     public static final Logger log =  LoggerFactory.getLogger(WorkJPanelOP40.class);
 
-    public String oprno = "OP040";
+    public String oprno = "OP055";
 
     public String pos = "A";
 
@@ -364,6 +364,7 @@ public class WorkJPanelOP40 extends JPanel {
         feedingtotransferlabel.setForeground(Color.BLACK);
         feedingtotransferlabel.setBounds(0, 230, workWidth/3, 30);
         this.add(feedingtotransferlabel);
+        feedingtotransferlabel.setVisible(MesClient.transferEnabled);
 
         transfertodevicelabel = new JLabel("中转车上料到设备");
         transfertodevicelabel.setHorizontalAlignment(SwingConstants.LEFT);
@@ -371,6 +372,7 @@ public class WorkJPanelOP40 extends JPanel {
         transfertodevicelabel.setForeground(Color.BLACK);
         transfertodevicelabel.setBounds(workWidth/3, 230, workWidth/3, 30);
         this.add(transfertodevicelabel);
+        transfertodevicelabel.setVisible(MesClient.transferEnabled);
 
         // 手动提交按钮
         submitBtn = new JButton("提交");
@@ -482,9 +484,6 @@ public class WorkJPanelOP40 extends JPanel {
                         Boolean retFeeding = readFeeding();
                         feedinglabel.setIcon(retFeeding?imageGreen:imageGray);
 
-                        transferToDevice = readFeedingTransferToDevice();
-                        transfertodevicelabel.setIcon(transferToDevice?imageGreen:imageGray);
-
                         Boolean retFeedingAllow = readAllowFeeding();
                         feedingmeslabel.setIcon(retFeedingAllow?imageGreen:imageGray);
 
@@ -505,11 +504,15 @@ public class WorkJPanelOP40 extends JPanel {
                         toDevice = readFeedingToDevice();
                         feedingtodevicelabel.setIcon(toDevice?imageGreen:imageGray);
 
-                        toTransfer = readFeedingToTransfer();
-                        feedingtotransferlabel.setIcon(toTransfer?imageGreen:imageGray);
+                        toTransfer = MesClient.transferEnabled && readFeedingToTransfer();
+                        if (MesClient.transferEnabled) {
+                            feedingtotransferlabel.setIcon(toTransfer?imageGreen:imageGray);
+                        }
 
-                        transferToDevice = readFeedingTransferToDevice();
-                        transfertodevicelabel.setIcon(transferToDevice?imageGreen:imageGray);
+                        transferToDevice = MesClient.transferEnabled && readFeedingTransferToDevice();
+                        if (MesClient.transferEnabled) {
+                            transfertodevicelabel.setIcon(transferToDevice?imageGreen:imageGray);
+                        }
 
                         Boolean retRunning = readRunning();
                         runlabel.setIcon(retRunning?imageGreen:imageGray);
@@ -551,7 +554,7 @@ public class WorkJPanelOP40 extends JPanel {
                         }
 
 
-                        if(plcDb.equals("DB7005") && toTransfer){
+                        if(MesClient.transferEnabled && plcDb.equals("DB7005") && toTransfer){
                             // 工位F/L且去中转车:触发中转车扫码流程(码赋值给中转车,不影响工位6)
                             log.info("[{}]tjFeedingFlag=0且retFeeding=true且toTransfer=true,触发中转车扫码", oprno+pos);
                             barCodeForTransfer();
@@ -559,7 +562,7 @@ public class WorkJPanelOP40 extends JPanel {
 
                         if(tjFeedingFlag == 0){
                             if((toDevice || transferToDevice) && !retRunning){
-                                if(plcDb.equals("DB7005") && toTransfer){
+                                if(MesClient.transferEnabled && plcDb.equals("DB7005") && toTransfer){
 //                                    // 工位F/L且去中转车:触发中转车扫码流程(码赋值给中转车,不影响工位6)
 //                                    log.info("[{}]tjFeedingFlag=0且retFeeding=true且toTransfer=true,触发中转车扫码", oprno+pos);
 //                                    barCodeForTransfer();
@@ -589,7 +592,7 @@ public class WorkJPanelOP40 extends JPanel {
 //                                resetBtn.setEnabled(false);
                                 resetFeeding();
                             }
-                            if(toTransfer){ // 去中转台
+                            if(MesClient.transferEnabled && toTransfer){ // 去中转台
                                 int transferSn = readTransferNo();
                                 int transferFloor = readTransferFloor();
                                 log.info("[{}]去中转台: transferSn={}, transferFloor={}, tjTransferStatus={}", oprno+pos, transferSn, transferFloor, tjTransferStatus);
@@ -1092,7 +1095,7 @@ public class WorkJPanelOP40 extends JPanel {
             return "";
         }else{
             try{
-                if(transferToDevice){ // 中转车上料到设备
+                if(MesClient.transferEnabled && transferToDevice){ // 中转车上料到设备
                     int transferSn = readTransferNo();
                     int transferFloor = readTransferFloor();
                     log.info("[{}]中转车上料到设备: transferSn={}, transferFloor={}", oprno+pos, transferSn, transferFloor);

+ 1 - 1
src/com/mes/component/WorkJPanelOP40Transfer.java

@@ -21,7 +21,7 @@ public class WorkJPanelOP40Transfer extends JPanel {
 
     public static final Logger log = LoggerFactory.getLogger(WorkJPanelOP40Transfer.class);
 
-    public String oprno = "OP040";
+    public String oprno = "OP055";
 
     public String pos = "A";
 

+ 1 - 1
src/com/mes/component/WorkJPanelScan.java

@@ -24,7 +24,7 @@ public class WorkJPanelScan extends JPanel {
 
     public static final Logger log =  LoggerFactory.getLogger(WorkJPanelScan.class);
 
-    public String oprno = "OP040";
+    public String oprno = "OP055";
 
     public String pos = "A";
 

+ 25 - 25
src/com/mes/test/AlarmReadTest.java

@@ -15,7 +15,7 @@ import java.util.Scanner;
 
 /**
  * 报警信息读取测试类
- * 用于测试OP040设备的报警和刀具信息读取
+ * 用于测试OP055设备的报警和刀具信息读取
  * 
  * @author MES
  */
@@ -26,19 +26,19 @@ public class AlarmReadTest {
     // 所有可用设备列表
     private static final String[][] DEVICES = {
         // 西侧设备 (80.22.10.x)
-        {"OP040A", "opc.tcp://80.22.10.42:4840"},
-        {"OP040B", "opc.tcp://80.22.10.43:4840"},
-        {"OP040C", "opc.tcp://80.22.10.44:4840"},
-        {"OP040D", "opc.tcp://80.22.10.45:4840"},
-        {"OP040E", "opc.tcp://80.22.10.46:4840"},
-        {"OP040F", "opc.tcp://80.22.10.47:4840"},
+        {"OP055A", "opc.tcp://80.22.10.42:4840"},
+        {"OP055B", "opc.tcp://80.22.10.43:4840"},
+        {"OP055C", "opc.tcp://80.22.10.44:4840"},
+        {"OP055D", "opc.tcp://80.22.10.45:4840"},
+        {"OP055E", "opc.tcp://80.22.10.46:4840"},
+        {"OP055F", "opc.tcp://80.22.10.47:4840"},
         // 东侧设备 (80.23.10.x)
-        {"OP040G", "opc.tcp://80.23.10.42:4840"},
-        {"OP040H", "opc.tcp://80.23.10.43:4840"},
-        {"OP040I", "opc.tcp://80.23.10.44:4840"},
-        {"OP040J", "opc.tcp://80.23.10.45:4840"},
-        {"OP040K", "opc.tcp://80.23.10.46:4840"},
-        {"OP040L", "opc.tcp://80.23.10.47:4840"},
+        {"OP055G", "opc.tcp://80.23.10.42:4840"},
+        {"OP055H", "opc.tcp://80.23.10.43:4840"},
+        {"OP055I", "opc.tcp://80.23.10.44:4840"},
+        {"OP055J", "opc.tcp://80.23.10.45:4840"},
+        {"OP055K", "opc.tcp://80.23.10.46:4840"},
+        {"OP055L", "opc.tcp://80.23.10.47:4840"},
     };
     
     private static final String USERNAME = "OPCUA";
@@ -112,20 +112,20 @@ public class AlarmReadTest {
         System.out.println("║          CNC设备报警/刀具信息测试工具                    ║");
         System.out.println("╠════════════════════════════════════════════════════════╣");
         System.out.println("║  西侧设备 (80.22.10.x)                                   ║");
-        System.out.println("║    1. OP040A (80.22.10.42)                              ║");
-        System.out.println("║    2. OP040B (80.22.10.43)                              ║");
-        System.out.println("║    3. OP040C (80.22.10.44)                              ║");
-        System.out.println("║    4. OP040D (80.22.10.45)                              ║");
-        System.out.println("║    5. OP040E (80.22.10.46)                              ║");
-        System.out.println("║    6. OP040F (80.22.10.47)                              ║");
+        System.out.println("║    1. OP055A (80.22.10.42)                              ║");
+        System.out.println("║    2. OP055B (80.22.10.43)                              ║");
+        System.out.println("║    3. OP055C (80.22.10.44)                              ║");
+        System.out.println("║    4. OP055D (80.22.10.45)                              ║");
+        System.out.println("║    5. OP055E (80.22.10.46)                              ║");
+        System.out.println("║    6. OP055F (80.22.10.47)                              ║");
         System.out.println("╠════════════════════════════════════════════════════════╣");
         System.out.println("║  东侧设备 (80.23.10.x)                                   ║");
-        System.out.println("║    7. OP040G (80.23.10.42)                              ║");
-        System.out.println("║    8. OP040H (80.23.10.43)                              ║");
-        System.out.println("║    9. OP040I (80.23.10.44)                              ║");
-        System.out.println("║   10. OP040J (80.23.10.45)                              ║");
-        System.out.println("║   11. OP040K (80.23.10.46)                              ║");
-        System.out.println("║   12. OP040L (80.23.10.47)                              ║");
+        System.out.println("║    7. OP055G (80.23.10.42)                              ║");
+        System.out.println("║    8. OP055H (80.23.10.43)                              ║");
+        System.out.println("║    9. OP055I (80.23.10.44)                              ║");
+        System.out.println("║   10. OP055J (80.23.10.45)                              ║");
+        System.out.println("║   11. OP055K (80.23.10.46)                              ║");
+        System.out.println("║   12. OP055L (80.23.10.47)                              ║");
         System.out.println("╠════════════════════════════════════════════════════════╣");
         System.out.println("║    0. 退出程序                                          ║");
         System.out.println("╚════════════════════════════════════════════════════════╝");

+ 1 - 1
src/com/mes/ui/LoginFarme.java

@@ -26,7 +26,7 @@ public class LoginFarme extends JFrame {
     static JButton scanLoginButton = new JButton("扫  码  登  录");
 
     public LoginFarme(){
-        setTitle("MES系统客户端:OP40底板组件-CNC");
+        setTitle("MES系统客户端:OP055 CNC侧铣");
 
         ImageIcon bg = new ImageIcon(MesClient.class.getResource("/background.png"));
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

+ 43 - 30
src/com/mes/ui/MesClient.java

@@ -82,6 +82,8 @@ public class MesClient extends JFrame {
     // MES启用/屏蔽状态(true=启用,false=屏蔽)
     public static boolean mesEnabledWest = true;  // 西侧MES启用状态(A-F)
     public static boolean mesEnabledEast = true;  // 东侧MES启用状态(G-L)
+    // 中转车启用(false=隐藏中转UI并跳过中转业务;扫码逻辑不变)
+    public static boolean transferEnabled = false;
 
 
     public static WorkJPanelOP40 workJPanelOP40A;
@@ -209,6 +211,10 @@ public class MesClient extends JFrame {
 //        mes_tcp_port = Integer.parseInt(pro.getProperty("mes.tcp_port"));
 //        mes_heart_beat_cycle = Integer.parseInt(pro.getProperty("mes.heart_beat_cycle"));
         mes_line_sn = pro.getProperty("mes.line_sn");
+        if (pro.getProperty("mes.transfer_enabled") != null) {
+            transferEnabled = Boolean.parseBoolean(pro.getProperty("mes.transfer_enabled").trim());
+        }
+        log.info("中转车启用: {}", transferEnabled);
 
         // 读取OPC UA配置
         if (pro.getProperty("opcua.user") != null) {
@@ -746,7 +752,7 @@ public class MesClient extends JFrame {
     
     /**
      * 根据工位号获取当前加工的工件码
-     * @param oprno 工位号,如 "OP040A" 或 "OP040L"
+     * @param oprno 工位号,如 "OP055A" 或 "OP055L"
      * @return 工件码,如果没有则返回空字符串
      */
     public static String getSnByOprno(String oprno) {
@@ -965,7 +971,7 @@ public class MesClient extends JFrame {
 
     public MesClient() {
         setIconImage(Toolkit.getDefaultToolkit().getImage(MesClient.class.getResource("/bg/logo.png")));
-        setTitle("MES系统客户端:OP40底板组件-CNC");
+        setTitle("MES系统客户端:OP055 CNC侧铣");
 //        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 //        setBounds(0, 0, 1920, 1080);
         setBounds(0, 0, 1024, 768);
@@ -1190,7 +1196,7 @@ public class MesClient extends JFrame {
         indexPanel40D.add(workJPanelOP40D);
         indexPanel1.add(indexPanel40D);
 
-        tabbedPane.addTab("OP40:A-D", null, indexScrollPane1, null);
+        tabbedPane.addTab("OP055:A-D", null, indexScrollPane1, null);
         tabbedPane.setEnabledAt(0, true);
 
 
@@ -1232,7 +1238,7 @@ public class MesClient extends JFrame {
         indexPanel40H.add(workJPanelOP40H);
         indexPanel2.add(indexPanel40H);
 
-        tabbedPane.addTab("OP40:E-H", null, indexScrollPane2, null);
+        tabbedPane.addTab("OP055:E-H", null, indexScrollPane2, null);
 
 
 
@@ -1274,32 +1280,39 @@ public class MesClient extends JFrame {
         indexPanel40L.add(workJPanelOP40L);
         indexPanel3.add(indexPanel40L);
 
-        tabbedPane.addTab("OP40:I-L", null, indexScrollPane3, null);
+        tabbedPane.addTab("OP055:I-L", null, indexScrollPane3, null);
 
 
-        // 中转车 Tab 页
+        // 扫码站 Tab(中转车关闭时不创建中转车面板)
         JPanel indexPanelTransfer = new JPanel();
         JScrollPane indexScrollPaneTransfer = new JScrollPane(indexPanelTransfer);
-        indexPanelTransfer.setLayout(new GridLayout(2, 2, 5, 5));
         indexPanelTransfer.setBackground(Color.LIGHT_GRAY);
 
-        // 中转车1 - 连接PLC3(西侧192.168.90.83) DB7005
-        JPanel indexPanelTransfer1 = new JPanel();
-        indexPanelTransfer1.setLayout(null);
-        indexPanelTransfer1.setBackground(Color.WHITE);
-        workJPanelOP40Transfer1 = new WorkJPanelOP40Transfer("A");
-        workJPanelOP40Transfer1.setBounds(10, 10, workJPanelOP40Transfer1.workWidth, workJPanelOP40Transfer1.workHeight);
-        indexPanelTransfer1.add(workJPanelOP40Transfer1);
-        indexPanelTransfer.add(indexPanelTransfer1);
-
-        // 中转车2 - 连接PLC4(东侧192.168.90.84) DB7005
-        JPanel indexPanelTransfer2 = new JPanel();
-        indexPanelTransfer2.setLayout(null);
-        indexPanelTransfer2.setBackground(Color.WHITE);
-        workJPanelOP40Transfer2 = new WorkJPanelOP40Transfer("B");
-        workJPanelOP40Transfer2.setBounds(10, 10, workJPanelOP40Transfer2.workWidth, workJPanelOP40Transfer2.workHeight);
-        indexPanelTransfer2.add(workJPanelOP40Transfer2);
-        indexPanelTransfer.add(indexPanelTransfer2);
+        if (transferEnabled) {
+            indexPanelTransfer.setLayout(new GridLayout(2, 2, 5, 5));
+
+            // 中转车1 - 连接PLC3(西侧192.168.90.83) DB7005
+            JPanel indexPanelTransfer1 = new JPanel();
+            indexPanelTransfer1.setLayout(null);
+            indexPanelTransfer1.setBackground(Color.WHITE);
+            workJPanelOP40Transfer1 = new WorkJPanelOP40Transfer("A");
+            workJPanelOP40Transfer1.setBounds(10, 10, workJPanelOP40Transfer1.workWidth, workJPanelOP40Transfer1.workHeight);
+            indexPanelTransfer1.add(workJPanelOP40Transfer1);
+            indexPanelTransfer.add(indexPanelTransfer1);
+
+            // 中转车2 - 连接PLC4(东侧192.168.90.84) DB7005
+            JPanel indexPanelTransfer2 = new JPanel();
+            indexPanelTransfer2.setLayout(null);
+            indexPanelTransfer2.setBackground(Color.WHITE);
+            workJPanelOP40Transfer2 = new WorkJPanelOP40Transfer("B");
+            workJPanelOP40Transfer2.setBounds(10, 10, workJPanelOP40Transfer2.workWidth, workJPanelOP40Transfer2.workHeight);
+            indexPanelTransfer2.add(workJPanelOP40Transfer2);
+            indexPanelTransfer.add(indexPanelTransfer2);
+        } else {
+            indexPanelTransfer.setLayout(new GridLayout(1, 2, 5, 5));
+            workJPanelOP40Transfer1 = null;
+            workJPanelOP40Transfer2 = null;
+        }
 
         JPanel indexPanelScanA = new JPanel();
         indexPanelScanA.setLayout(null);
@@ -1317,27 +1330,27 @@ public class MesClient extends JFrame {
         indexPanelScanB.add(workJPanelScanB);
         indexPanelTransfer.add(indexPanelScanB);
 
-        tabbedPane.addTab("中转车", null, indexScrollPaneTransfer, null);
+        tabbedPane.addTab(transferEnabled ? "中转车" : "扫码站", null, indexScrollPaneTransfer, null);
 
 
-        // ========== 工作记录 Tab(改造:OP040子工位Tab + 所有工位) ==========
+        // ========== 工作记录 Tab(改造:OP055子工位Tab + 所有工位) ==========
         // 创建工作记录的子 TabbedPane
         JTabbedPane workRecordTabbedPane = new JTabbedPane(JTabbedPane.TOP);
         workRecordTabbedPane.setFont(new Font("微软雅黑", Font.PLAIN, 14));
 
-        // 定义OP040子工位(A-L,共12个)
+        // 定义OP055子工位(A-L,共12个)
         String[] subStations = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L"};
         WorkRecordPanel[] workRecordPanels = new WorkRecordPanel[subStations.length + 1]; // +1 for "所有工位"
 
-        // 为每个子工位创建 Tab(OP040 基础工位号)
+        // 为每个子工位创建 Tab(OP055 基础工位号)
         for (int i = 0; i < subStations.length; i++) {
             String station = subStations[i];
-            String oprno = "OP040" + station;  // OP040 基础工位号
+            String oprno = "OP055" + station;  // OP055 基础工位号
             workRecordPanels[i] = new WorkRecordPanel(oprno, mes_line_sn);
             workRecordTabbedPane.addTab(oprno, null, workRecordPanels[i], "查询" + oprno + "的工作记录");
         }
 
-        // 最后添加"所有工位"Tab(查询整条产线所有工位,不限于OP040)
+        // 最后添加"所有工位"Tab(查询整条产线所有工位,不限于OP055)
         workRecordPanels[subStations.length] = new WorkRecordPanel(null, mes_line_sn);
         workRecordTabbedPane.addTab("所有工位", null, workRecordPanels[subStations.length], "查询整条产线所有工位的工作记录");
 

+ 3 - 1
src/resources/config/config.properties

@@ -1,6 +1,8 @@
 #mes.server_ip=127.0.0.1
 mes.server_ip=192.168.17.170
 mes.line_sn=XT
+# 中转车:false=隐藏UI并跳过中转逻辑;true=恢复中转
+mes.transfer_enabled=false
 
 # OPC UA Configuration (CNC)
 # 12台CNC设备(西侧6台 + 东侧6台)
@@ -11,4 +13,4 @@ opcua.password=OPCUA123
 opcua.urls=opc.tcp://80.22.10.42:4840,opc.tcp://80.22.10.43:4840,opc.tcp://80.22.10.44:4840,opc.tcp://80.22.10.45:4840,opc.tcp://80.22.10.46:4840,opc.tcp://80.22.10.47:4840,opc.tcp://80.23.10.42:4840,opc.tcp://80.23.10.43:4840,opc.tcp://80.23.10.44:4840,opc.tcp://80.23.10.45:4840,opc.tcp://80.23.10.46:4840,opc.tcp://80.23.10.47:4840
 
 # 对应的工位号
-opcua.oprnos=OP040A,OP040B,OP040C,OP040D,OP040E,OP040F,OP040G,OP040H,OP040I,OP040J,OP040K,OP040L
+opcua.oprnos=OP055A,OP055B,OP055C,OP055D,OP055E,OP055F,OP055G,OP055H,OP055I,OP055J,OP055K,OP055L