2025-06-04 09:42:48 +08:00
|
|
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
|
using Seyounth.Extensions.Plc;
|
|
|
|
|
|
|
|
|
|
namespace Seyounth.Auto.Hs.Runtime.Plc;
|
|
|
|
|
|
|
|
|
|
public class PlcService : IPlcService
|
|
|
|
|
{
|
|
|
|
|
private readonly ILogger<PlcService> _logger;
|
|
|
|
|
|
|
|
|
|
private readonly IPlc _plc;
|
2025-07-01 14:20:07 +08:00
|
|
|
|
public PlcService(IPlc plc,ILogger<PlcService> logger)
|
2025-06-04 09:42:48 +08:00
|
|
|
|
{
|
|
|
|
|
_logger = logger;
|
2025-07-01 14:20:07 +08:00
|
|
|
|
_plc = plc;
|
2025-06-04 09:42:48 +08:00
|
|
|
|
//todo:此处创建PLC对象
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task StartAsync()
|
|
|
|
|
{
|
|
|
|
|
await _plc.ConnectAsync();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task StopAsync()
|
|
|
|
|
{
|
|
|
|
|
await _plc.DisconnectAsync();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<short> GetTemperatureAsync()
|
|
|
|
|
{
|
2025-07-01 14:20:07 +08:00
|
|
|
|
return (await _plc.ReadAsync<short>("1000", 1))[0];
|
2025-06-04 09:42:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task QueryWarningInfo()
|
|
|
|
|
{
|
2025-07-01 14:20:07 +08:00
|
|
|
|
var flags = await _plc.ReadAsync<short>("1003", 2);
|
2025-06-04 09:42:48 +08:00
|
|
|
|
if (flags.Any(f => f != 0))
|
|
|
|
|
OnWarning?.Invoke(Tuple.Create(flags[0], flags[1]));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public event Func<Tuple<short, short>, Task> OnWarning;
|
|
|
|
|
|
|
|
|
|
public Task<short> GetJackingFlagAsync()
|
|
|
|
|
{
|
|
|
|
|
throw new NotImplementedException();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Task WriteBoxLabelPrintResult(short rs)
|
|
|
|
|
{
|
|
|
|
|
throw new NotImplementedException();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Task WriteFilmLabelPrintResult(short rs)
|
|
|
|
|
{
|
|
|
|
|
throw new NotImplementedException();
|
|
|
|
|
}
|
2025-07-01 14:20:07 +08:00
|
|
|
|
|
|
|
|
|
public async Task<bool> IsTop()
|
|
|
|
|
{
|
|
|
|
|
var arr = await _plc.ReadAsync<short>("1002", 1);
|
|
|
|
|
//_logger.LogInformation($"是否顶升寄存器值:{arr?.FirstOrDefault()}");
|
|
|
|
|
return arr?.FirstOrDefault() == 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task BoxTagPrintDoneAsync(short value)
|
|
|
|
|
{
|
|
|
|
|
await _plc.WriteAsync<short>("1102",value);
|
|
|
|
|
_logger.LogInformation("已回复打印完成信号");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task SetTemperatureAsync(short val)
|
|
|
|
|
{
|
|
|
|
|
await _plc.WriteAsync<short>("1100", val);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task ClearTop()
|
|
|
|
|
{
|
|
|
|
|
await _plc.WriteAsync("1002",0);
|
|
|
|
|
}
|
2025-06-04 09:42:48 +08:00
|
|
|
|
}
|