Compare commits
3 Commits
stable/新加坡分支
..
9.7
| Author | SHA1 | Date | |
|---|---|---|---|
| 6d6ddaec6b | |||
| 4ffa99ff65 | |||
| 1765e65e49 |
+2
-5
@@ -109,15 +109,12 @@ INCLUDES += -I ./src/APP \
|
||||
-I ./src/MSCP/SFM \
|
||||
-I ./src/MSCP/PFM \
|
||||
-I ./src/MSCP_CFG \
|
||||
-I ./src/MSCP/Area\
|
||||
-I ./src/MSCP/OFM\
|
||||
-I ./src/MSCP/Arb
|
||||
|
||||
#LIBS += -L/path/to/my/lib/$(PLATFORM)/usr/lib -lmylib
|
||||
#LIBS += -L../mylib/$(OUTPUT_DIR) -lmylib
|
||||
|
||||
#Compiler flags for build profiles
|
||||
CCFLAGS_release += -O2
|
||||
#CCFLAGS_release += -g -O2
|
||||
CCFLAGS_release += -O0
|
||||
CCFLAGS_debug += -g -O0 -fno-builtin
|
||||
CCFLAGS_coverage += -g -O0 -ftest-coverage -fprofile-arcs -nopipe -Wc,-auxbase-strip,$@
|
||||
LDFLAGS_coverage += -ftest-coverage -fprofile-arcs
|
||||
|
||||
+321
-290
@@ -16,6 +16,10 @@
|
||||
static CM_UINT32 gFollowDataLen = 0u; /*应用跟随数据长度*/
|
||||
static CM_UINT8 gFollowData[MSCP_FOLLOW_BUFF_SIZE] = { 0 }; /*应用跟随数据*/
|
||||
|
||||
static CM_UINT32 gCiRcFollowDataLen = 0u; /*CI-RC同步数据长度*/
|
||||
static CM_UINT8 gCiRcFollowData[MSCP_FOLLOW_BUFF_SIZE] = { 0 }; /*CI-RC同步数据*/
|
||||
|
||||
extern UINT8 LocalCiId; /*系统配置文件中定义的联锁ID*/
|
||||
/* 内网安全通信配置参数,示例: */
|
||||
/* 内网安全通信配置参数,示例: */
|
||||
/*ATP、ATO、MMI间通信时,SFP协议使用的数据库数组:
|
||||
@@ -25,14 +29,15 @@ static CM_UINT8 gFollowData[MSCP_FOLLOW_BUFF_SIZE] = { 0 }; /*应用跟随数据
|
||||
const CM_UINT8 g_SfpInnetParam[] =
|
||||
{
|
||||
|
||||
0,4,/*不同设备通信关系表记录个数*/
|
||||
0,5,/*不同设备通信关系表记录个数*/
|
||||
/*记录的格式如下:*/
|
||||
/* 发起方 发起方发送数据 发起方报文 发起方报文 发起方接收Ack 跟随方 跟随方发送数据 跟随方运行 跟随方报文 此通信关系中成功发送 */
|
||||
/* 设备类型 通信类型 发送周期长度 最大延时 报文最大延时差 设备类型 通信类型 周期长度 最大延时 一包数据所需最小周期数 */
|
||||
/*ZC->CI*/ 0x22, 0x55, 0x01,0x1D, 0x01,0x1D, 0x01,0x1D, 0xff, 0x55, 0x00,0xC8, 0x00,0xC8, 0x02,
|
||||
/*AOM->TIAS*/ 0x15, 0x55, 0x00,0xC8, 0x00,0xC8, 0x00,0xC8, 0x03, 0x55, 0x00,0xC8, 0x00,0xC8, 0x02,
|
||||
/*AOM->ATP*/ 0x14, 0x55, 0x00,0xC8, 0x00,0xC8, 0x00,0xC8, 0x15, 0x55, 0x00,0xC8, 0x00,0xC8, 0x02,
|
||||
/*主机->维护机*/ 0xD9, 0x55, 0x01,0x2c, 0x01,0x2C, 0x01,0x2C, 0xf8, 0x55, 0x00,0xc8, 0x00,0xc8, 0x02,
|
||||
/*RC主机->维护机*/ 0xD9, 0x55, 0x01,0x2c, 0x01,0x2C, 0x01,0x2C, 0xf8, 0x55, 0x00,0xc8, 0x00,0xc8, 0x02,
|
||||
/*CI主机->维护机*/ 0xDE, 0x55, 0x01,0x2c, 0x01,0x2C, 0x01,0x2C, 0xf8, 0x55, 0x00,0xc8, 0x00,0xc8, 0x02,
|
||||
0,2,/*相同设备通信关系表记录个数*/
|
||||
/*记录的格式如下:*/
|
||||
/* 发起方 发起方 发起方发送数据 发起方报文 发起方报文 发起方接收Ack 跟随方 跟随方 跟随方发送数据 跟随方运行 跟随方报文 此通信关系中成功发送 */
|
||||
@@ -185,6 +190,7 @@ ENUM_CM_RETURN APP_API_Init(OUT CM_UINT8 VitalBuf[200], OUT CM_UINT16* pVitalLen
|
||||
MSCP_SetOutAtsVobcFunc(pReserveOutVobc);
|
||||
pReserveInAts = SerialInVobcAtsFunc;
|
||||
MSCP_SetInVobcAtsFunc(pReserveInAts);
|
||||
MSCP_SetRCFollowUpFunc(SetCiGeneralData);
|
||||
#if 1
|
||||
cSwtichFalg = GetCiFunctionSwitchConfig(FUNC_OC_200_INOUTNET);
|
||||
|
||||
@@ -224,11 +230,65 @@ void APP_API_Data_Init()
|
||||
UINT16 ii = 0U;
|
||||
UINT8 szFSFILEVersionFS[DFS_VERSION_LENGTH] = { 0 };
|
||||
UINT8 funcRetVal = 0U;
|
||||
UINT8 cBoardInfo = 0U;
|
||||
UINT8 cPluginId = 0U;
|
||||
UINT8 cBoardId = 0U;
|
||||
UINT8 cRetVal = CI_ERROR;
|
||||
UINT16 locTypeId = 0U;
|
||||
UINT8 cDevType = 0U;
|
||||
UINT8 cSystemWorkType = SYSTEM_WORK_MODE_ONLY;
|
||||
funcRetVal = dquGetFSVersion(DataPath, szFSFILEVersionFS);
|
||||
|
||||
#if 0//(kPLATFORM==kVXWORKS)
|
||||
/*文件配置*/
|
||||
STRU_APP_CFG_T AppCfgInterface = {
|
||||
locTypeId = MSCP_GetOutnetID();
|
||||
LocalCiId = (UINT8)(locTypeId & 0x00FFU); /*联锁设备ID*/
|
||||
cDevType = (UINT8)((locTypeId >> 8U) & 0x00FFU); /*RC/CI类型*/
|
||||
|
||||
|
||||
cRetVal = CiPatternInit((const)DataPath); /*初始化当前联锁类型配置数据*/
|
||||
if ((CI_SUCCESS == cRetVal) && (CI_SUCCESS == funcRetVal)) /*初始化当前联锁类型配置数据*/
|
||||
{
|
||||
cSystemWorkType = GetSystemWorkType();
|
||||
#if (kPLATFORM==kVXWORKS)
|
||||
/*若为真机,则通过平台获取设备类型*/
|
||||
cBoardInfo = MSCP_GetDrvBoardID();
|
||||
PlatSheBeiType = &gSheBeiType; /*联锁设备类型*/
|
||||
cPluginId = ((cBoardInfo >> 4U) & 0x0FU);
|
||||
cBoardId = (cBoardInfo & 0x0FU);
|
||||
if (((0x03U == cPluginId) && ((0x03U == cBoardId) || (0x05U == cBoardId)))
|
||||
|| ((0x0CU == cPluginId) && ((0x06U == cBoardId) || (0x0AU == cBoardId))))
|
||||
{
|
||||
(void)SetLocalRcWorkMode(RC_WORK_MODE_TIOC);
|
||||
gSheBeiType = RC_WORK_MODE_TIOC;
|
||||
}
|
||||
else if (((0x04U == cPluginId) && ((0x03U == cBoardId) || (0x05U == cBoardId)))
|
||||
|| ((0x0BU == cPluginId) && ((0x06U == cBoardId) || (0x0AU == cBoardId))))
|
||||
{
|
||||
(void)SetLocalRcWorkMode(RC_WORK_MODE_CI);
|
||||
gSheBeiType = RC_WORK_MODE_CI;
|
||||
}
|
||||
else
|
||||
{
|
||||
debug_infor_printf((const)"APP_API_Data_Init Error: CI_SYSTEM_TYPE Error.\n");
|
||||
printf((const)"APP_API_Data_Init Error: CI_SYSTEM_TYPE Error.\n");
|
||||
}
|
||||
/*真机需校验设备类型是否一致*/
|
||||
locTypeId = MSCP_GetOutnetID();
|
||||
cDevType = (UINT8)((locTypeId >> 8U) & 0x00FFU); /*RC/CI类型*/
|
||||
if (gSheBeiType == cDevType)
|
||||
{
|
||||
/*继续处理*/
|
||||
}
|
||||
else
|
||||
{
|
||||
debug_infor_printf((const)"APP_API_Data_Init Error: DevType[0x%x] And [0x%x] Is Not Equal \n", gSheBeiType, cDevType);
|
||||
cRetVal = CI_ERROR;
|
||||
}
|
||||
|
||||
}
|
||||
if(CI_SUCCESS == cRetVal)
|
||||
{
|
||||
/*文件配置*/
|
||||
STRU_APP_CFG_T AppCfgInterface = {
|
||||
.FS_NAME = "RCI.FS", /**< FS文件名称 */
|
||||
.APP_NAME = "RCOCI", /**< 应用文件名称 */
|
||||
.CYC_TIME = 300, /**< 系统周期 */
|
||||
@@ -238,59 +298,37 @@ void APP_API_Data_Init()
|
||||
.M_InnetSafe_Enable = 0x55, /**< 内网安全通信功能开关 */
|
||||
.M_InnetRaw_Enable = 0xAA, /**< 内网透传通信功能开关 */
|
||||
.M_OutnetSafe_Enable = 0x55,/**< 外网安全通信功能开关 */
|
||||
.M_OutnetRaw_Enable = 0x55, /**< 外网透传通信功能开关 */
|
||||
.M_CpuUsageGet_Enable = 0xAA,/**< 获取cpu使用率功能开关 */
|
||||
.M_OutnetRaw_Enable = 0xAA, /**< 外网透传通信功能开关 */
|
||||
.M_CpuUsageGet_Enable = 0x55,/**< 获取cpu使用率功能开关 */
|
||||
.M_RemoteUpdate_Enable = 0x55,/**< 远程部署内网安全通信功能开关 */
|
||||
.ID_Maintenance = DEVICE_TYPE_AIM,
|
||||
.Start_Path = "/emmc1", /**< 程序启动路径 */
|
||||
.reboot_replycount = 10, /**< 重启确认报文回复次数 */
|
||||
.M_AutoReboot_Count = 0, /**< 自动重启次数 */
|
||||
.M_AutoReboot_Count = 3, /**< 自动重启次数 */
|
||||
.M_AutoClear_Days = 1, /**< 连续运行多久清空宕机次数的天数 */
|
||||
.CPU[0].IP_2oo2 = "192.168.0.11", /**< 2oo2通信IP */
|
||||
// .CPU[0].IP_2x2 = "192.168.1.62", /**< 2x2通信IP */
|
||||
.CPU[0].IP_Out = "192.168.1.62", /**< 外网通信IP */
|
||||
.CPU[0].IP_Maintain = "192.168.146.101", /**< 维护通信IP */
|
||||
/*适用透传通道-选配*/
|
||||
.CPU[0].IP_Com = "192.168.1.62", /**< 通用通信IP */
|
||||
.CPU[0].IP_Com_Extend = "192.168.1.62",/**< 通用通信扩展IP */
|
||||
.M_Area_Enable = 0, /**< 区域状态开关配置 */
|
||||
.M_AREA_SEB_Enable = 0xAA, /**< RC与CI扩展板卡通信功能开关配置 */
|
||||
|
||||
.CPU[0].Logger_PortBase = 55011, /**< 明文日志记录发送端口 */
|
||||
.CPU[0].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
|
||||
|
||||
.CPU[1].IP_2oo2 = "192.168.0.12", /**< 2oo2通信IP */
|
||||
// .CPU[1].IP_2x2 = "192.168.2.62", /**< 2x2通信IP */
|
||||
.CPU[1].IP_Out = "192.168.2.62", /**< 外网通信IP */
|
||||
.CPU[1].IP_Maintain = "192.168.18.102", /**< 维护通信IP */
|
||||
/*适用透传通道-选配*/
|
||||
.CPU[1].IP_Com = "192.168.2.62", /**< 通用通信IP */
|
||||
.CPU[1].IP_Com_Extend = "192.168.2.62",/**< 通用通信扩展IP */
|
||||
|
||||
.CPU[1].Logger_PortBase = 55012, /**< 明文日志记录发送端口 */
|
||||
.CPU[1].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
|
||||
|
||||
.CPU[2].IP_2oo2 = "192.168.0.21", /**< 2oo2通信IP */
|
||||
// .CPU[2].IP_2x2 = "192.168.1.64", /**< 2x2通信IP */
|
||||
.CPU[2].IP_Out = "192.168.1.64", /**< 外网通信IP */
|
||||
.CPU[2].IP_Maintain = "192.168.146.103", /**< 维护通信IP */
|
||||
/*适用透传通道-选配*/
|
||||
.CPU[2].IP_Com = "192.168.1.64", /**< 通用通信IP */
|
||||
.CPU[2].IP_Com_Extend = "192.168.1.64",/**< 通用通信扩展IP */
|
||||
|
||||
.CPU[2].Logger_PortBase = 55021, /**< 明文日志记录发送端口 */
|
||||
.CPU[2].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
|
||||
|
||||
.CPU[3].IP_2oo2 = "192.168.0.22", /**< 2oo2通信IP */
|
||||
// .CPU[3].IP_2x2 = "192.168.2.64", /**< 2x2通信IP */
|
||||
.CPU[3].IP_Out = "192.168.2.64", /**< 外网通信IP */
|
||||
.CPU[3].IP_Maintain = "192.168.18.104", /**< 维护通信IP */
|
||||
/*适用透传通道-选配*/
|
||||
.CPU[3].IP_Com = "192.168.2.64", /**< 通用通信IP */
|
||||
.CPU[3].IP_Com_Extend = "192.168.2.64",/**< 通用通信扩展IP */
|
||||
|
||||
.CPU[3].Logger_PortBase = 55022, /**< 明文日志记录发送端口 */
|
||||
.CPU[3].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
|
||||
/*通用端口配置*/
|
||||
/*通用端口配置*/
|
||||
.Port_Outnet_Safe = 54001, /**< 外网安全通信端口 */
|
||||
.Port_Innet_Safe = 53001, /**< 内网安全通信端口 */
|
||||
.Port_Outnet_Raw = 54002, /**< 外网透明传输端口 */
|
||||
.Port_Remote_Update = 50000, /**< 远程部署通信端口 */
|
||||
/*透传配置-选配*/
|
||||
/*透传配置-选配*/
|
||||
.Port_Innet_Raw_Num = 0, /**< 内网透传端口数量 */
|
||||
.Port_Innet_Raw_Extend_Num = 0, /**< 内网透传扩展端口数量 */
|
||||
.Innet_Raw_Parameter[0].Port_Innet_Raw = 3956, /**< 内网透明传输端口 */
|
||||
@@ -308,255 +346,215 @@ void APP_API_Data_Init()
|
||||
.Innet_Raw_Parameter[1].INNET_2oo2_RAW = 0X55, /**< 透传通道2取开关 */
|
||||
.Innet_Raw_Parameter[1].INNET_2x2_RAW = 0XAA, /**< 透传通道2乘开关 */
|
||||
.Innet_Raw_Parameter[1].IP_InnetRaw_maddr = "224.0.0.32",/**< 内网透传的组播IP */
|
||||
/*外网通信配置*/
|
||||
/*外网通信配置*/
|
||||
.OutNetRed.CC_G_IP = "192.168.1.60", /**< 通控的内网IP */
|
||||
.OutNetRed.CC_P_IP = "192.168.2.60", /**< 通控的内网IP */
|
||||
.OutNetRed.EXTEND_G_IP = "192.168.1.70", /**< 扩展板卡的内网IP */
|
||||
.OutNetRed.EXTEND_P_IP = "192.168.2.70", /**< 扩展板卡的内网IP */
|
||||
.Another_SEB.EXTEND_R_G_IP = "192.168.1.90", /**< CI扩展板卡的内网IP */
|
||||
.Another_SEB.EXTEND_R_P_IP = "192.168.2.90", /**< CI扩展板卡的内网IP */
|
||||
.Another_SEB.OutnetSafe_R_Port = 54001, /**< 外网安全通信端口 */
|
||||
.OutNetRed.OutnetSafe_Port = 54001, /**< 外网安全通信端口 */
|
||||
.OutNetRed.OutnetRaw_Port = 54002, /**< 外网透传通信端口 */
|
||||
.OutNetRed.InnetRaw_Port = 53003, /**< 内网透传通信端口 */
|
||||
|
||||
.OutNetBlue.CC_G_IP = "192.168.1.61", /**< 通控的内网IP */
|
||||
.OutNetBlue.CC_P_IP = "192.168.2.61", /**< 通控的内网IP */
|
||||
.OutNetBlue.EXTEND_G_IP = "192.168.1.71", /**< 扩展板卡的内网IP */
|
||||
.OutNetBlue.EXTEND_P_IP = "192.168.2.71", /**< 扩展板卡的内网IP */
|
||||
.OutNetBlue.EXTEND_G_IP = "192.168.1.71", /**< 扩展板卡的内网IP */
|
||||
.OutNetBlue.EXTEND_P_IP = "192.168.2.71", /**< 扩展板卡的内网IP */
|
||||
.Another_SEB.EXTEND_B_G_IP = "192.168.1.91", /**< CI扩展板卡的内网IP */
|
||||
.Another_SEB.EXTEND_B_P_IP = "192.168.2.91", /**< CI扩展板卡的内网IP */
|
||||
.Another_SEB.OutnetSafe_B_Port = 54001, /**< 外网安全通信端口 */
|
||||
.OutNetBlue.OutnetSafe_Port = 54001, /**< 外网安全通信端口 */
|
||||
.OutNetBlue.OutnetRaw_Port = 54002, /**< 外网透传通信端口 */
|
||||
.OutNetBlue.InnetRaw_Port = 53003, /**< 内网透传通信端口 */
|
||||
/*日志记录目标设备IP配置*/
|
||||
.Logger_G_IP = "192.168.146.100", /**< 绿网日志记录IP */
|
||||
.Logger_P_IP = "192.168.18.100", /**< 紫网日志记录IP */
|
||||
/*内网通信设备注册最大支持0-255*/
|
||||
|
||||
.INNET_COM_NUM = 1, /**< 内网通信设备数量 */
|
||||
.INNET_COM_CFG[0].InnetID = DEVICE_TYPE_AIM, /**< 内网通信ID */
|
||||
.INNET_COM_CFG[0].IP_G = (CM_UINT32)inet_addr("192.168.146.100"),/**< 绿网IP */
|
||||
.INNET_COM_CFG[0].Port_Raw_G = 55004, /**< 绿网透传端口 */
|
||||
.INNET_COM_CFG[0].Port_Safe_G = 55003, /**< 绿网安全端口 */
|
||||
.INNET_COM_CFG[0].IP_P = (CM_UINT32)inet_addr("192.168.18.100"),/**< 紫网IP */
|
||||
.INNET_COM_CFG[0].Port_Raw_P = 55004, /**< 紫网透传端口 */
|
||||
.INNET_COM_CFG[0].Port_Safe_P = 55003, /**< 紫网安全端口 */
|
||||
};
|
||||
MSCP_Set_APP_ConfigData(&AppCfgInterface);
|
||||
#else
|
||||
/*↑↑用户初始化代码↑↑*/
|
||||
/*↓↓基本数据初始化配置示例↓↓*/
|
||||
STRU_APP_CFG_T AppCfgInterface = {
|
||||
.FS_NAME = "RCI.FS", /**< FS文件名称 */
|
||||
.APP_NAME = "RCOCI", /**< 应用文件名称 */
|
||||
.CYC_TIME = 300, /**< 系统周期(ms) */
|
||||
.app_num = 1, /**< app任务数1-4 */
|
||||
.M_2oo2_Enable = 0x55, /**< 2oo2功能开关,开0x55,关0xAA */
|
||||
.M_2x2_Enable = 0x55, /**< 2x2功能开关,开0x55,关0xAA*/
|
||||
.M_4x2_Enable = 0x55, /**< 4x2功能开关,开0x55,关0xAA*/
|
||||
.M_Arb_Enable = 0x55, /**< 仲裁功能开关 */
|
||||
.M_2x2_Com_Cfg = 0x00, /**< 2x2通信功能配置,串口0x00,网卡0x01*/
|
||||
.M_InnetSafe_Enable = 0x55, /**< 内网安全通信功能开关,开0x55,关0xAA */
|
||||
.M_InnetRaw_Enable = 0x55, /**< 内网透传通信功能开关,开0x55,关0xAA */
|
||||
.M_OutnetSafe_Enable = 0x55,/**< 外网安全通信功能开关,开0x55,关0xAA */
|
||||
.M_OutnetRaw_Enable = 0x55, /**< 外网透传通信功能开关,开0x55,关0xAA */
|
||||
.M_CpuUsageGet_Enable = 0xAA,/**< 外网透传通信功能开关,开0x55,关0xAA */
|
||||
.M_RemoteUpdate_Enable = 0xAA,/**< 远程部署内网安全通信功能开关,开0x55,关0xAA */
|
||||
.ID_Maintenance = 0xF800, /**< 设置维护终端ID */
|
||||
.Start_Path = "./emmc1", /**< 程序启动路径 */
|
||||
.reboot_replycount = 10, /**< 重启确认报文回复次数 */
|
||||
.M_AutoReboot_Count = 0, /**< 自动重启次数 */
|
||||
.M_AutoClear_Days = 1, /**< 连续运行多久清空宕机次数的天数 */
|
||||
/*CPU1-1 IP配置*/
|
||||
.CPU[0].IP_2oo2 = "192.168.0.11", /**< 2oo2通信IP */
|
||||
.CPU[0].IP_4x2 = "192.168.1.62", /**< 2x2通信IP */
|
||||
.CPU[0].IP_Out = "192.168.1.62", /**< 外网通信IP */
|
||||
.CPU[0].IP_Maintain = "192.168.146.101", /**< 维护通信IP */
|
||||
.CPU[0].IP_Area = "10.3.1.61", /**< 4x2通信IP */
|
||||
.CPU[0].IP_Sync_Time_A = "192.168.1.62", /**< 时间同步网络A网IP */
|
||||
.CPU[0].IP_Sync_Time_B = "10.3.1.61", /**< 时间同步网络B网IP */
|
||||
/*CPU1-1适用透传通道-选配*/
|
||||
.CPU[0].IP_Com = "192.168.1.62", /**< 通用通信IP */
|
||||
.CPU[0].IP_Com_Extend = "192.168.1.62",/**< 通用通信扩展IP */
|
||||
.CPU[0].Logger_PortBase = 55011, /**< 明文日志记录发送端口 */
|
||||
.CPU[0].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
|
||||
/*CPU1-2 IP配置*/
|
||||
.CPU[1].IP_2oo2 = "192.168.0.12", /**< 2oo2通信IP */
|
||||
.CPU[1].IP_4x2 = "192.168.2.62", /**< 2x2通信IP */
|
||||
.CPU[1].IP_Out = "192.168.2.62", /**< 外网通信IP */
|
||||
.CPU[1].IP_Maintain = "192.168.18.102", /**< 维护通信IP */
|
||||
.CPU[1].IP_Area = "10.3.1.63", /**< 4x2通信IP */
|
||||
.CPU[1].IP_Sync_Time_A = "192.168.2.62", /**< 时间同步网络A网IP */
|
||||
.CPU[1].IP_Sync_Time_B = "10.3.1.63", /**< 时间同步网络B网IP */
|
||||
/*CPU1-2适用透传通道-选配*/
|
||||
.CPU[1].IP_Com = "192.168.2.62", /**< 通用通信IP */
|
||||
.CPU[1].IP_Com_Extend = "192.168.2.62",/**< 通用通信扩展IP */
|
||||
.CPU[1].Logger_PortBase = 55012, /**< 明文日志记录发送端口 */
|
||||
.CPU[1].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
|
||||
/*CPU2-1 IP配置*/
|
||||
.CPU[2].IP_2oo2 = "192.168.0.11", /**< 2oo2通信IP */
|
||||
.CPU[2].IP_4x2 = "192.168.1.64", /**< 2x2通信IP */
|
||||
.CPU[2].IP_Out = "192.168.1.64", /**< 外网通信IP */
|
||||
.CPU[2].IP_Maintain = "192.168.146.103", /**< 维护通信IP */
|
||||
.CPU[2].IP_Area = "10.4.1.62", /**< 4x2通信IP */
|
||||
.CPU[2].IP_Sync_Time_A = "192.168.1.64", /**< 时间同步网络A网IP */
|
||||
.CPU[2].IP_Sync_Time_B = "10.4.1.62", /**< 时间同步网络B网IP */
|
||||
/*CPU2-1适用透传通道-选配*/
|
||||
.CPU[2].IP_Com = "192.168.1.64", /**< 通用通信IP */
|
||||
.CPU[2].IP_Com_Extend = "192.168.1.64",/**< 通用通信扩展IP */
|
||||
.CPU[2].Logger_PortBase = 55021, /**< 明文日志记录发送端口 */
|
||||
.CPU[2].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
|
||||
/*CPU2-2 IP配置*/
|
||||
.CPU[3].IP_2oo2 = "192.168.0.12", /**< 2oo2通信IP */
|
||||
.CPU[3].IP_4x2 = "192.168.2.64", /**< 2x2通信IP */
|
||||
.CPU[3].IP_Out = "192.168.2.64", /**< 外网通信IP */
|
||||
.CPU[3].IP_Maintain = "192.168.18.104", /**< 维护通信IP */
|
||||
.CPU[3].IP_Area = "10.4.1.64", /**< 4x2通信IP */
|
||||
.CPU[3].IP_Sync_Time_A = "192.168.2.64", /**< 时间同步网络A网IP */
|
||||
.CPU[3].IP_Sync_Time_B = "10.4.1.64", /**< 时间同步网络B网IP */
|
||||
/*CPU2-2适用透传通道-选配*/
|
||||
.CPU[3].IP_Com = "192.168.2.64", /**< 通用通信IP */
|
||||
.CPU[3].IP_Com_Extend = "192.168.2.64",/**< 通用通信扩展IP */
|
||||
.CPU[3].Logger_PortBase = 55022, /**< 明文日志记录发送端口 */
|
||||
.CPU[3].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
|
||||
/*CPU3-1 IP配置*/
|
||||
.CPU[4].IP_2oo2 = "192.168.0.11", /**< 2oo2通信IP */
|
||||
.CPU[4].IP_4x2 = "192.168.1.162", /**< 2x2通信IP */
|
||||
.CPU[4].IP_Out = "192.168.1.162", /**< 外网通信IP */
|
||||
.CPU[4].IP_Maintain = "192.168.146.201", /**< 维护通信IP */
|
||||
.CPU[4].IP_Area = "10.3.1.161", /**< 4x2通信IP */
|
||||
.CPU[4].IP_Sync_Time_A = "192.168.1.162", /**< 时间同步网络A网IP */
|
||||
.CPU[4].IP_Sync_Time_B = "10.3.1.161", /**< 时间同步网络B网IP */
|
||||
/*CPU3-1适用透传通道-选配*/
|
||||
.CPU[4].IP_Com = "192.168.1.162", /**< 通用通信IP */
|
||||
.CPU[4].IP_Com_Extend = "192.168.1.162",/**< 通用通信扩展IP */
|
||||
.CPU[4].Logger_PortBase = 55031, /**< 明文日志记录发送端口 */
|
||||
.CPU[4].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
|
||||
/*CPU3-2 IP配置*/
|
||||
.CPU[5].IP_2oo2 = "192.168.0.12", /**< 2oo2通信IP */
|
||||
.CPU[5].IP_4x2 = "192.168.2.162", /**< 2x2通信IP */
|
||||
.CPU[5].IP_Out = "192.168.2.162", /**< 外网通信IP */
|
||||
.CPU[5].IP_Maintain = "192.168.18.202", /**< 维护通信IP */
|
||||
.CPU[5].IP_Area = "10.3.1.163", /**< 4x2通信IP */
|
||||
.CPU[5].IP_Sync_Time_A = "192.168.2.162", /**< 时间同步网络A网IP */
|
||||
.CPU[5].IP_Sync_Time_B = "10.3.1.163", /**< 时间同步网络B网IP */
|
||||
/*CPU3-2适用透传通道-选配*/
|
||||
.CPU[5].IP_Com = "192.168.2.162", /**< 通用通信IP */
|
||||
.CPU[5].IP_Com_Extend = "192.168.2.162",/**< 通用通信扩展IP */
|
||||
.CPU[5].Logger_PortBase = 55032, /**< 明文日志记录发送端口 */
|
||||
.CPU[5].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
|
||||
/*CPU4-1 IP配置*/
|
||||
.CPU[6].IP_2oo2 = "192.168.0.11", /**< 2oo2通信IP */
|
||||
.CPU[6].IP_4x2 = "192.168.1.164", /**< 2x2通信IP */
|
||||
.CPU[6].IP_Out = "192.168.1.164", /**< 外网通信IP */
|
||||
.CPU[6].IP_Maintain = "192.168.146.203", /**< 维护通信IP */
|
||||
.CPU[6].IP_Area = "10.4.1.162", /**< 4x2通信IP */
|
||||
.CPU[6].IP_Sync_Time_A = "192.168.1.164", /**< 时间同步网络A网IP */
|
||||
.CPU[6].IP_Sync_Time_B = "10.4.1.162", /**< 时间同步网络B网IP */
|
||||
/*CPU4-1适用透传通道-选配*/
|
||||
.CPU[6].IP_Com = "192.168.1.164", /**< 通用通信IP */
|
||||
.CPU[6].IP_Com_Extend = "192.168.1.164",/**< 通用通信扩展IP */
|
||||
.CPU[6].Logger_PortBase = 55041, /**< 明文日志记录发送端口 */
|
||||
.CPU[6].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
|
||||
/*CPU4-2 IP配置*/
|
||||
.CPU[7].IP_2oo2 = "192.168.0.12", /**< 2oo2通信IP */
|
||||
.CPU[7].IP_4x2 = "192.168.2.164", /**< 2x2通信IP */
|
||||
.CPU[7].IP_Out = "192.168.2.164", /**< 外网通信IP */
|
||||
.CPU[7].IP_Maintain = "192.168.18.204", /**< 维护通信IP */
|
||||
.CPU[7].IP_Area = "10.4.1.164", /**< 4x2通信IP */
|
||||
.CPU[7].IP_Sync_Time_A = "192.168.2.164", /**< 时间同步网络A网IP */
|
||||
.CPU[7].IP_Sync_Time_B = "10.4.1.164", /**< 时间同步网络B网IP */
|
||||
/*CPU4-2适用透传通道-选配*/
|
||||
.CPU[7].IP_Com = "192.168.2.164", /**< 通用通信IP */
|
||||
.CPU[7].IP_Com_Extend = "192.168.2.164",/**< 通用通信扩展IP */
|
||||
.CPU[7].Logger_PortBase = 55042, /**< 明文日志记录发送端口 */
|
||||
.CPU[7].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
|
||||
/*组播地址配置*/
|
||||
.IP_Area_G_Multicast = "239.0.0.10", /**< 组播通信IP */
|
||||
.IP_Area_P_Multicast = "239.0.0.20", /**< 组播通信IP */
|
||||
.Multicast_Flag = 1u, /**< 单播:0 组播:1 */
|
||||
/*通用端口配置,平台固定通信端口禁止使用:51001、51002、51003、52001、52002、52003*/
|
||||
.Port_Outnet_Safe = 54001, /**< 外网安全通信端口 */
|
||||
.Port_Innet_Safe = 53001, /**< 内网安全通信端口 */
|
||||
.Port_Outnet_Raw = 54002, /**< 外网透明传输端口 */
|
||||
.Port_Remote_Update = 50000, /**< 远程部署通信端口 */
|
||||
/*透传配置-选配*/
|
||||
.Port_Innet_Raw_Num = 1, /**< 内网透传端口数量0-9 */
|
||||
.Port_Innet_Raw_Extend_Num = 1, /**< 内网透传扩展端口数量0-9 */
|
||||
/*透传通道-Number 1根据数量两个通道的数量,按序号累加以此类推(0-17)*/
|
||||
.Innet_Raw_Parameter[0].Port_Innet_Raw = 3956, /**< 内网透明传输端口 */
|
||||
.Innet_Raw_Parameter[0].Port_Type_Enable = RAW_COM_UDP, /**< 内网透明UDP传输模式 */
|
||||
.Innet_Raw_Parameter[0].Server_DevId = 0, /**< 服务端设备类型和id */
|
||||
.Innet_Raw_Parameter[0].TIME_STAMP_ENABLE = 0XAA, /**< 2取2乘时间戳使能开关 */
|
||||
.Innet_Raw_Parameter[0].INNET_2oo2_RAW = 0X55, /**< 透传通道2取开关,开0x55,关0xAA */
|
||||
.Innet_Raw_Parameter[0].INNET_2x2_RAW = 0XAA, /**< 透传通道2乘开关,开0x55,关0xAA */
|
||||
.Innet_Raw_Parameter[0].IP_InnetRaw_maddr = "224.0.0.31",/**< 内网透传的组播IP */
|
||||
/*扩展通道-Number 1 根据数量两个通道的数量,按序号累加以此类推(0-17)*/
|
||||
.Innet_Raw_Parameter[1].Port_Innet_Raw = 3957, /**< 内网透明传输端口 */
|
||||
.Innet_Raw_Parameter[1].Port_Type_Enable = RAW_COM_BROADCAST, /**< 内网透明广播传输模式 */
|
||||
.Innet_Raw_Parameter[1].Server_DevId = 0, /**< 服务端设备类型和id */
|
||||
.Innet_Raw_Parameter[1].TIME_STAMP_ENABLE = 0XAA, /**< 2取2乘时间戳使能开关 */
|
||||
.Innet_Raw_Parameter[1].INNET_2oo2_RAW = 0X55, /**< 透传通道2取开关,开0x55,关0xAA */
|
||||
.Innet_Raw_Parameter[1].INNET_2x2_RAW = 0XAA, /**< 透传通道2乘开关,开0x55,关0xAA */
|
||||
.Innet_Raw_Parameter[1].IP_InnetRaw_maddr = "224.0.0.32",/**< 内网透传的组播IP */
|
||||
/*外网通信配置-红网*/
|
||||
.OutNetRed.CC_G_IP_A = "192.168.1.60", /**< 通控的内网IP */
|
||||
.OutNetRed.CC_P_IP_A = "192.168.2.60", /**< 通控的内网IP */
|
||||
.OutNetRed.CC_G_IP_B = "192.168.1.160", /**< 通控的内网IP */
|
||||
.OutNetRed.CC_P_IP_B = "192.168.2.160", /**< 通控的内网IP */
|
||||
.OutNetRed.EXTEND_G_IP_A = "192.168.1.70", /**< 扩展板卡的内网IP */
|
||||
.OutNetRed.EXTEND_P_IP_A = "192.168.2.70", /**< 扩展板卡的内网IP */
|
||||
.OutNetRed.EXTEND_G_IP_B = "192.168.1.71", /**< 扩展板卡的内网IP */
|
||||
.OutNetRed.EXTEND_P_IP_B = "192.168.2.71", /**< 扩展板卡的内网IP */
|
||||
.OutNetRed.OutnetSafe_Port = 54001, /**< 外网安全通信端口 */
|
||||
.OutNetRed.OutnetRaw_Port = 54002, /**< 外网透传通信端口 */
|
||||
/*外网通信配置-蓝网*/
|
||||
.OutNetBlue.CC_G_IP_A = "192.168.1.61", /**< 通控的内网IP */
|
||||
.OutNetBlue.CC_P_IP_A = "192.168.2.61", /**< 通控的内网IP */
|
||||
.OutNetBlue.CC_G_IP_B = "192.168.1.161", /**< 通控的内网IP */
|
||||
.OutNetBlue.CC_P_IP_B = "192.168.2.161", /**< 通控的内网IP */
|
||||
.OutNetBlue.EXTEND_G_IP_A = "192.168.1.170", /**< 扩展板卡的内网IP */
|
||||
.OutNetBlue.EXTEND_P_IP_A = "192.168.2.170", /**< 扩展板卡的内网IP */
|
||||
.OutNetBlue.EXTEND_G_IP_B = "192.168.1.171", /**< 扩展板卡的内网IP */
|
||||
.OutNetBlue.EXTEND_P_IP_B = "192.168.2.171", /**< 扩展板卡的内网IP */
|
||||
.OutNetBlue.OutnetSafe_Port = 54001, /**< 外网安全通信端口 */
|
||||
.OutNetBlue.OutnetRaw_Port = 54002, /**< 外网透传通信端口 */
|
||||
/*日志记录目标设备IP配置*/
|
||||
.Logger_G_IP_A = "192.168.146.100", /**< A地绿网日志记录IP */
|
||||
.Logger_P_IP_A = "192.168.18.100", /**< A地紫网日志记录IP */
|
||||
.Logger_G_IP_B = "192.168.146.200", /**< B地绿网日志记录IP */
|
||||
.Logger_P_IP_B = "192.168.18.200", /**< B地绿网日志记录IP */
|
||||
/*内网通信设备注册最大支持0-255,注意:IP配置方式比较特别,与前面配置区分*/
|
||||
.INNET_COM_NUM = 1, /**< 内网通信设备数量0-255 */
|
||||
.INNET_COM_CFG[0].InnetID = 0xF800, /**< 内网通信ID */
|
||||
.INNET_COM_CFG[0].IP_G = (CM_UINT32)inet_addr("172.25.0.100"),/**< 绿网IP*/
|
||||
.INNET_COM_CFG[0].Port_Raw_G = 55003, /**< 绿网透传端口 */
|
||||
.INNET_COM_CFG[0].Port_Safe_G = 55004, /**< 绿网安全端口 */
|
||||
.INNET_COM_CFG[0].IP_P = (CM_UINT32)inet_addr("172.17.0.100"),/**< 紫网IP */
|
||||
.INNET_COM_CFG[0].Port_Raw_P = 55003, /**< 紫网透传端口 */
|
||||
.INNET_COM_CFG[0].Port_Safe_P = 55004, /**< 紫网安全端口 */
|
||||
/*第三方仲裁通信配置*/
|
||||
.Arb_CFG.IP_Arb_G = "10.3.1.200",
|
||||
.Arb_CFG.IP_Arb_P = "10.4.1.200",
|
||||
};
|
||||
/*调用参数设置初始化接口*/
|
||||
MSCP_Set_APP_ConfigData(&AppCfgInterface);
|
||||
|
||||
};
|
||||
|
||||
|
||||
if (RC_WORK_MODE_TIOC == CI_SYSTEM_TYPE_RCI)
|
||||
{
|
||||
/*设置IP 与CIIP一致*/
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_2oo2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.0.11"), (UINT32)sizeof("192.168.0.11"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_2x2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.62"), (UINT32)sizeof("192.168.1.62"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_Out), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.62"), (UINT32)sizeof("192.168.1.62"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_Com), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.62"), (UINT32)sizeof("192.168.1.62"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_Com_Extend), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.62"), (UINT32)sizeof("192.168.1.62"));
|
||||
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_2oo2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.0.12"), (UINT32)sizeof("192.168.0.12"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_2x2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.62"), (UINT32)sizeof("192.168.2.62"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_Out), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.62"), (UINT32)sizeof("192.168.2.62"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_Com), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.62"), (UINT32)sizeof("192.168.2.62"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_Com_Extend), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.62"), (UINT32)sizeof("192.168.2.62"));
|
||||
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_2oo2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.0.21"), (UINT32)sizeof("192.168.0.21"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_2x2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.64"), (UINT32)sizeof("192.168.1.64"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_Out), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.64"), (UINT32)sizeof("192.168.1.64"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_Com), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.64"), (UINT32)sizeof("192.168.1.64"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_Com_Extend), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.64"), (UINT32)sizeof("192.168.1.64"));
|
||||
|
||||
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_2oo2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.0.22"), (UINT32)sizeof("192.168.0.22"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_2x2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.64"), (UINT32)sizeof("192.168.2.64"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_Out), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.64"), (UINT32)sizeof("192.168.2.64"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_Com), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.64"), (UINT32)sizeof("192.168.2.64"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_Com_Extend), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.64"), (UINT32)sizeof("192.168.2.64"));
|
||||
|
||||
/*CPU1*/
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[0].IP_Area_A), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.66"), (UINT32)sizeof("192.168.1.66"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[0].IP_Area_B), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.68"), (UINT32)sizeof("192.168.1.68"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[0].IP_Multicast_Mine), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("239.0.0.21"), (UINT32)sizeof("239.0.0.21"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[0].IP_Multicast_Dest), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("239.0.0.11"), (UINT32)sizeof("239.0.0.11"));
|
||||
|
||||
/*CPU2*/
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[1].IP_Area_A), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.66"), (UINT32)sizeof("192.168.2.66"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[1].IP_Area_B), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.68"), (UINT32)sizeof("192.168.2.68"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[1].IP_Multicast_Mine), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("239.0.0.22"), (UINT32)sizeof("239.0.0.22"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[1].IP_Multicast_Dest), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("239.0.0.12"), (UINT32)sizeof("239.0.0.12"));
|
||||
|
||||
/*内网 通控与扩展板卡*/
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetRed.CC_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.60"), (UINT32)sizeof("192.168.1.60"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetRed.CC_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.60"), (UINT32)sizeof("192.168.2.60"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetRed.EXTEND_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.70"), (UINT32)sizeof("192.168.1.70"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetRed.EXTEND_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.70"), (UINT32)sizeof("192.168.2.70"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.Another_SEB.EXTEND_R_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.90"), (UINT32)sizeof("192.168.1.90"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.Another_SEB.EXTEND_R_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.90"), (UINT32)sizeof("192.168.2.90"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetBlue.CC_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.61"), (UINT32)sizeof("192.168.1.61"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetBlue.CC_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.61"), (UINT32)sizeof("192.168.2.61"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetBlue.EXTEND_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.71"), (UINT32)sizeof("192.168.1.71"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetBlue.EXTEND_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.71"), (UINT32)sizeof("192.168.2.71"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.Another_SEB.EXTEND_B_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.91"), (UINT32)sizeof("192.168.1.91"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.Another_SEB.EXTEND_B_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.91"), (UINT32)sizeof("192.168.2.91"));
|
||||
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_Maintain), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.146.101"), (UINT32)sizeof("192.168.146.101"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_Maintain), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.18.102"), (UINT32)sizeof("192.168.18.102"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_Maintain), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.146.103"), (UINT32)sizeof("192.168.146.103"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_Maintain), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.18.104"), (UINT32)sizeof("192.168.18.104"));
|
||||
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.Logger_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.146.100"), (UINT32)sizeof("192.168.146.100"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.Logger_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.18.100"), (UINT32)sizeof("192.168.18.100"));
|
||||
AppCfgInterface.INNET_COM_CFG[0].IP_G = (CM_UINT32)inet_addr("192.168.146.100");
|
||||
AppCfgInterface.INNET_COM_CFG[0].IP_P = (CM_UINT32)inet_addr("192.168.18.100");
|
||||
|
||||
}
|
||||
else
|
||||
{/*设置IP 与CIIP一致*/
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_2oo2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.0.11"), (UINT32)sizeof("192.168.0.11"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_2x2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.66"), (UINT32)sizeof("192.168.1.66"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_Out), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.66"), (UINT32)sizeof("192.168.1.66"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_Com), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.66"), (UINT32)sizeof("192.168.1.66"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_Com_Extend), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.66"), (UINT32)sizeof("192.168.1.66"));
|
||||
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_2oo2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.0.12"), (UINT32)sizeof("192.168.0.12"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_2x2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.66"), (UINT32)sizeof("192.168.2.66"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_Out), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.66"), (UINT32)sizeof("192.168.2.66"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_Com), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.66"), (UINT32)sizeof("192.168.2.66"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_Com_Extend), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.66"), (UINT32)sizeof("192.168.2.66"));
|
||||
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_2oo2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.0.21"), (UINT32)sizeof("192.168.0.21"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_2x2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.68"), (UINT32)sizeof("192.168.1.68"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_Out), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.68"), (UINT32)sizeof("192.168.1.68"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_Com), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.68"), (UINT32)sizeof("192.168.1.68"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_Com_Extend), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.68"), (UINT32)sizeof("192.168.1.68"));
|
||||
|
||||
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_2oo2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.0.22"), (UINT32)sizeof("192.168.0.22"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_2x2), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.68"), (UINT32)sizeof("192.168.2.68"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_Out), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.68"), (UINT32)sizeof("192.168.2.68"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_Com), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.68"), (UINT32)sizeof("192.168.2.68"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_Com_Extend), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.68"), (UINT32)sizeof("192.168.2.68"));
|
||||
|
||||
/*CPU1*/
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[0].IP_Area_A), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.62"), (UINT32)sizeof("192.168.1.62"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[0].IP_Area_B), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.64"), (UINT32)sizeof("192.168.1.64"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[0].IP_Multicast_Mine), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("239.0.0.11"), (UINT32)sizeof("239.0.0.11"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[0].IP_Multicast_Dest), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("239.0.0.21"), (UINT32)sizeof("239.0.0.21"));
|
||||
|
||||
/*CPU2*/
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[1].IP_Area_A), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.62"), (UINT32)sizeof("192.168.2.62"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[1].IP_Area_B), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.64"), (UINT32)sizeof("192.168.2.64"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[1].IP_Multicast_Mine), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("239.0.0.12"), (UINT32)sizeof("239.0.0.12"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.AREA_CPU[1].IP_Multicast_Dest), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("239.0.0.22"), (UINT32)sizeof("239.0.0.22"));
|
||||
|
||||
/*内网 通控与扩展板卡*/
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetRed.CC_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.80"), (UINT32)sizeof("192.168.1.80"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetRed.CC_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.80"), (UINT32)sizeof("192.168.2.80"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetRed.EXTEND_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.90"), (UINT32)sizeof("192.168.1.90"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetRed.EXTEND_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.90"), (UINT32)sizeof("192.168.2.90"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.Another_SEB.EXTEND_R_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.90"), (UINT32)sizeof("192.168.1.90"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.Another_SEB.EXTEND_R_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.90"), (UINT32)sizeof("192.168.2.90"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetBlue.CC_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.81"), (UINT32)sizeof("192.168.1.81"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetBlue.CC_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.81"), (UINT32)sizeof("192.168.2.81"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetBlue.EXTEND_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.91"), (UINT32)sizeof("192.168.1.91"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.OutNetBlue.EXTEND_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.91"), (UINT32)sizeof("192.168.2.91"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.Another_SEB.EXTEND_B_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.1.91"), (UINT32)sizeof("192.168.1.91"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.Another_SEB.EXTEND_B_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.2.91"), (UINT32)sizeof("192.168.2.91"));
|
||||
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[0].IP_Maintain), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.148.101"), (UINT32)sizeof("192.168.148.101"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[1].IP_Maintain), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.20.102"), (UINT32)sizeof("192.168.20.102"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[2].IP_Maintain), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.148.103"), (UINT32)sizeof("192.168.148.103"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.CPU[3].IP_Maintain), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.20.104"), (UINT32)sizeof("192.168.20.104"));
|
||||
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.Logger_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.148.100"), (UINT32)sizeof("192.168.148.100"));
|
||||
(void)CommonMemCpy((void*)(AppCfgInterface.Logger_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.20.100"), (UINT32)sizeof("192.168.20.100"));
|
||||
AppCfgInterface.INNET_COM_CFG[0].IP_G = (CM_UINT32)inet_addr("192.168.148.100");
|
||||
AppCfgInterface.INNET_COM_CFG[0].IP_P = (CM_UINT32)inet_addr("192.168.20.100");
|
||||
|
||||
}
|
||||
if(SYSTEM_WORK_MODE_ONLY == cSystemWorkType)
|
||||
{
|
||||
/*单系统运行:区域开关设置为0*/
|
||||
AppCfgInterface.M_Area_Enable = 0u;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*双系统运行*/
|
||||
if (RC_WORK_MODE_TIOC == CI_SYSTEM_TYPE_RCI)
|
||||
{
|
||||
/*RC区域开关设置为0xAA*/
|
||||
AppCfgInterface.M_Area_Enable = 0xAAu;
|
||||
/**< RC与CI扩展板卡通信功能开关配置 */
|
||||
AppCfgInterface.M_AREA_SEB_Enable = 0x55u;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
/*设置CI IP+区域IP*/
|
||||
AppCfgInterface.M_Area_Enable = 0x55u;
|
||||
}
|
||||
|
||||
}
|
||||
MSCP_Set_APP_ConfigData(&AppCfgInterface);
|
||||
|
||||
#endif
|
||||
|
||||
/*组FS版本号*/
|
||||
ii = 0U;
|
||||
fsVersBuffer[ii++] = szFSFILEVersionFS[0];
|
||||
fsVersBuffer[ii++] = szFSFILEVersionFS[1];
|
||||
fsVersBuffer[ii++] = szFSFILEVersionFS[2];
|
||||
fsVersBuffer[ii++] = szFSFILEVersionFS[3];
|
||||
/*组FS版本号*/
|
||||
ii = 0U;
|
||||
fsVersBuffer[ii++] = szFSFILEVersionFS[0];
|
||||
fsVersBuffer[ii++] = szFSFILEVersionFS[1];
|
||||
fsVersBuffer[ii++] = szFSFILEVersionFS[2];
|
||||
fsVersBuffer[ii++] = szFSFILEVersionFS[3];
|
||||
|
||||
/*组软件版本号*/
|
||||
ii = 0U;
|
||||
appVersBuffer[ii++] = VER_SOFT_PRODUCT;
|
||||
appVersBuffer[ii++] = VER_SOFT_MODUAL_APP >> 2U;
|
||||
appVersBuffer[ii++] = (VER_SOFT_MODUAL_APP << 6U) + (VER_SOFT_MIANVERSION & (UINT8)0x3F);
|
||||
appVersBuffer[ii++] = VER_SOFT_SUBVERSION;
|
||||
/*设置平台调用获取外网信息函数*/
|
||||
MSCP_SetSrcId(SetOutNetPara);
|
||||
/*设置内网参数*/
|
||||
MSCP_SetSfpInnetPara(g_SfpInnetParam);
|
||||
MSCP_SetAppVersion(appVersBuffer);
|
||||
MSCP_SetFsVersion(fsVersBuffer);
|
||||
/*组软件版本号*/
|
||||
ii = 0U;
|
||||
appVersBuffer[ii++] = VER_INTE_PROJECT;
|
||||
appVersBuffer[ii++] = VER_INTE_PRODUCT >> 2U;
|
||||
appVersBuffer[ii++] = (VER_INTE_PRODUCT << 6U) + (VER_INTE_EXE & (UINT8)0x3F);
|
||||
appVersBuffer[ii++] = VER_INTE_TIME;
|
||||
/*设置平台调用获取外网信息函数*/
|
||||
MSCP_SetSrcId(SetOutNetPara);
|
||||
/*设置内网参数*/
|
||||
MSCP_SetSfpInnetPara(g_SfpInnetParam);
|
||||
MSCP_SetAppVersion(appVersBuffer);
|
||||
MSCP_SetFsVersion(fsVersBuffer);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @brief 应用周期主逻辑
|
||||
@@ -564,16 +562,16 @@ void APP_API_Data_Init()
|
||||
* - ENUM_CM_TRUE 成功
|
||||
* - ENUM_CM_FALSE 失败(平台立即宕机)
|
||||
* @details
|
||||
* 当本系热备状态为:ENUM_4x2_SHUTDOWN,时
|
||||
* 当本系热备状态为:ENUM_2x2_SHUTDOWN,时
|
||||
* 本函数不执行;
|
||||
* 当本系热备状态为:ENUM_4x2_OFFLINE,ENUM_4x2_PRE_MASTER,ENUM_4x2_SLAVE,时
|
||||
* 当本系热备状态为:ENUM_2x2_OFFLINE,ENUM_2x2_PRE_MASTER,ENUM_2x2_SLAVE,时
|
||||
* 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出;
|
||||
* 当本系热备状态为:ENUM_4x2_MASTER,时
|
||||
* 当本系热备状态为:ENUM_2x2_MASTER,时
|
||||
* 本函数被周期执行,并且所有输出信息被真实输出。
|
||||
*/
|
||||
ENUM_CM_RETURN APP_API_MainFunc(void)
|
||||
{
|
||||
ENUM_CM_RETURN retVal = ENUM_CM_FALSE;
|
||||
ENUM_CM_RETURN retVal = ENUM_CM_NULL;
|
||||
CM_UINT64 startCycTick = 0u;
|
||||
CM_UINT64 endCycTick = 0u;
|
||||
|
||||
@@ -591,9 +589,11 @@ ENUM_CM_RETURN APP_API_MainFunc(void)
|
||||
endCycTick = MSCP_GetTick();
|
||||
debug_infor_printf("app proc end at %llu us,used %d us\n", endCycTick, (CM_INT32)((endCycTick - startCycTick) / 1000));
|
||||
|
||||
//gFollowDataLen = GetCiAppData(gFollowData);
|
||||
memset(gFollowData,0x02,1024*500);
|
||||
MSCP_SetFollowData(gFollowData, 1024*500);
|
||||
gFollowDataLen = GetCiAppData(gFollowData);
|
||||
MSCP_SetFollowData(gFollowData, gFollowDataLen);
|
||||
|
||||
gCiRcFollowDataLen = GetCiGeneralData(gCiRcFollowData);
|
||||
MSCP_CISendAppData(gCiRcFollowData, gCiRcFollowDataLen);
|
||||
|
||||
return retVal;
|
||||
}
|
||||
@@ -604,11 +604,11 @@ ENUM_CM_RETURN APP_API_MainFunc(void)
|
||||
* - ENUM_CM_TRUE 成功
|
||||
* - ENUM_CM_FALSE 失败(平台立即宕机)
|
||||
* @details
|
||||
* 当本系热备状态为:ENUM_4x2_SHUTDOWN,时
|
||||
* 当本系热备状态为:ENUM_2x2_SHUTDOWN,时
|
||||
* 本函数不执行;
|
||||
* 当本系热备状态为:ENUM_4x2_OFFLINE,ENUM_4x2_PRE_MASTER,ENUM_4x2_SLAVE,时
|
||||
* 当本系热备状态为:ENUM_2x2_OFFLINE,ENUM_2x2_PRE_MASTER,ENUM_2x2_SLAVE,时
|
||||
* 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出;
|
||||
* 当本系热备状态为:ENUM_4x2_MASTER,时
|
||||
* 当本系热备状态为:ENUM_2x2_MASTER,时
|
||||
* 本函数被周期执行,并且所有输出信息被真实输出。
|
||||
*/
|
||||
ENUM_CM_RETURN APP_API_MainFunc2(void)
|
||||
@@ -624,11 +624,11 @@ ENUM_CM_RETURN APP_API_MainFunc2(void)
|
||||
* - ENUM_CM_TRUE 成功
|
||||
* - ENUM_CM_FALSE 失败(平台立即宕机)
|
||||
* @details
|
||||
* 当本系热备状态为:ENUM_4x2_SHUTDOWN,时
|
||||
* 当本系热备状态为:ENUM_2x2_SHUTDOWN,时
|
||||
* 本函数不执行;
|
||||
* 当本系热备状态为:ENUM_4x2_OFFLINE,ENUM_4x2_PRE_MASTER,ENUM_4x2_SLAVE,时
|
||||
* 当本系热备状态为:ENUM_2x2_OFFLINE,ENUM_2x2_PRE_MASTER,ENUM_2x2_SLAVE,时
|
||||
* 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出;
|
||||
* 当本系热备状态为:ENUM_4x2_MASTER,时
|
||||
* 当本系热备状态为:ENUM_2x2_MASTER,时
|
||||
* 本函数被周期执行,并且所有输出信息被真实输出。
|
||||
*/
|
||||
ENUM_CM_RETURN APP_API_MainFunc3(void)
|
||||
@@ -651,11 +651,11 @@ ENUM_CM_RETURN APP_API_MainFunc4(void)
|
||||
* - ENUM_CM_TRUE 成功
|
||||
* - ENUM_CM_FALSE 失败(平台立即宕机)
|
||||
* @details
|
||||
* 当本系热备状态为:ENUM_4x2_SHUTDOWN,时
|
||||
* 当本系热备状态为:ENUM_2x2_SHUTDOWN,时
|
||||
* 本函数不执行;
|
||||
* 当本系热备状态为:ENUM_4x2_OFFLINE,ENUM_4x2_PRE_MASTER,ENUM_4x2_SLAVE,时
|
||||
* 当本系热备状态为:ENUM_2x2_OFFLINE,ENUM_2x2_PRE_MASTER,ENUM_2x2_SLAVE,时
|
||||
* 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出;
|
||||
* 当本系热备状态为:ENUM_4x2_MASTER,时
|
||||
* 当本系热备状态为:ENUM_2x2_MASTER,时
|
||||
* 本函数被周期执行,并且所有输出信息被真实输出。
|
||||
*/
|
||||
ENUM_CM_RETURN APP_API_MainFunc5(void)
|
||||
@@ -693,7 +693,7 @@ ENUM_CM_RETURN APP_API_InputFunc(void)
|
||||
* - ENUM_CM_TRUE 成功
|
||||
* - ENUM_CM_FALSE 失败(平台立即宕机)
|
||||
* @details
|
||||
* 当本系热备状态为:ENUM_4x2_OFFLINE,ENUM_4x2_SLAVE,且收到了邻系正确的跟随数据时
|
||||
* 当本系热备状态为:ENUM_2x2_OFFLINE,ENUM_2x2_SLAVE,且收到了邻系正确的跟随数据时
|
||||
* 本函数将在APP_API_MainFunc()之前执行;
|
||||
* 否则,本函数不执行。
|
||||
* 应用跟随数据的最大长度不得超过1024*1000字节
|
||||
@@ -704,8 +704,7 @@ ENUM_CM_RETURN APP_API_FollowUp(IN const CM_UINT8 Data[MSCP_FOLLOW_BUFF_SIZE], I
|
||||
ENUM_CM_RETURN retVal = ENUM_CM_FALSE;
|
||||
UINT8 setRtn = 0u;
|
||||
|
||||
//setRtn = SetCiAppData(Data, Len);
|
||||
setRtn = 1;
|
||||
setRtn = SetCiAppData(Data, Len);
|
||||
if (1u == setRtn)
|
||||
{
|
||||
retVal = ENUM_CM_TRUE;
|
||||
@@ -723,6 +722,9 @@ ENUM_CM_RECCUSEB Is_Send_ExtendBoard(IN const CM_UINT16 dstDevTypeId)
|
||||
UINT8 chLocalCiType = 0U; /*本联锁属性*/
|
||||
UINT8 chDstCiType = 0U; /*本联锁属性*/
|
||||
UINT8 chCldScxCommMode = 0U;
|
||||
UINT8 chWorkType = 0U; /*双系工作模式*/
|
||||
UINT8 cControlState = 0U;/*主备用模式*/
|
||||
UINT8 cRcWorkMode = 0u;/*RC工作模式*/
|
||||
UINT8 chResult = CI_ERROR; /*联锁属性检查结果*/
|
||||
|
||||
wAtsGtWayDevTypeId = GetTiocTrnsmtGtwyDevTypeId();
|
||||
@@ -735,8 +737,11 @@ ENUM_CM_RECCUSEB Is_Send_ExtendBoard(IN const CM_UINT16 dstDevTypeId)
|
||||
chLocalCiType = GetLocalCiType();
|
||||
chDstCiType = GetCiType(devId);
|
||||
chCldScxCommMode = GetCiFunctionSwitchConfig(SCX_CLD_INTERFACE_TYPE);
|
||||
chWorkType = GetSystemWorkType();
|
||||
cControlState = GetLocalCiBackUpPattern();
|
||||
cRcWorkMode = GetLocalRcWorkMode();
|
||||
|
||||
if ((SCX_CLD_SERIAL_PORT_COMM == chCldScxCommMode) && (CI_SYSTEM_TYPE_CI == devType))
|
||||
if ((SCX_CLD_SERIAL_PORT_COMM == chCldScxCommMode) && (CI_SYSTEM_TYPE_RCI == devType))
|
||||
{
|
||||
if (((CI_TYPE_CLD == chLocalCiType) && (CI_TYPE_SCX == chDstCiType)) || ((CI_TYPE_SCX == chLocalCiType) && (CI_TYPE_CLD == chDstCiType)))
|
||||
{
|
||||
@@ -753,12 +758,38 @@ ENUM_CM_RECCUSEB Is_Send_ExtendBoard(IN const CM_UINT16 dstDevTypeId)
|
||||
; /*不为串口通信,此时不对本地CI类型及对方CI类型进行判断*/
|
||||
}
|
||||
|
||||
if ((CI_SYSTEM_TYPE_XIANDI == devType) || (CI_SYSTEM_TYPE_ATS == devType) || (CI_SYSTEM_TYPE_LEU == devType)
|
||||
if ((CI_SYSTEM_TYPE_XIANDI == devType) || (CI_SYSTEM_TYPE_ATS == devType)
|
||||
|| (CI_SUCCESS == chResult)
|
||||
|| (CI_SYSTEM_TYPE_VOBC_BACKUP == devType)) /*现地,ATS,LEU,使用串口的相邻CI*/
|
||||
|| (CI_SYSTEM_TYPE_VOBC_BACKUP == devType)) /*现地,ATS,使用串口的相邻CI*/
|
||||
{
|
||||
retVal = ENUM_CM_SEB;
|
||||
}
|
||||
else if (CI_SYSTEM_TYPE_ITE == devType)
|
||||
{
|
||||
retVal = ENUM_CM_CCSEB;
|
||||
}
|
||||
else if (CI_SYSTEM_TYPE_LEU == devType)
|
||||
{
|
||||
if ((SYSTEM_WORK_MODE_ALL == chWorkType) && (RC_WORK_MODE_TIOC == cRcWorkMode))
|
||||
{
|
||||
/*双系统,并且当前是RC*/
|
||||
if (SYSTEM_WORK_MODE_MAIN == cControlState)
|
||||
{
|
||||
/*是RC主用时,需要用CI的串口板进行LEU通信*/
|
||||
retVal = ENUM_CM_SEB_ANOTHER;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*RC备用,禁止发送*/
|
||||
retVal = ENUM_CM_FORBIDDEN;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*单系统,或当前是CI*/
|
||||
retVal = ENUM_CM_SEB;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = ENUM_CM_CC;
|
||||
@@ -820,8 +851,8 @@ void SetOutNetPara(UINT8* pRxBuf, UINT32 dwLen, ENUM_OUTNET_CHN_T chOutNetType,
|
||||
tempLen = *pCurLen;
|
||||
if ((TRANSMIT_OBJECT_SUM_MAX * TRANSMIT_OBJECT_DEVICE_SUM_MAX) > (tempLen + objLen))
|
||||
{
|
||||
CommonMemCpy(&pOutBuf[tempLen], objLen * sizeof(UINT16), \
|
||||
gTransmitObjTypeId, objLen * sizeof(UINT16));
|
||||
CommonMemCpy((void*)&pOutBuf[tempLen], objLen * sizeof(UINT16), \
|
||||
(const void*)gTransmitObjTypeId, objLen * sizeof(UINT16));
|
||||
*pCurLen = tempLen + objLen;
|
||||
debug_infor_printf("outnet in type len :%d", chOutNetType, objLen);
|
||||
debug_out_array(0xAA, gTransmitObjTypeId, objLen * sizeof(UINT16));
|
||||
@@ -957,7 +988,7 @@ ENUM_CM_RETURN SerialOutAtsVobcFunc(UINT16 inDstId IN, UINT16* outSrcId OUT, UIN
|
||||
inDstType = (UINT8)((inDstId & 0xff00U) >> 8);
|
||||
if ((CI_SYSTEM_TYPE_VOBC_BACKUP == inDstType) || (CI_SYSTEM_TYPE_ITE == inDstType))
|
||||
{
|
||||
*outSrcId = (CI_SYSTEM_TYPE_CI << 8) + GetSystemParaLocalCiId();
|
||||
*outSrcId = (CI_SYSTEM_TYPE_RCI << 8) + GetSystemParaLocalCiId();
|
||||
*outDstId = GetATSInterfaceTypeId();
|
||||
|
||||
retVal = ENUM_CM_TRUE;
|
||||
|
||||
@@ -40,11 +40,11 @@ extern "C" {
|
||||
* - ENUM_CM_TRUE 成功
|
||||
* - ENUM_CM_FALSE 失败(平台立即宕机)
|
||||
* @note
|
||||
* 当本系热备状态为:ENUM_4x2_SHUTDOWN,时
|
||||
* 当本系热备状态为:ENUM_2x2_SHUTDOWN,时
|
||||
* 本函数不执行;
|
||||
* 当本系热备状态为:ENUM_4x2_OFFLINE,ENUM_4x2_PRE_MASTER,ENUM_4x2_SLAVE,时
|
||||
* 当本系热备状态为:ENUM_2x2_OFFLINE,ENUM_2x2_PRE_MASTER,ENUM_2x2_SLAVE,时
|
||||
* 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出;
|
||||
* 当本系热备状态为:ENUM_4x2_MASTER,时
|
||||
* 当本系热备状态为:ENUM_2x2_MASTER,时
|
||||
* 本函数被周期执行,并且所有输出信息被真实输出。
|
||||
*/
|
||||
ENUM_CM_RETURN APP_API_MainFunc(void);
|
||||
|
||||
@@ -30,6 +30,6 @@
|
||||
#define VER_INTE_PROJECT 220 /*项目编号*/
|
||||
#define VER_INTE_PRODUCT 40 /*产品编号*/
|
||||
#define VER_INTE_EXE 1 /*可执行编号*/
|
||||
#define VER_INTE_TIME 77 /*集成次数编号*/
|
||||
#define VER_INTE_TIME 112 /*集成次数编号*/
|
||||
|
||||
#endif/*endif of #define _CI_INTEGRATE_CONFIG_H*/
|
||||
File diff suppressed because it is too large
Load Diff
@@ -153,6 +153,20 @@ UINT32 CopyValidSetVobcBackHlht(const UINT8 *pCurCiAppDataPointer, UINT16 struNu
|
||||
*/
|
||||
UINT32 CopyValidSetVobcDataStru(const UINT8* pCurCiAppDataPointer, VobcToCiDataStruct* pDataStru, UINT16 struNum);
|
||||
|
||||
/*
|
||||
* 功能描述: 拷贝RC通信的VOBC有效数据到对应的全局数组
|
||||
* 参数说明:
|
||||
输入参数
|
||||
const UINT8 *pCurCiAppDataPointer:当前数据指针
|
||||
UINT16 struNum:数组长度,
|
||||
UINT16 struLength:结构体长度
|
||||
输出参数
|
||||
void *pDataStru:结构体指针,
|
||||
* 返回值 : 拷贝数据的长度
|
||||
*/
|
||||
UINT32 CopyValidSetRcVobcDataStru(const UINT8* pCurCiAppDataPointer, void* pDataStru, UINT16 struNum, UINT16 struLength);
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述:拷贝ITE有效数据到对应的全局数组
|
||||
* 参数说明:const UINT8 *pCurCiAppDataPointer:当前数据指针
|
||||
@@ -188,6 +202,280 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer);
|
||||
*/
|
||||
UINT8 SetCiAppData(const UINT8 *pCiAppDataPointer,const UINT32 len);
|
||||
|
||||
|
||||
/**
|
||||
* @brief 拷贝获取现地有效互联互通头
|
||||
* @param[in] UINT8 *pCurCiAppDataPointer:当前数据指针
|
||||
* @param[in] UINT16 struNum:数组长度
|
||||
* @param[in] struLength:结构体长度
|
||||
* @return 无
|
||||
* @note by cgh 20251103
|
||||
*/
|
||||
UINT32 CopyValidGetXiandiHlht(UINT8* pCurCiAppDataPointer, UINT16 struNum, UINT16 struLength);
|
||||
|
||||
/**
|
||||
* @brief 拷贝设置现地有效互联互通头
|
||||
* @param[in] UINT8 *pCurCiAppDataPointer:当前数据指针
|
||||
* @param[in] UINT16 struNum:数组长度
|
||||
* @param[in] struLength:结构体长度
|
||||
* @return 无
|
||||
* @note by cgh 20251103
|
||||
*/
|
||||
UINT32 CopyValidSetXiandiHlht(const UINT8* pCurCiAppDataPointer, UINT16 struNum, UINT16 struLength);
|
||||
|
||||
/**
|
||||
* @brief 拷贝获取ATS有效互联互通头
|
||||
* @param[in] UINT8 *pCurCiAppDataPointer:当前数据指针
|
||||
* @param[in] UINT16 struNum:数组长度
|
||||
* @param[in] struLength:结构体长度
|
||||
* @return 无
|
||||
* @note by cgh 20251103
|
||||
*/
|
||||
UINT32 CopyValidGetAtsHlht(UINT8* pCurCiAppDataPointer, UINT16 struNum, UINT16 struLength);
|
||||
|
||||
/**
|
||||
* @brief 拷贝设置ATS有效互联互通头
|
||||
* @param[in] UINT8 *pCurCiAppDataPointer:当前数据指针
|
||||
* @param[in] UINT16 struNum:数组长度
|
||||
* @param[in] struLength:结构体长度
|
||||
* @return 无
|
||||
* @note by cgh 20251103
|
||||
*/
|
||||
UINT32 CopyValidSetAtsiHlht(const UINT8* pCurCiAppDataPointer, UINT16 struNum, UINT16 struLength);
|
||||
|
||||
/*
|
||||
* 功能描述: CI待发送RC应用数据
|
||||
* 参数说明: UINT8 *pCiAppDataPointer, CI应用数据指针
|
||||
* 返回值 : void
|
||||
*/
|
||||
UINT32 GetCiGeneralData(UINT8* pCiAppDataPointer);
|
||||
|
||||
/*
|
||||
* 功能描述: RC设置CI的应用数据
|
||||
* 参数说明: UINT8 *pCiAppDataPointer, CI应用数据指针
|
||||
* const UINT32 len,数据长度
|
||||
* 返回值 : UINT8,
|
||||
*/
|
||||
UINT8 SetCiGeneralData(const UINT8* pCiAppDataPointer, const UINT32 len);
|
||||
|
||||
/*
|
||||
* 功能描述:二乘拷贝互联互通报文头
|
||||
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
|
||||
* UINT16 struNum 数组长度
|
||||
* struLength 结构体长度
|
||||
* HLHTHeadContextStru pstrHLHTHeadCtxs[] 待拷贝的互联互通报文头
|
||||
* 返 回 值:拷贝的数据长度
|
||||
* Created By LQ 2025.11.04
|
||||
*/
|
||||
UINT32 CopyValidGetHlhtHeadCtxs(UINT8* pCurCiAppDataPointer, UINT16 struNum, UINT16 struLength, HLHTHeadContextStru pstrHLHTHeadCtxs[]);
|
||||
|
||||
/*
|
||||
* 功能描述:二乘设置互联互通报文头
|
||||
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
|
||||
* UINT16 struNum 数组长度
|
||||
* struLength 结构体长度
|
||||
* HLHTHeadContextStru pstrHLHTHeadCtxs[] 待设置的互联互通报文头
|
||||
* 返 回 值:拷贝的数据长度
|
||||
* Created By LQ 2025.11.04
|
||||
*/
|
||||
UINT32 CopyValidSetHlhtHeadCtxs(const UINT8* pCurCiAppDataPointer, UINT16 struNum, UINT16 struLength, HLHTHeadContextStru pstrHLHTHeadCtxs[]);
|
||||
/*
|
||||
* 功能描述:二乘拷贝信号机结构体-车车
|
||||
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
|
||||
* UINT16 struNum 数组长度
|
||||
* SignalDataStructCC pstSignalDataStruCC[] 待拷贝的结构体
|
||||
* 返 回 值:拷贝的数据长度
|
||||
* Created By LYJ 2025.11.07
|
||||
*/
|
||||
UINT32 CopyValidGetSigDataCC(UINT8* pCurCiAppDataPointer, UINT16 struNum, SignalDataStructCC pstSignalDataStruCC[]);
|
||||
/*
|
||||
* 功能描述:二乘设置信号机结构体-车车
|
||||
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
|
||||
* UINT16 struNum 数组长度
|
||||
* SignalDataStructCC pstSignalDataStruCC[] 待设置的结构体
|
||||
* 返 回 值:拷贝的数据长度
|
||||
* Created By LYJ 2025.11.07
|
||||
*/
|
||||
UINT32 CopyValidSetSigDataCC(UINT8* pCurCiAppDataPointer, UINT16 struNum, SignalDataStructCC pstSignalDataStruCC[]);
|
||||
/*
|
||||
* 功能描述:二乘拷贝防淹门结构体-车车
|
||||
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
|
||||
* UINT16 struNum 数组长度
|
||||
* FloodGateDataStructCC pstFloodGateDataStruCC[] 待拷贝的结构体
|
||||
* 返 回 值:拷贝的数据长度
|
||||
* Created By LYJ 2025.11.07
|
||||
*/
|
||||
UINT32 CopyValidGetFloodGateDataCC(UINT8* pCurCiAppDataPointer, UINT16 struNum, FloodGateDataStructCC pstFloodGateDataStruCC[]);
|
||||
/*
|
||||
* 功能描述:二乘设置防淹门结构体-车车
|
||||
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
|
||||
* UINT16 struNum 数组长度
|
||||
* FloodGateDataStructCC pstFloodGateDataStruCC[] 待拷贝的结构体
|
||||
* 返 回 值:拷贝的数据长度
|
||||
* Created By LYJ 2025.11.07
|
||||
*/
|
||||
UINT32 CopyValidSetFloodGateDataCC(UINT8* pCurCiAppDataPointer, UINT16 struNum, FloodGateDataStructCC pstFloodGateDataStruCC[]);
|
||||
/*
|
||||
* 功能描述:二乘拷贝逻辑区段结构体-车车
|
||||
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
|
||||
* UINT16 struNum 数组长度
|
||||
* LogicSectionDataStructCC pstLogSecDataStruCC[] 待拷贝的结构体
|
||||
* 返 回 值:拷贝的数据长度
|
||||
* Created By LYJ 2025.11.07
|
||||
*/
|
||||
UINT32 CopyValidGetLogicSecDataCC(UINT8* pCurCiAppDataPointer, UINT16 struNum, LogicSectionDataStructCC pstLogSecDataStruCC[]);
|
||||
/*
|
||||
* 功能描述:二乘设置逻辑区段结构体-车车
|
||||
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
|
||||
* UINT16 struNum 数组长度
|
||||
* LogicSectionDataStructCC pstLogSecDataStruCC[] 待拷贝的结构体
|
||||
* 返 回 值:拷贝的数据长度
|
||||
* Created By LYJ 2025.11.07
|
||||
*/
|
||||
UINT32 CopyValidSetLogicSecDataCC(UINT8* pCurCiAppDataPointer, UINT16 struNum, LogicSectionDataStructCC pstLogSecDataStruCC[]);
|
||||
/*
|
||||
* 功能描述:二乘拷贝进路结构体-车车
|
||||
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
|
||||
* UINT16 struNum 数组长度
|
||||
* RouteDataStructCC pstRouteDataStruCC[] 待拷贝的结构体
|
||||
* 返 回 值:拷贝的数据长度
|
||||
* Created By LYJ 2025.11.10
|
||||
*/
|
||||
UINT32 CopyValidGetRouteDataCC(UINT8* pCurCiAppDataPointer, UINT16 struNum, RouteDataStructCC pstRouteDataStruCC[]);
|
||||
/*
|
||||
* 功能描述:二乘拷贝进路结构体-车车
|
||||
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
|
||||
* UINT16 struNum 数组长度
|
||||
* RouteDataStructCC pstRouteDataStruCC[] 待拷贝的结构体
|
||||
* 返 回 值:拷贝的数据长度
|
||||
* Created By LYJ 2025.11.10
|
||||
*/
|
||||
UINT32 CopyValidSetRouteDataCC(UINT8* pCurCiAppDataPointer, UINT16 struNum, RouteDataStructCC pstRouteDataStruCC[]);
|
||||
|
||||
/*
|
||||
* 功能描述:拷贝ZC发送的信号机数据
|
||||
* 参数说明:UINT8* pCurCiAppDataPointer 当前数据指针
|
||||
* 返 回 值:拷贝数据的长度
|
||||
* Created By LQ 2025.11.10
|
||||
*/
|
||||
UINT32 CopyGetZcSignalDymDataStru(UINT8* pCurCiAppDataPointer);
|
||||
|
||||
/*
|
||||
* 功能描述:同步ZC发送的信号机数据
|
||||
* 参数说明:UINT8* pCurCiAppDataPointer 当前数据指针
|
||||
* 返 回 值:拷贝数据的长度
|
||||
* Created By LQ 2025.11.10
|
||||
*/
|
||||
UINT32 CopySetZcSignalDymDataStru(const UINT8* pCurCiAppDataPointer);
|
||||
|
||||
/*
|
||||
* 功能描述:拷贝ZC发送的逻辑区段数据
|
||||
* 参数说明:UINT8* pCurCiAppDataPointer 当前数据指针
|
||||
* 返 回 值:拷贝数据的长度
|
||||
* Created By LQ 2025.11.10
|
||||
*/
|
||||
UINT32 CopyGetZcLogSecDymDataStru(UINT8* pCurCiAppDataPointer);
|
||||
|
||||
/*
|
||||
* 功能描述:同步ZC发送的逻辑区段数据
|
||||
* 参数说明:UINT8* pCurCiAppDataPointer 当前数据指针
|
||||
* 返 回 值:拷贝数据的长度
|
||||
* Created By LQ 2025.11.10
|
||||
*/
|
||||
UINT32 CopySetZcLogSecDymDataStru(const UINT8* pCurCiAppDataPointer);
|
||||
|
||||
/*
|
||||
* 功能描述:拷贝ZC发送的计轴区段数据
|
||||
* 参数说明:UINT8* pCurCiAppDataPointer 当前数据指针
|
||||
* 返 回 值:拷贝数据的长度
|
||||
* Created By LQ 2025.11.10
|
||||
*/
|
||||
UINT32 CopyGetZcAxisSecDymDataStru(UINT8* pCurCiAppDataPointer);
|
||||
|
||||
/*
|
||||
* 功能描述:同步ZC发送的计轴区段数据
|
||||
* 参数说明:UINT8* pCurCiAppDataPointer 当前数据指针
|
||||
* 返 回 值:拷贝数据的长度
|
||||
* Created By LQ 2025.11.10
|
||||
*/
|
||||
UINT32 CopySetZcAxisSecDymDataStru(const UINT8* pCurCiAppDataPointer);
|
||||
|
||||
/*
|
||||
* 功能描述:拷贝ZC发送的物理区段数据
|
||||
* 参数说明:UINT8* pCurCiAppDataPointer 当前数据指针
|
||||
* 返 回 值:拷贝数据的长度
|
||||
* Created By LQ 2025.11.10
|
||||
*/
|
||||
UINT32 CopyGetZcPhySecDymDataStru(UINT8* pCurCiAppDataPointer);
|
||||
|
||||
/*
|
||||
* 功能描述:同步ZC发送的物理区段数据
|
||||
* 参数说明:UINT8* pCurCiAppDataPointer 当前数据指针
|
||||
* 返 回 值:拷贝数据的长度
|
||||
* Created By LQ 2025.11.10
|
||||
*/
|
||||
UINT32 CopySetZcPhySecDymDataStru(const UINT8* pCurCiAppDataPointer);
|
||||
|
||||
/*
|
||||
* 功能描述:拷贝ZC发送的进路数据
|
||||
* 参数说明:UINT8* pCurCiAppDataPointer 当前数据指针
|
||||
* 返 回 值:拷贝数据的长度
|
||||
* Created By LQ 2025.11.10
|
||||
*/
|
||||
UINT32 CopyGetZcRouteDymDataStru(UINT8* pCurCiAppDataPointer);
|
||||
|
||||
/*
|
||||
* 功能描述:同步ZC发送的进路数据
|
||||
* 参数说明:UINT8* pCurCiAppDataPointer 当前数据指针
|
||||
* 返 回 值:拷贝数据的长度
|
||||
* Created By LQ 2025.11.10
|
||||
*/
|
||||
UINT32 CopySetZcRouteDymDataStru(const UINT8* pCurCiAppDataPointer);
|
||||
|
||||
/*
|
||||
* 功能描述:二乘设置OC有效数据
|
||||
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
|
||||
* UINT16 struNum 数组长度
|
||||
* 返 回 值:拷贝的数据长度
|
||||
* Created By fan 2025.11.12
|
||||
*/
|
||||
UINT32 CopyValidSetOcOrginData(UINT8* pCurCiAppDataPointer, UINT16 struNum, OcToCiOriginDataStruct OcRecvData[]);
|
||||
|
||||
/*
|
||||
* 功能描述:二乘拷贝OC原始数据有效值
|
||||
* 参数说明:UINT8 *pCurCiAppDataPointer 当前数据指针
|
||||
* UINT16 struNum 数组长度
|
||||
* OcToCiOriginDataStruct OcRecvData[] 待拷贝的结构体
|
||||
* 返 回 值:拷贝的数据长度
|
||||
* Created By fan 2025.11.12
|
||||
*/
|
||||
UINT32 CopyValidGetOcOrginData(UINT8* pCurCiAppDataPointer, UINT16 struNum, OcToCiOriginDataStruct OcRecvData[]);
|
||||
|
||||
/*
|
||||
* 功能描述: 设置报文上下文数据
|
||||
* 参数说明:
|
||||
输入参数
|
||||
const UINT8 *pCurCiAppDataPointer:当前数据指针
|
||||
UINT16 struNum:数组长度,
|
||||
输出参数
|
||||
HLHTHeadContextStru *pDataStru:结构体指针,
|
||||
* 返回值 : 拷贝数据的长度
|
||||
* 注 意 ; 只适用于报文上下文
|
||||
*/
|
||||
UINT32 CopyValidSetHlhtHeadDataStru(const UINT8 *pCurCiAppDataPointer, UINT16 struNum, HLHTHeadContextStru *pDataStru);
|
||||
|
||||
/*
|
||||
* 功能描述: 拷贝报文上下文数据数据
|
||||
输入参数
|
||||
const HLHTHeadContextStru *pDataStru 结构体指针
|
||||
UINT16 struNum:数组长度,
|
||||
输出参数
|
||||
UINT8 *pCurCiAppDataPointer:当前数据指针,
|
||||
* 返回值 : 拷贝数据的长度
|
||||
* 注 意 ; 只适用于报文上下文
|
||||
*/
|
||||
UINT32 CopyValidGetHlhtHeadDataStru(UINT8 *pCurCiAppDataPointer, UINT16 struNum, const HLHTHeadContextStru *pDataStru);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -21,6 +21,7 @@
|
||||
#include "CommonQueue.h"
|
||||
#include "../Transmit/TransmitStateDataManage.h"
|
||||
|
||||
#include "MSCP_APP_API.h"
|
||||
#ifdef PLATFORM_2OO2
|
||||
#include "sfpplatform.h"
|
||||
#include "RsspWl.h"
|
||||
@@ -89,12 +90,14 @@ extern UINT8* CiAndCiComDeviceNum; /*
|
||||
extern UINT8* CiAndCiComIdBuf; /*联锁与联锁通信设备ID*/
|
||||
extern UINT8* CiAndCiComState; /*联锁与联锁通信状态*/
|
||||
extern UINT8* PlatSheBeiType; /*平台对外设备类型*/
|
||||
extern UINT8 gSheBeiType; /*对外的设备类型*/
|
||||
|
||||
/*
|
||||
* 功能描述: 平台初始化
|
||||
* 参数说明: void
|
||||
* 返回值 : NULL: 获取数据失败
|
||||
* !NULL: 平台ATS到CI接口队列
|
||||
* 返回值 : 0: 失败
|
||||
* 1: 成功
|
||||
* Modified By LQ 2025.08.27
|
||||
*/
|
||||
UINT8 Initial2oo2Interface(void);
|
||||
|
||||
@@ -386,7 +389,7 @@ void SendOut_LogBuff();
|
||||
|
||||
void debug_infor_printf(char* debug_string, ...);
|
||||
void debug_out_array(UINT8 mode, UINT8* debug_array, UINT16 len);
|
||||
|
||||
void DarkInfoPack(UINT16 mode, UINT8* debug_array, UINT16 len);
|
||||
|
||||
UINT8 OutnetSafeRecv(UINT16* srcTypeId, UINT16* srcLogicId, UINT8* data, UINT32* dataLen, UINT32 dataMaxLen);
|
||||
UINT8 InnetSafeRecv(UINT16* srcTypeId, UINT16* srcLogicId, UINT8* data, UINT32* dataLen, UINT32 dataMaxLen);
|
||||
|
||||
@@ -125,6 +125,27 @@ UINT8 GetAllAutoReturnRouteBelongCiId(const UINT16 allAutoReturnId)
|
||||
|
||||
return belongCiId;
|
||||
}
|
||||
/*
|
||||
* 功能描述: 获取指定ID全自动折返所属虚拟联锁ID
|
||||
* 参数说明: const UINT16 allAutoReturnId, 全自动折返ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 所属虚拟联锁ID
|
||||
* add by mpt 20260107
|
||||
*/
|
||||
UINT8 GetAllAutoRetRoutBelongVirCiId(const UINT16 allAutoReturnId)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT8 belongVirCiId = CI_ERROR;
|
||||
|
||||
bufIndex = GetAllAutoReturnBufIndex(allAutoReturnId); /*获取全自动折返数组下标*/
|
||||
|
||||
if (bufIndex < ALL_AUTO_RETURN_SUM_MAX)
|
||||
{
|
||||
belongVirCiId = AllAutoReturnConfigDataStru[bufIndex].BelongVirCiId;
|
||||
}
|
||||
|
||||
return belongVirCiId;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID全自动折返包含进路ID数组
|
||||
|
||||
@@ -34,6 +34,7 @@ typedef struct S_AllAutoReturnConfigDataStruct
|
||||
{
|
||||
UINT16 AllAutoReturnId; /*全自动折返ID (配置字段)*/
|
||||
UINT8 BelongCiId; /*所属联锁ID*/
|
||||
UINT8 BelongVirCiId; /*虚拟联锁ID*/
|
||||
UINT8 RouteSum; /*全自动折返包含进路数目 (配置字段)*/
|
||||
UINT16 RouteIdBuf[ALL_AUTO_RETURN_INCLROUTE_SUM_MAX]; /*全自动折返进路ID数组 (配置字段)*/
|
||||
UINT16 RebackRouteIdBuf[ALL_AUTO_RETURN_REBACKROUTE_SUM_MAX]; /*全自动折返包含折出进路数组(配置字段)*/
|
||||
@@ -92,6 +93,14 @@ UINT8 GetAllAutoReturnIncludeRouteSum(const UINT16 allAutoReturnId);
|
||||
* >0: 所属联锁ID
|
||||
*/
|
||||
UINT8 GetAllAutoReturnRouteBelongCiId(const UINT16 allAutoReturnId);
|
||||
/*
|
||||
* 功能描述: 获取指定ID全自动折返所属虚拟联锁ID
|
||||
* 参数说明: const UINT16 allAutoReturnId, 全自动折返ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 所属虚拟联锁ID
|
||||
* add by mpt 20260107
|
||||
*/
|
||||
UINT8 GetAllAutoRetRoutBelongVirCiId(const UINT16 allAutoReturnId);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID全自动折返包含进路ID数组
|
||||
|
||||
@@ -41,5 +41,5 @@
|
||||
#define ALL_AUTO_RETURN_DICHU_COMMR ((UINT8)0x06) /*抵触的普通进路已办理*/
|
||||
#define ALL_AUTO_RETURN_HAVE_BLOCK ((UINT8)0x02) /*全自动折返进路存在封锁*/
|
||||
#define ALL_AUTO_RETURN_FLOOD_STATE_ERR ((UINT8)0x03) /*全自动折返进路存在防淹门不满足*/
|
||||
|
||||
#define ALL_AUTO_RETURN_COUPROUTE_SET ((UINT8)0x07) /*联挂进路已办理*/
|
||||
#endif
|
||||
|
||||
@@ -119,6 +119,27 @@ UINT8 GetAutoReturnRouteBelongCiId(const UINT16 autoReturnId)
|
||||
|
||||
return returnValue;
|
||||
}
|
||||
/*
|
||||
* 功能描述: 获取指定ID自动折返所属虚拟联锁ID
|
||||
* 参数说明: const UINT16 autoReturnId, 自动折返ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 所属联锁ID
|
||||
* add by mpt 20260107
|
||||
*/
|
||||
UINT8 GetAutoReturnRouteBelongVirCiId(const UINT16 autoReturnId)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT8 returnValue = CI_ERROR;
|
||||
|
||||
bufIndex = GetAutoReturnBufIndex(autoReturnId); /*获取自动折返数组下标*/
|
||||
|
||||
if (bufIndex < AUTO_RETURN_SUM_MAX)
|
||||
{
|
||||
returnValue = AutoReturnConfigDataStru[bufIndex].BelongVirCiId;
|
||||
}
|
||||
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID自动折返包含进路ID数组
|
||||
|
||||
@@ -34,6 +34,7 @@ typedef struct S_AutoReturnConfigDataStruct
|
||||
{
|
||||
UINT16 AutoReturnId; /*自动折返ID (配置字段)*/
|
||||
UINT8 BelongCiId; /*所属联锁ID*/
|
||||
UINT8 BelongVirCiId; /*所属虚拟联锁ID*/
|
||||
UINT8 RouteSum; /*自动折返包含进路数目 (配置字段)*/
|
||||
UINT16 RouteIdBuf[AUTO_RETURN_INCLROUTE_SUM_MAX]; /*自动折返进路包含进路ID数组 (配置字段)*/
|
||||
UINT8 AutoReturnOpposedReturnIdSum; /*自动折返抵触自动折返进路数目 (配置字段)*/
|
||||
@@ -88,6 +89,14 @@ UINT8 GetAutoReturnIncludeRouteSum(const UINT16 autoReturnId);
|
||||
* >0: 所属联锁ID
|
||||
*/
|
||||
UINT8 GetAutoReturnRouteBelongCiId(const UINT16 autoReturnId);
|
||||
/*
|
||||
* 功能描述: 获取指定ID自动折返所属虚拟联锁ID
|
||||
* 参数说明: const UINT16 autoReturnId, 自动折返ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 所属联锁ID
|
||||
* add by mpt 20260107
|
||||
*/
|
||||
UINT8 GetAutoReturnRouteBelongVirCiId(const UINT16 autoReturnId);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID自动折返包含进路ID数组
|
||||
|
||||
@@ -41,5 +41,5 @@
|
||||
#define AUTO_RETURN_DICHU_COMMROUTE ((UINT8)0x06) /*抵触的普通进路已办理*/
|
||||
#define AUTO_RETURN_HAVE_BLOCK ((UINT8)0x02) /*自动折返进路存在封锁*/
|
||||
#define AUTO_RETURN_FLOOD_STATE_ERR ((UINT8)0x03) /*自动折返进路存在防淹门不满足*/
|
||||
|
||||
#define AUTO_RETURN_COUPROUTE_SET ((UINT8)0x07) /*联挂进路已办理*/
|
||||
#endif
|
||||
|
||||
@@ -97,6 +97,26 @@ UINT8 GetAutoRouteBelongCiId(const UINT16 autoRouteId)
|
||||
}
|
||||
return belongCiId;
|
||||
}
|
||||
/*
|
||||
* 功能描述: 获取指定ID自动进路所属虚拟联锁ID
|
||||
* 参数说明: const UINT16 autoRouteId, 自动进路ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 所属联锁ID
|
||||
* add by mpt 20260107
|
||||
*/
|
||||
UINT8 GetAutoRouteBelongVirCiId(const UINT16 autoRouteId)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT8 belongVirCiId = CI_ERROR;
|
||||
|
||||
bufIndex = GetAutoRouteBufIndex(autoRouteId); /*获取自动进路数组下标*/
|
||||
|
||||
if (bufIndex < AUTO_ROUTE_SUM_MAX)
|
||||
{
|
||||
belongVirCiId = AutoRouteConfigDataStru[bufIndex].BelongVirCiId;
|
||||
}
|
||||
return belongVirCiId;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
|
||||
@@ -32,6 +32,7 @@ typedef struct S_AutoRouteConfigDataStruct
|
||||
{
|
||||
UINT16 AutoRouteId; /*自动进路ID (配置字段)*/
|
||||
UINT8 BelongCiId; /*所属联锁ID*/
|
||||
UINT8 BelongVirCiId; /*所属虚拟联锁ID*/
|
||||
UINT8 RouteSum; /*自动进路包含进路数目 (配置字段)*/
|
||||
UINT16 RouteIdBuf[AUTO_ROUTE_INCLROUTE_SUM_MAX]; /*自动进路进路ID数组 (配置字段)*/
|
||||
UINT8 AutoRouteOpposedRouteIdSum; /*自动通过进路抵触自动通过进路数目 (配置字段)*/
|
||||
@@ -89,6 +90,13 @@ UINT16 GetAutoRouteBufIndex(const UINT16 AutoRouteId);
|
||||
* >0: 所属联锁ID
|
||||
*/
|
||||
UINT8 GetAutoRouteBelongCiId(const UINT16 autoRouteId);
|
||||
/*
|
||||
* 功能描述: 获取指定ID自动进路所属虚拟联锁ID
|
||||
* 参数说明: const UINT16 autoRouteId, 自动进路ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 所属联锁ID
|
||||
*/
|
||||
UINT8 GetAutoRouteBelongVirCiId(const UINT16 autoRouteId);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID自动进路包含进路数目
|
||||
|
||||
@@ -107,7 +107,13 @@ void SetAutoRouteSetFlag(const UINT16 autoRouteId, const UINT8 setState)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述:获取自动进路动态数据结构体
|
||||
* 参数说明:无
|
||||
* 返 回 值:自动进路动态数据结构体
|
||||
* Created By LQ 2025.05.26
|
||||
*/
|
||||
AutoRouteDataStruct* GetAutoRouteDataStr(void)
|
||||
{
|
||||
return AutoRouteDataStru;
|
||||
}
|
||||
@@ -56,7 +56,13 @@ UINT8 GetAutoRouteSetFlag(const UINT16 autoRouteId);
|
||||
*/
|
||||
void SetAutoRouteSetFlag(const UINT16 autoRouteId, const UINT8 setState);
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述:获取自动进路动态数据结构体
|
||||
* 参数说明:无
|
||||
* 返 回 值:自动进路动态数据结构体
|
||||
* Created By LQ 2025.05.26
|
||||
*/
|
||||
AutoRouteDataStruct* GetAutoRouteDataStr(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
#define AUTO_ROUTE_DICHU_COMMROUTE ((UINT8)0x06) /*抵触普通进路已办理*/
|
||||
#define AUTO_ROUTE_HAVE_BLOCK ((UINT8)0x02) /*自动进路存在封锁*/
|
||||
#define AUTO_ROUTE_FLOOD_STATE_ERR ((UINT8)0x03) /*自动进路存在防淹门不满足*/
|
||||
|
||||
#define AUTO_ROUTE_COUPROUTE_SET ((UINT8)0x07) /*联挂进路已办理*/
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#define AAM_BAD_NEAR 0x03u /* 坏车接近 */
|
||||
#define AAM_NO_TRAIN_NEAR 0x04u /* 无车接近 */
|
||||
#define AAM_GOOD_OCC 0x05u /* 好车占用 */
|
||||
#define AAM_SLEEP_OCC 0x06u /* 休眠车占用 */
|
||||
|
||||
|
||||
#define AAM_API_AC_ARB 0x01u /* 计轴ARB*/
|
||||
|
||||
@@ -53,6 +53,9 @@ static UINT8 aam_SearchNearestTrainInNextAC(UINT16 baseACID, UINT8 Dir, UINT8 en
|
||||
UINT32 errorCode = 0u;
|
||||
const EnvelopeStruct* pTempEnvelope = NULL;
|
||||
ELM_AxisLocStruct tmpAcLoc = { 0u };
|
||||
UINT8 cSleepState = 0U; /*包络关联列车休眠状态*/
|
||||
UINT8 ii = 0U;
|
||||
UINT8 chNoSleepCheck = 0U;
|
||||
|
||||
/*- 入口参数校验 */
|
||||
ASSERT_RET_VALUE(NULL == envelopeIds,ret,0x80000000u);
|
||||
@@ -103,24 +106,44 @@ static UINT8 aam_SearchNearestTrainInNextAC(UINT16 baseACID, UINT8 Dir, UINT8 en
|
||||
ASSER_ERROR(CI_ERROR == funRtn,errorCode,0x10000000u);
|
||||
AAM_LOG_LOC(AAM_LOG_ERROR,"errno:0x%08x info:Search NearestTrain ELM%d,ELM info error.",errorCode,preEnvelope)
|
||||
}
|
||||
else if (((TYPE_CT_ENVELOPE == pTempEnvelope->envelopeType) || (TYPE_UCT_ENVELOPE == pTempEnvelope->envelopeType)) &&
|
||||
(FLAG_SET == funRtn) && (0u == pTempEnvelope->tailTrainID))
|
||||
else
|
||||
{
|
||||
/** 好车远离 */
|
||||
ret = AAM_GOOD_FAR_AWAY;
|
||||
chNoSleepCheck = CI_SUCCESS;
|
||||
for (ii = 0U; ii < pTempEnvelope->trianCnt; ii++)
|
||||
{
|
||||
cSleepState = GetTrainSleepState(pTempEnvelope->trainID[ii]);
|
||||
if (TRAIN_SLEEP_YES == cSleepState)
|
||||
{
|
||||
chNoSleepCheck = CI_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (CI_ERROR == chNoSleepCheck)
|
||||
{
|
||||
/*相邻计轴存在休眠车*/
|
||||
ret = AAM_SLEEP_OCC;
|
||||
}
|
||||
else if (((TYPE_CT_ENVELOPE == pTempEnvelope->envelopeType) || (TYPE_UCT_ENVELOPE == pTempEnvelope->envelopeType)) &&
|
||||
(FLAG_SET == funRtn) && (0u == pTempEnvelope->tailTrainID))
|
||||
{
|
||||
/** 好车远离 */
|
||||
ret = AAM_GOOD_FAR_AWAY;
|
||||
|
||||
}
|
||||
else if (((TYPE_CT_ENVELOPE == pTempEnvelope->envelopeType) || (TYPE_UCT_ENVELOPE == pTempEnvelope->envelopeType)) &&
|
||||
(FLAG_UNSET == funRtn) && (0u == pTempEnvelope->headTrainID))
|
||||
{
|
||||
/** 好车接近 */
|
||||
ret = AAM_GOOD_NEAR;
|
||||
}
|
||||
else
|
||||
{
|
||||
/** 坏车接近 */
|
||||
ret = AAM_BAD_NEAR;
|
||||
}
|
||||
}
|
||||
else if (((TYPE_CT_ENVELOPE == pTempEnvelope->envelopeType) || (TYPE_UCT_ENVELOPE == pTempEnvelope->envelopeType)) &&
|
||||
(FLAG_UNSET == funRtn) && (0u == pTempEnvelope->headTrainID))
|
||||
{
|
||||
/** 好车接近 */
|
||||
ret = AAM_GOOD_NEAR;
|
||||
}
|
||||
else
|
||||
{
|
||||
/** 坏车接近 */
|
||||
ret = AAM_BAD_NEAR;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -156,8 +179,6 @@ UINT8 aam_SearchNearbyTrainType(UINT16 baseACID, UINT8 Dir, UINT8 acCnt, UINT16
|
||||
UINT8 acStatus = ELM_AC_OCC;
|
||||
UINT16 tmpPhyid = 0u;
|
||||
UINT8 phyRelACCnt = 0u;
|
||||
UINT8 i = 0U;
|
||||
UINT16 wTrainId = 0U;
|
||||
const UINT16* phyRelACIDs = NULL;
|
||||
const EnvelopeStruct* pTempEnvelope = NULL;
|
||||
UINT8 acRelEnvelopeCnt = 0u;
|
||||
@@ -281,30 +302,23 @@ static UINT8 aam_AxisErrorJudge(UINT16 acID,UINT16 acIndex)
|
||||
UINT8 ret = CI_ERROR;
|
||||
UINT8 funRtn = CI_ERROR;
|
||||
UINT8 chNearbyCheck = CI_ERROR;
|
||||
UINT8 acSameCnt = 0u;
|
||||
UINT16 acSameID[AC_MAXCNT_IN_SWITCH] = { 0u };
|
||||
UINT8 acConvertCnt = 0u;
|
||||
UINT16 acConvertID[AC_MAXCNT_IN_SWITCH] = { 0u };
|
||||
UINT32 errorCode = 0u;
|
||||
UINT8 acSameCnt = 0U;
|
||||
UINT16 acSameID[AC_MAXCNT_IN_SWITCH] = { 0U };
|
||||
UINT8 acConvertCnt = 0U;
|
||||
UINT16 acConvertID[AC_MAXCNT_IN_SWITCH] = { 0U };
|
||||
UINT32 errorCode = 0U;
|
||||
UINT8 sameTrainType = AAM_BAD_NEAR;
|
||||
UINT8 convertTrainType = AAM_BAD_NEAR;
|
||||
UINT8 tmpRedunTime = 0u;
|
||||
UINT8 tmppassTrainType = 0u;
|
||||
UINT8 tmpRedunTime = 0U;
|
||||
UINT8 tmppassTrainType = 0U;
|
||||
UINT8 tmpACStatus = AAM_STATUS_OCC;
|
||||
UINT8 maxRedunTimes = 0u;
|
||||
UINT8 chSwitch = 0u;
|
||||
UINT8 chSwitch = 0U;
|
||||
UINT32 dwArbCheckDistance = 0U; /*RC16.0: 系统配置ARB区段向外检查距离*/
|
||||
UINT8 chRedunArbFlag = REDUN_OVER_ARB_NO; /*判断冗余计时结束后可否ARB标志*/
|
||||
UINT8 dwCiAndAxleTransBadEnsureCnt = 0U; /*判断与计轴通信中断周期数*/
|
||||
UINT32 dwCurAxleOccStartCycNum = 0U; /*本计轴区段占用起始周期*/
|
||||
UINT8 ii = 0U;
|
||||
UINT32 dwNearAxleOccStartCycNum = 0U; /*相邻计轴区段占用起始周期*/
|
||||
UINT8 cAcRelEnvelopeCnt = 0U;
|
||||
EnvelopeStruct strEnvelopeInfo[SECTION_REL_ENVELOPE_SUM_MAX] = { 0U };
|
||||
UINT8 cOccCheckFlag = CI_ERROR;
|
||||
UINT16 wCurRelPhySecId = 0U;
|
||||
UINT16 wNearRelPhySecId = 0U;
|
||||
UINT8 cAxisCommBadArbFlag = AAM_COMM_BAD_ARB_NO;
|
||||
UINT8 chPhyTrainCheck = CI_SUCCESS;
|
||||
UINT8 cAcCbtcAttr = 0U; /*计轴区段CBTC区域属性*/
|
||||
|
||||
chSwitch = aam_PrepareArbSwitch();
|
||||
if (CI_SUCCESS == chSwitch)
|
||||
@@ -353,6 +367,32 @@ static UINT8 aam_AxisErrorJudge(UINT16 acID,UINT16 acIndex)
|
||||
/** 处理后方计轴车辆接近 */
|
||||
convertTrainType = aam_SearchNearbyTrainType(acID, EMAP_CONVER_DIR, acConvertCnt, acConvertID);
|
||||
|
||||
/*检查所属物理区段有无故障车*/
|
||||
chPhyTrainCheck = aam_CheckPhyTrain(acID);
|
||||
cAcCbtcAttr = GetAxisSecCbtcProperty(acID); /*获取计轴区段CBTC区域属性*/
|
||||
|
||||
if ((CI_ERROR == chPhyTrainCheck) || (AXIS_SEC_CBTC_PROPERTY_YES != cAcCbtcAttr))
|
||||
{
|
||||
/** 计轴区段有故障车或非CBTC区域,清除之前的冗余计时位,设置占用 */
|
||||
funRtn = aam_ClearPassTrainFlag(acIndex);
|
||||
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x20000000u);
|
||||
|
||||
funRtn = aam_ClearRedunTime(acIndex);
|
||||
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x10000000u);
|
||||
|
||||
aam_SetAxisStatus(acIndex, AAM_STATUS_OCC);
|
||||
AAM_LOG(AAM_LOG_FATAL, "info:AC%d set UT,Physec has UKT\n ", acID);
|
||||
}
|
||||
else if ((AAM_SLEEP_OCC == sameTrainType) || (AAM_SLEEP_OCC == convertTrainType))
|
||||
{
|
||||
/** 清除好车通过标志,UT冗余 */
|
||||
funRtn = aam_ClearPassTrainFlag(acIndex);
|
||||
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x20000000u);
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*继续处理*/
|
||||
}
|
||||
/** 判断相邻范围内计轴坏车最近占用时间检查通过 */
|
||||
if ((CI_ERROR == chNearbyCheck))
|
||||
{
|
||||
@@ -409,90 +449,14 @@ static UINT8 aam_AxisErrorJudge(UINT16 acID,UINT16 acIndex)
|
||||
AAM_LOG(AAM_LOG_FATAL, "info:AC%d keep ARB Fail, NearByTrainCheck:%d.\n", acID, chNearbyCheck);
|
||||
}
|
||||
else
|
||||
{
|
||||
cOccCheckFlag = CI_SUCCESS;
|
||||
dwCiAndAxleTransBadEnsureCnt = GetCiAndAxleTransBadEnsureCnt(); /*获取判断与计轴通信中断超时周期数*/
|
||||
wCurRelPhySecId = GetAxisSecRelativePhySecId(acID);
|
||||
if (0U != wCurRelPhySecId)
|
||||
{
|
||||
dwCurAxleOccStartCycNum = GetSecColOccupyStartCycNum(wCurRelPhySecId);
|
||||
for (ii = 0U; ii < acSameCnt; ii++)
|
||||
{
|
||||
wNearRelPhySecId = GetAxisSecRelativePhySecId(acSameID[ii]);
|
||||
if (0U != wNearRelPhySecId)
|
||||
{
|
||||
cAcRelEnvelopeCnt = elm_GetEnvelopeInAC(acSameID[ii], strEnvelopeInfo);
|
||||
dwNearAxleOccStartCycNum = GetSecColOccupyStartCycNum(wNearRelPhySecId);
|
||||
if (((0U == cAcRelEnvelopeCnt) || (SECTION_REL_ENVELOPE_SUM_MAX == cAcRelEnvelopeCnt))
|
||||
&& ((dwCurAxleOccStartCycNum + dwCiAndAxleTransBadEnsureCnt) < dwNearAxleOccStartCycNum))
|
||||
{
|
||||
cOccCheckFlag = CI_ERROR; /*相邻计轴区段无包络且占用起始时间超过了“与计轴通信中断超时判断时间”*/
|
||||
}
|
||||
else
|
||||
{
|
||||
/*相邻计轴区段占用起始周期未超过“与计轴通信中断超时判断时间”,继续检查*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cOccCheckFlag = CI_ERROR;
|
||||
}
|
||||
{
|
||||
/*ARB计轴区段同向相邻计轴区段连续占用*/
|
||||
funRtn = aam_ArbContinuousOccCheck(acID, acSameCnt, acSameID);
|
||||
|
||||
if (CI_ERROR == cOccCheckFlag)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
}
|
||||
/*ARB计轴区段反向相邻计轴区段连续占用*/
|
||||
funRtn &= aam_ArbContinuousOccCheck(acID, acConvertCnt, acConvertID);
|
||||
|
||||
if (CI_SUCCESS == cOccCheckFlag)
|
||||
{
|
||||
for (ii = 0U; ii < acConvertCnt; ii++)
|
||||
{
|
||||
wNearRelPhySecId = GetAxisSecRelativePhySecId(acConvertID[ii]);
|
||||
if (0U != wNearRelPhySecId)
|
||||
{
|
||||
cAcRelEnvelopeCnt = elm_GetEnvelopeInAC(acConvertID[ii], strEnvelopeInfo);
|
||||
dwNearAxleOccStartCycNum = GetSecColOccupyStartCycNum(wNearRelPhySecId);
|
||||
if (((0U == cAcRelEnvelopeCnt) || (SECTION_REL_ENVELOPE_SUM_MAX == cAcRelEnvelopeCnt))
|
||||
&& ((dwCurAxleOccStartCycNum + dwCiAndAxleTransBadEnsureCnt) < dwNearAxleOccStartCycNum))
|
||||
{
|
||||
cOccCheckFlag = CI_ERROR; /*相邻计轴区段无包络且占用起始时间超过了“与计轴通信中断超时判断时间”*/
|
||||
}
|
||||
else
|
||||
{
|
||||
/*相邻计轴区段占用起始周期未超过“与计轴通信中断超时判断时间”,继续检查*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cOccCheckFlag = CI_ERROR;
|
||||
}
|
||||
|
||||
if (CI_ERROR == cOccCheckFlag)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*检查失败,不处理*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cOccCheckFlag = CI_ERROR;
|
||||
}
|
||||
|
||||
if (CI_SUCCESS != cOccCheckFlag)
|
||||
if (CI_SUCCESS != funRtn)
|
||||
{
|
||||
/** 清除本计轴区段之前的冗余计时位 */
|
||||
funRtn = aam_ClearPassTrainFlag(acIndex);
|
||||
@@ -502,7 +466,7 @@ static UINT8 aam_AxisErrorJudge(UINT16 acID,UINT16 acIndex)
|
||||
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00400000U);
|
||||
|
||||
aam_SetAxisStatus(acIndex, AAM_STATUS_OCC);
|
||||
AAM_LOG(AAM_LOG_FATAL, "info:AC%d Keep ARB Fail Because Of Near Sec Occ\n", acID);
|
||||
AAM_LOG(AAM_LOG_FATAL, "info:AC%d Keep ARB Fail Because Of Near Sec Continuous Occ\n", acID);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -887,9 +851,11 @@ void aam_MainProcess(void)
|
||||
/** 尽头线ARB特殊处理*/
|
||||
aam_InitEndLinePassFlag();
|
||||
|
||||
/*计轴子系统通信中断ARB特殊处理功能在RC20.0首版二回先注释掉(恢复时间待定)——By LQ 2025.05.07*/
|
||||
#if 0
|
||||
/*计轴子系统通信中断ARB特殊处理*/
|
||||
aam_AxisCommBadArbPro();
|
||||
|
||||
#endif
|
||||
for (cycle = 0u; cycle < acCnt; cycle++)
|
||||
{
|
||||
/** 判断计轴区段是否属于本OC */
|
||||
@@ -2054,4 +2020,166 @@ UINT8 aam_GetAxisStatusAPI(UINT16 ACID)
|
||||
acIndex = aam_PrepareACIndex(ACID);
|
||||
reVal = aam_GetAxisStatus(acIndex);
|
||||
return reVal;
|
||||
}
|
||||
|
||||
/**
|
||||
* 函数功能:检查计轴所在物理区段均无故障车
|
||||
* 输入参数:UINT16 ACID 计轴区段id
|
||||
* 返回值:CI_SUCCESS 无故障车
|
||||
* CI_ERROR 存在故障车
|
||||
* Create By fan 2025.06 18
|
||||
*/
|
||||
UINT8 aam_CheckPhyTrain(UINT16 ACID)
|
||||
{
|
||||
UINT8 reVal = CI_ERROR;
|
||||
UINT16 wPhySecId = 0U; /*计轴所属物理区段*/
|
||||
UINT8 phyAcNum = 0u; /*物理区段关联计轴数*/
|
||||
UINT16* pACBuff = NULL;
|
||||
UINT16 wAxisSecId = 0U; /*计轴区段id*/
|
||||
UINT8 linkNum = 0U; /*ilnk数量*/
|
||||
UINT16* pLinkBuf = NULL; /*link数组*/
|
||||
UINT8 jj = 0U;
|
||||
UINT8 ii = 0U;
|
||||
UINT8 k = 0U;
|
||||
TRAIN_SEQUANCE_s linkInctrainList[SIZE_MAX_TRAINOFAC] = { 0u }; /*link上的列车序列*/
|
||||
UINT8 cLinkIncTrainSum = 0u; /*link列车数量*/
|
||||
wPhySecId = aam_PrepareACBelongPhyid(ACID);
|
||||
phyAcNum = GetPAxisSectionSum(wPhySecId);
|
||||
pACBuff = GetPAxisSectionIdBuf(wPhySecId);
|
||||
if ((0U != phyAcNum) && (NULL != pACBuff))
|
||||
{
|
||||
reVal = CI_SUCCESS;
|
||||
for (ii = 0; ii < phyAcNum; ii++)
|
||||
{
|
||||
/*检查计轴上link有隐藏车*/
|
||||
wAxisSecId = pACBuff[ii];
|
||||
linkNum = GetAxisLinkSum(wAxisSecId);
|
||||
pLinkBuf = GetAxisLinkIdBuf(wAxisSecId);
|
||||
if ((0U != linkNum) && (NULL != pLinkBuf))
|
||||
{
|
||||
for (jj = 0; jj < linkNum; jj++)
|
||||
{
|
||||
cLinkIncTrainSum = as_GetLinkTrainList(pLinkBuf[jj], linkInctrainList, SIZE_MAX_TRAINOFAC);
|
||||
for (k = 0U; k < cLinkIncTrainSum; k++)
|
||||
{
|
||||
|
||||
if (NAME_FAILUREAREA != linkInctrainList[k].u16TrainID)
|
||||
{
|
||||
; /*继续*/
|
||||
}
|
||||
else
|
||||
{
|
||||
reVal = CI_ERROR; /*存在故障车,停止检查。返回失败*/
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (CI_ERROR == reVal)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*获取失败 */
|
||||
reVal = CI_ERROR;
|
||||
}
|
||||
if (CI_ERROR == reVal)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
reVal = CI_ERROR;
|
||||
}
|
||||
return reVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 函数功能:ARB区段连续占用检查
|
||||
* 输入参数:UINT16 wAcId 计轴区段ID
|
||||
* UINT8 cNearAcNum 相邻计轴区段数量
|
||||
* UINT16 pNearAcId[AC_MAXCNT_IN_SWITCH] 相邻计轴区段ID
|
||||
* 返 回 值:CI_SUCCESS 1 成功
|
||||
* CI_ERROR 0 失败
|
||||
* Created By LQ 2025.08.07
|
||||
*/
|
||||
UINT8 aam_ArbContinuousOccCheck(UINT16 wAcId, UINT8 cNearAcNum, UINT16 pNearAcId[AC_MAXCNT_IN_SWITCH])
|
||||
{
|
||||
UINT8 cRetVal = CI_ERROR;
|
||||
UINT16 wBufIndex = 0U;
|
||||
UINT16 wCurRelPhySecId = 0U; /*本计轴区段所属物理区段ID*/
|
||||
UINT8 dwCiAndAxleTransBadEnsureCnt = 0U; /*判断与计轴通信中断周期数*/
|
||||
UINT32 dwCurAxleOccStartCycNum = 0U; /*本计轴区段占用起始周期*/
|
||||
UINT8 ii = 0U;
|
||||
UINT16 wNearRelPhySecId = 0U; /*相邻计轴区段所属物理区段ID*/
|
||||
UINT8 cAcRelEnvelopeCnt = 0U;
|
||||
EnvelopeStruct strEnvelopeInfo[SECTION_REL_ENVELOPE_SUM_MAX] = { 0U };
|
||||
UINT32 dwNearAxleOccStartCycNum = 0U; /*相邻计轴区段占用起始周期*/
|
||||
UINT8 cRcId = 0U;
|
||||
UINT8 cFunRtn = 0U;
|
||||
UINT16 wNearAcIndex = 0U;
|
||||
|
||||
wBufIndex = GetAxisSecConfigBufIndex(wAcId); /*获取区段数组下标*/
|
||||
|
||||
if ((AXIS_SECTION_SUM_MAX > wBufIndex) && (AC_MAXCNT_IN_SWITCH > cNearAcNum) && (NULL != pNearAcId))
|
||||
{
|
||||
wCurRelPhySecId = GetAxisSecRelativePhySecId(wAcId);
|
||||
if (0U != wCurRelPhySecId)
|
||||
{
|
||||
cRetVal = CI_SUCCESS;
|
||||
dwCiAndAxleTransBadEnsureCnt = GetCiAndAxleTransBadEnsureCnt(); /*获取判断与计轴通信中断超时周期数*/
|
||||
dwCurAxleOccStartCycNum = GetSecColOccupyStartCycNum(wCurRelPhySecId);
|
||||
for (ii = 0U; ii < cNearAcNum; ii++)
|
||||
{
|
||||
wNearRelPhySecId = GetAxisSecRelativePhySecId(pNearAcId[ii]);
|
||||
if (0U != wNearRelPhySecId)
|
||||
{
|
||||
cAcRelEnvelopeCnt = elm_GetEnvelopeInAC(pNearAcId[ii], strEnvelopeInfo);
|
||||
dwNearAxleOccStartCycNum = GetSecColOccupyStartCycNum(wNearRelPhySecId);
|
||||
if (((0U == cAcRelEnvelopeCnt) || (SECTION_REL_ENVELOPE_SUM_MAX == cAcRelEnvelopeCnt))
|
||||
&& ((dwCurAxleOccStartCycNum + dwCiAndAxleTransBadEnsureCnt) < dwNearAxleOccStartCycNum))
|
||||
{
|
||||
cRetVal = CI_ERROR; /*相邻计轴区段无包络且占用起始时间超过了“与计轴通信中断超时判断时间”*/
|
||||
|
||||
cFunRtn = aam_PrepareACIsSelf(pNearAcId[ii], &cRcId); /*判断相邻区段是否为本控区区段*/
|
||||
|
||||
if (ELM_BELONG_OWNER == cFunRtn)
|
||||
{
|
||||
wNearAcIndex = aam_PrepareACIndex(pNearAcId[ii]);
|
||||
(void)aam_ClearPassTrainFlag(wNearAcIndex); /*清除好车通过标志*/
|
||||
(void)aam_ClearRedunTime(wNearAcIndex); /*清除冗余计时*/
|
||||
aam_SetAxisStatus(wNearAcIndex, AAM_STATUS_OCC); /*设置占用*/
|
||||
|
||||
AAM_LOG(AAM_LOG_FATAL, "info:AC%d Set Occ Because Of Near Sec%d Keep Arb Fail\n", pNearAcId[ii], wAcId);
|
||||
}
|
||||
else
|
||||
{
|
||||
/*非本控区区段,不处理*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*相邻计轴区段占用起始周期未超过“与计轴通信中断超时判断时间”,继续检查*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cRetVal = CI_ERROR; /*异常场景,返回失败*/
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cRetVal = CI_ERROR; /*异常场景,返回失败*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cRetVal = CI_ERROR; /*入参非法,返回失败*/
|
||||
}
|
||||
|
||||
return cRetVal;
|
||||
}
|
||||
@@ -213,4 +213,24 @@ void SetRcAxleArb(void);
|
||||
*/
|
||||
UINT8 aam_GetAxisStatusAPI(UINT16 ACID);
|
||||
|
||||
/**
|
||||
* 函数功能:检查计轴所在物理区段均无故障车
|
||||
* 输入参数:UINT16 ACID 计轴区段id
|
||||
* 返回值:CI_SUCCESS 无故障车
|
||||
* CI_ERROR 存在故障车
|
||||
* Create By fan 2025.06 18
|
||||
*/
|
||||
UINT8 aam_CheckPhyTrain(UINT16 ACID);
|
||||
|
||||
/*
|
||||
* 函数功能:ARB区段连续占用检查
|
||||
* 输入参数:UINT16 wAcId 计轴区段ID
|
||||
* UINT8 cNearAcNum 相邻计轴区段数量
|
||||
* UINT16 pNearAcId[AC_MAXCNT_IN_SWITCH] 相邻计轴区段ID
|
||||
* 返 回 值:CI_SUCCESS 1 成功
|
||||
* CI_ERROR 0 失败
|
||||
* Created By LQ 2025.08.07
|
||||
*/
|
||||
UINT8 aam_ArbContinuousOccCheck(UINT16 wAcId, UINT8 cNearAcNum, UINT16 pNearAcId[AC_MAXCNT_IN_SWITCH]);
|
||||
|
||||
#endif /*AXIS_ASSERT_MANAGE_API_H_*/
|
||||
|
||||
@@ -370,27 +370,22 @@ void CutoffPointOutput(void)
|
||||
UINT16 wPhySecId = 0u;
|
||||
UINT8 chOccState = 0u;
|
||||
UINT8 cDir = 0u;
|
||||
UINT8 cTrainDir = 0u;
|
||||
UINT8 cFunRetVal = CI_ERROR;
|
||||
TRAIN_SEQUANCE_s strTmp = { 0u };
|
||||
CfpTrainInfoStru tmpTrainInfo = { 0u };
|
||||
UINT16 wTrainId = 0u;
|
||||
UINT32 dwDis = UINT32_MAX;
|
||||
UINT32 dwDisTail = UINT32_MAX;
|
||||
UINT32 dwDisHead = UINT32_MAX;
|
||||
struct_PathPoint TrainPoint = { 0u };
|
||||
struct_PathPoint TrainHeadPoint = { 0u };
|
||||
struct_PathPoint TrainTailPoint = { 0u };
|
||||
struct_PathPoint CutoffPoint = { 0u };
|
||||
UINT8 cTrainTailDir = 0U; /*列车安全车尾方向*/
|
||||
UINT8 cTrainHeadDir = 0U; /*列车安全车头方向*/
|
||||
UINT32 dwFindLen = 0u;
|
||||
struct_PathPoint LinkPoint = { 0u };
|
||||
UINT32 dwFindLen = 0u;/*信号机点灯防护距离*/
|
||||
UINT8 chTrainNum = 0u;
|
||||
UINT8 cDirectionPointfirst = 0U; /*方向变化点1*/
|
||||
UINT8 cDirectionPointsecond = 0U; /*方向变化点2*/
|
||||
|
||||
UINT16 wOtherCfpId = 0u; /*其他分界点ID*/
|
||||
UINT8 chLocalId = 0u; /*本联锁id*/
|
||||
UINT8 chLinkCIId = 0u; /*link所属联锁id*/
|
||||
UINT8 chOtherFlag = FLAG_UNSET;
|
||||
UINT8 chBreakFlag = FLAG_UNSET;
|
||||
UINT32 dwLinkLen = 0U;/*本联锁已计算分界点距离*/
|
||||
dwFindLen = GetSystemParaValue(SIGNAL_LIGHTUP_SEC_LEN_ID);
|
||||
dwFindLen *= 100u;
|
||||
dwFindLen *= 100U;
|
||||
chLocalId = GetSystemParaLocalCiId();
|
||||
|
||||
/* 获取本联锁边界点数量 */
|
||||
wCutoffPointSum = GetCfpSum();
|
||||
@@ -405,157 +400,122 @@ void CutoffPointOutput(void)
|
||||
cDir = GetCfpLocDir(wCutoffPointId);
|
||||
|
||||
/* 计算边界点的点灯link */
|
||||
(void)CommonMemSet(wszLinkIdBuf, (UINT32)(sizeof(UINT16)*MAX_CFG_LIGHTUPLINK_NUM), 0U, (UINT32)(sizeof(UINT16)*MAX_CFG_LIGHTUPLINK_NUM));
|
||||
cFunRetVal = CalCutoffPointOccupyLinkSeq(wCutoffPointId, &wLinkSum, wszLinkIdBuf);
|
||||
|
||||
/* 获取边界点信息 */
|
||||
CutoffPoint.wLinkId = GetCfpLink(wCutoffPointId);
|
||||
CutoffPoint.dwOffset = GetCfpOffset(wCutoffPointId);
|
||||
/*重置计算位置 */
|
||||
LinkPoint.wLinkId =0U;
|
||||
LinkPoint.dwOffset = 0U;
|
||||
|
||||
wTrainId = 0u;
|
||||
TrainPoint.wLinkId = 0u;
|
||||
TrainPoint.dwOffset = 0u;
|
||||
|
||||
TrainTailPoint.wLinkId = 0U;
|
||||
TrainTailPoint.dwOffset = 0U;
|
||||
TrainHeadPoint.wLinkId = 0U;
|
||||
TrainHeadPoint.dwOffset = 0U;
|
||||
|
||||
if (CI_SUCCESS == cFunRetVal)
|
||||
wOtherCfpId = 0U;
|
||||
chOtherFlag = FLAG_UNSET;
|
||||
chBreakFlag = FLAG_UNSET;
|
||||
dwLinkLen = 0U;
|
||||
if ((CI_SUCCESS == cFunRetVal)&&(MAX_CFG_LIGHTUPLINK_NUM>=wLinkSum))
|
||||
{
|
||||
/* 区段查找成功,查到区段上的列车 */
|
||||
for (j = 0u;j < wLinkSum;j++)
|
||||
{
|
||||
wLinkId = wszLinkIdBuf[j];
|
||||
wPhySecId = GetLinkRelatedPhySec(wLinkId);
|
||||
chOccState = GetPhySecCurOccupyState(wPhySecId);
|
||||
chTrainNum = as_GetLinkTrainNum(wLinkId);
|
||||
|
||||
if ((SECTION_OCCUPY_NO != chOccState) && (0u != chTrainNum))
|
||||
chLinkCIId = (UINT8)GetLinkManageTiocById(wLinkId);
|
||||
if (chLinkCIId == chLocalId)
|
||||
{
|
||||
/* 找到有车占用的区段 */
|
||||
wPhySecId = GetLinkRelatedPhySec(wLinkId);
|
||||
chOccState = GetPhySecCurOccupyState(wPhySecId);
|
||||
chTrainNum = as_GetLinkTrainNum(wLinkId);
|
||||
|
||||
if ((SECTION_OCCUPY_NO != chOccState) && (0u != chTrainNum))
|
||||
{
|
||||
/* 找到有车占用的区段 */
|
||||
chBreakFlag = FLAG_SET;
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
chOtherFlag = FLAG_SET;
|
||||
}
|
||||
if (j < wLinkSum)
|
||||
{
|
||||
/* 更新已经计算的最远无车位置*/
|
||||
LinkPoint.wLinkId = wLinkId;
|
||||
if ((FLAG_SET == chOtherFlag)||(FLAG_SET == chBreakFlag))
|
||||
{
|
||||
if (DIR_SAME == cDir)
|
||||
{
|
||||
LinkPoint.dwOffset = 0U;
|
||||
}
|
||||
else
|
||||
{
|
||||
LinkPoint.dwOffset = GetLinkLengthById(wLinkId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (DIR_SAME == cDir)
|
||||
{
|
||||
LinkPoint.dwOffset = GetLinkLengthById(wLinkId);
|
||||
}
|
||||
else
|
||||
{
|
||||
LinkPoint.dwOffset = 0U;
|
||||
}
|
||||
if (j < wLinkSum - 1U)
|
||||
{ /*检查是否有方向变化点,此处检查,当前link已按既定方向查找完,查下一link,若此时中间有方向变化点,则跨过方向变化点,到下一link改变方向查*/
|
||||
cDirectionPointfirst = GetLinkLogicDirChangedById(wszLinkIdBuf[j]);
|
||||
cDirectionPointsecond = GetLinkLogicDirChangedById(wszLinkIdBuf[(j + 1U)]); /*wLinkSum已检查越界*/
|
||||
if (((LINK_DIRCHANGE_BEGIN == cDirectionPointfirst) || (LINK_DIRCHANGE_END == cDirectionPointfirst))
|
||||
&& (cDirectionPointsecond == cDirectionPointfirst))
|
||||
{
|
||||
cDir = ConvertTrainDir(cDir); /*有方向变化点,转换方向*/
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*没有反向变换点,不考虑变方向*/
|
||||
}
|
||||
}
|
||||
dwLinkLen += GetLinkLengthById(wLinkId); /*未中断遍历,无车且属于本联锁,更新已计算link总长*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*最后一个link 无需更新*/
|
||||
}
|
||||
|
||||
if ((dwFindLen <= dwLinkLen)|| (FLAG_SET == chOtherFlag) || (FLAG_SET == chBreakFlag))
|
||||
{
|
||||
/*距离足够 或查找到相邻RC,或查找到占用,停止计算*/
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
/*检查是否有方向变化点,此处检查,当前link已按既定方向查找完,查下一link,若此时中间有方向变化点,则跨过方向变化点,到下一link改变方向查*/
|
||||
if (j < (wLinkSum - 1U))
|
||||
{
|
||||
cDirectionPointfirst = GetLinkLogicDirChangedById(wszLinkIdBuf[j]);
|
||||
cDirectionPointsecond = GetLinkLogicDirChangedById(wszLinkIdBuf[(j + 1U)]); /*todo越界*/
|
||||
if (((LINK_DIRCHANGE_BEGIN == cDirectionPointfirst) || (LINK_DIRCHANGE_END == cDirectionPointfirst))
|
||||
&& (cDirectionPointsecond == cDirectionPointfirst))
|
||||
{
|
||||
cDir = ConvertTrainDir(cDir); /*有方向变化点,转换方向*/
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*没有反向变换点,不考虑变方向*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*最后一个link不需要考虑方向变化点的问题,防止数组越界*/
|
||||
; /*无处理*/
|
||||
}
|
||||
}
|
||||
|
||||
/* 获取列车ID 获取距离分界点最近的列车*/
|
||||
if (j < wLinkSum)
|
||||
if ((j < wLinkSum) && (dwFindLen > dwLinkLen))
|
||||
{
|
||||
if (DIR_SAME == cDir)
|
||||
if (FLAG_UNSET == chOtherFlag)
|
||||
{
|
||||
strTmp = as_GetLinkFirstTrain(wLinkId);
|
||||
CfpTrainInfoCal(LinkPoint.wLinkId, LinkPoint.dwOffset, dwLinkLen, &tmpTrainInfo, cDir);
|
||||
}
|
||||
else
|
||||
{
|
||||
strTmp = as_GetLinkLastTrain(wLinkId);
|
||||
/*找到不属于本联锁link 寻找对应联锁及分界点列车信息*/
|
||||
OtherCfpTrainInfoCal(LinkPoint.wLinkId, LinkPoint.dwOffset, dwLinkLen, &tmpTrainInfo);
|
||||
}
|
||||
wTrainId = strTmp.u16TrainID;
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
if (j == wLinkSum)
|
||||
{
|
||||
/* 未找到有车占用发送无车 */
|
||||
/* 未找到有车占用 或空闲距离足够发送无车 */
|
||||
tmpTrainInfo.wTrainId = 0u;
|
||||
tmpTrainInfo.chTrainLevel = 0u;
|
||||
tmpTrainInfo.dwDis = 0u;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 存在占用,判断列车类型 */
|
||||
if (NAME_FAILUREAREA == strTmp.u16TrainID)
|
||||
{
|
||||
/* 故障区域 */
|
||||
tmpTrainInfo.wTrainId = SIZE_MAX_LINETRAIN;
|
||||
tmpTrainInfo.chTrainLevel = 0u;
|
||||
|
||||
/* 获取区域位置 */
|
||||
TrainPoint.wLinkId = wLinkId;
|
||||
|
||||
/*选取link上距离分界点最近的点*/
|
||||
if (DIR_SAME == cDir)
|
||||
{
|
||||
TrainPoint.dwOffset = 0u;
|
||||
}
|
||||
else
|
||||
{
|
||||
TrainPoint.dwOffset = GetLinkLengthById(wLinkId);
|
||||
}
|
||||
|
||||
/* 查询距离 */
|
||||
dwDis = DsuAPointToBPoint(&TrainPoint, &CutoffPoint, &cTrainDir);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 正常车 */
|
||||
tmpTrainInfo.wTrainId = strTmp.u16TrainID;
|
||||
tmpTrainInfo.chTrainLevel = GetTrainLevel(tmpTrainInfo.wTrainId);
|
||||
|
||||
/*获取安全车尾点*/
|
||||
TrainTailPoint.wLinkId = GetTrainSafeTailLink(wTrainId);
|
||||
TrainTailPoint.dwOffset = GetTrainSafeTailOffset(wTrainId);
|
||||
/*获取安全车头点*/
|
||||
TrainHeadPoint.wLinkId = GetTrainSafeHeadLink(wTrainId);
|
||||
TrainHeadPoint.dwOffset = GetTrainSafeHeadOffset(wTrainId);
|
||||
|
||||
/*获取车尾到分界点距离*/
|
||||
dwDisTail = DsuAPointToBPoint(&TrainTailPoint, &CutoffPoint, &cTrainTailDir);
|
||||
|
||||
/*获取车头到分界点距离*/
|
||||
dwDisHead = DsuAPointToBPoint(&TrainHeadPoint, &CutoffPoint, &cTrainHeadDir);
|
||||
|
||||
if (dwDisTail < dwDisHead)
|
||||
{
|
||||
dwDis = dwDisTail;
|
||||
}
|
||||
else
|
||||
{
|
||||
dwDis = dwDisHead;
|
||||
}
|
||||
}
|
||||
|
||||
if (UINT32_MAX == dwDis)
|
||||
{
|
||||
tmpTrainInfo.dwDis = 0u;
|
||||
}
|
||||
else if(dwFindLen >= dwDis)
|
||||
{
|
||||
tmpTrainInfo.dwDis = dwDis;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 超出范围,无车 */
|
||||
tmpTrainInfo.wTrainId = 0u;
|
||||
tmpTrainInfo.chTrainLevel = 0u;
|
||||
tmpTrainInfo.dwDis = 0u;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -832,6 +792,7 @@ void SetCfpLocalOcCtData(const UINT16 wCfpId)
|
||||
UINT8 chSendNum = 0u;
|
||||
UINT8 chFunRtn = CI_ERROR;
|
||||
struct_PathPoint strPoint = { 0u };
|
||||
UINT8 dir = 0u;
|
||||
|
||||
wIndex = GetCfpBufIndex(wCfpId);
|
||||
/* 输入合法 */
|
||||
@@ -852,7 +813,9 @@ void SetCfpLocalOcCtData(const UINT16 wCfpId)
|
||||
g_CutoffPointDataBuf[wIndex].szLocalCtTrain[chSendNum].dwDelay = GetTrainMsgDelayTime(szCtTrainId[chCtIndex]);
|
||||
g_CutoffPointDataBuf[wIndex].szLocalCtTrain[chSendNum].wSpeed = GetTrainSpeed(szCtTrainId[chCtIndex]);
|
||||
g_CutoffPointDataBuf[wIndex].szLocalCtTrain[chSendNum].chSpeedDir = GetTrainSpeedDir(szCtTrainId[chCtIndex]);
|
||||
g_CutoffPointDataBuf[wIndex].szLocalCtTrain[chSendNum].chTrainDir = GetTrainDir(szCtTrainId[chCtIndex]);
|
||||
|
||||
dir = GetTrainDir(szCtTrainId[chCtIndex]); /*获取列车的逻辑方向*/
|
||||
g_CutoffPointDataBuf[wIndex].szLocalCtTrain[chSendNum].chTrainDir = ConvertDirectionToLogic(dir); /*将逻辑方向转换为运营方向*/
|
||||
g_CutoffPointDataBuf[wIndex].szLocalCtTrain[chSendNum].wMaxHeadLink = GetTrainMaxHeadLink(szCtTrainId[chCtIndex]);
|
||||
g_CutoffPointDataBuf[wIndex].szLocalCtTrain[chSendNum].dwMaxHeadOff = GetTrainMaxHeadOffset(szCtTrainId[chCtIndex]);
|
||||
g_CutoffPointDataBuf[wIndex].szLocalCtTrain[chSendNum].wMinHeadLink = GetTrainMinHeadLink(szCtTrainId[chCtIndex]);
|
||||
@@ -1631,4 +1594,141 @@ void SetCfpSignalLightUpFlag(const UINT16 wCfpId, const UINT8 cLightUpFlag)
|
||||
{
|
||||
;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* 功能描述: 根据其他分界点信息更新本联锁发送分界点列车数据
|
||||
* 参数说明:UINT16 wLinkId 分界点link ,UINT32 dwOffSet偏移量, UINT32 dwLocalOffSet 本联锁已经查找距离
|
||||
* [输出参数]: CfpTrainInfoStru* trainInfo 列车数据
|
||||
* 返回值 :无
|
||||
* Created By fan 2025.05.26
|
||||
*/
|
||||
void OtherCfpTrainInfoCal(UINT16 wLinkId,UINT32 dwOffSet,UINT32 dwLocalOffSet, CfpTrainInfoStru* trainInfo)
|
||||
{
|
||||
UINT16 wCfpId = 0U;/*分界点id*/
|
||||
UINT8 chTransmitStat = TRANSMIT_STATE_BAD;
|
||||
CfpTrainInfoStru strCfpInfo = { 0u };
|
||||
UINT8 chLinkTiocId = 0U;
|
||||
UINT32 dwDdLen = 0U;/*信号机点灯距离*/
|
||||
UINT32 dwLeftOffset = 0U;/*剩余需计算距离*/
|
||||
/*数据初始化*/
|
||||
dwDdLen = GetSystemParaValue(SIGNAL_LIGHTUP_SEC_LEN_ID);
|
||||
dwDdLen *= 100u;
|
||||
wCfpId = GetCfpIdByPoint(wLinkId, dwOffSet);
|
||||
if (NULL != trainInfo)
|
||||
{
|
||||
/*初始化为在该分界点存在故障车*/
|
||||
trainInfo->wTrainId = SIZE_MAX_LINETRAIN;
|
||||
trainInfo->dwDis = dwLocalOffSet;
|
||||
trainInfo->chTrainLevel = 0U;
|
||||
if (dwDdLen > dwLocalOffSet)
|
||||
{
|
||||
dwLeftOffset = dwDdLen - dwLocalOffSet;
|
||||
}
|
||||
else
|
||||
{
|
||||
;/*无处理*/
|
||||
}
|
||||
if (0U != wCfpId)
|
||||
{
|
||||
chLinkTiocId = (UINT8)GetLinkManageTiocById(wLinkId);
|
||||
strCfpInfo = GetCfpOtherOcTrainInfo(wCfpId);
|
||||
chTransmitStat = GetRcPbTacsTransmitState(chLinkTiocId);
|
||||
if ((TRANSMIT_STATE_GOOD != chTransmitStat) || (UINT16_MAX == strCfpInfo.wTrainId))
|
||||
{
|
||||
;/*通信不良好,或者分界点列车信息获取失败*/
|
||||
}
|
||||
else if ((0u == strCfpInfo.wTrainId) ||
|
||||
((UINT32_MAX != strCfpInfo.dwDis) && (dwLeftOffset < strCfpInfo.dwDis)))
|
||||
{
|
||||
/*相邻Tioc无车 或 距离分界点距离大于剩余查找距离*/
|
||||
trainInfo->wTrainId = 0U;
|
||||
trainInfo->dwDis = 0U;
|
||||
trainInfo->chTrainLevel = 0U;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*传递分界点信息*/
|
||||
trainInfo->wTrainId = strCfpInfo.wTrainId;
|
||||
trainInfo->dwDis = strCfpInfo.dwDis + dwLocalOffSet;
|
||||
trainInfo->chTrainLevel = strCfpInfo.chTrainLevel;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
;/*分界点获取失败*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 本联锁列车数据更新本联锁发送分界点列车数据
|
||||
* 参数说明:UINT16 wLinkId 分界点link ,UINT32 dwOffSet偏移量, UINT32 dwLocalOffSet 本联锁已经查找距离 UINT8 cDir 方向
|
||||
* [输出参数]: CfpTrainInfoStru* trainInfo 列车数据
|
||||
* 返回值 :无
|
||||
* Created By fan 2025.06.04
|
||||
*/
|
||||
void CfpTrainInfoCal(UINT16 wLinkId, UINT32 dwOffSet, UINT32 dwLocalOffSet, CfpTrainInfoStru* trainInfo,UINT8 cDir)
|
||||
{
|
||||
TRAIN_SEQUANCE_s strTmp = { 0u };
|
||||
UINT16 wTrainId = 0u;
|
||||
UINT32 dwDis = UINT32_MAX;
|
||||
UINT32 dwDisTail = UINT32_MAX;
|
||||
UINT32 dwDisHead = UINT32_MAX;
|
||||
struct_PathPoint TrainHeadPoint = { 0u };
|
||||
struct_PathPoint TrainTailPoint = { 0u };
|
||||
struct_PathPoint LinkPoint = { 0u };
|
||||
UINT8 cTrainTailDir = 0U; /*列车安全车尾方向*/
|
||||
UINT8 cTrainHeadDir = 0U; /*列车安全车头方向*/
|
||||
if ((NULL != trainInfo)&&(0U!= wLinkId))
|
||||
{
|
||||
LinkPoint.wLinkId = wLinkId;
|
||||
LinkPoint.dwOffset = dwOffSet;
|
||||
/*占用link属于本联锁*/
|
||||
if (DIR_SAME == cDir)
|
||||
{
|
||||
strTmp = as_GetLinkFirstTrain(wLinkId);
|
||||
}
|
||||
else
|
||||
{
|
||||
strTmp = as_GetLinkLastTrain(wLinkId);
|
||||
}
|
||||
wTrainId = strTmp.u16TrainID;
|
||||
/* 存在占用,判断列车类型 */
|
||||
if (NAME_FAILUREAREA == strTmp.u16TrainID)
|
||||
{
|
||||
/* 故障区域 */
|
||||
trainInfo->wTrainId = SIZE_MAX_LINETRAIN;
|
||||
trainInfo->chTrainLevel = 0u;
|
||||
trainInfo->dwDis = dwLocalOffSet;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 正常车 */
|
||||
trainInfo->wTrainId = strTmp.u16TrainID;
|
||||
trainInfo->chTrainLevel = GetTrainLevel(trainInfo->wTrainId);
|
||||
|
||||
/*获取安全车尾点*/
|
||||
TrainTailPoint.wLinkId = GetTrainSafeTailLink(wTrainId);
|
||||
TrainTailPoint.dwOffset = GetTrainSafeTailOffset(wTrainId);
|
||||
/*获取安全车头点*/
|
||||
TrainHeadPoint.wLinkId = GetTrainSafeHeadLink(wTrainId);
|
||||
TrainHeadPoint.dwOffset = GetTrainSafeHeadOffset(wTrainId);
|
||||
|
||||
/*获取车尾到已计算link最远端距离*/
|
||||
dwDisTail = DsuAPointToBPoint(&TrainTailPoint, &LinkPoint, &cTrainTailDir);
|
||||
|
||||
/*获取车头到已计算link最远端距离*/
|
||||
dwDisHead = DsuAPointToBPoint(&TrainHeadPoint, &LinkPoint, &cTrainHeadDir);
|
||||
|
||||
if (dwDisTail < dwDisHead)
|
||||
{
|
||||
dwDis = dwDisTail;
|
||||
}
|
||||
else
|
||||
{
|
||||
dwDis = dwDisHead;
|
||||
}
|
||||
trainInfo->dwDis = dwLocalOffSet + dwDis;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -350,6 +350,23 @@ UINT8 GetCfpSignalLightUpFlag(const UINT16 wCfpId);
|
||||
*/
|
||||
void SetCfpSignalLightUpFlag(const UINT16 wCfpId, const UINT8 cLightUpFlag);
|
||||
|
||||
/*
|
||||
* 功能描述: 根据其他分界点信息更新本联锁发送分界点列车数据
|
||||
* 参数说明:UINT16 wLinkId 分界点link ,UINT32 dwOffSet偏移量, UINT32 dwLocalOffSet 本联锁已经查找距离
|
||||
* [输出参数]: CfpTrainInfoStru* trainInfo 列车数据
|
||||
* 返回值 :CI_ERROR有车 CI_SUCCESS无车
|
||||
* Created By fan 2025.05.26
|
||||
*/
|
||||
void OtherCfpTrainInfoCal(UINT16 wLinkId, UINT32 dwOffSet, UINT32 dwLocalOffSet, CfpTrainInfoStru* trainInfo);
|
||||
/*
|
||||
* 功能描述: 本联锁列车数据更新本联锁发送分界点列车数据
|
||||
* 参数说明:UINT16 wLinkId 分界点link ,UINT32 dwOffSet偏移量, UINT32 dwLocalOffSet 本联锁已经查找距离 UINT8 cDir 方向
|
||||
* [输出参数]: CfpTrainInfoStru* trainInfo 列车数据
|
||||
* 返回值 :无
|
||||
* Created By fan 2025.06.04
|
||||
*/
|
||||
void CfpTrainInfoCal(UINT16 wLinkId, UINT32 dwOffSet, UINT32 dwLocalOffSet, CfpTrainInfoStru* trainInfo, UINT8 cDir);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -43,6 +43,7 @@ UINT8 GetCiEmapCheckVer(const UINT8 ciId, UINT32 *emapVer,const UINT8 commDevTyp
|
||||
switch (commDevType)
|
||||
{/*根据通信设备类型获取CI与该通信设备的共用数据校验信息*/
|
||||
case CI_SYSTEM_TYPE_VOBC:
|
||||
case CI_SYSTEM_TYPE_IVOC:
|
||||
case CI_SYSTEM_TYPE_ITE:
|
||||
*emapVer = gEmapCiConfigStrus[ciId].dataVerCheckCIAndVOBC; /*ITE使用与VOBC相同的校验信息*/
|
||||
break;
|
||||
@@ -57,7 +58,7 @@ UINT8 GetCiEmapCheckVer(const UINT8 ciId, UINT32 *emapVer,const UINT8 commDevTyp
|
||||
*emapVer = gEmapCiConfigStrus[ciId].dataVerCheckCIAndTMC;
|
||||
break;
|
||||
default:
|
||||
/*CI_SYSTEM_TYPE_CI等情况*/
|
||||
/*CI_SYSTEM_TYPE_RCI等情况*/
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -111,8 +112,8 @@ UINT8 IsSameLineCI(const UINT8 ciA, const UINT8 ciB)
|
||||
UINT8 dquDevNameA = CI_ERROR;
|
||||
UINT8 dquDevNameB = CI_ERROR;
|
||||
|
||||
u16CiA = (UINT16)((CI_SYSTEM_TYPE_CI * 256u) + ciA);
|
||||
u16CiB = (UINT16)((CI_SYSTEM_TYPE_CI * 256u) + ciB);
|
||||
u16CiA = (UINT16)((CI_SYSTEM_TYPE_RCI * 256u) + ciA);
|
||||
u16CiB = (UINT16)((CI_SYSTEM_TYPE_RCI * 256u) + ciB);
|
||||
|
||||
cbtcSysType = GetCbtcSysType();
|
||||
|
||||
@@ -202,28 +203,55 @@ UINT32 GetCiTranCiDataCheckVer(const UINT8 ciId, const UINT16 deviceName)
|
||||
UINT32 retDataVer = CI_ERROR;
|
||||
UINT8 ii = 0U;
|
||||
UINT8 chBreakFlag = 0U;
|
||||
|
||||
if ((ciId > 0U) && (ciId < CI_SUM_MAX) && (deviceName > 0U))
|
||||
UINT8 chDevType = 0U;
|
||||
chDevType = (UINT8)((deviceName & 0xFF00) >> 8U);
|
||||
if ((ciId > 0U) && (ciId < CI_SUM_MAX) &&
|
||||
((RC_WORK_MODE_CI == chDevType)||(RC_WORK_MODE_TIOC == chDevType)))
|
||||
{
|
||||
if (gEmapCiConfigStrus[ciId].devId == ciId)
|
||||
{
|
||||
for (ii = 0U; ii < gEmapCiConfigStrus[ciId].chAdjoinCICount; ii++)
|
||||
if (RC_WORK_MODE_CI == chDevType)
|
||||
{
|
||||
if (ii < CI_TRAINSMIT_CI_MAX_NUM)
|
||||
for (ii = 0U; ii < gEmapCiConfigStrus[ciId].chAdjoinCICount; ii++)
|
||||
{
|
||||
if ((deviceName == gEmapCiConfigStrus[ciId].wAdjoinCIId[ii]) && (gEmapCiConfigStrus[ciId].wAdjoinCIId[ii] > 0U) && (gEmapCiConfigStrus[ciId].wAdjoinCIId[ii] < 0xFFFFU))
|
||||
if (ii < CI_TRAINSMIT_CI_MAX_NUM)
|
||||
{
|
||||
if ((deviceName == gEmapCiConfigStrus[ciId].wAdjoinCIId[ii]) && (gEmapCiConfigStrus[ciId].wAdjoinCIId[ii] > 0U) && (gEmapCiConfigStrus[ciId].wAdjoinCIId[ii] < 0xFFFFU))
|
||||
{
|
||||
retDataVer = gEmapCiConfigStrus[ciId].dwAdjoinCIShareCheckData[ii];
|
||||
chBreakFlag = 1U;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
retDataVer = gEmapCiConfigStrus[ciId].dwAdjoinCIShareCheckData[ii];
|
||||
chBreakFlag = 1U;
|
||||
}
|
||||
if (1U == chBreakFlag)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
for (ii = 0U; ii < gEmapCiConfigStrus[ciId].chAdjoinRCCount; ii++)
|
||||
{
|
||||
chBreakFlag = 1U;
|
||||
}
|
||||
if (1U == chBreakFlag)
|
||||
{
|
||||
break;
|
||||
if (ii < CI_TRAINSMIT_CI_MAX_NUM)
|
||||
{
|
||||
if ((deviceName == gEmapCiConfigStrus[ciId].wAdjoinRCId[ii]) && (gEmapCiConfigStrus[ciId].wAdjoinRCId[ii] > 0U) && (gEmapCiConfigStrus[ciId].wAdjoinRCId[ii] < 0xFFFFU))
|
||||
{
|
||||
retDataVer = gEmapCiConfigStrus[ciId].dwAdjoinRCShareCheckData[ii];
|
||||
chBreakFlag = 1U;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
chBreakFlag = 1U;
|
||||
}
|
||||
if (1U == chBreakFlag)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,11 +36,15 @@ typedef struct S_EmapCheckVerConfigStruct
|
||||
UINT8 chAdjoinCICount; /*相邻CI数量*/
|
||||
UINT16 wAdjoinCIId[CI_TRAINSMIT_CI_MAX_NUM]; /*相邻CI[1-6]的ID*/
|
||||
UINT32 dwAdjoinCIShareCheckData[CI_TRAINSMIT_CI_MAX_NUM]; /*与相邻CI[1-6]的共用数据校验信息*/
|
||||
UINT8 chAdjoinRCCount; /*相邻RC数量*/
|
||||
UINT16 wAdjoinRCId[CI_TRAINSMIT_CI_MAX_NUM]; /*相邻RC[1-6]的ID*/
|
||||
UINT32 dwAdjoinRCShareCheckData[CI_TRAINSMIT_CI_MAX_NUM]; /*与相邻RC[1-6]的共用数据校验信息*/
|
||||
UINT16 ciTransmitAxisId[CI_TRAINSMIT_AXIS_MAX_NUM];/*与联锁通信的计轴系统ID*/
|
||||
UINT32 ciTransmitAxisCheckData[CI_TRAINSMIT_AXIS_MAX_NUM];/*与联锁通信的计轴系统校验信息*/
|
||||
UINT8 chAdjoinOcCount; /*与CI通信的oc数量*/
|
||||
UINT16 wAdjoinOcId[CI_TRAINSMIT_OC_MAX_NUM]; /*Oc[1-10]的ID*/
|
||||
UINT32 dwAdjoinOcShareCheckData[CI_TRAINSMIT_OC_MAX_NUM]; /*与OC[1-10]的共用数据校验信息*/
|
||||
UINT32 dwLocalShareCheckData; /*与本控区RC/CI校验信息*/
|
||||
} EmapCiConfigStru;
|
||||
|
||||
extern EmapCiConfigStru gEmapCiConfigStrus[CI_SUM_MAX];/*存储各CI使用的电子地图版本*/
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -15,6 +15,14 @@
|
||||
#define _DEVICE_DATA_MANAGE_H_
|
||||
|
||||
#include "CommonTypes.h"
|
||||
|
||||
/*区间雨雪信息结构体*/
|
||||
typedef struct S_AreaSnowInfoStruct
|
||||
{
|
||||
UINT16 wAreaId; /*区间ID*/
|
||||
UINT8 cAreaSnowLevel; /*区间湿轨级别*/
|
||||
} AreaSnowInfoStruct;
|
||||
|
||||
#include "../System/CiSystemDefine.h"
|
||||
#include "../error/ErrorDataManage.h"
|
||||
#include "../Transmit/TransmitStateDataManage.h"
|
||||
@@ -156,6 +164,7 @@ typedef struct S_LineCommTrainStruct
|
||||
UINT16 szCommTrainNumID[TRAIN_SUM_MAX]; /*全线通信车ID数组*/
|
||||
}LineCommTrainStruct;
|
||||
|
||||
|
||||
/*******************************全局变量声明*******************************/
|
||||
extern UINT8 AllSignalBrightFlag; /*全站亮灯标志*/
|
||||
|
||||
@@ -181,6 +190,10 @@ extern UINT8 g_AllTsrFlag; /*
|
||||
|
||||
extern UINT8 g_AllSnowModel; /*全线雨雪模式命令*/
|
||||
|
||||
extern UINT8 g_AllSnowModelCC; /*全线雨雪模式命令CC:0x55-有效;0xAA-无效*/
|
||||
|
||||
extern UINT8 g_AllSnowLevel; /*全线湿轨级别:0-默认值;1-一级;2-二级*/
|
||||
|
||||
extern UINT8 g_IteLineCutState; /*ITE全线切除状态:0x55:切除ITE;0xAA:使用ITE;0xFF:默认值*/
|
||||
|
||||
extern UINT8 g_AllLineTsrState; /*全线临时限速状态*/
|
||||
@@ -219,13 +232,21 @@ extern UINT8 SwitchBlockLinkState; /*
|
||||
extern CtrlPowerStruct ctrlpowerFlag[VIRTUAL_CI_MAX];
|
||||
|
||||
extern UINT8 LocalAreaSnowNum; /*本地区间雨雪站台数量*/
|
||||
extern UINT32 szLocalAreaSnowId[LOCAL_AREA_SNOW_SUM_MAX]; /*本地区间雨雪站台ID数组*/
|
||||
extern AreaSnowInfoStruct szLocalAreaSnow[LOCAL_AREA_SNOW_SUM_MAX]; /*本地区间雨雪数组*/
|
||||
|
||||
extern UINT8 gLocalAreaSnowNumCC; /*本地区间雨雪站台数量CC*/
|
||||
extern AreaSnowInfoStruct gszLocalAreaSnowCC[LOCAL_AREA_SNOW_SUM_MAX]; /*本地区间雨雪数组CC*/
|
||||
|
||||
extern LineCommTrainStruct gStrLineCommTrain; /*全线通信车结构体*/
|
||||
|
||||
extern UINT32 gFlyProtectOverCyc; /*飞车宕机报警起始周期*/
|
||||
extern UINT8 g_LocalSnowModel; /*本地雨雪模式命令*/
|
||||
|
||||
extern UINT8 g_LocalSnowModelCC; /*本地雨雪模式命令CC*/
|
||||
|
||||
extern UINT8 gLocalAreaIteCutNum; /*本地区间ITE切除数量*/
|
||||
extern UINT16 gSzLocalAreaIteCutId[ALL_AREA_SNOW_SUM_MAX]; /*本地区间ITE切除ID数组*/
|
||||
|
||||
/******************************联锁标志数据管理****************************/
|
||||
|
||||
/*
|
||||
@@ -274,13 +295,6 @@ void SetStartLockFlag(UINT8 setFlag);
|
||||
LINSHIXIANSU_COMM_BAD_YES_LABOURCANCLE_STATE
|
||||
*/
|
||||
UINT8 GetLabourCancelLinShiXianState(void);
|
||||
|
||||
/*
|
||||
功能描述:人工取消临时限速状态迁移处理
|
||||
参数说明:setFlag 状态
|
||||
返回值:无
|
||||
*/
|
||||
void LabourCancelLSXianStaMoveProc(UINT8 setFlag);
|
||||
/*
|
||||
功能描述:人工取消临时限速状态迁移处理
|
||||
参数说明:setFlag 状态,UINT8 virCIid 虚拟联锁ID
|
||||
@@ -1367,6 +1381,24 @@ extern UINT8 GetAllSnowModel(void);
|
||||
*/
|
||||
extern void SetAllSnowModel(UINT8 setmodle);
|
||||
|
||||
/*
|
||||
* 功能描述:获取全线湿轨等级
|
||||
* 参数说明:无
|
||||
* 返 回 值:0 默认值
|
||||
* 1 湿轨一级
|
||||
* 2 湿轨二级
|
||||
* Created By LQ 2025.05.28
|
||||
*/
|
||||
UINT8 GetAllSnowLevel(void);
|
||||
|
||||
/*
|
||||
* 功能描述:设置全线湿轨等级
|
||||
* 参数说明:UINT8 cLevel 湿轨级别
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.05.28
|
||||
*/
|
||||
void SetAllSnowLevel(UINT8 cLevel);
|
||||
|
||||
/*
|
||||
* 功能描述:获取ITE全线切除状态
|
||||
* 参数说明:void
|
||||
@@ -1710,10 +1742,10 @@ UINT8 GetDiaoCheRouteOpenState(const UINT16 wRouteId);
|
||||
/*
|
||||
* 功能描述:设置本地区间雨雪站台信息
|
||||
* 参数说明:const UINT8 cAreaSnowNum 区间雨雪数量
|
||||
* const UINT32 pAreaSnowIdBuf[] 区间雨雪ID数组
|
||||
* const AreaSnowInfoStruct pAreaSnowBuf[LOCAL_AREA_SNOW_SUM_MAX] 区间雨雪数组
|
||||
* 返回值 :无
|
||||
*/
|
||||
void SetLocalAreaSnowInfo(const UINT8 cAreaSnowNum, const UINT32 pAreaSnowIdBuf[]);
|
||||
void SetLocalAreaSnowInfo(const UINT8 cAreaSnowNum, const AreaSnowInfoStruct pAreaSnowBuf[LOCAL_AREA_SNOW_SUM_MAX]);
|
||||
|
||||
/*
|
||||
* 功能描述:获取本地区间雨雪站台数量
|
||||
@@ -1723,11 +1755,11 @@ void SetLocalAreaSnowInfo(const UINT8 cAreaSnowNum, const UINT32 pAreaSnowIdBuf[
|
||||
UINT8 GetLocalAreaSnowNum(void);
|
||||
|
||||
/*
|
||||
* 功能描述:获取本地区间雨雪站台ID
|
||||
* 功能描述:获取本地区间雨雪信息
|
||||
* 参数说明:无
|
||||
* 返回值 :区间雨雪站台ID
|
||||
* 返回值 :区间雨雪信息
|
||||
*/
|
||||
UINT32* GetLocalAreaSnowId(void);
|
||||
AreaSnowInfoStruct* GetLocalAreaSnow(void);
|
||||
|
||||
|
||||
/*
|
||||
@@ -1824,4 +1856,123 @@ UINT8 GetSwitchUsingValidState(const UINT16 wSwitchId, const UINT8 chFunctionId,
|
||||
*/
|
||||
void DefaultCtrlPowerDeal(const UINT8 virtualCiId);
|
||||
|
||||
/*
|
||||
* 功能描述:获取本地区间ITE切除数量
|
||||
* 参数说明:无
|
||||
* 返 回 值:本地区间ITE切除数量
|
||||
* Created By LQ 2025.04.15
|
||||
*/
|
||||
UINT8 GetLocalAreaIteCutNum(void);
|
||||
|
||||
/*
|
||||
* 功能描述:获取本地区间ITE切除ID数组
|
||||
* 参数说明:无
|
||||
* 返 回 值:本地区间ITE切除ID数组
|
||||
* Created By LQ 2025.04.15
|
||||
*/
|
||||
UINT16* GetLocalAreaIteCutId(void);
|
||||
|
||||
/*
|
||||
* 功能描述:清除本地区间ITE切除信息
|
||||
* 参数说明:无
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.04.15
|
||||
*/
|
||||
void ClearLocalAreaIteCutInfo(void);
|
||||
|
||||
/*
|
||||
* 功能描述:设置本地区间ITE切除信息
|
||||
* 参数说明:const UINT8 cAreaIteCutNum 区间ITE切除数量
|
||||
* const UINT16 pAreaIteCutIdBuf[ALL_AREA_SNOW_SUM_MAX] 区间ID数组
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.04.15
|
||||
*/
|
||||
void SetLocalAreaIteCutInfo(const UINT8 cAreaIteCutNum, const UINT16 pAreaIteCutIdBuf[ALL_AREA_SNOW_SUM_MAX]);
|
||||
|
||||
/*
|
||||
* 功能描述:获取进路内第一个锁闭的逻辑区段ID
|
||||
* 参数说明:UINT16 wRouteId 进路ID
|
||||
* 返 回 值:0 无锁闭的逻辑区段
|
||||
* >0 第一个锁闭的逻辑区段ID
|
||||
* Created By LQ 2025.05.08
|
||||
*/
|
||||
UINT16 GetRouteFirstLockedLogSecId(UINT16 wRouteId);
|
||||
/*
|
||||
* 功能描述:紧急临时限速处理
|
||||
* 参数说明:const UINT16 wPhySectionId 逻辑区段ID
|
||||
* const UINT8 chExiansuState 限速状态
|
||||
* 返 回 值:无
|
||||
* by 202500916
|
||||
*/
|
||||
|
||||
void EmergXianSuProcess(const UINT16 wPhySectionId, const UINT8 chExiansuState);
|
||||
|
||||
/*
|
||||
* 功能描述:获取全线雨雪模式命令CC
|
||||
* 参数说明:void
|
||||
* 返 回 值:0x55 有效
|
||||
* 0xAA 无效
|
||||
* Created By LQ 2025.11.07
|
||||
*/
|
||||
UINT8 GetAllSnowModelCC(void);
|
||||
|
||||
/*
|
||||
* 功能描述:设置全线雨雪模式命令CC
|
||||
* 参数说明:UINT8 setmodle 全线雨雪模式
|
||||
* 返 回 值:void
|
||||
* Created By LQ 2025.11.07
|
||||
*/
|
||||
void SetAllSnowModelCC(UINT8 setmodle);
|
||||
|
||||
/*
|
||||
* 功能描述:获取本地区间雨雪站台数量CC
|
||||
* 参数说明:无
|
||||
* 返 回 值:区间雨雪站台数量
|
||||
* Created By LQ 2025.11.06
|
||||
*/
|
||||
UINT8 GetLocalAreaSnowNumCC(void);
|
||||
|
||||
/*
|
||||
* 功能描述:获取本地区间雨雪信息CC
|
||||
* 参数说明:无
|
||||
* 返 回 值:区间雨雪信息
|
||||
* Created By LQ 2025.11.06
|
||||
*/
|
||||
AreaSnowInfoStruct* GetLocalAreaSnowCC(void);
|
||||
|
||||
/*
|
||||
* 功能描述:设置本地区间雨雪站台信息CC
|
||||
* 参数说明:const UINT8 cAreaSnowNum 区间雨雪数量
|
||||
* const AreaSnowInfoStruct pAreaSnowBuf[LOCAL_AREA_SNOW_SUM_MAX] 区间雨雪数组
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.11.06
|
||||
*/
|
||||
void SetLocalAreaSnowInfoCC(const UINT8 cAreaSnowNum, const AreaSnowInfoStruct pAreaSnowBuf[LOCAL_AREA_SNOW_SUM_MAX]);
|
||||
|
||||
/*
|
||||
* 功能描述:获取本地雨雪模式命令CC
|
||||
* 参数说明:无
|
||||
* 返 回 值:0x55 无效
|
||||
* 0xAA 有效
|
||||
* Created By LQ 2025.11.06
|
||||
*/
|
||||
UINT8 GetLocalSnowModelCC(void);
|
||||
|
||||
/*
|
||||
* 功能描述:设置本地雨雪模式命令CC
|
||||
* 参数说明:UINT8 setmodle 本地雨雪模式
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.11.06
|
||||
*/
|
||||
void SetLocalSnowModelCC(UINT8 setmodle);
|
||||
/*
|
||||
* 功能描述: 获取虚拟联锁类型
|
||||
* 参数说明: UINT8 chVirCiId 虚拟联锁ID
|
||||
* 返回值 :
|
||||
CI_TYPE_ZX ((UINT8)0x01) 正线联锁
|
||||
CI_TYPE_CLD ((UINT8)0x04) 车辆段联锁
|
||||
CI_TYPE_SCX ((UINT8)0x02) 试车线
|
||||
add by mpt 20260104
|
||||
*/
|
||||
UINT8 GetLocalVirCiType(UINT8 chVirCiId);
|
||||
#endif
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
extern PlatHeartDataStruct RecvHeartDataStru ; /*平台心跳帧数据结构*/
|
||||
extern PlatGPIODataStruct RecvPlatDataStruGPIO;/*平台0x2D帧数据结构 GPIO采集状态*/
|
||||
|
||||
extern PlatGPIOToleranceDataStruct gPlatDataGPIOTolercance;/*平台硬件采集故障容忍记录数据*/
|
||||
|
||||
|
||||
|
||||
@@ -427,18 +427,36 @@ UINT8 CheckRCIAPowerFaultState(void)
|
||||
{
|
||||
UINT8 retVal = CI_ERROR;
|
||||
UINT8 cxABreakFlag = 0U; /*A系电源插箱空开断开检查*/
|
||||
|
||||
UINT8 chCheckState = 0U;
|
||||
UINT32 dwErrorStartCyc = 0U;
|
||||
UINT32 dwCurCyc = 0U;
|
||||
cxABreakFlag = GetPowerANodeStatue();
|
||||
|
||||
dwErrorStartCyc = gPlatDataGPIOTolercance.powerANode_TolCyc;
|
||||
dwCurCyc = Get2oo2CurCycleNum();
|
||||
/* 1、A系电源插箱空开断开 */
|
||||
if (NODE_STATUS_BREAK == cxABreakFlag)
|
||||
{
|
||||
/*A系电源故障状态*/
|
||||
retVal = CI_ERROR;
|
||||
chCheckState = SystemOverTimeCheck(dwErrorStartCyc, IO_POWERSTATE_TOLERANCE);
|
||||
if (CI_TIME_NO == chCheckState)
|
||||
{
|
||||
gPlatDataGPIOTolercance.powerANode_TolCyc = dwCurCyc;
|
||||
retVal = CI_SUCCESS;
|
||||
}
|
||||
else if (CI_TIME_IN == chCheckState)
|
||||
{
|
||||
retVal = CI_SUCCESS;/*继续容忍*/
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
debug_infor_printf((const)"\nPLATIO_A_Node_Power_FaultState StartTime%d\n", dwErrorStartCyc);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_SUCCESS;
|
||||
gPlatDataGPIOTolercance.powerANode_TolCyc = 0U;
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
@@ -453,18 +471,36 @@ UINT8 CheckRCIBPowerFaultState(void)
|
||||
{
|
||||
UINT8 retVal = CI_ERROR;
|
||||
UINT8 cxBBreakFlag = 0U; /*B系电源插箱空开断开检查*/
|
||||
|
||||
UINT8 chCheckState = 0U;
|
||||
UINT32 dwErrorStartCyc = 0U;
|
||||
UINT32 dwCurCyc = 0U;
|
||||
cxBBreakFlag = GetPowerBNodeStatue();
|
||||
|
||||
/* 1、B系电源插箱空开断开 */
|
||||
dwErrorStartCyc = gPlatDataGPIOTolercance.powerBNode_TolCyc;
|
||||
dwCurCyc = Get2oo2CurCycleNum();
|
||||
/* 1、B系电源插箱空开断开*/
|
||||
if (NODE_STATUS_BREAK == cxBBreakFlag)
|
||||
{
|
||||
/*B系电源故障状态*/
|
||||
retVal = CI_ERROR;
|
||||
chCheckState = SystemOverTimeCheck(dwErrorStartCyc, IO_POWERSTATE_TOLERANCE);
|
||||
if (CI_TIME_NO == chCheckState)
|
||||
{
|
||||
gPlatDataGPIOTolercance.powerBNode_TolCyc = dwCurCyc;
|
||||
retVal = CI_SUCCESS;
|
||||
}
|
||||
else if (CI_TIME_IN == chCheckState)
|
||||
{
|
||||
retVal = CI_SUCCESS;/*继续容忍*/
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
debug_infor_printf((const)"\nPLATIO_B_Node_Power_FaultState StartTime%d\n", dwErrorStartCyc);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_SUCCESS;
|
||||
gPlatDataGPIOTolercance.powerBNode_TolCyc = 0U;
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
@@ -479,16 +515,20 @@ UINT8 CheckRCIBPowerFaultState(void)
|
||||
UINT8 CheckRCIAPowerModeFaultState(void)
|
||||
{
|
||||
UINT8 retVal = CI_ERROR;
|
||||
|
||||
UINT8 powerAPUBAState = 0U; /*PUB A采集的24VA电源状态 1*/
|
||||
UINT8 powerBPUBAState = 0U; /*PUB A采集的24VB电源状态 3*/
|
||||
UINT8 vol1Flag = 0U; /*CPI A采集24VA电源 1*/
|
||||
UINT8 vol3Flag = 0U; /*CPI A采集24VB电源 3*/
|
||||
UINT8 chCheckState = 0U;
|
||||
UINT32 dwErrorStartCyc = 0U;
|
||||
UINT32 dwCurCyc = 0U;
|
||||
|
||||
powerAPUBAState = GetGPIOCollectPointStatus(COLLECT_MODEA_CCUA);
|
||||
powerBPUBAState = GetGPIOCollectPointStatus(COLLECT_MODEB_CCUA);
|
||||
vol1Flag = CheckPointVoltageState(COLLECT_MODEA_CCUA);
|
||||
vol3Flag = CheckPointVoltageState(COLLECT_MODEB_CCUA);
|
||||
dwErrorStartCyc = gPlatDataGPIOTolercance.powerAMode_TolCyc;
|
||||
dwCurCyc = Get2oo2CurCycleNum();
|
||||
|
||||
/* 1、PUB A采集的24VA电源异常、或24VB电源异常
|
||||
2、CPI A采集24VA电源、或24VB电源电压为0V */
|
||||
@@ -496,11 +536,27 @@ UINT8 CheckRCIAPowerModeFaultState(void)
|
||||
if (((CHECK_VOLTAGE_ZERO == vol1Flag) || (CHECK_VOLTAGE_ZERO == vol3Flag))
|
||||
&& ((POWER_STATUS_ABNORMAL == powerAPUBAState) || (POWER_STATUS_ABNORMAL == powerBPUBAState)))
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
/*检查容忍*/
|
||||
chCheckState = SystemOverTimeCheck(dwErrorStartCyc, IO_POWERSTATE_TOLERANCE);
|
||||
if (CI_TIME_NO == chCheckState)
|
||||
{
|
||||
gPlatDataGPIOTolercance.powerAMode_TolCyc = dwCurCyc;
|
||||
retVal = CI_SUCCESS;
|
||||
}
|
||||
else if (CI_TIME_IN == chCheckState)
|
||||
{
|
||||
retVal = CI_SUCCESS;/*继续容忍*/
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
debug_infor_printf((const)"\nPLATIO_A_Mode_Power_FaultState StartTime%d\n", dwErrorStartCyc);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_SUCCESS;
|
||||
gPlatDataGPIOTolercance.powerAMode_TolCyc = 0U;
|
||||
}
|
||||
|
||||
return retVal;
|
||||
@@ -520,25 +576,43 @@ UINT8 CheckRCIBPowerModeFaultState(void)
|
||||
UINT8 powerBPUBBState = 0U; /*PUB A采集的24VB电源状态 4*/
|
||||
UINT8 vol2Flag = 0U; /*CPI B采集24VA电源 2*/
|
||||
UINT8 vol4Flag = 0U; /*CPI B采集24VB电源 4*/
|
||||
UINT8 chCheckState = 0U;
|
||||
UINT32 dwErrorStartCyc = 0U;
|
||||
UINT32 dwCurCyc = 0U;
|
||||
|
||||
powerAPUBBState = GetGPIOCollectPointStatus(COLLECT_MODEA_CCUB);
|
||||
powerBPUBBState = GetGPIOCollectPointStatus(COLLECT_MODEB_CCUB);
|
||||
vol2Flag = CheckPointVoltageState(COLLECT_MODEA_CCUB);
|
||||
vol4Flag = CheckPointVoltageState(COLLECT_MODEB_CCUB);
|
||||
dwErrorStartCyc = gPlatDataGPIOTolercance.powerBMode_TolCyc;
|
||||
dwCurCyc = Get2oo2CurCycleNum();
|
||||
|
||||
/* 1、PUB B采集的24VA电源异常、或24VB电源异常
|
||||
2、CPI B采集24VA电源、或24VB电源电压为0V */
|
||||
|
||||
|
||||
/*暂未实现PUB采集,只判断电源电压*/
|
||||
2、CPI B采集24VA电源、或24VB电源电压为0V */
|
||||
if (((CHECK_VOLTAGE_ZERO == vol2Flag) || (CHECK_VOLTAGE_ZERO == vol4Flag))
|
||||
&& ((POWER_STATUS_ABNORMAL == powerAPUBBState) || (POWER_STATUS_ABNORMAL == powerBPUBBState)))
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
/*检查容忍*/
|
||||
chCheckState = SystemOverTimeCheck(dwErrorStartCyc, IO_POWERSTATE_TOLERANCE);
|
||||
if (CI_TIME_NO == chCheckState)
|
||||
{
|
||||
gPlatDataGPIOTolercance.powerBMode_TolCyc = dwCurCyc;
|
||||
retVal = CI_SUCCESS;
|
||||
}
|
||||
else if (CI_TIME_IN == chCheckState)
|
||||
{
|
||||
retVal = CI_SUCCESS;/*继续容忍*/
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
debug_infor_printf((const)"\nPLATIO_B_Mode_Power_FaultState StartTime%d\n", dwErrorStartCyc);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_SUCCESS;
|
||||
gPlatDataGPIOTolercance.powerBMode_TolCyc = 0U;
|
||||
}
|
||||
|
||||
return retVal;
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
#include "CommonTypes.h"
|
||||
#include "../System/CiSystemDefine.h"
|
||||
|
||||
#include "../System/SystemParameterManage.h"
|
||||
|
||||
|
||||
#define BOARD_TYPE_CCUA ((UINT8)0x09) /*通控板A*/
|
||||
@@ -59,6 +59,7 @@
|
||||
#define CCU_CommBadEnsureTime_CycleCount ((UINT16)5u) /*应用与通控通信中断判断周期数*/
|
||||
|
||||
#define VOLTAGE_MAX_TO_0 ((UINT16)500U) /*电压判断为0的阈值*/
|
||||
#define IO_POWERSTATE_TOLERANCE ((UINT8)0x02) /*平台电源报警容忍周期数,容忍3周期,超过2周期报警*/
|
||||
|
||||
/*平台心跳帧信息结构*/
|
||||
typedef struct S_PlatHeartDataStruct
|
||||
@@ -100,7 +101,14 @@ typedef struct S_PlatGPIODataStruct
|
||||
UINT8 ModepowerBState_PUB; /*机柜B系电源插箱中为CPUB供电的24VDC电源模块状态*/
|
||||
}PlatGPIODataStruct;
|
||||
|
||||
|
||||
/*平台发送的电源采集状态容忍同步数据*/
|
||||
typedef struct S_PlatGPIOToleranceData
|
||||
{
|
||||
UINT32 powerANode_TolCyc; /*A系电源插箱的故障容忍起始周期*/
|
||||
UINT32 powerBNode_TolCyc; /*B系电源插箱的故障容忍起始周期*/
|
||||
UINT32 powerAMode_TolCyc; /*A系电源模块的故障容忍起始周期*/
|
||||
UINT32 powerBMode_TolCyc; /*B系电源模块的故障容忍起始周期*/
|
||||
}PlatGPIOToleranceDataStruct;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -109,6 +109,8 @@
|
||||
#define EFUNC_ROUTE_FIRST_LOG_UNLOCK ((UINT8)0x50) /*函数:RouteFirstLogSecAutoUnlockProcess进路第一逻辑区段自动解锁检查*/
|
||||
#define EFUNC_SWITCHTESTLOGIC ((UINT8)0x80U) /*函数:SetSwitchTestLogicManage道岔定反位测试*/
|
||||
#define EFUNC_OVERLAP_VALIDMASK_CHECK ((UINT8)0x4A) /*函数:OverlapValidMaskCheck 计算保护区段有效码位检查*/
|
||||
#define EFUNC_ROUTE_LOCK_DRIVE_SWITCH ((UINT8)0xD2) /*RouteLockDriveSwitch 锁闭道岔*/
|
||||
#define EFUNC_ROUTE_COUPLINK_SET ((UINT8)0xD7) /*SetCouplinkRouteLogicManage 办理联挂进路逻辑管理*/
|
||||
|
||||
/*车辆段联锁逻辑检查*/
|
||||
#define EFUNC_SET_LEAD_ROUTE_CHECK ((UINT8)0x4B) /*办理引导进路检查*/
|
||||
@@ -135,7 +137,6 @@
|
||||
#define EFUNC_CLD_CANCEL_D_TRAIN_ROUTE ((UINT8)0x66) /*取消进路调车*/
|
||||
#define EFUNC_CLD_CLOSE_GARAGEDOOR ((UINT8)0x67) /*关闭车库门*/
|
||||
#define EFUNC_CLD_CHECK_GARAGEDOOR_CLOSE ((UINT8)0xc9) /*车库门关闭条件检查(RC模式下)*/
|
||||
#define EFUNC_CHECK_DIAOCHE_ROUTE_ZRJ ((UINT8)0x68) /* CheckDiaoCheRouteZRJFeasibility 检查调车进路总人解的可行性*/
|
||||
#define EFUNC_CHECK_OPEN_L_ERR_CLD ((UINT8)0x69) /*OpenLTrainRouteErrP*/
|
||||
#define EFUNC_CHECK_OPEN_D_ERR_CLD ((UINT8)0x6a)
|
||||
#define EFUNC_KEEP_L_ERR_CLD ((UINT8)0x6b)
|
||||
@@ -178,6 +179,8 @@
|
||||
#define EFUNC_LOGSEC_LAST_SECLOCK ((UINT8)0x92) /* CheckLogRouteLogSecLastSecLock */
|
||||
|
||||
#define EFUNC_ROUTE_ZHONGTUZHEFAN_UNLOCK ((UINT8)0x94) /* CheckRouteZhefanJiesuo */
|
||||
#define EFUNC_PART_ROUTE_CMD_PROC ((UINT8)0x95) /*RoutePartApplyLogicManage(正线/试车线部分进路命令处理)*/
|
||||
#define EFUNC_PART_ROUTE_CMD_PROC_CLD ((UINT8)0x96) /*RoutePartApplyLogicManageCLD(场段部分进路命令处理)*/
|
||||
|
||||
/*逻辑进路相关报警函数*/
|
||||
#define EFUNC_LogRouteOpenManage ((UINT8)0xC1) /*EFUNC_LogRouteOpenManage逻辑进路信号开放处理*/
|
||||
@@ -210,6 +213,13 @@
|
||||
|
||||
#define EFUNC_FIRSTLEAVE_LOGSEC_CHECK ((UINT8)0xD1) /*离去逻辑区段检查RouteLeaveLogSecCheck*/
|
||||
|
||||
#define EFUNC_OVERLAP_ZHAOCHA_CHECK ((UINT8)0xD3) /*保护区段照查条件检查*/
|
||||
|
||||
#define EFUNC_PARSE_LOCAL_CI2RC_DATA ((UINT8)0xD4U) /*函数:ParseCiToLocalRcDataFrame*/
|
||||
#define EFUNC_PARSE_LOCAL_RC2CI_DATA ((UINT8)0xD5U) /*函数:ParseRcToLocalCiDataFrame*/
|
||||
#define EFUNC_PARSE_LOCAL_CI2CI_DATA ((UINT8)0xD6U) /*函数:ParseCiToCiDataFrame*/
|
||||
#define EFUNC_PARSE_LOCAL_OC2CI_DATA ((UINT8)0xD7U) /*函数:ParseOcToCiDataFrame*/
|
||||
|
||||
|
||||
/*************************************************分界线******************************************************************************/
|
||||
/*************************************************分界线******************************************************************************/
|
||||
@@ -230,6 +240,8 @@
|
||||
#define ETYPE_ROUTE_APPLY_SWITCH_CHECK ((UINT8)0x0b) /*进路办理道岔状态检查*/
|
||||
#define ETYPE_ROUTE_XUANPAI_OVERTIME ((UINT8)0x10) /*进路选排超时*/
|
||||
#define ETYPE_GROUP_AUTO_ROUTE_STATE ((UINT8)0x16) /*组合自动进路*/
|
||||
#define ETYPE_ROUTE_APPLY_SWITCH_MOVE ((UINT8)0xA4) /*进路道岔单操中*/
|
||||
#define ETYPE_COUPLINK_ROUTE_IDLE ((UINT8)0xA5) /*联挂进路内无被联挂车*/
|
||||
|
||||
|
||||
#define ETYPE_COMM_WITH_VOBC ((UINT8)0x11) /*与VOBC通信*/
|
||||
@@ -240,6 +252,8 @@
|
||||
#define ETYPE_COMM_WITH_PSC ((UINT8)0x15) /*CI与PSC通信*/
|
||||
|
||||
#define ETYPE_COMM_WITH_TMC ((UINT8)0x17) /*与TMC通信*/
|
||||
#define ETYPE_COMM_WITH_RC ((UINT8)0x18U) /*与RC通信*/
|
||||
#define ETYPE_COMM_WITH_OC ((UINT8)0x19U) /*与OC通信*/
|
||||
|
||||
/* 信号机故障类型编码 (UINT8)0x21-(UINT8)0x3f */
|
||||
/* 设备类型 CI_DEVICE_TYPE_SIGNAL */
|
||||
@@ -293,6 +307,7 @@
|
||||
/*保护区段类型*/
|
||||
#define ETYPE_OVERLAP_LABORUNLOCK_FAIL ((UINT8)0x51U) /*保护区段人工锁闭条件不满足*/
|
||||
#define ETYPE_OVERLAP_RES_CHECK_FAIL ((UINT8)0x52U) /*保护区段资源检查条件不满足*/
|
||||
#define ETYPE_OVERLAP_LABORUNLOCK_STATE ((UINT8)0x53U) /*保护区段人工解锁状态不满足*/
|
||||
|
||||
/* 道岔类型编码 (UINT8)0x61-(UINT8)0x7f */
|
||||
/* 设备类型 CI_DEVICE_TYPE_SWITCH */
|
||||
@@ -313,6 +328,7 @@
|
||||
#define ETYPE_CANCLE_ZHAOCHA ((UINT8)0x82) /*取消照查继电器*/
|
||||
#define ETYPE_ZHAOCHA_ROUTE_OVERTIME ((UINT8)0x83) /*进路照查超时*/
|
||||
#define ETYPE_JKJ_WORK ((UINT8)0x84) /*应急盘有效*/
|
||||
#define ETYPE_ZHAOCHA_OVERLAP_OVERTIME ((UINT8)0x86) /*保护区段照查超时*/
|
||||
|
||||
/* 其他联锁条件检查相关故障类型编码 (UINT8)0x91-(UINT8)0x9f */
|
||||
/* 设备类型
|
||||
@@ -379,6 +395,16 @@
|
||||
#define ETYPE_LOGSEC_XIANSU_STATE ((UINT8)0xC5) /*逻辑区段限速设置*/
|
||||
#define ETYPE_LOGSEC_FIRSTLOCK_STATE ((UINT8)0xC6) /*逻辑区段为第一个锁闭区段检查*/
|
||||
#define ETYPE_LOGSEC_CBTC_PROPERTY ((UINT8)0xC7) /*逻辑区段CBTC属性检查*/
|
||||
#define ETYPE_LOGSEC_CONTINUOUS ((UINT8)0xC8) /*逻辑区段连续性检查*/
|
||||
|
||||
/*动态路径故障类型*/
|
||||
#define ETYPE_PART_ROUTE_RES ((UINT8)0xD0) /*动态路径资源检查*/
|
||||
#define ETYPE_PART_ROUTE_MATCH_ROUTE ((UINT8)0xD1) /*动态路径匹配进路检查*/
|
||||
#define ETYPE_PART_ROUTE_SCREEN ((UINT8)0xD2) /*动态路径列车筛选检查*/
|
||||
#define ETYPE_PART_ROUTE_REPEAT ((UINT8)0xD3) /*动态路径重复办理检查*/
|
||||
#define ETYPE_PART_ROUTE_SEC_ATTR ((UINT8)0xD4) /*动态路径区段属性检查*/
|
||||
#define ETYPE_PART_ROUTE_TRAIN_COMM ((UINT8)0xD5) /*动态路径列车通信状态检查*/
|
||||
#define ETYPE_PART_ROUTE_TRAIN_POS ((UINT8)0xD6) /*动态路径列车位置检查*/
|
||||
|
||||
/* 系统故障 */
|
||||
/* 设备类型 EFUNC_LOGIC_MANAGE_SYETEM */
|
||||
|
||||
@@ -662,4 +662,55 @@ UINT8 CheckEsbBelSendRange(const UINT16 wCheckEsbId)
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定ID紧急停车按钮关联的同站紧急按钮数量
|
||||
* 参数说明:const UINT16 esbId 紧急停车按钮ID
|
||||
* 返 回 值:同站紧急按钮数量
|
||||
* Created By LQ 2025.12.30
|
||||
*/
|
||||
UINT8 GetEsbRelOnePlatEsbNum(const UINT16 esbId)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
UINT8 reVal = 0U;
|
||||
|
||||
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
|
||||
|
||||
if (ESB_SUM_MAX > bufIndex)
|
||||
{
|
||||
reVal = EsbConfigDataStru[bufIndex].RelOnePlatEsbNum;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*返回0*/
|
||||
}
|
||||
|
||||
return reVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定ID紧急停车按钮关联的同站紧急按钮ID数组
|
||||
* 参数说明:const UINT16 esbId 紧急停车按钮ID
|
||||
* 返 回 值:NULL 获取数据失败
|
||||
* 其它 同站紧急按钮ID数组
|
||||
* Created By LQ 2025.12.30
|
||||
*/
|
||||
UINT16* GetEsbRelOnePlatEsbId(const UINT16 esbId)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
UINT16* reVal = NULL;
|
||||
|
||||
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
|
||||
|
||||
if (ESB_SUM_MAX > bufIndex)
|
||||
{
|
||||
reVal = EsbConfigDataStru[bufIndex].RelOnePlatEsbId;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*返回NULL*/
|
||||
}
|
||||
|
||||
return reVal;
|
||||
}
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "CommonTypes.h"
|
||||
#include "../System/CiSystemDefine.h"
|
||||
#include "../System/SystemParameterManage.h"
|
||||
#include "dquStructInit.h"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -50,6 +51,8 @@ typedef struct S_EsbConfigDataStruct
|
||||
UINT16 EsbCutoffBuzzRelayId; /*切除蜂鸣器报警继电器ID*/
|
||||
UINT8 ConfigAtsCiEssSteadyMask; /*是否配置了ATS-CI稳灯状态码位0x55 配置;0xaa未配置*/
|
||||
UINT8 ConfigAtsCiEssFlashMask; /*是否配置了ATS-CI闪灯状态码位0x55 配置;0xaa未配置*/
|
||||
UINT8 RelOnePlatEsbNum; /*关联同站ESB数量*/
|
||||
UINT16 RelOnePlatEsbId[ESB_PROTECT_LINK_NUM]; /*关联同站ESB ID数组*/
|
||||
} EsbConfigDataStruct;
|
||||
|
||||
/*******************************全局变量声明*******************************/
|
||||
@@ -293,6 +296,23 @@ UINT16 GetEsbCutoffBuzzRelayId(const UINT16 esbId);
|
||||
*/
|
||||
UINT8 CheckEsbBelSendRange(const UINT16 wCheckEsbId);
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定ID紧急停车按钮关联的同站紧急按钮数量
|
||||
* 参数说明:const UINT16 esbId 紧急停车按钮ID
|
||||
* 返 回 值:同站紧急按钮数量
|
||||
* Created By LQ 2025.12.30
|
||||
*/
|
||||
UINT8 GetEsbRelOnePlatEsbNum(const UINT16 esbId);
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定ID紧急停车按钮关联的同站紧急按钮ID数组
|
||||
* 参数说明:const UINT16 esbId 紧急停车按钮ID
|
||||
* 返 回 值:NULL 获取数据失败
|
||||
* 其它 同站紧急按钮ID数组
|
||||
* Created By LQ 2025.12.30
|
||||
*/
|
||||
UINT16* GetEsbRelOnePlatEsbId(const UINT16 esbId);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -160,12 +160,19 @@ UINT8 EsbDataManageInit(void)
|
||||
EsbDataStru[esbId].CutStatus = ESB_CUT_NO; /*ESB旁路未按下*/
|
||||
EsbDataStru[esbId].EsbRelateRelayDriveState = ESB_PEPUP_ESSUP_INITION_STA; /*PEP和ESS都无效*/
|
||||
EsbDataStru[esbId].EsbErrorFlag = ESB_ERROR_FLAG_NO; /*自复式ESB未故障*/
|
||||
EsbDataStru[esbId].EsbRelayDownState = ESB_RELAY_ERROR_DOWN_YES; /*紧急关闭按钮采集继电器落下状态初始化为通信异常落下*/
|
||||
EsbDataStru[esbId].CancelEsbErrorFlag = ESB_ERROR_FLAG_NO; /*自复式取消ESB未故障*/
|
||||
EsbDataStru[esbId].EsbPressCycNum = 0U; /*紧急关闭按钮按下周期*/
|
||||
EsbDataStru[esbId].CancelEsbPressCycNum = 0U; /*取消紧急关闭按钮按下周期*/
|
||||
EsbDataStru[esbId].CancelEsbErrTriggerPressCycNum = 0U; /*取消紧急关闭按钮误触发按下周期*/
|
||||
EsbDataStru[esbId].CancelEsbValidFlag = ESB_CANCEL_VALID_NO; /*取消紧急关闭按钮有效标志*/
|
||||
EsbDataStru[esbId].CancelEsbRelayDownState = ESB_RELAY_ERROR_DOWN_YES; /*取消紧急关闭按钮采集继电器落下状态初始化为通信异常落下*/
|
||||
EsbDataStru[esbId].EsbCutPressCycNum = 0U; /*紧急关闭旁路按钮按下周期*/
|
||||
EsbDataStru[esbId].EsbCutErrTriggerPressCycNum = 0U; /*紧急关闭旁路按钮误触发按下周期*/
|
||||
EsbDataStru[esbId].EsbCutErrorFlag = ESB_ERROR_FLAG_NO; /*紧急关闭旁路按钮未故障*/
|
||||
EsbDataStru[esbId].EsbCutRelayDownState = ESB_RELAY_ERROR_DOWN_YES; /*紧急关闭旁路按钮采集继电器落下状态初始化为通信异常落下*/
|
||||
EsbDataStru[esbId].cOnePlatEsbState = ESB_STATE_VALID_NO; /*初始化同站紧急按钮未激活*/
|
||||
EsbDataStru[esbId].cOnePlatEsbCutState = ESB_CUT_NO; /*初始化同站紧急旁路按钮未激活*/
|
||||
}
|
||||
rtn = CI_SUCCESS;
|
||||
return rtn;
|
||||
@@ -797,4 +804,573 @@ UINT8 GetCancelEsbRelayDownState(const UINT16 esbId)
|
||||
}
|
||||
|
||||
return reVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:设置紧急关闭旁路按钮按下周期
|
||||
* 输入参数:const UINT16 esbId Esb ID
|
||||
* const UINT32 startCycNum 周期号
|
||||
* 输出参数:无
|
||||
* 返 回 值:无
|
||||
* Cretaed By LQ 2025.03.28
|
||||
*/
|
||||
void SetEsbCutPressCycNum(const UINT16 esbId, const UINT32 startCycNum)
|
||||
{
|
||||
UINT16 bufIndex = 0U;
|
||||
|
||||
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
|
||||
|
||||
if (ESB_SUM_MAX > bufIndex)
|
||||
{
|
||||
EsbDataStru[bufIndex].EsbCutPressCycNum = startCycNum; /*紧急旁路按钮正常按下起始周期*/
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:获取紧急关闭旁路按钮按下周期
|
||||
* 输入参数:const UINT16 esbId Esb ID
|
||||
* 输出参数:无
|
||||
* 返 回 值:紧急关闭旁路按钮按下周期
|
||||
* Cretaed By LQ 2025.03.28
|
||||
*/
|
||||
UINT32 GetEsbCutPressCycNum(const UINT16 esbId)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT32 reVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
|
||||
|
||||
if (ESB_SUM_MAX > bufIndex)
|
||||
{
|
||||
reVal = EsbDataStru[bufIndex].EsbCutPressCycNum;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*下标非法,返回0*/
|
||||
}
|
||||
|
||||
return reVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:设置紧急关闭旁路按钮误触发按下周期
|
||||
* 输入参数:const UINT16 esbId Esb ID
|
||||
* const UINT32 startCycNum 周期号
|
||||
* 输出参数:无
|
||||
* 返 回 值:无
|
||||
* Cretaed By LQ 2025.03.28
|
||||
*/
|
||||
void SetEsbCutErrTrigPressCycNum(const UINT16 esbId, const UINT32 startCycNum)
|
||||
{
|
||||
UINT16 bufIndex = 0U;
|
||||
|
||||
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
|
||||
|
||||
if (ESB_SUM_MAX > bufIndex)
|
||||
{
|
||||
EsbDataStru[bufIndex].EsbCutErrTriggerPressCycNum = startCycNum; /*紧急旁路按钮误触发按下周期*/
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:获取紧急关闭旁路按钮误触发按下周期
|
||||
* 输入参数:const UINT16 esbId Esb ID
|
||||
* 输出参数:无
|
||||
* 返 回 值:紧急关闭旁路按钮误触发按下周期
|
||||
* Cretaed By LQ 2025.03.28
|
||||
*/
|
||||
UINT32 GetEsbCutErrTrigPressCycNum(const UINT16 esbId)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT32 reVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
|
||||
|
||||
if (ESB_SUM_MAX > bufIndex)
|
||||
{
|
||||
reVal = EsbDataStru[bufIndex].EsbCutErrTriggerPressCycNum;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*下标非法,返回0*/
|
||||
}
|
||||
|
||||
return reVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:设置紧急关闭旁路按钮采集继电器落下状态
|
||||
* 参数说明:const UINT16 esbId 紧急停车按钮ID
|
||||
* const UINT8 cRelayDownState 继电器落下状态
|
||||
* 返回值:无
|
||||
* Created By LQ 2025.03.28
|
||||
*/
|
||||
void SetEsbCutRelayDownState(const UINT16 esbId, const UINT8 cRelayDownState)
|
||||
{
|
||||
UINT16 bufIndex = 0U;
|
||||
|
||||
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
|
||||
|
||||
if (ESB_SUM_MAX > bufIndex)
|
||||
{
|
||||
if ((ESB_RELAY_ERROR_DOWN_NO == cRelayDownState) || (ESB_RELAY_ERROR_DOWN_YES == cRelayDownState))
|
||||
{
|
||||
EsbDataStru[bufIndex].EsbCutRelayDownState = cRelayDownState;
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*设置状态不合法,不进项状态更新*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*数组下标不合法,不执行状态更新*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取紧急关闭旁路按钮采集继电器落下状态
|
||||
* 参数说明: const UINT16 esbId 紧急停车按钮ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* 0x55: 正常落下
|
||||
* 0xaa: 通信异常落下
|
||||
* Created By LQ 2025.03.28
|
||||
*/
|
||||
UINT8 GetEsbCutRelayDownState(const UINT16 esbId)
|
||||
{
|
||||
UINT16 bufIndex = 0U;
|
||||
UINT8 reVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
|
||||
|
||||
if (ESB_SUM_MAX > bufIndex)
|
||||
{
|
||||
reVal = EsbDataStru[bufIndex].EsbCutRelayDownState;
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*数组下标不合法,不执行状态更新*/
|
||||
}
|
||||
|
||||
return reVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID紧急关闭旁路按钮故障标志
|
||||
* 参数说明:const UINT16 esbId, 紧急关闭按钮ID
|
||||
* const UINT8 cEsbCutErrFlag 紧急关闭旁路按钮故障标志
|
||||
* 返回值:无
|
||||
* Created By LQ 2025.03.28
|
||||
*/
|
||||
void SetEsbCutErrFlag(const UINT16 esbId, const UINT8 cEsbCutErrFlag)
|
||||
{
|
||||
UINT16 bufIndex = 0U;
|
||||
|
||||
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
|
||||
|
||||
if (ESB_SUM_MAX > bufIndex)
|
||||
{
|
||||
if ((ESB_ERROR_FLAG_NO == cEsbCutErrFlag) || (ESB_ERROR_FLAG_YES == cEsbCutErrFlag))
|
||||
{
|
||||
EsbDataStru[bufIndex].EsbCutErrorFlag = cEsbCutErrFlag;
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*设置状态不合法,不进项状态更新*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*数组下标不合法,不执行状态更新*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID紧急关闭旁路按钮故障标志
|
||||
* 参数说明: const UINT16 esbId, 紧急关闭按钮ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* 0x55: 未故障
|
||||
* 0xaa: 故障
|
||||
* Created By LQ 2025.03.28
|
||||
*/
|
||||
UINT8 GetEsbCutErrFlag(const UINT16 esbId)
|
||||
{
|
||||
UINT16 bufIndex = 0U;
|
||||
UINT8 reVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
|
||||
|
||||
if (bufIndex < ESB_SUM_MAX)
|
||||
{
|
||||
reVal = EsbDataStru[bufIndex].EsbCutErrorFlag;
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*数组下标不合法,不执行状态更新*/
|
||||
}
|
||||
return reVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:设置紧急停车按钮采集继电器落下状态
|
||||
* 参数说明:const UINT16 esbId 紧急停车按钮ID
|
||||
* const UINT8 cRelayDownState 继电器落下状态
|
||||
* 返回值:无
|
||||
* Created By LQ 2025.04.01
|
||||
*/
|
||||
void SetEsbRelayDownState(const UINT16 esbId, const UINT8 cRelayDownState)
|
||||
{
|
||||
UINT16 bufIndex = 0U;
|
||||
|
||||
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
|
||||
|
||||
if (ESB_SUM_MAX > bufIndex)
|
||||
{
|
||||
if ((ESB_RELAY_ERROR_DOWN_NO == cRelayDownState) || (ESB_RELAY_ERROR_DOWN_YES == cRelayDownState))
|
||||
{
|
||||
EsbDataStru[bufIndex].EsbRelayDownState = cRelayDownState;
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*设置状态不合法,不进项状态更新*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*数组下标不合法,不执行状态更新*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取紧急停车按钮采集继电器落下状态
|
||||
* 参数说明: const UINT16 esbId, 紧急停车按钮ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* 0x55: 正常落下
|
||||
* 0xaa: 通信异常落下
|
||||
* Created By LQ 2025.04.01
|
||||
*/
|
||||
UINT8 GetEsbRelayDownState(const UINT16 esbId)
|
||||
{
|
||||
UINT16 bufIndex = 0U;
|
||||
UINT8 reVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
|
||||
|
||||
if (ESB_SUM_MAX > bufIndex)
|
||||
{
|
||||
reVal = EsbDataStru[bufIndex].EsbRelayDownState;
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*数组下标不合法,不执行状态更新*/
|
||||
}
|
||||
|
||||
return reVal;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID紧急停车按钮状态(融合了旁路状态)
|
||||
* 参数说明: const UINT16 esbId, 紧急停车按钮ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 紧急停车按钮状态
|
||||
*/
|
||||
UINT8 GetEsbMergeState(const UINT16 esbId)
|
||||
{
|
||||
|
||||
UINT8 reVal = CI_ERROR;
|
||||
UINT8 chEsbState = 0U;
|
||||
UINT8 chEsbCutState = 0U;
|
||||
|
||||
|
||||
chEsbState = GetEsbState(esbId);
|
||||
chEsbCutState = GetEsbCutState(esbId);
|
||||
if (ESB_CUT_YES == chEsbCutState)
|
||||
{
|
||||
reVal = ESB_STATE_VALID_NO;/*未按下*/
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ESB_STATE_VALID_NO == chEsbState)
|
||||
{
|
||||
reVal = ESB_STATE_VALID_NO;/*未按下*/
|
||||
}
|
||||
else
|
||||
{
|
||||
reVal = ESB_STATE_VALID_YES;
|
||||
}
|
||||
}
|
||||
|
||||
return reVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定ID紧急按钮同站紧急按钮激活状态
|
||||
* 参数说明:const UINT16 esbId 紧急停车按钮ID
|
||||
* 返 回 值:0 获取数据失败
|
||||
* 0x55 紧急未激活
|
||||
* 0xAA 紧急激活
|
||||
* Created By LQ 2025.12.29
|
||||
*/
|
||||
UINT8 GetOnePlatEsbState(const UINT16 esbId)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
UINT8 reVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
|
||||
|
||||
if (ESB_SUM_MAX > bufIndex)
|
||||
{
|
||||
reVal = EsbDataStru[bufIndex].cOnePlatEsbState;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*返回失败*/
|
||||
}
|
||||
|
||||
return reVal;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID紧急按钮同站紧急按钮激活状态
|
||||
* 参数说明:const UINT16 esbId 紧急按钮ID
|
||||
* const UINT8 esbState 紧急按钮状态
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.12.29
|
||||
*/
|
||||
void SetOnePlatEsbState(const UINT16 esbId, const UINT8 esbState)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
|
||||
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
|
||||
|
||||
if (ESB_SUM_MAX > bufIndex)
|
||||
{
|
||||
if ((ESB_STATE_VALID_NO == esbState) || (ESB_STATE_VALID_YES == esbState))
|
||||
{
|
||||
EsbDataStru[bufIndex].cOnePlatEsbState = esbState; /*同站紧急按钮激活状态*/
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定ID紧急按钮同站紧急旁路按钮激活状态
|
||||
* 参数说明:const UINT16 esbId 紧急停车按钮ID
|
||||
* 返 回 值:0 获取数据失败
|
||||
* 0x55 旁路未激活
|
||||
* 0xAA 旁路激活
|
||||
* Created By LQ 2025.12.29
|
||||
*/
|
||||
UINT8 GetOnePlatEsbCutState(const UINT16 esbId)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
UINT8 reVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
|
||||
|
||||
if (ESB_SUM_MAX > bufIndex)
|
||||
{
|
||||
reVal = EsbDataStru[bufIndex].cOnePlatEsbCutState;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*返回失败*/
|
||||
}
|
||||
|
||||
return reVal;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID紧急按钮同站紧急旁路按钮激活状态
|
||||
* 参数说明:const UINT16 esbId 紧急按钮ID
|
||||
* const UINT8 esbCutState 紧急旁路按钮状态
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.12.29
|
||||
*/
|
||||
void SetOnePlatEsbCutState(const UINT16 esbId, const UINT8 esbCutState)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
|
||||
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
|
||||
|
||||
if (ESB_SUM_MAX > bufIndex)
|
||||
{
|
||||
if ((ESB_CUT_NO == esbCutState) || (ESB_CUT_YES == esbCutState))
|
||||
{
|
||||
EsbDataStru[bufIndex].cOnePlatEsbCutState = esbCutState; /*同站紧急按钮激活状态*/
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:清除同站紧急按钮及旁路按钮激活状态
|
||||
* 参数说明:无
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.12.30
|
||||
*/
|
||||
void ClearOnePlatEsbAndCutState(void)
|
||||
{
|
||||
UINT16 wEsbTotalSum = 0U; /*ESB总数*/
|
||||
UINT16 ii = 0U;
|
||||
UINT16 wEsbId = 0U; /*ESB ID*/
|
||||
|
||||
wEsbTotalSum = GetTotalEsbCurNum();
|
||||
|
||||
/*重置所有紧急按钮的同站紧急按钮及旁路按钮为未激活状态*/
|
||||
for (ii = 0U; ii < wEsbTotalSum; ii++)
|
||||
{
|
||||
wEsbId = GetEsbId(ii);
|
||||
SetOnePlatEsbState(wEsbId, ESB_STATE_VALID_NO);
|
||||
SetOnePlatEsbCutState(wEsbId, ESB_CUT_NO);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID紧急按钮关联的其它同站紧急按钮激活状态
|
||||
* 参数说明:const UINT16 esbId 紧急按钮ID
|
||||
* const UINT8 esbState 紧急按钮状态
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.12.29
|
||||
*/
|
||||
void SetRelOtherOnePlatEsbState(const UINT16 esbId, const UINT8 esbState)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
UINT8 cRelOnePlatEsbNum = 0U; /*关联的其它同站紧急按钮数量*/
|
||||
UINT16* pRelOnePlatEsbId = NULL; /*关联的其它同站紧急按钮ID*/
|
||||
UINT8 ii = 0U;
|
||||
|
||||
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
|
||||
cRelOnePlatEsbNum = GetEsbRelOnePlatEsbNum(esbId);
|
||||
pRelOnePlatEsbId = GetEsbRelOnePlatEsbId(esbId);
|
||||
|
||||
if ((ESB_SUM_MAX > bufIndex) && (0U < cRelOnePlatEsbNum) && (NULL != pRelOnePlatEsbId))
|
||||
{
|
||||
if ((ESB_STATE_VALID_NO == esbState) || (ESB_STATE_VALID_YES == esbState))
|
||||
{
|
||||
for (ii = 0U; ii < cRelOnePlatEsbNum; ii++)
|
||||
{
|
||||
SetOnePlatEsbState(pRelOnePlatEsbId[ii], esbState);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID紧急按钮关联的其它同站紧急旁路按钮激活状态
|
||||
* 参数说明:const UINT16 esbId 紧急按钮ID
|
||||
* const UINT8 esbCutState 紧急旁路按钮状态
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.12.29
|
||||
*/
|
||||
void SetRelOtherOnePlatEsbCutState(const UINT16 esbId, const UINT8 esbCutState)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
UINT8 cRelOnePlatEsbNum = 0U; /*关联的其它同站紧急按钮数量*/
|
||||
UINT16* pRelOnePlatEsbId = NULL; /*关联的其它同站紧急按钮ID*/
|
||||
UINT8 ii = 0U;
|
||||
|
||||
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
|
||||
cRelOnePlatEsbNum = GetEsbRelOnePlatEsbNum(esbId);
|
||||
pRelOnePlatEsbId = GetEsbRelOnePlatEsbId(esbId);
|
||||
|
||||
if ((ESB_SUM_MAX > bufIndex) && (0U < cRelOnePlatEsbNum) && (NULL != pRelOnePlatEsbId))
|
||||
{
|
||||
if ((ESB_CUT_NO == esbCutState) || (ESB_CUT_YES == esbCutState))
|
||||
{
|
||||
for (ii = 0U; ii < cRelOnePlatEsbNum; ii++)
|
||||
{
|
||||
SetOnePlatEsbCutState(pRelOnePlatEsbId[ii], esbCutState);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:检查指定ID紧急按钮关联的其它同站紧急按钮状态
|
||||
* 参数说明:const UINT16 esbId 紧急按钮ID
|
||||
* 返 回 值:1 紧急无效或旁路有效
|
||||
* 0 紧急有效
|
||||
* Created By LQ 2025.12.29
|
||||
*/
|
||||
UINT8 CheckRelOtherOnePlatEsbState(const UINT16 esbId)
|
||||
{
|
||||
UINT8 cRetVal = CI_ERROR;
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
UINT8 cRelOnePlatEsbNum = 0U; /*关联的其它同站紧急按钮数量*/
|
||||
UINT16* pRelOnePlatEsbId = NULL; /*关联的其它同站紧急按钮ID*/
|
||||
UINT8 ii = 0U;
|
||||
UINT8 cEsbState = 0U; /*紧急按钮状态*/
|
||||
UINT8 cEsbCutState = 0U; /*紧急按钮旁路状态*/
|
||||
|
||||
bufIndex = GetEsbConfigBufIndex(esbId); /*获取数组下标*/
|
||||
cRelOnePlatEsbNum = GetEsbRelOnePlatEsbNum(esbId);
|
||||
pRelOnePlatEsbId = GetEsbRelOnePlatEsbId(esbId);
|
||||
|
||||
if ((ESB_SUM_MAX > bufIndex) && (NULL != pRelOnePlatEsbId))
|
||||
{
|
||||
cRetVal = CI_SUCCESS;
|
||||
for (ii = 0U; ii < cRelOnePlatEsbNum; ii++)
|
||||
{
|
||||
cEsbState = GetEsbState(pRelOnePlatEsbId[ii]);
|
||||
cEsbCutState = GetEsbCutState(pRelOnePlatEsbId[ii]);
|
||||
|
||||
if ((ESB_STATE_VALID_NO == cEsbState) || (ESB_CUT_YES == cEsbCutState))
|
||||
{
|
||||
/*继续检查*/
|
||||
}
|
||||
else
|
||||
{
|
||||
cRetVal = CI_ERROR; /*存在一个ESB紧急有效且旁路无效,返回0*/
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cRetVal = CI_ERROR; /*入参非法,返回0*/
|
||||
}
|
||||
|
||||
return cRetVal;
|
||||
}
|
||||
@@ -38,12 +38,19 @@ typedef struct S_EsbDataStruct
|
||||
UINT8 EssSteadyState; /*ESS稳灯状态(用于虚拟联锁向ATS反馈)--0x55 需要设置稳灯;0xaa不需要设置稳灯*/
|
||||
UINT8 EssFlashState; /*ESS闪灯状态(用于虚拟联锁向ATS反馈)--0x55 需要设置闪灯;0xaa不需要设置闪灯*/
|
||||
UINT8 EsbErrorFlag; /*自复式紧急停车按钮故障标志,0x55未故障,0xaa故障*/
|
||||
UINT8 EsbRelayDownState; /*紧急关闭按钮采集继电器落下状态,0x55:正常采集落下,0xaa:通信异常落下*/
|
||||
UINT8 CancelEsbErrorFlag; /*自复式取消紧急停车按钮故障标志,0x55未故障,0xaa故障*/
|
||||
UINT32 EsbPressCycNum; /*紧急关闭按钮按下周期*/
|
||||
UINT32 CancelEsbPressCycNum; /*取消紧急关闭按钮正常按下周期*/
|
||||
UINT32 CancelEsbErrTriggerPressCycNum; /*取消紧急关闭按钮误触发按下周期*/
|
||||
UINT8 CancelEsbValidFlag; /*取消紧急关闭按钮有效标志,0x55无效,0xaa有效*/
|
||||
UINT8 CancelEsbRelayDownState; /*取消紧急关闭按钮采集继电器落下状态,0x55:正常采集落下,0xaa:通信异常落下*/
|
||||
UINT32 EsbCutPressCycNum; /*紧急关闭旁路按钮正常按下周期*/
|
||||
UINT32 EsbCutErrTriggerPressCycNum; /*紧急关闭旁路按钮误触发按下周期*/
|
||||
UINT8 EsbCutErrorFlag; /*紧急关闭旁路按钮故障标志,0x55-未故障,0xaa-故障*/
|
||||
UINT8 EsbCutRelayDownState; /*紧急关闭旁路按钮采集继电器落下状态,0x55-正常采集落下,0xaa-通信异常落下*/
|
||||
UINT8 cOnePlatEsbState; /*同站紧急按钮激活状态:0x55-未激活,0xAA-激活*/
|
||||
UINT8 cOnePlatEsbCutState; /*同站紧急旁路按钮激活状态:0x55-未激活,0xAA-激活*/
|
||||
} EsbDataStruct;
|
||||
|
||||
/*******************************全局变量声明*******************************/
|
||||
@@ -310,6 +317,178 @@ void SetCancelEsbRelayDownState(const UINT16 esbId, const UINT8 cRelayDownState)
|
||||
*/
|
||||
UINT8 GetCancelEsbRelayDownState(const UINT16 esbId);
|
||||
|
||||
/*
|
||||
* 功能描述:设置紧急关闭旁路按钮按下周期
|
||||
* 输入参数:const UINT16 esbId Esb ID
|
||||
* const UINT32 startCycNum 周期号
|
||||
* 输出参数:无
|
||||
* 返 回 值:无
|
||||
* Cretaed By LQ 2025.03.28
|
||||
*/
|
||||
void SetEsbCutPressCycNum(const UINT16 esbId, const UINT32 startCycNum);
|
||||
|
||||
/*
|
||||
* 功能描述:获取紧急关闭旁路按钮按下周期
|
||||
* 输入参数:const UINT16 esbId Esb ID
|
||||
* 输出参数:无
|
||||
* 返 回 值:紧急关闭旁路按钮按下周期
|
||||
* Cretaed By LQ 2025.03.28
|
||||
*/
|
||||
UINT32 GetEsbCutPressCycNum(const UINT16 esbId);
|
||||
|
||||
/*
|
||||
* 功能描述:设置紧急关闭旁路按钮误触发按下周期
|
||||
* 输入参数:const UINT16 esbId Esb ID
|
||||
* const UINT32 startCycNum 周期号
|
||||
* 输出参数:无
|
||||
* 返 回 值:无
|
||||
* Cretaed By LQ 2025.03.28
|
||||
*/
|
||||
void SetEsbCutErrTrigPressCycNum(const UINT16 esbId, const UINT32 startCycNum);
|
||||
|
||||
/*
|
||||
* 功能描述:获取紧急关闭旁路按钮误触发按下周期
|
||||
* 输入参数:const UINT16 esbId Esb ID
|
||||
* 输出参数:无
|
||||
* 返 回 值:紧急关闭旁路按钮误触发按下周期
|
||||
* Cretaed By LQ 2025.03.28
|
||||
*/
|
||||
UINT32 GetEsbCutErrTrigPressCycNum(const UINT16 esbId);
|
||||
|
||||
/*
|
||||
* 功能描述:设置紧急关闭旁路按钮采集继电器落下状态
|
||||
* 参数说明:const UINT16 esbId 紧急停车按钮ID
|
||||
* const UINT8 cRelayDownState 继电器落下状态
|
||||
* 返回值:无
|
||||
* Created By LQ 2025.03.28
|
||||
*/
|
||||
void SetEsbCutRelayDownState(const UINT16 esbId, const UINT8 cRelayDownState);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取紧急关闭旁路按钮采集继电器落下状态
|
||||
* 参数说明: const UINT16 esbId 紧急停车按钮ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* 0x55: 正常落下
|
||||
* 0xaa: 通信异常落下
|
||||
* Created By LQ 2025.03.28
|
||||
*/
|
||||
UINT8 GetEsbCutRelayDownState(const UINT16 esbId);
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID紧急关闭旁路按钮故障标志
|
||||
* 参数说明:const UINT16 esbId, 紧急关闭按钮ID
|
||||
* const UINT8 cEsbCutErrFlag 紧急关闭旁路按钮故障标志
|
||||
* 返回值:无
|
||||
*/
|
||||
void SetEsbCutErrFlag(const UINT16 esbId, const UINT8 cEsbCutErrFlag);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID紧急关闭旁路按钮故障标志
|
||||
* 参数说明: const UINT16 esbId, 紧急关闭按钮ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 紧停旁路按钮故障标志
|
||||
*/
|
||||
UINT8 GetEsbCutErrFlag(const UINT16 esbId);
|
||||
|
||||
/*
|
||||
* 功能描述:设置紧急停车按钮采集继电器落下状态
|
||||
* 参数说明:const UINT16 esbId 紧急停车按钮ID
|
||||
* const UINT8 cRelayDownState 继电器落下状态
|
||||
* 返回值:无
|
||||
* Created By LQ 2025.04.01
|
||||
*/
|
||||
void SetEsbRelayDownState(const UINT16 esbId, const UINT8 cRelayDownState);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取紧急停车按钮采集继电器落下状态
|
||||
* 参数说明: const UINT16 esbId, 紧急停车按钮ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* 0x55: 正常落下
|
||||
* 0xaa: 通信异常落下
|
||||
* Created By LQ 2025.04.01
|
||||
*/
|
||||
UINT8 GetEsbRelayDownState(const UINT16 esbId);
|
||||
/*
|
||||
* 功能描述: 获取指定ID紧急停车按钮状态(融合了旁路状态)
|
||||
* 参数说明: const UINT16 esbId, 紧急停车按钮ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 紧急停车按钮状态
|
||||
*/
|
||||
UINT8 GetEsbMergeState(const UINT16 esbId);
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定ID紧急按钮同站紧急按钮激活状态
|
||||
* 参数说明:const UINT16 esbId 紧急停车按钮ID
|
||||
* 返 回 值:0 获取数据失败
|
||||
* 0x55 紧急未激活
|
||||
* 0xAA 紧急激活
|
||||
* Created By LQ 2025.12.29
|
||||
*/
|
||||
UINT8 GetOnePlatEsbState(const UINT16 esbId);
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID紧急按钮同站紧急按钮激活状态
|
||||
* 参数说明:const UINT16 esbId 紧急按钮ID
|
||||
* const UINT8 esbState 紧急按钮状态
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.12.29
|
||||
*/
|
||||
void SetOnePlatEsbState(const UINT16 esbId, const UINT8 esbState);
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定ID紧急按钮同站紧急旁路按钮激活状态
|
||||
* 参数说明:const UINT16 esbId 紧急停车按钮ID
|
||||
* 返 回 值:0 获取数据失败
|
||||
* 0x55 旁路未激活
|
||||
* 0xAA 旁路激活
|
||||
* Created By LQ 2025.12.29
|
||||
*/
|
||||
UINT8 GetOnePlatEsbCutState(const UINT16 esbId);
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID紧急按钮同站紧急旁路按钮激活状态
|
||||
* 参数说明:const UINT16 esbId 紧急按钮ID
|
||||
* const UINT8 esbCutState 紧急旁路按钮状态
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.12.29
|
||||
*/
|
||||
void SetOnePlatEsbCutState(const UINT16 esbId, const UINT8 esbCutState);
|
||||
|
||||
/*
|
||||
* 功能描述:清除同站紧急按钮及旁路按钮激活状态
|
||||
* 参数说明:无
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.12.30
|
||||
*/
|
||||
void ClearOnePlatEsbAndCutState(void);
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID紧急按钮关联的其它同站紧急按钮激活状态
|
||||
* 参数说明:const UINT16 esbId 紧急按钮ID
|
||||
* const UINT8 esbState 紧急按钮状态
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.12.29
|
||||
*/
|
||||
void SetRelOtherOnePlatEsbState(const UINT16 esbId, const UINT8 esbState);
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID紧急按钮关联的其它同站紧急旁路按钮激活状态
|
||||
* 参数说明:const UINT16 esbId 紧急按钮ID
|
||||
* const UINT8 esbCutState 紧急旁路按钮状态
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.12.29
|
||||
*/
|
||||
void SetRelOtherOnePlatEsbCutState(const UINT16 esbId, const UINT8 esbCutState);
|
||||
|
||||
/*
|
||||
* 功能描述:检查指定ID紧急按钮关联的其它同站紧急按钮状态
|
||||
* 参数说明:const UINT16 esbId 紧急按钮ID
|
||||
* 返 回 值:1 紧急无效或旁路有效
|
||||
* 0 紧急有效
|
||||
* Created By LQ 2025.12.29
|
||||
*/
|
||||
UINT8 CheckRelOtherOnePlatEsbState(const UINT16 esbId);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1161,7 +1161,7 @@ void elm_CTEnvelopeTrack(void)
|
||||
}
|
||||
else if ((CI_SUCCESS == funRet) && (1u == relEnvelopeCnt))
|
||||
{
|
||||
/* 只有CT包络才设计B轨UT可追踪功能*/
|
||||
/* 只有CT包络才涉及B轨UT可追踪功能*/
|
||||
elm_DealNoCGFollowUt(relEnvelopeID[0u], trainID[cycle]);
|
||||
|
||||
/** 维护日志--调试级别*/
|
||||
@@ -1277,16 +1277,9 @@ void elm_DealNoCGFollowUt(UINT16 wEnvelopeID,UINT16 wTrainId)
|
||||
const EnvelopeStruct* pEnvelop = NULL;
|
||||
UINT8 chNoCGFollowUtSwitch = 0U;
|
||||
ELM_TrainSafeLocStruct safeLoc = { 0U }; /*列车安全位置*/
|
||||
UINT8 chLinkRelPhySecAGorBGAttr = 0U;/*LINK关联物理区段ABD属性*/
|
||||
UINT8 chEnvelopLinkABGAttr = 0U;/*包络相关LINK关联物理区段ABG属性*/
|
||||
UINT16 wLinkRelatedPhySec = 0U;/*LINK关联物理区段*/
|
||||
UINT8 chPhyLjkFlag = 0U;/*列检库属性*/
|
||||
UINT16 wTrainEnterLjkLinkId = 0U;/*列车进入列检库LINK ID*/
|
||||
UINT32 dwCycNum = 0U;/*当前周期号*/
|
||||
UINT16 wTempTrainID = 0U;/*临时记录列车ID*/
|
||||
UINT8 chTempVirHeadScreenFlag = 0U;/*临时虚拟前筛标志*/
|
||||
UINT8 chTempVirTailScreenFlag = 0U;/*临时虚拟后筛标志*/
|
||||
UINT8 chAgLinkExistRelCgFlag = 0U;/*AG是否存在CG标志*/
|
||||
|
||||
/** 获取列车包络 */
|
||||
pEnvelop = elm_GetEnvelopeInfoPtr(wEnvelopeID);
|
||||
@@ -1323,58 +1316,10 @@ void elm_DealNoCGFollowUt(UINT16 wEnvelopeID,UINT16 wTrainId)
|
||||
{
|
||||
if (0U == errorCode)
|
||||
{
|
||||
chLinkRelPhySecAGorBGAttr = GetLinkRelPhySecAGorBGAttr(safeLoc.endPos.Lnk);
|
||||
chEnvelopLinkABGAttr = GetLinkRelPhySecAGorBGAttr(pEnvelop->endPos.Lnk);
|
||||
wLinkRelatedPhySec = GetLinkRelatedPhySec(pEnvelop->endPos.Lnk);
|
||||
chPhyLjkFlag = GetPhySecLjkFlag(wLinkRelatedPhySec);
|
||||
chAgLinkExistRelCgFlag = GetAgLinkExistRelCgFlag(safeLoc.endPos.Lnk);
|
||||
|
||||
/*包络刷新在后,所以此时虽然安全位置进入AG,但包络可能还没进入*/
|
||||
if ((LINK_REL_PHYSEC_AG == chLinkRelPhySecAGorBGAttr) && (0U == pEnvelop->headTrainID)
|
||||
&& (LINK_REL_PHYSEC_DEFAULT == chEnvelopLinkABGAttr) && (PHYSICAL_SECTION_LJK_NO == chPhyLjkFlag)
|
||||
&& (AGLINK_EXIST_REL_CG_NO == chAgLinkExistRelCgFlag))
|
||||
{
|
||||
/*列车安全车头驶入AG且当前驶入前没有前端可疑且不是从BG过来的车且不存在CG便设置前筛通过标志有效*/
|
||||
SetTrainVirHeadScreenPassFlag(wTrainId,TRAIN_VIR_SCREEN_PASS_FLAG_VALID);
|
||||
SetTrainEnterLjkLinkId(wTrainId, safeLoc.endPos.Lnk);
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*不设置对应标志,安全位置和包络均进入AG维持原来的标志*/
|
||||
}
|
||||
|
||||
chLinkRelPhySecAGorBGAttr = GetLinkRelPhySecAGorBGAttr(safeLoc.startPos.Lnk);
|
||||
chEnvelopLinkABGAttr = GetLinkRelPhySecAGorBGAttr(pEnvelop->startPos.Lnk);
|
||||
wLinkRelatedPhySec = GetLinkRelatedPhySec(pEnvelop->startPos.Lnk);
|
||||
chPhyLjkFlag = GetPhySecLjkFlag(wLinkRelatedPhySec);
|
||||
chAgLinkExistRelCgFlag = GetAgLinkExistRelCgFlag(safeLoc.startPos.Lnk);
|
||||
|
||||
/*包络刷新在后,所以此时虽然安全位置进入AG,但包络可能还没进入*/
|
||||
if ((LINK_REL_PHYSEC_AG == chLinkRelPhySecAGorBGAttr) && (0U == pEnvelop->tailTrainID)
|
||||
&& (LINK_REL_PHYSEC_DEFAULT == chEnvelopLinkABGAttr) && (PHYSICAL_SECTION_LJK_NO == chPhyLjkFlag)
|
||||
&& (AGLINK_EXIST_REL_CG_NO == chAgLinkExistRelCgFlag))
|
||||
{
|
||||
/*列车安全车尾驶入AG且当前驶入前没有后端可疑且不是从BG过来的车且不存在CG便设置后筛通过标志有效*/
|
||||
SetTrainVirTailScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_VALID);
|
||||
SetTrainEnterLjkLinkId(wTrainId, safeLoc.startPos.Lnk);
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*不设置对应标志,安全位置和包络均进入AG维持原来的标志*/
|
||||
}
|
||||
|
||||
wTrainEnterLjkLinkId = GetTrainEnterLjkLinkId(wTrainId);
|
||||
/*列车包络完全进入A轨后,容忍占用到空闲时间,D轨出现计轴区段(道岔位置连通在D轨)采集占用,设置前筛通过标识、后筛通过标识无效*/
|
||||
if ((LINK_REL_PHYSEC_AG == chLinkRelPhySecAGorBGAttr) && (safeLoc.startPos.Lnk == safeLoc.endPos.Lnk)
|
||||
&& (safeLoc.startPos.Lnk == wTrainEnterLjkLinkId) && (AGLINK_EXIST_REL_CG_NO == chAgLinkExistRelCgFlag))
|
||||
{
|
||||
dwCycNum = Get2oo2CurCycleNum();
|
||||
SetTrainFullEnterLjkCycNum(wTrainId, dwCycNum);
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
/*处理AG虚拟筛选标志*/
|
||||
elm_DealAgVirScreenFlag(wEnvelopeID, wTrainId);
|
||||
/*处理BG虚拟筛选标志*/
|
||||
elm_DealBgVirScreenFlag(wEnvelopeID, wTrainId);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1571,4 +1516,183 @@ void elm_VirScreenPassMonitor(void)
|
||||
; /*不需要监督和清除*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 处理AG虚拟筛选标志
|
||||
* @param[in] UINT16 envelopeID 列车包络
|
||||
* @param[in] UINT16 wTrainId 列车ID
|
||||
* @return 无
|
||||
* @note by cgh 20250805
|
||||
*/
|
||||
void elm_DealAgVirScreenFlag(UINT16 wEnvelopeID, UINT16 wTrainId)
|
||||
{
|
||||
UINT8 funRet = CI_ERROR;
|
||||
const EnvelopeStruct* pEnvelop = NULL;
|
||||
ELM_TrainSafeLocStruct safeLoc = { 0U }; /*列车安全位置*/
|
||||
UINT8 chLinkRelPhySecAGorBGAttr = 0U;/*LINK关联物理区段ABG属性*/
|
||||
UINT8 chEnvelopLinkABGAttr = 0U;/*包络相关LINK关联物理区段ABG属性*/
|
||||
UINT16 wLinkRelatedPhySec = 0U;/*LINK关联物理区段*/
|
||||
UINT8 chPhyLjkFlag = 0U;/*列检库属性*/
|
||||
UINT16 wTrainEnterLjkLinkId = 0U;/*列车进入列检库LINK ID*/
|
||||
UINT32 dwCycNum = 0U;/*当前周期号*/
|
||||
UINT8 chAgLinkExistRelCgFlag = 0U;/*AG是否存在CG标志*/
|
||||
|
||||
/** 获取列车包络 */
|
||||
pEnvelop = elm_GetEnvelopeInfoPtr(wEnvelopeID);
|
||||
|
||||
/** 入口参数校验 */
|
||||
if ((NULL != pEnvelop) && (0U < wTrainId) && (LINE_MAX_TRAIN > wTrainId))
|
||||
{
|
||||
funRet = elm_PrepareTrainSafeLoc(wTrainId, &safeLoc);
|
||||
|
||||
if (CI_SUCCESS == funRet)
|
||||
{
|
||||
chLinkRelPhySecAGorBGAttr = GetLinkRelPhySecAGorBGAttr(safeLoc.endPos.Lnk);
|
||||
chEnvelopLinkABGAttr = GetLinkRelPhySecAGorBGAttr(pEnvelop->endPos.Lnk);
|
||||
wLinkRelatedPhySec = GetLinkRelatedPhySec(pEnvelop->endPos.Lnk);
|
||||
chPhyLjkFlag = GetPhySecLjkFlag(wLinkRelatedPhySec);
|
||||
chAgLinkExistRelCgFlag = GetAgLinkExistRelCgFlag(safeLoc.endPos.Lnk);
|
||||
|
||||
/*包络刷新在后,所以此时虽然安全位置进入AG,但包络可能还没进入*/
|
||||
if ((LINK_REL_PHYSEC_AG == chLinkRelPhySecAGorBGAttr) && (0U == pEnvelop->headTrainID)
|
||||
&& (LINK_REL_PHYSEC_DEFAULT == chEnvelopLinkABGAttr) && (PHYSICAL_SECTION_LJK_NO == chPhyLjkFlag)
|
||||
&& (AGLINK_EXIST_REL_CG_NO == chAgLinkExistRelCgFlag))
|
||||
{
|
||||
/*列车安全车头驶入AG且当前驶入前没有前端可疑且不是从BG过来的车且不存在CG便设置前筛通过标志有效*/
|
||||
SetTrainVirHeadScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_VALID);
|
||||
SetTrainEnterLjkLinkId(wTrainId, safeLoc.endPos.Lnk);
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*不设置对应标志,安全位置和包络均进入AG维持原来的标志*/
|
||||
}
|
||||
|
||||
chLinkRelPhySecAGorBGAttr = GetLinkRelPhySecAGorBGAttr(safeLoc.startPos.Lnk);
|
||||
chEnvelopLinkABGAttr = GetLinkRelPhySecAGorBGAttr(pEnvelop->startPos.Lnk);
|
||||
wLinkRelatedPhySec = GetLinkRelatedPhySec(pEnvelop->startPos.Lnk);
|
||||
chPhyLjkFlag = GetPhySecLjkFlag(wLinkRelatedPhySec);
|
||||
chAgLinkExistRelCgFlag = GetAgLinkExistRelCgFlag(safeLoc.startPos.Lnk);
|
||||
|
||||
/*包络刷新在后,所以此时虽然安全位置进入AG,但包络可能还没进入*/
|
||||
if ((LINK_REL_PHYSEC_AG == chLinkRelPhySecAGorBGAttr) && (0U == pEnvelop->tailTrainID)
|
||||
&& (LINK_REL_PHYSEC_DEFAULT == chEnvelopLinkABGAttr) && (PHYSICAL_SECTION_LJK_NO == chPhyLjkFlag)
|
||||
&& (AGLINK_EXIST_REL_CG_NO == chAgLinkExistRelCgFlag))
|
||||
{
|
||||
/*列车安全车尾驶入AG且当前驶入前没有后端可疑且不是从BG过来的车且不存在CG便设置后筛通过标志有效*/
|
||||
SetTrainVirTailScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_VALID);
|
||||
SetTrainEnterLjkLinkId(wTrainId, safeLoc.startPos.Lnk);
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*不设置对应标志,安全位置和包络均进入AG维持原来的标志*/
|
||||
}
|
||||
|
||||
wTrainEnterLjkLinkId = GetTrainEnterLjkLinkId(wTrainId);
|
||||
/*列车包络完全进入A轨后,容忍占用到空闲时间,D轨出现计轴区段(道岔位置连通在D轨)采集占用,设置前筛通过标识、后筛通过标识无效*/
|
||||
if ((LINK_REL_PHYSEC_AG == chLinkRelPhySecAGorBGAttr) && (safeLoc.startPos.Lnk == safeLoc.endPos.Lnk)
|
||||
&& (safeLoc.startPos.Lnk == wTrainEnterLjkLinkId) && (AGLINK_EXIST_REL_CG_NO == chAgLinkExistRelCgFlag))
|
||||
{
|
||||
dwCycNum = Get2oo2CurCycleNum();
|
||||
SetTrainFullEnterLjkCycNum(wTrainId, dwCycNum);
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SetTrainVirHeadScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_INVALID);
|
||||
SetTrainVirTailScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_INVALID);
|
||||
SetTrainFullEnterLjkCycNum(wTrainId, 0U);
|
||||
SetTrainEnterLjkLinkId(wTrainId, 0U);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 处理BG虚拟筛选标志
|
||||
* @param[in] UINT16 envelopeID 列车包络
|
||||
* @param[in] UINT16 wTrainId 列车ID
|
||||
* @return 无
|
||||
* @note by cgh 20250805
|
||||
*/
|
||||
void elm_DealBgVirScreenFlag(UINT16 wEnvelopeID, UINT16 wTrainId)
|
||||
{
|
||||
UINT8 funRet = CI_ERROR;
|
||||
const EnvelopeStruct* pEnvelop = NULL;
|
||||
ELM_TrainSafeLocStruct safeLoc = { 0U }; /*列车安全位置*/
|
||||
UINT8 chLinkRelPhySecAGorBGAttr = 0U;/*LINK关联物理区段ABG属性*/
|
||||
UINT8 chEnvelopLinkABGAttr = 0U;/*包络相关LINK关联物理区段ABG属性*/
|
||||
UINT8 chAgLinkExistRelCgFlag = 0U;/*AG是否存在CG标志*/
|
||||
|
||||
/** 获取列车包络 */
|
||||
pEnvelop = elm_GetEnvelopeInfoPtr(wEnvelopeID);
|
||||
|
||||
/** 入口参数校验 */
|
||||
if ((NULL != pEnvelop) && (0U < wTrainId) && (LINE_MAX_TRAIN > wTrainId))
|
||||
{
|
||||
funRet = elm_PrepareTrainSafeLoc(wTrainId, &safeLoc);
|
||||
|
||||
if (CI_SUCCESS == funRet)
|
||||
{
|
||||
chLinkRelPhySecAGorBGAttr = GetLinkRelPhySecAGorBGAttr(safeLoc.endPos.Lnk);
|
||||
chEnvelopLinkABGAttr = GetLinkRelPhySecAGorBGAttr(pEnvelop->endPos.Lnk);
|
||||
chAgLinkExistRelCgFlag = GetAgLinkExistRelCgFlag(pEnvelop->endPos.Lnk);
|
||||
|
||||
/*包络刷新在后,所以此时虽然安全位置进入BG,但包络可能还没进入*/
|
||||
if ((LINK_REL_PHYSEC_BG == chLinkRelPhySecAGorBGAttr) && (0U == pEnvelop->headTrainID)
|
||||
&& (LINK_REL_PHYSEC_AG == chEnvelopLinkABGAttr) && (AGLINK_EXIST_REL_CG_NO == chAgLinkExistRelCgFlag))
|
||||
{
|
||||
/*列车安全车头驶入BG且当前驶入前没有前端可疑且是从AG过来的车且不存在CG便设置前筛通过标志有效*/
|
||||
SetTrainVirHeadScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_INVALID);
|
||||
SetTrainVirTailScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_INVALID);
|
||||
SetTrainFullEnterLjkCycNum(wTrainId, 0U);
|
||||
SetTrainEnterLjkLinkId(wTrainId, 0U);
|
||||
/*先清除再设置,仅为了逻辑清晰一些*/
|
||||
SetTrainVirHeadScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_VALID);
|
||||
SetTrainEnterLjkLinkId(wTrainId, safeLoc.endPos.Lnk);
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*不设置对应标志,安全位置和包络均进入BG维持原来的标志*/
|
||||
}
|
||||
|
||||
chLinkRelPhySecAGorBGAttr = GetLinkRelPhySecAGorBGAttr(safeLoc.startPos.Lnk);
|
||||
chEnvelopLinkABGAttr = GetLinkRelPhySecAGorBGAttr(pEnvelop->startPos.Lnk);
|
||||
chAgLinkExistRelCgFlag = GetAgLinkExistRelCgFlag(pEnvelop->startPos.Lnk);
|
||||
|
||||
/*包络刷新在后,所以此时虽然安全位置进入BG,但包络可能还没进入*/
|
||||
if ((LINK_REL_PHYSEC_BG == chLinkRelPhySecAGorBGAttr) && (0U == pEnvelop->tailTrainID)
|
||||
&& (LINK_REL_PHYSEC_AG == chEnvelopLinkABGAttr) && (AGLINK_EXIST_REL_CG_NO == chAgLinkExistRelCgFlag))
|
||||
{
|
||||
/*列车安全车尾驶入BG且当前驶入前没有后端可疑且是从AG过来的车且不存在CG便设置后筛通过标志有效*/
|
||||
SetTrainFullEnterLjkCycNum(wTrainId, 0U);
|
||||
SetTrainEnterLjkLinkId(wTrainId, 0U);
|
||||
/*先清除再设置,仅为了逻辑清晰一些*/
|
||||
SetTrainVirTailScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_VALID);
|
||||
SetTrainEnterLjkLinkId(wTrainId, safeLoc.startPos.Lnk);
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*不设置对应标志,安全位置和包络均进入AG维持原来的标志*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SetTrainVirHeadScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_INVALID);
|
||||
SetTrainVirTailScreenPassFlag(wTrainId, TRAIN_VIR_SCREEN_PASS_FLAG_INVALID);
|
||||
SetTrainFullEnterLjkCycNum(wTrainId, 0U);
|
||||
SetTrainEnterLjkLinkId(wTrainId, 0U);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
}
|
||||
@@ -176,7 +176,7 @@ else
|
||||
UINT8 elm_PrepareTrainSafeLoc(UINT16 trainID,INOUT ELM_TrainSafeLocStruct* pTrainSafeLoc)
|
||||
{
|
||||
UINT8 chRtnVal = CI_ERROR;
|
||||
UINT16 wTrainID = (UINT16)(0x1400u + (trainID & 0x00ffu));
|
||||
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainID & 0x00ffU));
|
||||
|
||||
if (NULL != pTrainSafeLoc)
|
||||
{
|
||||
@@ -1012,7 +1012,7 @@ UINT32 elm_PrepareTrainLength(UINT16 trainid)
|
||||
UINT8 chTrainType = 0u;
|
||||
UINT8 chFunRtn = CI_ERROR;
|
||||
UINT32 dwRtnVal = 0u;
|
||||
UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
|
||||
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU));
|
||||
|
||||
/*获取列车类型*/
|
||||
chFunRtn = dquGetTrainType(wTrainID, &chTrainType);
|
||||
@@ -1074,7 +1074,7 @@ UINT8 elm_PrepareNextAcMinSafeHeadLoc(UINT16 trainid, OUT UINT16 acID[AC_MAXCNT_
|
||||
UINT8 chFunRtn = CI_ERROR;
|
||||
LinkPointDataStru strPoint = { 0u };
|
||||
UINT16 wSwitchId = 0u;
|
||||
UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
|
||||
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU));
|
||||
UINT8 cDirectionPointFlag = 0U; /*是否具有方向变化点标志*/
|
||||
|
||||
|
||||
@@ -1135,7 +1135,7 @@ UINT8 elm_PrepareMaxSafeHeadLoc(UINT16 trainid, OUT LOD_STRU *pLoc)
|
||||
UINT16 wLink = 0u;
|
||||
UINT32 dwOff = UINT32_MAX;
|
||||
UINT8 chDir = 0u;
|
||||
UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
|
||||
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU));
|
||||
|
||||
|
||||
wLink = GetTrainMaxHeadLink(wTrainID);
|
||||
@@ -1169,7 +1169,7 @@ UINT8 elm_PrepareMinSafeHeadLoc(UINT16 trainid, OUT LOD_STRU *pLoc)
|
||||
UINT16 wLink = 0u;
|
||||
UINT32 dwOff = UINT32_MAX;
|
||||
UINT8 chDir = 0u;
|
||||
UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
|
||||
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU));
|
||||
|
||||
|
||||
wLink = GetTrainMinHeadLink(wTrainID);
|
||||
@@ -1200,7 +1200,7 @@ UINT16 elm_PrepareACOfMaxSafeHeadLoc(UINT16 trainid)
|
||||
UINT16 wMinHeadLink = 0u;
|
||||
UINT8 chFunRtn = CI_ERROR;
|
||||
UINT16 wRtn = 0u;
|
||||
UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
|
||||
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU));
|
||||
|
||||
wMinHeadLink = GetTrainMaxHeadLink(wTrainID);
|
||||
chFunRtn = IsLinkIdValid(wMinHeadLink);
|
||||
@@ -1227,7 +1227,7 @@ UINT16 elm_PrepareACOfMinSafeHeadLoc(UINT16 trainid)
|
||||
UINT16 wMinHeadLink = 0u;
|
||||
UINT8 chFunRtn = CI_ERROR;
|
||||
UINT16 wRtn = 0u;
|
||||
UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
|
||||
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU));
|
||||
|
||||
wMinHeadLink = GetTrainMinHeadLink(wTrainID);
|
||||
chFunRtn = IsLinkIdValid(wMinHeadLink);
|
||||
@@ -1261,7 +1261,7 @@ UINT8 elm_PrepareNextAcMaxSafeTailLoc(UINT16 trainid, OUT UINT16 acID[AC_MAXCNT_
|
||||
UINT8 chFunRtn = CI_ERROR;
|
||||
LinkPointDataStru strPoint = { 0u };
|
||||
UINT16 wSwitchId = 0u;
|
||||
UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
|
||||
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU));
|
||||
UINT8 cDirectionPointFlag = 0U; /*是否具有方向变化点标志*/
|
||||
|
||||
|
||||
@@ -1324,7 +1324,7 @@ UINT8 elm_PrepareMaxSafeTailLoc(UINT16 trainid, OUT LOD_STRU *pLoc)
|
||||
UINT16 wLink = 0u;
|
||||
UINT32 dwOff = UINT32_MAX;
|
||||
UINT8 chDir = 0u;
|
||||
UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
|
||||
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU));
|
||||
|
||||
wLink = GetTrainMaxTailLink(wTrainID);
|
||||
dwOff = GetTrainMaxTailOffset(wTrainID);
|
||||
@@ -1357,7 +1357,7 @@ UINT8 elm_PrepareMinSafeTailLoc(UINT16 trainid, OUT LOD_STRU *pLoc)
|
||||
UINT16 wLink = 0u;
|
||||
UINT32 dwOff = UINT32_MAX;
|
||||
UINT8 chDir = 0u;
|
||||
UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
|
||||
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU));
|
||||
|
||||
wLink = GetTrainMinTailLink(wTrainID);
|
||||
dwOff = GetTrainMinTailOffset(wTrainID);
|
||||
@@ -1387,7 +1387,7 @@ UINT16 elm_PrepareACOfMaxSafeTailLoc(UINT16 trainid)
|
||||
UINT16 wMaxTailLink = 0u;
|
||||
UINT8 chFunRtn = CI_ERROR;
|
||||
UINT16 wRtn = 0u;
|
||||
UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
|
||||
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU));
|
||||
|
||||
wMaxTailLink = GetTrainMaxTailLink(wTrainID);
|
||||
chFunRtn = IsLinkIdValid(wMaxTailLink);
|
||||
@@ -1414,7 +1414,7 @@ UINT16 elm_PrepareACOfMinSafeTailLoc(UINT16 trainid)
|
||||
UINT16 wMaxTailLink = 0u;
|
||||
UINT8 chFunRtn = CI_ERROR;
|
||||
UINT16 wRtn = 0u;
|
||||
UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
|
||||
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU));
|
||||
|
||||
wMaxTailLink = GetTrainMinTailLink(wTrainID);
|
||||
chFunRtn = IsLinkIdValid(wMaxTailLink);
|
||||
@@ -1652,7 +1652,7 @@ UINT8 elm_PrepareComOCID(IN const UINT8 **pOCIDbuff)
|
||||
else
|
||||
{
|
||||
/** 获取本OC通信的OC数量 */
|
||||
ret = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_CI);
|
||||
ret = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_RCI);
|
||||
|
||||
/** 判断是否存在,不存在直接返回*/
|
||||
if (0u == ret)
|
||||
@@ -1662,7 +1662,7 @@ UINT8 elm_PrepareComOCID(IN const UINT8 **pOCIDbuff)
|
||||
else
|
||||
{
|
||||
/** 获取相邻通信的TIOC ID */
|
||||
(*pOCIDbuff) = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_CI);
|
||||
(*pOCIDbuff) = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_RCI);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1683,8 +1683,8 @@ UINT8 elm_PrepareOCCommStatus(UINT8 OCID)
|
||||
UINT8 ret = ELM_COM_STATUS_ERROR;
|
||||
UINT8 funRtn = TRANSMIT_STATE_BAD;
|
||||
|
||||
/** 获取OC通信状态 */
|
||||
funRtn = GetCiTransmitState(CI_SYSTEM_TYPE_CI,OCID);
|
||||
/** 获取Rc通信状态 */
|
||||
funRtn = GetRcPbTacsTransmitState(OCID);
|
||||
|
||||
/** 设置函数返回值 */
|
||||
ASSERT_SETRET(TRANSMIT_STATE_GOOD == funRtn,ret,ELM_COM_STATUS_OK,ELM_COM_STATUS_ERROR)
|
||||
@@ -1771,7 +1771,7 @@ UINT8 elm_PrepareTrainSafeHeadFlag(UINT16 trainId)
|
||||
{
|
||||
UINT8 ret = CI_ERROR;
|
||||
UINT16 funRtn = TRAIN_HEAD_FLAG_YES;
|
||||
UINT16 wTrainID = (UINT16)(0x1400u + (trainId & 0x00ffu));
|
||||
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainId & 0x00ffU));
|
||||
|
||||
funRtn = GetTrainSafeHeadFlag(wTrainID);
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@ static UINT8 elm_UKTAdjacentSwProtect(void)
|
||||
nearTrainType = aam_SearchNearbyTrainType(pACIdbuff[cycleAc], EMAP_SAME_DIR, acSameCnt, acSameID);
|
||||
}
|
||||
|
||||
if (AAM_BAD_NEAR == nearTrainType)
|
||||
if ((AAM_BAD_NEAR == nearTrainType)|| (AAM_SLEEP_OCC == nearTrainType))
|
||||
{
|
||||
elm_PrepareClearSwPassTrainFlag(pACIdbuff[cycleAc]);
|
||||
ELM_LOG(ELM_LOG_FATAL,"info:Switch Zone AC%d Clear CT pass flag by PreAC UT.\n",pACIdbuff[cycleAc]);
|
||||
@@ -116,7 +116,7 @@ static UINT8 elm_UKTAdjacentSwProtect(void)
|
||||
/** 查询前方计轴接近车类型*/
|
||||
nearTrainType = aam_SearchNearbyTrainType(pACIdbuff[cycleAc],EMAP_CONVER_DIR,acConvertCnt,acConvertID);
|
||||
|
||||
if (AAM_BAD_NEAR == nearTrainType)
|
||||
if ((AAM_BAD_NEAR == nearTrainType) || (AAM_SLEEP_OCC == nearTrainType))
|
||||
{
|
||||
elm_PrepareClearSwPassTrainFlag(pACIdbuff[cycleAc]);
|
||||
ELM_LOG(ELM_LOG_FATAL,"info:Switch Zone AC%d Clear CT pass flag by backAC UT.\n",pACIdbuff[cycleAc]);
|
||||
@@ -2036,6 +2036,8 @@ void elm_SafeProtectProcess(void)
|
||||
UINT8 workFlag = ELM_WORK_ERROR;
|
||||
UINT8 funRet = CI_ERROR;
|
||||
UINT32 errorCode = 0u;
|
||||
UINT8 localCiType = 0U;
|
||||
UINT8 ciTrainTestState = 0U;
|
||||
|
||||
/** 包络管理模块可正常处理标志位 */
|
||||
workFlag = elm_GetELMWorkFlag();
|
||||
@@ -2055,8 +2057,17 @@ void elm_SafeProtectProcess(void)
|
||||
funRet = elm_UTLosingProtect();
|
||||
ASSER_ERROR(CI_ERROR == funRet,errorCode,0x40000000u);
|
||||
|
||||
/** CT/UCT车飞车防护--宕机防护*/
|
||||
elm_FlyingProtect();
|
||||
localCiType = GetLocalCiType();
|
||||
ciTrainTestState = GetCiTrainTestStatus();
|
||||
if ((CI_TYPE_SCX == localCiType) && ((CI_TRAIN_TEST_OFF == ciTrainTestState) || (CI_TRAIN_TEST_STOP == ciTrainTestState)))
|
||||
{
|
||||
ScxClearFlyProtectInfo(); /*试车线在未试车期间,不进行飞车宕机防护处理,同时清除之前的飞车信息,修复CT驶出试车线导致飞车宕机问题*/
|
||||
}
|
||||
else
|
||||
{
|
||||
/** CT/UCT车飞车防护--宕机防护*/
|
||||
elm_FlyingProtect();
|
||||
}
|
||||
|
||||
/** 本OC范围内的计轴映射表合法性校验 */
|
||||
funRet = elm_ACRelEnvelopeCheck();
|
||||
@@ -2595,6 +2606,7 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1
|
||||
UINT16 relEnvelopeID[TRAIN_REL_ENVELOPE_SUM_MAX] = {0u}; /*列车关联的包络索引*/
|
||||
const EnvelopeStruct *pEnvelopeInfo = NULL;
|
||||
const WLTrainStatusInfoStruct* pTemp = NULL;
|
||||
UINT8 chTrainNvramPosFlag = 0U; /*列车NVRAM位置标识*/
|
||||
|
||||
/* 将本周期的的状态设置成上周期的状态 */
|
||||
for (cycle = 1u; cycle < LINE_MAX_TRAIN; cycle++)
|
||||
@@ -2640,10 +2652,19 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1
|
||||
if ((NULL != pEnvelopeInfo) &&
|
||||
((TYPE_CT_ENVELOPE == pEnvelopeInfo->envelopeType) || (TYPE_UCT_ENVELOPE == pEnvelopeInfo->envelopeType)))
|
||||
{
|
||||
headNeedScreen = LINE_MAX_TRAIN == pEnvelopeInfo->headTrainID ? NEED_SCREEN : UNNEED_SCREEN;
|
||||
tailNeedScreen = LINE_MAX_TRAIN == pEnvelopeInfo->tailTrainID ? NEED_SCREEN : UNNEED_SCREEN;
|
||||
chTrainNvramPosFlag = GetTrainNvramPosFlag(cycle);
|
||||
|
||||
wls_SetTrainControlStatus(cycle,IN_CONTROL_STATUS,headNeedScreen,tailNeedScreen);
|
||||
if (TRAIN_NVRAM_POS_FLAG_NO == chTrainNvramPosFlag)
|
||||
{
|
||||
headNeedScreen = LINE_MAX_TRAIN == pEnvelopeInfo->headTrainID ? NEED_SCREEN : UNNEED_SCREEN;
|
||||
tailNeedScreen = LINE_MAX_TRAIN == pEnvelopeInfo->tailTrainID ? NEED_SCREEN : UNNEED_SCREEN;
|
||||
|
||||
wls_SetTrainControlStatus(cycle, IN_CONTROL_STATUS, headNeedScreen, tailNeedScreen);
|
||||
}
|
||||
else
|
||||
{
|
||||
ELM_LOG(ELM_LOG_FATAL, " not Add In Control Train,Because UseNvram Pos\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2764,25 +2785,24 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1
|
||||
* @return CI_ERROR 查询失败
|
||||
CI_SUCCESS 查询成功
|
||||
* @note
|
||||
* by cgh 20240514 目前只用于RRM
|
||||
* edit cgh 20250724 目前只用于RRM
|
||||
*/
|
||||
UINT8 elm_GetNearEnvelopRelSameTra(UINT16 envelopeId, OUT UINT16* preEnvelope, OUT UINT16* backEnvelope)
|
||||
{
|
||||
/*- 局部变量定义 */
|
||||
UINT8 ret = CI_ERROR;
|
||||
UINT8 funRet = CI_ERROR;
|
||||
UINT32 errorCode = 0u; /*错误码*/
|
||||
UINT32 errorCode = 0U; /*错误码*/
|
||||
const EnvelopeStruct* pEnvelop = NULL;
|
||||
UINT8 envelopeCnt = 0u; /* 包络数量 */
|
||||
UINT16 arEnvelopID[TRAIN_SUM_MAX_IN_OC] = { 0u }; /*包络ID数组*/
|
||||
UINT16 acCnt = 0u; /** 前方计轴数量*/
|
||||
UINT16 acID[AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH] = { 0u };
|
||||
UINT8 acStatus = ELM_AC_OCC;
|
||||
UINT16 mergeACIndex = 0u;
|
||||
UINT8 envelopeCnt = 0U; /* 包络数量 */
|
||||
UINT16 arEnvelopID[TRAIN_SUM_MAX_IN_OC] = { 0U }; /*包络ID数组*/
|
||||
UINT16 acCnt = 0U; /** 前方计轴数量*/
|
||||
UINT16 acID[AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH] = { 0U };
|
||||
UINT16 mergeACIndex = 0U;
|
||||
UINT16 mergeACCntMax = (SECTION_IN_ENVELOPE_SUM_MAX + 2U * AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH);
|
||||
UINT16 mergeACID[SECTION_IN_ENVELOPE_SUM_MAX + 2U * AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH] = { 0u };
|
||||
UINT8 includeCnt = 0u;
|
||||
UINT16 includeELMid[TRAIN_SUM_MAX_IN_OC] = { 0u }; /** 重合的包络id */
|
||||
UINT16 mergeACID[SECTION_IN_ENVELOPE_SUM_MAX + 2U * AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH] = { 0U };
|
||||
UINT8 includeCnt = 0U;
|
||||
UINT16 includeELMid[TRAIN_SUM_MAX_IN_OC] = { 0U }; /** 重合的包络id */
|
||||
|
||||
/** 获取列车包络 */
|
||||
pEnvelop = elm_GetEnvelopeInfoPtr(envelopeId);
|
||||
@@ -2791,63 +2811,36 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1
|
||||
if ((NULL == pEnvelop) || (NULL == preEnvelope) || (NULL == backEnvelope))
|
||||
{
|
||||
/** 设置错误码*/
|
||||
ASSER_ERROR(CI_ERROR == funRet, errorCode, 0x08000000u);
|
||||
ASSER_ERROR(CI_ERROR == funRet, errorCode, 0x80000000U);
|
||||
}
|
||||
else
|
||||
{
|
||||
/** 获取车尾包络计轴占用状态 */
|
||||
acStatus = elm_PrepareACStatus(pEnvelop->ACID[0]);
|
||||
/* 查询后方计轴区段*/
|
||||
acCnt = elm_GetEnvelopTailACIDs(pEnvelop, acID);
|
||||
|
||||
/** 判断包络尾是否占用,如果占用,则需要查询下一个计轴*/
|
||||
if (ELM_AC_OCC == acStatus)
|
||||
/** 合并车尾后方的计轴 */
|
||||
mergeACIndex = elm_PrepareMergeUINT16Array(mergeACID, mergeACCntMax, mergeACIndex, acID, (AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH), acCnt);
|
||||
|
||||
/** 合并包络包含的计轴区段 */
|
||||
mergeACIndex = elm_PrepareMergeUINT16Array(mergeACID, mergeACCntMax, mergeACIndex, pEnvelop->ACID, SECTION_IN_ENVELOPE_SUM_MAX, pEnvelop->ACCnt);
|
||||
|
||||
/** 设置错误码*/
|
||||
ASSER_ERROR(mergeACIndex > mergeACCntMax, errorCode, 0x40000000U);
|
||||
|
||||
if (0U == errorCode)
|
||||
{
|
||||
/* 查询后方计轴,车尾计轴占用,存在道岔四开,为了确保能然后后端,需要查询安全车尾所属计轴的相邻计轴区段*/
|
||||
acCnt = elm_GetEnvelopTailACIDs(pEnvelop, acID);
|
||||
(void)CommonMemSet(&acID, (UINT32)((AC_MAXCNT_IN_SWITCH*AC_MAXCNT_IN_SWITCH)*sizeof(UINT16)),0U, (UINT32)((AC_MAXCNT_IN_SWITCH*AC_MAXCNT_IN_SWITCH)*sizeof(UINT16)));/*先清空数组防止脏数据*/
|
||||
/* 查询前方计轴*/
|
||||
acCnt = elm_GetEnvelopHeadACIDs(pEnvelop, acID);
|
||||
|
||||
/** 合并车尾后方的计轴 */
|
||||
/** 合并车头前方的计轴 */
|
||||
mergeACIndex = elm_PrepareMergeUINT16Array(mergeACID, mergeACCntMax, mergeACIndex, acID, (AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH), acCnt);
|
||||
|
||||
/** 先合并包络包含的计轴区段 */
|
||||
mergeACIndex = elm_PrepareMergeUINT16Array(mergeACID, mergeACCntMax, mergeACIndex, pEnvelop->ACID, SECTION_IN_ENVELOPE_SUM_MAX, pEnvelop->ACCnt);
|
||||
|
||||
/** 设置错误码*/
|
||||
ASSER_ERROR(mergeACIndex > mergeACCntMax, errorCode, 0x04000000u);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
/** 先合并包络包含的计轴区段 */
|
||||
mergeACIndex = elm_PrepareMergeUINT16Array(mergeACID, mergeACCntMax, mergeACIndex, pEnvelop->ACID, SECTION_IN_ENVELOPE_SUM_MAX, pEnvelop->ACCnt);
|
||||
|
||||
/** 设置错误码*/
|
||||
ASSER_ERROR(mergeACIndex > mergeACCntMax, errorCode, 0x02000000u);
|
||||
}
|
||||
|
||||
if (0u == errorCode)
|
||||
{
|
||||
/** 获取车头包络计轴占用状态 */
|
||||
acStatus = elm_PrepareACStatus(pEnvelop->ACID[pEnvelop->ACCnt - 1U]);
|
||||
|
||||
/** 判断包络头是否占用,如果占用,则需要查询下一个计轴 */
|
||||
if (ELM_AC_OCC == acStatus)
|
||||
{
|
||||
/* 查询前方计轴,此处查询四开道岔的相邻计轴其实属于一个冗余的处理,因为如果车头压入了岔区且占用,直接进行了删车,但是此处再这样处理一个是为了统一设计,另外做一个冗余防护*/
|
||||
acCnt = elm_GetEnvelopHeadACIDs(pEnvelop, acID);
|
||||
|
||||
/** 合并车头前方的计轴 */
|
||||
mergeACIndex = elm_PrepareMergeUINT16Array(mergeACID, mergeACCntMax, mergeACIndex, acID, (AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH), acCnt);
|
||||
|
||||
/** 设置错误码*/
|
||||
ASSER_ERROR(mergeACIndex > mergeACCntMax, errorCode, 0x04000000u);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
/** 无需处理*/
|
||||
}
|
||||
ASSER_ERROR(mergeACIndex > mergeACCntMax, errorCode, 0x20000000U);
|
||||
|
||||
/** 判断是否处理成功 */
|
||||
if (0u == errorCode)
|
||||
if (0U == errorCode)
|
||||
{
|
||||
/** 获取前方计轴包含的包络 */
|
||||
envelopeCnt = elm_MergeEnvelope(mergeACID, (UINT8)mergeACIndex, arEnvelopID);
|
||||
@@ -2856,7 +2849,7 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1
|
||||
funRet = elm_FindNearSameTrainEnvelop(pEnvelop, arEnvelopID, envelopeCnt, preEnvelope, backEnvelope, &includeCnt, includeELMid);
|
||||
|
||||
/** 设置错误码*/
|
||||
ASSER_ERROR(CI_SUCCESS != funRet, errorCode, 0x08000000u);
|
||||
ASSER_ERROR(CI_SUCCESS != funRet, errorCode, 0x10000000U);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2870,7 +2863,7 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1
|
||||
}
|
||||
|
||||
/** 设置返回值*/
|
||||
ASSERT_SETRET(0u == errorCode, ret, CI_SUCCESS, CI_ERROR);
|
||||
ASSERT_SETRET(0U == errorCode, ret, CI_SUCCESS, CI_ERROR);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -486,4 +486,22 @@ void elm_FlyingProtect_UCT(void);
|
||||
*/
|
||||
void elm_DeleteUctPassFlag(UINT16 envelopeId);
|
||||
|
||||
/**
|
||||
* @brief 处理AG虚拟筛选标志
|
||||
* @param[in] UINT16 envelopeID 列车包络
|
||||
* @param[in] UINT16 wTrainId 列车ID
|
||||
* @return 无
|
||||
* @note by cgh 20250805
|
||||
*/
|
||||
void elm_DealAgVirScreenFlag(UINT16 wEnvelopeID, UINT16 wTrainId);
|
||||
|
||||
/**
|
||||
* @brief 处理BG虚拟筛选标志
|
||||
* @param[in] UINT16 envelopeID 列车包络
|
||||
* @param[in] UINT16 wTrainId 列车ID
|
||||
* @return 无
|
||||
* @note by cgh 20250805
|
||||
*/
|
||||
void elm_DealBgVirScreenFlag(UINT16 wEnvelopeID, UINT16 wTrainId);
|
||||
|
||||
#endif
|
||||
@@ -634,6 +634,7 @@ void elm_WLScreenProcess(void)
|
||||
UINT8 relEnvelopeCnt= TRAIN_REL_ENVELOPE_SUM_MAX; /*列车关联的包络数量*/
|
||||
UINT16 relEnvelopeID[TRAIN_REL_ENVELOPE_SUM_MAX] = {0u}; /*列车关联的包络索引*/
|
||||
const EnvelopeStruct *pEnvelopeInfo = NULL;
|
||||
UINT8 chTrainNvramPosFlag = 0U; /*列车NVRAM位置标识*/
|
||||
|
||||
/** 获取全线免筛标志 */
|
||||
wlsFlag = wls_GetWLScreenPermitFlag();
|
||||
@@ -653,26 +654,37 @@ void elm_WLScreenProcess(void)
|
||||
((TYPE_CT_ENVELOPE == pEnvelopeInfo->envelopeType) || (TYPE_UCT_ENVELOPE == pEnvelopeInfo->envelopeType)))
|
||||
{
|
||||
ELM_LOG(ELM_LOG_FATAL,"info:ELM%d WLS Process,",pEnvelopeInfo->id);
|
||||
if (LINE_MAX_TRAIN == pEnvelopeInfo->headTrainID)
|
||||
chTrainNvramPosFlag = GetTrainNvramPosFlag(cycle);
|
||||
|
||||
if (TRAIN_NVRAM_POS_FLAG_NO == chTrainNvramPosFlag)
|
||||
{
|
||||
ELM_LOG(ELM_LOG_FATAL," delete Head suspicious,");
|
||||
(void)elm_SetEnvelopeHeadTrainID(pEnvelopeInfo->id,0u);
|
||||
if (LINE_MAX_TRAIN == pEnvelopeInfo->headTrainID)
|
||||
{
|
||||
ELM_LOG(ELM_LOG_FATAL, " delete Head suspicious,");
|
||||
(void)elm_SetEnvelopeHeadTrainID(pEnvelopeInfo->id, 0u);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 不处理 */
|
||||
}
|
||||
|
||||
if (LINE_MAX_TRAIN == pEnvelopeInfo->tailTrainID)
|
||||
{
|
||||
ELM_LOG(ELM_LOG_FATAL, " delete Tail suspicious,");
|
||||
(void)elm_SetEnvelopeTailTrainID(pEnvelopeInfo->id, 0u);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 不处理 */
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 不处理 */
|
||||
ELM_LOG(ELM_LOG_FATAL, " not finish suspicious,because use nvram pos");
|
||||
}
|
||||
|
||||
if (LINE_MAX_TRAIN == pEnvelopeInfo->tailTrainID)
|
||||
{
|
||||
ELM_LOG(ELM_LOG_FATAL," delete Tail suspicious,");
|
||||
(void)elm_SetEnvelopeTailTrainID(pEnvelopeInfo->id,0u);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 不处理 */
|
||||
}
|
||||
ELM_LOG(ELM_LOG_FATAL,"\n");
|
||||
|
||||
ELM_LOG(ELM_LOG_FATAL, "\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -1990,16 +1990,15 @@ static UINT8 elm_UCTEnvelopeHeadHandle(UINT8 endlineFlag, IN const EnvelopeStruc
|
||||
/** 不添加前端可疑 */
|
||||
funRtn = elm_SetEnvelopeHeadTrainID(ptemp->id, pPretemp->headTrainID);
|
||||
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00002000u);
|
||||
/** 则更新车头位置 */
|
||||
funRtn = elm_SetUCTEnvelopeDot(ELM_HEAD, ptemp->ACID[ptemp->ACCnt - 1u], ptemp);
|
||||
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00000800u);
|
||||
}
|
||||
else
|
||||
{
|
||||
funRtn = elm_SetEnvelopeHeadTrainID(ptemp->id, LINE_MAX_TRAIN);
|
||||
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00001000u);
|
||||
funRtn = elm_DeleteCTOrUCTEnvelope(ptemp->id);
|
||||
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00000400u);
|
||||
}
|
||||
|
||||
/** 则更新车头位置 */
|
||||
funRtn = elm_SetUCTEnvelopeDot(ELM_HEAD, ptemp->ACID[ptemp->ACCnt - 1u], ptemp);
|
||||
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00000800u);
|
||||
}
|
||||
ret = 0x55u;
|
||||
}
|
||||
@@ -2271,7 +2270,8 @@ static UINT8 elm_UCTEnvelopeHeadMoving(const EnvelopeStruct *ptemp)
|
||||
UINT8 includeCnt = 0u;
|
||||
UINT16 includeELMid[TRAIN_SUM_MAX_IN_OC] = {0u}; /** 重合的包络id */
|
||||
UINT8 cHeadDirChangeFlag = DIRECTIONPOINT_FLAG_INVALID; /*包络头方向变化点标志*/
|
||||
|
||||
const EnvelopeStruct* pPretemp = NULL;
|
||||
UINT16 wInputAcId = 0U;
|
||||
/** 入口参数校验 */
|
||||
ASSERT_RET_VALUE(NULL == ptemp,ret,0x80000000u);
|
||||
|
||||
@@ -2383,7 +2383,30 @@ static UINT8 elm_UCTEnvelopeHeadMoving(const EnvelopeStruct *ptemp)
|
||||
if (0u == errorCode)
|
||||
{
|
||||
endLineFlag = (0u == acSameCnt) ? CI_SUCCESS : CI_ERROR;
|
||||
funRtn = elm_UCTEnvelopeHeadHandle(endLineFlag,ptemp,acSameID[0u],preEnvelope, cHeadDirChangeFlag);
|
||||
wInputAcId = acSameID[0U];
|
||||
pPretemp = elm_GetEnvelopeInfoPtr(preEnvelope);
|
||||
if (NULL != pPretemp)
|
||||
{
|
||||
for (cycle = 0U; cycle < pPretemp->ACCnt; cycle++)
|
||||
{
|
||||
if (ptemp->ACID[ptemp->ACCnt - 1U] == pPretemp->ACID[cycle])
|
||||
{
|
||||
wInputAcId = ptemp->ACID[ptemp->ACCnt - 1U];
|
||||
break; /*前方包络与本包络终点处于同一计轴区段,停止遍历*/
|
||||
}
|
||||
else
|
||||
{
|
||||
/*继续遍历查找*/
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
|
||||
/*若前方包络位于本包络终点计轴区段,则使用本包络终点计轴区段作为入参,否则使用本包络终点前方计轴区段作为入参*/
|
||||
funRtn = elm_UCTEnvelopeHeadHandle(endLineFlag,ptemp, wInputAcId,preEnvelope, cHeadDirChangeFlag);
|
||||
ASSER_ERROR(CI_ERROR == funRtn,errorCode,0x00400000u);
|
||||
|
||||
if (CI_ERROR != funRtn)
|
||||
@@ -2634,17 +2657,17 @@ static UINT8 elm_UCTEnvelopeTailHandle(UINT8 endlineFlag, const EnvelopeStruct *
|
||||
|
||||
if (0x55u == funRtn)
|
||||
{
|
||||
/** 不添加前端可疑 */
|
||||
funRtn = elm_SetEnvelopeTailTrainID(ptemp->id, pBacktemp->tailTrainID);
|
||||
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00002000u);
|
||||
/** 则更新车尾位置 */
|
||||
funRtn = elm_SetUCTEnvelopeDot(ELM_TAIL, ptemp->ACID[0u], ptemp);
|
||||
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00001000u);
|
||||
}
|
||||
else
|
||||
{
|
||||
funRtn = elm_SetEnvelopeTailTrainID(ptemp->id, LINE_MAX_TRAIN);
|
||||
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00002000u);
|
||||
funRtn = elm_DeleteCTOrUCTEnvelope(ptemp->id);
|
||||
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00000800u);
|
||||
}
|
||||
|
||||
/** 则更新车尾位置 */
|
||||
funRtn = elm_SetUCTEnvelopeDot(ELM_TAIL, ptemp->ACID[0u], ptemp);
|
||||
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00001000u);
|
||||
}
|
||||
ret = 0x55u;
|
||||
}
|
||||
@@ -2916,6 +2939,8 @@ static UINT8 elm_UCTEnvelopeTailMoving(const EnvelopeStruct *ptemp)
|
||||
UINT8 includeCnt = 0u;
|
||||
UINT16 includeELMid[TRAIN_SUM_MAX_IN_OC] = {0u}; /** 重合的包络id */
|
||||
UINT8 cTailDirChangeFlag = DIRECTIONPOINT_FLAG_INVALID; /*包络尾方向变化点标志*/
|
||||
const EnvelopeStruct* pBacktemp = NULL;
|
||||
UINT16 wInputAcId = 0U;
|
||||
|
||||
/** 入口参数校验 */
|
||||
ASSERT_RET_VALUE(NULL == ptemp,ret,0x80000000u);
|
||||
@@ -3028,8 +3053,32 @@ static UINT8 elm_UCTEnvelopeTailMoving(const EnvelopeStruct *ptemp)
|
||||
if (0u == errorCode)
|
||||
{
|
||||
endLineFlag = (0u == acConvertCnt) ? CI_SUCCESS : CI_ERROR;
|
||||
funRtn = elm_UCTEnvelopeTailHandle(endLineFlag,ptemp,acConvertID[0u],backEnvelope, cTailDirChangeFlag);
|
||||
ASSER_ERROR(CI_ERROR == funRtn,errorCode,0x00400000u);
|
||||
wInputAcId = acConvertID[0U];
|
||||
pBacktemp = elm_GetEnvelopeInfoPtr(backEnvelope);
|
||||
if (NULL != pBacktemp)
|
||||
{
|
||||
for (cycle = 0U; cycle < pBacktemp->ACCnt; cycle++)
|
||||
{
|
||||
if (ptemp->ACID[0U] == pBacktemp->ACID[cycle])
|
||||
{
|
||||
wInputAcId = ptemp->ACID[0U];
|
||||
break; /*后方包络与本包络起点处于同一计轴区段,停止遍历*/
|
||||
}
|
||||
else
|
||||
{
|
||||
/*继续遍历查找*/
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
|
||||
/*若后方包络位于本包络起点计轴区段,则使用本包络起点计轴区段作为入参,否则使用本包络起点后方计轴区段作为入参*/
|
||||
funRtn = elm_UCTEnvelopeTailHandle(endLineFlag, ptemp, wInputAcId, backEnvelope, cTailDirChangeFlag);
|
||||
|
||||
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00400000u);
|
||||
|
||||
if (CI_ERROR != funRtn)
|
||||
{
|
||||
@@ -3256,6 +3305,7 @@ static UINT8 elm_ConvertToUCTCheck(const EnvelopeStruct* ptemp)
|
||||
UINT8 chCanUct = FLAG_SET;
|
||||
UINT32 minTrainLength = 0U;
|
||||
UINT32 dwTempLength = 0U;
|
||||
UINT8 chTrainNvramPosFlag = 0U;
|
||||
|
||||
/** 入口参数校验 */
|
||||
ASSERT_RET_VALUE(NULL == ptemp,ret,0x80000000U);
|
||||
@@ -3296,6 +3346,17 @@ static UINT8 elm_ConvertToUCTCheck(const EnvelopeStruct* ptemp)
|
||||
{
|
||||
; /* 不满足转为UCT条件 */
|
||||
}
|
||||
|
||||
if (0U == errorCode)
|
||||
{
|
||||
/** 获取列车是否使用NVRAM位置 */
|
||||
chTrainNvramPosFlag = GetTrainNvramPosFlag(ptemp->trainID[0U]);
|
||||
ASSER_ERROR(TRAIN_NVRAM_POS_FLAG_NO != chTrainNvramPosFlag, errorCode, 0x04000000U);
|
||||
}
|
||||
else
|
||||
{
|
||||
; /* 不满足转为UCT条件 */
|
||||
}
|
||||
|
||||
/** 设置函数返回值 */
|
||||
ASSERT_SETRET(0U == errorCode,ret,CI_SUCCESS,CI_ERROR);
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
|
||||
|
||||
FloodGateDataStruct FloodGateDataStru[FLOOD_GATE_SUM_MAX]; /*定义防淹门动态数据*/
|
||||
FloodGateDataStructCC FloodGateDataStruCC[FLOOD_GATE_SUM_MAX]; /*定义防淹门动态数据-车车*/
|
||||
|
||||
|
||||
/*
|
||||
@@ -26,7 +27,16 @@ FloodGateDataStruct *GetFloodGateData(void)
|
||||
{
|
||||
return FloodGateDataStru;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取防淹门数据结构体指针车车
|
||||
* 参数说明:
|
||||
* 返回值 :
|
||||
FloodGateDataStructCC *
|
||||
*/
|
||||
FloodGateDataStructCC* GetFloodGateDataCC(void)
|
||||
{
|
||||
return FloodGateDataStruCC;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID防淹门开门锁闭状态
|
||||
@@ -482,7 +492,7 @@ UINT8 GetFloodGateCloseApplyIvocSum(const UINT16 floodGateId)
|
||||
|
||||
if (0u < bufIndex)
|
||||
{
|
||||
reVal = FloodGateDataStru[bufIndex].FloodGateCloseApplyIvocSum;
|
||||
reVal = FloodGateDataStruCC[bufIndex].FloodGateCloseApplyIvocSum;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -505,7 +515,7 @@ void SetFloodGateCloseApplyIvocSum(const UINT16 floodGateId, const UINT8 wTrainS
|
||||
|
||||
if (0u < bufIndex)
|
||||
{
|
||||
FloodGateDataStru[bufIndex].FloodGateCloseApplyIvocSum = wTrainSum;
|
||||
FloodGateDataStruCC[bufIndex].FloodGateCloseApplyIvocSum = wTrainSum;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -527,7 +537,7 @@ UINT16* GetFloodGateCloseApplyIvocId(const UINT16 floodGateId)
|
||||
|
||||
if (0u < bufIndex)
|
||||
{
|
||||
applyIvocBuf = FloodGateDataStru[bufIndex].FloodGateCloseApplyIvocId;
|
||||
applyIvocBuf = FloodGateDataStruCC[bufIndex].FloodGateCloseApplyIvocId;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -549,11 +559,11 @@ void SetFloodGateCloseApplyIvocId(const UINT16 floodGateId, const UINT16* applyI
|
||||
|
||||
if (0u < bufIndex)
|
||||
{
|
||||
(void)CommonMemSet(FloodGateDataStru[bufIndex].FloodGateCloseApplyIvocId,
|
||||
(void)CommonMemSet(FloodGateDataStruCC[bufIndex].FloodGateCloseApplyIvocId,
|
||||
(UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX),
|
||||
0U, (UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX)); /*先出清,防止脏数据*/
|
||||
|
||||
(void)CommonMemCpy(FloodGateDataStru[bufIndex].FloodGateCloseApplyIvocId, /*赋值申请的列车ID*/
|
||||
(void)CommonMemCpy(FloodGateDataStruCC[bufIndex].FloodGateCloseApplyIvocId, /*赋值申请的列车ID*/
|
||||
(UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX),
|
||||
applyIvocBuf, (UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX));
|
||||
}
|
||||
@@ -574,7 +584,7 @@ FloodGateTrainAnsStruct* GetFloodGateCloseFromIvocStru(const UINT16 floodGateId)
|
||||
|
||||
if (0u < bufIndex)
|
||||
{
|
||||
retVal = FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru;
|
||||
retVal = FloodGateDataStruCC[bufIndex].FloodGateCloseFromIvocStru;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -610,7 +620,7 @@ void SetFloodGateAllowCloseFlagIVOC(UINT16 floodGateId, UINT16 wTrainId, UINT8 a
|
||||
trainSumIndex = chIvocSum;
|
||||
for (ii = 0U; ii < chIvocSum; ii++)
|
||||
{
|
||||
if (FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru[ii].wTrainId == wTrainId)
|
||||
if (FloodGateDataStruCC[bufIndex].FloodGateCloseFromIvocStru[ii].wTrainId == wTrainId)
|
||||
{
|
||||
retVal = CI_ERROR; /*已存入过的列车,且回复了,不再存入*/
|
||||
break;
|
||||
@@ -619,8 +629,8 @@ void SetFloodGateAllowCloseFlagIVOC(UINT16 floodGateId, UINT16 wTrainId, UINT8 a
|
||||
|
||||
if (CI_SUCCESS == retVal)
|
||||
{
|
||||
FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru[trainSumIndex].wTrainId = wTrainId;
|
||||
FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru[trainSumIndex].wFloodGateCloseIvocFlag = agreeFlag; /*检查标志的时候,查所有起始周期询问的列车是否都回复了同意*/
|
||||
FloodGateDataStruCC[bufIndex].FloodGateCloseFromIvocStru[trainSumIndex].wTrainId = wTrainId;
|
||||
FloodGateDataStruCC[bufIndex].FloodGateCloseFromIvocStru[trainSumIndex].wFloodGateCloseIvocFlag = agreeFlag; /*检查标志的时候,查所有起始周期询问的列车是否都回复了同意*/
|
||||
chIvocSum++;
|
||||
SetFloodGateCloseAnsIvocSum(floodGateId, chIvocSum);
|
||||
}
|
||||
@@ -653,8 +663,8 @@ void ClearFloodGateAllowClosFlagIVOC(UINT16 floodGateId)
|
||||
{
|
||||
for (ii = 0U; ii < chIvocSum; ii++)
|
||||
{
|
||||
FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru[ii].wTrainId = 0U;
|
||||
FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru[ii].wFloodGateCloseIvocFlag = FLOOD_GATE_NOT_ALLOWCLOSE_IVOC;
|
||||
FloodGateDataStruCC[bufIndex].FloodGateCloseFromIvocStru[ii].wTrainId = 0U;
|
||||
FloodGateDataStruCC[bufIndex].FloodGateCloseFromIvocStru[ii].wFloodGateCloseIvocFlag = FLOOD_GATE_NOT_ALLOWCLOSE_IVOC;
|
||||
}
|
||||
SetFloodGateCloseAnsIvocSum(floodGateId, 0U);
|
||||
}
|
||||
@@ -674,7 +684,7 @@ UINT8 GetFloodGateAccessUTFlag(const UINT16 floodGateId)
|
||||
|
||||
if (0u < bufIndex)
|
||||
{
|
||||
reVal = FloodGateDataStru[bufIndex].FloodGateAccessUTFlag;
|
||||
reVal = FloodGateDataStruCC[bufIndex].FloodGateAccessUTFlag;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -699,7 +709,7 @@ void SetFloodGateAccessUTFlag(const UINT16 floodGateId, const UINT8 accessUTFlag
|
||||
{
|
||||
if ((FLOOD_GATE_ACCESS_UT_YES == accessUTFlag) || (FLOOD_GATE_ACCESS_UT_NO == accessUTFlag))
|
||||
{/*混跑或者纯CT跑*/
|
||||
FloodGateDataStru[bufIndex].FloodGateAccessUTFlag = accessUTFlag;
|
||||
FloodGateDataStruCC[bufIndex].FloodGateAccessUTFlag = accessUTFlag;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -722,7 +732,7 @@ UINT8 GetFloodGateCloseAnsIvocSum(const UINT16 floodGateId)
|
||||
|
||||
if (0u < bufIndex)
|
||||
{
|
||||
reVal = FloodGateDataStru[bufIndex].FloodGateCloseAnsIvocSum;
|
||||
reVal = FloodGateDataStruCC[bufIndex].FloodGateCloseAnsIvocSum;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -745,7 +755,7 @@ void SetFloodGateCloseAnsIvocSum(const UINT16 floodGateId, const UINT8 wTrainSum
|
||||
|
||||
if (0u < bufIndex)
|
||||
{
|
||||
FloodGateDataStru[bufIndex].FloodGateCloseAnsIvocSum = wTrainSum;
|
||||
FloodGateDataStruCC[bufIndex].FloodGateCloseAnsIvocSum = wTrainSum;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -50,21 +50,23 @@ typedef struct S_FloodGateDataStruct
|
||||
* 条件1为当前关门请求为是,且条件2满足,当前同意关门状态才为同意;
|
||||
*/
|
||||
UINT8 CurAgreeCloseStateOut; /*当前同意关门输出状态(动态字段):FLOOD_GATE_AGREE_CLOSE、FLOOD_GATE_NOT_AGREE_CLOSE*/
|
||||
|
||||
UINT32 CurYGJCrossLineStartCount;/*当前YGJ混线开始时间*/
|
||||
|
||||
UINT32 CurFloodGateDelayCloseStartCyc; /*防淹门接近区段占压延时关门开始时间*/
|
||||
} FloodGateDataStruct;
|
||||
|
||||
/*防淹门数据结构体*/
|
||||
typedef struct S_FloodGateDataStructCC
|
||||
{
|
||||
UINT16 FloodGateId; /*防淹门ID (初始化字段)*/
|
||||
UINT8 FloodGateCloseApplyIvocSum; /*防淹门关门申请列车数量*/
|
||||
UINT16 FloodGateCloseApplyIvocId[FLOOD_GATE_APPLY_TRAIN_SUM_MAX]; /*防淹门关门申请列车ID*/
|
||||
|
||||
UINT8 FloodGateCloseAnsIvocSum; /*防淹门关门允许,列车回复数量*/
|
||||
FloodGateTrainAnsStruct FloodGateCloseFromIvocStru[FLOOD_GATE_APPLY_TRAIN_SUM_MAX]; /*列车同意防淹门关门请求结构体*/
|
||||
UINT8 FloodGateAccessUTFlag; /*防淹门接近区段是否有非通信车标志*/
|
||||
} FloodGateDataStruct;
|
||||
|
||||
}FloodGateDataStructCC;
|
||||
/*******************************全局变量声明*******************************/
|
||||
extern FloodGateDataStruct FloodGateDataStru[FLOOD_GATE_SUM_MAX]; /*定义防淹门动态数据*/
|
||||
|
||||
extern FloodGateDataStructCC FloodGateDataStruCC[FLOOD_GATE_SUM_MAX]; /*定义防淹门动态数据-车车*/
|
||||
/*
|
||||
* 功能描述: 获取防淹门数据结构体指针
|
||||
* 参数说明:
|
||||
@@ -72,6 +74,13 @@ extern FloodGateDataStruct FloodGateDataStru[FLOOD_GATE_SUM_MAX]; /*
|
||||
FloodGateDataStruct *
|
||||
*/
|
||||
FloodGateDataStruct *GetFloodGateData(void);
|
||||
/*
|
||||
* 功能描述: 获取防淹门数据结构体指针车车
|
||||
* 参数说明:
|
||||
* 返回值 :
|
||||
FloodGateDataStructCC *
|
||||
*/
|
||||
FloodGateDataStructCC* GetFloodGateDataCC(void);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID防淹门开门锁闭状态
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#include "WLScreenDataPrepare.h"
|
||||
|
||||
GaragedoorDataStruct GaragedoorDataStru[GARAGE_DOOR_SUM_MAX]; /*定义车库门数据结构体*/
|
||||
|
||||
GaragedoorDataStructCC GaragedoorDataStruCC[GARAGE_DOOR_SUM_MAX]; /*定义车库门数据结构体-车车*/
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定车库门数据
|
||||
@@ -26,7 +26,16 @@ GaragedoorDataStruct *GetGaragedoorData(void)
|
||||
{
|
||||
return GaragedoorDataStru;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定车库门数据-车车
|
||||
* 参数说明:
|
||||
* 返回值 :
|
||||
GaragedoorDataStructCC *
|
||||
*/
|
||||
GaragedoorDataStructCC* GetGaragedoorDataCC(void)
|
||||
{
|
||||
return GaragedoorDataStruCC;
|
||||
}
|
||||
/*
|
||||
* 功能描述: 获取指定ID车库门状态
|
||||
* 参数说明: const UINT16 garagedoorId, 车库门ID
|
||||
@@ -143,7 +152,7 @@ UINT8 GetGaragedoorAllowCloseFlagIVOC(const UINT16 garagedoorId)
|
||||
|
||||
if (bufIndex < GARAGE_DOOR_SUM_MAX)
|
||||
{
|
||||
reVal = GaragedoorDataStru[bufIndex].GDAllowCloseFlagIVOC;
|
||||
reVal = GaragedoorDataStruCC[bufIndex].GDAllowCloseFlagIVOC;
|
||||
}
|
||||
|
||||
return reVal;
|
||||
@@ -167,7 +176,7 @@ void SetGaragedoorAllowCloseFlagIVOC(const UINT16 garagedoorId, const UINT8 allo
|
||||
if ((GARAGE_DOOR_ALLOW_CLOSE_YES == allowCloseFlag) || (GARAGE_DOOR_ALLOW_CLOSE_NO == allowCloseFlag))
|
||||
{
|
||||
|
||||
GaragedoorDataStru[bufIndex].GDAllowCloseFlagIVOC = allowCloseFlag; /*允许关门标志*/
|
||||
GaragedoorDataStruCC[bufIndex].GDAllowCloseFlagIVOC = allowCloseFlag; /*允许关门标志*/
|
||||
|
||||
}
|
||||
}
|
||||
@@ -190,7 +199,7 @@ UINT16 GetGaragedoorNearestTrainId(const UINT16 garagedoorId)
|
||||
|
||||
if (bufIndex < GARAGE_DOOR_SUM_MAX)
|
||||
{
|
||||
reVal = GaragedoorDataStru[bufIndex].GDAkuNearestTrainId;
|
||||
reVal = GaragedoorDataStruCC[bufIndex].GDAkuNearestTrainId;
|
||||
}
|
||||
|
||||
return reVal;
|
||||
@@ -215,7 +224,7 @@ void SetGaragedoorNearestTrainId(const UINT16 garagedoorId, const UINT16 trainId
|
||||
if (UINT16_MAX!= trainId)
|
||||
{
|
||||
|
||||
GaragedoorDataStru[bufIndex].GDAkuNearestTrainId = trainId; /*允许关门标志*/
|
||||
GaragedoorDataStruCC[bufIndex].GDAkuNearestTrainId = trainId; /*允许关门标志*/
|
||||
|
||||
}
|
||||
}
|
||||
@@ -561,7 +570,7 @@ void SetWaiteIVOCResponseStartCycNum(const UINT16 garagedoorId, const UINT32 sta
|
||||
|
||||
if (bufIndex < GARAGE_DOOR_SUM_MAX)
|
||||
{
|
||||
GaragedoorDataStru[bufIndex].waiteIVOCResponseStartCycNum = startCycNum; /*起始周期号*/
|
||||
GaragedoorDataStruCC[bufIndex].waiteIVOCResponseStartCycNum = startCycNum; /*起始周期号*/
|
||||
}
|
||||
|
||||
}
|
||||
@@ -581,7 +590,7 @@ UINT32 GetWaiteIVOCResponseStartCycNum(const UINT16 garagedoorId)
|
||||
|
||||
if (bufIndex < GARAGE_DOOR_SUM_MAX)
|
||||
{
|
||||
ret = GaragedoorDataStru[bufIndex].waiteIVOCResponseStartCycNum;
|
||||
ret = GaragedoorDataStruCC[bufIndex].waiteIVOCResponseStartCycNum;
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
@@ -32,8 +32,7 @@ typedef struct S_GaragedoorDataStruct
|
||||
UINT16 GaragedoorId; /*车库门ID (初始化字段)*/
|
||||
UINT8 GaragedoorState; /*车库门状态 (动态字段)*/
|
||||
UINT8 GaragedoorAllowCloseFlag; /*车库门允许关门标志,ZC发送*/
|
||||
UINT8 GDAllowCloseFlagIVOC; /*车库门允许关门标志,IVOC发送*/
|
||||
UINT16 GDAkuNearestTrainId; /*A库物理区段上最接近的列车*/
|
||||
|
||||
UINT8 GaragedoorModeState; /*车库门模式状态*/
|
||||
UINT8 GaragedoorFaultState; /*车库门故障状态*/
|
||||
UINT8 GaragedoorPangLuState; /*车库门旁路状态*/
|
||||
@@ -41,14 +40,21 @@ typedef struct S_GaragedoorDataStruct
|
||||
UINT8 cmdProcessState; /* 命令处理状态 */
|
||||
UINT32 drvDoorStartCycle; /* 驱动开始时间,预留 */
|
||||
UINT32 waiteZCResponseStartCycNum; /*等待ZC反馈开始时间*/
|
||||
UINT32 waiteIVOCResponseStartCycNum; /*等待IVOC反馈开始时间*/
|
||||
|
||||
UINT32 GaragedoorOpenStartCycNum; /*车库门打开开始周期 (动态字段)*/
|
||||
UINT32 GaragedoorCloseStartCycNum; /*车库门关闭开始周期 (动态字段)*/
|
||||
} GaragedoorDataStruct;
|
||||
|
||||
/*车库门数据结构体*/
|
||||
typedef struct S_GaragedoorDataStructCC
|
||||
{
|
||||
UINT16 GaragedoorId; /*车库门ID (初始化字段)*/
|
||||
UINT8 GDAllowCloseFlagIVOC; /*车库门允许关门标志,IVOC发送*/
|
||||
UINT16 GDAkuNearestTrainId; /*A库物理区段上最接近的列车*/
|
||||
UINT32 waiteIVOCResponseStartCycNum; /*等待IVOC反馈开始时间*/
|
||||
}GaragedoorDataStructCC;
|
||||
|
||||
extern GaragedoorDataStruct GaragedoorDataStru[GARAGE_DOOR_SUM_MAX]; /*定义车库门数据结构体*/
|
||||
|
||||
extern GaragedoorDataStructCC GaragedoorDataStruCC[GARAGE_DOOR_SUM_MAX]; /*定义车库门数据结构体-车车*/
|
||||
/*
|
||||
* 功能描述: 获取指定车库门数据
|
||||
* 参数说明:
|
||||
@@ -56,6 +62,13 @@ extern GaragedoorDataStruct GaragedoorDataStru[GARAGE_DOOR_SUM_MAX]; /*
|
||||
GaragedoorDataStruct *
|
||||
*/
|
||||
GaragedoorDataStruct *GetGaragedoorData(void);
|
||||
/*
|
||||
* 功能描述: 获取指定车库门数据-车车
|
||||
* 参数说明:
|
||||
* 返回值 :
|
||||
GaragedoorDataStructCC *
|
||||
*/
|
||||
GaragedoorDataStructCC* GetGaragedoorDataCC(void);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID车库门驱动状态
|
||||
|
||||
@@ -93,7 +93,7 @@ UINT8 HLHTRecvCommonPacketHeadCheck(UINT16 LocalDevName, UINT16 RemoteDevName, U
|
||||
UINT32 LocalEtcsId = 0u; /*发送方标识*/
|
||||
UINT32 RemoteEtcsId = 0u; /*接收方标识*/
|
||||
UINT32 emapVer = 0U;/*应该使用的电子地图版本*/
|
||||
UINT8 emapCheckVer = 0U; /*电子地图版本校验结果*/
|
||||
UINT8 emapCheckVer = CI_ERROR; /*电子地图版本获取结果*/
|
||||
UINT8 chRet = 0U;
|
||||
|
||||
/*错误码每次都清零*/
|
||||
@@ -109,29 +109,66 @@ UINT8 HLHTRecvCommonPacketHeadCheck(UINT16 LocalDevName, UINT16 RemoteDevName, U
|
||||
;
|
||||
}
|
||||
|
||||
/*发送方校验*/
|
||||
chRet = dquDevName2HlhtId(LocalDevName, logId, &LocalEtcsId);
|
||||
if ((CI_ERROR == chRet) || (pMICommonPackage->sourceId != LocalEtcsId))
|
||||
|
||||
if ((CI_SYSTEM_TYPE_OC == devType) || (CI_SYSTEM_TYPE_XIANDI == devType) || (CI_SYSTEM_TYPE_ATS == devType))
|
||||
{
|
||||
*pErrorCode |= GAL_COMPARE_SEND_FLAG_ERR;
|
||||
/*OC/现地/ATS无互联互通ID*/
|
||||
if ((UINT16)(pMICommonPackage->sourceId & 0x0000FFFFU) != LocalDevName)
|
||||
{
|
||||
*pErrorCode |= GAL_COMPARE_SEND_FLAG_ERR;
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
if((UINT16)(pMICommonPackage->destId & 0x0000FFFFU) != RemoteDevName)
|
||||
{
|
||||
*pErrorCode |= GAL_COMPARE_RECV_FLAG_ERR;
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
/*发送方校验*/
|
||||
chRet = dquDevName2HlhtId(LocalDevName, logId, &LocalEtcsId);
|
||||
if ((CI_ERROR == chRet) || (pMICommonPackage->sourceId != LocalEtcsId))
|
||||
{
|
||||
*pErrorCode |= GAL_COMPARE_SEND_FLAG_ERR;
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
/*接收方校验*/
|
||||
chRet = dquDevName2HlhtId(RemoteDevName, logId, &RemoteEtcsId);
|
||||
if ((CI_ERROR == chRet) || (pMICommonPackage->destId != RemoteEtcsId))
|
||||
{
|
||||
*pErrorCode |= GAL_COMPARE_RECV_FLAG_ERR;
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
/*接收方校验*/
|
||||
chRet = dquDevName2HlhtId(RemoteDevName, logId, &RemoteEtcsId);
|
||||
if ((CI_ERROR == chRet) || (pMICommonPackage->destId != RemoteEtcsId))
|
||||
if ((CI_SYSTEM_TYPE_CI == devType) || (CI_SYSTEM_TYPE_RC == devType))
|
||||
{
|
||||
*pErrorCode |= GAL_COMPARE_RECV_FLAG_ERR;
|
||||
/*修改:根据发送方类型获取电子地图校验*/
|
||||
emapVer = GetCiTranCiDataCheckVer((UINT8)(RemoteDevName & 0x00FFU), LocalDevName);
|
||||
emapCheckVer = CI_SUCCESS;
|
||||
}
|
||||
else if (CI_SYSTEM_TYPE_OC == devType)
|
||||
{
|
||||
emapVer = GetCiTranOcDataCheckVer((UINT8)(RemoteDevName & 0x00FFU), LocalDevName);
|
||||
emapCheckVer = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
emapCheckVer = GetCiEmapCheckVer((UINT8)RemoteDevName, &emapVer, devType);
|
||||
}
|
||||
|
||||
emapCheckVer = GetCiEmapCheckVer((UINT8)RemoteDevName, &emapVer, devType);
|
||||
if (CI_SUCCESS == emapCheckVer)
|
||||
{
|
||||
/*电子地图版本校验信息(4字节CRC比较)*/
|
||||
|
||||
@@ -15,15 +15,22 @@
|
||||
#include "../2oo2/2oo2InterfaceDataManage.h"
|
||||
#include "CommonMemory.h"
|
||||
|
||||
HLHTHeadContextStru ciHLHTHeadCtxs[CI_SUM_MAX]={0};/*存放与本CI通信的相邻CI互联互通报文头上下文数据*/
|
||||
HLHTHeadContextStru vobcHLHTHeadCtxs[VOBC_SUM_MAX]={0};/*存放与本CI通信的VOBC互联互通报文头上下文数据*/
|
||||
HLHTHeadContextStru vobcBackupHLHTHeadCtxs[VOBC_BACKUP_SUM_MAX] = { 0 };/*存放与本CI通信的后备模式VOBC互联互通报文头上下文数据*/
|
||||
HLHTHeadContextStru zcHLHTHeadCtxs[ZC_SUM_MAX]={0};/*存放与本CI通信的ZC互联互通报文头上下文数据*/
|
||||
HLHTHeadContextStru ocHLHTHeadCtxs[OC_SUM_MAX]={0};/*存放与本CI通信的OC互联互通报文头上下文数据*/
|
||||
HLHTHeadContextStru axleHLHTHeadCtxs[AXLE_SUM_MAX] = { 0 };/*存放与本CI通信的计轴系统互联互通报文头上下文数据*/
|
||||
HLHTHeadContextStru tmcHLHTHeadCtxs[TMC_SUM_MAX] = { 0 };/*存放与本TIOC通信的TMC互联互通报文头上下文数据*/
|
||||
HLHTHeadContextStru ciHLHTHeadCtxs[CI_SUM_MAX]={0U};/*存放与本控区通信的相邻CI互联互通报文头上下文数据*/
|
||||
HLHTHeadContextStru gSzRcHLHTHeadCtxs[CI_SUM_MAX] = { 0U }; /*存放与本控区通信的相邻RC互联互通报文头上下文数据*/
|
||||
HLHTHeadContextStru ciHLHTHeadCtxsCiToRc[CI_SUM_MAX] = { 0U };/*存放本控区CI同步的相邻CI互联互通报文头上下文数据*/
|
||||
HLHTHeadContextStru gSzRcHLHTHeadCtxsCiToRc[CI_SUM_MAX] = { 0U }; /*存放本控区CI同步的相邻RC互联互通报文头上下文数据*/
|
||||
HLHTHeadContextStru vobcHLHTHeadCtxs[VOBC_SUM_MAX]={0U};/*存放与本CI通信的VOBC互联互通报文头上下文数据*/
|
||||
HLHTHeadContextStru vobcBackupHLHTHeadCtxs[VOBC_BACKUP_SUM_MAX] = { 0U };/*存放与本CI通信的后备模式VOBC互联互通报文头上下文数据*/
|
||||
HLHTHeadContextStru zcHLHTHeadCtxs[ZC_SUM_MAX]={0U};/*存放与本CI通信的ZC互联互通报文头上下文数据*/
|
||||
HLHTHeadContextStru ocHLHTHeadCtxs[OC_SUM_MAX]={0U};/*存放与本CI通信的OC互联互通报文头上下文数据*/
|
||||
HLHTHeadContextStru ocHLHTHeadCtxsCiToRc[OC_SUM_MAX] = { 0U };/*存放同步的CI通-OC互联互通报文头上下文数据*/
|
||||
HLHTHeadContextStru axleHLHTHeadCtxs[AXLE_SUM_MAX] = { 0U };/*存放与本CI通信的计轴系统互联互通报文头上下文数据*/
|
||||
HLHTHeadContextStru gSzRcAxleHLHTHeadCtxs[AXLE_SUM_MAX] = { 0U };/*存放与RC通信的计轴系统互联互通报文头上下文数据*/
|
||||
HLHTHeadContextStru tmcHLHTHeadCtxs[TMC_SUM_MAX] = { 0U };/*存放与本TIOC通信的TMC互联互通报文头上下文数据*/
|
||||
HLHTHeadContextStru IteHLHTHeadCtxs[ITE_SUM_MAX][VOBC_INC_ITE_SUM_MAX] = { 0U };/*存放与本TIOC通信的ITE互联互通报文头上下文数据*/
|
||||
|
||||
HLHTHeadContextStru gSzXiandiHLHTHeadCtxs[ATS_SUM_MAX] = { 0U };/*存放与本CI通信的现地互联互通报文头上下文数据*/
|
||||
HLHTHeadContextStru gSzAtsHLHTHeadCtxs[ATS_SUM_MAX] = { 0U };/*存放与本CI通信的ATS互联互通报文头上下文数据*/
|
||||
HLHTHeadContextStru vobcToRcHLHTHeadCtxs[VOBC_SUM_MAX] = { 0 };/*RC模式下,存放与本RC通信的510 VOBC互联互通报文头上下文数据。CI模式下不使用*/
|
||||
/*
|
||||
* 功能描述:本地函数,获得某种设备类型的用于后续运算的互联互通头上下文数据
|
||||
* 参数说明:
|
||||
@@ -417,6 +424,7 @@ void ProcHlhtHeadCtxTimeOut(void)
|
||||
{
|
||||
UINT32 timeoutSnCount = 0U;
|
||||
UINT32 timeoutSpan = 0U;
|
||||
UINT8 chSystemWorkType = GetSystemWorkType();; /*系统工作类型*/
|
||||
|
||||
/*处理VOBC通用报文头的时效性*/
|
||||
timeoutSnCount = GetCiAndVobcTransBadEnsureCnt();
|
||||
@@ -436,6 +444,11 @@ void ProcHlhtHeadCtxTimeOut(void)
|
||||
timeoutSpan = GetCiAndCiTransmitBadEnsureTime();
|
||||
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, ciHLHTHeadCtxs, CI_SUM_MAX);
|
||||
|
||||
/*处理RC通用报文头的时效性*/
|
||||
timeoutSnCount = GetCiAndCiTransBadEnsureCnt();
|
||||
timeoutSpan = GetCiAndCiTransmitBadEnsureTime();
|
||||
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, gSzRcHLHTHeadCtxs, CI_SUM_MAX);
|
||||
|
||||
/*处理与CI通信的ZC通用报文头的时效性*/
|
||||
timeoutSnCount = GetCiAndZcTransBadEnsureCnt();
|
||||
timeoutSpan = GetCiAndZcTransmitBadEnsureTime();
|
||||
@@ -451,10 +464,38 @@ void ProcHlhtHeadCtxTimeOut(void)
|
||||
timeoutSpan = GetCiAndOcTransmitBadEnsureTime();
|
||||
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, ocHLHTHeadCtxs, OC_SUM_MAX);
|
||||
|
||||
#if 0
|
||||
/*不需要处理CI同步过来的数据 需要留着周期号用来做接收数据判断*/
|
||||
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, ocHLHTHeadCtxsCiToRc, OC_SUM_MAX);
|
||||
#endif
|
||||
/*处理与AXLE通信报文头的时效性*/
|
||||
timeoutSnCount = GetCiAndAxleTransBadEnsureCnt();
|
||||
timeoutSpan = GetCiAndAxleTransBadEnsureTime();
|
||||
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, axleHLHTHeadCtxs, AXLE_SUM_MAX);
|
||||
if ((SYSTEM_WORK_MODE_ALL == chSystemWorkType) && (RC_WORK_MODE_TIOC == CI_SYSTEM_TYPE_RCI))
|
||||
{
|
||||
/*双系统RC还需要处理RC通用报文头*/
|
||||
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, gSzRcAxleHLHTHeadCtxs, AXLE_SUM_MAX);
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
/*处理与现地通信报文头的时效性*/
|
||||
timeoutSnCount = GetCiAndAtsTransBadEnsureCnt();
|
||||
timeoutSpan = GetCiAndAtsTransBadEnsureTime();
|
||||
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, gSzXiandiHLHTHeadCtxs, ATS_SUM_MAX);
|
||||
|
||||
/*处理与ATS通信报文头的时效性*/
|
||||
timeoutSnCount = GetCiAndAtsTransBadEnsureCnt();
|
||||
timeoutSpan = GetCiAndAtsTransBadEnsureTime();
|
||||
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, gSzAtsHLHTHeadCtxs, ATS_SUM_MAX);
|
||||
|
||||
/*处理VOBC通用报文头的时效性*/
|
||||
timeoutSnCount = GetCiAndVobcTransBadEnsureCnt();
|
||||
timeoutSpan = GetCiAndVobcTransBadEnsureTime();
|
||||
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, vobcToRcHLHTHeadCtxs, VOBC_SUM_MAX);
|
||||
}
|
||||
/*
|
||||
* 功能描述: 根据设备类型,获得具备初始通信互联互通头的所有设备ID
|
||||
@@ -537,18 +578,43 @@ static UINT8 GetHLHTHeadCtxTmepVars(const UINT8 devType, UINT16 *devMaxSum, HLHT
|
||||
UINT8 retVal = CI_ERROR;
|
||||
UINT16 maxDevSum = 0u;
|
||||
HLHTHeadContextStru *tempHeadCtxPtr = NULL;
|
||||
UINT8 chSystemWorkType = GetSystemWorkType();/*系统工作类型*/
|
||||
UINT8 cRcWorkMode = 0U;/*本系统当前工作模式*/
|
||||
|
||||
if ((CI_SYSTEM_TYPE_CI == devType))
|
||||
cRcWorkMode = GetLocalRcWorkMode();
|
||||
|
||||
if (CI_SYSTEM_TYPE_CI == devType)
|
||||
{
|
||||
maxDevSum = CI_SUM_MAX;
|
||||
tempHeadCtxPtr = ciHLHTHeadCtxs;
|
||||
|
||||
retVal = CI_SUCCESS;
|
||||
}
|
||||
else if (CI_SYSTEM_TYPE_RC == devType)
|
||||
{
|
||||
maxDevSum = CI_SUM_MAX;
|
||||
tempHeadCtxPtr = gSzRcHLHTHeadCtxs;
|
||||
|
||||
retVal = CI_SUCCESS;
|
||||
}
|
||||
else if (CI_SYSTEM_TYPE_VOBC == devType)
|
||||
{
|
||||
maxDevSum = VOBC_SUM_MAX;
|
||||
tempHeadCtxPtr = vobcHLHTHeadCtxs;
|
||||
if (RC_WORK_MODE_CI == cRcWorkMode)
|
||||
{
|
||||
tempHeadCtxPtr = vobcHLHTHeadCtxs;
|
||||
}
|
||||
else
|
||||
{/*RC模式下*/
|
||||
tempHeadCtxPtr = vobcToRcHLHTHeadCtxs;
|
||||
}
|
||||
|
||||
retVal = CI_SUCCESS;
|
||||
}
|
||||
else if (CI_SYSTEM_TYPE_IVOC == devType)
|
||||
{
|
||||
maxDevSum = VOBC_SUM_MAX;
|
||||
tempHeadCtxPtr = vobcHLHTHeadCtxs;
|
||||
|
||||
retVal = CI_SUCCESS;
|
||||
}
|
||||
@@ -576,8 +642,15 @@ static UINT8 GetHLHTHeadCtxTmepVars(const UINT8 devType, UINT16 *devMaxSum, HLHT
|
||||
else if (CI_SYSTEM_TYPE_AXIS == devType)
|
||||
{
|
||||
maxDevSum = AXLE_SUM_MAX;
|
||||
tempHeadCtxPtr = axleHLHTHeadCtxs;
|
||||
|
||||
if((SYSTEM_WORK_MODE_ALL == chSystemWorkType) && (RC_WORK_MODE_TIOC == CI_SYSTEM_TYPE_RCI))
|
||||
{
|
||||
tempHeadCtxPtr = gSzRcAxleHLHTHeadCtxs;
|
||||
}
|
||||
else
|
||||
{
|
||||
tempHeadCtxPtr = axleHLHTHeadCtxs;
|
||||
}
|
||||
|
||||
retVal = CI_SUCCESS;
|
||||
}
|
||||
else if (CI_SYSTEM_TYPE_TMC == devType)
|
||||
@@ -587,6 +660,20 @@ static UINT8 GetHLHTHeadCtxTmepVars(const UINT8 devType, UINT16 *devMaxSum, HLHT
|
||||
|
||||
retVal = CI_SUCCESS;
|
||||
}
|
||||
else if (CI_SYSTEM_TYPE_XIANDI == devType)
|
||||
{
|
||||
maxDevSum = ATS_SUM_MAX;
|
||||
tempHeadCtxPtr = gSzXiandiHLHTHeadCtxs;
|
||||
|
||||
retVal = CI_SUCCESS;
|
||||
}
|
||||
else if (CI_SYSTEM_TYPE_ATS == devType)
|
||||
{
|
||||
maxDevSum = ATS_SUM_MAX;
|
||||
tempHeadCtxPtr = gSzAtsHLHTHeadCtxs;
|
||||
|
||||
retVal = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
@@ -614,7 +701,7 @@ static void ProcHlhtHeadCtxTimeOutDiffSys(const UINT32 timeoutSnCount, const UIN
|
||||
HLHTHeadContextStru tempHeadCtx = { 0u };
|
||||
UINT8 headValid = 0u;
|
||||
INT32 remainValidiy;/*剩余的时间*/
|
||||
|
||||
UINT8 chRcID = 0U;
|
||||
if (NULL != headCtxs)
|
||||
{
|
||||
for (i = 0u;i < headCount;i++)
|
||||
@@ -652,21 +739,9 @@ static void ProcHlhtHeadCtxTimeOutDiffSys(const UINT32 timeoutSnCount, const UIN
|
||||
|
||||
if (0u == headValid)
|
||||
{
|
||||
if (headCtxs == axleHLHTHeadCtxs) /*计轴系统中断时,GAL层对方序号,收到对方数据时本方序号,设置0xFFFFFFFF*/
|
||||
{
|
||||
headCtxs[i].logId = 0u;
|
||||
headCtxs[i].sourceRecvOppMsgSN = 0u;
|
||||
headCtxs[i].sourcePreOwnMsgSN = 0u;
|
||||
headCtxs[i].sourceComPeriod = 0u;
|
||||
headCtxs[i].sourceCrntOwnMsgSN = 0xFFFFFFFFu;
|
||||
headCtxs[i].ciPreRecvOwnSn = 0xFFFFFFFFu;
|
||||
}
|
||||
else
|
||||
{
|
||||
(void)CommonMemSet(&(headCtxs[i]), (UINT32)sizeof(HLHTHeadContextStru), 0u, (UINT32)sizeof(HLHTHeadContextStru));
|
||||
headCtxs[i].sourceCrntOwnMsgSN = 0xFFFFFFFFu;
|
||||
headCtxs[i].ciPreRecvOwnSn = 0xFFFFFFFFu;
|
||||
}
|
||||
(void)CommonMemSet(&(headCtxs[i]), (UINT32)sizeof(HLHTHeadContextStru), 0u, (UINT32)sizeof(HLHTHeadContextStru));
|
||||
headCtxs[i].sourceCrntOwnMsgSN = 0xFFFFFFFFu;
|
||||
headCtxs[i].ciPreRecvOwnSn = 0xFFFFFFFFu;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1182,4 +1257,73 @@ void ProcIteHlhtHeadCtxTimeOut(const UINT32 dwTimeoutSnCount, const UINT32 dwTim
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定oc的CI-RC同步互联互通报文头上下文数据
|
||||
* 参数说明:const UINT8 oc ID
|
||||
* 返 回 值:NULL 获取数据失败
|
||||
* 非NULL 获取数据成功
|
||||
* Created By fan 2025.11.12
|
||||
*/
|
||||
HLHTHeadContextStru* GetCiToRcHLHTOcHeadCtx(const UINT8 ocId)
|
||||
{
|
||||
HLHTHeadContextStru* pstrRetVal = NULL;
|
||||
|
||||
if ((0U < ocId) && (OC_SUM_MAX > ocId))
|
||||
{
|
||||
pstrRetVal = &ocHLHTHeadCtxsCiToRc[ocId];
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
|
||||
return pstrRetVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定CI的CI-RC同步CI互联互通报文头上下文数据
|
||||
* 参数说明:const UINT8 chDevId 设备ID
|
||||
* 返 回 值:NULL 获取数据失败
|
||||
* 非NULL 获取数据成功
|
||||
* Created By fan 2025.12.31
|
||||
*/
|
||||
HLHTHeadContextStru* GetCiToRcWithCiHeadCtx(const UINT8 chDevId)
|
||||
{
|
||||
HLHTHeadContextStru* pstrRetVal = NULL;
|
||||
|
||||
if ((0U < chDevId) && (CI_SUM_MAX > chDevId))
|
||||
{
|
||||
pstrRetVal = &ciHLHTHeadCtxsCiToRc[chDevId];
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
|
||||
return pstrRetVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定CI的CI-RC同步RC互联互通报文头上下文数据
|
||||
* 参数说明:const UINT8 chDevId 设备ID
|
||||
* 返 回 值:NULL 获取数据失败
|
||||
* 非NULL 获取数据成功
|
||||
* Created By fan 2025.12.31
|
||||
*/
|
||||
HLHTHeadContextStru* GetCiToRcWithRcHeadCtx(const UINT8 chDevId)
|
||||
{
|
||||
HLHTHeadContextStru* pstrRetVal = NULL;
|
||||
|
||||
if ((0U < chDevId) && (CI_SUM_MAX > chDevId))
|
||||
{
|
||||
pstrRetVal = &gSzRcHLHTHeadCtxsCiToRc[chDevId];
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
|
||||
return pstrRetVal;
|
||||
}
|
||||
@@ -38,15 +38,22 @@ extern "C" {
|
||||
} HLHTHeadContextStru;
|
||||
|
||||
/*******************************全局变量声明*******************************/
|
||||
extern HLHTHeadContextStru ciHLHTHeadCtxs[CI_SUM_MAX];/*存放与本CI通信的相邻CI互联互通报文头上下文数据*/
|
||||
extern HLHTHeadContextStru ciHLHTHeadCtxs[CI_SUM_MAX];/*存放与本控区通信的相邻CI互联互通报文头上下文数据*/
|
||||
extern HLHTHeadContextStru gSzRcHLHTHeadCtxs[CI_SUM_MAX]; /*存放与本控区通信的相邻RC互联互通报文头上下文数据*/
|
||||
extern HLHTHeadContextStru ciHLHTHeadCtxsCiToRc[CI_SUM_MAX];/*存放与本控区通信的相邻CI互联互通报文头上下文数据*/
|
||||
extern HLHTHeadContextStru gSzRcHLHTHeadCtxsCiToRc[CI_SUM_MAX]; /*存放与本控区通信的相邻RC互联互通报文头上下文数据*/
|
||||
extern HLHTHeadContextStru vobcHLHTHeadCtxs[VOBC_SUM_MAX];/*存放与本CI通信的VOBC互联互通报文头上下文数据*/
|
||||
extern HLHTHeadContextStru vobcBackupHLHTHeadCtxs[VOBC_BACKUP_SUM_MAX];/*存放与本CI通信的后备模式VOBC互联互通报文头上下文数据*/
|
||||
extern HLHTHeadContextStru zcHLHTHeadCtxs[ZC_SUM_MAX];/*存放与本CI通信的ZC互联互通报文头上下文数据*/
|
||||
extern HLHTHeadContextStru ocHLHTHeadCtxs[OC_SUM_MAX];/*存放与本CI通信的OC互联互通报文头上下文数据*/
|
||||
extern HLHTHeadContextStru ocHLHTHeadCtxsCiToRc[OC_SUM_MAX];/*存放与本CI通信的OC互联互通报文头上下文数据*/
|
||||
extern HLHTHeadContextStru axleHLHTHeadCtxs[AXLE_SUM_MAX];/*存放与本CI通信的计轴系统互联互通报文头上下文数据*/
|
||||
extern HLHTHeadContextStru gSzRcAxleHLHTHeadCtxs[AXLE_SUM_MAX];/*存放与RC通信的计轴系统互联互通报文头上下文数据*/
|
||||
extern HLHTHeadContextStru tmcHLHTHeadCtxs[TMC_SUM_MAX];/*存放与本TIOC通信的TMC互联互通报文头上下文数据*/
|
||||
extern HLHTHeadContextStru IteHLHTHeadCtxs[ITE_SUM_MAX][VOBC_INC_ITE_SUM_MAX];/*存放与本TIOC通信的ITE互联互通报文头上下文数据*/
|
||||
|
||||
extern HLHTHeadContextStru gSzXiandiHLHTHeadCtxs[ATS_SUM_MAX]; /*存放与本CI通信的现地互联互通报文头上下文数据*/
|
||||
extern HLHTHeadContextStru gSzAtsHLHTHeadCtxs[ATS_SUM_MAX]; /*存放与本CI通信的ATS互联互通报文头上下文数据*/
|
||||
extern HLHTHeadContextStru vobcToRcHLHTHeadCtxs[VOBC_SUM_MAX];/*RC模式下,存放与本RC通信的510 VOBC互联互通报文头上下文数据。CI模式下不使用*/
|
||||
/*
|
||||
* 功能描述:获取某个设备最近一次给CI发送数据时其当前的序号
|
||||
* 参数说明:
|
||||
@@ -285,6 +292,31 @@ extern "C" {
|
||||
* Created By LQ 2024.06.11
|
||||
*/
|
||||
void ProcIteHlhtHeadCtxTimeOut(const UINT32 dwTimeoutSnCount, const UINT32 dwTimeoutSpan);
|
||||
/*
|
||||
* 功能描述:获取指定oc的CI-RC同步互联互通报文头上下文数据
|
||||
* 参数说明:const UINT8 oc ID
|
||||
* 返 回 值:NULL 获取数据失败
|
||||
* 非NULL 获取数据成功
|
||||
* Created By fan 2025.11.12
|
||||
*/
|
||||
HLHTHeadContextStru* GetCiToRcHLHTOcHeadCtx(const UINT8 ocId);
|
||||
/*
|
||||
* 功能描述:获取指定CI的CI-RC同步CI互联互通报文头上下文数据
|
||||
* 参数说明:const UINT8 chDevId 设备ID
|
||||
* 返 回 值:NULL 获取数据失败
|
||||
* 非NULL 获取数据成功
|
||||
* Created By fan 2025.12.31
|
||||
*/
|
||||
HLHTHeadContextStru* GetCiToRcWithCiHeadCtx(const UINT8 chDevId);
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定CI的CI-RC同步RC互联互通报文头上下文数据
|
||||
* 参数说明:const UINT8 chDevId 设备ID
|
||||
* 返 回 值:NULL 获取数据失败
|
||||
* 非NULL 获取数据成功
|
||||
* Created By fan 2025.12.31
|
||||
*/
|
||||
HLHTHeadContextStru* GetCiToRcWithRcHeadCtx(const UINT8 chDevId);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -95,8 +95,8 @@ UINT8 GetSignalShowColor(const UINT16 signalId);
|
||||
/*
|
||||
* 功能描述: 信号机双系板卡故障,信号机当前设置颜色
|
||||
* 参数说明:
|
||||
UINT16 signalId:信号机id
|
||||
UINT8 ocId OC ID
|
||||
UINT16 signalId:信号机id
|
||||
UINT8 ocId OC ID
|
||||
* 返回值 : 信号机颜色
|
||||
*/
|
||||
UINT8 GetOcBoardFaultSignalColor(UINT16 signalId, UINT8 ocId);
|
||||
@@ -137,12 +137,14 @@ void SwitchDeviceToRelayStateProc(void);
|
||||
*/
|
||||
void PhySecRelayToDeviceStateProc(void);
|
||||
|
||||
#if 0
|
||||
/*
|
||||
* 功能描述: 更新区段计轴复位继电器状态
|
||||
* 参数说明: void
|
||||
* 返回值 : void
|
||||
*/
|
||||
void PhySecResetToRelayStateProc(void);
|
||||
#endif
|
||||
/*
|
||||
* 功能描述: 更新区段计轴复位继电器状态
|
||||
* 参数说明: void
|
||||
@@ -269,6 +271,7 @@ void FloodGateDeviceToRelayStateProc(void);
|
||||
* 功能描述: 更新进路的调车同意逻辑状态
|
||||
* 参数说明: void
|
||||
* 返回值 : void
|
||||
* BY CGH 20250523
|
||||
*/
|
||||
void RouteDCTYRelayToDeviceStateProc(void);
|
||||
|
||||
@@ -353,7 +356,7 @@ void ProcessJXTCPulseInterfStopDrv(UINT16 startJXTCRelayId, UINT16 stopJXTCRelay
|
||||
|
||||
/******************************OC spks指示灯输出处理****************************/
|
||||
/*
|
||||
* 功能描述: OC spks指示灯和spks旁路指示灯输出处理
|
||||
* 功能描述: OC spks指示灯、spks旁路指示灯及蜂鸣继电器处理
|
||||
* 参数说明: void
|
||||
* 返回值 : void
|
||||
*/
|
||||
@@ -682,13 +685,14 @@ void DetZfsCancelBtnPressStateProc(const UINT16 wSignalId, const UINT16 wCancelD
|
||||
void DetZfsCancelBtnActFlagProc(const UINT16 wSignalId, const UINT16 wCancelDetBtnRelayId);
|
||||
|
||||
/*
|
||||
* 功能描述:驱动自复式扣车指示灯
|
||||
* 参数说明:const UINT16 signalId, 信号机ID
|
||||
* const UINT16 signalDetainDisplayId, 扣车表示灯继电器1ID
|
||||
* 返回值:无
|
||||
*
|
||||
* 功能描述:驱动自复式扣车相关指示灯
|
||||
* 参数说明:const UINT16 signalId 信号机ID
|
||||
* const UINT16 signalDetDisRelayId 扣车表示灯继电器ID
|
||||
* const UINT16 signalDetCutDisRelayId 扣车旁路表示灯继电器
|
||||
* 返 回 值:无
|
||||
* Modified By LQ 2025.07.03
|
||||
*/
|
||||
void DriveZfsDetainBsRelay(const UINT16 signalId, const UINT16 signalDetainDisplayId);
|
||||
void DriveZfsDetainBsRelay(const UINT16 signalId, const UINT16 signalDetDisRelayId, const UINT16 signalDetCutDisRelayId);
|
||||
|
||||
/*
|
||||
* 功能描述:自复式紧急停车按钮处理
|
||||
@@ -801,7 +805,7 @@ UINT8 WashMachineWorkModeRelayProc(const UINT16 washMachineId);
|
||||
* CI_SUCCESS: 更新成功
|
||||
* by cgh 20231113
|
||||
*/
|
||||
UINT8 DownWashDevToRelayStaProc(const UINT16 washMachineId);
|
||||
void DownWashDevToRelayStaProc(const UINT16 washMachineId);
|
||||
|
||||
/*
|
||||
* 功能描述: 降级模式洗车线关联进路状态检查
|
||||
@@ -853,6 +857,285 @@ UINT8 GetSwitchCollToleratePos(const UINT16 switchId);
|
||||
*/
|
||||
UINT8 CheckSwitchCollTolerateState(UINT16 switchId);
|
||||
|
||||
/*
|
||||
* 功能描述:宁象市域铁路紧急停车按钮处理
|
||||
* 参数说明:UINT16 esbId ESB ID
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.03.28
|
||||
*/
|
||||
void EsbNXRailBtnProc(UINT16 esbId);
|
||||
|
||||
/*
|
||||
* 功能描述:宁象市域铁路紧急停车取消按钮处理
|
||||
* 参数说明:UINT16 esbId ESB ID
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.03.28
|
||||
*/
|
||||
void EsbNXRailCancelBtnProc(UINT16 esbId);
|
||||
|
||||
/*
|
||||
* 功能描述:宁象市域铁路紧急停车取消按钮有效标志处理
|
||||
* 参数说明:const UINT16 wEsbId ESB ID
|
||||
* const UINT16 wCancelEsbRelayId ESB取消按钮采集继电器ID
|
||||
* 返回值 :无
|
||||
* Created By LQ 2025.03.30
|
||||
*/
|
||||
void EsbNXRailCancelBtnValidFlagProc(const UINT16 wEsbId, const UINT16 wCancelEsbRelayId);
|
||||
|
||||
/*
|
||||
* 功能描述:宁象市域铁路紧急停车旁路按钮处理
|
||||
* 参数说明:UINT16 esbId ESB ID
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.03.30
|
||||
*/
|
||||
void EsbNXRailCutBtnProc(UINT16 esbId);
|
||||
|
||||
/*
|
||||
* 功能描述:宁象市域铁路紧急停车旁路按钮按下状态处理
|
||||
* 参数说明:const UINT16 wEsbId ESB ID
|
||||
* const UINT16 wCutEsbRelayId 紧急旁路按钮采集继电器ID
|
||||
* 返回值 :无
|
||||
* Created By LQ 2025.03.30
|
||||
*/
|
||||
void EsbNXRailCutBtnPressStateProc(const UINT16 wEsbId, const UINT16 wCutEsbRelayId);
|
||||
|
||||
/*
|
||||
* 功能描述:宁象市域铁路ESB指示灯和ESB旁路指示灯输出处理
|
||||
* 参数说明:const UINT16 wEsbId ESB ID
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.03.30
|
||||
*/
|
||||
void EsbNXRailDisplayDrivOutput(const UINT16 wEsbId);
|
||||
|
||||
/*
|
||||
* 功能描述:屏蔽门异常打开处理
|
||||
* 参数说明:无
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.05.23
|
||||
*/
|
||||
void PsdExceptOpenProc(void);
|
||||
|
||||
/*
|
||||
* 功能描述:自复式扣车旁路按钮处理
|
||||
* 参数说明:const UINT16 signalId 信号机ID
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.06.20
|
||||
*/
|
||||
void SignalZfsDetainCutBtnPro(const UINT16 signalId);
|
||||
|
||||
/*
|
||||
* 功能描述:自复式扣车旁路按钮按下状态处理
|
||||
* 参数说明:const UINT16 wSignalId 信号机ID
|
||||
* const UINT16 wDetCutBtnRelayId 扣车旁路按钮采集继电器ID
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.06.20
|
||||
*/
|
||||
void ZfsDetCutBtnPressStateProc(const UINT16 wSignalId, const UINT16 wDetCutBtnRelayId);
|
||||
|
||||
/*
|
||||
* 功能描述:自复式扣车旁路按钮有效状态处理
|
||||
* 参数说明:const UINT16 wSignalId 信号机ID
|
||||
* const UINT16 wDetCutBtnRelayId 扣车旁路按钮采集继电器ID
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.06.20
|
||||
*/
|
||||
void ZfsDetCutBtnValidStateProc(const UINT16 wSignalId, const UINT16 wDetCutBtnRelayId);
|
||||
|
||||
/*
|
||||
* 功能描述:获取SPKS按钮采集容忍结果
|
||||
* 参数说明:const UINT16 wSpksId SPKS编号
|
||||
* 返 回 值:CI_ERROR 0 容忍结束
|
||||
* CI_SUCCESS 1 继续容忍
|
||||
* Created By LQ 2025.06.26
|
||||
*/
|
||||
UINT8 GetSpksBtnCollTolerateRet(const UINT16 wSpksId);
|
||||
|
||||
/*
|
||||
* 功能描述:获取Psd门开继电器采集容忍结果
|
||||
* 参数说明:const UINT16 wPsdId PSD编号
|
||||
* 返 回 值:CI_ERROR 0 容忍结束
|
||||
* CI_SUCCESS 1 继续容忍
|
||||
* Created By LQ 2025.06.26
|
||||
*/
|
||||
UINT8 GetPsdRelayCollTolerateRet(const UINT16 wPsdId);
|
||||
|
||||
/*
|
||||
* 功能描述:获取Esb采集容忍结果
|
||||
* 参数说明:const UINT16 wEsbId ESB编号
|
||||
* 返 回 值:CI_ERROR 0 容忍结束
|
||||
* CI_SUCCESS 1 继续容忍
|
||||
* Created By LQ 2025.06.26
|
||||
*/
|
||||
UINT8 GetEsbCollTolerateRet(const UINT16 wEsbId);
|
||||
|
||||
/*
|
||||
* 功能描述:获取扣车按钮1采集容忍结果
|
||||
* 参数说明:const UINT16 wSignalId 信号机编号
|
||||
* 返 回 值:CI_ERROR 0 容忍结束
|
||||
* CI_SUCCESS 1 继续容忍
|
||||
* Created By LQ 2025.06.26
|
||||
*/
|
||||
UINT8 GetFstDetBtnCollTolerateRet(const UINT16 wSignalId);
|
||||
|
||||
/*
|
||||
* 功能描述:获取扣车按钮2采集容忍结果
|
||||
* 参数说明:const UINT16 wSignalId 信号机编号
|
||||
* 返 回 值:CI_ERROR 0 容忍结束
|
||||
* CI_SUCCESS 1 继续容忍
|
||||
* Created By LQ 2025.06.26
|
||||
*/
|
||||
UINT8 GetSndDetBtnCollTolerateRet(const UINT16 wSignalId);
|
||||
|
||||
/*
|
||||
* 功能描述: 设置所有道岔转辙机位置
|
||||
* 参数说明: UINT16 switchCurSum 道岔总数
|
||||
* 返回值 : 无
|
||||
*/
|
||||
void SetAllSingleSwitchZzjState(UINT16 switchCurSum);
|
||||
|
||||
/*
|
||||
* 功能描述: 指定洗车机ID降级模式洗车按钮状态更新
|
||||
* 参数说明: const UINT16 washMachineId 洗车机ID
|
||||
* 返回值 : void
|
||||
*/
|
||||
void WashMachineButtonStateProc(const UINT16 washMachineId);
|
||||
|
||||
/*
|
||||
* 功能描述: 指定洗车机ID降级模式请求信息处理
|
||||
* 参数说明: const UINT16 washMachineId 洗车机ID
|
||||
* 返回值 : void
|
||||
*/
|
||||
void WashMachineApplyStateProc(const UINT16 washMachineId);
|
||||
|
||||
/*
|
||||
* 功能描述: 指定洗车机ID降级模式洗车请求信息处理
|
||||
* 参数说明: const UINT16 washMachineId 洗车机ID
|
||||
* 返回值 : void
|
||||
*/
|
||||
void WashMachineApplyProc(const UINT16 washMachineId);
|
||||
|
||||
/*
|
||||
* 功能描述: 指定洗车机ID降级模式反向通过请求信息处理
|
||||
* 参数说明: const UINT16 washMachineId 洗车机ID
|
||||
* 返回值 : void
|
||||
*/
|
||||
void WashMachinePassApplyProc(const UINT16 washMachineId);
|
||||
|
||||
/*
|
||||
* 功能描述: 洗车线控制室更新洗车同意按钮逻辑
|
||||
* 参数说明: const UINT16 washMachineId 洗车机ID
|
||||
* 返回值 : void
|
||||
*/
|
||||
void WashMachineButtonUpdate(const UINT16 washMachineId);
|
||||
|
||||
/*
|
||||
* 功能描述: DCC更新洗车同意按钮逻辑
|
||||
* 参数说明: const UINT16 washMachineId 洗车机ID
|
||||
* 返回值 : void
|
||||
*/
|
||||
void WashMachineDCCButtonUpdate(const UINT16 washMachineId);
|
||||
|
||||
/*
|
||||
* 功能描述: 融合洗车同意状态
|
||||
* 参数说明: const UINT16 washMachineId 洗车机ID
|
||||
* 返回值 : void
|
||||
*/
|
||||
void FusionWashMachineAllowState(const UINT16 washMachineId);
|
||||
|
||||
/*
|
||||
* 功能描述: 洗车线控制室更新反向洗车同意按钮逻辑
|
||||
* 参数说明: const UINT16 washMachineId 洗车机ID
|
||||
* 返回值 : void
|
||||
*/
|
||||
void WashMachinePassButtonUpdate(const UINT16 washMachineId);
|
||||
|
||||
/*
|
||||
* 功能描述: DCC更新反向洗车同意按钮逻辑
|
||||
* 参数说明: const UINT16 washMachineId 洗车机ID
|
||||
* 返回值 : void
|
||||
*/
|
||||
void WashMachineDCCPassButtonUpdate(const UINT16 washMachineId);
|
||||
|
||||
/*
|
||||
* 功能描述: 融合反向通过同意按钮状态
|
||||
* 参数说明: const UINT16 washMachineId 洗车机ID
|
||||
* 返回值 : void
|
||||
*/
|
||||
void FusionWashMachinePassAllowState(const UINT16 washMachineId);
|
||||
|
||||
/*
|
||||
* 功能描述: 降级模式洗车线洗车请求指示灯
|
||||
* 参数说明: const UINT16 washMachineId 洗车机ID
|
||||
* 返回值 :void
|
||||
*/
|
||||
void WashMachineApplyLight(const UINT16 washMachineId);
|
||||
|
||||
/*
|
||||
* 功能描述: 降级模式DCC洗车请求指示灯
|
||||
* 参数说明: const UINT16 washMachineId 洗车机ID
|
||||
* 返回值 :void
|
||||
*/
|
||||
void WashMachineDccApplyLight(const UINT16 washMachineId);
|
||||
|
||||
/*
|
||||
* 功能描述: 降级模式洗车线洗车反向通过请求指示灯
|
||||
* 参数说明: const UINT16 washMachineId 洗车机ID
|
||||
* 返回值 :void
|
||||
*/
|
||||
void WashMachinePassApplyLight(const UINT16 washMachineId);
|
||||
|
||||
/*
|
||||
* 功能描述: 降级模式DCC洗车反向通过请求指示灯
|
||||
* 参数说明: const UINT16 washMachineId 洗车机ID
|
||||
* 返回值 :void
|
||||
*/
|
||||
void WashMachineDccPassApplyLight(const UINT16 washMachineId);
|
||||
|
||||
/*
|
||||
* 功能描述: 降级模式洗车同意指示灯
|
||||
* 参数说明: const UINT16 washMachineId 洗车机ID
|
||||
* 返回值 :void
|
||||
*/
|
||||
void WashMachineAllowLight(const UINT16 washMachineId);
|
||||
|
||||
/*
|
||||
* 功能描述: 降级模式DCC洗车同意指示灯
|
||||
* 参数说明: const UINT16 washMachineId 洗车机ID
|
||||
* 返回值 :void
|
||||
*/
|
||||
void WashMachineDccAllowLight(const UINT16 washMachineId);
|
||||
|
||||
/*
|
||||
* 功能描述: 降级模式洗车同意反向通过指示灯
|
||||
* 参数说明: const UINT16 washMachineId 洗车机ID
|
||||
* 返回值 :void
|
||||
*/
|
||||
void WashMachinePassAllowLight(const UINT16 washMachineId);
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述: 降级模式DCC洗车同意反向通过指示灯
|
||||
* 参数说明: const UINT16 washMachineId 洗车机ID
|
||||
* 返回值 :void
|
||||
*/
|
||||
void WashMachineDccPassAllowLight(const UINT16 washMachineId);
|
||||
|
||||
/*
|
||||
* 功能描述: 更新屏蔽门对应IBP盘发车按钮继电器状态
|
||||
* 参数说明: const UINT16 wPsdId 屏蔽门ID
|
||||
* 返回值 : CI_ERROR: 更新失败
|
||||
* CI_SUCCESS: 更新成功
|
||||
*/
|
||||
UINT8 PsdIbpRelToDevStaProc(const UINT16 wPsdId);
|
||||
|
||||
/*
|
||||
* 功能描述:同站紧急按钮及旁路按钮状态处理
|
||||
* 参数说明:void
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.12.30
|
||||
*/
|
||||
void OnePlatEsbAndCutBtnProc(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
+3258
-2505
File diff suppressed because it is too large
Load Diff
@@ -128,14 +128,6 @@ void ProcessPscToCiData(void);
|
||||
*/
|
||||
UINT8 ProcessAtsOrXianDiToCiData(void);
|
||||
|
||||
/*
|
||||
* 功能描述: 处理车辆段的ATS或现地到CI数据
|
||||
* 参数说明: void
|
||||
* 返回值 : 0:处理失败
|
||||
* 1:处理成功
|
||||
*/
|
||||
UINT8 ProcessAtsOrXianDiToCiDataCld(void);
|
||||
|
||||
/*
|
||||
* 功能描述: 处理设备逻辑状态
|
||||
* 参数说明: void
|
||||
@@ -304,7 +296,7 @@ UINT8 CheckOrderWhetherDoing(UINT8 virCIid,UINT8 belongVirCIid,UINT8 orderType,U
|
||||
* UINT8 MaskType 码位类型
|
||||
* 返回值 : 无
|
||||
*/
|
||||
void DealAutoReturnMask_UseVirCI(UINT16 DeviceId,UINT16*maskBuf,UINT8 MaskType,UINT16 index);
|
||||
void DealAutoReturnMask(UINT16 DeviceId,UINT8* pMaskBuf,UINT8 MaskType,UINT16 index);
|
||||
/*
|
||||
* 功能描述: 获取全站维修点灯状态
|
||||
* 参数说明: UINT8 virCIid 虚拟联锁ID
|
||||
@@ -451,6 +443,101 @@ void LogRouteCleanOldPhySecLockProc(const UINT16 wPreRouteId);
|
||||
*/
|
||||
void OtherPartRouteCleanLogRouteProc(const UINT16 wCurRouteId);
|
||||
|
||||
/*
|
||||
* 功能描述:处理OC->CI的PSD数据
|
||||
* 参数说明: void
|
||||
* 返回值 : void
|
||||
*/
|
||||
void ProcessOCToCiPsdData(void);
|
||||
|
||||
/*
|
||||
* 功能描述: 处理OC到CI的不一致继电器数据
|
||||
* 参数说明: void
|
||||
* 返回值 : 0:处理失败
|
||||
* 1:处理成功
|
||||
*/
|
||||
void ProcessOcToCiRelayDiffData(void);
|
||||
|
||||
/*
|
||||
* 功能描述:处理CI与RC间通信状态和数据
|
||||
* 参数说明:void
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.11.04
|
||||
*/
|
||||
void ProcessCiAndRcInfo(void);
|
||||
|
||||
/**
|
||||
* @brief 保护区段解锁申请
|
||||
* @param[in] 无
|
||||
* @return 无
|
||||
* @note by cgh 20251107
|
||||
*/
|
||||
void OverlapUnlockApplyDeal(void);
|
||||
|
||||
|
||||
/**
|
||||
* @brief 进路停车保证处理
|
||||
* @param[in] 无
|
||||
* @return 无
|
||||
* @note by cgh 20251107
|
||||
*/
|
||||
void RouteStopensureDeal(void);
|
||||
|
||||
/**
|
||||
* @brief 更新双系统融合数据
|
||||
* @param[in] void
|
||||
* @return 无
|
||||
* @note by cgh 20251106
|
||||
*/
|
||||
void UpdateDoubleSystemMergeInfo(void);
|
||||
|
||||
/*
|
||||
* 功能描述:逻辑区段信息融合处理
|
||||
* 参数说明:无
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.11.07
|
||||
*/
|
||||
void LogSecInfoMergePro(void);
|
||||
|
||||
/*
|
||||
* 功能描述:雨雪信息融合处理
|
||||
* 参数说明:无
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.11.10
|
||||
*/
|
||||
void SnowInfoMergePro(void);
|
||||
|
||||
/**
|
||||
* @brief 进路停车保证信息融合
|
||||
* @param[in] void
|
||||
* @return 无
|
||||
* @note by cgh 20251106
|
||||
*/
|
||||
void RouteStopensureFlagMergeDeal(void);
|
||||
|
||||
/**
|
||||
* @brief 信号机信息融合处理
|
||||
* @param[in] void
|
||||
* @return 无
|
||||
* @note by cgh 20251106
|
||||
*/
|
||||
void SignalInfoMergeDeal(void);
|
||||
|
||||
/*
|
||||
* 功能描述:信号机列车跨压处理
|
||||
* 参数说明:无
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.11.11
|
||||
*/
|
||||
void SignalTrainCrossPro(void);
|
||||
|
||||
/*
|
||||
* 功能描述: 处理VOBC到CI数据
|
||||
* 参数说明: void
|
||||
* 返回值 : void
|
||||
*/
|
||||
void ProcessIvocToRCData(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
+1207
-1115
File diff suppressed because it is too large
Load Diff
@@ -92,6 +92,7 @@ UINT8 CiToAtsBackInfoFunctionJudge(const UINT8 functionId,const UINT8 deviceType
|
||||
*/
|
||||
void IndicatorStateProc(void);
|
||||
|
||||
#if 0
|
||||
/*
|
||||
* 功能描述: 指示器状态处理
|
||||
* 参数说明: void
|
||||
@@ -99,6 +100,7 @@ void IndicatorStateProc(void);
|
||||
*/
|
||||
void IndicatorStateProc_UseVirCI(UINT8 virCIid);
|
||||
|
||||
#endif
|
||||
/*
|
||||
* 功能描述: 非进路继电器状态处理
|
||||
* 参数说明: void
|
||||
@@ -147,12 +149,7 @@ void SignaDsBreakAlarmIndicator_Vir(UINT8 virCIid,UINT8 devId);
|
||||
*/
|
||||
void CiToCiOutputCmdProc(void);
|
||||
|
||||
/*
|
||||
* 功能描述: 根据无人折返指示灯的闪灯和稳灯状态驱动继电器或设置状态
|
||||
* 参数说明: 无
|
||||
* 返回值 : 无
|
||||
*/
|
||||
static void AutoRtnIndictStatusProc_VirCI(void);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取组合自动进路所属虚拟联锁ID
|
||||
* 参数说明: groupAutoRouteId 组合自动进路的ID
|
||||
@@ -456,6 +453,78 @@ UINT8 FindRouteLeaveAxis(const UINT16 routeId);
|
||||
*/
|
||||
void RtnRealyAdhesionStatePro(void);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取人工解锁保护区段剩余倒计时
|
||||
* 参数说明: const UINT16 overlapId 保护区段id
|
||||
* 返回值 : 倒计时
|
||||
* by cgh 20250928
|
||||
*/
|
||||
UINT16 GetOverlapLaborUnlockBackTime(const UINT16 overlapId);
|
||||
/*
|
||||
* 功能描述: 设置联锁I系II系工作状态指示灯
|
||||
* 参数说明: const UINT16 wFIndicatorId I系指示灯id
|
||||
* const UINT16 wSIndicatorId II系指示灯id
|
||||
* 返回值 : 无
|
||||
* by lyj 20260105
|
||||
*/
|
||||
void SetWorkStatusIndicator(const UINT16 wFIndicatorId, const UINT16 wSIndicatorId);
|
||||
/*
|
||||
* 功能描述: 设置信号故障关闭指示灯
|
||||
* 参数说明: const UINT16 wIndicatorId 指示灯id
|
||||
* 返回值 : 无
|
||||
* by lyj 20260105
|
||||
*/
|
||||
void SetSigFaultCloseIndicator(const UINT16 wIndicatorId);
|
||||
/*
|
||||
* 功能描述: 设置道岔挤岔指示灯
|
||||
* 参数说明: const UINT16 wIndicatorId 指示灯id
|
||||
* 返回值 : 无
|
||||
* by lyj 20260105
|
||||
*/
|
||||
void SetSwitchJiChaIndicator(const UINT16 wIndicatorId);
|
||||
/*
|
||||
* 功能描述: 设置车库门故障指示灯
|
||||
* 参数说明: const UINT16 wIndicatorId 指示灯id
|
||||
* 返回值 : 无
|
||||
* by lyj 20260105
|
||||
*/
|
||||
void SetGDoorFaultIndicator(const UINT16 wIndicatorId);
|
||||
/*
|
||||
* 功能描述: 设置继电器混线指示灯
|
||||
* 参数说明: const UINT16 wIndicatorId 指示灯id
|
||||
* 返回值 : 无
|
||||
* by lyj 20260105
|
||||
*/
|
||||
void SetRealyHunXianIndicator(const UINT16 wIndicatorId);
|
||||
/*
|
||||
* 功能描述: 设置应急盘指示灯
|
||||
* 参数说明: const UINT16 wIndicatorId 指示灯id
|
||||
* 返回值 : 无
|
||||
* by lyj 20260106
|
||||
*/
|
||||
void SetYjpIndicator(const UINT16 wIndicatorId);
|
||||
/*
|
||||
* 功能描述: 设置试车请求指示灯
|
||||
* 参数说明: const UINT16 wIndicatorId 指示灯id
|
||||
* 返回值 : 无
|
||||
* by lyj 20260106
|
||||
*/
|
||||
void SetSCApplyIndicator(const UINT16 wIndicatorId);
|
||||
/*
|
||||
* 功能描述: 设置试车同意指示灯
|
||||
* 参数说明: const UINT16 wIndicatorId 指示灯id
|
||||
* 返回值 : 无
|
||||
* by lyj 20260106
|
||||
*/
|
||||
void SetSCAllowIndicator(const UINT16 wIndicatorId);
|
||||
/*
|
||||
* 功能描述: 设置试车结束指示灯
|
||||
* 参数说明: const UINT16 wIndicatorId 指示灯id
|
||||
* 返回值 : 无
|
||||
* by lyj 20260106
|
||||
*/
|
||||
void SetSCOverIndicator(const UINT16 wIndicatorId);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -18,7 +18,7 @@ UINT16 LocalCiIndicatorIdBuf[INDICATOR_SUM_MAX] = {0u};/*
|
||||
INT16 IndicatorCurSum = 0; /*指示器当前总数*/
|
||||
|
||||
OCStationIndicConfigDataStru g_OCStationIndicConfigDataStru[INDICATOR_SUM_MAX] = { 0u };
|
||||
UINT16 g_OCStationIndicatorCurSum = 0; /*本联锁OC站(集中站和非集中站)指示器总数,不涉及主备跟随,取值范围0-1000*/
|
||||
UINT16 g_OCStationIndicatorCurSum = 0; /*本联锁OC站(集中站和非集中站)指示器总数,不涉及主备跟随,取值范围 [0,2000) 暂无使用*/
|
||||
|
||||
|
||||
|
||||
@@ -423,7 +423,7 @@ UINT8 GetIndicatorDevId(UINT16 indicatorId)
|
||||
* >0u: 报警灯设备ID
|
||||
* by cgh 20240910
|
||||
*/
|
||||
UINT8 GetIndicatorRelNonReturnId(UINT16 indicatorId)
|
||||
UINT16 GetIndicatorRelNonReturnId(UINT16 indicatorId)
|
||||
{
|
||||
|
||||
UINT16 wRetVal = CI_ERROR;
|
||||
@@ -456,4 +456,30 @@ UINT8 GetIndicatorRelNonReturnId(UINT16 indicatorId)
|
||||
}
|
||||
|
||||
return wRetVal;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 根据指示灯ID获取指示灯虚拟联锁ID
|
||||
* 参数说明: UINT16 wIndicId 指示灯ID
|
||||
* 返回值 : 0u: 获取数据失败
|
||||
* >0u: 虚拟联锁ID
|
||||
* BY:lyj 20260105
|
||||
*/
|
||||
UINT8 GetIndicBelongRtuId(UINT16 wIndicId)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
UINT8 reVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetIndicatorConfigBufIndex(wIndicId); /*获取指示器相关继电器数组下标*/
|
||||
|
||||
if (INDICATOR_SUM_MAX > bufIndex)
|
||||
{
|
||||
reVal = IndicatorConfigDataStru[bufIndex].chBelongVirCIid;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
|
||||
return reVal;
|
||||
}
|
||||
|
||||
@@ -29,7 +29,8 @@ typedef struct S_IndicatorConfigDataStruct
|
||||
UINT8 AvalibleFlag;/*指示灯有效标志位 0x55无效 0xAA进路相关 0xAA继电器相关*/
|
||||
UINT8 IdSum; /*相关Id数量(配置字段)*/
|
||||
UINT16 IdBuf[INDICATOR_RELAY_SUM_MAX]; /*相关ID (配置字段)*/
|
||||
UINT8 BjdDeviceId; /*报警灯设备ID*/
|
||||
UINT8 BjdDeviceId; /*报警灯设备ID*/
|
||||
UINT8 chBelongVirCIid; /*所属虚拟联锁ID*/
|
||||
} IndicatorConfigDataStruct;
|
||||
|
||||
/*cgh-合并ECI11.0:OC站表示灯 OC站指一级集中站(CI+OC)的现地工作站、二级集中站(OC)的有岔非集现地工作站,中央联锁工作站*/
|
||||
@@ -183,7 +184,15 @@ UINT8 GetIndicatorDevId(UINT16 indicatorId);
|
||||
* >0u: 报警灯设备ID
|
||||
* by cgh 20240910
|
||||
*/
|
||||
UINT8 GetIndicatorRelNonReturnId(UINT16 indicatorId);
|
||||
UINT16 GetIndicatorRelNonReturnId(UINT16 indicatorId);
|
||||
/*
|
||||
* 功能描述: 根据指示灯ID获取指示灯虚拟联锁ID
|
||||
* 参数说明: UINT16 wIndicId 指示灯ID
|
||||
* 返回值 : 0u: 获取数据失败
|
||||
* >0u: 虚拟联锁ID
|
||||
* BY:lyj 20260105
|
||||
*/
|
||||
UINT8 GetIndicBelongRtuId(UINT16 wIndicId);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
|
||||
/*总数最大值*/
|
||||
#define INDICATOR_SUM_MAX ((UINT16)1000) /*指示器最大数量,每个联锁40个指示灯,总共按20个联锁 */
|
||||
#define INDICATOR_SUM_MAX ((UINT16)2000) /*指示器最大数量,每个联锁40个指示灯,总共按20个联锁 */
|
||||
#define INDICATOR_RELAY_SUM_MAX ((UINT16)5) /*指示器相关继电器最大数量*/
|
||||
#define RTNINDICATOR_SUM_MAX ((UINT8)2U) /*一个虚拟联锁集中区无人折返最大数量*/
|
||||
|
||||
@@ -64,7 +64,9 @@
|
||||
#define INDICATOR_TYPE_SWITCH_JICHA ((UINT8)0x24) /* 道岔挤岔状态 */
|
||||
#define INDICATOR_TYPE_GD_DAD ((UINT8)0x25) /* 车库门故障报警状态 */
|
||||
#define INDICATOR_TYPE_XICHEJI_ALLOW_STATE ((UINT8)0x26) /* 非FAO线路同意洗车状态指示灯 */
|
||||
#define INDICATOR_TYPE_DOWNWASH_ALLOW_PASS_STATE ((UINT8)0x29) /* 降级模式洗车同意通过指示灯 */
|
||||
#define INDICATOR_TYPE_DOWNWASH_ALLOW_PASS ((UINT8)0x29) /* 降级模式洗车同意通过指示灯 */
|
||||
#define INDICATOR_TYPE_DOWNWASH_APPLY ((UINT8)0x63) /* 降级模式洗车请求指示灯 */
|
||||
#define INDICATOR_TYPE_DOWNWASH_PASS_APPLY ((UINT8)0x64) /* 降级模式反向通过请求指示灯 */
|
||||
|
||||
#define INDICATOR_TYPE_ATS_CONFIRM_RELAY_INTERFACE ((UINT8)0x27) /*相邻联锁继电接口确认状态指示灯*/
|
||||
|
||||
|
||||
@@ -129,6 +129,9 @@ UINT8 InitAllStaticDataStr(void)
|
||||
/*声光报警器配置数据结构体*/
|
||||
chRtn &= CommonMemSet(SGBJConfigDataStru, (UINT32)(SGBJ_SUM_MAX * sizeof(SGBJConfigDataStruct)), 0u, (UINT32)(SGBJ_SUM_MAX * sizeof(SGBJConfigDataStruct)));
|
||||
|
||||
/*试灯数据配置结构体*/
|
||||
chRtn &= CommonMemSet(LightTestButtonConfigDataStru, (UINT32)(LIGHTTESTBUTTON_BUTTON_MAX_NUM * sizeof(LightTestButtonConfigDataStruct)), 0u, (UINT32)(LIGHTTESTBUTTON_BUTTON_MAX_NUM * sizeof(LightTestButtonConfigDataStruct)));
|
||||
|
||||
return chRtn;
|
||||
}
|
||||
|
||||
@@ -246,6 +249,7 @@ UINT8 ReadConfigureData(void)
|
||||
{
|
||||
; /*不处理*/
|
||||
}
|
||||
|
||||
if (0u == rtnVal)
|
||||
{
|
||||
PhysicalSectionCurSum = ReadPhySicalSectionConfigData(LocalCiId, PhysicalSectionConfigDataStru);/*读物理区段配置数据*/
|
||||
@@ -446,6 +450,13 @@ UINT8 ReadConfigureData(void)
|
||||
|
||||
if (0u == rtnVal)
|
||||
{
|
||||
IndicatorCurSum = ReadIndicatorConfigData(LocalCiId, IndicatorConfigDataStru); /*读指示灯报警灯配置数据*/
|
||||
if (-1 == IndicatorCurSum)
|
||||
{
|
||||
rtnVal = 20u;/*读取指示灯报警灯配置数据失败*/
|
||||
debug_infor_printf((const)"ReadIndicatorConfigData fail.");
|
||||
}
|
||||
#if 0
|
||||
includeVirFlag = GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG);
|
||||
if (FUNC_SWITCH_ON == includeVirFlag)
|
||||
{
|
||||
@@ -468,15 +479,7 @@ UINT8 ReadConfigureData(void)
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
IndicatorCurSum = ReadIndicatorConfigData(LocalCiId, IndicatorConfigDataStru); /*读指示灯报警灯配置数据*/
|
||||
if (-1 == IndicatorCurSum)
|
||||
{
|
||||
rtnVal = 20u;/*读取指示灯报警灯配置数据失败*/
|
||||
debug_infor_printf((const)"ReadIndicatorConfigData fail.");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -552,7 +555,23 @@ UINT8 ReadConfigureData(void)
|
||||
{
|
||||
; /*不处理*/
|
||||
}
|
||||
|
||||
if (0u == rtnVal)
|
||||
{
|
||||
LightTestButtonCurSum = ReadLightTestConfigData(LocalCiId, LightTestButtonConfigDataStru); /*读OC试灯按钮配置数据*/
|
||||
if (-1 == LightTestButtonCurSum)
|
||||
{
|
||||
rtnVal = 44u;/*读取OC试灯按钮数据失败*/
|
||||
debug_infor_printf((const)"\nReadLightTestConfigData fail.\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*不处理*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*不处理*/
|
||||
}
|
||||
if (0u == rtnVal)
|
||||
{
|
||||
CiToAtsMaskCurSum = ReadCiToAtsMaskConfigData(LocalCiId, CiToAtsMaskConfigDataStru); /*读CI-ATS配置数据*/
|
||||
@@ -919,7 +938,7 @@ UINT8 ReadConfigureData(void)
|
||||
g_ret = ReadEaConfigData(g_szEaConfig);
|
||||
if (-1 == g_ret)
|
||||
{
|
||||
rtnVal = 37u;
|
||||
rtnVal = 40u;
|
||||
debug_infor_printf((const)"ReadEaConfigData errcode =%d, ReadEaConfigData", rtnVal);
|
||||
}
|
||||
else
|
||||
@@ -1041,7 +1060,26 @@ UINT8 ReadConfigureData(void)
|
||||
if (0 == g_ret)
|
||||
{
|
||||
debug_infor_printf((const)"PhySectionNearConfigDataManage Error\n");
|
||||
rtnVal = 37u;
|
||||
rtnVal = 41u;
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*不处理*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*不处理*/
|
||||
}
|
||||
|
||||
if (0U == rtnVal)
|
||||
{
|
||||
/*读取物理区段在计轴中的索引*/
|
||||
g_ret = (INT16)ReadPhySecIndexInAxle(LocalCiId, PhysicalSectionConfigDataStru);
|
||||
if (0 == g_ret)
|
||||
{
|
||||
debug_infor_printf((const)"ReadPhySecIndexInAxle Error\n");
|
||||
rtnVal = 42u;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1064,6 +1102,31 @@ UINT8 ReadConfigureData(void)
|
||||
rtnVal = 2u;
|
||||
}
|
||||
|
||||
if (0u == rtnVal)
|
||||
{
|
||||
g_ret = QueryTrackBelongLink();
|
||||
if (CI_ERROR == g_ret)
|
||||
{
|
||||
debug_infor_printf((const)"QueryTrackBelongLink Error\n");
|
||||
rtnVal = 43u;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
|
||||
if (0u == rtnVal)
|
||||
{
|
||||
/*设置试车线与车辆段合设配置*/
|
||||
g_ret = SetCldAndScxMergeConfig();
|
||||
if (CI_ERROR == g_ret)
|
||||
{
|
||||
debug_infor_printf((const)"SetCldAndScxMergeConfig fail.\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1080,7 +1143,6 @@ UINT8 ReadConfigureData(void)
|
||||
UINT8 DeviceDataManage(void)
|
||||
{
|
||||
UINT8 rtValue = 0u;
|
||||
UINT8 includeVirFlag= GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG);
|
||||
UINT8 reval = CI_ERROR;
|
||||
/*整理继电器数据*/
|
||||
if (CI_ERROR == RelayConfigDataManage())
|
||||
@@ -1204,6 +1266,7 @@ UINT8 DeviceDataManage(void)
|
||||
{
|
||||
rtValue = 0u;
|
||||
}
|
||||
#if 0
|
||||
if(FUNC_SWITCH_ON == includeVirFlag)
|
||||
{
|
||||
reval = InitVirCIlocalCiIndicatorIdBuf();
|
||||
@@ -1212,14 +1275,16 @@ UINT8 DeviceDataManage(void)
|
||||
rtValue = 1u;
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif
|
||||
if (0U == rtValue)
|
||||
{
|
||||
reval = IndicatorConfigDataManage();
|
||||
if(CI_ERROR == reval)
|
||||
if (CI_ERROR == reval)
|
||||
{
|
||||
rtValue = 1u;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (0U == rtValue)
|
||||
{
|
||||
@@ -1280,7 +1345,8 @@ UINT8 SetautoRouteOpposedRoute(UINT16 autoRouteRouteId,UINT8 routeType)
|
||||
autoRouteSum = GetAutoRouteRouteCurSum();/*自动进路数目*/
|
||||
autoReturnSum = GetAutoReturnRouteCurSum();/*自动折返进路数目*/
|
||||
allAutoReturnSum = GetAllAutoReturnRouteCurSum();/*全自动折返进路数目*/
|
||||
if ((autoRouteSum >= AUTO_ROUTE_SUM_MAX) || (autoReturnSum >= AUTO_RETURN_SUM_MAX))
|
||||
if ((AUTO_ROUTE_SUM_MAX <= autoRouteSum) || (AUTO_RETURN_SUM_MAX<=autoReturnSum )
|
||||
||(ALL_AUTO_RETURN_SUM_MAX <= allAutoReturnSum))
|
||||
{/*配置数据总数错误*/
|
||||
returnValue = CI_ERROR;
|
||||
}
|
||||
@@ -2020,6 +2086,11 @@ INT8 OcConnectConfigDataToDevStruct(SignalConfigDataStruct* pSignalCfgData, Phys
|
||||
{
|
||||
pSwitchCfgData[j].ByPassRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayId;
|
||||
}
|
||||
/*IBP*/
|
||||
else if(SWITCH_IBP_TYPE == pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayType)
|
||||
{
|
||||
pSwitchCfgData[j].IbpDrvRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].DrvRelayId;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不做处理*/
|
||||
@@ -3426,4 +3497,40 @@ UINT16 GetTiocDeviceConfigData(UINT32* pConfigDataAddrBuf,UINT16* pConfigDataLen
|
||||
|
||||
|
||||
return wRetSum;
|
||||
}
|
||||
|
||||
/*********************************************
|
||||
*函数功能:读取指定CI与指定设备通信关系配置数据
|
||||
*参数说明:const UINT8 chCiId 联锁ID
|
||||
* const UINT8 chSystemType 设备类型
|
||||
* UINT8 szDeviceIdBuf[TRANSMIT_OBJECT_DEVICE_SUM_MAX] 输出的设备ID
|
||||
*返回值:通信关系数
|
||||
* by cgh 20250605
|
||||
*********************************************/
|
||||
UINT8 ReadCiTransmitSpecifyDevData(const UINT8 chCiId, const UINT8 chSystemType, UINT8 szDeviceIdBuf[TRANSMIT_OBJECT_DEVICE_SUM_MAX])
|
||||
{
|
||||
UINT16 ii = 0U;
|
||||
UINT8 chReval = 0U;
|
||||
|
||||
if ((0U != chCiId) && (NULL != szDeviceIdBuf))
|
||||
{
|
||||
for (ii = 0U; ii < dquCICfgDtStr.TrsmtRlsDtStrLen; ii++)
|
||||
{
|
||||
if ((chCiId == dquCICfgDtStr.TrsmtRlsDtStr[ii].CiId) && (chSystemType == dquCICfgDtStr.TrsmtRlsDtStr[ii].SystemType))
|
||||
{
|
||||
chReval = dquCICfgDtStr.TrsmtRlsDtStr[ii].DeviceSum;
|
||||
(void)CommonMemCpy((void*)(szDeviceIdBuf), (UINT32)(sizeof(UINT8) * TRANSMIT_OBJECT_DEVICE_SUM_MAX), (const void*)(dquCICfgDtStr.TrsmtRlsDtStr[ii].DeviceIdBuf), (UINT32)(sizeof(UINT8) * TRANSMIT_OBJECT_DEVICE_SUM_MAX));
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
chReval = UINT8_MAX;
|
||||
}
|
||||
|
||||
return chReval;
|
||||
}
|
||||
@@ -60,6 +60,7 @@
|
||||
#include "../Route/LongRouteConfigDataManage.h"
|
||||
#include "../SGBJ/SGBJConfigDataManage.h"
|
||||
#include "../VirtualDevice/VirtualDevDataManage.h"
|
||||
#include "LightTestButtonConfigDataManage.h"
|
||||
|
||||
extern INT16 trackCheckRes;
|
||||
extern INT16 g_ret;
|
||||
@@ -160,6 +161,16 @@ INT8 OcConnectConfigDataToDevStruct(SignalConfigDataStruct* pSignalCfgData, Phys
|
||||
*返回值:静态数据数量
|
||||
*********************************************/
|
||||
UINT16 GetTiocDeviceConfigData(UINT32* pConfigDataAddrBuf, UINT16* pConfigDataLenBuf, UINT16 wBufMaxLen);
|
||||
|
||||
/*********************************************
|
||||
*函数功能:读取指定CI与指定设备通信关系配置数据
|
||||
*参数说明:const UINT8 chCiId 联锁ID
|
||||
* const UINT8 chSystemType 设备类型
|
||||
* UINT8 szDeviceIdBuf[TRANSMIT_OBJECT_DEVICE_SUM_MAX] 输出的设备ID
|
||||
*返回值:通信关系数
|
||||
* by cgh 20250605
|
||||
*********************************************/
|
||||
UINT8 ReadCiTransmitSpecifyDevData(const UINT8 chCiId, const UINT8 chSystemType, UINT8 szDeviceIdBuf[TRANSMIT_OBJECT_DEVICE_SUM_MAX]);
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -243,7 +243,12 @@ UINT8 InitialPhySecIdBufOfOtherCi(void);
|
||||
* 返回值 : void
|
||||
*/
|
||||
void ResetDynamicState(const UINT8 ciId);
|
||||
|
||||
/*
|
||||
* 功能描述:重置相邻Rc通信中断动态数据
|
||||
* 参数说明:const UINT8 ciId, 重置联锁ID
|
||||
* 返回值 : void
|
||||
*/
|
||||
void ResetDynamicRcState(const UINT8 ciId);
|
||||
|
||||
/*
|
||||
* 功能描述: 初始化全自动折返进路数据
|
||||
@@ -330,6 +335,24 @@ UINT8 InitLEUDataStru(void);
|
||||
*/
|
||||
UINT8 InitialRtnIndicStaData(void);
|
||||
|
||||
/*
|
||||
* 功能描述:重置本控区RC的设备动态数据
|
||||
* 参数说明:void
|
||||
* 返 回 值:void
|
||||
* Created By LQ 2025.11.07
|
||||
*/
|
||||
void ResetLocalRcDynamicState(void);
|
||||
|
||||
/*
|
||||
* 功能描述:重置控区设备状态处理
|
||||
* 参数说明:void
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.11.19
|
||||
*/
|
||||
void ResetDevStateProcess(void);
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#ifndef __INVADESECTION_DEFINE_H_
|
||||
#define __INVADESECTION_DEFINE_H_
|
||||
|
||||
#define INVA_SECT_N_COND_SWIT_SUM_MAX ((UINT16)300) /*侵限区段与相关条件道岔数据条目最大数量*/
|
||||
#define INVA_SECT_N_COND_SWIT_SUM_MAX ((UINT16)400) /*侵限区段与相关条件道岔数据条目最大数量*/
|
||||
|
||||
#define COND_SWITCH_SUM_MAX ((UINT16)16) /*单一侵限区段与相关条件道岔数据条目内,条件道岔最大数量*/
|
||||
|
||||
|
||||
@@ -0,0 +1,129 @@
|
||||
/********************************************************
|
||||
*
|
||||
* 文 件 名: LightTestButtonConfigDataManage.c
|
||||
* 版权说明: 北京交控科技有限公司
|
||||
* 创建时间: 2025-12-09
|
||||
* 作 者: 联锁组
|
||||
* 功能描述: 试灯按钮配置数据管理
|
||||
* 修改记录:
|
||||
*
|
||||
********************************************************/
|
||||
|
||||
#include "LightTestButtonConfigDataManage.h"
|
||||
|
||||
LightTestButtonConfigDataStruct LightTestButtonConfigDataStru[LIGHTTESTBUTTON_BUTTON_MAX_NUM] = {0}; /*定义试灯按钮数据配置结构体*/
|
||||
INT16 LightTestButtonCurSum = 0; /*试灯按钮当前总数*/
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述: 获取试灯按钮当前总数
|
||||
* 参数说明: void
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 试灯按钮当前总数
|
||||
*/
|
||||
UINT16 GetLightTestButtonCurSum(void)
|
||||
{
|
||||
UINT16 retVal = 0u;
|
||||
if (LIGHTTESTBUTTON_BUTTON_MAX_NUM <= ((UINT16)LightTestButtonCurSum))
|
||||
{
|
||||
retVal = LIGHTTESTBUTTON_BUTTON_MAX_NUM;
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = (UINT16)LightTestButtonCurSum;
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
/*
|
||||
* 功能描述: 获取试灯按钮的ID
|
||||
* 参数说明: UINT16 index 试灯按钮索引
|
||||
* 返回值 UINT16 retVal 试灯按钮ID
|
||||
*/
|
||||
UINT16 GetLightTestButtonId(UINT16 index)
|
||||
{
|
||||
UINT16 retVal = 0u;
|
||||
UINT16 lightTestButtonCurSum = GetLightTestButtonCurSum();
|
||||
if (index < lightTestButtonCurSum)
|
||||
{
|
||||
retVal = LightTestButtonConfigDataStru[index].LightTestButtonId;
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取试灯按钮ID对应的继电器数据
|
||||
* 参数说明: UINT16 lightTestButtonId 试灯按钮ID
|
||||
* 返回值 :
|
||||
LightTestButtonConfigDataStruct *
|
||||
*/
|
||||
LightTestButtonConfigDataStruct *GetLightTestButtonConfigData(UINT16 lightTestButtonId)
|
||||
{
|
||||
LightTestButtonConfigDataStruct *retVal = NULL;
|
||||
UINT16 i = 0u;
|
||||
UINT16 lightTestButtonCurSum = GetLightTestButtonCurSum();
|
||||
|
||||
for (i = 0u; i < lightTestButtonCurSum; i++)
|
||||
{
|
||||
if (lightTestButtonId == LightTestButtonConfigDataStru[i].LightTestButtonId)
|
||||
{
|
||||
retVal = &LightTestButtonConfigDataStru[i];
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取试灯按钮ID对应继电器的总数量
|
||||
* 参数说明: UINT16 lightTestButtonId 试灯按钮ID
|
||||
* 返回值 : UINT16 lightTestButtonRelayNum 继电器数量
|
||||
*/
|
||||
UINT16 GetLightTestButtonRelayNum(UINT16 lightTestButtonId)
|
||||
{
|
||||
UINT16 lightTestButtonRelayNum = 0u;
|
||||
LightTestButtonConfigDataStruct *lightTestButtonConfigData = GetLightTestButtonConfigData(lightTestButtonId);
|
||||
if (NULL != lightTestButtonConfigData)
|
||||
{
|
||||
lightTestButtonRelayNum = lightTestButtonConfigData->LightTestButtonRelayNum;
|
||||
}
|
||||
else
|
||||
{
|
||||
; /* 不处理 */
|
||||
}
|
||||
return lightTestButtonRelayNum;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取试灯按钮ID对应继电器ID
|
||||
* 参数说明: UINT16 lightTestButtonId 试灯按钮ID
|
||||
* UINT16 index 继电器索引
|
||||
* 返回值 : UINT16 lightTestButtonRelayId 继电器ID
|
||||
*/
|
||||
UINT16 GetLightTestButtonRelayId(UINT16 lightTestButtonId, UINT16 index)
|
||||
{
|
||||
UINT16 lightTestButtonRelayId = 0u;
|
||||
LightTestButtonConfigDataStruct *lightTestButtonConfigData = GetLightTestButtonConfigData(lightTestButtonId);
|
||||
if (NULL != lightTestButtonConfigData)
|
||||
{
|
||||
if (index < lightTestButtonConfigData->LightTestButtonRelayNum)
|
||||
{
|
||||
lightTestButtonRelayId = lightTestButtonConfigData->LightRelayId[index];
|
||||
}
|
||||
else
|
||||
{
|
||||
; /* 不处理 */
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
; /* 不处理 */
|
||||
}
|
||||
return lightTestButtonRelayId;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
/********************************************************
|
||||
*
|
||||
* 文 件 名: LightTestButtonConfigDataManage.h
|
||||
* 版权说明: 北京交控科技有限公司
|
||||
* 创建时间: 2025-12-09
|
||||
* 作 者: 联锁组
|
||||
* 功能描述: 试灯按钮配置数据管理头文件
|
||||
* 函数包括:
|
||||
* 使用注意:
|
||||
* 修改记录:
|
||||
*
|
||||
********************************************************/
|
||||
|
||||
#ifndef _LIGHTTESTBUTTON_CONFIG_DATA_MANAGE_H_
|
||||
#define _LIGHTTESTBUTTON_CONFIG_DATA_MANAGE_H_
|
||||
|
||||
|
||||
#include "LightTestButtonDefine.h"
|
||||
|
||||
|
||||
typedef struct S_LightTestButtonConfigDataStruct
|
||||
{
|
||||
UINT16 LightTestButtonId; /* 试灯按钮ID (配置字段) */
|
||||
UINT16 BelongOcId; /* 所属OC ID (配置字段) */
|
||||
UINT8 LightTestButtonType; /* 试灯按钮类型 (配置字段) */
|
||||
UINT16 LightTestButtonRelayNum; /* 试灯表示灯继电器数量 */
|
||||
UINT16 LightRelayId[LIGHTTESTBUTTON_LIGHT_SUPPORT_MAX_NUM]; /* 试灯表示灯继电器ID数组 */
|
||||
}LightTestButtonConfigDataStruct;
|
||||
|
||||
|
||||
extern LightTestButtonConfigDataStruct LightTestButtonConfigDataStru[LIGHTTESTBUTTON_BUTTON_MAX_NUM]; /*定义试灯按钮数据配置结构体*/
|
||||
extern INT16 LightTestButtonCurSum; /*试灯按钮当前总数*/
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* 功能描述: 获取试灯按钮当前总数
|
||||
* 参数说明: void
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 信试灯按钮当前总数
|
||||
*/
|
||||
UINT16 GetLightTestButtonCurSum(void);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取试灯按钮的ID
|
||||
* 参数说明: UINT16 index 试灯按钮索引
|
||||
* 返回值 UINT16 retVal 试灯按钮ID
|
||||
*/
|
||||
UINT16 GetLightTestButtonId(UINT16 index);
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述: 获取试灯按钮ID对应的继电器数据
|
||||
* 参数说明: UINT16 lightTestButtonId 试灯按钮ID
|
||||
* 返回值 :
|
||||
LightTestButtonConfigDataStruct *
|
||||
*/
|
||||
LightTestButtonConfigDataStruct *GetLightTestButtonConfigData(UINT16 lightTestButtonId);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取试灯按钮ID对应继电器的总数量
|
||||
* 参数说明: UINT16 lightTestButtonId 试灯按钮ID
|
||||
* 返回值 : UINT16 lightTestButtonRelayNum 继电器数量
|
||||
*/
|
||||
UINT16 GetLightTestButtonRelayNum(UINT16 lightTestButtonId);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取试灯按钮ID对应继电器ID
|
||||
* 参数说明: UINT16 lightTestButtonId 试灯按钮ID
|
||||
* UINT16 index 继电器索引
|
||||
* 返回值 : UINT16 lightTestButtonRelayId 继电器ID
|
||||
*/
|
||||
UINT16 GetLightTestButtonRelayId(UINT16 lightTestButtonId, UINT16 index);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,63 @@
|
||||
/********************************************************
|
||||
*
|
||||
* 文 件 名: LightTestButtonDataManage.c
|
||||
* 版权说明: 北京交控科技有限公司
|
||||
* 创建时间: 2025-12-09
|
||||
* 作 者: 联锁组
|
||||
* 功能描述: 试灯按钮数据管理
|
||||
* 修改记录:
|
||||
*
|
||||
********************************************************/
|
||||
|
||||
#include "LightTestButtonDataManage.h"
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述: 试灯按钮处理函数
|
||||
* 参数说明: void
|
||||
* 返回值 : void
|
||||
*/
|
||||
void LightTestButtonDataManageProc(void)
|
||||
{
|
||||
UINT16 i = 0u; /*循环变量*/
|
||||
UINT16 j = 0u; /*循环变量*/
|
||||
|
||||
UINT16 lightTestButtonId = 0u; /* 试灯按钮ID */
|
||||
UINT16 lightTestButtonRelayNum = 0u; /* 试灯按钮ID数量 */
|
||||
UINT16 lightRelayId = 0u; /* 试灯表示灯继电器ID */
|
||||
UINT16 ligthtRelatNum = 0u; /* 试灯表示灯继电器数量 */
|
||||
|
||||
UINT8 lightTestButtonState = RELAY_STATE_DOWN; /*试灯按钮状态*/
|
||||
|
||||
lightTestButtonRelayNum = GetLightTestButtonCurSum(); /*获取试灯按钮总数量*/
|
||||
|
||||
for(i = 0u; i < lightTestButtonRelayNum; i++)
|
||||
{
|
||||
/* 获取对应试灯按钮ID*/
|
||||
lightTestButtonId = GetLightTestButtonId(i);
|
||||
/*获取试灯按钮继电器采集状态*/
|
||||
lightTestButtonState = GetRelayCollState(lightTestButtonId);
|
||||
if(RELAY_STATE_UP == lightTestButtonState) /*试灯按钮按下*/
|
||||
{
|
||||
/* 试灯表示灯继电器数量*/
|
||||
ligthtRelatNum = GetLightTestButtonRelayNum(lightTestButtonId);
|
||||
for(j = 0u; j < ligthtRelatNum; j++)
|
||||
{
|
||||
/* 获取对应试灯表示灯继电器ID*/
|
||||
lightRelayId = GetLightTestButtonRelayId(lightTestButtonId,j);
|
||||
/*设置试灯表示灯继电器吸起*/
|
||||
(void)SetRelayDriveState(lightRelayId, RELAY_DRIVE_STATE_UP);
|
||||
|
||||
}
|
||||
}
|
||||
else if(RELAY_STATE_DOWN == lightTestButtonState) /*试灯按钮未按下*/
|
||||
{
|
||||
/* 不处理即可 */
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 不处理 */
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
/********************************************************
|
||||
* 文 件 名: LightTestButtonDataManage.h
|
||||
* 版权说明: 北京交控科技有限公司
|
||||
* 创建时间: 2025-12-09
|
||||
* 作 者: 联锁组
|
||||
* 功能描述: 试灯按钮数据管理头文件
|
||||
* 函数包括:
|
||||
* 使用注意:
|
||||
* 修改记录:
|
||||
*
|
||||
********************************************************/
|
||||
|
||||
#ifndef _LIGHTTEST_BUTTON_DATA_MANAGE_H_
|
||||
#define _LIGHTTEST_BUTTON_DATA_MANAGE_H_
|
||||
|
||||
|
||||
#include "LightTestButtonDefine.h"
|
||||
#include "LightTestButtonConfigDataManage.h"
|
||||
#include "RelayDefine.h"
|
||||
#include "RelayDataManage.h"
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述: 试灯按钮处理函数
|
||||
* 参数说明: void
|
||||
* 返回值 : void
|
||||
*/
|
||||
void LightTestButtonDataManageProc(void);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,33 @@
|
||||
/********************************************************
|
||||
*
|
||||
* 文 件 名: LightTestButtonDefine.h
|
||||
* 版权说明: 北京交控科技有限公司
|
||||
* 创建时间: 2025-12-09
|
||||
* 作 者: 联锁组
|
||||
* 功能描述: 试灯按钮配置数据头文件
|
||||
* 函数包括:
|
||||
* 使用注意:
|
||||
* 修改记录:
|
||||
*
|
||||
********************************************************/
|
||||
|
||||
#ifndef _LIGHTTESTBUTTON_DEFINE_H_
|
||||
#define _LIGHTTESTBUTTON_DEFINE_H_
|
||||
|
||||
#include "CommonTypes.h"
|
||||
|
||||
/* 试灯表示灯最大数量 */
|
||||
#define LIGHTTESTBUTTON_LIGHT_MAX_NUM ((UINT8)13U)
|
||||
|
||||
/* 试灯表示灯支持最大数 */
|
||||
#define LIGHTTESTBUTTON_LIGHT_SUPPORT_MAX_NUM ((UINT8)39U)
|
||||
|
||||
/* 试灯按钮可配置最大数量 */
|
||||
#define LIGHTTESTBUTTON_BUTTON_MAX_NUM ((UINT16)70U)
|
||||
|
||||
/* 武汉新港OC采集试灯按钮类型 */
|
||||
#define LIGHTTESTBUTTON_TYPE_XINGANG ((UINT8)0xaaU)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -21,18 +21,27 @@ UINT16 colStringLength = 0u;
|
||||
UINT8 drvString[RELAY_SUM_MAX] = {0u};/*驱动数据*/
|
||||
UINT16 drvStringLength = 0u;
|
||||
AxisSectionDataStruct Record_AxisSecDataStru[AXIS_SECTION_SUM_MAX];/*参考计轴区段数据*/
|
||||
AxisSectionDataStructCC Record_AxisSecDataStruCC[AXIS_SECTION_SUM_MAX];/*参考计轴区段数据-车车*/
|
||||
SignalDataStruct Record_SignalDataStru[SIGNAL_SUM_MAX];/*参考信号机动态数据*/
|
||||
SignalDataStructCC Record_SignalDataStruCC[SIGNAL_SUM_MAX];/*参考信号机动态数据-车车*/
|
||||
EsbDataStruct Record_EsbDataStru[ESB_SUM_MAX]; /*参考ESB动态数据*/
|
||||
SwitchDataStruct Record_SwitchDataStru[SWITCH_SUM_MAX];/*参考道岔动态数据*/
|
||||
PhysicalSectionDataStruct Record_PhysicalSectionDataStru[PHYSICAL_SECTION_SUM_MAX];/*参考物理区段动态数据*/
|
||||
PhysicalSectionDataStructCC Record_PhySecDataStruCC[PHYSICAL_SECTION_SUM_MAX] = { 0U };/*参考物理区段动态数据CC*/
|
||||
RouteDataStruct Record_RouteDataStru[ROUTE_SUM_MAX];/*参考进路动态数据*/
|
||||
RouteDataStructCC Record_RouteDataStruCC[ROUTE_SUM_MAX];/*参考进路动态数据-车车*/
|
||||
NonRouteDataStruct Record_NonRouteDataStru[NONROUTE_ID_NUM_MAX]; /*参考非进路调车动态数据*/
|
||||
LogicSectionDataStruct Record_LogicSecDataStru[LOGIC_SECTION_SUM_MAX];/*参考逻辑区段动态数据*/
|
||||
LogicSectionDataStructCC Record_LogicSecDataStruCC[LOGIC_SECTION_SUM_MAX];/*参考逻辑区段动态数据-车车*/
|
||||
WashMachineDataStruct Record_WashMachineDataStru[WASHMACHINE_SUM_MAX]; /*参考洗车机动态数据*/
|
||||
PsdDataStruct Record_PsdDataStru[PSD_SUM_MAX];/*参考屏蔽门动态数据*/
|
||||
PsdDataStructCC Record_PsdDataStruCC[PSD_SUM_MAX] = { 0U };/*参考屏蔽门动态数据CC*/
|
||||
GaragedoorDataStruct Record_GaragedoorDataStru[GARAGE_DOOR_SUM_MAX]; /*参考车库门数据结构体*/
|
||||
FloodGateDataStruct Record_FloodGateDataStru[FLOOD_GATE_SUM_MAX]; /**/
|
||||
GaragedoorDataStructCC Record_GaragedoorDataStruCC[GARAGE_DOOR_SUM_MAX]; /*参考车库门数据结构体-车车*/
|
||||
FloodGateDataStruct Record_FloodGateDataStru[FLOOD_GATE_SUM_MAX]; /*参考防烟门数据结构体*/
|
||||
FloodGateDataStructCC Record_FloodGateDataStruCC[FLOOD_GATE_SUM_MAX]; /*参考防烟门数据结构体-车车*/
|
||||
OverlapDataStruct Record_OverlapDataStru[OVERLAP_SUM_MAX];/*参考保护区段动态数据*/
|
||||
OverlapDataStructCC Record_OverlapDataStruCC[OVERLAP_SUM_MAX];/*参考保护区段动态数据-车车*/
|
||||
VirCIKeyDataStru Record_VirCIKeyDataStru[VIRTUAL_CI_MAX]= {0u};/*记录虚拟联锁关键数据*/
|
||||
VirCIKeyDataStru newVirCIKeyDataStru[VIRTUAL_CI_MAX]= {0u};
|
||||
SpksDataStruct Record_spksDataBuff[SPKS_SUM_MAX] = { 0u };
|
||||
@@ -42,7 +51,7 @@ TsrDataStruct Record_TsrInfo[TSR_MAX_SUM] = { 0u }; /*
|
||||
OCStationIndicDataStru Record_OCStationIndicBuff[INDICATOR_SUM_MAX] = { 0u };
|
||||
LogicalRouteDataStruct Record_LogicalRouteDataStru[ROUTE_LOGICAL_SUM_MAX] = { 0U };
|
||||
NonAutoReturnDataStruct Record_NonReturnDataStru[NON_AUTO_RETURN_SUM_MAX] = { 0U };
|
||||
|
||||
NonAutoReturnDataStructCC Record_NonReturnDataStruCC[NON_AUTO_RETURN_SUM_MAX] = { 0U };
|
||||
UINT8 outString[1024*1024] = {0u};/*比较后的设备打印数据缓冲*/
|
||||
extern QueueStruct logPrintfQue; /*日志打印缓存队列*/
|
||||
UINT16 logIndex = 0u; /*日志缓存索引*/
|
||||
@@ -458,19 +467,29 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
UINT16 wTrainId = 0u;
|
||||
UINT8 returnValue = CI_SUCCESS;/*返回值*/
|
||||
UINT8 comparaResult = 0u;/*比较结果*/
|
||||
UINT8 comparaResultCC = 0u;/*比较结果*/
|
||||
UINT16 floodGateTotalSum = 0u;/*防淹门总数量*/
|
||||
AxisSectionDataStruct* newAxisSecData = GetAxisSecData();
|
||||
AxisSectionDataStructCC* pAxisSecDataCC = GetAxisSecDataCC();
|
||||
SignalDataStruct* newSignalData = GetSignalData();
|
||||
SignalDataStructCC* pSignalDataCC = GetSignalDataCC();
|
||||
SwitchDataStruct* newSwitchData = GetSwitchData();
|
||||
PhysicalSectionDataStruct* newPhysicalSectionData = GetPhySecData();
|
||||
PhysicalSectionDataStructCC* pPhysicalSectionDataCC = GetPhySecDataCC();
|
||||
RouteDataStruct* newRouteData = GetRouteData();
|
||||
RouteDataStructCC* pRouteDataCC = GetRouteDataCC();
|
||||
NonRouteDataStruct* newNonRouteDataStru = GetNonRouteDataPtr();
|
||||
LogicSectionDataStruct* newLogicSecData = GetLogicSecData();
|
||||
LogicSectionDataStructCC* pLogicSecDataCC = GetLogicSecDataCC();
|
||||
WashMachineDataStruct* newWashMachineData = GetWashMachineData();
|
||||
PsdDataStruct * newPsdData = GetPsdData();
|
||||
PsdDataStructCC* pPsdDataCC = GetPsdDataCC();
|
||||
GaragedoorDataStruct* newGaragedoorData = GetGaragedoorData(); /*获取车库门数据结构体*/
|
||||
GaragedoorDataStructCC* pGaragedoorDataCC = GetGaragedoorDataCC(); /*获取车库门数据结构体*/
|
||||
FloodGateDataStruct *pNewFloodGateData = GetFloodGateData(); /*获取防淹门数据结构体*/
|
||||
FloodGateDataStructCC* pNewFloodGateDataCC = GetFloodGateDataCC(); /*获取防淹门数据结构体*/
|
||||
OverlapDataStruct* newOverlapData = GetOverlapData();
|
||||
OverlapDataStructCC* pOverlapDataCC = GetOverlapDataCC();
|
||||
TrainInfoStru* pNewTrainInfoData = GetTrainInfoData();
|
||||
TsrDataStruct* pNewTsrInfo = GetTsrData(); /* 临时限速信息 */
|
||||
CfpDataStru * pNewCfpData = GetCfpData();
|
||||
@@ -484,8 +503,8 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
UINT16 deviceNum = 0u;
|
||||
UINT8 localCiType = 0u;
|
||||
UINT16 wNonAutoReturnCurSum = 0U;/*无人折返按钮当前总数*/
|
||||
NonAutoReturnDataStruct* pNonAutoReturnData = NULL;/*无人折返数据结构体指针*/
|
||||
|
||||
NonAutoReturnDataStruct* pNonAutoReturnData = NULL; /*无人折返数据结构体指针*/
|
||||
NonAutoReturnDataStructCC* pNonReturnDataStruCC = NULL; /*无人折返数据结构体指针-CC*/
|
||||
|
||||
/*************************************打印物理区段数据********************************************/
|
||||
/*打印区段数据*/
|
||||
@@ -497,9 +516,10 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
deviceId = GetPhySecId(ii);
|
||||
comparaResult = DeviceCompara((UINT8*)(&Record_PhysicalSectionDataStru[deviceId]), (UINT16)sizeof(PhysicalSectionDataStruct),
|
||||
(UINT8*)(&newPhysicalSectionData[deviceId]), (UINT16)sizeof(PhysicalSectionDataStruct));
|
||||
comparaResultCC = DeviceCompara((UINT8*)(&Record_PhySecDataStruCC[deviceId]), (UINT16)sizeof(PhysicalSectionDataStructCC),
|
||||
(UINT8*)(&pPhysicalSectionDataCC[deviceId]), (UINT16)sizeof(PhysicalSectionDataStructCC));
|
||||
|
||||
|
||||
if(0u != comparaResult)
|
||||
if ((1U == comparaResult) || (1U == comparaResultCC))
|
||||
{/*比较数据不一致*/
|
||||
|
||||
if (CI_ERROR != Flag)
|
||||
@@ -526,7 +546,18 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outString[outStringLength++] = newPhysicalSectionData[deviceId].CurMergeOccupyState;/*当前融合占用状态*/
|
||||
outString[outStringLength++] = newPhysicalSectionData[deviceId].PreAndMergeOccupyState;/*之前与占用融合占用状态*/
|
||||
outString[outStringLength++] = newPhysicalSectionData[deviceId].CurAndMergeOccupyState;/*当前与占用融合占用状态*/
|
||||
outString[outStringLength++] = newPhysicalSectionData[deviceId].SectionResetType;/*区段计轴复位类型*/
|
||||
LongToChar(newPhysicalSectionData[deviceId].SectionResetStartCycNum, &outString[outStringLength]);/*区段计轴复位开始周期*/
|
||||
outStringLength += 4u;
|
||||
outString[outStringLength++] = newPhysicalSectionData[deviceId].chResetCmdTag;/*复位命令标签*/
|
||||
outString[outStringLength++] = newPhysicalSectionData[deviceId].chResetCmdTagBack;/*复位命令标签反馈*/
|
||||
outString[outStringLength++] = newPhysicalSectionData[deviceId].PhySecPreResetState;/*计轴预复位状态*/
|
||||
outString[outStringLength++] = newPhysicalSectionData[deviceId].chPreResetBack;/*预复位命令反馈*/
|
||||
outString[outStringLength++] = newPhysicalSectionData[deviceId].chDirectResetRst;/*直接复位结果*/
|
||||
outString[outStringLength++] = newPhysicalSectionData[deviceId].chDirectResetBack;/*直接复位命令反馈*/
|
||||
outString[outStringLength++] = newPhysicalSectionData[deviceId].StopSteadyFlag;/*停稳状态信息*/
|
||||
outString[outStringLength] = pPhysicalSectionDataCC[deviceId].StopSteadyFlag;/*停稳状态信息CC(0x55-未停稳,0xAA-停稳)*/
|
||||
outStringLength++;
|
||||
outString[outStringLength++] = newPhysicalSectionData[deviceId].ArbState;/*ARB状态*/
|
||||
outString[outStringLength++] = newPhysicalSectionData[deviceId].ProtectSecLockDelayTimeFlag;/*保护区段锁闭延时标志(动态字段)*/
|
||||
outString[outStringLength++] = newPhysicalSectionData[deviceId].StopCheckFlag; /*物理区段停止检查标志(未设置/设置) (动态字段)*/
|
||||
@@ -544,8 +575,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outStringLength += 4u;
|
||||
LongToChar(newPhysicalSectionData[deviceId].FaultUnlockStartCycNum,&outString[outStringLength]);/*区故解解锁延时开始周期*/
|
||||
outStringLength += 4u;
|
||||
LongToChar(newPhysicalSectionData[deviceId].SectionResetStartCycNum,&outString[outStringLength]);/*区段计轴复位开始周期*/
|
||||
outStringLength += 4u;
|
||||
outString[outStringLength++] = newPhysicalSectionData[deviceId].FLockType; /*物理区段封锁产生的原因,SPKS或其他原因*/
|
||||
outString[outStringLength++] = newPhysicalSectionData[deviceId].UtOrCtOccFlag; /*获取物理区段占用标志*/
|
||||
ShortToChar(newPhysicalSectionData[deviceId].SecProUseBelongRouteId,&outString[outStringLength]);/*征用所属进路ID*/
|
||||
@@ -558,8 +587,14 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outString[outStringLength++] = newPhysicalSectionData[deviceId].chABLTrainFlag; /*物理区段ABL列车占用状态*/
|
||||
outString[outStringLength++] = newPhysicalSectionData[deviceId].chPreABLTrainFlag; /*物理区段之前ABL列车占用状态*/
|
||||
outString[outStringLength++] = newPhysicalSectionData[deviceId].cPhySecInHumidRailFlag; /*物理区段湿轨标志:0x55 无效;0xAA 有效*/
|
||||
LongToChar(newPhysicalSectionData[deviceId].UtOrCtOccuStartCycNum, &outString[outStringLength]);/*区段UT或CT占用起始周期号*/
|
||||
outStringLength += 4u;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*数据一致,不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
if (0u == outStringLength)
|
||||
@@ -606,11 +641,14 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
comparaResult = DeviceCompara((UINT8*)(&Record_SignalDataStru[deviceId]), (UINT16)sizeof(SignalDataStruct),
|
||||
(UINT8*)(&newSignalData[deviceId]), (UINT16)sizeof(SignalDataStruct));
|
||||
|
||||
if (0u==comparaResult)
|
||||
comparaResultCC = DeviceCompara((UINT8*)(&Record_SignalDataStruCC[deviceId]), (UINT16)sizeof(SignalDataStructCC),
|
||||
(UINT8*)(&pSignalDataCC[deviceId]), (UINT16)sizeof(SignalDataStructCC));
|
||||
|
||||
if ((0U==comparaResult) && (0U == comparaResultCC))
|
||||
{/*比较数据一致*/
|
||||
|
||||
}
|
||||
else if (1u==comparaResult )
|
||||
else if ((1U==comparaResult ) || (1U == comparaResultCC))
|
||||
{/*比较数据不一致*/
|
||||
|
||||
if (CI_ERROR != Flag)
|
||||
@@ -621,6 +659,8 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outStringLength += 2u;
|
||||
outString[outStringLength++] = newSignalData[deviceId].FLockState;/*封锁状态*/
|
||||
outString[outStringLength++] = newSignalData[deviceId].LightExtinctState;/*亮灭灯状态*/
|
||||
outString[outStringLength] = pSignalDataCC[deviceId].LightExtinctState;/*亮灭灯状态CC(0x55:灭灯,0xaa:亮灯)*/
|
||||
outStringLength++;
|
||||
outString[outStringLength++] = newSignalData[deviceId].PreColor;/*之前显示颜色*/
|
||||
outString[outStringLength++] = newSignalData[deviceId].CurColor;/*当前显示颜色*/
|
||||
outString[outStringLength++] = newSignalData[deviceId].PreDriveColor;/*之前驱动颜色*/
|
||||
@@ -633,6 +673,8 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
LongToChar(newSignalData[deviceId].CollSigOpenStartCycNum,&outString[outStringLength]); /*采集信号机开放起始周期*/
|
||||
outStringLength += 4u;
|
||||
outString[outStringLength++] = newSignalData[deviceId].SignalCrossState;/*信号机跨压状态*/
|
||||
outString[outStringLength] = pSignalDataCC[deviceId].SignalCrossState;/*信号机跨压状态CC(0x55:未跨压,0xaa:跨压)*/
|
||||
outStringLength++;
|
||||
outString[outStringLength++] = newSignalData[deviceId].SignalYLockOpenState;/*引导总锁信号开放状态*/
|
||||
outString[outStringLength++] = newSignalData[deviceId].AtsDetainFlag;/*Ats人工扣车标志*/
|
||||
outString[outStringLength++] = newSignalData[deviceId].AtsDetainFlagAuto;/*Ats自动扣车标志*/
|
||||
@@ -652,6 +694,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outString[outStringLength++] = newSignalData[deviceId].GreenDsBreakFlag;/*绿灯丝断丝标志状态*/
|
||||
outString[outStringLength++] = newSignalData[deviceId].YellowDsBreakFlag;/*黄灯丝断丝标志状态*/
|
||||
outString[outStringLength++] = newSignalData[deviceId].WhiteDsBreakFlag;/*白灯丝断丝标志状态*/
|
||||
outString[outStringLength++] = newSignalData[deviceId].BlueDsBreakFlag;/*蓝灯丝断丝标志状态*/
|
||||
outString[outStringLength++] = newSignalData[deviceId].RedYellowDsBreakFlag;/*红黄灯丝断丝标志状态*/
|
||||
outString[outStringLength++] = newSignalData[deviceId].RedWhiteDsBreakFlag;/*红白灯丝断丝标志状态*/
|
||||
outString[outStringLength++] = newSignalData[deviceId].GreenYellowDsBreakFlag;/*绿黄灯丝断丝标志状态*/
|
||||
@@ -659,7 +702,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outString[outStringLength++] = newSignalData[deviceId].DoubleYellowDsBreakFlag;/*双黄灯丝断丝标志状态*/
|
||||
outString[outStringLength++] = newSignalData[deviceId].MaintainLightState;/*信号机维修点灯状态*/
|
||||
|
||||
if (MAX_SIGNAL_LIGHTUPLINK_NUM < newSignalData[deviceId].wSignalLightUpLinkIdSum)
|
||||
if (MAX_SIGNAL_LIGHTUPLINK_NUM < pSignalDataCC[deviceId].wSignalLightUpLinkIdSum)
|
||||
{
|
||||
/* 数量合法 */
|
||||
ShortToChar(0u, &outString[outStringLength]);/*信号机点灯link数量*/
|
||||
@@ -668,12 +711,12 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
else
|
||||
{
|
||||
/* 数量合法 */
|
||||
ShortToChar(newSignalData[deviceId].wSignalLightUpLinkIdSum, &outString[outStringLength]);/*信号机点灯link数量*/
|
||||
ShortToChar(pSignalDataCC[deviceId].wSignalLightUpLinkIdSum, &outString[outStringLength]);/*信号机点灯link数量*/
|
||||
outStringLength += 2u;
|
||||
|
||||
for (jj = 0u; jj < newSignalData[deviceId].wSignalLightUpLinkIdSum; jj++)
|
||||
for (jj = 0u; jj < pSignalDataCC[deviceId].wSignalLightUpLinkIdSum; jj++)
|
||||
{
|
||||
ShortToChar(newSignalData[deviceId].szSignalLightUpLinkIdBuf[jj], &outString[outStringLength]);/*信号机点灯link数量*/
|
||||
ShortToChar(pSignalDataCC[deviceId].szSignalLightUpLinkIdBuf[jj], &outString[outStringLength]);/*信号机点灯link数量*/
|
||||
outStringLength += 2u;
|
||||
}
|
||||
}
|
||||
@@ -683,16 +726,28 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outString[outStringLength++] = newSignalData[deviceId].CancelDetainBtnErrFlag; /*取消扣车按钮故障标志*/
|
||||
outString[outStringLength++] = newSignalData[deviceId].CancelDetainBtnValidFlag; /*取消扣车按钮有效标志*/
|
||||
outString[outStringLength++] = newSignalData[deviceId].CancelDetainRelayDownState; /*取消扣车按钮采集继电器落下状态*/
|
||||
LongToChar(newSignalData[deviceId].DetainBtnPressCycNum, &outString[outStringLength]); /*扣车按钮按下周期*/
|
||||
LongToChar(newSignalData[deviceId].DetainBtnPressCycNum, &outString[outStringLength]); /*扣车按钮1按下周期*/
|
||||
outStringLength += 4u;
|
||||
LongToChar(newSignalData[deviceId].DetainSndBtnPressCycNum, &outString[outStringLength]); /*扣车按钮2按下周期*/
|
||||
outStringLength += 4U;
|
||||
LongToChar(newSignalData[deviceId].CancelDetainBtnPressCycNum, &outString[outStringLength]); /*取消扣车按钮正常按下周期*/
|
||||
outStringLength += 4u;
|
||||
LongToChar(newSignalData[deviceId].CancelDetainErrTrigPressCycNum, &outString[outStringLength]); /*取消扣车按钮误触发按下周期*/
|
||||
outStringLength += 4u;
|
||||
ShortToChar(newSignalData[deviceId].wSignalLightUpTrainId, &outString[outStringLength]);/*信号机点灯区段接近列车ID*/
|
||||
ShortToChar(pSignalDataCC[deviceId].wSignalLightUpTrainId, &outString[outStringLength]);/*信号机点灯区段接近列车ID*/
|
||||
outStringLength += 2u;
|
||||
outString[outStringLength++] = newSignalData[deviceId].cSleepTrainLightUpFlag; /*休眠车点亮信号机标志:0x55 无效,0xAA 有效*/
|
||||
outString[outStringLength++] = pSignalDataCC[deviceId].cSleepTrainLightUpFlag; /*休眠车点亮信号机标志:0x55 无效,0xAA 有效*/
|
||||
outString[outStringLength++] = newSignalData[deviceId].cInHumidRailFlag; /*信号机湿轨标志:0x55 无效,0xAA 有效*/
|
||||
outString[outStringLength] = newSignalData[deviceId].cDetCutBtnState; /*扣车旁路按钮状态:0x55-无效,0xAA-有效*/
|
||||
outStringLength++;
|
||||
LongToChar(newSignalData[deviceId].DetCutBtnPressCycNum, &outString[outStringLength]); /*扣车旁路按钮正常按下周期*/
|
||||
outStringLength += 4U;
|
||||
LongToChar(newSignalData[deviceId].DetCutBtnErrTrigPressCycNum, &outString[outStringLength]); /*扣车旁路按钮误触发按下周期*/
|
||||
outStringLength += 4U;
|
||||
outString[outStringLength] = newSignalData[deviceId].cDetCutBtnErrFlag; /*扣车旁路按钮故障标志:0x55未故障,0xaa故障*/
|
||||
outStringLength++;
|
||||
outString[outStringLength] = newSignalData[deviceId].cDetCutBtnRelayDownState; /*扣车旁路按钮采集继电器落下状态:0x55:正常采集落下,0xaa:通信异常落下*/
|
||||
outStringLength++;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -762,6 +817,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outString[outStringLength++] = pNewEsbData[deviceId].EssSteadyState;/*ESS稳灯状态(用于虚拟联锁向ATS反馈)--0x55 需要设置稳灯;0xaa不需要设置稳灯*/
|
||||
outString[outStringLength++] = pNewEsbData[deviceId].EssFlashState;/*ESS闪灯状态(用于虚拟联锁向ATS反馈)--0x55 需要设置闪灯;0xaa不需要设置闪灯*/
|
||||
outString[outStringLength++] = pNewEsbData[deviceId].EsbErrorFlag;/*自复式紧急停车按钮故障标志,0x55未故障,0xaa故障*/
|
||||
outString[outStringLength++] = pNewEsbData[deviceId].EsbRelayDownState;/*紧急关闭按钮采集继电器落下状态,0x55:正常采集落下,0xaa:通信异常落下*/
|
||||
outString[outStringLength++] = pNewEsbData[deviceId].CancelEsbErrorFlag;/*自复式取消紧急停车按钮故障标志,0x55未故障,0xaa故障*/
|
||||
outString[outStringLength++] = pNewEsbData[deviceId].CancelEsbValidFlag;/*取消紧急关闭按钮有效标志,0x55无效,0xaa有效*/
|
||||
outString[outStringLength++] = pNewEsbData[deviceId].CancelEsbRelayDownState;/*取消紧急关闭按钮采集继电器落下状态,0x55:正常采集落下,0xaa:通信异常落下*/
|
||||
@@ -770,7 +826,18 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
LongToChar(pNewEsbData[deviceId].CancelEsbPressCycNum, &outString[outStringLength]);/*取消紧急关闭按钮按下周期*/
|
||||
outStringLength += 4u;
|
||||
LongToChar(pNewEsbData[deviceId].CancelEsbErrTriggerPressCycNum, &outString[outStringLength]);/*取消紧急关闭按钮误触发按下周期*/
|
||||
outStringLength += 4U;
|
||||
outStringLength += 4U;
|
||||
outString[outStringLength++] = pNewEsbData[deviceId].EsbCutErrorFlag; /*紧急关闭旁路按钮故障标志,0x55未故障,0xaa故障*/
|
||||
outString[outStringLength++] = pNewEsbData[deviceId].EsbCutRelayDownState; /*紧急关闭旁路按钮采集继电器落下状态,0x55:正常采集落下,0xaa:通信异常落下*/
|
||||
LongToChar(pNewEsbData[deviceId].EsbCutPressCycNum, &outString[outStringLength]); /*紧急关闭旁路按钮按下周期*/
|
||||
outStringLength += 4u;
|
||||
LongToChar(pNewEsbData[deviceId].EsbCutErrTriggerPressCycNum, &outString[outStringLength]); /*紧急关闭旁路按钮误触发按下周期*/
|
||||
outStringLength += 4U;
|
||||
|
||||
outString[outStringLength] = pNewEsbData[deviceId].cOnePlatEsbState;/*同站紧急按钮激活状态:0x55-未激活,0xAA-激活*/
|
||||
outStringLength++;
|
||||
outString[outStringLength] = pNewEsbData[deviceId].cOnePlatEsbCutState;/*同站紧急旁路按钮激活状态:0x55-未激活,0xAA-激活*/
|
||||
outStringLength++;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -936,11 +1003,14 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
comparaResult = DeviceCompara((UINT8*)(&Record_RouteDataStru[deviceId]), (UINT16)sizeof(RouteDataStruct),
|
||||
(UINT8*)(&newRouteData[deviceId]), (UINT16)sizeof(RouteDataStruct));
|
||||
|
||||
if (0u==comparaResult)
|
||||
comparaResultCC = DeviceCompara((UINT8*)(&Record_RouteDataStruCC[deviceId]), (UINT16)sizeof(RouteDataStructCC),
|
||||
(UINT8*)(&pRouteDataCC[deviceId]), (UINT16)sizeof(RouteDataStructCC));
|
||||
|
||||
if ((0U == comparaResult) && (0U == comparaResultCC))
|
||||
{/*比较数据一致*/
|
||||
|
||||
}
|
||||
else if (1u==comparaResult )
|
||||
else if ((1U==comparaResult) || (1U == comparaResultCC))
|
||||
{/*比较数据不一致*/
|
||||
|
||||
if (CI_ERROR != Flag)
|
||||
@@ -976,6 +1046,8 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
ShortToChar(newRouteData[deviceId].AllAutoReturnId,&outString[outStringLength]);/*全自动折返进路ID*/
|
||||
outStringLength += 2u;
|
||||
outString[outStringLength++] = newRouteData[deviceId].StopensureFlag;/*停车保证标志*/
|
||||
outString[outStringLength] = pRouteDataCC[deviceId].StopensureFlag;/*停车保证标志CC(0x55:已设置,0xAA:未设置)*/
|
||||
outStringLength++;
|
||||
outString[outStringLength++] = newRouteData[deviceId].StopKeepCheckFlag; /* 保持时候用的停车保证标志 */
|
||||
outString[outStringLength++] = newRouteData[deviceId].RouteStateFlag; /*进路状态标志(1:表示有效;0:表示无效)*/
|
||||
outString[outStringLength++] = newRouteData[deviceId].TrainEnterFlag;/*列车驶入标志*/
|
||||
@@ -994,7 +1066,9 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outStringLength += 4u;
|
||||
outString[outStringLength++] = newRouteData[deviceId].DCQState;/*调车请求状态*/
|
||||
outString[outStringLength++] = newRouteData[deviceId].DCTYState;/*调车同意状态*/
|
||||
|
||||
LongToChar(newRouteData[deviceId].dwDcAgreeBtnPressCycNum, &outString[outStringLength]);/*调车同意按钮按下起始周期*/
|
||||
outStringLength += 4u;
|
||||
outString[outStringLength++] = newRouteData[deviceId].chDcAgreeButtonErrState;/*调车同意按钮故障状态*/
|
||||
outString[outStringLength++] = newRouteData[deviceId].DCTYNotSatisfySignalReOpenFlag;/*调车同意不满足-信号重开标志*/
|
||||
LongToChar(newRouteData[deviceId].DCTYNotSatisfyStartCount,&outString[outStringLength]);/*调车同意不满足-起始周期*/
|
||||
outStringLength += 4u;
|
||||
@@ -1006,19 +1080,19 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outString[outStringLength++] = newRouteData[deviceId].AutoSigPropertyLoseEfficacyFlag; /*自动信号属性失效标志(未设置/设置)*/
|
||||
outString[outStringLength++] = newRouteData[deviceId].OverlapNeedCIlockFlag; /*保护区段需要CI锁闭标志*/
|
||||
outString[outStringLength++] = newRouteData[deviceId].OverlapLockProcFlag; /*保护区段在锁闭过程中标志*/
|
||||
ShortToChar(newRouteData[deviceId].wStopEnsureTrainId, &outString[outStringLength]);/*进路停车保证列车ID*/
|
||||
ShortToChar(pRouteDataCC[deviceId].wStopEnsureTrainId, &outString[outStringLength]);/*进路停车保证列车ID*/
|
||||
outStringLength += 2u;
|
||||
LongToChar(newRouteData[deviceId].dwStopEnsureCyc, &outString[outStringLength]);/*停车保证询问周期号*/
|
||||
LongToChar(pRouteDataCC[deviceId].dwStopEnsureCyc, &outString[outStringLength]);/*停车保证询问周期号*/
|
||||
outStringLength += 4u;
|
||||
outString[outStringLength++] = newRouteData[deviceId].cResReqOtherCIId; /*发送资源申请的联锁ID*/
|
||||
outString[outStringLength++] = pRouteDataCC[deviceId].cResReqOtherCIId; /*发送资源申请的联锁ID*/
|
||||
|
||||
|
||||
if (ROUTE_APPLY_RECD_TRAIN_SUM_MAX >= newRouteData[deviceId].chResReqTrainSum)
|
||||
if (ROUTE_APPLY_RECD_TRAIN_SUM_MAX >= pRouteDataCC[deviceId].chResReqTrainSum)
|
||||
{
|
||||
outString[outStringLength++] = newRouteData[deviceId].chResReqTrainSum; /*发送资源申请的联锁ID*/
|
||||
for (jj = 0u; jj < newRouteData[deviceId].chResReqTrainSum; jj++)
|
||||
outString[outStringLength++] = pRouteDataCC[deviceId].chResReqTrainSum; /*发送资源申请的联锁ID*/
|
||||
for (jj = 0u; jj < pRouteDataCC[deviceId].chResReqTrainSum; jj++)
|
||||
{
|
||||
ShortToChar(newRouteData[deviceId].wszResReqTrainId[jj], &outString[outStringLength]);/*发送资源申请的列车ID*/
|
||||
ShortToChar(pRouteDataCC[deviceId].wszResReqTrainId[jj], &outString[outStringLength]);/*发送资源申请的列车ID*/
|
||||
outStringLength += 2u;
|
||||
}
|
||||
}
|
||||
@@ -1027,13 +1101,13 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outString[outStringLength++] = 0u; /*发送资源申请的联锁ID*/
|
||||
}
|
||||
|
||||
if (ROUTE_APPLY_RECD_TRAIN_SUM_MAX >= newRouteData[deviceId].ITSRouteApplyTrainIdSum)
|
||||
if (ROUTE_APPLY_RECD_TRAIN_SUM_MAX >= pRouteDataCC[deviceId].ITSRouteApplyTrainIdSum)
|
||||
{
|
||||
outString[outStringLength++] = newRouteData[deviceId].ITSRouteApplyTrainIdSum; /*ITS申请路径命令的列车ID记录总数*/
|
||||
outString[outStringLength++] = pRouteDataCC[deviceId].ITSRouteApplyTrainIdSum; /*ITS申请路径命令的列车ID记录总数*/
|
||||
|
||||
for (jj = 0u; jj < newRouteData[deviceId].ITSRouteApplyTrainIdSum; jj++)
|
||||
for (jj = 0u; jj < pRouteDataCC[deviceId].ITSRouteApplyTrainIdSum; jj++)
|
||||
{
|
||||
ShortToChar(newRouteData[deviceId].ITSRouteApplyTrainIdBuf[jj], &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/
|
||||
ShortToChar(pRouteDataCC[deviceId].ITSRouteApplyTrainIdBuf[jj], &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/
|
||||
outStringLength += 2u;
|
||||
}
|
||||
|
||||
@@ -1044,16 +1118,16 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
}
|
||||
|
||||
/*可动道岔标志*/
|
||||
outString[outStringLength++] = newRouteData[deviceId].HalfRouteDataSt.HalfRouteSwitchMoveValid;
|
||||
outString[outStringLength++] = pRouteDataCC[deviceId].HalfRouteDataSt.HalfRouteSwitchMoveValid;
|
||||
|
||||
if (MAX_ROUTE_IN_LT_NUM > newRouteData[deviceId].HalfRouteDataSt.RouteLockLgcSecNum)
|
||||
if (MAX_ROUTE_IN_LT_NUM > pRouteDataCC[deviceId].HalfRouteDataSt.RouteLockLgcSecNum)
|
||||
{
|
||||
/*部分锁闭逻辑区段数量*/
|
||||
outString[outStringLength++] = newRouteData[deviceId].HalfRouteDataSt.RouteLockLgcSecNum;
|
||||
outString[outStringLength++] = pRouteDataCC[deviceId].HalfRouteDataSt.RouteLockLgcSecNum;
|
||||
/*部分锁闭逻辑区段ID*/
|
||||
for (jj = 0u; jj < newRouteData[deviceId].HalfRouteDataSt.RouteLockLgcSecNum; jj++)
|
||||
for (jj = 0u; jj < pRouteDataCC[deviceId].HalfRouteDataSt.RouteLockLgcSecNum; jj++)
|
||||
{
|
||||
ShortToChar(newRouteData[deviceId].HalfRouteDataSt.RouteLockLgcSecIdBuf[jj], &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/
|
||||
ShortToChar(pRouteDataCC[deviceId].HalfRouteDataSt.RouteLockLgcSecIdBuf[jj], &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/
|
||||
outStringLength += 2u;
|
||||
}
|
||||
|
||||
@@ -1063,18 +1137,18 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outString[outStringLength++] = 0u;
|
||||
}
|
||||
/*部分锁闭列车ID*/
|
||||
ShortToChar(newRouteData[deviceId].HalfRouteDataSt.HalfResReqTrainId, &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/
|
||||
ShortToChar(pRouteDataCC[deviceId].HalfRouteDataSt.HalfResReqTrainId, &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/
|
||||
outStringLength += 2u;
|
||||
|
||||
if (ROUTE_TRAIN_LOC_MAX_LGC_SUM >= newRouteData[deviceId].HalfRouteDataSt.TrainLocLgcSecNum)
|
||||
if (ROUTE_TRAIN_LOC_MAX_LGC_SUM >= pRouteDataCC[deviceId].HalfRouteDataSt.TrainLocLgcSecNum)
|
||||
{
|
||||
/*部分锁闭列车身下资源数量*/
|
||||
outString[outStringLength++] = newRouteData[deviceId].HalfRouteDataSt.TrainLocLgcSecNum;
|
||||
outString[outStringLength++] = pRouteDataCC[deviceId].HalfRouteDataSt.TrainLocLgcSecNum;
|
||||
|
||||
for (jj = 0u; jj < newRouteData[deviceId].HalfRouteDataSt.TrainLocLgcSecNum; jj++)
|
||||
for (jj = 0u; jj < pRouteDataCC[deviceId].HalfRouteDataSt.TrainLocLgcSecNum; jj++)
|
||||
{
|
||||
/*部分锁闭列车身下资源逻辑区段ID*/
|
||||
ShortToChar(newRouteData[deviceId].HalfRouteDataSt.TrainLocLgcSecIdBuf[jj], &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/
|
||||
ShortToChar(pRouteDataCC[deviceId].HalfRouteDataSt.TrainLocLgcSecIdBuf[jj], &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/
|
||||
outStringLength += 2u;
|
||||
}
|
||||
|
||||
@@ -1083,7 +1157,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
{
|
||||
outString[outStringLength++] = 0u;
|
||||
}
|
||||
LongToChar(newRouteData[deviceId].dwFirstElockStartCycNum, &outString[outStringLength]); /*进路第一个锁闭的逻辑区段延时设置区段故障起始周期号*/
|
||||
LongToChar(pRouteDataCC[deviceId].dwFirstElockStartCycNum, &outString[outStringLength]); /*进路第一个锁闭的逻辑区段延时设置区段故障起始周期号*/
|
||||
outStringLength += 4u;
|
||||
|
||||
outString[outStringLength++] = newRouteData[deviceId].cRelZuHeRouteSGBJDelayFlag; /*关联组合进路声光报警是否延时标志*/
|
||||
@@ -1094,8 +1168,11 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outString[outStringLength++] = newRouteData[deviceId].cRouteNeedDriveSGBJFlag; /*进路驱动声光报警标志*/
|
||||
|
||||
outString[outStringLength++] = newRouteData[deviceId].cRouteDrivedSGBJFlag; /*进路驱动声光报警标志:0x55 未驱动过;0xAA 已驱动过*/
|
||||
outString[outStringLength++] = newRouteData[deviceId].chRouteNearSecSearchState; /*进路接近区段查询状态是否有故障车*/
|
||||
outString[outStringLength++] = pRouteDataCC[deviceId].chRouteNearSecSearchState; /*进路接近区段查询状态是否有故障车*/
|
||||
outString[outStringLength++] = newRouteData[deviceId].chRouteApplySwitchCheckFlag; /*进路办理相邻控区道岔检查标志*/
|
||||
outString[outStringLength++] = newRouteData[deviceId].chRoutCouplinkFlag; /*进路联挂标志*/
|
||||
outString[outStringLength++] = newRouteData[deviceId].chCouplinkSuccessFlag; /*进路联挂成功*/
|
||||
outString[outStringLength++] = newRouteData[deviceId].chCouplinkErrorFlag; /*进路联挂失败*/
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1236,12 +1313,13 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
deviceId = GetLogicSecId(ii);
|
||||
comparaResult = DeviceCompara((UINT8*)(&Record_LogicSecDataStru[deviceId]), (UINT16)sizeof(LogicSectionDataStruct),
|
||||
(UINT8*)(&newLogicSecData[deviceId]), (UINT16)sizeof(LogicSectionDataStruct));
|
||||
|
||||
if (0u==comparaResult)
|
||||
comparaResultCC = DeviceCompara((UINT8*)(&Record_LogicSecDataStruCC[deviceId]), (UINT16)sizeof(LogicSectionDataStructCC),
|
||||
(UINT8*)(&pLogicSecDataCC[deviceId]), (UINT16)sizeof(LogicSectionDataStructCC));
|
||||
if ((0U==comparaResult) && (0U == comparaResultCC))
|
||||
{/*比较数据一致*/
|
||||
|
||||
}
|
||||
else if (1u==comparaResult )
|
||||
else if ((1U==comparaResult) || (1U == comparaResultCC))
|
||||
{/*比较数据不一致*/
|
||||
|
||||
if (CI_ERROR==Flag)
|
||||
@@ -1257,10 +1335,18 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].PreOccupyState;/*逻辑区段之前占用状态*/
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].CurOccupyState;/*逻辑区段当前占用状态*/
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].LinShiXianSuSetFlag;/*逻辑区段临时限速*/
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].OccupyState;/*逻辑区段占用状态*/
|
||||
outString[outStringLength] = pLogicSecDataCC[deviceId].LinShiXianSuSetFlag;/*逻辑区段临时限速CC(0x55-已未设置临时限速,0xAA-已设置临时限速,0xFF-临时限速无效)*/
|
||||
outStringLength++;
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].OccupyState;/*逻辑区段初始占用状态*/
|
||||
outString[outStringLength] = pLogicSecDataCC[deviceId].OccupyState;/*逻辑区段初始占用状态CC(0x55-未占用,0xAA-非通信车占用,0xBB-通信车占用)*/
|
||||
outStringLength++;
|
||||
outString[outStringLength] = newLogicSecData[deviceId].TXOccupyState;/*逻辑区段通信车占用状态(0x55-无车或非通信车占用,0xAA-通信车占用)*/
|
||||
outStringLength++;
|
||||
outString[outStringLength] = pLogicSecDataCC[deviceId].TXOccupyState;/*逻辑区段通信车占用状态CC(0x55-无车或非通信车占用,0xAA-通信车占用)*/
|
||||
outStringLength++;
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].LogLockState;/*逻辑区段锁闭状态*/
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].LogLockDir;/*逻辑区段锁闭方向*/
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].chResShareFlag;/*逻辑区段共享标志 0x55共享 0xAA非共享*/
|
||||
outString[outStringLength++] = pLogicSecDataCC[deviceId].chResShareFlag;/*逻辑区段共享标志 0x55共享 0xAA非共享*/
|
||||
ShortToChar(newLogicSecData[deviceId].LogLockBelongRoute,&outString[outStringLength]);/*逻辑锁闭所属进路*/
|
||||
outStringLength += 2u;
|
||||
LongToChar(newLogicSecData[deviceId].LogUnlockStartCycNum,&outString[outStringLength]);/*逻辑延时解锁周期号*/
|
||||
@@ -1268,53 +1354,53 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
ShortToChar(newLogicSecData[deviceId].wPLockBelongRouteId, &outString[outStringLength]);/*防护锁闭的进路编号*/
|
||||
outStringLength += 2u;
|
||||
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].cResReqOtherCIId;/*发送资源请求的其他联锁ID*/
|
||||
ShortToChar(newLogicSecData[deviceId].wResReqTrainId, &outString[outStringLength]);/*发送资源请求的列车ID*/
|
||||
outString[outStringLength++] = pLogicSecDataCC[deviceId].cResReqOtherCIId;/*发送资源请求的其他联锁ID*/
|
||||
ShortToChar(pLogicSecDataCC[deviceId].wResReqTrainId, &outString[outStringLength]);/*发送资源请求的列车ID*/
|
||||
outStringLength += 2u;
|
||||
ShortToChar(newLogicSecData[deviceId].JumpLockTrainId, &outString[outStringLength]);/*申请或释放跳跃锁闭命令的列车ID*/
|
||||
ShortToChar(pLogicSecDataCC[deviceId].JumpLockTrainId, &outString[outStringLength]);/*申请或释放跳跃锁闭命令的列车ID*/
|
||||
outStringLength += 2u;
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].LogJumpLockState;/*逻辑区段跳跃锁闭状态 0x55 未锁闭,0xAA 锁闭*/
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].LogJumpLockDelayUnlockFlag;/*逻辑区段跳跃锁闭延时解锁设置标志 0x55 未设置,0xaa 设置*/
|
||||
LongToChar(newLogicSecData[deviceId].LogSecJumpDelayUnlockStartCyc, &outString[outStringLength]);/*逻辑区段跳跃锁闭延时解锁起始周期号*/
|
||||
outString[outStringLength++] = pLogicSecDataCC[deviceId].LogJumpLockState;/*逻辑区段跳跃锁闭状态 0x55 未锁闭,0xAA 锁闭*/
|
||||
outString[outStringLength++] = pLogicSecDataCC[deviceId].LogJumpLockDelayUnlockFlag;/*逻辑区段跳跃锁闭延时解锁设置标志 0x55 未设置,0xaa 设置*/
|
||||
LongToChar(pLogicSecDataCC[deviceId].LogSecJumpDelayUnlockStartCyc, &outString[outStringLength]);/*逻辑区段跳跃锁闭延时解锁起始周期号*/
|
||||
outStringLength += 4u;
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].LogSecJumpLockPermFlag;/*逻辑区段跳跃锁闭允许标志 0x55 允许,0xaa 禁止*/
|
||||
outString[outStringLength++] = pLogicSecDataCC[deviceId].LogSecJumpLockPermFlag;/*逻辑区段跳跃锁闭允许标志 0x55 允许,0xaa 禁止*/
|
||||
|
||||
|
||||
if (LOGIC_SECTION_RES_SUM_MAX < newLogicSecData[deviceId].chTrainInfoSum)
|
||||
if (LOGIC_SECTION_RES_SUM_MAX < pLogicSecDataCC[deviceId].chTrainInfoSum)
|
||||
{
|
||||
/* 数量不合法 */
|
||||
outString[outStringLength++] = 0u;/*逻辑区段资源数量*/
|
||||
}
|
||||
else
|
||||
{
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].chTrainInfoSum;/*逻辑区段资源数量*/
|
||||
for (jj = 0u; jj < newLogicSecData[deviceId].chTrainInfoSum; jj++)
|
||||
outString[outStringLength++] = pLogicSecDataCC[deviceId].chTrainInfoSum;/*逻辑区段资源数量*/
|
||||
for (jj = 0u; jj < pLogicSecDataCC[deviceId].chTrainInfoSum; jj++)
|
||||
{
|
||||
ShortToChar(newLogicSecData[deviceId].szTrainResData[jj].wTrainId, &outString[outStringLength]);/*列车ID*/
|
||||
ShortToChar(pLogicSecDataCC[deviceId].szTrainResData[jj].wTrainId, &outString[outStringLength]);/*列车ID*/
|
||||
outStringLength += 2u;
|
||||
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].szTrainResData[jj].chTrainApplyState;/*列车申请状态*/
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].szTrainResData[jj].chLogicResUsable;/*列车资源状态*/
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].szTrainResData[jj].chLogicReturnState;/*折返逻辑区段标志*/
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].szTrainResData[jj].chLogicUnlockState;/*列车申请状态*/
|
||||
LongToChar(newLogicSecData[deviceId].szTrainResData[jj].dwRcvUnlockCmdCyc, &outString[outStringLength]);/*逻辑延时解锁周期号*/
|
||||
outString[outStringLength++] = pLogicSecDataCC[deviceId].szTrainResData[jj].chTrainApplyState;/*列车申请状态*/
|
||||
outString[outStringLength++] = pLogicSecDataCC[deviceId].szTrainResData[jj].chLogicResUsable;/*列车资源状态*/
|
||||
outString[outStringLength++] = pLogicSecDataCC[deviceId].szTrainResData[jj].chLogicReturnState;/*折返逻辑区段标志*/
|
||||
outString[outStringLength++] = pLogicSecDataCC[deviceId].szTrainResData[jj].chLogicUnlockState;/*列车申请状态*/
|
||||
LongToChar(pLogicSecDataCC[deviceId].szTrainResData[jj].dwRcvUnlockCmdCyc, &outString[outStringLength]);/*逻辑延时解锁周期号*/
|
||||
outStringLength += 4u;
|
||||
}
|
||||
}
|
||||
LongToChar(newLogicSecData[deviceId].LogErrlockStartCycNum, &outString[outStringLength]);/*逻辑区段延时设置故障锁闭起始周期号*/
|
||||
LongToChar(pLogicSecDataCC[deviceId].LogErrlockStartCycNum, &outString[outStringLength]);/*逻辑区段延时设置故障锁闭起始周期号*/
|
||||
outStringLength += 4U;
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].chLogicProResUsable;/*逻辑区段防护锁闭资源可用状态*/
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].chLogicSpksFLockState;/*逻辑区段被SPKS封锁状态*/
|
||||
|
||||
if (LOGSEC_RELATE_ROUTE_SUM_MAX >= newLogicSecData[deviceId].chLogSecLockBelLogRouteSum)
|
||||
if (LOGSEC_RELATE_ROUTE_SUM_MAX >= pLogicSecDataCC[deviceId].chLogSecLockBelLogRouteSum)
|
||||
{
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].chLogSecLockBelLogRouteSum; /*逻辑区段锁闭所属逻辑进路数量*/
|
||||
for (kk = 0U; kk < newLogicSecData[deviceId].chLogSecLockBelLogRouteSum; kk++)
|
||||
outString[outStringLength++] = pLogicSecDataCC[deviceId].chLogSecLockBelLogRouteSum; /*逻辑区段锁闭所属逻辑进路数量*/
|
||||
for (kk = 0U; kk < pLogicSecDataCC[deviceId].chLogSecLockBelLogRouteSum; kk++)
|
||||
{
|
||||
ShortToChar(newLogicSecData[deviceId].szLogSecLockBelLogRouteData[kk].wLogSecLockBelLogRouteId, &outString[outStringLength]); /*逻辑区段锁闭所属逻辑进路ID*/
|
||||
ShortToChar(pLogicSecDataCC[deviceId].szLogSecLockBelLogRouteData[kk].wLogSecLockBelLogRouteId, &outString[outStringLength]); /*逻辑区段锁闭所属逻辑进路ID*/
|
||||
outStringLength += 2u;
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].szLogSecLockBelLogRouteData[kk].chLogSecLockBelLogRouteState; /*逻辑区段锁闭所属逻辑进路状态*/
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].szLogSecLockBelLogRouteData[kk].wLogSecLockBelLogRouteDir; /*逻辑区段被逻辑进路锁闭的方向ID*/
|
||||
outString[outStringLength++] = pLogicSecDataCC[deviceId].szLogSecLockBelLogRouteData[kk].chLogSecLockBelLogRouteState; /*逻辑区段锁闭所属逻辑进路状态*/
|
||||
outString[outStringLength++] = pLogicSecDataCC[deviceId].szLogSecLockBelLogRouteData[kk].wLogSecLockBelLogRouteDir; /*逻辑区段被逻辑进路锁闭的方向ID*/
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1322,11 +1408,12 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outString[outStringLength++] = 0U; /*逻辑区段锁闭所属逻辑进路数量超限,不解析*/
|
||||
}
|
||||
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].LogSecLogLockState; /*逻辑区段逻辑锁闭状态*/
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].LogSecLogLockDir; /*逻辑区段逻辑锁闭方向*/
|
||||
outString[outStringLength++] = pLogicSecDataCC[deviceId].LogSecLogLockState; /*逻辑区段逻辑锁闭状态*/
|
||||
outString[outStringLength++] = pLogicSecDataCC[deviceId].LogSecLogLockDir; /*逻辑区段逻辑锁闭方向*/
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].chLinShiXianSuSetSpeed; /*逻辑区段临时限速值*/
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].chAblRelLogSecUsableFlag; /*ABL列车关联逻辑区段允许使用标志*/
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].cRouteLeaveLogFlag; /*离去区段ABL列车检查标志*/
|
||||
outString[outStringLength++] = pLogicSecDataCC[deviceId].chAblRelLogSecUsableFlag; /*ABL列车关联逻辑区段允许使用标志*/
|
||||
outString[outStringLength++] = pLogicSecDataCC[deviceId].cRouteLeaveLogFlag; /*离去区段ABL列车检查标志*/
|
||||
outString[outStringLength++] = newLogicSecData[deviceId].chLogSecEmergXianSu;/*逻辑区段紧急临时限速*/
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1408,18 +1495,46 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].PauseTrainWashRequestDrvState;/*暂停洗车请求驱动状态(动态字段:驱动)*/
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].PaseWashMachineRequesDrvtState;/*通过洗车机请求驱动状态(动态字段:驱动)*/
|
||||
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].WashmachineXTACurState;/*洗车同意按钮当前状态*/
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].WashmachineXTAPreState;/*洗车同意按钮上周期状态*/
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].WashmachineXTALogicState;/*洗车机按钮逻辑状态*/
|
||||
LongToChar(newWashMachineData[deviceId].WashmachineXTAPressDownCycle,&outString[outStringLength]);/*洗车机洗车同意按钮按下起始周期*/
|
||||
outStringLength += 4u;
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].WashMachineWorkModeDrvtState;/*洗车机洗车模式驱动状态(动态字段:驱动)*/
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].WashModeState;/*洗车机洗车模式采集状态*/
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].chSetWashWorkModeBack;/*设置洗车机工作模式反馈*/
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].chDownWashAllowState;/*降级模式洗车同意状态*/
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].chDownWashAllowPassState;/*降级模式洗车同意通过状态*/
|
||||
LongToChar(newWashMachineData[deviceId].WashWorkModeRelayDrvCycle, &outString[outStringLength]);/*洗车模式继电器驱动起始周期号*/
|
||||
outStringLength += 4u;
|
||||
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].chDownWashAllowState;/**降级模式洗车同意状态(动态字段:融合)*/
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].chDownWashAllowPassState;/*降级模式洗车同意通过状态(动态字段:融合)*/
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].chDownWashReqState;/*降级模式洗车请求状态*/
|
||||
LongToChar(newWashMachineData[deviceId].dwDownWashReqCycle, &outString[outStringLength]);/*降级模式洗车请求周期*/
|
||||
outStringLength += 4u;
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].chDownWashPassReqState;/*降级模式反向洗车请求状态*/
|
||||
LongToChar(newWashMachineData[deviceId].dwDownWashPassReqCycle, &outString[outStringLength]);/*降级模式反向洗车请求周期*/
|
||||
outStringLength += 4u;
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].chDownWashAllowColState;/*降级模式洗车线洗车同意状态*/
|
||||
LongToChar(newWashMachineData[deviceId].dwDownWashAllowCycle, &outString[outStringLength]);/*降级模式洗车线洗车同意按钮按下起始周期*/
|
||||
outStringLength += 4u;
|
||||
LongToChar(newWashMachineData[deviceId].dwDownWashBtVadCycle, &outString[outStringLength]);/*降级模式洗车线洗车同意按钮有效周期*/
|
||||
outStringLength += 4u;
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].chDownDccWashAllowColState;/*降级模式DCC洗车同意状态*/
|
||||
LongToChar(newWashMachineData[deviceId].dwDownWashDccAllowCycle, &outString[outStringLength]);/*降级模式DCC洗车同意按钮按下起始周期*/
|
||||
outStringLength += 4u;
|
||||
LongToChar(newWashMachineData[deviceId].dwDownWashDccBtVadCycle, &outString[outStringLength]);/*降级模式DCC洗车同意按钮有效周期*/
|
||||
outStringLength += 4u;
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].chDownWashAllowErrState;/*降级模式洗车线洗车同意粘连状态*/
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].chDownDccWashAllowErrState;/*降级模式DCC洗车同意粘连状态*/
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].chDownWashAllowPassColState;/*降级模式洗车线洗车同意反向通过状态*/
|
||||
LongToChar(newWashMachineData[deviceId].dwDownWashAllowPassCycle, &outString[outStringLength]);/*降级模式洗车线反向通过洗车同意按钮按下起始周期*/
|
||||
outStringLength += 4u;
|
||||
LongToChar(newWashMachineData[deviceId].dwDownWashBtVadPassCycle, &outString[outStringLength]);/*降级模式洗车线反向通过洗车同意按钮有效周期*/
|
||||
outStringLength += 4u;
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].chDownDccWashAllowPassColState;/*降级模式DCC洗车同意反向通过状态*/
|
||||
LongToChar(newWashMachineData[deviceId].dwDownWashDccAllowPassCycle, &outString[outStringLength]);/*降级模式DCC反向通过洗车同意按钮按下起始周期*/
|
||||
outStringLength += 4u;
|
||||
LongToChar(newWashMachineData[deviceId].dwDownWashDccBtVadPassCycle, &outString[outStringLength]);/*降级模式DCC反向通过洗车同意按钮有效周期*/
|
||||
outStringLength += 4u;
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].chDownWashAllowPassErrState;/*降级模式洗车线洗车同意反向通过粘连状态*/
|
||||
outString[outStringLength++] = newWashMachineData[deviceId].chDownDccWashAllowPassErrState;/*降级模式DCC洗车同意反向通过粘连状态*/
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1463,12 +1578,14 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
deviceId = GetPsdId(ii);
|
||||
comparaResult = DeviceCompara((UINT8*)(&Record_PsdDataStru[deviceId]), (UINT16)sizeof(PsdDataStruct),
|
||||
(UINT8*)(&newPsdData[deviceId]), (UINT16)sizeof(PsdDataStruct));
|
||||
comparaResultCC = DeviceCompara((UINT8*)(&Record_PsdDataStruCC[deviceId]), (UINT16)sizeof(PsdDataStructCC),
|
||||
(UINT8*)(&pPsdDataCC[deviceId]), (UINT16)sizeof(PsdDataStructCC));
|
||||
|
||||
if (0u==comparaResult)
|
||||
if ((0U == comparaResult) && (0U == comparaResultCC))
|
||||
{/*比较数据一致*/
|
||||
|
||||
}
|
||||
else if (1u==comparaResult )
|
||||
else if ((1U == comparaResult)|| (1U == comparaResultCC))
|
||||
{/*比较数据不一致*/
|
||||
|
||||
if (CI_ERROR==Flag)
|
||||
@@ -1483,6 +1600,8 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outStringLength += 2u;
|
||||
ShortToChar(newPsdData[deviceId].psdEditGroupInfo,&outString[outStringLength]);/*PSD 编组信息*/
|
||||
outStringLength += 2u;
|
||||
ShortToChar(pPsdDataCC[deviceId].psdEditGroupInfo, &outString[outStringLength]);/*PSD 编组信息CC(0-默认值,3-三编组,4-四编组,6-六编组,8-八编组)*/
|
||||
outStringLength += 2U;
|
||||
outString[outStringLength++] = newPsdData[deviceId].DoorButtonState;/*屏蔽门按钮状态*/
|
||||
outString[outStringLength++] = newPsdData[deviceId].MutualLockRemoveState;/*屏蔽门互锁解除状态*/
|
||||
outString[outStringLength++] = newPsdData[deviceId].PsdDriveState;/*屏蔽门驱动状态*/
|
||||
@@ -1492,6 +1611,12 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outString[outStringLength++] = newPsdData[deviceId].PsdCmd;/*操作屏蔽门的命令*/
|
||||
LongToChar(newPsdData[deviceId].CmdSetCycle,&outString[outStringLength]);/*命令设置周期*/
|
||||
outStringLength += 4u;
|
||||
ShortToChar(pPsdDataCC[deviceId].SrcVobcId, &outString[outStringLength]);/*操作该屏蔽门的当前VOBC编号CC*/
|
||||
outStringLength += 2U;
|
||||
outString[outStringLength] = pPsdDataCC[deviceId].PsdCmd;/*操作屏蔽门的命令CC(0x00-默认值,0x55-打开PSD命令,0xAA-关闭PSD命令,0xFF-查询PSD命令)*/
|
||||
outStringLength++;
|
||||
LongToChar(pPsdDataCC[deviceId].CmdSetCycle, &outString[outStringLength]);/*命令设置周期CC*/
|
||||
outStringLength += 4U;
|
||||
LongToChar(newPsdData[deviceId].CmdSetCyclePsc,&outString[outStringLength]);/*psc状态设置周期*/
|
||||
outStringLength += 4u;
|
||||
outString[outStringLength++] = newPsdData[deviceId].doorOpenButtonState;/*站台开门按钮状态*/
|
||||
@@ -1503,6 +1628,8 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outStringLength += 4u;
|
||||
outString[outStringLength++] = newPsdData[deviceId].StartDetectionState;/*启动探测状态*/
|
||||
outString[outStringLength++] = newPsdData[deviceId].StopDetectionState; /*停止探测状态*/
|
||||
LongToChar(newPsdData[deviceId].StopDetectionCycNum,&outString[outStringLength]);/*停止探测周期*/
|
||||
outStringLength += 4u;
|
||||
outString[outStringLength++] = newPsdData[deviceId].VOBCDoorState; /*VOBC车门状态*/
|
||||
LongToChar(newPsdData[deviceId].PCBPressCycNum,&outString[outStringLength]);/*PCB按下起始周期*/
|
||||
outStringLength += 4u;
|
||||
@@ -1528,8 +1655,19 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outString[outStringLength++] = newPsdData[deviceId].chVideoQkDriveState; /*视频清客驱动状态*/
|
||||
ShortToChar(newPsdData[deviceId].wVideoQkRelateVobcId, &outString[outStringLength]);/*视频清客对应列车ID*/
|
||||
outStringLength += 2u;
|
||||
}
|
||||
outString[outStringLength] = newPsdData[deviceId].cPsdExceptOpenState; /*屏蔽门异常打开状态:0x55-异常打开,0xAA-未异常打开*/
|
||||
outStringLength++;
|
||||
LongToChar(newPsdData[deviceId].dwPsdRelayDownCycNum, &outString[outStringLength]); /*PSD门关继电器落下起始周期*/
|
||||
outStringLength += 4U;
|
||||
|
||||
outString[outStringLength] = newPsdData[deviceId].JXTCMutualLockFaultState; /*间隙探测旁路按钮故障状态*/
|
||||
outStringLength++;
|
||||
LongToChar(newPsdData[deviceId].JXTCMutualLockStartCycNum, &outString[outStringLength]); /*间隙探测旁路按钮按压起始周期*/
|
||||
outStringLength += 4U;
|
||||
outString[outStringLength++] = newPsdData[deviceId].ibpButtonState;/*IBP盘发车按钮状态*/
|
||||
LongToChar(newPsdData[deviceId].IBPPressCycNum, &outString[outStringLength]); /*IBP盘发车按钮按下周期*/
|
||||
outStringLength += 4U;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1572,12 +1710,14 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
deviceId = GetGaragedoorId(ii);
|
||||
comparaResult = DeviceCompara((UINT8*)(&Record_GaragedoorDataStru[deviceId]), (UINT16)sizeof(GaragedoorDataStruct),
|
||||
(UINT8*)(&newGaragedoorData[deviceId]), (UINT16)sizeof(GaragedoorDataStruct));
|
||||
comparaResultCC = DeviceCompara((UINT8*)(&Record_GaragedoorDataStruCC[deviceId]), (UINT16)sizeof(GaragedoorDataStructCC),
|
||||
(UINT8*)(&pGaragedoorDataCC[deviceId]), (UINT16)sizeof(GaragedoorDataStructCC));
|
||||
|
||||
if (0u==comparaResult)
|
||||
if ((0U == comparaResult) && (0U == comparaResultCC))
|
||||
{/*比较数据一致*/
|
||||
|
||||
}
|
||||
else if (1u==comparaResult )
|
||||
else if ((1U == comparaResult) || (1U == comparaResultCC))
|
||||
{/*比较数据不一致*/
|
||||
|
||||
if (CI_ERROR==Flag)
|
||||
@@ -1592,7 +1732,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outStringLength += 2u;
|
||||
outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorState; /*车库门状态 (动态字段)*/
|
||||
outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorAllowCloseFlag; /*车库门允许关门标志ZC*/
|
||||
outString[outStringLength++] = newGaragedoorData[deviceId].GDAllowCloseFlagIVOC; /*车库门允许关门标志IVOC*/
|
||||
outString[outStringLength++] = pGaragedoorDataCC[deviceId].GDAllowCloseFlagIVOC; /*车库门允许关门标志IVOC*/
|
||||
outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorModeState; /*车库门模式状态*/
|
||||
outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorFaultState; /*车库门故障状态*/
|
||||
outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorPangLuState; /*车库门旁路状态*/;
|
||||
@@ -1600,7 +1740,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outString[outStringLength++] = newGaragedoorData[deviceId].cmdProcessState; /* 命令处理状态 */
|
||||
LongToChar(newGaragedoorData[deviceId].waiteZCResponseStartCycNum,&outString[outStringLength]);/* 等待ZC反馈开始时间 */
|
||||
outStringLength += 4u;
|
||||
LongToChar(newGaragedoorData[deviceId].waiteIVOCResponseStartCycNum, &outString[outStringLength]);/* 等待IVOC反馈开始时间 */
|
||||
LongToChar(pGaragedoorDataCC[deviceId].waiteIVOCResponseStartCycNum, &outString[outStringLength]);/* 等待IVOC反馈开始时间 */
|
||||
outStringLength += 4u;
|
||||
LongToChar(newGaragedoorData[deviceId].GaragedoorOpenStartCycNum,&outString[outStringLength]);/* 车库门打开开始周期 */
|
||||
outStringLength += 4u;
|
||||
@@ -1649,12 +1789,14 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
deviceId = GetFloodGateId(ii);
|
||||
comparaResult = DeviceCompara((UINT8*)(&Record_FloodGateDataStru[deviceId]), (UINT16)sizeof(FloodGateDataStruct),
|
||||
(UINT8*)(&pNewFloodGateData[deviceId]), (UINT16)sizeof(FloodGateDataStruct));
|
||||
comparaResultCC = DeviceCompara((UINT8*)(&Record_FloodGateDataStruCC[deviceId]), (UINT16)sizeof(FloodGateDataStructCC),
|
||||
(UINT8*)(&pNewFloodGateDataCC[deviceId]), (UINT16)sizeof(FloodGateDataStructCC));
|
||||
|
||||
if (0u==comparaResult )
|
||||
if ((0U == comparaResult) && (0U == comparaResultCC))
|
||||
{/*比较数据一致*/
|
||||
|
||||
}
|
||||
else if (1u==comparaResult )
|
||||
else if ((1U == comparaResult) || (1U == comparaResultCC))
|
||||
{/*比较数据不一致*/
|
||||
|
||||
if (CI_ERROR==Flag )
|
||||
@@ -1674,19 +1816,19 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outString[outStringLength++] = pNewFloodGateData[deviceId].CurAgreeCloseStateIn; /*当前同意关门采集状态*/;
|
||||
outString[outStringLength++] = pNewFloodGateData[deviceId].CurAgreeCloseStateOut; /* 当前同意关门输出状态(动态字段)*/
|
||||
|
||||
outString[outStringLength++] = pNewFloodGateData[deviceId].FloodGateCloseApplyIvocSum; /*防淹门关门申请列车数量*/
|
||||
for (jj = 0u; jj < pNewFloodGateData[deviceId].FloodGateCloseApplyIvocSum; jj++)
|
||||
outString[outStringLength++] = pNewFloodGateDataCC[deviceId].FloodGateCloseApplyIvocSum; /*防淹门关门申请列车数量*/
|
||||
for (jj = 0u; jj < pNewFloodGateDataCC[deviceId].FloodGateCloseApplyIvocSum; jj++)
|
||||
{
|
||||
ShortToChar(pNewFloodGateData[deviceId].FloodGateCloseApplyIvocId[jj], &outString[outStringLength]);/*防淹门关门申请列车ID*/
|
||||
ShortToChar(pNewFloodGateDataCC[deviceId].FloodGateCloseApplyIvocId[jj], &outString[outStringLength]);/*防淹门关门申请列车ID*/
|
||||
outStringLength += 2u;
|
||||
}
|
||||
|
||||
outString[outStringLength++] = pNewFloodGateData[deviceId].FloodGateCloseAnsIvocSum; /*防淹门关门列车回复列车数量*/
|
||||
for (jj = 0u; jj < pNewFloodGateData[deviceId].FloodGateCloseAnsIvocSum; jj++)
|
||||
outString[outStringLength++] = pNewFloodGateDataCC[deviceId].FloodGateCloseAnsIvocSum; /*防淹门关门列车回复列车数量*/
|
||||
for (jj = 0u; jj < pNewFloodGateDataCC[deviceId].FloodGateCloseAnsIvocSum; jj++)
|
||||
{
|
||||
ShortToChar(pNewFloodGateData[deviceId].FloodGateCloseFromIvocStru[jj].wTrainId, &outString[outStringLength]);/*列车同意防淹门关门请求列车ID*/
|
||||
ShortToChar(pNewFloodGateDataCC[deviceId].FloodGateCloseFromIvocStru[jj].wTrainId, &outString[outStringLength]);/*列车同意防淹门关门请求列车ID*/
|
||||
outStringLength += 2u;
|
||||
outString[outStringLength++] = pNewFloodGateData[deviceId].FloodGateCloseFromIvocStru[jj].wFloodGateCloseIvocFlag; /*列车同意防淹门关门请求状态*/
|
||||
outString[outStringLength++] = pNewFloodGateDataCC[deviceId].FloodGateCloseFromIvocStru[jj].wFloodGateCloseIvocFlag; /*列车同意防淹门关门请求状态*/
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1730,12 +1872,14 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
deviceId = GetOverlapId(ii);
|
||||
comparaResult = DeviceCompara((UINT8*)(&Record_OverlapDataStru[deviceId]), (UINT16)sizeof(OverlapDataStruct),
|
||||
(UINT8*)(&newOverlapData[deviceId]), (UINT16)sizeof(OverlapDataStruct));
|
||||
comparaResultCC = DeviceCompara((UINT8*)(&Record_OverlapDataStruCC[deviceId]), (UINT16)sizeof(OverlapDataStructCC),
|
||||
(UINT8*)(&pOverlapDataCC[deviceId]), (UINT16)sizeof(OverlapDataStructCC));
|
||||
|
||||
if (0u==comparaResult)
|
||||
if ((0U == comparaResult) && (0U == comparaResultCC))
|
||||
{/*比较数据一致*/
|
||||
|
||||
}
|
||||
else if (1u==comparaResult )
|
||||
else if ((1U == comparaResult) || (1U == comparaResultCC))
|
||||
{/*比较数据不一致*/
|
||||
|
||||
if (CI_ERROR != Flag)
|
||||
@@ -1750,6 +1894,10 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outStringLength += 4u;
|
||||
LongToChar(newOverlapData[deviceId].XuanPaiStartCycNum,&outString[outStringLength]);/*保护区段选排开始周期号*/
|
||||
outStringLength += 4u;
|
||||
LongToChar(newOverlapData[deviceId].dwAtsLastTimeLockCyc, &outString[outStringLength]);/*最近一次ATS锁闭保护区段周期号*/
|
||||
outStringLength += 4u;
|
||||
outString[outStringLength++] = newOverlapData[deviceId].OverlapFromSetRouteCmdFlag; /*保护区段由进路办理时连带的标志*/
|
||||
outString[outStringLength++] = newOverlapData[deviceId].chPreLaborUnlockState; /*之前人工解锁状态*/
|
||||
outString[outStringLength++] = newOverlapData[deviceId].OverlapUnlockApplyFlag;/*向ZC申请解锁保护区段解锁标志*/
|
||||
outString[outStringLength++] = newOverlapData[deviceId].OverlapCanLaborUnlockFlag;/*保护区段可以人工解锁标志*/
|
||||
outString[outStringLength++] = newOverlapData[deviceId].OverlapLaborUnlockSetState;/*保护区段人工解锁设置状态*/
|
||||
@@ -1766,10 +1914,10 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outStringLength += 2U;
|
||||
outString[outStringLength++] = newOverlapData[deviceId].laborLockOverlapCmd;/*人工锁闭保护区段命令标志*/
|
||||
|
||||
ShortToChar(newOverlapData[deviceId].wOverlapUnlockApplyTrainId, &outString[outStringLength]);/*申请解锁保护区段的列车ID*/
|
||||
ShortToChar(pOverlapDataCC[deviceId].wOverlapUnlockApplyTrainId, &outString[outStringLength]);/*申请解锁保护区段的列车ID*/
|
||||
outStringLength += 2U;
|
||||
|
||||
LongToChar(newOverlapData[deviceId].dwReqIvocUnLockStartCycNum, &outString[outStringLength]);/*向车申请解锁保护区段起始周期号*/
|
||||
LongToChar(pOverlapDataCC[deviceId].dwReqIvocUnLockStartCycNum, &outString[outStringLength]);/*向车申请解锁保护区段起始周期号*/
|
||||
outStringLength += 4U;
|
||||
|
||||
outString[outStringLength++] = newOverlapData[deviceId].cProSwitchCheckResultFlag;/*跨控区防护道岔检查结果标志(0xFF:默认值,0x55:失败,0xAA:成功)*/
|
||||
@@ -1844,11 +1992,14 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
comparaResult = DeviceCompara((UINT8*)(&Record_AxisSecDataStru[deviceId]), (UINT16)sizeof(AxisSectionDataStruct),
|
||||
(UINT8*)(&newAxisSecData[deviceId]), (UINT16)sizeof(AxisSectionDataStruct));
|
||||
|
||||
if (0u==comparaResult)
|
||||
comparaResultCC = DeviceCompara((UINT8*)(&Record_AxisSecDataStruCC[deviceId]), (UINT16)sizeof(AxisSectionDataStructCC),
|
||||
(UINT8*)(&pAxisSecDataCC[deviceId]), (UINT16)sizeof(AxisSectionDataStructCC));
|
||||
|
||||
if ((0u==comparaResult) && (0U == comparaResultCC))
|
||||
{/*比较数据一致*/
|
||||
|
||||
}
|
||||
else if (1u==comparaResult )
|
||||
else if ((1U==comparaResult ) || (1U == comparaResultCC))
|
||||
{/*比较数据不一致*/
|
||||
|
||||
if (CI_ERROR != Flag)
|
||||
@@ -1858,17 +2009,19 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
ShortToChar(newAxisSecData[deviceId].AxisSectionId,&outString[outStringLength]);/*计轴区段ID*/
|
||||
outStringLength += 2u;
|
||||
outString[outStringLength++] = newAxisSecData[deviceId].AxisArbState;/*计轴ARB状态 (动态字段)*/
|
||||
outString[outStringLength] = pAxisSecDataCC[deviceId].AxisArbState;/*计轴ARB状态CC(0x55-未ARB,0xaa-ARB)*/
|
||||
outStringLength++;
|
||||
outString[outStringLength++] = newAxisSecData[deviceId].AxisJumpLockApplyFlag;/*跳跃锁闭申请标志*/
|
||||
outString[outStringLength++] = newAxisSecData[deviceId].AxisJumpLockCancelApplyFlag;/*跳跃锁闭取消申请标志*/
|
||||
LongToChar(newAxisSecData[deviceId].AxisJumpLockApplyCylce,&outString[outStringLength]);/*跳跃锁闭申请周期号*/
|
||||
outStringLength += 4u;
|
||||
outString[outStringLength++] = newAxisSecData[deviceId].AxisJumpLockState;/*跳跃锁闭状态*/
|
||||
outString[outStringLength++] = newAxisSecData[deviceId].AxisOccStatus;/*计轴占用状态*/
|
||||
LongToChar(newAxisSecData[deviceId].dwAxisOccCycNum, &outString[outStringLength]);/*计轴占用起始周期*/
|
||||
outString[outStringLength++] = pAxisSecDataCC[deviceId].AxisOccStatus;/*计轴占用状态*/
|
||||
LongToChar(pAxisSecDataCC[deviceId].dwAxisOccCycNum, &outString[outStringLength]);/*计轴占用起始周期*/
|
||||
outStringLength += 4u;
|
||||
LongToChar(newAxisSecData[deviceId].dwUtOccupyCycNum, &outString[outStringLength]);/*计轴最近坏车占用周期*/
|
||||
LongToChar(pAxisSecDataCC[deviceId].dwUtOccupyCycNum, &outString[outStringLength]);/*计轴最近坏车占用周期*/
|
||||
outStringLength += 4u;
|
||||
ShortToChar(newAxisSecData[deviceId].wPosMonitorTrainId, &outString[outStringLength]); /*监督有效的列车ID*/
|
||||
ShortToChar(pAxisSecDataCC[deviceId].wPosMonitorTrainId, &outString[outStringLength]); /*监督有效的列车ID*/
|
||||
outStringLength += 2u;
|
||||
}
|
||||
}
|
||||
@@ -1997,7 +2150,8 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
LongToChar(pNewSpksData[deviceId].flockStartNum, &outString[outStringLength]);
|
||||
outStringLength += 4U;
|
||||
outString[outStringLength++] = pNewSpksData[deviceId].TotalSpksDriveOutDis;
|
||||
|
||||
LongToChar(pNewSpksData[deviceId].dwSpksBtnPressCycNum, &outString[outStringLength]); /*SPKS按钮按下起始周期号*/
|
||||
outStringLength += 4U;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -2015,7 +2169,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
else
|
||||
{
|
||||
#ifdef PLATFORM_2OO2
|
||||
debug_infor_printf((const)"\nSpksData:%d\spksId(2)-status-cutStatus-flockStartNum(4)-TotalSpksDriveOutDis:%d", (UINT16)sizeof(SpksDataStruct), outStringLength);
|
||||
debug_infor_printf((const)"\nSpksData:%d\nspksId(2)-status-cutStatus-flockStartNum(4)-TotalSpksDriveOutDis:%d", (UINT16)sizeof(SpksDataStruct), outStringLength);
|
||||
|
||||
debug_out_array(0xAA, outString, outStringLength);
|
||||
#endif
|
||||
@@ -2115,6 +2269,9 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
LongToChar(pNewTrainInfoData[deviceId].dwDelayTime, &outString[outStringLength]);/*消息延迟时间*/
|
||||
outStringLength += 4u;
|
||||
|
||||
LongToChar(pNewTrainInfoData[deviceId].dwStartFlyCycNum, &outString[outStringLength]);/*列车飞车起始周期号*/
|
||||
outStringLength += 4U;
|
||||
|
||||
ShortToChar(pNewTrainInfoData[deviceId].wGroupOtherTrainId, &outString[outStringLength]);/* 编组另一列车ID*/
|
||||
outStringLength += 2u;
|
||||
|
||||
@@ -2251,6 +2408,9 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
outString[outStringLength] = pNewTrainInfoData[deviceId].chTrainReportState; /*列车汇报状态*/
|
||||
outStringLength++;
|
||||
outString[outStringLength++] = pNewTrainInfoData[deviceId].chEaCmdState; /*区间疏散命令状态:0x55 有效;0xAA 无效*/
|
||||
|
||||
outString[outStringLength++] = pNewTrainInfoData[deviceId].chtrainControlMode;/*当前控车模式*/
|
||||
outString[outStringLength++] = pNewTrainInfoData[deviceId].chTrainPostionMode; /*列车位置模式,0无位置,1使用IVOC位置,2使用VOBC位置*/
|
||||
}
|
||||
|
||||
|
||||
@@ -2669,17 +2829,19 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
break;
|
||||
}
|
||||
pNonAutoReturnData = GetNonReturnData();
|
||||
|
||||
pNonReturnDataStruCC = GetNonReturnDataCC();
|
||||
/*比较数据*/
|
||||
deviceId = GetNonReturnId(ii);
|
||||
comparaResult = DeviceCompara((UINT8*)(&Record_NonReturnDataStru[deviceId]), (UINT16)sizeof(NonAutoReturnDataStruct),
|
||||
(UINT8*)(&pNonAutoReturnData[deviceId]), (UINT16)sizeof(NonAutoReturnDataStruct));
|
||||
|
||||
if (0u == comparaResult)
|
||||
comparaResultCC = DeviceCompara((UINT8*)(&Record_NonReturnDataStruCC[deviceId]), (UINT16)sizeof(NonAutoReturnDataStructCC),
|
||||
(UINT8*)(&pNonReturnDataStruCC[deviceId]), (UINT16)sizeof(NonAutoReturnDataStructCC));
|
||||
if ((0U == comparaResult) && (0U == comparaResultCC))
|
||||
{/*比较数据一致*/
|
||||
|
||||
}
|
||||
else if (1u == comparaResult)
|
||||
else if ((1U == comparaResult) || (1U == comparaResultCC))
|
||||
{/*比较数据不一致*/
|
||||
|
||||
if (CI_ERROR == Flag)
|
||||
@@ -2690,10 +2852,12 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
|
||||
{
|
||||
/**************打印数据信息****************/
|
||||
outString[outStringLength++] = pNonAutoReturnData[deviceId].IndicatorDevID; /*指示灯设备ID*/
|
||||
ShortToChar(pNonAutoReturnData[deviceId].cmdSetTrainId, &outString[outStringLength]);/*命令列车ID*/
|
||||
ShortToChar(pNonReturnDataStruCC[deviceId].cmdSetTrainId, &outString[outStringLength]);/*命令列车ID*/
|
||||
outStringLength += 2u;
|
||||
outString[outStringLength++] = pNonAutoReturnData[deviceId].VobcToCIAutoRtnIndicFlashState; /*车载给联锁的无人折返指示灯闪灯状态*/
|
||||
outString[outStringLength++] = pNonAutoReturnData[deviceId].VobcToCIAutoRtnIndicSteadyState; /*车载给联锁的无人折返指示灯稳灯状态*/
|
||||
outString[outStringLength] = pNonAutoReturnData[deviceId].VobcToCIAutoRtnIndicFlashState; /*车载给联锁的无人折返指示灯闪灯状态*/
|
||||
outStringLength++;
|
||||
outString[outStringLength] = pNonAutoReturnData[deviceId].VobcToCIAutoRtnIndicSteadyState; /*车载给联锁的无人折返指示灯稳灯状态*/
|
||||
outStringLength++;
|
||||
ShortToChar(pNonAutoReturnData[deviceId].RtnRelayAdhesionState.AdhesionRealyId, &outString[outStringLength]);/*粘连继电器ID*/
|
||||
outStringLength += 2u;
|
||||
outString[outStringLength++] = pNonAutoReturnData[deviceId].RtnRelayAdhesionState.AdhesionState; /*继电器粘连状态*/
|
||||
@@ -2885,7 +3049,7 @@ UINT8 DeviceCompara(UINT8* deviceStruAddr1, const UINT16 deviceStruLen1,
|
||||
void GetVirCIKeyDataStru(void)
|
||||
{
|
||||
UINT8 ii = 0u;
|
||||
UINT8 jj = 0U;
|
||||
|
||||
|
||||
for(ii=0u;ii<g_VirtualCIStructData.virtualCiNum;ii++)
|
||||
{
|
||||
@@ -2904,12 +3068,6 @@ void GetVirCIKeyDataStru(void)
|
||||
newVirCIKeyDataStru[ii].ZfwValidCycNum = g_VirtualCIStructData.virtualCi[ii].ZfwValidCycNum;
|
||||
|
||||
|
||||
for (jj = 0U; jj < RTNINDICATOR_SUM_MAX; jj++)
|
||||
{
|
||||
newVirCIKeyDataStru[ii].RtnIndicatorKeyData[jj].PrintVirCiIndicatorDevId = g_VirtualCIStructData.virtualCi[ii].VirCIRtnIndicatorStaData[jj].VirCiIndicatorDevId;
|
||||
newVirCIKeyDataStru[ii].RtnIndicatorKeyData[jj].PrintVirCiFlashState = g_VirtualCIStructData.virtualCi[ii].VirCIRtnIndicatorStaData[jj].VirCiFlashState;
|
||||
newVirCIKeyDataStru[ii].RtnIndicatorKeyData[jj].PrintVirCiSteadyState = g_VirtualCIStructData.virtualCi[ii].VirCIRtnIndicatorStaData[jj].VirCiSteadyState;
|
||||
}
|
||||
newVirCIKeyDataStru[ii].ZfwjHunXianFLag = g_VirtualCIStructData.virtualCi[ii].ZfwjHunXianFLag;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "../Section/LogicSectionDataManage.h"
|
||||
#include "LogicalRouteDataManage.h"
|
||||
#include "../LogicProcess/LogicalRouteLogicCheck.h"
|
||||
#include "../Overlap/OverlapDataManage.h"
|
||||
|
||||
/* C01_进路监督级别确认 */
|
||||
/*
|
||||
@@ -564,6 +565,8 @@ void SetRouteRelProSwitchLockSta(const UINT16 routeId, const UINT8 lockCommand)
|
||||
UINT16 protectSwitchId = 0u; /*防护道岔ID*/
|
||||
UINT8 routeProtectSwitchSum = 0u; /*防护道岔数目*/
|
||||
RouteProtectSwitchStruct* routeProtectSwitchStru = NULL; /*防护道岔数据*/
|
||||
UINT8 cSwitchCurPos = 0U; /*道岔当前位置*/
|
||||
UINT8 cFuncRet = CI_ERROR;
|
||||
|
||||
routeProtectSwitchSum = GetRouteRelatedProtectSwitchSum(routeId); /*获取防护道岔数目*/
|
||||
routeProtectSwitchStru = GetRouteRelatedProtSwitchData(routeId); /*获取防护道岔数据*/
|
||||
@@ -586,20 +589,30 @@ void SetRouteRelProSwitchLockSta(const UINT16 routeId, const UINT8 lockCommand)
|
||||
|
||||
if (CI_SUCCESS == retVal)
|
||||
{
|
||||
for (ii= 0u; ii < routeProtectSwitchSum; ii++)
|
||||
for (ii = 0u; ii < routeProtectSwitchSum; ii++)
|
||||
{
|
||||
protectSwitchId = routeProtectSwitchStru[ii].ProtectSwitchId;
|
||||
SetSwitchLockStatus(SWITCH_PLOCKTYPE_ROUTE,routeId,protectSwitchId, lockCommand); /*设置道岔防护锁闭状态*/
|
||||
/*RC 13.0.0 修:不检查防护道岔中双动道岔另一端*/
|
||||
cSwitchCurPos = GetSwitchCurPosition(protectSwitchId);
|
||||
cFuncRet = checkSwtLastValDrvPosStayorNot(protectSwitchId, routeProtectSwitchStru[ii].ProtectPosition);
|
||||
if ((SWITCH_LOCK_PROTECT_CANCEL == lockCommand)
|
||||
|| ((SWITCH_LOCK_PROTECT_SET == lockCommand) && (cSwitchCurPos == routeProtectSwitchStru[ii].ProtectPosition) && (CI_SUCCESS == cFuncRet)))
|
||||
{
|
||||
SetSwitchLockStatus(SWITCH_PLOCKTYPE_ROUTE, routeId, protectSwitchId, lockCommand); /*设置道岔防护锁闭状态*/
|
||||
/*RC 13.0.0 修:不检查防护道岔中双动道岔另一端*/
|
||||
#if 0
|
||||
if (SWITCH_TYPE_DOUBLE == GetSwitchType(protectSwitchId))
|
||||
{ /*双动道岔*/
|
||||
SetSwitchLockStatus(SWITCH_PLOCKTYPE_ROUTE,routeId,GetDSwitchOtherId(protectSwitchId), lockCommand); /*设置道岔防护锁闭状态*/
|
||||
if (SWITCH_TYPE_DOUBLE == GetSwitchType(protectSwitchId))
|
||||
{ /*双动道岔*/
|
||||
SetSwitchLockStatus(SWITCH_PLOCKTYPE_ROUTE, routeId, GetDSwitchOtherId(protectSwitchId), lockCommand); /*设置道岔防护锁闭状态*/
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
/*防护道岔不在防护位置或防护道岔存在反向驱动,不设置防护锁闭*/
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -789,7 +802,6 @@ void PhySecFaultUnlockLogicManage(const UINT16 phySectionId,const UINT8 virCIid)
|
||||
UINT8 goExec = CI_ERROR;
|
||||
UINT8 autoTriggerType = 0U;
|
||||
UINT8 belongvirCIid = 0U;
|
||||
UINT8 includeVirFlag = GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG);
|
||||
UINT8 chPhyIncLogSum = 0U; /*包含逻辑区段数目*/
|
||||
UINT16* pPhyIncLogId = NULL; /*物理区段包含逻辑区段ID数组*/
|
||||
UINT16 wLogLockBelongRouteId = 0U; /*逻辑区段锁闭所属进路ID*/
|
||||
@@ -1026,21 +1038,13 @@ void PhySecFaultUnlockLogicManage(const UINT16 phySectionId,const UINT8 virCIid)
|
||||
}
|
||||
}
|
||||
else if((phyBelongCi == localCiId)&&(TRANSMIT_STATE_GOOD == commState))
|
||||
{
|
||||
if(FUNC_SWITCH_ON == includeVirFlag)
|
||||
{
|
||||
belongvirCIid = GetPhySecBelongVirCiId(phySectionId);
|
||||
if((belongvirCIid == virCIid)&&(0u != virCIid))/*区故解可以由相邻虚拟联锁现地操作,不相邻不能操作*/
|
||||
{
|
||||
/*进路属于相邻联锁,且区段属于本联锁时,传递区段故障解锁命令 */
|
||||
AddCiSendToCiCmdInfo(CI_CMD_SECTION_FAULT_UNLOCK,phySectionId,0u,routeBelongCi);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
belongvirCIid = GetPhySecBelongVirCiId(phySectionId);
|
||||
if((belongvirCIid == virCIid)&&(0u != virCIid))/*区故解可以由相邻虚拟联锁现地操作,不相邻不能操作*/
|
||||
{
|
||||
/*进路属于相邻联锁,且区段属于本联锁时,传递区段故障解锁命令 */
|
||||
AddCiSendToCiCmdInfo(CI_CMD_SECTION_FAULT_UNLOCK,phySectionId,0u,routeBelongCi);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1379,6 +1383,13 @@ void RouteRecoverOpenProc(const UINT16 routeId)
|
||||
UINT8 recoverState = ROUTE_RECOVER_STA_STAY;/*当前恢复重开状态*/
|
||||
UINT8 errType = CI_ERROR;
|
||||
UINT8 localCiType = GetLocalCiType();/*获得联锁类型*/
|
||||
UINT16 wStartSignalId = 0U; /*进路始端信号机ID*/
|
||||
UINT8 chVirCiId = 0U;/*虚拟联锁*/
|
||||
UINT8 chLocalVirCiType = 0U;
|
||||
|
||||
|
||||
chVirCiId = GetRouteBelongVirCiId(routeId);
|
||||
chLocalVirCiType = GetLocalVirCiType(chVirCiId);
|
||||
|
||||
routeState = GetRouteState(routeId);
|
||||
recoverState = GetRouteRecoverOpenFlag(routeId);
|
||||
@@ -1387,7 +1398,7 @@ void RouteRecoverOpenProc(const UINT16 routeId)
|
||||
{
|
||||
if (ROUTE_RECOVER_STA_WAIT == recoverState)
|
||||
{
|
||||
if ((CI_TYPE_ZX == localCiType) || (CI_TYPE_SCX == localCiType))
|
||||
if ((CI_TYPE_ZX == chLocalVirCiType) || (CI_TYPE_SCX == chLocalVirCiType))
|
||||
{
|
||||
errType = RecoverOpenRouteCheck(routeId);
|
||||
}
|
||||
@@ -1396,6 +1407,7 @@ void RouteRecoverOpenProc(const UINT16 routeId)
|
||||
errType = RecoverOpenRouteCheckCLD(routeId);
|
||||
}
|
||||
|
||||
wStartSignalId = GetRouteStartSignalId(routeId); /*获取进路始端信号机ID*/
|
||||
if (errType == CI_SUCCESS)
|
||||
{
|
||||
SetRouteOpenSigStartCycNum(routeId, Get2oo2CurCycleNum());
|
||||
@@ -1410,6 +1422,9 @@ void RouteRecoverOpenProc(const UINT16 routeId)
|
||||
else
|
||||
{
|
||||
SetRouteRecoverState(routeId, ROUTE_RECOVER_STA_STAY);/*一旦出现PSD、SPKS、扣车以外的条件不满足,将进路恢复状态设置为不可恢复*/
|
||||
|
||||
/*开放条件检查失败,设置对应始端信号机扣车旁路按钮无效*/
|
||||
SetDetCutBtnState(wStartSignalId, SIGNAL_DETAIN_CUT_VALID_NO);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1428,7 +1443,6 @@ void SetAtsExpectLockOverlapIdProc(const UINT16 expLkOverlapId,const UINT8 lockT
|
||||
UINT16 ii = 0u;
|
||||
UINT16 routeOverlapSum = 0u; /*进路保护区段数目*/
|
||||
UINT16 routeId = 0u; /*进路ID*/
|
||||
UINT16 routedLockOverlapId = 0u; /*进路锁闭过OverlapId*/
|
||||
UINT8 retVal = CI_SUCCESS; /*执行检查*/
|
||||
UINT8 routeState = 0u; /*进路状态*/
|
||||
UINT16 preOverlepId = 0u;
|
||||
@@ -1438,9 +1452,9 @@ void SetAtsExpectLockOverlapIdProc(const UINT16 expLkOverlapId,const UINT8 lockT
|
||||
UINT8 flag = 0u;
|
||||
UINT8 belongCiId = 0u;
|
||||
UINT8 localCiId = GetSystemParaLocalCiId(); /*获取本机联锁ID*/
|
||||
UINT8 includeVirFlag = GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG);
|
||||
UINT8 virCIid = 0u;
|
||||
UINT8 ciCtrModeFlag = 0u;
|
||||
UINT32 dwCurCycNum = Get2oo2CurCycleNum();
|
||||
|
||||
if ((0u == expLkOverlapId) || (UINT16_MAX == expLkOverlapId))
|
||||
{/*判断输入参数有效性*/
|
||||
@@ -1481,9 +1495,9 @@ void SetAtsExpectLockOverlapIdProc(const UINT16 expLkOverlapId,const UINT8 lockT
|
||||
if (routeOverlapSum >= 1u)
|
||||
{/*只有当进路的保护区段数目大于等于1个时,ATS或现地才发送期望锁闭保护区段ID*/
|
||||
/*输入参数保护区段ID是否属于当前进路 且进路保护区段未锁闭过*/
|
||||
if (1u == checkExpOverlapBelongToRtOrNot(routeId,expLkOverlapId))
|
||||
if (1u == checkExpOverlapBelongToRtOrNot(routeId, expLkOverlapId))
|
||||
{/*期望锁闭的保护区段ID属于进路的保护区段ID*/
|
||||
flag = 1u;/*有任意一条匹配到了,则置为1*/
|
||||
flag = 1u;/*有任意一条匹配到了,则置为1*/
|
||||
retVal = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
@@ -1508,79 +1522,62 @@ void SetAtsExpectLockOverlapIdProc(const UINT16 expLkOverlapId,const UINT8 lockT
|
||||
/*判断当前保护区段所属联锁控制模式是否可以响应锁闭保护区段命令*/
|
||||
if (CI_SUCCESS == retVal)
|
||||
{
|
||||
virCIid= GetOverlapBelongVirCiId(expLkOverlapId);
|
||||
if(FUNC_SWITCH_ON == includeVirFlag)
|
||||
{
|
||||
ciCtrModeFlag = GetVirCImode(virCIid);/*获取联锁控制模式*/
|
||||
}
|
||||
else
|
||||
{
|
||||
ciCtrModeFlag = GetCiModeFlag(); /*获取联锁控制模式*/
|
||||
}
|
||||
virCIid = GetOverlapBelongVirCiId(expLkOverlapId);
|
||||
|
||||
if((CI_MODE_CI_LOCAL ==ciCtrModeFlag)||(0u ==ciCtrModeFlag))/*处于联锁控或者获取错误,发送现地不能响应人工锁闭命令*/
|
||||
ciCtrModeFlag = GetVirCImode(virCIid);/*获取联锁控制模式*/
|
||||
if ((CI_MODE_CI_LOCAL == ciCtrModeFlag) || (0u == ciCtrModeFlag))/*处于联锁控或者获取错误,发送现地不能响应人工锁闭命令*/
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
/*add by shl*/
|
||||
|
||||
if (CI_SUCCESS == retVal)
|
||||
{
|
||||
/*判断进路状态,是否满足锁闭保护区段条件,若满足则设置期望锁闭保护区段*/
|
||||
routeState = GetRouteState(routeId);
|
||||
|
||||
routedLockOverlapId = GetRouteOverlapLockedId(routeId); /*获取进路锁闭过保护区段ID*/
|
||||
|
||||
if (0u == routedLockOverlapId)
|
||||
{
|
||||
/*判断进路状态,是否满足锁闭保护区段条件,若满足则设置期望锁闭保护区段*/
|
||||
routeState = GetRouteState(routeId);
|
||||
|
||||
if ((routeState == ROUTE_STATE_FIRST_XUANPAI) ||
|
||||
(routeState == ROUTE_STATE_XUANPAI) ||
|
||||
(routeState == ROUTE_STATE_FIRST_LOCK) ||
|
||||
(routeState == ROUTE_STATE_FIRST_LOCKERR) ||
|
||||
(routeState == ROUTE_STATE_YUXIAN_OPEN) ||
|
||||
(routeState == ROUTE_STATE_YUXIAN_LOCK) ||
|
||||
(routeState == ROUTE_STATE_NEAR_OPEN) ||
|
||||
(routeState == ROUTE_STATE_NEAR_LOCK) ||
|
||||
(routeState == ROUTE_STATE_NEAR_LOCKERR) ||
|
||||
(routeState == ROUTE_STATE_AUTO_UNLOCK) ||
|
||||
(routeState == ROUTE_STATE_HALF_UNLOCK)
|
||||
)
|
||||
{/*设置指定ID进路的期望锁闭保护区段ID*/
|
||||
if(LABOR_LOCK_OVERLAP == lockType)/*人工锁闭*/
|
||||
if ((routeState == ROUTE_STATE_FIRST_XUANPAI) ||
|
||||
(routeState == ROUTE_STATE_XUANPAI) ||
|
||||
(routeState == ROUTE_STATE_FIRST_LOCK) ||
|
||||
(routeState == ROUTE_STATE_FIRST_LOCKERR) ||
|
||||
(routeState == ROUTE_STATE_YUXIAN_OPEN) ||
|
||||
(routeState == ROUTE_STATE_YUXIAN_LOCK) ||
|
||||
(routeState == ROUTE_STATE_NEAR_OPEN) ||
|
||||
(routeState == ROUTE_STATE_NEAR_LOCK) ||
|
||||
(routeState == ROUTE_STATE_NEAR_LOCKERR) ||
|
||||
(routeState == ROUTE_STATE_AUTO_UNLOCK) ||
|
||||
(routeState == ROUTE_STATE_HALF_UNLOCK)
|
||||
)
|
||||
{/*设置指定ID进路的期望锁闭保护区段ID*/
|
||||
if (LABOR_LOCK_OVERLAP == lockType)/*人工锁闭*/
|
||||
{
|
||||
SetOverlapAtsOrlaborLockCmdFlag(expLkOverlapId, LOCK_OVERLAP_CMD_YES);/*设置保护区段锁闭命令标志,用于保护区段解锁倒计时计算*/
|
||||
SetOverlaplaborLockCmdFlag(expLkOverlapId, LOCK_OVERLAP_CMD_YES);/*设置人工锁闭标志,用于人工命令一次有效处理*/
|
||||
ClearPreLoaborUnlockState(expLkOverlapId);
|
||||
}
|
||||
else if (ATS_LOCK_OVERLAP == lockType)/*ATS锁闭*/
|
||||
{
|
||||
phySectionId = GetRouteLastPhySectionId(routeId);
|
||||
phySectionSta = GetPhySecCurMergeState(phySectionId);
|
||||
if (SECTION_OCCUPY_YES == phySectionSta)
|
||||
{
|
||||
SetOverlapAtsOrlaborLockCmdFlag(expLkOverlapId,LOCK_OVERLAP_CMD_YES);/*设置保护区段锁闭命令标志,用于保护区段解锁倒计时计算*/
|
||||
SetOverlaplaborLockCmdFlag(expLkOverlapId,LOCK_OVERLAP_CMD_YES);/*设置人工锁闭标志,用于人工命令一次有效处理*/
|
||||
SetOverlapAtsOrlaborLockCmdFlag(expLkOverlapId, LOCK_OVERLAP_CMD_YES);/*设置保护区段锁闭命令标志*/
|
||||
}
|
||||
else if(ATS_LOCK_OVERLAP == lockType)/*ATS锁闭*/
|
||||
{
|
||||
phySectionId = GetRouteLastPhySectionId(routeId);
|
||||
phySectionSta = GetPhySecCurMergeState(phySectionId);
|
||||
if(SECTION_OCCUPY_YES==phySectionSta)
|
||||
{
|
||||
SetOverlapAtsOrlaborLockCmdFlag(expLkOverlapId,LOCK_OVERLAP_CMD_YES);/*设置保护区段锁闭命令标志*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*什么也不做*/
|
||||
}
|
||||
SetRouteAtsExpLkOverlapId(routeId,expLkOverlapId);
|
||||
SetOverlapFromSetRouteCmdFlag(expLkOverlapId, OVERLAP_ROUTE_FLAG_NO);/*清除标志*/
|
||||
retVal = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
/*什么也不做*/
|
||||
}
|
||||
|
||||
|
||||
SetRouteAtsExpLkOverlapId(routeId, expLkOverlapId);
|
||||
SetOverlapFromSetRouteCmdFlag(expLkOverlapId, OVERLAP_ROUTE_FLAG_NO);/*清除标志*/
|
||||
SetOverlapAtsLastTimeLockCyc(expLkOverlapId, dwCurCycNum);
|
||||
retVal = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1604,7 +1601,6 @@ UINT8 CheckPhySecFaultUnlockCanDo(const UINT16 phySectionId,const UINT8 virCIid)
|
||||
UINT16 lockBelongRouteId = 0u; /*区段锁闭所属进路ID*/
|
||||
UINT8 reVal = CI_ERROR;
|
||||
UINT8 belongvirCIid = 0u;
|
||||
UINT8 includeVirFlag = GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG);
|
||||
UINT8 isErrLock = CI_ERROR;
|
||||
UINT8 phyLockState = 0U;
|
||||
|
||||
@@ -1630,38 +1626,33 @@ UINT8 CheckPhySecFaultUnlockCanDo(const UINT16 phySectionId,const UINT8 virCIid)
|
||||
}
|
||||
if(CI_SUCCESS == reVal)
|
||||
{
|
||||
if(FUNC_SWITCH_ON == includeVirFlag)
|
||||
|
||||
belongvirCIid = GetRouteBelongVirCiId(lockBelongRouteId);
|
||||
if(0u < virCIid)
|
||||
{
|
||||
belongvirCIid = GetRouteBelongVirCiId(lockBelongRouteId);
|
||||
if(0u < virCIid)
|
||||
{
|
||||
if(virCIid == belongvirCIid)
|
||||
{
|
||||
reVal = CI_SUCCESS; /*本Rtu(虚拟联锁现地)可以操作属于本虚拟联锁的进路锁闭的物理区段区故解,无论该物理区段是否属于该Rtu*/
|
||||
}
|
||||
else
|
||||
{
|
||||
belongvirCIid = GetPhySecBelongVirCiId(phySectionId);
|
||||
if(belongvirCIid == virCIid)
|
||||
{
|
||||
reVal = CI_SUCCESS;/*本虚拟联锁物理区段由相邻虚拟联锁进路锁闭的,可以在该物理区段所属Rtu上操作区故解*/
|
||||
}
|
||||
else
|
||||
{
|
||||
reVal = CI_ERROR;
|
||||
}
|
||||
}
|
||||
if(virCIid == belongvirCIid)
|
||||
{
|
||||
reVal = CI_SUCCESS; /*本Rtu(虚拟联锁现地)可以操作属于本虚拟联锁的进路锁闭的物理区段区故解,无论该物理区段是否属于该Rtu*/
|
||||
}
|
||||
else
|
||||
{
|
||||
reVal = CI_ERROR;
|
||||
belongvirCIid = GetPhySecBelongVirCiId(phySectionId);
|
||||
if(belongvirCIid == virCIid)
|
||||
{
|
||||
reVal = CI_SUCCESS;/*本虚拟联锁物理区段由相邻虚拟联锁进路锁闭的,可以在该物理区段所属Rtu上操作区故解*/
|
||||
}
|
||||
else
|
||||
{
|
||||
reVal = CI_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
reVal = CI_SUCCESS;
|
||||
reVal = CI_ERROR;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*按顺序解锁进路异常锁闭*/
|
||||
@@ -1922,6 +1913,18 @@ void ClearSomeFlagDependRouteState(const UINT16 routeId)
|
||||
{
|
||||
SetRouteGroupRouteCmdFlag(routeId, ROUTE_GROUPROUTE_CMD_NO); /*清除进路的组合进路命令标志*/
|
||||
}
|
||||
|
||||
/*若进路处于以下状态,清除联挂进路标志*/
|
||||
if ((ROUTE_STATE_IDLE == routeState) || (ROUTE_STATE_DELAY_UNLOCK == routeState)
|
||||
|| (ROUTE_STATE_LEAD_XUANPAI == routeState) || (ROUTE_STATE_LEAD_LOCK == routeState)
|
||||
|| (ROUTE_STATE_LEAD_LOCKERR == routeState) || (ROUTE_STATE_LEAD_OPEN == routeState))
|
||||
{
|
||||
SetRouteCouplinkFlag(routeId, ROUTE_COUPLINK_FLAG_NO);
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -3395,14 +3398,12 @@ void OtherCiLogSecFaultUnlockProcess(const UINT16 wLogSectionId, const UINT8 chV
|
||||
UINT8 chLogFaultUnLockRes = 0U;/*逻辑区段故障解锁条件检查结果*/
|
||||
UINT8 chLogSecBelongRouteDir = 0U;/*逻辑区段锁闭所属进路方向*/
|
||||
UINT8 chRouteLogSecHaveUnLock = 0u;/*进路逻辑区段是否已解锁*/
|
||||
UINT8 chIncludeVirFlag = 0U;/*是否支持虚拟联锁*/
|
||||
UINT8 chBelongVirCiId = 0U;/*逻辑区段所属虚拟联锁ID*/
|
||||
UINT16 wLogSecBelongPhySecId = 0U;/*逻辑区段所属物理区段ID*/
|
||||
|
||||
chLocalCiId = GetSystemParaLocalCiId(); /*获取本机联锁ID*/
|
||||
wLogLockBelongRouteId = GetLogSecLockBelongRoute(wLogSectionId);
|
||||
chFuncSwitch = GetCiFunctionSwitchConfig(FUNC_SWITCH_USE_RELAY_INTERFACE_BETWEEN_NEIGHBOURCI);
|
||||
chIncludeVirFlag = GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG);
|
||||
chConfirmRelayInterfaceFlag = GetCiCiRelayInterfConfirmFlag();/*继电接口确认状态*/
|
||||
|
||||
if ((0U < wLogLockBelongRouteId) && (ROUTE_SUM_MAX > wLogLockBelongRouteId))
|
||||
@@ -3436,21 +3437,15 @@ void OtherCiLogSecFaultUnlockProcess(const UINT16 wLogSectionId, const UINT8 chV
|
||||
else if ((chLocalCiId == chLogSecBelongCiId) && (TRANSMIT_STATE_GOOD == chCommState))
|
||||
{
|
||||
wLogSecBelongPhySecId = GetLgcSecRelativePhySecId(wLogSectionId);
|
||||
if (FUNC_SWITCH_ON == chIncludeVirFlag)
|
||||
{
|
||||
chBelongVirCiId = GetLogSecBelongVirCiId(wLogSectionId);
|
||||
if ((chVirCIid == chBelongVirCiId) && (0U != chVirCIid))
|
||||
{
|
||||
/*进路属于相邻联锁,且区段属于本联锁时,传递区段故障解锁命令 */
|
||||
AddCiSendToCiCmdInfo(CI_CMD_SECTION_FAULT_UNLOCK, wLogSecBelongPhySecId, 0U, chRouteBelongCiId);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
chBelongVirCiId = GetLogSecBelongVirCiId(wLogSectionId);
|
||||
if ((chVirCIid == chBelongVirCiId) && (0U != chVirCIid))
|
||||
{
|
||||
/*进路属于相邻联锁,且区段属于本联锁时,传递区段故障解锁命令 */
|
||||
AddCiSendToCiCmdInfo(CI_CMD_SECTION_FAULT_UNLOCK, wLogSecBelongPhySecId, 0U, chRouteBelongCiId);
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3471,7 +3466,6 @@ UINT8 CheckLogSecFaultUnlockCanDo(const UINT16 wLogSectionId, const UINT8 chVirC
|
||||
UINT16 wLockBelongRouteId = 0U; /*区段锁闭所属进路ID*/
|
||||
UINT8 reVal = CI_ERROR;
|
||||
UINT8 chBelongvirCIid = 0U;
|
||||
UINT8 chIncludeVirFlag = GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG);
|
||||
|
||||
if ((0u == wLogSectionId) || (LOGIC_SECTION_SUM_MAX <= wLogSectionId))
|
||||
{
|
||||
@@ -3494,38 +3488,32 @@ UINT8 CheckLogSecFaultUnlockCanDo(const UINT16 wLogSectionId, const UINT8 chVirC
|
||||
}
|
||||
if (CI_SUCCESS == reVal)
|
||||
{
|
||||
if (FUNC_SWITCH_ON == chIncludeVirFlag)
|
||||
|
||||
chBelongvirCIid = GetRouteBelongVirCiId(wLockBelongRouteId);
|
||||
if (0U < chVirCIid)
|
||||
{
|
||||
chBelongvirCIid = GetRouteBelongVirCiId(wLockBelongRouteId);
|
||||
if (0U < chVirCIid)
|
||||
if (chVirCIid == chBelongvirCIid)
|
||||
{
|
||||
if (chVirCIid == chBelongvirCIid)
|
||||
{
|
||||
reVal = CI_SUCCESS; /*本Rtu(虚拟联锁现地)可以操作属于本虚拟联锁的进路锁闭的逻辑区段区故解,无论该逻辑区段是否属于该Rtu*/
|
||||
}
|
||||
else
|
||||
{
|
||||
chBelongvirCIid = GetLogSecBelongVirCiId(wLogSectionId);
|
||||
if (chVirCIid == chBelongvirCIid)
|
||||
{
|
||||
reVal = CI_SUCCESS;/*本虚拟联锁逻辑区段由相邻虚拟联锁进路锁闭的,可以在该逻辑区段所属Rtu上操作区故解*/
|
||||
}
|
||||
else
|
||||
{
|
||||
reVal = CI_ERROR;
|
||||
}
|
||||
}
|
||||
reVal = CI_SUCCESS; /*本Rtu(虚拟联锁现地)可以操作属于本虚拟联锁的进路锁闭的逻辑区段区故解,无论该逻辑区段是否属于该Rtu*/
|
||||
}
|
||||
else
|
||||
{
|
||||
reVal = CI_ERROR;
|
||||
chBelongvirCIid = GetLogSecBelongVirCiId(wLogSectionId);
|
||||
if (chVirCIid == chBelongvirCIid)
|
||||
{
|
||||
reVal = CI_SUCCESS;/*本虚拟联锁逻辑区段由相邻虚拟联锁进路锁闭的,可以在该逻辑区段所属Rtu上操作区故解*/
|
||||
}
|
||||
else
|
||||
{
|
||||
reVal = CI_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
reVal = CI_SUCCESS;
|
||||
reVal = CI_ERROR;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return reVal;
|
||||
@@ -4483,7 +4471,6 @@ void DriveLogRouteSignalClose(const UINT16 wLogSignalId)
|
||||
UINT8 sigalMaintainState = 0u;
|
||||
UINT8 detainOpenRedBright = 0u;
|
||||
UINT8 signalDetainFlag = 0u;
|
||||
UINT8 includeVirFlag = GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG);
|
||||
if ((0u == wLogSignalId) || (SIGNAL_SUM_MAX <= wLogSignalId))
|
||||
{
|
||||
/*不做处理*/
|
||||
@@ -4491,15 +4478,11 @@ void DriveLogRouteSignalClose(const UINT16 wLogSignalId)
|
||||
else
|
||||
{
|
||||
/*虚拟联锁兼容*/
|
||||
if (FUNC_SWITCH_ON == includeVirFlag)
|
||||
{
|
||||
belongVirCIid = GetSignalBelongVirCiId(wLogSignalId);
|
||||
allSignalBrightFlag = GetVirCIAllSignalBrightState(belongVirCIid); /*全站亮灯标志*/
|
||||
}
|
||||
else
|
||||
{
|
||||
allSignalBrightFlag = GetAllSignalBrightFlag(); /*全站亮灯标志*/
|
||||
}
|
||||
|
||||
belongVirCIid = GetSignalBelongVirCiId(wLogSignalId);
|
||||
allSignalBrightFlag = GetVirCIAllSignalBrightState(belongVirCIid); /*全站亮灯标志*/
|
||||
|
||||
|
||||
|
||||
/*无论什么时候,复示信号机关闭都驱动红灭*/
|
||||
signalIsfushiFlag = GetSignalIsfushiFlag(wLogSignalId);
|
||||
@@ -5098,7 +5081,6 @@ void LogRouteErrLockFaultManage(const UINT16 wPhySectionId)
|
||||
void SetAtsLockOverlapHaveRouteId(const UINT16 expLkOverlapId, const UINT16 routeId)
|
||||
{
|
||||
UINT16 routeOverlapSum = 0U; /*进路保护区段数目*/
|
||||
UINT16 routedLockOverlapId = 0U; /*进路锁闭过OverlapId*/
|
||||
UINT8 retVal = CI_SUCCESS; /*返回值*/
|
||||
UINT8 routeState = 0U; /*进路状态*/
|
||||
UINT16 preOverlepId = 0U;
|
||||
@@ -5107,11 +5089,11 @@ void SetAtsLockOverlapHaveRouteId(const UINT16 expLkOverlapId, const UINT16 rout
|
||||
UINT8 phySectionSta = 0U;
|
||||
UINT8 belongCiId = 0U;
|
||||
UINT8 localCiId = GetSystemParaLocalCiId(); /*获取本机联锁ID*/
|
||||
UINT8 includeVirFlag = GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG);
|
||||
UINT8 virCIid = 0U;
|
||||
UINT8 ciCtrModeFlag = 0U;
|
||||
UINT8 routeStateFlag = 0U;
|
||||
UINT8 flag = 0U;
|
||||
UINT32 dwCurCycNum = Get2oo2CurCycleNum();
|
||||
|
||||
routeStateFlag = GetRouteStateFlag(routeId);
|
||||
|
||||
@@ -5174,14 +5156,8 @@ void SetAtsLockOverlapHaveRouteId(const UINT16 expLkOverlapId, const UINT16 rout
|
||||
if (CI_SUCCESS == retVal)
|
||||
{
|
||||
virCIid = GetOverlapBelongVirCiId(expLkOverlapId);
|
||||
if (FUNC_SWITCH_ON == includeVirFlag)
|
||||
{
|
||||
ciCtrModeFlag = GetVirCImode(virCIid);/*获取联锁控制模式*/
|
||||
}
|
||||
else
|
||||
{
|
||||
ciCtrModeFlag = GetCiModeFlag(); /*获取联锁控制模式*/
|
||||
}
|
||||
ciCtrModeFlag = GetVirCImode(virCIid);/*获取联锁控制模式*/
|
||||
|
||||
|
||||
if ((CI_MODE_CI_LOCAL == ciCtrModeFlag) || (0U == ciCtrModeFlag))/*处于联锁控或者获取错误,发送现地不能响应人工锁闭命令*/
|
||||
{
|
||||
@@ -5191,54 +5167,50 @@ void SetAtsLockOverlapHaveRouteId(const UINT16 expLkOverlapId, const UINT16 rout
|
||||
|
||||
if (CI_SUCCESS == retVal)
|
||||
{
|
||||
routedLockOverlapId = GetRouteOverlapLockedId(routeId); /*获取进路锁闭过保护区段ID*/
|
||||
/*判断进路状态,是否满足锁闭保护区段条件,若满足则设置期望锁闭保护区段*/
|
||||
routeState = GetRouteState(routeId);
|
||||
|
||||
if (0U == routedLockOverlapId)
|
||||
if ((ROUTE_STATE_FIRST_XUANPAI == routeState)
|
||||
|| (ROUTE_STATE_XUANPAI == routeState)
|
||||
|| (ROUTE_STATE_FIRST_LOCK == routeState)
|
||||
|| (ROUTE_STATE_FIRST_LOCKERR == routeState)
|
||||
|| (ROUTE_STATE_YUXIAN_OPEN == routeState)
|
||||
|| (ROUTE_STATE_YUXIAN_LOCK == routeState)
|
||||
|| (ROUTE_STATE_NEAR_OPEN == routeState)
|
||||
|| (ROUTE_STATE_NEAR_LOCK == routeState)
|
||||
|| (ROUTE_STATE_NEAR_LOCKERR == routeState)
|
||||
|| ((ROUTE_STATE_AUTO_UNLOCK == routeState) && (ROUTE_STATE_FLAG_YES == routeStateFlag))
|
||||
)
|
||||
{
|
||||
/*判断进路状态,是否满足锁闭保护区段条件,若满足则设置期望锁闭保护区段*/
|
||||
routeState = GetRouteState(routeId);
|
||||
|
||||
if ((ROUTE_STATE_FIRST_XUANPAI == routeState)
|
||||
|| (ROUTE_STATE_XUANPAI == routeState)
|
||||
|| (ROUTE_STATE_FIRST_LOCK == routeState)
|
||||
|| (ROUTE_STATE_FIRST_LOCKERR == routeState)
|
||||
|| (ROUTE_STATE_YUXIAN_OPEN == routeState)
|
||||
|| (ROUTE_STATE_YUXIAN_LOCK == routeState)
|
||||
|| (ROUTE_STATE_NEAR_OPEN == routeState)
|
||||
|| (ROUTE_STATE_NEAR_LOCK == routeState)
|
||||
|| (ROUTE_STATE_NEAR_LOCKERR == routeState)
|
||||
|| ((ROUTE_STATE_AUTO_UNLOCK == routeState) && (ROUTE_STATE_FLAG_YES == routeStateFlag))
|
||||
)
|
||||
{/*设置指定ID进路的期望锁闭保护区段ID*/
|
||||
/*仅处理ATS办理保护区段,不处理人工办理保护区段*/
|
||||
phySectionId = GetRouteLastPhySectionId(routeId);
|
||||
phySectionSta = GetPhySecCurMergeState(phySectionId);
|
||||
if (SECTION_OCCUPY_YES == phySectionSta)
|
||||
{
|
||||
SetOverlapAtsOrlaborLockCmdFlag(expLkOverlapId, LOCK_OVERLAP_CMD_YES);/*设置保护区段锁闭命令标志,用于保护区段解锁倒计时计算*/
|
||||
}
|
||||
else
|
||||
{
|
||||
/*nothing do*/
|
||||
}
|
||||
|
||||
SetRouteAtsExpLkOverlapId(routeId, expLkOverlapId);/*设置期望锁闭保护区段*/
|
||||
|
||||
SetOverlapFromSetRouteCmdFlag(expLkOverlapId, OVERLAP_ROUTE_FLAG_YES);/*设置保护区段由进路连带标识*/
|
||||
|
||||
retVal = CI_SUCCESS;
|
||||
/*设置指定ID进路的期望锁闭保护区段ID*/
|
||||
/*仅处理ATS办理保护区段,不处理人工办理保护区段*/
|
||||
phySectionId = GetRouteLastPhySectionId(routeId);
|
||||
phySectionSta = GetPhySecCurMergeState(phySectionId);
|
||||
if (SECTION_OCCUPY_YES == phySectionSta)
|
||||
{
|
||||
SetOverlapAtsOrlaborLockCmdFlag(expLkOverlapId, LOCK_OVERLAP_CMD_YES);/*设置保护区段锁闭命令标志,用于保护区段解锁倒计时计算*/
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
/*nothing do*/
|
||||
}
|
||||
|
||||
SetRouteAtsExpLkOverlapId(routeId, expLkOverlapId);/*设置期望锁闭保护区段*/
|
||||
|
||||
SetOverlapFromSetRouteCmdFlag(expLkOverlapId, OVERLAP_ROUTE_FLAG_YES);/*设置保护区段由进路连带标识*/
|
||||
|
||||
SetOverlapAtsLastTimeLockCyc(expLkOverlapId, dwCurCycNum);
|
||||
retVal = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*当前进路保护区段已锁,不处理*/
|
||||
retVal = CI_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
; /*当前进路保护区段已锁,不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
if (0U == flag)
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
#include "../LogicManage/TradInterlockLogicManage.h"
|
||||
#include "../Train/TrainDefine.h"
|
||||
#include "LogicalRouteDataManage.h"
|
||||
#include "../EnvelopeManage/EnvelopeManageAPI.h"
|
||||
|
||||
#ifdef SCADE_MODE
|
||||
#include "../LogicManage/General/LogicManageScadeInterface.h"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -365,9 +365,11 @@ void SetOverlapLockState(const UINT16 overlapId, const UINT8 lockState, const UI
|
||||
/*
|
||||
* 功能描述: 办理普通进路逻辑管理
|
||||
* 参数说明: const UINT16 routeId, 进路ID
|
||||
* 返回值 : void
|
||||
* const UINT8 chSendLevel 命令发送等级
|
||||
* 返回值 : void
|
||||
* BY cgh 20250828
|
||||
*/
|
||||
void SetCommonRouteLogicManage(const UINT16 routeId);
|
||||
void SetCommonRouteLogicManage(const UINT16 routeId, const UINT8 chSendLevel);
|
||||
|
||||
/*
|
||||
* 功能描述: 办理引导进路逻辑管理
|
||||
@@ -626,14 +628,6 @@ void StartTrianTestManage(void);
|
||||
*/
|
||||
void StopTrianTestManage(void);
|
||||
|
||||
/*
|
||||
* 功能描述: 取消临时限速设置
|
||||
* 参数说明: 无
|
||||
* 返回值 :
|
||||
CI_ERROR 失败
|
||||
CI_SUCCESS 成功
|
||||
*/
|
||||
UINT8 CancleLinShiXianSuManage(void);
|
||||
/*
|
||||
* 功能描述: 取消临时限速设置
|
||||
* 参数说明: 无
|
||||
@@ -947,7 +941,7 @@ UINT8 CheckPhysecFlockReasonSpksId(const UINT16 phySectionId, UINT16* spksId, UI
|
||||
*
|
||||
*修改:mpt 2022年3月9日 增加保护区段人工解锁逻辑
|
||||
*/
|
||||
UINT8 LaborUnlockOverlapProc(const UINT8 overlapId);
|
||||
UINT8 LaborUnlockOverlapProc(const UINT16 overlapId);
|
||||
/*
|
||||
* 功能描述: 设置联锁锁闭保护区段标志管理
|
||||
* 参数说明: const UINT16 routeId, 进路ID
|
||||
@@ -1131,6 +1125,43 @@ void RouteTrainResUnlockManage(void);
|
||||
*/
|
||||
void LeadRouteFirstXuanPaiManage(const UINT16 routeId);
|
||||
|
||||
/*
|
||||
* 功能描述: 设置OC-P旁路状态确认标志
|
||||
* 参数说明: UINT8 setFlag,设置标志
|
||||
* UINT16 pscId PSC设备ID
|
||||
* 返回值 :无
|
||||
*/
|
||||
void SetOcPscPlConfirmFlag(UINT8 setFlag, const UINT16 ocPId);
|
||||
|
||||
/*
|
||||
* 功能描述: 保护区段状态更新
|
||||
* 参数说明: const UINT16 wRouteId 进路ID
|
||||
* 返回值 :无
|
||||
* by cgh 20250928
|
||||
*/
|
||||
void OverlapStateUpdateManage(void);
|
||||
/*
|
||||
* 功能描述: 更新列车向后跳跃允许状态处理
|
||||
* 参数说明: 无
|
||||
* 返回值 : 无
|
||||
* Create: fan 20250725
|
||||
*/
|
||||
void TrainJumpBackApplyProc(void);
|
||||
/*
|
||||
* 功能描述: 办理联挂进路逻辑管理
|
||||
* 参数说明: const UINT16 wRouteId
|
||||
* 返回值 : 无
|
||||
* Create: 20250917
|
||||
*/
|
||||
void SetCouplinkRouteLogicManage(const UINT16 wRouteId);
|
||||
|
||||
/*
|
||||
* 功能描述: 锁闭道岔逻辑管理
|
||||
* 参数说明: void
|
||||
* 返回值 :
|
||||
*/
|
||||
void lockSwitchLogicManage(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -189,7 +189,7 @@ UINT8 OpenCbtcLTrainRouteErrProcess(const UINT16 routeId, const UINT8 checkStep)
|
||||
UINT8 sendLevel = ESEND_LEVEL_ZERO;
|
||||
UINT8 routeReverseProperty = 0u;
|
||||
UINT8 airShaftRouteType = 0u;
|
||||
|
||||
UINT8 chRouteCouplinkFlag = 0U;
|
||||
/* 联锁逻辑检查 */
|
||||
/* 进路监督模式为【CBTC】*/
|
||||
|
||||
@@ -325,24 +325,36 @@ UINT8 OpenCbtcLTrainRouteErrProcess(const UINT16 routeId, const UINT8 checkStep)
|
||||
{
|
||||
routeReverseProperty = GetRouteReverseProperty(routeId);
|
||||
airShaftRouteType = GetAirShaftRouteType(routeId);
|
||||
if ((ROUTE_REVERSE_PROPERTY_YES == routeReverseProperty) || (ROUTE_TYPE_AIRSHAFT == airShaftRouteType))
|
||||
{ /*反向进路需检查所有区段的占用状态,之前由于不检查占用状态导致信号出清进路内方第一区段,信号机重开的问题*/
|
||||
/*风井进路不允许追踪办理,故开放条件需增加对进路内方所有区段的占用状态检查*/
|
||||
devId = 0u;
|
||||
devState = 0u;
|
||||
checkResult = RouteAllSecOccuClearCheck(routeId,&devId, &devState);
|
||||
if (checkResult == CI_SUCCESS)
|
||||
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/
|
||||
if ((ROUTE_REVERSE_PROPERTY_YES == routeReverseProperty)|| (ROUTE_TYPE_AIRSHAFT == airShaftRouteType))
|
||||
{
|
||||
if (ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag)
|
||||
{
|
||||
/* 通过检查 */
|
||||
reResult = CI_SUCCESS;
|
||||
/* 反向联挂进路允许追踪,区段条件在OpenCbtcRouteSectionErrCheck */
|
||||
/*存在联挂标志,不在查反向进路全部空闲,其他条件检查;风井进路设置不上联挂标志所以需要检查全部区段空闲*/
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 记录故障码 */
|
||||
SetErrorData(functionId,CI_DEVICE_TYPE_PHYSEC,devId,ETYPE_PS_MERGY_OCU_STATE,devState,sendLevel);
|
||||
/* 失败返回 */
|
||||
reResult = CI_ERROR;
|
||||
/*反向进路需检查所有区段的占用状态,之前由于不检查占用状态导致信号出清进路内方第一区段,信号机重开的问题*/
|
||||
|
||||
/*风井进路不允许追踪办理,故开放条件需增加对进路内方所有区段的占用状态检查*/
|
||||
devId = 0u;
|
||||
devState = 0u;
|
||||
checkResult = RouteAllSecOccuClearCheck(routeId, &devId, &devState);
|
||||
if (checkResult == CI_SUCCESS)
|
||||
{
|
||||
/* 通过检查 */
|
||||
reResult = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 记录故障码 */
|
||||
SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_MERGY_OCU_STATE, devState, sendLevel);
|
||||
/* 失败返回 */
|
||||
reResult = CI_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
/* 防护进路联锁条件检查 */
|
||||
if (CI_SUCCESS == reResult)
|
||||
{
|
||||
@@ -763,7 +775,7 @@ UINT8 OpenCbtcReturnRouteErrProcess(const UINT16 routeId, const UINT8 checkStep)
|
||||
/* 取消标志 */
|
||||
UINT8 const zxqFlag = GetRouteZongQuXiaoFlag(routeId);
|
||||
UINT8 const zrjFlag = GetRouteZongRenJieFlag(routeId);
|
||||
|
||||
UINT8 chRouteCouplinkFlag = 0U;
|
||||
/*故障发送级别*/
|
||||
UINT8 sendLevel = ESEND_LEVEL_ZERO;
|
||||
|
||||
@@ -900,8 +912,16 @@ UINT8 OpenCbtcReturnRouteErrProcess(const UINT16 routeId, const UINT8 checkStep)
|
||||
{
|
||||
devId = 0u;
|
||||
devState = 0u;
|
||||
checkResult = RouteAllSecOccuClearCheck(routeId, &devId, &devState);
|
||||
if (checkResult == CI_SUCCESS)
|
||||
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/
|
||||
if (ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag)
|
||||
{
|
||||
checkResult = SetCouplinkRouteSecOccCheck(routeId, &devId, &devState);
|
||||
}
|
||||
else
|
||||
{
|
||||
checkResult = RouteAllSecOccuClearCheck(routeId, &devId, &devState);
|
||||
}
|
||||
if (CI_SUCCESS == checkResult)
|
||||
{
|
||||
/* 通过检查 */
|
||||
reResult = CI_SUCCESS;
|
||||
@@ -1346,6 +1366,7 @@ UINT8 KeepCbtcLTrainRouteErrProcess(const UINT16 routeId)
|
||||
UINT16 trainEnteringRouteState = 0u;
|
||||
UINT8 signalCrossState = 0u;
|
||||
UINT8 rcWorkMode = 0U; /*rc工作模式*/
|
||||
UINT8 chRouteCouplinkFlag = 0U;
|
||||
rcWorkMode = GetLocalRcWorkMode();
|
||||
/* 联锁逻辑检查 */
|
||||
|
||||
@@ -1471,7 +1492,16 @@ UINT8 KeepCbtcLTrainRouteErrProcess(const UINT16 routeId)
|
||||
{ /*反向进路或风井进路需对进路内方所有区段的占压状态进行检查*/
|
||||
devId = 0u;
|
||||
devState = 0u;
|
||||
checkResult = RouteAllSecOccuClearCheck(routeId,&devId, &devState);
|
||||
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/
|
||||
if (ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag)
|
||||
{
|
||||
checkResult = KeepCouplinkRouteSecOccCheck(routeId, &devId, &devState);;
|
||||
}
|
||||
else
|
||||
{
|
||||
checkResult = RouteAllSecOccuClearCheck(routeId, &devId, &devState);
|
||||
}
|
||||
|
||||
if (checkResult == CI_SUCCESS)
|
||||
{
|
||||
/* 通过检查 */
|
||||
@@ -1856,6 +1886,7 @@ UINT8 KeepCbtcReturnRouteErrProcess(const UINT16 routeId)
|
||||
UINT8 trainEnteringRouteState =0u;
|
||||
UINT8 signalCrossState = 0u;
|
||||
UINT8 rcWorkMode = 0U; /*rc工作模式*/
|
||||
UINT8 chRouteCouplinkFlag = 0U;
|
||||
rcWorkMode = GetLocalRcWorkMode();
|
||||
devState = GetRouteLevel(routeId);
|
||||
if (ROUTE_LEVEL_CBTC == devState)
|
||||
@@ -1991,7 +2022,16 @@ UINT8 KeepCbtcReturnRouteErrProcess(const UINT16 routeId)
|
||||
}
|
||||
else if(RC_WORK_MODE_CI == rcWorkMode)
|
||||
{
|
||||
checkResult = RouteAllSecOccuClearCheck(routeId, &devId, &devState);
|
||||
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/
|
||||
if (ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag)
|
||||
{
|
||||
checkResult = KeepCouplinkRouteSecOccCheck(routeId, &devId, &devState);
|
||||
}
|
||||
else
|
||||
{
|
||||
checkResult = RouteAllSecOccuClearCheck(routeId, &devId, &devState);
|
||||
}
|
||||
|
||||
if (CI_SUCCESS == checkResult)
|
||||
{
|
||||
/* 通过检查 */
|
||||
@@ -3011,10 +3051,9 @@ UINT8 RecoverOpenRouteCheckCLD(const UINT16 routeId)
|
||||
UINT8 routeType = 0u; /*进路类型*/
|
||||
UINT8 errType = CI_ERROR;/*定义检查失败时的错误类型*/
|
||||
UINT8 jkjRelayValidFlag = 0u; /*初始化应急盘继电器有效状态*/
|
||||
UINT16 jkjRelayId = GetJkjRelayId();
|
||||
jkjRelayValidFlag = GetCiJkjFlag();
|
||||
routeType = GetRouteType(routeId); /*获取进路类型*/
|
||||
if ((jkjRelayId > 0u) && (JKJ_REYLAY_VALID == jkjRelayValidFlag))
|
||||
if (JKJ_REYLAY_VALID == jkjRelayValidFlag)
|
||||
{/*应急盘继电器有效状态,不允许信号重开*/
|
||||
errType = CI_ERROR;
|
||||
}
|
||||
@@ -3068,6 +3107,7 @@ static UINT8 OtherCiValidErrCheck(UINT16 const routeId)
|
||||
UINT8 toOpenCheckFlag = 0u;/*恢复可重开信号的条件标志*/
|
||||
UINT8 otherResult = 0u;/*其他联锁检查条件返回值*/
|
||||
UINT8 cFuncSwitchSpks = 0U; /*SPKS信号重开检查进路级别开关*/
|
||||
UINT8 cPsdExceptOpenState = 0U; /*PSD异常打开状态*/
|
||||
|
||||
if (routeLevel == ROUTE_LEVEL_BLOC)
|
||||
{
|
||||
@@ -3093,7 +3133,7 @@ static UINT8 OtherCiValidErrCheck(UINT16 const routeId)
|
||||
psdSum = GetSignalRelatedPsdSum(rtStartSigId);/*获得进路始端信号机关联的PSD数量*/
|
||||
psdIdBuf = GetSignalRelatedPsdBuf(rtStartSigId);/*获得进路始端信号机关联的PSD ID数组*/
|
||||
|
||||
/*开始检查*/
|
||||
/*开始检查*/
|
||||
for (i = 0u; i < checkSum; i++)
|
||||
{
|
||||
tmpOtherCiDevInfo = &dataOtherCiDevBuf[i];
|
||||
@@ -3121,8 +3161,16 @@ static UINT8 OtherCiValidErrCheck(UINT16 const routeId)
|
||||
{
|
||||
if (psdIdBuf[j] == tmpOtherCiDevInfo->DevId)
|
||||
{
|
||||
toOpenCheckFlag = 1u;
|
||||
break;
|
||||
cPsdExceptOpenState = GePsdExceptOpenState(tmpOtherCiDevInfo->DevId);
|
||||
if (PSD_EXCEPT_OPEN_NO == cPsdExceptOpenState)
|
||||
{
|
||||
toOpenCheckFlag = 1U; /*PSD未异常打开,设置可自动重开*/
|
||||
}
|
||||
else
|
||||
{
|
||||
toOpenCheckFlag = 0U; /*存在PSD异常打开,停止遍历,设置不可自动重开*/
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3585,6 +3633,9 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
|
||||
/*防护进路*/
|
||||
UINT8 const overlapSum = GetRouteOverlapSum(routeId);
|
||||
UINT16 const overlapId = GetRouteOverlapLockedId(routeId);
|
||||
UINT8 cSndSideProFuncSwitch = 0U;
|
||||
|
||||
cSndSideProFuncSwitch = GetSndSideProtectFuncSwitch(); /*二级侧防功能开关*/
|
||||
|
||||
UINT8 lineIdentity = CI_TRADITION_RAILWAY;
|
||||
|
||||
@@ -3628,7 +3679,7 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
|
||||
}
|
||||
}
|
||||
|
||||
if(CI_TRADITION_RAILWAY == lineIdentity)
|
||||
if (CI_TRADITION_RAILWAY == lineIdentity)
|
||||
{
|
||||
/*保护区段道岔【位置正确】*/
|
||||
if (CI_SUCCESS == reResult)
|
||||
@@ -3647,8 +3698,6 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
|
||||
reResult = CI_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3692,18 +3741,18 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
|
||||
}
|
||||
|
||||
/*保护区段关联防护道岔【位置正确】*/
|
||||
if(CI_SUCCESS == reResult)
|
||||
if (CI_SUCCESS == reResult)
|
||||
{
|
||||
devId = 0u;
|
||||
devState = 0u;
|
||||
checkResult = OvlpRelatedProtSwitchPosCheck(overlapId,&devId,&devState);
|
||||
checkResult = OvlpRelatedProtSwitchPosCheck(overlapId, &devId, &devState);
|
||||
if (checkResult == CI_SUCCESS)
|
||||
{
|
||||
/* 通过检查 */
|
||||
reResult = CI_SUCCESS;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
/* 失败返回 */
|
||||
reResult = CI_ERROR;
|
||||
}
|
||||
@@ -3714,7 +3763,7 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
|
||||
{
|
||||
devId = 0u;
|
||||
devState = 0u;
|
||||
checkResult = OvlpRelatedProtSwitchLockCheck(overlapId,&devId, &devState);
|
||||
checkResult = OvlpRelatedProtSwitchLockCheck(overlapId, &devId, &devState);
|
||||
if (checkResult == CI_SUCCESS)
|
||||
{
|
||||
/* 通过检查 */
|
||||
@@ -3727,7 +3776,6 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (CI_SUCCESS == reResult)
|
||||
{
|
||||
/*检查进路侵限条件状态*/
|
||||
@@ -3743,13 +3791,21 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
|
||||
/*保护区段侧防条件检查*/
|
||||
if ((CI_SUCCESS == reResult) || (CI_ROUTE_RECOVER_ERR == reResult))
|
||||
{
|
||||
/*检查保护区段侧防道岔区段状态*/
|
||||
devId = 0u;
|
||||
devState = 0u;
|
||||
checkResult = OverlapLateralDfnCheck(overlapId, &devId, &devState);
|
||||
if (CI_ERROR == checkResult)
|
||||
if (FUNC_SWITCH_ON == cSndSideProFuncSwitch)
|
||||
{
|
||||
reResult = checkResult;
|
||||
/*仅在二级侧防开关配置为支持二级侧防时才进行侧防条件检查*/
|
||||
/*检查保护区段侧防道岔区段状态*/
|
||||
devId = 0u;
|
||||
devState = 0u;
|
||||
checkResult = OlapSideProtectConditionCheck(overlapId, 0U, 0U);
|
||||
if (CI_ERROR == checkResult)
|
||||
{
|
||||
reResult = checkResult;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3769,7 +3825,7 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
|
||||
{
|
||||
devId = 0u;
|
||||
devState = 0u;
|
||||
checkResult = OverlapAllSecJumpLockStateCheck(overlapId,&devId,&devState);
|
||||
checkResult = OverlapAllSecJumpLockStateCheck(overlapId, &devId, &devState);
|
||||
if (CI_ERROR == checkResult)
|
||||
{
|
||||
reResult = checkResult;
|
||||
@@ -3790,13 +3846,30 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
|
||||
{
|
||||
devId = 0u;
|
||||
devState = 0u;
|
||||
checkResult = OverlapFloodGateStateCheck(overlapId,&devId,&devStateType,&devState);
|
||||
checkResult = OverlapFloodGateStateCheck(overlapId, &devId, &devStateType, &devState);
|
||||
if (CI_ERROR == checkResult)
|
||||
{
|
||||
reResult = checkResult;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*检查照查继电器状态*/
|
||||
if ((CI_SUCCESS == reResult) || (CI_ROUTE_RECOVER_ERR == reResult))
|
||||
{
|
||||
checkResult = OverlapZhaoChaRelayCheck(overlapId, ESEND_LEVEL_ZERO);
|
||||
|
||||
if (CI_ERROR == checkResult)
|
||||
{
|
||||
reResult = checkResult;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -4249,7 +4322,8 @@ static UINT8 OpenCbtcRouteSectionErrCheck(const UINT16 routeId)
|
||||
UINT8 functionId = EFUNC_OPENROUTESECTIONERRCHECK;
|
||||
UINT8 rcWorkMode = 0U;
|
||||
UINT8 cLocalCiType = 0U; /*本控区类型*/
|
||||
|
||||
UINT8 chRouteCouplinkFlag = 0U;
|
||||
UINT8 chSigCrossState = 0U;
|
||||
rcWorkMode = GetLocalRcWorkMode();
|
||||
|
||||
/* 联锁逻辑检查 */
|
||||
@@ -4276,16 +4350,30 @@ static UINT8 OpenCbtcRouteSectionErrCheck(const UINT16 routeId)
|
||||
}
|
||||
else if (RC_WORK_MODE_CI == rcWorkMode)
|
||||
{/*CI*/
|
||||
|
||||
/* 进路始端信号机【未跨压】且内方第一逻辑区段【空闲】*/
|
||||
startSignalId = GetRouteStartSignalId(routeId);
|
||||
devId = GetRouteInFirstLogSecId(routeId);
|
||||
devState = GetLogSecCurOccupyState(devId);
|
||||
if ((GetSignalCrossState(startSignalId) == SIGNAL_CROSS_STATE_NO) &&
|
||||
(devState == SECTION_OCCUPY_NO))
|
||||
chSigCrossState = GetSignalCrossState(startSignalId);
|
||||
if (SIGNAL_CROSS_STATE_NO == chSigCrossState)
|
||||
{
|
||||
/* 通过检查 */
|
||||
reResult = CI_SUCCESS;
|
||||
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/
|
||||
if (ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag)
|
||||
{
|
||||
/*联挂进路区段占用检查*/
|
||||
reResult = SetCouplinkRouteSecOccCheck(routeId, &devId, &devState);
|
||||
}
|
||||
else
|
||||
{
|
||||
devId = GetRouteInFirstLogSecId(routeId);
|
||||
devState = GetLogSecCurOccupyState(devId);
|
||||
if (SECTION_OCCUPY_NO == devState)
|
||||
{
|
||||
/* 通过检查 */
|
||||
reResult = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
reResult = CI_ERROR;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -4639,26 +4727,23 @@ static UINT8 RouteIntruSecVainSPKSErrCheck(const UINT16 routeId)
|
||||
*/
|
||||
static UINT8 RouteRelayZhaoChaErrCheck(UINT16 const routeId)
|
||||
{
|
||||
/* 局部变量定义初始化 */
|
||||
UINT16 relayId = 0U;
|
||||
UINT8 relayState = 0U;
|
||||
UINT8 zcPhySecSum = 0U; /*照查物理区段数目*/
|
||||
UINT16* pZcPhySecIdBuf = NULL; /*照查物理区段ID数组*/
|
||||
UINT8 ii = 0U;
|
||||
/* 局部变量定义初始化 */
|
||||
UINT16 relayId = 0U;
|
||||
UINT8 relayState = 0U;
|
||||
UINT8 zcPhySecSum = 0U; /*照查物理区段数目*/
|
||||
UINT16* pZcPhySecIdBuf = NULL; /*照查物理区段ID数组*/
|
||||
UINT8 ii = 0U;
|
||||
UINT16 thisRealyId = 0U;
|
||||
UINT8 thisRelayState = 0U;
|
||||
UINT8 thisRelayState = 0U;
|
||||
UINT8 routeState = 0U;
|
||||
UINT8 retVal = CI_ERROR; /*函数返回值*/
|
||||
UINT16 pDevId = 0U;
|
||||
UINT8 pDevState = 0U;
|
||||
UINT8 chRouteLevel = 0U;
|
||||
UINT8 chErrTemp = 0U;
|
||||
|
||||
/* 对端照查检查 */
|
||||
zcPhySecSum = GetRouteThatZhaoChaPhySecSum(routeId); /*获取照查物理区段数目*/
|
||||
/* 对端照查检查 */
|
||||
zcPhySecSum = GetRouteThatZhaoChaPhySecSum(routeId); /*获取照查物理区段数目*/
|
||||
pZcPhySecIdBuf = GetRouteThatZhaoChaPhySecIdBuf(routeId); /*获取照查物理区段ID数组*/
|
||||
/*进路监督级别确认*/
|
||||
chRouteLevel = GetRouteLevel(routeId);
|
||||
|
||||
if (NULL == pZcPhySecIdBuf)
|
||||
{
|
||||
@@ -4668,14 +4753,14 @@ static UINT8 RouteRelayZhaoChaErrCheck(UINT16 const routeId)
|
||||
{
|
||||
retVal = CI_SUCCESS;
|
||||
|
||||
for (ii = 0u; ii < zcPhySecSum; ii++)
|
||||
{
|
||||
retVal = RoutePhySecZhaoChaErrCheck(routeId,pZcPhySecIdBuf[ii]);
|
||||
if (CI_ERROR == retVal)
|
||||
for (ii = 0u; ii < zcPhySecSum; ii++)
|
||||
{
|
||||
retVal = RoutePhySecZhaoChaErrCheck(routeId, pZcPhySecIdBuf[ii]);
|
||||
if (CI_ERROR == retVal)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else if(CI_ROUTE_RECOVER_ERR == retVal) /*YF00083-1013,出现一个封锁即跳出,防止两个物理区段,一个封锁在前检查,一个未封锁在后检查覆盖掉retVal的值*/
|
||||
else if (CI_ROUTE_RECOVER_ERR == retVal) /*YF00083-1013,出现一个封锁即跳出,防止两个物理区段,一个封锁在前检查,一个未封锁在后检查覆盖掉retVal的值*/
|
||||
{
|
||||
chErrTemp++; /*有一个SPKS封锁就计数一次*/
|
||||
}
|
||||
@@ -4688,24 +4773,13 @@ static UINT8 RouteRelayZhaoChaErrCheck(UINT16 const routeId)
|
||||
{
|
||||
retVal = CI_ROUTE_RECOVER_ERR; /*出现过一个SPKS封锁,就赋值返回值为SPKS封锁*/
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((CI_SUCCESS == retVal) || (CI_ROUTE_RECOVER_ERR == retVal))
|
||||
if ((CI_SUCCESS == retVal) || (CI_ROUTE_RECOVER_ERR == retVal))
|
||||
{/*照查物理区段检查通过,检查本端照查继电器*/
|
||||
if (ROUTE_LEVEL_BLOC == chRouteLevel)
|
||||
{
|
||||
thisRealyId = GetRouteThisZhaoChaRelayId(routeId); /*后备模式本端照查继电器ID*/
|
||||
}
|
||||
else if (ROUTE_LEVEL_CBTC == chRouteLevel)
|
||||
{
|
||||
thisRealyId = GetRouteCbtcThisZhaoChaRelayId(routeId);/*CBTC模式本端照查继电器ID*/
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*非法监督模式,继电器ID为0,在下面不会处理*/
|
||||
}
|
||||
|
||||
thisRealyId = GetRouteThisZhaoChaRelayId(routeId); /*本端照查继电器ID*/
|
||||
thisRelayState = GetRelayCollState(thisRealyId); /*获取指定ID继电器的状态*/
|
||||
routeState = GetRouteState(routeId); /*获取进路状态*/
|
||||
|
||||
@@ -4713,25 +4787,32 @@ static UINT8 RouteRelayZhaoChaErrCheck(UINT16 const routeId)
|
||||
{/*存在本端照查继电器*/
|
||||
if ((ROUTE_STATE_FIRST_LOCKERR == routeState) ||
|
||||
(ROUTE_STATE_YUXIAN_LOCK == routeState) ||
|
||||
(ROUTE_STATE_NEAR_LOCKERR == routeState) ||
|
||||
(ROUTE_STATE_YUXIAN_OPEN == routeState) ||
|
||||
(ROUTE_STATE_NEAR_OPEN == routeState) ||
|
||||
(ROUTE_STATE_YUXIAN_OPEN == routeState))
|
||||
(ROUTE_STATE_NEAR_LOCK == routeState) ||
|
||||
(ROUTE_STATE_NEAR_LOCKERR == routeState) ||
|
||||
(ROUTE_STATE_DELAY_UNLOCK == routeState) ||
|
||||
(ROUTE_STATE_AUTO_UNLOCK == routeState) ||
|
||||
(ROUTE_STATE_AUTO_UNLOCKERR == routeState) ||
|
||||
(ROUTE_STATE_HALF_UNLOCKDELAY == routeState) ||
|
||||
(ROUTE_STATE_LEAD_LOCKERR == routeState) ||
|
||||
(ROUTE_STATE_LEAD_OPEN == routeState))
|
||||
{
|
||||
/*进路状态初锁异常,预先锁闭,接近锁闭异常,接近开放,预先开放,
|
||||
需判断本端照查的状态*/
|
||||
if(RELAY_STATE_UP == thisRelayState)
|
||||
/*需判断本端照查的状态*/
|
||||
if (RELAY_STATE_UP == thisRelayState)
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
}
|
||||
}
|
||||
else if (ROUTE_STATE_FIRST_LOCK == routeState)
|
||||
else if ((ROUTE_STATE_FIRST_LOCK == routeState) ||
|
||||
(ROUTE_STATE_LEAD_LOCK == routeState))
|
||||
{
|
||||
if(RELAY_STATE_UP == thisRelayState)
|
||||
if (RELAY_STATE_UP == thisRelayState)
|
||||
{
|
||||
/*等待,返回等待标志*/
|
||||
retVal = RELAY_STATE_WAITE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*进路状态为其它值,此时不处理*/
|
||||
@@ -4740,40 +4821,29 @@ static UINT8 RouteRelayZhaoChaErrCheck(UINT16 const routeId)
|
||||
|
||||
}
|
||||
|
||||
if ((CI_SUCCESS == retVal) || (CI_ROUTE_RECOVER_ERR == retVal))
|
||||
if ((CI_SUCCESS == retVal) || (CI_ROUTE_RECOVER_ERR == retVal))
|
||||
{/*本端照查继电器检查通过,检查对端照查继电器*/
|
||||
if (ROUTE_LEVEL_BLOC == chRouteLevel)
|
||||
{
|
||||
relayId = GetRouteThatZhaoChaRelayId(routeId); /*后备模式对端照查继电器ID*/
|
||||
}
|
||||
else if (ROUTE_LEVEL_CBTC == chRouteLevel)
|
||||
{
|
||||
relayId = GetRouteCbtcThatZhaoChaRelayId(routeId);/*CBTC模式对端照查继电器ID*/
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*非法监督模式,继电器ID为0,在下面不会处理*/
|
||||
}
|
||||
|
||||
if(0u != relayId)
|
||||
{/*存在对端照查继电器*/
|
||||
relayId = GetRouteThatZhaoChaRelayId(routeId); /*对端照查继电器ID*/
|
||||
|
||||
relayState = GetRelayCollState(relayId);
|
||||
if (0u != relayId)
|
||||
{/*存在对端照查继电器*/
|
||||
|
||||
/* 照查吸起检查*/
|
||||
if (RELAY_STATE_UP == relayState)
|
||||
{
|
||||
/*检查通过*/
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
}
|
||||
}
|
||||
relayState = GetRelayCollState(relayId);
|
||||
|
||||
/* 照查吸起检查*/
|
||||
if (RELAY_STATE_UP == relayState)
|
||||
{
|
||||
/*检查通过*/
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return retVal;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -50,58 +50,116 @@ void JKJRelayLogicProcess(void)
|
||||
{
|
||||
UINT16 wJkjRelayId = 0u;
|
||||
UINT8 JkjRelayState = CI_ERROR;
|
||||
UINT32 JkjRelayCycNum = 0u;
|
||||
UINT32 JkjValidCycNum = 0u;
|
||||
UINT32 yjValidCycNum = 0u;
|
||||
UINT32 curCycNum = 0u;
|
||||
UINT8 checkRes = CI_TIME_OUT;
|
||||
UINT8 tmpRet =CI_ERROR;
|
||||
UINT8 ii = 0u;
|
||||
UINT8 haveYjkBreakFlag = 0u;
|
||||
UINT8 ocYjkBreakFlag = 0u;
|
||||
|
||||
wJkjRelayId = GetJkjRelayId();
|
||||
JkjRelayState = GetRelayCollState(wJkjRelayId); /*JKJ应急盘继电器采集状态*/
|
||||
JkjRelayCycNum = GetRelayStateUpdateCycNum(wJkjRelayId); /*JKJ应急盘继电器状态更新周期*/
|
||||
JkjValidCycNum = GetJkjRelayValidCycNum(); /*JKJ应急盘状态有效周期*/
|
||||
|
||||
|
||||
|
||||
if ((wJkjRelayId > 0u) && (RELAY_STATE_DOWN == JkjRelayState))
|
||||
yjValidCycNum = GetJkjRelayValidCycNum(); /*JKJ应急盘状态有效周期*/
|
||||
curCycNum = Get2oo2CurCycleNum();
|
||||
|
||||
for (ii = 0u; ii < m_OcToCiOrginDataNum; ii++)
|
||||
{
|
||||
curCycNum = Get2oo2CurCycleNum();
|
||||
if (0u == JkjRelayCycNum)
|
||||
{/*若未计时,则设置起始周期*/
|
||||
tmpRet = SetRelayStateUpdateCycNum(wJkjRelayId,curCycNum);
|
||||
if (CI_ERROR == tmpRet)
|
||||
{
|
||||
/*错误处理*/
|
||||
}
|
||||
if (OC_HAVE_YJK == m_OcToCiOrginDataArr[ii].chHaveYjk)
|
||||
{/*任意一个OC具备应急控*/
|
||||
haveYjkBreakFlag = 1u;
|
||||
break;
|
||||
}
|
||||
checkRes = SystemOverTimeCheck(JkjRelayCycNum,JKJ_REYLAY_VALID_CYCLE_NUM);
|
||||
if (CI_TIME_OUT == checkRes)
|
||||
{ /*应急盘有效*/
|
||||
SetCiJkjFlag(JKJ_REYLAY_VALID); /*设置JKJ应急盘有效标志为有效*/
|
||||
if (0u == JkjValidCycNum) /*之前没有设置应急盘有效开始周期*/
|
||||
{
|
||||
SetJkjRelayValidCycNum(curCycNum); /*设置JKJ应急盘有效周期*/
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*继续*/
|
||||
}
|
||||
}
|
||||
else if ((wJkjRelayId > 0u) && (RELAY_STATE_UP == JkjRelayState))
|
||||
{
|
||||
tmpRet = SetRelayStateUpdateCycNum(wJkjRelayId, 0u); /*清除JKJ继电器有效起始周期号*/
|
||||
if (CI_ERROR == tmpRet)
|
||||
{
|
||||
/*错误处理*/
|
||||
}
|
||||
/*应急盘无效*/
|
||||
SetCiJkjFlag(JKJ_REYLAY_INVALID); /*设置JKJ应急盘继电器有效标志为无效*/
|
||||
|
||||
SetJkjRelayValidCycNum(0u); /*设置JKJ应急盘无效周期*/
|
||||
for (ii = 0u; ii < m_OcToCiOrginDataNum; ii++)
|
||||
{
|
||||
if (OC_CTLMODE_YJK == m_OcToCiOrginDataArr[ii].chControlMode)
|
||||
{/*任意一个OC是应急控*/
|
||||
ocYjkBreakFlag = 1u;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*继续*/
|
||||
}
|
||||
}
|
||||
|
||||
if (wJkjRelayId > 0u)
|
||||
{
|
||||
/*配置了继电器*/
|
||||
if (RELAY_STATE_DOWN == JkjRelayState)
|
||||
{/*落下*/
|
||||
if (0u == yjValidCycNum)
|
||||
{/*未计时*/
|
||||
SetJkjRelayValidCycNum(curCycNum); /*设置应急有效周期*/
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*不做处理*/
|
||||
}
|
||||
checkRes = SystemOverTimeCheck(yjValidCycNum, JKJ_REYLAY_VALID_CYCLE_NUM);
|
||||
if (CI_TIME_OUT == checkRes)
|
||||
{ /*应急有效*/
|
||||
SetCiJkjFlag(JKJ_REYLAY_VALID); /*设置应急盘有效标志为有效*/
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*不做处理*/
|
||||
}
|
||||
}
|
||||
else if (RELAY_STATE_UP == JkjRelayState)
|
||||
{/*吸起*/
|
||||
/*应急无效*/
|
||||
SetCiJkjFlag(JKJ_REYLAY_INVALID); /*设置应急盘有效标志为无效*/
|
||||
SetJkjRelayValidCycNum(0u); /*设置应急无效周期*/
|
||||
}
|
||||
else
|
||||
{
|
||||
/*应急无效*/
|
||||
SetCiJkjFlag(JKJ_REYLAY_VALID); /*设置应急盘有效标志为无效*/
|
||||
SetJkjRelayValidCycNum(curCycNum); /*设置应急无效周期*/
|
||||
}
|
||||
}
|
||||
else if(1u == haveYjkBreakFlag)
|
||||
{
|
||||
/*OC具备应急控*/
|
||||
if (1u == ocYjkBreakFlag)
|
||||
{/*有一个OC处于应急控,则应急有效*/
|
||||
if (0u == yjValidCycNum)
|
||||
{/*未计时*/
|
||||
SetJkjRelayValidCycNum(curCycNum); /*设置应急有效周期*/
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*不做处理*/
|
||||
}
|
||||
checkRes = SystemOverTimeCheck(yjValidCycNum, JKJ_REYLAY_VALID_CYCLE_NUM);
|
||||
if (CI_TIME_OUT == checkRes)
|
||||
{ /*应急有效*/
|
||||
SetCiJkjFlag(JKJ_REYLAY_VALID); /*设置应急盘有效标志为有效*/
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*不做处理*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{/*应急无效*/
|
||||
SetCiJkjFlag(JKJ_REYLAY_INVALID); /*设置应急盘有效标志为无效*/
|
||||
SetJkjRelayValidCycNum(0u); /*设置应急无效周期*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*应急盘无效*/
|
||||
SetCiJkjFlag(JKJ_REYLAY_INVALID); /*设置JKJ应急盘继电器有效标志为无效*/
|
||||
SetJkjRelayValidCycNum(0u); /*设置JKJ应急盘继电器无效周期*/
|
||||
/*JKJ未配置,OC无应急控功能,应急盘无效*/
|
||||
SetCiJkjFlag(JKJ_REYLAY_INVALID); /*设置应急盘有效标志为无效*/
|
||||
SetJkjRelayValidCycNum(0u); /*设置应急无效周期*/
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -815,9 +873,6 @@ void RouteLogicProcess(void)
|
||||
/*扣车、SPKS、PSD导致信号关闭又重开处理*/
|
||||
RouteRecoverOpenProc(routeId);
|
||||
|
||||
/*进路调车同意逻辑处理*/
|
||||
RouteDCTYLogicM(routeId);
|
||||
|
||||
/*根据进路状态清理相关标志*/
|
||||
ClearSomeFlagDependRouteState(routeId);
|
||||
/*cgh-合并CID-2349-5:*/
|
||||
@@ -4360,37 +4415,22 @@ void NonRouteCancelDeal(UINT8 nonRouteId)
|
||||
void UpdateZhaoChaDeal(const UINT16 routeId, const UINT8 routeState)
|
||||
{
|
||||
UINT16 wSelfRealyId = 0U; /*本模式本端照查ID*/
|
||||
UINT16 wOtherRealyId = 0U; /*本模式本端照查ID*/
|
||||
UINT8 relauDrvState = 0U;
|
||||
UINT8 chRouteLevel = GetRouteLevel(routeId);
|
||||
UINT8 chOverTimeCheck = 0U;
|
||||
UINT32 dwTimeOutCycCount = 0U;
|
||||
UINT32 dwRouteLockStartCycNum = 0U;
|
||||
|
||||
if (ROUTE_LEVEL_BLOC == chRouteLevel)
|
||||
{
|
||||
wSelfRealyId = GetRouteThisZhaoChaRelayId(routeId); /*后备模式本端照查继电器ID*/
|
||||
wOtherRealyId = GetRouteCbtcThisZhaoChaRelayId(routeId); /*CBTC模式本端照查继电器ID*/
|
||||
}
|
||||
else if (ROUTE_LEVEL_CBTC == chRouteLevel)
|
||||
{
|
||||
wSelfRealyId = GetRouteCbtcThisZhaoChaRelayId(routeId); /*CBTC模式本端照查继电器ID*/
|
||||
wOtherRealyId = GetRouteThisZhaoChaRelayId(routeId); /*后备模式本端照查继电器ID*/
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*非法监督模式,继电器ID为0,在下面不会处理*/
|
||||
}
|
||||
|
||||
wSelfRealyId = GetRouteThisZhaoChaRelayId(routeId); /*本端照查继电器ID*/
|
||||
dwRouteLockStartCycNum = GetRouteLockStartCycNum(routeId);
|
||||
dwTimeOutCycCount = GetSystemParaSignalCloseCyc();
|
||||
|
||||
if ((routeState == ROUTE_STATE_IDLE) ||
|
||||
(routeState == ROUTE_STATE_FIRST_XUANPAI) ||
|
||||
(routeState == ROUTE_STATE_XUANPAI) ||
|
||||
(routeState == ROUTE_STATE_LEAD_FIRST_XUANPAI) ||
|
||||
(routeState == ROUTE_STATE_LEAD_XUANPAI))
|
||||
if (0U < wSelfRealyId)
|
||||
{
|
||||
/*进路空闲 两种模式照查都吸起*/
|
||||
if (0U < wSelfRealyId)
|
||||
if ((routeState == ROUTE_STATE_IDLE) ||
|
||||
(routeState == ROUTE_STATE_FIRST_XUANPAI) ||
|
||||
(routeState == ROUTE_STATE_XUANPAI) ||
|
||||
(routeState == ROUTE_STATE_LEAD_FIRST_XUANPAI) ||
|
||||
(routeState == ROUTE_STATE_LEAD_XUANPAI))
|
||||
{
|
||||
relauDrvState = GetRelayDriveState(wSelfRealyId);
|
||||
if (RELAY_DRIVE_STATE_NULL == relauDrvState)
|
||||
@@ -4398,34 +4438,15 @@ void UpdateZhaoChaDeal(const UINT16 routeId, const UINT8 routeState)
|
||||
(void)SetRelayDriveState(wSelfRealyId, RELAY_STATE_UP);
|
||||
}
|
||||
}
|
||||
if (0U < wOtherRealyId)
|
||||
{
|
||||
relauDrvState = GetRelayDriveState(wOtherRealyId);
|
||||
if (RELAY_DRIVE_STATE_NULL == relauDrvState)
|
||||
{
|
||||
(void)SetRelayDriveState(wOtherRealyId, RELAY_STATE_UP);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*进路锁闭 本模式照查落下,另一模式照查吸起*/
|
||||
if (0U < wOtherRealyId)
|
||||
{
|
||||
relauDrvState = GetRelayDriveState(wOtherRealyId);
|
||||
if (RELAY_DRIVE_STATE_NULL == relauDrvState)
|
||||
{
|
||||
(void)SetRelayDriveState(wOtherRealyId, RELAY_STATE_UP);
|
||||
}
|
||||
}
|
||||
if (0U < wSelfRealyId)
|
||||
else
|
||||
{
|
||||
(void)SetRelayDriveState(wSelfRealyId, RELAY_STATE_DOWN);
|
||||
relauDrvState = GetRelayCollState(wSelfRealyId);
|
||||
|
||||
if (RELAY_STATE_DOWN != relauDrvState)
|
||||
{ /*照查继电器未落下*/
|
||||
chOverTimeCheck = CheckRelayDriveOutTime(wSelfRealyId, dwTimeOutCycCount);
|
||||
if (CI_ERROR == chOverTimeCheck)
|
||||
chOverTimeCheck = SystemOverTimeCheck(dwRouteLockStartCycNum, dwTimeOutCycCount);
|
||||
if (CI_TIME_OUT == chOverTimeCheck)
|
||||
{/*照查超时超时*/
|
||||
|
||||
/*xxxxx宕机*/
|
||||
@@ -6099,11 +6120,11 @@ UINT16 GetReturnId(const UINT16 routeId)
|
||||
for (ii = 0u; ii < starSigRouteSum; ii++)
|
||||
{
|
||||
/*B库改为两条进路,当8编组车占压两条进路时,此时BG2进路解锁需要检查以差值信号机为始端的进路的状态*/
|
||||
if ((ROUTE_STATE_IDLE == GetRouteState(starSigRouteBuf[ii])) &&(CI_SUCCESS == CheckRoutePhysicalType(starSigRouteBuf[ii])) &&
|
||||
(SIGNAL_VIRTUAL_YES == GetSignalVirtualAttr(returnSigId)))
|
||||
if ((ROUTE_STATE_IDLE == GetRouteState(starSigRouteBuf[ii])) &&(CI_SUCCESS == CheckRoutePhysicalType(starSigRouteBuf[ii])))
|
||||
{
|
||||
/*以并置信号机为始端的进路均为空闲且进路包含的区段均为列检库区段,且并置信号机为虚拟信号机,
|
||||
该种算法目前只限制在库线中中途折返场景*/
|
||||
该种算法目前只限制在库线中中途折返场景(SIGNAL_VIRTUAL_YES == GetSignalVirtualAttr(returnSigId))*/
|
||||
/*联挂功能去掉虚拟信号机检查条件*/
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -6124,16 +6145,16 @@ UINT16 GetReturnId(const UINT16 routeId)
|
||||
{
|
||||
/*当前状态是接近锁闭异常*/
|
||||
|
||||
/* 如果是差至,如果列车驶入过进路,同时之前状态必须为接近锁闭正常(列车压入,信号关闭)
|
||||
/* 如果是差至,如果列车驶入过进路,同时之前状态必须为接近锁闭开放
|
||||
* 否则不认为是同一列车跨入中途折返处理
|
||||
*/
|
||||
if((ROUTE_STATE_NEAR_LOCK == preRouteState) && (TRAIN_ENTER_ROUTE_FLAG_YES == GetTrainEnterRouteFlag(routeId)))
|
||||
if((ROUTE_STATE_NEAR_OPEN == preRouteState) && (TRAIN_ENTER_ROUTE_FLAG_YES == GetTrainEnterRouteFlag(routeId)))
|
||||
{
|
||||
returnSigId = GetRouteChaZhiSignalId(routeId); /*获取差置信号机ID*/
|
||||
}
|
||||
else
|
||||
{
|
||||
returnSigId = 0u;
|
||||
returnSigId = 0U;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6166,6 +6187,8 @@ void DTrainReturnUnlockRouteAllLockP(const UINT16 routeId)
|
||||
UINT8 chLockBelRouteType = 0U;/*区段锁闭所属进路进路类型*/
|
||||
UINT8 chTrainEnterRouteFlag = 0U;/*列车驶入进路标志*/
|
||||
UINT8 chRouteInOutSecOccupy = 0U;/*进路内外方同时占压标志*/
|
||||
UINT32 dwRoutLockCycNum = 0U;
|
||||
UINT32 dwReturnRoutLockCycNum = 0U;
|
||||
|
||||
routeState = GetRouteState(routeId); /*获取进路状态*/
|
||||
routeType = GetRouteType(routeId);
|
||||
@@ -6207,14 +6230,16 @@ void DTrainReturnUnlockRouteAllLockP(const UINT16 routeId)
|
||||
wLockRouteStartSigId = GetRouteStartSignalId(lockBelongRouteId);/*获取进路始端信号机ID*/
|
||||
chTrainEnterRouteFlag = CheckTrainEnterRoute(lockBelongRouteId);/*获取列车驶入进路标志*/
|
||||
chRouteInOutSecOccupy = RouteInOutSecOccupy(lockBelongRouteId);/*进路内外方同时占用标志*/
|
||||
dwRoutLockCycNum = GetRouteLockStartCycNum(routeId); /*获取进路锁闭起始周期*/
|
||||
dwReturnRoutLockCycNum = GetRouteLockStartCycNum(lockBelongRouteId);/*获取折出进路锁闭起始周期*/
|
||||
|
||||
if ((ROUTE_STATE_NEAR_OPEN == chLockBelRouteState) && (ROUTE_TYPE_DIAOCHE == chLockBelRouteType) &&
|
||||
(returnSigId == wLockRouteStartSigId) &&
|
||||
(returnSigId == wLockRouteStartSigId) && (dwReturnRoutLockCycNum > dwRoutLockCycNum) &&
|
||||
((CI_SUCCESS == chTrainEnterRouteFlag) ||
|
||||
((CI_SUCCESS == chRouteInOutSecOccupy) && (ROUTE_TYPE_LIECHE == routeType))))
|
||||
{
|
||||
/*折出进路是调车进路&&状态是接近开放&&折出进路始端信号机是本进路折返信号机 &&(有车驶入 或 待解锁进路为列车进路是折出进路时内外方区段同时占压)*/
|
||||
|
||||
/*by cgh 20250414增加条件:折出进路锁闭时间晚于需中途解锁进路*/
|
||||
/*解锁成功*/
|
||||
SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*设置进路区段未锁闭*/
|
||||
|
||||
@@ -6224,10 +6249,10 @@ void DTrainReturnUnlockRouteAllLockP(const UINT16 routeId)
|
||||
SetRouteStateDeal(routeId, ROUTE_STATE_IDLE); /*设置进路状态为空闲*/
|
||||
}
|
||||
if ((ROUTE_TYPE_LIECHE == chLockBelRouteType) && (ROUTE_STATE_NEAR_LOCK == chLockBelRouteState)
|
||||
&& (returnSigId == wLockRouteStartSigId))
|
||||
&& (returnSigId == wLockRouteStartSigId) && (dwReturnRoutLockCycNum > dwRoutLockCycNum))
|
||||
{
|
||||
/*折出进路是列车进路 且 进路状态是接近锁闭正常 且 折出进路始端信号机是本进路折返信号机*/
|
||||
|
||||
/*by cgh 20250414增加条件:折出进路锁闭时间晚于需中途解锁进路*/
|
||||
/*解锁成功*/
|
||||
SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*设置进路区段未锁闭*/
|
||||
/*设置进路逻辑区段: 未锁闭*/
|
||||
@@ -6265,6 +6290,8 @@ void DTrainRtnUnlockRemoteRAllLockP(const UINT16 routeId)
|
||||
UINT8 chLockBelRouteType = 0U;/*区段锁闭所属进路进路类型*/
|
||||
UINT8 chTrainEnterRouteFlag = 0U;/*列车驶入进路标志*/
|
||||
UINT8 chRouteInOutSecOccupy = 0U;/*进路内外方同时占压标志*/
|
||||
UINT32 dwRoutLockCycNum = 0U;
|
||||
UINT32 dwReturnRoutLockCycNum = 0U;
|
||||
|
||||
routeState = GetRouteState(routeId); /*获取进路状态*/
|
||||
routeType = GetRouteType(routeId);
|
||||
@@ -6312,13 +6339,16 @@ void DTrainRtnUnlockRemoteRAllLockP(const UINT16 routeId)
|
||||
wLockRouteStartSigId = GetRouteStartSignalId(lockBelongRouteId);/*获取进路始端信号机ID*/
|
||||
chTrainEnterRouteFlag = CheckTrainEnterRoute(lockBelongRouteId);/*获取列车驶入进路标志*/
|
||||
chRouteInOutSecOccupy = RouteInOutSecOccupy(lockBelongRouteId);/*进路内外方同时占用标志*/
|
||||
dwRoutLockCycNum = GetRouteLockStartCycNum(routeId); /*获取进路锁闭起始周期*/
|
||||
dwReturnRoutLockCycNum = GetRouteLockStartCycNum(lockBelongRouteId);/*获取折出进路锁闭起始周期*/
|
||||
|
||||
if ((ROUTE_STATE_NEAR_OPEN == chLockBelRouteState) && (ROUTE_TYPE_DIAOCHE == chLockBelRouteType) &&
|
||||
(returnSigId == wLockRouteStartSigId) &&
|
||||
(returnSigId == wLockRouteStartSigId) && (dwReturnRoutLockCycNum > dwRoutLockCycNum) &&
|
||||
((CI_SUCCESS == chTrainEnterRouteFlag) ||
|
||||
((CI_SUCCESS == chRouteInOutSecOccupy) && (ROUTE_TYPE_LIECHE== routeType))))
|
||||
{
|
||||
/*折出进路是调车进路&&状态是接近开放&&折出进路始端信号机是本进路折返信号机 &&(有车驶入 或 待解锁进路为列车进路是折出进路时内外方区段同时占压)*/
|
||||
/*by cgh 20250414增加条件:折出进路锁闭时间晚于需中途解锁进路*/
|
||||
/*解锁成功*/
|
||||
SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*设置进路区段未锁闭*/
|
||||
/*设置进路逻辑区段: 未锁闭*/
|
||||
@@ -6326,9 +6356,10 @@ void DTrainRtnUnlockRemoteRAllLockP(const UINT16 routeId)
|
||||
SetRouteStateDeal(routeId, ROUTE_STATE_IDLE); /*设置进路状态为空闲*/
|
||||
}
|
||||
if ((ROUTE_TYPE_LIECHE== chLockBelRouteType) && (ROUTE_STATE_NEAR_LOCK == chLockBelRouteState)
|
||||
&& (returnSigId == wLockRouteStartSigId))
|
||||
&& (returnSigId == wLockRouteStartSigId) && (dwReturnRoutLockCycNum > dwRoutLockCycNum))
|
||||
{
|
||||
/*折出进路是列车进路 且 进路状态是接近锁闭正常 且 折出进路始端信号机是本进路折返信号机*/
|
||||
/*by cgh 20250414增加条件:折出进路锁闭时间晚于需中途解锁进路*/
|
||||
/*解锁成功*/
|
||||
SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*设置进路区段未锁闭*/
|
||||
/*设置进路逻辑区段: 未锁闭*/
|
||||
@@ -7069,58 +7100,232 @@ UINT8 CLDPhySectionFaultUnlockDeal(const UINT16 phySectionId,const UINT16 lockBe
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 取消洗车逻辑管理
|
||||
* 参数说明: void
|
||||
* 功能描述: 取消洗车命令处理
|
||||
* 参数说明: 无
|
||||
* 返回值 : void
|
||||
by hh 20251208
|
||||
*/
|
||||
void CancelWashWorkLogicM(void)
|
||||
{/*取消洗车命令*/
|
||||
UINT16 washMachineId = 0u;
|
||||
washMachineId = GetWashMachineId(0u);
|
||||
#if 0
|
||||
SetCancelWashMachineFlag(washMachineId,CANCEL_WASH_FLAG_SET_YES);
|
||||
#endif
|
||||
if (washMachineId >0u)
|
||||
{/*收到现地取消洗车命令,直接把洗车同意按钮状逻辑态置为抬起*/
|
||||
(void)SetWashmachineXTALogicState(washMachineId,XTA_STATE_RAISE_UP);
|
||||
{
|
||||
UINT16 washMachineId = 0U; /*洗车机ID*/
|
||||
UINT16 wDownWashRelateRouteFirstId = 0U; /*降级模式洗车线控制台表示灯1关联进路ID*/
|
||||
UINT8 chRouteState = 0U;/*进路状态*/
|
||||
UINT8 downWashAllowState = 0U;/*降级模式洗车同意状态(融合)*/
|
||||
UINT8 washMachineButtonType = GetCiFunctionSwitchConfig(FUNC_WDOWNWASH_ZIFUSHI_BUTTON); /*降级模式洗车同意按钮自复式类型*/
|
||||
washMachineId = GetWashMachineId(0U);
|
||||
|
||||
if ((FUNC_SWITCH_ON == washMachineButtonType) && (washMachineId > 0u) && (washMachineId < WASHMACHINE_SUM_MAX))
|
||||
{
|
||||
downWashAllowState = GetDownWashAllowState(washMachineId);
|
||||
|
||||
if (WASH_COL_STATE_ALLOW_YES == downWashAllowState)
|
||||
{
|
||||
wDownWashRelateRouteFirstId = GetDownWashRelateRoute1Id(washMachineId);
|
||||
chRouteState = GetRouteState(wDownWashRelateRouteFirstId);
|
||||
|
||||
if (ROUTE_STATE_IDLE == chRouteState)
|
||||
{
|
||||
/*设置降级模式洗车线和DCC的洗车同意按钮状态无效*/
|
||||
SetDownWashAllowColState(washMachineId, WASH_COL_STATE_ALLOW_NO);
|
||||
/*清除洗车线洗车同意按钮有效周期*/
|
||||
SetDownWashBtVadCycle(washMachineId, 0U);
|
||||
SetDownDccWashAllowColState(washMachineId, WASH_COL_STATE_ALLOW_NO);
|
||||
/*清除DCC洗车同意按钮有效周期*/
|
||||
SetDownWashDccBtVadCycle(washMachineId, 0U);
|
||||
SetDownWashReqState(washMachineId, WASH_REQ_STATE_ALLOW_NO);
|
||||
SetDownWashReqCycle(washMachineId, 0U);
|
||||
}
|
||||
else
|
||||
{
|
||||
/*向ATS报警进路未取消,请先取消进路 0XB5*/
|
||||
SetCiSendCmdBackInfoData(CI_BACK_ROUTE_IDLE_NOT, CI_DEVICE_TYPE_ROUTE, wDownWashRelateRouteFirstId, 0U, 0U);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*向ATS报警"当前洗车机洗车同意按钮未按下,不需要取消 0XB6"*/
|
||||
SetCiSendCmdBackInfoData(CI_BACK_WASH_BUTTON_PRESS_NOT, CI_DEVICE_TYPE_WASHMACHINE, washMachineId, 0U, 0U);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*其他情况不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 请求洗车命令处理
|
||||
* 参数说明: 无
|
||||
* 返回值 : void
|
||||
*by hh 20251208
|
||||
*/
|
||||
void ReqWashWorkLogicM(void)
|
||||
{
|
||||
UINT32 curCycle = Get2oo2CurCycleNum(); /*当前周期号*/
|
||||
UINT8 downWashReqState = WASH_REQ_STATE_ALLOW_NO; /*洗车机洗车请求状态*/
|
||||
UINT16 wMachineId = 0U; /*洗车机ID*/
|
||||
UINT8 washMachineButtonType = GetCiFunctionSwitchConfig(FUNC_WDOWNWASH_ZIFUSHI_BUTTON); /*降级模式洗车同意按钮自复式类型*/
|
||||
wMachineId = GetWashMachineId(0U);
|
||||
|
||||
if((FUNC_SWITCH_ON == washMachineButtonType) && (wMachineId >0u) && (wMachineId < WASHMACHINE_SUM_MAX))
|
||||
{
|
||||
downWashReqState = GetDownWashReqState(wMachineId);
|
||||
if (WASH_REQ_STATE_ALLOW_NO == downWashReqState)
|
||||
{
|
||||
/*设置降级模式洗车请求有效*/
|
||||
SetDownWashReqState(wMachineId, WASH_REQ_STATE_ALLOW_YES);
|
||||
/*设置降级模式洗车请求周期号有效*/
|
||||
SetDownWashReqCycle(wMachineId, curCycle);
|
||||
}
|
||||
else
|
||||
{
|
||||
/*向ATS报警当前洗车机洗车请求有效,请勿重复操作 0xB3*/
|
||||
SetCiSendCmdBackInfoData(CI_BACK_WASH_APPLY_NOT, CI_DEVICE_TYPE_WASHMACHINE, wMachineId, 0U, 0U);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 反向通过请求命令处理
|
||||
* 参数说明:无
|
||||
* 返回值 : void
|
||||
*by hh 20251208
|
||||
*/
|
||||
void ReqPassWashWorkLogicM(void)
|
||||
{
|
||||
UINT32 curCycle = Get2oo2CurCycleNum(); /*当前周期号*/
|
||||
UINT8 downWashPassReqState = WASH_REQ_STATE_ALLOW_NO; /*反向洗车请求状态*/
|
||||
UINT16 wMachineId = 0U; /*洗车机ID*/
|
||||
UINT8 washMachineButtonType = GetCiFunctionSwitchConfig(FUNC_WDOWNWASH_ZIFUSHI_BUTTON); /*降级模式洗车同意按钮自复式类型*/
|
||||
wMachineId = GetWashMachineId(0U);
|
||||
|
||||
if ((FUNC_SWITCH_ON == washMachineButtonType) && (wMachineId > 0u) && (wMachineId < WASHMACHINE_SUM_MAX))
|
||||
{
|
||||
downWashPassReqState = GetDownWashPassReqState(wMachineId);
|
||||
|
||||
if (WASH_REQ_STATE_ALLOW_NO == downWashPassReqState)
|
||||
{
|
||||
/*设置降级模式反向洗车请求有效*/
|
||||
SetDownWashPassReqState(wMachineId, WASH_REQ_STATE_ALLOW_YES);
|
||||
/*设置降级模式反向洗车请求周期号有效*/
|
||||
SetDownWashPassReqCycle(wMachineId, curCycle);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetCiSendCmdBackInfoData(CI_BACK_WASH_PASSAPPLY_NOT, CI_DEVICE_TYPE_WASHMACHINE, wMachineId, 0U, 0U);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 取消反向通过请求命令处理
|
||||
* 参数说明: 无
|
||||
* 返回值 : void
|
||||
*by hh 20251208
|
||||
*/
|
||||
void CancelPassWashWorkLogicM(void)
|
||||
{
|
||||
UINT16 wDownWashRelateRouteSecId = 0U; /*降级模式洗车线控制台表示灯2关联进路ID*/
|
||||
UINT8 chRouteState = 0U;/*进路状态*/
|
||||
UINT8 downWashAllowPassState = 0U;/*降级模式反向通过洗车同意状态(融合)*/
|
||||
UINT16 wMachineId = 0U; /*洗车机ID*/
|
||||
UINT8 washMachineButtonType = GetCiFunctionSwitchConfig(FUNC_WDOWNWASH_ZIFUSHI_BUTTON); /*降级模式洗车同意按钮自复式类型*/
|
||||
wMachineId = GetWashMachineId(0U);
|
||||
if ((FUNC_SWITCH_ON == washMachineButtonType) && (wMachineId > 0u && wMachineId < WASHMACHINE_SUM_MAX))
|
||||
{
|
||||
downWashAllowPassState = GetDownWashAllowPassState(wMachineId);
|
||||
|
||||
if (WASH_COL_STATE_ALLOW_YES == downWashAllowPassState)
|
||||
{
|
||||
wDownWashRelateRouteSecId = GetDownWashRelateRoute2Id(wMachineId);
|
||||
chRouteState = GetRouteState(wDownWashRelateRouteSecId);
|
||||
|
||||
if (ROUTE_STATE_IDLE == chRouteState)
|
||||
{
|
||||
/*设置降级模式洗车线和DCC的反向洗车同意按钮状态无效*/
|
||||
SetDownWashAllowPassColState(wMachineId, WASH_COL_STATE_ALLOW_NO);
|
||||
/*清除洗车线反向通过同意按钮有效周期*/
|
||||
SetDownWashBtVadPassCycle(wMachineId, 0U);
|
||||
SetDownDccWashAllowPassColState(wMachineId, WASH_COL_STATE_ALLOW_NO);
|
||||
/*清除DCC反向通过同意按钮有效周期*/
|
||||
SetDownWashDccBtVadPassCycle(wMachineId, 0U);
|
||||
SetDownWashPassReqState(wMachineId, WASH_REQ_STATE_ALLOW_NO);
|
||||
SetDownWashPassReqCycle(wMachineId, 0U);
|
||||
}
|
||||
else
|
||||
{
|
||||
/*向ATS报警进路未取消,请先取消进路 0XB5*/
|
||||
SetCiSendCmdBackInfoData(CI_BACK_ROUTE_IDLE_NOT, CI_DEVICE_TYPE_ROUTE, wDownWashRelateRouteSecId, 0U, 0U);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
/*向ATS报警"洗车机XXX反向通过同意按钮未按下,不需要取消 0XB7"*/
|
||||
SetCiSendCmdBackInfoData(CI_BACK_WASH_PASSBUTTON_PRESS_NOT, CI_DEVICE_TYPE_WASHMACHINE, wMachineId, 0U, 0U);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*其他情况不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述: 进路调车同意逻辑管理
|
||||
* 参数说明: void
|
||||
* 返回值 : void
|
||||
* 返回值 : void
|
||||
* by cgh 20250523
|
||||
*/
|
||||
void RouteDCTYLogicM(UINT16 routeId)
|
||||
void RouteDCTYLogic(UINT16 routeId)
|
||||
{
|
||||
UINT8 routeType = 0u;
|
||||
UINT8 routeState = 0u;
|
||||
UINT16 routeDCQJId = 0u;
|
||||
UINT8 routeType = 0U;
|
||||
UINT8 routeState = 0U;
|
||||
UINT16 routeDCQJId = 0U;
|
||||
UINT16 routeDCQJTwoId = 0U;
|
||||
|
||||
routeType = GetRouteType(routeId);/*进路类型*/
|
||||
routeState = GetRouteState(routeId);/*进路状态*/
|
||||
routeDCQJId = GetRouteDCQJId(routeId);
|
||||
if ((routeDCQJId >0u) && (ROUTE_TYPE_DIAOCHE == routeType))
|
||||
routeDCQJTwoId = GetRouteDCQJTwoId(routeId);
|
||||
|
||||
if ((0U < routeDCQJId) && (0U < routeDCQJTwoId) && (ROUTE_TYPE_DIAOCHE == routeType))
|
||||
{/*调车请求继电器ID存在,且是调车进路*/
|
||||
if((ROUTE_STATE_FIRST_LOCK == routeState) ||
|
||||
(ROUTE_STATE_FIRST_LOCKERR == routeState) ||
|
||||
(ROUTE_STATE_YUXIAN_LOCK == routeState) ||
|
||||
(ROUTE_STATE_YUXIAN_OPEN == routeState) ||
|
||||
(ROUTE_STATE_NEAR_OPEN == routeState) ||
|
||||
(ROUTE_STATE_NEAR_LOCK == routeState) ||
|
||||
(ROUTE_STATE_NEAR_LOCKERR == routeState)||
|
||||
(ROUTE_STATE_LEAD_LOCK == routeState) ||
|
||||
(ROUTE_STATE_LEAD_LOCKERR == routeState) ||
|
||||
(ROUTE_STATE_LEAD_OPEN == routeState) ||
|
||||
(ROUTE_STATE_DELAY_UNLOCK == routeState) ||
|
||||
(ROUTE_STATE_NEAR_LOCK == routeState))
|
||||
{/*进路是完整锁闭:进路初锁、进路初锁异常、预先锁闭、预先开放、接近开放、接近锁闭异常、接近锁闭正常
|
||||
、引导锁闭、引导锁闭异常、引导开放、延时解锁*/
|
||||
(void)SetRouteDCQState(routeId,ROUTE_DCQ_REQUEST);/*设置进路调车请求状态为调车请求*/
|
||||
(ROUTE_STATE_AUTO_UNLOCK == routeState) ||
|
||||
(ROUTE_STATE_AUTO_UNLOCKERR == routeState) ||
|
||||
(ROUTE_STATE_DELAY_UNLOCK == routeState))
|
||||
{
|
||||
/*进路存在锁闭:进路初锁、进路初锁异常、预先锁闭、预先开放、接近开放、接近锁闭异常、接近锁闭正常、延时解锁、自动解锁正常、自动解锁异常*/
|
||||
SetRouteDCQState(routeId,ROUTE_DCQ_REQUEST);/*设置进路调车请求状态调车请求有效*/
|
||||
}
|
||||
else
|
||||
{/*非完整锁闭设置进路调车请求状态为非调车请求*/
|
||||
(void)SetRouteDCQState(routeId,ROUTE_DCQ_NOT_REQUEST);
|
||||
{
|
||||
/*其它情况设置进路调车请求状态为调车请求无效;调车同意状态无效*/
|
||||
SetRouteDCQState(routeId,ROUTE_DCQ_NOT_REQUEST);
|
||||
SetRouteDCTYState(routeId, ROUTE_DCT_NOT_AGREE);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -766,18 +766,44 @@ UINT16 GetReturnId(const UINT16 routeId);
|
||||
void DTrainRtnUnlockRemoteRAllLockP(const UINT16 routeId);
|
||||
|
||||
/*
|
||||
* 功能描述: 取消洗车逻辑管理
|
||||
* 参数说明: void
|
||||
* 返回值 : void
|
||||
* 功能描述: 取消洗车命令处理
|
||||
* 参数说明: 无
|
||||
* 返回值 : void
|
||||
by hh 20251208
|
||||
*/
|
||||
void CancelWashWorkLogicM(void);
|
||||
|
||||
/*
|
||||
* 功能描述: 请求洗车命令处理
|
||||
* 参数说明: 无
|
||||
* 返回值 : void
|
||||
*by hh 20251208
|
||||
*/
|
||||
void ReqWashWorkLogicM(void);
|
||||
|
||||
/*
|
||||
* 功能描述: 反向通过请求命令处理
|
||||
* 参数说明:无
|
||||
* 返回值 : void
|
||||
*by hh 20251208
|
||||
*/
|
||||
void ReqPassWashWorkLogicM(void);
|
||||
|
||||
/*
|
||||
* 功能描述: 取消反向通过请求洗车逻辑管理
|
||||
* 参数说明: const UINT16 wMachineId 洗车机ID
|
||||
* 返回值 : void
|
||||
*by hh 20251208
|
||||
*/
|
||||
void CancelPassWashWorkLogicM(void);
|
||||
|
||||
/*
|
||||
* 功能描述: 进路调车同意逻辑管理
|
||||
* 参数说明: void
|
||||
* 返回值 : void
|
||||
* 返回值 : void
|
||||
* by cgh 20250523
|
||||
*/
|
||||
void RouteDCTYLogicM(UINT16 routeId);
|
||||
void RouteDCTYLogic(UINT16 routeId);
|
||||
|
||||
/*
|
||||
* 功能描述: 调车进路调车同意联锁条件检查
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -946,6 +946,18 @@ UINT8 RouteAllSecJumpLockStateCheck(UINT16 const routeId,UINT16 *pDevId,UINT8 *p
|
||||
* CI_SUCCESS
|
||||
*/
|
||||
UINT8 KeepRouteSwitchCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);
|
||||
|
||||
/*
|
||||
* 功能描述:引导进路信号保持道岔联锁条件检查
|
||||
* 参数说明:UINT16 RouteId, 进路号
|
||||
* UINT8 functionId, 调用函数编号
|
||||
* UINT8 sendLevel, 故障码发送级别
|
||||
* 返 回 值:CI_ERROR 0 失败
|
||||
* CI_SUCCESS 1 成功
|
||||
* Created By LQ 2025.09.29
|
||||
*/
|
||||
UINT8 KeepLeadRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel);
|
||||
|
||||
/*
|
||||
* 功能描述: 保持列车进路信号机联锁条件检查
|
||||
* 参数说明:
|
||||
@@ -970,6 +982,18 @@ UINT8 KeepLTrainRouteSignalCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel
|
||||
*/
|
||||
UINT8 LockBlocRouteSwitchCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);
|
||||
|
||||
/*
|
||||
* 功能描述:引导进路锁闭道岔联锁条件检查
|
||||
* 参数说明:UINT16 RouteId, 进路号
|
||||
* UINT8 functionId, 调用函数编号
|
||||
* UINT8 sendLevel, 故障码发送级别
|
||||
* 返 回 值:CI_ERROR
|
||||
* CI_SUCCESS
|
||||
* RETURN_LOCK_ERR_SWITPOS 道岔位置不正确
|
||||
* Created By LQ 2025.09.29
|
||||
*/
|
||||
UINT8 LockLeadRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel);
|
||||
|
||||
/*
|
||||
* 功能描述: 锁闭点式进路区段联锁条件检查
|
||||
* 参数说明:
|
||||
@@ -1021,14 +1045,6 @@ CI_ERROR:
|
||||
*/
|
||||
UINT8 CheckRouteZongRenJieFeasibility(const UINT16 routeId);
|
||||
|
||||
/*
|
||||
* 功能描述: 检查调车进路总人解的可行性。只要进路有一个区段可以直接解锁或变绿光带都认为总人解可行。注:调车进路总人解不可调用该函数
|
||||
* 参数说明: const UINT16 routeId, 进路ID
|
||||
* 返回值 : UINT8
|
||||
CI_SUCCESS:总人解可执行
|
||||
CI_ERROR:总人解不可执行
|
||||
*/
|
||||
UINT8 CheckDiaoCheRouteZRJFeasibility(const UINT16 routeId);
|
||||
|
||||
/*
|
||||
锁闭本联锁保护区段条件检查
|
||||
@@ -1173,6 +1189,17 @@ UINT8 OpenLTrainRouteSignalCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel
|
||||
*/
|
||||
UINT8 OpenBlocRouteSwitchCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);
|
||||
|
||||
/*
|
||||
* 功能描述:引导进路开放信号道岔联锁条件检查
|
||||
* 参数说明:UINT16 RouteId, 进路号
|
||||
* UINT8 functionId, 调用函数编号
|
||||
* UINT8 sendLevel, 故障码发送级别
|
||||
* 返 回 值:CI_ERROR 0 失败
|
||||
* CI_SUCCESS 1 成功
|
||||
* Created By LQ 2025.09.29
|
||||
*/
|
||||
UINT8 OpenLeadRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel);
|
||||
|
||||
/* L10_点式进路开放信号保护区段联锁条件检查 */
|
||||
/*
|
||||
* 功能描述: 点式进路开放信号保护区段联锁条件检查
|
||||
@@ -1497,6 +1524,7 @@ UINT8 AxisSecAllSwitchPosCheck(UINT16 const axisSecId,UINT16 *pDevId,UINT8 *pDev
|
||||
* 参数说明: UINT16 const routeId, 进路编号
|
||||
* 返回值 : CI_ERROR
|
||||
* CI_SUCCESS
|
||||
* qw.liu 修改 进路外方第一区段道岔位置检查不使用接近区段,改为直接查逻辑区段
|
||||
*/
|
||||
UINT8 RouteOutfirstPhySecSwiPosCheck(UINT16 const routeId);
|
||||
/*
|
||||
@@ -1869,15 +1897,7 @@ UINT8 LockLeadRouteSectionCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLeve
|
||||
*/
|
||||
UINT8 LogicSecSwitchLtrlDfncCheck(UINT16 const wLgcId, UINT16 *pDevId, UINT8 *pDevState);
|
||||
|
||||
/*
|
||||
* 功能描述: 进路区段全部侧防条件满足检查
|
||||
* 参数说明: UINT16 routeId, 进路号
|
||||
* UINT16 *pDevId, 设备Id(返回)
|
||||
* UINT8 *pDevState, 设备状态(返回)
|
||||
* 返回值 : CI_ERROR
|
||||
* CI_SUCCESS
|
||||
*/
|
||||
UINT8 RouteAllLtrlDfncSwitchCheck(UINT16 const routeId, UINT16 *pDevId, UINT8 *pDevState);
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述: 进路区段全部联络线设备条件满足检查
|
||||
@@ -2211,15 +2231,7 @@ UINT8 LogSecSeqIncUTCheck(const UINT16 wTrainId, const UINT8 cLogSecSum, const U
|
||||
*/
|
||||
UINT8 RouteHalfProSwitchFLockCheck(UINT16 const routeId, UINT16* pDevId, UINT8* pDevState, UINT8* pYLockAlarmFlag);
|
||||
|
||||
/*
|
||||
* 功能描述: 进路区段全部侧防条件满足检查
|
||||
* 参数说明: UINT16 routeId, 进路号
|
||||
* UINT16 *pDevId, 设备Id(返回)
|
||||
* UINT8 *pDevState, 设备状态(返回)
|
||||
* 返回值 : CI_ERROR
|
||||
* CI_SUCCESS
|
||||
*/
|
||||
UINT8 RouteHalfLtrlDfncSwitchCheck(UINT16 const routeId, UINT16 *pDevId, UINT8 *pDevState);
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述: 部分进路区段全部联络线设备条件满足检查
|
||||
@@ -2294,7 +2306,7 @@ UINT16 SearchNonMainRoute(UINT8 cRouteSum, UINT16 wRouteIdBuff[]);
|
||||
UINT8 SwitchRelLogSecLSXSStateCheck(UINT16 switchId, UINT16* pLogSecId, UINT8* pLogState);
|
||||
|
||||
/*
|
||||
* 功能描述: 信号保持开放时进路照查条件满足检查
|
||||
* 功能描述: 进路照查容忍条件满足检查
|
||||
* 参数说明: UINT16 const routeId, 进路号
|
||||
* 返回值 : CI_ERROR 失败
|
||||
* CI_SUCCESS 成功
|
||||
@@ -2506,16 +2518,7 @@ UINT8 CheckRouteZhefanJiesuo(UINT16 const routeId);
|
||||
*/
|
||||
UINT8 CheckOverlapPhysecOtherLock(UINT16 const overlapId, UINT16* pDevId, UINT8* pDevState);
|
||||
|
||||
/*
|
||||
* 功能描述:保护区段侧防条件检查
|
||||
* 参数说明:UINT16 const overlapId, OverlapID
|
||||
* UINT16* pDevId 设备Id(返回)
|
||||
* UINT8* pDevState 设备状态(返回)
|
||||
* 返回值 :0 检查失败
|
||||
* 1 检查成功
|
||||
* Created By LQ 2024.01.05
|
||||
*/
|
||||
UINT8 OverlapLateralDfnCheck(UINT16 const overlapId, UINT16* pDevId, UINT8* pDevState);
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述: 检查保护区段的CBTC区域属性
|
||||
@@ -2614,13 +2617,15 @@ UINT8 CtTrainHeadSuspCheck(const UINT16 wTrainId, const UINT8 cLogSecSeqDir, con
|
||||
* 功能描述:车辆段部分进路的逻辑区段序列和列车位置检查
|
||||
* 输入参数:const UINT8 cLogSecSum 逻辑区段数量
|
||||
* const UINT16* pLogSecIdBuff 逻辑区段序列
|
||||
* const UINT16 wTrainId
|
||||
* const UINT16 wTrainId 列车ID
|
||||
* const UINT8 cFunctionId 函数ID
|
||||
* const UINT8 cSendLevel 报警发送级别
|
||||
* 输出参数:无
|
||||
* 返回值 :CI_ERROR 0 失败
|
||||
* CI_SUCCESS 1 成功
|
||||
* Created By LQ 2024.09.05
|
||||
*/
|
||||
UINT8 LogSecSeqAndTrainPosCheckCLD(const UINT8 cLogSecSum, const UINT16* pLogSecIdBuff, const UINT16 wTrainId);
|
||||
UINT8 LogSecSeqAndTrainPosCheckCLD(const UINT8 cLogSecSum, const UINT16* pLogSecIdBuff, const UINT16 wTrainId, const UINT8 cFunctionId, const UINT8 cSendLevel);
|
||||
|
||||
/*
|
||||
* 功能描述:车辆段部分进路的逻辑区段序列与进路匹配检查
|
||||
@@ -2719,5 +2724,202 @@ UINT8 OverlapProSwUsingCheck(const UINT16 wOverlapId, UINT16* pDevId, UINT8* pDe
|
||||
*/
|
||||
UINT8 RouteRelAllSwitchPosCheck(UINT16 const routeId);
|
||||
|
||||
/*
|
||||
*函数功能:保护区段照查继电器检查
|
||||
*参数说明:const UINT16 wOverlapId保护区段ID
|
||||
* UINT8 chSendLevel, 故障码发送级别
|
||||
*返回值:CI_ERROR 失败
|
||||
* CI_SUCCESS 成功
|
||||
* RELAY_STATE_WAITE 本端照查继电器条件不满足--等待
|
||||
* by cgh 20250617
|
||||
*/
|
||||
UINT8 OverlapZhaoChaRelayCheck(const UINT16 wOverlapId, UINT8 chSendLevel);
|
||||
|
||||
/*
|
||||
* 功能描述: 进路区段全部防护锁闭检查
|
||||
* 参数说明: UINT16 routeId, 进路号
|
||||
* 返回值 : CI_ERROR
|
||||
* CI_SUCCESS 区段状态均为防护锁闭
|
||||
* by fan 20250724
|
||||
*/
|
||||
UINT8 RouteAllSecProtectLockCheck(UINT16 const routeId);
|
||||
|
||||
/*
|
||||
* 功能描述: 逻辑区段关联计轴无休眠车检查
|
||||
* 参数说明: UINT16 logSectionId, 逻辑区段ID
|
||||
* 返回值 : CI_ERROR 存在休眠车
|
||||
* CI_SUCCESS 检查通过
|
||||
* by fan 20250728
|
||||
*/
|
||||
UINT8 LogSecRelateNoSleepTrainCheck(UINT16 const logSectionId);
|
||||
|
||||
/*
|
||||
* 功能描述:校验指定进路是否非场段进路或为场段出库/出段进路
|
||||
* 参数说明:UINT16 wRouteId 进路ID
|
||||
* 返 回 值:CI_ERROR 其它进路
|
||||
* CI_SUCCESS 非场段进路或为场段出库/出段进路
|
||||
* Created By LQ 2025.08.05
|
||||
*/
|
||||
UINT8 RouteCldAttrCheck(UINT16 wRouteId);
|
||||
|
||||
/*
|
||||
* 功能描述:保护区段占用解锁条件检查
|
||||
* 参数说明:UINT16 overlapId 保护区段ID
|
||||
* UINT8 functionId 函数ID
|
||||
* 返 回 值:CI_ERROR 0 失败
|
||||
* CI_SUCCESS 1 成功
|
||||
* Created By LQ 2025.08.18
|
||||
*/
|
||||
UINT8 OverlapOccuUnlockCheck(UINT16 overlapId, UINT8 functionId);
|
||||
/*
|
||||
* 功能描述:办理联挂进路区段检查
|
||||
* 参数说明:const UINT16 wRouteId 进路ID
|
||||
* UINT16* pDevId 设备ID
|
||||
* UINT8* pDevState 设备状态
|
||||
* 返 回 值:CI_ERROR 0 失败
|
||||
* CI_SUCCESS 1 成功
|
||||
* Created By 2025.09.18
|
||||
*/
|
||||
UINT8 SetCouplinkRouteSecOccCheck(const UINT16 wRouteId, UINT16* pDevId, UINT8* pDevState);
|
||||
/*
|
||||
* 功能描述:保持联挂进路区段占用检查
|
||||
* 参数说明:const UINT16 wRouteId 进路ID
|
||||
* UINT16* pDevId 设备ID
|
||||
* UINT8* pDevState 设备状态
|
||||
* 返 回 值:CI_ERROR 0 失败
|
||||
* CI_SUCCESS 1 成功
|
||||
* Created By 2025.09.18
|
||||
*/
|
||||
UINT8 KeepCouplinkRouteSecOccCheck(const UINT16 wRouteId, UINT16* pDevId, UINT8* pDevState);
|
||||
|
||||
/*
|
||||
* 功能描述:单个侧防条件检查
|
||||
* 参数说明:SideProtecStru SidePretectData 一项侧防条件
|
||||
* UINT16 wDevId 设备ID
|
||||
* UINT8 cDevType 设备类型
|
||||
* UINT8 functionId 函数ID
|
||||
* UINT8 sendLevel 发送等级
|
||||
* 返 回 值:CI_ERROR 0 失败
|
||||
* CI_SUCCESS 1 成功
|
||||
*/
|
||||
UINT8 SingleSideProtectCheck(SideProtecStru SidePretectData, UINT16 wDevId, UINT8 cDevType, UINT8 functionId, UINT8 sendLevel);
|
||||
|
||||
/*
|
||||
* 功能描述:侧防道岔位置检查
|
||||
* 参数说明:SideProtecSwitchData* pSideProtecSwitchBuf 道岔侧防条件
|
||||
* UINT8 chSideProtecSwitchNum 侧防道岔数量
|
||||
* 返 回 值:CI_ERROR 0 侧防道岔位置连通
|
||||
* CI_SUCCESS 1 侧防道岔位置不连通
|
||||
*/
|
||||
UINT8 SideProtectSwitchPosCheck(SideProtecSwitchData* pSideProtecSwitchBuf, UINT8 chSideProtecSwitchNum);
|
||||
|
||||
/*
|
||||
* 功能描述:侧防物理区段条件检查
|
||||
* 参数说明:SideProtecStru SidePretectData 侧防条件
|
||||
* UINT8 functionId 函数ID
|
||||
* UINT8 sendLevel 发送等级
|
||||
* 返 回 值: CI_ERROR 失败
|
||||
* CI_SUCCESS 成功
|
||||
*/
|
||||
UINT8 SideProtectPhySecCheck(SideProtecStru SidePretectData, UINT8 functionId, UINT8 sendLevel);
|
||||
|
||||
/*
|
||||
* 功能描述: 检查进路侧防条件
|
||||
* 参数说明:UINT16 routeId 进路ID
|
||||
UINT8 functionId 函数ID
|
||||
UINT8 sendLevel 发送等级
|
||||
* 返回值 : CI_ERROR
|
||||
* CI_SUCCESS
|
||||
* 创建 :
|
||||
*/
|
||||
UINT8 RouteSideProtectConditionCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel);
|
||||
/*
|
||||
* 功能描述: 检查保护区段侧防条件
|
||||
* 参数说明:UINT16 wOverlapId 保护区段ID
|
||||
UINT8 functionId 函数ID
|
||||
UINT8 sendLevel 发送等级
|
||||
* 返回值 : CI_ERROR
|
||||
* CI_SUCCESS
|
||||
* 创建 :
|
||||
*/
|
||||
UINT8 OlapSideProtectConditionCheck(UINT16 wOverlapId, UINT8 functionId, UINT8 sendLevel);
|
||||
|
||||
/*
|
||||
* 功能描述:侧防区段道岔位置检查
|
||||
* 参数说明:UINT16 const physicalId, 物理区段ID
|
||||
* SideProtecStru SidePretectData 侧防数据
|
||||
* 返 回 值:CI_ERROR 0 失败
|
||||
* CI_SUCCESS 1 成功
|
||||
*/
|
||||
UINT8 SideProtectPhySecSwtPosCheck(const UINT16 physicalId, SideProtecStru SidePretectData);
|
||||
|
||||
/*
|
||||
* 功能描述:检查保护区段道岔及防护道岔位置是否正确
|
||||
* 参数说明:const UINT16 overlapId overlap ID
|
||||
* 返 回 值:CI_ERROR 0 道岔位置错误
|
||||
* CI_SUCCESS 1 道岔位置正确
|
||||
* Created By LQ 2025.09.28
|
||||
*/
|
||||
UINT8 CheckOverlapSwitchPosRight(const UINT16 overlapId);
|
||||
|
||||
/*
|
||||
*函数功能:保护区段之前人工解锁状态检查
|
||||
*参数说明:const UINT16 wRouteId 进路ID
|
||||
* UINT16 *pDevId, 设备Id(返回)
|
||||
* UINT8 *pDevState, 设备状态(返回)
|
||||
* 返回值 : CI_ERROR
|
||||
* CI_SUCCESS
|
||||
* by cgh 20250929
|
||||
*/
|
||||
UINT8 OverlapPreLaborUnLockStateCheck(UINT16 const wRouteId, UINT16* pDevId, UINT8* pDevState);
|
||||
|
||||
/*
|
||||
* 功能描述:侧防关键道岔检查
|
||||
* 参数说明:UINT16 wSwitchId 关键道岔ID
|
||||
* UINT16 wDevId 设备ID
|
||||
* UINT8 cDevType 设备类型
|
||||
* 返 回 值:CI_ERROR 0 失败
|
||||
* CI_SUCCESS 1 成功
|
||||
* Created By LQ 2025.09.29
|
||||
*/
|
||||
UINT8 SingleSideKeySwitchCheck(UINT16 wSwitchId, UINT16 wDevId, UINT8 cDevType);
|
||||
|
||||
/*
|
||||
* 功能描述:物理区段锁闭码位侧防条件检查
|
||||
* 参数说明:UINT16 wPhySecId 物理区段ID
|
||||
* 返 回 值:CI_ERROR 0 失败
|
||||
* CI_SUCCESS 1 成功
|
||||
* Created By LQ 2025.09.29
|
||||
*/
|
||||
UINT8 PhySecLockMaskSideProtectCheck(UINT16 wPhySecId);
|
||||
/*
|
||||
*函数功能:自动通过进路办理联挂属性检查
|
||||
*参数说明: const UINT16 wAutoRouteId 进路ID
|
||||
* const UINT8 chFunctionId 函数ID
|
||||
* 返回值 : CI_ERROR
|
||||
* CI_SUCCESS
|
||||
* by lyj 20250929
|
||||
*/
|
||||
UINT8 AutoRouteCouplinkStateCheck(const UINT16 wAutoRouteId, const UINT8 chFunctionId);
|
||||
/*
|
||||
*函数功能:自动折返进路办理联挂属性检查
|
||||
*参数说明: const UINT16 wAutoRouteId 进路ID
|
||||
* const UINT8 chFunctionId 函数ID
|
||||
* 返回值 : CI_ERROR
|
||||
* CI_SUCCESS
|
||||
* by lyj 20250929
|
||||
*/
|
||||
UINT8 AutoReturnRouteCouplinkCheck(const UINT16 wAutoRouteId, const UINT8 chFunctionId);
|
||||
/*
|
||||
*函数功能:全自动折返进路办理联挂属性检查
|
||||
*参数说明: const UINT16 wAutoRouteId 进路ID
|
||||
* const UINT8 chFunctionId 函数ID
|
||||
* 返回值 : CI_ERROR
|
||||
* CI_SUCCESS
|
||||
* by lyj 20250929
|
||||
*/
|
||||
UINT8 AllAutoReturnRCouplinkCheck(const UINT16 wAutoRouteId, const UINT8 chFunctionId);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -325,10 +325,11 @@ UINT8 PhySectionDelayUnlockProcess(const UINT16 routeId, UINT16* phySectionId);
|
||||
/* C25_解锁进路overlap逻辑处理 */
|
||||
/*
|
||||
* 功能描述: 解锁进路overlap逻辑处理
|
||||
* 参数说明: const UINT16 routeId
|
||||
* 返回值 : CI_ERROR
|
||||
* CI_SUCCESS
|
||||
* CI_UNLOCK_OVERLAP_REQURE 向ZC申请解锁保护区段
|
||||
* 参数说明: const UINT16 routeId 进路号
|
||||
* 返回值 : CI_ERROR 0x00 失败
|
||||
* CI_SUCCESS 0x01 成功
|
||||
* CI_UNLOCK_OVERLAP_REQURE 0x02 向ZC/车申请解锁保护区段
|
||||
* CI_OVERLAP_OCC_UNLOCK 0x06 保护区段执行占用特殊解锁
|
||||
* 故障编码: EFUNC_UNLOCK_OVER_LAP
|
||||
*/
|
||||
UINT8 UnlockRouteOverlapLogicProcess(const UINT16 routeId, UINT16* overlapId, UINT16* pTrainId);
|
||||
@@ -687,15 +688,16 @@ void LgcSecUnlockProc(const UINT16 routeId, const UINT16 logSectionId);
|
||||
* 返回值 : void
|
||||
*/
|
||||
void RouteLgcSecResReleaseProcess(const UINT16 wRouteId);
|
||||
|
||||
/*
|
||||
* 功能描述: 检查保护区段人工解锁是否可执行
|
||||
* 参数说明: const UINT16 overlapId, 保护区段ID
|
||||
* const UINT32 dwOverlapUnlockCount 保护区段自动解锁周期数
|
||||
* const UINT32 dwOverlapUnlockStartCyc 保护区段自动解锁起始周期
|
||||
* const UINT16 wRouteId 进路ID
|
||||
* 返回值 : CI_SUCCESS:成功
|
||||
CI_ERROR:失败
|
||||
* edit cgh 20250928
|
||||
*/
|
||||
UINT8 CheckOverlapLaborUnlock(const UINT16 overlapId, const UINT32 dwOverlapUnlockCount, const UINT32 dwOverlapUnlockStartCyc);
|
||||
UINT8 CheckOverlapLaborUnlock(const UINT16 overlapId, const UINT16 wRouteId);
|
||||
/*
|
||||
* 功能描述: 计算保护区段解锁倒计时开始周期
|
||||
* 参数说明: const UINT16 overlapId, 保护区段ID
|
||||
@@ -823,6 +825,23 @@ UINT8 RouteLgcSecResReturnSecCheck(UINT16 wValidReturnSigId, const UINT16 wRoute
|
||||
*/
|
||||
UINT8 LgcOverlapUsableProcess(UINT16 const wLgcSecId);
|
||||
#endif
|
||||
/*
|
||||
* 功能描述: 进路联挂标志处理
|
||||
* 参数说明: const UINT16 wRouteId 进路ID
|
||||
* const UINT8 functionId 函数ID
|
||||
* const UINT8 sendLevel 报警级别
|
||||
* 返回值 : 联挂标志设置结果
|
||||
* Create: 20250917
|
||||
*/
|
||||
UINT8 SetRouteCouplinkProcess(const UINT16 wRouteId, const UINT8 functionId, const UINT8 sendLevel);
|
||||
/*
|
||||
* 功能描述: 刷新联挂标志
|
||||
* 参数说明: const UINT16 wRouteId 进路ID
|
||||
* 返回值 : 无
|
||||
* Create: 20250919
|
||||
*/
|
||||
void UpdateRouteCouplinkFlag(const UINT16 wRouteId);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -823,7 +823,7 @@ UINT8 SetLogRouteSwitchCheck(UINT16 logRouteId, UINT8 functionId, UINT8 sendLeve
|
||||
{
|
||||
devId = 0u;
|
||||
devState = 0u;
|
||||
checkResult = LogRouteCeFangSwitchCheck(logRouteId, &devId, &devState);
|
||||
checkResult = LogRouteCeFangSwitchCheck(logRouteId, functionId, sendLevel);
|
||||
if (CI_SUCCESS == checkResult)
|
||||
{
|
||||
/* 通过检查 */
|
||||
@@ -831,8 +831,7 @@ UINT8 SetLogRouteSwitchCheck(UINT16 logRouteId, UINT8 functionId, UINT8 sendLeve
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 记录故障码 */
|
||||
SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_NO_UT_CT_OCU_STATE, devState, sendLevel);
|
||||
|
||||
/* 失败返回 */
|
||||
reResult = CI_ERROR;
|
||||
}
|
||||
@@ -1034,7 +1033,7 @@ UINT8 LockLogRouteSwitchCheck(UINT16 logRouteId, UINT8 functionId, UINT8 sendLev
|
||||
{
|
||||
devId = 0u;
|
||||
devState = 0u;
|
||||
checkResult = LogRouteCeFangSwitchCheck(logRouteId, &devId, &devState);
|
||||
checkResult = LogRouteCeFangSwitchCheck(logRouteId, functionId, sendLevel);
|
||||
if (CI_SUCCESS == checkResult)
|
||||
{
|
||||
/* 通过检查 */
|
||||
@@ -1042,8 +1041,7 @@ UINT8 LockLogRouteSwitchCheck(UINT16 logRouteId, UINT8 functionId, UINT8 sendLev
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 记录故障码 */
|
||||
SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_NO_UT_CT_OCU_STATE, devState, sendLevel);
|
||||
|
||||
/* 失败返回 */
|
||||
reResult = CI_ERROR;
|
||||
}
|
||||
@@ -1298,46 +1296,39 @@ UINT8 LogRouteProSwitchFLockCheck(UINT16 const routeId, UINT16* pDevId, UINT8* p
|
||||
/*
|
||||
* 功能描述: 逻辑进路侧防条件满足检查
|
||||
* 参数说明: UINT16 routeId, 逻辑进路号
|
||||
* UINT16 *pDevId, 设备Id(返回)
|
||||
* UINT8 *pDevState, 设备状态(返回)
|
||||
* UINT8 functionId, 函数ID
|
||||
* UINT8 sendLevel 发送等级
|
||||
* 返回值 : CI_ERROR
|
||||
* CI_SUCCESS
|
||||
*/
|
||||
UINT8 LogRouteCeFangSwitchCheck(UINT16 const routeId, UINT16* pDevId, UINT8* pDevState)
|
||||
UINT8 LogRouteCeFangSwitchCheck(UINT16 const routeId,UINT8 functionId, UINT8 sendLevel)
|
||||
{
|
||||
/* 进路区段*/
|
||||
UINT16 const checkSum = GetLogicalRouteInLogSecSum(routeId);
|
||||
UINT16* const dataIdBuf = GetLogicalRouteInLogSecId(routeId);
|
||||
|
||||
/* 局部变量定义初始化 */
|
||||
UINT16 i = 0u; /* 循环变量 */
|
||||
UINT16 devId = 0u;
|
||||
UINT8 i = 0u; /* 循环变量 */
|
||||
UINT8 reVal = CI_ERROR;
|
||||
SideProtecStru* pLogRoutSidePrtectData = NULL;
|
||||
UINT8 chLogRoutSidePrtectDataNum = 0u;
|
||||
|
||||
if ((0u == checkSum) || (NULL == pDevId) || (NULL == pDevState))
|
||||
UINT8 cDevType = 0u;
|
||||
UINT8 cDevStateType = 0u;
|
||||
UINT16 cDevId = 0u;
|
||||
UINT8 cDevState = 0u;
|
||||
|
||||
pLogRoutSidePrtectData = GetLogRoutSidePrtectData(routeId);
|
||||
chLogRoutSidePrtectDataNum = GetLogRoutSidePrtectDataNum(routeId);
|
||||
|
||||
if (NULL == pLogRoutSidePrtectData)
|
||||
{
|
||||
/*区段数据错误*/
|
||||
reVal = CI_ERROR;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*开始检查*/
|
||||
for (i = 0u; i < checkSum; i++)
|
||||
{
|
||||
devId = dataIdBuf[i];
|
||||
reVal = LogicSecSwitchLtrlDfncCheck(devId, pDevId, pDevState);
|
||||
if (CI_SUCCESS == reVal)
|
||||
{
|
||||
/* 通过检查*/
|
||||
}
|
||||
else
|
||||
{
|
||||
/*状态不一致返回故障状态*/
|
||||
reVal = CI_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
reVal = CI_SUCCESS;
|
||||
/*功能预留*/
|
||||
}
|
||||
|
||||
|
||||
/*全部通过检查*/
|
||||
return reVal;
|
||||
}
|
||||
@@ -2800,7 +2791,7 @@ UINT8 KeepLogRouteSwitchCheck(UINT16 wLogRouteId, UINT8 functionId, UINT8 sendLe
|
||||
{
|
||||
devId = 0u;
|
||||
devState = 0u;
|
||||
checkResult = LogRouteCeFangSwitchCheck(wLogRouteId, &devId, &devState);
|
||||
checkResult = LogRouteCeFangSwitchCheck(wLogRouteId, functionId, sendLevel);
|
||||
if (CI_SUCCESS == checkResult)
|
||||
{
|
||||
/* 通过检查 */
|
||||
@@ -2808,8 +2799,7 @@ UINT8 KeepLogRouteSwitchCheck(UINT16 wLogRouteId, UINT8 functionId, UINT8 sendLe
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 记录故障码 */
|
||||
SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_NO_UT_CT_OCU_STATE, devState, sendLevel);
|
||||
|
||||
/* 失败返回 */
|
||||
reResult = CI_ERROR;
|
||||
}
|
||||
|
||||
@@ -138,12 +138,12 @@ UINT8 LogRouteProSwitchFLockCheck(UINT16 const routeId, UINT16* pDevId, UINT8* p
|
||||
/*
|
||||
* 功能描述: 逻辑进路侧防条件满足检查
|
||||
* 参数说明: UINT16 routeId, 逻辑进路号
|
||||
* UINT16 *pDevId, 设备Id(返回)
|
||||
* UINT8 *pDevState, 设备状态(返回)
|
||||
* UINT8 functionId, 函数ID
|
||||
* UINT8 sendLevel 发送等级
|
||||
* 返回值 : CI_ERROR
|
||||
* CI_SUCCESS
|
||||
*/
|
||||
UINT8 LogRouteCeFangSwitchCheck(UINT16 const routeId, UINT16* pDevId, UINT8* pDevState);
|
||||
UINT8 LogRouteCeFangSwitchCheck(UINT16 const routeId, UINT8 functionId, UINT8 sendLevel);
|
||||
|
||||
/*
|
||||
* 功能描述: 逻辑进路区段全部联络线设备条件满足检查
|
||||
|
||||
@@ -28,23 +28,47 @@ UINT8 SetLTrainRouteP(const UINT16 routeId)
|
||||
/* 局部变量定义初始化 */
|
||||
UINT8 devState = 0U; /*设备状态*/
|
||||
UINT8 reResult = CI_ERROR; /*返回值*/
|
||||
|
||||
UINT8 chRouteCouplinkFlag = 0U;
|
||||
UINT8 chRouteLevel = 0U;
|
||||
/* 联锁条件检查 */
|
||||
|
||||
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/
|
||||
chRouteLevel = GetRouteLevel(routeId); /*获取进路监督级别*/
|
||||
devState = GetRouteState(routeId);
|
||||
/*进路状态空闲或初选或自动解锁异常(ARB且故障锁闭)*/
|
||||
if ((ROUTE_STATE_IDLE == devState) || (ROUTE_STATE_FIRST_XUANPAI == devState) || (ROUTE_STATE_AUTO_UNLOCKERR == devState))
|
||||
if ((ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag) && (ROUTE_LEVEL_CBTC == chRouteLevel))
|
||||
{
|
||||
/* 返回成功 */
|
||||
reResult = CI_SUCCESS;
|
||||
/* 进路状态条件:进路状态空闲、进路初选、自动解锁正常、自动解锁异常(ARB)、初锁异常、预先锁闭、接近锁闭正常、接近锁闭异常都可以办理联挂进路 */
|
||||
if ((ROUTE_STATE_IDLE == devState) || (ROUTE_STATE_FIRST_XUANPAI == devState) || (ROUTE_STATE_FIRST_LOCKERR == devState)
|
||||
|| (ROUTE_STATE_YUXIAN_LOCK == devState) || (ROUTE_STATE_NEAR_LOCK == devState) || (ROUTE_STATE_NEAR_LOCKERR == devState)
|
||||
|| (ROUTE_STATE_AUTO_UNLOCK == devState) || (ROUTE_STATE_AUTO_UNLOCKERR == devState))
|
||||
{
|
||||
/* 返回成功 */
|
||||
reResult = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 记录故障码 */
|
||||
SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_ROUTE_STATE, devState, sendLevel);
|
||||
/* 失败返回 */
|
||||
reResult = CI_ERROR;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 记录故障码 */
|
||||
SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_ROUTE_STATE, devState, sendLevel);
|
||||
/* 失败返回 */
|
||||
reResult = CI_ERROR;
|
||||
/*进路状态空闲或初选或自动解锁异常(ARB且故障锁闭)*/
|
||||
if ((ROUTE_STATE_IDLE == devState) || (ROUTE_STATE_FIRST_XUANPAI == devState) || (ROUTE_STATE_AUTO_UNLOCKERR == devState))
|
||||
{
|
||||
/* 返回成功 */
|
||||
reResult = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 记录故障码 */
|
||||
SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_ROUTE_STATE, devState, sendLevel);
|
||||
/* 失败返回 */
|
||||
reResult = CI_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*信号联锁条件检查*/
|
||||
/*if ((CI_SUCCESS == reResult) && (CI_ERROR == SetLTrainRouteSignalCheck(routeId,functionId,sendLevel)))*/
|
||||
@@ -181,6 +205,7 @@ UINT8 SetLeadRouteP(const UINT16 routeId)
|
||||
UINT16 devId = 0u; /*设备ID*/
|
||||
UINT8 devState = 0u; /*设备状态*/
|
||||
UINT8 reResult = CI_SUCCESS; /*返回值*/
|
||||
UINT8 cFuncSwitch = FUNC_SWITCH_ON; /*引导进路是否检查防淹门开关*/
|
||||
|
||||
/* 联锁条件检查 */
|
||||
devId = routeId;
|
||||
@@ -217,7 +242,7 @@ UINT8 SetLeadRouteP(const UINT16 routeId)
|
||||
}
|
||||
|
||||
/*道岔联锁条件检查*/
|
||||
if ((CI_SUCCESS == reResult) && (CI_ERROR == SetLTrainRouteSwitchCheck(routeId,functionId,sendLevel)))
|
||||
if ((CI_SUCCESS == reResult) && (CI_ERROR == SetLeadRouteSwitchCheck(routeId,functionId,sendLevel)))
|
||||
{
|
||||
/* 失败返回 */
|
||||
reResult = CI_ERROR;
|
||||
@@ -226,8 +251,17 @@ UINT8 SetLeadRouteP(const UINT16 routeId)
|
||||
if (CI_SUCCESS == reResult)
|
||||
{
|
||||
/*防淹门联锁条件检查*/
|
||||
reResult = BlocRouteFloodGateCheck(routeId,functionId,sendLevel);
|
||||
|
||||
cFuncSwitch = GetCiFunctionSwitchConfig(FUNC_LEADROUTE_FLOODGATE_CHECK);
|
||||
|
||||
if (FUNC_SWITCH_OFF == cFuncSwitch)
|
||||
{
|
||||
/*引导进路办理不检查防淹门状态*/
|
||||
}
|
||||
else
|
||||
{
|
||||
/*引导进路办理检查防淹门状态*/
|
||||
reResult = BlocRouteFloodGateCheck(routeId, functionId, sendLevel);
|
||||
}
|
||||
}
|
||||
|
||||
return reResult;
|
||||
@@ -660,7 +694,7 @@ UINT8 LockLeadTrainRouteP(const UINT16 routeId)
|
||||
|
||||
if (CI_SUCCESS == reResult)
|
||||
{
|
||||
chCheckResult = SetLTrainRouteSwitchCheck(routeId, functionId, sendLevel);
|
||||
chCheckResult = SetLeadRouteSwitchCheck(routeId, functionId, sendLevel);
|
||||
if (CI_ERROR == chCheckResult)
|
||||
{
|
||||
/* 失败返回 */
|
||||
@@ -1995,9 +2029,7 @@ UINT8 CancelDTrainRouteP(const UINT16 routeId)
|
||||
UINT8 devState = 0u; /*设备状态*/
|
||||
UINT16 cancleZhaoChaRelayId = 0u; /*取消照查继电器ID*/
|
||||
UINT8 relayState = 0u; /*继电器采集状态*/
|
||||
UINT8 chRouteLevel = 0U;
|
||||
|
||||
|
||||
|
||||
/* 联锁条件检查 */
|
||||
/*进路内所有区段正常锁闭*/
|
||||
checkResult = RouteAllSecLockStateCheck(routeId,PHYSICAL_SECTION_LOCK_NORMAL,&devId,&devState);
|
||||
@@ -2034,19 +2066,8 @@ UINT8 CancelDTrainRouteP(const UINT16 routeId)
|
||||
}
|
||||
if (CI_SUCCESS == reResult)
|
||||
{/*检查取消照查继电器状态是否吸起*/
|
||||
chRouteLevel = GetRouteLevel(routeId);
|
||||
if (ROUTE_LEVEL_BLOC == chRouteLevel)
|
||||
{
|
||||
cancleZhaoChaRelayId = GetRouteCancleZhaoChaRelayId(routeId); /*后备模式取消照查继电器ID*/
|
||||
}
|
||||
else if (ROUTE_LEVEL_CBTC == chRouteLevel)
|
||||
{
|
||||
cancleZhaoChaRelayId = GetRouteCbtcCancelZhaochaRelay(routeId);/*CBTC模式取消照查继电器ID*/
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*非法监督模式,继电器ID为0,在下面不会处理*/
|
||||
}
|
||||
cancleZhaoChaRelayId = GetRouteCancleZhaoChaRelayId(routeId); /*取消照查继电器ID*/
|
||||
|
||||
if((0u != cancleZhaoChaRelayId) && (0xFFFFu != cancleZhaoChaRelayId))
|
||||
{
|
||||
/*取消继电器有效:取消继电器采集状态为:吸起*/
|
||||
@@ -2186,7 +2207,8 @@ UINT8 SetLTrainRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel
|
||||
|
||||
UINT16 devId = 0u; /*设备ID*/
|
||||
UINT8 devState = 0u; /*设备状态*/
|
||||
|
||||
UINT8 chRouteCouplinkFlag = 0U;
|
||||
UINT8 chRouteLevel = 0U;
|
||||
|
||||
/* 联锁逻辑检查 */
|
||||
/* 进路内所有区段未被封锁 */
|
||||
@@ -2211,7 +2233,17 @@ UINT8 SetLTrainRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel
|
||||
{
|
||||
devId = 0u;
|
||||
devState = 0u;
|
||||
checkResult = RouteAllSecOccuClearCheck(routeId,&devId, &devState);
|
||||
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/
|
||||
chRouteLevel = GetRouteLevel(routeId); /*获取进路监督级别*/
|
||||
if ((ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag) && (ROUTE_LEVEL_CBTC == chRouteLevel))
|
||||
{
|
||||
checkResult = SetCouplinkRouteSecOccCheck(routeId, &devId, &devState);
|
||||
}
|
||||
else
|
||||
{
|
||||
checkResult = RouteAllSecOccuClearCheck(routeId, &devId, &devState);
|
||||
}
|
||||
|
||||
if (checkResult == CI_SUCCESS)
|
||||
{
|
||||
/* 通过检查 */
|
||||
@@ -2219,8 +2251,17 @@ UINT8 SetLTrainRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 记录故障码 */
|
||||
SetErrorData(functionId,CI_DEVICE_TYPE_PHYSEC,devId,ETYPE_PS_MERGY_OCU_STATE,devState,sendLevel);
|
||||
if (0U == devId)
|
||||
{
|
||||
/* 记录故障码 */
|
||||
SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_COUPLINK_ROUTE_IDLE, 0U, sendLevel);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 记录故障码 */
|
||||
SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_MERGY_OCU_STATE, devState, sendLevel);
|
||||
}
|
||||
|
||||
/* 失败返回 */
|
||||
reResult = CI_ERROR;
|
||||
}
|
||||
@@ -2373,11 +2414,12 @@ UINT8 SetLTrainRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLeve
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/*场段进路不查侧防条件*/
|
||||
#if 0
|
||||
/*进路侧防道岔条件检查*/
|
||||
if (CI_SUCCESS == reResult)
|
||||
{
|
||||
checkResult = RouteAllLtrlDfncSwitchCheck(routeId, &devId, &devState);
|
||||
checkResult = RouteSideProtectConditionCheck(routeId, functionId, sendLevel);
|
||||
if (CI_SUCCESS == checkResult)
|
||||
{
|
||||
/* 通过检查 */
|
||||
@@ -2385,8 +2427,7 @@ UINT8 SetLTrainRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLeve
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 记录故障码 */
|
||||
SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_NO_UT_CT_OCU_STATE, devState, sendLevel);
|
||||
|
||||
/* 失败返回 */
|
||||
reResult = CI_ERROR;
|
||||
}
|
||||
@@ -2396,6 +2437,7 @@ UINT8 SetLTrainRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLeve
|
||||
/* 失败返回 */
|
||||
reResult = CI_ERROR;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (CI_SUCCESS == reResult)
|
||||
{
|
||||
@@ -2528,9 +2570,288 @@ UINT8 SetLTrainRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLeve
|
||||
}
|
||||
else
|
||||
{
|
||||
/*如果是进路防护道岔等待相邻联锁反馈道岔检查状态,先不检查防护道岔是否全在位置,继续等待*/
|
||||
}
|
||||
|
||||
if (CI_ERROR == reResultP)
|
||||
{/*如果防护道岔的检查结果为错误,则总的检查结果为错误*/
|
||||
reResult = CI_ERROR;
|
||||
}
|
||||
else if (CI_SUCCESS == reResultP)
|
||||
{
|
||||
/*如果防护道岔的检查结果为成功,则总的检查结果保持不变*/
|
||||
}
|
||||
else if (RETURN_LOCK_ERR_WAIT_SWCHECK == reResultP)
|
||||
{
|
||||
/*如果防护道岔的检查结果等待检查,则总的检查结果等待检查*/
|
||||
reResult = RETURN_LOCK_ERR_WAIT_SWCHECK;
|
||||
}
|
||||
else if (RETURN_LOCK_ERR_SWITPOS == reResultP)
|
||||
{/*如果防护道岔的检查结果为锁闭位置错误,则总的检查结果为锁闭位置错误*/
|
||||
reResult = RETURN_LOCK_ERR_SWITPOS;
|
||||
}
|
||||
else
|
||||
{/*其它不存在的情况,置总的结果为错误*/
|
||||
reResult = CI_ERROR;
|
||||
}
|
||||
}
|
||||
else if (RETURN_LOCK_ERR_WAIT_SWCHECK == reResult)
|
||||
{
|
||||
/*进路内道岔等待相邻联锁反馈道岔检查状态,先不检查防护道岔状态,继续等待*/
|
||||
;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 失败返回 */
|
||||
reResult = CI_ERROR;
|
||||
}
|
||||
/* 返回结果 */
|
||||
return reResult;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:办理引导进路道岔联锁条件检查
|
||||
* 参数说明:UINT16 RouteId, 进路号
|
||||
* UINT8 functionId, 调用函数编号
|
||||
* UINT8 sendLevel, 故障码发送级别
|
||||
* 返 回 值:CI_ERROR 0 失败
|
||||
* CI_SUCCESS 1 成功
|
||||
* Created By LQ 2025.09.29
|
||||
*/
|
||||
UINT8 SetLeadRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel)
|
||||
{
|
||||
/* 局部变量定义初始化 */
|
||||
UINT8 reResult = CI_ERROR; /*返回值*/
|
||||
UINT8 checkResult = CI_ERROR; /*检查结果*/
|
||||
UINT16 devId = 0U; /*设备ID*/
|
||||
UINT8 devState = 0U; /*设备状态*/
|
||||
UINT8 reResultP = CI_ERROR; /*道岔位置局部检查返回值*/
|
||||
UINT8 chConnetCheckFunc = 0U;
|
||||
|
||||
chConnetCheckFunc = GetCiFunctionSwitchConfig(FUNC_SETROUTE_CONNECT_CHECK); /*获取是否要检查联络线条件的开关*/
|
||||
|
||||
/*进路内所有道岔【未引导总锁】*/
|
||||
devId = 0U;
|
||||
devState = 0U;
|
||||
checkResult = RouteSwitchYLockCheck(routeId, &devId, &devState);
|
||||
if (CI_SUCCESS == checkResult)
|
||||
{
|
||||
/* 通过检查 */
|
||||
reResult = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 记录故障码 */
|
||||
SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_YLOCK_STATE, devState, sendLevel);
|
||||
/* 失败返回 */
|
||||
reResult = CI_ERROR;
|
||||
|
||||
}
|
||||
|
||||
if (CI_SUCCESS == reResult)
|
||||
{
|
||||
/*进路内所有道岔【未封锁】*/
|
||||
devId = 0U;
|
||||
devState = 0U;
|
||||
checkResult = RouteSwitchFLockCheck(routeId, &devId, &devState);
|
||||
if (CI_SUCCESS == checkResult)
|
||||
{
|
||||
/* 通过检查 */
|
||||
reResult = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 记录故障码 */
|
||||
SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_FLOCK_STATE, devState, sendLevel);
|
||||
/* 失败返回 */
|
||||
reResult = CI_ERROR;
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*继续执行*/
|
||||
}
|
||||
|
||||
if (CI_SUCCESS == reResult)
|
||||
{
|
||||
/*进路防护道岔【未封锁】*/
|
||||
devId = 0U;
|
||||
devState = 0U;
|
||||
checkResult = RouteReltProtSwitchFLockCheck(routeId, &devId, &devState);
|
||||
if (CI_SUCCESS == checkResult)
|
||||
{
|
||||
/* 通过检查 */
|
||||
reResult = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 记录故障码 */
|
||||
SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_FLOCK_STATE, devState, sendLevel);
|
||||
/* 失败返回 */
|
||||
reResult = CI_ERROR;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
/*进路侧防道岔条件检查*/
|
||||
if (CI_SUCCESS == reResult)
|
||||
{
|
||||
checkResult = RouteSideProtectConditionCheck(routeId, functionId, sendLevel);
|
||||
if (CI_SUCCESS == checkResult)
|
||||
{
|
||||
/* 通过检查 */
|
||||
reResult = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
/* 失败返回 */
|
||||
reResult = CI_ERROR;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 失败返回 */
|
||||
reResult = CI_ERROR;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (CI_SUCCESS == reResult)
|
||||
{
|
||||
if (FUNC_SWITCH_ON == chConnetCheckFunc)
|
||||
{
|
||||
; /*开关打开,不检查联络线条件*/
|
||||
}
|
||||
else
|
||||
{
|
||||
/*进路联络线设备条件检查*/
|
||||
checkResult = RouteContactLineDevSwitchCheck(routeId, functionId, sendLevel);
|
||||
if (CI_SUCCESS == checkResult)
|
||||
{
|
||||
/* 通过检查 */
|
||||
reResult = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 失败返回 */
|
||||
reResult = CI_ERROR;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (CI_SUCCESS == reResult)
|
||||
{
|
||||
/*进路内所有道岔位置正确或位置不正确但可动作*/
|
||||
devId = 0U;
|
||||
devState = 0U;
|
||||
checkResult = RouteSwitchPosAndMoveValidCheck(routeId, sendLevel);
|
||||
if (CI_SUCCESS == checkResult)
|
||||
{
|
||||
/* 通过检查 */
|
||||
reResult = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 失败返回 */
|
||||
reResult = checkResult;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*继续执行*/
|
||||
}
|
||||
|
||||
if (CI_SUCCESS == reResult)
|
||||
{
|
||||
/*进路内所有道岔位置正确
|
||||
不正确:RETURN_LOCK_ERR_SWITPOS
|
||||
正确:CI_SUCCESS */
|
||||
devId = 0U;
|
||||
devState = 0U;
|
||||
checkResult = RouteAllSwitchPosCheck(routeId, &devId, &devState);
|
||||
if (checkResult == CI_SUCCESS)
|
||||
{
|
||||
/* 通过检查 */
|
||||
reResult = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 失败返回 */
|
||||
reResult = RETURN_LOCK_ERR_SWITPOS;
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*如果是进路内道岔等待相邻联锁反馈道岔检查状态,先不检查道岔是否全在位置,继续等待*/
|
||||
}
|
||||
|
||||
if ((CI_SUCCESS == reResult) || (RETURN_LOCK_ERR_SWITPOS == reResult))
|
||||
{
|
||||
/*进路关联防护道岔【未引导总锁】*/
|
||||
devId = 0U;
|
||||
devState = 0U;
|
||||
checkResult = RouteRelatedProSwitchYLockCheck(routeId, &devId, &devState);
|
||||
if (CI_SUCCESS == checkResult)
|
||||
{
|
||||
/* 通过检查 */
|
||||
reResultP = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 记录故障码 */
|
||||
SetErrorData(functionId, CI_DEVICE_TYPE_SWITCH, devId, ETYPE_SWT_YLOCK_STATE, devState, sendLevel);
|
||||
/* 失败返回 */
|
||||
reResultP = CI_ERROR;
|
||||
}
|
||||
|
||||
if (CI_SUCCESS == reResultP)
|
||||
{
|
||||
/*进路关联防护道岔位置正确或位置不正确但可动作*/
|
||||
devId = 0U;
|
||||
devState = 0U;
|
||||
checkResult = RouteRelProSwiPosAndMovValCheck(routeId, sendLevel);
|
||||
if (CI_SUCCESS == checkResult)
|
||||
{
|
||||
/* 能检查到防护道岔是否可动作,说明道岔全在本控区或相邻控区已反馈道岔检查状态 */
|
||||
/* 通过检查 */
|
||||
reResultP = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 失败返回 */
|
||||
reResultP = checkResult;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
reResultP = CI_ERROR;
|
||||
}
|
||||
|
||||
if (CI_SUCCESS == reResultP)
|
||||
{
|
||||
/*进路关联防护道岔位置正确*/
|
||||
devId = 0U;
|
||||
devState = 0U;
|
||||
checkResult = RouteRelatedProSwitchPosCheck(routeId, &devId, &devState);
|
||||
if (checkResult == CI_SUCCESS)
|
||||
{
|
||||
/* 通过检查 */
|
||||
reResultP = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 失败返回 */
|
||||
reResultP = RETURN_LOCK_ERR_SWITPOS;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*如果是进路防护道岔等待相邻联锁反馈道岔检查状态,先不检查防护道岔是否全在位置,继续等待*/
|
||||
}
|
||||
|
||||
if (CI_ERROR == reResultP)
|
||||
{/*如果防护道岔的检查结果为错误,则总的检查结果为错误*/
|
||||
reResult = CI_ERROR;
|
||||
@@ -2895,7 +3216,8 @@ UINT8 LockLTrainRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLeve
|
||||
|
||||
UINT16 devId = 0u; /*设备ID*/
|
||||
UINT8 devState = 0u; /*设备状态*/
|
||||
|
||||
UINT8 chRouteCouplinkFlag = 0U;
|
||||
UINT8 chRouteLevel = 0U;
|
||||
|
||||
/* 联锁逻辑检查 */
|
||||
/* 进路内所有区段未被封锁 */
|
||||
@@ -2920,7 +3242,17 @@ UINT8 LockLTrainRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLeve
|
||||
{
|
||||
devId = 0u;
|
||||
devState = 0u;
|
||||
checkResult = RouteAllSecOccuClearCheck(routeId,&devId, &devState);
|
||||
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/
|
||||
chRouteLevel = GetRouteLevel(routeId); /*获取进路监督级别*/
|
||||
if ((ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag) && (ROUTE_LEVEL_CBTC == chRouteLevel))
|
||||
{
|
||||
checkResult = SetCouplinkRouteSecOccCheck(routeId, &devId, &devState);
|
||||
}
|
||||
else
|
||||
{
|
||||
checkResult = RouteAllSecOccuClearCheck(routeId, &devId, &devState);
|
||||
}
|
||||
|
||||
if (checkResult == CI_SUCCESS)
|
||||
{
|
||||
/* 通过检查 */
|
||||
@@ -2928,8 +3260,17 @@ UINT8 LockLTrainRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLeve
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 记录故障码 */
|
||||
SetErrorData(functionId,CI_DEVICE_TYPE_PHYSEC,devId,ETYPE_PS_MERGY_OCU_STATE,devState,sendLevel);
|
||||
if (0U == devId)
|
||||
{
|
||||
/* 记录故障码 */
|
||||
SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_COUPLINK_ROUTE_IDLE, 0U, sendLevel);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* 记录故障码 */
|
||||
SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_MERGY_OCU_STATE, devState, sendLevel);
|
||||
}
|
||||
|
||||
/* 失败返回 */
|
||||
reResult = CI_ERROR;
|
||||
}
|
||||
@@ -4115,6 +4456,7 @@ UINT8 SetLeadRouteCheck(const UINT16 routeId)
|
||||
UINT16 devId = 0u; /*设备ID*/
|
||||
UINT8 devState = 0u; /*设备状态*/
|
||||
UINT8 reResult = CI_ERROR; /*返回值*/
|
||||
UINT8 cFuncSwitch = FUNC_SWITCH_ON; /*引导进路是否检查防淹门开关*/
|
||||
|
||||
/* 联锁条件检查 */
|
||||
devId = routeId;
|
||||
@@ -4195,7 +4537,7 @@ UINT8 SetLeadRouteCheck(const UINT16 routeId)
|
||||
/*道岔联锁条件检查*/
|
||||
if (CI_SUCCESS == reResult)
|
||||
{
|
||||
reResult = SetLTrainRouteSwitchCheck(routeId, functionId, sendLevel);
|
||||
reResult = SetLeadRouteSwitchCheck(routeId, functionId, sendLevel);
|
||||
if (CI_ERROR == reResult)
|
||||
{
|
||||
/* 失败返回 */
|
||||
@@ -4214,7 +4556,18 @@ UINT8 SetLeadRouteCheck(const UINT16 routeId)
|
||||
/*防淹门联锁条件检查*/
|
||||
if (CI_SUCCESS == reResult)
|
||||
{
|
||||
reResult = BlocRouteFloodGateCheck(routeId, functionId, sendLevel);
|
||||
cFuncSwitch = GetCiFunctionSwitchConfig(FUNC_LEADROUTE_FLOODGATE_CHECK);
|
||||
|
||||
if (FUNC_SWITCH_OFF == cFuncSwitch)
|
||||
{
|
||||
/*引导进路锁闭不检查防淹门状态*/
|
||||
}
|
||||
else
|
||||
{
|
||||
/*引导进路锁闭检查防淹门状态*/
|
||||
reResult = BlocRouteFloodGateCheck(routeId, functionId, sendLevel);
|
||||
}
|
||||
|
||||
if (CI_ERROR == reResult)
|
||||
{
|
||||
/* 失败返回 */
|
||||
|
||||
@@ -266,6 +266,17 @@ UINT8 SetLTrainRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel
|
||||
*/
|
||||
UINT8 SetLTrainRouteSwitchCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel);
|
||||
|
||||
/*
|
||||
* 功能描述:办理引导进路道岔联锁条件检查
|
||||
* 参数说明:UINT16 RouteId, 进路号
|
||||
* UINT8 functionId, 调用函数编号
|
||||
* UINT8 sendLevel, 故障码发送级别
|
||||
* 返 回 值:CI_ERROR 0 失败
|
||||
* CI_SUCCESS 1 成功
|
||||
* Created By LQ 2025.09.29
|
||||
*/
|
||||
UINT8 SetLeadRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLevel);
|
||||
|
||||
/*
|
||||
* 功能描述: 办理调车进路区段联锁条件检查
|
||||
* 参数说明:
|
||||
|
||||
@@ -46,6 +46,7 @@ UINT8 MainProcess(void)
|
||||
UINT8 retVal = CI_SUCCESS;
|
||||
UINT8 localCiType = GetLocalCiType();
|
||||
UINT16* pTiocFsVersion = NULL;
|
||||
UINT8 cControlState = 0U; /*主备用状态*/
|
||||
unsigned long long cost[20] = {0U};
|
||||
|
||||
#ifdef LOGPRINT
|
||||
@@ -102,6 +103,10 @@ UINT8 MainProcess(void)
|
||||
#endif/*2OO2平台标志结束*/
|
||||
}
|
||||
|
||||
/*更新当前系统升主起始周期号*/
|
||||
UpdateSystemMainUseCyc();
|
||||
debug_infor_printf((const)"\n\nSystemMainUseCyc: %d\n", gSystemUpdateMainUseCycNum);/*系统切换主用起始周期号*/
|
||||
|
||||
#endif/*打印标志结束*/
|
||||
|
||||
cost[0] = MSCP_GetTick();
|
||||
@@ -144,6 +149,21 @@ UINT8 MainProcess(void)
|
||||
/*清除上周期故障码*/
|
||||
ClearErrorData();
|
||||
|
||||
cControlState = GetLocalCiBackUpPattern();
|
||||
|
||||
if (SYSTEM_WORK_MODE_UNAVAILABLE == cControlState)
|
||||
{
|
||||
#if 0
|
||||
/*系统不可用时,周期重置设备状态*/
|
||||
ResetDevStateProcess();
|
||||
debug_infor_printf((const)"\nMainProcess: ControlState[%d], ResetDevStateProcess\n", cControlState);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
|
||||
cost[6] = MSCP_GetTick();
|
||||
debug_infor_printf((const)"\n Parse :%dms InputData:%dms MainProcess:%dms Output:%dms PackOut:%dms SendLog:%dms \n", (cost[1] - cost[0]) / 1000, (cost[2] - cost[1]) / 1000, (cost[3] - cost[2]) / 1000, (cost[4] - cost[3]) / 1000, (cost[5] - cost[4]) / 1000, (cost[6] - cost[5]) / 1000);
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ UINT16 GetMaskId(const UINT8 SendsystemType, const UINT8 RecvsystemType, const U
|
||||
{
|
||||
UINT16 returnValue = 0u;/*·µ»ØÖµ*/
|
||||
|
||||
if (SendsystemType == CI_SYSTEM_TYPE_CI)
|
||||
if (SendsystemType == CI_SYSTEM_TYPE_RCI)
|
||||
{
|
||||
switch (RecvsystemType)
|
||||
{
|
||||
@@ -74,7 +74,7 @@ UINT16 GetMaskId(const UINT8 SendsystemType, const UINT8 RecvsystemType, const U
|
||||
}
|
||||
else if (SendsystemType == CI_SYSTEM_TYPE_ZC)
|
||||
{
|
||||
if (CI_SYSTEM_TYPE_CI == RecvsystemType)
|
||||
if (CI_SYSTEM_TYPE_RCI == RecvsystemType)
|
||||
{
|
||||
returnValue = ZcToCiMaskConfigDataStru[Index].MaskId;
|
||||
}
|
||||
@@ -345,7 +345,7 @@ UINT16 GetMaskIndex(const UINT8 SendsystemType, const UINT8 RecvsystemType, cons
|
||||
|
||||
|
||||
|
||||
if (SendsystemType == CI_SYSTEM_TYPE_CI)
|
||||
if (SendsystemType == CI_SYSTEM_TYPE_RCI)
|
||||
{
|
||||
switch (RecvsystemType)
|
||||
{
|
||||
@@ -390,7 +390,7 @@ UINT16 GetMaskIndex(const UINT8 SendsystemType, const UINT8 RecvsystemType, cons
|
||||
}
|
||||
else if (SendsystemType == CI_SYSTEM_TYPE_ZC)
|
||||
{
|
||||
if (CI_SYSTEM_TYPE_CI == RecvsystemType)
|
||||
if (CI_SYSTEM_TYPE_RCI == RecvsystemType)
|
||||
{
|
||||
for (ii = 1u; ii <= ZcToCiMaskCurSum; ii++)
|
||||
{
|
||||
|
||||
@@ -49,6 +49,8 @@
|
||||
#define MASK_TYPE_SWITCH_BYPASS ((UINT8)0x0D) /*定义道岔旁路码位*/
|
||||
#define MASK_TYPE_SWITCH_OPEN_CAP ((UINT8)0x0E) /*定义道岔所在板卡开盖状态*/
|
||||
#define MASK_TYPE_SWITCH_SUDDEN_JICHA ((UINT8)0x0F) /*定义道岔静态红闪码位*/
|
||||
#define MASK_TYPE_SWITCH_JICHA ((UINT8)0x10) /*定义道岔挤岔码位:28.0.0.14数据结构使用*/
|
||||
#define MASK_TYPE_SWITCH_QINGXIAN ((UINT8)0x11) /*定义道岔侵限状态码位*/
|
||||
|
||||
/*单轨_道岔码位*/
|
||||
/* zt 删除单轨相关代码 2022-02-15 */
|
||||
@@ -62,11 +64,12 @@
|
||||
#define MASK_TYPE_SIGNAL_REDCLOSE ((UINT8)0x15) /*定义信号机红灭码位*/
|
||||
#define MASK_TYPE_SIGNAL_GREENCLOSE ((UINT8)0x16) /*定义信号机绿灭码位*/
|
||||
#define MASK_TYPE_SIGNAL_YELLOWCLOSE ((UINT8)0x17) /*定义信号机黄灭码位*/
|
||||
#define MASK_TYPE_SIGNAL_REDBREAK ((UINT8)0x18) /*定义信号机红断码位*/
|
||||
#define MASK_TYPE_SIGNAL_REDBREAK ((UINT8)0x18) /*定义信号机红断码位--暂无使用*/
|
||||
#define MASK_TYPE_SIGNAL_GREENBREAK ((UINT8)0x19) /*定义信号机绿断码位*/
|
||||
#define MASK_TYPE_SIGNAL_YELLOWBREAK ((UINT8)0x1a) /*定义信号机黄断码位*/
|
||||
#define MASK_TYPE_SIGNAL_WHITEBREAK ((UINT8)0x1b) /*定义信号机白断码位*/
|
||||
#define MASK_TYPE_SIGNAL_BREAK ((UINT8)0x1c) /*定义信号机断丝码位*/
|
||||
#define MASK_TYPE_SIGNAL_BLUEBREAK ((UINT8)0x25) /*定义信号机蓝断码位*/
|
||||
#define MASK_TYPE_SIGNAL_BREAK ((UINT8)0x1c) /*定义信号机断丝码位 (对全电子联锁=红灯断丝)*/
|
||||
#define MASK_TYPE_SIGNAL_FENGSUO ((UINT8)0x1d) /*定义信号机封锁码位*/
|
||||
|
||||
#define MASK_TYPE_SIGNAL_OPENSTATE ((UINT8)0x1e) /*定义信号机开放状态码位*/
|
||||
@@ -90,6 +93,9 @@
|
||||
#define MASK_TYPE_SIGNAL_DET_ERR ((UINT8)0x5c) /*信号机扣车按钮故障状态码位*/
|
||||
#define MASK_TYPE_SIGNAL_AUTO_DERAIN ((UINT8)0x5e) /*信号机自动扣车码位*/
|
||||
|
||||
#define MASK_TYPE_SIGNAL_DET_CUT_VALID ((UINT8)0xA6) /*信号机扣车旁路按钮有效状态码位*/
|
||||
#define MASK_TYPE_SIGNAL_DET_CUT_ERR ((UINT8)0xA7) /*信号机扣车旁路按钮故障状态码位*/
|
||||
|
||||
#define MASK_ZC_CI_SIG_ENGINEERV_NEAR ((UINT8)0x97) /*定义信号机工程车接近码位*/
|
||||
#define MASK_CI_ZC_SIG_ENGINCROSS_STE ((UINT8)0x98) /*定义信号机工程车关灯码位*/
|
||||
|
||||
@@ -112,7 +118,12 @@
|
||||
#define MASK_TYPE_PHYSECTION_HEAD_XTD ((UINT8)0x31) /*定义物理区段运行方向下行状态码位*/
|
||||
#define MASK_TYPE_PHYSECTION_HEAD_STD ((UINT8)0x32) /*定义物理区段运行方向上行状态码位*/
|
||||
#define MASK_TYPE_LIECHE_STOPSTATE ((UINT8)0x3a) /*定义列车停稳信息状态码位*/
|
||||
|
||||
#define MASK_TYPE_PHYSEC_CENTERDETAIN_UP ((UINT8)0x3d) /*定义物理区段CI-ATS中心上行扣车状态状态码位 (兼容28.0.0.14使用)*/
|
||||
#define MASK_TYPE_PHYSEC_CENTERDETAIN_DOWN ((UINT8)0x3e) /*定义物理区段CI-ATS中心下行扣车状态状态码位 (兼容28.0.0.14使用)*/
|
||||
#define MASK_TYPE_PHYSEC_STATIONDETAIN_UP ((UINT8)0x3f) /*定义物理区段CI-ATS车站上行扣车状态状态码位 (兼容28.0.0.14使用)*/
|
||||
#define MASK_TYPE_PHYSEC_STATIONDETAIN_DOWN ((UINT8)0x40) /*定义物理区段CI-ATS车站下行扣车状态状态码位 (兼容28.0.0.14使用)*/
|
||||
#define MASK_TYPE_AXISSECTION_DETAIN_UP ((UINT8)0x41) /*定义区段CI-ZC上行扣车状态状态码位 (兼容28.0.0.14使用)*/
|
||||
#define MASK_TYPE_AXISSECTION_DETAIN_DOWN ((UINT8)0x42) /*定义区段CI-ZC下行扣车状态状态码位 (兼容28.0.0.14使用)*/
|
||||
|
||||
/*逻辑区段相关码位*/
|
||||
#define MASK_TYPE_LOGICSECTION_UTOCCUPY ((UINT8)0x33) /*定义逻辑区段非通信车占用码位*/
|
||||
@@ -130,7 +141,7 @@
|
||||
#define MASK_TYPE_LOGICSECTION_JUMPLOCK ((UINT8)0x9A) /*定义逻辑区段跳跃锁闭码位*/
|
||||
#define MASK_TYPE_LOGICSECTION_ARB ((UINT8)0x9B) /*定义逻辑区段ARB状态码位*/
|
||||
#define MASK_TYPE_LOGICSECTION_SPKS_FLOCK ((UINT8)0x9C) /*定义逻辑区段SPKS封锁状态码位*/
|
||||
|
||||
#define MASK_TYPE_LOGICSECTION_EMERG_XIANSU ((UINT8)0x9D) /*定义逻辑区段紧急临时限速码位*/
|
||||
|
||||
|
||||
/*保护区段相关码位*/
|
||||
@@ -156,6 +167,9 @@
|
||||
#define MASK_TYPE_ROUTE_DC_QINGQIU ((UINT8)0x51) /*定义进路调车请求状态码位(CI-ATS)*/
|
||||
#define MASK_TYPE_ROUTE_DC_AGREE ((UINT8)0x52) /*定义进路调车同意状态码位(CI-ATS)*/
|
||||
#define MASK_TYPE_ROUTE_AUTO_TRIGGER ((UINT8)0x53) /*定义进路自动触发标码位(CI-ATS)*/
|
||||
#define MASK_TYPE_ROUTE_DC_AGREE_ERR ((UINT8)0x54) /*定义进路调车同意按钮故障状态码位(CI-ATS)*/
|
||||
#define MASK_TYPE_ROUTE_COUPLIN_SUCCESS ((UINT8)0xA8) /*定义进路联挂成功码位(ZC-CI)*/
|
||||
#define MASK_TYPE_ROUTE_COUPLIN_ERROR ((UINT8)0xA9) /*定义进路联挂失败码位(ZC-CI)*/
|
||||
|
||||
|
||||
/*站台相关码位*/
|
||||
@@ -169,6 +183,10 @@
|
||||
#define MASK_TYPE_ESP_FLASH_STATE ((UINT8)0x9b) /*定义ESS闪灯灯状态码位*/
|
||||
#define MASK_TYPE_CANCEL_ESP_FAULT ((UINT8)0x9c) /*定义取消紧急关闭按钮故障码位*/
|
||||
#define MASK_TYPE_ESP_FAULT ((UINT8)0x9d) /*定义紧急关闭按钮故障码位*/
|
||||
#define MASK_TYPE_CUT_ESP_FAULT ((UINT8)0xA3) /*定义紧急关闭旁路按钮故障码位*/
|
||||
#define MASK_TYPE_CUT_ESP_STATE ((UINT8)0xA4) /*定义紧急关闭旁路按钮激活状态码位*/
|
||||
#define MASK_TYPE_ONEPLAT_ESP_STATE ((UINT8)0xAB) /*定义紧急关闭按钮同站紧急按钮激活状态码位*/
|
||||
#define MASK_TYPE_ONEPLAT_CUT_ESP_STATE ((UINT8)0xAC) /*定义紧急关闭按钮同站旁路按钮激活状态码位*/
|
||||
|
||||
/*站台安全门相关码位*/
|
||||
#define MASK_TYPE_PSD_STATE ((UINT8)0x60) /*定义站台安全门状态码位-ZC,LEU用*/
|
||||
@@ -186,7 +204,11 @@
|
||||
#define MASK_TYPE_PSD_PDB_FLASH_STATE ((UINT8)0xA0) /*定义清客确认箱PDB按钮指示灯闪灯状态码位*/
|
||||
#define MASK_TYPE_PSD_VIDEO_QK_LU ((UINT8)0xA1) /*定义清客按钮箱视频清客表示灯(绿)状态码位*/
|
||||
#define MASK_TYPE_PSD_VIDEO_QK_HONG ((UINT8)0xA2) /*定义清客按钮箱视频清客表示灯(红)状态码位*/
|
||||
|
||||
#define MASK_TYPE_PSD_EXCEPT_OPEN ((UINT8)0xA5) /*定义站台安全门异常打开码位*/
|
||||
#define MASK_TYPE_PSD_JXTCPANGLU_FAULT ((UINT8)0xAA) /*定义间隙探测旁路按钮故障码位*/
|
||||
#define MASK_TYPE_PSD_IBP_STATE ((UINT8)0xAD) /*定义IBP盘按钮状态码位*/
|
||||
#define MASK_TYPE_PSD_IBP_FAULT ((UINT8)0xAE) /*定义IBP盘按钮故障码位*/
|
||||
#define MASK_TYPE_PSD_JXTC_STATE ((UINT8)0xAF) /*定义间隙探测状态码位*/
|
||||
/*车库门相关码位*/
|
||||
#define MASK_TYPE_GARAGEDOOR_OPEN_STATE ((UINT8)0x62) /*定义车库门开门状态码位(CI->ATS)*/
|
||||
#define MASK_TYPE_GARAGEDOOR_CLOSE_STATE ((UINT8)0x63) /*定义车库门关门状态码位(CI->ATS)*/
|
||||
@@ -218,6 +240,10 @@
|
||||
/*洗车机相关码位*/
|
||||
#define MASK_TYPE_WASHMACHINE_READYSTATE ((UINT8)0x74) /*定义洗车机就绪状态码位*/
|
||||
#define MASK_TYPE_WASHMACHINE_WORKMODE ((UINT8)0x9E) /*定义洗车机工作模式码位*/
|
||||
#define MASK_TYPE_WASHMACHINE_ZNTBUTTN ((UINT8)0x9F) /*定义CI-ATS洗车机降级模式洗车线洗车同意按钮粘连码位,0有粘连,1为无粘连*/
|
||||
#define MASK_TYPE_DCCWASHACHINE_ZNTBUTTN ((UINT8)0xb0) /*定义CI-ATS洗车机降级模式DCC洗车同意按钮粘连码位,0有粘连,1为无粘连*/
|
||||
#define MASK_TYPE_PASSWASHMACHINE_ZNTBUTTN ((UINT8)0xb1) /*定义CI-ATS洗车机降级模式洗车线洗车反向通过同意按钮粘连码位,0有粘连,1为无粘连*/
|
||||
#define MASK_TYPE_DCCPASSWASHMACHINE_ZNTBUTTN ((UINT8)0xb2) /*定义CI-ATS洗车机降级模式DCC洗车反向通过同意按钮粘连码位,0有粘连,1为无粘连*/
|
||||
|
||||
/*防淹门相关码位*/
|
||||
|
||||
|
||||
@@ -15,7 +15,8 @@
|
||||
|
||||
|
||||
|
||||
NonAutoReturnDataStruct NonReturnDataStru[NON_AUTO_RETURN_SUM_MAX]; /*无人自动折返动态结构体*/
|
||||
NonAutoReturnDataStruct NonReturnDataStru[NON_AUTO_RETURN_SUM_MAX]; /*无人自动折返动态结构体*/
|
||||
NonAutoReturnDataStructCC NonReturnDataStruCC[NON_AUTO_RETURN_SUM_MAX]; /*无人自动折返动态结构体-车车*/
|
||||
|
||||
/*
|
||||
* 功能描述: 获取无人折返数据结构体指针
|
||||
@@ -28,6 +29,16 @@ NonAutoReturnDataStruct* GetNonReturnData(void)
|
||||
return NonReturnDataStru;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取无人折返数据结构体指针-车车
|
||||
* 参数说明:
|
||||
* 返回值 :
|
||||
NonAutoReturnDataStruct *
|
||||
*/
|
||||
NonAutoReturnDataStruct* GetNonReturnDataCC(void)
|
||||
{
|
||||
return NonReturnDataStruCC;
|
||||
}
|
||||
/*
|
||||
* 功能描述: 获取指定ID无人自动折返按钮命令列车ID
|
||||
* 参数说明: const UINT16 autoReturnId, 自动折返ID
|
||||
@@ -41,7 +52,7 @@ UINT16 GetNonRtnCmdSetTrainId(const UINT16 nonReturnId)
|
||||
bufIndex = GetNonReturnBufIndex(nonReturnId);
|
||||
if (bufIndex < NON_AUTO_RETURN_SUM_MAX)
|
||||
{
|
||||
trainId = NonReturnDataStru[bufIndex].cmdSetTrainId;
|
||||
trainId = NonReturnDataStruCC[bufIndex].cmdSetTrainId;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -64,7 +75,7 @@ void SetNonRtnCmdSetTrainId(const UINT16 nonReturnId,const UINT16 trainId)
|
||||
if (bufIndex < NON_AUTO_RETURN_SUM_MAX)
|
||||
{
|
||||
|
||||
NonReturnDataStru[bufIndex].cmdSetTrainId = trainId;
|
||||
NonReturnDataStruCC[bufIndex].cmdSetTrainId = trainId;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -35,15 +35,21 @@ typedef struct S_RtnRelayAdhesionStruct
|
||||
/*无人自动自动折返数据结构体*/
|
||||
typedef struct S_NonAutoReturnDataStruct
|
||||
{
|
||||
UINT16 cmdSetTrainId; /*命令列车ID (动态字段)*/
|
||||
UINT8 IndicatorDevID; /*指示灯设备ID*/
|
||||
UINT8 VobcToCIAutoRtnIndicFlashState; /*车载给联锁的无人折返指示灯闪灯状态*/
|
||||
UINT8 VobcToCIAutoRtnIndicSteadyState; /*车载给联锁的无人折返指示灯稳灯状态*/
|
||||
RtnRelayAdhesionStruct RtnRelayAdhesionState; /*无人折返继电器粘连状态*/
|
||||
} NonAutoReturnDataStruct;
|
||||
|
||||
extern NonAutoReturnDataStruct NonReturnDataStru[NON_AUTO_RETURN_SUM_MAX]; /*无人自动折返动态结构体*/
|
||||
/*无人自动自动折返数据结构体-车车*/
|
||||
typedef struct S_NonAutoReturnDataStructCC
|
||||
{
|
||||
UINT8 IndicatorDevID; /*指示灯设备ID*/
|
||||
UINT16 cmdSetTrainId; /*命令列车ID (动态字段)*/
|
||||
} NonAutoReturnDataStructCC;
|
||||
|
||||
extern NonAutoReturnDataStruct NonReturnDataStru[NON_AUTO_RETURN_SUM_MAX]; /*无人自动折返动态结构体*/
|
||||
extern NonAutoReturnDataStructCC NonReturnDataStruCC[NON_AUTO_RETURN_SUM_MAX]; /*无人自动折返动态结构体-车车*/
|
||||
/*
|
||||
* 功能描述: 获取指定ID无人自动折返按钮命令列车ID
|
||||
* 参数说明: const UINT16 autoReturnId, 自动折返ID
|
||||
@@ -51,6 +57,13 @@ extern NonAutoReturnDataStruct NonReturnDataStru[NON_AUTO_RETURN_SUM_MAX]; /*
|
||||
* >0: 无人自动折返按钮指示灯继电器ID
|
||||
*/
|
||||
UINT16 GetNonRtnCmdSetTrainId(const UINT16 nonReturnId);
|
||||
/*
|
||||
* 功能描述: 获取无人折返数据结构体指针-车车
|
||||
* 参数说明:
|
||||
* 返回值 :
|
||||
NonAutoReturnDataStruct *
|
||||
*/
|
||||
NonAutoReturnDataStruct* GetNonReturnDataCC(void);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取无人折返数据结构体指针
|
||||
|
||||
@@ -872,4 +872,123 @@ UINT8 GetOverlapProSwitchPos(const UINT16 wOverlapId, const UINT16 wProSwitchId)
|
||||
}
|
||||
|
||||
return cRetVal;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID保护区段本端照查继电器ID
|
||||
* 参数说明: const UINT16 overlapId, 保护区段ID
|
||||
* 返回值 : 本端照查继电器ID
|
||||
* by cgh 20250617
|
||||
*/
|
||||
UINT16 GetOverlapThisZhaoChaRelayId(const UINT16 overlapId)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
UINT16 reVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetOverlapConfigBufIndex(overlapId); /*获取数组下标*/
|
||||
|
||||
if (bufIndex < OVERLAP_SUM_MAX)
|
||||
{
|
||||
reVal = OverlapConfigDataStru[bufIndex].wOverlapThisZhaoChaRelayId;
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
return reVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID保护区段对端照查继电器ID
|
||||
* 参数说明: const UINT16 overlapId, 保护区段ID
|
||||
* 返回值 : 对端照查继电器ID
|
||||
* by cgh 20250617
|
||||
*/
|
||||
UINT16 GetOverlapThatZhaoChaRelayId(const UINT16 overlapId)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
UINT16 reVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetOverlapConfigBufIndex(overlapId); /*获取数组下标*/
|
||||
|
||||
if (bufIndex < OVERLAP_SUM_MAX)
|
||||
{
|
||||
reVal = OverlapConfigDataStru[bufIndex].wOverlapThatZhaoChaRelayId;
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
return reVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定保护区段侧防条件
|
||||
* 参数说明: const UINT16 wRouteId, 进路ID
|
||||
* 返回值 : 返回侧防条件数据
|
||||
*/
|
||||
SideProtecGroupStru GetOverlapSideProtecGroupData(const UINT16 wOverlapId)
|
||||
{
|
||||
SideProtecGroupStru cRetVal = { 0u };
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
|
||||
bufIndex = GetOverlapConfigBufIndex(wOverlapId); /*获取数组下标*/
|
||||
|
||||
if (OVERLAP_SUM_MAX > bufIndex)
|
||||
{
|
||||
cRetVal = OverlapConfigDataStru[bufIndex].SideProtecGroupData;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*无处理*/
|
||||
}
|
||||
|
||||
return cRetVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取保护区段指定道岔的防护锁闭位置
|
||||
* 参数说明: const UINT16 wOverlapId, 保护区段ID
|
||||
* const UINT16 wSwitchId 道岔ID
|
||||
*
|
||||
* 返回值 :1,2为道岔位置,0u 非法值
|
||||
*
|
||||
*/
|
||||
UINT8 GetOverlapThisPortecSwitchPos(const UINT16 wOverlapId, const UINT16 wSwitchId)
|
||||
{
|
||||
UINT8 chRetVal = 0U;
|
||||
UINT16 bufIndex = 0U;
|
||||
UINT8 i = 0u;
|
||||
|
||||
bufIndex = GetOverlapConfigBufIndex(wOverlapId); /*获取保护区段数组下标*/
|
||||
|
||||
if (OVERLAP_SUM_MAX > bufIndex)
|
||||
{
|
||||
for (i = 0u; i < OverlapConfigDataStru[bufIndex].ProtectSwitchSum; i++)
|
||||
{
|
||||
if (OverlapConfigDataStru[bufIndex].ProtectSwitchStru[i].ProtectSwitchId == wSwitchId)
|
||||
{
|
||||
chRetVal = OverlapConfigDataStru[bufIndex].ProtectSwitchStru[i].ProtectPosition;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
|
||||
if ((SWITCH_POSITION_DINGWEI == chRetVal) || (SWITCH_POSITION_FANWEI == chRetVal))
|
||||
{
|
||||
/*校验通过*/
|
||||
}
|
||||
else
|
||||
{
|
||||
chRetVal = 0u;
|
||||
}
|
||||
|
||||
return chRetVal;
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
#include "CommonTypes.h"
|
||||
#include "../System/CiSystemDefine.h"
|
||||
#include "../System/SystemParameterManage.h"
|
||||
|
||||
#include "RouteConfigDataManage.h"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -72,7 +72,9 @@ typedef struct S_OverlapConfigDataStruct
|
||||
UINT16 OverlapRouteSum; /*保护区段进路总数*/
|
||||
UINT16 OverlapRouteIdBuf[OVERLAP_ROUTE_SUM_MAX]; /*保护区段进路数组*/
|
||||
UINT16 AxisSecFarId; /*保护区段最远端计轴区段ID*/
|
||||
|
||||
UINT16 wOverlapThisZhaoChaRelayId; /*保护区段本端照查继电器ID*/
|
||||
UINT16 wOverlapThatZhaoChaRelayId; /*保护区段对端照查继电器ID*/
|
||||
SideProtecGroupStru SideProtecGroupData; /*保护区段侧防条件*/
|
||||
} OverlapConfigDataStruct;
|
||||
|
||||
extern OverlapConfigDataStruct OverlapConfigDataStru[OVERLAP_SUM_MAX]; /*定义OVERLAP数据配置结构体,cgh-合并CID-2539-1:此处声明不进行初始化,统一放到InitAllStaticDataStr函数中进行初始化,为解决生成内核过大得问题*/
|
||||
@@ -373,6 +375,36 @@ UINT8 CheckOtherCiOlpHaveLocalCiPSw(const UINT16 wOverlapId);
|
||||
*/
|
||||
UINT8 GetOverlapProSwitchPos(const UINT16 wOverlapId, const UINT16 wProSwitchId);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID保护区段本端照查继电器ID
|
||||
* 参数说明: const UINT16 overlapId, 保护区段ID
|
||||
* 返回值 : 本端照查继电器ID
|
||||
* by cgh 20250617
|
||||
*/
|
||||
UINT16 GetOverlapThisZhaoChaRelayId(const UINT16 overlapId);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID保护区段对端照查继电器ID
|
||||
* 参数说明: const UINT16 overlapId, 保护区段ID
|
||||
* 返回值 : 对端照查继电器ID
|
||||
* by cgh 20250617
|
||||
*/
|
||||
UINT16 GetOverlapThatZhaoChaRelayId(const UINT16 overlapId);
|
||||
/*
|
||||
* 功能描述: 获取指定保护区段侧防条件
|
||||
* 参数说明: const UINT16 wRouteId, 进路ID
|
||||
* 返回值 : 返回侧防条件数据
|
||||
*/
|
||||
SideProtecGroupStru GetOverlapSideProtecGroupData(const UINT16 wOverlapId);
|
||||
/*
|
||||
* 功能描述: 获取保护区段指定道岔的防护锁闭位置
|
||||
* 参数说明: const UINT16 wOverlapId, 保护区段ID
|
||||
* const UINT16 wSwitchId 道岔ID
|
||||
*
|
||||
* 返回值 :1,2为道岔位置,0u 非法值
|
||||
*
|
||||
*/
|
||||
UINT8 GetOverlapThisPortecSwitchPos(const UINT16 wOverlapId, const UINT16 wSwitchId);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
|
||||
|
||||
|
||||
OverlapDataStruct OverlapDataStru[OVERLAP_SUM_MAX]; /*定义OVERLAP数据结构体*/
|
||||
|
||||
OverlapDataStruct OverlapDataStru[OVERLAP_SUM_MAX]; /*定义OVERLAP数据结构体*/
|
||||
OverlapDataStructCC OverlapDataStruCC[OVERLAP_SUM_MAX]; /*定义OVERLAP数据结构体-车车*/
|
||||
|
||||
|
||||
/*
|
||||
@@ -28,7 +28,16 @@ OverlapDataStruct *GetOverlapData(void)
|
||||
{
|
||||
return OverlapDataStru;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID保护区段数据-车车
|
||||
* 参数说明:
|
||||
* 返回值 :
|
||||
OverlapDataStructCC *
|
||||
*/
|
||||
OverlapDataStructCC* GetOverlapDataCC(void)
|
||||
{
|
||||
return OverlapDataStruCC;
|
||||
}
|
||||
/*
|
||||
* 功能描述: 获取指定ID保护区段所属进路ID
|
||||
* 参数说明: const UINT16 overlapId, 保护区段ID
|
||||
@@ -51,7 +60,7 @@ UINT16 GetOverlapBelongRouteId(const UINT16 overlapId)
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述: 设置指定ID保护区段组解锁起始周期号
|
||||
* 功能描述: 设置指定ID保护区段所属进路
|
||||
* 参数说明: const UINT16 overlapId, 保护区段ID
|
||||
* const UINT16 belongRouteId, 所属进路号
|
||||
* 返回值 : 无
|
||||
@@ -82,6 +91,8 @@ void SetOverlapRelateProtSwLockSta(const UINT16 overlapId, const UINT8 lockComma
|
||||
UINT16 protectSwitchId = 0u; /*防护道岔ID*/
|
||||
UINT8 overlapProtectSwitchSum = 0u; /*防护道岔数目*/
|
||||
OverlapProtectSwitchStruct* overlapProtectSwitchStru = NULL; /*防护道岔数据*/
|
||||
UINT8 cSwitchCurPos = 0U;
|
||||
UINT8 cFuncRet = CI_ERROR;
|
||||
|
||||
overlapProtectSwitchSum = GetOverlapRelatedProtSwitSum(overlapId); /*获取防护道岔数目*/
|
||||
overlapProtectSwitchStru = GetOverlapRelatedProtSwitStru(overlapId); /*获取防护道岔数据*/
|
||||
@@ -107,17 +118,27 @@ void SetOverlapRelateProtSwLockSta(const UINT16 overlapId, const UINT8 lockComma
|
||||
for (ii= 0u; ii < overlapProtectSwitchSum; ii++)
|
||||
{
|
||||
protectSwitchId = overlapProtectSwitchStru[ii].ProtectSwitchId;
|
||||
SetSwitchLockStatus(SWITCH_PLOCKTYPE_OVERLAP,overlapId,protectSwitchId, lockCommand); /*设置道岔防护锁闭状态*/
|
||||
/*RC 13.0.0 修:不检查防护道岔中双动道岔另一端*/
|
||||
cSwitchCurPos = GetSwitchCurPosition(protectSwitchId);
|
||||
cFuncRet = checkSwtLastValDrvPosStayorNot(protectSwitchId, overlapProtectSwitchStru[ii].ProtectPosition);
|
||||
if ((SWITCH_LOCK_PROTECT_CANCEL == lockCommand)
|
||||
|| ((SWITCH_LOCK_PROTECT_SET == lockCommand) && (cSwitchCurPos == overlapProtectSwitchStru[ii].ProtectPosition) && (CI_SUCCESS == cFuncRet)))
|
||||
{
|
||||
SetSwitchLockStatus(SWITCH_PLOCKTYPE_OVERLAP, overlapId, protectSwitchId, lockCommand); /*设置道岔防护锁闭状态*/
|
||||
/*RC 13.0.0 修:不检查防护道岔中双动道岔另一端*/
|
||||
#if 0
|
||||
if (SWITCH_TYPE_DOUBLE == GetSwitchType(protectSwitchId))
|
||||
{ /*双动道岔*/
|
||||
SetSwitchLockStatus(SWITCH_PLOCKTYPE_OVERLAP,overlapId,GetDSwitchOtherId(protectSwitchId), lockCommand); /*设置道岔防护锁 闭状态*/
|
||||
if (SWITCH_TYPE_DOUBLE == GetSwitchType(protectSwitchId))
|
||||
{ /*双动道岔*/
|
||||
SetSwitchLockStatus(SWITCH_PLOCKTYPE_OVERLAP, overlapId, GetDSwitchOtherId(protectSwitchId), lockCommand); /*设置道岔防护锁 闭状态*/
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
/*防护道岔不在防护位置或防护道岔存在反向驱动时,不设置防护锁闭*/
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -265,7 +286,7 @@ void SetOverlapUnlockApplyFlag(const UINT16 overlapId, const UINT8 overlapUnlock
|
||||
* 功能描述:获取指定ID保护区段申请解锁的列车ID
|
||||
* 参数说明:const UINT16 overlapId, 保护区段ID
|
||||
* 返回值 :0 获取失败
|
||||
* 其它 列车ID(不带0x14)
|
||||
* 其它 列车ID(不带0x10)
|
||||
*/
|
||||
UINT16 GetOverlapUnlockApplyTrainId(const UINT16 overlapId)
|
||||
{
|
||||
@@ -276,7 +297,7 @@ UINT16 GetOverlapUnlockApplyTrainId(const UINT16 overlapId)
|
||||
|
||||
if (bufIndex < OVERLAP_SUM_MAX)
|
||||
{
|
||||
reVal = OverlapDataStru[bufIndex].wOverlapUnlockApplyTrainId;
|
||||
reVal = OverlapDataStruCC[bufIndex].wOverlapUnlockApplyTrainId;
|
||||
}
|
||||
return reVal;
|
||||
}
|
||||
@@ -285,7 +306,7 @@ UINT16 GetOverlapUnlockApplyTrainId(const UINT16 overlapId)
|
||||
/*
|
||||
* 功能描述: 设置指定ID保护区段申请解锁的列车ID
|
||||
* 参数说明: const UINT16 overlapId, 保护区段ID
|
||||
* const UINT16 wTrainId,列车ID(不带0x14)
|
||||
* const UINT16 wTrainId,列车ID(不带0x10)
|
||||
* 返回值 : 无
|
||||
*
|
||||
*/
|
||||
@@ -297,7 +318,7 @@ void SetOverlapUnlockApplyTrainId(const UINT16 overlapId, const UINT16 wTrainId)
|
||||
|
||||
if (bufIndex < OVERLAP_SUM_MAX)
|
||||
{
|
||||
OverlapDataStru[bufIndex].wOverlapUnlockApplyTrainId = wTrainId;
|
||||
OverlapDataStruCC[bufIndex].wOverlapUnlockApplyTrainId = wTrainId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -622,7 +643,7 @@ void SetReqIvocUnlockStartCycNum(const UINT16 overlapId, const UINT32 reqIvocUnl
|
||||
|
||||
if (bufIndex < OVERLAP_SUM_MAX)
|
||||
{
|
||||
OverlapDataStru[bufIndex].dwReqIvocUnLockStartCycNum = reqIvocUnlockStartCycNum; /*人工解锁起始周期号*/
|
||||
OverlapDataStruCC[bufIndex].dwReqIvocUnLockStartCycNum = reqIvocUnlockStartCycNum; /*人工解锁起始周期号*/
|
||||
}
|
||||
}
|
||||
|
||||
@@ -641,7 +662,7 @@ UINT32 GetReqIvocUnlockStartCycNum(const UINT16 overlapId)
|
||||
|
||||
if (bufIndex < OVERLAP_SUM_MAX)
|
||||
{
|
||||
reVal = OverlapDataStru[bufIndex].dwReqIvocUnLockStartCycNum; /*人工解锁起始周期号*/
|
||||
reVal = OverlapDataStruCC[bufIndex].dwReqIvocUnLockStartCycNum; /*人工解锁起始周期号*/
|
||||
}
|
||||
return reVal;
|
||||
}
|
||||
@@ -661,7 +682,7 @@ void SetOverlapIvocAllowUnlockFlag(const UINT16 overlapId, const UINT8 overlapIv
|
||||
|
||||
if ((bufIndex < OVERLAP_SUM_MAX) && ((IVOC_ALLOW_UNLOCK_OVERLAP_YES == overlapIvocUnlockFlag) || (IVOC_ALLOW_UNLOCK_OVERLAP_NO == overlapIvocUnlockFlag)))
|
||||
{
|
||||
OverlapDataStru[bufIndex].cIvocAllowUnlockFlag = overlapIvocUnlockFlag;
|
||||
OverlapDataStruCC[bufIndex].cIvocAllowUnlockFlag = overlapIvocUnlockFlag;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -685,7 +706,7 @@ UINT8 GetOverlapIvocAllowUnlockFlag(const UINT16 overlapId)
|
||||
|
||||
if (bufIndex < OVERLAP_SUM_MAX)
|
||||
{
|
||||
reVal = OverlapDataStru[bufIndex].cIvocAllowUnlockFlag;
|
||||
reVal = OverlapDataStruCC[bufIndex].cIvocAllowUnlockFlag;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -821,13 +842,13 @@ UINT8 GetOverlapFromSetRouteCmdFlag(const UINT16 overlapId)
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 清保护区段人工或ATS锁闭命令标志
|
||||
* 功能描述: 清除保护区段个别标志
|
||||
* 参数说明: const UINT16 routeId, 进路ID
|
||||
* const UINT16 overlapId, 保护区段ID
|
||||
* 返回值:无
|
||||
* by cgh 20240920
|
||||
* by cgh 20260106
|
||||
*/
|
||||
void CleanOverlapAtsOrlaborLockFlag(const UINT16 routeId, const UINT16 overlapId)
|
||||
void CleanOverlapSpecificFlag(const UINT16 routeId, const UINT16 overlapId)
|
||||
{
|
||||
UINT16 overlapRouteSum = 0U; /*保护区段进路数量*/
|
||||
UINT16* pOverlapRouteBuf = NULL; /*保护区段进路数据*/
|
||||
@@ -835,6 +856,8 @@ void CleanOverlapAtsOrlaborLockFlag(const UINT16 routeId, const UINT16 overlapId
|
||||
UINT16 routeLastPhyId = 0U; /*进路最后一个物理区段ID*/
|
||||
UINT8 routeLastPhyState = 0U; /*进路最后一个物理区段融合占用状态*/
|
||||
UINT16 ii = 0U; /*游标*/
|
||||
UINT32 dwUnlockStartCycNum = 0U; /*保护区段解锁起始周期号*/
|
||||
UINT32 dwAtsLastTimeLockCyc = 0U; /*最近一次ATS锁闭保护区段周期号*/
|
||||
|
||||
overlapRouteSum = GetOverlapRouteIdSum(overlapId); /*获取保护区段进路数量*/
|
||||
pOverlapRouteBuf = GetOverlapRouteIdBuf(overlapId); /*获取保护区段进路数据*/
|
||||
@@ -855,6 +878,29 @@ void CleanOverlapAtsOrlaborLockFlag(const UINT16 routeId, const UINT16 overlapId
|
||||
{
|
||||
SetOverlapAtsOrlaborLockCmdFlag(overlapId, LOCK_OVERLAP_CMD_NO);
|
||||
}
|
||||
|
||||
dwUnlockStartCycNum = GetOverlapUnlockStartCycNum(overlapId);
|
||||
dwAtsLastTimeLockCyc = GetOverlapAtsLastTimeLockCyc(overlapId);
|
||||
|
||||
if (0U == dwUnlockStartCycNum)
|
||||
{
|
||||
/*说明是人工解锁,人工解锁就不保留之前的命令了*/
|
||||
SetRouteAtsExpLkOverlapId(routeId, 0U);
|
||||
SetOverlapFromSetRouteCmdFlag(overlapId, OVERLAP_ROUTE_FLAG_NO);/*清除保护区段建立命令由进路命令连带下发标志*/
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((dwAtsLastTimeLockCyc < dwUnlockStartCycNum) && (0U < dwAtsLastTimeLockCyc))
|
||||
{
|
||||
/*ATS最后一次下发锁闭保护区段命令时保护区段未自动解锁*/
|
||||
SetRouteAtsExpLkOverlapId(routeId, 0U);
|
||||
SetOverlapFromSetRouteCmdFlag(overlapId, OVERLAP_ROUTE_FLAG_NO);/*清除保护区段建立命令由进路命令连带下发标志*/
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -975,4 +1021,263 @@ UINT8 GetOverlapProSwtCheckStartFlag(const UINT16 wOverlapId)
|
||||
}
|
||||
|
||||
return cRetVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID保护区段之前人工解锁状态
|
||||
* 参数说明: const UINT16 overlapId, 保护区段ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0:之前人工解锁状态
|
||||
* BY CGH 20250928
|
||||
*/
|
||||
UINT8 GetOverlapPreLoaborUnlockState(const UINT16 overlapId)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
UINT8 reVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetOverlapConfigBufIndex(overlapId); /*获取数组下标*/
|
||||
|
||||
if (bufIndex < OVERLAP_SUM_MAX)
|
||||
{
|
||||
reVal = OverlapDataStru[bufIndex].chPreLaborUnlockState;
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
return reVal;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述: 设置指定ID保护区段之前人工解锁状态
|
||||
* 参数说明: const UINT16 overlapId, 保护区段ID
|
||||
* const UINT8 chPreLaborUnlockState, 之前人工解锁状态
|
||||
* 返回值 void
|
||||
* by cgh 20250928
|
||||
*/
|
||||
void SetOverlapPreLoaborUnlockState(const UINT16 overlapId, const UINT8 chPreLaborUnlockState)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
|
||||
bufIndex = GetOverlapConfigBufIndex(overlapId); /*获取数组下标*/
|
||||
|
||||
if ((bufIndex < OVERLAP_SUM_MAX)
|
||||
&& ((PRO_PRE_LABOR_UNLOCK_STATE_YES == chPreLaborUnlockState)
|
||||
|| (PRO_PRE_LABOR_UNLOCK_STATE_NO == chPreLaborUnlockState)))
|
||||
{
|
||||
OverlapDataStru[bufIndex].chPreLaborUnlockState = chPreLaborUnlockState; /*设置解锁起始周期号*/
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:保护区段锁闭所属进路检查
|
||||
* 参数说明: const UINT16 wOverlapId 进路ID
|
||||
* 返回值 :CI_SUCCESS 所有进路均空闲
|
||||
* CI_ERROR 存在进路不是空闲
|
||||
* by cgh 20250928
|
||||
*/
|
||||
UINT8 OverlapLockRouteCheck(const UINT16 wOverlapId)
|
||||
{
|
||||
UINT8 chReval = CI_ERROR;
|
||||
UINT16 dwOverlapRouteSum = 0U; /*保护区段进路数目*/
|
||||
UINT16* pOverlapRouteBuf = NULL; /*保护区段进路数组*/
|
||||
UINT16 jj = 0U;
|
||||
UINT8 chRouteState = 0U; /*进路状态*/
|
||||
UINT8 chFlag = 0U; /*检查标志*/
|
||||
|
||||
if ((0U < wOverlapId) && (OVERLAP_SUM_MAX > wOverlapId))
|
||||
{
|
||||
dwOverlapRouteSum = GetOverlapRouteIdSum(wOverlapId);
|
||||
pOverlapRouteBuf = GetOverlapRouteIdBuf(wOverlapId);
|
||||
|
||||
if ((NULL != pOverlapRouteBuf))
|
||||
{
|
||||
for (jj = 0U; jj < dwOverlapRouteSum; jj++)
|
||||
{
|
||||
chRouteState = GetRouteState(pOverlapRouteBuf[jj]);
|
||||
|
||||
if ((ROUTE_STATE_IDLE != chRouteState))
|
||||
{
|
||||
chFlag = 1U;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
if (0U == chFlag)
|
||||
{
|
||||
chReval = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*存在不空闲的进路*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
return chReval;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID保护区段关联物理区段停准停稳状态
|
||||
* 参数说明:const UINT16 overlapId 保护区段ID
|
||||
* const UINT8 chSetFlag 设置标志
|
||||
* 返回值 :无
|
||||
*/
|
||||
void SetOverlapBelPhyStopSteadyFlag(const UINT16 wOverlapId, const UINT8 chSetFlag)
|
||||
{
|
||||
UINT16 wOverlopBelRouteId = 0U; /*保护区段锁闭所属进路ID*/
|
||||
UINT8 chRoutePhySecSum = 0U; /*进路包含的物理区段数目*/
|
||||
RoutePhysicalSectionStruct* szRoutePhySecData = NULL; /*进路包含物理区段结构数组*/
|
||||
|
||||
if ((0U < wOverlapId) && (wOverlapId < OVERLAP_SUM_MAX)
|
||||
&& ((PHYSICAL_SECTION_STOPSTEADY_NO == chSetFlag) || (PHYSICAL_SECTION_STOPSTEADY_YES == chSetFlag)))
|
||||
{
|
||||
wOverlopBelRouteId = GetOverlapBelongRouteId(wOverlapId);
|
||||
|
||||
if (0U != wOverlopBelRouteId)
|
||||
{
|
||||
chRoutePhySecSum = GetRoutePhysicalSectionSum(wOverlopBelRouteId);
|
||||
szRoutePhySecData = GetRouteSectionData(wOverlopBelRouteId);
|
||||
|
||||
if (NULL != szRoutePhySecData)
|
||||
{
|
||||
/*设置车车的物理区段停稳状态*/
|
||||
SetPhySecStopSteadyFlagCC(szRoutePhySecData[chRoutePhySecSum - 1U].PhysicalSectionId, chSetFlag);
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*无锁闭所属进路不处理*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
/* 功能描述:清除期望保护区段关联所有进路的所有保护区段人工锁闭过标志
|
||||
* 参数说明: const UINT16 expLkOverlapId, ATS或现地发送的期望锁闭区段ID
|
||||
* 返回值 : 无
|
||||
* by cgh 20260106
|
||||
*/
|
||||
void ClearPreLoaborUnlockState(const UINT16 expLkOverlapId)
|
||||
{
|
||||
UINT8 overlapSum = 0U;
|
||||
UINT16* overlapIdBuf = NULL;
|
||||
UINT16 ii = 0U;
|
||||
UINT8 jj = 0U;
|
||||
UINT8 localCiId = 0U; /*本联锁集中区ID*/
|
||||
UINT8 OverlapBelongCiId = 0U;
|
||||
UINT16 overlapRouteSum = 0U;/*保护区段关联进路数量*/
|
||||
UINT16* overlapRouteBuf = NULL;/*保护区段关联进路数据*/
|
||||
|
||||
overlapRouteSum = GetOverlapRouteIdSum(expLkOverlapId);/*获取保护区段关联进路总数*/
|
||||
overlapRouteBuf = GetOverlapRouteIdBuf(expLkOverlapId);/*获取进路数据*/
|
||||
localCiId = GetSystemParaLocalCiId(); /*获取本机联锁ID*/
|
||||
|
||||
if ((0U != overlapRouteSum) && (NULL != overlapRouteBuf))
|
||||
{
|
||||
for (ii = 0U; ii < overlapRouteSum; ii++)
|
||||
{
|
||||
overlapSum = GetRouteOverlapSum(overlapRouteBuf[ii]); /*获取Overlap总数*/
|
||||
overlapIdBuf = GetRouteOverlapIdBuf(overlapRouteBuf[ii]); /*获取Overlap ID BUF*/
|
||||
|
||||
if ((0U == overlapSum) || (NULL == overlapIdBuf))
|
||||
{
|
||||
;/*数据异常*/
|
||||
}
|
||||
else
|
||||
{
|
||||
for (jj = 0U; jj < overlapSum; jj++)
|
||||
{
|
||||
OverlapBelongCiId = GetOverlapBelongCiId(overlapIdBuf[jj]);
|
||||
if (OverlapBelongCiId == localCiId)
|
||||
{
|
||||
SetOverlapPreLoaborUnlockState(overlapIdBuf[jj], PRO_PRE_LABOR_UNLOCK_STATE_NO);
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*相邻联锁的不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID保护区段最近一次ATS锁闭保护区段周期号
|
||||
* 参数说明: const UINT16 overlapId, 保护区段ID
|
||||
* 返回值 : 最近一次ATS锁闭保护区段周期号
|
||||
* BY CGH 20260106
|
||||
*/
|
||||
UINT32 GetOverlapAtsLastTimeLockCyc(const UINT16 overlapId)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
UINT32 reVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetOverlapConfigBufIndex(overlapId); /*获取数组下标*/
|
||||
|
||||
if (bufIndex < OVERLAP_SUM_MAX)
|
||||
{
|
||||
reVal = OverlapDataStru[bufIndex].dwAtsLastTimeLockCyc;
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
return reVal;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述: 设置指定ID保护区段最近一次ATS锁闭保护区段周期号
|
||||
* 参数说明: const UINT16 overlapId, 保护区段ID
|
||||
* const UINT32 dwAtsLastTimeLockCyc, 最近一次ATS锁闭保护区段周期号
|
||||
* 返回值 void
|
||||
* by cgh 20250928
|
||||
*/
|
||||
void SetOverlapAtsLastTimeLockCyc(const UINT16 overlapId, const UINT32 dwAtsLastTimeLockCyc)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
|
||||
bufIndex = GetOverlapConfigBufIndex(overlapId); /*获取数组下标*/
|
||||
|
||||
if (bufIndex < OVERLAP_SUM_MAX)
|
||||
{
|
||||
OverlapDataStru[bufIndex].dwAtsLastTimeLockCyc = dwAtsLastTimeLockCyc; /*设置解锁起始周期号*/
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
}
|
||||
}
|
||||
@@ -35,9 +35,6 @@ typedef struct S_OverlapDataStruct
|
||||
UINT32 UnlockStartCycNum; /*保护区段解锁起始周期号 (动态字段)*/
|
||||
UINT32 XuanPaiStartCycNum; /*保护区段选排开始周期号(动态字段)*/
|
||||
UINT8 OverlapUnlockApplyFlag; /*向ZC申请解锁保护区段解锁标志,20181105*/
|
||||
UINT16 wOverlapUnlockApplyTrainId;/* 申请保护区段解锁的列车ID(不带0x14)*/
|
||||
UINT32 dwReqIvocUnLockStartCycNum; /*向车申请解锁保护区段起始周期号*/
|
||||
UINT8 cIvocAllowUnlockFlag; /*列车允许解锁保护区段标志,0xAA同意解锁,0x55不同意解锁*/
|
||||
UINT8 OverlapCanLaborUnlockFlag;/*保护区段可以人工解锁标志*/
|
||||
UINT8 OverlapLaborUnlockSetState;/*保护区段人工解锁设置状态*/
|
||||
UINT32 laborUnlockStartCycNum;/*人工解锁起始周期号*/
|
||||
@@ -48,10 +45,21 @@ typedef struct S_OverlapDataStruct
|
||||
UINT8 OverlapFromSetRouteCmdFlag;/*保护区段由进路办理时连带的标志*/
|
||||
UINT8 cProSwitchCheckResultFlag; /*跨控区防护道岔检查结果标志(0xFF:默认值,0x55:失败,0xAA:成功)*/
|
||||
UINT8 cProSwitchCheckStartFlag; /*跨控区防护道岔检查开始标志(0x55:检查开始,0xAA:检查停止)*/
|
||||
UINT8 chPreLaborUnlockState; /*之前人工解锁状态*/
|
||||
UINT32 dwAtsLastTimeLockCyc; /*最近一次ATS锁闭保护区段周期号*/
|
||||
} OverlapDataStruct;
|
||||
|
||||
/*保护区段数据结构体*/
|
||||
typedef struct S_OverlapDataStructCC
|
||||
{
|
||||
UINT16 OverlapId; /*保护区段组ID (初始化字段)*/
|
||||
UINT16 wOverlapUnlockApplyTrainId; /*申请保护区段解锁的列车ID(不带0x10)*/
|
||||
UINT32 dwReqIvocUnLockStartCycNum; /*向车申请解锁保护区段起始周期号*/
|
||||
UINT8 cIvocAllowUnlockFlag; /*列车允许解锁保护区段标志,0xAA同意解锁,0x55不同意解锁*/
|
||||
}OverlapDataStructCC;
|
||||
/*******************************全局变量声明*******************************/
|
||||
extern OverlapDataStruct OverlapDataStru[OVERLAP_SUM_MAX]; /*定义OVERLAP数据结构体*/
|
||||
extern OverlapDataStructCC OverlapDataStruCC[OVERLAP_SUM_MAX]; /*定义OVERLAP数据结构体-车车*/
|
||||
/*
|
||||
* 功能描述: 获取指定ID保护区段数据
|
||||
* 参数说明:
|
||||
@@ -59,6 +67,19 @@ extern OverlapDataStruct OverlapDataStru[OVERLAP_SUM_MAX]; /*
|
||||
OverlapDataStruct *
|
||||
*/
|
||||
OverlapDataStruct *GetOverlapData(void);
|
||||
/*
|
||||
* 功能描述: 获取指定ID保护区段数据-车车
|
||||
* 参数说明:
|
||||
* 返回值 :
|
||||
OverlapDataStructCC *
|
||||
*/
|
||||
/*
|
||||
* 功能描述: 获取指定ID保护区段数据-车车
|
||||
* 参数说明:
|
||||
* 返回值 :
|
||||
OverlapDataStructCC *
|
||||
*/
|
||||
OverlapDataStructCC* GetOverlapDataCC(void);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID保护区段所属进路ID
|
||||
@@ -69,11 +90,11 @@ OverlapDataStruct *GetOverlapData(void);
|
||||
UINT16 GetOverlapBelongRouteId(const UINT16 overlapId);
|
||||
|
||||
/*
|
||||
* 功能描述: 设置指定ID保护区段组解锁起始周期号
|
||||
* 参数说明: const UINT16 overlapId, 保护区段ID
|
||||
* 功能描述: 设置指定ID保护区段所属进路
|
||||
* 参数说明: const UINT16 overlapId, 保护区段ID
|
||||
* const UINT16 belongRouteId, 所属进路号
|
||||
* 返回值 : 无
|
||||
*
|
||||
*
|
||||
*/
|
||||
void SetOverlapBelongRouteId(const UINT16 overlapId, const UINT16 belongRouteId);
|
||||
|
||||
@@ -138,7 +159,7 @@ void SetOverlapUnlockApplyFlag(const UINT16 overlapId, const UINT8 overlapUnlock
|
||||
* 功能描述:获取指定ID保护区段申请解锁的列车ID
|
||||
* 参数说明:const UINT16 overlapId, 保护区段ID
|
||||
* 返回值 :0 获取失败
|
||||
* 其它 列车ID(不带0x14)
|
||||
* 其它 列车ID(不带0x10)
|
||||
*/
|
||||
UINT16 GetOverlapUnlockApplyTrainId(const UINT16 overlapId);
|
||||
|
||||
@@ -146,7 +167,7 @@ UINT16 GetOverlapUnlockApplyTrainId(const UINT16 overlapId);
|
||||
/*
|
||||
* 功能描述: 设置指定ID保护区段申请解锁的列车ID
|
||||
* 参数说明: const UINT16 overlapId, 保护区段ID
|
||||
* const UINT16 wTrainId,列车ID(不带0x14)
|
||||
* const UINT16 wTrainId,列车ID(不带0x10)
|
||||
* 返回值 : 无
|
||||
*
|
||||
*/
|
||||
@@ -315,13 +336,13 @@ void SetOverlapFromSetRouteCmdFlag(const UINT16 overlapId, const UINT8 setFlag);
|
||||
UINT8 GetOverlapFromSetRouteCmdFlag(const UINT16 overlapId);
|
||||
|
||||
/*
|
||||
* 功能描述: 清保护区段人工或ATS锁闭命令标志
|
||||
* 功能描述: 清除保护区段个别标志
|
||||
* 参数说明: const UINT16 routeId, 进路ID
|
||||
* const UINT16 overlapId, 保护区段ID
|
||||
* 返回值:无
|
||||
* by cgh 20240920
|
||||
* by cgh 20260106
|
||||
*/
|
||||
void CleanOverlapAtsOrlaborLockFlag(const UINT16 routeId, const UINT16 overlapId);
|
||||
void CleanOverlapSpecificFlag(const UINT16 routeId, const UINT16 overlapId);
|
||||
|
||||
/*
|
||||
* 功能描述:设置保护区段防护道岔检查结果标志
|
||||
@@ -360,6 +381,65 @@ void SetOverlapProSwtCheckStartFlag(const UINT16 wOverlapId, const UINT8 cCheckS
|
||||
*/
|
||||
UINT8 GetOverlapProSwtCheckStartFlag(const UINT16 wOverlapId);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID保护区段之前人工解锁状态
|
||||
* 参数说明: const UINT16 overlapId, 保护区段ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0:之前人工解锁状态
|
||||
* BY CGH 20250928
|
||||
*/
|
||||
UINT8 GetOverlapPreLoaborUnlockState(const UINT16 overlapId);
|
||||
|
||||
/*
|
||||
* 功能描述: 设置指定ID保护区段之前人工解锁状态
|
||||
* 参数说明: const UINT16 overlapId, 保护区段ID
|
||||
* const UINT8 chPreLaborUnlockState, 之前人工解锁状态
|
||||
* 返回值 void
|
||||
* by cgh 20250928
|
||||
*/
|
||||
void SetOverlapPreLoaborUnlockState(const UINT16 overlapId, const UINT8 chPreLaborUnlockState);
|
||||
|
||||
/*
|
||||
* 功能描述:保护区段锁闭所属进路检查
|
||||
* 参数说明: const UINT16 wOverlapId 进路ID
|
||||
* 返回值 :CI_SUCCESS 所有进路均空闲
|
||||
* CI_ERROR 存在进路不是空闲
|
||||
* by cgh 20250928
|
||||
*/
|
||||
UINT8 OverlapLockRouteCheck(const UINT16 wOverlapId);
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID保护区段关联物理区段停准停稳状态
|
||||
* 参数说明:const UINT16 overlapId 保护区段ID
|
||||
* const UINT8 chSetFlag 设置标志
|
||||
* 返回值 :无
|
||||
*/
|
||||
void SetOverlapBelPhyStopSteadyFlag(const UINT16 wOverlapId, const UINT8 chSetFlag);
|
||||
|
||||
/* 功能描述:清除期望保护区段关联所有进路的所有保护区段人工锁闭过标志
|
||||
* 参数说明: const UINT16 expLkOverlapId, ATS或现地发送的期望锁闭区段ID
|
||||
* 返回值 : 无
|
||||
* by cgh 20260106
|
||||
*/
|
||||
void ClearPreLoaborUnlockState(const UINT16 expLkOverlapId);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID保护区段最近一次ATS锁闭保护区段周期号
|
||||
* 参数说明: const UINT16 overlapId, 保护区段ID
|
||||
* 返回值 : 最近一次ATS锁闭保护区段周期号
|
||||
* BY CGH 20260106
|
||||
*/
|
||||
UINT32 GetOverlapAtsLastTimeLockCyc(const UINT16 overlapId);
|
||||
|
||||
/*
|
||||
* 功能描述: 设置指定ID保护区段最近一次ATS锁闭保护区段周期号
|
||||
* 参数说明: const UINT16 overlapId, 保护区段ID
|
||||
* const UINT32 dwAtsLastTimeLockCyc, 最近一次ATS锁闭保护区段周期号
|
||||
* 返回值 void
|
||||
* by cgh 20250928
|
||||
*/
|
||||
void SetOverlapAtsLastTimeLockCyc(const UINT16 overlapId, const UINT32 dwAtsLastTimeLockCyc);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -72,6 +72,10 @@
|
||||
#define PROSWITCH_CHECK_START_VALID ((UINT8)0x55) /*开始检查*/
|
||||
#define PROSWITCH_CHECK_START_INVALID ((UINT8)0xAA) /*停止检查*/
|
||||
|
||||
/*保护区段之前人工解锁标志*/
|
||||
#define PRO_PRE_LABOR_UNLOCK_STATE_YES ((UINT8)0x55) /*之前成功人工解锁过*/
|
||||
#define PRO_PRE_LABOR_UNLOCK_STATE_NO ((UINT8)0xAA) /*之前未人工解锁过*/
|
||||
|
||||
#define OVERLAP_USING_OVERTIME_CYC_NUM 10U /*保护区段征用超时周期数*/
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1041,4 +1041,145 @@ UINT8 CheckPsdBelSendRange(const UINT16 wCheckPsdId)
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门控制类型
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* 返回值 : UINT8 控制类型(0x55 OC-P控制 0xAA RCI控制)
|
||||
*/
|
||||
UINT8 GetPsdControlType(const UINT16 doorId)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT8 retVal = PSD_CONTROL_TYPE_RCI;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (bufIndex < PSD_SUM_MAX)
|
||||
{
|
||||
retVal = PsdConfigDataStru[bufIndex].chPsdControlType;
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = PSD_CONTROL_TYPE_RCI;
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门三编组驱动开门继电器ID
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 驱动开门继电器ID
|
||||
*/
|
||||
UINT16 GetThreeGroupPsdOpenDrvRelayId(const UINT16 doorId)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT16 retVal = 0u;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (PSD_SUM_MAX > bufIndex)
|
||||
{
|
||||
retVal = PsdConfigDataStru[bufIndex].OpenThreeEditGroupDriveRelayId;
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门再次开门继电器ID2
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 再次开门继电器ID
|
||||
*/
|
||||
UINT16 GetPsdReOpenRelayId2(const UINT16 doorId)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT16 retVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (PSD_SUM_MAX > bufIndex)
|
||||
{
|
||||
retVal = PsdConfigDataStru[bufIndex].doorReopenRelayId2;
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门包含ESB
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* 返回值 :ESB ID数组
|
||||
*/
|
||||
UINT16* GetPsdIncloudeEsbIdBuf(const UINT16 psdId)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT16* retVal = NULL;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(psdId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (PSD_SUM_MAX > bufIndex)
|
||||
{
|
||||
retVal = PsdConfigDataStru[bufIndex].IncloudeEsbIdBuf;
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = NULL;
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门包含ESB数量
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* 返回值 :ESB ID数组
|
||||
*/
|
||||
UINT8 GetPsdIncloudeEsbNum(const UINT16 psdId)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT8 retVal = NULL;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(psdId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (PSD_SUM_MAX > bufIndex)
|
||||
{
|
||||
retVal = PsdConfigDataStru[bufIndex].IncloudeEsbNum;
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = NULL;
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门IBP盘发车按钮继电器ID
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: IBP盘发车按钮继电器ID
|
||||
*/
|
||||
UINT16 GetIbpConfmRelayId(const UINT16 doorId)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT16 retVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (bufIndex < PSD_SUM_MAX)
|
||||
{
|
||||
retVal = PsdConfigDataStru[bufIndex].wIbpRelayId;
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ typedef struct S_PsdConfigDataStruct
|
||||
UINT16 MutualLockRelayId; /*互锁解除继电器ID (配置字段)*/
|
||||
UINT16 wMutualLockRelayId2; /*互锁解除继电器ID2(配置字段) 迪斯尼*/
|
||||
UINT16 CloseDriveRelayId; /*关门继电器ID (配置字段)*/
|
||||
UINT16 OpenThreeEditGroupDriveRelayId; /*打开三编组屏蔽门的驱动继电器(配置字段)*/
|
||||
UINT16 OpenFourEditGroupDriveRelayId; /*打开四编组屏蔽门的驱动继电器(配置字段)*/
|
||||
UINT16 OpenSixEditGroupDriveRelayId; /*打开六编组屏蔽门的驱动继电器(配置字段)*/
|
||||
UINT16 OpenEightEditGroupDriveRelayId; /*打开八编组屏蔽门的驱动继电器(配置字段)*/
|
||||
@@ -46,6 +47,7 @@ typedef struct S_PsdConfigDataStruct
|
||||
UINT16 wDoorStateRelayId2; /*门开采集继电器ID2(配置字段) 迪斯尼*/
|
||||
UINT16 wRelayDoorButtonId; /*屏蔽门再关门按钮继电器*/
|
||||
UINT16 doorReopenRelayId; /*站台门再次开门继电器*/
|
||||
UINT16 doorReopenRelayId2; /*站台门再次开门继电器2*/
|
||||
UINT16 departureConfirmRelayId; /*发车确认继电器*/
|
||||
UINT16 detectStartRelayId; /*启动探测继电器*/
|
||||
UINT16 detectStopRelayId; /*停止探测继电器*/
|
||||
@@ -64,6 +66,13 @@ typedef struct S_PsdConfigDataStruct
|
||||
UINT16 wPcbIndicatorRelayId; /*再关门按钮指示灯继电器*/
|
||||
UINT16 wVideoQkLight1RelayId; /*清客按钮箱视频清客指示灯1(绿)继电器*/
|
||||
UINT16 wVideoQkLight2RelayId; /*清客按钮箱视频清客指示灯2(红)继电器*/
|
||||
UINT16 wPsdFstProLinkId; /*屏蔽门防护link1ID*/
|
||||
UINT16 wPsdSndProLinkId; /*屏蔽门防护link2ID*/
|
||||
UINT16 wPsdTrdProLinkId; /*屏蔽门防护link3ID*/
|
||||
UINT8 chPsdControlType; /*屏蔽门控制类型*/
|
||||
UINT16 IncloudeEsbIdBuf[PSD_INCLUDE_ESB_NUM]; /*屏蔽门包含ESB ID*/
|
||||
UINT8 IncloudeEsbNum; /*包含ESB数量*/
|
||||
UINT16 wIbpRelayId; /*IBP盘发车按钮继电器ID*/
|
||||
} PsdConfigDataStruct;
|
||||
|
||||
|
||||
@@ -411,6 +420,47 @@ UINT16 GetPsdVideoQkLight2RelayId(const UINT16 wDoorId);
|
||||
*/
|
||||
UINT8 CheckPsdBelSendRange(const UINT16 wCheckPsdId);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门控制类型
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* 返回值 : UINT8 控制类型(0x55 OC-P控制 0xAA RCI控制)
|
||||
*/
|
||||
UINT8 GetPsdControlType(const UINT16 doorId);
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门三编组驱动开门继电器ID
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 驱动开门继电器ID
|
||||
*/
|
||||
UINT16 GetThreeGroupPsdOpenDrvRelayId(const UINT16 doorId);
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门再次开门继电器ID2
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 再次开门继电器ID
|
||||
*/
|
||||
UINT16 GetPsdReOpenRelayId2(const UINT16 doorId);
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门包含ESB数量
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* 返回值 :ESB ID数组
|
||||
*/
|
||||
UINT8 GetPsdIncloudeEsbNum(const UINT16 psdId);
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门包含ESB
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* 返回值 :ESB ID数组
|
||||
*/
|
||||
UINT16* GetPsdIncloudeEsbIdBuf(const UINT16 psdId);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门IBP盘发车按钮继电器ID
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: IBP盘发车按钮继电器ID
|
||||
*/
|
||||
UINT16 GetIbpConfmRelayId(const UINT16 doorId);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -11,8 +11,10 @@
|
||||
|
||||
#include "PSDDataManage.h"
|
||||
#include "../ParsePack/ParsePackDefine.h"
|
||||
#include "ESBDataManage.h"
|
||||
|
||||
PsdDataStruct PsdDataStru[PSD_SUM_MAX]; /*定义屏蔽门数据结构体*/
|
||||
PsdDataStruct PsdDataStru[PSD_SUM_MAX] = { 0U }; /*定义屏蔽门数据结构体*/
|
||||
PsdDataStructCC PsdDataStruCC[PSD_SUM_MAX] = { 0U }; /*定义车车屏蔽门数据结构体*/
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门数据
|
||||
@@ -24,6 +26,16 @@ PsdDataStruct *GetPsdData(void)
|
||||
return PsdDataStru;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定ID屏蔽门数据CC
|
||||
* 参数说明:无
|
||||
* 返 回 值:车车屏蔽门动态数据
|
||||
*/
|
||||
PsdDataStructCC* GetPsdDataCC(void)
|
||||
{
|
||||
return PsdDataStruCC;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门互锁解除状态
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
@@ -519,6 +531,9 @@ void ResetPsdData(const UINT16 psdId)
|
||||
|
||||
PsdDataStru[bufIndex].PsdDriveState=PSD_DRIVE_STATE_INVALID;
|
||||
PsdDataStru[bufIndex].PsdPreDriveState=PSD_DRIVE_STATE_INVALID;
|
||||
|
||||
SetPsdVobcCmdCC(psdId,0u, PSD_DEFAULT_CONTROL_CMD,0u);
|
||||
SetPsdEditGroupInfoDataCC(psdId, PSD_EDIT_GROUP_DEFAULT); /*设置RC的PSD编组信息为默认值*/
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -937,6 +952,54 @@ UINT8 GetStopDetectionState(const UINT16 doorId)
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定PSD停止探测周期号
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT32 startCycNum, 起始周期号
|
||||
* 返回值 : 无
|
||||
*
|
||||
*/
|
||||
void SetStopDetectionCycNum(const UINT16 doorId, const UINT32 startCycNum)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (bufIndex < PSD_SUM_MAX)
|
||||
{
|
||||
PsdDataStru[bufIndex].StopDetectionCycNum = startCycNum;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不做处理*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取停止探测起始周期号
|
||||
* 参数说明: const UINT16 doorId, 进路ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 起始周期号
|
||||
*/
|
||||
UINT32 GetStopDetectionCycNum(const UINT16 doorId)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT32 retVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (bufIndex < PSD_SUM_MAX)
|
||||
{
|
||||
retVal = PsdDataStru[bufIndex].StopDetectionCycNum;
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
#if 0
|
||||
/*
|
||||
* 功能描述: 设置因VOBC关PSD而需要被重开的进路
|
||||
@@ -1443,14 +1506,14 @@ UINT8 SetPsdCmdCyclePsc(const UINT16 doorId, const UINT32 doorCycle)
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 设置指定ID屏蔽门确认PSC互锁解除标志
|
||||
* 功能描述: 设置指定ID屏蔽门旁路标志
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT8 setFlag, 屏蔽门旁路设置状态
|
||||
* 返回值 :无
|
||||
*
|
||||
*/
|
||||
|
||||
void SetPsdPscConfirmFlag(const UINT16 doorId,const UINT8 setFlag)
|
||||
void SetPsdConfirmFlag(const UINT16 doorId,const UINT8 setFlag)
|
||||
{
|
||||
/*变量初始化*/
|
||||
UINT16 bufIndex = 0u;
|
||||
@@ -1467,13 +1530,13 @@ void SetPsdPscConfirmFlag(const UINT16 doorId,const UINT8 setFlag)
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门确认PSC旁路标志
|
||||
* 功能描述: 获取指定ID屏蔽门旁路标志
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
*
|
||||
* 返回值 : 0: 获取失败
|
||||
* >0: 获取成功
|
||||
*/
|
||||
UINT8 GetPsdPscPlFlag(const UINT16 doorId)
|
||||
UINT8 GetPsdPlFlag(const UINT16 doorId)
|
||||
{
|
||||
/*变量初始化*/
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
@@ -1532,7 +1595,7 @@ void SetNearCiPscPlFlag(const UINT16 psdId,const UINT16 pscId,const UINT8 setFla
|
||||
if(psdCiId == localCiId)
|
||||
{
|
||||
/*设置PSC对应PSD旁路*/
|
||||
SetPsdPscConfirmFlag(psdId, setFlag);
|
||||
SetPsdConfirmFlag(psdId, setFlag);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1544,12 +1607,12 @@ void SetNearCiPscPlFlag(const UINT16 psdId,const UINT16 pscId,const UINT8 setFla
|
||||
else
|
||||
{
|
||||
/*获取PSD旁路标志*/
|
||||
pscPlFlag = GetPsdPscPlFlag(psdId);
|
||||
pscPlFlag = GetPsdPlFlag(psdId);
|
||||
if(psdCiId == localCiId)
|
||||
{
|
||||
if(CI_PSC_PL_CONFIRM_YES == pscPlFlag)
|
||||
{
|
||||
SetPsdPscConfirmFlag(psdId, CI_PSC_PL_CONFIRM_NO);
|
||||
SetPsdConfirmFlag(psdId, CI_PSC_PL_CONFIRM_NO);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2509,4 +2572,807 @@ UINT16 GePsdVideoQkRelateVobcId(const UINT16 wPsdId)
|
||||
retVal = CI_ERROR;
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID屏蔽门异常打开状态
|
||||
* 参数说明:const UINT16 wPsdId 屏蔽门ID
|
||||
* const UINT8 cExceptOpenState 屏蔽门异常打开状态
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.05.22
|
||||
*/
|
||||
void SetPsdExceptOpenState(const UINT16 wPsdId, const UINT8 cExceptOpenState)
|
||||
{
|
||||
UINT16 bufIndex = 0U;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(wPsdId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if ((PSD_SUM_MAX > bufIndex) && ((PSD_EXCEPT_OPEN_YES == cExceptOpenState) || (PSD_EXCEPT_OPEN_NO == cExceptOpenState)))
|
||||
{
|
||||
PsdDataStru[bufIndex].cPsdExceptOpenState = cExceptOpenState; /*设置屏蔽门异常打开状态*/
|
||||
}
|
||||
else
|
||||
{
|
||||
; /*不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定ID屏蔽门异常打开状态
|
||||
* 参数说明:const UINT16 wPsdId 屏蔽门ID
|
||||
* 返 回 值:0x55 异常打开
|
||||
* 0xAA 未异常打开
|
||||
* Created By LQ 2025.05.22
|
||||
*/
|
||||
UINT8 GePsdExceptOpenState(const UINT16 wPsdId)
|
||||
{
|
||||
UINT16 bufIndex = 0U;
|
||||
UINT8 cRetVal = PSD_EXCEPT_OPEN_YES;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(wPsdId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (PSD_SUM_MAX > bufIndex)
|
||||
{
|
||||
cRetVal = PsdDataStru[bufIndex].cPsdExceptOpenState;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*返回异常打开*/
|
||||
}
|
||||
|
||||
return cRetVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 设置指定ID屏蔽门故障隔离信息
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT32 faultQStateOne, 故障隔离信息高四字节
|
||||
* * const UINT32 faultQStateTwo, 故障隔离信息低四字节
|
||||
* 返回值 : 无
|
||||
*/
|
||||
void SetPsdFaultQState(const UINT16 doorId, const UINT32 faultQStateOne, const UINT32 faultQStateTwo)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
if (PSD_SUM_MAX > bufIndex)
|
||||
{
|
||||
PsdDataStru[bufIndex].psdFaultQStataOne = faultQStateOne;
|
||||
PsdDataStru[bufIndex].psdFaultQStataTwo = faultQStateTwo;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门故障隔离信息
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* UINT8 psdFlag,前四个字节还是后四个字节(0u为高四个字节,1u为低四个字节)
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 屏蔽门故障隔离信息
|
||||
*/
|
||||
UINT32 GetPsdFaultQState(const UINT16 doorId, UINT8 psdFlag)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT32 retVal = UINT32_MAX;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if ((PSD_SUM_MAX > bufIndex) && (HIGH_FOUR_CHAR == psdFlag))
|
||||
{
|
||||
retVal = PsdDataStru[bufIndex].psdFaultQStataOne;/*高四字节*/
|
||||
}
|
||||
else if ((PSD_SUM_MAX > bufIndex) && (LOW_FOUR_CHAR == psdFlag))
|
||||
{
|
||||
retVal = PsdDataStru[bufIndex].psdFaultQStataTwo;/*低四字节*/
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = UINT32_MAX;
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 设置指定ID屏蔽门被隔离信息
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT32 doorsIStateOne, 被隔离信息高四字节
|
||||
* * const UINT32 doorsIStateTwo, 被隔离信息低四字节
|
||||
* 返回值 : 无
|
||||
*/
|
||||
void SetPsdDoorIState(const UINT16 doorId, const UINT32 doorsIStateOne, const UINT32 doorsIStateTwo)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
if (PSD_SUM_MAX > bufIndex)
|
||||
{
|
||||
PsdDataStru[bufIndex].psdDoorIStateOne = doorsIStateOne;
|
||||
PsdDataStru[bufIndex].psdDoorIStateTwo = doorsIStateTwo;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门被隔离信息
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* UINT8 psdFlag,前四个字节还是后四个字节(0u为高四个字节,1u为低四个字节)
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 屏蔽门被隔离信息
|
||||
*/
|
||||
UINT32 GetPsdDoorIState(const UINT16 doorId, UINT8 psdFlag)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT32 retVal = UINT32_MAX;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if ((PSD_SUM_MAX > bufIndex) && (HIGH_FOUR_CHAR == psdFlag))
|
||||
{
|
||||
retVal = PsdDataStru[bufIndex].psdDoorIStateOne;/*高四字节*/
|
||||
}
|
||||
else if ((PSD_SUM_MAX > bufIndex) && (LOW_FOUR_CHAR == psdFlag))
|
||||
{
|
||||
retVal = PsdDataStru[bufIndex].psdDoorIStateTwo;/*低四字节*/
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = UINT32_MAX;
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 设置指定ID屏蔽门,单扇门开关状态
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT32 doorStateOne, 单扇门开关状态高四字节
|
||||
* * const UINT32 doorStateTwo, 单扇门开关状态低四字节
|
||||
* 返回值 : 无
|
||||
*/
|
||||
void SetPsdDoorState(const UINT16 doorId, const UINT32 doorStateOne, const UINT32 doorStateTwo)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
if (PSD_SUM_MAX > bufIndex)
|
||||
{
|
||||
PsdDataStru[bufIndex].psdDoorsStateOne = doorStateOne;
|
||||
PsdDataStru[bufIndex].psdDoorsStateTwo = doorStateTwo;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门,单扇门开关状态
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* UINT8 psdFlag,前四个字节还是后四个字节(0u为高四个字节,1u为低四个字节)
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 屏蔽门单扇门开关状态
|
||||
*/
|
||||
UINT32 GetPsdDoorState(const UINT16 doorId, UINT8 psdFlag)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT32 retVal = UINT32_MAX;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if ((PSD_SUM_MAX > bufIndex) && (HIGH_FOUR_CHAR == psdFlag))
|
||||
{
|
||||
retVal = PsdDataStru[bufIndex].psdDoorsStateOne;/*高四字节*/
|
||||
}
|
||||
else if ((PSD_SUM_MAX > bufIndex) && (LOW_FOUR_CHAR == psdFlag))
|
||||
{
|
||||
retVal = PsdDataStru[bufIndex].psdDoorsStateTwo;/*低四字节*/
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = UINT32_MAX;
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述: 设置指定ID开门故障状态
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT8 openErrState,开门故障状态
|
||||
* 返回值 : 无
|
||||
*/
|
||||
void SetOpenErrState(const UINT16 doorId, const UINT8 openErrState)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
if (PSD_SUM_MAX > bufIndex)
|
||||
{
|
||||
if ((PSD_OPEN_CLOSE_NORMAL == openErrState) || (PSD_OPEN_CLOSE_ERROR == openErrState))
|
||||
{
|
||||
PsdDataStru[bufIndex].psdOpenErrState = openErrState;
|
||||
}
|
||||
else
|
||||
{/*不处理*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 设置指定ID关门故障状态
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT8 closeErrState,关门故障状态
|
||||
* 返回值 : 无
|
||||
*/
|
||||
void SetCloseErrState(const UINT16 doorId, const UINT8 closeErrState)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
if (PSD_SUM_MAX > bufIndex)
|
||||
{
|
||||
if ((PSD_OPEN_CLOSE_NORMAL == closeErrState) || (PSD_OPEN_CLOSE_ERROR == closeErrState))
|
||||
{
|
||||
PsdDataStru[bufIndex].psdCloseErrState = closeErrState;
|
||||
}
|
||||
else
|
||||
{/*不处理*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID开门故障状态
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* 返回值 : UINT8 开门故障状态
|
||||
*/
|
||||
UINT8 GetOpenErrState(const UINT16 doorId)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT8 retVal = PSD_OPEN_CLOSE_ERROR;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
if (PSD_SUM_MAX > bufIndex)
|
||||
{
|
||||
retVal = PsdDataStru[bufIndex].psdOpenErrState;
|
||||
}
|
||||
else
|
||||
{/*不处理*/
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID关门故障状态
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* 返回值 : UINT8 关门故障状态
|
||||
*/
|
||||
UINT8 GetCloseErrState(const UINT16 doorId)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT8 retVal = PSD_OPEN_CLOSE_ERROR;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
if (PSD_SUM_MAX > bufIndex)
|
||||
{
|
||||
retVal = PsdDataStru[bufIndex].psdCloseErrState;
|
||||
}
|
||||
else
|
||||
{/*不处理*/
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定ID屏蔽门门关继电器落下起始周期号
|
||||
* 参数说明:const UINT16 doorId 屏蔽门ID
|
||||
* 返 回 值:门开继电器落下起始周期号
|
||||
* Created By LQ 2025.06.26
|
||||
*/
|
||||
UINT32 GetPsdRelayDownCycNum(const UINT16 doorId)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT32 retVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (bufIndex < PSD_SUM_MAX)
|
||||
{
|
||||
retVal = PsdDataStru[bufIndex].dwPsdRelayDownCycNum;
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID屏蔽门门关继电器落下起始周期号
|
||||
* 参数说明:const UINT16 doorId 屏蔽门ID
|
||||
* const UINT32 startCycNum 起始周期号
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.06.26
|
||||
*/
|
||||
void SetPsdRelayDownCycNum(const UINT16 doorId, const UINT32 startCycNum)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (bufIndex < PSD_SUM_MAX)
|
||||
{
|
||||
PsdDataStru[bufIndex].dwPsdRelayDownCycNum = startCycNum;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定ID屏蔽门编组信息CC
|
||||
* 参数说明:const UINT16 doorId, 屏蔽门ID
|
||||
* 返 回 值:0 无编组信息
|
||||
* 3 三编组
|
||||
* 4 四编组
|
||||
* 6 六编组
|
||||
* 8 八编组
|
||||
* Created By LQ 2025.11.05
|
||||
*/
|
||||
UINT16 GetPsdEditGroupInfoDataCC(const UINT16 doorId)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
UINT16 retVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (bufIndex < PSD_SUM_MAX)
|
||||
{
|
||||
retVal = PsdDataStruCC[bufIndex].psdEditGroupInfo;
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID屏蔽门编组信息CC
|
||||
* 参数说明:const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT16 wPsdEditGroupInfo 屏蔽门编组信息
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.11.05
|
||||
*/
|
||||
void SetPsdEditGroupInfoDataCC(const UINT16 doorId, const UINT16 wPsdEditGroupInfo)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (bufIndex < PSD_SUM_MAX)
|
||||
{
|
||||
if ((PSD_THREE_EDIT_GROUP == wPsdEditGroupInfo)
|
||||
|| (PSD_FOUR_EDIT_GROUP == wPsdEditGroupInfo)
|
||||
|| (PSD_SIX_EDIT_GROUP == wPsdEditGroupInfo)
|
||||
|| (PSD_EIGHT_EDIT_GROUP == wPsdEditGroupInfo)
|
||||
|| (PSD_EDIT_GROUP_DEFAULT == wPsdEditGroupInfo))
|
||||
{
|
||||
PsdDataStruCC[bufIndex].psdEditGroupInfo = wPsdEditGroupInfo; /*不考虑FAO的特殊接口*/
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:获取PSD的VOBC控制命令CC
|
||||
* 参数说明:const UINT16 doorId,屏蔽门ID
|
||||
* 返 回 值:0x00-默认值
|
||||
* 0x55-打开PSD命令
|
||||
* 0xAA-关闭PSD命令
|
||||
* 0xFF-查询PSD命令
|
||||
* Created By LQ 2025.11.05
|
||||
*/
|
||||
UINT8 GetPsdVobcCmdCC(const UINT16 doorId)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
UINT8 ctrlCmd = PSD_DEFAULT_CONTROL_CMD;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (bufIndex < PSD_SUM_MAX)
|
||||
{
|
||||
ctrlCmd = PsdDataStruCC[bufIndex].PsdCmd;
|
||||
}
|
||||
else
|
||||
{
|
||||
ctrlCmd = PSD_DEFAULT_CONTROL_CMD;
|
||||
}
|
||||
|
||||
return ctrlCmd;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取当前控制该PSD的VOBC的编号CC
|
||||
* 参数说明: const UINT16 doorId,屏蔽门ID
|
||||
* 返 回 值: VOBC ID
|
||||
* Created By LQ 2025.11.05
|
||||
*/
|
||||
UINT16 GetPsdVobcIdCC(const UINT16 doorId)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
UINT16 vobcId = 0U;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (bufIndex < PSD_SUM_MAX)
|
||||
{
|
||||
vobcId = PsdDataStruCC[bufIndex].SrcVobcId;
|
||||
}
|
||||
else
|
||||
{
|
||||
vobcId = 0U;
|
||||
}
|
||||
|
||||
return vobcId;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:获得该PSD的控制命令的设置周期CC
|
||||
* 参数说明:const UINT16 doorId,屏蔽门ID
|
||||
* 返 回 值:该PSD的控制命令的设置周期
|
||||
* Created By LQ 2025.11.05
|
||||
*/
|
||||
UINT32 GetPsdCmdSetCycleCC(const UINT16 doorId)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
UINT32 setCycle = 0U;
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (bufIndex < PSD_SUM_MAX)
|
||||
{
|
||||
setCycle = PsdDataStruCC[bufIndex].CmdSetCycle;
|
||||
}
|
||||
else
|
||||
{
|
||||
setCycle = 0U;
|
||||
}
|
||||
|
||||
return setCycle;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:设置PSD的VOBC操作命令CC
|
||||
* 参数说明:const UINT16 doorId 屏蔽门ID
|
||||
* const UINT16 vobcId 操作屏蔽门的VOBC ID
|
||||
* const UINT8 operCmd 来自VOBC的开关门命令
|
||||
* const UINT32 dwCycNum 周期号
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.11.05
|
||||
*/
|
||||
void SetPsdVobcCmdCC(const UINT16 doorId, const UINT16 vobcId, const UINT8 operCmd, const UINT32 dwCycNum)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (bufIndex < PSD_SUM_MAX)
|
||||
{
|
||||
if ((PSD_DEFAULT_CONTROL_CMD == operCmd)
|
||||
|| (VOBCTOCI_COMMAND_TYPE_PSDOPEN == operCmd)
|
||||
|| (VOBCTOCI_COMMAND_TYPE_PSDCLOSE == operCmd)
|
||||
|| (VOBCTOCI_COMMAND_TYPE_PSDCHECK_FAOHLHT == operCmd))
|
||||
{
|
||||
if (PsdDataStruCC[bufIndex].SrcVobcId == vobcId)
|
||||
{
|
||||
PsdDataStruCC[bufIndex].PsdCmd = operCmd;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*另一个VOBC开始操作该屏蔽门,对之前VOBC操作该屏蔽门产生的上下文进行复位*/
|
||||
PsdDataStruCC[bufIndex].SrcVobcId = vobcId;
|
||||
PsdDataStruCC[bufIndex].PsdCmd = operCmd;
|
||||
}
|
||||
PsdDataStruCC[bufIndex].CmdSetCycle = dwCycNum;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*命令非法,不处理*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不做处理*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定ID屏蔽门编组信息CC
|
||||
* 参数说明:const UINT16 doorId, 屏蔽门ID
|
||||
* 返 回 值:0 无编组信息
|
||||
* 3 三编组
|
||||
* 4 四编组
|
||||
* 6 六编组
|
||||
* 8 八编组
|
||||
*/
|
||||
UINT16 GetPsdEditGroupInfoData(const UINT16 doorId)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
UINT16 retVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (bufIndex < PSD_SUM_MAX)
|
||||
{
|
||||
retVal = PsdDataStru[bufIndex].psdEditGroupInfo;
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID屏蔽门编组信息
|
||||
* 参数说明:const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT16 wPsdEditGroupInfo 屏蔽门编组信息
|
||||
* 返 回 值:无
|
||||
*/
|
||||
void SetPsdEditGroupInfoData(const UINT16 doorId, const UINT16 wPsdEditGroupInfo)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (bufIndex < PSD_SUM_MAX)
|
||||
{
|
||||
if ((PSD_THREE_EDIT_GROUP == wPsdEditGroupInfo)
|
||||
|| (PSD_FOUR_EDIT_GROUP == wPsdEditGroupInfo)
|
||||
|| (PSD_SIX_EDIT_GROUP == wPsdEditGroupInfo)
|
||||
|| (PSD_EIGHT_EDIT_GROUP == wPsdEditGroupInfo)
|
||||
|| (PSD_EDIT_GROUP_DEFAULT == wPsdEditGroupInfo))
|
||||
{
|
||||
PsdDataStru[bufIndex].psdEditGroupInfo = wPsdEditGroupInfo; /*不考虑FAO的特殊接口*/
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定ID屏蔽门间隙探测互锁解除故障状态
|
||||
* 参数说明:const UINT16 doorId, 屏蔽门ID
|
||||
* 返 回 值: 0 返回失败
|
||||
* 0< 间隙探测互锁解除故障状态
|
||||
*/
|
||||
UINT8 GetPsdJXTCMutualLockFaultState(const UINT16 doorId)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
UINT8 retVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (PSD_SUM_MAX > bufIndex)
|
||||
{
|
||||
retVal = PsdDataStru[bufIndex].JXTCMutualLockFaultState;
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID屏蔽门间隙探测互锁解除故障状态
|
||||
* 参数说明:const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT8 wJXTCMutualLockFaultState 间隙探测互锁解除故障状态
|
||||
* 返 回 值:无
|
||||
*/
|
||||
void SetPsdJXTCMutualLockFaultState(const UINT16 doorId, const UINT8 wJXTCMutualLockFaultState)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (PSD_SUM_MAX > bufIndex)
|
||||
{
|
||||
if ((JXTC_MUTUALLOCKFAULT_YES == wJXTCMutualLockFaultState)
|
||||
|| (JXTC_MUTUALLOCKFAULT_NO == wJXTCMutualLockFaultState))
|
||||
{
|
||||
PsdDataStru[bufIndex].JXTCMutualLockFaultState = wJXTCMutualLockFaultState; /*间隙探测互锁解除故障状态*/
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定ID屏蔽门间隙探测互锁解除时间
|
||||
* 参数说明:const UINT16 doorId, 屏蔽门ID
|
||||
* 返 回 值: 0 返回失败
|
||||
* 0< 屏蔽门间隙探测互锁解除时间
|
||||
*/
|
||||
UINT32 GetPsdJXTCMutualLockStartCycNum(const UINT16 doorId)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
UINT32 retVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (PSD_SUM_MAX > bufIndex)
|
||||
{
|
||||
retVal = PsdDataStru[bufIndex].JXTCMutualLockStartCycNum;
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID屏蔽门间隙探测互锁解除起始时间
|
||||
* 参数说明:const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT32 cycnum 互锁解除起始时间
|
||||
* 返 回 值:无
|
||||
*/
|
||||
void SetPsdJXTCMutualLockStartCycNum(const UINT16 doorId, const UINT32 cycnum)
|
||||
{
|
||||
UINT16 bufIndex = 0U; /*数组下标*/
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (PSD_SUM_MAX > bufIndex)
|
||||
{
|
||||
PsdDataStru[bufIndex].JXTCMutualLockStartCycNum = cycnum;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不处理*/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述: 设置指定ID屏蔽门IBP盘发车按钮状态
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* UINT8 setFlag 需设置的按钮状态
|
||||
* 返回值 : CI_ERROR 失败
|
||||
* CI_SUCCESS 成功
|
||||
*/
|
||||
UINT8 SetPsdButtonIbpState(const UINT16 doorId, const UINT8 setFlag)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT8 retVal = 0u;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (bufIndex < PSD_SUM_MAX)
|
||||
{
|
||||
if ((PLATFORM_DEPAR_BUTTON_STATE_VALID == setFlag) || (PLATFORM_DEPAR_BUTTON_STATE_INVALID == setFlag)
|
||||
||(PLATFORM_DEPAR_BUTTON_STATE_FAULT == setFlag))
|
||||
{
|
||||
PsdDataStru[bufIndex].ibpButtonState = setFlag; /*设置按钮状态*/
|
||||
retVal = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门IBP盘发车按钮状态
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* 返回值 :0: 获取数据失败
|
||||
* >0: IBP盘发车按钮状态
|
||||
*/
|
||||
UINT8 GetPsdButtonIbpState(const UINT16 doorId)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT8 retVal = 0u;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (bufIndex < PSD_SUM_MAX)
|
||||
{
|
||||
retVal = PsdDataStru[bufIndex].ibpButtonState;
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID屏蔽门IBP按下起始周期号
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT32 startCycNum, 起始周期号
|
||||
* 返回值 : 0: 设置数据失败
|
||||
* >0: 设置数据成功
|
||||
*/
|
||||
UINT8 SetIBPPressCycNum(const UINT16 doorId, const UINT32 startCycNum)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT8 retVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (bufIndex < PSD_SUM_MAX)
|
||||
{
|
||||
PsdDataStru[bufIndex].IBPPressCycNum = startCycNum;
|
||||
retVal = CI_SUCCESS;
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门IBP按下起始周期号
|
||||
* 参数说明: const UINT16 doorId,屏蔽门ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 起始周期号
|
||||
*/
|
||||
UINT32 GetIBPPressCycNum(const UINT16 doorId)
|
||||
{
|
||||
UINT16 bufIndex = 0u; /*数组下标*/
|
||||
UINT32 retVal = CI_ERROR;
|
||||
|
||||
bufIndex = GetPsdConfigBufIndex(doorId); /*获取屏蔽门数组下标*/
|
||||
|
||||
if (bufIndex < PSD_SUM_MAX)
|
||||
{
|
||||
retVal = PsdDataStru[bufIndex].IBPPressCycNum;
|
||||
}
|
||||
else
|
||||
{
|
||||
retVal = CI_ERROR;
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "CommonTypes.h"
|
||||
#include "../System/CiSystemDefine.h"
|
||||
#include "../Relay/RelayConfigDataManage.h"
|
||||
#include "CiInterfaceDefine.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -58,6 +59,7 @@ typedef struct S_PsdDataStruct
|
||||
UINT32 StartDetectionCycNum; /*开启探测周期*/
|
||||
UINT8 StartDetectionState; /*启动探测状态*/
|
||||
UINT8 StopDetectionState; /*停止探测状态*/
|
||||
UINT32 StopDetectionCycNum; /*停止探测周期*/
|
||||
UINT8 VOBCDoorState; /*VOBC车门状态*/
|
||||
UINT32 PCBPressCycNum; /*PCB按下起始周期*/
|
||||
UINT32 POBPressCycNum; /*POB按下起始周期*/
|
||||
@@ -81,9 +83,35 @@ typedef struct S_PsdDataStruct
|
||||
UINT8 chCleFarePDBFlaLigFlag; /*清客确认箱PDB按钮指示灯闪灯标志*//*by cgh 20230529*/
|
||||
UINT8 chVideoQkDriveState; /*视频清客驱动状态 by cgh 20231214*/
|
||||
UINT16 wVideoQkRelateVobcId; /*视频清客对应列车ID by cgh 20231214*/
|
||||
UINT32 psdFaultQStataOne; /*单扇门故障隔离信息前四个字节*/
|
||||
UINT32 psdFaultQStataTwo; /*单扇门故障隔离信息后四个字节*/
|
||||
UINT32 psdDoorIStateOne; /*单扇门被隔离信息前四字节*/
|
||||
UINT32 psdDoorIStateTwo; /*单扇门被隔离信息后四字节*/
|
||||
UINT32 psdDoorsStateOne; /*每扇屏蔽门的开关状态前四个字节*/
|
||||
UINT32 psdDoorsStateTwo; /*每扇屏蔽门的开关状态后四个字节*/
|
||||
UINT8 psdOpenErrState; /*开门故障状态*/
|
||||
UINT8 psdCloseErrState; /*关门故障状态*/
|
||||
UINT8 cPsdExceptOpenState; /*屏蔽门异常打开状态:0x55-异常打开,0xAA-未异常打开*/
|
||||
UINT32 dwPsdRelayDownCycNum; /*PSD门关继电器落下起始周期*/
|
||||
|
||||
UINT8 JXTCMutualLockFaultState; /*间隙探测互锁解除按钮故障状态 (动态字段)*/
|
||||
UINT32 JXTCMutualLockStartCycNum; /*间隙探测互锁解除起始时间*/
|
||||
UINT8 ibpButtonState; /*IBP盘发车按钮状态(动态字段)*/
|
||||
UINT32 IBPPressCycNum; /*IBP按下起始周期*/
|
||||
} PsdDataStruct;
|
||||
|
||||
/*屏蔽门数据结构体*/
|
||||
typedef struct S_PsdDataStructCC
|
||||
{
|
||||
UINT16 PsdId; /*屏蔽门ID (初始化字段)*/
|
||||
UINT16 psdEditGroupInfo; /*屏蔽门编组信息CC(0-默认值,3-三编组,4-四编组,6-六编组,8-八编组)*/
|
||||
UINT16 SrcVobcId; /*操作该屏蔽门的当前VOBC编号CC*/
|
||||
UINT8 PsdCmd; /*操作屏蔽门的命令CC(0x00-默认值,0x55-打开PSD命令,0xAA-关闭PSD命令,0xFF-查询PSD命令)*/
|
||||
UINT32 CmdSetCycle;/*命令设置周期CC*/
|
||||
} PsdDataStructCC;
|
||||
|
||||
extern PsdDataStruct PsdDataStru[PSD_SUM_MAX]; /*定义屏蔽门数据结构体*/
|
||||
extern PsdDataStructCC PsdDataStruCC[PSD_SUM_MAX]; /*定义车车屏蔽门数据结构体*/
|
||||
|
||||
/*
|
||||
* 功能描述: 设置PSD的VOBC操作命令
|
||||
@@ -159,6 +187,13 @@ void ResetPsdData(const UINT16 psdId);
|
||||
*/
|
||||
PsdDataStruct *GetPsdData(void);
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定ID屏蔽门数据CC
|
||||
* 参数说明:无
|
||||
* 返 回 值:车车屏蔽门动态数据
|
||||
*/
|
||||
PsdDataStructCC* GetPsdDataCC(void);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门互锁解除状态
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
@@ -377,6 +412,23 @@ void SetStopDetectionState(const UINT16 doorId, const UINT32 detectionState);
|
||||
*/
|
||||
UINT8 GetStopDetectionState(const UINT16 doorId);
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定PSD停止探测周期号
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT32 startCycNum, 起始周期号
|
||||
* 返回值 : 无
|
||||
*
|
||||
*/
|
||||
void SetStopDetectionCycNum(const UINT16 doorId, const UINT32 startCycNum);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取停止探测起始周期号
|
||||
* 参数说明: const UINT16 doorId, 进路ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 起始周期号
|
||||
*/
|
||||
UINT32 GetStopDetectionCycNum(const UINT16 doorId);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门开门按钮状态
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
@@ -518,23 +570,23 @@ UINT32 GetPsdCmdCyclePsc(const UINT16 doorId);
|
||||
UINT8 SetPsdCmdCyclePsc(const UINT16 doorId, const UINT32 doorCycle);
|
||||
|
||||
/*
|
||||
* 功能描述: 设置指定ID屏蔽门确认PSC互锁解除标志
|
||||
* 功能描述: 设置指定ID屏蔽门旁路标志
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT8 setFlag, 屏蔽门旁路设置状态
|
||||
* 返回值 :无
|
||||
*
|
||||
*/
|
||||
|
||||
void SetPsdPscConfirmFlag(const UINT16 doorId,const UINT8 setFlag);
|
||||
void SetPsdConfirmFlag(const UINT16 doorId,const UINT8 setFlag);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门确认PSC旁路标志
|
||||
* 功能描述: 获取指定ID屏蔽门旁路标志
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
*
|
||||
* 返回值 : 0: 获取失败
|
||||
* >0: 获取成功
|
||||
*/
|
||||
UINT8 GetPsdPscPlFlag(const UINT16 doorId);
|
||||
UINT8 GetPsdPlFlag(const UINT16 doorId);
|
||||
|
||||
/*
|
||||
* 功能描述: PSC同时与另一联锁通信时,PSC旁路命令处理
|
||||
@@ -872,6 +924,261 @@ void SetPsdVideoQkRelateVobcId(const UINT16 wPsdId, const UINT16 wVobcId);
|
||||
*/
|
||||
UINT16 GePsdVideoQkRelateVobcId(const UINT16 wPsdId);
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID屏蔽门异常打开状态
|
||||
* 参数说明:const UINT16 wPsdId 屏蔽门ID
|
||||
* const UINT8 cExceptOpenState 屏蔽门异常打开状态
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.05.22
|
||||
*/
|
||||
void SetPsdExceptOpenState(const UINT16 wPsdId, const UINT8 cExceptOpenState);
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定ID屏蔽门异常打开状态
|
||||
* 参数说明:const UINT16 wPsdId 屏蔽门ID
|
||||
* 返 回 值:0x55 异常打开
|
||||
* 0xAA 未异常打开
|
||||
* Created By LQ 2025.05.22
|
||||
*/
|
||||
UINT8 GePsdExceptOpenState(const UINT16 wPsdId);
|
||||
|
||||
/*
|
||||
* 功能描述: 设置指定ID屏蔽门故障隔离信息
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT32 faultQStateOne, 故障隔离信息高四字节
|
||||
* * const UINT32 faultQStateTwo, 故障隔离信息低四字节
|
||||
* 返回值 : 无
|
||||
*/
|
||||
void SetPsdFaultQState(const UINT16 doorId, const UINT32 faultQStateOne, const UINT32 faultQStateTwo);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门故障隔离信息
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* UINT8 psdFlag,前四个字节还是后四个字节(0u为高四个字节,1u为低四个字节)
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 屏蔽门故障隔离信息
|
||||
*/
|
||||
UINT32 GetPsdFaultQState(const UINT16 doorId, UINT8 psdFlag);
|
||||
|
||||
/*
|
||||
* 功能描述: 设置指定ID屏蔽门被隔离信息
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT32 doorsIStateOne, 被隔离信息高四字节
|
||||
* * const UINT32 doorsIStateTwo, 被隔离信息低四字节
|
||||
* 返回值 : 无
|
||||
*/
|
||||
void SetPsdDoorIState(const UINT16 doorId, const UINT32 doorsIStateOne, const UINT32 doorsIStateTwo);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门被隔离信息
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* UINT8 psdFlag,前四个字节还是后四个字节(0u为高四个字节,1u为低四个字节)
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 屏蔽门被隔离信息
|
||||
*/
|
||||
UINT32 GetPsdDoorIState(const UINT16 doorId, UINT8 psdFlag);
|
||||
|
||||
/*
|
||||
* 功能描述: 设置指定ID屏蔽门,单扇门开关状态
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT32 doorStateOne, 单扇门开关状态高四字节
|
||||
* * const UINT32 doorStateTwo, 单扇门开关状态低四字节
|
||||
* 返回值 : 无
|
||||
*/
|
||||
void SetPsdDoorState(const UINT16 doorId, const UINT32 doorStateOne, const UINT32 doorStateTwo);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门,单扇门开关状态
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* UINT8 psdFlag,前四个字节还是后四个字节(0u为高四个字节,1u为低四个字节)
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 屏蔽门单扇门开关状态
|
||||
*/
|
||||
UINT32 GetPsdDoorState(const UINT16 doorId, UINT8 psdFlag);
|
||||
|
||||
|
||||
/*
|
||||
* 功能描述: 设置指定ID开门故障状态
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT8 openErrState,开门故障状态
|
||||
* 返回值 : 无
|
||||
*/
|
||||
void SetOpenErrState(const UINT16 doorId, const UINT8 openErrState);
|
||||
|
||||
/*
|
||||
* 功能描述: 设置指定ID关门故障状态
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT8 closeErrState,关门故障状态
|
||||
* 返回值 : 无
|
||||
*/
|
||||
void SetCloseErrState(const UINT16 doorId, const UINT8 closeErrState);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID开门故障状态
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* 返回值 : UINT8 开门故障状态
|
||||
*/
|
||||
UINT8 GetOpenErrState(const UINT16 doorId);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取指定ID关门故障状态
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* 返回值 : UINT8 关门故障状态
|
||||
*/
|
||||
UINT8 GetCloseErrState(const UINT16 doorId);
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定ID屏蔽门门关继电器落下起始周期号
|
||||
* 参数说明:const UINT16 doorId 屏蔽门ID
|
||||
* 返 回 值:门开继电器落下起始周期号
|
||||
* Created By LQ 2025.06.26
|
||||
*/
|
||||
UINT32 GetPsdRelayDownCycNum(const UINT16 doorId);
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID屏蔽门门关继电器落下起始周期号
|
||||
* 参数说明:const UINT16 doorId 屏蔽门ID
|
||||
* const UINT32 startCycNum 起始周期号
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.06.26
|
||||
*/
|
||||
void SetPsdRelayDownCycNum(const UINT16 doorId, const UINT32 startCycNum);
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定ID屏蔽门编组信息CC
|
||||
* 参数说明:const UINT16 doorId, 屏蔽门ID
|
||||
* 返 回 值:0 无编组信息
|
||||
* 3 三编组
|
||||
* 4 四编组
|
||||
* 6 六编组
|
||||
* 8 八编组
|
||||
* Created By LQ 2025.11.05
|
||||
*/
|
||||
UINT16 GetPsdEditGroupInfoDataCC(const UINT16 doorId);
|
||||
|
||||
/*
|
||||
* 功能描述:设置指定ID屏蔽门编组信息CC
|
||||
* 参数说明:const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT16 wPsdEditGroupInfo 屏蔽门编组信息
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.11.05
|
||||
*/
|
||||
void SetPsdEditGroupInfoDataCC(const UINT16 doorId, const UINT16 wPsdEditGroupInfo);
|
||||
|
||||
/*
|
||||
* 功能描述:获取PSD的VOBC控制命令CC
|
||||
* 参数说明:const UINT16 doorId,屏蔽门ID
|
||||
* 返 回 值:0x00-默认值
|
||||
* 0x55-打开PSD命令
|
||||
* 0xAA-关闭PSD命令
|
||||
* 0xFF-查询PSD命令
|
||||
* Created By LQ 2025.11.05
|
||||
*/
|
||||
UINT8 GetPsdVobcCmdCC(const UINT16 doorId);
|
||||
|
||||
/*
|
||||
* 功能描述: 获取当前控制该PSD的VOBC的编号CC
|
||||
* 参数说明: const UINT16 doorId,屏蔽门ID
|
||||
* 返 回 值: VOBC ID
|
||||
* Created By LQ 2025.11.05
|
||||
*/
|
||||
UINT16 GetPsdVobcIdCC(const UINT16 doorId);
|
||||
|
||||
/*
|
||||
* 功能描述:获得该PSD的控制命令的设置周期CC
|
||||
* 参数说明:const UINT16 doorId,屏蔽门ID
|
||||
* 返 回 值:该PSD的控制命令的设置周期
|
||||
* Created By LQ 2025.11.05
|
||||
*/
|
||||
UINT32 GetPsdCmdSetCycleCC(const UINT16 doorId);
|
||||
|
||||
/*
|
||||
* 功能描述:设置PSD的VOBC操作命令CC
|
||||
* 参数说明:const UINT16 doorId 屏蔽门ID
|
||||
* const UINT16 vobcId 操作屏蔽门的VOBC ID
|
||||
* const UINT8 operCmd 来自VOBC的开关门命令
|
||||
* const UINT32 dwCycNum 周期号
|
||||
* 返 回 值:无
|
||||
* Created By LQ 2025.11.05
|
||||
*/
|
||||
void SetPsdVobcCmdCC(const UINT16 doorId, const UINT16 vobcId, const UINT8 operCmd, const UINT32 dwCycNum);
|
||||
|
||||
/*
|
||||
* 功能描述:获取指定ID屏蔽门编组信息CC
|
||||
* 参数说明:const UINT16 doorId, 屏蔽门ID
|
||||
* 返 回 值:0 无编组信息
|
||||
* 3 三编组
|
||||
* 4 四编组
|
||||
* 6 六编组
|
||||
* 8 八编组
|
||||
*/
|
||||
UINT16 GetPsdEditGroupInfoData(const UINT16 doorId);
|
||||
/*
|
||||
* 功能描述:设置指定ID屏蔽门编组信息
|
||||
* 参数说明:const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT16 wPsdEditGroupInfo 屏蔽门编组信息
|
||||
* 返 回 值:无
|
||||
*/
|
||||
void SetPsdEditGroupInfoData(const UINT16 doorId, const UINT16 wPsdEditGroupInfo);
|
||||
/*
|
||||
* 功能描述:获取指定ID屏蔽门间隙探测互锁解除故障状态
|
||||
* 参数说明:const UINT16 doorId, 屏蔽门ID
|
||||
* 返 回 值: 0 返回失败
|
||||
* 0< 间隙探测互锁解除故障状态
|
||||
*/
|
||||
UINT8 GetPsdJXTCMutualLockFaultState(const UINT16 doorId);
|
||||
/*
|
||||
* 功能描述:设置指定ID屏蔽门间隙探测互锁解除故障状态
|
||||
* 参数说明:const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT8 wJXTCMutualLockFaultState 间隙探测互锁解除故障状态
|
||||
* 返 回 值:无
|
||||
*/
|
||||
void SetPsdJXTCMutualLockFaultState(const UINT16 doorId, const UINT8 wJXTCMutualLockFaultState);
|
||||
/*
|
||||
* 功能描述:获取指定ID屏蔽门间隙探测互锁解除时间
|
||||
* 参数说明:const UINT16 doorId, 屏蔽门ID
|
||||
* 返 回 值: 0 返回失败
|
||||
* 0< 屏蔽门间隙探测互锁解除时间
|
||||
*/
|
||||
UINT32 GetPsdJXTCMutualLockStartCycNum(const UINT16 doorId);
|
||||
/*
|
||||
* 功能描述:设置指定ID屏蔽门间隙探测互锁解除起始时间
|
||||
* 参数说明:const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT32 cycnum 互锁解除起始时间
|
||||
* 返 回 值:无
|
||||
*/
|
||||
void SetPsdJXTCMutualLockStartCycNum(const UINT16 doorId, const UINT32 cycnum);
|
||||
|
||||
/*
|
||||
* 功能描述: 设置指定ID屏蔽门IBP盘发车按钮状态
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* UINT8 setFlag 需设置的按钮状态
|
||||
* 返回值 : PSD_BUTTON_PANGLU_STATE_VALID 0x55 有效
|
||||
* PSD_BUTTON_PANGLU_STATE_INVALID 0xaa 无效
|
||||
*/
|
||||
UINT8 SetPsdButtonIbpState(const UINT16 doorId, const UINT8 setFlag);
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门IBP按下起始周期号
|
||||
* 参数说明: const UINT16 doorId,屏蔽门ID
|
||||
* 返回值 : 0: 获取数据失败
|
||||
* >0: 起始周期号
|
||||
*/
|
||||
UINT32 GetIBPPressCycNum(const UINT16 doorId);
|
||||
/*
|
||||
* 功能描述: 获取指定ID屏蔽门IBP盘发车按钮状态
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* 返回值 :0: 获取数据失败
|
||||
* >0: IBP盘发车按钮状态
|
||||
*/
|
||||
UINT8 GetPsdButtonIbpState(const UINT16 doorId);
|
||||
/*
|
||||
* 功能描述:设置指定ID屏蔽门IBP按下起始周期号
|
||||
* 参数说明: const UINT16 doorId, 屏蔽门ID
|
||||
* const UINT32 startCycNum, 起始周期号
|
||||
* 返回值 : 0: 设置数据失败
|
||||
* >0: 设置数据成功
|
||||
*/
|
||||
UINT8 SetIBPPressCycNum(const UINT16 doorId, const UINT32 startCycNum);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -67,15 +67,36 @@
|
||||
#define PSD_FAULT_ISOLATION_SCX ((UINT8)0x81U) /*试车线屏蔽门设置故障隔离信息:1和8门隔离*/
|
||||
#define PSD_OPEN_STATE_SCX ((UINT32)0xFFFFFF7EU) /*试车线故障隔离时屏蔽门打开状态,除1和8门外,全部打开*/
|
||||
|
||||
/*屏蔽门驱动电源状态*/
|
||||
#define PSD_DRIVE_POWER_NORMAL ((UINT8)0x55U) /*驱动电源状态正常*/
|
||||
#define PSD_DRIVE_POWER_ERROR ((UINT8)0xAAU) /*驱动电源状态故障*/
|
||||
|
||||
/*屏蔽门控制电源状态*/
|
||||
#define PSD_CONTROL_POWER_NORMAL ((UINT8)0x55U) /*控制电源状态正常*/
|
||||
#define PSD_CONTROL_POWER_ERROR ((UINT8)0xAAU) /*控制电源状态故障*/
|
||||
|
||||
/*屏蔽门边缘控制器状态*/
|
||||
#define PSD_EDGE_CONTROLLER_NORMAL ((UINT8)0x55U) /*边缘控制器状态正常*/
|
||||
#define PSD_EDGE_CONTROLLER_ERROR ((UINT8)0xAAU) /*边缘控制器状态故障*/
|
||||
|
||||
/*屏蔽门障碍物报警状态*/
|
||||
#define PSD_ALARM_OBS_NO ((UINT8)0xAAU) /*无故障物*/
|
||||
#define PSD_ALARM_OBS_YES ((UINT8)0x55U) /*有故障物*/
|
||||
|
||||
/*屏蔽门开关门故障状态*/
|
||||
#define PSD_OPEN_CLOSE_NORMAL ((UINT8)0x55U) /*开关门故障状态为正常*/
|
||||
#define PSD_OPEN_CLOSE_ERROR ((UINT8)0xAAU) /*开关门故障状态为故障*/
|
||||
|
||||
/*燕房线FAO编组信息定义*/
|
||||
#define PSD_FOUR_EDIT_GROUP_FAO_YF ((UINT8)0x01U) /*四编组*/
|
||||
#define PSD_SIX_EDIT_GROUP_FAO_YF ((UINT8)0x02U) /*六编组*/
|
||||
|
||||
/*屏蔽门编组信息定义*/
|
||||
#define PSD_FOUR_EDIT_GROUP ((UINT8)0x04U) /*Ëıà×é*/
|
||||
#define PSD_SIX_EDIT_GROUP ((UINT8)0x06U) /*Áù±à×é*/
|
||||
#define PSD_EIGHT_EDIT_GROUP ((UINT8)0x08U) /*°Ë±à×é*/
|
||||
#define PSD_EDIT_GROUP_DEFAULT ((UINT16)0x00U) /*默认值*/
|
||||
#define PSD_THREE_EDIT_GROUP ((UINT16)0x03U) /*三编组*/
|
||||
#define PSD_FOUR_EDIT_GROUP ((UINT16)0x04U) /*四编组*/
|
||||
#define PSD_SIX_EDIT_GROUP ((UINT16)0x06U) /*六编组*/
|
||||
#define PSD_EIGHT_EDIT_GROUP ((UINT16)0x08U) /*八编组*/
|
||||
|
||||
/*办理出来的出站进路信号关闭是否在屏蔽门打开之前的标志*/
|
||||
#define PSD_OPEN_BEFORE_SIG_CLOSE_YES ((UINT8)0xaaU) /*屏蔽门打开之前信号关闭*/
|
||||
@@ -87,6 +108,10 @@
|
||||
#define PSD_VIRTUAL_ATTR_YES ((UINT8)0x55U) /*是虚拟屏蔽门*/
|
||||
#define PSD_VIRTUAL_ATTR_NO ((UINT8)0xaaU) /*不是虚拟屏蔽门*/
|
||||
|
||||
/*屏蔽门控制类型*/
|
||||
#define PSD_CONTROL_TYPE_OC_P ((UINT8)0x55u) /*由OC-P控制*/
|
||||
#define PSD_CONTROL_TYPE_RCI ((UINT8)0xAAu) /*由RCI控制*/
|
||||
|
||||
/*障碍物信息*/
|
||||
#define PSD_REMORA_YES ((UINT8)0xAAU) /*有障碍物*/
|
||||
#define PSD_REMORA_NO ((UINT8)0x55U) /*已检测且无障碍物*/
|
||||
@@ -110,6 +135,7 @@
|
||||
#define PLATFORM_DEPAR_BUTTON_STATE_VALID ((UINT8)0x55U) /*有效*/
|
||||
#define PLATFORM_DEPAR_BUTTON_STATE_INVALID ((UINT8)0xaaU) /*无效*/
|
||||
#define PLATFORM_DEPAR_BUTTON_NO ((UINT8)0xccU) /*无站台发车按钮*/
|
||||
#define PLATFORM_DEPAR_BUTTON_STATE_FAULT ((UINT8)0xffU) /*站台发车按钮故障(IBP)*/
|
||||
|
||||
/*站台按钮旁路状态*/
|
||||
#define PSD_BUTTON_PANGLU_STATE_VALID ((UINT8)0x55U) /*有效*/
|
||||
@@ -172,4 +198,24 @@
|
||||
#define VIDEO_QK_DRIVE_STATE_TESTING ((UINT8)0xccU) /*视频清客驱动状态—检测中*/
|
||||
#define VIDEO_QK_DRIVE_STATE_INVALID ((UINT8)0xffU) /*视频清客驱动状态—无效*/
|
||||
|
||||
/*屏蔽门异常打开状态*/
|
||||
#define PSD_EXCEPT_OPEN_NO ((UINT8)0xAAU) /*未异常打开*/
|
||||
#define PSD_EXCEPT_OPEN_YES ((UINT8)0x55U) /*异常打开*/
|
||||
|
||||
/*OC-P旁路状态确认*/
|
||||
#define OC_PSC_PL_CONFIRM_YES ((UINT8)0xaaU) /*OC-P旁路状态已确认*/
|
||||
#define OC_PSC_PL_CONFIRM_NO ((UINT8)0x55U) /*OC-P旁路状态未确认*/
|
||||
|
||||
/*获取屏蔽门信息*/
|
||||
#define HIGH_FOUR_CHAR ((UINT8)0U) /*高四字节*/
|
||||
#define LOW_FOUR_CHAR ((UINT8)1U) /*低四字节*/
|
||||
|
||||
|
||||
/*间隙探测互锁解除故障状态*/
|
||||
#define JXTC_MUTUALLOCKFAULT_YES ((UINT8)0x55U) /*间隙探测互锁解除按钮故障*/
|
||||
#define JXTC_MUTUALLOCKFAULT_NO ((UINT8)0xaaU) /*间隙探测互锁解除按钮未故障*/
|
||||
#define JXTC_MUTUALLOCKFAULT_NOCHECK ((UINT8)0xFFU) /*间隙探测互锁解除按钮未检测*/
|
||||
|
||||
|
||||
#define PSD_INCLUDE_ESB_NUM ((UINT8)10U) /*ESB个数*/
|
||||
#endif
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
#define ATS_CMD_SECTION_FENGSUO_CANCEL ((UINT8)0x61) /*区段解封*/
|
||||
#define ATS_CMD_PHYSEC_PRE_RESET_ONE ((UINT8)0x62) /*计轴预复位一次*/
|
||||
#define ATS_CMD_PHYSEC_PRE_RESET_TWO ((UINT8)0x63) /*计轴预复位二次*/
|
||||
#define ATS_CMD_CANCEL_XICHE ((UINT8)0x64) /*现地取消洗车命令*/
|
||||
#define ATS_CMD_CANCEL_XICHE ((UINT8)0x64) /*取消降级模式洗车命令*/
|
||||
#define ATS_CMD_PHYSEC_GENERAL_RESET_SET ((UINT8)0x65) /*计轴总复位命令*/
|
||||
#define ATS_CMD_PHYSEC_GENERAL_RESET_CANCEL ((UINT8)0x66) /*取消计轴总复位命令*/
|
||||
#define ATS_CMD_CICI_NET_TO_RELAY_ONE ((UINT8)0x68) /*联锁与联锁网络接口转继电接口一次命令*/
|
||||
@@ -115,10 +115,9 @@
|
||||
#define ATS_CMD_PSC_PL_ONE ((UINT8)0x70) /*设置PSC旁路一次命令*/
|
||||
#define ATS_CMD_PSC_PL_TWO ((UINT8)0x71) /*设置PSC旁路二次命令*/
|
||||
#define ATS_CMD_QUXIAO_PSC_PL_ONE ((UINT8)0x72) /*取消PSC旁路一次命令*/
|
||||
#define ATS_CMD_QUXIAO_PSC_PL_TWO ((UINT8)0x73) /*取消PSC旁路二次命令*/
|
||||
#define ATS_CMD_ROUTE_GROUP_AUTO_SET ((UINT8)0x74) /*办理组合自动进路命令*/
|
||||
#define ATS_CMD_ROUTE_GROUP_AUTO_CANCLE ((UINT8)0x75) /*取消组合自动进路命令*/
|
||||
|
||||
#define ATS_CMD_QUXIAO_PSC_PL_TWO ((UINT8)0x73) /*取消PSC旁路二次命令*/
|
||||
#define ATS_CMD_ROUTE_GROUP_AUTO_SET ((UINT8)0x74) /*办理组合自动进路命令*/
|
||||
#define ATS_CMD_ROUTE_GROUP_AUTO_CANCLE ((UINT8)0x75) /*取消组合自动进路命令*/
|
||||
#define ATS_CMD_SIGNALMAINTAINSTATE_ONE ((UINT8)0x76) /*信号机维修点灯一次*/
|
||||
#define ATS_CMD_SIGNALMAINTAINSTATE_TWO ((UINT8)0x77) /*信号机维修点灯二次*/
|
||||
#define ATS_CMD_CANCEL_SIG_MAINTAIN_ONE ((UINT8)0x78) /*取消信号机维修点灯一次*/
|
||||
@@ -127,17 +126,12 @@
|
||||
#define ATS_CMD_CANCEL_SW_ALARM_TWO ((UINT8)0x7b) /*取消转辙机封连报警二次命令*/
|
||||
#define ATS_CMD_RECOVER_SW_ALARM_ONE ((UINT8)0x7c) /*恢复转辙机封连报警一次命令*/
|
||||
#define ATS_CMD_RECOVER_SW_ALARM_TWO ((UINT8)0x7d) /*恢复转辙机封连报警二次命令*/
|
||||
|
||||
#define LABOR_CMD_CANCEL_OVERLAP_ONE ((UINT8)0x7e) /* 人工取消保护区段一次命令 */
|
||||
#define LABOR_CMD_CANCEL_OVERLAP_TWO ((UINT8)0x7f) /* 人工取消保护区段二次命令 */
|
||||
#define LABOR_CMD_SET_UP_OVERLAP ((UINT8)0x80) /* 人工建立保护区段命令,合代码暂时改成80 */
|
||||
|
||||
#define ATS_CMD_ROUTE_APPLY ((UINT8)0x92) /*申请路径*/
|
||||
#define ATS_CMD_ROUTE_APPLY_CANCLE ((UINT8)0x93) /*取消申请路径*/
|
||||
#define ATS_CMD_ROUTE_PART_APPLY ((UINT8)0x94) /*申请部分路径*/
|
||||
#define ATS_CMD_ROUTE_PART_APPLY_CANCEL ((UINT8)0x95) /*取消申请部分路径*/
|
||||
#define ATS_CMD_AUTO_RETURN_SET_ONE ((UINT8)0x96) /*自动折返一次有效命令*/
|
||||
#define ATS_CMD_AUTO_RETURN_CMD_CANCEL ((UINT8)0x97) /*取消自动折返命令*/
|
||||
#define ATS_CMD_SET_PHYSEC_ERR ((UINT8)0x98) /*物理区段故障占用设置命令*/
|
||||
#define ATS_CMD_CANCEL_PHYSEC_FIRST ((UINT8)0x99) /*物理区段故障占用取消一次命令*/
|
||||
#define ATS_CMD_CANCEL_PHYSEC_SECOND ((UINT8)0x9a) /*物理区段故障占用取消二次命令*/
|
||||
@@ -146,22 +140,29 @@
|
||||
#define ATS_CMD_OPEN_XIANSU_SIGNAL_FIRST ((UINT8)0x9d) /*开放限速信号一次*/
|
||||
#define ATS_CMD_OPEN_XIANSU_SIGNAL_SECOND ((UINT8)0x9e) /*开放限速信号二次*/
|
||||
#define ATS_CMD_OPEN_XIANSU_SIGNAL_SPECIAL ((UINT8)0xa6) /*限速信号特殊开放*/
|
||||
|
||||
|
||||
|
||||
#define ATS_CMD_OC_P_PL_ONE ((UINT8)0xa8) /*设置OC-P旁路一次命令*/
|
||||
#define ATS_CMD_OC_P_PL_TWO ((UINT8)0xa9) /*设置OC-P旁路二次命令*/
|
||||
#define ATS_CMD_QUXIAO_OC_P_PL_ONE ((UINT8)0xaa) /*取消OC-P旁路一次命令*/
|
||||
#define ATS_CMD_QUXIAO_OC_P_PL_TWO ((UINT8)0xab) /*取消OC-P旁路二次命令*/
|
||||
#define ATS_CMD_GET_CTRL_POWER ((UINT8)0x81) /* 获取联锁控制权*/
|
||||
#define ATS_CMD_RELEASE_CTRL_POWER ((UINT8)0x82) /* 释放联锁控制权*/
|
||||
|
||||
#define ATS_CMD_ROUTE_AUTO_TRIGGER_SET (UINT8)0x83 /*单个进路自动触发进路办理 */
|
||||
#define ATS_CMD_ROUTE_CANCLE_AUTO_TRIGGER (UINT8)0x84 /*单个进路取消自动触发进路 */
|
||||
#define ATS_CMD_SWITCH_DINGWEI_TEST_ONE ((UINT8)0x85) /* 道岔定位测试一次命令*/
|
||||
#define ATS_CMD_SWITCH_DINGWEI_TEST_TWO ((UINT8)0x86) /* 道岔定位测试二次命令*/
|
||||
#define ATS_CMD_SWITCH_FANWEI_TEST_ONE ((UINT8)0x87) /* 道岔反位测试一次命令*/
|
||||
#define ATS_CMD_SWITCH_FANWEI_TEST_TWO ((UINT8)0x88) /*道岔反位测试二次命令*/
|
||||
|
||||
#define SCX_ATS_CMD_ESS_GO_POSITION (UINT8)0x89 /*ESS去位命令*/
|
||||
#define SCX_ATS_CMD_ESS_STOP_POSITION (UINT8)0x90 /*ESS停位命令*/
|
||||
#define ATS_CMD_STATION_QK_SET (UINT8)0x91 /*站台清客标志设置 */
|
||||
#define ATS_CMD_EMERG_XS_SET_ONE (UINT8)0xAC /*设置紧急临时限速一次命令 */
|
||||
#define ATS_CMD_EMERG_XS_SET_TWO (UINT8)0xAD /*设置紧急临时限速二次命令 */
|
||||
#define ATS_CMD_EMERG_XS_CANCEL_ONE (UINT8)0xAE /*取消紧急临时限速一次命令 */
|
||||
#define ATS_CMD_EMERG_XS_CANCEL_TWO (UINT8)0xAF /*取消紧急临时限速二次命令 */
|
||||
#define ATS_CMD_COUPLING_ROUTE_SET (UINT8)0xB0 /*联挂进路办理 */
|
||||
#define ATS_CMD_APPLY_XICHE ((UINT8)0xB1) /*降级模式洗车请求*/
|
||||
#define ATS_CMD_APPLY_PASSXICHE ((UINT8)0xB2) /*现地请求反向洗车命令-降级模式*/
|
||||
#define ATS_CMD_CANCEL_PASSXICHE ((UINT8)0xB3) /*现地取消反向洗车命令-降级模式*/
|
||||
|
||||
/****联锁到其他联锁的命令宏定义****/
|
||||
#define CI_CMD_PHYSEC_USING_APPLY ((UINT16)0x0001) /*物理区段征用申请*/
|
||||
@@ -213,7 +214,7 @@
|
||||
#define VOBCTOCI_COMMAND_TYPE_PSDCHECK ((UINT8)0x00) /*查询PSD命令*/
|
||||
#define VOBCTOCI_COMMAND_TYPE_PSDOPEN ((UINT8)0x55) /*打开PSD命令*/
|
||||
#define VOBCTOCI_COMMAND_TYPE_PSDCLOSE ((UINT8)0xAA) /*关闭PSD命令*/
|
||||
#define VOBCTOCI_COMMAND_TYPE_PSDCHECK_FAOHLHT ((UINT8)0xFF) /*查询PSD命令(新机场线查询命令)*/
|
||||
#define VOBCTOCI_COMMAND_TYPE_PSDCHECK_FAOHLHT ((UINT8)0xFF) /*查询PSD命令(新机场线查询命令)、PSD命令默认值*/
|
||||
|
||||
/****联锁到ATS反馈信息宏定义****/
|
||||
/*反馈信息类型*/
|
||||
@@ -234,7 +235,7 @@
|
||||
#define CI_BACK_ROUTE_LOCK_NOTALL ((UINT8)0x06) /*进路不完整锁闭?新增?*/
|
||||
|
||||
#define CI_BACK_ROUTE_LEVEL_CBTC ((UINT8)0x08) /*进路监督级别不为点式?未使用?*/
|
||||
#define CI_BACK_ROUTE_LEVEL_BLOC ((UINT8)0x00) /*进路监督级别不为CBTC?未使用?*/
|
||||
#define CI_BACK_ROUTE_LEVEL_BLOC ((UINT8)0xBA) /*进路监督级别不为CBTC*/
|
||||
#define CI_BACK_ROUTE_TYPE_ERROR ((UINT8)0x00) /*进路类型异常?未使用?*/
|
||||
#define CI_BACK_ROUTE_STATE_ERROR ((UINT8)0x59) /*进路建立条件不满足*/
|
||||
#define CI_BACK_RETURN_ROUTE_STATE_ERROR ((UINT8)0x5A) /*折返进路不允许追踪办理*/
|
||||
@@ -245,6 +246,8 @@
|
||||
#define CI_BACK_GROUP_AUTO_ROUTE_SET_ERR ((UINT8)0x7e) /*组合自动进路自动属性设置失败*/
|
||||
|
||||
#define CI_BACK_AUTO_TRIGGER_SET_ERR (UINT8)0x85 /*进路的自动触发标志设置失败*/
|
||||
#define CI_BACK_LEAD_ROUTE_CANCEL ((UINT8)0xA4) /*引导进路无法使用总取消解锁反馈*/
|
||||
#define CI_BACK_COUPLINK_ROUTE_IDLE ((UINT8)0xAF) /*联挂进路内无被联挂车*/
|
||||
|
||||
/*信号机故障反馈*/
|
||||
#define CI_BACK_SIG_START_OPEN ((UINT8)0x11) /*进路始端信号机开放*/
|
||||
@@ -285,6 +288,7 @@
|
||||
#define CI_BACK_PSEC_RESET_IN_CT ((UINT8)0x58) /*计轴复位中CT占用*/
|
||||
#define UNLOCK_OVELAP_CANNOT (UINT8)0x80 /*解锁保护区段条件不满足*/
|
||||
#define LOCK_OVELAP_OUT_CANNOT (UINT8)0x81 /*保护区段锁闭条件不满足*/
|
||||
#define CI_BACK_PSEC_RESET_ING ((UINT8)0xAE) /*物理区段正在计轴复位*/
|
||||
|
||||
/*道岔故障反馈*/
|
||||
#define CI_BACK_SWT_YLOCK_YES ((UINT8)0x31) /*道岔引导总锁*/
|
||||
@@ -298,7 +302,8 @@
|
||||
#define CI_BACK_SWT_POS_ERROR ((UINT8)0x37) /*道岔位置错误*/
|
||||
#define CI_BACK_SWT_MOVE_VALID ((UINT8)0x00) /*道岔不可动作*/
|
||||
#define CI_BACK_SWT_MOVE_OT ((UINT8)0x39) /*道岔动作超时*/
|
||||
#define CI_BACK_SWT_BYPASS_CANCEL_NO ((UINT8)0x93) /*联络线道岔旁路未及时取消*/
|
||||
#define CI_BACK_SWT_BYPASS_CANCEL_NO ((UINT8)0x93) /*联络线道岔旁路未及时取消*/
|
||||
#define CI_BACK_SWT_MOVE ((UINT8)0xA3) /*道岔转动中*/
|
||||
/* zt 删除单轨相关代码 2022-02-15 */
|
||||
#define CI_BACK_SWT_USING ((UINT8)0x3f) /*道岔征用中*/
|
||||
#define CI_BACK_SWT_MOVE_ERR ((UINT8)0x84) /*道岔搬动失败*/
|
||||
@@ -332,6 +337,14 @@
|
||||
#define CI_BACK_OTHER_ROUTE_NOT_OPEN ((UINT8)0x9D) /*进路其他联锁条件需开放进路未开放*/
|
||||
#define CI_BACK_WASH_PASS_ALLOW_NOT ((UINT8)0x9E) /*洗车库/线未同意通过*/
|
||||
|
||||
#define CI_BACK_WASH_APPLY_NOT ((UINT8)0xB3) /*洗车机洗车请求有效,请勿重复操作*/
|
||||
#define CI_BACK_WASH_PASSAPPLY_NOT ((UINT8)0xB4) /*洗车机反向通过请求有效,请勿重复操作*/
|
||||
#define CI_BACK_ROUTE_IDLE_NOT ((UINT8)0xB5) /*进路未空闲,请先取消进路*/
|
||||
#define CI_BACK_WASH_BUTTON_PRESS_NOT ((UINT8)0xB6) /*洗车同意按钮未按下,不需要取消*/
|
||||
#define CI_BACK_WASH_PASSBUTTON_PRESS_NOT ((UINT8)0xB7) /*洗车反向通过同意按钮未按下,不需要取消*/
|
||||
#define CI_BACK_WASH_APPLY_BUTTON_NOT ((UINT8)0xB8) /*洗车机XXX洗车同意按钮在规定时间内未按下,洗车请求失效*/
|
||||
#define CI_BACK_WASH_PASS_BUTTON_NOT ((UINT8)0xB9) /*洗车机XXX反向同意按钮在规定时间内未按下,反向通过请求失效*/
|
||||
|
||||
/* 设置与取消物理区段故障列车占用反馈 */
|
||||
#define CI_BACK_SPE_TRAIN_DIR_ERR ((UINT8)0x86) /*设置物理区段故障车占用:与已存在的故障车方向不一致*/
|
||||
#define CI_BACK_SPE_LOOK_DIR_ERR ((UINT8)0x87) /*设置物理区段故障车占用:与物理区段锁闭方向不一致*/
|
||||
@@ -404,8 +417,16 @@
|
||||
#define CI_BACK_SEC_UPDATA_ERROR ((UINT8)0x00) /* 区段更新失败 */
|
||||
#define CI_BACK_SWT_UPDATA_ERROR ((UINT8)0x00) /* 道岔更新失败 */
|
||||
|
||||
|
||||
|
||||
/*动态路径命令反馈*/
|
||||
#define CI_BACK_DYM_ROUTE_CONTINUOUS ((UINT8)0xA5) /*动态路径命令条件不满足:逻辑区段不连续*/
|
||||
#define CI_BACK_DYM_ROUTE_RES ((UINT8)0xA6) /*动态路径命令条件不满足:列车占压逻辑区段资源不齐全或不唯一*/
|
||||
#define CI_BACK_DYM_ROUTE_MATCH_ROUTE ((UINT8)0xA7) /*动态路径命令条件不满足:逻辑区段序列未匹配到进路*/
|
||||
#define CI_BACK_DYM_ROUTE_SCREEN ((UINT8)0xA8) /*动态路径命令条件不满足:列车未完成筛选*/
|
||||
#define CI_BACK_DYM_ROUTE_SEC_CBTC ((UINT8)0xA9) /*动态路径命令条件不满足:逻辑区段非CBTC区域*/
|
||||
#define CI_BACK_DYM_ROUTE_REPEAT ((UINT8)0xAA) /*动态路径命令条件不满足:重复办理*/
|
||||
#define CI_BACK_DYM_ROUTE_SEC_ATTR ((UINT8)0xAB) /*动态路径命令条件不满足:场段仅支持休眠唤醒轨一个区段的动态路径办理*/
|
||||
#define CI_BACK_DYM_ROUTE_TRAIN_COMM ((UINT8)0xAC) /*动态路径命令条件不满足:场段RC与列车通信中断*/
|
||||
#define CI_BACK_DYM_ROUTE_TRAIN_POS ((UINT8)0xAD) /*动态路径命令条件不满足:场段列车不完全处在休眠唤醒轨*/
|
||||
|
||||
#define CI_BACK_DATA_INFO_TYPE_ERR ((UINT8)0xf1) /* CI与其他子系统数据接口信息类型错误 */
|
||||
#define CI_BACK_DATA_SEND_FLAG_ERR ((UINT8)0xf2) /* CI与其他子系统数据发送方标识信息错误 */
|
||||
@@ -435,15 +456,17 @@
|
||||
|
||||
#define CI_BACK_AUTO_ROUTE_HAVE_BLOCK ((UINT8)0x95) /*自动通过进路自动进路存在封锁*/
|
||||
#define CI_BACK_AUTO_ROUTE_FLOOD_STATE_ERR ((UINT8)0x96) /*自动通过进路存在防淹门不满足*/
|
||||
#define CI_BACK_AUTO_ROUTE_COUPROUTE_SET ((UINT8)0xB0) /*自动通过联挂进路已办理*/
|
||||
|
||||
|
||||
|
||||
#define CI_BACK_AUTO_RETURN_HAVE_BLOCK ((UINT8)0x98) /*自动折返进路存在封锁*/
|
||||
#define CI_BACK_AUTO_RETURN_FLOOD_STATE_ERR ((UINT8)0x99) /*自动折返进路存在防淹门不满足*/
|
||||
|
||||
#define CI_BACK_AUTO_RETURN_COUPROUTE_SET ((UINT8)0xB1) /*自动折返联挂进路已办理*/
|
||||
|
||||
#define CI_BACK_ALLAUTO_RETURN_HAVE_BLOCK ((UINT8)0x9B) /*全自动折返进路存在封锁*/
|
||||
#define CI_BACK_ALLAUTO_RETURN_FLOOD_STATE_ERR ((UINT8)0x9C) /*全自动折返进路存在防淹门不满足*/
|
||||
|
||||
#define CI_BACK_ALLAUTO_RETURN_COUPROUTE_SET ((UINT8)0xB2) /*全自动折返联挂进路已办理*/
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user