using System.Collections.Generic; namespace StandardScene.Scheduler.FassEvent { /// /// FASS 车辆事件配置项,对应 Configs/EventCar/*.json 数组中的单个元素。 /// 配置格式与 FASS.Scheduler 的 EventCar 模型保持一致,便于直接复用现场 JSON。 /// public class FassEventCarConfig { /// 是否启用本条事件规则。 public bool TriggerEnable { get; set; } = true; /// /// 事件来源。StandardScene 进程仅处理值为 Car 的项(车辆定时轮询触发)。 /// public string TriggerSource { get; set; } = "Car"; /// /// 触发时机。当前实现仅支持 TimerTick(与 FASS EventCarService.CarTimerTick 等价)。 /// public string TriggerEvent { get; set; } = "TimerTick"; /// 触发条件:车辆编号(逗号分隔,空表示不限制)。 public string TriggerCarCode { get; set; } /// 触发条件:上一地标号(逗号分隔)。 public string TriggerCarPrevNodeCode { get; set; } /// 触发条件:当前地标号(逗号分隔)。 public string TriggerCarCurrentNodeCode { get; set; } /// 触发条件:下一地标号(逗号分隔)。 public string TriggerCarNextNodeCode { get; set; } /// /// 触发条件:车辆 FASS 状态(逗号分隔)。 /// 常见值:Running、Stopping、WaitPass、Charging、Stopping,Charging 等。 /// public string TriggerCarState { get; set; } /// 触发条件:车头角度(逗号分隔的整数字符串)。 public string TriggerCarAngle { get; set; } /// /// 条件事件列表。全部满足后才执行任务; /// 对应 FASS 中 ConditionHandler 的逐项 AND 逻辑。 /// public List ConditionEvents { get; set; } = new List(); /// 条件满足后是否执行任务(false 时仅做条件判断,不下发 Start/Stop)。 public bool TaskEnable { get; set; } = true; /// /// 任务类型。MagCar 当前支持 Start(放行)与 Stop(急停)。 /// public string TaskType { get; set; } } /// /// 单条条件事件配置,描述一个条件判断(交管、PLC 信号、电量等)。 /// public class FassConditionEventConfig { /// 是否启用本条件;false 时跳过(视为通过)。 public bool ConditionEnable { get; set; } = true; /// /// 条件类型:Method(内置方法)、AssemblyPlugin。 /// StandardScene 当前仅实现 Method;后两者会记录日志并返回 false。 /// public string ConditionType { get; set; } = "Method"; /// Assembly 条件:程序集文件路径(未实现)。 public string ConditionAssemblyFile { get; set; } /// Assembly/Plugin 条件:类型名(未实现)。 public string ConditionTypeName { get; set; } /// Assembly/Plugin 条件:构造参数(未实现)。 public string ConditionTypeArgs { get; set; } /// /// Method 条件:方法名,如 NodeAllUnlockedNotCar、requestStaion、EmegerStop 等。 /// 名称与 FASS EventCarService.InitEventMethod 注册表一致(含历史拼写)。 /// public string ConditionMethodName { get; set; } /// /// Method 条件:方法参数,一般为逗号分隔的节点号或 PLC 地址。 /// 例如交管:3,53,21;PLC:DB5524.0.0,DB5524.0.1。 /// public string ConditionMethodArgs { get; set; } } /// /// 车辆事件处理用的只读快照,从 StandardScene 提取 FASS 语义字段。 /// 每次 TimerTick 为每辆车构建一份,供触发器与条件方法使用。 /// public class FassEventCarSnapshot { /// 场景内车辆 ID(SimpleLib)。 public int CarId { get; set; } /// FASS 车辆编号(MagCar.VehicleCode 或 fields["Code"])。 public string Code { get; set; } /// 车型标识,用于 ME11 下料站逻辑(fields["CarModel"])。 public string CarModel { get; set; } /// 上一周期记录的地标号,用于 TriggerCarPrevNodeCode 匹配。 public string PrevNodeCode { get; set; } /// 当前地标号(status.enums["CurrentNode"] 或 siteID)。 public string CurrentNodeCode { get; set; } /// 下一地标号(pendingLocks / tags / enums 推断)。 public string NextNodeCode { get; set; } /// /// FASS 状态字符串:Running、Stopping、WaitPass、Charging 等。 /// 由 从中文状态映射。 /// public string State { get; set; } /// 车头角度(度),对应 FASS Car.Angle。 public int Angle { get; set; } /// 电量百分比(Soc)。 public double Charge { get; set; } } }