磁导航1.0内部交管和信号交互
This commit is contained in:
@@ -1,17 +1,17 @@
|
||||
using System.ComponentModel;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace StandardScene.Signal.Model
|
||||
{
|
||||
/// <summary>
|
||||
/// PLC 机构静态配置,对应反编译 <c>PLCModel</c> 可存档字段。
|
||||
/// 读写运行态(当前字节、机构内车号)在 <see cref="StandardScene.Signal.Plc.PlcStationRuntime"/>,不进本类、不进 JSON。
|
||||
/// 机构名称不能重复,列表编辑器用 JgName 做主键。
|
||||
/// PLC 机构:一把 S7 连接 + 一块 DB。点位和地标在 <see cref="PlcStationDockModel"/>。
|
||||
/// </summary>
|
||||
[SignalTable("stations", "stations.json", "PLC机构", Order = 1)]
|
||||
[Category("PLC数据管理")]
|
||||
[DisplayName("PLC配置列表(机构名称不能重复)")]
|
||||
public class PlcStationModel
|
||||
{
|
||||
/// <summary>逻辑名,握手点 SignalParams 第一段、Worker 线程名都用它。不能空、不能重复。</summary>
|
||||
/// <summary>逻辑名,握手点机构名、Worker 线程名都用它。不能空、不能重复。</summary>
|
||||
[DisplayName("机构名称")]
|
||||
public string JgName { get; set; } = "";
|
||||
|
||||
@@ -23,53 +23,55 @@ namespace StandardScene.Signal.Model
|
||||
[DisplayName("端口")]
|
||||
public int Port { get; set; } = 102;
|
||||
|
||||
/// <summary>
|
||||
/// 读字节地址(PLC→调度:允许进入/离开)。
|
||||
/// 支持 <c>DB1.DBB0</c> 或 Hsl 风格 <c>DB1.0</c>。空则跳过读取。
|
||||
/// </summary>
|
||||
[DisplayName("读地址")]
|
||||
public string ReadDb { get; set; } = "";
|
||||
/// <summary>西门子系列。跟随进程则用信号交互进程的 PlcVersion。</summary>
|
||||
[DisplayName("PLC类型")]
|
||||
public SignalPlcType PlcType { get; set; } = SignalPlcType.跟随进程;
|
||||
|
||||
/// <summary>
|
||||
/// 写字节地址(调度→PLC:进入中/到位/离开中/已离开)。
|
||||
/// Worker 会先回读再按需写入。空则跳过写和回读。
|
||||
/// </summary>
|
||||
[DisplayName("写地址")]
|
||||
public string WriteDb { get; set; } = "";
|
||||
/// <summary>DB 块号。工位 BOOL 与心跳都拼到这块 DB。</summary>
|
||||
[DisplayName("DB块号")]
|
||||
public int DbNumber { get; set; } = 100;
|
||||
|
||||
/// <summary>
|
||||
/// 心跳位地址,如 <c>DB1.DBX2.0</c>。
|
||||
/// Worker 每拍读当前值再写反码,让 PLC 判断调度进程存活。空则不做心跳。
|
||||
/// </summary>
|
||||
[DisplayName("写心跳地址")]
|
||||
public string HeartDb { get; set; } = "";
|
||||
/// <summary>心跳字节偏移。未填 HeartDb 时拼 DB{n}.DBX{HeartByte}.{HeartBit}。</summary>
|
||||
[DisplayName("心跳字节")]
|
||||
public int HeartByte { get; set; } = 32;
|
||||
|
||||
/// <summary>机构进入地标(预留,与老 PLCModel 字段对齐;上线跟车主要用 JgInContains)。</summary>
|
||||
[DisplayName("机构进入地标")]
|
||||
public int JgInPointId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 进入过程包含的站点列表(逗号/分号/空格分隔)。
|
||||
/// 上线:写字节=进入中 且车已不在此列表 → 视为到位。
|
||||
/// </summary>
|
||||
[DisplayName("机构进入包含地标")]
|
||||
public string JgInContains { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// 机构工作地标。下线 RequestIn 用它查「机构内是否已有车」;
|
||||
/// 下线/等待通行离站时,车必须停在此点才响应允许离开。
|
||||
/// </summary>
|
||||
[DisplayName("机构地标")]
|
||||
public int JgPointId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 机构占用包含的站点列表。车已不在此列表且写字节还不是已离开 → 写已离开。
|
||||
/// </summary>
|
||||
[DisplayName("机构包含地标")]
|
||||
public string JgContains { get; set; } = "";
|
||||
/// <summary>心跳位,0~7。</summary>
|
||||
[DisplayName("心跳位")]
|
||||
public int HeartBit { get; set; }
|
||||
|
||||
/// <summary>上线 / 单牵引下线 / 双牵引下线 / 等待通行,决定 AutoLeave 分支。</summary>
|
||||
[DisplayName("上下机构")]
|
||||
public SignalLineType LineType { get; set; } = SignalLineType.未知;
|
||||
|
||||
/// <summary>旧配置读字节地址。有工位表后不再使用;无工位表时合成 default 工位。</summary>
|
||||
[Browsable(false)]
|
||||
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string ReadDb { get; set; }
|
||||
|
||||
/// <summary>旧配置写字节地址。</summary>
|
||||
[Browsable(false)]
|
||||
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string WriteDb { get; set; }
|
||||
|
||||
/// <summary>旧配置心跳位整段地址,优先于心跳字节/位。</summary>
|
||||
[Browsable(false)]
|
||||
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string HeartDb { get; set; }
|
||||
|
||||
[Browsable(false)]
|
||||
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public int JgInPointId { get; set; }
|
||||
|
||||
[Browsable(false)]
|
||||
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string JgInContains { get; set; }
|
||||
|
||||
[Browsable(false)]
|
||||
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public int JgPointId { get; set; }
|
||||
|
||||
[Browsable(false)]
|
||||
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string JgContains { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user