磁导航1.0内部交管和信号交互

This commit is contained in:
ykkokluo
2026-08-24 14:55:35 +08:00
parent cacc5fea5c
commit 244b0af6c8
60 changed files with 6395 additions and 294 deletions
@@ -0,0 +1,60 @@
using System.ComponentModel;
namespace StandardScene.Signal.Model
{
/// <summary>
/// 磁条管控区一行。仅 MagCar:车在触发点停稳等待,进程按区名排队后发启动。
/// </summary>
/// <remarks>
/// 主键为 <see cref="TriggerSit"/>。同 <see cref="AreaName"/> 的多行绑成一个路口排队。
/// 区名为空时,该触发点自成一区(兼容旧表)。
/// 放行时查本行 <see cref="ControlArea"/> 与同区冲突对向线站点的并集当前占用;不用 pending。
/// <see cref="ControlReleaseStartStop"/> 保留兼容,MagCar 放行走 FASS 1.0 启动指令,不使用该字节。
/// </remarks>
[SignalTable("mag-control", "mag-control-areas.json", "磁条管控区", Order = 5)]
[Category("磁条交管")]
[DisplayName("管控区配置列表")]
public class MagControlAreaModel
{
/// <summary>管控触发站点。MagCar 到此停稳后进入该区排队。</summary>
[DisplayName("管控触发站点")]
public int TriggerSit { get; set; }
/// <summary>管控区名称。同名多行绑成一个路口;空则本触发点单独成区。</summary>
[DisplayName("管控区名称")]
public string AreaName { get; set; } = "";
/// <summary>
/// 兼容组。同区里互不干扰的线路填不同组名;会打架的填同组。
/// 空则与同区其他空组互斥。站点列表有交集时即使组名不同也互斥。
/// </summary>
[DisplayName("兼容组")]
public string CompatGroup { get; set; } = "";
/// <summary>优先级,数值越大越先放。干道高、支路低。只在冲突线路之间生效。</summary>
[DisplayName("优先级")]
public int Priority { get; set; }
/// <summary>
/// 等待时长(秒)。同区取最长;≤0 不做插队。只在冲突线路之间生效。
/// </summary>
[DisplayName("等待时长")]
public int WaitSeconds { get; set; }
/// <summary>本线路路口内部站点,如 <c>10,11</c>。不要把排队触发点写进来。空则回退触发点。</summary>
[DisplayName("管控区站点列表")]
public string ControlArea { get; set; } = "";
/// <summary>本线路区内最多几辆。含占用本行站点的车和与本行冲突的在途车。默认 1。</summary>
[DisplayName("区内最多几辆")]
public int ControlCapacity { get; set; } = 1;
/// <summary>兼容字段,MagCar 放行不使用。</summary>
[DisplayName("放行后启停字节")]
public byte ControlReleaseStartStop { get; set; } = 11;
/// <summary>false 时该条保留在 JSON 里但不生效。</summary>
[DisplayName("启用")]
public bool IsUse { get; set; } = true;
}
}