From 1d1eb53b10cf3e209e7f9c83fe427d0222c6e4f6 Mon Sep 17 00:00:00 2001 From: smartwyy <645583145@qq.com> Date: Sat, 25 May 2024 22:19:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9plc=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=EF=BC=8C=E8=B0=83=E6=95=B4=E4=BB=A3=E7=A0=81=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E5=92=8Cplc=E5=88=9D=E5=A7=8B=E5=8C=96=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BB=93=E4=BD=8D=E5=9C=A8=E4=BD=8D=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E7=9A=84=E5=AE=9A=E4=B9=89=E5=92=8C=E4=BD=BF=E7=94=A8=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E4=BB=93=E4=BD=8D=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Entity/DbModel/Station/BinInfo.cs | 398 +++++++++--------- .../Autofac/Attribute/ScopeAttribute.cs | 6 +- .../ModbusTcpMaster/ModbusTcpMaster.cs | 17 +- Repository/BaseRepository.cs | 7 +- Service/EquipmentInit.cs | 100 ----- Service/Execute/Api/PlcApi.cs | 2 +- Service/Init/Entity/PlcInfo.cs | 2 +- Service/Plc/Client/PlcClient.cs | 57 +++ Service/Plc/{ => Client}/PlcMgr.cs | 57 ++- Service/Plc/{ => Msg}/HostToPlc.cs | 10 +- Service/Plc/{ => Msg}/PlcFault.cs | 7 +- Service/Plc/{ => Msg}/PlcToHost.cs | 71 +--- WebStarter/Program.cs | 5 + .../Debug/net6.0/staticwebassets.build.json | 16 +- WinFormStarter/FrmPlc.cs | 1 - WinFormStarter/Program.cs | 4 - 16 files changed, 356 insertions(+), 404 deletions(-) delete mode 100644 Service/EquipmentInit.cs create mode 100644 Service/Plc/Client/PlcClient.cs rename Service/Plc/{ => Client}/PlcMgr.cs (76%) rename Service/Plc/{ => Msg}/HostToPlc.cs (98%) rename Service/Plc/{ => Msg}/PlcFault.cs (86%) rename Service/Plc/{ => Msg}/PlcToHost.cs (67%) diff --git a/Entity/DbModel/Station/BinInfo.cs b/Entity/DbModel/Station/BinInfo.cs index 9409db5..6aed776 100644 --- a/Entity/DbModel/Station/BinInfo.cs +++ b/Entity/DbModel/Station/BinInfo.cs @@ -1,7 +1,4 @@ -using System; -using System.Linq; -using System.Text; -using SqlSugar; +using SqlSugar; namespace Entity.DbModel.Station { @@ -11,201 +8,200 @@ namespace Entity.DbModel.Station [SugarTable("bin_info")] public partial class BinInfo { - public BinInfo(){ - - - } - /// - /// Desc:id - /// Default: - /// Nullable:False - /// - [SugarColumn(IsPrimaryKey=true,IsIdentity=true,ColumnName="id")] - public int Id {get;set;} - - /// - /// Desc:仓位编号 - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="no")] - public string No {get;set;} - - /// - /// Desc:仓位编码 - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="code")] - public string Code {get;set;} - - /// - /// Desc:仓位名称 - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="name")] - public string Name {get;set;} - - /// - /// Desc:在位状态:0-不在位;1-在位;2-无效 - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="exists")] - public int? Exists {get;set;} - - /// - /// Desc:电池编号 - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="battery_no")] - public string BatteryNo {get;set;} - - /// - /// Desc:充电机编号 - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="charger_no")] - public string ChargerNo {get;set;} - - /// - /// Desc:充电枪编号 - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="charger_gun_no")] - public string ChargerGunNo {get;set;} - - /// - /// Desc:水冷编号 - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="water_cool_no")] - public string WaterCoolNo {get;set;} - - /// - /// Desc:是否有电插头;0-无电插头;1-有电插头 - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="elec_plugin_flag")] - public int? ElecPluginFlag {get;set;} - - /// - /// Desc:电插头状态;0-未知;1-已经连接;2-未连接 - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="elec_plugin_status")] - public string ElecPluginStatus {get;set;} - - /// - /// Desc:是否有水插头;0-无水插头;1-有水插头 - /// Default: - /// Nullable:False - /// - [SugarColumn(ColumnName="water_plugin_flag")] - public string WaterPluginFlag {get;set;} - - /// - /// Desc:预约锁定;0-未锁定;1-锁定 - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="amt_lock")] - public int AmtLock {get;set;} - - /// - /// Desc:soc - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="soc")] - public decimal? Soc {get;set;} - - /// - /// Desc:soe - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="soe")] - public decimal? Soe {get;set;} - - /// - /// Desc:soh - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="soh")] - public decimal? Soh {get;set;} - - /// - /// Desc:电池入仓顺序 - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="battery_enter_seq")] - public int? BatteryEnterSeq {get;set;} - - /// - /// Desc:充电状态;0-未知;1-正在充电;2-无电池;3-禁用 - /// Default:0 - /// Nullable:True - /// - [SugarColumn(ColumnName="charge_status")] - public int? ChargeStatus {get;set;} - - /// - /// Desc:仓位状态;0-禁用;1-启用 - /// Default:1 - /// Nullable:True - /// - [SugarColumn(ColumnName="status")] - public int? Status {get;set;} - - /// - /// Desc:创建人 - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="created_by")] - public string CreatedBy {get;set;} - - /// - /// Desc:创建时间 - /// Default:CURRENT_TIMESTAMP - /// Nullable:True - /// - [SugarColumn(ColumnName="created_time")] - public DateTime? CreatedTime {get;set;} - - /// - /// Desc:更新人 - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="updated_by")] - public string UpdatedBy {get;set;} - - /// - /// Desc:最后结束充电时间 结束充电后更新 - /// Default: - /// Nullable:True - /// - [SugarColumn(ColumnName="last_charge_finish_time")] - public DateTime? LastChargeFinishTime {get;set;} - - /// - /// Desc:更新时间 - /// Default:CURRENT_TIMESTAMP - /// Nullable:True - /// - [SugarColumn(ColumnName="updated_time")] - public DateTime? UpdatedTime {get;set;} - + public BinInfo() + { + } + + /// + /// Desc:id + /// Default: + /// Nullable:False + /// + [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnName = "id")] + public int Id { get; set; } + + /// + /// Desc:仓位编号 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "no")] + public string No { get; set; } + + /// + /// Desc:仓位编码 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "code")] + public string Code { get; set; } + + /// + /// Desc:仓位名称 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "name")] + public string Name { get; set; } + + /// + /// Desc:在位状态:0-不在位;1-在位;2-无效 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "exists")] + public int Exists { get; set; } + + /// + /// Desc:电池编号 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "battery_no")] + public string BatteryNo { get; set; } + + /// + /// Desc:充电机编号 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "charger_no")] + public string ChargerNo { get; set; } + + /// + /// Desc:充电枪编号 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "charger_gun_no")] + public string ChargerGunNo { get; set; } + + /// + /// Desc:水冷编号 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "water_cool_no")] + public string WaterCoolNo { get; set; } + + /// + /// Desc:是否有电插头;0-无电插头;1-有电插头 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "elec_plugin_flag")] + public int? ElecPluginFlag { get; set; } + + /// + /// Desc:电插头状态;0-未知;1-已经连接;2-未连接 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "elec_plugin_status")] + public string ElecPluginStatus { get; set; } + + /// + /// Desc:是否有水插头;0-无水插头;1-有水插头 + /// Default: + /// Nullable:False + /// + [SugarColumn(ColumnName = "water_plugin_flag")] + public string WaterPluginFlag { get; set; } + + /// + /// Desc:预约锁定;0-未锁定;1-锁定 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "amt_lock")] + public int AmtLock { get; set; } + + /// + /// Desc:soc + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "soc")] + public decimal? Soc { get; set; } + + /// + /// Desc:soe + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "soe")] + public decimal? Soe { get; set; } + + /// + /// Desc:soh + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "soh")] + public decimal? Soh { get; set; } + + /// + /// Desc:电池入仓顺序 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "battery_enter_seq")] + public int? BatteryEnterSeq { get; set; } + + /// + /// Desc:充电状态;0-未知;1-正在充电;2-无电池;3-禁用 + /// Default:0 + /// Nullable:True + /// + [SugarColumn(ColumnName = "charge_status")] + public int? ChargeStatus { get; set; } + + /// + /// Desc:仓位状态;0-禁用;1-启用 + /// Default:1 + /// Nullable:True + /// + [SugarColumn(ColumnName = "status")] + public int? Status { get; set; } + + /// + /// Desc:创建人 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "created_by")] + public string CreatedBy { get; set; } + + /// + /// Desc:创建时间 + /// Default:CURRENT_TIMESTAMP + /// Nullable:True + /// + [SugarColumn(ColumnName = "created_time")] + public DateTime? CreatedTime { get; set; } + + /// + /// Desc:更新人 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "updated_by")] + public string UpdatedBy { get; set; } + + /// + /// Desc:最后结束充电时间 结束充电后更新 + /// Default: + /// Nullable:True + /// + [SugarColumn(ColumnName = "last_charge_finish_time")] + public DateTime? LastChargeFinishTime { get; set; } + + /// + /// Desc:更新时间 + /// Default:CURRENT_TIMESTAMP + /// Nullable:True + /// + [SugarColumn(ColumnName = "updated_time")] + public DateTime? UpdatedTime { get; set; } } -} +} \ No newline at end of file diff --git a/HybirdFrameworkCore/Autofac/Attribute/ScopeAttribute.cs b/HybirdFrameworkCore/Autofac/Attribute/ScopeAttribute.cs index 5e34d5a..2651c76 100644 --- a/HybirdFrameworkCore/Autofac/Attribute/ScopeAttribute.cs +++ b/HybirdFrameworkCore/Autofac/Attribute/ScopeAttribute.cs @@ -4,7 +4,11 @@ public class ScopeAttribute : System.Attribute { public readonly string Scope; - public ScopeAttribute(string scope) + /// + /// 向容器注入bean,默认单例模式 + /// + /// + public ScopeAttribute(string scope = "SingleInstance") { Scope = scope; } diff --git a/HybirdFrameworkDriver/ModbusTcpMaster/ModbusTcpMaster.cs b/HybirdFrameworkDriver/ModbusTcpMaster/ModbusTcpMaster.cs index 94b59ed..2787bca 100644 --- a/HybirdFrameworkDriver/ModbusTcpMaster/ModbusTcpMaster.cs +++ b/HybirdFrameworkDriver/ModbusTcpMaster/ModbusTcpMaster.cs @@ -12,7 +12,7 @@ public class ModbusTcpMaster private static readonly ILog Log = LogManager.GetLogger(typeof(ModbusTcpMaster)); - private ModbusTcpNet ModbusTcpNet; + private ModbusTcpNet? ModbusTcpNet; public string Ip { get; set; } = "127.0.0.1"; @@ -23,6 +23,11 @@ public class ModbusTcpMaster public int Duration { get; set; } = 1000; public bool Connected { get; set; } + /// + /// 自动重连开关 + /// + public bool AutoReConnect { get; set; } + public string connectId { get; set; } public MyReadAction? ReadAction { get; set; } @@ -36,8 +41,8 @@ public class ModbusTcpMaster public bool Connect() { + Thread.Sleep(Duration); GetLog().Info($"begin to connect {Ip}:{Port}"); - try { if (ModbusTcpNet == null) @@ -55,12 +60,20 @@ public class ModbusTcpMaster else { GetLog().Info($"connect {Ip}:{Port} failed {result.Message}"); + if (AutoReConnect) + { + return Connect(); + } } } } catch (Exception e) { GetLog().Error($"connect {Ip}:{Port} exception {e.Message}"); + if (AutoReConnect) + { + return Connect(); + } } return Connected; diff --git a/Repository/BaseRepository.cs b/Repository/BaseRepository.cs index 019e471..78023b2 100644 --- a/Repository/BaseRepository.cs +++ b/Repository/BaseRepository.cs @@ -1,5 +1,4 @@ using System.Linq.Expressions; -using Entity.Base; using Entity.Dto.Req; using HybirdFrameworkCore.Entity; using SqlSugar; @@ -915,6 +914,12 @@ public abstract class BaseRepository where T : class, new() .AnyAsync(expression); } + public int Update(Expression> columns, + Expression> expression) + { + return DbBaseClient.Updateable().SetColumns(columns).Where(expression).ExecuteCommand(); + } + public async Task UpdateAsync( Expression> columns, diff --git a/Service/EquipmentInit.cs b/Service/EquipmentInit.cs deleted file mode 100644 index e503c4a..0000000 --- a/Service/EquipmentInit.cs +++ /dev/null @@ -1,100 +0,0 @@ -using HybirdFrameworkCore.Autofac.Attribute; -using HybirdFrameworkDriver.ModbusTcpMaster; -using HybirdFrameworkDriver.Session; -using HybirdFrameworkServices.Plc; -using Newtonsoft.Json.Linq; -using Service.Execute.Api; -using Service.Init.Entity; -using Service.Plc; - -namespace Service -{ - [Scope("SingleInstance")] - public class EquipmentInit - { - /// - /// 连接所有数据 - /// - /// - public void Connect() - { - ConnectPlc(); - } - - /// - /// 连接PLC - /// - /// - /// - public int ConnectPlc() - { - Thread thread = new Thread(() => ConnectPlcAsync()); - thread.Start(); - - return 0; - } - - /// - /// 连接PLC - /// - private void ConnectPlcAsync() - { - bool connected = false; - - ModbusTcpMaster master = null; - //PLC连接 - while (!connected) - { - master = new ModbusTcpMaster() - { - Ip = "172.0.20.66", - Port = 502, - }; - master.ReadAction = BatchReadPlc; //启动线程一直读 - master.Duration = 3000; - connected = master.Connect(); - - if (connected) - { - PlcMgr.ModbusTcpMaster = master; - break; - } - - Thread.Sleep(5000); - } - } - - /** - * 一直读 - */ - private static void BatchReadPlc(ModbusTcpMaster master) - { - if (PlcMgr.ModbusTcpMaster!=null) - { - - - var bytes01 = master.BatchReadHolderRegister(1, 115); - if (bytes01 != null) - { - PlcMgr.DataValidityTime = DateTime.Now; - ModbusDecoder.Decode(bytes01, PlcMgr.HostToPlcData); - } - - var bytes02 = master.BatchReadHolderRegister(201, 222); - if (bytes02 != null) - { - PlcMgr.DataValidityTime = DateTime.Now; - ModbusDecoder.Decode(bytes02, PlcMgr.PlcToHostData); - } - - var bytes03 = master.BatchReadHolderRegister(701, 10); - if (bytes03 != null) - { - PlcMgr.DataValidityTime = DateTime.Now; - ModbusDecoder.Decode(bytes03, PlcMgr.PlcFaultData); - } - //OperateResult result2 = ModbusTcpNet.Read("x=3;201", 222); - } - } - } -} \ No newline at end of file diff --git a/Service/Execute/Api/PlcApi.cs b/Service/Execute/Api/PlcApi.cs index 488629b..37cae55 100644 --- a/Service/Execute/Api/PlcApi.cs +++ b/Service/Execute/Api/PlcApi.cs @@ -1,9 +1,9 @@ using HybirdFrameworkDriver.ModbusTcpMaster; -using HybirdFrameworkServices.Plc; using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; using Service.Cloud.Msg.Cloud.Req; using Service.Init.Entity; using Service.Plc; +using Service.Plc.Client; namespace Service.Execute.Api; diff --git a/Service/Init/Entity/PlcInfo.cs b/Service/Init/Entity/PlcInfo.cs index c3465a0..e536bbe 100644 --- a/Service/Init/Entity/PlcInfo.cs +++ b/Service/Init/Entity/PlcInfo.cs @@ -1,11 +1,11 @@ using DotNetty.Codecs.Mqtt.Packets; using HybirdFrameworkDriver.ModbusTcpMaster; using HybirdFrameworkDriver.Session; -using HybirdFrameworkServices.Plc; using Newtonsoft.Json.Linq; using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; using Pipelines.Sockets.Unofficial.Arenas; using System.Net.NetworkInformation; +using Service.Plc.Msg; namespace Service.Init.Entity { diff --git a/Service/Plc/Client/PlcClient.cs b/Service/Plc/Client/PlcClient.cs new file mode 100644 index 0000000..e14af51 --- /dev/null +++ b/Service/Plc/Client/PlcClient.cs @@ -0,0 +1,57 @@ +using HybirdFrameworkCore.Autofac.Attribute; +using HybirdFrameworkDriver.ModbusTcpMaster; +using Repository.Station; +using Service.Plc.Msg; + +namespace Service.Plc.Client; + +/// +/// +/// +[Scope] +public class PlcClient : ModbusTcpMaster +{ + private BinInfoRepository _binInfoRepository; + + public PlcClient(BinInfoRepository binInfoRepository) + { + ReadAction = BatchRead; + Ip = "172.0.20.66"; + Port = 502; + Duration = 2000; + AutoReConnect = true; + _binInfoRepository = binInfoRepository; + } + + private void BatchRead(ModbusTcpMaster master) + { + var bytes01 = master.BatchReadHolderRegister(1, 115); + if (bytes01 != null) + { + PlcMgr.DataValidityTime = DateTime.Now; + ModbusDecoder.Decode(bytes01, PlcMgr.HostToPlcData); + } + + var bytes02 = master.BatchReadHolderRegister(201, 222); + if (bytes02 != null) + { + PlcMgr.DataValidityTime = DateTime.Now; + ModbusDecoder.Decode(bytes02, PlcMgr.PlcToHostData); + _binInfoRepository.Update(it => it.Exists == PlcMgr.PlcToHostData.MaterialDetec01.Value, it => it.No == "1"); + _binInfoRepository.Update(it => it.Exists == PlcMgr.PlcToHostData.MaterialDetec02.Value, it => it.No == "2"); + _binInfoRepository.Update(it => it.Exists == PlcMgr.PlcToHostData.MaterialDetec03.Value, it => it.No == "3"); + _binInfoRepository.Update(it => it.Exists == PlcMgr.PlcToHostData.MaterialDetec04.Value, it => it.No == "4"); + _binInfoRepository.Update(it => it.Exists == PlcMgr.PlcToHostData.MaterialDetec05.Value, it => it.No == "5"); + _binInfoRepository.Update(it => it.Exists == PlcMgr.PlcToHostData.MaterialDetec06.Value, it => it.No == "6"); + _binInfoRepository.Update(it => it.Exists == PlcMgr.PlcToHostData.MaterialDetec07.Value, it => it.No == "7"); + _binInfoRepository.Update(it => it.Exists == PlcMgr.PlcToHostData.MaterialDetec08.Value, it => it.No == "8"); + } + + var bytes03 = master.BatchReadHolderRegister(701, 10); + if (bytes03 != null) + { + PlcMgr.DataValidityTime = DateTime.Now; + ModbusDecoder.Decode(bytes03, PlcMgr.PlcFaultData); + } + } +} \ No newline at end of file diff --git a/Service/Plc/PlcMgr.cs b/Service/Plc/Client/PlcMgr.cs similarity index 76% rename from Service/Plc/PlcMgr.cs rename to Service/Plc/Client/PlcMgr.cs index 01037d4..2b28ae1 100644 --- a/Service/Plc/PlcMgr.cs +++ b/Service/Plc/Client/PlcMgr.cs @@ -1,41 +1,52 @@ -using HybirdFrameworkDriver.ModbusTcpMaster; -using HybirdFrameworkServices.Plc; +using Autofac; +using HybirdFrameworkCore.Autofac; +using Service.Plc.Msg; -namespace Service.Plc; +namespace Service.Plc.Client; -public abstract class PlcMgr +public class PlcMgr { - public static ModbusTcpMaster ModbusTcpMaster; + public static PlcClient? PlcClient; public static readonly HostToPlc HostToPlcData = new HostToPlc(); public static readonly PlcToHost PlcToHostData = new PlcToHost(); public static readonly PlcFault PlcFaultData = new PlcFault(); - + /// /// 数据有效时间。单位秒 /// - static int DataTimeSeconds = 2; + static int DataTimeSeconds = 3; + /// /// 数据刷新时间 /// public static DateTime DataValidityTime = DateTime.Now; + public static bool Init() + { + if (PlcClient == null) + { + PlcClient = AppInfo.Container.Resolve(); + } + + return PlcClient.Connect(); + } - /// /// 写入口灯 /// 红灯:1020 /// 绿灯:1000 /// - /// + /// /// public static bool WriteEntranceLamp(byte value) { - if (ModbusTcpMaster != null) + if (PlcClient != null) { HostToPlcData.LightIn.Value = value; - return ModbusTcpMaster.WriteValue(HostToPlcData.LightIn); + return PlcClient.WriteValue(HostToPlcData.LightIn); } + return false; } @@ -96,12 +107,13 @@ public abstract class PlcMgr /// public static bool WriteExistLamp(int data) { - if (ModbusTcpMaster != null) + if (PlcClient != null) { HostToPlc writeHostToPlc = new HostToPlc(); writeHostToPlc.LightOut.Value = (ushort)data; - return ModbusTcpMaster.WriteValue(writeHostToPlc.LightIn); + return PlcClient.WriteValue(writeHostToPlc.LightIn); } + return false; } @@ -113,15 +125,16 @@ public abstract class PlcMgr /// public static bool DistributeSelectPack(string inBinNo, string outBinNo) { - if (ModbusTcpMaster != null) + if (PlcClient != null) { HostToPlc writeHostToPlc = new HostToPlc(); writeHostToPlc.EntrySelection.Value = Convert.ToUInt16(inBinNo); writeHostToPlc.ExitSelection.Value = Convert.ToUInt16(outBinNo); - bool write1 = ModbusTcpMaster.WriteValue(writeHostToPlc.EntrySelection); - bool write2 = ModbusTcpMaster.WriteValue(writeHostToPlc.ExitSelection); + bool write1 = PlcClient.WriteValue(writeHostToPlc.EntrySelection); + bool write2 = PlcClient.WriteValue(writeHostToPlc.ExitSelection); return write1 && write2; } + return false; } @@ -132,18 +145,19 @@ public abstract class PlcMgr /// public static bool StartSwapping() { - if (ModbusTcpMaster != null) + if (PlcClient != null) { - if (PlcToHostData.TaskType.Value == 0)//是否允许换电 + if (PlcToHostData.TaskType.Value == 0) //是否允许换电 return false; HostToPlc writeHostToPlc = new HostToPlc(); writeHostToPlc.TaskType.Value = (ushort)1; writeHostToPlc.TaskEnablement.Value = (ushort)1000; - bool write1 = ModbusTcpMaster.WriteValue(writeHostToPlc.TaskType); - bool write2 = ModbusTcpMaster.WriteValue(writeHostToPlc.TaskEnablement); + bool write1 = PlcClient.WriteValue(writeHostToPlc.TaskType); + bool write2 = PlcClient.WriteValue(writeHostToPlc.TaskEnablement); return write1 && write2; } + return false; } @@ -163,10 +177,11 @@ public abstract class PlcMgr /// 6未连接 public static int ReadPlcTaskStatus() { - if (ModbusTcpMaster != null) + if (PlcClient != null) { return PlcToHostData.TaskType.Value; } + return (-1); } } \ No newline at end of file diff --git a/Service/Plc/HostToPlc.cs b/Service/Plc/Msg/HostToPlc.cs similarity index 98% rename from Service/Plc/HostToPlc.cs rename to Service/Plc/Msg/HostToPlc.cs index fa6ba5e..c116148 100644 --- a/Service/Plc/HostToPlc.cs +++ b/Service/Plc/Msg/HostToPlc.cs @@ -1,12 +1,6 @@ -using HybirdFrameworkCore.Autofac.Attribute; -using HybirdFrameworkDriver.ModbusTcpMaster; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using HybirdFrameworkDriver.ModbusTcpMaster; -namespace HybirdFrameworkServices.Plc +namespace Service.Plc.Msg { public class HostToPlc { diff --git a/Service/Plc/PlcFault.cs b/Service/Plc/Msg/PlcFault.cs similarity index 86% rename from Service/Plc/PlcFault.cs rename to Service/Plc/Msg/PlcFault.cs index 0b35d9a..599cec9 100644 --- a/Service/Plc/PlcFault.cs +++ b/Service/Plc/Msg/PlcFault.cs @@ -1,11 +1,6 @@ using HybirdFrameworkDriver.ModbusTcpMaster; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -namespace HybirdFrameworkServices.Plc +namespace Service.Plc.Msg { public class PlcFault { diff --git a/Service/Plc/PlcToHost.cs b/Service/Plc/Msg/PlcToHost.cs similarity index 67% rename from Service/Plc/PlcToHost.cs rename to Service/Plc/Msg/PlcToHost.cs index bc8cdbe..826973f 100644 --- a/Service/Plc/PlcToHost.cs +++ b/Service/Plc/Msg/PlcToHost.cs @@ -1,13 +1,6 @@ -using HybirdFrameworkCore.Autofac.Attribute; -using HybirdFrameworkDriver.ModbusTcpMaster; -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using HybirdFrameworkDriver.ModbusTcpMaster; -namespace HybirdFrameworkServices.Plc +namespace Service.Plc.Msg { /// /// @@ -77,46 +70,26 @@ namespace HybirdFrameworkServices.Plc #region 舱位状态 bit0:有料检测 Bit1:有料检测开关故障 - public ModbusProperty MaterialDetec01 { get; set; } = new(40241,0,0,ModbusDataType.Bit); - public ModbusProperty MaterialDetec02 { get; set; } = new(40242,0,0,ModbusDataType.Bit); - public ModbusProperty MaterialDetec03 { get; set; } = new(40243,0,0,ModbusDataType.Bit); - public ModbusProperty MaterialDetec04 { get; set; } = new(40244,0,0,ModbusDataType.Bit); - public ModbusProperty MaterialDetec05 { get; set; } = new(40245,0,0,ModbusDataType.Bit); - public ModbusProperty MaterialDetec06 { get; set; } = new(40246,0,0,ModbusDataType.Bit); - public ModbusProperty MaterialDetec07 { get; set; } = new(40247,0,0,ModbusDataType.Bit); - public ModbusProperty MaterialDetec08 { get; set; } = new(40248,0,0,ModbusDataType.Bit); - public ModbusProperty MaterialDetec09 { get; set; } = new(40249,0,0,ModbusDataType.Bit); - public ModbusProperty MaterialDetec10 { get; set; } = new(40250,0,0,ModbusDataType.Bit); - public ModbusProperty MaterialDetec11 { get; set; } = new(40251,0,0,ModbusDataType.Bit); - public ModbusProperty MaterialDetec12 { get; set; } = new(40252,0,0,ModbusDataType.Bit); - public ModbusProperty MaterialDetec13 { get; set; } = new(40253,0,0,ModbusDataType.Bit); - public ModbusProperty MaterialDetec14 { get; set; } = new(40254,0,0,ModbusDataType.Bit); - public ModbusProperty MaterialDetec15 { get; set; } = new(40255,0,0,ModbusDataType.Bit); - public ModbusProperty MaterialDetec16 { get; set; } = new(40256,0,0,ModbusDataType.Bit); - public ModbusProperty MaterialDetec17 { get; set; } = new(40257,0,0,ModbusDataType.Bit); - public ModbusProperty MaterialDetec18 { get; set; } = new(40258,0,0,ModbusDataType.Bit); - public ModbusProperty MaterialDetec19 { get; set; } = new(40259,0,0,ModbusDataType.Bit); - public ModbusProperty MaterialDetec20 { get; set; } = new(40260,0,0,ModbusDataType.Bit); - public ModbusProperty MaterialDetecSwitchFault01 { get; set; } = new(40241, 0, 0, ModbusDataType.Bit); - public ModbusProperty MaterialDetecSwitchFault02 { get; set; } = new(40242, 0, 0, ModbusDataType.Bit); - public ModbusProperty MaterialDetecSwitchFault03 { get; set; } = new(40243, 0, 0, ModbusDataType.Bit); - public ModbusProperty MaterialDetecSwitchFault04 { get; set; } = new(40244, 0, 0, ModbusDataType.Bit); - public ModbusProperty MaterialDetecSwitchFault05 { get; set; } = new(40245, 0, 0, ModbusDataType.Bit); - public ModbusProperty MaterialDetecSwitchFault06 { get; set; } = new(40246, 0, 0, ModbusDataType.Bit); - public ModbusProperty MaterialDetecSwitchFault07 { get; set; } = new(40247, 0, 0, ModbusDataType.Bit); - public ModbusProperty MaterialDetecSwitchFault08 { get; set; } = new(40248, 0, 0, ModbusDataType.Bit); - public ModbusProperty MaterialDetecSwitchFault09 { get; set; } = new(40249, 0, 0, ModbusDataType.Bit); - public ModbusProperty MaterialDetecSwitchFault10 { get; set; } = new(40250, 0, 0, ModbusDataType.Bit); - public ModbusProperty MaterialDetecSwitchFault11 { get; set; } = new(40251, 0, 0, ModbusDataType.Bit); - public ModbusProperty MaterialDetecSwitchFault12 { get; set; } = new(40252, 0, 0, ModbusDataType.Bit); - public ModbusProperty MaterialDetecSwitchFault13 { get; set; } = new(40253, 0, 0, ModbusDataType.Bit); - public ModbusProperty MaterialDetecSwitchFault14 { get; set; } = new(40254, 0, 0, ModbusDataType.Bit); - public ModbusProperty MaterialDetecSwitchFault15 { get; set; } = new(40255, 0, 0, ModbusDataType.Bit); - public ModbusProperty MaterialDetecSwitchFault16 { get; set; } = new(40256, 0, 0, ModbusDataType.Bit); - public ModbusProperty MaterialDetecSwitchFault17 { get; set; } = new(40257, 0, 0, ModbusDataType.Bit); - public ModbusProperty MaterialDetecSwitchFault18 { get; set; } = new(40258, 0, 0, ModbusDataType.Bit); - public ModbusProperty MaterialDetecSwitchFault19 { get; set; } = new(40259, 0, 0, ModbusDataType.Bit); - public ModbusProperty MaterialDetecSwitchFault20 { get; set; } = new(40260, 0, 0, ModbusDataType.Bit); + public ModbusProperty MaterialDetec01 { get; set; } = new(40241,0,2,ModbusDataType.Bit); + public ModbusProperty MaterialDetec02 { get; set; } = new(40242,0,2,ModbusDataType.Bit); + public ModbusProperty MaterialDetec03 { get; set; } = new(40243,0,2,ModbusDataType.Bit); + public ModbusProperty MaterialDetec04 { get; set; } = new(40244,0,2,ModbusDataType.Bit); + public ModbusProperty MaterialDetec05 { get; set; } = new(40245,0,2,ModbusDataType.Bit); + public ModbusProperty MaterialDetec06 { get; set; } = new(40246,0,2,ModbusDataType.Bit); + public ModbusProperty MaterialDetec07 { get; set; } = new(40247,0,2,ModbusDataType.Bit); + public ModbusProperty MaterialDetec08 { get; set; } = new(40248,0,2,ModbusDataType.Bit); + public ModbusProperty MaterialDetec09 { get; set; } = new(40249,0,2,ModbusDataType.Bit); + public ModbusProperty MaterialDetec10 { get; set; } = new(40250,0,2,ModbusDataType.Bit); + public ModbusProperty MaterialDetec11 { get; set; } = new(40251,0,2,ModbusDataType.Bit); + public ModbusProperty MaterialDetec12 { get; set; } = new(40252,0,2,ModbusDataType.Bit); + public ModbusProperty MaterialDetec13 { get; set; } = new(40253,0,2,ModbusDataType.Bit); + public ModbusProperty MaterialDetec14 { get; set; } = new(40254,0,2,ModbusDataType.Bit); + public ModbusProperty MaterialDetec15 { get; set; } = new(40255,0,2,ModbusDataType.Bit); + public ModbusProperty MaterialDetec16 { get; set; } = new(40256,0,2,ModbusDataType.Bit); + public ModbusProperty MaterialDetec17 { get; set; } = new(40257,0,2,ModbusDataType.Bit); + public ModbusProperty MaterialDetec18 { get; set; } = new(40258,0,2,ModbusDataType.Bit); + public ModbusProperty MaterialDetec19 { get; set; } = new(40259,0,2,ModbusDataType.Bit); + public ModbusProperty MaterialDetec20 { get; set; } = new(40260,0,2,ModbusDataType.Bit); #endregion 舱位状态 diff --git a/WebStarter/Program.cs b/WebStarter/Program.cs index 47bb01e..49b742d 100644 --- a/WebStarter/Program.cs +++ b/WebStarter/Program.cs @@ -11,6 +11,7 @@ using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.IdentityModel.Tokens; using Service.Cloud.Client; using Service.Execute; +using Service.Plc.Client; using SqlSugar; using SqlSugar.IOC; @@ -147,8 +148,12 @@ app.MapControllers(); AppInfo.Container = app.Services.GetAutofacRoot(); +//云平台 CloudClientMgr.Init(); +//PLC +PlcMgr.Init(); + //启动换电流程 StationSoftMgr.SwappingStateMachineStart(); diff --git a/WebStarter/obj/Debug/net6.0/staticwebassets.build.json b/WebStarter/obj/Debug/net6.0/staticwebassets.build.json index 26839c5..4499011 100644 --- a/WebStarter/obj/Debug/net6.0/staticwebassets.build.json +++ b/WebStarter/obj/Debug/net6.0/staticwebassets.build.json @@ -1,6 +1,6 @@ { "Version": 1, - "Hash": "zLyz6C3YNcAfQ4a3PqNREUoaDzuSSMCXv5JiEIrUCxU=", + "Hash": "6L5ya4V2yXT6SrMz9lvVeF6F81dXoy4XMjFW1sVbQpk=", "Source": "WebStarter", "BasePath": "_content/WebStarter", "Mode": "Default", @@ -10,17 +10,17 @@ { "Name": "WebStarter\\wwwroot", "Source": "WebStarter", - "ContentRoot": "D:\\项目文件\\项目报表\\19焕能后背式站控\\04项目源码\\主服务\\WebStarter\\wwwroot\\", + "ContentRoot": "D:\\vsproject\\hn_back_main\\WebStarter\\wwwroot\\", "BasePath": "_content/WebStarter", "Pattern": "**" } ], "Assets": [ { - "Identity": "D:\\项目文件\\项目报表\\19焕能后背式站控\\04项目源码\\主服务\\WebStarter\\wwwroot\\20240523\\0.jpg", + "Identity": "D:\\vsproject\\hn_back_main\\WebStarter\\wwwroot\\20240523\\0.jpg", "SourceId": "WebStarter", "SourceType": "Discovered", - "ContentRoot": "D:\\项目文件\\项目报表\\19焕能后背式站控\\04项目源码\\主服务\\WebStarter\\wwwroot\\", + "ContentRoot": "D:\\vsproject\\hn_back_main\\WebStarter\\wwwroot\\", "BasePath": "_content/WebStarter", "RelativePath": "20240523/0.jpg", "AssetKind": "All", @@ -34,10 +34,10 @@ "OriginalItemSpec": "wwwroot\\20240523\\0.jpg" }, { - "Identity": "D:\\项目文件\\项目报表\\19焕能后背式站控\\04项目源码\\主服务\\WebStarter\\wwwroot\\20240524\\0.jpg", + "Identity": "D:\\vsproject\\hn_back_main\\WebStarter\\wwwroot\\20240524\\0.jpg", "SourceId": "WebStarter", "SourceType": "Discovered", - "ContentRoot": "D:\\项目文件\\项目报表\\19焕能后背式站控\\04项目源码\\主服务\\WebStarter\\wwwroot\\", + "ContentRoot": "D:\\vsproject\\hn_back_main\\WebStarter\\wwwroot\\", "BasePath": "_content/WebStarter", "RelativePath": "20240524/0.jpg", "AssetKind": "All", @@ -51,10 +51,10 @@ "OriginalItemSpec": "wwwroot\\20240524\\0.jpg" }, { - "Identity": "D:\\项目文件\\项目报表\\19焕能后背式站控\\04项目源码\\主服务\\WebStarter\\wwwroot\\20240524\\0.png", + "Identity": "D:\\vsproject\\hn_back_main\\WebStarter\\wwwroot\\20240524\\0.png", "SourceId": "WebStarter", "SourceType": "Discovered", - "ContentRoot": "D:\\项目文件\\项目报表\\19焕能后背式站控\\04项目源码\\主服务\\WebStarter\\wwwroot\\", + "ContentRoot": "D:\\vsproject\\hn_back_main\\WebStarter\\wwwroot\\", "BasePath": "_content/WebStarter", "RelativePath": "20240524/0.png", "AssetKind": "All", diff --git a/WinFormStarter/FrmPlc.cs b/WinFormStarter/FrmPlc.cs index da27cdd..2e3514e 100644 --- a/WinFormStarter/FrmPlc.cs +++ b/WinFormStarter/FrmPlc.cs @@ -10,7 +10,6 @@ using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using HybirdFrameworkDriver.ModbusTcpMaster; -using HybirdFrameworkServices.Plc; using HybirdFrameworkDriver.TcpServer; using Newtonsoft.Json.Linq; using Service.Init.Entity; diff --git a/WinFormStarter/Program.cs b/WinFormStarter/Program.cs index b443774..a16ff66 100644 --- a/WinFormStarter/Program.cs +++ b/WinFormStarter/Program.cs @@ -1,7 +1,6 @@ using Autofac; using HybirdFrameworkCore.Autofac; using HybirdFrameworkCore.Configuration; -using HybirdFrameworkServices; using log4net.Config; using Service; using SqlSugar; @@ -52,10 +51,7 @@ internal static class Program // 构建容器 Container = builder.Build(); AppInfo.Container = Container.BeginLifetimeScope("root"); - EquipmentInit equipmentInit = AppInfo.Container.Resolve(); - equipmentInit.Connect(); Application.Run(AppInfo.Container.ResolveNamed
("Form2")); - } private static void Application_ThreadException(object sender, ThreadExceptionEventArgs ex)