master
CaesarBao 2 months ago
parent d62d9220c6
commit 22eafcec00

@ -38,7 +38,12 @@ namespace ConsoleApp
private string _workAskAddress;
//PLC工作完成放行请求地址
private string _completeAskAddress;
//PLC产品码地址
private string _productBarcode;
//PLC支线码1地址
private string _semiBarcode1;
//PLC支线码2地址
private string _semiBarcode2;
public MainCentralControl(IHost host)
{
@ -68,11 +73,16 @@ namespace ConsoleApp
case "S130-1":
_plcHeartBeatAddress = "D7777";
_completeAskAddress = "D7703";
_productBarcode = "";
_semiBarcode1 = "D7701";
break;
case "S130-2":
_plcHeartBeatAddress = "D7777";
_workAskAddress = "";
_completeAskAddress = "";
_workAskAddress = "D7803";
_completeAskAddress = "D7804";
_productBarcode = "";
_semiBarcode1 = "D7801";
_semiBarcode2 = "D7802";
break;
}
}
@ -117,12 +127,6 @@ namespace ConsoleApp
//根据转子码查询上工位是否合格
SelectStationQuality(Plc);
}
//读取PLC放行请求
if (Plc.readInt16ByAddress(_completeAskAddress) == 1)
{
Plc.writeInt16ByAddress(_completeAskAddress, 0);
//存盘
}
break;
}
@ -138,6 +142,27 @@ namespace ConsoleApp
}
});
}
private void BarCodeRelationShipBinding(PlcAbsractFactory Plc)
{
try
{
//前盖码
byte[] _QGBarcode = Plc.readValueByAddress(_semiBarcode2, 20);
string QGBarCode = ByteTransform.TransString(_QGBarcode, 0, 20, Encoding.ASCII);
_logger.Info("前盖码:"+ QGBarCode);
//转子码
byte[] _ZZBarcode = Plc.readValueByAddress(_semiBarcode1, 20);
string ZZBarCode = ByteTransform.TransString(_ZZBarcode, 0, 20, Encoding.ASCII);
_logger.Info("转子码:" + QGBarCode);
//下发PLC
Plc.writeInt16ByAddress(_completeAskAddress, 1);
}
catch (Exception ex)
{
_logger.Error($"BarCodeRelationShipBinding方法异常:" + ex.StackTrace);
}
}
/// <summary>
/// 判断数据库表是否已存在条码数据,存在则更新,不存在则插入
/// </summary>
@ -148,7 +173,6 @@ namespace ConsoleApp
Datastation datastation = null;
try
{
SqlSugarClient.Queryable<Datastation>().Any(x => x.Partsns.Contains(ProductBarCode));
datastation = SqlSugarClient.Queryable<Datastation>().First(it => it.Partsns.Contains(ProductBarCode));
if (datastation != null)
{
@ -169,7 +193,7 @@ namespace ConsoleApp
{
try
{ //主线码
byte[] SemBarCode = Plc.readValueByAddress("D7701", 20);
byte[] SemBarCode = Plc.readValueByAddress(_semiBarcode1, 20);
string barcode = ByteTransform.TransString(SemBarCode, 0, 20, Encoding.ASCII);
partsns partsns = new partsns();
partsns.sn.Add(barcode);
@ -285,22 +309,46 @@ namespace ConsoleApp
{
try
{
byte[] SemBarCode = Plc.readValueByAddress("D7701", 20);
byte[] SemBarCode = Plc.readValueByAddress(_semiBarcode1, 20);
string ZZBarCode = ByteTransform.TransString(SemBarCode, 0, 20, Encoding.ASCII);
_logger.Info("转子码:" + ZZBarCode);
Datastation datastation = IsExistData(ZZBarCode);
if (datastation != null)
{
if (datastation.Ng != 0)
{
_logger.Info("上工位不合格");
//下发PLC上工位不合格
Plc.writeInt16ByAddress("", 1);
Plc.writeInt16ByAddress(_completeAskAddress, 2);
}
else
{
//存盘
//前盖码
byte[] _QGBarcode = Plc.readValueByAddress(_semiBarcode2, 20);
string QGBarCode = ByteTransform.TransString(_QGBarcode, 0, 20, Encoding.ASCII);
_logger.Info("前盖码:" + QGBarCode);
//根据前盖码查询Productid
SqlSugarClient.Queryable<Dipsn>().Any(x => x.Sn == QGBarCode);
var Dipsn = SqlSugarClient.Queryable<Dipsn>().First(it => it.Sn == QGBarCode);
if (Dipsn != null)
{
int id = SqlSugarClient.Insertable(datastation).ExecuteReturnIdentity();
}
//下发PLC上工位合格
Plc.writeInt16ByAddress(_completeAskAddress, 1);
//BarCodeRelationShipBinding(Plc);
}
}
//上工位无数据
else
{
_logger.Info("上工位不合格");
//下发PLC上工位不合格
Plc.writeInt16ByAddress("", 1);
Plc.writeInt16ByAddress(_completeAskAddress, 2);
}
}
catch (Exception ex)

@ -57,6 +57,6 @@
],
"redisConfig": "175.27.215.92:6379,password=redis@2023",
"StationCode": "S130-1"
"StationCode": "S130-2"
}
}

@ -47,6 +47,7 @@ namespace SlnMesnac.Serilog
/// <param name="callerLineNumber"></param>
public void Info(string msg, [System.Runtime.CompilerServices.CallerFilePath] string callerFilePath = "", [System.Runtime.CompilerServices.CallerLineNumber] int callerLineNumber = 0)
{
Console.WriteLine(msg);
var className = Path.GetFileNameWithoutExtension(callerFilePath);
Info_logger.ForContext("ClassName", className).ForContext("LineNumber", callerLineNumber).Information(msg);
}

@ -0,0 +1,85 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using SlnMesnac.Config;
using SlnMesnac.Quartz;
using TouchSocket.Sockets;
using SlnMesnac.Extensions;
using Microsoft.AspNetCore.Hosting;
using Serilog;
using Autofac.Extensions.DependencyInjection;
using SlnMesnac.Serilog;
namespace ConsoleApp
{
internal class Program
{
private static SerilogHelper? serilogHelper;
static void Main(string[] args)
{
try
{
Thread.CurrentThread.Name = "Main";
Console.ForegroundColor = ConsoleColor.Yellow;
AppDomain.CurrentDomain.UnhandledException += GlobalExceptionHandler; //全局异常捕获
var host = CreateHostBuilder(args).Build();
var hostTask = host.RunAsync();
var appConfig = host.Services.GetService<AppConfig>();
//var logPath = $"{appConfig.logPath}/Logs/{DateTime.UtcNow:yyyy-MM-dd}/";
//Log.Information($"系统初始化完成,日志存放路径:{appConfig.logPath}");
serilogHelper = host.Services.GetRequiredService<SerilogHelper>();
MainCentralControl mainCentralControl = new MainCentralControl(host);
mainCentralControl.Start();
serilogHelper.Info("iMES系统启动成功");
while (true)
{
Console.ReadLine();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
if (serilogHelper != null)
{
serilogHelper.Error("系统启动失败,异常:" + ex.Message);
}
}
}
private static void GlobalExceptionHandler(object sender, UnhandledExceptionEventArgs e)
{
//当前线程名称
Thread.CurrentThread.Name = "Error";
if (e.ExceptionObject is Exception exception)
{
Console.WriteLine("全局异常捕获:");
Console.WriteLine(exception.Message);
Console.WriteLine(exception.StackTrace);
if (serilogHelper != null)
{
serilogHelper.Error("全局异常捕获:" + exception.Message + "\n" + exception.StackTrace);
}
}
else
{
Console.WriteLine("未知异常捕获:");
Console.WriteLine(e.ExceptionObject);
if (serilogHelper != null)
{
serilogHelper.Error("未知异常捕获:" + e.ExceptionObject);
}
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog()
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}

@ -0,0 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
Loading…
Cancel
Save