野心家
2023-06-13 eb5e61b0f85c78455caa4e0ba54245aff982ba3d
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -54,7 +54,7 @@
    private int barcodeSize = 2;
    public IoModeType ioMode = IoModeType.NONE;
    public int[][] startSignal = new int[48][2];
    public int[][] startSignal = new int[48][3];
    public SiemensDevpThread(DevpSlave slave) {
        this.slave = slave;
@@ -89,47 +89,47 @@
                        StaProtocol staProtocol2 = (StaProtocol)task.getData();
                        siemensS7Net.Write("DB108.0" + staProtocol2.getSiteId(), staProtocol2.getStaNo()==1);
                        break;
                    //复位测试信号
                    case 3:
                        StaProtocol staProtocol = (StaProtocol)task.getData();
                        siemensS7Net.Write("DB102.0" + staProtocol.getSiteId(), staProtocol.getStaNo());
                        break;
                    default:
                        break;
                }
                // 心跳
        //复位测试信号
        case 3:
        StaProtocol staProtocol = (StaProtocol)task.getData();
        siemensS7Net.Write("DB102.0" + staProtocol.getSiteId(), staProtocol.getStaNo());
        break;
        default:
        break;
    }
    // 心跳
//                heartbeat();
                Thread.sleep(400);
            } catch (Exception e) {
                e.printStackTrace();
            }
} catch (Exception e) {
        e.printStackTrace();
        }
        }
    }
        }
    @Override
    public boolean connect() {
@Override
public boolean connect() {
        boolean result = false;
        siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp());
        siemensS7Net.setRack(slave.getRack().byteValue());
        siemensS7Net.setSlot(slave.getSlot().byteValue());
        OperateResult connect = siemensS7Net.ConnectServer();
        if(connect.IsSuccess){
            result = true;
            OutputQueue.DEVP.offer(MessageFormat.format( "【{0}】输送线plc连接成功 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
            log.info("输送线plc连接成功 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
        result = true;
        OutputQueue.DEVP.offer(MessageFormat.format( "【{0}】输送线plc连接成功 ===>> [id:{1}] [ip:{2}] [port:{3}] [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
        log.info("输送线plc连接成功 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
        } else {
            OutputQueue.DEVP.offer(MessageFormat.format( "【{0}】输送线plc连接失败!!! ===>> [id:{1}] [ip:{2}] [port:{3}]  [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
            log.error("输送线plc连接失败!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
        OutputQueue.DEVP.offer(MessageFormat.format( "【{0}】输送线plc连接失败!!! ===>> [id:{1}] [ip:{2}] [port:{3}]  [rack:{4}] [slot:{5}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot()));
        log.error("输送线plc连接失败!!! ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
        }
        siemensS7Net.ConnectClose();
        return result;
    }
        }
    /**
     * 读取状态 ====> 整块plc
     */
    private void read() throws InterruptedException {
/**
 * 读取状态 ====> 整块plc
 */
private void read() throws InterruptedException {
//        // 更新入出库模式
//        updateIoMode();
        int staNoSize = staNos.size();
@@ -205,12 +205,17 @@
        }
        Thread.sleep(200);
        OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB102.0", (short) 96);
        OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB108.0", (short) 96);
        //测试柜状态获取
        OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB38.0", (short) 96);
        //启动移库按钮
        OperateResultExOne<byte[]> result6 = siemensS7Net.Read("DB102.0", (short) 96);
        //消防报警
        OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB108.0", (short) 48);
        if(result3.IsSuccess) {
            for(int i=0; i<48; i++){
                startSignal[i][0] = siemensS7Net.getByteTransform().TransInt16(result3.Content, i*2);
                startSignal[i][1] = siemensS7Net.getByteTransform().TransInt16(result4.Content, i*2);
                startSignal[i][0] = siemensS7Net.getByteTransform().TransByte(result3.Content, i*2);//测试柜状态
                startSignal[i][1] = siemensS7Net.getByteTransform().TransBool(result4.Content, i)?1:0;//消防状态
                startSignal[i][2] = siemensS7Net.getByteTransform().TransInt16(result6.Content, i*2);//启动按钮状态
            }
        }
//        OperateResultExOne<Short> result2 = siemensS7Net.ReadInt16("DB200.0");
@@ -251,7 +256,8 @@
     */
    private void write103(String packNo){
        try{
            OperateResult write = siemensS7Net.Write("DB109.", packNo);
            OperateResult write = siemensS7Net.Write("DB109.0", packNo);
            if (!write.IsSuccess) {
                OutputQueue.DEVP.offer(MessageFormat.format("【{0}】写入输送线站点数据失败。输送线plc编号={1},站点数据={2}", slave.getId(), JSON.toJSON(packNo)));
                log.error("写入输送线站点数据失败。输送线plc编号={},站点数据={}", slave.getId(), JSON.toJSON(packNo));