严智鑫
2024-05-17 7b89e2cf25b6d5a43ecc86bb64a6a245ae862c6e
hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/S7object.java
@@ -1,36 +1,61 @@
package com.mes.common;
import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
import com.mes.device.PlcParameterObject;
import com.mes.tools.InitUtil;
import com.mes.tools.S7control;
/**
 * @Author : zhoush
 * @Date: 2024/4/9 15:13
 * @Description:
 */
//public class S7object {
//    public S7control plccontrol; // PLC通讯类实例
//    private EPlcType plcType = EPlcType.S1500; // 西门子PLC类型
//    private String ip = "192.168.10.1"; // plc ip地址
//    private int port = 102; // plc 端口号
//
//    private static volatile S7object instance = null;
//
//    private S7object() {
//        if (plccontrol == null) {
//            plccontrol = new S7control(plcType, ip, port, 0, 0);
//        }
//    }
//
//    // 单例模式 获取类的唯一实例
//    public static S7object getinstance() {
//        if (instance == null) {
//            synchronized (S7object.class) {
//                if (instance == null) {
//                    instance = new S7object();
//                }
//            }
//        }
//        return instance;
//    }
//}
public class S7object extends Thread {
    public S7control plccontrol; // PLC通讯类实例
    private EPlcType plcType = EPlcType.S1200; // 西门子PLC类型
    private String ip = "192.168.10.1"; // plc ip地址
    private int port = 102; // plc 端口号
    public PlcParameterObject PlcMesObject;
    private static volatile S7object instance = null;
    private S7object() {
        if (plccontrol == null) {
            plccontrol = new S7control(plcType, ip, port, 0, 0);
            String PlcLoadGlass = S7object.class.getResource("/JsonFile/PlcLoadGlass.json").getPath();
            //log.info(PLCAutoMes.class.getResource("").getPath());
            PlcMesObject = InitUtil.initword(PlcLoadGlass);
        }
    }
    // 单例模式 获取类的唯一实例
    public static S7object getinstance() {
        if (instance == null) {
            synchronized (S7object.class) {
                if (instance == null) {
                    instance = new S7object();
                }
            }
        }
        return instance;
    }
    @Override
    public void run() {
        while (this != null) {
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            byte[] getplcvlues = plccontrol.ReadByte(PlcMesObject.getPlcAddressBegin(), PlcMesObject.getPlcAddressLength());
            PlcMesObject.setPlcParameterList(getplcvlues);
        }
    }
}