79 lines
1.9 KiB
C#
Raw Normal View History

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;
public PlcService(IPlc plc,ILogger<PlcService> logger)
2025-06-04 09:42:48 +08:00
{
_logger = logger;
_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()
{
return (await _plc.ReadAsync<short>("1000", 1))[0];
2025-06-04 09:42:48 +08:00
}
public async Task QueryWarningInfo()
{
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();
}
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
}