rts-sim-testing-message/protos/device_state.proto

628 lines
17 KiB
Protocol Buffer
Raw Normal View History

2023-07-07 10:37:29 +08:00
syntax = "proto3";
import "stationLayoutGraphics.proto";
2024-01-17 17:02:17 +08:00
import "common_data.proto";
2024-01-18 14:12:09 +08:00
import "request.proto";
2023-07-07 10:37:29 +08:00
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";
2023-07-07 10:37:29 +08:00
2023-07-07 10:37:29 +08:00
//状态定义面向物理层即只定义物理状态,不定义逻辑层状态
//区段类型
enum SectionType{
Any = 0;
//计轴区段
Axle = 1;
//逻辑区段
Logic = 2;
//物理区段
Physic = 3;
2023-07-07 10:37:29 +08:00
}
2023-07-07 17:20:29 +08:00
//相邻端点定义的link的状态
message LinkState{
//link索引
uint32 id = 1;
//link上的列车id列表
repeated string trainId = 2;
2023-07-07 17:20:29 +08:00
}
2023-07-07 10:37:29 +08:00
//区段状态
message SectionState{
//区段索引
uint32 id = 1;
//区段占用
//true-占用false-出清
bool occupied = 3;
//计轴故障
bool axleFault = 4;
// 计轴复位
bool axleDrst = 5;
// 计轴预复位
bool axlePdrst = 6;
2023-07-07 10:37:29 +08:00
}
//道岔状态
message SwitchState{
//道岔索引
uint32 id = 1;
//道岔处于定位(表示)
bool normal = 2;
//道岔处于反位(表示)
bool reverse = 3;
//道岔处于定位(实际)
bool dw = 4;
//道岔处于反位(实际)
bool fw = 5;
2024-01-18 14:12:09 +08:00
// 道岔设置参数
request.PointsParam param = 6;
// 定操驱动
2024-01-18 14:12:09 +08:00
bool qdc = 7;
// 反操驱动
2024-01-18 14:12:09 +08:00
bool qfc = 8;
// 允许操驱动
2024-01-18 14:12:09 +08:00
bool qyc = 9;
// 定操采集
bool dc = 10;
// 反操采集
bool fc = 11;
// 允许操作采集
bool yc = 12;
// 是否占用
2024-01-18 14:12:09 +08:00
bool occupied = 13;
2023-07-07 10:37:29 +08:00
}
2023-07-18 10:57:07 +08:00
//信号机状态
message SignalState{
//信号机索引
uint32 id = 1;
//信号机的灯列表
Signal.Aspect aspect = 2;
2024-01-18 14:12:09 +08:00
// 信号机设置参数
request.SignalParam param = 3;
// 信号机继电器状态
map<string, bool> relayStateMap = 4;
2023-07-18 10:57:07 +08:00
}
2023-10-13 15:53:32 +08:00
//信号机显示定义
2023-10-13 10:34:39 +08:00
message Signal {
//信号机显示枚举
enum Aspect {
//灭灯
OFF = 0;
//红
H = 1;
//绿灯亮
L = 2;
//黄
U = 3;
//红黄
HU = 4;
//白
B = 5;
//蓝
A = 6;
}
2023-10-13 10:18:30 +08:00
}
2023-10-13 10:34:39 +08:00
2023-07-20 17:19:58 +08:00
//站台状态
message PlatformState{
//站台索引
uint32 id = 1;
// EMP继电器状态
bool empj = 2;
// SPKS继电器状态
repeated ReplyState spksState = 3;
// 门控箱继电器状态
MkxJState mkxJState = 4;
2023-07-20 17:19:58 +08:00
}
//车站状态
message StationState{
//车站索引
uint32 id = 1;
2023-07-20 17:19:58 +08:00
}
2023-07-07 10:37:29 +08:00
//列车状态
message TrainState{
//列车索引
string id = 1;
//列车初始link运行方向
bool up = 2;
// 列车初始速度
float speed = 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;
// 动力学信息
TrainDynamicState dynamicState = 12;
// 半实物信息
TrainVobcState vobcState = 13;
// 所在公里标
int64 trainKilometer = 14;
// 控制响应延时
int64 controlDelayTime = 15;
// 列车轮径
int32 wheelDiameter = 16;
2024-01-17 16:02:59 +08:00
//列车动力学配置
2024-01-17 17:02:17 +08:00
common.TrainDynamicConfig trainDynamicConfig = 17;
//列车A端
common.TrainEndsState trainEndsA = 18;
//列车B端
common.TrainEndsState trainEndsB = 19;
2023-08-25 15:37:55 +08:00
}
// 动力学列车状态
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=上坡true0=下坡false
bool upslope = 8;
//列车当前运行方向,1 =上行true 0 =下行false
bool runningUp = 9;
2024-01-24 17:12:33 +08:00
//实际运行阻力NtotalResistance,1=1N
float runningResistanceSum = 10;
2024-01-24 17:12:33 +08:00
//阻力1空气阻力NairResistance,1=1N
float airResistance = 11;
2024-01-24 17:12:33 +08:00
//阻力2坡道阻力NslopeResistance,1=1N
float rampResistance = 12;
2024-01-24 17:12:33 +08:00
//阻力3曲线阻力NcurveResistance,1=1N
float curveResistance = 13;
2024-01-24 17:12:33 +08:00
//列车运行速度m/sspeed,1=1m/s 此处放置的是转换后的数据km/h
int32 speed = 14;
2024-01-24 17:12:33 +08:00
//头车速传1速度值m/sheadSpeed1,1=1m/s 此处放置的是转换后的数据km/h
int32 headSensorSpeed1 = 15;
2024-01-24 17:12:33 +08:00
//头车速度2速度值m/sheadSpeed2,1=1m/s 此处放置的是转换后的数据km/h
int32 headSensorSpeed2 = 16;
2024-01-24 17:12:33 +08:00
//尾车速传1速度值m/stailSpeed1,1=1m/s 此处放置的是转换后的数据km/h
int32 tailSensorSpeed1 = 17;
2024-01-24 17:12:33 +08:00
//尾车速度2速度值m/stailSpeed2,1=1m/s 此处放置的是转换后的数据km/h
int32 tailSensorSpeed2 = 18;
2024-01-24 17:12:33 +08:00
//头车雷达速度值m/sheadRadarSpeed,1=1m/s 此处放置的是转换后的数据km/h
int32 headRadarSpeed = 19;
2024-01-24 17:12:33 +08:00
//尾车雷达速度值m/stailRadarSpeed,1=1m/s 此处放置的是转换后的数据km/h
int32 tailRadarSpeed = 20;
// 通讯中断
bool udpInterruption = 21;
// 加速
float acceleration = 22;
2024-01-26 17:57:35 +08:00
//列车位移
int32 Displacement = 23;
2024-01-17 16:02:59 +08:00
2024-01-16 16:33:00 +08:00
}
// 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;
2023-07-07 10:37:29 +08:00
}
2023-07-11 16:06:34 +08:00
2023-12-14 16:31:36 +08:00
// 发给前端的列车状态
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=上坡true0=下坡false
bool upslope = 22;
//列车当前运行方向,1 =上行true 0 =下行false
bool runningUp = 23;
//实际运行阻力NtotalResistance,1=1KN
float runningResistanceSum = 24;
//阻力1空气阻力NairResistance,1=1KN
float airResistance = 25;
//阻力2坡道阻力NslopeResistance,1=1KN
float rampResistance = 26;
//阻力3曲线阻力NcurveResistance,1=1KN
float curveResistance = 27;
//列车运行速度m/sspeed,1=1km/h
int32 speed = 28;
//头车速传1速度值m/sheadSpeed1,1=1km/h
int32 headSensorSpeed1 = 29;
//头车速度2速度值m/sheadSpeed2,1=1km/h
int32 headSensorSpeed2 = 30;
//尾车速传1速度值m/stailSpeed1,1=1km/h
int32 tailSensorSpeed1 = 31;
//尾车速度2速度值m/stailSpeed2,1=1km/h
int32 tailSensorSpeed2 = 32;
//头车雷达速度值m/sheadRadarSpeed,1=1km/h
int32 headRadarSpeed = 33;
//尾车雷达速度值m/stailRadarSpeed,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;
2024-01-18 10:11:08 +08:00
//列车动力学配置
2024-01-18 16:04:56 +08:00
TrainDynamicConfigMqtt trainDynamicConfig = 62;
2024-01-18 10:11:08 +08:00
//列车A端
2024-01-18 16:04:56 +08:00
TrainEndsStateMqtt trainEndsA = 63;
2024-01-18 10:11:08 +08:00
//列车B端
2024-01-18 16:04:56 +08:00
TrainEndsStateMqtt trainEndsB = 64;
2024-01-26 17:57:35 +08:00
//列车位移
int32 Displacement = 65;
2023-12-14 16:31:36 +08:00
}
2024-01-18 16:04:56 +08:00
//动力学相关参数返回数据因golang float类型数据序列化后丢失精度故使用string
//此类型需要与 common_data 中的 TrainDynamicConfig类型属性保持一致
message TrainDynamicConfigMqtt{
2023-12-14 16:31:36 +08:00
2024-01-18 16:04:56 +08:00
//基本阻力参数A 原本数据float
string davisParamA = 1;
2024-01-18 16:04:56 +08:00
// 基本阻力参数B 原本数据float
string davisParamB = 2;
2024-01-18 16:04:56 +08:00
// 基本阻力参数C 原本数据float
string davisParamC = 3;
2024-01-18 16:04:56 +08:00
//曲线阻力参数R1 原本数据float
string curveResistanceParamR1 = 4;
2024-01-18 16:04:56 +08:00
// 曲线阻力参数R2 原本数据float
string curveResistanceParamR2 = 5;
2024-01-18 16:04:56 +08:00
// 曲线阻力参数R3 原本数据float
string curveResistanceParamR3 = 6;
2024-01-18 16:04:56 +08:00
// 曲线阻力参数R4 原本数据float
string curveResistanceParamR4 = 7;
2024-01-18 16:04:56 +08:00
//旋转质量参数 原本数据float
string revolvingMassParam = 8;
2024-01-18 16:04:56 +08:00
//是否跳跃
bool jump = 9;
2024-01-18 16:04:56 +08:00
//打滑(% 原本数据float
string slip = 10;
2024-01-18 16:04:56 +08:00
//前溜/后溜m/s正数前溜负数后溜
int32 slide = 11;
//过标/欠标mm正数过标负数欠标
int32 stopSign = 12;
2024-01-18 17:17:47 +08:00
//空转 %
string idling = 13 ;
2024-01-18 16:04:56 +08:00
}
//列车一端的状态
message TrainEndsStateMqtt{
//速度传感器
bool speedSensorEnableA = 1;
bool speedSensorEnableB = 2;
//雷达是否有效
bool radarEnable = 3;
//雷达测速差值(米/秒) 原本数据float
string radarCheckSpeedDiff = 4;
//雷达检测时间(秒)
int32 radarCheckTime = 5;
2024-01-26 17:57:35 +08:00
bool accEnable = 6;
//加速度测速差值(米/秒)
string accCheckSpeedDiff = 7;
//加速度持续时间
int32 accCheckTime = 8;
2024-01-18 16:04:56 +08:00
}
2023-09-27 17:04:13 +08:00
// 继电器状态
message ReplyState {
// 继电器索引
uint32 id = 1;
// 继电器吸合状态
bool xh = 2;
// 继电器编号
string code = 3;
2024-01-18 11:26:58 +08:00
// 是否强制
bool force = 4;
2023-09-27 17:04:13 +08:00
}
// 按钮状态
message ButtonState {
uint32 id = 1;
bool down = 2;
bool active = 3; // 带灯的按钮
}
// 警铃状态
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 obstacle = 5; //是否有障碍物
}
//滑动门状态
message AsdState {
int32 code = 1; //滑动门的编号
bool kmdw = 2; //开门到位(实际位置)
bool gmdw = 3; //关门到位(实际位置)
bool mgj = 4; //门关继电器
}
2023-10-20 10:53:39 +08:00
// 钥匙状态
message KeyState {
uint32 id = 1;
int32 gear = 2;
2023-10-20 10:53:39 +08:00
}
2023-11-06 17:42:42 +08:00
// 战场图门控箱继电器状态
message MkxJState {
string code = 1;
repeated ReplyState replyState = 2;
}
// 应答器状态
message BaliseState {
uint32 id = 1;
graphicData.KilometerSystem km = 2; //当前公里标
string fixedTelegram = 3; //固定报文
string fixedUserTelegram = 4; //固定用户报文
2024-01-24 17:06:33 +08:00
string variableTelegram = 5; //可变报文
string variableUserTelegram = 6; //可变用户报文
2023-11-06 17:42:42 +08:00
}
2023-07-11 16:11:49 +08:00
////////////////////////////////////////////////////////////////////////////
2023-07-11 16:06:34 +08:00
//仿真运行时状态变化量,当前时刻与上一时刻比较得到
message VariationStatus{
//新增或变化的列车的状态
repeated TrainMapState updatedTrain = 1;
//移除的列车的索引
repeated string removedTrainId = 2;
//状态发生变化的道岔
repeated SwitchState updatedSwitch = 3;
//状态发生变化的区段
repeated SectionState updatedSection = 4;
//状态发送变化的继电器
repeated ReplyState updatedReply = 5;
2023-07-11 16:06:34 +08:00
}
2023-07-11 16:11:49 +08:00
//仿真运行时的所有设备的状态
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;
2023-07-11 16:11:49 +08:00
}
2023-07-13 18:13:43 +08:00
//服务器端向前端推送的设备状态信息
message PushedDevicesStatus{
//true-全量设备状态信息此时allStatus有效
//false - 增量设备状态消息此时varStatus有效
bool all = 1;
//增量设备状态消息
VariationStatus varStatus = 2;
//全量设备状态信息
AllDevicesStatus allStatus = 3;
2023-07-13 18:13:43 +08:00
}
2023-08-30 10:26:35 +08:00
// 仿真信息状态
message SimulationStatus {
2023-10-27 09:24:16 +08:00
enum SimulationState {
2024-01-22 18:09:24 +08:00
Init = 0;
Running = 1;
Pause = 2;
Error = 3;
Destroy = 4;
}
2023-08-30 10:26:35 +08:00
string simulationId = 1;
SimulationState state = 2;
2024-01-22 18:09:24 +08:00
// 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;
}