diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java index cc2cfdd..f7b2292 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java @@ -8,6 +8,7 @@ import org.nl.acs.agv.server.NDCAgvService; import org.nl.acs.device.domain.Device; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device_driver.basedriver.agv.ndcone.AgvNdcOneDeviceDriver; +import org.nl.acs.device_driver.basedriver.guard_lamp.GuardLampDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_autodoor.StandardAutodoorDeviceDriver; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; @@ -248,41 +249,45 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { } } } else if (phase == 0x50) { - if (ObjectUtil.isEmpty(device_code)) { - log.info(agvaddr + "对应设备号为空!"); + log.info("进入告警区域"); + if (agvaddr == 0) { + log.info("BJD" + agvaddr + "对应设备号为空!"); return; } - if (ObjectUtil.isNotEmpty(device)) { - if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) { - standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver(); - String is_enter = standardAutodoorDeviceDriver.getExtraValue().get("is_enter").toString(); - if (StrUtil.isNotBlank(is_enter) && "false".equals(is_enter)) { + Device bjdDevice = deviceAppService.findDeviceByCode("BJD" + agvaddr); + if (ObjectUtil.isNotEmpty(bjdDevice)) { + if (bjdDevice.getDeviceDriver() instanceof GuardLampDeviceDriver) { + try { + GuardLampDeviceDriver guardLampDeviceDriver = (GuardLampDeviceDriver) bjdDevice.getDeviceDriver(); + guardLampDeviceDriver.writing("to_open", "1"); data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0); - } else { - log.info("区域已锁定,请释放后在进入"); + } catch (Exception e) { + log.info("下发告警灯告警信号失败"); } } } else { - log.info(agvaddr + "对应设备号为空!"); + log.info("BJD" + agvaddr + "对应设备号为空!"); } } else if (phase == 0x51) { - if (ObjectUtil.isEmpty(device_code)) { - log.info(agvaddr + "对应设备号为空!"); + log.info("离开告警区域"); + if (agvaddr == 0) { + log.info("BJD" + agvaddr + "对应设备号为空!"); return; } - if (ObjectUtil.isNotEmpty(device)) { - if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) { - standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver(); - String is_enter = standardAutodoorDeviceDriver.getExtraValue().get("is_enter").toString(); - if (StrUtil.isNotBlank(is_enter) && "false".equals(is_enter)) { + Device bjdDevice = deviceAppService.findDeviceByCode("BJD" + agvaddr); + if (ObjectUtil.isNotEmpty(bjdDevice)) { + if (bjdDevice.getDeviceDriver() instanceof GuardLampDeviceDriver) { + try { + GuardLampDeviceDriver guardLampDeviceDriver = (GuardLampDeviceDriver) bjdDevice.getDeviceDriver(); + guardLampDeviceDriver.writing("to_open", "0"); data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0); - } else { - log.info("区域已锁定,请释放后在进入"); + } catch (Exception e) { + log.info("下发告警灯取消告警信号失败"); } } } else { - log.info(device_code + "对应设备号为空!"); + log.info("BJD" + agvaddr + "对应设备号为空!"); } } else { //上报异常信息 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 2c287b4..75ea120 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 @@ -38,7 +38,10 @@ public enum DriverTypeEnum { GUHUASHI_SITE(12, "guhuashi_site", "固化室", "conveyor"), TIANNENG_SITE(13, "tianneng_site", "天能-检测站点", "conveyor"), - BAOSHIJIAN_SITE(14,"baoshijian_site","保湿间","conveyor"); + + BAOSHIJIAN_SITE(14,"baoshijian_site","保湿间","conveyor"), + + GUARD_LAMP(15, "guard_lamp", "告警灯", "guard_lamp"); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java index cc650c4..6252b91 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java @@ -16,6 +16,7 @@ import org.nl.acs.auto.run.OneNDCSocketConnectionAutoRun; 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.basedriver.guard_lamp.GuardLampDeviceDriver; import org.nl.acs.device_driver.basedriver.plc_to_agv.PlcToAgvDeviceDriver; import org.nl.acs.device_driver.basedriver.siemens_conveyor.SiemensConveyorDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_inspect_site.StandardInspectSiteDeviceDriver; @@ -528,9 +529,29 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0); logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + phase + "反馈:" + data); } else if (phase == 0x50) {//进入交通灯区域 + log.info("进入告警区域"); + try { + Device guardLamp = deviceAppService.findDeviceByCode("BJD" + agvaddr); + if (guardLamp != null) { + GuardLampDeviceDriver guardLampDeviceDriver = (GuardLampDeviceDriver) device.getDeviceDriver(); + guardLampDeviceDriver.writing("to_open", "1"); + } + } catch (Exception e) { + log.info("下发告警灯告警信号失败"); + } data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0); logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + phase + "反馈:" + data); } else if (phase == 0x51) {//离开交通灯区域 + log.info("离开告警区域"); + try { + Device guardLamp = deviceAppService.findDeviceByCode("BJD" + agvaddr); + if (guardLamp != null) { + GuardLampDeviceDriver guardLampDeviceDriver = (GuardLampDeviceDriver) device.getDeviceDriver(); + guardLampDeviceDriver.writing("to_open", "0"); + } + } catch (Exception e) { + log.info("下发告警灯取消告警信号失败"); + } data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0); logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + phase + "反馈:" + data); } else if (phase == 0x70) { diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/guard_lamp/GuardLampDefination.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/guard_lamp/GuardLampDefination.java new file mode 100644 index 0000000..2c64321 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/guard_lamp/GuardLampDefination.java @@ -0,0 +1,63 @@ +package org.nl.acs.device_driver.basedriver.guard_lamp; + +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 GuardLampDefination implements OpcDeviceDriverDefination { + @Override + public String getDriverCode() { + return "guard_lamp"; + } + + @Override + public String getDriverName() { + return "标准版-告警灯"; + } + + @Override + public String getDriverDescription() { + return "标准版-告警灯"; + } + + @Override + public DeviceDriver getDriverInstance(Device device) { + return (new GuardLampDeviceDriver()).setDevice(device).setDriverDefination(this); + + } + + @Override + public Class getDeviceDriverType() { + return GuardLampDeviceDriver.class; + } + + @Override + public List getFitDeviceTypes() { + List types = new LinkedList(); + types.add(DeviceType.conveyor); + return types; + } + + + @Override + public List getReadableItemDtos() { + return ItemProtocol.getReadableItemDtos(); + } + + @Override + public List getWriteableItemDtos() { + return ItemProtocol.getWriteableItemDtos(); + } + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/guard_lamp/GuardLampDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/guard_lamp/GuardLampDeviceDriver.java new file mode 100644 index 0000000..bfa5464 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/guard_lamp/GuardLampDeviceDriver.java @@ -0,0 +1,97 @@ +package org.nl.acs.device_driver.basedriver.guard_lamp; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.domain.Device; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.basedriver.guard_lamp.ItemProtocol; +import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; +import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +import org.nl.acs.log.service.DeviceExecuteLogService; +import org.nl.acs.monitor.DeviceStageMonitor; +import org.nl.config.SpringContextHolder; + + +import java.util.HashMap; +import java.util.Map; + + +/** + * 告警灯驱动 + */ +@Slf4j +@Data +@RequiredArgsConstructor +public class GuardLampDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, DeviceStageMonitor { + protected org.nl.acs.device_driver.basedriver.guard_lamp.ItemProtocol itemProtocol = new ItemProtocol(this); + DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + + int open = 0; + int last_open = 0; + + int toOpen = 0; + int last_toOpen = 0; + + String device_code = null; + + @Override + public Device getDevice() { + return this.device; + } + + + @Override + public void execute() { + String message = null; + + device_code = this.getDevice().getDevice_code(); + open = this.itemProtocol.getOpen(); + toOpen = this.itemProtocol.getToOpen(); + if (open != last_open) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号open:" + last_open + "->" + open); + } + + if (toOpen != last_toOpen) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号toOpen:" + last_toOpen + "->" + toOpen); + } + last_open = open; + last_toOpen = toOpen; + } + + + 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; + Map itemMap = new HashMap(); + itemMap.put(to_param, Integer.parseInt(value)); + + this.control(itemMap); + logServer.deviceExecuteLog(device_code, "", "", "下发电气信号设备号:" + device_code + ",下发电气:" + to_param + ",下发电气值:" + value); + } + + + @Override + public JSONObject getDeviceStatusName() { + JSONObject jo = new JSONObject(); + String open = ""; + if (this.getOpen() == 0) { + open = "未警戒"; + } else if (this.getOpen() == 1) { + open = "警戒"; + } + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("open", open); + jo.put("isOnline", true); + + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } + + +} diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/guard_lamp/ItemProtocol.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/guard_lamp/ItemProtocol.java new file mode 100644 index 0000000..b01def8 --- /dev/null +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/guard_lamp/ItemProtocol.java @@ -0,0 +1,72 @@ +package org.nl.acs.device_driver.basedriver.guard_lamp; + +import cn.hutool.core.util.StrUtil; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; +import org.nl.acs.device_driver.basedriver.standard_autodoor.StandardAutodoorDeviceDriver; + +import java.util.ArrayList; +import java.util.List; + +@Slf4j +public class ItemProtocol { + public static String item_open = "open"; + public static String item_to_open = "to_open"; + + + private GuardLampDeviceDriver driver; + + public ItemProtocol(GuardLampDeviceDriver driver) { + this.driver = driver; + } + + public int getOpen() { + return this.getOpcIntegerValue(item_open); + } + + + public int getToOpen() { + return this.getOpcIntegerValue(item_to_open); + } + + + public int getOpcIntegerValue(String protocol) { + Integer value = this.driver.getIntegeregerValue(protocol); + if (value == null) { + // log.error(this.getDriver().getDeviceCode() + ":protocol " + protocol + " 信号同步异常!"); + } else { + return value; + } + return 0; + + } + + public String getOpcStringValue(String protocol) { + String value = this.driver.getStringValue(protocol); + if (StrUtil.isEmpty(value)) { + + } else { + return value; + } + return "0"; + } + + public static List getReadableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_open, "是否告警", "10001")); + return list; + } + + public static List getWriteableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_to_open, "下发告警", "00001")); + return list; + } + + + @Override + public String toString() { + return ""; + } +} + diff --git a/acs/nladmin-ui/src/views/acs/device/config.vue b/acs/nladmin-ui/src/views/acs/device/config.vue index 10cc1fa..e4b0c63 100644 --- a/acs/nladmin-ui/src/views/acs/device/config.vue +++ b/acs/nladmin-ui/src/views/acs/device/config.vue @@ -77,6 +77,7 @@ import standard_autodoor from '@/views/acs/device/driver/standard_autodoor' import standard_inspect_site from './driver/standard_inspect_site' import plc_to_agv from './driver/plc_to_agv' import sorting from './driver/sorting' +import guard_lamp from './driver/guard_lamp' import standard_ordinary_site from './driver/standard_ordinary_site' import standard_storage from '@/views/acs/device/driver/standard_storage' import standard_scanner from '@/views/acs/device/driver/standard_scanner' @@ -117,7 +118,8 @@ export default { agv_ndc_two, agv_ndc_one, xg_agv, - sorting + sorting, + guard_lamp }, dicts: ['device_type'], mixins: [crud], diff --git a/acs/nladmin-ui/src/views/acs/device/driver/guard_lamp.vue b/acs/nladmin-ui/src/views/acs/device/driver/guard_lamp.vue new file mode 100644 index 0000000..ea5d9ee --- /dev/null +++ b/acs/nladmin-ui/src/views/acs/device/driver/guard_lamp.vue @@ -0,0 +1,352 @@ + + + + +