change - PLC连接初始化

master
Wen JY 10 months ago
parent 2b8b337ada
commit 3bacba92d7

@ -1,4 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" /> <component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise">
<file url="file://$PROJECT_DIR$/SlnMesnac/Program.cs" charset="UTF-8" />
</component>
</project> </project>

@ -485,7 +485,14 @@ namespace SlnMesnac.Plc.Impl
private void PrintLogInfo(string message, Exception ex = null) private void PrintLogInfo(string message, Exception ex = null)
{ {
if (ex != null)
{
_logger.LogError($"{message}{ex.Message}");
}
else
{
_logger.LogInformation(message);
}
} }
} }

@ -38,7 +38,7 @@ namespace SlnMesnac.Plc.Impl
/// <returns></returns> /// <returns></returns>
public bool Connect(string IP, int port) public bool Connect(string IP, int port)
{ {
PrintLogInfo("三菱Q系列PLC连接开始"); PrintLogInfo($"三菱Q系列PLC连接开始,IP:{IP};Port:{port}");
melsec_net.IpAddress = IP; melsec_net.IpAddress = IP;
melsec_net.Port = port; melsec_net.Port = port;
try try
@ -53,7 +53,7 @@ namespace SlnMesnac.Plc.Impl
else else
{ {
this.IsConnected = false; this.IsConnected = false;
PrintLogInfo("三菱Q系列PLC建立连接失败"); PrintLogInfo($"三菱Q系列PLC建立连接失败:{connect.Message}");
return false; return false;
} }
} }
@ -437,7 +437,14 @@ namespace SlnMesnac.Plc.Impl
private void PrintLogInfo(string message, Exception ex = null) private void PrintLogInfo(string message, Exception ex = null)
{ {
if (ex != null)
{
_logger.LogError($"{message}{ex.Message}");
}
else
{
_logger.LogInformation(message);
}
} }
} }
} }

@ -442,7 +442,14 @@ namespace SlnMesnac.Plc.Impl
private void PrintLogInfo(string message, Exception ex = null) private void PrintLogInfo(string message, Exception ex = null)
{ {
if (ex != null)
{
_logger.LogError($"{message}{ex.Message}");
}
else
{
_logger.LogInformation(message);
}
} }
} }
} }

@ -409,7 +409,14 @@ namespace SlnMesnac.Plc.Impl
private void PrintLogInfo(string message, Exception ex = null) private void PrintLogInfo(string message, Exception ex = null)
{ {
if (ex != null)
{
_logger.LogError($"{message}{ex.Message}");
}
else
{
_logger.LogInformation(message);
}
} }
} }
} }

@ -4,6 +4,8 @@ using SlnMesnac.Plc.Impl;
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading.Tasks;
using SlnMesnac.Config;
namespace SlnMesnac.Plc namespace SlnMesnac.Plc
{ {
@ -21,30 +23,59 @@ namespace SlnMesnac.Plc
private readonly MelsecBinaryPlc _melsecBinaryPlc; private readonly MelsecBinaryPlc _melsecBinaryPlc;
private readonly OmronNJPlc _omronNJPlc; private readonly OmronNJPlc _omronNJPlc;
private readonly SiemensPlc _siemensPlc; private readonly SiemensPlc _siemensPlc;
private readonly AppConfig _appConfig;
public PlcPool(ILogger<PlcPool> logger, InovancePlc inovancePlc,MelsecBinaryPlc melsecBinaryPlc,OmronNJPlc omronNJPlc,SiemensPlc siemensPlc) public PlcPool(ILogger<PlcPool> logger, InovancePlc inovancePlc,MelsecBinaryPlc melsecBinaryPlc,OmronNJPlc omronNJPlc,SiemensPlc siemensPlc,AppConfig appConfig)
{ {
_logger = logger; _logger = logger;
_inovancePlc = inovancePlc; _inovancePlc = inovancePlc;
_melsecBinaryPlc = melsecBinaryPlc; _melsecBinaryPlc = melsecBinaryPlc;
_omronNJPlc = omronNJPlc; _omronNJPlc = omronNJPlc;
_siemensPlc = siemensPlc; _siemensPlc = siemensPlc;
_appConfig = appConfig;
//this.Init();
}
public void Init()
{
if (!HslCommunication.Authorization.SetAuthorizationCode("ed1415f8-e06a-43ad-95f7-c04f7ae93b41")) if (!HslCommunication.Authorization.SetAuthorizationCode("ed1415f8-e06a-43ad-95f7-c04f7ae93b41"))
{ {
_logger.LogInformation("HslCommunication激活失败可用时长24小时"); _logger.LogInformation("HslCommunication激活失败可用时长24小时");
} }
_logger.LogInformation("HslCommunication 11.0.6.0激活成功"); _logger.LogInformation("HslCommunication 11.0.6.0激活成功");
}
try
{
if (_appConfig.plcConfig != null)
{
Task.Run(() =>
{
foreach (var item in _appConfig.plcConfig)
{
AddPlc(item.plcType, item.plcIp, item.plcPort, item.plcKey);
}
});
}
else
{
_logger.LogInformation("PLC配置信息为空");
}
}
catch (Exception e)
{
_logger.LogError($"PLC初始化连接异常{e.Message}");
}
}
/// <summary> /// <summary>
/// 初始化Plc /// 添加PLC连接
/// </summary> /// </summary>
/// <param name="plcType"></param> /// <param name="plcType"></param>
/// <param name="ip"></param> /// <param name="ip"></param>
/// <param name="port"></param> /// <param name="port"></param>
/// <param name="key"></param> /// <param name="key"></param>
public void InitPlc(string plcType, string ip, int port, string key) public void AddPlc(string plcType, string ip, int port, string key)
{ {
IPlc _plc = null; IPlc _plc = null;
switch (plcType) switch (plcType)

@ -4,6 +4,7 @@ using SlnMesnac.Plc.Impl;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using Microsoft.AspNetCore.Builder;
namespace SlnMesnac.Plc namespace SlnMesnac.Plc
{ {
@ -17,5 +18,12 @@ namespace SlnMesnac.Plc
services.AddSingleton<SiemensPlc>(); services.AddSingleton<SiemensPlc>();
services.AddSingleton<PlcPool>(); services.AddSingleton<PlcPool>();
} }
public static IApplicationBuilder UsePlcExtensions(this IApplicationBuilder app)
{
var plcPool = app.ApplicationServices.GetService<PlcPool>();
plcPool.Init();
return app;
}
} }
} }

