This commit is contained in:
2024-01-02 12:11:26 +08:00
parent 5342b5a657
commit 40fece7656
8 changed files with 976 additions and 509 deletions

View File

@@ -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();
// }
//}

View File

@@ -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;
// }
//}

View File

@@ -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();
}
}

View File

@@ -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;
}
}

View File

@@ -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 + " 信号同步异常!");

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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;