初步完成S7后台服务的改造
This commit is contained in:
59
DMS.Infrastructure/Interfaces/Services/IS7Service.cs
Normal file
59
DMS.Infrastructure/Interfaces/Services/IS7Service.cs
Normal file
@@ -0,0 +1,59 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using S7.Net;
|
||||
|
||||
namespace DMS.Infrastructure.Interfaces.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// S7服务接口,定义了与S7 PLC进行通信所需的方法
|
||||
/// </summary>
|
||||
public interface IS7Service
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取当前连接状态
|
||||
/// </summary>
|
||||
bool IsConnected { get; }
|
||||
|
||||
/// <summary>
|
||||
/// 异步连接到S7 PLC
|
||||
/// </summary>
|
||||
/// <returns>表示异步操作的任务</returns>
|
||||
Task ConnectAsync(string ipAddress, int port, short rack, short slot, S7.Net.CpuType cpuType);
|
||||
|
||||
/// <summary>
|
||||
/// 异步断开与S7 PLC的连接
|
||||
/// </summary>
|
||||
/// <returns>表示异步操作的任务</returns>
|
||||
Task DisconnectAsync();
|
||||
|
||||
/// <summary>
|
||||
/// 异步读取单个变量的值
|
||||
/// </summary>
|
||||
/// <param name="address">S7地址</param>
|
||||
/// <returns>表示异步操作的任务,包含读取到的值</returns>
|
||||
Task<object> ReadVariableAsync(string address);
|
||||
|
||||
/// <summary>
|
||||
/// 异步读取多个变量的值
|
||||
/// </summary>
|
||||
/// <param name="addresses">S7地址列表</param>
|
||||
/// <returns>表示异步操作的任务,包含读取到的值字典</returns>
|
||||
Task<Dictionary<string, object>> ReadVariablesAsync(List<string> addresses);
|
||||
|
||||
/// <summary>
|
||||
/// 异步写入单个变量的值
|
||||
/// </summary>
|
||||
/// <param name="address">S7地址</param>
|
||||
/// <param name="value">要写入的值</param>
|
||||
/// <returns>表示异步操作的任务</returns>
|
||||
Task WriteVariableAsync(string address, object value);
|
||||
|
||||
/// <summary>
|
||||
/// 异步写入多个变量的值
|
||||
/// </summary>
|
||||
/// <param name="values">地址和值的字典</param>
|
||||
/// <returns>表示异步操作的任务</returns>
|
||||
Task WriteVariablesAsync(Dictionary<string, object> values);
|
||||
}
|
||||
}
|
||||
16
DMS.Infrastructure/Interfaces/Services/IS7ServiceFactory.cs
Normal file
16
DMS.Infrastructure/Interfaces/Services/IS7ServiceFactory.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using DMS.Infrastructure.Interfaces.Services;
|
||||
|
||||
namespace DMS.Infrastructure.Interfaces.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// S7服务工厂接口,用于创建S7Service实例
|
||||
/// </summary>
|
||||
public interface IS7ServiceFactory
|
||||
{
|
||||
/// <summary>
|
||||
/// 创建S7服务实例
|
||||
/// </summary>
|
||||
/// <returns>S7服务实例</returns>
|
||||
IS7Service CreateService();
|
||||
}
|
||||
}
|
||||
69
DMS.Infrastructure/Interfaces/Services/IS7ServiceManager.cs
Normal file
69
DMS.Infrastructure/Interfaces/Services/IS7ServiceManager.cs
Normal file
@@ -0,0 +1,69 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using DMS.Application.DTOs;
|
||||
|
||||
namespace DMS.Infrastructure.Interfaces.Services
|
||||
{
|
||||
/// <summary>
|
||||
/// 定义S7服务管理器的接口
|
||||
/// </summary>
|
||||
public interface IS7ServiceManager : IDisposable
|
||||
{
|
||||
/// <summary>
|
||||
/// 初始化服务管理器
|
||||
/// </summary>
|
||||
Task InitializeAsync(CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 添加设备到监控列表
|
||||
/// </summary>
|
||||
void AddDevice(DeviceDto device);
|
||||
|
||||
/// <summary>
|
||||
/// 移除设备监控
|
||||
/// </summary>
|
||||
Task RemoveDeviceAsync(int deviceId, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 更新设备变量
|
||||
/// </summary>
|
||||
void UpdateVariables(int deviceId, List<VariableDto> variables);
|
||||
|
||||
/// <summary>
|
||||
/// 获取设备连接状态
|
||||
/// </summary>
|
||||
bool IsDeviceConnected(int deviceId);
|
||||
|
||||
/// <summary>
|
||||
/// 重新连接设备
|
||||
/// </summary>
|
||||
Task ReconnectDeviceAsync(int deviceId, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 获取所有监控的设备ID
|
||||
/// </summary>
|
||||
IEnumerable<int> GetMonitoredDeviceIds();
|
||||
|
||||
/// <summary>
|
||||
/// 连接指定设备
|
||||
/// </summary>
|
||||
Task ConnectDeviceAsync(int deviceId, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 断开指定设备连接
|
||||
/// </summary>
|
||||
Task DisconnectDeviceAsync(int deviceId, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 批量连接设备
|
||||
/// </summary>
|
||||
Task ConnectDevicesAsync(IEnumerable<int> deviceIds, CancellationToken cancellationToken = default);
|
||||
|
||||
/// <summary>
|
||||
/// 批量断开设备连接
|
||||
/// </summary>
|
||||
Task DisconnectDevicesAsync(IEnumerable<int> deviceIds, CancellationToken cancellationToken = default);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user