add 包装码垛机械手工位
This commit is contained in:
@@ -57,7 +57,10 @@ public enum DriverTypeEnum {
|
||||
|
||||
LNSH_PALLETIZING_MANIPULATOR_SITE(54, "lnsh_palletizing_manipulator_site", "嘉耐-码垛机械手工位", "station"),
|
||||
|
||||
LNSH_ONE_RGV(55, "lnsh_one_rgv", "嘉耐单工位RGV", "rgv");
|
||||
LNSH_ONE_RGV(55, "lnsh_one_rgv", "嘉耐单工位RGV", "rgv"),
|
||||
|
||||
LNSH_PACKAGE_PALLETIZING_MANIPULATOR_SITE(56, "lnsh_package_palletizing_manipulator_site", "嘉耐-包装码垛机械手工位", "station");
|
||||
|
||||
|
||||
//驱动索引
|
||||
private int index;
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package org.nl.acs.device_driver.driver;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.jinterop.dcom.common.JIException;
|
||||
import org.nl.acs.ext.wms.data.JsonUtl;
|
||||
import org.nl.acs.opc.*;
|
||||
import org.nl.exception.WDKException;
|
||||
import org.nl.modules.udw.UnifiedDataAccessor;
|
||||
import org.nl.modules.udw.UnifiedDataAccessorFactory;
|
||||
import org.nl.modules.udw.UnifiedDataAppService;
|
||||
import org.nl.utils.SpringContextHolder;
|
||||
import org.openscada.opc.lib.da.AddFailedException;
|
||||
import org.openscada.opc.lib.da.Group;
|
||||
@@ -15,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@Slf4j
|
||||
public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements OpcDeviceDriver {
|
||||
UnifiedDataAccessor opcUdw;
|
||||
|
||||
@@ -38,7 +41,7 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc
|
||||
|
||||
|
||||
|
||||
public void checkcontrol(Map<String, Object> itemValues) throws JIException, AddFailedException {
|
||||
public void checkcontrol(Map<String, Object> itemValues) throws Exception {
|
||||
Group group = opcServerService.getServer(this.getOpcServer());
|
||||
Map<String, Object> write = new HashMap();
|
||||
Map<String, Item> readitems = new LinkedHashMap();
|
||||
@@ -134,11 +137,13 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc
|
||||
sb.append(":");
|
||||
sb.append(JsonUtl.parseWithoutException(udw_value));
|
||||
sb.append(";");
|
||||
// if (!need_write && !UnifiedDataAppService.isEquals(udw_value, write_value)) {
|
||||
// need_write = true;
|
||||
// }
|
||||
if (!need_write && !UnifiedDataAppService.isEquals(udw_value, write_value)) {
|
||||
need_write = true;
|
||||
} else {
|
||||
log.warn("下发信号点位{} 当前写入值:{} 与系统内存值:{} 相同,不再写入 ", code, write_value, udw_value );
|
||||
}
|
||||
}
|
||||
need_write = true;
|
||||
// need_write = true;
|
||||
|
||||
if (need_write) {
|
||||
Date date = new Date();
|
||||
@@ -149,9 +154,9 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc
|
||||
|
||||
this.last_items = this_items;
|
||||
this.sendTime = date;
|
||||
/* this.execute_log.setResource(this.getDevice().getCode(), this.getDevice().getName());
|
||||
this.execute_log.log("原始记录{}->变更为{}", new Object[]{sb, this_items});
|
||||
OpcServerService opcServerService = OpcServerFactory.getOpcServerService();*/
|
||||
/* this.execute_log.setResource(this.getDevice().getCode(), this.getDevice().getName());
|
||||
this.execute_log.log("原始记录{}->变更为{}", new Object[]{sb, this_items});
|
||||
OpcServerService opcServerService = OpcServerFactory.getOpcServerService();*/
|
||||
|
||||
OpcServerService opcServerService = SpringContextHolder.getBean(OpcServerServiceImpl.class);
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ public interface OpcDeviceDriver extends DeviceDriver {
|
||||
|
||||
//设备扩展表【acs_device_extra】
|
||||
WQLObject extraTab = WQLObject.getWQLObject("acs_device_extra");
|
||||
JSONArray arr = extraTab.query("filed_type='02' and device_id = '" + this.getDevice().getDevice_id() + "'").getResultJSONArray(0);
|
||||
JSONArray arr = extraTab.query(" (filed_type='02' or filed_type='03' )and device_id = '" + this.getDevice().getDevice_id() + "'").getResultJSONArray(0);
|
||||
for (int i = 0; i < arr.size(); i++) {
|
||||
JSONObject json = arr.getJSONObject(i);
|
||||
OpcItemDto dto = new OpcItemDto();
|
||||
|
||||
@@ -74,7 +74,7 @@ public class LnshLaminatingMachineDeviceDriver extends AbstractOpcDeviceDriver i
|
||||
int last_container_type = 0;
|
||||
int barcode = 0;
|
||||
int last_barcode = 0;
|
||||
|
||||
int to_command =0;
|
||||
Boolean isonline = true;
|
||||
int hasGoods = 0;
|
||||
String message = null;
|
||||
@@ -127,6 +127,7 @@ public class LnshLaminatingMachineDeviceDriver extends AbstractOpcDeviceDriver i
|
||||
barcode = this.itemProtocol.getBarcode();
|
||||
hasGoods = this.itemProtocol.getMove();
|
||||
container_type = this.itemProtocol.getContainer_type();
|
||||
to_command = this.itemProtocol.getToCommand();
|
||||
|
||||
if (mode != last_mode) {
|
||||
this.setRequireSucess(false);
|
||||
|
||||
@@ -344,6 +344,9 @@ public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceD
|
||||
if (mode != last_mode) {
|
||||
this.setRequireSucess(false);
|
||||
this.setResultSucess(false);
|
||||
if(mode ==2 ){
|
||||
this.writing(0);
|
||||
}
|
||||
logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode));
|
||||
logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + "->" + mode);
|
||||
}
|
||||
@@ -685,7 +688,6 @@ public class LnshPackagePalletManipulatorDeviceDriver extends AbstractOpcDeviceD
|
||||
log.debug("设备运转模式:等待工作");
|
||||
return;
|
||||
case 2:
|
||||
this.writing(0);
|
||||
break;
|
||||
case 4:
|
||||
//排产单确认
|
||||
|
||||
@@ -0,0 +1,984 @@
|
||||
package org.nl.acs.device_driver.lnsh.lnsh_package_palletizing_manipulator_site;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.acs.device.device_driver.standard_inspect.ItemDto;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@Data
|
||||
public class ItemProtocol {
|
||||
|
||||
public static String item_heartbeat = "heartbeat";
|
||||
public static String item_mode = "mode";
|
||||
public static String item_move = "move";
|
||||
public static String item_action = "action";
|
||||
public static String item_ioaction = "ioaction";
|
||||
public static String item_error = "error";
|
||||
public static String item_task = "task";
|
||||
public static String item_weight = "weight";
|
||||
public static String item_barcode = "barcode";
|
||||
public static String item_material = "material";
|
||||
public static String item_qty = "qty";
|
||||
public static String item_batch = "batch";
|
||||
public static String item_specifications = "specifications";
|
||||
public static String item_open_time = "open_time";
|
||||
public static String item_standby_time = "standby_time";
|
||||
public static String item_production_time = "production_time";
|
||||
public static String item_error_time = "error_time";
|
||||
public static String item_order_No = "order_No";
|
||||
public static String item_order_qty = "order_qty";
|
||||
public static String item_total_split = "total_split";
|
||||
public static String item_xContainer_length = "xContainer_length";
|
||||
public static String item_yContainer_length = "yContainer_length";
|
||||
public static String item_container_getQty = "container_getQty";
|
||||
public static String item_getX_offset = "getX_offset";
|
||||
public static String item_getY_offset = "getY_offset";
|
||||
|
||||
public static String item_product_code = "product_code";
|
||||
public static String item_AlongSide = "AlongSide";
|
||||
public static String item_BshortSide = "BshortSide";
|
||||
public static String item_Htrapezoidal = "Htrapezoidal";
|
||||
public static String item_Wthickness = "Wthickness";
|
||||
public static String item_tray_qty = "tray_qty";
|
||||
public static String item_tray_high = "tray_high";
|
||||
public static String item_crib_category = "crib_category";
|
||||
public static String item_palletX1_line = "palletX1_line";
|
||||
public static String item_palletY1_row = "palletY1_row";
|
||||
public static String item_palletA1_angle = "palletA1_angle";
|
||||
public static String item_palletX2_line = "palletX2_line";
|
||||
public static String item_palletY2_row = "palletY2_row";
|
||||
public static String item_palletA2_angle = "palletA2_angle";
|
||||
public static String item_palletX3_line = "palletX3_line";
|
||||
public static String item_palletY3_row = "palletY3_row";
|
||||
public static String item_palletA3_angle = "palletA3_angle";
|
||||
public static String item_pressCribX1_line = "pressCribX1_line";
|
||||
public static String item_pressCribY1_row = "pressCribY1_row";
|
||||
public static String item_pressCribA1_angle = "pressCribA1_angle";
|
||||
public static String item_pressCribX2_line = "pressCribX2_line";
|
||||
public static String item_pressCribY2_row = "pressCribY2_row";
|
||||
public static String item_pressCribA2_angle = "pressCribA2_angle";
|
||||
public static String item_pressCribX3_line = "pressCribX3_line";
|
||||
public static String item_pressCribY3_row = "pressCribY3_row";
|
||||
public static String item_pressCribA3_angle = "pressCribA3_angle";
|
||||
public static String item_Zoffset = "Zoffset";
|
||||
public static String item_pallet_layerQty = "pallet_layerQty";
|
||||
public static String item_pressCrib_layerQty = "pressCrib_layerQty";
|
||||
public static String item_codeLayerX1_interval = "codeLayerX1_interval";
|
||||
public static String item_codeLayerY1_interval = "codeLayerY1_interval";
|
||||
public static String item_codeLayerX2_interval = "codeLayerX2_interval";
|
||||
public static String item_codeLayerY2_interval = "codeLayerY2_interval";
|
||||
public static String item_codeLayerX3_interval = "codeLayerX3_interval";
|
||||
public static String item_codeLayerY3_interval = "codeLayerY3_interval";
|
||||
public static String item_codeLayerX1_offset = "codeLayerX1_offset";
|
||||
public static String item_codeLayerY1_offset = "codeLayerY1_offset";
|
||||
public static String item_codeLayerX2_offset = "codeLayerX2_offset";
|
||||
public static String item_codeLayerY2_offset = "codeLayerY2_offset";
|
||||
public static String item_codeLayerX3_offset = "codeLayerX3_offset";
|
||||
public static String item_codeLayerY3_offset = "codeLayerY3_offset";
|
||||
public static String item_pressLayerX1_interval = "pressLayerX1_interval";
|
||||
public static String item_pressLayerY1_interval = "pressLayerY1_interval";
|
||||
public static String item_pressLayerX2_interval = "pressLayerX2_interval";
|
||||
public static String item_pressLayerY2_interval = "pressLayerY2_interval";
|
||||
public static String item_pressLayerX3_interval = "pressLayerX3_interval";
|
||||
public static String item_pressLayerY3_interval = "pressLayerY3_interval";
|
||||
public static String item_pressLayerX1_offset = "pressLayerX1_offset";
|
||||
public static String item_pressLayerY1_offset = "pressLayerY1_offset";
|
||||
public static String item_pressLayerX2_offset = "pressLayerX2_offset";
|
||||
public static String item_pressLayerY2_offset = "pressLayerY2_offset";
|
||||
public static String item_pressLayerX3_offset = "pressLayerX3_offset";
|
||||
public static String item_pressLayerY3_offset = "pressLayerY3_offset";
|
||||
public static String item_one_cribTotal = "one_cribTotal";
|
||||
public static String item_two_cribTotal = "two_cribTotal";
|
||||
public static String item_one_qty = "one_qty";
|
||||
public static String item_two_qty = "two_qty";
|
||||
public static String item_tool_coordinate = "tool_coordinate";
|
||||
|
||||
public static String item_to_command = "to_command";
|
||||
public static String item_to_target = "to_target";
|
||||
public static String item_to_task = "to_task";
|
||||
public static String item_to_barcode = "to_barcode";
|
||||
public static String item_to_feedback = "to_feedback";
|
||||
public static String item_to_error = "to_error";
|
||||
public static String item_to_material_qty = "to_material_qty";
|
||||
public static String item_to_allow_pallet_qty = "to_allow_pallet_qty";
|
||||
public static String item_to_material_type = "to_material_type";
|
||||
public static String item_to_material_code = "to_material_code";
|
||||
public static String item_to_order_No = "to_order_No";
|
||||
public static String item_to_order_qty = "to_order_qty";
|
||||
|
||||
public static String item_to_product_code = "to_product_code";
|
||||
public static String item_to_AlongSide = "to_AlongSide";
|
||||
public static String item_to_BshortSide = "to_BshortSide";
|
||||
public static String item_to_Htrapezoidal = "to_Htrapezoidal";
|
||||
public static String item_to_Wthickness = "to_Wthickness";
|
||||
public static String item_to_tray_qty = "to_tray_qty";
|
||||
public static String item_to_tray_high = "to_tray_high";
|
||||
public static String item_to_crib_category = "to_crib_category";
|
||||
public static String item_to_palletX1_line = "to_palletX1_line";
|
||||
public static String item_to_palletY1_row = "to_palletY1_row";
|
||||
public static String item_to_palletA1_angle = "to_palletA1_angle";
|
||||
public static String item_to_palletX2_line = "to_palletX2_line";
|
||||
public static String item_to_palletY2_row = "to_palletY2_row";
|
||||
public static String item_to_palletA2_angle = "to_palletA2_angle";
|
||||
public static String item_to_palletX3_line = "to_palletX3_line";
|
||||
public static String item_to_palletY3_row = "to_palletY3_row";
|
||||
public static String item_to_palletA3_angle = "to_palletA3_angle";
|
||||
public static String item_to_pressCribX1_line = "to_pressCribX1_line";
|
||||
public static String item_to_pressCribY1_row = "to_pressCribY1_row";
|
||||
public static String item_to_pressCribA1_angle = "to_pressCribA1_angle";
|
||||
public static String item_to_pressCribX2_line = "to_pressCribX2_line";
|
||||
public static String item_to_pressCribY2_row = "to_pressCribY2_row";
|
||||
public static String item_to_pressCribA2_angle = "to_pressCribA2_angle";
|
||||
public static String item_to_pressCribX3_line = "to_pressCribX3_line";
|
||||
public static String item_to_pressCribY3_row = "to_pressCribY3_row";
|
||||
public static String item_to_pressCribA3_angle = "to_pressCribA3_angle";
|
||||
public static String item_to_Zoffset = "to_Zoffset";
|
||||
public static String item_to_pallet_layerQty = "to_pallet_layerQty";
|
||||
public static String item_to_pressCrib_layerQty = "to_pressCrib_layerQty";
|
||||
public static String item_to_codeLayerX1_interval = "to_codeLayerX1_interval";
|
||||
public static String item_to_codeLayerY1_interval = "to_codeLayerY1_interval";
|
||||
public static String item_to_codeLayerX2_interval = "to_codeLayerX2_interval";
|
||||
public static String item_to_codeLayerY2_interval = "to_codeLayerY2_interval";
|
||||
public static String item_to_codeLayerX3_interval = "to_codeLayerX3_interval";
|
||||
public static String item_to_codeLayerY3_interval = "to_codeLayerY3_interval";
|
||||
public static String item_to_codeLayerX1_offset = "to_codeLayerX1_offset";
|
||||
public static String item_to_codeLayerY1_offset = "to_codeLayerY1_offset";
|
||||
public static String item_to_codeLayerX2_offset = "to_codeLayerX2_offset";
|
||||
public static String item_to_codeLayerY2_offset = "to_codeLayerY2_offset";
|
||||
public static String item_to_codeLayerX3_offset = "to_codeLayerX3_offset";
|
||||
public static String item_to_codeLayerY3_offset = "to_codeLayerY3_offset";
|
||||
public static String item_to_pressLayerX1_interval = "to_pressLayerX1_interval";
|
||||
public static String item_to_pressLayerY1_interval = "to_pressLayerY1_interval";
|
||||
public static String item_to_pressLayerX2_interval = "to_pressLayerX2_interval";
|
||||
public static String item_to_pressLayerY2_interval = "to_pressLayerY2_interval";
|
||||
public static String item_to_pressLayerX3_interval = "to_pressLayerX3_interval";
|
||||
public static String item_to_pressLayerY3_interval = "to_pressLayerY3_interval";
|
||||
public static String item_to_pressLayerX1_offset = "to_pressLayerX1_offset";
|
||||
public static String item_to_pressLayerY1_offset = "to_pressLayerY1_offset";
|
||||
public static String item_to_pressLayerX2_offset = "to_pressLayerX2_offset";
|
||||
public static String item_to_pressLayerY2_offset = "to_pressLayerY2_offset";
|
||||
public static String item_to_pressLayerX3_offset = "to_pressLayerX3_offset";
|
||||
public static String item_to_pressLayerY3_offset = "to_pressLayerY3_offset";
|
||||
public static String item_to_one_cribTotal = "to_one_cribTotal";
|
||||
public static String item_to_two_cribTotal = "to_two_cribTotal";
|
||||
public static String item_to_one_qty = "to_one_qty";
|
||||
public static String item_to_two_qty = "to_two_qty";
|
||||
public static String item_to_tool_coordinate = "to_tool_coordinate";
|
||||
public static String item_to_xContainer_length = "to_xContainer_length";
|
||||
public static String item_to_yContainer_length = "to_yContainer_length";
|
||||
public static String item_to_container_getQty = "to_container_getQty";
|
||||
public static String item_to_getX_offset = "to_getX_offset";
|
||||
public static String item_to_getY_offset = "to_getY_offset";
|
||||
|
||||
|
||||
|
||||
Boolean isonline;
|
||||
|
||||
private LnshPackagePalletizingManipulatorSiteDeviceDriver driver;
|
||||
|
||||
public ItemProtocol(LnshPackagePalletizingManipulatorSiteDeviceDriver driver) {
|
||||
this.driver = driver;
|
||||
}
|
||||
|
||||
public int getHeartbeat() {
|
||||
return this.getOpcIntegerValue(item_heartbeat);
|
||||
}
|
||||
|
||||
public int getMode() {
|
||||
return this.getOpcIntegerValue(item_mode);
|
||||
}
|
||||
|
||||
public int getMove() {
|
||||
return this.getOpcIntegerValue(item_move);
|
||||
}
|
||||
|
||||
public int getAction() {
|
||||
return this.getOpcIntegerValue(item_action);
|
||||
}
|
||||
|
||||
public int getIoAction() {
|
||||
return this.getOpcIntegerValue(item_ioaction);
|
||||
}
|
||||
|
||||
public int getError() {
|
||||
return this.getOpcIntegerValue(item_error);
|
||||
}
|
||||
|
||||
public int getTask() {
|
||||
return this.getOpcIntegerValue(item_task);
|
||||
}
|
||||
|
||||
public int getBarcode() {
|
||||
return this.getOpcIntegerValue(item_barcode);
|
||||
}
|
||||
|
||||
public String getMaterial() {
|
||||
return this.getOpcStringValue(item_material);
|
||||
}
|
||||
|
||||
public int getQty() {
|
||||
return this.getOpcIntegerValue(item_qty);
|
||||
}
|
||||
|
||||
public String getSpecifications() {
|
||||
return this.getOpcStringValue(item_specifications);
|
||||
}
|
||||
|
||||
public int getBatch() {
|
||||
return this.getOpcIntegerValue(item_batch);
|
||||
}
|
||||
|
||||
public int getOpen_time() {
|
||||
return this.getOpcIntegerValue(item_open_time);
|
||||
}
|
||||
|
||||
public int getStandby_time() {
|
||||
return this.getOpcIntegerValue(item_standby_time);
|
||||
}
|
||||
|
||||
public int getProduction_time() {
|
||||
return this.getOpcIntegerValue(item_production_time);
|
||||
}
|
||||
|
||||
public int getError_time() {
|
||||
return this.getOpcIntegerValue(item_error_time);
|
||||
}
|
||||
|
||||
public String getOrder_No() {
|
||||
return this.getOpcStringValue(item_order_No);
|
||||
}
|
||||
|
||||
public int getTotal_split() {
|
||||
return this.getOpcIntegerValue(item_total_split);
|
||||
}
|
||||
|
||||
public int getOrder_qty() {
|
||||
return this.getOpcIntegerValue(item_order_qty);
|
||||
}
|
||||
|
||||
public int getXContainer_length() {
|
||||
return this.getOpcIntegerValue(item_xContainer_length);
|
||||
}
|
||||
|
||||
public int getYContainer_length() {
|
||||
return this.getOpcIntegerValue(item_yContainer_length);
|
||||
}
|
||||
|
||||
public int getContainer_getQty() {
|
||||
return this.getOpcIntegerValue(item_container_getQty);
|
||||
}
|
||||
|
||||
public int getGetX_offset() {
|
||||
return this.getOpcIntegerValue(item_getX_offset);
|
||||
}
|
||||
|
||||
public int getGetY_offset() {
|
||||
return this.getOpcIntegerValue(item_getY_offset);
|
||||
}
|
||||
|
||||
public int getProduct_code() {
|
||||
return this.getOpcIntegerValue(item_product_code);
|
||||
}
|
||||
|
||||
public int getAlongSide() {
|
||||
return this.getOpcIntegerValue(item_AlongSide);
|
||||
}
|
||||
|
||||
public int getBshortSide() {
|
||||
return this.getOpcIntegerValue(item_BshortSide);
|
||||
}
|
||||
|
||||
public int getHtrapezoidal() {
|
||||
return this.getOpcIntegerValue(item_Htrapezoidal);
|
||||
}
|
||||
|
||||
public int getWthickness() {
|
||||
return this.getOpcIntegerValue(item_Wthickness);
|
||||
}
|
||||
|
||||
public int getTray_qty() {
|
||||
return this.getOpcIntegerValue(item_tray_qty);
|
||||
}
|
||||
|
||||
public int getTray_high() {
|
||||
return this.getOpcIntegerValue(item_tray_high);
|
||||
}
|
||||
|
||||
public int getCrib_category() {
|
||||
return this.getOpcIntegerValue(item_crib_category);
|
||||
}
|
||||
|
||||
public int getPalletX1_line() {
|
||||
return this.getOpcIntegerValue(item_palletX1_line);
|
||||
}
|
||||
|
||||
public int getPalletY1_row() {
|
||||
return this.getOpcIntegerValue(item_palletY1_row);
|
||||
}
|
||||
|
||||
public int getPalletA1_angle() {
|
||||
return this.getOpcIntegerValue(item_palletA1_angle);
|
||||
}
|
||||
|
||||
public int getPalletX2_line() {
|
||||
return this.getOpcIntegerValue(item_palletX2_line);
|
||||
}
|
||||
|
||||
public int getPalletY2_row() {
|
||||
return this.getOpcIntegerValue(item_palletY2_row);
|
||||
}
|
||||
|
||||
public int getPalletA2_angle() {
|
||||
return this.getOpcIntegerValue(item_palletA2_angle);
|
||||
}
|
||||
|
||||
public int getPalletX3_line() {
|
||||
return this.getOpcIntegerValue(item_palletX3_line);
|
||||
}
|
||||
|
||||
public int getPalletY3_row() {
|
||||
return this.getOpcIntegerValue(item_palletY3_row);
|
||||
}
|
||||
|
||||
public int getPalletA3_angle() {
|
||||
return this.getOpcIntegerValue(item_palletA3_angle);
|
||||
}
|
||||
|
||||
public int getPressCribX1_line() {
|
||||
return this.getOpcIntegerValue(item_pressCribX1_line);
|
||||
}
|
||||
|
||||
public int getPressCribY1_row() {
|
||||
return this.getOpcIntegerValue(item_pressCribY1_row);
|
||||
}
|
||||
|
||||
public int getPressCribA1_angle() {
|
||||
return this.getOpcIntegerValue(item_pressCribA1_angle);
|
||||
}
|
||||
|
||||
public int getPressCribX2_line() {
|
||||
return this.getOpcIntegerValue(item_pressCribX2_line);
|
||||
}
|
||||
|
||||
public int getPressCribY2_row() {
|
||||
return this.getOpcIntegerValue(item_pressCribY2_row);
|
||||
}
|
||||
|
||||
public int getPressCribA2_angle() {
|
||||
return this.getOpcIntegerValue(item_pressCribA2_angle);
|
||||
}
|
||||
|
||||
public int getPressCribX3_line() {
|
||||
return this.getOpcIntegerValue(item_pressCribX3_line);
|
||||
}
|
||||
|
||||
public int getPressCribY3_row() {
|
||||
return this.getOpcIntegerValue(item_pressCribY3_row);
|
||||
}
|
||||
|
||||
public int getPressCribA3_angle() {
|
||||
return this.getOpcIntegerValue(item_pressCribA3_angle);
|
||||
}
|
||||
|
||||
public int getZoffset() {
|
||||
return this.getOpcIntegerValue(item_Zoffset);
|
||||
}
|
||||
|
||||
public int getPallet_layerQty() {
|
||||
return this.getOpcIntegerValue(item_pallet_layerQty);
|
||||
}
|
||||
|
||||
public int getPressCrib_layerQty() {
|
||||
return this.getOpcIntegerValue(item_pressCrib_layerQty);
|
||||
}
|
||||
|
||||
public int getCodeLayerX1_interval() {
|
||||
return this.getOpcIntegerValue(item_codeLayerX1_interval);
|
||||
}
|
||||
|
||||
public int getCodeLayerY1_interval() {
|
||||
return this.getOpcIntegerValue(item_codeLayerY1_interval);
|
||||
}
|
||||
|
||||
public int getCodeLayerX2_interval() {
|
||||
return this.getOpcIntegerValue(item_codeLayerX2_interval);
|
||||
}
|
||||
|
||||
public int getCodeLayerY2_interval() {
|
||||
return this.getOpcIntegerValue(item_codeLayerY2_interval);
|
||||
}
|
||||
|
||||
public int getCodeLayerX3_interval() {
|
||||
return this.getOpcIntegerValue(item_codeLayerX3_interval);
|
||||
}
|
||||
|
||||
public int getcodeLayerY3_interval() {
|
||||
return this.getOpcIntegerValue(item_codeLayerY3_interval);
|
||||
}
|
||||
|
||||
public int getCodeLayerX1_offset() {
|
||||
return this.getOpcIntegerValue(item_codeLayerX1_offset);
|
||||
}
|
||||
|
||||
public int getCodeLayerY1_offset() {
|
||||
return this.getOpcIntegerValue(item_codeLayerY1_offset);
|
||||
}
|
||||
|
||||
public int getCodeLayerX2_offset() {
|
||||
return this.getOpcIntegerValue(item_codeLayerX2_offset);
|
||||
}
|
||||
|
||||
public int getCodeLayerY2_offset() {
|
||||
return this.getOpcIntegerValue(item_codeLayerY2_offset);
|
||||
}
|
||||
|
||||
public int getCodeLayerX3_offset() {
|
||||
return this.getOpcIntegerValue(item_codeLayerX3_offset);
|
||||
}
|
||||
|
||||
public int getCodeLayerY3_offset() {
|
||||
return this.getOpcIntegerValue(item_codeLayerY3_offset);
|
||||
}
|
||||
|
||||
public int getPressLayerX1_interval() {
|
||||
return this.getOpcIntegerValue(item_pressLayerX1_interval);
|
||||
}
|
||||
|
||||
public int getPressLayerY1_interval() {
|
||||
return this.getOpcIntegerValue(item_pressLayerY1_interval);
|
||||
}
|
||||
|
||||
public int getPressLayerX2_interval() {
|
||||
return this.getOpcIntegerValue(item_pressLayerX2_interval);
|
||||
}
|
||||
|
||||
public int getPressLayerY2_interval() {
|
||||
return this.getOpcIntegerValue(item_pressLayerY2_interval);
|
||||
}
|
||||
|
||||
public int getPressLayerX3_interval() {
|
||||
return this.getOpcIntegerValue(item_pressLayerX3_interval);
|
||||
}
|
||||
|
||||
public int getPressLayerY3_interval() {
|
||||
return this.getOpcIntegerValue(item_pressLayerY3_interval);
|
||||
}
|
||||
|
||||
public int getPressLayerX1_offset() {
|
||||
return this.getOpcIntegerValue(item_pressLayerX1_offset);
|
||||
}
|
||||
|
||||
public int getPressLayerY1_offset() {
|
||||
return this.getOpcIntegerValue(item_pressLayerY1_offset);
|
||||
}
|
||||
|
||||
public int getPressLayerX2_offset() {
|
||||
return this.getOpcIntegerValue(item_pressLayerX2_offset);
|
||||
}
|
||||
|
||||
public int getPressLayerY2_offset() {
|
||||
return this.getOpcIntegerValue(item_pressLayerY2_offset);
|
||||
}
|
||||
|
||||
public int getPressLayerX3_offset() {
|
||||
return this.getOpcIntegerValue(item_pressLayerX3_offset);
|
||||
}
|
||||
|
||||
public int getPressLayerY3_offset() {
|
||||
return this.getOpcIntegerValue(item_pressLayerY3_offset);
|
||||
}
|
||||
|
||||
public int getOne_cribTotal() {
|
||||
return this.getOpcIntegerValue(item_one_cribTotal);
|
||||
}
|
||||
|
||||
public int getTwo_cribTotal() {
|
||||
return this.getOpcIntegerValue(item_two_cribTotal);
|
||||
}
|
||||
|
||||
public int getOne_qty() {
|
||||
return this.getOpcIntegerValue(item_one_qty);
|
||||
}
|
||||
|
||||
public int getTwo_qty() {
|
||||
return this.getOpcIntegerValue(item_two_qty);
|
||||
}
|
||||
|
||||
public int getTool_coordinate() {
|
||||
return this.getOpcIntegerValue(item_tool_coordinate);
|
||||
}
|
||||
|
||||
public int getTo_feedback() {
|
||||
return this.getOpcIntegerValue(item_to_feedback);
|
||||
}
|
||||
|
||||
public int getTo_error() {
|
||||
return this.getOpcIntegerValue(item_to_error);
|
||||
}
|
||||
|
||||
public int getTo_material_qty() {
|
||||
return this.getOpcIntegerValue(item_to_material_qty);
|
||||
}
|
||||
|
||||
public int getTo_allow_pallet_qty() {
|
||||
return this.getOpcIntegerValue(item_to_allow_pallet_qty);
|
||||
}
|
||||
|
||||
public int getTo_material_type() {
|
||||
return this.getOpcIntegerValue(item_to_material_type);
|
||||
}
|
||||
|
||||
public String getTo_material_code() {
|
||||
return this.getOpcStringValue(item_to_material_code);
|
||||
}
|
||||
|
||||
public String getTo_order_No() {
|
||||
return this.getOpcStringValue(item_to_order_No);
|
||||
}
|
||||
|
||||
public int getToProduct_code() {
|
||||
return this.getOpcIntegerValue(item_to_product_code);
|
||||
}
|
||||
|
||||
public int getToAlongSide() {
|
||||
return this.getOpcIntegerValue(item_to_AlongSide);
|
||||
}
|
||||
|
||||
public int getToBshortSide() {
|
||||
return this.getOpcIntegerValue(item_to_BshortSide);
|
||||
}
|
||||
|
||||
public int getToHtrapezoidal() {
|
||||
return this.getOpcIntegerValue(item_to_Htrapezoidal);
|
||||
}
|
||||
|
||||
public int getToWthickness() {
|
||||
return this.getOpcIntegerValue(item_to_Wthickness);
|
||||
}
|
||||
|
||||
public int getToTray_qty() {
|
||||
return this.getOpcIntegerValue(item_to_tray_qty);
|
||||
}
|
||||
|
||||
public int getToTray_high() {
|
||||
return this.getOpcIntegerValue(item_to_tray_high);
|
||||
}
|
||||
|
||||
public int getToCrib_category() {
|
||||
return this.getOpcIntegerValue(item_to_crib_category);
|
||||
}
|
||||
|
||||
public int getToPalletX1_line() {
|
||||
return this.getOpcIntegerValue(item_to_palletX1_line);
|
||||
}
|
||||
|
||||
public int getToPalletY1_row() {
|
||||
return this.getOpcIntegerValue(item_to_palletY1_row);
|
||||
}
|
||||
|
||||
public int getToPalletA1_angle() {
|
||||
return this.getOpcIntegerValue(item_to_palletA1_angle);
|
||||
}
|
||||
|
||||
public int getToPalletX2_line() {
|
||||
return this.getOpcIntegerValue(item_to_palletX2_line);
|
||||
}
|
||||
|
||||
public int getToPalletY2_row() {
|
||||
return this.getOpcIntegerValue(item_to_palletY2_row);
|
||||
}
|
||||
|
||||
public int getToPalletA2_angle() {
|
||||
return this.getOpcIntegerValue(item_to_palletA2_angle);
|
||||
}
|
||||
|
||||
public int getToPalletX3_line() {
|
||||
return this.getOpcIntegerValue(item_to_palletX3_line);
|
||||
}
|
||||
|
||||
public int getToPalletY3_row() {
|
||||
return this.getOpcIntegerValue(item_to_palletY3_row);
|
||||
}
|
||||
|
||||
public int getToPalletA3_angle() {
|
||||
return this.getOpcIntegerValue(item_to_palletA3_angle);
|
||||
}
|
||||
|
||||
public int getToPressCribX1_line() {
|
||||
return this.getOpcIntegerValue(item_to_pressCribX1_line);
|
||||
}
|
||||
|
||||
public int getToPressCribY1_row() {
|
||||
return this.getOpcIntegerValue(item_to_pressCribY1_row);
|
||||
}
|
||||
|
||||
public int getToPressCribA1_angle() {
|
||||
return this.getOpcIntegerValue(item_to_pressCribA1_angle);
|
||||
}
|
||||
|
||||
public int getToPressCribX2_line() {
|
||||
return this.getOpcIntegerValue(item_to_pressCribX2_line);
|
||||
}
|
||||
|
||||
public int getToPressCribY2_row() {
|
||||
return this.getOpcIntegerValue(item_to_pressCribY2_row);
|
||||
}
|
||||
|
||||
public int getToPressCribA2_angle() {
|
||||
return this.getOpcIntegerValue(item_to_pressCribA2_angle);
|
||||
}
|
||||
|
||||
public int getToPressCribX3_line() {
|
||||
return this.getOpcIntegerValue(item_to_pressCribX3_line);
|
||||
}
|
||||
|
||||
public int getToPressCribY3_row() {
|
||||
return this.getOpcIntegerValue(item_to_pressCribY3_row);
|
||||
}
|
||||
|
||||
public int getToPressCribA3_angle() {
|
||||
return this.getOpcIntegerValue(item_to_pressCribA3_angle);
|
||||
}
|
||||
|
||||
public int getToZoffset() {
|
||||
return this.getOpcIntegerValue(item_to_Zoffset);
|
||||
}
|
||||
|
||||
public int getToPallet_layerQty() {
|
||||
return this.getOpcIntegerValue(item_to_pallet_layerQty);
|
||||
}
|
||||
|
||||
public int getToPressCrib_layerQty() {
|
||||
return this.getOpcIntegerValue(item_to_pressCrib_layerQty);
|
||||
}
|
||||
|
||||
public int getToCodeLayerX1_interval() {
|
||||
return this.getOpcIntegerValue(item_to_codeLayerX1_interval);
|
||||
}
|
||||
|
||||
public int getToCodeLayerY1_interval() {
|
||||
return this.getOpcIntegerValue(item_to_codeLayerY1_interval);
|
||||
}
|
||||
|
||||
public int getToCodeLayerX2_interval() {
|
||||
return this.getOpcIntegerValue(item_to_codeLayerX2_interval);
|
||||
}
|
||||
|
||||
public int getToCodeLayerY2_interval() {
|
||||
return this.getOpcIntegerValue(item_to_codeLayerY2_interval);
|
||||
}
|
||||
|
||||
public int getToCodeLayerX3_interval() {
|
||||
return this.getOpcIntegerValue(item_to_codeLayerX3_interval);
|
||||
}
|
||||
|
||||
public int getTocodeLayerY3_interval() {
|
||||
return this.getOpcIntegerValue(item_to_codeLayerY3_interval);
|
||||
}
|
||||
|
||||
public int getToCodeLayerX1_offset() {
|
||||
return this.getOpcIntegerValue(item_to_codeLayerX1_offset);
|
||||
}
|
||||
|
||||
public int getToCodeLayerY1_offset() {
|
||||
return this.getOpcIntegerValue(item_to_codeLayerY1_offset);
|
||||
}
|
||||
|
||||
public int getToCodeLayerX2_offset() {
|
||||
return this.getOpcIntegerValue(item_to_codeLayerX2_offset);
|
||||
}
|
||||
|
||||
public int getToCodeLayerY2_offset() {
|
||||
return this.getOpcIntegerValue(item_to_codeLayerY2_offset);
|
||||
}
|
||||
|
||||
public int getToCodeLayerX3_offset() {
|
||||
return this.getOpcIntegerValue(item_to_codeLayerX3_offset);
|
||||
}
|
||||
|
||||
public int getToCodeLayerY3_offset() {
|
||||
return this.getOpcIntegerValue(item_to_codeLayerY3_offset);
|
||||
}
|
||||
|
||||
public int getToPressLayerX1_interval() {
|
||||
return this.getOpcIntegerValue(item_to_pressLayerX1_interval);
|
||||
}
|
||||
|
||||
public int getToPressLayerY1_interval() {
|
||||
return this.getOpcIntegerValue(item_to_pressLayerY1_interval);
|
||||
}
|
||||
|
||||
public int getToPressLayerX2_interval() {
|
||||
return this.getOpcIntegerValue(item_to_pressLayerX2_interval);
|
||||
}
|
||||
|
||||
public int getToPressLayerY2_interval() {
|
||||
return this.getOpcIntegerValue(item_to_pressLayerY2_interval);
|
||||
}
|
||||
|
||||
public int getToPressLayerX3_interval() {
|
||||
return this.getOpcIntegerValue(item_to_pressLayerX3_interval);
|
||||
}
|
||||
|
||||
public int getToPressLayerY3_interval() {
|
||||
return this.getOpcIntegerValue(item_to_pressLayerY3_interval);
|
||||
}
|
||||
|
||||
public int getToPressLayerX1_offset() {
|
||||
return this.getOpcIntegerValue(item_to_pressLayerX1_offset);
|
||||
}
|
||||
|
||||
public int getToPressLayerY1_offset() {
|
||||
return this.getOpcIntegerValue(item_to_pressLayerY1_offset);
|
||||
}
|
||||
|
||||
public int getToPressLayerX2_offset() {
|
||||
return this.getOpcIntegerValue(item_to_pressLayerX2_offset);
|
||||
}
|
||||
|
||||
public int getToPressLayerY2_offset() {
|
||||
return this.getOpcIntegerValue(item_to_pressLayerY2_offset);
|
||||
}
|
||||
|
||||
public int getToPressLayerX3_offset() {
|
||||
return this.getOpcIntegerValue(item_to_pressLayerX3_offset);
|
||||
}
|
||||
|
||||
public int getToPressLayerY3_offset() {
|
||||
return this.getOpcIntegerValue(item_to_pressLayerY3_offset);
|
||||
}
|
||||
|
||||
public int getToOne_cribTotal() {
|
||||
return this.getOpcIntegerValue(item_to_one_cribTotal);
|
||||
}
|
||||
|
||||
public int getToTwo_cribTotal() {
|
||||
return this.getOpcIntegerValue(item_to_two_cribTotal);
|
||||
}
|
||||
|
||||
public int getToOne_qty() {
|
||||
return this.getOpcIntegerValue(item_to_one_qty);
|
||||
}
|
||||
|
||||
public int getToTwo_qty() {
|
||||
return this.getOpcIntegerValue(item_to_two_qty);
|
||||
}
|
||||
|
||||
public int getToTool_coordinate() {
|
||||
return this.getOpcIntegerValue(item_to_tool_coordinate);
|
||||
}
|
||||
|
||||
public int getTo_order_qty() {
|
||||
return this.getOpcIntegerValue(item_to_order_qty);
|
||||
}
|
||||
|
||||
public int getToXContainer_length() {
|
||||
return this.getOpcIntegerValue(item_to_xContainer_length);
|
||||
}
|
||||
|
||||
public int getToYContainer_length() {
|
||||
return this.getOpcIntegerValue(item_to_yContainer_length);
|
||||
}
|
||||
|
||||
public int getToContainer_getQty() {
|
||||
return this.getOpcIntegerValue(item_to_container_getQty);
|
||||
}
|
||||
|
||||
public int getToGetX_offset() {
|
||||
return this.getOpcIntegerValue(item_to_getX_offset);
|
||||
}
|
||||
|
||||
public int getToGetY_offset() {
|
||||
return this.getOpcIntegerValue(item_to_getY_offset);
|
||||
}
|
||||
|
||||
public int getToCommand() {
|
||||
return this.getOpcIntegerValue(item_to_command);
|
||||
}
|
||||
|
||||
//是否有货
|
||||
public int hasGoods(int move) {
|
||||
return move;
|
||||
}
|
||||
|
||||
|
||||
public int getOpcIntegerValue(String protocol) {
|
||||
Integer value = this.driver.getIntegeregerValue(protocol);
|
||||
if (value == null) {
|
||||
//log.error(this.getDriver().getDeviceCode() + ":protocol " + protocol + " 信号同步异常!");
|
||||
setIsonline(false);
|
||||
} else {
|
||||
setIsonline(true);
|
||||
return value;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
public String getOpcStringValue(String protocol) {
|
||||
String value = this.driver.getStringValue(protocol);
|
||||
if (StrUtil.isBlank(value)) {
|
||||
|
||||
} else {
|
||||
return value;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static List<ItemDto> getReadableItemDtos() {
|
||||
ArrayList list = new ArrayList();
|
||||
list.add(new ItemDto(item_heartbeat, "心跳", "DB58.B0"));
|
||||
list.add(new ItemDto(item_mode, "工作状态", "DB58.B1", Boolean.valueOf(true)));
|
||||
list.add(new ItemDto(item_move, "光电信号", "DB58.B2"));
|
||||
list.add(new ItemDto(item_action, "动作信号", "DB58.B3"));
|
||||
list.add(new ItemDto(item_ioaction, "进出信号", "DB58.B4"));
|
||||
list.add(new ItemDto(item_error, "故障代码", "DB58.B5"));
|
||||
list.add(new ItemDto(item_task, "任务号", "DB58.D6"));
|
||||
list.add(new ItemDto(item_weight, "重量", "DB112.D10"));
|
||||
list.add(new ItemDto(item_batch, "批次", "DB112.D14"));
|
||||
list.add(new ItemDto(item_specifications, "规格", "DB112.STRING18.256"));
|
||||
list.add(new ItemDto(item_material, "物料", "DB112.STRING274.256"));
|
||||
list.add(new ItemDto(item_barcode, "条码", "DB112.W530"));
|
||||
list.add(new ItemDto(item_product_code, "产品编号", "DB58.W788"));
|
||||
list.add(new ItemDto(item_AlongSide, "A长边", "DB58.W790"));
|
||||
list.add(new ItemDto(item_BshortSide, "B短边", "DB58.W792"));
|
||||
list.add(new ItemDto(item_Htrapezoidal, "H梯形高", "DB58.W794"));
|
||||
list.add(new ItemDto(item_Wthickness, "W厚度", "DB58.W796"));
|
||||
list.add(new ItemDto(item_tray_qty, "当前垛盘数", "DB58.W798"));
|
||||
list.add(new ItemDto(item_tray_high, "垛盘高度", "DB58.W800"));
|
||||
list.add(new ItemDto(item_crib_category, "垛型类别", "DB58.W802"));
|
||||
list.add(new ItemDto(item_palletX1_line, "码垛X1行", "DB58.W804"));
|
||||
list.add(new ItemDto(item_palletY1_row, "码垛Y1列", "DB58.W806"));
|
||||
list.add(new ItemDto(item_palletA1_angle, "码垛A1角度", "DB58.W808"));
|
||||
list.add(new ItemDto(item_palletX2_line, "码垛X2行", "DB58.W810"));
|
||||
list.add(new ItemDto(item_palletY2_row, "码垛Y2列", "DB58.W812"));
|
||||
list.add(new ItemDto(item_palletA2_angle, "码垛A2角度", "DB58.W814"));
|
||||
list.add(new ItemDto(item_palletX3_line, "码垛X3行", "DB58.W816"));
|
||||
list.add(new ItemDto(item_palletY3_row, "码垛Y3列", "DB58.W818"));
|
||||
list.add(new ItemDto(item_palletA3_angle, "码垛A3角度", "DB58.W820"));
|
||||
list.add(new ItemDto(item_pressCribX1_line, "压垛X1行", "DB58.W822"));
|
||||
list.add(new ItemDto(item_pressCribY1_row, "压垛Y1列", "DB58.W824"));
|
||||
list.add(new ItemDto(item_pressCribA1_angle, "压垛A1角度", "DB58.W826"));
|
||||
list.add(new ItemDto(item_pressCribX2_line, "压垛X2行", "DB58.W828"));
|
||||
list.add(new ItemDto(item_pressCribY2_row, "压垛Y2列", "DB58.W830"));
|
||||
list.add(new ItemDto(item_pressCribA2_angle, "压垛A2角度", "DB58.W832"));
|
||||
list.add(new ItemDto(item_pressCribX3_line, "压垛X3行", "DB58.W834"));
|
||||
list.add(new ItemDto(item_pressCribY3_row, "压垛Y3列", "DB58.W836"));
|
||||
list.add(new ItemDto(item_pressCribA3_angle, "压垛A3角度", "DB58.W838"));
|
||||
list.add(new ItemDto(item_Zoffset, "Z轴偏移", "DB58.W840"));
|
||||
list.add(new ItemDto(item_pallet_layerQty, "码垛层数", "DB58.W842"));
|
||||
list.add(new ItemDto(item_pressCrib_layerQty, "压垛层数", "DB58.W844"));
|
||||
list.add(new ItemDto(item_codeLayerX1_interval, "码层X1间隔", "DB58.W846"));
|
||||
list.add(new ItemDto(item_codeLayerY1_interval, "码层Y1间隔", "DB58.W848"));
|
||||
list.add(new ItemDto(item_codeLayerX2_interval, "码层X2间隔", "DB58.W850"));
|
||||
list.add(new ItemDto(item_codeLayerY2_interval, "码层Y2间隔", "DB58.W852"));
|
||||
list.add(new ItemDto(item_codeLayerX3_interval, "码层X3间隔", "DB58.W854"));
|
||||
list.add(new ItemDto(item_codeLayerY3_interval, "码层Y3间隔", "DB58.W856"));
|
||||
list.add(new ItemDto(item_codeLayerX1_offset, "码层X1偏移", "DB58.W858"));
|
||||
list.add(new ItemDto(item_codeLayerY1_offset, "码层Y1偏移", "DB58.W860"));
|
||||
list.add(new ItemDto(item_codeLayerX2_offset, "码层X2偏移", "DB58.W862"));
|
||||
list.add(new ItemDto(item_codeLayerY2_offset, "码层Y2偏移", "DB58.W864"));
|
||||
list.add(new ItemDto(item_codeLayerX3_offset, "码层X3偏移", "DB58.W866"));
|
||||
list.add(new ItemDto(item_codeLayerY3_offset, "码层Y3偏移", "DB58.W868"));
|
||||
list.add(new ItemDto(item_pressLayerX1_interval, "压层X1间隔", "DB58.W870"));
|
||||
list.add(new ItemDto(item_pressLayerY1_interval, "压层Y1间隔", "DB58.W872"));
|
||||
list.add(new ItemDto(item_pressLayerX2_interval, "压层X2间隔", "DB58.W874"));
|
||||
list.add(new ItemDto(item_pressLayerY2_interval, "压层Y2间隔", "DB58.W876"));
|
||||
list.add(new ItemDto(item_pressLayerX3_interval, "压层X3间隔", "DB58.W878"));
|
||||
list.add(new ItemDto(item_pressLayerY3_interval, "压层Y3间隔", "DB58.W880"));
|
||||
list.add(new ItemDto(item_pressLayerX1_offset, "压层X1偏移", "DB58.W882"));
|
||||
list.add(new ItemDto(item_pressLayerY1_offset, "压层Y1偏移", "DB58.W884"));
|
||||
list.add(new ItemDto(item_pressLayerX2_offset, "压层X2偏移", "DB58.W886"));
|
||||
list.add(new ItemDto(item_pressLayerY2_offset, "压层Y2偏移", "DB58.W888"));
|
||||
list.add(new ItemDto(item_pressLayerX3_offset, "压层X3偏移", "DB58.W890"));
|
||||
list.add(new ItemDto(item_pressLayerY3_offset, "压层Y3偏移", "DB58.W892"));
|
||||
list.add(new ItemDto(item_one_cribTotal, "1#垛总数", "DB58.W894"));
|
||||
list.add(new ItemDto(item_two_cribTotal, "2#垛总数", "DB58.W896"));
|
||||
list.add(new ItemDto(item_one_qty, "1#垛当前数", "DB58.W898"));
|
||||
list.add(new ItemDto(item_two_qty, "2#垛当前数", "DB58.W900"));
|
||||
list.add(new ItemDto(item_xContainer_length, "1#X托盘长度", "DB58.W902"));
|
||||
list.add(new ItemDto(item_yContainer_length, "1#Y托盘长度", "DB58.W904"));
|
||||
list.add(new ItemDto(item_container_getQty, "1#托盘抓取数", "DB58.W906"));
|
||||
list.add(new ItemDto(item_getX_offset, "1#抓取X偏移", "DB58.W908"));
|
||||
list.add(new ItemDto(item_getY_offset, "1#抓取Y偏移", "DB58.W910"));
|
||||
return list;
|
||||
}
|
||||
|
||||
public static List<ItemDto> getWriteableItemDtos() {
|
||||
ArrayList list = new ArrayList();
|
||||
list.add(new ItemDto(item_to_command, "作业命令", "DB59.W0", Boolean.valueOf(true)));
|
||||
list.add(new ItemDto(item_to_target, "目标站", "DB59.W2"));
|
||||
list.add(new ItemDto(item_to_task, "任务号", "DB59.D4"));
|
||||
list.add(new ItemDto(item_to_barcode, "条码", "DB59.W8"));
|
||||
list.add(new ItemDto(item_to_material_type, "托盘类型", "DB59.D264"));
|
||||
list.add(new ItemDto(item_to_product_code, "产品编号", "DB59.W266"));
|
||||
list.add(new ItemDto(item_to_AlongSide, "A长边", "DB59.W268"));
|
||||
list.add(new ItemDto(item_to_BshortSide, "B短边", "DB59.W270"));
|
||||
list.add(new ItemDto(item_to_Htrapezoidal, "H梯形高", "DB59.W272"));
|
||||
list.add(new ItemDto(item_to_Wthickness, "W厚度", "DB59.W274"));
|
||||
list.add(new ItemDto(item_to_tray_qty, "当前垛盘数", "DB59.W276"));
|
||||
list.add(new ItemDto(item_to_tray_high, "垛盘高度", "DB59.W278"));
|
||||
list.add(new ItemDto(item_to_crib_category, "垛型类别", "DB59.W280"));
|
||||
list.add(new ItemDto(item_to_palletX1_line, "码垛X1行", "DB59.W282"));
|
||||
list.add(new ItemDto(item_to_palletY1_row, "码垛Y1列", "DB59.W284"));
|
||||
list.add(new ItemDto(item_to_palletA1_angle, "码垛A1角度", "DB59.W286"));
|
||||
list.add(new ItemDto(item_to_palletX2_line, "码垛X2行", "DB59.W288"));
|
||||
list.add(new ItemDto(item_to_palletY2_row, "码垛Y2列", "DB59.W290"));
|
||||
list.add(new ItemDto(item_to_palletA2_angle, "码垛A2角度", "DB59.W292"));
|
||||
list.add(new ItemDto(item_to_palletX3_line, "码垛X3行", "DB59.W294"));
|
||||
list.add(new ItemDto(item_to_palletY3_row, "码垛Y3列", "DB59.W296"));
|
||||
list.add(new ItemDto(item_to_palletA3_angle, "码垛A3角度", "DB59.W298"));
|
||||
list.add(new ItemDto(item_to_pressCribX1_line, "压垛X1行", "DB59.W300"));
|
||||
list.add(new ItemDto(item_to_pressCribY1_row, "压垛Y1列", "DB59.W302"));
|
||||
list.add(new ItemDto(item_to_pressCribA1_angle, "压垛A1角度", "DB59.W304"));
|
||||
list.add(new ItemDto(item_to_pressCribX2_line, "压垛X2行", "DB59.W306"));
|
||||
list.add(new ItemDto(item_to_pressCribY2_row, "压垛Y2列", "DB59.W308"));
|
||||
list.add(new ItemDto(item_to_pressCribA2_angle, "压垛A2角度", "DB59.W310"));
|
||||
list.add(new ItemDto(item_to_pressCribX3_line, "压垛X3行", "DB59.W312"));
|
||||
list.add(new ItemDto(item_to_pressCribY3_row, "压垛Y3列", "DB59.W314"));
|
||||
list.add(new ItemDto(item_to_pressCribA3_angle, "压垛A3角度", "DB59.W316"));
|
||||
list.add(new ItemDto(item_to_Zoffset, "Z轴偏移", "DB59.W318"));
|
||||
list.add(new ItemDto(item_to_pallet_layerQty, "码垛层数", "DB59.W320"));
|
||||
list.add(new ItemDto(item_to_pressCrib_layerQty, "压垛层数", "DB59.W322"));
|
||||
list.add(new ItemDto(item_to_codeLayerX1_interval, "码层X1间隔", "DB59.W324"));
|
||||
list.add(new ItemDto(item_to_codeLayerY1_interval, "码层Y1间隔", "DB59.W326"));
|
||||
list.add(new ItemDto(item_to_codeLayerX2_interval, "码层X2间隔", "DB59.W328"));
|
||||
list.add(new ItemDto(item_to_codeLayerY2_interval, "码层Y2间隔", "DB59.W330"));
|
||||
list.add(new ItemDto(item_to_codeLayerX3_interval, "码层X3间隔", "DB59.W332"));
|
||||
list.add(new ItemDto(item_to_codeLayerY3_interval, "码层Y3间隔", "DB59.W334"));
|
||||
list.add(new ItemDto(item_to_codeLayerX1_offset, "码层X1偏移", "DB59.W336"));
|
||||
list.add(new ItemDto(item_to_codeLayerY1_offset, "码层Y1偏移", "DB59.W338"));
|
||||
list.add(new ItemDto(item_to_codeLayerX2_offset, "码层X2偏移", "DB59.W340"));
|
||||
list.add(new ItemDto(item_to_codeLayerY2_offset, "码层Y2偏移", "DB59.W342"));
|
||||
list.add(new ItemDto(item_to_codeLayerX3_offset, "码层X3偏移", "DB59.W344"));
|
||||
list.add(new ItemDto(item_to_codeLayerY3_offset, "码层Y3偏移", "DB59.W346"));
|
||||
list.add(new ItemDto(item_to_pressLayerX1_interval, "压层X1间隔", "DB59.W348"));
|
||||
list.add(new ItemDto(item_to_pressLayerY1_interval, "压层Y1间隔", "DB59.W350"));
|
||||
list.add(new ItemDto(item_to_pressLayerX2_interval, "压层X2间隔", "DB59.W352"));
|
||||
list.add(new ItemDto(item_to_pressLayerY2_interval, "压层Y2间隔", "DB59.W354"));
|
||||
list.add(new ItemDto(item_to_pressLayerX3_interval, "压层X3间隔", "DB59.W356"));
|
||||
list.add(new ItemDto(item_to_pressLayerY3_interval, "压层Y3间隔", "DB59.W358"));
|
||||
list.add(new ItemDto(item_to_pressLayerX1_offset, "压层X1偏移", "DB59.W360"));
|
||||
list.add(new ItemDto(item_to_pressLayerY1_offset, "压层Y1偏移", "DB59.W362"));
|
||||
list.add(new ItemDto(item_to_pressLayerX2_offset, "压层X2偏移", "DB59.W364"));
|
||||
list.add(new ItemDto(item_to_pressLayerY2_offset, "压层Y2偏移", "DB59.W366"));
|
||||
list.add(new ItemDto(item_to_pressLayerX3_offset, "压层X3偏移", "DB59.W368"));
|
||||
list.add(new ItemDto(item_to_pressLayerY3_offset, "压层Y3偏移", "DB59.W370"));
|
||||
list.add(new ItemDto(item_to_one_cribTotal, "1#垛总数", "DB59.W372"));
|
||||
list.add(new ItemDto(item_to_two_cribTotal, "2#垛总数", "DB59.W374"));
|
||||
list.add(new ItemDto(item_to_one_qty, "1#垛当前数", "DB59.W376"));
|
||||
list.add(new ItemDto(item_to_two_qty, "2#垛当前数", "DB59.W378"));
|
||||
list.add(new ItemDto(item_to_tool_coordinate, "工具坐标", "DB59.W380"));
|
||||
list.add(new ItemDto(item_to_order_qty, "工单数量", "DB59.W382"));
|
||||
list.add(new ItemDto(item_to_xContainer_length, "1#X托盘长度", "DB59.W384"));
|
||||
list.add(new ItemDto(item_to_yContainer_length, "1#Y托盘长度", "DB59.W386"));
|
||||
list.add(new ItemDto(item_to_container_getQty, "1#托盘抓取数", "DB59.W388"));
|
||||
list.add(new ItemDto(item_to_getX_offset, "1#抓取X偏移", "DB59.W390"));
|
||||
list.add(new ItemDto(item_to_getY_offset, "1#抓取Y偏移", "DB59.W392"));
|
||||
return list;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
package org.nl.acs.device_driver.lnsh.lnsh_package_palletizing_manipulator_site;
|
||||
|
||||
import org.nl.acs.device.device_driver.standard_inspect.ItemDto;
|
||||
import org.nl.acs.device_driver.DeviceDriver;
|
||||
import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination;
|
||||
import org.nl.acs.opc.Device;
|
||||
import org.nl.acs.opc.DeviceType;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 嘉耐-包装码垛机械手工位
|
||||
*
|
||||
*/
|
||||
@Service
|
||||
public class LnshPackagePalletizingManipulatorSiteDefination implements OpcDeviceDriverDefination {
|
||||
@Override
|
||||
public String getDriverCode() {
|
||||
return "lnsh_package_palletizing_manipulator_site";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDriverName() {
|
||||
return "嘉耐-包装码垛机械手工位";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDriverDescription() {
|
||||
return "嘉耐-包装码垛机械手工位";
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceDriver getDriverInstance(Device device) {
|
||||
return (new LnshPackagePalletizingManipulatorSiteDeviceDriver()).setDevice(device).setDriverDefination(this);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<? extends DeviceDriver> getDeviceDriverType() {
|
||||
return LnshPackagePalletizingManipulatorSiteDeviceDriver.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeviceType> getFitDeviceTypes() {
|
||||
List<DeviceType> types = new LinkedList();
|
||||
types.add(DeviceType.station);
|
||||
return types;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemDto> getReadableItemDtos() {
|
||||
return ItemProtocol.getReadableItemDtos();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemDto> getWriteableItemDtos() {
|
||||
return ItemProtocol.getWriteableItemDtos();
|
||||
}
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -62,6 +62,7 @@ public class LnshPalletizingManipulatorDeviceDriver extends AbstractOpcDeviceDri
|
||||
int action;
|
||||
int io_action;
|
||||
int task = 0;
|
||||
int to_command = 0;
|
||||
int last_mode = 0;
|
||||
int last_error = 0;
|
||||
int last_move = 0;
|
||||
@@ -167,7 +168,7 @@ public class LnshPalletizingManipulatorDeviceDriver extends AbstractOpcDeviceDri
|
||||
encoder_qty = this.itemProtocol.getEncoder_qty();
|
||||
status = this.itemProtocol.getStatus();
|
||||
unqualified_qty = this.itemProtocol.getUnqualified_qty();
|
||||
|
||||
to_command = this.itemProtocol.getToCommand();
|
||||
if (mode != last_mode) {
|
||||
this.setRequireSucess(false);
|
||||
logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode));
|
||||
|
||||
@@ -117,7 +117,7 @@ public class LnshPalletizingManipulatorSiteDeviceDriver extends AbstractOpcDevic
|
||||
int last_Wthickness = 0;
|
||||
int batch = 0;
|
||||
int last_batch = 0;
|
||||
|
||||
int to_command =0;
|
||||
int status = 0;
|
||||
int last_status = 0;
|
||||
|
||||
@@ -164,6 +164,7 @@ public class LnshPalletizingManipulatorSiteDeviceDriver extends AbstractOpcDevic
|
||||
encoder_qty = this.itemProtocol.getEncoder_qty();
|
||||
status = this.itemProtocol.getStatus();
|
||||
unqualified_qty = this.itemProtocol.getUnqualified_qty();
|
||||
to_command = this.itemProtocol.getToCommand();
|
||||
|
||||
if (mode != last_mode) {
|
||||
this.setRequireSucess(false);
|
||||
|
||||
@@ -113,6 +113,7 @@ public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements
|
||||
int container_type =0;
|
||||
int batch = 0;
|
||||
int last_batch = 0;
|
||||
int to_command =0;
|
||||
|
||||
@Override
|
||||
public Device getDevice() {
|
||||
@@ -139,6 +140,7 @@ public class LnshStationDeviceDriver extends AbstractOpcDeviceDriver implements
|
||||
batch = this.itemProtocol.getBatch();
|
||||
specifications = this.itemProtocol.getSpecifications();
|
||||
container_type = itemProtocol.getContainer_type();
|
||||
to_command = this.itemProtocol.getToCommand();
|
||||
if (mode != last_mode) {
|
||||
this.setRequireSucess(false);
|
||||
if (last_mode == 11) {
|
||||
|
||||
@@ -353,6 +353,9 @@ public class RljnPackagePalletSplitManipulatorDeviceDriver extends AbstractOpcDe
|
||||
if (mode != last_mode) {
|
||||
this.setRequireSucess(false);
|
||||
this.setResultSucess(false);
|
||||
if(mode ==2 ){
|
||||
this.writing(0);
|
||||
}
|
||||
logServer.deviceItemValue(this.device_code,"mode" ,String.valueOf(mode));
|
||||
logServer.deviceExecuteLog(this.device_code,"","","信号mode:" + last_mode + "->" + mode);
|
||||
}
|
||||
@@ -707,7 +710,6 @@ public class RljnPackagePalletSplitManipulatorDeviceDriver extends AbstractOpcDe
|
||||
log.debug("设备运转模式:等待工作");
|
||||
return;
|
||||
case 2:
|
||||
this.writing(0);
|
||||
break;
|
||||
case 4:
|
||||
//排产单确认
|
||||
|
||||
@@ -22,6 +22,7 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC
|
||||
String message;
|
||||
int maxResartNum;
|
||||
private Server server;
|
||||
private Group group;
|
||||
boolean flag = false;
|
||||
private int all_null;
|
||||
private Map<String, OpcItemDto> itemSearchCache;
|
||||
@@ -52,12 +53,12 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC
|
||||
|
||||
|
||||
private OpcItemDto getItem(String item) {
|
||||
OpcItemDto x = (OpcItemDto)this.itemSearchCache.get(item);
|
||||
OpcItemDto x = (OpcItemDto) this.itemSearchCache.get(item);
|
||||
if (x == null) {
|
||||
Iterator var3 = this.protocols.iterator();
|
||||
|
||||
while(var3.hasNext()) {
|
||||
OpcItemDto dto = (OpcItemDto)var3.next();
|
||||
while (var3.hasNext()) {
|
||||
OpcItemDto dto = (OpcItemDto) var3.next();
|
||||
if (StrUtil.equals(item, dto.getItem_code())) {
|
||||
x = dto;
|
||||
this.itemSearchCache.put(item, dto);
|
||||
@@ -80,18 +81,28 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void runOld() {
|
||||
while(true) {
|
||||
while (true) {
|
||||
start:
|
||||
try {
|
||||
if (this.group != null) {
|
||||
group.clear();
|
||||
group.remove();
|
||||
log.trace("{} 清理group{}");
|
||||
}
|
||||
if (this.server != null) {
|
||||
server.disconnect();
|
||||
log.trace("{} server{}");
|
||||
}
|
||||
|
||||
this.server = OpcServerUtl.getServerWithOutException(this.OpcServer.getOpc_host(), this.OpcServer.getCls_id(), this.OpcServer.getUser(), this.OpcServer.getPassword(), this.OpcServer.getDomain());
|
||||
this.server.addStateListener(this);
|
||||
Group group = this.server.addGroup();
|
||||
group = this.server.addGroup();
|
||||
List<String> itemsString = new ArrayList();
|
||||
Iterator var3 = this.protocols.iterator();
|
||||
|
||||
while(var3.hasNext()) {
|
||||
OpcItemDto protocol = (OpcItemDto)var3.next();
|
||||
while (var3.hasNext()) {
|
||||
OpcItemDto protocol = (OpcItemDto) var3.next();
|
||||
String item = protocol.getItem_code();
|
||||
itemsString.add(item);
|
||||
}
|
||||
@@ -101,8 +112,8 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC
|
||||
StringBuilder err_message = new StringBuilder();
|
||||
Iterator var6 = itemsString.iterator();
|
||||
|
||||
while(var6.hasNext()) {
|
||||
String string = (String)var6.next();
|
||||
while (var6.hasNext()) {
|
||||
String string = (String) var6.next();
|
||||
|
||||
try {
|
||||
Item item = group.addItem(string);
|
||||
@@ -137,13 +148,13 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC
|
||||
UnifiedDataAccessor accessor_value = UnifiedDataAccessorFactory.getAccessor(OpcConfig.udw_opc_value_key);
|
||||
boolean time_out = false;
|
||||
|
||||
while(DeviceOpcSynchronizeAutoRun.isRun) {
|
||||
while (DeviceOpcSynchronizeAutoRun.isRun) {
|
||||
long begin = System.currentTimeMillis();
|
||||
if (log.isTraceEnabled()) {
|
||||
log.trace("{} 开始记时{}", tag, DateUtil.now());
|
||||
}
|
||||
|
||||
Map<Item, ItemState> itemStatus = group.read(true, (Item[])itemsMap.values().toArray(new Item[0]));
|
||||
Map<Item, ItemState> itemStatus = group.read(true, (Item[]) itemsMap.values().toArray(new Item[0]));
|
||||
long end = System.currentTimeMillis();
|
||||
long duration = end - begin;
|
||||
if (log.isTraceEnabled()) {
|
||||
@@ -164,9 +175,9 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC
|
||||
Set<Item> items = itemStatus.keySet();
|
||||
Iterator var18 = items.iterator();
|
||||
|
||||
while(var18.hasNext()) {
|
||||
Item item = (Item)var18.next();
|
||||
ItemState itemState = (ItemState)itemStatus.get(item);
|
||||
while (var18.hasNext()) {
|
||||
Item item = (Item) var18.next();
|
||||
ItemState itemState = (ItemState) itemStatus.get(item);
|
||||
Object value = OpcUtl.getValue(item, itemState);
|
||||
if (value != null) {
|
||||
valueAllNotNull = true;
|
||||
@@ -194,7 +205,7 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC
|
||||
log.trace("{} 计算完成耗时{}", tag, end - begin);
|
||||
}
|
||||
|
||||
ThreadUtl.sleep((long)OpcConfig.synchronized_millisecond);
|
||||
ThreadUtl.sleep((long) OpcConfig.synchronized_millisecond);
|
||||
if (this.error_num != 0) {
|
||||
this.error_num = 0;
|
||||
this.message = null;
|
||||
@@ -204,35 +215,27 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC
|
||||
int random = (new Random()).nextInt(10) + 1;
|
||||
random *= 1000;
|
||||
if (this.all_null < 3) {
|
||||
if (log.isWarnEnabled()) {
|
||||
log.warn("{} 所有内容都为空,暂定{}s", tag, 5000 + random);
|
||||
}
|
||||
|
||||
ThreadUtl.sleep((long)(5000 + random));
|
||||
log.warn("{} 所有内容都为空, all_null:{} ,暂定{}s", tag, all_null,5000 + random);
|
||||
ThreadUtl.sleep((long) (5000 + random));
|
||||
} else if (this.all_null < 6) {
|
||||
if (log.isWarnEnabled()) {
|
||||
log.warn("{} 所有内容都为空,暂定{}s", tag, 30000 + random);
|
||||
}
|
||||
|
||||
ThreadUtl.sleep((long)(30000 + random));
|
||||
log.warn("{} 所有内容都为空, all_null:{} ,暂定{}s", tag, all_null,30000 + random);
|
||||
ThreadUtl.sleep((long) (1000 + random));
|
||||
log.warn("重新创建server");
|
||||
break start;
|
||||
} else if (this.all_null < 12) {
|
||||
if (log.isWarnEnabled()) {
|
||||
log.warn("{} 所有内容都为空,暂定{}ms", tag, '\uea60' + random);
|
||||
}
|
||||
|
||||
ThreadUtl.sleep((long)('\uea60' + random));
|
||||
log.warn("{} 所有内容都为空, all_null:{} ,暂定{}ms", tag, all_null, '\uea60' + random);
|
||||
ThreadUtl.sleep((long) ('\uea60' + random));
|
||||
} else {
|
||||
if (log.isWarnEnabled()) {
|
||||
log.warn("{} 所有内容都为空,暂定{}ms", tag, 120000 + random);
|
||||
}
|
||||
|
||||
ThreadUtl.sleep((long)(120000 + random));
|
||||
log.warn("{} 所有内容都为空, all_null:{} ,暂定{}ms", tag, all_null, 120000 + random);
|
||||
ThreadUtl.sleep((long) (120000 + random));
|
||||
}
|
||||
|
||||
++this.all_null;
|
||||
} else {
|
||||
this.all_null = 0;
|
||||
}
|
||||
// break start;
|
||||
|
||||
}
|
||||
|
||||
log.warn("opc线程停止。。。");
|
||||
@@ -256,17 +259,16 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC
|
||||
log.warn(error_message, var27);
|
||||
}
|
||||
|
||||
ThreadUtl.sleep((long)(OpcConfig.synchronized_exception_wait_second * 1000));
|
||||
ThreadUtl.sleep((long) (OpcConfig.synchronized_exception_wait_second * 1000));
|
||||
++this.error_num;
|
||||
if (this.error_num > 3 && !StrUtil.equals(this.message, error_message)) {
|
||||
this.message = error_message;
|
||||
this.message = error_message;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void runNew() {
|
||||
Async20Access accessor = null;
|
||||
|
||||
@@ -363,19 +365,10 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC
|
||||
UnifiedDataAccessor accessor_value = UnifiedDataAccessorFactory.getAccessor(OpcConfig.udw_opc_value_key);
|
||||
accessor_value.setValue(itemId, value);
|
||||
|
||||
// if (value != null) {
|
||||
// if (log.isTraceEnabled()) {
|
||||
// log.trace("Item {} new value: {}, Timestamp: {}", new Object[]{itemId, itemState.getValue(), itemState.getTimestamp().getTime()});
|
||||
// }
|
||||
// } else if (log.isInfoEnabled()) {
|
||||
// log.info("Item {} new value: {}, Timestamp: {}, Quality: {}", new Object[]{itemId, itemState.getValue(), itemState.getTimestamp().getTime(), itemState.getQuality()});
|
||||
// }
|
||||
log.trace("Item {} new value: {}, Timestamp: {}", new Object[]{itemId, itemState.getValue(), itemState.getTimestamp().getTime()});
|
||||
|
||||
OpcItemDto itemDto = this.getItem(itemId);
|
||||
// if (Boolean.TRUE.equals(itemDto.getNeed_log())) {
|
||||
// this.logItemChanged(itemId, accessor_value, value, itemDto);
|
||||
// }
|
||||
|
||||
this.logItemChanged(itemId, accessor_value, value, itemDto);
|
||||
|
||||
} catch (Exception var7) {
|
||||
@@ -396,11 +389,14 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC
|
||||
Object obj = accessor_value.getValue(relate);
|
||||
sb.append("key:" + relate + "value:" + obj + ";");
|
||||
}
|
||||
log.warn("设备:{}信号{}变更从{}->{};信号快照:{}", new Object[]{itemDto.getDevice_code(),itemId, his, value, sb});
|
||||
// this.businessLogger.setResource(itemDto.getDevice_code(), itemDto.getDevice_name()).log("信号{}变更从{}->{};信号快照:{}", new Object[]{itemId, his, value, sb});
|
||||
if(!itemId.endsWith("heartbeat") || !itemId.endsWith("time") ) {
|
||||
log.warn("设备:{}信号{}变更从{}->{};信号快照:{}", new Object[]{itemDto.getDevice_code(), itemId, his, value, sb});
|
||||
}
|
||||
|
||||
} else {
|
||||
log.warn("设备:{}信号{}变更从{}->{};信号快照:{}", new Object[]{itemDto.getDevice_code(),itemId, his, value});
|
||||
// this.businessLogger.setResource(itemDto.getDevice_code(), itemDto.getDevice_name()).log("信号{}变更从{}->{}", new Object[]{itemId, his, value});
|
||||
if(!itemId.endsWith("heartbeat") || !itemId.endsWith("time") ) {
|
||||
log.warn("设备:{}信号{}变更从{}->{};信号快照:{}", new Object[]{itemDto.getDevice_code(), itemId, his, value});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ public interface OpcServerService {
|
||||
|
||||
void reload();
|
||||
|
||||
Group getServer(String var1);
|
||||
Group getServer(String var1) throws Exception;
|
||||
|
||||
void writeInteger(String var1, ItemValue... var2);
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.acs.opc;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import org.jinterop.dcom.common.JIException;
|
||||
import org.nl.acs.device_driver.driver.ItemValue;
|
||||
import org.nl.exception.WDKException;
|
||||
@@ -65,79 +66,86 @@ public class OpcServerServiceImpl implements OpcServerService, ApplicationAutoIn
|
||||
this.opcServerManageDtos = Collections.synchronizedMap(this.opcServerManageDtos);
|
||||
}
|
||||
|
||||
public synchronized Group getServer(String code) {
|
||||
Group group = null;
|
||||
group = (Group) this.groups.get(code);
|
||||
if (group != null) {
|
||||
try {
|
||||
if (group.isActive()) {
|
||||
return group;
|
||||
public synchronized Group getServer(String code) throws Exception {
|
||||
synchronized(this.buildLock(code)) {
|
||||
Group group = null;
|
||||
group = (Group)this.groups.get(code);
|
||||
if (group != null) {
|
||||
label68: {
|
||||
Group var10000;
|
||||
try {
|
||||
if (!group.isActive()) {
|
||||
break label68;
|
||||
}
|
||||
|
||||
var10000 = group;
|
||||
} catch (JIException var14) {
|
||||
log.error(code, var14);
|
||||
break label68;
|
||||
}
|
||||
|
||||
return var10000;
|
||||
}
|
||||
} catch (JIException var9) {
|
||||
var9.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
Server server = (Server) this.servers.get(code);
|
||||
boolean needcreate = false;
|
||||
if (server == null) {
|
||||
needcreate = true;
|
||||
} else {
|
||||
try {
|
||||
group = server.findGroup(OpcConfig.opc_server_default_group);
|
||||
} catch (UnknownHostException
|
||||
| JIException
|
||||
| UnknownGroupException
|
||||
| NotConnectedException
|
||||
| IllegalArgumentException var8) {
|
||||
var8.printStackTrace();
|
||||
Server server = (Server)this.servers.get(code);
|
||||
boolean needcreate = false;
|
||||
String groupName = code;
|
||||
if (server == null) {
|
||||
needcreate = true;
|
||||
} else {
|
||||
try {
|
||||
group = server.findGroup(groupName);
|
||||
} catch (UnknownHostException | JIException | UnknownGroupException | NotConnectedException | IllegalArgumentException var13) {
|
||||
log.error(code, var13);
|
||||
needcreate = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (needcreate) {
|
||||
OpcServerManageDto dto = (OpcServerManageDto)this.opcServerManageDtos.get(code);
|
||||
if (dto == null) {
|
||||
throw new Exception(code + "{} 不存在");
|
||||
}
|
||||
|
||||
if (server == null) {
|
||||
server = OpcServerUtl.getServerWithOutException(dto.getOpc_host(), StrUtil.trim(dto.getCls_id()), dto.getUser(), dto.getPassword(), StrUtil.trim(dto.getDomain()));
|
||||
}
|
||||
|
||||
try {
|
||||
group = server.addGroup(groupName);
|
||||
} catch (Exception var12) {
|
||||
this.clearServer(code);
|
||||
ThreadUtl.sleep(5000L);
|
||||
log.warn("获取opc出错重新获取", code, var12);
|
||||
server = OpcServerUtl.getServerWithOutException(dto.getOpc_host(), StrUtil.trim(dto.getCls_id()), dto.getUser(), dto.getPassword(), StrUtil.trim(dto.getDomain()));
|
||||
|
||||
try {
|
||||
group = server.addGroup(groupName);
|
||||
} catch (Exception var11) {
|
||||
throw new Exception(var12);
|
||||
}
|
||||
}
|
||||
|
||||
this.servers.put(code, server);
|
||||
this.groups.put(code, group);
|
||||
}
|
||||
|
||||
return group;
|
||||
}
|
||||
|
||||
if (needcreate) {
|
||||
OpcServerManageDto dto = (OpcServerManageDto) this.opcServerManageDtos.get(code);
|
||||
if (dto == null) {
|
||||
throw new WDKException("code 不存在");
|
||||
}
|
||||
|
||||
server = OpcServerUtl.getServerWithOutException(
|
||||
dto.getOpc_host(),
|
||||
dto.getCls_id(),
|
||||
dto.getUser(),
|
||||
dto.getPassword(),
|
||||
dto.getDomain());
|
||||
|
||||
// server = OpcServerUtl.getServerWithOutException(this.OpcServer.getOpc_host(), this.OpcServer.getCls_id(), this.OpcServer.getUser(), this.OpcServer.getPassword(), this.OpcServer.getDomain());
|
||||
|
||||
|
||||
try {
|
||||
group = server.addGroup(OpcConfig.opc_server_default_group);
|
||||
} catch (Exception var7) {
|
||||
throw new WDKException(var7);
|
||||
}
|
||||
|
||||
this.servers.put(code, server);
|
||||
this.groups.put(code, group);
|
||||
}
|
||||
|
||||
return group;
|
||||
}
|
||||
|
||||
public synchronized void clearServer(String code) {
|
||||
try {
|
||||
Server server = (Server) this.servers.get(code);
|
||||
if (server!=null){
|
||||
public void clearServer(String code) {
|
||||
synchronized(this.buildLock(code)) {
|
||||
try {
|
||||
Server server = (Server)this.servers.get(code);
|
||||
server.disconnect();
|
||||
} catch (Exception var5) {
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error("清理server异常,",e.getMessage());
|
||||
this.servers.remove(code);
|
||||
this.groups.remove(code);
|
||||
}
|
||||
|
||||
this.servers.remove(code);
|
||||
this.groups.remove(code);
|
||||
}
|
||||
|
||||
public void writeInteger(String code, ItemValue... values) {
|
||||
@@ -148,7 +156,17 @@ public class OpcServerServiceImpl implements OpcServerService, ApplicationAutoIn
|
||||
this.clearServer(code);
|
||||
log.warn("写入出错opc server {} 重新加载", code, var4);
|
||||
ThreadUtl.sleep(5000L);
|
||||
throw var4;
|
||||
}
|
||||
}
|
||||
|
||||
private String buildLock(String key) {
|
||||
if (StrUtil.isEmpty(key)) {
|
||||
key = "";
|
||||
}
|
||||
StringBuilder builder = new StringBuilder();
|
||||
builder.append("OpcServerService.");
|
||||
builder.append(key);
|
||||
String lock = builder.toString().intern();
|
||||
return lock;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -163,15 +163,12 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
}
|
||||
logServer.deviceExecuteLog("ndc", "","","接收agv上报设备:" + device_code);
|
||||
StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver;
|
||||
StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver;
|
||||
StandardCoveyorControlDeviceDriver standardCoveyorControlDeviceDriver;
|
||||
StandardStorageDeviceDriver standardStorageDeviceDriver;
|
||||
StandardAutodoorDeviceDriver standardAutodoorDeviceDriver;
|
||||
StandardEmptyPalletSiteDeviceDriver standardEmptyPalletSiteDeviceDriver;
|
||||
LnshStationDeviceDriver lnshStationDeviceDriver;
|
||||
LnshLaminatingMachineDeviceDriver lnshLaminatingMachineDeviceDriver;
|
||||
LnshPalletizingManipulatorSiteDeviceDriver lnshPalletizingManipulatorSiteDeviceDriver;
|
||||
LnshPalletizingManipulatorDeviceDriver lnshPalletizingManipulatorDeviceDriver;
|
||||
StandardOrdinarySiteDeviceDriver standardOrdinarySiteDeviceDriver;
|
||||
int type = Integer.parseInt(acsConfigService.findConfigFromCache().get(AcsConfig.BUSINESSTYPE));
|
||||
|
||||
try {
|
||||
@@ -241,9 +238,18 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
&& (lnshStationDeviceDriver.getIo_action() == 3 || lnshStationDeviceDriver.getIo_action() == 1)) {
|
||||
inst.setExecute_status("1");
|
||||
instructionService.update(inst);
|
||||
lnshStationDeviceDriver.writing(5);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
try {
|
||||
lnshStationDeviceDriver.writing(5);
|
||||
} catch (Exception e) {
|
||||
log.info("下发电气信号失败:" + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
if(lnshStationDeviceDriver.getTo_command() == 5 ){
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV请求取货下发命令不等于5,无法反馈");
|
||||
}
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV请求取货设备{}无货,无法反馈");
|
||||
}
|
||||
@@ -255,9 +261,19 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
&& (lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 3 || lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 1)) {
|
||||
inst.setExecute_status("1");
|
||||
instructionService.update(inst);
|
||||
lnshPalletizingManipulatorSiteDeviceDriver.writing(12);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
try {
|
||||
lnshPalletizingManipulatorSiteDeviceDriver.writing(12);
|
||||
} catch (Exception e) {
|
||||
log.info("下发电气信号失败:" + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
if(lnshPalletizingManipulatorSiteDeviceDriver.getTo_command() == 12 ){
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV请求取货下发命令不等于12,无法反馈");
|
||||
}
|
||||
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV请求取货设备{}无货,无法反馈");
|
||||
}
|
||||
@@ -269,9 +285,18 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
&& (lnshPalletizingManipulatorDeviceDriver.getIo_action() == 3 || lnshPalletizingManipulatorDeviceDriver.getIo_action() == 1)) {
|
||||
inst.setExecute_status("1");
|
||||
instructionService.update(inst);
|
||||
lnshPalletizingManipulatorDeviceDriver.writing(12);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
try {
|
||||
lnshPalletizingManipulatorDeviceDriver.writing(12);
|
||||
} catch (Exception e) {
|
||||
log.info("下发电气信号失败:" + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
if(lnshPalletizingManipulatorDeviceDriver.getTo_command() == 12 ){
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV请求取货下发命令不等于12,无法反馈");
|
||||
}
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV请求取货设备{}无货,无法反馈");
|
||||
}
|
||||
@@ -338,11 +363,16 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
if (device.getDeviceDriver() instanceof LnshStationDeviceDriver) {
|
||||
lnshStationDeviceDriver = (LnshStationDeviceDriver) device.getDeviceDriver();
|
||||
if (lnshStationDeviceDriver.getMove() == 0 && (lnshStationDeviceDriver.getIo_action() == 3 || lnshStationDeviceDriver.getIo_action() == 2)) {
|
||||
inst.setExecute_status("5");
|
||||
instructionService.update(inst);
|
||||
lnshStationDeviceDriver.writing(2);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
if(lnshStationDeviceDriver.getTo_command() == 2 ){
|
||||
inst.setExecute_status("5");
|
||||
instructionService.update(inst);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV取货完成请求离开设备下发命令不等于2,无法反馈");
|
||||
}
|
||||
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV取货完成请求离开设备{}有货,无法反馈");
|
||||
}
|
||||
@@ -351,11 +381,23 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
if (device.getDeviceDriver() instanceof LnshPalletizingManipulatorSiteDeviceDriver) {
|
||||
lnshPalletizingManipulatorSiteDeviceDriver = (LnshPalletizingManipulatorSiteDeviceDriver) device.getDeviceDriver();
|
||||
if (lnshPalletizingManipulatorSiteDeviceDriver.getMove() == 0 && (lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 3 || lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 2)) {
|
||||
inst.setExecute_status("5");
|
||||
instructionService.update(inst);
|
||||
lnshPalletizingManipulatorSiteDeviceDriver.writing(10);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
|
||||
try {
|
||||
lnshPalletizingManipulatorSiteDeviceDriver.writing(10);
|
||||
} catch (Exception e) {
|
||||
log.info("下发电气信号失败:" + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
if(lnshPalletizingManipulatorSiteDeviceDriver.getTo_command() == 10 ){
|
||||
inst.setExecute_status("5");
|
||||
instructionService.update(inst);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV取货完成请求离开设备下发命令不等于10,无法反馈");
|
||||
}
|
||||
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV取货完成请求离开设备{}有货,无法反馈");
|
||||
}
|
||||
@@ -367,28 +409,27 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
if (lnshPalletizingManipulatorDeviceDriver.getMove() == 0 && (lnshPalletizingManipulatorDeviceDriver.getIo_action() == 3 || lnshPalletizingManipulatorDeviceDriver.getIo_action() == 2)) {
|
||||
inst.setExecute_status("5");
|
||||
instructionService.update(inst);
|
||||
lnshPalletizingManipulatorDeviceDriver.writing(10);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
try {
|
||||
lnshPalletizingManipulatorDeviceDriver.writing(10);
|
||||
} catch (Exception e) {
|
||||
log.info("下发电气信号失败:" + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
if(lnshPalletizingManipulatorDeviceDriver.getTo_command() == 10 ){
|
||||
inst.setExecute_status("5");
|
||||
instructionService.update(inst);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV取货完成请求离开设备下发命令不等于10,无法反馈");
|
||||
}
|
||||
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV取货完成请求离开设备{}有货,无法反馈");
|
||||
}
|
||||
}
|
||||
|
||||
// if(!inst.getTask_code().startsWith("-")) {
|
||||
// //反馈wms系统动作完成
|
||||
// inst.setFinish_type("1");
|
||||
// instructionService.update(inst);
|
||||
// JSONObject feedjo = new JSONObject();
|
||||
// feedjo.put("status","1");
|
||||
// feedjo.put("device_code",device_code);
|
||||
// feedjo.put("vehicle_code",inst.getVehicle_code());
|
||||
// feedjo.put("task_code",inst.getTask_code());
|
||||
// JSONArray feedja = JSONArray.parseArray(String.valueOf(feedjo));
|
||||
// acsToWmsService.feedbackActionStatusToWms(feedja);
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
// 到达扫码点
|
||||
else if (phase == 0x06) {
|
||||
@@ -404,12 +445,31 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
if (lnshLaminatingMachineDeviceDriver.getMode() != 0 && lnshLaminatingMachineDeviceDriver.getMode() != 6) {
|
||||
inst.setExecute_status("9");
|
||||
instructionService.update(inst);
|
||||
lnshLaminatingMachineDeviceDriver.writing("to_task", inst.getInstruction_code());
|
||||
lnshLaminatingMachineDeviceDriver.writing(1);
|
||||
try {
|
||||
lnshLaminatingMachineDeviceDriver.writing("to_task", inst.getInstruction_code());
|
||||
lnshLaminatingMachineDeviceDriver.writing(1);
|
||||
} catch (Exception e) {
|
||||
log.info("下发电气信号失败:" + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
//如果组盘绑定条码成功,就允许agv离开
|
||||
if (lnshLaminatingMachineDeviceDriver.getMode() == 6 && lnshLaminatingMachineDeviceDriver.getResult()) {
|
||||
lnshLaminatingMachineDeviceDriver.writing(6);
|
||||
try {
|
||||
lnshLaminatingMachineDeviceDriver.writing(6);
|
||||
} catch (Exception e) {
|
||||
log.info("下发电气信号失败:" + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
// if(lnshLaminatingMachineDeviceDriver.getTo_command() == 6 ){
|
||||
// inst.setExecute_status("5");
|
||||
// instructionService.update(inst);
|
||||
// data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
// flag = true;
|
||||
// } else {
|
||||
// logServer.deviceExecuteLog("ndc","","","组盘绑定条码成功发命令不等于6,无法反馈");
|
||||
// }
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
}
|
||||
@@ -458,10 +518,23 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
lnshStationDeviceDriver = (LnshStationDeviceDriver) device.getDeviceDriver();
|
||||
if (lnshStationDeviceDriver.getMode() != 0 && lnshStationDeviceDriver.getMove() == 0
|
||||
&& (lnshStationDeviceDriver.getIo_action() == 3 || lnshStationDeviceDriver.getIo_action() == 1)) {
|
||||
inst.setExecute_status("3");
|
||||
instructionService.update(inst);
|
||||
lnshStationDeviceDriver.writing(6);
|
||||
lnshStationDeviceDriver.writing("to_task",inst.getInstruction_code());
|
||||
|
||||
try {
|
||||
lnshStationDeviceDriver.writing(6);
|
||||
lnshStationDeviceDriver.writing("to_task",inst.getInstruction_code());
|
||||
} catch (Exception e) {
|
||||
log.info("下发电气信号失败:" + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
if(lnshStationDeviceDriver.getTo_command() == 6 ){
|
||||
inst.setExecute_status("3");
|
||||
instructionService.update(inst);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV请求放货设备下发命令不等于6,无法反馈");
|
||||
}
|
||||
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
} else {
|
||||
@@ -473,11 +546,20 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
lnshPalletizingManipulatorSiteDeviceDriver = (LnshPalletizingManipulatorSiteDeviceDriver) device.getDeviceDriver();
|
||||
if (lnshPalletizingManipulatorSiteDeviceDriver.getMode() != 0 && lnshPalletizingManipulatorSiteDeviceDriver.getMove() == 0
|
||||
&& (lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 3 || lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 1)) {
|
||||
inst.setExecute_status("3");
|
||||
instructionService.update(inst);
|
||||
lnshPalletizingManipulatorSiteDeviceDriver.writing(13);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
try {
|
||||
lnshPalletizingManipulatorSiteDeviceDriver.writing(13);
|
||||
} catch (Exception e) {
|
||||
log.info("下发电气信号失败:" + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
if(lnshPalletizingManipulatorSiteDeviceDriver.getTo_command() == 13 ){
|
||||
inst.setExecute_status("3");
|
||||
instructionService.update(inst);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV请求放货设备下发命令不等于13,无法反馈");
|
||||
}
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV请求放货设备{}有货,无法反馈");
|
||||
}
|
||||
@@ -487,11 +569,20 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
lnshPalletizingManipulatorDeviceDriver = (LnshPalletizingManipulatorDeviceDriver) device.getDeviceDriver();
|
||||
if (lnshPalletizingManipulatorDeviceDriver.getMode() != 0 && lnshPalletizingManipulatorDeviceDriver.getMove() == 0
|
||||
&& (lnshPalletizingManipulatorDeviceDriver.getIo_action() == 3 || lnshPalletizingManipulatorDeviceDriver.getIo_action() == 1)) {
|
||||
inst.setExecute_status("3");
|
||||
instructionService.update(inst);
|
||||
lnshPalletizingManipulatorDeviceDriver.writing(13);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
try {
|
||||
lnshPalletizingManipulatorDeviceDriver.writing(13);
|
||||
} catch (Exception e) {
|
||||
log.info("下发电气信号失败:" + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
if(lnshPalletizingManipulatorDeviceDriver.getTo_command() == 13 ){
|
||||
inst.setExecute_status("3");
|
||||
instructionService.update(inst);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV请求放货设备下发命令不等于13,无法反馈");
|
||||
}
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV请求放货设备{}有货,无法反馈");
|
||||
}
|
||||
@@ -540,11 +631,21 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
lnshStationDeviceDriver = (LnshStationDeviceDriver) device.getDeviceDriver();
|
||||
if (lnshStationDeviceDriver.getMove() == 1
|
||||
&& (lnshStationDeviceDriver.getIo_action() == 3 || lnshStationDeviceDriver.getIo_action() == 2)) {
|
||||
inst.setExecute_status("6");
|
||||
instructionService.update(inst);
|
||||
lnshStationDeviceDriver.writing(3);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
|
||||
try {
|
||||
lnshStationDeviceDriver.writing(3);
|
||||
} catch (Exception e) {
|
||||
log.info("下发电气信号失败:" + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
if(lnshStationDeviceDriver.getTo_command() == 3 ){
|
||||
inst.setExecute_status("6");
|
||||
instructionService.update(inst);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV放货完成请求离开下发命令不等于3,无法反馈");
|
||||
}
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV放货完成请求离开设备{}无货,无法反馈");
|
||||
}
|
||||
@@ -555,11 +656,21 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
lnshPalletizingManipulatorSiteDeviceDriver = (LnshPalletizingManipulatorSiteDeviceDriver) device.getDeviceDriver();
|
||||
if (lnshPalletizingManipulatorSiteDeviceDriver.getMove() == 1
|
||||
&& (lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 3 || lnshPalletizingManipulatorSiteDeviceDriver.getIo_action() == 2)) {
|
||||
inst.setExecute_status("6");
|
||||
instructionService.update(inst);
|
||||
lnshPalletizingManipulatorSiteDeviceDriver.writing(11);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
try {
|
||||
lnshPalletizingManipulatorSiteDeviceDriver.writing(11);
|
||||
} catch (Exception e) {
|
||||
log.info("下发电气信号失败:" + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
if(lnshPalletizingManipulatorSiteDeviceDriver.getTo_command() == 11 ){
|
||||
inst.setExecute_status("6");
|
||||
instructionService.update(inst);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV放货完成请求离开下发命令不等于11,无法反馈");
|
||||
}
|
||||
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV放货完成请求离开设备{}无货,无法反馈");
|
||||
}
|
||||
@@ -570,11 +681,20 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
|
||||
lnshPalletizingManipulatorDeviceDriver = (LnshPalletizingManipulatorDeviceDriver) device.getDeviceDriver();
|
||||
if (lnshPalletizingManipulatorDeviceDriver.getMove() == 1
|
||||
&& (lnshPalletizingManipulatorDeviceDriver.getIo_action() == 3 || lnshPalletizingManipulatorDeviceDriver.getIo_action() == 2)) {
|
||||
inst.setExecute_status("6");
|
||||
instructionService.update(inst);
|
||||
lnshPalletizingManipulatorDeviceDriver.writing(11);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
try {
|
||||
lnshPalletizingManipulatorDeviceDriver.writing(11);
|
||||
} catch (Exception e) {
|
||||
log.info("下发电气信号失败:" + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
if(lnshPalletizingManipulatorDeviceDriver.getTo_command() == 11 ){
|
||||
inst.setExecute_status("6");
|
||||
instructionService.update(inst);
|
||||
data = AgvService.sendAgvOneModeInst(phase, index, 0);
|
||||
flag = true;
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV放货完成请求离开下发命令不等于11,无法反馈");
|
||||
}
|
||||
} else {
|
||||
logServer.deviceExecuteLog("ndc","","","AGV放货完成请求离开设备{}无货,无法反馈");
|
||||
}
|
||||
|
||||
@@ -115,6 +115,7 @@ import rljn_package_palletSplit_manipulator from '@/views/acs/device/driver/lnsh
|
||||
import standard_rgv from '@/views/acs/device/driver/standard_rgv'
|
||||
import lnsh_palletizing_manipulator_site from '@/views/acs/device/driver/lnsh/lnsh_palletizing_manipulator_site'
|
||||
import lnsh_one_rgv from '@/views/acs/device/driver/lnsh/lnsh_one_rgv'
|
||||
import lnsh_package_palletizing_manipulator_site from '@/views/acs/device/driver/lnsh/lnsh_package_palletizing_manipulator_site'
|
||||
|
||||
export default {
|
||||
name: 'DeviceConfig',
|
||||
@@ -126,7 +127,7 @@ export default {
|
||||
standard_photoelectric_inspect_site, ndxy_special, hailiang_labeling, ndxy_special_two, whxr_storage_conveyor, whxr_ball_mill, whxr_spary_tower, whxr_weight,
|
||||
electric_fence, lnsh_palletizing_manipulator, lnsh_kiln_lane, lnsh_package_pallet_manipulator, lnsh_labeling_machine, lnsh_split_manipulator, lnsh_rgv,
|
||||
lnsh_station, lnsh_Laminating_machine, rljn_package_palletSplit_manipulator, standard_rgv, lnsh_palletizing_manipulator_site,
|
||||
lnsh_one_rgv },
|
||||
lnsh_one_rgv, lnsh_package_palletizing_manipulator_site },
|
||||
dicts: ['device_type'],
|
||||
mixins: [crud],
|
||||
data() {
|
||||
|
||||
@@ -0,0 +1,528 @@
|
||||
<template>
|
||||
<!---嘉耐-包装码垛机械手工位-->
|
||||
<div>
|
||||
|
||||
<el-card class="box-card" shadow="never">
|
||||
<div slot="header" class="clearfix">
|
||||
<span class="role-span">设备协议:</span>
|
||||
</div>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
OpcServer:
|
||||
<el-select
|
||||
v-model="opc_id"
|
||||
placeholder="无"
|
||||
clearable
|
||||
filterable
|
||||
@change="changeOpc"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dataOpcservers"
|
||||
:key="item.opc_id"
|
||||
:label="item.opc_name"
|
||||
:value="item.opc_id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
PLC:
|
||||
<el-select
|
||||
v-model="plc_id"
|
||||
placeholder="无"
|
||||
clearable
|
||||
@change="changePlc"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dataOpcPlcs"
|
||||
:key="item.plc_id"
|
||||
:label="item.plc_name"
|
||||
:value="item.plc_id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
</el-card>
|
||||
|
||||
<el-card class="box-card" shadow="never">
|
||||
<div slot="header" class="clearfix">
|
||||
<span class="role-span">输送系统:</span>
|
||||
</div>
|
||||
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="电气调度号" label-width="150px">
|
||||
<el-input v-model="form.OPCServer" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<el-card class="box-card" shadow="never">
|
||||
<div slot="header" class="clearfix">
|
||||
<span class="role-span">指令相关:</span>
|
||||
</div>
|
||||
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="检验有货">
|
||||
<el-switch v-model="form.inspect_in_stocck" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="忽视取货校验" label-width="150px">
|
||||
<el-switch v-model="form.ignore_pickup_check" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="忽视放货校验" label-width="150px">
|
||||
<el-switch v-model="form.ignore_release_check" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="申请任务">
|
||||
<el-switch v-model="form.apply_task" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="手动生成任务" label-width="150px">
|
||||
<el-switch v-model="form.manual_create_task" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="申请空盘" prop="device_code">
|
||||
<el-select
|
||||
v-model="form.apply_empty"
|
||||
filterable
|
||||
multiple
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in deviceList"
|
||||
:key="item.device_code"
|
||||
:label="item.device_name"
|
||||
:value="item.device_code"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<el-card class="box-card" shadow="never">
|
||||
<div slot="header" class="clearfix">
|
||||
<span class="role-span">AGV相关:</span>
|
||||
</div>
|
||||
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="取货">
|
||||
<el-switch v-model="form.pickup" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="放货">
|
||||
<el-switch v-model="form.is_release" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<el-card class="box-card" shadow="never">
|
||||
<div slot="header" class="clearfix">
|
||||
<span class="role-span">PLC读取字段:</span>
|
||||
</div>
|
||||
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
|
||||
<el-table
|
||||
v-loading="false"
|
||||
:data="data1"
|
||||
:max-height="550"
|
||||
size="small"
|
||||
style="width: 100%;margin-bottom: 15px"
|
||||
>
|
||||
|
||||
<el-table-column prop="name" label="用途" />
|
||||
<el-table-column prop="code" label="别名要求" />
|
||||
<el-table-column prop="db" label="DB块">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="data1[scope.$index].db" size="mini" class="edit-input" @input="finishReadEdit(data1[scope.$index])" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="dbr_value">
|
||||
<template slot="header">
|
||||
<el-link type="primary" :underline="false" @click.native="test_read1()">测试读</el-link>
|
||||
</template>
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="data1[scope.$index].dbr_value" size="mini" class="edit-input" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<el-card class="box-card" shadow="never">
|
||||
<div slot="header" class="clearfix">
|
||||
<span class="role-span">PLC写入字段:</span>
|
||||
</div>
|
||||
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="78px">
|
||||
<el-table
|
||||
v-loading="false"
|
||||
:data="data2"
|
||||
:max-height="550"
|
||||
size="small"
|
||||
style="width: 100%;margin-bottom: 15px"
|
||||
>
|
||||
|
||||
<el-table-column prop="name" label="用途" />
|
||||
<el-table-column prop="code" label="别名要求" />
|
||||
<el-table-column prop="db" label="DB块">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="data2[scope.$index].db" size="mini" class="edit-input" @input="finishWriteEdit(data2[scope.$index])" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="dbw_value">
|
||||
<template slot="header">
|
||||
<el-link type="primary" :underline="false" @click.native="test_write1()">测试写</el-link>
|
||||
</template>
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="data2[scope.$index].dbw_value" size="mini" class="edit-input" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
<el-card class="box-card" shadow="never">
|
||||
<div slot="header" class="clearfix">
|
||||
<span class="role-span" />
|
||||
<el-button
|
||||
:loading="false"
|
||||
icon="el-icon-check"
|
||||
size="mini"
|
||||
style="float: right; padding: 6px 9px"
|
||||
type="primary"
|
||||
@click="doSubmit"
|
||||
>保存
|
||||
</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
queryDriverConfig,
|
||||
updateConfig,
|
||||
testRead,
|
||||
testwrite
|
||||
} from '@/api/acs/device/driverConfig'
|
||||
import { selectOpcList } from '@/api/acs/device/opc'
|
||||
import { selectPlcList } from '@/api/acs/device/opcPlc'
|
||||
import { selectListByOpcID } from '@/api/acs/device/opcPlc'
|
||||
|
||||
import crud from '@/mixins/crud'
|
||||
import deviceCrud from '@/api/acs/device/device'
|
||||
|
||||
export default {
|
||||
name: 'LnshPalletizingManipulatorSite',
|
||||
mixins: [crud],
|
||||
props: {
|
||||
parentForm: {
|
||||
type: Object,
|
||||
require: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
device_code: '',
|
||||
device_id: '',
|
||||
plc_id: '',
|
||||
plc_code: '',
|
||||
opc_id: '',
|
||||
opc_code: '',
|
||||
configLoading: false,
|
||||
dataOpcservers: [],
|
||||
dataOpcPlcs: [],
|
||||
data1: [],
|
||||
data2: [],
|
||||
form: {
|
||||
inspect_in_stocck: true,
|
||||
ignore_pickup_check: true,
|
||||
ignore_release_check: true,
|
||||
apply_task: true,
|
||||
apply_empty: [],
|
||||
manual_create_task: true,
|
||||
is_pickup: true,
|
||||
is_release: true
|
||||
},
|
||||
rules: {}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.$nextTick(() => {
|
||||
// 从父表单获取设备编码
|
||||
this.device_id = this.$props.parentForm.device_id
|
||||
this.device_code = this.$props.parentForm.device_code
|
||||
queryDriverConfig(this.device_id, this.$props.parentForm.driver_code).then(data => {
|
||||
// 给表单赋值,并且属性不能为空
|
||||
if (data.form) {
|
||||
const arr = Object.keys(data.form)
|
||||
// 不为空
|
||||
if (arr.length > 0) {
|
||||
this.form = data.form
|
||||
}
|
||||
}
|
||||
|
||||
// 给表单赋值,并且属性不能为空
|
||||
if (data.parentForm) {
|
||||
const arr = Object.keys(data.parentForm)
|
||||
// 不为空
|
||||
if (arr.length > 0) {
|
||||
this.opc_code = data.parentForm.opc_code
|
||||
this.plc_code = data.parentForm.plc_code
|
||||
}
|
||||
}
|
||||
this.data1 = data.rs
|
||||
this.data2 = data.ws
|
||||
this.sliceItem()
|
||||
})
|
||||
selectPlcList().then(data => {
|
||||
this.dataOpcPlcs = data
|
||||
this.plc_id = this.$props.parentForm.opc_plc_id
|
||||
})
|
||||
selectOpcList().then(data => {
|
||||
this.dataOpcservers = data
|
||||
this.opc_id = this.$props.parentForm.opc_server_id
|
||||
})
|
||||
deviceCrud.selectDeviceList().then(data => {
|
||||
this.deviceList = data
|
||||
})
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
finishReadEdit(data) {
|
||||
// 编辑的是code列,并且值包含mode
|
||||
if (data.code.indexOf('mode') !== -1) {
|
||||
const dbValue = data.db
|
||||
// .之前的字符串
|
||||
const beforeStr = dbValue.match(/(\S*)\./)[1]
|
||||
// .之后的字符串
|
||||
const afterStr = dbValue.match(/\.(\S*)/)[1]
|
||||
// 取最后数字
|
||||
const endNumber = afterStr.substring(1)
|
||||
// 最后为非数字
|
||||
if (isNaN(parseInt(endNumber))) {
|
||||
return
|
||||
}
|
||||
for (const val in this.data1) {
|
||||
if (this.data1[val].code.indexOf('move') !== -1) {
|
||||
this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 1)
|
||||
}
|
||||
if (this.data1[val].code.indexOf('action') !== -1) {
|
||||
this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 2)
|
||||
}
|
||||
if (this.data1[val].code.indexOf('ioaction') !== -1) {
|
||||
this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 3)
|
||||
}
|
||||
if (this.data1[val].code.indexOf('error') !== -1) {
|
||||
this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 4)
|
||||
}
|
||||
if (this.data1[val].code.indexOf('task') !== -1) {
|
||||
this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 5)
|
||||
}
|
||||
if (this.data1[val].code.indexOf('weight') !== -1) {
|
||||
this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 9)
|
||||
}
|
||||
if (this.data1[val].code.indexOf('batch') !== -1) {
|
||||
this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 13)
|
||||
}
|
||||
if (this.data1[val].code.indexOf('specifications') !== -1) {
|
||||
this.data1[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 17) + '.50'
|
||||
}
|
||||
if (this.data1[val].code.indexOf('material') !== -1) {
|
||||
this.data1[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 273) + '.50'
|
||||
}
|
||||
if (this.data1[val].code.indexOf('barcode') !== -1) {
|
||||
this.data1[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 529) + '.50'
|
||||
}
|
||||
if (this.data1[val].code.indexOf('AlongSide') !== -1) {
|
||||
this.data1[val].db = beforeStr + '.' + 'W' + (parseInt(endNumber) + 785)
|
||||
}
|
||||
if (this.data1[val].code.indexOf('BshortSide') !== -1) {
|
||||
this.data1[val].db = beforeStr + '.' + 'W' + (parseInt(endNumber) + 787)
|
||||
}
|
||||
if (this.data1[val].code.indexOf('Htrapezoidal') !== -1) {
|
||||
this.data1[val].db = beforeStr + '.' + 'W' + (parseInt(endNumber) + 789)
|
||||
}
|
||||
if (this.data1[val].code.indexOf('Wthickness') !== -1) {
|
||||
this.data1[val].db = beforeStr + '.' + 'W' + (parseInt(endNumber) + 791)
|
||||
}
|
||||
if (this.data1[val].code.indexOf('status') !== -1) {
|
||||
this.data1[val].db = beforeStr + '.' + 'B' + (parseInt(endNumber) + 795)
|
||||
}
|
||||
if (this.data1[val].code.indexOf('unqualified_qty') !== -1) {
|
||||
this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 795)
|
||||
}
|
||||
if (this.data1[val].code.indexOf('encoder_qty') !== -1) {
|
||||
this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 799)
|
||||
}
|
||||
if (this.data1[val].code.indexOf('order_qty') !== -1) {
|
||||
this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 803)
|
||||
}
|
||||
if (this.data1[val].code.indexOf('order_No') !== -1) {
|
||||
this.data1[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 807) + '.50'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
finishWriteEdit(data) {
|
||||
// 编辑的是code列,并且值包含mode
|
||||
if (data.code.indexOf('to_command') !== -1) {
|
||||
const dbValue = data.db
|
||||
// .之前的字符串
|
||||
const beforeStr = dbValue.match(/(\S*)\./)[1]
|
||||
// .之后的字符串
|
||||
const afterStr = dbValue.match(/\.(\S*)/)[1]
|
||||
// 取最后数字
|
||||
const endNumber = afterStr.substring(1)
|
||||
// 最后为非数字
|
||||
if (isNaN(parseInt(endNumber))) {
|
||||
return
|
||||
}
|
||||
for (const val in this.data2) {
|
||||
if (this.data2[val].code.indexOf('to_target') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 2)
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_task') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 4)
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_barcode') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 8) + '.50'
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_error') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.' + 'B' + (parseInt(endNumber) + 264)
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_allow_pallet_qty') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.' + 'W' + (parseInt(endNumber) + 266)
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_material_type') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 268)
|
||||
}
|
||||
// if (this.data2[val].code.indexOf('to_material_code') !== -1) {
|
||||
// this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 272)
|
||||
// }
|
||||
if (this.data2[val].code.indexOf('to_order_qty') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 276)
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_product_code') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 280)
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_order_No') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 284) + '.50'
|
||||
}
|
||||
if (this.data2[val].code.indexOf('to_material_code') !== -1) {
|
||||
this.data2[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 540) + '.50'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
changeOpc(val) {
|
||||
this.dataOpcservers.forEach(item => {
|
||||
if (item.opc_id === val) {
|
||||
this.opc_code = item.opc_code
|
||||
}
|
||||
})
|
||||
|
||||
selectListByOpcID(val).then(data => {
|
||||
this.dataOpcPlcs = data
|
||||
this.plc_id = ''
|
||||
this.plc_code = ''
|
||||
if (this.dataOpcPlcs && this.dataOpcPlcs.length > 0) {
|
||||
this.plc_id = this.dataOpcPlcs[0].plc_id
|
||||
this.plc_code = this.dataOpcPlcs[0].plc_code
|
||||
}
|
||||
this.sliceItem()
|
||||
})
|
||||
},
|
||||
changePlc(val) {
|
||||
this.dataOpcPlcs.forEach(item => {
|
||||
if (item.plc_id === val) {
|
||||
this.plc_code = item.plc_code
|
||||
this.sliceItem()
|
||||
return
|
||||
}
|
||||
})
|
||||
},
|
||||
test_read1() {
|
||||
testRead(this.data1, this.opc_id).then(data => {
|
||||
this.data1 = data
|
||||
this.notify('操作成功!', 'success')
|
||||
}).catch(err => {
|
||||
console.log(err.response.data.message)
|
||||
})
|
||||
},
|
||||
test_write1() {
|
||||
testwrite(this.data2, this.opc_id).then(data => {
|
||||
this.notify('操作成功!', 'success')
|
||||
}).catch(err => {
|
||||
console.log(err.response.data.message)
|
||||
})
|
||||
},
|
||||
doSubmit() {
|
||||
this.$refs['form'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.configLoading = true
|
||||
// 根据驱动类型判断是否为路由设备
|
||||
const parentForm = this.parentForm
|
||||
parentForm.is_route = true
|
||||
parentForm.plc_id = this.plc_id
|
||||
parentForm.opc_id = this.opc_id
|
||||
updateConfig(parentForm, this.form, this.data1, this.data2).then(res => {
|
||||
this.notify('保存成功', 'success')
|
||||
this.configLoading = false
|
||||
}).catch(err => {
|
||||
this.configLoading = false
|
||||
console.log(err.response.data.message)
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
sliceItem() { // 拼接DB的Item值
|
||||
this.data1.forEach(item => {
|
||||
const str = item.code
|
||||
// 是否包含.
|
||||
if (str.search('.') !== -1) {
|
||||
// 截取最后一位
|
||||
item.code = this.opc_code + '.' + this.plc_code + '.' + this.device_code + '.' + str.slice(str.lastIndexOf('.') + 1)
|
||||
} else {
|
||||
item.code = this.opc_code + '.' + this.plc_code + '.' + this.device_code + '.' + item.code
|
||||
}
|
||||
})
|
||||
this.data2.forEach(item => {
|
||||
const str = item.code
|
||||
// 是否包含.
|
||||
if (str.search('.') !== -1) {
|
||||
// 截取最后一位
|
||||
item.code = this.opc_code + '.' + this.plc_code + '.' + this.device_code + '.' + str.slice(str.lastIndexOf('.') + 1)
|
||||
} else {
|
||||
item.code = this.opc_code + '.' + this.plc_code + '.' + this.device_code + '.' + item.code
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
Reference in New Issue
Block a user