From 8d9fe360b9d6ae4c66d4596166e73e96aaf6d9d3 Mon Sep 17 00:00:00 2001 From: liuxy Date: Wed, 4 Feb 2026 11:42:19 +0800 Subject: [PATCH] =?UTF-8?q?rev=EF=BC=9A=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/device_driver/DriverTypeEnum.java | 2 + .../org/nl/acs/device/enums/DeviceType.java | 3 +- .../weight_platform/ItemProtocol.java | 48 +++ .../WeightPlatformDefination.java | 68 ++++ .../WeightPlatformDeviceDriver.java | 183 +++++++++ .../src/views/acs/device/config.vue | 2 + .../acs/device/driver/weight_platform.vue | 364 ++++++++++++++++++ 7 files changed, 669 insertions(+), 1 deletion(-) create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/weight_platform/ItemProtocol.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/weight_platform/WeightPlatformDefination.java create mode 100644 acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/weight_platform/WeightPlatformDeviceDriver.java create mode 100644 acs/nladmin-ui/src/views/acs/device/driver/weight_platform.vue diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java index 61916ee..b027af4 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java @@ -34,6 +34,8 @@ public enum DriverTypeEnum { ROBOT(23, "robot_arm", "机械手", "robot"), + WEIGHT(24, "weight_platform", "称平台", "weight"), + STANDARD_STACKER(11, "standard_stacker", "标准版-单工位堆垛机", "stacker"), SIEMENS_CONVEYOR_LABELING(12, "siemens_conveyor_labeling", "西门子-输送机驱动-贴标", "conveyor"), diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/enums/DeviceType.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/enums/DeviceType.java index 13e3409..3345d65 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/enums/DeviceType.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/enums/DeviceType.java @@ -20,7 +20,8 @@ public enum DeviceType { shadow("影子设备", 15), other("其他设备", 16), stretch("缠绕机", 17), - pallet("拆盘机", 18); + pallet("拆盘机", 18), + weight("称平台", 19); private String code; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/weight_platform/ItemProtocol.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/weight_platform/ItemProtocol.java new file mode 100644 index 0000000..9845e14 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/weight_platform/ItemProtocol.java @@ -0,0 +1,48 @@ +package org.nl.acs.device_driver.basedriver.weight_platform; + +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; + +import java.util.ArrayList; +import java.util.List; + +@Slf4j +public class ItemProtocol { + // 重量 + public static String weight = "weight"; + + private WeightPlatformDeviceDriver driver; + + public ItemProtocol(WeightPlatformDeviceDriver driver) { + this.driver = driver; + } + + public String getWeight() { + return this.getStringgerValue(weight); + } + + + public String getStringgerValue(String protocol) { + String value = this.driver.getStringgerValue(protocol); + if (value == null) { +// log.error("读取错误!"); + } else { + return value; + } + return "0"; + + } + + public static List getReadableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(weight, "重量", "100001")); + return list; + } + + public static List getWriteableItemDtos() { + ArrayList list = new ArrayList(); + return list; + } + +} + diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/weight_platform/WeightPlatformDefination.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/weight_platform/WeightPlatformDefination.java new file mode 100644 index 0000000..35e3252 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/weight_platform/WeightPlatformDefination.java @@ -0,0 +1,68 @@ +package org.nl.acs.device_driver.basedriver.weight_platform; + +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.ArrayList; +import java.util.LinkedList; +import java.util.List; + +/** + * 称平台驱动定义 + */ +@Service +public class WeightPlatformDefination implements OpcDeviceDriverDefination { + @Override + public String getDriverCode() { + return "weight_platform"; + } + + @Override + public String getDriverName() { + return "称平台"; + } + + @Override + public String getDriverDescription() { + return "称平台"; + } + + @Override + public DeviceDriver getDriverInstance(Device device) { + return (new WeightPlatformDeviceDriver()).setDevice(device).setDriverDefination(this); + + } + + @Override + public Class getDeviceDriverType() { + return WeightPlatformDeviceDriver.class; + } + + @Override + public List getFitDeviceTypes() { + List types = new LinkedList(); + types.add(DeviceType.weight); + return types; + } + + @Override + public List getReadableItemDtos() { + return getReadableItemDtos2(); + } + + public static List getReadableItemDtos2() { + List list = new ArrayList(); + list.add(new ItemDto(ItemProtocol.weight, "重量", "100001")); + return list; + } + + @Override + public List getWriteableItemDtos() { + return ItemProtocol.getWriteableItemDtos(); + } + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/weight_platform/WeightPlatformDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/weight_platform/WeightPlatformDeviceDriver.java new file mode 100644 index 0000000..dde9d4f --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/weight_platform/WeightPlatformDeviceDriver.java @@ -0,0 +1,183 @@ +package org.nl.acs.device_driver.basedriver.weight_platform; + +import cn.hutool.core.util.ObjectUtil; +import lombok.Data; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.agv.hk.service.AcsToHkService; +import org.nl.acs.device.domain.Device; +import org.nl.acs.device.service.DeviceService; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; +import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +import org.nl.acs.ext.wms.service.AcsToWmsService; +import org.nl.acs.instruction.service.InstructionService; +import org.nl.acs.log.service.DeviceExecuteLogService; +import org.nl.acs.route.service.RouteLineService; +import org.nl.acs.task.service.TaskService; +import org.nl.acs.utils.ReadUtil; +import org.nl.config.SpringContextHolder; +import org.nl.system.service.lucene.LuceneExecuteLogService; +import org.nl.system.service.lucene.dto.LuceneLogDto; +import org.openscada.opc.lib.da.Server; + +import java.util.Date; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * 称平台驱动 + */ +@Slf4j +@Data +@RequiredArgsConstructor +public class WeightPlatformDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver { + + protected ItemProtocol itemProtocol = new ItemProtocol(this); + + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); + + LuceneExecuteLogService lucene = SpringContextHolder.getBean("luceneExecuteLogServiceImpl"); + + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); + + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); + + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); + + AcsToWmsService acsToWmsService = SpringContextHolder.getBean("acsToWmsServiceImpl"); + private final AcsToHkService acsToHkService = SpringContextHolder.getBean(AcsToHkService.class); + + String container; + String container_type_desc; + String last_container_type_desc; + String last_container; + /** + * AGV请求取放货标记和指令号 + */ + private volatile String reqAgvTakeInstCode = null; + private volatile Boolean reqAgvTakeRequireSuccess = false; + //放货准备锁 + String putReadyLock = null; + //有货标记 + protected boolean has_goods_tag = false; + String devicecode; + // 重量 + String weight = "0"; + Boolean iserror = false; + + int move = 0; + int last_error = 0; + + String last_weight = "0"; + + boolean hasVehicle = false; + boolean isReady = false; + protected int instruction_num = 0; + protected int instruction_num_truth = 0; + protected boolean hasGoods = false; + boolean isFold = false; + private String assemble_check_tag; + private Boolean sampleMode0; + private Boolean sampleMode3; + private Integer sampleError; + private Boolean sampleOnline; + protected String displayMessage = null; + public int display_message_time_out = 30000; + public Date display_message_time; + protected String current_stage_instruction_message; + protected String last_stage_instruction_message; + Integer heartbeat_tag; + private Date instruction_require_time = new Date(); + private Date instruction_finished_time = new Date(); + + private int instruction_require_time_out = 5000; + boolean requireSucess = false; + + private int instruction_finished_time_out; + + int branchProtocol = 0; + + String message = ""; + + @Override + public Device getDevice() { + return this.device; + } + + + @Override + public void execute() { + devicecode = this.getDevice().getDevice_code(); + weight = this.itemProtocol.getWeight(); + last_weight = weight; + } + + /** + * 执行业务逻辑 + */ + public void executeTask() { + } + + public synchronized String getStatus() { + return null; + } + + /** + * 多个信号一起下发电气 + * + * @param map + */ + public void writing(Map map) { + LuceneExecuteLogService lucene = SpringContextHolder.getBean(LuceneExecuteLogService.class); + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + Map itemMap = new LinkedHashMap<>(); + map.forEach((key, value) -> { + if (ObjectUtil.isNotEmpty(value)) { + itemMap.put(getToParam() + key, value); + } + }); + if (ObjectUtil.isNotEmpty(itemMap)) { + try { + this.checkcontrol(itemMap); + } catch (Exception e) { + e.printStackTrace(); + try { + this.checkcontrol(itemMap); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发多个电气信号:" + itemMap); + lucene.deviceExecuteLog(new LuceneLogDto(this.getDeviceCode(), "下发多个电气信号:" + itemMap)); + } + } + + /** + * 抽取统一下发电气信号前缀 + * + * @return + */ + public String getToParam() { + return this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + "."; + } + + public void writing(String param, String value) { + + String to_param = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + + "." + param; + String opcservcerid = this.getDevice().getOpc_server_id(); + Server server = ReadUtil.getServer(opcservcerid); + Map itemMap = new HashMap(); + if (value instanceof String) { + itemMap.put(to_param, value); + } else { + itemMap.put(to_param, value); + } + ReadUtil.write(itemMap, server); + server.disconnect(); + log.info("下发PLC信号:{},{}", this.devicecode, "to_command:" + value); + lucene.deviceExecuteLog(new LuceneLogDto(this.devicecode, message + param + " 写入 " + value)); + } +} diff --git a/acs/nladmin-ui/src/views/acs/device/config.vue b/acs/nladmin-ui/src/views/acs/device/config.vue index 4d9e97a..e8f247c 100644 --- a/acs/nladmin-ui/src/views/acs/device/config.vue +++ b/acs/nladmin-ui/src/views/acs/device/config.vue @@ -140,9 +140,11 @@ import carton_labeling_machine from '@/views/acs/device/driver/carton_labeling_m import stretch_wrapper from '@/views/acs/device/driver/stretch_wrapper' import pallet_dispenser from '@/views/acs/device/driver/pallet_dispenser' import robot_arm from '@/views/acs/device/driver/robot_arm' +import weight_platform from '@/views/acs/device/driver/weight_platform' export default { name: 'DeviceConfig', components: { + weight_platform, robot_arm, stretch_wrapper, pallet_dispenser, diff --git a/acs/nladmin-ui/src/views/acs/device/driver/weight_platform.vue b/acs/nladmin-ui/src/views/acs/device/driver/weight_platform.vue new file mode 100644 index 0000000..2fcf349 --- /dev/null +++ b/acs/nladmin-ui/src/views/acs/device/driver/weight_platform.vue @@ -0,0 +1,364 @@ + + + + +