自动化立体仓库 - WCS系统
#
lsh
2022-12-29 4420bfb992da73896ae21107ae45b981df4c726e
src/main/java/com/zy/core/thread/MelsecCrnThread.java
@@ -24,7 +24,6 @@
import com.zy.core.model.protocol.CrnProtocol;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import java.text.MessageFormat;
import java.util.Date;
@@ -87,12 +86,12 @@
                        command.setTaskNo((short) 0); // 工作号
                        command.setAckFinish((short) 1);  // 任务完成确认位
                        command.setTaskMode(CrnTaskModeType.NONE); // 任务模式
                        command.setSourcePosX((short)0);     // 源库位排
                        command.setSourcePosY((short)0);     // 源库位列
                        command.setSourcePosZ((short)0);     // 源库位层
                        command.setDestinationPosX((short)0);     // 目标库位排
                        command.setDestinationPosY((short)0);     // 目标库位列
                        command.setDestinationPosZ((short)0);     // 目标库位层
//                        command.setSourcePosX((short)0);     // 源库位排
//                        command.setSourcePosY((short)0);     // 源库位列
//                        command.setSourcePosZ((short)0);     // 源库位层
//                        command.setDestinationPosX((short)0);     // 目标库位排
//                        command.setDestinationPosY((short)0);     // 目标库位列
//                        command.setDestinationPosZ((short)0);     // 目标库位层
                        write(command);
                        break;
                    default:
@@ -125,13 +124,13 @@
        crnProtocol.setWalkPos((short)0);
        crnProtocol.setLoaded((short)0);
        crnProtocol.setAlarm((short)0);
        crnProtocol.setXSpeed(0F);
        crnProtocol.setYSpeed(0F);
        crnProtocol.setZSpeed(0F);
        crnProtocol.setXDistance(0F);
        crnProtocol.setYDistance(0F);
        crnProtocol.setXDuration(0F);
        crnProtocol.setYDuration(0F);
        crnProtocol.setxSpeed((short)0);
        crnProtocol.setySpeed((short)0);
        crnProtocol.setzSpeed((short)0);
        crnProtocol.setxDistance((short)0);
        crnProtocol.setyDistance((short)0);
        crnProtocol.setxDuration((short)0);
        crnProtocol.setyDuration((short)0);
    }
    @Override
@@ -162,7 +161,7 @@
//                flag1=1;
//                System.out.println("===");
//            }
            OperateResultExOne<byte[]> result = melsecMcNet.Read("D20", (short) 70);
            OperateResultExOne<byte[]> result = melsecMcNet.Read("D1035", (short) 56);
            if (result.IsSuccess) {
                if (null == crnProtocol) {
                    crnProtocol = new CrnProtocol();
@@ -182,13 +181,13 @@
                crnProtocol.setTemp2(melsecMcNet.getByteTransform().TransInt16(result.Content, 22));
                crnProtocol.setTemp3(melsecMcNet.getByteTransform().TransInt16(result.Content, 24));
                crnProtocol.setTemp4(melsecMcNet.getByteTransform().TransInt16(result.Content, 26));
                crnProtocol.setXSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 28));
                crnProtocol.setYSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 32));
                crnProtocol.setZSpeed(melsecMcNet.getByteTransform().TransSingle(result.Content, 36));
                crnProtocol.setXDistance(melsecMcNet.getByteTransform().TransSingle(result.Content, 40));
                crnProtocol.setYDistance(melsecMcNet.getByteTransform().TransSingle(result.Content, 44));
                crnProtocol.setXDuration(melsecMcNet.getByteTransform().TransSingle(result.Content, 48));
                crnProtocol.setYDuration(melsecMcNet.getByteTransform().TransSingle(result.Content, 52));
                crnProtocol.setxSpeed(melsecMcNet.getByteTransform().TransInt16(result.Content, 28));
                crnProtocol.setySpeed(melsecMcNet.getByteTransform().TransInt16(result.Content, 32));
                crnProtocol.setzSpeed(melsecMcNet.getByteTransform().TransInt16(result.Content, 36));
                crnProtocol.setxDistance(melsecMcNet.getByteTransform().TransInt16(result.Content, 40));
                crnProtocol.setyDistance(melsecMcNet.getByteTransform().TransInt16(result.Content, 44));
                crnProtocol.setxDuration(melsecMcNet.getByteTransform().TransInt16(result.Content, 48));
                crnProtocol.setyDuration(melsecMcNet.getByteTransform().TransInt16(result.Content, 52));
                OutputQueue.CRN.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId()));
@@ -299,11 +298,11 @@
        array[7] = command.getDestinationPosY();
        array[8] = command.getDestinationPosZ();
        array[9] = command.getCommand();
        OperateResult result = melsecMcNet.Write("D0", array);
        OperateResult result = melsecMcNet.Write("D1001", array);
        if (command.getAckFinish() == 0) {
            short commandFinish = 1;
            result = melsecMcNet.Write("D9", commandFinish);
            result = melsecMcNet.Write("D1010", commandFinish);
        }
        try {
@@ -349,12 +348,22 @@
     * 心跳
     */
    private void heartbeat(){
        if (heartBeatVal == 1) {
            heartBeatVal = 2;
        if (heartBeatVal >= 30000) {
            heartBeatVal = -30000;
        } else {
            heartBeatVal = 1;
            heartBeatVal =(short) (heartBeatVal+1);
        }
        OperateResult write = melsecMcNet.Write("D10", heartBeatVal);
        OperateResult write = melsecMcNet.Write("D1011", heartBeatVal);
//        OperateResult write1 = melsecMcNet.Write("D1001", (short) 0);
//        OperateResult write2 = melsecMcNet.Write("D1002", (short) 0);
//        OperateResult write3 = melsecMcNet.Write("D1003", (short) 0);
//        OperateResult write4 = melsecMcNet.Write("D1004", (short) 0);
//        OperateResult write5 = melsecMcNet.Write("D1005", (short) 0);
//        OperateResult write6 = melsecMcNet.Write("D1006", (short) 0);
//        OperateResult write7 = melsecMcNet.Write("D1007", (short) 0);
//        OperateResult write8 = melsecMcNet.Write("D1008", (short) 0);
//        OperateResult write9 = melsecMcNet.Write("D1009", (short) 0);
//        OperateResult write10 = melsecMcNet.Write("D1010", (short) 0);
        if (!write.IsSuccess) {
            log.error("堆垛机plc心跳通讯失败 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
        }