diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java index a864698..3eaaee6 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java @@ -1,40 +1,70 @@ package org.nl.acs.device_driver.driver; +import lombok.extern.slf4j.Slf4j; +import org.jinterop.dcom.common.JIException; +import org.nl.acs.ext.wms.data.JsonUtl; import org.nl.acs.opc.*; import org.nl.acs.udw.UnifiedDataAccessor; import org.nl.acs.udw.UnifiedDataAccessorFactory; -import org.nl.acs.udw.UnifiedDataAppService; import org.nl.config.SpringContextHolder; import org.openscada.opc.lib.da.Group; import org.openscada.opc.lib.da.Item; import org.openscada.opc.lib.da.ItemState; -import org.springframework.beans.factory.annotation.Autowired; import java.util.*; +@Slf4j public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements OpcDeviceDriver { UnifiedDataAccessor opcUdw; - private OpcServerService opcServerService = SpringContextHolder.getBean(OpcServerService.class); + private final OpcServerService opcServerService = SpringContextHolder.getBean(OpcServerService.class); public AbstractOpcDeviceDriver() { this.opcUdw = UnifiedDataAccessorFactory.getAccessor(OpcConfig.udw_opc_value_key); } - - private Date sendTime; - private String last_items; - private int noLog_sendTimeOut; - private Date noLog_sendTime; - private String noLog_last_items; - @Override public UnifiedDataAccessor getOpcValueAccessor() { return this.opcUdw; } + public void control(Map itemValues) { - public void checkcontrol(Map itemValues) throws Exception { + Iterator> it = itemValues.entrySet().iterator(); + + ItemValue[] p2; + p2 = new ItemValue[itemValues.size()]; + int i = 0; + while (it.hasNext()) { + Map.Entry entry = it.next(); + log.info(entry.getKey() + " 即将写入 " + entry.getValue()); + p2[i] = new ItemValue(); + p2[i].setItem_code(entry.getKey()); + p2[i].setItem_value(entry.getValue()); + i++; + } + + this.control(p2); + } + + public void control(ItemValue[] itemValues) { + if (itemValues != null && itemValues.length != 0) { + OpcServerService opcServerService = SpringContextHolder.getBean(OpcServerServiceImpl.class); + + opcServerService.writeInteger(this.getOpcServer(), itemValues); + + UnifiedDataAccessor opcValueAccessor = this.getOpcValueAccessor(); + for (ItemValue itemValue : itemValues) { + String code = itemValue.getItem_code(); + Object value = itemValue.getItem_value(); + opcValueAccessor.setValue(code, value); + } + } else { + log.warn("写入信号无内容!"); + } + } + + public void checkcontrol(Map itemValues){ Group group = opcServerService.getServer(this.getOpcServer()); Map write = new HashMap(); Map readitems = new LinkedHashMap(); @@ -52,10 +82,104 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc } int i = 0; while(true) { + //下发信号 + try{ + if(i == 0){ + control( itemValues); + } else { + controlByNewConn( itemValues); + } + + } catch (Exception e){ + e.printStackTrace(); + } + Map read = new HashMap(); + Map itemStatus = null; + boolean check = true; + try{ + if(i>0){ + group = opcServerService.getServer(this.getOpcServer()); + itemsString = new ArrayList<> (itemValues.keySet()); + Iterator nis = itemsString.iterator(); + + while (nis.hasNext()) { + String string = (String) nis.next(); + try { + readitems.put(string, group.addItem(string)); + } catch (Exception e) { + e.printStackTrace(); + } + } + itemStatus = group.read(true, (Item[])readitems.values().toArray(new Item[0])); + + } else { + itemStatus = group.read(true, (Item[])readitems.values().toArray(new Item[0])); + } + Set items = itemStatus.keySet(); + Iterator var15 = items.iterator(); + while(var15.hasNext()) { + Item item = (Item)var15.next(); + ItemState itemState = (ItemState)itemStatus.get(item); + Object value = OpcUtl.getValue(item, itemState); + read.put(item.getId(), value); + } + + Iterator var24 = itemsString.iterator(); + + while(var24.hasNext()) { + String itemString = (String)var24.next(); + if (!ObjectUtl.isEquals(itemValues.get(itemString), JsonUtl.parse(read.get(itemString)))) { + check = false; + } + } + } catch (Exception e){ + e.printStackTrace(); + check = false; + } + + if (check) { + return; + } + + if (i > 0) { + ThreadUtl.sleep(300L); + } + + if (i > 3) { + log.info("写入次数超过3次而失败"); + throw new RuntimeException("写入次数超过3次而失败"); + } + ++i; + } + } + + public void checkControl(Map itemValues) { + Group group = opcServerService.getServer(this.getOpcServer()); + Map write = new HashMap(); + Map readitems = new LinkedHashMap(); + List itemsString = new ArrayList(); + itemsString = new ArrayList<> (itemValues.keySet()); + Iterator is = itemsString.iterator(); + + while (is.hasNext()) { + String string = (String) is.next(); + try { + readitems.put(string, group.addItem(string)); + } catch (Exception e) { + e.printStackTrace(); + } + } + int i = 0; + while (true) { //下发信号 control( itemValues); Map read = new HashMap(); - Map itemStatus = group.read(true, (Item[])readitems.values().toArray(new Item[0])); + Map itemStatus = null; + try { + itemStatus = group.read(true, (Item[])readitems.values().toArray(new Item[0])); + } catch (JIException e) { + throw new RuntimeException(e); + } Set items = itemStatus.keySet(); Iterator var15 = items.iterator(); @@ -80,7 +204,7 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc } if (i > 0) { - ThreadUtl.sleep(300L); + ThreadUtl.sleep(1000L); } if (i > 3) { @@ -90,84 +214,42 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc } } - - public boolean control(Map itemValues) { + public void controlByNewConn(Map itemValues) { Iterator> it = itemValues.entrySet().iterator(); - ItemValue p2[]; + ItemValue[] p2; p2 = new ItemValue[itemValues.size()]; - int i=0; + int i = 0; while (it.hasNext()) { Map.Entry entry = it.next(); - System.out.println("即将写入值:"+entry.getKey() + ":" + entry.getValue()); + log.info(entry.getKey() + " 即将写入 " + entry.getValue()); p2[i] = new ItemValue(); p2[i].setItem_code(entry.getKey()); p2[i].setItem_value(entry.getValue()); i++; } - return this.control(p2); + this.controlByNewConn(p2); } - - - public boolean control(ItemValue[] itemValues) { + public void controlByNewConn(ItemValue[] itemValues) { if (itemValues != null && itemValues.length != 0) { - String this_items = JsonUtl.parseWithoutException(itemValues); - boolean need_write = false; - StringBuilder sb = new StringBuilder(); - ItemValue[] var5 = itemValues; - int var6 = itemValues.length; + OpcServerService opcServerService = SpringContextHolder.getBean(OpcServerServiceImpl.class); - for (int var7 = 0; var7 < var6; ++var7) { - ItemValue itemValue = var5[var7]; + opcServerService.writeIntegerByNewConn(this.getOpcServer(), itemValues); + + + UnifiedDataAccessor opcValueAccessor = this.getOpcValueAccessor(); + + for (ItemValue itemValue : itemValues) { String code = itemValue.getItem_code(); - Object udw_value = this.getUdwValue(code); - Object write_value = itemValue.getItem_value(); - sb.append(code); - sb.append(":"); - sb.append(JsonUtl.parseWithoutException(udw_value)); - sb.append(";"); - if (!need_write && !UnifiedDataAppService.isEquals(udw_value, write_value)) { - need_write = true; - } else { - //log.warn("下发信号点位{} 当前写入值:{} 与系统内存值:{} 相同,不再写入 ", code, write_value, udw_value ); - } - } - // need_write = true; - - if (need_write) { - Date date = new Date(); - /*if (StringUtl.isEqual(this_items, this.last_items) && date.getTime() - this.sendTime.getTime() < (long) WcsConfig.opc_write_repeat_check) { - log.trace("发送时间因为小于{}毫秒,而被无视", WcsConfig.opc_write_repeat_check); - return false; - }*/ - - this.last_items = this_items; - this.sendTime = date; - /* this.execute_log.setResource(this.getDevice().getCode(), this.getDevice().getName()); - this.execute_log.log("原始记录{}->变更为{}", new Object[]{sb, this_items}); - OpcServerService opcServerService = OpcServerFactory.getOpcServerService();*/ - - OpcServerService opcServerService = SpringContextHolder.getBean(OpcServerServiceImpl.class); - - opcServerService.writeInteger(this.getOpcServer(), itemValues); - UnifiedDataAccessor opcValueAccessor = this.getOpcValueAccessor(); - ItemValue[] var17 = itemValues; - int var18 = itemValues.length; - - for (int var19 = 0; var19 < var18; ++var19) { - ItemValue itemValue = var17[var19]; - String code = itemValue.getItem_code(); - Object value = itemValue.getItem_value(); - opcValueAccessor.setValue(code, value); - } + Object value = itemValue.getItem_value(); + opcValueAccessor.setValue(code, value); } - return true; } else { - throw new RuntimeException("下发 无内容"); + log.warn("写入信号无内容!"); } } } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/guhuashi/StandardInspectSiteDefination.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/guhuashi/GuhuashiSiteDefination.java similarity index 73% rename from acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/guhuashi/StandardInspectSiteDefination.java rename to acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/guhuashi/GuhuashiSiteDefination.java index 3e4229e..6d434db 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/guhuashi/StandardInspectSiteDefination.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/guhuashi/GuhuashiSiteDefination.java @@ -11,35 +11,35 @@ import java.util.LinkedList; import java.util.List; /** - * 检测站点驱动定义 - * 说明:该站点为普通带光电检测站点 + * 固化室驱动 + * 说明:该站点为固化室驱动 */ @Service -public class StandardInspectSiteDefination implements OpcDeviceDriverDefination { +public class GuhuashiSiteDefination implements OpcDeviceDriverDefination { @Override public String getDriverCode() { - return "standard_inspect_site"; + return "guhuashi_site"; } @Override public String getDriverName() { - return "标准版-检测站点"; + return "固化室"; } @Override public String getDriverDescription() { - return "标准版-检测站点"; + return "固化室"; } @Override public DeviceDriver getDriverInstance(Device device) { - return (new StandardInspectSiteDeviceDriver()).setDevice(device).setDriverDefination(this); + return (new GuhuashiSiteDeviceDriver()).setDevice(device).setDriverDefination(this); } @Override public Class getDeviceDriverType() { - return StandardInspectSiteDeviceDriver.class; + return GuhuashiSiteDeviceDriver.class; } @Override diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/guhuashi/GuhuashiSiteDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/guhuashi/GuhuashiSiteDeviceDriver.java new file mode 100644 index 0000000..64f0491 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/guhuashi/GuhuashiSiteDeviceDriver.java @@ -0,0 +1,321 @@ +package org.nl.acs.device_driver.tianneng.guhuashi; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.domain.Device; +import org.nl.acs.device.service.DeviceService; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.RequestMethodEnum; +import org.nl.acs.device_driver.RouteableDeviceDriver; +import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; +import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +import org.nl.acs.ext.wms.data.feedBackTaskStatus.FeedBackTaskStatusRequest; +import org.nl.acs.ext.wms.service.AcsToWmsService; +import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.instruction.service.InstructionService; +import org.nl.acs.monitor.DeviceStageMonitor; +import org.nl.acs.opc.WcsConfig; +import org.nl.acs.route.service.RouteLineService; +import org.nl.acs.route.service.dto.RouteLineDto; +import org.nl.acs.task.domain.Task; +import org.nl.acs.task.service.TaskService; +import org.nl.acs.task.service.dto.TaskDto; +import org.nl.acs.task.service.mapper.TaskMapper; +import org.nl.acs.utils.ConvertUtil; +import org.nl.common.utils.CodeUtil; +import org.nl.config.SpringContextHolder; +import org.openscada.opc.lib.da.Server; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 检测站点驱动 + */ +@Slf4j +@Data +@RequiredArgsConstructor +public class GuhuashiSiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { + protected ItemProtocol itemProtocol = new ItemProtocol(this); + + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); + + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); + + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); + + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); + + TaskMapper taskMapper; + + AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); + + String container; + String container_type_desc; + String last_container_type_desc; + String last_container; + //放货准备锁 + String putReadyLock = null; + //有货标记 + protected boolean has_goods_tag = false; + + private Date time = new Date(); + + int mode = 0; + int error = 0; + int move = 0; + int task = 0; + int action = 0; + int last_mode = 0; + int last_error = 0; + int last_move = 0; + int last_task = 0; + Boolean isonline = true; + int hasGoods = 0; + String message = null; + Boolean iserror = false; + + int io_action = 0; + int last_io_action = 0; + int material_type = 0; + int last_material_type = 0; + int barcode = 0; + int last_barcode = 0; + + + boolean hasVehicle = false; + boolean isReady = false; + protected int instruction_num = 0; + protected int instruction_num_truth = 0; + boolean isFold = false; + private String assemble_check_tag; + + protected String current_stage_instruction_message; + protected String last_stage_instruction_message; + Integer heartbeat_tag; + private Date instruction_require_time = new Date(); + private Date instruction_finished_time = new Date(); + + private int instruction_require_time_out; + boolean requireSucess = false; + + private int instruction_finished_time_out; + + int branchProtocol = 0; + //备注 + String remark; + //数量 + String qty; + //物料 + String material; + //批次 + String batch; + //当前指令 + Instruction inst = null; + //上次指令 + Instruction last_inst = null; + + //触摸屏手动触发任务 + private Boolean is_has_task = false; + + //满盅入库请求标记 + boolean Sucess = false; + + //暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 + int flag; + + String devicecode; + + int status = 0; + int last_status = 0; + int start_time = 0; + int last_start_time = 0; + int stop_time = 0; + int last_stop_time = 0; + int open_time = 0; + int last_open_time = 0; + int standby_time = 0; + int last_standby_time = 0; + int production_time = 0; + int last_production_time = 0; + int error_time = 0; + int last_error_time = 0; + int end_time = 0; + int last_end_time = 0; + + + @Override + public Device getDevice() { + return this.device; + } + + + @Override + public void execute() { + String message = null; + try { + devicecode = this.getDeviceCode(); + mode = this.itemProtocol.getMode(); + error = this.itemProtocol.getError(); + status = this.itemProtocol.getStatus(); + start_time = this.itemProtocol.getItem_start_time(); + stop_time = this.itemProtocol.getItem_stop_time(); + open_time = this.itemProtocol.getItem_open_time(); + standby_time = this.itemProtocol.getItem_standby_time(); + production_time = this.itemProtocol.getItem_production_time(); + error_time = this.itemProtocol.getItem_error_time(); + end_time = this.itemProtocol.getItem_end_time(); + + if (mode != last_mode) { + this.setRequireSucess(false); + if (mode == 2) { + this.writing(0); + } + } + if (move != last_move) { + } + if (error != last_error) { + } + + + } catch (Exception var17) { + return; + } + + if (!this.itemProtocol.getIsonline()) { + this.setIsonline(false); + this.setIserror(true); + message = "信号量同步异常"; + //未联机 + } else if (mode == 0) { + this.setIsonline(false); + this.setIserror(true); + message = "未联机"; + //有报警 + } else if (error != 0) { + this.setIsonline(false); + this.setIserror(true); + message = "有报警"; + //无报警 + } else { + this.setIsonline(true); + this.setIserror(false); + message = ""; + Instruction instruction = null; + List toInstructions; + switch (mode) { + case 1: + log.debug("设备运转模式:等待工作"); + return; + case 2: + break; + case 3: + //todo 称重模式,带上重量、数量和向lms请求 + break; + } + + switch (flag) { + //取货完成 + case 1: + writing(2); + return; + //放货完成 + case 2: + writing(3); + return; + + } + + } + last_mode = mode; + last_error = error; + last_status = status; + last_start_time = start_time; + last_stop_time = stop_time; + last_open_time = open_time; + last_standby_time = standby_time; + last_production_time = production_time; + last_error_time = error_time; + last_end_time = end_time; + + } + + + public boolean exe_error() { + if (this.error == 0) { + return true; + } else { + log.debug("设备报警"); + return false; + } + } + + + public void executing(Server server, Map itemMap) { + this.control(itemMap); + } + + public void writing(int command) { + String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + + "." + ItemProtocol.item_to_command; + + //String opcservcerid = this.getDevice().getOpc_server_id(); +//Server server = ReadUtil.getServer(opcservcerid); + Map itemMap = new HashMap(); + itemMap.put(to_command, command); + this.control(itemMap); + + } + + + @Override + public JSONObject getDeviceStatusName() { + JSONObject jo = new JSONObject(); + String mode = ""; + String action = ""; + String move = ""; + if (this.getMode() == 0) { + mode = "未联机"; + } else if (this.getMode() == 1) { + mode = "单机"; + } else if (this.getMode() == 2) { + mode = "联机"; + } else if (this.getMode() == 3) { + mode = "运行中"; + } + + if (this.getMove() == 0) { + move = "无货"; + jo.put("hasGoods", false); + } else if (this.getMove() == 1) { + move = "有货"; + jo.put("hasGoods", true); + } else if (this.getMove() == 2) { + move = "有托盘有货"; + jo.put("hasGoods", true); + } + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode); + jo.put("move", move); + jo.put("action", action); + jo.put("isOnline", this.getIsonline()); + jo.put("error", this.getError()); + jo.put("isError", this.getIserror()); + jo.put("task", this.getTask()); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/guhuashi/ItemProtocol.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/guhuashi/ItemProtocol.java index d900b0c..8de8e52 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/guhuashi/ItemProtocol.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/guhuashi/ItemProtocol.java @@ -13,19 +13,20 @@ public class ItemProtocol { public static String item_heartbeat = "heartbeat"; public static String item_mode = "mode"; - public static String item_move = "move"; - public static String item_action = "action"; + public static String item_status = "status"; public static String item_error = "error"; + public static String item_start_time = "start_time"; + public static String item_stop_time = "stop_time"; + public static String item_open_time = "open_time"; + public static String item_standby_time = "standby_time"; + public static String item_production_time = "production_time"; + public static String item_error_time = "error_time"; + public static String item_end_time = "end_time"; public static String item_to_command = "to_command"; - public static String item_to_target = "to_target"; - public static String item_to_task = "to_task"; - public static String item_weight = "weight"; - public static String item_material_type = "material_type"; - public static String item_barcode = "barcode"; - private StandardInspectSiteDeviceDriver driver; + private GuhuashiSiteDeviceDriver driver; - public ItemProtocol(StandardInspectSiteDeviceDriver driver) { + public ItemProtocol(GuhuashiSiteDeviceDriver driver) { this.driver = driver; } @@ -37,42 +38,48 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_mode); } - public int getMove() { - return this.getOpcIntegerValue(item_move); - } - - public int getAction() { - return this.getOpcIntegerValue(item_action); + public int getStatus() { + return this.getOpcIntegerValue(item_status); } public int getError() { return this.getOpcIntegerValue(item_error); } + public int getItem_start_time() { + return this.getOpcIntegerValue(item_start_time); + } - public int getMaterialType() { - return this.getOpcIntegerValue(item_material_type); + public int getItem_stop_time() { + return this.getOpcIntegerValue(item_stop_time); } - public int getBarcode() { - return this.getOpcIntegerValue(item_barcode); + + + public int getItem_open_time() { + return this.getOpcIntegerValue(item_open_time); } + public int getItem_standby_time() { + return this.getOpcIntegerValue(item_standby_time); + } + + public int getItem_production_time() { + return this.getOpcIntegerValue(item_production_time); + } + + public int getItem_error_time() { + return this.getOpcIntegerValue(item_error_time); + } + + public int getItem_end_time() { + return this.getOpcIntegerValue(item_end_time); + } + + public int getToCommand() { return this.getOpcIntegerValue(item_to_command); } - public int getToTarget() { - return this.getOpcIntegerValue(item_to_target); - } - - public int getToTask() { - return this.getOpcIntegerValue(item_to_task); - } - - //是否有货 - public int hasGoods(int move) { - return move; - } Boolean isonline; @@ -93,11 +100,15 @@ public class ItemProtocol { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB600.B0")); list.add(new ItemDto(item_mode, "工作状态", "DB600.B2", Boolean.valueOf(true))); - list.add(new ItemDto(item_move, "光电开关信号", "DB600.B3")); - list.add(new ItemDto(item_action, "取放信号", "DB600.B4")); - list.add(new ItemDto(item_material_type, "物料类型", "DB600.D6")); - list.add(new ItemDto(item_error, "报警信号", "DB600.B7")); - list.add(new ItemDto(item_barcode, "条码", "DB600.D8")); + list.add(new ItemDto(item_status, "设备状态", "DB600.B3")); + list.add(new ItemDto(item_error, "error", "DB600.B4")); + list.add(new ItemDto(item_start_time, "开始固化时间", "DB600.D6")); + list.add(new ItemDto(item_stop_time, "固化结束时间", "DB600.D6")); + list.add(new ItemDto(item_open_time, "当前开机时间", "DB600.D6")); + list.add(new ItemDto(item_standby_time, "当前待机时间", "DB600.B7")); + list.add(new ItemDto(item_production_time, "当前生产时间", "DB600.D8")); + list.add(new ItemDto(item_error_time, "当前故障时间", "DB600.D8")); + list.add(new ItemDto(item_end_time, "当前故障时间", "DB600.B3")); return list; } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/guhuashi/StandardInspectSiteDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/guhuashi/StandardInspectSiteDeviceDriver.java deleted file mode 100644 index 07e6953..0000000 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/guhuashi/StandardInspectSiteDeviceDriver.java +++ /dev/null @@ -1,476 +0,0 @@ -package org.nl.acs.device_driver.tianneng.guhuashi; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSONObject; -import lombok.Data; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.device.domain.Device; -import org.nl.acs.device.service.DeviceService; -import org.nl.acs.device_driver.DeviceDriver; -import org.nl.acs.device_driver.RequestMethodEnum; -import org.nl.acs.device_driver.RouteableDeviceDriver; -import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; -import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; -import org.nl.acs.ext.wms.data.feedBackTaskStatus.FeedBackTaskStatusRequest; -import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.acs.instruction.domain.Instruction; -import org.nl.acs.instruction.service.InstructionService; -import org.nl.acs.monitor.DeviceStageMonitor; -import org.nl.acs.opc.WcsConfig; -import org.nl.acs.route.service.RouteLineService; -import org.nl.acs.route.service.dto.RouteLineDto; -import org.nl.acs.task.domain.Task; -import org.nl.acs.task.service.TaskService; -import org.nl.acs.task.service.dto.TaskDto; -import org.nl.acs.task.service.mapper.TaskMapper; -import org.nl.acs.utils.ConvertUtil; -import org.nl.common.utils.CodeUtil; -import org.nl.config.SpringContextHolder; -import org.openscada.opc.lib.da.Server; - -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * 检测站点驱动 - */ -@Slf4j -@Data -@RequiredArgsConstructor -public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver , DeviceStageMonitor { - protected ItemProtocol itemProtocol = new ItemProtocol(this); - - InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - - DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); - - RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); - - TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - - TaskMapper taskMapper; - - AcsToWmsService acsToWmsService=SpringContextHolder.getBean("acsToWmsServiceImpl"); - - String container; - String container_type_desc; - String last_container_type_desc; - String last_container; - //放货准备锁 - String putReadyLock = null; - //有货标记 - protected boolean has_goods_tag = false; - - private Date time = new Date(); - - int mode = 0; - int error = 0; - int move = 0; - int task = 0; - int action = 0; - int last_mode = 0; - int last_error = 0; - int last_move = 0; - int last_task = 0; - Boolean isonline = true; - int hasGoods = 0; - String message = null; - Boolean iserror = false; - - int io_action = 0; - int last_io_action = 0; - int material_type = 0; - int last_material_type = 0; - int barcode = 0; - int last_barcode =0; - - - boolean hasVehicle = false; - boolean isReady = false; - protected int instruction_num = 0; - protected int instruction_num_truth = 0; - boolean isFold = false; - private String assemble_check_tag; - - protected String current_stage_instruction_message; - protected String last_stage_instruction_message; - Integer heartbeat_tag; - private Date instruction_require_time = new Date(); - private Date instruction_finished_time = new Date(); - - private int instruction_require_time_out; - boolean requireSucess = false; - - private int instruction_finished_time_out; - - int branchProtocol = 0; - //备注 - String remark; - //数量 - String qty; - //物料 - String material; - //批次 - String batch; - //当前指令 - Instruction inst = null; - //上次指令 - Instruction last_inst = null; - - //触摸屏手动触发任务 - private Boolean is_has_task = false; - - //满盅入库请求标记 - boolean Sucess = false; - - //暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 - int flag; - - String devicecode; - - @Override - public Device getDevice() { - return this.device; - } - - - @Override - public void execute() { - String message = null; - try { - devicecode = this.getDeviceCode(); - mode = this.itemProtocol.getMode(); - error = this.itemProtocol.getError(); - move = this.itemProtocol.getMove(); - hasGoods = this.itemProtocol.getMove(); - action = this.itemProtocol.getAction(); - material_type = this.itemProtocol.getMaterialType(); - barcode=this.itemProtocol.getBarcode(); - if (mode != last_mode) { - this.setRequireSucess(false); - if(mode==2){ - this.writing(0); - } - } - if (move != last_move) { - } - if (error != last_error) { - } - - - } catch (Exception var17) { - return; - } - - if (!this.itemProtocol.getIsonline()) { - this.setIsonline(false); - this.setIserror(true); - message = "信号量同步异常"; - //未联机 - } else if (mode == 0) { - this.setIsonline(false); - this.setIserror(true); - message = "未联机"; - //有报警 - } else if (error != 0) { - this.setIsonline(false); - this.setIserror(true); - message = "有报警"; - //无报警 - } else { - this.setIsonline(true); - this.setIserror(false); - message = ""; - Instruction instruction = null; - List toInstructions; - switch (mode) { - case 1: - log.debug("设备运转模式:等待工作"); - return; - case 2: - break; - case 4: - //叫料 - if (move==0 && !requireSucess){ - apply(4); - } - break; - case 5: - //满料出库 - if(move==1 && !requireSucess){ - apply(5); - } - break; - case 6: - //申请空盘 - if (move==0 && !requireSucess){ - apply(6); - } - break; - case 7: - //空托盘出库 - if(move==1 && !requireSucess){ - apply(7); - } - break; - } - - switch (flag) { - //取货完成 - case 1: - writing(2); - return; - //放货完成 - case 2: - writing(3); - return; - - } - - } - last_mode = mode; - last_error = error; - last_move = move; - last_task = task; - last_material_type = material_type; - last_barcode=barcode; - - } - - - public boolean exe_error() { - if (this.error == 0) { - return true; - } else { - log.debug("设备报警"); - return false; - } - } - - protected void thingToNothing() { - log.debug("从有货到无货 清理数据"); - this.set_last_container(container, container_type_desc); - } - - public void set_last_container(String barcode, String type_desc) { - this.set_last_container(barcode); - this.set_last_container_type_desc(type_desc); - } - - public void set_last_container(String barcode) { - } - - public void set_last_container_type_desc(String type) { - } - - public boolean exe_business() { - return true; - } - - protected void executing(Instruction instruction) { - this.executing(1, instruction, ""); - } - - public void executing(int command, Instruction instruction, String appendMessage) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_command; - String to_target = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_target; - String to_task = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_task; - if (appendMessage == null) { - appendMessage = ""; - } - if (instruction != null) { - instruction_num = Integer.parseInt(instruction.getInstruction_code()); - } - //String opcservcerid = this.getDevice().getOpc_server_id(); -//Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - itemMap.put(to_command, 1); - itemMap.put(to_task, instruction_num); - this.control(itemMap); - - } - - public void executing(Server server, Map itemMap) { - this.control(itemMap); - } - - public void writing(int command) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_command; - - //String opcservcerid = this.getDevice().getOpc_server_id(); -//Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - itemMap.put(to_command, command); - this.control(itemMap); - - } - - public void writing(int type, int command) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_command; - String to_target = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_target; - String to_task = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_task; - //String opcservcerid = this.getDevice().getOpc_server_id(); -//Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - if (type == 1) { - itemMap.put(to_command, command); - } else if (type == 2) { - itemMap.put(to_target, command); - - } else if (type == 3) { - itemMap.put(to_task, command); - } - this.control(itemMap); - - } - - public boolean instruction_require(String container_code) { - return instruction_require(container_code, WcsConfig.task_container_type_default_desc); - } - - /** - * 请求指令 - * - * @param container_code - * @param container_type - */ - public synchronized boolean instruction_require(String container_code, String container_type) { - Date date = new Date(); - if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); - return false; - } else { - this.instruction_require_time = date; - TaskDto dto = new TaskDto(); - String now = DateUtil.now(); - dto.setTask_id(IdUtil.simpleUUID()); - dto.setCreate_by(this.getDevice().getDevice_code()); - dto.setUpdate_by(this.getDevice().getDevice_code()); - dto.setStart_point_code(this.getDevice().getDevice_code()); - dto.setVehicle_code(container_code); - dto.setVehicle_type(container_type); - - String taskcode = CodeUtil.getNewCode("TASK_NO"); - dto.setTask_code("-" + taskcode); - dto.setTask_status("0"); - dto.setPriority("101"); - RouteLineDto jo = routelineserver.findByCode(this.getDevice().getDevice_code()); - String next_device_codecode = jo.getNext_device_code(); - if (StrUtil.isEmpty(next_device_codecode)) { - throw new RuntimeException("该设备未找到对应路由"); - } - dto.setNext_point_code(next_device_codecode); - dto.setUpdate_time(now); - dto.setCreate_time(now); - -// WQLObject wo = WQLObject.getWQLObject("acs_task"); -// JSONObject json = (JSONObject) JSONObject.toJSON(dto); -// -// wo.insert(json); - - Task entity = ConvertUtil.convert(dto, Task.class); - taskMapper.insert(entity); - requireSucess = false; - return true; - } - } - - @Override - public JSONObject getDeviceStatusName() { - JSONObject jo = new JSONObject(); - String mode = ""; - String action = ""; - String move = ""; - if (this.getMode() == 0) { - mode = "未联机"; - } else if (this.getMode() == 1) { - mode = "单机"; - } else if (this.getMode() == 2) { - mode = "联机"; - } else if (this.getMode() == 3) { - mode = "运行中"; - } - - if (this.getMove() == 0) { - move = "无货"; - jo.put("hasGoods", false); - } else if (this.getMove() == 1) { - move = "有货"; - jo.put("hasGoods", true); - } else if (this.getMove() == 2) { - move = "有托盘有货"; - jo.put("hasGoods", true); - } - jo.put("device_name", this.getDevice().getDevice_name()); - jo.put("mode", mode); - jo.put("move", move); - jo.put("action", action); - jo.put("isOnline", this.getIsonline()); - jo.put("error", this.getError()); - jo.put("isError", this.getIserror()); - jo.put("task", this.getTask()); - return jo; - } - - @Override - public void setDeviceStatus(JSONObject data) { - - } - - /** - * lms申请任务 - * - * @param - */ - public synchronized boolean apply(Integer type) { - Date date = new Date(); - if (date.getTime() - this.time.getTime() < (long) this.instruction_require_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.time); - return false; - } else { - this.time = date; - FeedBackTaskStatusRequest request = new FeedBackTaskStatusRequest(); - request.setDevice_code(devicecode); - request.setMaterial_type(String.valueOf(material_type)); - request.setVehicle_code(String.valueOf(barcode)); - if (devicecode.startsWith("TBX")&&type==5&&barcode>0) { - //满架下料 - request.setRequest_medthod_code(RequestMethodEnum.apply_mjxl.getCode()); - request.setRequest_medthod_name(RequestMethodEnum.apply_mjxl.getName()); - }else if (devicecode.startsWith("TBX")&&type==6) { - //补空架 - request.setRequest_medthod_code(RequestMethodEnum.apply_tbxbkj.getCode()); - request.setRequest_medthod_name(RequestMethodEnum.apply_tbxbkj.getName()); - }else if (type==7) { - //空托盘出库,包片机和销售出库空位都可以 - request.setRequest_medthod_code(RequestMethodEnum.apply_kghjrk.getCode()); - request.setRequest_medthod_name(RequestMethodEnum.apply_kghjrk.getName()); - }else if(devicecode.startsWith("BP")&&material_type>0){ - request.setRequest_medthod_code(RequestMethodEnum.apply_bpsl.getCode()); - request.setRequest_medthod_name(RequestMethodEnum.apply_bpsl.getName()); - } - String resp = acsToWmsService.applyTask(request); - JSONObject res_jo = JSONObject.parseObject(resp); - if (StrUtil.equals(res_jo.getString("code"), "200")) { - this.writing(type); - this.setRequireSucess(true); - log.info("acs申请任务", this.devicecode, "满盅入库任务申请成功!"); - }else{ - this.writing(99); - } - return true; - } - } -} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site/ItemProtocol.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site/ItemProtocol.java index bbfc734..e96f262 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site/ItemProtocol.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site/ItemProtocol.java @@ -16,16 +16,12 @@ public class ItemProtocol { public static String item_move = "move"; public static String item_action = "action"; public static String item_error = "error"; - public static String item_to_command = "to_command"; - public static String item_to_target = "to_target"; - public static String item_to_task = "to_task"; - public static String item_weight = "weight"; public static String item_material_type = "material_type"; - public static String item_barcode = "barcode"; + public static String item_to_command = "to_command"; - private StandardInspectSiteDeviceDriver driver; + private SiteDeviceDriver driver; - public ItemProtocol(StandardInspectSiteDeviceDriver driver) { + public ItemProtocol(SiteDeviceDriver driver) { this.driver = driver; } @@ -49,26 +45,14 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_error); } - public int getMaterialType() { return this.getOpcIntegerValue(item_material_type); } - public int getBarcode() { - return this.getOpcIntegerValue(item_barcode); - } public int getToCommand() { return this.getOpcIntegerValue(item_to_command); } - public int getToTarget() { - return this.getOpcIntegerValue(item_to_target); - } - - public int getToTask() { - return this.getOpcIntegerValue(item_to_task); - } - //是否有货 public int hasGoods(int move) { return move; @@ -93,11 +77,10 @@ public class ItemProtocol { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB600.B0")); list.add(new ItemDto(item_mode, "工作状态", "DB600.B2", Boolean.valueOf(true))); - list.add(new ItemDto(item_move, "光电开关信号", "DB600.B3")); - list.add(new ItemDto(item_action, "取放信号", "DB600.B4")); + list.add(new ItemDto(item_move, "光电信号", "DB600.B3")); + list.add(new ItemDto(item_action, "取放信号", "DB600.B3")); + list.add(new ItemDto(item_error, "error", "DB600.B4")); list.add(new ItemDto(item_material_type, "物料类型", "DB600.D6")); - list.add(new ItemDto(item_error, "报警信号", "DB600.B7")); - list.add(new ItemDto(item_barcode, "条码", "DB600.D8")); return list; } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site/StandardInspectSiteDefination.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site/SiteDefination.java similarity index 78% rename from acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site/StandardInspectSiteDefination.java rename to acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site/SiteDefination.java index 77e7b7d..32f73e2 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site/StandardInspectSiteDefination.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site/SiteDefination.java @@ -15,31 +15,31 @@ import java.util.List; * 说明:该站点为普通带光电检测站点 */ @Service -public class StandardInspectSiteDefination implements OpcDeviceDriverDefination { +public class SiteDefination implements OpcDeviceDriverDefination { @Override public String getDriverCode() { - return "standard_inspect_site"; + return "site"; } @Override public String getDriverName() { - return "标准版-检测站点"; + return "天能-检测站点"; } @Override public String getDriverDescription() { - return "标准版-检测站点"; + return "天能-检测站点"; } @Override public DeviceDriver getDriverInstance(Device device) { - return (new StandardInspectSiteDeviceDriver()).setDevice(device).setDriverDefination(this); + return (new SiteDeviceDriver()).setDevice(device).setDriverDefination(this); } @Override public Class getDeviceDriverType() { - return StandardInspectSiteDeviceDriver.class; + return SiteDeviceDriver.class; } @Override diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site/StandardInspectSiteDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site/SiteDeviceDriver.java similarity index 83% rename from acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site/StandardInspectSiteDeviceDriver.java rename to acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site/SiteDeviceDriver.java index 23a2315..e4176cb 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site/StandardInspectSiteDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site/SiteDeviceDriver.java @@ -42,7 +42,7 @@ import java.util.Map; @Slf4j @Data @RequiredArgsConstructor -public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver , DeviceStageMonitor { +public class SiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver , DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); @@ -150,7 +150,6 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp hasGoods = this.itemProtocol.getMove(); action = this.itemProtocol.getAction(); material_type = this.itemProtocol.getMaterialType(); - barcode=this.itemProtocol.getBarcode(); if (mode != last_mode) { this.setRequireSucess(false); if(mode==2){ @@ -194,25 +193,25 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp return; case 2: break; - case 4: + case 5: //叫料 if (move==0 && !requireSucess){ apply(4); } break; - case 5: + case 6: //满料出库 if(move==1 && !requireSucess){ apply(5); } break; - case 6: + case 7: //申请空盘 if (move==0 && !requireSucess){ apply(6); } break; - case 7: + case 8: //空托盘出库 if(move==1 && !requireSucess){ apply(7); @@ -272,35 +271,6 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp return true; } - protected void executing(Instruction instruction) { - this.executing(1, instruction, ""); - } - - public void executing(int command, Instruction instruction, String appendMessage) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_command; - String to_target = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_target; - String to_task = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_task; - if (appendMessage == null) { - appendMessage = ""; - } - if (instruction != null) { - instruction_num = Integer.parseInt(instruction.getInstruction_code()); - } - //String opcservcerid = this.getDevice().getOpc_server_id(); -//Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - itemMap.put(to_command, 1); - itemMap.put(to_task, instruction_num); - this.control(itemMap); - - } - - public void executing(Server server, Map itemMap) { - this.control(itemMap); - } public void writing(int command) { String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() @@ -314,27 +284,6 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp } - public void writing(int type, int command) { - String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_command; - String to_target = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_target; - String to_task = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." + ItemProtocol.item_to_task; - //String opcservcerid = this.getDevice().getOpc_server_id(); -//Server server = ReadUtil.getServer(opcservcerid); - Map itemMap = new HashMap(); - if (type == 1) { - itemMap.put(to_command, command); - } else if (type == 2) { - itemMap.put(to_target, command); - - } else if (type == 3) { - itemMap.put(to_task, command); - } - this.control(itemMap); - - } public boolean instruction_require(String container_code) { return instruction_require(container_code, WcsConfig.task_container_type_default_desc); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site_status/ItemProtocol.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site_status/ItemProtocol.java index 218d53e..f57fa96 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site_status/ItemProtocol.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/site_status/ItemProtocol.java @@ -13,15 +13,11 @@ public class ItemProtocol { public static String item_heartbeat = "heartbeat"; public static String item_mode = "mode"; - public static String item_move = "move"; - public static String item_action = "action"; - public static String item_error = "error"; - public static String item_to_command = "to_command"; - public static String item_to_target = "to_target"; - public static String item_to_task = "to_task"; - public static String item_weight = "weight"; - public static String item_material_type = "material_type"; - public static String item_barcode = "barcode"; + public static String item_open_time = "open_time"; + public static String item_standby_time = "standby_time"; + public static String item_production_time = "production_time"; + public static String item_error_time = "error_time"; + public static String item_end_time = "end_time"; private StandardInspectSiteDeviceDriver driver; @@ -37,42 +33,26 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_mode); } - public int getMove() { - return this.getOpcIntegerValue(item_move); + public int getItem_open_time() { + return this.getOpcIntegerValue(item_open_time); } - public int getAction() { - return this.getOpcIntegerValue(item_action); + public int getItem_standby_time() { + return this.getOpcIntegerValue(item_standby_time); } - public int getError() { - return this.getOpcIntegerValue(item_error); + public int getItem_production_time() { + return this.getOpcIntegerValue(item_production_time); } - - public int getMaterialType() { - return this.getOpcIntegerValue(item_material_type); - } - public int getBarcode() { - return this.getOpcIntegerValue(item_barcode); + public int getItem_error_time() { + return this.getOpcIntegerValue(item_error_time); } - public int getToCommand() { - return this.getOpcIntegerValue(item_to_command); + public int getItem_end_time() { + return this.getOpcIntegerValue(item_end_time); } - public int getToTarget() { - return this.getOpcIntegerValue(item_to_target); - } - - public int getToTask() { - return this.getOpcIntegerValue(item_to_task); - } - - //是否有货 - public int hasGoods(int move) { - return move; - } Boolean isonline; @@ -93,17 +73,17 @@ public class ItemProtocol { ArrayList list = new ArrayList(); list.add(new ItemDto(item_heartbeat, "心跳", "DB600.B0")); list.add(new ItemDto(item_mode, "工作状态", "DB600.B2", Boolean.valueOf(true))); - list.add(new ItemDto(item_move, "光电开关信号", "DB600.B3")); - list.add(new ItemDto(item_action, "取放信号", "DB600.B4")); - list.add(new ItemDto(item_material_type, "物料类型", "DB600.D6")); - list.add(new ItemDto(item_error, "报警信号", "DB600.B7")); - list.add(new ItemDto(item_barcode, "条码", "DB600.D8")); + list.add(new ItemDto(item_open_time, "当前开机时间", "DB600.D6")); + list.add(new ItemDto(item_standby_time, "当前待机时间", "DB600.B7")); + list.add(new ItemDto(item_production_time, "当前生产时间", "DB600.B3")); + list.add(new ItemDto(item_error_time, "当前故障时间", "DB600.D8")); + list.add(new ItemDto(item_end_time, "当前关机时间", "DB600.B3")); return list; } public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "作业命令", "DB601.W2", Boolean.valueOf(true))); +// list.add(new ItemDto(item_to_command, "作业命令", "DB601.W2", Boolean.valueOf(true))); return list; } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/tubanxian/ItemProtocol.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/tubanxian/ItemProtocol.java index 62e8d88..833ed8a 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/tubanxian/ItemProtocol.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/tubanxian/ItemProtocol.java @@ -126,11 +126,12 @@ public class ItemProtocol { list.add(new ItemDto(item_error, "error", "DB600.B4")); list.add(new ItemDto(item_open_time, "当前开机时间", "DB600.D6")); list.add(new ItemDto(item_standby_time, "当前待机时间", "DB600.B7")); - list.add(new ItemDto(item_error_time, "当前生产时间", "DB600.D8")); - list.add(new ItemDto(item_end_time, "当前故障时间", "DB600.B3")); - list.add(new ItemDto(item_weight, "当前关机时间", "DB600.B4")); - list.add(new ItemDto(item_order_No, "本次称重重量", "DB600.D6")); - list.add(new ItemDto(item_error, "工单号", "DB600.B7")); + list.add(new ItemDto(item_production_time, "当前生产时间", "DB600.B3")); + list.add(new ItemDto(item_error_time, "当前故障时间", "DB600.D8")); + list.add(new ItemDto(item_end_time, "当前关机时间", "DB600.B3")); + list.add(new ItemDto(item_weight, "本次称重重量", "DB600.B4")); + list.add(new ItemDto(item_order_No, "工单号", "DB600.D6")); + list.add(new ItemDto(item_error, "error", "DB600.B7")); list.add(new ItemDto(item_material, "当前生产物料", "DB600.D8")); list.add(new ItemDto(item_number, "当前生产数量", "DB600.D8")); return list; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/tubanxian/TubanxianSiteDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/tubanxian/TubanxianSiteDeviceDriver.java index 283b589..346dc4c 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/tubanxian/TubanxianSiteDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/tianneng/tubanxian/TubanxianSiteDeviceDriver.java @@ -188,22 +188,28 @@ public class TubanxianSiteDeviceDriver extends AbstractOpcDeviceDriver implement return; case 2: break; - case 3: - //称重 - if (!requireSucess){ - //todo 请求wms获取称重结果 - } - break; - case 4: - //工单开工 - if (!requireSucess){ - //todo 工单开工 - } - break; case 5: - //工单完成 + //进料中 if (!requireSucess){ - //todo 工单完成 + //todo 进料中 + } + break; + case 6: + //固化中 + if (!requireSucess){ + //todo 固化中 + } + break; + case 7: + //固化完成 + if (!requireSucess){ + //todo 固化完成 + } + break; + case 8: + //出料中 + if (!requireSucess){ + //todo 出料中 } break; } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcServerService.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcServerService.java index 3e1f7a3..a8cf3e2 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcServerService.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcServerService.java @@ -17,5 +17,7 @@ public interface OpcServerService { void writeInteger(String var1, ItemValue... var2); + void writeIntegerByNewConn(String var1, ItemValue... var2); + void clearServer(String var1); } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcServerServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcServerServiceImpl.java index 8695fbe..27c553d 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcServerServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/opc/OpcServerServiceImpl.java @@ -1,5 +1,6 @@ package org.nl.acs.opc; +import cn.hutool.core.util.StrUtil; import org.jinterop.dcom.common.JIException; import org.nl.acs.auto.initial.ApplicationAutoInitial; import org.nl.acs.device_driver.driver.ItemValue; @@ -146,6 +147,68 @@ public class OpcServerServiceImpl implements OpcServerService, ApplicationAutoIn this.groups.remove(code); } + public void writeIntegerByNewConn(String code, ItemValue... values) { + try { + Group group = this.getServerByNewConn(code); + OpcUtl.writeValue(group, values); + } catch (Exception var4) { + this.clearServer(code); + log.info("写入出错opc server {} 重新加载", code, var4); + ThreadUtl.sleep(1000L); + throw var4; + } + } + + public Group getServerByNewConn(String code) { + synchronized(this.buildLock(code)) { + + Server server = (Server)this.servers.get(code); + if (server!=null){ + this.clearServer(code); + } + + OpcServerManageDto dto = (OpcServerManageDto)this.opcServerManageDtos.get(code); + if (dto == null) { + throw new RuntimeException(code+"不存在"); + } + +// if (server == null) { + server = OpcServerUtl.getServerWithOutException(dto.getOpc_host(), StrUtil.trim(dto.getCls_id()), dto.getUser(), dto.getPassword(), StrUtil.trim(dto.getDomain())); +// } + String groupName = code; + Group group = null; + + try { + group = server.addGroup(groupName); + } catch (Exception var12) { + this.clearServer(code); + ThreadUtl.sleep(2000L); + log.warn("获取opc出错重新获取", code, var12); + server = OpcServerUtl.getServerWithOutException(dto.getOpc_host(), StrUtil.trim(dto.getCls_id()), dto.getUser(), dto.getPassword(), StrUtil.trim(dto.getDomain())); + try { + group = server.addGroup(groupName); + } catch (Exception var11) { + throw new RuntimeException(var12); + } + } + + this.servers.put(code, server); + this.groups.put(code, group); + return group; + } + } + + private String buildLock(String key) { + if (StrUtil.isEmpty(key)) { + key = ""; + } + StringBuilder builder = new StringBuilder(); + builder.append("OpcServerService."); + builder.append(key); + String lock = builder.toString().intern(); + return lock; + } + public void writeInteger(String code, ItemValue... values) { try { Group group = this.getServer(code);