diff --git a/Service/Execute/Model/FireProtectionRelocation.cs b/Service/Execute/Model/FireProtectionRelocation.cs
new file mode 100644
index 0000000..e483229
--- /dev/null
+++ b/Service/Execute/Model/FireProtectionRelocation.cs
@@ -0,0 +1,29 @@
+namespace Service.Execute.Model;
+///
+/// 消防移仓
+///
+public class FireProtectionRelocation
+{
+ ///
+ /// 任务类型
+ /// 0.无任务
+ /// 1.换电任务
+ /// 2.移舱任务
+ /// 3.移出任务
+ /// 4.移入任务
+ /// 5.消防任务
+ ///
+ public ushort TaskType { get; set; }
+ ///
+ /// 入仓位选择
+ ///
+ public ushort EntrySelection { get; set; }
+ ///
+ /// 出仓位选择
+ ///
+ public ushort ExitSelection { get; set; }
+ ///
+ /// 电池包类型
+ ///
+ public ushort BatteryPackType { get; set; }
+}
\ No newline at end of file
diff --git a/Service/Plc/Client/PlcMgr.cs b/Service/Plc/Client/PlcMgr.cs
index bb84015..19434d0 100644
--- a/Service/Plc/Client/PlcMgr.cs
+++ b/Service/Plc/Client/PlcMgr.cs
@@ -1,4 +1,5 @@
using Autofac;
+using log4net;
using HslCommunication;
using HybirdFrameworkCore.Autofac;
using HybirdFrameworkCore.Utils;
@@ -346,7 +347,7 @@ public class PlcMgr
}
return bResult;
}
-
+ private static readonly ILog Log = LogManager.GetLogger(typeof(FireProtectionRelocation));
///
/// 消防移仓
///
@@ -354,22 +355,42 @@ public class PlcMgr
///
public static bool FireProtectionRelocation(ushort entrySelection)
{
+ //TODO::
bool bResult = false;
if (PlcClient != null)
{
- HostToPlc writeHostToPlc = new HostToPlc();
- writeHostToPlc.TaskType.Value = 5;
- writeHostToPlc.EntrySelection.Value = entrySelection;
- writeHostToPlc.ExitSelection.Value = 5;
- writeHostToPlc.BatteryPackType.Value = 0;
- //TODO:: 连续写多个寄存器 是否影响速度
- bool bResultTaskType = PlcClient.WriteValue(writeHostToPlc.TaskType);
- bool bResultEntrySelection = PlcClient.WriteValue(writeHostToPlc.EntrySelection);
- bool bResultExitSelection = PlcClient.WriteValue(writeHostToPlc.ExitSelection);
- bool bResultBatteryPackType = PlcClient.WriteValue(writeHostToPlc.BatteryPackType);
- if (bResultTaskType && bResultEntrySelection && bResultExitSelection && bResultBatteryPackType)
+ FireProtectionRelocation distributeTask = new()
+ {
+ TaskType = 5,
+ EntrySelection = entrySelection,
+ ExitSelection = 5,
+ BatteryPackType = 0
+ };
+ byte[] encode = ModelConvert.Encode(distributeTask);
+ //TODO::現在手動處理encode
+ for (int i = 0; i < encode.Length; i++)
+ {
+ if (i % 2 == 0)
+ {
+ var temp = encode[i + 1];
+ encode[i + 1] = encode[i];
+ encode[i] = temp;
+ }
+ }
+ //需要将数据转换成byte数组
+ OperateResult operateResult = PlcClient.Write("x=16;111",encode);
+
+ //查询人物状态
+ if (operateResult.IsSuccess)
{
- bResult = true;
+ bool readPlcTaskStatus9000 = false;
+ while (!readPlcTaskStatus9000)
+ {
+ Thread.Sleep(1000);
+ readPlcTaskStatus9000 = PlcMgr.ReadPlcTaskStatus() == 9000;
+ }
+
+ Log.Info($"execute FireProtectionRelocation success from EntrySelection ={distributeTask.EntrySelection}");
}
}
return bResult;