Ver código fonte

plc编号对接

hbx 1 semana atrás
pai
commit
def7e9fe30

+ 22 - 8
src/com/mes/component/WorkJPanel70Xh.java

@@ -85,6 +85,9 @@ public class WorkJPanel70Xh extends JPanel {
     public String addrTransferNo = plcDb2 + ".2.0";       // 中转车号
     public String addrTransferFloor = plcDb2 + ".4.0";    // 中转车层数
 
+    // 正面换型台第二路扫码请求(封板正面FSW2=DB7004,鑫政自动线PLC点位说明_MES_20261010新增设备)
+    public String addrScanFeeding2 = "";
+
     // 扫码枪通道:1/3=正面(原OP060),2/4=反面(原OP070)
     public int scanWest = 2;
     public int scanEast = 4;
@@ -134,14 +137,15 @@ public class WorkJPanel70Xh extends JPanel {
 
         if("OP070".equals(oprno)){ // 正面换型台:复用原OP060设备面板的DB7000扫码信号,扫码枪用1/3通道
             plcDb = "DB7000";
-            addrScanFeeding = plcDb + ".0.0";      // 原OP060:请求上料/扫码
+            addrScanFeeding = plcDb + ".0.0";      // 原OP060:请求上料/扫码(正面FSW1)
+            addrScanFeeding2 = "DB7004" + ".0.0";  // 封板正面FSW2:请求上料/扫码(新增设备)
             addrScanFinish = plcDb + ".0.4";       // 原OP060:MES允许上料
             addrTransferToDevice = plcDb + ".1.1"; // 原OP060:中转车上料到设备
             addrTransferNo = plcDb + ".2.0";
             addrTransferFloor = plcDb + ".4.0";
             scanWest = 1;
             scanEast = 3;
-            ownsScanFeedback = false; // DB7000.0.4 由WorkJPanelOP60按质检结果写入
+            ownsScanFeedback = false; // DB7000.0.4 由WorkJPanelOP60按质检结果写入(FSW2的DB7004.0.4同理由其面板写入)
         }
 
         cacheName = "cache_scan_"+oprno+pos;
@@ -168,16 +172,17 @@ public class WorkJPanel70Xh extends JPanel {
             isScan = 1;
         }
 
+        // 设备DB对照(鑫政自动线PLC点位说明_MES_20261010 OP70_OP80FSW页):反面FSW1=DB7001、反面FSW2=DB7002
         if(pos.equals("A")){
-            plcDb = "DB7002";
+            plcDb = "DB7001";
         }else if(pos.equals("B")){
-            plcDb = "DB7003";
+            plcDb = "DB7002";
         }else if(pos.equals("C")){
             plcDb = "DB7004";
         }else if(pos.equals("D")){
-            plcDb = "DB7002";
+            plcDb = "DB7001";
         }else if(pos.equals("E")){
-            plcDb = "DB7003";
+            plcDb = "DB7002";
         }else if(pos.equals("F")) {
             plcDb = "DB7004";
         }
@@ -400,8 +405,8 @@ public class WorkJPanel70Xh extends JPanel {
                         Boolean retFeedingAllow = readScanFinish();
                         feedingmeslabel.setIcon(retFeedingAllow?imageGreen:imageGray);
 
-                        //真扫码
-                        Boolean retScanFeeding = readScanFeeding();
+                        //真扫码(正面换型台同时监听FSW1 DB7000.0.0与FSW2 DB7004.0.0两路请求,任一请求即扫码)
+                        Boolean retScanFeeding = readScanFeeding() || readScanFeeding2();
                         if(retScanFeeding){
                             transferSn = readTransferNo();
                             transferFloor = readTransferFloor();
@@ -544,6 +549,15 @@ public class WorkJPanel70Xh extends JPanel {
             return readBoolean(addrScanFeeding);  //扫码请求
         }
     }
+
+    // 请求扫码(第二路,正面FSW2;未配置地址时恒为false)
+    public boolean readScanFeeding2(){
+        if(isLocal == 1 || addrScanFeeding2 == null || addrScanFeeding2.isEmpty()){
+            return false;
+        }else{
+            return readBoolean(addrScanFeeding2);  //扫码请求
+        }
+    }
     // 扫码完成
     public boolean readScanFinish(){
         if(isLocal == 1){

+ 17 - 15
src/com/mes/component/WorkJPanelOP60.java

@@ -109,6 +109,7 @@ public class WorkJPanelOP60 extends JPanel {
     public int transferFloor = 0;
     public JLabel oprnoLabel;
     public JLabel oprnoLabel2;
+    public String fswDeviceName = ""; // 设备名:1号机/2号机
     public Boolean fswOnline = true;
 
     public JButton signalBtn; // 信号监控按钮
@@ -148,6 +149,16 @@ public class WorkJPanelOP60 extends JPanel {
             isScan = 1;
         }
 
+        // 设备DB对照(鑫政自动线PLC点位说明_MES_20261010 OP70_OP80FSW页):正面FSW1=DB7000、正面FSW2=DB7004
+        // pos: A=西侧1号机 B=东侧1号机(默认DB7000);C=西侧2号机 D=东侧2号机(DB7004,新增设备)
+        if(pos.equals("C") || pos.equals("D")){
+            plcDb = "DB7004";
+            deviceIp = ""; // TODO 封板正面FSW2设备IP待现场确认后修改,未确认前参数采集不可用
+            fswDeviceName = pos.equals("C") ? "西侧2号机" : "东侧2号机";
+        }else{
+            fswDeviceName = MesClient.mes_line_pos.equals("east") ? "东侧1号机" : "西侧1号机";
+        }
+
         s7PLC.setConnectTimeout(1000);
         s7PLC.setReceiveTimeout(1000);
 
@@ -159,21 +170,12 @@ public class WorkJPanelOP60 extends JPanel {
         oprnoLabel.setBounds(0, -10, workWidth/5, 40);
         this.add(oprnoLabel);
 
-        if(MesClient.mes_line_pos.equals("east")) {
-            oprnoLabel2 = new JLabel("东侧1号机");
-            oprnoLabel2.setHorizontalAlignment(SwingConstants.CENTER);
-            oprnoLabel2.setForeground(Color.BLACK);
-            oprnoLabel2.setFont(new Font("微软雅黑", Font.PLAIN, 14));
-            oprnoLabel2.setBounds(0, 12, workWidth / 5, 40);
-            this.add(oprnoLabel2);
-        }else {
-            oprnoLabel2 = new JLabel("西侧1号机");
-            oprnoLabel2.setHorizontalAlignment(SwingConstants.CENTER);
-            oprnoLabel2.setForeground(Color.BLACK);
-            oprnoLabel2.setFont(new Font("微软雅黑", Font.PLAIN, 14));
-            oprnoLabel2.setBounds(0, 12, workWidth / 5, 40);
-            this.add(oprnoLabel2);
-        }
+        oprnoLabel2 = new JLabel(fswDeviceName);
+        oprnoLabel2.setHorizontalAlignment(SwingConstants.CENTER);
+        oprnoLabel2.setForeground(Color.BLACK);
+        oprnoLabel2.setFont(new Font("微软雅黑", Font.PLAIN, 14));
+        oprnoLabel2.setBounds(0, 12, workWidth / 5, 40);
+        this.add(oprnoLabel2);
         status_menu = new JButton("等待请求扫码");
         status_menu.setBounds(workWidth/5, 0, workWidth*4/5, 40);
         status_menu.setForeground(Color.GREEN);

+ 10 - 16
src/com/mes/component/WorkJPanelOP70.java

@@ -160,30 +160,24 @@ public class WorkJPanelOP70 extends JPanel {
         s7PLC.setConnectTimeout(1000);
         s7PLC.setReceiveTimeout(1000);
 
+        // 设备DB对照(鑫政自动线PLC点位说明_MES_20261010 OP70_OP80FSW页):反面FSW1=DB7001、反面FSW2=DB7002
+        // 原西侧/东侧3号机(DB7003)、4号机(DB7004)已取消,C/F位不再实例化
         if(pos.equals("A")){
-            plcDb = "DB7002";
+            plcDb = "DB7001";
             deviceIp = deviceIp + "43";
-            fswDeviceName = "西侧2号机";
+            fswDeviceName = "西侧1号机";
         }else if(pos.equals("B")){
-            plcDb = "DB7003";
+            plcDb = "DB7002";
             deviceIp = deviceIp + "44";
-            fswDeviceName = "西侧3号机";
-        }else if(pos.equals("C")){
-            plcDb = "DB7004";
-            deviceIp = deviceIp + "45";
-            fswDeviceName = "西侧4号机";
+            fswDeviceName = "西侧2号机";
         }else if(pos.equals("D")){
-            plcDb = "DB7002";
+            plcDb = "DB7001";
             deviceIp = deviceIp + "43";
-            fswDeviceName = "东侧2号机";
+            fswDeviceName = "东侧1号机";
         }else if(pos.equals("E")){
-            plcDb = "DB7003";
+            plcDb = "DB7002";
             deviceIp = deviceIp + "44";
-            fswDeviceName = "东侧3号机";
-        }else if(pos.equals("F")) {
-            plcDb = "DB7004";
-            deviceIp = deviceIp + "45";
-            fswDeviceName = "东侧4号机";
+            fswDeviceName = "东侧2号机";
         }
 
         oprnoLabel = new JLabel(oprno+pos);

+ 44 - 37
src/com/mes/ui/MesClient.java

@@ -76,6 +76,7 @@ public class MesClient extends JFrame {
     public static Object[][] rowData = null;
 
     public static WorkJPanelOP60 workJPanelOP60;
+    public static WorkJPanelOP60 workJPanelOP60B; // 封板正面FSW2(新增设备DB7004,C=西/D=东)
     public static WorkJPanelOP60Transfer workJPanelOP60Transfer;
     public static WorkJPanelOP70Transfer workJPanelOP70Transfer;
     public static WorkJPanel70Xh workJPanel70XhFront; // 正面换型台(OP070,扫码按OP070方式)
@@ -334,6 +335,15 @@ public class MesClient extends JFrame {
             indexPanel60A.add(workJPanelOP60);
             indexPanelB.add(indexPanel60A);
 
+            // 封板正面FSW2(新增设备DB7004)
+            JPanel indexPanel60B = new JPanel();
+            indexPanel60B.setLayout(null);
+            indexPanel60B.setBackground(Color.WHITE);
+            workJPanelOP60B = new WorkJPanelOP60("C");
+            workJPanelOP60B.setBounds(10, 10, workJPanelOP60B.workWidth, workJPanelOP60B.workHeight);
+            indexPanel60B.add(workJPanelOP60B);
+            indexPanelB.add(indexPanel60B);
+
 
         }else{
             JPanel indexPanel60A = new JPanel();
@@ -344,24 +354,34 @@ public class MesClient extends JFrame {
             indexPanel60A.add(workJPanelOP60);
             indexPanelB.add(indexPanel60A);
 
+            // 封板正面FSW2(新增设备DB7004)
+            JPanel indexPanel60B = new JPanel();
+            indexPanel60B.setLayout(null);
+            indexPanel60B.setBackground(Color.WHITE);
+            workJPanelOP60B = new WorkJPanelOP60("D");
+            workJPanelOP60B.setBounds(10, 10, workJPanelOP60B.workWidth, workJPanelOP60B.workHeight);
+            indexPanel60B.add(workJPanelOP60B);
+            indexPanelB.add(indexPanel60B);
+
 
         }
 
-        JPanel indexPanel60BB = new JPanel();
-        indexPanel60BB.setLayout(null);
-        indexPanel60BB.setBackground(Color.WHITE);
-        workJPanelOP60Transfer = new WorkJPanelOP60Transfer("A");
-        workJPanelOP60Transfer.setBounds(10, 10, workJPanelOP60Transfer.workWidth, workJPanelOP60Transfer.workHeight);
-        indexPanel60BB.add(workJPanelOP60Transfer);
-        indexPanelB.add(indexPanel60BB);
-
-        JPanel indexPanel60Bc = new JPanel();
-        indexPanel60Bc.setLayout(null);
-        indexPanel60Bc.setBackground(Color.WHITE);
-        workJPanelOP70Transfer = new WorkJPanelOP70Transfer("B");
-        workJPanelOP70Transfer.setBounds(10, 10, workJPanelOP70Transfer.workWidth, workJPanelOP70Transfer.workHeight);
-        indexPanel60Bc.add(workJPanelOP70Transfer);
-        indexPanelB.add(indexPanel60Bc);
+        // 中转车已取消(鑫政自动线PLC点位说明_MES_20261010标注取消;正面中转车原DB7001已分配给封板反面FSW1,保留实例会干扰反面FSW1信号,故不再创建)
+//        JPanel indexPanel60BB = new JPanel();
+//        indexPanel60BB.setLayout(null);
+//        indexPanel60BB.setBackground(Color.WHITE);
+//        workJPanelOP60Transfer = new WorkJPanelOP60Transfer("A");
+//        workJPanelOP60Transfer.setBounds(10, 10, workJPanelOP60Transfer.workWidth, workJPanelOP60Transfer.workHeight);
+//        indexPanel60BB.add(workJPanelOP60Transfer);
+//        indexPanelB.add(indexPanel60BB);
+//
+//        JPanel indexPanel60Bc = new JPanel();
+//        indexPanel60Bc.setLayout(null);
+//        indexPanel60Bc.setBackground(Color.WHITE);
+//        workJPanelOP70Transfer = new WorkJPanelOP70Transfer("B");
+//        workJPanelOP70Transfer.setBounds(10, 10, workJPanelOP70Transfer.workWidth, workJPanelOP70Transfer.workHeight);
+//        indexPanel60Bc.add(workJPanelOP70Transfer);
+//        indexPanelB.add(indexPanel60Bc);
 
         // 正面换型台:集中扫码,OP60设备面板从其文本框取码(扫码按OP070方式)
         JPanel indexPanel60Xh = new JPanel();
@@ -421,18 +441,11 @@ public class MesClient extends JFrame {
             indexPanel70B.add(workJPanelOP70B);
             indexPanelD.add(indexPanel70B);
 
-            JPanel indexPanel70C = new JPanel();
-            indexPanel70C.setLayout(null);
-            indexPanel70C.setBackground(Color.WHITE);
-            workJPanelOP70C = new WorkJPanelOP70("C");
-            workJPanelOP70C.setBounds(10, 10, workJPanelOP70C.workWidth, workJPanelOP70C.workHeight);
-            indexPanel70C.add(workJPanelOP70C);
-            indexPanelD.add(indexPanel70C);
-
+            // 反面3号机(原C位DB7004)已取消,不再创建面板
             JPanel indexPanel70D = new JPanel();
             indexPanel70D.setLayout(null);
             indexPanel70D.setBackground(Color.WHITE);
-            workJPanel70Xh = new WorkJPanel70Xh("C");
+            workJPanel70Xh = new WorkJPanel70Xh("A"); // 反面换型台心跳/监控挂反面FSW1(DB7001),避免与正面FSW2的DB7004冲突
             workJPanel70Xh.setBounds(10, 10, workJPanel70Xh.workWidth, workJPanel70Xh.workHeight);
             indexPanel70D.add(workJPanel70Xh);
             indexPanelD.add(indexPanel70D);
@@ -453,20 +466,14 @@ public class MesClient extends JFrame {
             indexPanel70B.add(workJPanelOP70B);
             indexPanelD.add(indexPanel70B);
 
-            JPanel indexPanel70C = new JPanel();
-            indexPanel70C.setLayout(null);
-            indexPanel70C.setBackground(Color.WHITE);
-            workJPanelOP70C = new WorkJPanelOP70("F");
-            workJPanelOP70C.setBounds(10, 10, workJPanelOP70C.workWidth, workJPanelOP70C.workHeight);
-            indexPanel70C.add(workJPanelOP70C);
-            indexPanelD.add(indexPanel70C);
+            // 反面3号机(原F位DB7004)已取消,不再创建面板
 
 
 
             JPanel indexPanel70D = new JPanel();
             indexPanel70D.setLayout(null);
             indexPanel70D.setBackground(Color.WHITE);
-            workJPanel70Xh = new WorkJPanel70Xh("C");
+            workJPanel70Xh = new WorkJPanel70Xh("A"); // 反面换型台心跳/监控挂反面FSW1(DB7001),避免与正面FSW2的DB7004冲突
             workJPanel70Xh.setBounds(10, 10, workJPanel70Xh.workWidth, workJPanel70Xh.workHeight);
             indexPanel70D.add(workJPanel70Xh);
             indexPanelD.add(indexPanel70D);
@@ -481,13 +488,13 @@ public class MesClient extends JFrame {
         workRecordTabbedPane.setFont(new Font("微软雅黑", Font.PLAIN, 14));
 
         // 定义所有子工位
-        // OP70(原OP60正面FSW): A, B
-        // OP75(原OP65打磨): A, B
-        // OP80(原OP70反面FSW): A, B, C, D, E, F
+        // OP70(封板正面FSW): A西1号机, B东1号机, C西2号机, D东2号机(C/D为新增设备)
+        // OP75(封板正面打磨): A, B
+        // OP80(封板反面FSW): A西1号机, B西2号机, D东1号机, E东2号机(原C/F位3号机已取消)
         String[][] stationGroups = {
-            {"OP070", "A", "B"},
+            {"OP070", "A", "B", "C", "D"},
             {"OP075", "A", "B"},
-            {"OP080", "A", "B", "C", "D", "E", "F"}
+            {"OP080", "A", "B", "D", "E"}
         };
         
         // 计算总的工位数(用于数组大小)