#
luxiaotao1123
2022-10-27 479d51e0c9662bebfe37a48401ec23fbd6496d0e
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -15,6 +15,7 @@
import com.zy.core.cache.OutputQueue;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.SlaveType;
import com.zy.core.enums.SteChargeType;
import com.zy.core.model.DevpSlave;
import com.zy.core.model.Task;
import com.zy.core.model.protocol.StaProtocol;
@@ -48,6 +49,10 @@
        add(210);add(211);
        add(300);
    }};
    public boolean charge0;
    public boolean charge1;
    public boolean charge2;
    public SiemensDevpThread(DevpSlave slave) {
        this.slave = slave;
@@ -159,7 +164,7 @@
        }
        //读条码
        Thread.sleep(200);
        Thread.sleep(100);
        OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100.100",(short)(barcodeSize*8));
        if (result2.IsSuccess) {
            for (int i = 0; i < barcodeSize; i++) {
@@ -170,6 +175,16 @@
                }
            }
        }
        // 充电信号位
        Thread.sleep(100);
        OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB102.50", (short)1);
        if (result3.IsSuccess) {
            boolean[] status = siemensS7Net.getByteTransform().TransBool(result3.Content, 0, 1);
            charge0 = status[0];
            charge1 = status[1];
            charge2 = status[2];
        }
        if (result.IsSuccess && result0.IsSuccess && result1.IsSuccess) {
@@ -249,6 +264,38 @@
        }
    }
    /**
     * 充电控制
     * @param index 充电桩序号 0 开始
     * @param open true 开始充电;false 结束充电
     */
    public boolean charge(int index, boolean open) {
        OperateResult write = siemensS7Net.Write("DB102.50." + (index + 3), open);
        if (!write.IsSuccess) {
            log.error("输送线plc编号={} {}号充电桩{}控制失败", slave.getId(), index + 1, open?"打开":"关闭");
            return false;
        } else {
            log.error("输送线plc编号={} {}号充电桩{}控制成功", slave.getId(), index + 1, open?"打开":"关闭");
        }
        return true;
    }
    /**
     * 获取空闲充电桩
     */
    public SteChargeType getIdleChargeLocNo() {
        if (!this.charge0) {
            return SteChargeType.FIRST;
        }
        if (!this.charge1) {
            return SteChargeType.SECOND;
        }
        if (!this.charge2) {
            return SteChargeType.THIRD;
        }
        return null;
    }
    @Override
    public void close() {
        siemensS7Net.ConnectClose();