|
|
@@ -58,14 +58,26 @@ public class MesClient extends JFrame {
|
|
|
// 正面扫码枪:按 scan.ips 顺序排列,DB7010.6 枪号 1 对应第一个
|
|
|
public static TCPClient[] scanClients = new TCPClient[0];
|
|
|
|
|
|
- // 码槽:正面扫码槽(扫码存、正面取),反面待上料码(正面下料存、反面取)
|
|
|
- public static SnSlot frontSlot;
|
|
|
+ // 码槽:正面扫码码按 PLC 分开(本 PLC 扫码存、本 PLC 正面机取),反面待上料码(正面下料存、反面取)
|
|
|
+ public static SnSlot frontSlot92;
|
|
|
+ public static SnSlot frontSlot93;
|
|
|
public static SnSlot backSlot;
|
|
|
|
|
|
- // OP130A-E 正面 CNC(PLC 92),OP135A-E 反面 CNC(PLC 93)
|
|
|
- public static final String[] SUB_STATIONS = {"A", "B", "C", "D", "E"};
|
|
|
- public static WorkJPanelCnc[] op130Panels = new WorkJPanelCnc[SUB_STATIONS.length];
|
|
|
- public static WorkJPanelCnc[] op135Panels = new WorkJPanelCnc[SUB_STATIONS.length];
|
|
|
+ // 工位表:工位号, 子工位, PLC, DB
|
|
|
+ public static final String[][] STATIONS = {
|
|
|
+ {"OP130", "A", WorkJPanelCnc.PLC_92, "DB7000"},
|
|
|
+ {"OP130", "B", WorkJPanelCnc.PLC_92, "DB7001"},
|
|
|
+ {"OP130", "C", WorkJPanelCnc.PLC_92, "DB7002"},
|
|
|
+ {"OP130", "D", WorkJPanelCnc.PLC_92, "DB7003"},
|
|
|
+ {"OP130", "E", WorkJPanelCnc.PLC_92, "DB7004"},
|
|
|
+ {"OP130", "F", WorkJPanelCnc.PLC_93, "DB7004"}, // 93 DB7004 走正面逻辑
|
|
|
+ {"OP135", "A", WorkJPanelCnc.PLC_93, "DB7000"},
|
|
|
+ {"OP135", "B", WorkJPanelCnc.PLC_93, "DB7001"},
|
|
|
+ {"OP135", "C", WorkJPanelCnc.PLC_93, "DB7002"},
|
|
|
+ {"OP135", "D", WorkJPanelCnc.PLC_93, "DB7003"},
|
|
|
+ };
|
|
|
+ public static java.util.List<WorkJPanelCnc> op130Panels = new java.util.ArrayList<>();
|
|
|
+ public static java.util.List<WorkJPanelCnc> op135Panels = new java.util.ArrayList<>();
|
|
|
public static WorkJPanelScan workJPanelScan92; // 92 DB7010(PLC 发 1、2 号枪)
|
|
|
public static WorkJPanelScan workJPanelScan93; // 93 DB7010(PLC 发 3 号枪)
|
|
|
public static WorkJPanelBackSlot workJPanelBackSlot;
|
|
|
@@ -122,7 +134,6 @@ public class MesClient extends JFrame {
|
|
|
}
|
|
|
}
|
|
|
scanClients = clients.toArray(new TCPClient[0]);
|
|
|
- log.info("正面扫码枪 {} 把:{},端口 {}", scanClients.length, pro.getProperty("scan.ips"), scanPort);
|
|
|
}
|
|
|
|
|
|
//启动心跳包程序
|
|
|
@@ -285,43 +296,47 @@ public class MesClient extends JFrame {
|
|
|
tabbedPane.setFont(new Font("宋体", Font.BOLD, 22));
|
|
|
contentPane.add(tabbedPane);
|
|
|
|
|
|
- // 码槽要在工位面板之前创建,面板构造时会引用
|
|
|
- frontSlot = new SnSlot("正面扫码", "slot_front_scan");
|
|
|
+ // 码槽要在工位面板之前创建,面板构造时会引用(92 沿用原缓存 key)
|
|
|
+ frontSlot92 = new SnSlot("正面扫码92", "slot_front_scan");
|
|
|
+ frontSlot93 = new SnSlot("正面扫码93", "slot_front_scan93");
|
|
|
backSlot = new SnSlot("反面待上料码", "slot_back_feeding");
|
|
|
|
|
|
- for (int i = 0; i < SUB_STATIONS.length; i++) {
|
|
|
- op130Panels[i] = new WorkJPanelCnc("OP130", SUB_STATIONS[i]);
|
|
|
- op135Panels[i] = new WorkJPanelCnc("OP135", SUB_STATIONS[i]);
|
|
|
+ for (String[] s : STATIONS) {
|
|
|
+ boolean front = "OP130".equals(s[0]);
|
|
|
+ boolean on93 = WorkJPanelCnc.PLC_93.equals(s[2]);
|
|
|
+ boolean op130E = front && "E".equals(s[1]);
|
|
|
+ // 正面取本 PLC 扫码码,反面取反面待上料码
|
|
|
+ SnSlot source = !front ? backSlot : (on93 ? frontSlot93 : frontSlot92);
|
|
|
+ // 下料存码:OP130A-D、OP130F 存反面待上料码;反面不存
|
|
|
+ // TODO 反面台2:OP130E(92 DB7004)下料后要存入反面台2,后续实现,暂不存码
|
|
|
+ SnSlot target = front && !op130E ? backSlot : null;
|
|
|
+ WorkJPanelCnc panel = new WorkJPanelCnc(s[0], s[1], s[2], s[3], source, target);
|
|
|
+ (front ? op130Panels : op135Panels).add(panel);
|
|
|
}
|
|
|
- // 两台 PLC 的扫码都存入同一个正面扫码码
|
|
|
- workJPanelScan92 = new WorkJPanelScan(WorkJPanelCnc.PLC_FRONT);
|
|
|
- workJPanelScan93 = new WorkJPanelScan(WorkJPanelCnc.PLC_BACK);
|
|
|
+ workJPanelScan92 = new WorkJPanelScan(WorkJPanelCnc.PLC_92, frontSlot92);
|
|
|
+ workJPanelScan93 = new WorkJPanelScan(WorkJPanelCnc.PLC_93, frontSlot93);
|
|
|
workJPanelBackSlot = new WorkJPanelBackSlot();
|
|
|
|
|
|
// 每页 4 格,布局与原来一致
|
|
|
tabbedPane.addTab("OP130正面:A-D", null,
|
|
|
- gridTab(op130Panels[0], op130Panels[1], op130Panels[2], op130Panels[3]), null);
|
|
|
- tabbedPane.addTab("OP130正面:E+扫码", null, gridTab(op130Panels[4], workJPanelScan92, workJPanelScan93), null);
|
|
|
+ gridTab(op130Panels.get(0), op130Panels.get(1), op130Panels.get(2), op130Panels.get(3)), null);
|
|
|
+ tabbedPane.addTab("OP130正面:E-F+扫码", null,
|
|
|
+ gridTab(op130Panels.get(4), op130Panels.get(5), workJPanelScan92, workJPanelScan93), null);
|
|
|
tabbedPane.addTab("OP135反面:A-D", null,
|
|
|
- gridTab(op135Panels[0], op135Panels[1], op135Panels[2], op135Panels[3]), null);
|
|
|
- tabbedPane.addTab("OP135反面:E+待上料码", null, gridTab(op135Panels[4], workJPanelBackSlot), null);
|
|
|
+ gridTab(op135Panels.get(0), op135Panels.get(1), op135Panels.get(2), op135Panels.get(3)), null);
|
|
|
+ tabbedPane.addTab("反面待上料码", null, gridTab(workJPanelBackSlot), null);
|
|
|
tabbedPane.setEnabledAt(0, true);
|
|
|
|
|
|
// ========== 工作记录 Tab:每个子工位一个Tab + 所有工位 ==========
|
|
|
JTabbedPane workRecordTabbedPane = new JTabbedPane(JTabbedPane.TOP);
|
|
|
workRecordTabbedPane.setFont(new Font("微软雅黑", Font.PLAIN, 14));
|
|
|
|
|
|
- String[] baseOprnos = {"OP130", "OP135"};
|
|
|
- int stationCount = baseOprnos.length * SUB_STATIONS.length;
|
|
|
+ int stationCount = STATIONS.length;
|
|
|
WorkRecordPanel[] workRecordPanels = new WorkRecordPanel[stationCount + 1]; // +1 for "所有工位"
|
|
|
- int panelIndex = 0;
|
|
|
- for (String base : baseOprnos) {
|
|
|
- for (String sub : SUB_STATIONS) {
|
|
|
- String oprno = base + sub;
|
|
|
- workRecordPanels[panelIndex] = new WorkRecordPanel(oprno, mes_line_sn);
|
|
|
- workRecordTabbedPane.addTab(oprno, null, workRecordPanels[panelIndex], "查询" + oprno + "的工作记录");
|
|
|
- panelIndex++;
|
|
|
- }
|
|
|
+ for (int i = 0; i < stationCount; i++) {
|
|
|
+ String oprno = STATIONS[i][0] + STATIONS[i][1];
|
|
|
+ workRecordPanels[i] = new WorkRecordPanel(oprno, mes_line_sn);
|
|
|
+ workRecordTabbedPane.addTab(oprno, null, workRecordPanels[i], "查询" + oprno + "的工作记录");
|
|
|
}
|
|
|
|
|
|
// 最后添加"所有工位"Tab
|