SynPlcFromDb

master
杨威 7 months ago
parent a4fc7b8f5c
commit 96ae189a2b

@ -1,6 +1,5 @@
using NewLife.Extensions.Hosting.AgentService; using NewLife.Extensions.Hosting.AgentService;
using NewLife.Log; using NewLife.Log;
using SqlSugar;
using SynPlc; using SynPlc;
// 授权示例 Authorization example // 授权示例 Authorization example

@ -1,5 +1,6 @@
using HslCommunication.Profinet.Siemens; using HslCommunication.Profinet.Siemens;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using NewLife.Log;
using SqlSugar; using SqlSugar;
using SynPlc.Entity; using SynPlc.Entity;
@ -23,45 +24,65 @@ public class Worker : BackgroundService
{ {
while (!stoppingToken.IsCancellationRequested) while (!stoppingToken.IsCancellationRequested)
{ {
var list = DB.Queryable<EEquipmentStateEntity>().ToList();
try
{
SynPlcFromDb(stoppingToken);
}
catch (Exception e)
{
XTrace.WriteException(e);
}
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
await Task.Delay(1000, stoppingToken);
}
}
private async Task SynPlcFromDb(CancellationToken stoppingToken)
{
try
{
var list = await DB.Queryable<EEquipmentStateEntity>().ToListAsync(stoppingToken);
foreach(var e in list) foreach(var e in list)
{ {
var a = S7.ReadBool(e.Point); var a = await S7.ReadBoolAsync(e.Point);
if (a.IsSuccess) if (a.IsSuccess)
{ {
e.UpdateTime = DateTime.Now; e.UpdateTime = DateTime.Now;
e.PValue = a.Content; e.PValue = a.Content;
DB.Updateable(e).UpdateColumns(x => new { x.UpdateTime, x.PValue }).ExecuteCommand(); await DB.Updateable(e).UpdateColumns(x => new { x.UpdateTime, x.PValue }).ExecuteCommandAsync(stoppingToken);
} }
else else
{ {
_logger.LogInformation("¶Áȡʧ°Ü£¡"); XTrace.WriteLine("{0} 读取异常",e.Point );
} }
} }
var listp = DB.Queryable<EPointsInfoEntity>().ToList(); var listp = await DB.Queryable<EPointsInfoEntity>().ToListAsync(stoppingToken);
EPointDataEntity listd = new EPointDataEntity(); EPointDataEntity listd = new EPointDataEntity();
foreach (var e in listp) foreach (var e in listp)
{ {
var a = S7.ReadDouble(e.Point); var a = await S7.ReadDoubleAsync(e.Point);
if (a.IsSuccess) if (a.IsSuccess)
{ {
listd.ID = Guid.NewGuid().ToString(); listd.ID = Guid.NewGuid().ToString();
listd.PID = e.ID; listd.PID = e.ID;
listd.CreateTime = DateTime.Now; listd.CreateTime = DateTime.Now;
listd.Data = a.Content.ToDecimal(); listd.Data = a.Content.ToDecimal();
DB.Insertable(listd).ExecuteCommand(); await DB.Insertable(listd).ExecuteCommandAsync(stoppingToken);
} }
else else
{ {
_logger.LogInformation("¶Áȡʧ°Ü£¡"); XTrace.WriteLine("{0} 读取异常",e.Point );
} }
} }
}
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now); catch (Exception e)
{
await Task.Delay(1000, stoppingToken); Console.WriteLine(e);
throw;
} }
} }
} }
Loading…
Cancel
Save