From b466b3135cd7f3b08f570efda0ffb691daff5270 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期五, 05 十二月 2025 18:15:16 +0800
Subject: [PATCH] 一期输送线代码及AGV请求等

---
 项目代码/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskReqContent.cs              |   65 +++++++++++++
 项目代码/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskFlowDTO.cs                 |    3 
 项目代码/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs            |    2 
 项目代码/WCSServices/WIDESEAWCS_Tasks/一期线体/ConveyorLineJob1.cs            |   71 ++++++++++++-
 项目资料/一期对接相关资料/哈尔滨一期输送线对接协议modbusTcp协议V1.1.xlsx                        |    0 
 项目资料/AGV通信文档/WCS与RCS安全交互接口文档V1.6_11_13.pdf                            |    0 
 项目代码/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs |   31 ++++-
 项目代码/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskRequestDTO.cs              |   50 ++++++++++
 项目代码/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs   |   68 +++++++++++++
 9 files changed, 275 insertions(+), 15 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskFlowDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskFlowDTO.cs"
index e38c2ff..3cb9f1a 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskFlowDTO.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskFlowDTO.cs"
@@ -6,6 +6,9 @@
 
 namespace WIDESEAWCS_DTO.Agv
 {
+    /// <summary>
+    /// AGV浠诲姟鏀捐
+    /// </summary>
     public class AgvTaskFlowDTO
     {
         /// <summary>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskReqContent.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskReqContent.cs"
new file mode 100644
index 0000000..2aafa3b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskReqContent.cs"
@@ -0,0 +1,65 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core;
+
+namespace WIDESEAWCS_DTO.Agv
+{
+    public class DataResult
+    {
+        /// <summary>
+        /// 璇锋眰缁撴灉锛�0銆佺姝紱1銆佸厑璁革紱
+        /// </summary>
+        public string Result { get; set; }
+    }
+    /// <summary>
+    /// AGV浠诲姟璇锋眰杩斿洖(鍙栨斁)
+    /// </summary>
+    public class AgvTaskReqContent
+    {
+        /// <summary>
+        /// 璇锋眰缂栧彿
+        /// </summary>
+        public string ReqCode { get; set; }
+        /// <summary>
+        /// 杩斿洖鐮�, 鎴愬姛 0锛屽け璐� 1
+        /// </summary>
+        public string Code { get; set; }
+        /// <summary>
+        /// success 鎴栬�呭紓甯稿師鍥�
+        /// </summary>
+        public string Message { get; set; }
+        /// <summary>
+        /// 缁撴灉瀵硅薄
+        /// </summary>
+        public DataResult Data { get; set; }
+
+        public AgvTaskReqContent() 
+        { 
+
+        }
+        public AgvTaskReqContent OK()
+        {
+            Code = "0";
+            Message = "success";
+            Data = new DataResult()
+            {
+                Result = "1"
+            };
+            return this;
+        }
+
+        public AgvTaskReqContent Error(string message = "")
+        {
+            Code = "1";
+            Message = message;
+            Data = new DataResult()
+            {
+                Result = "0"
+            };
+            return this;
+        }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskRequestDTO.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskRequestDTO.cs"
new file mode 100644
index 0000000..4f4b05f
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_DTO/Agv/AgvTaskRequestDTO.cs"
@@ -0,0 +1,50 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEAWCS_DTO.Agv
+{
+    /// <summary>
+    /// AGV浠诲姟璇锋眰(鍙栨斁)
+    /// </summary>
+    public class AgvTaskRequestDTO
+    {
+        /// <summary>
+        /// 璇锋眰缂栧彿
+        /// </summary>
+        public string ReqCode { get; set; }
+        /// <summary>
+        /// 璇锋眰鏃堕棿鎴�
+        /// </summary>
+        public string ReqTime { get; set; }
+        /// <summary>
+        /// 浠诲姟缂栧彿
+        /// </summary>
+        public string TaskId { get; set; }
+        /// <summary>
+        /// 鏈哄櫒浜虹紪鍙�
+        /// </summary>
+        public string RobotId { get; set; }
+        /// <summary>
+        /// 浣嶇疆缂栧彿
+        /// </summary>
+        public string PositionId { get; set; }
+        /// <summary>
+        /// 鏂欑缂栧彿
+        /// </summary>
+        public string ContainerCode { get; set; }
+        /// <summary>
+        /// 璇锋眰鑺傜偣
+        /// 1锛氬甫杞借姹傝繘鍏ワ紙鑳岀潃鏂欒溅杩涘叆锛夛紱<br/>
+        /// 2锛氱┖杞借姹傝繘鍏ワ紙涓嶅甫鏂欒溅杩涘叆锛夛紱<br/>
+        /// 3锛氳姹傜寮�锛�<br/>
+        /// 4锛氳姹傛斁鏂欙紱<br/>
+        /// 5锛氳姹傚彇鏂欙紱<br/>
+        /// 6锛氶�氱煡 PLC 鎶曟枡锛�<br/>
+        /// 7锛氶�氱煡 PLC 鎺ユ枡锛�<br/>
+        /// </summary>
+        public string Action { get; set; }
+    }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs"
index 9dac38a..8b7602e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs"
@@ -15,6 +15,7 @@
 using WIDESEAWCS_Core.LogHelper;
 using WIDESEAWCS_DTO;
 using WIDESEAWCS_DTO.Agv;
+using WIDESEAWCS_DTO.TaskInfo;
 using WIDESEAWCS_IBasicInfoRepository;
 using WIDESEAWCS_ITaskInfoRepository;
 using WIDESEAWCS_ITaskInfoService;
@@ -86,6 +87,73 @@
             }
             return content;
         }
+        /// <summary>
+        /// AGV浠诲姟璇锋眰
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("WorkRequest"), AllowAnonymous]
+        public AgvTaskReqContent WorkRequest([FromBody] AgvTaskRequestDTO agvTaskRequestDTO)
+        {
+            AgvTaskReqContent content = new AgvTaskReqContent();
+            try
+            {
+                //鑾峰彇浠诲姟
+                Dt_Task? taskExist = _taskRepository.QueryFirst(x=>x.PalletCode==agvTaskRequestDTO.ContainerCode) ?? throw new Exception($"鏈壘鍒版枡绠眥agvTaskRequestDTO.ContainerCode}浠诲姟");
+                //鑾峰彇绔欏彴
+                Dt_StationManger? stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == agvTaskRequestDTO.PositionId) ?? throw new Exception($"鏈壘鍒皗agvTaskRequestDTO.PositionId}绔欏彴浣嶇疆");
+                IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManger.StationDeviceCode) ?? throw new Exception($"鏈壘鍒板搴旇澶噞stationManger.StationDeviceCode}");
 
+                OtherDevice commonConveyorLine = (OtherDevice)device;
+
+                if (stationManger.StationType==StationTypeEnum.StationType_OnlyOutbound.ObjToInt())
+                {
+                    short IsPut = commonConveyorLine.Communicator.Read<short>("0");
+                    if (IsPut != 256) throw new Exception($"{agvTaskRequestDTO.PositionId}绂佹鏀剧");
+                }
+                else
+                {
+                    short IsTake = commonConveyorLine.Communicator.Read<short>("11");
+                    if (IsTake != 256) throw new Exception($"{agvTaskRequestDTO.PositionId}绂佹鍙栫");
+                }
+                content.OK();
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+        /// <summary>
+        /// AGV浣滀笟瀹屾垚
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost, HttpGet, Route("WorkFinish"), AllowAnonymous]
+        public AgvTaskReqContent WorkFinish([FromBody] AgvTaskRequestDTO agvTaskRequestDTO)
+        {
+            AgvTaskReqContent content = new AgvTaskReqContent();
+            try
+            {
+                //鑾峰彇绔欏彴
+                Dt_StationManger? stationManger = _stationMangerRepository.QueryFirst(x => x.StationCode == agvTaskRequestDTO.PositionId) ?? throw new Exception($"鏈壘鍒皗agvTaskRequestDTO.PositionId}绔欏彴浣嶇疆");
+                IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == stationManger.StationDeviceCode) ?? throw new Exception($"鏈壘鍒板搴旇澶噞stationManger.StationDeviceCode}");
+
+                OtherDevice commonConveyorLine = (OtherDevice)device;
+
+                if (stationManger.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt())
+                {
+                    commonConveyorLine.Communicator.Write("21", (short)256);
+                }
+                else
+                {
+                    commonConveyorLine.Communicator.Write("23", (short)256);
+                }
+                content.OK();
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
     }
 }
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
index 64f2b29..6c5807b 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Server/Controllers/Task/TaskController.cs"
@@ -2,6 +2,7 @@
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
+using System.Text;
 using WIDESEAWCS_Common.TaskEnum;
 using WIDESEAWCS_Core;
 using WIDESEAWCS_Core.BaseController;
