rev:修改

This commit is contained in:
2026-02-04 11:42:19 +08:00
parent dd05b1abea
commit 8d9fe360b9
7 changed files with 669 additions and 1 deletions

View File

@@ -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"),

View File

@@ -20,7 +20,8 @@ public enum DeviceType {
shadow("影子设备", 15),
other("其他设备", 16),
stretch("缠绕机", 17),
pallet("拆盘机", 18);
pallet("拆盘机", 18),
weight("称平台", 19);
private String code;

View File

@@ -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<ItemDto> getReadableItemDtos() {
ArrayList list = new ArrayList();
list.add(new ItemDto(weight, "重量", "100001"));
return list;
}
public static List<ItemDto> getWriteableItemDtos() {
ArrayList list = new ArrayList();
return list;
}
}

View File

@@ -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<? extends DeviceDriver> getDeviceDriverType() {
return WeightPlatformDeviceDriver.class;
}
@Override
public List<DeviceType> getFitDeviceTypes() {
List<DeviceType> types = new LinkedList();
types.add(DeviceType.weight);
return types;
}
@Override
public List<ItemDto> getReadableItemDtos() {
return getReadableItemDtos2();
}
public static List<ItemDto> getReadableItemDtos2() {
List<ItemDto> list = new ArrayList();
list.add(new ItemDto(ItemProtocol.weight, "重量", "100001"));
return list;
}
@Override
public List<ItemDto> getWriteableItemDtos() {
return ItemProtocol.getWriteableItemDtos();
}
}

View File

@@ -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<String, Object> map) {
LuceneExecuteLogService lucene = SpringContextHolder.getBean(LuceneExecuteLogService.class);
DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl");
Map<String, Object> 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<String, Object> itemMap = new HashMap<String, Object>();
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));
}
}