From 40fece765660cedc15ceaa8f3e956329ad3e1c0d Mon Sep 17 00:00:00 2001 From: tuqiang <437016993@qq.com> Date: Tue, 2 Jan 2024 12:11:26 +0800 Subject: [PATCH] fix --- .../BoxManipulatorDefination.java | 120 +-- .../BoxManipulatorDeviceDriver.java | 790 +++++++++--------- .../BoxManipulatorDefination.java | 59 ++ .../BoxManipulatorDeviceDriver.java | 397 +++++++++ .../StandardItemProtocol.java | 84 +- .../StandardManipulatorDefination.java | 3 +- .../StandardManipulatorDeviceDriver.java | 30 +- .../wms/service/impl/WmsToAcsServiceImpl.java | 2 +- 8 files changed, 976 insertions(+), 509 deletions(-) create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/manipulator/standard_manipulator/BoxManipulatorDefination.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/manipulator/standard_manipulator/BoxManipulatorDeviceDriver.java diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/box_manipulator/BoxManipulatorDefination.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/box_manipulator/BoxManipulatorDefination.java index ab2f25e..065a0c7 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/box_manipulator/BoxManipulatorDefination.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/box_manipulator/BoxManipulatorDefination.java @@ -1,60 +1,60 @@ -package org.nl.acs.device_driver.box_manipulator; - -import org.nl.acs.device.device_driver.standard_inspect.ItemDto; -import org.nl.acs.device.domain.Device; -import org.nl.acs.device.enums.DeviceType; -import org.nl.acs.device_driver.DeviceDriver; -import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination; -import org.nl.acs.device_driver.manipulator.standard_manipulator.StandardItemProtocol; -import org.springframework.stereotype.Service; - -import java.util.LinkedList; -import java.util.List; - -@Service -public class BoxManipulatorDefination implements OpcDeviceDriverDefination { - @Override - public String getDriverCode() { - return "box_manipulator"; - } - - @Override - public String getDriverName() { - return "装箱行架机械手"; - } - - @Override - public String getDriverDescription() { - return "装箱行架机械手"; - } - - @Override - public DeviceDriver getDriverInstance(Device device) { - return (new BoxManipulatorDeviceDriver()).setDevice(device).setDriverDefination(this); - - } - - @Override - public Class getDeviceDriverType() { - return BoxManipulatorDeviceDriver.class; - } - - @Override - public List getFitDeviceTypes() { - List types = new LinkedList(); - types.add(DeviceType.station); - return types; - } - - @Override - public List getReadableItemDtos() { - return StandardItemProtocol.getReadableItemDtos(); - } - - - - @Override - public List getWriteableItemDtos() { - return StandardItemProtocol.getWriteableItemDtos(); - } -} +//package org.nl.acs.device_driver.box_manipulator; +// +//import org.nl.acs.device.device_driver.standard_inspect.ItemDto; +//import org.nl.acs.device.domain.Device; +//import org.nl.acs.device.enums.DeviceType; +//import org.nl.acs.device_driver.DeviceDriver; +//import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination; +//import org.nl.acs.device_driver.manipulator.standard_manipulator.StandardItemProtocol; +//import org.springframework.stereotype.Service; +// +//import java.util.LinkedList; +//import java.util.List; +// +//@Service +//public class BoxManipulatorDefination implements OpcDeviceDriverDefination { +// @Override +// public String getDriverCode() { +// return "box_manipulator"; +// } +// +// @Override +// public String getDriverName() { +// return "装箱行架机械手"; +// } +// +// @Override +// public String getDriverDescription() { +// return "装箱行架机械手"; +// } +// +// @Override +// public DeviceDriver getDriverInstance(Device device) { +// return (new BoxManipulatorDeviceDriver()).setDevice(device).setDriverDefination(this); +// +// } +// +// @Override +// public Class getDeviceDriverType() { +// return BoxManipulatorDeviceDriver.class; +// } +// +// @Override +// public List getFitDeviceTypes() { +// List types = new LinkedList(); +// types.add(DeviceType.station); +// return types; +// } +// +// @Override +// public List getReadableItemDtos() { +// return StandardItemProtocol.getReadableItemDtos(); +// } +// +// +// +// @Override +// public List getWriteableItemDtos() { +// return StandardItemProtocol.getWriteableItemDtos(); +// } +//} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/box_manipulator/BoxManipulatorDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/box_manipulator/BoxManipulatorDeviceDriver.java index 7af0df6..8aad399 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/box_manipulator/BoxManipulatorDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/box_manipulator/BoxManipulatorDeviceDriver.java @@ -1,396 +1,396 @@ -package org.nl.acs.device_driver.box_manipulator; - -import cn.hutool.core.util.ObjectUtil; -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.common.base.CommonFinalParam; -import org.nl.acs.device.domain.Device; -import org.nl.acs.device.service.DeviceExtraService; -import org.nl.acs.device.service.impl.DeviceExtraServiceImpl; -import org.nl.acs.device_driver.DeviceDriver; -import org.nl.acs.device_driver.FeedLmsRealFailed; -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.device_driver.manipulator.standard_manipulator.StandardItemProtocol; -import org.nl.acs.history.ErrorUtil; -import org.nl.acs.history.service.DeviceErrorLogService; -import org.nl.acs.history.service.impl.DeviceErrorLogServiceImpl; -import org.nl.acs.instruction.domain.Instruction; -import org.nl.acs.instruction.service.InstructionService; -import org.nl.acs.log.service.DeviceExecuteLogService; -import org.nl.acs.monitor.DeviceStageMonitor; -import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.opc.DeviceAppServiceImpl; -import org.nl.acs.route.service.RouteLineService; -import org.nl.acs.route.service.impl.RouteLineServiceImpl; -import org.nl.acs.task.service.TaskService; -import org.nl.config.SpringContextHolder; -import org.springframework.beans.factory.annotation.Autowired; - -import java.util.Date; -import java.util.List; - -/** - * 装箱行架机械手 - */ -@Slf4j -@Data -@RequiredArgsConstructor -public class BoxManipulatorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, FeedLmsRealFailed { - - protected StandardItemProtocol standardItemProtocol = new StandardItemProtocol("2"); - @Autowired - DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); - @Autowired - TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); - @Autowired - InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); - @Autowired - DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); - @Autowired - RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineServiceImpl.class); - @Autowired - DeviceExtraService deviceExtraService = SpringContextHolder.getBean(DeviceExtraServiceImpl.class); - @Autowired - DeviceErrorLogService errorLogServer = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); - - //工作模式 - int mode = 0; - int last_mode = 0; - //光电信号 - int move = 0; - int last_move = 0; - //动作信号 - int action = 0; - int last_action = 0; - //行走列 - int walk_y = 0; - int last_walk_y = 0; - //报警信号 - int error = 0; - int last_error = 0; - //任务号 - int task = 0; - int last_task = 0; - // x坐标 - float x_position = 0; - float last_x_position = 0; - // y坐标 - float y_position = 0; - float last_y_position = 0; - - int heartbeat = 0; - int last_heartbeat = 0; - int to_command = 0; - int last_to_command = 0; - - int to_target = 0; - int last_to_target = 0; - - int to_task = 0; - int last_to_task = 0; - - int to_onset = 0; - int last_to_onset = 0; - - Boolean isonline = true; - int hasGoods = 0; - String message = null; - Boolean iserror = false; - private Date instruction_update_time = new Date(); - private int instruction_update_time_out = 1000; - Integer heartbeat_tag; - private Date instruction_require_time = new Date(); - - private int instruction_require_time_out = 3000; - //行架机械手申请任务成功标识 - boolean requireSucess = false; - - private int instruction_finished_time_out; - - int branchProtocol = 0; - private String error_type = "hxhj_error_type"; - - //暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 - int flag; - - String device_code; - - //当前指令 - Instruction inst = null; - - //0 无任务执行 1更新指令状态 2下发电气信号 3允许取货 允许放货 5放货完成 - int now_steps_type = 0; - String notCreateTaskMessage = ""; - String notCreateInstMessage = ""; - String feedMessage = ""; - - - List getDeviceCodeList = null; - - List putDeviceCodeList = null; - - - @Override - public Device getDevice() { - return this.device; - } - - @Override - public void execute() { - String message = null; - try { - device_code = this.getDeviceCode(); - mode = this.standardItemProtocol.getMode(); - move = this.standardItemProtocol.getMove(); - action = this.standardItemProtocol.getAction(); - walk_y = this.standardItemProtocol.getWalk_y(); - error = this.standardItemProtocol.getError(); - task = this.standardItemProtocol.getTask(); - heartbeat = this.standardItemProtocol.getHeartbeat(); - to_command = this.standardItemProtocol.getTo_command(); - to_target = this.standardItemProtocol.getTo_target(); - to_task = this.standardItemProtocol.getTo_task(); - to_onset = this.standardItemProtocol.getTo_onset(); - x_position = this.standardItemProtocol.getX_position(); - y_position = this.standardItemProtocol.getY_position(); - - if (to_onset != last_to_onset) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_onset:" + last_to_onset + "->" + to_onset); - } - if (to_command != last_to_command) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_command:" + last_to_command + "->" + to_command); - } - if (to_target != last_to_target) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_target:" + last_to_target + "->" + to_target); - } - if (to_task != last_to_task) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号to_task:" + last_to_task + "->" + to_task); - } - if (mode != last_mode) { - requireSucess = false; - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); - } - if (move != last_move) { - logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); - } - if (action != last_action) { - logServer.deviceItemValue(this.device_code, "action", String.valueOf(action)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + last_action + "->" + action); - } - if (error != last_error) { - logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); - } - if (walk_y != last_walk_y) { - logServer.deviceItemValue(this.device_code, "walk_y", String.valueOf(walk_y)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号walk_y:" + last_walk_y + "->" + walk_y); - } - if (task != last_task) { - logServer.deviceItemValue(this.device_code, "task", String.valueOf(task)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + "->" + task); - } - if (x_position != last_x_position) { - logServer.deviceItemValue(this.device_code, "x_position", String.valueOf(x_position)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号x_position:" + last_x_position + "->" + x_position); - } - if (y_position != last_y_position) { - logServer.deviceItemValue(this.device_code, "y_position", String.valueOf(y_position)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号y_position:" + last_y_position + "->" + y_position); - } - - // 更新指令状态 - if (mode == 3 && task > 0) { - Date date = new Date(); - if (date.getTime() - this.instruction_update_time.getTime() < (long) this.instruction_update_time_out) { - log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_update_time_out); - - } else { - this.instruction_update_time = date; - //更改指令状态 - if (task > 0) { - Instruction inst = checkInst(); - if (inst != null) { - if (StrUtil.equals(inst.getInstruction_status(), "0")) { - inst.setInstruction_status(CommonFinalParam.ONE); - inst.setExecute_device_code(this.device_code); - instructionService.update(inst); - } - } - } - } - } - - } catch (Exception var17) { - var17.printStackTrace(); - feedMessage = var17.getMessage(); - logServer.deviceExecuteLog(this.device_code, "", "", "读取信号值时出现异常:" + var17.getMessage() + ",this.itemProtocol is null:" + ObjectUtil.isEmpty(this.standardItemProtocol)); - - } - - if (mode == 0) { - this.setIsonline(false); - message = "未联机"; - //有报警 - } else if (error != 0) { - this.setIserror(true); - message = "有报警"; - //无报警 - } else { - this.setIsonline(true); - this.setIserror(false); - message = ""; - Instruction instruction = null; - List toInstructions; - - //行架机械手申请任务 - if (mode == 2 && move == 0 && task == 0 && !requireSucess) { -// boolean res = applyTask(); -// if (res) { -// notCreateInstMessage = ""; -// notCreateTaskMessage = ""; -// feedMessage = ""; +//package org.nl.acs.device_driver.box_manipulator; +// +//import cn.hutool.core.util.ObjectUtil; +//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.common.base.CommonFinalParam; +//import org.nl.acs.device.domain.Device; +//import org.nl.acs.device.service.DeviceExtraService; +//import org.nl.acs.device.service.impl.DeviceExtraServiceImpl; +//import org.nl.acs.device_driver.DeviceDriver; +//import org.nl.acs.device_driver.FeedLmsRealFailed; +//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.device_driver.manipulator.standard_manipulator.StandardItemProtocol; +//import org.nl.acs.history.ErrorUtil; +//import org.nl.acs.history.service.DeviceErrorLogService; +//import org.nl.acs.history.service.impl.DeviceErrorLogServiceImpl; +//import org.nl.acs.instruction.domain.Instruction; +//import org.nl.acs.instruction.service.InstructionService; +//import org.nl.acs.log.service.DeviceExecuteLogService; +//import org.nl.acs.monitor.DeviceStageMonitor; +//import org.nl.acs.opc.DeviceAppService; +//import org.nl.acs.opc.DeviceAppServiceImpl; +//import org.nl.acs.route.service.RouteLineService; +//import org.nl.acs.route.service.impl.RouteLineServiceImpl; +//import org.nl.acs.task.service.TaskService; +//import org.nl.config.SpringContextHolder; +//import org.springframework.beans.factory.annotation.Autowired; +// +//import java.util.Date; +//import java.util.List; +// +///** +// * 装箱行架机械手 +// */ +//@Slf4j +//@Data +//@RequiredArgsConstructor +//public class BoxManipulatorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, FeedLmsRealFailed { +// +// protected StandardItemProtocol standardItemProtocol = new StandardItemProtocol("2"); +// @Autowired +// DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); +// @Autowired +// TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); +// @Autowired +// InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); +// @Autowired +// DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); +// @Autowired +// RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineServiceImpl.class); +// @Autowired +// DeviceExtraService deviceExtraService = SpringContextHolder.getBean(DeviceExtraServiceImpl.class); +// @Autowired +// DeviceErrorLogService errorLogServer = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); +// +// //工作模式 +// int mode = 0; +// int last_mode = 0; +// //光电信号 +// int move = 0; +// int last_move = 0; +// //动作信号 +// int action = 0; +// int last_action = 0; +// //行走列 +// int walk_y = 0; +// int last_walk_y = 0; +// //报警信号 +// int error = 0; +// int last_error = 0; +// //任务号 +// int task = 0; +// int last_task = 0; +// // x坐标 +// float x_position = 0; +// float last_x_position = 0; +// // y坐标 +// float y_position = 0; +// float last_y_position = 0; +// +// int heartbeat = 0; +// int last_heartbeat = 0; +// int to_command = 0; +// int last_to_command = 0; +// +// int to_target = 0; +// int last_to_target = 0; +// +// int to_task = 0; +// int last_to_task = 0; +// +// int to_onset = 0; +// int last_to_onset = 0; +// +// Boolean isonline = true; +// int hasGoods = 0; +// String message = null; +// Boolean iserror = false; +// private Date instruction_update_time = new Date(); +// private int instruction_update_time_out = 1000; +// Integer heartbeat_tag; +// private Date instruction_require_time = new Date(); +// +// private int instruction_require_time_out = 3000; +// //行架机械手申请任务成功标识 +// boolean requireSucess = false; +// +// private int instruction_finished_time_out; +// +// int branchProtocol = 0; +// private String error_type = "hxhj_error_type"; +// +// //暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 +// int flag; +// +// String device_code; +// +// //当前指令 +// Instruction inst = null; +// +// //0 无任务执行 1更新指令状态 2下发电气信号 3允许取货 允许放货 5放货完成 +// int now_steps_type = 0; +// String notCreateTaskMessage = ""; +// String notCreateInstMessage = ""; +// String feedMessage = ""; +// +// +// List getDeviceCodeList = null; +// +// List putDeviceCodeList = null; +// +// +// @Override +// public Device getDevice() { +// return this.device; +// } +// +// @Override +// public void execute() { +// String message = null; +// try { +// device_code = this.getDeviceCode(); +// mode = this.standardItemProtocol.getMode(); +// move = this.standardItemProtocol.getMove(); +// action = this.standardItemProtocol.getAction(); +// walk_y = this.standardItemProtocol.getWalk_y(); +// error = this.standardItemProtocol.getError(); +// task = this.standardItemProtocol.getTask(); +// heartbeat = this.standardItemProtocol.getHeartbeat(); +// to_command = this.standardItemProtocol.getTo_command(); +// to_target = this.standardItemProtocol.getTo_target(); +// to_task = this.standardItemProtocol.getTo_task(); +// to_onset = this.standardItemProtocol.getTo_onset(); +// x_position = this.standardItemProtocol.getX_position(); +// y_position = this.standardItemProtocol.getY_position(); +// +// if (to_onset != last_to_onset) { +// logServer.deviceExecuteLog(this.device_code, "", "", "信号to_onset:" + last_to_onset + "->" + to_onset); +// } +// if (to_command != last_to_command) { +// logServer.deviceExecuteLog(this.device_code, "", "", "信号to_command:" + last_to_command + "->" + to_command); +// } +// if (to_target != last_to_target) { +// logServer.deviceExecuteLog(this.device_code, "", "", "信号to_target:" + last_to_target + "->" + to_target); +// } +// if (to_task != last_to_task) { +// logServer.deviceExecuteLog(this.device_code, "", "", "信号to_task:" + last_to_task + "->" + to_task); +// } +// if (mode != last_mode) { +// requireSucess = false; +// logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); +// } +// if (move != last_move) { +// logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); +// } +// if (action != last_action) { +// logServer.deviceItemValue(this.device_code, "action", String.valueOf(action)); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + last_action + "->" + action); +// } +// if (error != last_error) { +// logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); +// } +// if (walk_y != last_walk_y) { +// logServer.deviceItemValue(this.device_code, "walk_y", String.valueOf(walk_y)); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号walk_y:" + last_walk_y + "->" + walk_y); +// } +// if (task != last_task) { +// logServer.deviceItemValue(this.device_code, "task", String.valueOf(task)); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + "->" + task); +// } +// if (x_position != last_x_position) { +// logServer.deviceItemValue(this.device_code, "x_position", String.valueOf(x_position)); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号x_position:" + last_x_position + "->" + x_position); +// } +// if (y_position != last_y_position) { +// logServer.deviceItemValue(this.device_code, "y_position", String.valueOf(y_position)); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号y_position:" + last_y_position + "->" + y_position); +// } +// +// // 更新指令状态 +// if (mode == 3 && task > 0) { +// Date date = new Date(); +// if (date.getTime() - this.instruction_update_time.getTime() < (long) this.instruction_update_time_out) { +// log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_update_time_out); +// +// } else { +// this.instruction_update_time = date; +// //更改指令状态 +// if (task > 0) { +// Instruction inst = checkInst(); +// if (inst != null) { +// if (StrUtil.equals(inst.getInstruction_status(), "0")) { +// inst.setInstruction_status(CommonFinalParam.ONE); +// inst.setExecute_device_code(this.device_code); +// instructionService.update(inst); +// } +// } +// } // } - } else { - if (mode == 2) { - //if (!requireSucess) { - String remark = "未查找任务原因为:"; - if (mode != 2) { - remark = remark + "工作模式(mode)不是待机状态,"; - } - if (move != 0) { - remark = remark + "光电信号(move)为有货状态,"; - } - if (task != 0) { - remark = remark + "当前上报任务号(task)应该为0,"; - if (ObjectUtil.isNotEmpty(this.inst)) { - this.inst = null; - } - } - if (requireSucess) { - remark = remark + "请右击该图标,将请求任务复位标记(requireSucess)改为否。"; - } - this.setNotCreateTaskMessage(remark); - //} - } - } - - } - last_mode = mode; - last_move = move; - last_action = action; - last_walk_y = walk_y; - last_error = error; - last_task = task; - last_heartbeat = heartbeat; - last_to_task = to_task; - last_to_command = to_command; - last_to_target = to_target; - last_to_onset = to_onset; - last_x_position = x_position; - last_y_position = y_position; - } - - @Override - public JSONObject getDeviceStatusName() { - JSONObject jo = new JSONObject(); - String mode = ""; - String move = ""; - String action = ""; - String walk_y = ""; - 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 = "无货"; - } else if (this.getMove() == 1) { - move = "有货"; - } - - String requireSucess = "0"; - if (this.requireSucess) { - requireSucess = "1"; - } - jo.put("requireSucess", requireSucess); - if (this.getAction() == 1) { - action = "取货中"; - } else if (this.getAction() == 2) { - action = "取货完成"; - } else if (this.getAction() == 3) { - action = "放货中"; - } else if (this.getAction() == 4) { - action = "放货完成"; - } - - jo.put("device_name", this.getDevice().getDevice_name()); - jo.put("mode", mode); - jo.put("move", move); - jo.put("action", action); - jo.put("task", task); - jo.put("walk_y", walk_y); - jo.put("isOnline", this.getIsonline()); - jo.put("error", ErrorUtil.getDictDetail("hxhj_error_type", String.valueOf(this.getError()))); - jo.put("isError", this.getIserror()); - jo.put("message", this.getMessage()); - jo.put("notCreateTaskMessage", notCreateTaskMessage); - jo.put("notCreateInstMessage", notCreateInstMessage); - jo.put("feedMessage", feedMessage); - jo.put("driver_type", "siemens_conveyor"); - jo.put("is_click", true); - jo.put("x", x_position); - jo.put("y", y_position); - return jo; - } - - @Override - public void setDeviceStatus(JSONObject data) { - String requestSucess = data.getString("requireSucess"); - if (StrUtil.equals(requestSucess, "0")) { - this.requireSucess = false; - } else if (StrUtil.equals(requestSucess, "1")) { - this.requireSucess = true; - } - } - - @Override - public JSONObject feedLmsRealFailedInfo() { - JSONObject jo = new JSONObject(); - jo.put("device_code", this.getDevice().getDevice_code()); - jo.put("device_name", this.getDevice().getDevice_name()); - jo.put("fault_code", String.valueOf(error)); - jo.put("fault_info", ErrorUtil.getDictDetail(error_type, String.valueOf(this.getError()))); - jo.put("fault_type", error_type); - return jo; - } - - - public Instruction checkInst() { - if (ObjectUtil.isNotEmpty(this.inst)) { - if (this.task > 0) { - if (this.inst.getInstruction_code().equals(String.valueOf(this.task))) { - return this.inst; - } else { - inst = instructionService.findByCodeFromCache(String.valueOf(task)); - return inst; - } - } - } else { - inst = instructionService.findByCodeFromCache(String.valueOf(task)); - return inst; - } - return null; - } -} +// } +// +// } catch (Exception var17) { +// var17.printStackTrace(); +// feedMessage = var17.getMessage(); +// logServer.deviceExecuteLog(this.device_code, "", "", "读取信号值时出现异常:" + var17.getMessage() + ",this.itemProtocol is null:" + ObjectUtil.isEmpty(this.standardItemProtocol)); +// +// } +// +// if (mode == 0) { +// this.setIsonline(false); +// message = "未联机"; +// //有报警 +// } else if (error != 0) { +// this.setIserror(true); +// message = "有报警"; +// //无报警 +// } else { +// this.setIsonline(true); +// this.setIserror(false); +// message = ""; +// Instruction instruction = null; +// List toInstructions; +// +// //行架机械手申请任务 +// if (mode == 2 && move == 0 && task == 0 && !requireSucess) { +//// boolean res = applyTask(); +//// if (res) { +//// notCreateInstMessage = ""; +//// notCreateTaskMessage = ""; +//// feedMessage = ""; +//// } +// } else { +// if (mode == 2) { +// //if (!requireSucess) { +// String remark = "未查找任务原因为:"; +// if (mode != 2) { +// remark = remark + "工作模式(mode)不是待机状态,"; +// } +// if (move != 0) { +// remark = remark + "光电信号(move)为有货状态,"; +// } +// if (task != 0) { +// remark = remark + "当前上报任务号(task)应该为0,"; +// if (ObjectUtil.isNotEmpty(this.inst)) { +// this.inst = null; +// } +// } +// if (requireSucess) { +// remark = remark + "请右击该图标,将请求任务复位标记(requireSucess)改为否。"; +// } +// this.setNotCreateTaskMessage(remark); +// //} +// } +// } +// +// } +// last_mode = mode; +// last_move = move; +// last_action = action; +// last_walk_y = walk_y; +// last_error = error; +// last_task = task; +// last_heartbeat = heartbeat; +// last_to_task = to_task; +// last_to_command = to_command; +// last_to_target = to_target; +// last_to_onset = to_onset; +// last_x_position = x_position; +// last_y_position = y_position; +// } +// +// @Override +// public JSONObject getDeviceStatusName() { +// JSONObject jo = new JSONObject(); +// String mode = ""; +// String move = ""; +// String action = ""; +// String walk_y = ""; +// 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 = "无货"; +// } else if (this.getMove() == 1) { +// move = "有货"; +// } +// +// String requireSucess = "0"; +// if (this.requireSucess) { +// requireSucess = "1"; +// } +// jo.put("requireSucess", requireSucess); +// if (this.getAction() == 1) { +// action = "取货中"; +// } else if (this.getAction() == 2) { +// action = "取货完成"; +// } else if (this.getAction() == 3) { +// action = "放货中"; +// } else if (this.getAction() == 4) { +// action = "放货完成"; +// } +// +// jo.put("device_name", this.getDevice().getDevice_name()); +// jo.put("mode", mode); +// jo.put("move", move); +// jo.put("action", action); +// jo.put("task", task); +// jo.put("walk_y", walk_y); +// jo.put("isOnline", this.getIsonline()); +// jo.put("error", ErrorUtil.getDictDetail("hxhj_error_type", String.valueOf(this.getError()))); +// jo.put("isError", this.getIserror()); +// jo.put("message", this.getMessage()); +// jo.put("notCreateTaskMessage", notCreateTaskMessage); +// jo.put("notCreateInstMessage", notCreateInstMessage); +// jo.put("feedMessage", feedMessage); +// jo.put("driver_type", "siemens_conveyor"); +// jo.put("is_click", true); +// jo.put("x", x_position); +// jo.put("y", y_position); +// return jo; +// } +// +// @Override +// public void setDeviceStatus(JSONObject data) { +// String requestSucess = data.getString("requireSucess"); +// if (StrUtil.equals(requestSucess, "0")) { +// this.requireSucess = false; +// } else if (StrUtil.equals(requestSucess, "1")) { +// this.requireSucess = true; +// } +// } +// +// @Override +// public JSONObject feedLmsRealFailedInfo() { +// JSONObject jo = new JSONObject(); +// jo.put("device_code", this.getDevice().getDevice_code()); +// jo.put("device_name", this.getDevice().getDevice_name()); +// jo.put("fault_code", String.valueOf(error)); +// jo.put("fault_info", ErrorUtil.getDictDetail(error_type, String.valueOf(this.getError()))); +// jo.put("fault_type", error_type); +// return jo; +// } +// +// +// public Instruction checkInst() { +// if (ObjectUtil.isNotEmpty(this.inst)) { +// if (this.task > 0) { +// if (this.inst.getInstruction_code().equals(String.valueOf(this.task))) { +// return this.inst; +// } else { +// inst = instructionService.findByCodeFromCache(String.valueOf(task)); +// return inst; +// } +// } +// } else { +// inst = instructionService.findByCodeFromCache(String.valueOf(task)); +// return inst; +// } +// return null; +// } +//} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/manipulator/standard_manipulator/BoxManipulatorDefination.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/manipulator/standard_manipulator/BoxManipulatorDefination.java new file mode 100644 index 0000000..63929b3 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/manipulator/standard_manipulator/BoxManipulatorDefination.java @@ -0,0 +1,59 @@ +package org.nl.acs.device_driver.manipulator.standard_manipulator; + +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; +import org.nl.acs.device.domain.Device; +import org.nl.acs.device.enums.DeviceType; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination; +import org.springframework.stereotype.Service; + +import java.util.LinkedList; +import java.util.List; + +@Service +public class BoxManipulatorDefination implements OpcDeviceDriverDefination { + @Override + public String getDriverCode() { + return "box_manipulator"; + } + + @Override + public String getDriverName() { + return "装箱行架机械手"; + } + + @Override + public String getDriverDescription() { + return "装箱行架机械手"; + } + + @Override + public DeviceDriver getDriverInstance(Device device) { + return (new BoxManipulatorDeviceDriver()).setDevice(device).setDriverDefination(this); + + } + + @Override + public Class getDeviceDriverType() { + return BoxManipulatorDeviceDriver.class; + } + + @Override + public List getFitDeviceTypes() { + List types = new LinkedList(); + types.add(DeviceType.station); + return types; + } + + @Override + public List getReadableItemDtos() { + return StandardItemProtocol.getReadableItemDtos(); + } + + + + @Override + public List getWriteableItemDtos() { + return StandardItemProtocol.getWriteableItemDtos(); + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/manipulator/standard_manipulator/BoxManipulatorDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/manipulator/standard_manipulator/BoxManipulatorDeviceDriver.java new file mode 100644 index 0000000..daccfe2 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/manipulator/standard_manipulator/BoxManipulatorDeviceDriver.java @@ -0,0 +1,397 @@ +package org.nl.acs.device_driver.manipulator.standard_manipulator; + +import cn.hutool.core.util.ObjectUtil; +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.common.base.CommonFinalParam; +import org.nl.acs.device.domain.Device; +import org.nl.acs.device.service.DeviceExtraService; +import org.nl.acs.device.service.impl.DeviceExtraServiceImpl; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.FeedLmsRealFailed; +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.history.ErrorUtil; +import org.nl.acs.history.service.DeviceErrorLogService; +import org.nl.acs.history.service.impl.DeviceErrorLogServiceImpl; +import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.instruction.service.InstructionService; +import org.nl.acs.log.service.DeviceExecuteLogService; +import org.nl.acs.monitor.DeviceStageMonitor; +import org.nl.acs.opc.DeviceAppService; +import org.nl.acs.opc.DeviceAppServiceImpl; +import org.nl.acs.route.service.RouteLineService; +import org.nl.acs.route.service.impl.RouteLineServiceImpl; +import org.nl.acs.task.service.TaskService; +import org.nl.config.SpringContextHolder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +import java.util.Date; +import java.util.List; + +/** + * 装箱行架机械手 + */ +@Slf4j +@Data +@RequiredArgsConstructor +public class BoxManipulatorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, FeedLmsRealFailed { + protected StandardItemProtocol standardItemProtocol = new StandardItemProtocol(this); + @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); + @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); + @Autowired + DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); + @Autowired + RouteLineService routeLineService = SpringContextHolder.getBean(RouteLineServiceImpl.class); + @Autowired + DeviceExtraService deviceExtraService = SpringContextHolder.getBean(DeviceExtraServiceImpl.class); + @Autowired + DeviceErrorLogService errorLogServer = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); + + //工作模式 + int mode = 0; + int last_mode = 0; + //光电信号 + int move = 0; + int last_move = 0; + //动作信号 + int action = 0; + int last_action = 0; + //行走列 + int walk_y = 0; + int last_walk_y = 0; + //报警信号 + int error = 0; + int last_error = 0; + //任务号 + int task = 0; + int last_task = 0; + // x坐标 + float x_position = 0; + float last_x_position = 0; + // y坐标 + float y_position = 0; + float last_y_position = 0; + + int heartbeat = 0; + int last_heartbeat = 0; + int to_command = 0; + int last_to_command = 0; + + int to_target = 0; + int last_to_target = 0; + + int to_task = 0; + int last_to_task = 0; + + int to_onset = 0; + int last_to_onset = 0; + + Boolean isonline = true; + int hasGoods = 0; + String message = null; + Boolean iserror = false; + private Date instruction_update_time = new Date(); + private int instruction_update_time_out = 1000; + Integer heartbeat_tag; + private Date instruction_require_time = new Date(); + + private int instruction_require_time_out = 3000; + //行架机械手申请任务成功标识 + boolean requireSucess = false; + + private int instruction_finished_time_out; + + int branchProtocol = 0; + private String error_type = "hxhj_error_type"; + + //暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 + int flag; + + String device_code; + + //当前指令 + Instruction inst = null; + + + //0 无任务执行 1更新指令状态 2下发电气信号 3允许取货 允许放货 5放货完成 + int now_steps_type = 0; + String notCreateTaskMessage = ""; + String notCreateInstMessage = ""; + String feedMessage = ""; + + + List getDeviceCodeList = null; + + List putDeviceCodeList = null; + + + @Override + public Device getDevice() { + return this.device; + } + + @Override + public void execute() { + String message = null; + try { + device_code = this.getDeviceCode(); + mode = this.standardItemProtocol.getMode(device_code); + move = this.standardItemProtocol.getMove(device_code); + action = this.standardItemProtocol.getAction(device_code); + walk_y = this.standardItemProtocol.getWalk_y(device_code); + error = this.standardItemProtocol.getError(device_code); + task = this.standardItemProtocol.getTask(device_code); + heartbeat = this.standardItemProtocol.getHeartbeat(device_code); + to_command = this.standardItemProtocol.getTo_command(device_code); + to_target = this.standardItemProtocol.getTo_target(device_code); + to_task = this.standardItemProtocol.getTo_task(device_code); + to_onset = this.standardItemProtocol.getTo_onset(device_code); + x_position = this.standardItemProtocol.getX_position(device_code); + y_position = this.standardItemProtocol.getY_position(device_code); + + if (to_onset != last_to_onset) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号to_onset:" + last_to_onset + "->" + to_onset); + } + if (to_command != last_to_command) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号to_command:" + last_to_command + "->" + to_command); + } + if (to_target != last_to_target) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号to_target:" + last_to_target + "->" + to_target); + } + if (to_task != last_to_task) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号to_task:" + last_to_task + "->" + to_task); + } + if (mode != last_mode) { + requireSucess = false; + logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); + } + if (move != last_move) { + logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); + } + if (action != last_action) { + logServer.deviceItemValue(this.device_code, "action", String.valueOf(action)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + last_action + "->" + action); + } + if (error != last_error) { + logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); + } + if (walk_y != last_walk_y) { + logServer.deviceItemValue(this.device_code, "walk_y", String.valueOf(walk_y)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号walk_y:" + last_walk_y + "->" + walk_y); + } + if (task != last_task) { + logServer.deviceItemValue(this.device_code, "task", String.valueOf(task)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + "->" + task); + } + if (x_position != last_x_position) { + logServer.deviceItemValue(this.device_code, "x_position", String.valueOf(x_position)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号x_position:" + last_x_position + "->" + x_position); + } + if (y_position != last_y_position) { + logServer.deviceItemValue(this.device_code, "y_position", String.valueOf(y_position)); + logServer.deviceExecuteLog(this.device_code, "", "", "信号y_position:" + last_y_position + "->" + y_position); + } + + // 更新指令状态 + if (mode == 3 && task > 0) { + Date date = new Date(); + if (date.getTime() - this.instruction_update_time.getTime() < (long) this.instruction_update_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_update_time_out); + + } else { + this.instruction_update_time = date; + //更改指令状态 + if (task > 0) { + Instruction inst = checkInst(); + if (inst != null) { + if (StrUtil.equals(inst.getInstruction_status(), "0")) { + inst.setInstruction_status(CommonFinalParam.ONE); + inst.setExecute_device_code(this.device_code); + instructionService.update(inst); + } + } + } + } + } + + } catch (Exception var17) { + var17.printStackTrace(); + feedMessage = var17.getMessage(); + logServer.deviceExecuteLog(this.device_code, "", "", "读取信号值时出现异常:" + var17.getMessage() + ",this.itemProtocol is null:" + ObjectUtil.isEmpty(this.standardItemProtocol)); + + } + + if (mode == 0) { + this.setIsonline(false); + message = "未联机"; + //有报警 + } else if (error != 0) { + this.setIserror(true); + message = "有报警"; + //无报警 + } else { + this.setIsonline(true); + this.setIserror(false); + message = ""; + Instruction instruction = null; + List toInstructions; + + //行架机械手申请任务 + if (mode == 2 && move == 0 && task == 0 && !requireSucess) { +// boolean res = applyTask(); +// if (res) { +// notCreateInstMessage = ""; +// notCreateTaskMessage = ""; +// feedMessage = ""; +// } + } else { + if (mode == 2) { + //if (!requireSucess) { + String remark = "未查找任务原因为:"; + if (mode != 2) { + remark = remark + "工作模式(mode)不是待机状态,"; + } + if (move != 0) { + remark = remark + "光电信号(move)为有货状态,"; + } + if (task != 0) { + remark = remark + "当前上报任务号(task)应该为0,"; + if (ObjectUtil.isNotEmpty(this.inst)) { + this.inst = null; + } + } + if (requireSucess) { + remark = remark + "请右击该图标,将请求任务复位标记(requireSucess)改为否。"; + } + this.setNotCreateTaskMessage(remark); + //} + } + } + + } + last_mode = mode; + last_move = move; + last_action = action; + last_walk_y = walk_y; + last_error = error; + last_task = task; + last_heartbeat = heartbeat; + last_to_task = to_task; + last_to_command = to_command; + last_to_target = to_target; + last_to_onset = to_onset; + last_x_position = x_position; + last_y_position = y_position; + } + + @Override + public JSONObject getDeviceStatusName() { + JSONObject jo = new JSONObject(); + String mode = ""; + String move = ""; + String action = ""; + String walk_y = ""; + 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 = "无货"; + } else if (this.getMove() == 1) { + move = "有货"; + } + + String requireSucess = "0"; + if (this.requireSucess) { + requireSucess = "1"; + } + jo.put("requireSucess", requireSucess); + if (this.getAction() == 1) { + action = "取货中"; + } else if (this.getAction() == 2) { + action = "取货完成"; + } else if (this.getAction() == 3) { + action = "放货中"; + } else if (this.getAction() == 4) { + action = "放货完成"; + } + + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("mode", mode); + jo.put("move", move); + jo.put("action", action); + jo.put("task", task); + jo.put("walk_y", walk_y); + jo.put("isOnline", this.getIsonline()); + jo.put("error", ErrorUtil.getDictDetail("hxhj_error_type", String.valueOf(this.getError()))); + jo.put("isError", this.getIserror()); + jo.put("message", this.getMessage()); + jo.put("notCreateTaskMessage", notCreateTaskMessage); + jo.put("notCreateInstMessage", notCreateInstMessage); + jo.put("feedMessage", feedMessage); + jo.put("driver_type", "siemens_conveyor"); + jo.put("is_click", true); + jo.put("x", x_position); + jo.put("y", y_position); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + String requestSucess = data.getString("requireSucess"); + if (StrUtil.equals(requestSucess, "0")) { + this.requireSucess = false; + } else if (StrUtil.equals(requestSucess, "1")) { + this.requireSucess = true; + } + } + + @Override + public JSONObject feedLmsRealFailedInfo() { + JSONObject jo = new JSONObject(); + jo.put("device_code", this.getDevice().getDevice_code()); + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("fault_code", String.valueOf(error)); + jo.put("fault_info", ErrorUtil.getDictDetail(error_type, String.valueOf(this.getError()))); + jo.put("fault_type", error_type); + return jo; + } + + + public Instruction checkInst() { + if (ObjectUtil.isNotEmpty(this.inst)) { + if (this.task > 0) { + if (this.inst.getInstruction_code().equals(String.valueOf(this.task))) { + return this.inst; + } else { + inst = instructionService.findByCodeFromCache(String.valueOf(task)); + return inst; + } + } + } else { + inst = instructionService.findByCodeFromCache(String.valueOf(task)); + return inst; + } + return null; + } +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/manipulator/standard_manipulator/StandardItemProtocol.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/manipulator/standard_manipulator/StandardItemProtocol.java index 1d3df4b..33f93c0 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/manipulator/standard_manipulator/StandardItemProtocol.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/manipulator/standard_manipulator/StandardItemProtocol.java @@ -3,7 +3,11 @@ package org.nl.acs.device_driver.manipulator.standard_manipulator; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.nl.acs.device.device_driver.standard_inspect.ItemDto; -import org.nl.acs.device_driver.box_manipulator.BoxManipulatorDeviceDriver; +import org.nl.acs.device.domain.Device; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.opc.DeviceAppService; +import org.nl.acs.opc.DeviceAppServiceImpl; +import org.nl.config.SpringContextHolder; import java.util.ArrayList; @@ -12,6 +16,9 @@ import java.util.List; @Slf4j @Data public class StandardItemProtocol { + + DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); + //心跳 public static String item_heartbeat = "heartbeat"; //工作模式 @@ -40,77 +47,80 @@ public class StandardItemProtocol { //下发任务号 public static String item_to_task = "to_task"; - StandardManipulatorDeviceDriver standardManipulatorDeviceDriver; - BoxManipulatorDeviceDriver boxManipulatorDeviceDriver; - private final String type; + private final DeviceDriver driver; - public StandardItemProtocol(String type) { - this.type = type; + public StandardItemProtocol(DeviceDriver driver) { + this.driver = driver; } - public int getHeartbeat() { - return this.getOpcIntegerValue(item_heartbeat,type); + public int getHeartbeat(String device_code) { + return this.getOpcIntegerValue(item_heartbeat,device_code); } - public int getMode() { - return this.getOpcIntegerValue(item_mode,type); + public int getMode(String device_code) { + return this.getOpcIntegerValue(item_mode,device_code); } - public int getMove() { - return this.getOpcIntegerValue(item_move,type); + public int getMove(String device_code) { + return this.getOpcIntegerValue(item_move,device_code); } - public int getAction() { - return this.getOpcIntegerValue(item_action,type); + public int getAction(String device_code) { + return this.getOpcIntegerValue(item_action,device_code); } - public int getWalk_y() { - return this.getOpcIntegerValue(item_walk_y,type); + public int getWalk_y(String device_code) { + return this.getOpcIntegerValue(item_walk_y,device_code); } - public int getError() { - return this.getOpcIntegerValue(item_error,type); + public int getError(String device_code) { + return this.getOpcIntegerValue(item_error,device_code); } - public int getTask() { - return this.getOpcIntegerValue(item_task,type); + public int getTask(String device_code) { + return this.getOpcIntegerValue(item_task,device_code); } - public int getTo_command() { - return this.getOpcIntegerValue(item_to_command,type); + public int getTo_command(String device_code) { + return this.getOpcIntegerValue(item_to_command,device_code); } - public int getTo_target() { - return this.getOpcIntegerValue(item_to_target,type); + public int getTo_target(String device_code) { + return this.getOpcIntegerValue(item_to_target,device_code); } - public int getTo_task() { - return this.getOpcIntegerValue(item_to_task,type); + public int getTo_task(String device_code) { + return this.getOpcIntegerValue(item_to_task,device_code); } - public int getTo_onset() { - return this.getOpcIntegerValue(item_to_onset,type); + public int getTo_onset(String device_code) { + return this.getOpcIntegerValue(item_to_onset,device_code); } - public int getX_position() { - return this.getOpcIntegerValue(item_x_position,type); + public int getX_position(String device_code) { + return this.getOpcIntegerValue(item_x_position,device_code); } - public int getY_position() { - return this.getOpcIntegerValue(item_y_position,type); + public int getY_position(String device_code) { + return this.getOpcIntegerValue(item_y_position,device_code); } Boolean isonline; - public int getOpcIntegerValue(String protocol,String type) { + public int getOpcIntegerValue(String protocol,String device_code) { Integer value = null; - if ("1".equals(type)){ - value = this.standardManipulatorDeviceDriver.getIntegeregerValue(protocol); - }else if ("2".equals(type)){ - value = this.boxManipulatorDeviceDriver.getIntegeregerValue(protocol); + Device device = deviceAppService.findDeviceByCode(device_code); + if (device.getDeviceDriver() instanceof StandardManipulatorDeviceDriver) { + StandardManipulatorDeviceDriver standardManipulatorDeviceDriver; + standardManipulatorDeviceDriver = (StandardManipulatorDeviceDriver) device.getDeviceDriver(); + value = standardManipulatorDeviceDriver.getIntegeregerValue(protocol); + }else if (device.getDeviceDriver() instanceof BoxManipulatorDeviceDriver){ + BoxManipulatorDeviceDriver boxManipulatorDeviceDriver; + boxManipulatorDeviceDriver = (BoxManipulatorDeviceDriver) device.getDeviceDriver(); + value = boxManipulatorDeviceDriver.getIntegeregerValue(protocol); } if (value == null) { // log.error(this.getDriver().getDeviceCode() + ":protocol " + protocol + " 信号同步异常!"); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/manipulator/standard_manipulator/StandardManipulatorDefination.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/manipulator/standard_manipulator/StandardManipulatorDefination.java index 4fa51c1..5639b1a 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/manipulator/standard_manipulator/StandardManipulatorDefination.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/manipulator/standard_manipulator/StandardManipulatorDefination.java @@ -5,7 +5,6 @@ import org.nl.acs.device.domain.Device; import org.nl.acs.device.enums.DeviceType; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination; -import org.nl.acs.device_driver.stacker.standard_stacker.StandardStackerDeviceDriver; import org.springframework.stereotype.Service; import java.util.LinkedList; @@ -30,7 +29,7 @@ public class StandardManipulatorDefination implements OpcDeviceDriverDefination @Override public DeviceDriver getDriverInstance(Device device) { - return (new StandardStackerDeviceDriver()).setDevice(device).setDriverDefination(this); + return (new StandardManipulatorDeviceDriver()).setDevice(device).setDriverDefination(this); } diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/manipulator/standard_manipulator/StandardManipulatorDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/manipulator/standard_manipulator/StandardManipulatorDeviceDriver.java index 98cf1b8..590fb6f 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/manipulator/standard_manipulator/StandardManipulatorDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/manipulator/standard_manipulator/StandardManipulatorDeviceDriver.java @@ -29,6 +29,8 @@ import org.nl.acs.route.service.impl.RouteLineServiceImpl; import org.nl.acs.task.service.TaskService; import org.nl.config.SpringContextHolder; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; @@ -40,7 +42,7 @@ import java.util.List; @Data @RequiredArgsConstructor public class StandardManipulatorDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, FeedLmsRealFailed { - protected StandardItemProtocol standardItemProtocol = new StandardItemProtocol("1"); + protected StandardItemProtocol standardItemProtocol = new StandardItemProtocol(this); @Autowired DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); @Autowired @@ -143,19 +145,19 @@ public class StandardManipulatorDeviceDriver extends AbstractOpcDeviceDriver imp String message = null; try { device_code = this.getDeviceCode(); - mode = this.standardItemProtocol.getMode(); - move = this.standardItemProtocol.getMove(); - action = this.standardItemProtocol.getAction(); - walk_y = this.standardItemProtocol.getWalk_y(); - error = this.standardItemProtocol.getError(); - task = this.standardItemProtocol.getTask(); - heartbeat = this.standardItemProtocol.getHeartbeat(); - to_command = this.standardItemProtocol.getTo_command(); - to_target = this.standardItemProtocol.getTo_target(); - to_task = this.standardItemProtocol.getTo_task(); - to_onset = this.standardItemProtocol.getTo_onset(); - x_position = this.standardItemProtocol.getX_position(); - y_position = this.standardItemProtocol.getY_position(); + mode = this.standardItemProtocol.getMode(device_code); + move = this.standardItemProtocol.getMove(device_code); + action = this.standardItemProtocol.getAction(device_code); + walk_y = this.standardItemProtocol.getWalk_y(device_code); + error = this.standardItemProtocol.getError(device_code); + task = this.standardItemProtocol.getTask(device_code); + heartbeat = this.standardItemProtocol.getHeartbeat(device_code); + to_command = this.standardItemProtocol.getTo_command(device_code); + to_target = this.standardItemProtocol.getTo_target(device_code); + to_task = this.standardItemProtocol.getTo_task(device_code); + to_onset = this.standardItemProtocol.getTo_onset(device_code); + x_position = this.standardItemProtocol.getX_position(device_code); + y_position = this.standardItemProtocol.getY_position(device_code); if (to_onset != last_to_onset) { logServer.deviceExecuteLog(this.device_code, "", "", "信号to_onset:" + last_to_onset + "->" + to_onset); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java index 3f00b55..9f0887c 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java @@ -20,9 +20,9 @@ import org.nl.acs.device.service.DeviceService; import org.nl.acs.device_driver.FeedLmsRealFailed; import org.nl.acs.device_driver.agv.ndcone.AgvNdcOneDeviceDriver; import org.nl.acs.device_driver.agv.ndctwo.AgvNdcTwoDeviceDriver; -import org.nl.acs.device_driver.box_manipulator.BoxManipulatorDeviceDriver; import org.nl.acs.device_driver.conveyor.hongxiang_conveyor.HongXiangStationDeviceDriver; import org.nl.acs.device_driver.conveyor.hongxiang_device.HongXiangConveyorDeviceDriver; +import org.nl.acs.device_driver.manipulator.standard_manipulator.BoxManipulatorDeviceDriver; import org.nl.acs.device_driver.manipulator.standard_manipulator.StandardManipulatorDeviceDriver; import org.nl.acs.device_driver.three_color.lamp_three_color.LampThreecolorDeviceDriver; import org.nl.acs.device_driver.conveyor.oven_manipulator.OvenGantryManipulatorDeviceDriver;