|  |  | 
 |  |  |     private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>(); | 
 |  |  |     private short heartBeatVal = 1; | 
 |  |  |     public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{ | 
 |  |  |         add(100);add(101);add(102);add(103);add(104);add(105);add(106);add(107);add(108);add(109);add(110);add(111);add(112);add(113);add(114);add(115);add(116);add(117); | 
 |  |  |         add(118);add(119);add(120);add(121);add(122);add(123);add(124);add(125);add(126);add(127);add(128); | 
 |  |  |         add(100);add(101);add(102);add(103);add(104);add(105);add(106);add(107);add(108);add(109);add(110);add(111);add(112);add(113);add(114); | 
 |  |  |         add(115);add(116);add(117);add(118);add(119);add(120);add(121);add(122);add(123);add(124);add(125);add(126);add(127);add(128); | 
 |  |  |         add(200);add(201);add(202);add(203);add(204);add(205); | 
 |  |  |     }}; | 
 |  |  |  | 
 |  |  | 
 |  |  |      * 读取状态 ====> 整块plc | 
 |  |  |      */ | 
 |  |  |     private void read() throws InterruptedException { | 
 |  |  |         OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) 350); | 
 |  |  |         OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) 140); | 
 |  |  |         if (result.IsSuccess) { | 
 |  |  |             for (int i = 0; i < staNos.size(); i++) { | 
 |  |  |                 Integer siteId = staNos.get(i); // 站点编号 | 
 |  |  | 
 |  |  |                     staProtocol.setSiteId(siteId); | 
 |  |  |                     station.put(siteId, staProtocol); | 
 |  |  |                 } | 
 |  |  |                 int divides = (int) Arith.divides(0, siteId, 100); | 
 |  |  |                 int remainder = (int) Arith.remainder(siteId, 100); | 
 |  |  |                 int index = ((divides - 1) * 50) + remainder; | 
 |  |  |                 staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, index*2));     // 工作号 | 
 |  |  |                 staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, index*2 + 200));   // 目标站 | 
 |  |  | //                int divides = (int) Arith.divides(0, siteId, 100); | 
 |  |  | //                int remainder = (int) Arith.remainder(siteId, 100); | 
 |  |  | //                int index = ((divides - 1) * 50) + remainder; | 
 |  |  |                 staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*2));     // 工作号 | 
 |  |  |                 staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*2 + 70));   // 目标站 | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         Thread.sleep(100); | 
 |  |  |         OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB100.500", (short) 106); | 
 |  |  |         OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB100.140", (short) 35); | 
 |  |  |         if (result1.IsSuccess) { | 
 |  |  |             for (int i = 0; i < staNos.size(); i++) { | 
 |  |  |                 Integer siteId = staNos.get(i); // 站点编号 | 
 |  |  |                 int divides = (int) Arith.divides(0, siteId, 100); | 
 |  |  |                 int remainder = (int) Arith.remainder(siteId, 100); | 
 |  |  |                 int index = ((divides - 1) * 100) + remainder; | 
 |  |  |                 boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, index, 1); | 
 |  |  | //                int divides = (int) Arith.divides(0, siteId, 100); | 
 |  |  | //                int remainder = (int) Arith.remainder(siteId, 100); | 
 |  |  | //                int index = ((divides - 1) * 100) + remainder; | 
 |  |  |                 boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i, 1); | 
 |  |  |                 StaProtocol staProtocol = station.get(siteId); | 
 |  |  |                 staProtocol.setAutoing(status[0]);  // 自动 | 
 |  |  |                 staProtocol.setLoading(status[1]);  // 有物 | 
 |  |  | 
 |  |  |         if (null == staProtocol) { | 
 |  |  |             return; | 
 |  |  |         } | 
 |  |  |         int divides = (int) Arith.divides(0, staProtocol.getSiteId(), 100); | 
 |  |  |         int remainder = (int) Arith.remainder(staProtocol.getSiteId(), 100); | 
 |  |  |         int index = ((divides - 1) * 50) + remainder; | 
 |  |  | //        int divides = (int) Arith.divides(0, staProtocol.getSiteId(), 100); | 
 |  |  | //        int remainder = (int) Arith.remainder(staProtocol.getSiteId(), 100); | 
 |  |  | //        int index = ((divides - 1) * 50) + remainder; | 
 |  |  |         int index = staNos.indexOf(staProtocol.getSiteId()); | 
 |  |  |  | 
 |  |  |         OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo());    // 工作号 | 
 |  |  |         Thread.sleep(300); | 
 |  |  |         OperateResult write1 = siemensS7Net.Write("DB100." + (index*2 + 200), staProtocol.getStaNo());    // 目标站 | 
 |  |  |         Thread.sleep(200); | 
 |  |  |         OperateResult write1 = siemensS7Net.Write("DB100." + (index*2 + 70), staProtocol.getStaNo());    // 目标站 | 
 |  |  |         if (!write.IsSuccess || !write1.IsSuccess) { | 
 |  |  |             staProtocol = station.get(staProtocol.getSiteId()); | 
 |  |  |             if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) { | 
 |  |  | 
 |  |  |         siemensS7Net.ConnectClose(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public static void main(String[] args) throws Exception { | 
 |  |  |         DevpSlave slave = new DevpSlave(); | 
 |  |  |         slave.setIp("192.168.2.125"); | 
 |  |  |         SiemensDevpThread devpThread = new SiemensDevpThread(slave); | 
 |  |  |         devpThread.connect(); | 
 |  |  |         devpThread.read(); | 
 |  |  |         // 写 | 
 |  |  |         StaProtocol staProtocol = devpThread.getStation().get(1); | 
 |  |  |         staProtocol.setWorkNo((short) 232); | 
 |  |  |         staProtocol.setStaNo((short) 6); | 
 |  |  |         staProtocol.setAutoing(true); | 
 |  |  |         staProtocol.setEmptyMk(true); | 
 |  |  |         staProtocol.setInEnable(true); | 
 |  |  |         devpThread.write(staProtocol); | 
 |  |  |         System.out.println("----------------------------------------"); | 
 |  |  |         // 读 | 
 |  |  |         devpThread.read(); | 
 |  |  |         System.out.println(JSON.toJSONString(devpThread.station)); | 
 |  |  |  | 
 |  |  |     public static void main(String[] args) { | 
 |  |  |         for (int i = 0; i<staNos.size(); i++) { | 
 |  |  | //            System.out.println(i*2); | 
 |  |  | //            System.out.println(i*2 + 200); | 
 |  |  | //            System.out.println(i); | 
 |  |  |         } | 
 |  |  |         int index = staNos.indexOf(128); | 
 |  |  |         System.out.println(index*2); | 
 |  |  |         System.out.println(index*2 + 200); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | //    public static void main(String[] args) throws Exception { | 
 |  |  | //        DevpSlave slave = new DevpSlave(); | 
 |  |  | //        slave.setIp("192.168.2.125"); | 
 |  |  | //        SiemensDevpThread devpThread = new SiemensDevpThread(slave); | 
 |  |  | //        devpThread.connect(); | 
 |  |  | //        devpThread.read(); | 
 |  |  | //        // 写 | 
 |  |  | //        StaProtocol staProtocol = devpThread.getStation().get(1); | 
 |  |  | //        staProtocol.setWorkNo((short) 232); | 
 |  |  | //        staProtocol.setStaNo((short) 6); | 
 |  |  | //        staProtocol.setAutoing(true); | 
 |  |  | //        staProtocol.setEmptyMk(true); | 
 |  |  | //        staProtocol.setInEnable(true); | 
 |  |  | //        devpThread.write(staProtocol); | 
 |  |  | //        System.out.println("----------------------------------------"); | 
 |  |  | //        // 读 | 
 |  |  | //        devpThread.read(); | 
 |  |  | //        System.out.println(JSON.toJSONString(devpThread.station)); | 
 |  |  | // | 
 |  |  | //    } | 
 |  |  |  | 
 |  |  | } |