From a38d955f816eb64f297cd587b507defd5839892e Mon Sep 17 00:00:00 2001
From: zzgtfwq <zzgtfwq>
Date: 星期二, 09 十二月 2025 15:08:46 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 680 +++++++++++++++++++++++++++++++++++++-------------------
1 files changed, 449 insertions(+), 231 deletions(-)
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index c650393..ba4aeeb 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -10,7 +10,8 @@
import com.core.common.SpringUtils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.BasDevp;
-import com.zy.asrs.service.BasDevpService;
+import com.zy.asrs.entity.TaskWrk;
+import com.zy.asrs.service.*;
import com.zy.core.DevpThread;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
@@ -42,42 +43,33 @@
private SiemensS7Net siemensS7Net;
private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>();
private short heartBeatVal = 1;
-// public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{
-//
-// }};
+ private boolean result = false;
public static final ArrayList<Integer> staNos1 = 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(129);add(130);add(131);
- add(132);add(133);add(134);add(135);
- add(136);add(137);add(138);add(139);
- add(140);add(141);add(142);add(143);
- add(144);add(145);add(146);add(147);
- add(148);add(149);add(150);add(151);
- add(152);add(153);add(154);add(155);
- add(156);add(157);add(158);
+ 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(124);add(125);
}};
public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
- add(200);add(201);add(202);add(203);
- add(204);add(205);add(206);add(207);
- add(208);add(209);add(210);add(211);
- add(212);add(213);add(214);add(215);
- add(216);add(217);
+ add(201);add(202);add(203);add(204);add(205);add(206);add(207);add(208);add(209);add(210);
+ add(211);add(212);add(213);add(214);add(215);add(216);add(217);add(218);add(219);add(220);
+ add(221);add(222);add(224);add(225);
+ }};
+ public static final ArrayList<Integer> staNos1W = new ArrayList<Integer>() {{
+ add(118);add(121);add(124);
}};
+ public static final ArrayList<Integer> staNos2W = new ArrayList<Integer>() {{
+ add(218);add(221);add(224);
+ }};
+ private boolean connectDev = false;
+ public Long currentTimeMilliConnectDev= 0L;
- private Integer count=0;
/**
* 鏉$爜鏁伴噺
*/
- private int barcodeSize = 6;
+ private int barcodeSize = 3;
/**
* 鍏ュ嚭搴撴ā寮�
@@ -88,14 +80,7 @@
* 4.鍑哄簱妯″紡
*/
public IoModeType ioModeOf2F = IoModeType.NONE;
-// public IoModeType ioMode = IoModeType.NONE;
- public IoModeType ioModeOf4F = IoModeType.NONE;
-// public IoModeType ioMode = IoModeType.NONE;
-
- public SiemensDevpThread(DevpSlave slave) {
- this.slave = slave;
- }
-
+ // public IoModeType ioMode = IoModeType.NONE;
private ArrayList<Integer> getStaNo() {
switch (slave.getId()) {
case 1:
@@ -106,67 +91,84 @@
throw new CoolException("鏈嶅姟鍣ㄥ紓甯�");
}
}
+ private ArrayList<Integer> getStaNoW() {
+ switch (slave.getId()) {
+ case 1:
+ return staNos1W;
+ case 2:
+ return staNos2W;
+ default:
+ throw new CoolException("鏈嶅姟鍣ㄥ紓甯�");
+ }
+ }
+
+ public SiemensDevpThread(DevpSlave slave) {
+ this.slave = slave;
+ }
@Override
@SuppressWarnings("InfiniteLoopStatement")
public void run() {
- connect();
+ initSite();
+ // 鍚姩绾跨▼鑷姩閲嶈繛
+ new Thread(this::devConnect).start();
+ new Thread(this::readStatusDev).start();
+ new Thread(this::writeStatusDev).start();
+ }
+
+
+ private void devConnect() {
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;
- // 鍐欐暟鎹� ID+鐩爣绔�
- case 2:
- write((StaProtocol)task.getData());
- break;
- default:
- break;
- }
- // 蹇冭烦
-// heartbeat();
- Thread.sleep(300);
- } catch (Exception e) {
- e.printStackTrace();
- }
+ Thread.sleep(1000);
+ if(!connectDev){
+ try {
+ connectDev = this.connect();
+ Thread.sleep(100);
+ } catch (Exception e){
+
+ }
+ }
+ } catch (Exception e) {
+ log.info("dev杩炴帴澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+
+// log.error("rgv杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("devErr", slave.getId(), "rgv杩炴帴澶辫触"+e.getMessage());
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
+ }
+ initSite();
+// e.printStackTrace();
+ }
}
}
/**
* 鍒濆鍖栫珯鐐圭姸鎬�
*/
private void initSite() {
- count ++;
ArrayList<Integer> staNos = getStaNo();
- if(count > 77) {
- // 绔欑偣缂栧彿
- for (Integer siteId : staNos) {
- StaProtocol staProtocol = station.get(siteId);
- if (null == staProtocol) {
- staProtocol = new StaProtocol();
- staProtocol.setSiteId(siteId);
- station.put(siteId, staProtocol);
- }
- staProtocol.setWorkNo((short) 0); // ID
- staProtocol.setAutoing(false); // 鑷姩
- staProtocol.setLoading(false); // 鏈夌墿
- staProtocol.setInEnable(false); // 鍙叆
- staProtocol.setOutEnable(false); // 鍙嚭
- staProtocol.setEmptyMk(false); // 绌烘澘淇″彿
- staProtocol.setStaNo((short) 0); // 鐩爣绔�
-
- if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
- staProtocol.setPakMk(true);
- }
+ // 绔欑偣缂栧彿
+ for (Integer siteId : staNos) {
+ StaProtocol staProtocol = station.get(siteId);
+ if (null == staProtocol) {
+ staProtocol = new StaProtocol();
+ staProtocol.setSiteId(siteId);
+ station.put(siteId, staProtocol);
}
- count = 0;
+ staProtocol.setWorkNo(0); // ID
+ staProtocol.setAutoing(false); // 鑷姩
+ staProtocol.setLoading(false); // 鏈夌墿
+ staProtocol.setInEnable(false); // 鍙叆
+ staProtocol.setOutEnable(false); // 鍙嚭
+ staProtocol.setEmptyMk(false); // 绌烘澘淇″彿
+ staProtocol.setStaNo((short)0); // 鐩爣绔�
+
+ if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
+ staProtocol.setPakMk(true);
+ }
}
}
@@ -184,10 +186,99 @@
} 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());
+
+
+ if (System.currentTimeMillis()-currentTimeMilliConnectDev>1000*60*10){
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("devErr", slave.getId(), "杈撻�佺嚎plc杩炴帴澶辫触");
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
+ }
+ if (currentTimeMilliConnectDev == 0){
+ currentTimeMilliConnectDev = System.currentTimeMillis()-1000*60*10-1;
+ } else {
+ currentTimeMilliConnectDev = System.currentTimeMillis();
+
+ }
+ }
+ initSite();
}
siemensS7Net.ConnectClose();
- initSite();
return result;
+ }
+
+
+
+ private void writeStatusDev() {
+ while (true) {
+ try {
+ if(!connectDev){
+ try {
+ Thread.sleep(1000L);
+ } catch (Exception e){
+
+ }
+ continue;
+ }
+ int step = 1;
+ Task task = MessageQueue.poll(SlaveType.Devp, slave.getId());
+ if (task != null) {
+ step = task.getStep();
+ }
+ switch (step) {
+ // 璇绘暟鎹�
+ case 1:
+// read();
+ break;
+ // 鍐欐暟鎹� ID+鐩爣绔�
+ case 2:
+ write((StaProtocol)task.getData());
+ break;
+ default:
+ break;
+ }
+ // 蹇冭烦
+// heartbeat();
+ Thread.sleep(200);
+ } catch (Exception e) {
+// e.printStackTrace();
+ }
+
+ }
+ }
+ private void readStatusDev() {
+ while (true) {
+ try {
+ if(!connectDev){
+ try {
+ Thread.sleep(1000L);
+ } catch (Exception e){
+
+ }
+ initSite();
+ continue;
+ }
+ Thread.sleep(50);
+// System.out.println("璇荤嚎绋�"+ slave.getId());
+
+ read();
+
+ } catch (Exception e) {
+ connectDev = false;
+ log.error("dev鏁版嵁璇诲彇绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("devErr", slave.getId(), "dev鏁版嵁璇诲彇绾跨▼寮傚父"+e.getMessage());
+ } catch (Exception e2){
+// log.error("e2:"+e2.getMessage());
+ }
+ initSite();
+// e.printStackTrace();
+ }
+
+ }
+
}
/**
@@ -198,9 +289,8 @@
// updateIoMode();
ArrayList<Integer> staNos = getStaNo();
int staNoSize = staNos.size();
- OperateResultExOne<byte[]> result = siemensS7Net.Read("DB100.0", (short) (staNoSize*2));
- OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB101.0", (short) (staNoSize*2));
- if (result.IsSuccess && result4.IsSuccess) {
+ OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize*8));
+ if (result.IsSuccess) {
for (int i = 0; i < staNoSize; i++) {
Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
StaProtocol staProtocol = station.get(siteId);
@@ -209,131 +299,123 @@
staProtocol.setSiteId(siteId);
station.put(siteId, staProtocol);
}
- staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*2)); // 宸ヤ綔鍙�
+ staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt32(result.Content, i*8)); // 宸ヤ綔鍙�
- staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result4.Content, i*2)); // 鐩爣绔�
- }
- }
-// Thread.sleep(200);
-// OperateResultExOne<byte[]> result0 = siemensS7Net.Read("DB101.0", (short) 186);
-// if (result0.IsSuccess) {
-// for (int i = 0; i < 93; i++) {
-// Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
-// StaProtocol staProtocol = station.get(siteId);
-// if (null == staProtocol) {
-// staProtocol = new StaProtocol();
-// staProtocol.setSiteId(siteId);
-// station.put(siteId, staProtocol);
-// }
-// staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result0.Content, i*2)); // 鐩爣绔�
-// }
-// }
- //鏉$爜鎵弿鍣�
- Thread.sleep(200);
- OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB100.200",(short)(barcodeSize/2*8));
- if (result2.IsSuccess) {
- if (slave.getId()==1){
- for (int i = 0; i < barcodeSize/2; i++) {
- String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,8, "UTF-8");
- BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1);
- if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)){
-// && !Cools.isEmpty(barcode) && Cools.isEmpty(barcodeThread.getBarcode())) {
- barcodeThread.setBarcode(barcode);
- }
- }
- }else if (slave.getId()==2){
- for (int i = barcodeSize/2; i < barcodeSize; i++) {
- String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,(i-barcodeSize/2)*8,8, "UTF-8");
- BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1);
- if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)){
-// && !Cools.isEmpty(barcode) && Cools.isEmpty(barcodeThread.getBarcode())) {
- barcodeThread.setBarcode(barcode);
- }
- }
- }
- }
+ staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*8 + 4)); // 鐩爣绔�
- Thread.sleep(200);
- OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB102.100", (short) (staNoSize * 2));
- if (result1.IsSuccess) {
- for (int i = 0; i < staNoSize; i++) {
- Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
- boolean[] status = siemensS7Net.getByteTransform().TransBool(result1.Content, i*2, 1);
- StaProtocol staProtocol = station.get(siteId);
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(result.Content, i*8 + 6, 2);
staProtocol.setAutoing(status[0]); // 鑷姩
+// staProtocol.setAutoing(true); // 鑷姩
staProtocol.setLoading(status[1]); // 鏈夌墿
+// staProtocol.setLoading(true); // 鏈夌墿
staProtocol.setInEnable(status[2]); // 鍙叆
+// staProtocol.setInEnable(true); // 鍙叆
staProtocol.setOutEnable(status[3]);// 鍙嚭
+// staProtocol.setOutEnable(true);// 鍙嚭
staProtocol.setEmptyMk(status[4]); // 绌烘澘淇″彿
staProtocol.setFullPlt(status[5]); // 婊℃墭鐩�
staProtocol.setHigh(status[6]); // 楂樺簱浣�
staProtocol.setLow(status[7]); // 浣庡簱浣�
+
+
+ if (!staProtocol.isPakMkWalk() && !staProtocol.isLoading()) {
+ staProtocol.setPakMk(true);
+ staProtocol.setPakMkWalk(true);
+ }
+
if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
staProtocol.setPakMk(true);
}
- if (staProtocol.getStamp()>=2 && !staProtocol.isLoading()){
- staProtocol.setStamp(0);
- }else if (staProtocol.getStamp()<2 && staProtocol.isLoading()){
- //lfd鍏ュ簱鍗拌 褰搒tamp>=2鏃舵墠鍏ュ簱
- staProtocol.setStamp(staProtocol.getStamp()+1);
+ if (!staProtocol.isPakMkRun() && !staProtocol.isLoading()) {
+ staProtocol.setPakMkRun(true);
}
-// //20230110锛屾棩蹇楁墦鍗帮紝纭鏀跺埌鍏ュ簱绔欏彲鍏ヤ俊鍙锋椂锛屽搴旀潯鐮佹暟鎹槸鍚﹀凡鏈�
-// if ((siteId==101 || siteId==109 || siteId==117 || siteId==201 || siteId==207 || siteId==213)
-// && staProtocol.isInEnable()){
-// Integer barcodeId = 0;
-// switch (siteId){
-// case 101:
-// barcodeId=1;
-// break;
-// case 109:
-// barcodeId=2;
-// break;
-// case 117:
-// barcodeId=3;
-// break;
-// case 201:
-// barcodeId=4;
-// break;
-// case 207:
-// barcodeId=5;
-// break;
-// case 213:
-// barcodeId=6;
-// break;
-// }
-// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId);
-// if(barcodeThread!=null){
-// //lfd鍏ュ簱鍗拌 褰搒tamp>=2鏃舵墠鍏ュ簱
-// staProtocol.setStamp(staProtocol.getStamp()+1);
-// log.info("{}绔欐湁鍙叆淇″彿鏃讹紝鏉$爜鍊间负{}", siteId, barcodeThread.getBarcode());
-// if(Cools.isEmpty(barcodeThread.getBarcode())){
-// staProtocol.setInEnable(false);//鏉$爜鏁版嵁涓虹┖鏃讹紝鍏堟竻涓�娆″唴瀛樼殑绔欑偣鍙叆淇″彿锛岀瓑寰呬笅涓�娆¤幏鍙栧彲鍏ヤ俊鍙�
-// }
-// }
-// }
+ if (!staProtocol.isPakMkTask() && !staProtocol.isLoading()) {
+ staProtocol.setPakMkTask(true);
+ }
+ }
+ }
+ ArrayList<Integer> staW = getStaNoW();
+
+ //鏉$爜
+// Thread.sleep(50);
+ OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB101.212",(short) (barcodeSize*8));
+ if (result2.IsSuccess) {
+ for (int i = 0; i < barcodeSize; i++) {
+ Integer siteId = staW.get(i); // 绔欑偣缂栧彿
+ StaProtocol staProtocol = station.get(siteId);
+ if (null == staProtocol) {
+ staProtocol = new StaProtocol();
+ station.put(siteId, staProtocol);
+ }
+ String barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,8, "UTF-8");
+ BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1+3*slave.getId());
+ if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) {
+ barcodeThread.setBarcode(barcode);
+ if (!Cools.isEmpty(barcode) && !barcode.equals("00000000")){
+ staProtocol.setBarcodeNow(barcode);
+ } else if (Cools.isEmpty(barcode)){
+ staProtocol.setBarcodeNow("-");
+ }
+ }
+
}
}
-// //RGV灏忚溅
-// Thread.sleep(200);
-// OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB100.160",(short)2);
-// if (result3.IsSuccess) {
-// Integer siteId = 16;
-// StaProtocol staProtocol = station.get(siteId);
-// if (null == staProtocol) {
-// staProtocol = new StaProtocol();
-// staProtocol.setSiteId(siteId);
-// station.put(siteId, staProtocol);
-// }
-// staProtocol.setNearbySta(String.valueOf(siemensS7Net.getByteTransform().TransInt16(result3.Content, 0)));
-// }
+ //鏉$爜
+// Thread.sleep(50);
+ OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB101.200",(short) (staW.size()*4));
+ if (result3.IsSuccess) {
+ for (int i = 0; i < staW.size(); i++) {
+ Integer siteId = staW.get(i); // 绔欑偣缂栧彿
+ StaProtocol staProtocol = station.get(siteId);
+ if (null == staProtocol) {
+ staProtocol = new StaProtocol();
+ station.put(siteId, staProtocol);
+ }
+ staProtocol.setSiteId(siteId);
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(result3.Content, i*4 + 2, 2);
+ staProtocol.setFrontErr(status[0]); // 鍓嶈秴闄�
+ staProtocol.setBackErr(status[1]); // 鍚庤秴闄�
+ staProtocol.setHighErr(status[2]); // 楂樿秴闄�
+ staProtocol.setLeftErr(status[3]); // 宸﹁秴闄�
+ staProtocol.setRightErr(status[4]); // 鍙宠秴闄�
+ staProtocol.setWeightErr(status[5]); // 瓒呴噸
+ staProtocol.setBarcodeErr(status[6]); // 鎵爜澶辫触
+ }
+ }
+ try{
+ OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.922.0",(short) (staNoSize*4));
+ if (resultErr.IsSuccess){
+ for (int i = 0; i < staNoSize; i++) {
+ Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
+ StaProtocol staProtocol = station.get(siteId);
+ if (null == staProtocol) {
+ staProtocol = new StaProtocol();
+ staProtocol.setSiteId(siteId);
+ station.put(siteId, staProtocol);
+ }
+ staProtocol.setSiteId(siteId);
+ boolean[] statusErr = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i*4, 1);
+ staProtocol.setErrOther1(statusErr[0]); // 鐢佃矾淇濇姢鍣ㄦ柇寮�
+ staProtocol.setErrOther2(statusErr[1]); // 鍏夌數寮傚父
+ staProtocol.setErrOther3(statusErr[2]); // 杩愯瓒呮椂
+ staProtocol.setErrOther4(statusErr[3]); // 鍗犱綅瓒呮椂
+ staProtocol.setErrOther5(statusErr[4]); // 鏈変换鍔℃棤璐ф晠闅�
+ staProtocol.setErrOther6(statusErr[5]); // 鍙橀鍣ㄦ晠闅�
+ staProtocol.setErrOther7(statusErr[6]); // 鎺ヨЕ鍣ㄦ晠闅�
+ staProtocol.setErrOther8(statusErr[7]); // 椤跺崌鐢垫満鎺ヨЕ鍣ㄦ晠闅�
+ }
+ }
+ } catch (Exception e){
- if (result.IsSuccess && result1.IsSuccess) {
+ }
+
+ if (result.IsSuccess) {
OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
@@ -344,21 +426,32 @@
StaProtocol staProtocol = station.get(siteId);
basDevps.add(staProtocol.toSqlModel());
}
-
- BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
- if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) {
- throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�");
+ try{
+ BasDevpService basDevpService = SpringUtils.getBean(BasDevpService.class);
+ if (null != basDevpService && !basDevpService.updateBatchById(basDevps)) {
+ throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�");
+ }
+ } catch (Exception e){
+// log.error("e:"+e.getMessage());
}
+
} catch (Exception e) {
- initSite();
e.printStackTrace();
OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戞洿鏂版暟鎹簱鏁版嵁澶辫触 ===>> [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("鏇存柊鏁版嵁搴撴暟鎹け璐� ===>> [id:{}] [ip:{}] [port:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
}
+// try{
+// DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+// deviceErrorService.deleteDeviceError("devp", slave.getId());
+// } catch (Exception e){
+//// log.error("e:"+e.getMessage());
+// }
} 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:{}] [rack:{}] [slot:{}]", slave.getId(), slave.getIp(), slave.getPort(), slave.getRack(), slave.getSlot());
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("devErr", slave.getId(), "璇诲彇杈撻�佺嚎plc鐘舵�佷俊鎭け璐�");
}
}
@@ -370,27 +463,110 @@
return;
}
ArrayList<Integer> staNos = getStaNo();
+
int index = staNos.indexOf(staProtocol.getSiteId());
- short[] array = new short[2];
- array[0] = staProtocol.getWorkNo();
- array[1] = staProtocol.getStaNo();
-// OperateResult write = siemensS7Net.Write("DB100." + index*4, array);
- OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
- Thread.sleep(500);
- OperateResult write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo()); // 鐩爣绔�
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("devWrite", staProtocol.getSiteId(), "鍗曠珯鐐瑰啓鍏ワ細浠诲姟鍙�:"+staProtocol.getWorkNo()+";鐩爣绔�:"+staProtocol.getStaNo());
+ } catch (Exception e2){
+ }
- if (!write.IsSuccess) {
+ OperateResult writeResult;
+ //浠诲姟涓嬪彂娆℃暟
+ int writeCount = 0;
+ //浠诲姟涓嬪彂鎴愬姛鏍囪瘑
+ boolean writeFlag = false;
+ while(writeCount < 5){
+ OperateResult writeResult2 = siemensS7Net.Write("DB100." + (index*6+4), staProtocol.getStaNo().shortValue()); // 鐩爣绔�
+ OperateResult writeResult1 = siemensS7Net.Write("DB100." + index*6, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
+ if(writeResult1.IsSuccess && writeResult2.IsSuccess){
+ Thread.sleep(200);
+ OperateResultExOne<byte[]> readResult = siemensS7Net.Read("DB100.0" + index*6, (short)4);
+
+ if(readResult.IsSuccess){
+ Integer workNo = siemensS7Net.getByteTransform().TransInt32(readResult.Content, 0);
+// short staNo = siemensS7Net.getByteTransform().TransInt16(readResult.Content, 2);
+ if(staProtocol.getWorkNo().equals(workNo)){
+ //浠诲姟鍛戒护鍐欏叆鎴愬姛
+ writeFlag = true;
+ log.info("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝骞朵笖鍥炶鎴愬姛銆傝緭閫佺嚎plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ break;
+ } else {//杩斿洖缁撴灉鏄垚鍔熶簡锛屼絾鏄湡瀹炲�间笉鐩稿悓
+ writeCount++;
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝浣嗘槸璇诲彇浠诲姟鍊间笉涓�鑷淬�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}",
+ slave.getId(), JSON.toJSON(staProtocol),writeCount));
+ log.error("鍐欏叆杈撻�佺嚎鍛戒护鍚庤繑鍥炴垚鍔燂紝浣嗘槸璇诲彇浠诲姟鍊间笉涓�鑷淬�傝緭閫佺嚎plc缂栧彿={}锛寋}锛屽啓鍏ユ鏁�={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("devErr", staProtocol.getSiteId(), "鍐欏叆娆℃暟"+writeCount+"鍐欏叆鍚庤鍙栦换鍔″�间笉涓�鑷�:"+"鍗曠珯鐐瑰啓鍏ワ細浠诲姟鍙�:"+staProtocol.getWorkNo()+";鐩爣绔�:"+staProtocol.getStaNo());
+ } catch (Exception e2){
+ }
+ }
+ } else {
+ writeCount++;
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护鍚庤鍙栧け璐ャ�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}",
+ slave.getId(), JSON.toJSON(staProtocol), writeCount));
+ log.error("鍐欏叆杈撻�佺嚎鍛戒护鍚庤鍙栧け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("devErr", staProtocol.getSiteId(), "鍐欏叆娆℃暟"+writeCount+"鍐欏叆杈撻�佺嚎鍛戒护鍚庤鍙栧け璐�:"+"鍗曠珯鐐瑰啓鍏ワ細浠诲姟鍙�:"+staProtocol.getWorkNo()+";鐩爣绔�:"+staProtocol.getStaNo());
+ } catch (Exception e2){
+ }
+ }
+ } else {
+ writeCount++;
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2},鍐欏叆娆℃暟={3}",
+ slave.getId(), JSON.toJSON(staProtocol),writeCount));
+ log.error("鍐欏叆杈撻�佺嚎鍛戒护澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={},鍐欏叆娆℃暟={}", slave.getId(), JSON.toJSON(staProtocol), writeCount);
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("devErr", staProtocol.getSiteId(), "鍐欏叆娆℃暟"+writeCount+"鍐欏叆杈撻�佺嚎鍛戒护澶辫触:"+"鍗曠珯鐐瑰啓鍏ワ細浠诲姟鍙�:"+staProtocol.getWorkNo()+";鐩爣绔�:"+staProtocol.getStaNo());
+ } catch (Exception e2){
+ }
+ //鏇存柊鎸囦护鏃ュ織
+// commandInfoLog.setDeviceLog("鎸囦护涓嬪彂澶辫触");
+// commandInfoLogService.insert(commandInfoLog);
+ }
+ Thread.sleep(200);
+ }
+
+ //鍐欏懡浠ゅ皾璇曚簡5娆¤繕鏄け璐ヤ簡
+ if(!writeFlag){
staProtocol = station.get(staProtocol.getSiteId());
if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) {
staProtocol.setPakMk(true);
}
- OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
- log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎鍛戒护灏濊瘯5娆″け璐ャ�傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", slave.getId(), JSON.toJSON(staProtocol)));
+ log.error("鍐欏叆杈撻�佺嚎鍛戒护灏濊瘯5娆″け璐ャ�傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", slave.getId(), JSON.toJSON(staProtocol));
+ try{
+ DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class);
+ deviceErrorService.addDeviceError("devErr", staProtocol.getSiteId(), "鍐欏叆娆℃暟"+writeCount+"鍐欏叆杈撻�佺嚎鍛戒护灏濊瘯5娆″け璐�:"+"鍗曠珯鐐瑰啓鍏ワ細浠诲姟鍙�:"+staProtocol.getWorkNo()+";鐩爣绔�:"+staProtocol.getStaNo());
+ } catch (Exception e2){
+ }
+ //閲嶆柊娣诲姞鏁版嵁鍒颁换鍔¢槦鍒�
+ boolean result = MessageQueue.offer(SlaveType.Devp, slave.getId(), new Task(2, staProtocol));
+ read();//璇诲彇1娆¤澶囩姸鎬�
+ return;
} else {
- OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 杈撻�佺嚎鍛戒护涓嬪彂 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
- log.info("杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}", slave.getId(), JSON.toJSON(staProtocol));
+ OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 杈撻�佺嚎鍛戒护涓嬪彂鎴愬姛 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(staProtocol)));
+ log.info("杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂鎴愬姛锛� {}", slave.getId(), JSON.toJSON(staProtocol));
+
+ Integer siteId = staProtocol.getSiteId();
+ staProtocol = station.get(siteId);
+ if ((siteId == 101 || siteId == 201)&&(staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0)) {
+ staProtocol.setPakMk(true);
+ }
+
+ //鏇存柊浠诲姟姝ュ簭
+ TaskWrkService taskWrkService = SpringUtils.getBean(TaskWrkService.class);
+ TaskWrk taskWrk = taskWrkService.selectByTaskNo(staProtocol.getWorkNo());
+ if (taskWrk != null) {
+ taskWrk.setCommandStep(taskWrk.getCommandStep() + 1);//鏇存柊鎸囦护姝ュ簭
+ taskWrkService.updateById(taskWrk);
+ }
}
+
}
// 鏇存柊鍏ュ嚭搴撴ā寮�
@@ -422,10 +598,67 @@
* 璁剧疆鍏ュ簱鏍囪
*/
@Override
- public void setPakMk(Integer siteId, boolean pakMk) {
+ public void setPakMk(Integer siteId, boolean pakMk,Integer i) {
StaProtocol staProtocol = station.get(siteId);
if (null != staProtocol) {
+ log.info("閿佸畾鍏ュ簱鏍囪锛岀珯鐐瑰彿={};pakMk={};鏃堕棿={};鏍囪={}",siteId,pakMk,new Date(),i);
staProtocol.setPakMk(pakMk);
+ }
+ }
+
+
+ /**
+ * 璁剧疆鍏ュ簱鏍囪
+ */
+ @Override
+ public void setPakMkTask(Integer siteId, boolean pakMk) {
+ StaProtocol staProtocol = station.get(siteId);
+ if (null != staProtocol) {
+ staProtocol.setPakMkTask(pakMk);
+ }
+ }
+
+
+ /**
+ * 璁剧疆鍏ュ簱鏍囪
+ */
+ @Override
+ public void setPakMkRun(Integer siteId, boolean pakMk) {
+ StaProtocol staProtocol = station.get(siteId);
+ if (null != staProtocol) {
+ staProtocol.setPakMkRun(pakMk);
+ }
+ }
+ /**
+ * 璁剧疆鍏ュ簱鏍囪
+ */
+ @Override
+ public void setPakMkWalk(Integer siteId, boolean pakMkWalk) {
+ StaProtocol staProtocol = station.get(siteId);
+ if (null != staProtocol) {
+ staProtocol.setPakMkWalk(pakMkWalk);
+ }
+ }
+
+ /**
+ * 璁剧疆鍏ュ簱鏍囪
+ */
+ @Override
+ public void setGrossWt(Integer siteId, Double grossWt) {
+ StaProtocol staProtocol = station.get(siteId);
+ if (null != staProtocol) {
+ staProtocol.setGrossWt(grossWt);
+ }
+ }
+
+ /**
+ * 璁剧疆鍏ュ簱鏍囪
+ */
+ @Override
+ public void setErrorDev(Integer siteId, String msgErr) {
+ StaProtocol staProtocol = station.get(siteId);
+ if (null != staProtocol) {
+ staProtocol.setErrorDev(msgErr);
}
}
@@ -435,37 +668,22 @@
}
public static void main(String[] args) {
- System.out.println(staNos1.indexOf(129));
- System.out.println(staNos1.size());
- for (int i = 0; i<staNos1.size(); i++) {
-// System.out.println(i*2);
-// System.out.println(i*2 + 200);
-// System.out.println(i);
+ ArrayList<Integer> staNos = staNos1;
+ System.out.println(staNos.indexOf(129));
+ System.out.println(staNos.size());
+ for (int i = 0; i<staNos.size(); i++) {
}
- int index = staNos1.indexOf(128);
+ 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));
-//
-// }
+
+ /**
+ * 娓呴櫎浣滀笟鍚姩涓�
+ */
+ @Override
+ public void setWrkSign() {
+ }
}
--
Gitblit v1.9.1