namespace WIDESEAWCS_S7Simulator.Application.Protocol;
///
/// 协议监控配置。
/// 在这里配置轮询频率、模板与处理器的绑定关系,避免把设备逻辑写死在代码里。
///
public class ProtocolMonitoringOptions
{
public int PollingIntervalMs { get; set; } = 200;
public List TemplateBindings { get; set; } = new();
public List MirrorAckRules { get; set; } = new();
///
/// 输送线多段规则集合。
/// 一段线体对应一个 RuleId,按顺序执行。
///
public List WcsLineRuleIds { get; set; } = new();
///
/// PlcLink 堆垛机规则集合。
///
public List PlcLinkStackerRuleIds { get; set; } = new();
///
/// 堆垛机交互规则集合。
/// 通过 RuleId 绑定具体的位交互映射逻辑。
///
public List StackerInteractionRuleIds { get; set; } = new();
}
///
/// 协议模板与设备协议处理器的绑定关系。
///
public class TemplateProtocolBinding
{
public string TemplateId { get; set; } = string.Empty;
public string ProtocolName { get; set; } = string.Empty;
}
///
/// 通用 ACK 镜像规则。
/// 字段键全部由配置驱动,不同设备可使用不同映射。
///
public class MirrorAckRuleOptions
{
public string RuleId { get; set; } = string.Empty;
public string WcsAckFieldKey { get; set; } = "WCS_ACK";
public string PlcStbFieldKey { get; set; } = "PLC_STB";
public string? WcsTaskIdFieldKey { get; set; } = "WCS_TASK_ID";
public string? PlcTaskIdFieldKey { get; set; } = "PLC_TASK_ID";
public string? WcsTargetIdFieldKey { get; set; } = "WCS_TARGET_ID";
public string? PlcTargetIdFieldKey { get; set; } = "PLC_TARGET_ID";
public List ClearFieldKeysOnAck0 { get; set; } = new();
public List ClearFieldKeysOnAck2 { get; set; } = new();
}