syntax = "proto3"; import "stationLayoutGraphics.proto"; import "common_data.proto"; import "request.proto"; package state; option java_package = "club.joylink.bjrtss.ats.verify.protos"; option java_outer_classname = "DeviceStateProto"; option go_package = "joylink.club/bj-rtsts-server/dto/state_proto"; //option go_package = "dto/state_proto;"; //状态定义面向物理层即只定义物理状态,不定义逻辑层状态 //区段类型 enum SectionType{ Any = 0; //计轴区段 Axle = 1; //逻辑区段 Logic = 2; //物理区段 Physic = 3; } //相邻端点定义的link的状态 message LinkState{ //link索引 uint32 id = 1; //link上的列车id列表 repeated string trainId = 2; } //区段状态 message SectionState{ //区段索引 uint32 id = 1; //区段占用 //true-占用;false-出清 bool occupied = 3; //计轴故障 bool axleFault = 4; // 计轴复位 bool axleDrst = 5; // 计轴预复位 bool axlePdrst = 6; } //道岔状态 message SwitchState{ //道岔索引 uint32 id = 1; //道岔处于定位(表示) bool normal = 2; //道岔处于反位(表示) bool reverse = 3; //道岔处于定位(实际) bool dw = 4; //道岔处于反位(实际) bool fw = 5; // 道岔设置参数 request.PointsParam param = 6; // 定操驱动 bool qdc = 7; // 反操驱动 bool qfc = 8; // 允许操驱动 bool qyc = 9; // 定操采集 bool dc = 10; // 反操采集 bool fc = 11; // 允许操作采集 bool yc = 12; // 是否占用 bool occupied = 13; } //信号机状态 message SignalState{ //信号机索引 uint32 id = 1; //信号机的灯列表 Signal.Aspect aspect = 2; // 信号机设置参数 request.SignalParam param = 3; // 信号机继电器状态 map relayStateMap = 4; } //信号机显示定义 message Signal { //信号机显示枚举 enum Aspect { //灭灯 OFF = 0; //红 H = 1; //绿灯亮 L = 2; //黄 U = 3; //红黄 HU = 4; //白 B = 5; //蓝 A = 6; } } //站台状态 message PlatformState{ //站台索引 uint32 id = 1; // EMP继电器状态 bool empj = 2; // SPKS继电器状态 repeated ReplyState spksState = 3; // 门控箱继电器状态 MkxJState mkxJState = 4; } //车站状态 message StationState{ //车站索引 uint32 id = 1; } //列车连接状态 message TrainConnState{ bool conn = 1; TrainConnType connType = 2; uint32 TrainControlMapId = 3; //关联的列车控制mapId enum TrainConnType{ NONE = 0;//未知连接 VOBC = 1; //半实物 PC_SIM = 2; //PC仿真 } } //列车状态 message TrainState{ //列车索引 string id = 1; //列车初始link运行方向 bool up = 2; // 列车初始速度 float speed = 3; //列车长度,1=1mm int64 trainLength = 4; //列车是否显示(此状态仅在列车被删除时为false,若需更改用途需增加列车被删除状态) bool show = 5; // 列车车头所在设备ID uint32 headDeviceId = 6; // 列车车头所在设备偏移量 int64 headOffset = 7; // 设备端口 string devicePort = 8; // 运行方向指向(区段:A-B,道岔:-> 岔心) bool pointTo = 9; // 运行上下行(公里标 上行:小 -> 大,下行:大 -> 小) bool runDirection = 10; // 列车车头方向 bool headDirection = 11; // 动力学信息 TrainDynamicState dynamicState = 12; // 半实物信息 TrainVobcState vobcState = 13; // 所在公里标 int64 trainKilometer = 14; // 控制响应延时 int64 controlDelayTime = 15; // 列车轮径 int32 wheelDiameter = 16; //列车动力学配置 common.TrainDynamicConfig trainDynamicConfig = 17; //列车A端 common.TrainEndsState trainEndsA = 18; //列车B端 common.TrainEndsState trainEndsB = 19; // 列车尾端所在设备ID uint32 tailDeviceId = 20; // 列车尾端所在设备偏移量 int64 tailOffset = 21; // 列车尾端所在设备端口 string tailDevicePort = 22; // BTM状态 BTMState btmState = 23; TrainControlState tcc = 24; TrainConnState connState = 25; //列车连接第三方状态 } // 动力学列车状态 message TrainDynamicState { // 生命信号 每个周期+1 int32 heartbeat = 1; //车头所在link的索引 string headLinkId = 2; //车头所在link内的偏移量,单位为mm int64 headLinkOffset = 3; //车尾所在link的索引 string tailLinkId = 4; //车尾所在link内的偏移量,单位为mm int64 tailLinkOffset = 5; //列车所占用的link的索引的列表 //顺序为从车头到车尾 repeated string occupiedLinkIndex = 6; //列车所在位置坡度值,1=1‰ int32 slope = 7; //列车所在位置坡度走势,1=上坡true,0=下坡false bool upslope = 8; //列车当前运行方向,1 =上行true 0 =下行false bool runningUp = 9; //实际运行阻力(总)(N)totalResistance,1=1N float runningResistanceSum = 10; //阻力1(空气阻力)(N)airResistance,1=1N float airResistance = 11; //阻力2(坡道阻力)(N)slopeResistance,1=1N float rampResistance = 12; //阻力3(曲线阻力)(N)curveResistance,1=1N float curveResistance = 13; //列车运行速度(m/s)speed,1=1m/s 此处放置的是转换后的数据km/h int32 speed = 14; //头车速传1速度值(m/s)headSpeed1,1=1m/s 此处放置的是转换后的数据km/h int32 headSensorSpeed1 = 15; //头车速度2速度值(m/s)headSpeed2,1=1m/s 此处放置的是转换后的数据km/h int32 headSensorSpeed2 = 16; //尾车速传1速度值(m/s)tailSpeed1,1=1m/s 此处放置的是转换后的数据km/h int32 tailSensorSpeed1 = 17; //尾车速度2速度值(m/s)tailSpeed2,1=1m/s 此处放置的是转换后的数据km/h int32 tailSensorSpeed2 = 18; //头车雷达速度值(m/s)headRadarSpeed,1=1m/s 此处放置的是转换后的数据km/h int32 headRadarSpeed = 19; //尾车雷达速度值(m/s)tailRadarSpeed,1=1m/s 此处放置的是转换后的数据km/h int32 tailRadarSpeed = 20; // 通讯中断 bool udpInterruption = 21; // 加速 float acceleration = 22; //列车位移 int32 Displacement = 23; } // vobc发过来的列车信息 message TrainVobcState { // 生命信号 每个周期+1 int32 lifeSignal = 1; // TC1激活状态 1=激活 bool tc1Active = 2; // TC2激活状态 1=激活 bool tc2Active = 3; // 列车方向向前 1=方向向前 bool directionForward = 4; // 列车方向向后 1=方向向后 bool directionBackward = 5; // 列车牵引状态 1=牵引 bool tractionStatus = 6; // 列车制动状态 1=制动 bool brakingStatus = 7; // 列车紧急制动状态 1=紧急制动 bool emergencyBrakingStatus = 8; // 列车折返状态(AR) 1=折返 bool turnbackStatus = 9; // 跳跃状态 1=跳跃 bool jumpStatus = 10; // ATO模式 1=ATO模式 bool ato = 11; // FAM模式 1=FAM模式 bool fam = 12; // CAM模式 1=CAM模式 bool cam = 13; // 牵引安全回路 1=牵引安全切除 bool tractionSafetyCircuit = 14; // 停放制动状态 1=停放施加 bool parkingBrakeStatus = 15; // 保持制动状态 1=保持制动施加 bool maintainBrakeStatus = 16; // 列车牵引力 100=1KN int64 tractionForce = 17; // 列车制动力 100=1KN int64 brakeForce = 18; //【列车载荷 100=1ton int64 trainLoad = 19; // 列车开左门指令 1=开门 bool leftDoorOpenCommand = 20; // 列车开右门指令 1=开门 bool rightDoorOpenCommand = 21; // 列车关左门指令 1=关门 bool leftDoorCloseCommand = 22; // 列车关右门指令 1=关门 bool rightDoorCloseCommand = 23; // 整列车门关好 1=门关好 bool allDoorClose = 24; // 通讯中断 bool udpInterruption = 25; // 更新时间 int64 updateTime = 26; } // 发给前端的列车状态 message TrainMapState{ //列车索引 string id = 1; //列车初始link运行方向 bool up = 2; // 列车初始速度 float initialSpeed = 3; //列车长度,1=1mm int64 trainLength = 4; //列车是否显示 bool show = 5; // 列车车头所在设备ID uint32 headDeviceId = 6; // 列车车头所在设备偏移量 int64 headOffset = 7; // 设备端口 string devicePort = 8; // 运行方向指向(区段:A-B,道岔:-> 岔心) bool pointTo = 9; // 运行上下行(公里标 上行:小 -> 大,下行:大 -> 小) bool runDirection = 10; // 列车车头方向 bool headDirection = 11; // 所在公里标 int64 trainKilometer = 12; // 控制响应延时 int64 controlDelayTime = 13; // 列车轮径 int32 wheelDiameter = 14; // 动力学信息 // 生命信号 每个周期+1 int32 dynamicHeartbeat = 15; //车头所在link的索引 string headLinkId = 16; //车头所在link内的偏移量,单位为mm int64 headLinkOffset = 17; //车尾所在link的索引 string tailLinkId = 18; //车尾所在link内的偏移量,单位为mm int64 tailLinkOffset = 19; //列车所占用的link的索引的列表 //顺序为从车头到车尾 repeated string occupiedLinkIndex = 20; //列车所在位置坡度值,1=1‰ int32 slope = 21; //列车所在位置坡度走势,1=上坡true,0=下坡false bool upslope = 22; //列车当前运行方向,1 =上行true 0 =下行false bool runningUp = 23; //实际运行阻力(总)(N)totalResistance,1=1KN float runningResistanceSum = 24; //阻力1(空气阻力)(N)airResistance,1=1KN float airResistance = 25; //阻力2(坡道阻力)(N)slopeResistance,1=1KN float rampResistance = 26; //阻力3(曲线阻力)(N)curveResistance,1=1KN float curveResistance = 27; //列车运行速度(m/s)speed,1=1km/h int32 speed = 28; //头车速传1速度值(m/s)headSpeed1,1=1km/h int32 headSensorSpeed1 = 29; //头车速度2速度值(m/s)headSpeed2,1=1km/h int32 headSensorSpeed2 = 30; //尾车速传1速度值(m/s)tailSpeed1,1=1km/h int32 tailSensorSpeed1 = 31; //尾车速度2速度值(m/s)tailSpeed2,1=1km/h int32 tailSensorSpeed2 = 32; //头车雷达速度值(m/s)headRadarSpeed,1=1km/h int32 headRadarSpeed = 33; //尾车雷达速度值(m/s)tailRadarSpeed,1=1km/h int32 tailRadarSpeed = 34; // 通讯中断 bool dynamicInterruption = 35; // 加速 float acceleration = 36; // 半实物信息 // 生命信号 每个周期+1 int32 vobcLifeSignal = 37; // TC1激活状态 1=激活 bool tc1Active = 38; // TC2激活状态 1=激活 bool tc2Active = 39; // 列车方向向前 1=方向向前 bool directionForward = 40; // 列车方向向后 1=方向向后 bool directionBackward = 41; // 列车牵引状态 1=牵引 bool tractionStatus = 42; // 列车制动状态 1=制动 bool brakingStatus = 43; // 列车紧急制动状态 1=紧急制动 bool emergencyBrakingStatus = 44; // 列车折返状态(AR) 1=折返 bool turnbackStatus = 45; // 跳跃状态 1=跳跃 bool jumpStatus = 46; // ATO模式 1=ATO模式 bool ato = 47; // FAM模式 1=FAM模式 bool fam = 48; // CAM模式 1=CAM模式 bool cam = 49; // 牵引安全回路 1=牵引安全切除 bool tractionSafetyCircuit = 50; // 停放制动状态 1=停放施加 bool parkingBrakeStatus = 51; // 保持制动状态 1=保持制动施加 bool maintainBrakeStatus = 52; // 列车牵引力 100=1KN int64 tractionForce = 53; // 列车制动力 100=1KN int64 brakeForce = 54; //【列车载荷 100=1ton int64 trainLoad = 55; // 列车开左门指令 1=开门 bool leftDoorOpenCommand = 56; // 列车开右门指令 1=开门 bool rightDoorOpenCommand = 57; // 列车关左门指令 1=关门 bool leftDoorCloseCommand = 58; // 列车关右门指令 1=关门 bool rightDoorCloseCommand = 59; // 整列车门关好 1=门关好 bool allDoorClose = 60; // 通讯中断 bool vobcInterruption = 61; //列车动力学配置 TrainDynamicConfigMqtt trainDynamicConfig = 62; //列车A端 TrainEndsStateMqtt trainEndsA = 63; //列车B端 TrainEndsStateMqtt trainEndsB = 64; //列车位移 int32 Displacement = 65; // 列车车尾所在设备ID uint32 tailDeviceId = 66; // 列车车尾所在设备偏移量 int64 tailOffset = 67; // 列车车尾所在设备端口 string tailDevicePort = 68; // BTM状态 BTMState btmState = 69; TrainConnState connState = 70; //列车连接第三方状态 } message BTMState { uint32 dataSerialNumber = 1; //数据流水号,0~255变化,每次加一 uint32 baliseCount = 2; //应答器计数(每过一个应答器加一,在同一个应答器内不变)(0~255) uint32 messageCounter = 3; //报文计数器 (每解出一个报文加一)(0~255) string telegram = 4;//报文(16进制字符串) } //动力学相关参数返回数据,因golang float类型数据序列化后丢失精度故使用string //此类型需要与 common_data 中的 TrainDynamicConfig类型属性保持一致 message TrainDynamicConfigMqtt{ //基本阻力参数A 原本数据:float string davisParamA = 1; // 基本阻力参数B 原本数据:float string davisParamB = 2; // 基本阻力参数C 原本数据:float string davisParamC = 3; //曲线阻力参数R1 原本数据:float string curveResistanceParamR1 = 4; // 曲线阻力参数R2 原本数据:float string curveResistanceParamR2 = 5; // 曲线阻力参数R3 原本数据:float string curveResistanceParamR3 = 6; // 曲线阻力参数R4 原本数据:float string curveResistanceParamR4 = 7; //旋转质量参数 原本数据:float string revolvingMassParam = 8; //是否跳跃 bool jump = 9; //打滑加速度(m/s) 默认0 原本属性 float string slipA = 10; // 打滑冲击率(m/s) 默认0 string slipR = 11; // 打滑持续时间ms 默认0 int32 slipD = 12; // 空转加速度(m/s2),默认值:0 原本属性 float string idlingA = 14; // 空转冲击率(m/s3),默认值:0 string idlingR = 15; // 空转持续时间(ms),默认值:0 int32 idlingD = 16; //过标/欠标(mm)(正数过标,负数欠标) int32 stopSign = 17; // 前溜/后溜(m/s)(正数前溜,负数后溜),默认值:0 原本属性 float string slide = 18 ; } //列车一端的状态 message TrainEndsStateMqtt{ //速度传感器 bool speedSensorEnableA = 1; bool speedSensorEnableB = 2; //雷达是否有效 bool radarEnable = 3; //雷达测速差值(米/秒) 原本数据:float string radarCheckSpeedDiff = 4; //雷达检测时间(秒) int32 radarCheckTime = 5; bool accEnable = 6; //加速度测速差值(米/秒) string accCheckSpeedDiff = 7; //加速度持续时间 int32 accCheckTime = 8; // 速传速度输出(米/秒) int32 accOutSpeed = 9; // 雷达速度输出(米/秒) int32 radarOutSpeed = 10; } // 继电器状态 message ReplyState { // 继电器索引 uint32 id = 1; // 继电器吸合状态 bool xh = 2; // 继电器编号 string code = 3; // 是否强制 bool force = 4; } // 按钮状态 message ButtonState { uint32 id = 1; bool down = 2; bool active = 3; // 带灯的按钮 // bool bypass = 4; //摁钮,钥匙 是否旁路 } // 警铃状态 message AlarmState { uint32 id = 1; bool active = 2; } // 灯状态 message LightState { uint32 id = 1; bool active = 2; } // 屏蔽门状态 message PsdState { uint32 id = 1; //屏蔽门的id repeated AsdState asdStates = 2; //滑动门状态 bool mgj = 3; //屏蔽门整体的关闭(继电器)状态 request.PsdParam param = 4; //屏蔽门设置的参数 bool zaw = 5; //有障碍物 } //滑动门状态 message AsdState { int32 code = 1; //滑动门的编号 bool kmdw = 2; //开门到位(实际位置) bool gmdw = 3; //关门到位(实际位置) bool mgj = 4; //门关继电器 bool zaw = 5; //有障碍物 bool force = 6; //强制开/关门 } // 钥匙状态 message KeyState { uint32 id = 1; int32 gear = 2; // bool bypass = 3; //摁钮,钥匙 是否旁路 } // 战场图门控箱继电器状态 message MkxJState { string code = 1; repeated ReplyState replyState = 2; } // 应答器状态 message BaliseState { uint32 id = 1; graphicData.KilometerSystem km = 2; //当前公里标 string fixedTelegram = 3; //固定报文 string fixedUserTelegram = 4; //固定用户报文 string variableTelegram = 5; //可变报文 string variableUserTelegram = 6; //可变用户报文 bool work = 7; //是否正常工作 } // 车站联锁驱采状态 message StationQc { repeated State qdStates = 1; //驱动状态 repeated State cjStates = 2; //采集状态 message State { int32 row = 1; //行 int32 col = 2; //列 bool on = 3; //接通 } } // 车库门 message CkmState { uint32 id = 1; //车库门的id bool mgj = 2; //车库门关闭继电器 request.CkmParam param = 3; //屏蔽门设置的参数 } // 洗车机 message XcjState { uint32 id = 1; //车库门的id request.XcjParam param = 2; //屏蔽门设置的参数 bool xqj = 3; //洗车请求 repeated bool twjList = 4; //停稳 bool tgqj = 5; //通过请求 bool xcjxj = 6; //洗车就绪 bool xcyxj = 7; //洗车允许 repeated bool cfjList = 8; //移动允许 bool jtj = 9; //紧急停车 bool tgyxj = 10; //通过允许 } //////////////////////////////////////////////////////////////////////////// //仿真运行时状态变化量,当前时刻与上一时刻比较得到 message VariationStatus{ //新增或变化的列车的状态 repeated TrainMapState updatedTrain = 1; //移除的列车的索引 repeated string removedTrainId = 2; //状态发生变化的道岔 repeated SwitchState updatedSwitch = 3; //状态发生变化的区段 repeated SectionState updatedSection = 4; //状态发送变化的继电器 repeated ReplyState updatedReply = 5; } //仿真运行时的所有设备的状态 message AllDevicesStatus{ // 所有列车状态 repeated TrainMapState trainState = 1; // 所有道岔状态 repeated SwitchState switchState = 2; // 所有类型区段状态 repeated SectionState sectionState = 3; // 所有继电器状态 repeated ReplyState replyState = 4; // 所有信号机状态 repeated SignalState signalState = 5; // 按钮状态 repeated ButtonState buttonState = 6; // 警铃状态 repeated AlarmState AlarmState = 7; // 灯状态 repeated LightState LightState = 8; // 屏蔽门状态 repeated PsdState psdState = 9; // 钥匙状态 repeated KeyState KeyState = 10; // 站场图站台状态 repeated PlatformState platformState = 11; // 应答器状态 repeated BaliseState baliseState = 12; // 车站联锁驱采状态 StationQc stationQc = 13; // 车库门状态 repeated CkmState ckmStates = 14; // 防淹门状态 repeated CkmState fymStates = 15; } //服务器端向前端推送的设备状态信息 message PushedDevicesStatus{ //true-全量设备状态信息,此时allStatus有效; //false - 增量设备状态消息,此时varStatus有效 bool all = 1; //增量设备状态消息 VariationStatus varStatus = 2; //全量设备状态信息 AllDevicesStatus allStatus = 3; } // 仿真信息状态 message SimulationStatus { enum SimulationState { Init = 0; Running = 1; Pause = 2; Error = 3; Destroy = 4; } string simulationId = 1; SimulationState state = 2; // string description = 3; } // 仿真在用的第三方接口状态列表 message SimulationThirdPartyApiService { enum Type { // 未定义 Undefined = 0; // 与动力学接口服务 Dynamics = 1; // 与半实物列车接口服务 SemiPhysicalTrain = 2; } // 服务状态 enum State { // 服务正常 Normal = 0; // 服务异常 Error = 1; } // 服务列表 repeated SimulationThirdPartyApiServiceState states = 1; } // 仿真第三方接口状态 message SimulationThirdPartyApiServiceState { // 接口服务类型 SimulationThirdPartyApiService.Type type = 1; // 服务状态 SimulationThirdPartyApiService.State state = 2; } //列车控制状态 message TrainControlState{ EmergentButton ebutton = 1; //紧急摁钮 repeated DriverKeySwitch driverKey = 2; //驾驶端激活 DirectionKeySwitch dirKey = 3; //接车运行方向 PushHandler pushHandler = 4; //牵引制动手柄 message EmergentButton{ uint32 id = 1; bool passed = 3; } message DriverKeySwitch{ uint32 id = 1; bool val = 2; //0=关,1=开 request.DriverType dt = 3; } message DirectionKeySwitch{ uint32 id = 1; uint32 val = 2; //0=关,1=开,2=中间 } //牵引制动手柄 message PushHandler{ uint32 id = 1; int32 val = 2; // 牵引或制动 大于0是牵引,小于0是制动 整体按照整型传输(*100),使用时除以100 } }