From 9372f61dcb41eeb2e09871caefce0f764d6ab021 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期五, 21 六月 2024 15:17:04 +0800
Subject: [PATCH] #
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java | 30 +++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java | 8
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/protocol/StaProtocol.java | 4
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/DevpThread.java | 2
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java | 21 ++
zy-asrs-flow/src/pages/deviceConfig/basConveyorSta/index.jsx | 121 ++++++-----
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/BasConveyorSta.java | 16 +
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/MotionCtgType.java | 2
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SuopaiSiemensDevpThread.java | 41 ++++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java | 58 ++++-
zy-asrs-flow/src/pages/device/lift/index.jsx | 10 +
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Motion.java | 1
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java | 116 ++---------
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/SwitchWorkModeParam.java | 17 +
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/enums/WorkModeType.java | 30 +++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SiemensDevpThread.java | 39 +++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java | 28 ++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/dto/WorkModeTypeDto.java | 20 ++
18 files changed, 394 insertions(+), 170 deletions(-)
diff --git a/zy-asrs-flow/src/pages/device/lift/index.jsx b/zy-asrs-flow/src/pages/device/lift/index.jsx
index 9d046e4..ebe0a9c 100644
--- a/zy-asrs-flow/src/pages/device/lift/index.jsx
+++ b/zy-asrs-flow/src/pages/device/lift/index.jsx
@@ -201,6 +201,16 @@
label: '褰撳墠灞�',
children: item.lev,
},
+ {
+ key: '11',
+ label: '宸插畬鎴愪换鍔″彿',
+ children: item.completeTaskNo,
+ },
+ {
+ key: '12',
+ label: '鎵╁睍',
+ children: JSON.stringify(item.extend),
+ },
];
return <div key={item.id} style={{ width: '45%' }}>
<div style={{ marginBottom: '10px' }}>
diff --git a/zy-asrs-flow/src/pages/deviceConfig/basConveyorSta/index.jsx b/zy-asrs-flow/src/pages/deviceConfig/basConveyorSta/index.jsx
index 1deb1b9..232747e 100644
--- a/zy-asrs-flow/src/pages/deviceConfig/basConveyorSta/index.jsx
+++ b/zy-asrs-flow/src/pages/deviceConfig/basConveyorSta/index.jsx
@@ -143,60 +143,60 @@
setSearchParam={setSearchParam}
/>,
},
- {
- title: '淇敼浜哄憳',
- dataIndex: 'updateBy$',
- valueType: 'text',
- hidden: false,
- width: 140,
- filterDropdown: (props) => <LinkFilter
- name='updateBy'
- major='user'
- {...props}
- actionRef={actionRef}
- setSearchParam={setSearchParam}
- />,
- },
- {
- title: '鍒涘缓浜哄憳',
- dataIndex: 'createBy$',
- valueType: 'text',
- hidden: false,
- width: 140,
- filterDropdown: (props) => <LinkFilter
- name='createBy'
- major='user'
- {...props}
- actionRef={actionRef}
- setSearchParam={setSearchParam}
- />,
- },
- {
- title: '鍒涘缓鏃堕棿',
- dataIndex: 'createTime$',
- valueType: 'text',
- hidden: false,
- width: 140,
- filterDropdown: (props) => <DatetimeRangeFilter
- name='createTime'
- {...props}
- actionRef={actionRef}
- setSearchParam={setSearchParam}
- />,
- },
- {
- title: '淇敼鏃堕棿',
- dataIndex: 'updateTime$',
- valueType: 'text',
- hidden: false,
- width: 140,
- filterDropdown: (props) => <DatetimeRangeFilter
- name='updateTime'
- {...props}
- actionRef={actionRef}
- setSearchParam={setSearchParam}
- />,
- },
+ // {
+ // title: '淇敼浜哄憳',
+ // dataIndex: 'updateBy$',
+ // valueType: 'text',
+ // hidden: false,
+ // width: 140,
+ // filterDropdown: (props) => <LinkFilter
+ // name='updateBy'
+ // major='user'
+ // {...props}
+ // actionRef={actionRef}
+ // setSearchParam={setSearchParam}
+ // />,
+ // },
+ // {
+ // title: '鍒涘缓浜哄憳',
+ // dataIndex: 'createBy$',
+ // valueType: 'text',
+ // hidden: false,
+ // width: 140,
+ // filterDropdown: (props) => <LinkFilter
+ // name='createBy'
+ // major='user'
+ // {...props}
+ // actionRef={actionRef}
+ // setSearchParam={setSearchParam}
+ // />,
+ // },
+ // {
+ // title: '鍒涘缓鏃堕棿',
+ // dataIndex: 'createTime$',
+ // valueType: 'text',
+ // hidden: false,
+ // width: 140,
+ // filterDropdown: (props) => <DatetimeRangeFilter
+ // name='createTime'
+ // {...props}
+ // actionRef={actionRef}
+ // setSearchParam={setSearchParam}
+ // />,
+ // },
+ // {
+ // title: '淇敼鏃堕棿',
+ // dataIndex: 'updateTime$',
+ // valueType: 'text',
+ // hidden: false,
+ // width: 140,
+ // filterDropdown: (props) => <DatetimeRangeFilter
+ // name='updateTime'
+ // {...props}
+ // actionRef={actionRef}
+ // setSearchParam={setSearchParam}
+ // />,
+ // },
{
title: '澶囨敞',
dataIndex: 'memo',
@@ -381,6 +381,19 @@
setSearchParam={setSearchParam}
/>,
},
+ {
+ title: '宸ヤ綔妯″紡',
+ dataIndex: 'workMode$',
+ valueType: 'text',
+ hidden: false,
+ width: 140,
+ filterDropdown: (props) => <TextFilter
+ name='workMode'
+ {...props}
+ actionRef={actionRef}
+ setSearchParam={setSearchParam}
+ />,
+ },
{
title: '鎿嶄綔',
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java
index 940edd9..892c241 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/controller/OpenController.java
@@ -6,10 +6,7 @@
import com.zy.asrs.framework.common.R;
import com.zy.asrs.framework.common.SnowflakeIdWorker;
import com.zy.asrs.wcs.core.domain.dto.BasLiftStaDto;
-import com.zy.asrs.wcs.core.domain.param.CreateInTaskParam;
-import com.zy.asrs.wcs.core.domain.param.CreateManualTakeTaskParam;
-import com.zy.asrs.wcs.core.domain.param.CreateMoveTaskParam;
-import com.zy.asrs.wcs.core.domain.param.CreateOutTaskParam;
+import com.zy.asrs.wcs.core.domain.param.*;
import com.zy.asrs.wcs.core.entity.*;
import com.zy.asrs.wcs.core.model.enums.DeviceCtgType;
import com.zy.asrs.wcs.core.model.enums.TaskCtgType;
@@ -21,6 +18,7 @@
import com.zy.asrs.wcs.rcs.model.enums.SlaveType;
import com.zy.asrs.wcs.rcs.model.protocol.ShuttleProtocol;
import com.zy.asrs.wcs.rcs.service.DeviceService;
+import com.zy.asrs.wcs.rcs.thread.DevpThread;
import com.zy.asrs.wcs.rcs.thread.ShuttleThread;
import com.zy.asrs.wcs.system.controller.BaseController;
import com.zy.asrs.wcs.system.entity.Dict;
@@ -58,6 +56,8 @@
private BasConveyorPathService basConveyorPathService;
@Autowired
private BasLiftService basLiftService;
+ @Autowired
+ private BasConveyorService basConveyorService;
//鐢熸垚鍏ュ簱浠诲姟
@PostMapping("/createInTask")
@@ -364,4 +364,24 @@
return R.ok();
}
+ //鍒囨崲宸ヤ綔妯″紡
+ @PostMapping("/switchWorkMode")
+ public R switchWorkMode(@RequestBody SwitchWorkModeParam param) {
+ BasConveyor basConveyor = basConveyorService.getOne(new LambdaQueryWrapper<BasConveyor>().eq(BasConveyor::getConveyorNo, param.getConveyorNo()));
+ if(basConveyor == null) {
+ return R.error("杈撻�佺嚎涓嶅瓨鍦�");
+ }
+
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Conveyor, basConveyor.getDeviceId().intValue());
+ if(devpThread == null) {
+ return R.error("杈撻�佺嚎绾跨▼涓嶅瓨鍦�");
+ }
+
+ boolean result = devpThread.switchWorkMode(param.getSiteId(), param.getWorkMode());
+ if (!result) {
+ return R.error("妯″紡鍒囨崲澶辫触");
+ }
+ return R.ok();
+ }
+
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/SwitchWorkModeParam.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/SwitchWorkModeParam.java
new file mode 100644
index 0000000..abb39d3
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/domain/param/SwitchWorkModeParam.java
@@ -0,0 +1,17 @@
+package com.zy.asrs.wcs.core.domain.param;
+
+import lombok.Data;
+
+@Data
+public class SwitchWorkModeParam {
+
+ //宸ヤ綔妯″紡
+ private Integer workMode;
+
+ //杈撻�佺嚎鍙�
+ private Integer conveyorNo;
+
+ //绔欑偣
+ private Integer siteId;
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/BasConveyorSta.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/BasConveyorSta.java
index 2a41008..323e203 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/BasConveyorSta.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/BasConveyorSta.java
@@ -4,6 +4,7 @@
import java.util.Date;
import com.zy.asrs.wcs.core.service.BasConveyorService;
+import com.zy.asrs.wcs.rcs.model.enums.WorkModeType;
import com.zy.asrs.wcs.system.entity.Host;
import com.zy.asrs.wcs.system.entity.User;
import org.springframework.format.annotation.DateTimeFormat;
@@ -171,6 +172,12 @@
@ApiModelProperty(value= "宸ヤ綔鍙�")
private Integer taskNo;
+ /**
+ * 宸ヤ綔妯″紡
+ */
+ @ApiModelProperty(value= "宸ヤ綔妯″紡")
+ private Integer workMode;
+
public BasConveyorSta() {}
public BasConveyorSta(Long conveyorId,Integer conveyorNo,Long updateBy,Long createBy,Date createTime,Date updateTime,String memo,Integer deleted,Long hostId,Integer siteNo,String inEnable,String outEnable,String autoing,String loading,String canining,String canouting,Integer locType1,Integer locType2,Integer locType3,String locNo,String qrCodeValue) {
@@ -325,5 +332,14 @@
}
}
+ public String getWorkMode$() {
+ if (null == this.workMode){ return null; }
+ WorkModeType workModeType = WorkModeType.get(this.workMode.shortValue());
+ if(!Cools.isEmpty(workModeType)){
+ return workModeType.desc;
+ }
+ return null;
+ }
+
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Motion.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Motion.java
index 95c20f8..2145544 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Motion.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/entity/Motion.java
@@ -217,7 +217,6 @@
* 鏄惁鍒犻櫎 1: 鏄� 0: 鍚�
*/
@ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄� 0: 鍚� ")
- @TableLogic
private Integer deleted;
/**
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
index 5db9b04..5791605 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/AnalyzeService.java
@@ -1176,6 +1176,14 @@
MotionCtgType.SHUTTLE_MOVE_TO_LIFT
));
+ // 鍚戞彁鍗囨満鍙戦�佸皬杞﹀凡鍒颁綅淇″彿
+ motionList.addAll(kernelService.liftShuttleArrival(
+ null
+ , MotionDto.build((dto -> {
+ dto.setLiftNo(liftDevice.getId().intValue());
+ }))
+ ));
+
// 瑙i攣鎻愬崌鏈�
motionList.addAll(kernelService.liftUnlock(
null
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java
index cac9b7d..8cad0eb 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/KernelService.java
@@ -182,6 +182,36 @@
return motionList;
}
+ /**
+ * 鎻愬崌鏈�-灏忚溅宸插埌浣�
+ */
+ public List<Motion> liftShuttleArrival(MotionDto origin, MotionDto target) {
+ List<Motion> motionList = new ArrayList<>();
+
+ motionList.add(Motion.build(motion -> {
+ motion.setDeviceCtg(DeviceCtgType.LIFT.val());
+ motion.setDevice(String.valueOf(target.getLiftNo()));
+ motion.setMotionCtg(MotionCtgType.LIFT_SHUTTLE_ARRIVAL.val());
+ }));
+
+ return motionList;
+ }
+
+ /**
+ * 鎻愬崌鏈�-灏忚溅宸查┒绂�
+ */
+ public List<Motion> liftShuttleLeave(MotionDto origin, MotionDto target) {
+ List<Motion> motionList = new ArrayList<>();
+
+ motionList.add(Motion.build(motion -> {
+ motion.setDeviceCtg(DeviceCtgType.LIFT.val());
+ motion.setDevice(String.valueOf(target.getLiftNo()));
+ motion.setMotionCtg(MotionCtgType.LIFT_SHUTTLE_LEAVE.val());
+ }));
+
+ return motionList;
+ }
+
// shuttle -----------------------------------------------------------------------------
/**
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java
index 5e3a669..371cf83 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/LiftCommandService.java
@@ -52,11 +52,6 @@
return false;
}
- //鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔�
- if (!liftThread.isIdle()) {
- return false;
- }
-
if (motionService.count(new LambdaQueryWrapper<Motion>()
.eq(Motion::getDeviceCtg, DeviceCtgType.LIFT.val())
.eq(Motion::getDevice, motion.getDevice())
@@ -83,6 +78,11 @@
List<LiftCommand> command = new ArrayList<>();
switch (Objects.requireNonNull(MotionCtgType.get(motion.getMotionCtgEl()))){
case LIFT_MOVE:
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔�
+ if (!liftThread.isIdle()) {
+ return false;
+ }
+
// 濡傛灉宸茬粡鍦ㄧ洰鏍囧眰锛岄偅杈瑰眰杩囨护
if (liftProtocol.getLev().equals(Integer.valueOf(motion.getTarget()))) {
liftThread.setSyncTaskNo(motion.getTaskNo());
@@ -93,6 +93,10 @@
list.addAll(command);
return liftAction.assignWork(liftThread.getDevice(), assignCommand);
case LIFT_WITH_GOODS:
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔�
+ if (!liftThread.isIdle()) {
+ return false;
+ }
// if (liftProtocol.getHasTray()) {
// return false;
// }
@@ -101,6 +105,11 @@
list.addAll(command);
return liftAction.assignWork(liftThread.getDevice(), assignCommand);
case LIFT_WITH_SHUTTLE:
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔�
+ if (!liftThread.isIdle()) {
+ return false;
+ }
+
if (!liftProtocol.getHasCar()) {
return false;
}
@@ -109,30 +118,46 @@
list.addAll(command);
return liftAction.assignWork(liftThread.getDevice(), assignCommand);
case LIFT_WITH_GOODS_AND_SHUTTLE:
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔�
+ if (!liftThread.isIdle()) {
+ return false;
+ }
+
return false;
-// if (!liftProtocol.getPlatShuttleCheck()) {
-// return false;
-// }
-//
-// command = liftThread.getLiftUpDownCommand(Integer.parseInt(motion.getTarget()));
-// command.setLiftNo(deviceNo.shortValue());
-// command.setTaskNo(motion.getWrkNo().shortValue());
-// return liftThread.assignWork(command);
case LIFT_TRANSPORT_TO_CONVEYOR:
return false;
case LIFT_LOCK:
//閿佸畾鎻愬崌鏈�
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔�
+ if (!liftThread.isIdle(MotionCtgType.LIFT_LOCK)) {
+ return false;
+ }
+
command = liftThread.getLockCommand(motion.getTaskNo(), true);//鑾峰彇鎻愬崌鏈洪攣瀹氬懡浠�
list.addAll(command);
return liftAction.assignWork(liftThread.getDevice(), assignCommand);
case LIFT_UNLOCK:
- //閿佸畾鎻愬崌鏈�
+ //瑙i攣鎻愬崌鏈�
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔�
+ if (!liftThread.isIdle(MotionCtgType.LIFT_UNLOCK)) {
+ return false;
+ }
+
command = liftThread.getLockCommand(motion.getTaskNo(), false);//鑾峰彇鎻愬崌鏈鸿В瀹氬懡浠�
+ list.addAll(command);
+ return liftAction.assignWork(liftThread.getDevice(), assignCommand);
+ case LIFT_SHUTTLE_ARRIVAL:
+ //鎻愬崌鏈�-灏忚溅宸插埌浣�
+ //鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔�
+ if (!liftThread.isIdle(MotionCtgType.LIFT_SHUTTLE_ARRIVAL)) {
+ return false;
+ }
+
+ command = liftThread.getShuttleSignalCommand(motion.getTaskNo(), true);//鑾峰彇灏忚溅宸插埌浣嶅懡浠�
list.addAll(command);
return liftAction.assignWork(liftThread.getDevice(), assignCommand);
default:
break;
-
}
return Boolean.TRUE;
@@ -223,6 +248,9 @@
return false;
}
break;
+ case LIFT_SHUTTLE_ARRIVAL:
+
+ break;
default:
return false;
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
index 230f15c..9d49fb4 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/kernel/command/ShuttleCommandService.java
@@ -192,7 +192,7 @@
if (!liftThread.isLock(new ExecuteSupport() {
@Override
public Boolean judgement() {
- return true;
+ return true;//鐗涚溂娌℃湁鎻愬崌鏈洪攣锛岀洿鎺ヨ繑鍥瀟rue
}
})) {
return false;
@@ -311,54 +311,24 @@
}
//鍒ゆ柇鎻愬崌鏈烘槸鍚﹁閿佸畾
- if (liftThread.isLock(new ExecuteSupport() {
+ if (!liftThread.isLock(new ExecuteSupport() {
@Override
public Boolean judgement() {
return false;
}
})) {
- //瑙i攣鎻愬崌鏈�
- List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//鑾峰彇鎻愬崌鏈鸿В閿佸懡浠�
-
- LiftAssignCommand liftAssignCommand = new LiftAssignCommand();
- liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo());
- liftAssignCommand.setTaskNo(motion.getTaskNo());
- ArrayList<LiftCommand> list = new ArrayList<>();
- list.addAll(lockCommand);
- liftAssignCommand.setCommands(list);
-
- liftAction.assignWork(liftThread.getDevice(), liftAssignCommand);
- return false;//绛夊緟涓嬩竴娆¤疆璇�
- }
-
- //鍒ゆ柇灏忚溅鏄惁宸插埌浣�
- if (liftProtocol.getHasCar()) {
- List<LiftCommand> signalCommand = liftThread.getShuttleSignalCommand(motion.getTaskNo(), true);//鑾峰彇灏忚溅宸插埌浣嶅懡浠�
- if(signalCommand != null) {
- boolean hasKey = redisUtil.hasKey(DeviceRedisConstant.COMMAND_TMP + motion.getTaskNo());
- if (!hasKey) {
- LiftAssignCommand liftAssignCommand = new LiftAssignCommand();
- liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo());
- liftAssignCommand.setTaskNo(motion.getTaskNo());
- ArrayList<LiftCommand> list = new ArrayList<>();
- list.addAll(signalCommand);
- liftAssignCommand.setCommands(list);
- liftAction.assignWork(liftThread.getDevice(), liftAssignCommand);
- redisUtil.set(DeviceRedisConstant.COMMAND_TMP + motion.getTaskNo(), true, 120);
- return false;
- }
- }
- }
-
- //鍒ゆ柇鎻愬崌鏈哄伐浣滃彿鏄惁鍜屽綋鍓嶄换鍔$浉鍚�
- if (liftProtocol.getTaskNo().intValue() != motion.getTaskNo()) {
return false;
}
- if (liftProtocol.getTaskNo() != 0) {
- //娓呯┖鎻愬崌鏈哄彿
- liftThread.setSyncTaskNo(0);
+ //鍒ゆ柇灏忚溅鏄惁宸插埌浣�
+ if (!liftProtocol.getHasCar()) {
+ return false;
}
+
+// //鍒ゆ柇鎻愬崌鏈哄伐浣滃彿鏄惁鍜屽綋鍓嶄换鍔$浉鍚�
+// if (liftProtocol.getTaskNo().intValue() != motion.getTaskNo()) {
+// return false;
+// }
break;
case SHUTTLE_MOVE_FROM_LIFT:
liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, Integer.parseInt(motion.getTemp()));
@@ -372,54 +342,24 @@
}
//鍒ゆ柇鎻愬崌鏈烘槸鍚﹁閿佸畾
- if (liftThread.isLock(new ExecuteSupport() {
+ if (!liftThread.isLock(new ExecuteSupport() {
@Override
public Boolean judgement() {
return false;
}
})) {
- //瑙i攣鎻愬崌鏈�
- List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//鑾峰彇鎻愬崌鏈鸿В閿佸懡浠�
-
- LiftAssignCommand liftAssignCommand = new LiftAssignCommand();
- liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo());
- liftAssignCommand.setTaskNo(motion.getTaskNo());
- ArrayList<LiftCommand> list = new ArrayList<>();
- list.addAll(lockCommand);
- liftAssignCommand.setCommands(list);
-
- liftAction.assignWork(liftThread.getDevice(), liftAssignCommand);
- return false;//绛夊緟涓嬩竴娆¤疆璇�
- }
-
- //鍒ゆ柇灏忚溅鏄惁宸茬寮�
- if (!liftProtocol.getHasCar()) {
- List<LiftCommand> signalCommand = liftThread.getShuttleSignalCommand(motion.getTaskNo(), false);//鑾峰彇灏忚溅宸查┚绂诲懡浠�
- if(signalCommand != null) {
- boolean hasKey = redisUtil.hasKey(DeviceRedisConstant.COMMAND_TMP + motion.getTaskNo());
- if (!hasKey) {
- redisUtil.set(DeviceRedisConstant.COMMAND_TMP + motion.getTaskNo(), JSON.toJSONString(signalCommand), 120);
- LiftAssignCommand liftAssignCommand = new LiftAssignCommand();
- liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo());
- liftAssignCommand.setTaskNo(motion.getTaskNo());
- ArrayList<LiftCommand> list = new ArrayList<>();
- list.addAll(signalCommand);
- liftAssignCommand.setCommands(list);
- liftAction.assignWork(liftThread.getDevice(), liftAssignCommand);
- return false;
- }
- }
- }
-
- //鍒ゆ柇鎻愬崌鏈哄伐浣滃彿鏄惁鍜屽綋鍓嶄换鍔$浉鍚�
- if (liftProtocol.getTaskNo().intValue() != motion.getTaskNo()) {
return false;
}
- if (liftProtocol.getTaskNo() != 0) {
- //娓呯┖鎻愬崌鏈哄彿
- liftThread.setSyncTaskNo(0);
+ //鍒ゆ柇灏忚溅鏄惁宸茬寮�
+ if (liftProtocol.getHasCar()) {
+ return false;
}
+
+// //鍒ゆ柇鎻愬崌鏈哄伐浣滃彿鏄惁鍜屽綋鍓嶄换鍔$浉鍚�
+// if (liftProtocol.getTaskNo().intValue() != motion.getTaskNo()) {
+// return false;
+// }
break;
case SHUTTLE_TRANSPORT_FROM_LIFT:
case SHUTTLE_TRANSPORT_TO_LIFT:
@@ -441,28 +381,12 @@
return false;
}
})) {
- //瑙i攣鎻愬崌鏈�
- List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//鑾峰彇鎻愬崌鏈鸿В閿佸懡浠�
-
- LiftAssignCommand liftAssignCommand = new LiftAssignCommand();
- liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo());
- liftAssignCommand.setTaskNo(motion.getTaskNo());
- ArrayList<LiftCommand> list = new ArrayList<>();
- list.addAll(lockCommand);
- liftAssignCommand.setCommands(list);
-
- liftAction.assignWork(liftThread.getDevice(), liftAssignCommand);
- return false;//绛夊緟涓嬩竴娆¤疆璇�
+ return false;
}
//鍒ゆ柇鎻愬崌鏈哄伐浣滃彿鏄惁鍜屽綋鍓嶄换鍔$浉鍚�
if (liftProtocol.getTaskNo().intValue() != motion.getTaskNo()) {
return false;
- }
-
- if (liftProtocol.getTaskNo() != 0) {
- //娓呯┖鎻愬崌鏈哄彿
- liftThread.setSyncTaskNo(0);
}
break;
case SHUTTLE_UPDATE_LOCATION://灏忚溅鍧愭爣鏇存柊
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/MotionCtgType.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/MotionCtgType.java
index d1b3efa..19d2949 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/MotionCtgType.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/model/enums/MotionCtgType.java
@@ -29,6 +29,8 @@
LIFT_MISSION_COMPLETE(LIFT),
LIFT_LOCK(LIFT),
LIFT_UNLOCK(LIFT),
+ LIFT_SHUTTLE_ARRIVAL(LIFT),
+ LIFT_SHUTTLE_LEAVE(LIFT),
// 绌挎杞� --------------------------------------------
SHUTTLE_MOVE(SHUTTLE),
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/dto/WorkModeTypeDto.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/dto/WorkModeTypeDto.java
new file mode 100644
index 0000000..639ba9d
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/dto/WorkModeTypeDto.java
@@ -0,0 +1,20 @@
+package com.zy.asrs.wcs.rcs.model.dto;
+
+import com.zy.asrs.wcs.rcs.model.enums.WorkModeType;
+import lombok.Data;
+
+@Data
+public class WorkModeTypeDto {
+
+ private Integer siteId;
+
+ private WorkModeType workModeType;
+
+ private String address;
+
+ public WorkModeTypeDto(Integer siteId, WorkModeType workModeType, String address) {
+ this.siteId = siteId;
+ this.workModeType = workModeType;
+ this.address = address;
+ }
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/enums/WorkModeType.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/enums/WorkModeType.java
new file mode 100644
index 0000000..1c20948
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/enums/WorkModeType.java
@@ -0,0 +1,30 @@
+package com.zy.asrs.wcs.rcs.model.enums;
+
+/**
+ * 鍏ュ嚭搴撴ā寮忔灇涓�
+ */
+public enum WorkModeType {
+
+ NONE((short) 0, "鏈煡"),
+ PAKIN_MODE((short) 1, "鍏ュ簱妯″紡"),
+ PAKOUT_MODE((short) 2, "鍑哄簱妯″紡"),
+ ;
+
+ public Short id;
+ public String desc;
+
+ WorkModeType(Short id, String desc) {
+ this.id = id;
+ this.desc = desc;
+ }
+
+ public static WorkModeType get(Short id) {
+ for (WorkModeType type : WorkModeType.values()) {
+ if (id.equals(type.id)) {
+ return type;
+ }
+ }
+ return WorkModeType.NONE;
+ }
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/protocol/StaProtocol.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/protocol/StaProtocol.java
index d3d46e2..c1a8775 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/protocol/StaProtocol.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/model/protocol/StaProtocol.java
@@ -71,6 +71,9 @@
// 鎵爜澶辫触
private boolean barcodeErr;
+ // 宸ヤ綔妯″紡
+ private Integer workMode;
+
@Override
public StaProtocol clone() {
try {
@@ -88,6 +91,7 @@
station.setLoading(loading?"Y":"N");
station.setInEnable(inEnable?"Y":"N");
station.setOutEnable(outEnable?"Y":"N");
+ station.setWorkMode(workMode);
station.setLocType1(0); // 楂樹綆绫诲瀷{0:鏈煡,1:浣庡簱浣�,2:楂樺簱浣峿
station.setLocType2(0); // 瀹界獎绫诲瀷{0:鏈煡,1:绐勫簱浣�,2:瀹藉簱浣峿
station.setLocType3(0); // 杞婚噸绫诲瀷{0:鏈煡,1:杞诲簱浣�,2:閲嶅簱浣峿
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/DevpThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/DevpThread.java
index defcbc6..b362346 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/DevpThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/DevpThread.java
@@ -16,4 +16,6 @@
void setPakMk(Integer siteId, boolean pakMk);
+ boolean switchWorkMode(int siteId, int workMode);
+
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SiemensDevpThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SiemensDevpThread.java
index 9668756..19a8a14 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SiemensDevpThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SiemensDevpThread.java
@@ -17,6 +17,8 @@
import com.zy.asrs.wcs.rcs.News;
import com.zy.asrs.wcs.rcs.cache.OutputQueue;
import com.zy.asrs.wcs.rcs.entity.Device;
+import com.zy.asrs.wcs.rcs.model.dto.WorkModeTypeDto;
+import com.zy.asrs.wcs.rcs.model.enums.WorkModeType;
import com.zy.asrs.wcs.rcs.model.protocol.StaProtocol;
import com.zy.asrs.wcs.rcs.thread.DevpThread;
import lombok.extern.slf4j.Slf4j;
@@ -44,9 +46,21 @@
*/
private int barcodeSize = 2;
+ /**
+ * 鍏ュ嚭搴撴ā寮�
+ * 0锛氭湭鐭�
+ * 1锛氬叆搴撳惎鍔ㄤ腑
+ * 2.鍏ュ簱妯″紡
+ * 3.鍑哄簱鍚姩涓� 锛堜笉鑳界敓鎴愬叆搴撳伐浣滄。锛�
+ * 4.鍑哄簱妯″紡
+ */
+ private Map<Integer, WorkModeTypeDto> workModeTypes = new ConcurrentHashMap<>();
+
public SiemensDevpThread(Device device, RedisUtil redisUtil) {
this.device = device;
this.redisUtil = redisUtil;
+
+ workModeTypes.put(101, new WorkModeTypeDto(101, WorkModeType.NONE, "DB1001.120"));
}
private ArrayList<BasConveyorSta> getStaNo() {
@@ -287,4 +301,29 @@
staProtocol.setPakMk(pakMk);
}
}
+
+ private void updateWorkMode() {
+ for (Map.Entry<Integer, WorkModeTypeDto> entry : workModeTypes.entrySet()) {
+ WorkModeTypeDto workModeTypeDto = entry.getValue();
+ WorkModeType workModeType = workModeTypeDto.getWorkModeType();
+ if (workModeType != WorkModeType.NONE) {
+ if (!siemensS7Net.Write(workModeTypeDto.getAddress(), workModeType.id).IsSuccess) {
+ OutputQueue.DEVP.offer(MessageFormat.format("鍐欏叆杈撻�佺嚎{1}鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎缂栧彿={0}", device.getId(), workModeTypeDto.getSiteId()));
+ log.error("鍐欏叆杈撻�佺嚎{1}鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎缂栧彿={0}", device.getId(), workModeTypeDto.getSiteId());
+ }
+ }
+ }
+ }
+
+ @Override
+ public boolean switchWorkMode(int siteId, int workMode) {
+ WorkModeTypeDto workModeTypeDto = workModeTypes.get(siteId);
+ if(workModeTypeDto == null) {
+ return false;
+ }
+
+ workModeTypeDto.setWorkModeType(WorkModeType.get((short) workMode));
+ workModeTypes.put(siteId, workModeTypeDto);
+ return false;
+ }
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SuopaiSiemensDevpThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SuopaiSiemensDevpThread.java
index 4710723..811346c 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SuopaiSiemensDevpThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SuopaiSiemensDevpThread.java
@@ -17,6 +17,8 @@
import com.zy.asrs.wcs.rcs.News;
import com.zy.asrs.wcs.rcs.cache.OutputQueue;
import com.zy.asrs.wcs.rcs.entity.Device;
+import com.zy.asrs.wcs.rcs.model.dto.WorkModeTypeDto;
+import com.zy.asrs.wcs.rcs.model.enums.WorkModeType;
import com.zy.asrs.wcs.rcs.model.protocol.StaProtocol;
import com.zy.asrs.wcs.rcs.thread.DevpThread;
import lombok.extern.slf4j.Slf4j;
@@ -44,9 +46,21 @@
*/
private int barcodeSize = 2;
+ /**
+ * 鍏ュ嚭搴撴ā寮�
+ * 0锛氭湭鐭�
+ * 1锛氬叆搴撳惎鍔ㄤ腑
+ * 2.鍏ュ簱妯″紡
+ * 3.鍑哄簱鍚姩涓� 锛堜笉鑳界敓鎴愬叆搴撳伐浣滄。锛�
+ * 4.鍑哄簱妯″紡
+ */
+ private Map<Integer, WorkModeTypeDto> workModeTypes = new ConcurrentHashMap<>();
+
public SuopaiSiemensDevpThread(Device device, RedisUtil redisUtil) {
this.device = device;
this.redisUtil = redisUtil;
+
+ workModeTypes.put(101, new WorkModeTypeDto(101, WorkModeType.NONE, "DB1001.120"));
}
private ArrayList<BasConveyorSta> getStaNo() {
@@ -86,6 +100,7 @@
}
private void read() throws InterruptedException {
+ updateWorkMode();
ArrayList<BasConveyorSta> staNos = getStaNo();
int staNoSize = staNos.size();
OperateResultExOne<byte[]> result = siemensS7Net.Read("DB1000.100", (short) (staNoSize * 40));
@@ -105,6 +120,7 @@
staProtocol.setLoading(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 40 + 32) == 1); // 鏈夌墿
staProtocol.setInEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 40 + 14) == 1); // 鍙叆
staProtocol.setOutEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, i * 40 + 14) == 2);// 鍙嚭
+ staProtocol.setWorkMode((int) siemensS7Net.getByteTransform().TransInt16(result.Content, i * 40 + 8));// 宸ヤ綔妯″紡
// staProtocol.setEmptyMk(status[4]); // 绌烘澘淇″彿
// staProtocol.setFullPlt(status[5]); // 婊℃墭鐩�
// staProtocol.setHigh(status[6]); // 楂樺簱浣�
@@ -265,4 +281,29 @@
staProtocol.setPakMk(pakMk);
}
}
+
+ private void updateWorkMode() {
+ for (Map.Entry<Integer, WorkModeTypeDto> entry : workModeTypes.entrySet()) {
+ WorkModeTypeDto workModeTypeDto = entry.getValue();
+ WorkModeType workModeType = workModeTypeDto.getWorkModeType();
+ if (workModeType != WorkModeType.NONE) {
+ if (!siemensS7Net.Write(workModeTypeDto.getAddress(), workModeType.id).IsSuccess) {
+ OutputQueue.DEVP.offer(MessageFormat.format("鍐欏叆杈撻�佺嚎{1}鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎缂栧彿={0}", device.getId(), workModeTypeDto.getSiteId()));
+ log.error("鍐欏叆杈撻�佺嚎{1}鍏ュ嚭搴撴ā寮忓け璐ャ�傝緭閫佺嚎缂栧彿={0}", device.getId(), workModeTypeDto.getSiteId());
+ }
+ }
+ }
+ }
+
+ @Override
+ public boolean switchWorkMode(int siteId, int workMode) {
+ WorkModeTypeDto workModeTypeDto = workModeTypes.get(siteId);
+ if(workModeTypeDto == null) {
+ return false;
+ }
+
+ workModeTypeDto.setWorkModeType(WorkModeType.get((short) workMode));
+ workModeTypes.put(siteId, workModeTypeDto);
+ return true;
+ }
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java
index 9a7d6ab..ae8097c 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SurayLiftThread.java
@@ -104,6 +104,8 @@
liftProtocol.setErrorCode("0");
//灞�
liftProtocol.setLev(data.getInteger("curFloor"));
+ //宸插畬鎴愮殑浠诲姟鍙�
+ liftProtocol.setCompleteTaskNo(data.getString("completeTaskNo"));
//************琛ュ厖鎵╁睍瀛楁*************
@@ -381,7 +383,11 @@
switch (Objects.requireNonNull(MotionCtgType.get(String.valueOf(flag)))){
case SHUTTLE_MOVE_FROM_LIFT://绌挎杞﹀嚭鎻愬崌鏈�
case SHUTTLE_MOVE_TO_LIFT://绌挎杞﹁繘鎻愬崌鏈�
+ case LIFT_SHUTTLE_ARRIVAL://鎻愬崌鏈鸿В閿�
return isIdleShuttleMoveToLift();
+ case LIFT_LOCK://鎻愬崌鏈洪攣瀹�
+ case LIFT_UNLOCK://鎻愬崌鏈鸿В閿�
+ return isIdleLiftLock();
}
return false;
@@ -409,6 +415,21 @@
return false;
}
+ //鎻愬崌鏈洪攣瀹�-鎻愬崌鏈虹姸鎬佸垽鏂�
+ private boolean isIdleLiftLock() {
+ // 鍒ゆ柇鎻愬崌鏈烘槸鍚﹁嚜鍔ㄣ�佸氨缁�佺┖闂�
+ if (this.liftProtocol.getModel()
+ && !this.liftProtocol.getRun()
+ && this.liftProtocol.getPakMk()
+ && this.liftProtocol.getErrorCode().equals("0")
+ && (this.liftProtocol.getProtocolStatusType().equals(LiftProtocolStatusType.IDLE)
+ || this.liftProtocol.getProtocolStatusType().equals(LiftProtocolStatusType.WAITING))
+ ) {
+ return true;
+ }
+ return false;
+ }
+
@Override
public boolean isDeviceIdle() {
return isDeviceIdle(null);
--
Gitblit v1.9.1