|
|
|
@ -8,16 +8,12 @@ namespace SynPlc;
|
|
|
|
|
|
|
|
|
|
public class Worker : BackgroundService
|
|
|
|
|
{
|
|
|
|
|
private readonly ILogger<Worker> _logger;
|
|
|
|
|
|
|
|
|
|
SqlSugarScope DB;
|
|
|
|
|
SiemensS7Net S7;
|
|
|
|
|
|
|
|
|
|
public Worker(ILogger<Worker> logger)
|
|
|
|
|
|
|
|
|
|
SiemensS7Net S7 = PlcConnect.Instance;
|
|
|
|
|
private IServiceScopeFactory scopeFactory;
|
|
|
|
|
public Worker(IServiceScopeFactory _scopeFactory)
|
|
|
|
|
{
|
|
|
|
|
_logger = logger;
|
|
|
|
|
DB = SqlSugarHelper.Db;
|
|
|
|
|
S7 = PlcConnect.Instance;
|
|
|
|
|
this.scopeFactory=_scopeFactory;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
|
|
|
@ -42,7 +38,11 @@ public class Worker : BackgroundService
|
|
|
|
|
|
|
|
|
|
private async Task SynPlcFromDb(CancellationToken stoppingToken)
|
|
|
|
|
{
|
|
|
|
|
var list = await DB.Queryable<EEquipmentStateEntity>().ToListAsync(stoppingToken);
|
|
|
|
|
|
|
|
|
|
using var scope = scopeFactory.CreateScope();
|
|
|
|
|
var services = scope.ServiceProvider;
|
|
|
|
|
var dbClient = services.GetService<ISqlSugarClient>();
|
|
|
|
|
var list = await dbClient.Queryable<EEquipmentStateEntity>().ToListAsync(stoppingToken);
|
|
|
|
|
foreach(var e in list)
|
|
|
|
|
{
|
|
|
|
|
var a = await S7.ReadBoolAsync(e.Point);
|
|
|
|
@ -50,7 +50,7 @@ public class Worker : BackgroundService
|
|
|
|
|
{
|
|
|
|
|
e.UpdateTime = DateTime.Now;
|
|
|
|
|
e.PValue = a.Content;
|
|
|
|
|
await DB.Updateable(e).UpdateColumns(x => new { x.UpdateTime, x.PValue }).ExecuteCommandAsync(stoppingToken);
|
|
|
|
|
await dbClient.Updateable(e).UpdateColumns(x => new { x.UpdateTime, x.PValue }).ExecuteCommandAsync(stoppingToken);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@ -58,23 +58,31 @@ public class Worker : BackgroundService
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var listp = await DB.Queryable<EPointsInfoEntity>().ToListAsync(stoppingToken);
|
|
|
|
|
EPointDataEntity listd = new EPointDataEntity();
|
|
|
|
|
var listp = await dbClient.Queryable<EPointsInfoEntity>().ToListAsync(stoppingToken);
|
|
|
|
|
|
|
|
|
|
List<EPointDataEntity> ls = new List<EPointDataEntity>();
|
|
|
|
|
foreach (var e in listp)
|
|
|
|
|
{
|
|
|
|
|
var a = await S7.ReadDoubleAsync(e.Point);
|
|
|
|
|
if (a.IsSuccess)
|
|
|
|
|
{
|
|
|
|
|
EPointDataEntity listd = new EPointDataEntity();
|
|
|
|
|
listd.ID = Guid.NewGuid().ToString();
|
|
|
|
|
listd.PID = e.ID;
|
|
|
|
|
listd.CreateTime = DateTime.Now;
|
|
|
|
|
listd.Data = a.Content.ToDecimal();
|
|
|
|
|
await DB.Insertable(listd).ExecuteCommandAsync(stoppingToken);
|
|
|
|
|
ls.Add(listd);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
XTrace.WriteLine("{0} 读取异常",e.Point );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (ls.Any())
|
|
|
|
|
{
|
|
|
|
|
await dbClient.Insertable(ls).ExecuteCommandAsync(stoppingToken);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|