#
Junjie
2025-11-11 bfe469c7fa604a6431d58ea5e5143c959d76bd86
src/main/java/com/zy/core/thread/impl/ZySiemensCrnThread.java
@@ -14,7 +14,6 @@
import com.zy.asrs.utils.Utils;
import com.zy.common.utils.RedisUtil;
import com.zy.core.News;
import com.zy.core.ThreadHandler;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
import com.zy.core.enums.CrnTaskModeType;
@@ -24,7 +23,7 @@
import com.zy.core.model.command.CrnCommand;
import com.zy.core.model.protocol.CrnProtocol;
import com.zy.core.network.DeviceConnectPool;
import com.zy.core.network.ZyCrnConnectThread;
import com.zy.core.network.ZyCrnConnectDriver;
import com.zy.core.network.entity.ZyCrnStatusEntity;
import com.zy.core.thread.CrnThread;
import lombok.Data;
@@ -43,7 +42,7 @@
    private DeviceConfig deviceConfig;
    private RedisUtil redisUtil;
    private ZyCrnConnectThread zyCrnConnectThread;
    private ZyCrnConnectDriver zyCrnConnectDriver;
    private CrnProtocol crnProtocol;
    private boolean resetFlag = false;
@@ -112,9 +111,9 @@
    @Override
    public boolean connect() {
        SiemensS7Net siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, deviceConfig.getIp());
        zyCrnConnectThread = new ZyCrnConnectThread(siemensS7Net, deviceConfig);
        new Thread(zyCrnConnectThread).start();
        DeviceConnectPool.put(SlaveType.Crn, deviceConfig.getDeviceNo(), zyCrnConnectThread);
        zyCrnConnectDriver = new ZyCrnConnectDriver(siemensS7Net, deviceConfig);
        new Thread(zyCrnConnectDriver).start();
        DeviceConnectPool.put(SlaveType.Crn, deviceConfig.getDeviceNo(), zyCrnConnectDriver);
        return true;
    }
@@ -122,7 +121,7 @@
     * 读取状态
     */
    private void readStatus(){
        ZyCrnStatusEntity crnStatus = zyCrnConnectThread.getStatus();
        ZyCrnStatusEntity crnStatus = zyCrnConnectDriver.getStatus();
        if (crnStatus == null) {
            OutputQueue.CRN.offer(MessageFormat.format("【{0}】读取堆垛机plc状态信息失败 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), deviceConfig.getDeviceNo(), deviceConfig.getIp(), deviceConfig.getPort()));
            News.error("SiemensCrn"+" - 5"+" - 读取堆垛机plc状态信息失败 ===>> [id:{}] [ip:{}] [port:{}]", deviceConfig.getDeviceNo(), deviceConfig.getIp(), deviceConfig.getPort());
@@ -206,7 +205,7 @@
    @Override
    public void close() {
        zyCrnConnectThread.close();
        zyCrnConnectDriver.close();
    }
    @Override
@@ -231,18 +230,15 @@
    }
    @Override
    public CrnCommand getMoveCommand(String sourceLocNo, String targetLocNo, Integer taskNo, Integer crnNo) {
    public CrnCommand getMoveCommand(String targetLocNo, Integer taskNo, Integer crnNo) {
        CrnCommand crnCommand = new CrnCommand();
        crnCommand.setCrnNo(crnNo); // 堆垛机编号
        crnCommand.setTaskNo(taskNo.shortValue()); // 工作号
        crnCommand.setAckFinish((short) 0);  // 任务完成确认位
        crnCommand.setTaskMode(CrnTaskModeType.CRN_MOVE.id.shortValue()); // 任务模式:  堆垛机移动
        crnCommand.setSourcePosX((short) Utils.getRow(sourceLocNo));     // 源库位排
        crnCommand.setSourcePosY((short) Utils.getBay(sourceLocNo));     // 源库位列
        crnCommand.setSourcePosZ((short) Utils.getLev(sourceLocNo));     // 源库位层
        crnCommand.setDestinationPosX((short) 0);     // 目标库位排
        crnCommand.setDestinationPosY((short) 0);     // 目标库位列
        crnCommand.setDestinationPosZ((short) 0);     // 目标库位层
        crnCommand.setDestinationPosX((short) Utils.getRow(targetLocNo));     // 目标库位排
        crnCommand.setDestinationPosY((short) Utils.getBay(targetLocNo));     // 目标库位列
        crnCommand.setDestinationPosZ((short) Utils.getLev(targetLocNo));     // 目标库位层
        crnCommand.setCommand((short) 1);     // 任务确认
        return crnCommand;
    }
@@ -267,6 +263,6 @@
    @Override
    public synchronized CommandResponse sendCommand(CrnCommand command) {
        this.crnProtocol.setLastCommandTime(System.currentTimeMillis());
        return zyCrnConnectThread.sendCommand(command);
        return zyCrnConnectDriver.sendCommand(command);
    }
}