using S7.Net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RIZO.Model.PLC
{
///
/// 单个数据点模型
///
public class PlcDataItem
{
///
/// 数据项的唯一标识符 "产品计数", "温度值", "电机状态"
///
public string Name { get; set; }
///
/// 存储PLC返回的原始数据,类型根据实际VarType动态变化
///
public object Value { get; set; }
///
/// 最后一次成功读取数据的时间戳
///
public DateTime LastUpdateTime { get; set; }
///
/// 最近一次读取操作是否成功
///
public bool IsSuccess { get; set; }
///
/// 读取失败时保存的错误信息
///
public string ErrorMessage { get; set; }
}
///
/// 工站完整数据模型
///
public class StationData
{
///
/// 工站的唯一标识符
///
public string StationName { get; set; }
///
/// 该工站所有数据项的集合
///
public Dictionary DataItems { get; set; } = new();
///
/// S7.Net库的PLC连接实例
///
public Plc PlcConnection { get; set; }
///
/// 当前PLC连接状态
///
public bool IsConnected { get; set; }
///
/// 最后一次成功读取所有数据项的时间
///
public DateTime LastReadTime { get; set; }
public DateTime LastConnectTime { get; set; }
public int ReadFailureCount { get; set; }
}
// API响应DTO
public class StationDataDto
{
///
/// 工站名称(直接传递)
///
public string StationName { get; set; }
///
/// 仅包含数据值的简化字典
///{
///"产品计数": { Value: 100, IsSuccess: true, LastUpdateTime: ..., ErrorMessage: "" },
///"温度值": { Value: 25.6f, IsSuccess: true, LastUpdateTime: ..., ErrorMessage: "" }
///}
///
public Dictionary CurrentValues { get; set; } = new();
///
/// 工站连接状态
///
public bool IsConnected { get; set; }
public DateTime LastUpdateTime { get; set; }
public DateTime LastReadTime { get; set; }
public DateTime LastConnectTime { get; set; }
public int ReadFailureCount { get; set; }
}
///
/// 所有工站数据的集合
///
public class AllStationsDataDto
{
public Dictionary Stations { get; set; } = new();
public DateTime ServerTime { get; set; } = DateTime.Now;
public int TotalStations { get; set; }
public int ConnectedStations { get; set; }
}
}