From 4e005e4936039fca16bfd1679942daa416a21986 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期四, 20 十一月 2025 14:27:47 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/network/real/ZyRgvRealConnect.java | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 114 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/zy/core/network/real/ZyRgvRealConnect.java b/src/main/java/com/zy/core/network/real/ZyRgvRealConnect.java
index f70729d..97a8ffc 100644
--- a/src/main/java/com/zy/core/network/real/ZyRgvRealConnect.java
+++ b/src/main/java/com/zy/core/network/real/ZyRgvRealConnect.java
@@ -1,38 +1,146 @@
package com.zy.core.network.real;
+import HslCommunication.Core.Types.OperateResult;
+import HslCommunication.Core.Types.OperateResultExOne;
+import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
+
+import java.text.MessageFormat;
+import java.util.Date;
+
+import com.alibaba.fastjson.JSON;
+import com.core.common.DateUtils;
+import com.core.common.SpringUtils;
+import com.zy.asrs.entity.BasCrnpOpt;
+import com.zy.asrs.entity.BasRgv;
+import com.zy.asrs.entity.BasRgvOpt;
import com.zy.asrs.entity.DeviceConfig;
+import com.zy.asrs.entity.DeviceDataLog;
+import com.zy.asrs.service.BasCrnpOptService;
+import com.zy.asrs.service.BasRgvOptService;
+import com.zy.asrs.service.BasRgvService;
+import com.zy.asrs.service.DeviceDataLogService;
+import com.zy.asrs.utils.Utils;
+import com.zy.core.News;
+import com.zy.core.cache.OutputQueue;
+import com.zy.core.enums.RgvStatusType;
import com.zy.core.model.CommandResponse;
import com.zy.core.model.command.RgvCommand;
+import com.zy.core.model.protocol.RgvProtocol;
import com.zy.core.network.api.ZyRgvConnectApi;
import com.zy.core.network.entity.ZyRgvStatusEntity;
public class ZyRgvRealConnect implements ZyRgvConnectApi {
- private final SiemensS7Net siemensNet;
- private final DeviceConfig deviceConfig;
- public ZyRgvRealConnect(SiemensS7Net siemensNet, DeviceConfig deviceConfig) {
- this.siemensNet = siemensNet;
+ private SiemensS7Net siemensNet;
+ private DeviceConfig deviceConfig;
+
+ public ZyRgvRealConnect(DeviceConfig deviceConfig) {
this.deviceConfig = deviceConfig;
}
@Override
public boolean connect() {
- return true;
+ boolean result = false;
+ siemensNet = new SiemensS7Net(SiemensPLCS.S1200, deviceConfig.getIp());
+ OperateResult connect = siemensNet.ConnectServer();
+ if(connect.IsSuccess){
+ result = true;
+ OutputQueue.RGV.offer(MessageFormat.format( "銆恵0}銆慠GV plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), deviceConfig.getId(), deviceConfig.getIp(), deviceConfig.getPort()));
+ News.info("RGV plc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", deviceConfig.getId(), deviceConfig.getIp(), deviceConfig.getPort());
+ } else {
+ OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慠GV plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), deviceConfig.getId(), deviceConfig.getIp(), deviceConfig.getPort()));
+ News.error("RGV plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", deviceConfig.getId(), deviceConfig.getIp(), deviceConfig.getPort());
+ }
+// siemensNet.ConnectClose();
+ return result;
}
@Override
public boolean disconnect() {
+ siemensNet.ConnectClose();
return true;
}
@Override
public ZyRgvStatusEntity getStatus() {
+ try {
+ OperateResultExOne<byte[]> result = siemensNet.Read("DB101.0", (short) 30);
+ if (result.IsSuccess) {
+ ZyRgvStatusEntity zyRgvStatusEntity = new ZyRgvStatusEntity();
+ zyRgvStatusEntity.setRgvNo(deviceConfig.getDeviceNo());
+ zyRgvStatusEntity.setMode((int) siemensNet.getByteTransform().TransInt16(result.Content, 0));
+ zyRgvStatusEntity.setStatus((int) siemensNet.getByteTransform().TransInt16(result.Content, 2));
+ zyRgvStatusEntity.setTaskNo((int) siemensNet.getByteTransform().TransInt16(result.Content, 4));
+ // zyRgvStatusEntity.setStatus((int) siemensNet.getByteTransform().TransInt16(result.Content, 6));
+ zyRgvStatusEntity.setLoaded((int) siemensNet.getByteTransform().TransInt16(result.Content, 8));
+ zyRgvStatusEntity.setRgvPos((int) siemensNet.getByteTransform().TransInt16(result.Content, 10));
+ zyRgvStatusEntity.setWalkPos((int) siemensNet.getByteTransform().TransInt16(result.Content, 12));
+ zyRgvStatusEntity.setAlarm((int) siemensNet.getByteTransform().TransInt16(result.Content, 14));
+
+ OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛", DateUtils.convert(new Date()), deviceConfig.getDeviceNo()));
+
+ return zyRgvStatusEntity;
+ } else {
+ OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), deviceConfig.getId(), deviceConfig.getIp(), deviceConfig.getPort()));
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戣鍙朢GV plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), deviceConfig.getId(), deviceConfig.getIp(), deviceConfig.getPort()));
+ }
return null;
}
@Override
public CommandResponse sendCommand(RgvCommand command) {
- return new CommandResponse(false, "not implemented");
+ CommandResponse response = new CommandResponse(false);
+ try {
+ if (null == command) {
+ response.setMessage("RGV鍐欏叆鍛戒护涓虹┖");
+ return response;
+ }
+
+ short[] array = new short[5];
+ array[0] = command.getAckFinish().shortValue();
+ array[1] = command.getTaskNo().shortValue();
+ array[2] = command.getTaskMode().shortValue();
+ array[3] = command.getSourcePos().shortValue();
+ array[4] = command.getTargetPos().shortValue();
+ OperateResult result = siemensNet.Write("DB100.0", array);
+
+ if (result != null && result.IsSuccess) {
+ News.info("RGV 鍛戒护涓嬪彂[id:{}] >>>>> {}", deviceConfig.getDeviceNo(), JSON.toJSON(command));
+ OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), deviceConfig.getDeviceNo(), JSON.toJSON(command)));
+ response.setResult(true);
+ return response;
+ } else {
+ OutputQueue.RGV.offer(MessageFormat.format("銆恵0}銆戝啓鍏GV plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), deviceConfig.getId(), deviceConfig.getIp(), deviceConfig.getPort()));
+ News.error("鍐欏叆RGV plc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", deviceConfig.getId(), deviceConfig.getIp(), deviceConfig.getPort());
+ response.setMessage("鍐欏叆RGV plc鏁版嵁澶辫触");
+ return response;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ // 鏃ュ織璁板綍
+ BasRgvOptService bean = SpringUtils.getBean(BasRgvOptService.class);
+ BasRgvOpt basRgvOpt = new BasRgvOpt(
+ command.getTaskNo(), // 浠诲姟鍙�
+ command.getRgvNo(), // RGV[闈炵┖]
+ new Date(), // 涓嬪彂鏃堕棿
+ String.valueOf(command.getTaskMode()), // 妯″紡
+ String.valueOf(command.getSourcePos()), //婧愬簱浣�
+ String.valueOf(command.getTargetPos()), //鐩爣搴撲綅
+ null, // 淇敼鏃堕棿
+ null, // 淇敼浜哄憳
+ null, // 澶囨敞
+ JSON.toJSONString(command), // 鎸囦护
+ JSON.toJSONString(getStatus()), // 绯荤粺鐘舵��
+ 1, // 涓嬪彂鐘舵�亄0:鏈笅鍙�,1:宸蹭笅鍙憓
+ JSON.toJSONString(response) // 鍝嶅簲
+ );
+ bean.insert(basRgvOpt);
+ }
+ return response;
}
}
\ No newline at end of file
--
Gitblit v1.9.1