From 6c467481fdaccead755bb803224c555b42e5579b Mon Sep 17 00:00:00 2001 From: zhangc <zc@123> Date: 星期四, 17 四月 2025 19:12:42 +0800 Subject: [PATCH] 999 --- src/main/java/com/zy/core/thread/DevpThread.java | 165 +------------------------------------------------------ 1 files changed, 3 insertions(+), 162 deletions(-) diff --git a/src/main/java/com/zy/core/thread/DevpThread.java b/src/main/java/com/zy/core/thread/DevpThread.java index 2c86663..46122e9 100644 --- a/src/main/java/com/zy/core/thread/DevpThread.java +++ b/src/main/java/com/zy/core/thread/DevpThread.java @@ -1,173 +1,14 @@ package com.zy.core.thread; -import HslCommunication.Core.Types.OperateResult; -import HslCommunication.Core.Types.OperateResultExOne; -import HslCommunication.Profinet.Siemens.SiemensPLCS; -import HslCommunication.Profinet.Siemens.SiemensS7Net; -import com.alibaba.fastjson.JSON; -import com.zy.core.Slave; import com.zy.core.ThreadHandler; -import com.zy.core.cache.MessageQueue; -import com.zy.core.enums.SlaveType; -import com.zy.core.model.Task; import com.zy.core.model.protocol.StaProtocol; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -/** - * 杈撻�佺嚎绾跨▼ - * Created by vincent on 2020/8/4 - */ -@Data -@Slf4j -public class DevpThread implements Runnable, ThreadHandler { +public interface DevpThread extends ThreadHandler { - private Slave slave; - private SiemensS7Net siemensS7Net; - private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>(); + Map<Integer, StaProtocol> getStation(); - public DevpThread(Slave slave) { - this.slave = slave; - } - - @Override - @SuppressWarnings("InfiniteLoopStatement") - public void run() { - connect(); - while (true) { - try { - int step = 1; - Task task = MessageQueue.poll(SlaveType.Devp, slave.getId()); - if (task != null) { - step = task.getStep(); - } - switch (step) { - // 璇绘暟鎹� - case 1: - read(); - break; - // 鍐欐暟鎹� - case 2: - write((StaProtocol)task.getData()); - break; - default: - break; - } - - // 蹇冭烦 - heartbeat(); - Thread.sleep(400); - } catch (Exception e) { - e.printStackTrace(); - } - - } - } - - @Override - public boolean connect() { - boolean result = false; - siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp()); - siemensS7Net.setRack((byte) 0); - siemensS7Net.setSlot((byte) 1); - OperateResult connect = siemensS7Net.ConnectServer(); - if(connect.IsSuccess){ - result = true; - log.info("杈撻�佺嚎plc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - } else { - log.error("杈撻�佺嚎plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - } - siemensS7Net.ConnectClose(); - return result; - } - - /** - * 璇诲彇鐘舵�� ====> 鏁村潡plc - */ - private void read(){ - OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) 40); - for (int i = 1; i <= 8; i++) { - StaProtocol staProtocol = station.get(i); - if (null == staProtocol) { - staProtocol = new StaProtocol(); - staProtocol.setSiteId(i); - station.put(i, staProtocol); - } - staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, (i-1)*2)); // 宸ヤ綔鍙� - staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, (i-1)*2+20)); // 鐩爣绔� - } - OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB100.40", (short) 8); - if (result1.IsSuccess) { - for (int i = 1; i <= 8; i++) { - boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i-1, 1); - StaProtocol staProtocol = station.get(i); - staProtocol.setAutoing(status[0]); // 鑷姩 - staProtocol.setLoading(status[1]); // 鏈夌墿 - staProtocol.setInEnable(status[2]); // 鍙叆 - staProtocol.setOutEnable(status[3]);// 鍙嚭 - staProtocol.setEmptyMk(status[4]); // 绌烘澘淇″彿 - } - } - } - - /** - * 鍐欏叆 =====> 鍗曠珯鐐瑰啓鍏� - */ - private void write(StaProtocol staProtocol){ - if (null == staProtocol) { - return; - } - OperateResult write = siemensS7Net.Write("DB100." + (staProtocol.getSiteId() - 1) * 2, staProtocol.getWorkNo()); // 宸ヤ綔鍙� - OperateResult write1 = siemensS7Net.Write("DB100." + ((staProtocol.getSiteId() - 1) * 2 + 20), staProtocol.getStaNo()); // 鐩爣绔� - boolean[] status = new boolean[8]; - status[0] = staProtocol.isAutoing(); - status[1] = staProtocol.isLoading(); - status[2] = staProtocol.isInEnable(); - status[3] = staProtocol.isOutEnable(); - status[4] = staProtocol.isEmptyMk(); - OperateResult write2 = siemensS7Net.Write("DB100." + ((staProtocol.getSiteId() - 1) + 40), status); // 鐘舵�� - if (!write.IsSuccess || !write1.IsSuccess || !write2.IsSuccess) { - log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol)); - } - } - - /** - * 蹇冭烦 - */ - private void heartbeat(){ - OperateResult write = siemensS7Net.Write("DB100.50", (short) 1); - if (!write.IsSuccess) { - log.error("杈撻�佺嚎plc缂栧彿={} 蹇冭烦澶辫触", slave.getId()); - } - } - - @Override - public void close() { - siemensS7Net.ConnectClose(); - } - - public static void main(String[] args) { - Slave slave = new Slave(); - slave.setIp("192.168.2.125"); - DevpThread devpThread = new DevpThread(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)); - - } + void setPakMk(Integer siteId, boolean pakMk); } -- Gitblit v1.9.1