From ff1aa7a9218e458dfd9255b1f87490af52afb62a Mon Sep 17 00:00:00 2001
From: Junjie <DELL@qq.com>
Date: 星期二, 06 一月 2026 13:39:17 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java | 468 +++++++++++++++++++++++++++++++++++++---------------------
1 files changed, 298 insertions(+), 170 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java b/src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java
index 2df5438..812ee32 100644
--- a/src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java
+++ b/src/main/java/com/zy/core/thread/impl/ZySiemensDualCrnThread.java
@@ -1,39 +1,41 @@
package com.zy.core.thread.impl;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.serializer.SerializerFeature;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
-import com.zy.asrs.entity.BasDualCrnp;
-import com.zy.asrs.entity.BasDualCrnpOpt;
-import com.zy.asrs.entity.DeviceConfig;
-import com.zy.asrs.entity.DeviceDataLog;
+import com.zy.asrs.entity.*;
import com.zy.asrs.service.BasDualCrnpOptService;
import com.zy.asrs.service.BasDualCrnpService;
+import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.utils.Utils;
import com.zy.common.utils.RedisUtil;
+import com.zy.core.News;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
-import com.zy.core.enums.CrnTaskModeType;
-import com.zy.core.enums.RedisKeyType;
-import com.zy.core.enums.SlaveType;
+import com.zy.core.cache.SlaveConnection;
+import com.zy.core.enums.*;
import com.zy.core.model.CommandResponse;
+import com.zy.core.model.StationObjModel;
import com.zy.core.model.Task;
import com.zy.core.model.command.DualCrnCommand;
import com.zy.core.model.protocol.DualCrnProtocol;
+import com.zy.core.model.protocol.StationProtocol;
import com.zy.core.network.DeviceConnectPool;
import com.zy.core.network.ZyDualCrnConnectDriver;
import com.zy.core.network.entity.ZyDualCrnStatusEntity;
import com.zy.core.thread.DualCrnThread;
+import com.zy.core.thread.StationThread;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.text.MessageFormat;
import java.util.Date;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ThreadFactory;
-import java.util.concurrent.TimeUnit;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
/**
* 鍙屽伐浣嶅爢鍨涙満绾跨▼
@@ -47,10 +49,6 @@
private ZyDualCrnConnectDriver zyDualCrnConnectDriver;
private DualCrnProtocol crnProtocol;
private int deviceLogCollectTime = 200;
- private boolean resetFlag = false;
- private volatile boolean closed = false;
- private ScheduledExecutorService readExecutor;
- private ScheduledExecutorService processExecutor;
public ZySiemensDualCrnThread(DeviceConfig deviceConfig, RedisUtil redisUtil) {
this.deviceConfig = deviceConfig;
@@ -62,53 +60,163 @@
public void run() {
this.connect();
this.initCrn();
- readExecutor = Executors.newSingleThreadScheduledExecutor(new ThreadFactory() {
- @Override
- public Thread newThread(Runnable r) {
- Thread t = new Thread(r);
- t.setName("DualCrnReader-" + deviceConfig.getDeviceNo());
- t.setDaemon(true);
- return t;
- }
- });
- readExecutor.scheduleAtFixedRate(() -> {
- if (closed || Thread.currentThread().isInterrupted()) {
- return;
- }
- try {
- deviceLogCollectTime = Utils.getDeviceLogCollectTime();
- readStatus();
- } catch (Exception e) {
- log.error("DualCrnThread Fail", e);
- }
- }, 0, 200, TimeUnit.MILLISECONDS);
- processExecutor = Executors.newSingleThreadScheduledExecutor(new ThreadFactory() {
- @Override
- public Thread newThread(Runnable r) {
- Thread t = new Thread(r);
- t.setName("DualCrnWriter-" + deviceConfig.getDeviceNo());
- t.setDaemon(true);
- return t;
+ Thread readThread = new Thread(() -> {
+ while (true) {
+ try {
+ deviceLogCollectTime = Utils.getDeviceLogCollectTime();
+ readStatus();
+ Thread.sleep(100);
+ } catch (Exception e) {
+ log.error("DualCrnThread Fail", e);
+ }
}
});
- processExecutor.scheduleAtFixedRate(() -> {
- if (closed || Thread.currentThread().isInterrupted()) {
- return;
- }
- try {
- int step = 1;
- Task task = MessageQueue.poll(SlaveType.DualCrn, deviceConfig.getDeviceNo());
- if (task != null) {
- step = task.getStep();
+ readThread.start();
+
+ Thread processThread = new Thread(() -> {
+ while (true) {
+ try {
+ int step = 1;
+ Task task = MessageQueue.poll(SlaveType.DualCrn, deviceConfig.getDeviceNo());
+ if (task != null) {
+ step = task.getStep();
+ }
+
+ if (step == 2) {
+ List<DualCrnCommand> commandList = (List<DualCrnCommand>) task.getData();
+ DualCrnCommand command = commandList.get(0);
+
+ HashMap<String, Object> map = new HashMap<>();
+ map.put("commands", commandList);
+ map.put("idx", 1);
+ redisUtil.set(RedisKeyType.DUAL_CRN_COMMAND_.key + command.getTaskNo(), JSON.toJSONString(map, SerializerFeature.DisableCircularReferenceDetect), 60 * 60 * 24);
+ sendCommand(command);
+ } else if (step == 3) {
+ sendCommand((DualCrnCommand) task.getData());
+ }
+
+ Thread.sleep(100);
+ } catch (Exception e) {
+ log.error("DualCrnProcess Fail", e);
}
- if (step == 2 && task != null) {
- sendCommand((DualCrnCommand) task.getData());
- }
- } catch (Exception e) {
- e.printStackTrace();
}
- }, 0, 200, TimeUnit.MILLISECONDS);
+ });
+ processThread.start();
+
+ Thread commandThread = new Thread(() -> {
+ while (true) {
+ try {
+ if(crnProtocol.getMode() != DualCrnModeType.AUTO.id) {
+ continue;
+ }
+
+ if(crnProtocol.getAlarm() != 0) {
+ continue;
+ }
+
+ if (crnProtocol.getLoaded() == 1 && crnProtocol.getLoadedTwo() == 1) {
+ Object wait = redisUtil.get(RedisKeyType.DUAL_CRN_PICK_WAIT_NEXT_TASK.key + crnProtocol.getCrnNo());
+ if (wait != null) {
+ redisUtil.del(RedisKeyType.DUAL_CRN_PICK_WAIT_NEXT_TASK.key + crnProtocol.getCrnNo());
+ }
+ }
+
+ if(crnProtocol.getTaskNo() > 0 && crnProtocol.getStatus() == DualCrnStatusType.IDLE.id) {
+ Integer taskNo = crnProtocol.getTaskNo();
+ Object commandObj = redisUtil.get(RedisKeyType.DUAL_CRN_COMMAND_.key + taskNo);
+ if (commandObj == null) {
+ News.error("鍙屽伐浣嶅爢鍨涙満锛屽伐浣�1绌洪棽绛夊緟涓嬪彂鍛戒护锛屼絾鏈壘鍒板懡浠ゃ�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crnProtocol.getCrnNo(), taskNo);
+ continue;
+ }
+
+ JSONObject commandMap = JSON.parseObject(commandObj.toString());
+ Integer idx = commandMap.getInteger("idx");
+ List<DualCrnCommand> commandList = commandMap.getJSONArray("commands").toJavaList(DualCrnCommand.class);
+ if (idx >= commandList.size()) {
+ continue;
+ }
+ DualCrnCommand dualCommand = commandList.get(idx);
+
+ if (dualCommand.getTaskMode() == DualCrnTaskModeType.PUT.id.shortValue()) {
+ //绛夊緟涓嬩竴涓换鍔�
+ Object wait = redisUtil.get(RedisKeyType.DUAL_CRN_PICK_WAIT_NEXT_TASK.key + crnProtocol.getCrnNo());
+ if (wait != null) {
+ continue;
+ }
+
+ Object outTaskStationInfoObj = redisUtil.get(RedisKeyType.DUAL_CRN_OUT_TASK_STATION_INFO.key + taskNo);
+ if (outTaskStationInfoObj != null) {
+ //妫�娴嬪嚭鍙g珯鏄惁鍙墽琛屾斁璐у姩浣�
+ StationObjModel stationObjModel = JSON.parseObject(outTaskStationInfoObj.toString(), StationObjModel.class);
+ StationThread stationThread = (StationThread) SlaveConnection.get(SlaveType.Devp, stationObjModel.getDeviceNo());
+ if (stationThread == null) {
+ continue;
+ }
+
+ Map<Integer, StationProtocol> statusMap = stationThread.getStatusMap();
+ StationProtocol stationProtocol = statusMap.get(stationObjModel.getStationId());
+ if (stationProtocol == null) {
+ continue;
+ }
+
+ if (!stationProtocol.isAutoing()) {
+ continue;
+ }
+
+ if (stationProtocol.isLoading()) {
+ continue;
+ }
+
+ if (stationProtocol.getTaskNo() > 0) {
+ continue;
+ }
+ }
+ }
+
+ idx++;
+ commandMap.put("idx", idx);
+ sendCommand(dualCommand);
+ redisUtil.set(RedisKeyType.DUAL_CRN_COMMAND_.key + taskNo, commandMap.toJSONString(), 60 * 60 * 24);
+ }
+
+ if(crnProtocol.getTaskNoTwo() > 0 && crnProtocol.getStatusTwo() == DualCrnStatusType.IDLE.id) {
+ Integer taskNo = crnProtocol.getTaskNoTwo();
+ Object commandObj = redisUtil.get(RedisKeyType.DUAL_CRN_COMMAND_.key + taskNo);
+ if (commandObj == null) {
+ News.error("鍙屽伐浣嶅爢鍨涙満锛屽伐浣�2绌洪棽绛夊緟涓嬪彂鍛戒护锛屼絾鏈壘鍒板懡浠ゃ�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crnProtocol.getCrnNo(), taskNo);
+ continue;
+ }
+
+ JSONObject commandMap = JSON.parseObject(commandObj.toString());
+ Integer idx = commandMap.getInteger("idx");
+ List<DualCrnCommand> commandList = commandMap.getJSONArray("commands").toJavaList(DualCrnCommand.class);
+ if (idx >= commandList.size()) {
+ continue;
+ }
+ DualCrnCommand dualCommand = commandList.get(idx);
+
+ if (dualCommand.getTaskMode() == DualCrnTaskModeType.PUT.id.shortValue()) {
+ //绛夊緟涓嬩竴涓换鍔�
+ Object wait = redisUtil.get(RedisKeyType.DUAL_CRN_PICK_WAIT_NEXT_TASK.key + crnProtocol.getCrnNo());
+ if (wait != null) {
+ continue;
+ }
+ }
+
+ idx++;
+ commandMap.put("idx", idx);
+ sendCommand(dualCommand);
+ redisUtil.set(RedisKeyType.DUAL_CRN_COMMAND_.key + taskNo, commandMap.toJSONString(), 60 * 60 * 24);
+ }
+
+ Thread.sleep(100);
+ } catch (Exception e) {
+ log.error("DualCrnCommand Fail", e);
+ }
+ }
+ });
+ commandThread.start();
}
/**
@@ -129,6 +237,7 @@
crnProtocol.setForkPos(-1);
crnProtocol.setLoaded(0);
crnProtocol.setWalkPos(0);
+ crnProtocol.setLiftPos(0);
//宸ヤ綅2
crnProtocol.setTaskNoTwo(0);
@@ -138,6 +247,7 @@
crnProtocol.setForkPosTwo(-1);
crnProtocol.setLoadedTwo(0);
crnProtocol.setWalkPosTwo(0);
+ crnProtocol.setLiftPosTwo(0);
crnProtocol.setAlarm(0);
crnProtocol.setXSpeed(0);
@@ -147,82 +257,6 @@
crnProtocol.setYDistance(0);
crnProtocol.setXDuration(0);
crnProtocol.setYDuration(0);
- }
-
- @Override
- public boolean connect() {
- zyDualCrnConnectDriver = new ZyDualCrnConnectDriver(deviceConfig);
- zyDualCrnConnectDriver.start();
- DeviceConnectPool.put(SlaveType.Crn, deviceConfig.getDeviceNo(), zyDualCrnConnectDriver);
- return true;
- }
-
- /**
- * 璇诲彇鐘舵��
- */
- private void readStatus(){
- ZyDualCrnStatusEntity crnStatus = zyDualCrnConnectDriver.getStatus();
- if (crnStatus == null) {
- OutputQueue.DUAL_CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧弻宸ヤ綅鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), deviceConfig.getDeviceNo(), deviceConfig.getIp(), deviceConfig.getPort()));
- return;
- }
-
- crnProtocol.setMode(crnStatus.getMode());
-
- //宸ヤ綅1
- crnProtocol.setTaskNo(crnStatus.getTaskNo());
- crnProtocol.setStatus(crnStatus.getStatus());
- crnProtocol.setBay(crnStatus.getBay());
- crnProtocol.setLevel(crnStatus.getLevel());
- crnProtocol.setForkPos(crnStatus.getForkPos());
- crnProtocol.setLoaded(crnStatus.getLoaded());
- crnProtocol.setWalkPos(crnStatus.getWalkPos());
-
- //宸ヤ綅2
- crnProtocol.setTaskNoTwo(crnStatus.getTaskNoTwo());
- crnProtocol.setStatusTwo(crnStatus.getStatusTwo());
- crnProtocol.setBayTwo(crnStatus.getBayTwo());
- crnProtocol.setLevelTwo(crnStatus.getLevelTwo());
- crnProtocol.setForkPosTwo(crnStatus.getForkPosTwo());
- crnProtocol.setLoadedTwo(crnStatus.getLoadedTwo());
- crnProtocol.setWalkPosTwo(crnStatus.getWalkPosTwo());
-
- crnProtocol.setAlarm(crnStatus.getAlarm());
- crnProtocol.setTemp1(crnStatus.getTemp1());
- crnProtocol.setTemp2(crnStatus.getTemp2());
- crnProtocol.setTemp3(crnStatus.getTemp3());
- crnProtocol.setTemp4(crnStatus.getTemp4());
- crnProtocol.setXSpeed(crnStatus.getXSpeed());
- crnProtocol.setYSpeed(crnStatus.getYSpeed());
- crnProtocol.setZSpeed(crnStatus.getZSpeed());
- crnProtocol.setXDistance(crnStatus.getXDistance());
- crnProtocol.setYDistance(crnStatus.getYDistance());
- crnProtocol.setXDuration(crnStatus.getXDuration());
- crnProtocol.setYDuration(crnStatus.getYDuration());
-
- OutputQueue.DUAL_CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), deviceConfig.getDeviceNo()));
-
- if (crnProtocol.getAlarm() > 0) {
- crnProtocol.setLastCommandTime(-1L);
- }
-
- if (crnProtocol.getAlarm() == 0 && crnProtocol.getLastCommandTime() == -1) {
- crnProtocol.setLastCommandTime(System.currentTimeMillis());
- }
-
- if (System.currentTimeMillis() - crnProtocol.getDeviceDataLog() > deviceLogCollectTime) {
- //淇濆瓨鏁版嵁璁板綍
- DeviceDataLog deviceDataLog = new DeviceDataLog();
- deviceDataLog.setOriginData(JSON.toJSONString(crnStatus));
- deviceDataLog.setWcsData(JSON.toJSONString(crnProtocol));
- deviceDataLog.setType(String.valueOf(SlaveType.DualCrn));
- deviceDataLog.setDeviceNo(crnProtocol.getCrnNo());
- deviceDataLog.setCreateTime(new Date());
-
- redisUtil.set(RedisKeyType.DEVICE_LOG_KEY.key + System.currentTimeMillis(), deviceDataLog, 60 * 60 * 24);
- //鏇存柊閲囬泦鏃堕棿
- crnProtocol.setDeviceDataLog(System.currentTimeMillis());
- }
BasDualCrnpService basDualCrnpService = null;
try {
@@ -247,16 +281,84 @@
}
@Override
+ public boolean connect() {
+ zyDualCrnConnectDriver = new ZyDualCrnConnectDriver(deviceConfig);
+ zyDualCrnConnectDriver.start();
+ DeviceConnectPool.put(SlaveType.Crn, deviceConfig.getDeviceNo(), zyDualCrnConnectDriver);
+ return true;
+ }
+
+ /**
+ * 璇诲彇鐘舵��
+ */
+ private void readStatus(){
+ ZyDualCrnStatusEntity crnStatus = zyDualCrnConnectDriver.getStatus();
+ if (crnStatus == null) {
+ OutputQueue.DUAL_CRN.offer(MessageFormat.format("銆恵0}銆戣鍙栧弻宸ヤ綅鍫嗗灈鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), deviceConfig.getDeviceNo(), deviceConfig.getIp(), deviceConfig.getPort()));
+ return;
+ }
+ crnProtocol.setMode(crnStatus.getMode());
+
+ //宸ヤ綅1
+ crnProtocol.setTaskNo(crnStatus.getTaskNo());
+ crnProtocol.setStatus(crnStatus.getStatus());
+ crnProtocol.setForkPos(crnStatus.getForkPos());
+ crnProtocol.setLoaded(crnStatus.getLoaded());
+ crnProtocol.setTaskReceive(crnStatus.getTaskReceive());
+
+ //宸ヤ綅2
+ crnProtocol.setTaskNoTwo(crnStatus.getTaskNoTwo());
+ crnProtocol.setStatusTwo(crnStatus.getStatusTwo());
+ crnProtocol.setForkPosTwo(crnStatus.getForkPosTwo());
+ crnProtocol.setLoadedTwo(crnStatus.getLoadedTwo());
+ crnProtocol.setTaskReceiveTwo(crnStatus.getTaskReceiveTwo());
+
+ crnProtocol.setBay(crnStatus.getBay());
+ crnProtocol.setLevel(crnStatus.getLevel());
+ crnProtocol.setWalkPos(crnStatus.getWalkPos());
+ crnProtocol.setLiftPos(crnStatus.getLiftPos());
+ crnProtocol.setAlarm(crnStatus.getAlarm());
+ crnProtocol.setTemp1(crnStatus.getTemp1());
+ crnProtocol.setTemp2(crnStatus.getTemp2());
+ crnProtocol.setTemp3(crnStatus.getTemp3());
+ crnProtocol.setTemp4(crnStatus.getTemp4());
+ crnProtocol.setXSpeed(crnStatus.getXSpeed());
+ crnProtocol.setYSpeed(crnStatus.getYSpeed());
+ crnProtocol.setZSpeed(crnStatus.getZSpeed());
+ crnProtocol.setXDistance(crnStatus.getXDistance());
+ crnProtocol.setYDistance(crnStatus.getYDistance());
+ crnProtocol.setXDuration(crnStatus.getXDuration());
+ crnProtocol.setYDuration(crnStatus.getYDuration());
+ crnProtocol.setGoodsType(crnStatus.getGoodsType());
+ crnProtocol.setBarcode(crnStatus.getBarcode());
+
+ OutputQueue.DUAL_CRN.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), deviceConfig.getDeviceNo()));
+
+ if (crnProtocol.getAlarm() > 0) {
+ crnProtocol.setLastCommandTime(-1L);
+ }
+
+ if (crnProtocol.getAlarm() == 0 && crnProtocol.getLastCommandTime() == -1) {
+ crnProtocol.setLastCommandTime(System.currentTimeMillis());
+ }
+
+ if (System.currentTimeMillis() - crnProtocol.getDeviceDataLog() > deviceLogCollectTime) {
+ //淇濆瓨鏁版嵁璁板綍
+ DeviceDataLog deviceDataLog = new DeviceDataLog();
+ deviceDataLog.setOriginData(JSON.toJSONString(crnStatus));
+ deviceDataLog.setWcsData(JSON.toJSONString(crnProtocol));
+ deviceDataLog.setType(String.valueOf(SlaveType.DualCrn));
+ deviceDataLog.setDeviceNo(crnProtocol.getCrnNo());
+ deviceDataLog.setCreateTime(new Date());
+
+ redisUtil.set(RedisKeyType.DEVICE_LOG_KEY.key + System.currentTimeMillis(), deviceDataLog, 60 * 60 * 24);
+ //鏇存柊閲囬泦鏃堕棿
+ crnProtocol.setDeviceDataLog(System.currentTimeMillis());
+ }
+ }
+
+ @Override
public void close() {
- closed = true;
- ScheduledExecutorService ex = readExecutor;
- if (ex != null) {
- try { ex.shutdownNow(); } catch (Exception ignore) {}
- }
- ScheduledExecutorService px = processExecutor;
- if (px != null) {
- try { px.shutdownNow(); } catch (Exception ignore) {}
- }
if (zyDualCrnConnectDriver != null) {
zyDualCrnConnectDriver.close();
}
@@ -271,16 +373,44 @@
public DualCrnCommand getPickAndPutCommand(String sourceLocNo, String targetLocNo, Integer taskNo, Integer crnNo, Integer station) {
DualCrnCommand crnCommand = new DualCrnCommand();
crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
- crnCommand.setTaskNo(taskNo.shortValue()); // 宸ヤ綔鍙�
- crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE.id.shortValue()); // 浠诲姟妯″紡: 搴撲綅绉昏浆
- crnCommand.setSourcePosX((short) Utils.getRow(sourceLocNo)); // 婧愬簱浣嶆帓
- crnCommand.setSourcePosY((short) Utils.getBay(sourceLocNo)); // 婧愬簱浣嶅垪
- crnCommand.setSourcePosZ((short) Utils.getLev(sourceLocNo)); // 婧愬簱浣嶅眰
- crnCommand.setDestinationPosX((short) Utils.getRow(targetLocNo)); // 鐩爣搴撲綅鎺�
- crnCommand.setDestinationPosY((short) Utils.getBay(targetLocNo)); // 鐩爣搴撲綅鍒�
- crnCommand.setDestinationPosZ((short) Utils.getLev(targetLocNo)); // 鐩爣搴撲綅灞�
- crnCommand.setStation(station.shortValue());//宸ヤ綅
- crnCommand.setCommand((short) 1); // 浠诲姟纭
+ crnCommand.setTaskNo(taskNo); // 宸ヤ綔鍙�
+ crnCommand.setTaskMode(DualCrnTaskModeType.TRANSFER.id); // 浠诲姟妯″紡: 鍙栨斁璐�
+ crnCommand.setSourcePosX(Utils.getRow(sourceLocNo)); // 婧愬簱浣嶆帓
+ crnCommand.setSourcePosY(Utils.getBay(sourceLocNo)); // 婧愬簱浣嶅垪
+ crnCommand.setSourcePosZ(Utils.getLev(sourceLocNo)); // 婧愬簱浣嶅眰
+ crnCommand.setDestinationPosX(Utils.getRow(targetLocNo)); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY(Utils.getBay(targetLocNo)); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ(Utils.getLev(targetLocNo)); // 鐩爣搴撲綅灞�
+ crnCommand.setStation(station);//宸ヤ綅
+ crnCommand.setCommand(1); // 浠诲姟纭
+ return crnCommand;
+ }
+
+ @Override
+ public DualCrnCommand getPickCommand(String targetLocNo, Integer taskNo, Integer crnNo, Integer station) {
+ DualCrnCommand crnCommand = new DualCrnCommand();
+ crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setTaskNo(taskNo); // 宸ヤ綔鍙�
+ crnCommand.setTaskMode(DualCrnTaskModeType.PICK.id); // 浠诲姟妯″紡: 鍙栬揣
+ crnCommand.setDestinationPosX(Utils.getRow(targetLocNo)); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY(Utils.getBay(targetLocNo)); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ(Utils.getLev(targetLocNo)); // 鐩爣搴撲綅灞�
+ crnCommand.setStation(station);//宸ヤ綅
+ crnCommand.setCommand(1); // 浠诲姟纭
+ return crnCommand;
+ }
+
+ @Override
+ public DualCrnCommand getPutCommand(String targetLocNo, Integer taskNo, Integer crnNo, Integer station) {
+ DualCrnCommand crnCommand = new DualCrnCommand();
+ crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setTaskNo(taskNo); // 宸ヤ綔鍙�
+ crnCommand.setTaskMode(DualCrnTaskModeType.PUT.id); // 浠诲姟妯″紡: 鏀捐揣
+ crnCommand.setDestinationPosX(Utils.getRow(targetLocNo)); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY(Utils.getBay(targetLocNo)); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ(Utils.getLev(targetLocNo)); // 鐩爣搴撲綅灞�
+ crnCommand.setStation(station);//宸ヤ綅
+ crnCommand.setCommand(1); // 浠诲姟纭
return crnCommand;
}
@@ -288,13 +418,12 @@
public DualCrnCommand getMoveCommand(String targetLocNo, Integer taskNo, Integer crnNo) {
DualCrnCommand crnCommand = new DualCrnCommand();
crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
- crnCommand.setTaskNo(taskNo.shortValue()); // 宸ヤ綔鍙�
- crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
- crnCommand.setTaskMode(CrnTaskModeType.CRN_MOVE.id.shortValue()); // 浠诲姟妯″紡: 鍫嗗灈鏈虹Щ鍔�
- crnCommand.setDestinationPosX((short) Utils.getRow(targetLocNo)); // 鐩爣搴撲綅鎺�
- crnCommand.setDestinationPosY((short) Utils.getBay(targetLocNo)); // 鐩爣搴撲綅鍒�
- crnCommand.setDestinationPosZ((short) Utils.getLev(targetLocNo)); // 鐩爣搴撲綅灞�
- crnCommand.setCommand((short) 1); // 浠诲姟纭
+ crnCommand.setTaskNo(taskNo); // 宸ヤ綔鍙�
+ crnCommand.setTaskMode(DualCrnTaskModeType.MOVE.id); // 浠诲姟妯″紡: 鍫嗗灈鏈虹Щ鍔�
+ crnCommand.setDestinationPosX(Utils.getRow(targetLocNo)); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY(Utils.getBay(targetLocNo)); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ(Utils.getLev(targetLocNo)); // 鐩爣搴撲綅灞�
+ crnCommand.setCommand(1); // 浠诲姟纭
return crnCommand;
}
@@ -302,17 +431,16 @@
public DualCrnCommand getResetCommand(Integer crnNo, Integer station) {
DualCrnCommand crnCommand = new DualCrnCommand();
crnCommand.setCrnNo(crnNo); // 鍫嗗灈鏈虹紪鍙�
- crnCommand.setTaskNo((short) 0); // 宸ヤ綔鍙�
- crnCommand.setAckFinish((short) 1); // 浠诲姟瀹屾垚纭浣�
- crnCommand.setTaskMode(CrnTaskModeType.NONE.id.shortValue()); // 浠诲姟妯″紡
- crnCommand.setSourcePosX((short)0); // 婧愬簱浣嶆帓
- crnCommand.setSourcePosY((short)0); // 婧愬簱浣嶅垪
- crnCommand.setSourcePosZ((short)0); // 婧愬簱浣嶅眰
- crnCommand.setDestinationPosX((short)0); // 鐩爣搴撲綅鎺�
- crnCommand.setDestinationPosY((short)0); // 鐩爣搴撲綅鍒�
- crnCommand.setDestinationPosZ((short)0); // 鐩爣搴撲綅灞�
- crnCommand.setStation(station.shortValue());//宸ヤ綅
- crnCommand.setCommand((short) 1); // 浠诲姟纭
+ crnCommand.setTaskNo(0); // 宸ヤ綔鍙�
+ crnCommand.setTaskMode(DualCrnTaskModeType.CONFIRM.id); // 浠诲姟妯″紡: 纭
+ crnCommand.setSourcePosX(0); // 婧愬簱浣嶆帓
+ crnCommand.setSourcePosY(0); // 婧愬簱浣嶅垪
+ crnCommand.setSourcePosZ(0); // 婧愬簱浣嶅眰
+ crnCommand.setDestinationPosX(0); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY(0); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ(0); // 鐩爣搴撲綅灞�
+ crnCommand.setStation(station);//宸ヤ綅
+ crnCommand.setCommand(1); // 浠诲姟纭
return crnCommand;
}
--
Gitblit v1.9.1