2025-10-31 09:56:25 +08:00

91 lines
2.2 KiB
C#

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;
public PlcService(IPlc plc, ILogger<PlcService> logger)
{
_logger = logger;
_plc = plc;
//todo:此处创建PLC对象
}
public async Task StartAsync()
{
await _plc.ConnectAsync();
}
public async Task StopAsync()
{
await _plc.DisconnectAsync();
}
public async Task<short> GetTemperatureAsync()
{
return (await _plc.ReadAsync<short>("1000", 1))[0];
}
public async Task QueryWarningInfo()
{
var flags = await _plc.ReadAsync<short>("1003", 2);
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();
}
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);
}
public async Task PrintEnd()
{
await _plc.WriteAsync<short>("1101", 1);
_logger.LogInformation("已向1101写入1发送打印完成信号");
}
public async Task ClearData()
{
await _plc.WriteAsync<short>("1103", 1);
_logger.LogInformation("已向1103写入1发送复位信号");
}
}