@ -7,11 +7,13 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="HslCommunication" Version="11.0.6" /> <PackageReference Include="HslCommunication" Version="11.0.6" />
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.0" /> <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\SlnMesnac.Common\SlnMesnac.Common.csproj" /> <ProjectReference Include="..\SlnMesnac.Common\SlnMesnac.Common.csproj" />
<ProjectReference Include="..\SlnMesnac.Config\SlnMesnac.Config.csproj" />
</ItemGroup> </ItemGroup>
</Project> </Project>

@ -17,18 +17,15 @@ namespace SlnMesnac.Controllers
private readonly IBaseUserService _service; private readonly IBaseUserService _service;
private readonly PlcPool _plcPool;
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
/// <param name="logger"></param> /// <param name="logger"></param>
/// <param name="service"></param> /// <param name="service"></param>
public BaseUserController(ILogger<BaseUserController> logger, IBaseUserService service, PlcPool plcPool) public BaseUserController(ILogger<BaseUserController> logger, IBaseUserService service)
{ {
_logger = logger; _logger = logger;
_service = service; _service = service;
_plcPool = plcPool;
} }
/// <summary> /// <summary>
@ -38,7 +35,6 @@ namespace SlnMesnac.Controllers
[HttpGet] [HttpGet]
public IEnumerable<BaseUser> Get() public IEnumerable<BaseUser> Get()
{ {
_plcPool.InitPlc("SiemensPlc", "127.0.0.1", 102, "SiemensPlc");
IEnumerable<BaseUser> users = null; IEnumerable<BaseUser> users = null;
try try
{ {

@ -2,6 +2,7 @@ using System.Text.Json;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using SlnMesnac.Config; using SlnMesnac.Config;
using SlnMesnac.Model.dto; using SlnMesnac.Model.dto;
using SlnMesnac.Plc;
using SlnMesnac.Repository.service; using SlnMesnac.Repository.service;
namespace SlnMesnac.Controllers; namespace SlnMesnac.Controllers;
@ -21,7 +22,9 @@ public class IngCheckController
/// ///
/// </summary> /// </summary>
/// <param name="logger"></param> /// <param name="logger"></param>
public IngCheckController(ILogger<IngCheckController> logger,IMcsBinToMaterService mcsBinToMaterService,AppConfig appConfig) public IngCheckController(ILogger<IngCheckController> logger,
IMcsBinToMaterService mcsBinToMaterService,
AppConfig appConfig)
{ {
_logger = logger; _logger = logger;
_mcsBinToMaterService = mcsBinToMaterService; _mcsBinToMaterService = mcsBinToMaterService;

@ -119,6 +119,9 @@ namespace SlnMesnac
//启用Serilog中间件 //启用Serilog中间件
app.UseSerilogExtensions(); app.UseSerilogExtensions();
//初始化PLC中间件
app.UsePlcExtensions();
//app.UseHttpsRedirection(); //app.UseHttpsRedirection();
app.UseRouting(); app.UseRouting();

Loading…
Cancel
Save