@@ -71,15 +72,31 @@
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒板搴旇澶噞stationManger.StationDeviceCode}");
                 }
-                CommonConveyorLine commonConveyorLine = (CommonConveyorLine)device;
-                string PickBarCode = commonConveyorLine.GetValue<ConveyorLineDBName, string>(ConveyorLineDBName.R_PickBarCode, stationManger.StationCode).Trim();
-                if (containerFlowDTO.ContainerCode!= PickBarCode) throw new Exception($"浼犲叆鏂欑鐮亄containerFlowDTO.ContainerCode}锛岃緭閫佹枡绠辩爜{PickBarCode}鏁版嵁閿欒");
-                if (containerFlowDTO.Direction=="100")
+                if (stationManger.StationDeviceCode== "CL1" || stationManger.StationDeviceCode == "CL2")
                 {
-                    WebResponseContent responseContent = Service.ContainerFlow(containerFlowDTO, stationManger.StationDeviceCode);
-                    if (!responseContent.Status) throw new Exception(responseContent.Message);
+                    OtherDevice commonConveyorLine = (OtherDevice)device;
+                    byte[] bytesPick = commonConveyorLine.Communicator.Read("12", 5);
+                    string PickBarCode = Encoding.UTF8.GetString(bytesPick).Replace("\0", "").Replace("\\0", "");
+                    if (containerFlowDTO.ContainerCode != PickBarCode) throw new Exception($"浼犲叆鏂欑鐮亄containerFlowDTO.ContainerCode}锛岃緭閫佹枡绠辩爜{PickBarCode}鏁版嵁閿欒");
+                    if (containerFlowDTO.Direction == "100")
+                    {
+                        WebResponseContent responseContent = Service.ContainerFlow(containerFlowDTO, stationManger.StationDeviceCode);
+                        if (!responseContent.Status) throw new Exception(responseContent.Message);
+                    }
+                    commonConveyorLine.Communicator.Write("22", (short)(containerFlowDTO.Direction == "100" ? 256 : 512));
                 }
