fix
This commit is contained in:
@@ -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<? extends DeviceDriver> getDeviceDriverType() {
|
||||
return BoxManipulatorDeviceDriver.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeviceType> getFitDeviceTypes() {
|
||||
List<DeviceType> types = new LinkedList();
|
||||
types.add(DeviceType.station);
|
||||
return types;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemDto> getReadableItemDtos() {
|
||||
return StandardItemProtocol.getReadableItemDtos();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public List<ItemDto> 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<? extends DeviceDriver> getDeviceDriverType() {
|
||||
// return BoxManipulatorDeviceDriver.class;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public List<DeviceType> getFitDeviceTypes() {
|
||||
// List<DeviceType> types = new LinkedList();
|
||||
// types.add(DeviceType.station);
|
||||
// return types;
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public List<ItemDto> getReadableItemDtos() {
|
||||
// return StandardItemProtocol.getReadableItemDtos();
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
// @Override
|
||||
// public List<ItemDto> getWriteableItemDtos() {
|
||||
// return StandardItemProtocol.getWriteableItemDtos();
|
||||
// }
|
||||
//}
|
||||
|
||||
@@ -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<String> getDeviceCodeList = null;
|
||||
|
||||
List<String> 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<String> getDeviceCodeList = null;
|
||||
//
|
||||
// List<String> 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;
|
||||
// }
|
||||
//}
|
||||
|
||||
@@ -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<? extends DeviceDriver> getDeviceDriverType() {
|
||||
return BoxManipulatorDeviceDriver.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeviceType> getFitDeviceTypes() {
|
||||
List<DeviceType> types = new LinkedList();
|
||||
types.add(DeviceType.station);
|
||||
return types;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemDto> getReadableItemDtos() {
|
||||
return StandardItemProtocol.getReadableItemDtos();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public List<ItemDto> getWriteableItemDtos() {
|
||||
return StandardItemProtocol.getWriteableItemDtos();
|
||||
}
|
||||
}
|
||||
@@ -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<String> getDeviceCodeList = null;
|
||||
|
||||
List<String> 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;
|
||||
}
|
||||
}
|
||||
@@ -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 + " 信号同步异常!");
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user