-                commonConveyorLine.SetValue(ConveyorLineDBName.W_PickToHode,(short)containerFlowDTO.Direction.ObjToInt(), stationManger.StationCode);
+                else
+                {
+                    CommonConveyorLine commonConveyorLine = (CommonConveyorLine)device;
+                    string PickBarCode = commonConveyorLine.GetValue<ConveyorLineDBName, string>(ConveyorLineDBName.R_PickBarCode, stationManger.StationCode).Trim();
+                    if (containerFlowDTO.ContainerCode != PickBarCode) throw new Exception($"浼犲叆鏂欑鐮亄containerFlowDTO.ContainerCode}锛岃緭閫佹枡绠辩爜{PickBarCode}鏁版嵁閿欒");
+                    if (containerFlowDTO.Direction == "100")
+                    {
+                        WebResponseContent responseContent = Service.ContainerFlow(containerFlowDTO, stationManger.StationDeviceCode);
+                        if (!responseContent.Status) throw new Exception(responseContent.Message);
+                    }
+                    commonConveyorLine.SetValue(ConveyorLineDBName.W_PickToHode, (short)containerFlowDTO.Direction.ObjToInt(), stationManger.StationCode);
+                }
                 content.OK();
             }
             catch (Exception ex)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
index b640cce..f501dc9 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_TaskInfoService/TaskService.cs"
@@ -223,7 +223,7 @@
             {
                 lock (lock_requestInTask)
                 {
-                    Dt_Task task = BaseDal.QueryFirst(x => x.PalletCode == barCode && x.NextAddress == stationCode && x.TaskState == TaskStatusEnum.CL_Executing.ObjToInt());
+                    Dt_Task task = BaseDal.QueryFirst(x => x.PalletCode == barCode && x.TaskType==TaskTypeEnum.Inbound.ObjToInt() && x.NextAddress == stationCode && x.TaskState == TaskStatusEnum.CL_Executing.ObjToInt());
                     if (task == null) throw new Exception($"{barCode}鏂欑鏈壘鍒颁换鍔�!");
                     Dt_LocationInfo? locationInfo = _locationInfoService.AssignLocation();
                     if (locationInfo == null) throw new Exception($"鍙敤璐т綅涓嶈冻!");
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/\344\270\200\346\234\237\347\272\277\344\275\223/ConveyorLineJob1.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/\344\270\200\346\234\237\347\272\277\344\275\223/ConveyorLineJob1.cs"
index 35a4301..e821c77 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/\344\270\200\346\234\237\347\272\277\344\275\223/ConveyorLineJob1.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCSServices/WIDESEAWCS_Tasks/\344\270\200\346\234\237\347\272\277\344\275\223/ConveyorLineJob1.cs"
@@ -2,6 +2,7 @@
 using Microsoft.AspNetCore.Components.Routing;
 using Newtonsoft.Json;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
 using Quartz;
 using System;
 using System.Collections.Generic;
@@ -9,6 +10,7 @@
 using System.Linq;
 using System.Reflection.Metadata;
 using System.Text;
+using System.Text.Unicode;
 using System.Threading.Tasks;
 using WIDESEAWCS_Common;
 using WIDESEAWCS_Common.Helper;
@@ -54,7 +56,16 @@
             _routerService = routerService;
             _routerExtension = routerExtension;
         }
-
+        /*
+        1鍙蜂綅鍑哄簱鍙e厑璁告斁绠�        0
+        1鍙蜂綅鏀剧瀹屾垚淇″彿          21
+        6鍙蜂綅鎷i�変綅鏂欑鍒拌揪        1
+        6鍙蜂綅鎷i�変綅鏂欑鏉$爜        2
+        6鍙蜂綅鎷i�変綅鏂欑娴佸姩        22
+        8鍙蜂綅鍏ュ簱鍙e厑璁稿彇绠�        11
+        8鍙蜂綅鍏ュ簱鍙f枡绠辨潯鐮�        12
+        8鍙蜂綅鏈哄櫒浜哄彇绠卞畬鎴�        23
+        */
         public Task Execute(IJobExecutionContext context)
         {
             try
@@ -65,13 +76,59 @@
                     OtherDevice device = (OtherDevice)value;
                     List<Dt_StationManger> stationMangers = _stationMangerRepository.QueryData(x => x.StationDeviceCode == device.DeviceCode);
                     
-                    foreach (var item in stationMangers)
+                    foreach (var station in stationMangers)
                     {
-                        byte[] bytesPut = device.Communicator.Read("22", 1);
-                       ;
-                        device.Communicator.Write("22", new byte[] { 2, 0 });
-                        byte[] bytesPuted = device.Communicator.Read("22",1);
-                        device.Communicator.Write("22", new byte[] { 0, 0 });
+                        if (station.StationType == StationTypeEnum.StationType_OnlyOutbound.ObjToInt())
+                        {
+
+                            //鎷i�夌敵璇�
+                            short pickArrived = device.Communicator.Read<short>("1");
+                            if (pickArrived == 256)
+                            {
+                                byte[] bytesPick = device.Communicator.Read("2", 5);
+                                string pickBarCode = Encoding.UTF8.GetString(bytesPick).Replace("\0", "").Replace("\\0", "");
+                                //涓婃姤WMS鏂欑鍒拌揪
+                                if (pickBarCode.IsNotEmptyOrNull())
+                                {
+                                    WebResponseContent content = _taskService.WMSPickUp(station.PickStationCode, pickBarCode);
+                                    if (content.Status)
+                                    {
+                                        WriteInfo(device.DeviceCode, $"{station.PickStationCode}鎷i�夌敵璇蜂笂鎶ユ垚鍔焮pickBarCode}");
+                                    }
+                                    else
+                                    {
+                                        WriteError(device.DeviceCode, $"{station.PickStationCode}鎷i�夌敵璇蜂笂鎶MS閿欒{pickBarCode}锛屼俊鎭瘂content.Message}");
+                                    }
+                                }
+                                else
+                                {
+                                    WriteError(device.DeviceCode, $"{station.PickStationCode}鎷i�夌敵璇蜂负{pickArrived}鏉$爜涓虹┖鍊�");
+                                }
+                            }
+                        }
+                        else
+                        {
+                            //鍏ュ簱鐢宠
+                            short InTake = device.Communicator.Read<short>("11");
+                            byte[] bytesIn = device.Communicator.Read("12", 5);
+                            string InBarCode = Encoding.UTF8.GetString(bytesIn).Replace("\0", "").Replace("\\0", "");
+                            if (InTake==256 && InBarCode.IsNotEmptyOrNull())
+                            {
+                                //鐢宠鍏ュ簱浠诲姟
+                                Dt_Task task = _taskRepository.QueryFirst(x => x.PalletCode == InBarCode && x.TaskType == TaskTypeEnum.Inbound.ObjToInt() && x.TaskState != TaskStatusEnum.CL_Executing.ObjToInt());
+                                if (task != null) continue;
+
+                                WebResponseContent content = _taskService.RequestInTask(station.StationCode, InBarCode);
+                                if (content.Status)
+                                {
+                                    WriteInfo(device.DeviceCode, $"绔欏彴{station.StationCode}鏂欑{InBarCode}鐢宠鍏ュ簱鎴愬姛");
+                                }
+                                else
+                                {
+                                    WriteError(device.DeviceCode, $"绔欏彴{station.StationCode}鏂欑{InBarCode}鐢宠鍏ュ簱浠诲姟閿欒锛屼俊鎭瘂content.Message}");
+                                }
+                            }
+                        }
                     }
                 }
             }
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/AGV\351\200\232\344\277\241\346\226\207\346\241\243/WCS\344\270\216RCS\345\256\211\345\205\250\344\272\244\344\272\222\346\216\245\345\217\243\346\226\207\346\241\243V1.6_11_13.pdf" "b/\351\241\271\347\233\256\350\265\204\346\226\231/AGV\351\200\232\344\277\241\346\226\207\346\241\243/WCS\344\270\216RCS\345\256\211\345\205\250\344\272\244\344\272\222\346\216\245\345\217\243\346\226\207\346\241\243V1.6_11_13.pdf"
new file mode 100644
index 0000000..9e2b48d
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/AGV\351\200\232\344\277\241\346\226\207\346\241\243/WCS\344\270\216RCS\345\256\211\345\205\250\344\272\244\344\272\222\346\216\245\345\217\243\346\226\207\346\241\243V1.6_11_13.pdf"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\344\270\200\346\234\237\345\257\271\346\216\245\347\233\270\345\205\263\350\265\204\346\226\231/\345\223\210\345\260\224\346\273\250\344\270\200\346\234\237\350\276\223\351\200\201\347\272\277\345\257\271\346\216\245\345\215\217\350\256\256modbusTcp\345\215\217\350\256\256V1.1.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\344\270\200\346\234\237\345\257\271\346\216\245\347\233\270\345\205\263\350\265\204\346\226\231/\345\223\210\345\260\224\346\273\250\344\270\200\346\234\237\350\276\223\351\200\201\347\272\277\345\257\271\346\216\245\345\215\217\350\256\256modbusTcp\345\215\217\350\256\256V1.1.xlsx"
index 910f2e3..8d4f950 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\344\270\200\346\234\237\345\257\271\346\216\245\347\233\270\345\205\263\350\265\204\346\226\231/\345\223\210\345\260\224\346\273\250\344\270\200\346\234\237\350\276\223\351\200\201\347\272\277\345\257\271\346\216\245\345\215\217\350\256\256modbusTcp\345\215\217\350\256\256V1.1.xlsx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\344\270\200\346\234\237\345\257\271\346\216\245\347\233\270\345\205\263\350\265\204\346\226\231/\345\223\210\345\260\224\346\273\250\344\270\200\346\234\237\350\276\223\351\200\201\347\272\277\345\257\271\346\216\245\345\215\217\350\256\256modbusTcp\345\215\217\350\256\256V1.1.xlsx"
Binary files differ

--
Gitblit v1.9.3