2 Commits

Author SHA1 Message Date
lh 6f48be84e9 9.3.1首版首轮基线版本 2026-08-13 18:58:25 +08:00
lh 65594a600d [9.3.1] 9.3.1首版首轮代码,基线版本 2026-06-30 11:09:21 +08:00
342 changed files with 34979 additions and 95664 deletions
+61 -60
View File
@@ -20,23 +20,77 @@ LD = $(CC)
#INCLUDES += -I/path/to/my/lib/include #INCLUDES += -I/path/to/my/lib/include
#INCLUDES += -I../mylib/public #INCLUDES += -I../mylib/public
INCLUDES += -I ./src/commoncode/common \ INCLUDES += -I ./src/APP \
-I ./src/APP/ciapp/2oo2 \
-I ./src/APP/ciapp/AllAutoReturn \
-I ./src/APP/ciapp/AutoReturn \
-I ./src/APP/ciapp/AutoRoute \
-I ./src/APP/ciapp/AxisAssert \
-I ./src/APP/ciapp/AxisSort \
-I ./src/APP/ciapp/CutoffPoint \
-I ./src/APP/ciapp/DataManage \
-I ./src/APP/ciapp/DebugPrint \
-I ./src/APP/ciapp/Deployment \
-I ./src/APP/ciapp/DiffLineDev \
-I ./src/APP/ciapp/EnvelopeManage \
-I ./src/APP/ciapp/ERROR \
-I ./src/APP/ciapp/ESB \
-I ./src/APP/ciapp/FloodGate \
-I ./src/APP/ciapp/Garagedoor \
-I ./src/APP/ciapp/HLHTMsgHead \
-I ./src/APP/ciapp/Indicator \
-I ./src/APP/ciapp/Initial \
-I ./src/APP/ciapp/InvadeSection \
-I ./src/APP/ciapp/IO \
-I ./src/APP/ciapp/LogicManage \
-I ./src/APP/ciapp/LogicProcess \
-I ./src/APP/ciapp/LogRecord \
-I ./src/APP/ciapp/Main \
-I ./src/APP/ciapp/Mask \
-I ./src/APP/ciapp/NonAutoReturn \
-I ./src/APP/ciapp/NonRoute \
-I ./src/APP/ciapp/Overlap \
-I ./src/APP/ciapp/ParsePack \
-I ./src/APP/ciapp/PSC \
-I ./src/APP/ciapp/PSD \
-I ./src/APP/ciapp/QueryFiles \
-I ./src/APP/ciapp/Relay \
-I ./src/APP/ciapp/RemoteRM \
-I ./src/APP/ciapp/ReverseCut \
-I ./src/APP/ciapp/ReverseRoute \
-I ./src/APP/ciapp/Route \
-I ./src/APP/ciapp/Section \
-I ./src/APP/ciapp/SectionStateProcess \
-I ./src/APP/ciapp/SGBJ \
-I ./src/APP/ciapp/Signal \
-I ./src/APP/ciapp/SPKS \
-I ./src/APP/ciapp/Switch \
-I ./src/APP/ciapp/System \
-I ./src/APP/ciapp/Train \
-I ./src/APP/ciapp/Transmit \
-I ./src/APP/ciapp/VirtualDevice \
-I ./src/APP/ciapp/WashMachine \
-I ./src/APP/ciapp/WLScreen \
-I ./src/APP/ciapp/WLBrake \
-I ./src/APP/PU13_integration_config \
-I ./src/commoncode/common \
-I ./src/commoncode/commoncode_config_vxworks \ -I ./src/commoncode/commoncode_config_vxworks \
-I ./src/dqu_common/dqu_idmap_common \ -I ./src/dqu_common/dqu_idmap_common \
-I ./src/dqu_common/dqu_emap_common \ -I ./src/dqu_common/dqu_emap_common \
-I ./src/dqu_common/dqu_dfs_common \ -I ./src/dqu_common/dqu_dfs_common \
-I ./src/dqu_common/dqu_cbtc_common \ -I ./src/dqu_common/dqu_cbtc_common \
-I .\src\protocol\fsfb\common_dqu_fsfb \
-I .\src\protocol\fsfb\common_fsfb \
-I .\src\protocol\protocol_cbtc\common_protocol_config \ -I .\src\protocol\protocol_cbtc\common_protocol_config \
-I .\src\protocol\protocol_cbtc\common_dqu_protocol \ -I .\src\protocol\protocol_cbtc\common_dqu_protocol \
-I .\src\protocol\protocol_cbtc\common_protocol \ -I .\src\protocol\protocol_cbtc\common_protocol \
-I .\src\protocol\protocol_cbtc\common_protocol_sfp_rsspi-config \
-I .\src\protocol\redun_record_cbtc\common_dqu_rp \ -I .\src\protocol\redun_record_cbtc\common_dqu_rp \
-I .\src\protocol\redun_record_cbtc\common_redun \ -I .\src\protocol\redun_record_cbtc\common_redun \
-I .\src\protocol\redun_record_cbtc\common_redun_record_config \ -I .\src\protocol\redun_record_cbtc\common_redun_record_config \
-I .\src\protocol\rsr_record_cbtc\common_dqu_rsr \ -I .\src\protocol\rsr_record_cbtc\common_dqu_rsr \
-I .\src\protocol\rsr_record_cbtc\common_rsr \
-I .\src\protocol\rsr_record_cbtc\common_rsr\rssp \ -I .\src\protocol\rsr_record_cbtc\common_rsr\rssp \
-I .\src\protocol\rsr_record_cbtc\common_rsr\sig \ -I .\src\protocol\rsr_record_cbtc\common_rsr\sig \
-I .\src\protocol\rsr_record_cbtc\common_rsr \
-I .\src\protocol\rsr_record_cbtc\common_rsr_record_config \ -I .\src\protocol\rsr_record_cbtc\common_rsr_record_config \
-I .\src\protocol\rssp_record_cbtc1\common_dqu_rssp \ -I .\src\protocol\rssp_record_cbtc1\common_dqu_rssp \
-I .\src\protocol\rssp_record_cbtc1\common_rssp \ -I .\src\protocol\rssp_record_cbtc1\common_rssp \
@@ -47,8 +101,6 @@ INCLUDES += -I ./src/commoncode/common \
-I .\src\protocol\sfp_record_cbtc1\common_dqu_sfp \ -I .\src\protocol\sfp_record_cbtc1\common_dqu_sfp \
-I .\src\protocol\sfp_record_cbtc1\common_sfp \ -I .\src\protocol\sfp_record_cbtc1\common_sfp \
-I .\src\protocol\sfp_record_cbtc1\common_sfp_nr_config \ -I .\src\protocol\sfp_record_cbtc1\common_sfp_nr_config \
-I .\src\protocol\fsfb\common_dqu_fsfb \
-I .\src\protocol\fsfb\common_fsfb \
-I ./src/DRV \ -I ./src/DRV \
-I ./src/MSCP \ -I ./src/MSCP \
-I ./src/MSCP/CM \ -I ./src/MSCP/CM \
@@ -57,65 +109,14 @@ INCLUDES += -I ./src/commoncode/common \
-I ./src/MSCP/SFM \ -I ./src/MSCP/SFM \
-I ./src/MSCP/PFM \ -I ./src/MSCP/PFM \
-I ./src/MSCP_CFG \ -I ./src/MSCP_CFG \
-I ./src/APP \ -I ./src/MSCP/Area\
-I ./src/APP/ciapp/2oo2 \ -I ./src/MSCP/OFM\
-I ./src/APP/ciapp/AllAutoReturn \
-I ./src/APP/ciapp/AutoReturn \
-I ./src/APP/ciapp/AutoRoute \
-I ./src/APP/ciapp/DataManage \
-I ./src/APP/ciapp/DebugPrint \
-I ./src/APP/ciapp/DiffLineDev \
-I ./src/APP/ciapp/ERROR \
-I ./src/APP/ciapp/ESB \
-I ./src/APP/ciapp/FloodGate \
-I ./src/APP/ciapp/Garagedoor \
-I ./src/APP/ciapp/HLHTMsgHead \
-I ./src/APP/ciapp/Indicator \
-I ./src/APP/ciapp/Initial \
-I ./src/APP/ciapp/InvadeSection \
-I ./src/APP/ciapp/IO \
-I ./src/APP/ciapp/LightTestButtonManage \
-I ./src/APP/ciapp/LogicManage \
-I ./src/APP/ciapp/LogicProcess \
-I ./src/APP/ciapp/LogRecord \
-I ./src/APP/ciapp/Main \
-I ./src/APP/ciapp/Mask \
-I ./src/APP/ciapp/NonRoute \
-I ./src/APP/ciapp/Overlap \
-I ./src/APP/ciapp/ParsePack \
-I ./src/APP/ciapp/PSC \
-I ./src/APP/ciapp/PSD \
-I ./src/APP/ciapp/QueryFiles \
-I ./src/APP/ciapp/Relay \
-I ./src/APP/ciapp/ReverseRoute \
-I ./src/APP/ciapp/Route \
-I ./src/APP/ciapp/Section \
-I ./src/APP/ciapp/Signal \
-I ./src/APP/ciapp/SPKS \
-I ./src/APP/ciapp/Switch \
-I ./src/APP/ciapp/System \
-I ./src/APP/ciapp/Transmit \
-I ./src/APP/ciapp/VirtualDevice \
-I ./src/APP/ciapp/WashMachine \
-I ./src/APP/PU13_integration_config \
-I ./src/APP/ciapp/AxisSort \
-I ./src/APP/ciapp/Train \
-I ./src/APP/ciapp/EnvelopeManage \
-I ./src/APP/ciapp/CutoffPoint \
-I ./src/APP/ciapp/SectionStateProcess \
-I ./src/APP/ciapp/AxisAssert \
-I ./src/APP/ciapp/ReverseCut \
-I ./src/APP/ciapp/WLScreen \
-I ./src/APP/ciapp/WLBrake \
-I ./src/APP/ciapp/RemoteRM \
-I ./src/APP/ciapp/NonAutoReturn \
-include stdarg.h
#LIBS += -L/path/to/my/lib/$(PLATFORM)/usr/lib -lmylib #LIBS += -L/path/to/my/lib/$(PLATFORM)/usr/lib -lmylib
#LIBS += -L../mylib/$(OUTPUT_DIR) -lmylib #LIBS += -L../mylib/$(OUTPUT_DIR) -lmylib
#Compiler flags for build profiles #Compiler flags for build profiles
CCFLAGS_release += -O0 CCFLAGS_release += -O2
#CCFLAGS_release += -g -O2
CCFLAGS_debug += -g -O0 -fno-builtin CCFLAGS_debug += -g -O0 -fno-builtin
CCFLAGS_coverage += -g -O0 -ftest-coverage -fprofile-arcs -nopipe -Wc,-auxbase-strip,$@ CCFLAGS_coverage += -g -O0 -ftest-coverage -fprofile-arcs -nopipe -Wc,-auxbase-strip,$@
LDFLAGS_coverage += -ftest-coverage -fprofile-arcs LDFLAGS_coverage += -ftest-coverage -fprofile-arcs
+286 -321
View File
@@ -16,10 +16,6 @@
static CM_UINT32 gFollowDataLen = 0u; /*应用跟随数据长度*/ static CM_UINT32 gFollowDataLen = 0u; /*应用跟随数据长度*/
static CM_UINT8 gFollowData[MSCP_FOLLOW_BUFF_SIZE] = { 0 }; /*应用跟随数据*/ 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协议使用的数据库数组: /*ATP、ATO、MMI间通信时,SFP协议使用的数据库数组:
@@ -29,15 +25,14 @@ extern UINT8 LocalCiId; /*系
const CM_UINT8 g_SfpInnetParam[] = const CM_UINT8 g_SfpInnetParam[] =
{ {
0,5,/*不同设备通信关系表记录个数*/ 0,4,/*不同设备通信关系表记录个数*/
/*记录的格式如下:*/ /*记录的格式如下:*/
/* 发起方 发起方发送数据 发起方报文 发起方报文 发起方接收Ack 跟随方 跟随方发送数据 跟随方运行 跟随方报文 此通信关系中成功发送 */ /* 发起方 发起方发送数据 发起方报文 发起方报文 发起方接收Ack 跟随方 跟随方发送数据 跟随方运行 跟随方报文 此通信关系中成功发送 */
/* 设备类型 通信类型 发送周期长度 最大延时 报文最大延时差 设备类型 通信类型 周期长度 最大延时 一包数据所需最小周期数 */ /* 设备类型 通信类型 发送周期长度 最大延时 报文最大延时差 设备类型 通信类型 周期长度 最大延时 一包数据所需最小周期数 */
/*ZC->CI*/ 0x22, 0x55, 0x01,0x1D, 0x01,0x1D, 0x01,0x1D, 0xff, 0x55, 0x00,0xC8, 0x00,0xC8, 0x02, /*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->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, /*AOM->ATP*/ 0x14, 0x55, 0x00,0xC8, 0x00,0xC8, 0x00,0xC8, 0x15, 0x55, 0x00,0xC8, 0x00,0xC8, 0x02,
/*RC主机->维护机*/ 0xD9, 0x55, 0x01,0x2c, 0x01,0x2C, 0x01,0x2C, 0xf8, 0x55, 0x00,0xc8, 0x00,0xc8, 0x02, /*主机->维护机*/ 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,/*相同设备通信关系表记录个数*/ 0,2,/*相同设备通信关系表记录个数*/
/*记录的格式如下:*/ /*记录的格式如下:*/
/* 发起方 发起方 发起方发送数据 发起方报文 发起方报文 发起方接收Ack 跟随方 跟随方 跟随方发送数据 跟随方运行 跟随方报文 此通信关系中成功发送 */ /* 发起方 发起方 发起方发送数据 发起方报文 发起方报文 发起方接收Ack 跟随方 跟随方 跟随方发送数据 跟随方运行 跟随方报文 此通信关系中成功发送 */
@@ -190,7 +185,6 @@ ENUM_CM_RETURN APP_API_Init(OUT CM_UINT8 VitalBuf[200], OUT CM_UINT16* pVitalLen
MSCP_SetOutAtsVobcFunc(pReserveOutVobc); MSCP_SetOutAtsVobcFunc(pReserveOutVobc);
pReserveInAts = SerialInVobcAtsFunc; pReserveInAts = SerialInVobcAtsFunc;
MSCP_SetInVobcAtsFunc(pReserveInAts); MSCP_SetInVobcAtsFunc(pReserveInAts);
MSCP_SetRCFollowUpFunc(SetCiGeneralData);
#if 1 #if 1
cSwtichFalg = GetCiFunctionSwitchConfig(FUNC_OC_200_INOUTNET); cSwtichFalg = GetCiFunctionSwitchConfig(FUNC_OC_200_INOUTNET);
@@ -230,65 +224,11 @@ void APP_API_Data_Init()
UINT16 ii = 0U; UINT16 ii = 0U;
UINT8 szFSFILEVersionFS[DFS_VERSION_LENGTH] = { 0 }; UINT8 szFSFILEVersionFS[DFS_VERSION_LENGTH] = { 0 };
UINT8 funcRetVal = 0U; 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); funcRetVal = dquGetFSVersion(DataPath, szFSFILEVersionFS);
locTypeId = MSCP_GetOutnetID(); #if 0//(kPLATFORM==kVXWORKS)
LocalCiId = (UINT8)(locTypeId & 0x00FFU); /*联锁设备ID*/ /*文件配置*/
cDevType = (UINT8)((locTypeId >> 8U) & 0x00FFU); /*RC/CI类型*/ STRU_APP_CFG_T AppCfgInterface = {
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文件名称 */ .FS_NAME = "RCI.FS", /**< FS文件名称 */
.APP_NAME = "RCOCI", /**< 应用文件名称 */ .APP_NAME = "RCOCI", /**< 应用文件名称 */
.CYC_TIME = 300, /**< 系统周期 */ .CYC_TIME = 300, /**< 系统周期 */
@@ -298,37 +238,59 @@ void APP_API_Data_Init()
.M_InnetSafe_Enable = 0x55, /**< 内网安全通信功能开关 */ .M_InnetSafe_Enable = 0x55, /**< 内网安全通信功能开关 */
.M_InnetRaw_Enable = 0xAA, /**< 内网透传通信功能开关 */ .M_InnetRaw_Enable = 0xAA, /**< 内网透传通信功能开关 */
.M_OutnetSafe_Enable = 0x55,/**< 外网安全通信功能开关 */ .M_OutnetSafe_Enable = 0x55,/**< 外网安全通信功能开关 */
.M_OutnetRaw_Enable = 0xAA, /**< 外网透传通信功能开关 */ .M_OutnetRaw_Enable = 0x55, /**< 外网透传通信功能开关 */
.M_CpuUsageGet_Enable = 0x55,/**< 获取cpu使用率功能开关 */ .M_CpuUsageGet_Enable = 0xAA,/**< 获取cpu使用率功能开关 */
.M_RemoteUpdate_Enable = 0x55,/**< 远程部署内网安全通信功能开关 */ .M_RemoteUpdate_Enable = 0x55,/**< 远程部署内网安全通信功能开关 */
.ID_Maintenance = DEVICE_TYPE_AIM, .ID_Maintenance = DEVICE_TYPE_AIM,
.Start_Path = "/emmc1", /**< 程序启动路径 */ .Start_Path = "/emmc1", /**< 程序启动路径 */
.reboot_replycount = 10, /**< 重启确认报文回复次数 */ .reboot_replycount = 10, /**< 重启确认报文回复次数 */
.M_AutoReboot_Count = 3, /**< 自动重启次数 */ .M_AutoReboot_Count = 0, /**< 自动重启次数 */
.M_AutoClear_Days = 1, /**< 连续运行多久清空宕机次数的天数 */ .M_AutoClear_Days = 1, /**< 连续运行多久清空宕机次数的天数 */
.M_Area_Enable = 0, /**< 区域状态开关配置 */ .CPU[0].IP_2oo2 = "192.168.0.11", /**< 2oo2通信IP */
.M_AREA_SEB_Enable = 0xAA, /**< RC与CI扩展板卡通信功能开关配置 */ // .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 */
.CPU[0].Logger_PortBase = 55011, /**< 明文日志记录发送端口 */ .CPU[0].Logger_PortBase = 55011, /**< 明文日志记录发送端口 */
.CPU[0].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */ .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_PortBase = 55012, /**< 明文日志记录发送端口 */
.CPU[1].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */ .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_PortBase = 55021, /**< 明文日志记录发送端口 */
.CPU[2].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */ .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_PortBase = 55022, /**< 明文日志记录发送端口 */
.CPU[3].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */ .CPU[3].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
/*通用端口配置*/ /*通用端口配置*/
.Port_Outnet_Safe = 54001, /**< 外网安全通信端口 */ .Port_Outnet_Safe = 54001, /**< 外网安全通信端口 */
.Port_Innet_Safe = 53001, /**< 内网安全通信端口 */ .Port_Innet_Safe = 53001, /**< 内网安全通信端口 */
.Port_Outnet_Raw = 54002, /**< 外网透明传输端口 */ .Port_Outnet_Raw = 54002, /**< 外网透明传输端口 */
.Port_Remote_Update = 50000, /**< 远程部署通信端口 */ .Port_Remote_Update = 50000, /**< 远程部署通信端口 */
/*透传配置-选配*/ /*透传配置-选配*/
.Port_Innet_Raw_Num = 0, /**< 内网透传端口数量 */ .Port_Innet_Raw_Num = 0, /**< 内网透传端口数量 */
.Port_Innet_Raw_Extend_Num = 0, /**< 内网透传扩展端口数量 */ .Port_Innet_Raw_Extend_Num = 0, /**< 内网透传扩展端口数量 */
.Innet_Raw_Parameter[0].Port_Innet_Raw = 3956, /**< 内网透明传输端口 */ .Innet_Raw_Parameter[0].Port_Innet_Raw = 3956, /**< 内网透明传输端口 */
@@ -346,215 +308,251 @@ void APP_API_Data_Init()
.Innet_Raw_Parameter[1].INNET_2oo2_RAW = 0X55, /**< 透传通道2取开关 */ .Innet_Raw_Parameter[1].INNET_2oo2_RAW = 0X55, /**< 透传通道2取开关 */
.Innet_Raw_Parameter[1].INNET_2x2_RAW = 0XAA, /**< 透传通道2乘开关 */ .Innet_Raw_Parameter[1].INNET_2x2_RAW = 0XAA, /**< 透传通道2乘开关 */
.Innet_Raw_Parameter[1].IP_InnetRaw_maddr = "224.0.0.32",/**< 内网透传的组播IP */ .Innet_Raw_Parameter[1].IP_InnetRaw_maddr = "224.0.0.32",/**< 内网透传的组播IP */
/*外网通信配置*/ /*外网通信配置*/
.OutNetRed.CC_G_IP = "192.168.1.60", /**< 通控的内网IP */ .OutNetRed.CC_G_IP = "192.168.1.60", /**< 通控的内网IP */
.OutNetRed.CC_P_IP = "192.168.2.60", /**< 通控的内网IP */ .OutNetRed.CC_P_IP = "192.168.2.60", /**< 通控的内网IP */
.OutNetRed.EXTEND_G_IP = "192.168.1.70", /**< 扩展板卡的内网IP */ .OutNetRed.EXTEND_G_IP = "192.168.1.70", /**< 扩展板卡的内网IP */
.OutNetRed.EXTEND_P_IP = "192.168.2.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.OutnetSafe_Port = 54001, /**< 外网安全通信端口 */
.OutNetRed.OutnetRaw_Port = 54002, /**< 外网透传通信端口 */ .OutNetRed.OutnetRaw_Port = 54002, /**< 外网透传通信端口 */
.OutNetRed.InnetRaw_Port = 53003, /**< 内网透传通信端口 */ .OutNetRed.InnetRaw_Port = 53003, /**< 内网透传通信端口 */
.OutNetBlue.CC_G_IP = "192.168.1.61", /**< 通控的内网IP */ .OutNetBlue.CC_G_IP = "192.168.1.61", /**< 通控的内网IP */
.OutNetBlue.CC_P_IP = "192.168.2.61", /**< 通控的内网IP */ .OutNetBlue.CC_P_IP = "192.168.2.61", /**< 通控的内网IP */
.OutNetBlue.EXTEND_G_IP = "192.168.1.71", /**< 扩展板卡的内网IP */ .OutNetBlue.EXTEND_G_IP = "192.168.1.71", /**< 扩展板卡的内网IP */
.OutNetBlue.EXTEND_P_IP = "192.168.2.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.OutnetSafe_Port = 54001, /**< 外网安全通信端口 */
.OutNetBlue.OutnetRaw_Port = 54002, /**< 外网透传通信端口 */ .OutNetBlue.OutnetRaw_Port = 54002, /**< 外网透传通信端口 */
.OutNetBlue.InnetRaw_Port = 53003, /**< 内网透传通信端口 */ .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_NUM = 1, /**< 内网通信设备数量 */
.INNET_COM_CFG[0].InnetID = DEVICE_TYPE_AIM, /**< 内网通信ID */ .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_Raw_G = 55004, /**< 绿网透传端口 */
.INNET_COM_CFG[0].Port_Safe_G = 55003, /**< 绿网安全端口 */ .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_Raw_P = 55004, /**< 紫网透传端口 */
.INNET_COM_CFG[0].Port_Safe_P = 55003, /**< 紫网安全端口 */ .INNET_COM_CFG[0].Port_Safe_P = 55003, /**< 紫网安全端口 */
};
}; MSCP_Set_APP_ConfigData(&AppCfgInterface);
#else
/*↑↑用户初始化代码↑↑*/
if (RC_WORK_MODE_TIOC == CI_SYSTEM_TYPE_RCI) /*↓↓基本数据初始化配置示例↓↓*/
{ STRU_APP_CFG_T AppCfgInterface = {
/*设置IP 与CIIP一致*/ .FS_NAME = "RCI.FS", /**< FS文件名称 */
(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")); .APP_NAME = "RCOCI", /**< 应用文件名称 */
(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")); .CYC_TIME = 300, /**< 系统周期(ms */
(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")); .app_num = 1, /**< app任务数1-4 */
(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")); .M_2oo2_Enable = 0x55, /**< 2oo2功能开关,开0x55,关0xAA */
(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")); .M_2x2_Enable = 0x55, /**< 2x2功能开关,开0x55,关0xAA*/
.M_4x2_Enable = 0x55, /**< 4x2功能开关,开0x55,关0xAA*/
(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")); .M_2x2_Com_Cfg = 0x00, /**< 2x2通信功能配置,串口0x00,网卡0x01*/
(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")); .M_InnetSafe_Enable = 0x55, /**< 内网安全通信功能开关,开0x55,关0xAA */
(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")); .M_InnetRaw_Enable = 0x55, /**< 内网透传通信功能开关,开0x55,关0xAA */
(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")); .M_OutnetSafe_Enable = 0x55,/**< 外网安全通信功能开关,开0x55,关0xAA */
(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")); .M_OutnetRaw_Enable = 0x55, /**< 外网透传通信功能开关,开0x55,关0xAA */
.M_CpuUsageGet_Enable = 0xAA,/**< 外网透传通信功能开关,开0x55,关0xAA */
(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")); .M_RemoteUpdate_Enable = 0xAA,/**< 远程部署内网安全通信功能开关,开0x55,关0xAA */
(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")); .ID_Maintenance = 0xF800, /**< 设置维护终端ID */
(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")); .Start_Path = "./emmc1", /**< 程序启动路径 */
(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")); .reboot_replycount = 10, /**< 重启确认报文回复次数 */
(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")); .M_AutoReboot_Count = 0, /**< 自动重启次数 */
.M_AutoClear_Days = 1, /**< 连续运行多久清空宕机次数的天数 */
/*CPU1-1 IP配置*/
(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")); .CPU[0].IP_2oo2 = "192.168.0.11", /**< 2oo2通信IP */
(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")); .CPU[0].IP_4x2 = "192.168.1.62", /**< 2x2通信IP */
(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")); .CPU[0].IP_Out = "192.168.1.62", /**< 外网通信IP */
(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")); .CPU[0].IP_Maintain = "192.168.146.101", /**< 维护通信IP */
(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")); .CPU[0].IP_Area = "10.3.1.61", /**< 4x2通信IP */
.CPU[0].IP_Sync_Time_A = "192.168.1.62", /**< 时间同步网络A网IP */
/*CPU1*/ .CPU[0].IP_Sync_Time_B = "10.3.1.61", /**< 时间同步网络B网IP */
(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")); /*CPU1-1适用透传通道-选配*/
(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")); .CPU[0].IP_Com = "192.168.1.62", /**< 通用通信IP */
(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")); .CPU[0].IP_Com_Extend = "192.168.1.62",/**< 通用通信扩展IP */
(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")); .CPU[0].Logger_PortBase = 55011, /**< 明文日志记录发送端口 */
.CPU[0].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
/*CPU2*/ /*CPU1-2 IP配置*/
(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")); .CPU[1].IP_2oo2 = "192.168.0.12", /**< 2oo2通信IP */
(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")); .CPU[1].IP_4x2 = "192.168.2.62", /**< 2x2通信IP */
(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")); .CPU[1].IP_Out = "192.168.2.62", /**< 外网通信IP */
(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")); .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 */
(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")); .CPU[1].IP_Sync_Time_B = "10.3.1.63", /**< 时间同步网络B网IP */
(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")); /*CPU1-2适用透传通道-选配*/
(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")); .CPU[1].IP_Com = "192.168.2.62", /**< 通用通信IP */
(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")); .CPU[1].IP_Com_Extend = "192.168.2.62",/**< 通用通信扩展IP */
(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")); .CPU[1].Logger_PortBase = 55012, /**< 明文日志记录发送端口 */
(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")); .CPU[1].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
(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")); /*CPU2-1 IP配置*/
(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")); .CPU[2].IP_2oo2 = "192.168.0.11", /**< 2oo2通信IP */
(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")); .CPU[2].IP_4x2 = "192.168.1.64", /**< 2x2通信IP */
(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")); .CPU[2].IP_Out = "192.168.1.64", /**< 外网通信IP */
(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")); .CPU[2].IP_Maintain = "192.168.146.103", /**< 维护通信IP */
(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")); .CPU[2].IP_Area = "10.4.1.62", /**< 4x2通信IP */
.CPU[2].IP_Sync_Time_A = "192.168.1.64", /**< 时间同步网络A网IP */
(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")); .CPU[2].IP_Sync_Time_B = "10.4.1.62", /**< 时间同步网络B网IP */
(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")); /*CPU2-1适用透传通道-选配*/
(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")); .CPU[2].IP_Com = "192.168.1.64", /**< 通用通信IP */
(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")); .CPU[2].IP_Com_Extend = "192.168.1.64",/**< 通用通信扩展IP */
.CPU[2].Logger_PortBase = 55021, /**< 明文日志记录发送端口 */
(void)CommonMemCpy((void*)(AppCfgInterface.Logger_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.146.100"), (UINT32)sizeof("192.168.146.100")); .CPU[2].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
(void)CommonMemCpy((void*)(AppCfgInterface.Logger_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.18.100"), (UINT32)sizeof("192.168.18.100")); /*CPU2-2 IP配置*/
AppCfgInterface.INNET_COM_CFG[0].IP_G = (CM_UINT32)inet_addr("192.168.146.100"); .CPU[3].IP_2oo2 = "192.168.0.12", /**< 2oo2通信IP */
AppCfgInterface.INNET_COM_CFG[0].IP_P = (CM_UINT32)inet_addr("192.168.18.100"); .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 */
else .CPU[3].IP_Area = "10.4.1.64", /**< 4x2通信IP */
{/*设置IP 与CIIP一致*/ .CPU[3].IP_Sync_Time_A = "192.168.2.64", /**< 时间同步网络A网IP */
(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")); .CPU[3].IP_Sync_Time_B = "10.4.1.64", /**< 时间同步网络B网IP */
(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")); /*CPU2-2适用透传通道-选配*/
(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")); .CPU[3].IP_Com = "192.168.2.64", /**< 通用通信IP */
(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")); .CPU[3].IP_Com_Extend = "192.168.2.64",/**< 通用通信扩展IP */
(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")); .CPU[3].Logger_PortBase = 55022, /**< 明文日志记录发送端口 */
.CPU[3].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
(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")); /*CPU3-1 IP配置*/
(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")); .CPU[4].IP_2oo2 = "192.168.0.11", /**< 2oo2通信IP */
(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")); .CPU[4].IP_4x2 = "192.168.1.162", /**< 2x2通信IP */
(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")); .CPU[4].IP_Out = "192.168.1.162", /**< 外网通信IP */
(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")); .CPU[4].IP_Maintain = "192.168.146.201", /**< 维护通信IP */
.CPU[4].IP_Area = "10.3.1.161", /**< 4x2通信IP */
(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")); .CPU[4].IP_Sync_Time_A = "192.168.1.162", /**< 时间同步网络A网IP */
(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")); .CPU[4].IP_Sync_Time_B = "10.3.1.161", /**< 时间同步网络B网IP */
(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")); /*CPU3-1适用透传通道-选配*/
(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")); .CPU[4].IP_Com = "192.168.1.162", /**< 通用通信IP */
(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")); .CPU[4].IP_Com_Extend = "192.168.1.162",/**< 通用通信扩展IP */
.CPU[4].Logger_PortBase = 55031, /**< 明文日志记录发送端口 */
.CPU[4].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
(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")); /*CPU3-2 IP配置*/
(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")); .CPU[5].IP_2oo2 = "192.168.0.12", /**< 2oo2通信IP */
(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")); .CPU[5].IP_4x2 = "192.168.2.162", /**< 2x2通信IP */
(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")); .CPU[5].IP_Out = "192.168.2.162", /**< 外网通信IP */
(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")); .CPU[5].IP_Maintain = "192.168.18.202", /**< 维护通信IP */
.CPU[5].IP_Area = "10.3.1.163", /**< 4x2通信IP */
/*CPU1*/ .CPU[5].IP_Sync_Time_A = "192.168.2.162", /**< 时间同步网络A网IP */
(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")); .CPU[5].IP_Sync_Time_B = "10.3.1.163", /**< 时间同步网络B网IP */
(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")); /*CPU3-2适用透传通道-选配*/
(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")); .CPU[5].IP_Com = "192.168.2.162", /**< 通用通信IP */
(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")); .CPU[5].IP_Com_Extend = "192.168.2.162",/**< 通用通信扩展IP */
.CPU[5].Logger_PortBase = 55032, /**< 明文日志记录发送端口 */
/*CPU2*/ .CPU[5].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
(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")); /*CPU4-1 IP配置*/
(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")); .CPU[6].IP_2oo2 = "192.168.0.11", /**< 2oo2通信IP */
(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")); .CPU[6].IP_4x2 = "192.168.1.164", /**< 2x2通信IP */
(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")); .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 */
(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")); .CPU[6].IP_Sync_Time_A = "192.168.1.164", /**< 时间同步网络A网IP */
(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")); .CPU[6].IP_Sync_Time_B = "10.4.1.162", /**< 时间同步网络B网IP */
(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")); /*CPU4-1适用透传通道-选配*/
(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")); .CPU[6].IP_Com = "192.168.1.164", /**< 通用通信IP */
(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")); .CPU[6].IP_Com_Extend = "192.168.1.164",/**< 通用通信扩展IP */
(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")); .CPU[6].Logger_PortBase = 55041, /**< 明文日志记录发送端口 */
(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")); .CPU[6].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
(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")); /*CPU4-2 IP配置*/
(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")); .CPU[7].IP_2oo2 = "192.168.0.12", /**< 2oo2通信IP */
(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")); .CPU[7].IP_4x2 = "192.168.2.164", /**< 2x2通信IP */
(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")); .CPU[7].IP_Out = "192.168.2.164", /**< 外网通信IP */
(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")); .CPU[7].IP_Maintain = "192.168.18.204", /**< 维护通信IP */
.CPU[7].IP_Area = "10.4.1.164", /**< 4x2通信IP */
(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")); .CPU[7].IP_Sync_Time_A = "192.168.2.164", /**< 时间同步网络A网IP */
(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")); .CPU[7].IP_Sync_Time_B = "10.4.1.164", /**< 时间同步网络B网IP */
(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")); /*CPU4-2适用透传通道-选配*/
(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")); .CPU[7].IP_Com = "192.168.2.164", /**< 通用通信IP */
.CPU[7].IP_Com_Extend = "192.168.2.164",/**< 通用通信扩展IP */
(void)CommonMemCpy((void*)(AppCfgInterface.Logger_G_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.148.100"), (UINT32)sizeof("192.168.148.100")); .CPU[7].Logger_PortBase = 55042, /**< 明文日志记录发送端口 */
(void)CommonMemCpy((void*)(AppCfgInterface.Logger_P_IP), (UINT32)sizeof(CM_CHAR) * 32, (const void*)("192.168.20.100"), (UINT32)sizeof("192.168.20.100")); .CPU[7].Logger_PortCiphertext = 55002, /**< 暗文日志记录发送端口 */
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"); .IP_Area_G_Multicast = "239.0.0.10", /**< 组播通信IP */
.IP_Area_P_Multicast = "239.0.0.20", /**< 组播通信IP */
} .Multicast_Flag = 1u, /**< 单播:0 组播:1 */
if(SYSTEM_WORK_MODE_ONLY == cSystemWorkType) /*通用端口配置,平台固定通信端口禁止使用:51001、51002、51003、52001、52002、52003*/
{ .Port_Outnet_Safe = 54001, /**< 外网安全通信端口 */
/*单系统运行:区域开关设置为0*/ .Port_Innet_Safe = 53001, /**< 内网安全通信端口 */
AppCfgInterface.M_Area_Enable = 0u; .Port_Outnet_Raw = 54002, /**< 外网透明传输端口 */
} .Port_Remote_Update = 50000, /**< 远程部署通信端口 */
else /*透传配置-选配*/
{ .Port_Innet_Raw_Num = 1, /**< 内网透传端口数量0-9 */
/*双系统运行*/ .Port_Innet_Raw_Extend_Num = 1, /**< 内网透传扩展端口数量0-9 */
if (RC_WORK_MODE_TIOC == CI_SYSTEM_TYPE_RCI) /*透传通道-Number 1根据数量两个通道的数量,按序号累加以此类推(0-17)*/
{ .Innet_Raw_Parameter[0].Port_Innet_Raw = 3956, /**< 内网透明传输端口 */
/*RC区域开关设置为0xAA*/ .Innet_Raw_Parameter[0].Port_Type_Enable = RAW_COM_UDP, /**< 内网透明UDP传输模式 */
AppCfgInterface.M_Area_Enable = 0xAAu; .Innet_Raw_Parameter[0].Server_DevId = 0, /**< 服务端设备类型和id */
/**< RC与CI扩展板卡通信功能开关配置 */ .Innet_Raw_Parameter[0].TIME_STAMP_ENABLE = 0XAA, /**< 2取2乘时间戳使能开关 */
AppCfgInterface.M_AREA_SEB_Enable = 0x55u; .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 */
else /*扩展通道-Number 1 根据数量两个通道的数量,按序号累加以此类推(0-17)*/
{ .Innet_Raw_Parameter[1].Port_Innet_Raw = 3957, /**< 内网透明传输端口 */
/*设置CI IP+区域IP*/ .Innet_Raw_Parameter[1].Port_Type_Enable = RAW_COM_BROADCAST, /**< 内网透明广播传输模式 */
AppCfgInterface.M_Area_Enable = 0x55u; .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 */
MSCP_Set_APP_ConfigData(&AppCfgInterface); .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, /**< 紫网安全端口 */
};
/*调用参数设置初始化接口*/
MSCP_Set_APP_ConfigData(&AppCfgInterface);
#endif #endif
/*组FS版本号*/ /*组FS版本号*/
ii = 0U; ii = 0U;
fsVersBuffer[ii++] = szFSFILEVersionFS[0]; fsVersBuffer[ii++] = szFSFILEVersionFS[0];
fsVersBuffer[ii++] = szFSFILEVersionFS[1]; fsVersBuffer[ii++] = szFSFILEVersionFS[1];
fsVersBuffer[ii++] = szFSFILEVersionFS[2]; fsVersBuffer[ii++] = szFSFILEVersionFS[2];
fsVersBuffer[ii++] = szFSFILEVersionFS[3]; fsVersBuffer[ii++] = szFSFILEVersionFS[3];
/*组软件版本号*/ /*组软件版本号*/
ii = 0U; ii = 0U;
appVersBuffer[ii++] = VER_INTE_PROJECT; appVersBuffer[ii++] = VER_SOFT_PRODUCT;
appVersBuffer[ii++] = VER_INTE_PRODUCT >> 2U; appVersBuffer[ii++] = VER_SOFT_MODUAL_APP >> 2U;
appVersBuffer[ii++] = (VER_INTE_PRODUCT << 6U) + (VER_INTE_EXE & (UINT8)0x3F); appVersBuffer[ii++] = (VER_SOFT_MODUAL_APP << 6U) + (VER_SOFT_MIANVERSION & (UINT8)0x3F);
appVersBuffer[ii++] = VER_INTE_TIME; appVersBuffer[ii++] = VER_SOFT_SUBVERSION;
/*设置平台调用获取外网信息函数*/ /*设置平台调用获取外网信息函数*/
MSCP_SetSrcId(SetOutNetPara); MSCP_SetSrcId(SetOutNetPara);
/*设置内网参数*/ /*设置内网参数*/
MSCP_SetSfpInnetPara(g_SfpInnetParam); MSCP_SetSfpInnetPara(g_SfpInnetParam);
MSCP_SetAppVersion(appVersBuffer); MSCP_SetAppVersion(appVersBuffer);
MSCP_SetFsVersion(fsVersBuffer); MSCP_SetFsVersion(fsVersBuffer);
}
} }
/** /**
* @brief 应用周期主逻辑 * @brief 应用周期主逻辑
@@ -562,16 +560,16 @@ void APP_API_Data_Init()
* - ENUM_CM_TRUE 成功 * - ENUM_CM_TRUE 成功
* - ENUM_CM_FALSE 失败(平台立即宕机) * - ENUM_CM_FALSE 失败(平台立即宕机)
* @details * @details
* 当本系热备状态为:ENUM_2x2_SHUTDOWN,时 * 当本系热备状态为:ENUM_4x2_SHUTDOWN,时
* 本函数不执行; * 本函数不执行;
* 当本系热备状态为:ENUM_2x2_OFFLINEENUM_2x2_PRE_MASTERENUM_2x2_SLAVE,时 * 当本系热备状态为:ENUM_4x2_OFFLINEENUM_4x2_PRE_MASTERENUM_4x2_SLAVE,时
* 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出; * 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出;
* 当本系热备状态为:ENUM_2x2_MASTER,时 * 当本系热备状态为:ENUM_4x2_MASTER,时
* 本函数被周期执行,并且所有输出信息被真实输出。 * 本函数被周期执行,并且所有输出信息被真实输出。
*/ */
ENUM_CM_RETURN APP_API_MainFunc(void) ENUM_CM_RETURN APP_API_MainFunc(void)
{ {
ENUM_CM_RETURN retVal = ENUM_CM_NULL; ENUM_CM_RETURN retVal = ENUM_CM_FALSE;
CM_UINT64 startCycTick = 0u; CM_UINT64 startCycTick = 0u;
CM_UINT64 endCycTick = 0u; CM_UINT64 endCycTick = 0u;
@@ -589,11 +587,9 @@ ENUM_CM_RETURN APP_API_MainFunc(void)
endCycTick = MSCP_GetTick(); endCycTick = MSCP_GetTick();
debug_infor_printf("app proc end at %llu us,used %d us\n", endCycTick, (CM_INT32)((endCycTick - startCycTick) / 1000)); debug_infor_printf("app proc end at %llu us,used %d us\n", endCycTick, (CM_INT32)((endCycTick - startCycTick) / 1000));
gFollowDataLen = GetCiAppData(gFollowData); //gFollowDataLen = GetCiAppData(gFollowData);
MSCP_SetFollowData(gFollowData, gFollowDataLen); memset(gFollowData,0x02,1024*500);
MSCP_SetFollowData(gFollowData, 1024*500);
gCiRcFollowDataLen = GetCiGeneralData(gCiRcFollowData);
MSCP_CISendAppData(gCiRcFollowData, gCiRcFollowDataLen);
return retVal; return retVal;
} }
@@ -604,11 +600,11 @@ ENUM_CM_RETURN APP_API_MainFunc(void)
* - ENUM_CM_TRUE 成功 * - ENUM_CM_TRUE 成功
* - ENUM_CM_FALSE 失败(平台立即宕机) * - ENUM_CM_FALSE 失败(平台立即宕机)
* @details * @details
* 当本系热备状态为:ENUM_2x2_SHUTDOWN,时 * 当本系热备状态为:ENUM_4x2_SHUTDOWN,时
* 本函数不执行; * 本函数不执行;
* 当本系热备状态为:ENUM_2x2_OFFLINEENUM_2x2_PRE_MASTERENUM_2x2_SLAVE,时 * 当本系热备状态为:ENUM_4x2_OFFLINEENUM_4x2_PRE_MASTERENUM_4x2_SLAVE,时
* 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出; * 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出;
* 当本系热备状态为:ENUM_2x2_MASTER,时 * 当本系热备状态为:ENUM_4x2_MASTER,时
* 本函数被周期执行,并且所有输出信息被真实输出。 * 本函数被周期执行,并且所有输出信息被真实输出。
*/ */
ENUM_CM_RETURN APP_API_MainFunc2(void) ENUM_CM_RETURN APP_API_MainFunc2(void)
@@ -624,11 +620,11 @@ ENUM_CM_RETURN APP_API_MainFunc2(void)
* - ENUM_CM_TRUE 成功 * - ENUM_CM_TRUE 成功
* - ENUM_CM_FALSE 失败(平台立即宕机) * - ENUM_CM_FALSE 失败(平台立即宕机)
* @details * @details
* 当本系热备状态为:ENUM_2x2_SHUTDOWN,时 * 当本系热备状态为:ENUM_4x2_SHUTDOWN,时
* 本函数不执行; * 本函数不执行;
* 当本系热备状态为:ENUM_2x2_OFFLINEENUM_2x2_PRE_MASTERENUM_2x2_SLAVE,时 * 当本系热备状态为:ENUM_4x2_OFFLINEENUM_4x2_PRE_MASTERENUM_4x2_SLAVE,时
* 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出; * 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出;
* 当本系热备状态为:ENUM_2x2_MASTER,时 * 当本系热备状态为:ENUM_4x2_MASTER,时
* 本函数被周期执行,并且所有输出信息被真实输出。 * 本函数被周期执行,并且所有输出信息被真实输出。
*/ */
ENUM_CM_RETURN APP_API_MainFunc3(void) ENUM_CM_RETURN APP_API_MainFunc3(void)
@@ -651,11 +647,11 @@ ENUM_CM_RETURN APP_API_MainFunc4(void)
* - ENUM_CM_TRUE 成功 * - ENUM_CM_TRUE 成功
* - ENUM_CM_FALSE 失败(平台立即宕机) * - ENUM_CM_FALSE 失败(平台立即宕机)
* @details * @details
* 当本系热备状态为:ENUM_2x2_SHUTDOWN,时 * 当本系热备状态为:ENUM_4x2_SHUTDOWN,时
* 本函数不执行; * 本函数不执行;
* 当本系热备状态为:ENUM_2x2_OFFLINEENUM_2x2_PRE_MASTERENUM_2x2_SLAVE,时 * 当本系热备状态为:ENUM_4x2_OFFLINEENUM_4x2_PRE_MASTERENUM_4x2_SLAVE,时
* 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出; * 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出;
* 当本系热备状态为:ENUM_2x2_MASTER,时 * 当本系热备状态为:ENUM_4x2_MASTER,时
* 本函数被周期执行,并且所有输出信息被真实输出。 * 本函数被周期执行,并且所有输出信息被真实输出。
*/ */
ENUM_CM_RETURN APP_API_MainFunc5(void) ENUM_CM_RETURN APP_API_MainFunc5(void)
@@ -693,7 +689,7 @@ ENUM_CM_RETURN APP_API_InputFunc(void)
* - ENUM_CM_TRUE 成功 * - ENUM_CM_TRUE 成功
* - ENUM_CM_FALSE 失败(平台立即宕机) * - ENUM_CM_FALSE 失败(平台立即宕机)
* @details * @details
* 当本系热备状态为:ENUM_2x2_OFFLINEENUM_2x2_SLAVE,且收到了邻系正确的跟随数据时 * 当本系热备状态为:ENUM_4x2_OFFLINEENUM_4x2_SLAVE,且收到了邻系正确的跟随数据时
* 本函数将在APP_API_MainFunc()之前执行; * 本函数将在APP_API_MainFunc()之前执行;
* 否则,本函数不执行。 * 否则,本函数不执行。
* 应用跟随数据的最大长度不得超过1024*1000字节 * 应用跟随数据的最大长度不得超过1024*1000字节
@@ -704,7 +700,8 @@ ENUM_CM_RETURN APP_API_FollowUp(IN const CM_UINT8 Data[MSCP_FOLLOW_BUFF_SIZE], I
ENUM_CM_RETURN retVal = ENUM_CM_FALSE; ENUM_CM_RETURN retVal = ENUM_CM_FALSE;
UINT8 setRtn = 0u; UINT8 setRtn = 0u;
setRtn = SetCiAppData(Data, Len); //setRtn = SetCiAppData(Data, Len);
setRtn = 1;
if (1u == setRtn) if (1u == setRtn)
{ {
retVal = ENUM_CM_TRUE; retVal = ENUM_CM_TRUE;
@@ -722,9 +719,6 @@ ENUM_CM_RECCUSEB Is_Send_ExtendBoard(IN const CM_UINT16 dstDevTypeId)
UINT8 chLocalCiType = 0U; /*本联锁属性*/ UINT8 chLocalCiType = 0U; /*本联锁属性*/
UINT8 chDstCiType = 0U; /*本联锁属性*/ UINT8 chDstCiType = 0U; /*本联锁属性*/
UINT8 chCldScxCommMode = 0U; UINT8 chCldScxCommMode = 0U;
UINT8 chWorkType = 0U; /*双系工作模式*/
UINT8 cControlState = 0U;/*主备用模式*/
UINT8 cRcWorkMode = 0u;/*RC工作模式*/
UINT8 chResult = CI_ERROR; /*联锁属性检查结果*/ UINT8 chResult = CI_ERROR; /*联锁属性检查结果*/
wAtsGtWayDevTypeId = GetTiocTrnsmtGtwyDevTypeId(); wAtsGtWayDevTypeId = GetTiocTrnsmtGtwyDevTypeId();
@@ -737,11 +731,8 @@ ENUM_CM_RECCUSEB Is_Send_ExtendBoard(IN const CM_UINT16 dstDevTypeId)
chLocalCiType = GetLocalCiType(); chLocalCiType = GetLocalCiType();
chDstCiType = GetCiType(devId); chDstCiType = GetCiType(devId);
chCldScxCommMode = GetCiFunctionSwitchConfig(SCX_CLD_INTERFACE_TYPE); chCldScxCommMode = GetCiFunctionSwitchConfig(SCX_CLD_INTERFACE_TYPE);
chWorkType = GetSystemWorkType();
cControlState = GetLocalCiBackUpPattern();
cRcWorkMode = GetLocalRcWorkMode();
if ((SCX_CLD_SERIAL_PORT_COMM == chCldScxCommMode) && (CI_SYSTEM_TYPE_RCI == devType)) if ((SCX_CLD_SERIAL_PORT_COMM == chCldScxCommMode) && (CI_SYSTEM_TYPE_CI == devType))
{ {
if (((CI_TYPE_CLD == chLocalCiType) && (CI_TYPE_SCX == chDstCiType)) || ((CI_TYPE_SCX == chLocalCiType) && (CI_TYPE_CLD == chDstCiType))) if (((CI_TYPE_CLD == chLocalCiType) && (CI_TYPE_SCX == chDstCiType)) || ((CI_TYPE_SCX == chLocalCiType) && (CI_TYPE_CLD == chDstCiType)))
{ {
@@ -758,38 +749,12 @@ ENUM_CM_RECCUSEB Is_Send_ExtendBoard(IN const CM_UINT16 dstDevTypeId)
; /*不为串口通信,此时不对本地CI类型及对方CI类型进行判断*/ ; /*不为串口通信,此时不对本地CI类型及对方CI类型进行判断*/
} }
if ((CI_SYSTEM_TYPE_XIANDI == devType) || (CI_SYSTEM_TYPE_ATS == devType) if ((CI_SYSTEM_TYPE_XIANDI == devType) || (CI_SYSTEM_TYPE_ATS == devType) || (CI_SYSTEM_TYPE_LEU == devType)
|| (CI_SUCCESS == chResult) || (CI_SUCCESS == chResult)
|| (CI_SYSTEM_TYPE_VOBC_BACKUP == devType)) /*现地,ATS,使用串口的相邻CI*/ || (CI_SYSTEM_TYPE_VOBC_BACKUP == devType)) /*现地,ATS,LEU,使用串口的相邻CI*/
{ {
retVal = ENUM_CM_SEB; 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 else
{ {
retVal = ENUM_CM_CC; retVal = ENUM_CM_CC;
@@ -851,8 +816,8 @@ void SetOutNetPara(UINT8* pRxBuf, UINT32 dwLen, ENUM_OUTNET_CHN_T chOutNetType,
tempLen = *pCurLen; tempLen = *pCurLen;
if ((TRANSMIT_OBJECT_SUM_MAX * TRANSMIT_OBJECT_DEVICE_SUM_MAX) > (tempLen + objLen)) if ((TRANSMIT_OBJECT_SUM_MAX * TRANSMIT_OBJECT_DEVICE_SUM_MAX) > (tempLen + objLen))
{ {
CommonMemCpy((void*)&pOutBuf[tempLen], objLen * sizeof(UINT16), \ CommonMemCpy(&pOutBuf[tempLen], objLen * sizeof(UINT16), \
(const void*)gTransmitObjTypeId, objLen * sizeof(UINT16)); gTransmitObjTypeId, objLen * sizeof(UINT16));
*pCurLen = tempLen + objLen; *pCurLen = tempLen + objLen;
debug_infor_printf("outnet in type len :%d", chOutNetType, objLen); debug_infor_printf("outnet in type len :%d", chOutNetType, objLen);
debug_out_array(0xAA, gTransmitObjTypeId, objLen * sizeof(UINT16)); debug_out_array(0xAA, gTransmitObjTypeId, objLen * sizeof(UINT16));
@@ -988,7 +953,7 @@ ENUM_CM_RETURN SerialOutAtsVobcFunc(UINT16 inDstId IN, UINT16* outSrcId OUT, UIN
inDstType = (UINT8)((inDstId & 0xff00U) >> 8); inDstType = (UINT8)((inDstId & 0xff00U) >> 8);
if ((CI_SYSTEM_TYPE_VOBC_BACKUP == inDstType) || (CI_SYSTEM_TYPE_ITE == inDstType)) if ((CI_SYSTEM_TYPE_VOBC_BACKUP == inDstType) || (CI_SYSTEM_TYPE_ITE == inDstType))
{ {
*outSrcId = (CI_SYSTEM_TYPE_RCI << 8) + GetSystemParaLocalCiId(); *outSrcId = (CI_SYSTEM_TYPE_CI << 8) + GetSystemParaLocalCiId();
*outDstId = GetATSInterfaceTypeId(); *outDstId = GetATSInterfaceTypeId();
retVal = ENUM_CM_TRUE; retVal = ENUM_CM_TRUE;
+3 -3
View File
@@ -40,11 +40,11 @@ extern "C" {
* - ENUM_CM_TRUE 成功 * - ENUM_CM_TRUE 成功
* - ENUM_CM_FALSE 失败(平台立即宕机) * - ENUM_CM_FALSE 失败(平台立即宕机)
* @note * @note
* 当本系热备状态为:ENUM_2x2_SHUTDOWN,时 * 当本系热备状态为:ENUM_4x2_SHUTDOWN,时
* 本函数不执行; * 本函数不执行;
* 当本系热备状态为:ENUM_2x2_OFFLINEENUM_2x2_PRE_MASTERENUM_2x2_SLAVE,时 * 当本系热备状态为:ENUM_4x2_OFFLINEENUM_4x2_PRE_MASTERENUM_4x2_SLAVE,时
* 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出; * 本函数被周期执行,但 ENUM_MSG_OUTNET_SAFE 报文不会真实输出;
* 当本系热备状态为:ENUM_2x2_MASTER,时 * 当本系热备状态为:ENUM_4x2_MASTER,时
* 本函数被周期执行,并且所有输出信息被真实输出。 * 本函数被周期执行,并且所有输出信息被真实输出。
*/ */
ENUM_CM_RETURN APP_API_MainFunc(void); ENUM_CM_RETURN APP_API_MainFunc(void);
@@ -30,6 +30,6 @@
#define VER_INTE_PROJECT 220 /*项目编号*/ #define VER_INTE_PROJECT 220 /*项目编号*/
#define VER_INTE_PRODUCT 40 /*产品编号*/ #define VER_INTE_PRODUCT 40 /*产品编号*/
#define VER_INTE_EXE 1 /*可执行编号*/ #define VER_INTE_EXE 1 /*可执行编号*/
#define VER_INTE_TIME 116 /*集成次数编号*/ #define VER_INTE_TIME 77 /*集成次数编号*/
#endif/*endif of #define _CI_INTEGRATE_CONFIG_H*/ #endif/*endif of #define _CI_INTEGRATE_CONFIG_H*/
File diff suppressed because it is too large Load Diff
@@ -153,20 +153,6 @@ UINT32 CopyValidSetVobcBackHlht(const UINT8 *pCurCiAppDataPointer, UINT16 struNu
*/ */
UINT32 CopyValidSetVobcDataStru(const UINT8* pCurCiAppDataPointer, VobcToCiDataStruct* pDataStru, UINT16 struNum); 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有效数据到对应的全局数组 * 功能描述:拷贝ITE有效数据到对应的全局数组
* 参数说明:const UINT8 *pCurCiAppDataPointer:当前数据指针 * 参数说明:const UINT8 *pCurCiAppDataPointer:当前数据指针
@@ -202,280 +188,6 @@ UINT32 GetCiAppData(UINT8 *pCiAppDataPointer);
*/ */
UINT8 SetCiAppData(const UINT8 *pCiAppDataPointer,const UINT32 len); 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 #ifdef __cplusplus
} }
#endif #endif
File diff suppressed because it is too large Load Diff
@@ -21,7 +21,6 @@
#include "CommonQueue.h" #include "CommonQueue.h"
#include "../Transmit/TransmitStateDataManage.h" #include "../Transmit/TransmitStateDataManage.h"
#include "MSCP_APP_API.h"
#ifdef PLATFORM_2OO2 #ifdef PLATFORM_2OO2
#include "sfpplatform.h" #include "sfpplatform.h"
#include "RsspWl.h" #include "RsspWl.h"
@@ -90,14 +89,12 @@ extern UINT8* CiAndCiComDeviceNum; /*
extern UINT8* CiAndCiComIdBuf; /*联锁与联锁通信设备ID*/ extern UINT8* CiAndCiComIdBuf; /*联锁与联锁通信设备ID*/
extern UINT8* CiAndCiComState; /*联锁与联锁通信状态*/ extern UINT8* CiAndCiComState; /*联锁与联锁通信状态*/
extern UINT8* PlatSheBeiType; /*平台对外设备类型*/ extern UINT8* PlatSheBeiType; /*平台对外设备类型*/
extern UINT8 gSheBeiType; /*对外的设备类型*/
/* /*
* 功能描述: 平台初始化 * 功能描述: 平台初始化
* 参数说明: void * 参数说明: void
* 返回值 0: 失败 * 返回值 NULL: 获取数据失败
* 1: 成功 * !NULL: 平台ATS到CI接口队列
* Modified By LQ 2025.08.27
*/ */
UINT8 Initial2oo2Interface(void); UINT8 Initial2oo2Interface(void);
@@ -389,7 +386,7 @@ void SendOut_LogBuff();
void debug_infor_printf(char* debug_string, ...); void debug_infor_printf(char* debug_string, ...);
void debug_out_array(UINT8 mode, UINT8* debug_array, UINT16 len); 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 OutnetSafeRecv(UINT16* srcTypeId, UINT16* srcLogicId, UINT8* data, UINT32* dataLen, UINT32 dataMaxLen);
UINT8 InnetSafeRecv(UINT16* srcTypeId, UINT16* srcLogicId, UINT8* data, UINT32* dataLen, UINT32 dataMaxLen); UINT8 InnetSafeRecv(UINT16* srcTypeId, UINT16* srcLogicId, UINT8* data, UINT32* dataLen, UINT32 dataMaxLen);
@@ -125,27 +125,6 @@ UINT8 GetAllAutoReturnRouteBelongCiId(const UINT16 allAutoReturnId)
return belongCiId; 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数组 * 功能描述: 获取指定ID全自动折返包含进路ID数组
@@ -34,7 +34,6 @@ typedef struct S_AllAutoReturnConfigDataStruct
{ {
UINT16 AllAutoReturnId; /*全自动折返ID (配置字段)*/ UINT16 AllAutoReturnId; /*全自动折返ID (配置字段)*/
UINT8 BelongCiId; /*所属联锁ID*/ UINT8 BelongCiId; /*所属联锁ID*/
UINT8 BelongVirCiId; /*虚拟联锁ID*/
UINT8 RouteSum; /*全自动折返包含进路数目 (配置字段)*/ UINT8 RouteSum; /*全自动折返包含进路数目 (配置字段)*/
UINT16 RouteIdBuf[ALL_AUTO_RETURN_INCLROUTE_SUM_MAX]; /*全自动折返进路ID数组 (配置字段)*/ UINT16 RouteIdBuf[ALL_AUTO_RETURN_INCLROUTE_SUM_MAX]; /*全自动折返进路ID数组 (配置字段)*/
UINT16 RebackRouteIdBuf[ALL_AUTO_RETURN_REBACKROUTE_SUM_MAX]; /*全自动折返包含折出进路数组(配置字段)*/ UINT16 RebackRouteIdBuf[ALL_AUTO_RETURN_REBACKROUTE_SUM_MAX]; /*全自动折返包含折出进路数组(配置字段)*/
@@ -93,14 +92,6 @@ UINT8 GetAllAutoReturnIncludeRouteSum(const UINT16 allAutoReturnId);
* >0: 所属联锁ID * >0: 所属联锁ID
*/ */
UINT8 GetAllAutoReturnRouteBelongCiId(const UINT16 allAutoReturnId); 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数组 * 功能描述: 获取指定ID全自动折返包含进路ID数组
@@ -41,5 +41,5 @@
#define ALL_AUTO_RETURN_DICHU_COMMR ((UINT8)0x06) /*抵触的普通进路已办理*/ #define ALL_AUTO_RETURN_DICHU_COMMR ((UINT8)0x06) /*抵触的普通进路已办理*/
#define ALL_AUTO_RETURN_HAVE_BLOCK ((UINT8)0x02) /*全自动折返进路存在封锁*/ #define ALL_AUTO_RETURN_HAVE_BLOCK ((UINT8)0x02) /*全自动折返进路存在封锁*/
#define ALL_AUTO_RETURN_FLOOD_STATE_ERR ((UINT8)0x03) /*全自动折返进路存在防淹门不满足*/ #define ALL_AUTO_RETURN_FLOOD_STATE_ERR ((UINT8)0x03) /*全自动折返进路存在防淹门不满足*/
#define ALL_AUTO_RETURN_COUPROUTE_SET ((UINT8)0x07) /*联挂进路已办理*/
#endif #endif
@@ -119,27 +119,6 @@ UINT8 GetAutoReturnRouteBelongCiId(const UINT16 autoReturnId)
return returnValue; 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数组 * 功能描述: 获取指定ID自动折返包含进路ID数组
@@ -34,7 +34,6 @@ typedef struct S_AutoReturnConfigDataStruct
{ {
UINT16 AutoReturnId; /*自动折返ID (配置字段)*/ UINT16 AutoReturnId; /*自动折返ID (配置字段)*/
UINT8 BelongCiId; /*所属联锁ID*/ UINT8 BelongCiId; /*所属联锁ID*/
UINT8 BelongVirCiId; /*所属虚拟联锁ID*/
UINT8 RouteSum; /*自动折返包含进路数目 (配置字段)*/ UINT8 RouteSum; /*自动折返包含进路数目 (配置字段)*/
UINT16 RouteIdBuf[AUTO_RETURN_INCLROUTE_SUM_MAX]; /*自动折返进路包含进路ID数组 (配置字段)*/ UINT16 RouteIdBuf[AUTO_RETURN_INCLROUTE_SUM_MAX]; /*自动折返进路包含进路ID数组 (配置字段)*/
UINT8 AutoReturnOpposedReturnIdSum; /*自动折返抵触自动折返进路数目 (配置字段)*/ UINT8 AutoReturnOpposedReturnIdSum; /*自动折返抵触自动折返进路数目 (配置字段)*/
@@ -89,14 +88,6 @@ UINT8 GetAutoReturnIncludeRouteSum(const UINT16 autoReturnId);
* >0: 所属联锁ID * >0: 所属联锁ID
*/ */
UINT8 GetAutoReturnRouteBelongCiId(const UINT16 autoReturnId); 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数组 * 功能描述: 获取指定ID自动折返包含进路ID数组
@@ -41,5 +41,5 @@
#define AUTO_RETURN_DICHU_COMMROUTE ((UINT8)0x06) /*抵触的普通进路已办理*/ #define AUTO_RETURN_DICHU_COMMROUTE ((UINT8)0x06) /*抵触的普通进路已办理*/
#define AUTO_RETURN_HAVE_BLOCK ((UINT8)0x02) /*自动折返进路存在封锁*/ #define AUTO_RETURN_HAVE_BLOCK ((UINT8)0x02) /*自动折返进路存在封锁*/
#define AUTO_RETURN_FLOOD_STATE_ERR ((UINT8)0x03) /*自动折返进路存在防淹门不满足*/ #define AUTO_RETURN_FLOOD_STATE_ERR ((UINT8)0x03) /*自动折返进路存在防淹门不满足*/
#define AUTO_RETURN_COUPROUTE_SET ((UINT8)0x07) /*联挂进路已办理*/
#endif #endif
@@ -97,26 +97,6 @@ UINT8 GetAutoRouteBelongCiId(const UINT16 autoRouteId)
} }
return belongCiId; 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,7 +32,6 @@ typedef struct S_AutoRouteConfigDataStruct
{ {
UINT16 AutoRouteId; /*自动进路ID (配置字段)*/ UINT16 AutoRouteId; /*自动进路ID (配置字段)*/
UINT8 BelongCiId; /*所属联锁ID*/ UINT8 BelongCiId; /*所属联锁ID*/
UINT8 BelongVirCiId; /*所属虚拟联锁ID*/
UINT8 RouteSum; /*自动进路包含进路数目 (配置字段)*/ UINT8 RouteSum; /*自动进路包含进路数目 (配置字段)*/
UINT16 RouteIdBuf[AUTO_ROUTE_INCLROUTE_SUM_MAX]; /*自动进路进路ID数组 (配置字段)*/ UINT16 RouteIdBuf[AUTO_ROUTE_INCLROUTE_SUM_MAX]; /*自动进路进路ID数组 (配置字段)*/
UINT8 AutoRouteOpposedRouteIdSum; /*自动通过进路抵触自动通过进路数目 (配置字段)*/ UINT8 AutoRouteOpposedRouteIdSum; /*自动通过进路抵触自动通过进路数目 (配置字段)*/
@@ -90,13 +89,6 @@ UINT16 GetAutoRouteBufIndex(const UINT16 AutoRouteId);
* >0: 所属联锁ID * >0: 所属联锁ID
*/ */
UINT8 GetAutoRouteBelongCiId(const UINT16 autoRouteId); UINT8 GetAutoRouteBelongCiId(const UINT16 autoRouteId);
/*
* 功能描述: 获取指定ID自动进路所属虚拟联锁ID
* 参数说明: const UINT16 autoRouteId, 自动进路ID
* 返回值 0: 获取数据失败
* >0: 所属联锁ID
*/
UINT8 GetAutoRouteBelongVirCiId(const UINT16 autoRouteId);
/* /*
* 功能描述: 获取指定ID自动进路包含进路数目 * 功能描述: 获取指定ID自动进路包含进路数目
@@ -107,13 +107,7 @@ void SetAutoRouteSetFlag(const UINT16 autoRouteId, const UINT8 setState)
} }
} }
/*
* 功能描述:获取自动进路动态数据结构体
* 参数说明:无
* 返 回 值:自动进路动态数据结构体
* Created By LQ 2025.05.26
*/
AutoRouteDataStruct* GetAutoRouteDataStr(void)
{
return AutoRouteDataStru;
}
@@ -56,13 +56,7 @@ UINT8 GetAutoRouteSetFlag(const UINT16 autoRouteId);
*/ */
void SetAutoRouteSetFlag(const UINT16 autoRouteId, const UINT8 setState); void SetAutoRouteSetFlag(const UINT16 autoRouteId, const UINT8 setState);
/*
* 功能描述:获取自动进路动态数据结构体
* 参数说明:无
* 返 回 值:自动进路动态数据结构体
* Created By LQ 2025.05.26
*/
AutoRouteDataStruct* GetAutoRouteDataStr(void);
#ifdef __cplusplus #ifdef __cplusplus
} }
@@ -36,7 +36,7 @@
#define AUTO_ROUTE_DICHU_COMMROUTE ((UINT8)0x06) /*抵触普通进路已办理*/ #define AUTO_ROUTE_DICHU_COMMROUTE ((UINT8)0x06) /*抵触普通进路已办理*/
#define AUTO_ROUTE_HAVE_BLOCK ((UINT8)0x02) /*自动进路存在封锁*/ #define AUTO_ROUTE_HAVE_BLOCK ((UINT8)0x02) /*自动进路存在封锁*/
#define AUTO_ROUTE_FLOOD_STATE_ERR ((UINT8)0x03) /*自动进路存在防淹门不满足*/ #define AUTO_ROUTE_FLOOD_STATE_ERR ((UINT8)0x03) /*自动进路存在防淹门不满足*/
#define AUTO_ROUTE_COUPROUTE_SET ((UINT8)0x07) /*联挂进路已办理*/
#endif #endif
@@ -25,7 +25,6 @@
#define AAM_BAD_NEAR 0x03u /* 坏车接近 */ #define AAM_BAD_NEAR 0x03u /* 坏车接近 */
#define AAM_NO_TRAIN_NEAR 0x04u /* 无车接近 */ #define AAM_NO_TRAIN_NEAR 0x04u /* 无车接近 */
#define AAM_GOOD_OCC 0x05u /* 好车占用 */ #define AAM_GOOD_OCC 0x05u /* 好车占用 */
#define AAM_SLEEP_OCC 0x06u /* 休眠车占用 */
#define AAM_API_AC_ARB 0x01u /* 计轴ARB*/ #define AAM_API_AC_ARB 0x01u /* 计轴ARB*/
@@ -53,9 +53,6 @@ static UINT8 aam_SearchNearestTrainInNextAC(UINT16 baseACID, UINT8 Dir, UINT8 en
UINT32 errorCode = 0u; UINT32 errorCode = 0u;
const EnvelopeStruct* pTempEnvelope = NULL; const EnvelopeStruct* pTempEnvelope = NULL;
ELM_AxisLocStruct tmpAcLoc = { 0u }; ELM_AxisLocStruct tmpAcLoc = { 0u };
UINT8 cSleepState = 0U; /*包络关联列车休眠状态*/
UINT8 ii = 0U;
UINT8 chNoSleepCheck = 0U;
/*- 入口参数校验 */ /*- 入口参数校验 */
ASSERT_RET_VALUE(NULL == envelopeIds,ret,0x80000000u); ASSERT_RET_VALUE(NULL == envelopeIds,ret,0x80000000u);
@@ -106,44 +103,24 @@ static UINT8 aam_SearchNearestTrainInNextAC(UINT16 baseACID, UINT8 Dir, UINT8 en
ASSER_ERROR(CI_ERROR == funRtn,errorCode,0x10000000u); 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) AAM_LOG_LOC(AAM_LOG_ERROR,"errno:0x%08x info:Search NearestTrain ELM%d,ELM info error.",errorCode,preEnvelope)
} }
else else if (((TYPE_CT_ENVELOPE == pTempEnvelope->envelopeType) || (TYPE_UCT_ENVELOPE == pTempEnvelope->envelopeType)) &&
(FLAG_SET == funRtn) && (0u == pTempEnvelope->tailTrainID))
{ {
chNoSleepCheck = CI_SUCCESS; /** 好车远离 */
for (ii = 0U; ii < pTempEnvelope->trianCnt; ii++) ret = AAM_GOOD_FAR_AWAY;
{
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;
}
} }
} }
} }
@@ -179,6 +156,8 @@ UINT8 aam_SearchNearbyTrainType(UINT16 baseACID, UINT8 Dir, UINT8 acCnt, UINT16
UINT8 acStatus = ELM_AC_OCC; UINT8 acStatus = ELM_AC_OCC;
UINT16 tmpPhyid = 0u; UINT16 tmpPhyid = 0u;
UINT8 phyRelACCnt = 0u; UINT8 phyRelACCnt = 0u;
UINT8 i = 0U;
UINT16 wTrainId = 0U;
const UINT16* phyRelACIDs = NULL; const UINT16* phyRelACIDs = NULL;
const EnvelopeStruct* pTempEnvelope = NULL; const EnvelopeStruct* pTempEnvelope = NULL;
UINT8 acRelEnvelopeCnt = 0u; UINT8 acRelEnvelopeCnt = 0u;
@@ -302,23 +281,30 @@ static UINT8 aam_AxisErrorJudge(UINT16 acID,UINT16 acIndex)
UINT8 ret = CI_ERROR; UINT8 ret = CI_ERROR;
UINT8 funRtn = CI_ERROR; UINT8 funRtn = CI_ERROR;
UINT8 chNearbyCheck = CI_ERROR; UINT8 chNearbyCheck = CI_ERROR;
UINT8 acSameCnt = 0U; UINT8 acSameCnt = 0u;
UINT16 acSameID[AC_MAXCNT_IN_SWITCH] = { 0U }; UINT16 acSameID[AC_MAXCNT_IN_SWITCH] = { 0u };
UINT8 acConvertCnt = 0U; UINT8 acConvertCnt = 0u;
UINT16 acConvertID[AC_MAXCNT_IN_SWITCH] = { 0U }; UINT16 acConvertID[AC_MAXCNT_IN_SWITCH] = { 0u };
UINT32 errorCode = 0U; UINT32 errorCode = 0u;
UINT8 sameTrainType = AAM_BAD_NEAR; UINT8 sameTrainType = AAM_BAD_NEAR;
UINT8 convertTrainType = AAM_BAD_NEAR; UINT8 convertTrainType = AAM_BAD_NEAR;
UINT8 tmpRedunTime = 0U; UINT8 tmpRedunTime = 0u;
UINT8 tmppassTrainType = 0U; UINT8 tmppassTrainType = 0u;
UINT8 tmpACStatus = AAM_STATUS_OCC; UINT8 tmpACStatus = AAM_STATUS_OCC;
UINT8 maxRedunTimes = 0u; UINT8 maxRedunTimes = 0u;
UINT8 chSwitch = 0U; UINT8 chSwitch = 0u;
UINT32 dwArbCheckDistance = 0U; /*RC16.0: 系统配置ARB区段向外检查距离*/ UINT32 dwArbCheckDistance = 0U; /*RC16.0: 系统配置ARB区段向外检查距离*/
UINT8 chRedunArbFlag = REDUN_OVER_ARB_NO; /*判断冗余计时结束后可否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 cAxisCommBadArbFlag = AAM_COMM_BAD_ARB_NO;
UINT8 chPhyTrainCheck = CI_SUCCESS;
UINT8 cAcCbtcAttr = 0U; /*计轴区段CBTC区域属性*/
chSwitch = aam_PrepareArbSwitch(); chSwitch = aam_PrepareArbSwitch();
if (CI_SUCCESS == chSwitch) if (CI_SUCCESS == chSwitch)
@@ -367,32 +353,6 @@ static UINT8 aam_AxisErrorJudge(UINT16 acID,UINT16 acIndex)
/** 处理后方计轴车辆接近 */ /** 处理后方计轴车辆接近 */
convertTrainType = aam_SearchNearbyTrainType(acID, EMAP_CONVER_DIR, acConvertCnt, acConvertID); 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)) if ((CI_ERROR == chNearbyCheck))
{ {
@@ -449,14 +409,90 @@ static UINT8 aam_AxisErrorJudge(UINT16 acID,UINT16 acIndex)
AAM_LOG(AAM_LOG_FATAL, "info:AC%d keep ARB Fail, NearByTrainCheck:%d.\n", acID, chNearbyCheck); AAM_LOG(AAM_LOG_FATAL, "info:AC%d keep ARB Fail, NearByTrainCheck:%d.\n", acID, chNearbyCheck);
} }
else else
{ {
/*ARB计轴区段同向相邻计轴区段连续占用*/ cOccCheckFlag = CI_SUCCESS;
funRtn = aam_ArbContinuousOccCheck(acID, acSameCnt, acSameID); 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计轴区段反向相邻计轴区段连续占用*/ if (CI_ERROR == cOccCheckFlag)
funRtn &= aam_ArbContinuousOccCheck(acID, acConvertCnt, acConvertID); {
break;
}
else
{
;
}
}
if (CI_SUCCESS != funRtn) 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)
{ {
/** 清除本计轴区段之前的冗余计时位 */ /** 清除本计轴区段之前的冗余计时位 */
funRtn = aam_ClearPassTrainFlag(acIndex); funRtn = aam_ClearPassTrainFlag(acIndex);
@@ -466,7 +502,7 @@ static UINT8 aam_AxisErrorJudge(UINT16 acID,UINT16 acIndex)
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00400000U); ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00400000U);
aam_SetAxisStatus(acIndex, AAM_STATUS_OCC); aam_SetAxisStatus(acIndex, AAM_STATUS_OCC);
AAM_LOG(AAM_LOG_FATAL, "info:AC%d Keep ARB Fail Because Of Near Sec Continuous Occ\n", acID); AAM_LOG(AAM_LOG_FATAL, "info:AC%d Keep ARB Fail Because Of Near Sec Occ\n", acID);
} }
else else
{ {
@@ -851,11 +887,9 @@ void aam_MainProcess(void)
/** 尽头线ARB特殊处理*/ /** 尽头线ARB特殊处理*/
aam_InitEndLinePassFlag(); aam_InitEndLinePassFlag();
/*计轴子系统通信中断ARB特殊处理功能在RC20.0首版二回先注释掉(恢复时间待定)——By LQ 2025.05.07*/
#if 0
/*计轴子系统通信中断ARB特殊处理*/ /*计轴子系统通信中断ARB特殊处理*/
aam_AxisCommBadArbPro(); aam_AxisCommBadArbPro();
#endif
for (cycle = 0u; cycle < acCnt; cycle++) for (cycle = 0u; cycle < acCnt; cycle++)
{ {
/** 判断计轴区段是否属于本OC */ /** 判断计轴区段是否属于本OC */
@@ -2020,166 +2054,4 @@ UINT8 aam_GetAxisStatusAPI(UINT16 ACID)
acIndex = aam_PrepareACIndex(ACID); acIndex = aam_PrepareACIndex(ACID);
reVal = aam_GetAxisStatus(acIndex); reVal = aam_GetAxisStatus(acIndex);
return reVal; 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,24 +213,4 @@ void SetRcAxleArb(void);
*/ */
UINT8 aam_GetAxisStatusAPI(UINT16 ACID); 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_*/ #endif /*AXIS_ASSERT_MANAGE_API_H_*/
@@ -370,22 +370,27 @@ void CutoffPointOutput(void)
UINT16 wPhySecId = 0u; UINT16 wPhySecId = 0u;
UINT8 chOccState = 0u; UINT8 chOccState = 0u;
UINT8 cDir = 0u; UINT8 cDir = 0u;
UINT8 cTrainDir = 0u;
UINT8 cFunRetVal = CI_ERROR; UINT8 cFunRetVal = CI_ERROR;
TRAIN_SEQUANCE_s strTmp = { 0u };
CfpTrainInfoStru tmpTrainInfo = { 0u }; CfpTrainInfoStru tmpTrainInfo = { 0u };
struct_PathPoint LinkPoint = { 0u }; UINT16 wTrainId = 0u;
UINT32 dwFindLen = 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;
UINT8 chTrainNum = 0u; UINT8 chTrainNum = 0u;
UINT8 cDirectionPointfirst = 0U; /*方向变化点1*/ UINT8 cDirectionPointfirst = 0U; /*方向变化点1*/
UINT8 cDirectionPointsecond = 0U; /*方向变化点2*/ 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 = GetSystemParaValue(SIGNAL_LIGHTUP_SEC_LEN_ID);
dwFindLen *= 100U; dwFindLen *= 100u;
chLocalId = GetSystemParaLocalCiId();
/* 获取本联锁边界点数量 */ /* 获取本联锁边界点数量 */
wCutoffPointSum = GetCfpSum(); wCutoffPointSum = GetCfpSum();
@@ -400,122 +405,157 @@ void CutoffPointOutput(void)
cDir = GetCfpLocDir(wCutoffPointId); cDir = GetCfpLocDir(wCutoffPointId);
/* 计算边界点的点灯link */ /* 计算边界点的点灯link */
(void)CommonMemSet(wszLinkIdBuf, (UINT32)(sizeof(UINT16)*MAX_CFG_LIGHTUPLINK_NUM), 0U, (UINT32)(sizeof(UINT16)*MAX_CFG_LIGHTUPLINK_NUM));
cFunRetVal = CalCutoffPointOccupyLinkSeq(wCutoffPointId, &wLinkSum, wszLinkIdBuf); cFunRetVal = CalCutoffPointOccupyLinkSeq(wCutoffPointId, &wLinkSum, wszLinkIdBuf);
/*重置计算位置 */ /* 获取边界点信息 */
LinkPoint.wLinkId =0U; CutoffPoint.wLinkId = GetCfpLink(wCutoffPointId);
LinkPoint.dwOffset = 0U; CutoffPoint.dwOffset = GetCfpOffset(wCutoffPointId);
wOtherCfpId = 0U; wTrainId = 0u;
chOtherFlag = FLAG_UNSET; TrainPoint.wLinkId = 0u;
chBreakFlag = FLAG_UNSET; TrainPoint.dwOffset = 0u;
dwLinkLen = 0U;
if ((CI_SUCCESS == cFunRetVal)&&(MAX_CFG_LIGHTUPLINK_NUM>=wLinkSum)) TrainTailPoint.wLinkId = 0U;
TrainTailPoint.dwOffset = 0U;
TrainHeadPoint.wLinkId = 0U;
TrainHeadPoint.dwOffset = 0U;
if (CI_SUCCESS == cFunRetVal)
{ {
/* 区段查找成功,查到区段上的列车 */ /* 区段查找成功,查到区段上的列车 */
for (j = 0u;j < wLinkSum;j++) for (j = 0u;j < wLinkSum;j++)
{ {
wLinkId = wszLinkIdBuf[j]; wLinkId = wszLinkIdBuf[j];
chLinkCIId = (UINT8)GetLinkManageTiocById(wLinkId); wPhySecId = GetLinkRelatedPhySec(wLinkId);
if (chLinkCIId == chLocalId) chOccState = GetPhySecCurOccupyState(wPhySecId);
{ chTrainNum = as_GetLinkTrainNum(wLinkId);
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)) if ((SECTION_OCCUPY_NO != chOccState) && (0u != chTrainNum))
{ {
/*距离足够 或查找到相邻RC,或查找到占用,停止计算*/ /* 找到有车占用的区段 */
break; break;
} }
else 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 获取距离分界点最近的列车*/ /* 获取列车ID 获取距离分界点最近的列车*/
if ((j < wLinkSum) && (dwFindLen > dwLinkLen)) if (j < wLinkSum)
{ {
if (FLAG_UNSET == chOtherFlag) if (DIR_SAME == cDir)
{ {
CfpTrainInfoCal(LinkPoint.wLinkId, LinkPoint.dwOffset, dwLinkLen, &tmpTrainInfo, cDir); strTmp = as_GetLinkFirstTrain(wLinkId);
} }
else else
{ {
/*找到不属于本联锁link 寻找对应联锁及分界点列车信息*/ strTmp = as_GetLinkLastTrain(wLinkId);
OtherCfpTrainInfoCal(LinkPoint.wLinkId, LinkPoint.dwOffset, dwLinkLen, &tmpTrainInfo);
} }
wTrainId = strTmp.u16TrainID;
} }
else else
{ {
/* 未找到有车占用 或空闲距离足够发送无车 */ ;
}
if (j == wLinkSum)
{
/* 未找到有车占用发送无车 */
tmpTrainInfo.wTrainId = 0u; tmpTrainInfo.wTrainId = 0u;
tmpTrainInfo.chTrainLevel = 0u; tmpTrainInfo.chTrainLevel = 0u;
tmpTrainInfo.dwDis = 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 else
{ {
@@ -792,7 +832,6 @@ void SetCfpLocalOcCtData(const UINT16 wCfpId)
UINT8 chSendNum = 0u; UINT8 chSendNum = 0u;
UINT8 chFunRtn = CI_ERROR; UINT8 chFunRtn = CI_ERROR;
struct_PathPoint strPoint = { 0u }; struct_PathPoint strPoint = { 0u };
UINT8 dir = 0u;
wIndex = GetCfpBufIndex(wCfpId); wIndex = GetCfpBufIndex(wCfpId);
/* 输入合法 */ /* 输入合法 */
@@ -813,9 +852,7 @@ void SetCfpLocalOcCtData(const UINT16 wCfpId)
g_CutoffPointDataBuf[wIndex].szLocalCtTrain[chSendNum].dwDelay = GetTrainMsgDelayTime(szCtTrainId[chCtIndex]); g_CutoffPointDataBuf[wIndex].szLocalCtTrain[chSendNum].dwDelay = GetTrainMsgDelayTime(szCtTrainId[chCtIndex]);
g_CutoffPointDataBuf[wIndex].szLocalCtTrain[chSendNum].wSpeed = GetTrainSpeed(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].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].wMaxHeadLink = GetTrainMaxHeadLink(szCtTrainId[chCtIndex]);
g_CutoffPointDataBuf[wIndex].szLocalCtTrain[chSendNum].dwMaxHeadOff = GetTrainMaxHeadOffset(szCtTrainId[chCtIndex]); g_CutoffPointDataBuf[wIndex].szLocalCtTrain[chSendNum].dwMaxHeadOff = GetTrainMaxHeadOffset(szCtTrainId[chCtIndex]);
g_CutoffPointDataBuf[wIndex].szLocalCtTrain[chSendNum].wMinHeadLink = GetTrainMinHeadLink(szCtTrainId[chCtIndex]); g_CutoffPointDataBuf[wIndex].szLocalCtTrain[chSendNum].wMinHeadLink = GetTrainMinHeadLink(szCtTrainId[chCtIndex]);
@@ -1594,141 +1631,4 @@ 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,23 +350,6 @@ UINT8 GetCfpSignalLightUpFlag(const UINT16 wCfpId);
*/ */
void SetCfpSignalLightUpFlag(const UINT16 wCfpId, const UINT8 cLightUpFlag); 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 #ifdef __cplusplus
} }
#endif #endif
@@ -43,7 +43,6 @@ UINT8 GetCiEmapCheckVer(const UINT8 ciId, UINT32 *emapVer,const UINT8 commDevTyp
switch (commDevType) switch (commDevType)
{/*根据通信设备类型获取CI与该通信设备的共用数据校验信息*/ {/*根据通信设备类型获取CI与该通信设备的共用数据校验信息*/
case CI_SYSTEM_TYPE_VOBC: case CI_SYSTEM_TYPE_VOBC:
case CI_SYSTEM_TYPE_IVOC:
case CI_SYSTEM_TYPE_ITE: case CI_SYSTEM_TYPE_ITE:
*emapVer = gEmapCiConfigStrus[ciId].dataVerCheckCIAndVOBC; /*ITE使用与VOBC相同的校验信息*/ *emapVer = gEmapCiConfigStrus[ciId].dataVerCheckCIAndVOBC; /*ITE使用与VOBC相同的校验信息*/
break; break;
@@ -58,7 +57,7 @@ UINT8 GetCiEmapCheckVer(const UINT8 ciId, UINT32 *emapVer,const UINT8 commDevTyp
*emapVer = gEmapCiConfigStrus[ciId].dataVerCheckCIAndTMC; *emapVer = gEmapCiConfigStrus[ciId].dataVerCheckCIAndTMC;
break; break;
default: default:
/*CI_SYSTEM_TYPE_RCI等情况*/ /*CI_SYSTEM_TYPE_CI等情况*/
break; break;
} }
@@ -112,8 +111,8 @@ UINT8 IsSameLineCI(const UINT8 ciA, const UINT8 ciB)
UINT8 dquDevNameA = CI_ERROR; UINT8 dquDevNameA = CI_ERROR;
UINT8 dquDevNameB = CI_ERROR; UINT8 dquDevNameB = CI_ERROR;
u16CiA = (UINT16)((CI_SYSTEM_TYPE_RCI * 256u) + ciA); u16CiA = (UINT16)((CI_SYSTEM_TYPE_CI * 256u) + ciA);
u16CiB = (UINT16)((CI_SYSTEM_TYPE_RCI * 256u) + ciB); u16CiB = (UINT16)((CI_SYSTEM_TYPE_CI * 256u) + ciB);
cbtcSysType = GetCbtcSysType(); cbtcSysType = GetCbtcSysType();
@@ -203,55 +202,28 @@ UINT32 GetCiTranCiDataCheckVer(const UINT8 ciId, const UINT16 deviceName)
UINT32 retDataVer = CI_ERROR; UINT32 retDataVer = CI_ERROR;
UINT8 ii = 0U; UINT8 ii = 0U;
UINT8 chBreakFlag = 0U; UINT8 chBreakFlag = 0U;
UINT8 chDevType = 0U;
chDevType = (UINT8)((deviceName & 0xFF00u) >> 8U); if ((ciId > 0U) && (ciId < CI_SUM_MAX) && (deviceName > 0U))
if ((ciId > 0U) && (ciId < CI_SUM_MAX) &&
((RC_WORK_MODE_CI == chDevType)||(RC_WORK_MODE_TIOC == chDevType)))
{ {
if (gEmapCiConfigStrus[ciId].devId == ciId) if (gEmapCiConfigStrus[ciId].devId == ciId)
{ {
if (RC_WORK_MODE_CI == chDevType) for (ii = 0U; ii < gEmapCiConfigStrus[ciId].chAdjoinCICount; ii++)
{ {
for (ii = 0U; ii < gEmapCiConfigStrus[ciId].chAdjoinCICount; ii++) if (ii < CI_TRAINSMIT_CI_MAX_NUM)
{ {
if (ii < CI_TRAINSMIT_CI_MAX_NUM) if ((deviceName == gEmapCiConfigStrus[ciId].wAdjoinCIId[ii]) && (gEmapCiConfigStrus[ciId].wAdjoinCIId[ii] > 0U) && (gEmapCiConfigStrus[ciId].wAdjoinCIId[ii] < 0xFFFFU))
{
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; chBreakFlag = 1U;
} }
if (1U == chBreakFlag)
{
break;
}
} }
} else
else
{
for (ii = 0U; ii < gEmapCiConfigStrus[ciId].chAdjoinRCCount; ii++)
{ {
if (ii < CI_TRAINSMIT_CI_MAX_NUM) chBreakFlag = 1U;
{ }
if ((deviceName == gEmapCiConfigStrus[ciId].wAdjoinRCId[ii]) && (gEmapCiConfigStrus[ciId].wAdjoinRCId[ii] > 0U) && (gEmapCiConfigStrus[ciId].wAdjoinRCId[ii] < 0xFFFFU)) if (1U == chBreakFlag)
{ {
retDataVer = gEmapCiConfigStrus[ciId].dwAdjoinRCShareCheckData[ii]; break;
chBreakFlag = 1U;
}
}
else
{
chBreakFlag = 1U;
}
if (1U == chBreakFlag)
{
break;
}
} }
} }
} }
@@ -36,15 +36,11 @@ typedef struct S_EmapCheckVerConfigStruct
UINT8 chAdjoinCICount; /*相邻CI数量*/ UINT8 chAdjoinCICount; /*相邻CI数量*/
UINT16 wAdjoinCIId[CI_TRAINSMIT_CI_MAX_NUM]; /*相邻CI[1-6]的ID*/ UINT16 wAdjoinCIId[CI_TRAINSMIT_CI_MAX_NUM]; /*相邻CI[1-6]的ID*/
UINT32 dwAdjoinCIShareCheckData[CI_TRAINSMIT_CI_MAX_NUM]; /*与相邻CI[1-6]的共用数据校验信息*/ 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*/ UINT16 ciTransmitAxisId[CI_TRAINSMIT_AXIS_MAX_NUM];/*与联锁通信的计轴系统ID*/
UINT32 ciTransmitAxisCheckData[CI_TRAINSMIT_AXIS_MAX_NUM];/*与联锁通信的计轴系统校验信息*/ UINT32 ciTransmitAxisCheckData[CI_TRAINSMIT_AXIS_MAX_NUM];/*与联锁通信的计轴系统校验信息*/
UINT8 chAdjoinOcCount; /*与CI通信的oc数量*/ UINT8 chAdjoinOcCount; /*与CI通信的oc数量*/
UINT16 wAdjoinOcId[CI_TRAINSMIT_OC_MAX_NUM]; /*Oc[1-10]的ID*/ UINT16 wAdjoinOcId[CI_TRAINSMIT_OC_MAX_NUM]; /*Oc[1-10]的ID*/
UINT32 dwAdjoinOcShareCheckData[CI_TRAINSMIT_OC_MAX_NUM]; /*与OC[1-10]的共用数据校验信息*/ UINT32 dwAdjoinOcShareCheckData[CI_TRAINSMIT_OC_MAX_NUM]; /*与OC[1-10]的共用数据校验信息*/
UINT32 dwLocalShareCheckData; /*与本控区RC/CI校验信息*/
} EmapCiConfigStru; } EmapCiConfigStru;
extern EmapCiConfigStru gEmapCiConfigStrus[CI_SUM_MAX];/*存储各CI使用的电子地图版本*/ extern EmapCiConfigStru gEmapCiConfigStrus[CI_SUM_MAX];/*存储各CI使用的电子地图版本*/
File diff suppressed because it is too large Load Diff
+15 -179
View File
@@ -15,14 +15,6 @@
#define _DEVICE_DATA_MANAGE_H_ #define _DEVICE_DATA_MANAGE_H_
#include "CommonTypes.h" #include "CommonTypes.h"
/*区间雨雪信息结构体*/
typedef struct S_AreaSnowInfoStruct
{
UINT16 wAreaId; /*区间ID*/
UINT8 cAreaSnowLevel; /*区间湿轨级别*/
} AreaSnowInfoStruct;
#include "../System/CiSystemDefine.h" #include "../System/CiSystemDefine.h"
#include "../error/ErrorDataManage.h" #include "../error/ErrorDataManage.h"
#include "../Transmit/TransmitStateDataManage.h" #include "../Transmit/TransmitStateDataManage.h"
@@ -72,13 +64,8 @@ typedef struct S_AreaSnowInfoStruct
* 其他联锁条件状态定义 * 其他联锁条件状态定义
*--------------------------------------------------------------------------*/ *--------------------------------------------------------------------------*/
/* 其他联锁条件检查配置状态相关定义 */ /* 其他联锁条件检查配置状态相关定义 */
#define LOCAL_AREA_SNOW_SUM_MAX ((UINT8)20) /*本控区及相邻控区发送的区间雨雪站台数量*/ #define LOCAL_AREA_SNOW_SUM_MAX ((UINT8)20) /*本控区及相邻控区发送的区间雨雪站台数量*/
#define ALL_AREA_SNOW_SUM_MAX ((UINT8)254) /*TMC发送的全线区间雨雪站台数量*/ #define ALL_AREA_SNOW_SUM_MAX ((UINT8)254) /*TMC发送的全线区间雨雪站台数量*/
#define ALL_CBTC_CROSS_SUM_MAX ((UINT8)253) /*CBTC跨压最大数量*/
#define ALL_TACS_CROSS_SUM_MAX ((UINT8)253) /*TACS跨压最大数量*/
#define CROSS_SIGNAL_ID_MAX ((UINT8)1499) /*跨压信号机ID最大值*/
#define CBTC_CROSS_ID_MAX ((UINT8)253) /*CBTC跨压最大列车ID*/
#define TACS_CROSS_ID_MAX ((UINT8)253) /*TACS跨压最大列车ID*/
/* 1 信号机 /* 1 信号机
开放0x55 开放0x55
@@ -169,7 +156,6 @@ typedef struct S_LineCommTrainStruct
UINT16 szCommTrainNumID[TRAIN_SUM_MAX]; /*全线通信车ID数组*/ UINT16 szCommTrainNumID[TRAIN_SUM_MAX]; /*全线通信车ID数组*/
}LineCommTrainStruct; }LineCommTrainStruct;
/*******************************全局变量声明*******************************/ /*******************************全局变量声明*******************************/
extern UINT8 AllSignalBrightFlag; /*全站亮灯标志*/ extern UINT8 AllSignalBrightFlag; /*全站亮灯标志*/
@@ -195,10 +181,6 @@ extern UINT8 g_AllTsrFlag; /*
extern UINT8 g_AllSnowModel; /*全线雨雪模式命令*/ extern UINT8 g_AllSnowModel; /*全线雨雪模式命令*/
extern UINT8 g_AllSnowModelCC; /*全线雨雪模式命令CC0x55-有效;0xAA-无效*/
extern UINT8 g_AllSnowLevel; /*全线湿轨级别:0-默认值;1-一级;2-二级*/
extern UINT8 g_IteLineCutState; /*ITE全线切除状态:0x55:切除ITE0xAA:使用ITE0xFF:默认值*/ extern UINT8 g_IteLineCutState; /*ITE全线切除状态:0x55:切除ITE0xAA:使用ITE0xFF:默认值*/
extern UINT8 g_AllLineTsrState; /*全线临时限速状态*/ extern UINT8 g_AllLineTsrState; /*全线临时限速状态*/
@@ -237,21 +219,13 @@ extern UINT8 SwitchBlockLinkState; /*
extern CtrlPowerStruct ctrlpowerFlag[VIRTUAL_CI_MAX]; extern CtrlPowerStruct ctrlpowerFlag[VIRTUAL_CI_MAX];
extern UINT8 LocalAreaSnowNum; /*本地区间雨雪站台数量*/ extern UINT8 LocalAreaSnowNum; /*本地区间雨雪站台数量*/
extern AreaSnowInfoStruct szLocalAreaSnow[LOCAL_AREA_SNOW_SUM_MAX]; /*本地区间雨雪数组*/ extern UINT32 szLocalAreaSnowId[LOCAL_AREA_SNOW_SUM_MAX]; /*本地区间雨雪站台ID数组*/
extern UINT8 gLocalAreaSnowNumCC; /*本地区间雨雪站台数量CC*/
extern AreaSnowInfoStruct gszLocalAreaSnowCC[LOCAL_AREA_SNOW_SUM_MAX]; /*本地区间雨雪数组CC*/
extern LineCommTrainStruct gStrLineCommTrain; /*全线通信车结构体*/ extern LineCommTrainStruct gStrLineCommTrain; /*全线通信车结构体*/
extern UINT32 gFlyProtectOverCyc; /*飞车宕机报警起始周期*/ extern UINT32 gFlyProtectOverCyc; /*飞车宕机报警起始周期*/
extern UINT8 g_LocalSnowModel; /*本地雨雪模式命令*/ extern UINT8 g_LocalSnowModel; /*本地雨雪模式命令*/
extern UINT8 g_LocalSnowModelCC; /*本地雨雪模式命令CC*/
extern UINT8 gLocalAreaIteCutNum; /*本地区间ITE切除数量*/
extern UINT16 gSzLocalAreaIteCutId[ALL_AREA_SNOW_SUM_MAX]; /*本地区间ITE切除ID数组*/
/******************************联锁标志数据管理****************************/ /******************************联锁标志数据管理****************************/
/* /*
@@ -300,6 +274,13 @@ void SetStartLockFlag(UINT8 setFlag);
LINSHIXIANSU_COMM_BAD_YES_LABOURCANCLE_STATE LINSHIXIANSU_COMM_BAD_YES_LABOURCANCLE_STATE
*/ */
UINT8 GetLabourCancelLinShiXianState(void); UINT8 GetLabourCancelLinShiXianState(void);
/*
功能描述:人工取消临时限速状态迁移处理
参数说明:setFlag 状态
返回值:无
*/
void LabourCancelLSXianStaMoveProc(UINT8 setFlag);
/* /*
功能描述:人工取消临时限速状态迁移处理 功能描述:人工取消临时限速状态迁移处理
参数说明:setFlag 状态,UINT8 virCIid 虚拟联锁ID 参数说明:setFlag 状态,UINT8 virCIid 虚拟联锁ID
@@ -1386,24 +1367,6 @@ extern UINT8 GetAllSnowModel(void);
*/ */
extern void SetAllSnowModel(UINT8 setmodle); 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全线切除状态 * 功能描述:获取ITE全线切除状态
* 参数说明:void * 参数说明:void
@@ -1747,10 +1710,10 @@ UINT8 GetDiaoCheRouteOpenState(const UINT16 wRouteId);
/* /*
* 功能描述:设置本地区间雨雪站台信息 * 功能描述:设置本地区间雨雪站台信息
* 参数说明:const UINT8 cAreaSnowNum 区间雨雪数量 * 参数说明:const UINT8 cAreaSnowNum 区间雨雪数量
* const AreaSnowInfoStruct pAreaSnowBuf[LOCAL_AREA_SNOW_SUM_MAX] 区间雨雪数组 * const UINT32 pAreaSnowIdBuf[] 区间雨雪ID数组
* 返回值 :无 * 返回值 :无
*/ */
void SetLocalAreaSnowInfo(const UINT8 cAreaSnowNum, const AreaSnowInfoStruct pAreaSnowBuf[LOCAL_AREA_SNOW_SUM_MAX]); void SetLocalAreaSnowInfo(const UINT8 cAreaSnowNum, const UINT32 pAreaSnowIdBuf[]);
/* /*
* 功能描述:获取本地区间雨雪站台数量 * 功能描述:获取本地区间雨雪站台数量
@@ -1760,11 +1723,11 @@ void SetLocalAreaSnowInfo(const UINT8 cAreaSnowNum, const AreaSnowInfoStruct pAr
UINT8 GetLocalAreaSnowNum(void); UINT8 GetLocalAreaSnowNum(void);
/* /*
* 功能描述:获取本地区间雨雪信息 * 功能描述:获取本地区间雨雪站台ID
* 参数说明:无 * 参数说明:无
* 返回值 :区间雨雪信息 * 返回值 :区间雨雪站台ID
*/ */
AreaSnowInfoStruct* GetLocalAreaSnow(void); UINT32* GetLocalAreaSnowId(void);
/* /*
@@ -1861,131 +1824,4 @@ UINT8 GetSwitchUsingValidState(const UINT16 wSwitchId, const UINT8 chFunctionId,
*/ */
void DefaultCtrlPowerDeal(const UINT8 virtualCiId); 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);
/*
* 功能描述:判断本联锁临时限速状态
* 参数说明:无
* 返 回 值:临时限速有效返回失败,清除或与ZC通信正常返回成功
* Created :LYJ
*/
UINT8 CheckLocalCiLSXSStata(void);
#endif #endif
+15 -89
View File
@@ -17,7 +17,7 @@
extern PlatHeartDataStruct RecvHeartDataStru ; /*平台心跳帧数据结构*/ extern PlatHeartDataStruct RecvHeartDataStru ; /*平台心跳帧数据结构*/
extern PlatGPIODataStruct RecvPlatDataStruGPIO;/*平台0x2D帧数据结构 GPIO采集状态*/ extern PlatGPIODataStruct RecvPlatDataStruGPIO;/*平台0x2D帧数据结构 GPIO采集状态*/
extern PlatGPIOToleranceDataStruct gPlatDataGPIOTolercance;/*平台硬件采集故障容忍记录数据*/
@@ -427,36 +427,18 @@ UINT8 CheckRCIAPowerFaultState(void)
{ {
UINT8 retVal = CI_ERROR; UINT8 retVal = CI_ERROR;
UINT8 cxABreakFlag = 0U; /*A系电源插箱空开断开检查*/ UINT8 cxABreakFlag = 0U; /*A系电源插箱空开断开检查*/
UINT8 chCheckState = 0U;
UINT32 dwErrorStartCyc = 0U;
UINT32 dwCurCyc = 0U;
cxABreakFlag = GetPowerANodeStatue(); cxABreakFlag = GetPowerANodeStatue();
dwErrorStartCyc = gPlatDataGPIOTolercance.powerANode_TolCyc;
dwCurCyc = Get2oo2CurCycleNum();
/* 1、A系电源插箱空开断开 */ /* 1、A系电源插箱空开断开 */
if (NODE_STATUS_BREAK == cxABreakFlag) if (NODE_STATUS_BREAK == cxABreakFlag)
{ {
/*A系电源故障状态*/ /*A系电源故障状态*/
chCheckState = SystemOverTimeCheck(dwErrorStartCyc, IO_POWERSTATE_TOLERANCE); retVal = CI_ERROR;
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 else
{ {
retVal = CI_SUCCESS; retVal = CI_SUCCESS;
gPlatDataGPIOTolercance.powerANode_TolCyc = 0U;
} }
return retVal; return retVal;
} }
@@ -471,36 +453,18 @@ UINT8 CheckRCIBPowerFaultState(void)
{ {
UINT8 retVal = CI_ERROR; UINT8 retVal = CI_ERROR;
UINT8 cxBBreakFlag = 0U; /*B系电源插箱空开断开检查*/ UINT8 cxBBreakFlag = 0U; /*B系电源插箱空开断开检查*/
UINT8 chCheckState = 0U;
UINT32 dwErrorStartCyc = 0U;
UINT32 dwCurCyc = 0U;
cxBBreakFlag = GetPowerBNodeStatue(); cxBBreakFlag = GetPowerBNodeStatue();
dwErrorStartCyc = gPlatDataGPIOTolercance.powerBNode_TolCyc;
dwCurCyc = Get2oo2CurCycleNum(); /* 1、B系电源插箱空开断开 */
/* 1、B系电源插箱空开断开*/
if (NODE_STATUS_BREAK == cxBBreakFlag) if (NODE_STATUS_BREAK == cxBBreakFlag)
{ {
/*B系电源故障状态*/ /*B系电源故障状态*/
chCheckState = SystemOverTimeCheck(dwErrorStartCyc, IO_POWERSTATE_TOLERANCE); retVal = CI_ERROR;
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 else
{ {
retVal = CI_SUCCESS; retVal = CI_SUCCESS;
gPlatDataGPIOTolercance.powerBNode_TolCyc = 0U;
} }
return retVal; return retVal;
} }
@@ -515,20 +479,16 @@ UINT8 CheckRCIBPowerFaultState(void)
UINT8 CheckRCIAPowerModeFaultState(void) UINT8 CheckRCIAPowerModeFaultState(void)
{ {
UINT8 retVal = CI_ERROR; UINT8 retVal = CI_ERROR;
UINT8 powerAPUBAState = 0U; /*PUB A采集的24VA电源状态 1*/ UINT8 powerAPUBAState = 0U; /*PUB A采集的24VA电源状态 1*/
UINT8 powerBPUBAState = 0U; /*PUB A采集的24VB电源状态 3*/ UINT8 powerBPUBAState = 0U; /*PUB A采集的24VB电源状态 3*/
UINT8 vol1Flag = 0U; /*CPI A采集24VA电源 1*/ UINT8 vol1Flag = 0U; /*CPI A采集24VA电源 1*/
UINT8 vol3Flag = 0U; /*CPI A采集24VB电源 3*/ UINT8 vol3Flag = 0U; /*CPI A采集24VB电源 3*/
UINT8 chCheckState = 0U;
UINT32 dwErrorStartCyc = 0U;
UINT32 dwCurCyc = 0U;
powerAPUBAState = GetGPIOCollectPointStatus(COLLECT_MODEA_CCUA); powerAPUBAState = GetGPIOCollectPointStatus(COLLECT_MODEA_CCUA);
powerBPUBAState = GetGPIOCollectPointStatus(COLLECT_MODEB_CCUA); powerBPUBAState = GetGPIOCollectPointStatus(COLLECT_MODEB_CCUA);
vol1Flag = CheckPointVoltageState(COLLECT_MODEA_CCUA); vol1Flag = CheckPointVoltageState(COLLECT_MODEA_CCUA);
vol3Flag = CheckPointVoltageState(COLLECT_MODEB_CCUA); vol3Flag = CheckPointVoltageState(COLLECT_MODEB_CCUA);
dwErrorStartCyc = gPlatDataGPIOTolercance.powerAMode_TolCyc;
dwCurCyc = Get2oo2CurCycleNum();
/* 1、PUB A采集的24VA电源异常、或24VB电源异常 /* 1、PUB A采集的24VA电源异常、或24VB电源异常
2、CPI A采集24VA电源、或24VB电源电压为0V */ 2、CPI A采集24VA电源、或24VB电源电压为0V */
@@ -536,27 +496,11 @@ UINT8 CheckRCIAPowerModeFaultState(void)
if (((CHECK_VOLTAGE_ZERO == vol1Flag) || (CHECK_VOLTAGE_ZERO == vol3Flag)) if (((CHECK_VOLTAGE_ZERO == vol1Flag) || (CHECK_VOLTAGE_ZERO == vol3Flag))
&& ((POWER_STATUS_ABNORMAL == powerAPUBAState) || (POWER_STATUS_ABNORMAL == powerBPUBAState))) && ((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 else
{ {
retVal = CI_SUCCESS; retVal = CI_SUCCESS;
gPlatDataGPIOTolercance.powerAMode_TolCyc = 0U;
} }
return retVal; return retVal;
@@ -576,43 +520,25 @@ UINT8 CheckRCIBPowerModeFaultState(void)
UINT8 powerBPUBBState = 0U; /*PUB A采集的24VB电源状态 4*/ UINT8 powerBPUBBState = 0U; /*PUB A采集的24VB电源状态 4*/
UINT8 vol2Flag = 0U; /*CPI B采集24VA电源 2*/ UINT8 vol2Flag = 0U; /*CPI B采集24VA电源 2*/
UINT8 vol4Flag = 0U; /*CPI B采集24VB电源 4*/ UINT8 vol4Flag = 0U; /*CPI B采集24VB电源 4*/
UINT8 chCheckState = 0U;
UINT32 dwErrorStartCyc = 0U;
UINT32 dwCurCyc = 0U;
powerAPUBBState = GetGPIOCollectPointStatus(COLLECT_MODEA_CCUB); powerAPUBBState = GetGPIOCollectPointStatus(COLLECT_MODEA_CCUB);
powerBPUBBState = GetGPIOCollectPointStatus(COLLECT_MODEB_CCUB); powerBPUBBState = GetGPIOCollectPointStatus(COLLECT_MODEB_CCUB);
vol2Flag = CheckPointVoltageState(COLLECT_MODEA_CCUB); vol2Flag = CheckPointVoltageState(COLLECT_MODEA_CCUB);
vol4Flag = CheckPointVoltageState(COLLECT_MODEB_CCUB); vol4Flag = CheckPointVoltageState(COLLECT_MODEB_CCUB);
dwErrorStartCyc = gPlatDataGPIOTolercance.powerBMode_TolCyc;
dwCurCyc = Get2oo2CurCycleNum();
/* 1、PUB B采集的24VA电源异常、或24VB电源异常 /* 1、PUB B采集的24VA电源异常、或24VB电源异常
2、CPI B采集24VA电源、或24VB电源电压为0V */ 2、CPI B采集24VA电源、或24VB电源电压为0V */
/*暂未实现PUB采集,只判断电源电压*/
if (((CHECK_VOLTAGE_ZERO == vol2Flag) || (CHECK_VOLTAGE_ZERO == vol4Flag)) if (((CHECK_VOLTAGE_ZERO == vol2Flag) || (CHECK_VOLTAGE_ZERO == vol4Flag))
&& ((POWER_STATUS_ABNORMAL == powerAPUBBState) || (POWER_STATUS_ABNORMAL == powerBPUBBState))) && ((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 else
{ {
retVal = CI_SUCCESS; retVal = CI_SUCCESS;
gPlatDataGPIOTolercance.powerBMode_TolCyc = 0U;
} }
return retVal; return retVal;
+2 -10
View File
@@ -16,7 +16,7 @@
#include "CommonTypes.h" #include "CommonTypes.h"
#include "../System/CiSystemDefine.h" #include "../System/CiSystemDefine.h"
#include "../System/SystemParameterManage.h"
#define BOARD_TYPE_CCUA ((UINT8)0x09) /*通控板A*/ #define BOARD_TYPE_CCUA ((UINT8)0x09) /*通控板A*/
@@ -59,7 +59,6 @@
#define CCU_CommBadEnsureTime_CycleCount ((UINT16)5u) /*应用与通控通信中断判断周期数*/ #define CCU_CommBadEnsureTime_CycleCount ((UINT16)5u) /*应用与通控通信中断判断周期数*/
#define VOLTAGE_MAX_TO_0 ((UINT16)500U) /*电压判断为0的阈值*/ #define VOLTAGE_MAX_TO_0 ((UINT16)500U) /*电压判断为0的阈值*/
#define IO_POWERSTATE_TOLERANCE ((UINT8)0x02) /*平台电源报警容忍周期数,容忍3周期,超过2周期报警*/
/*平台心跳帧信息结构*/ /*平台心跳帧信息结构*/
typedef struct S_PlatHeartDataStruct typedef struct S_PlatHeartDataStruct
@@ -101,14 +100,7 @@ typedef struct S_PlatGPIODataStruct
UINT8 ModepowerBState_PUB; /*机柜B系电源插箱中为CPUB供电的24VDC电源模块状态*/ UINT8 ModepowerBState_PUB; /*机柜B系电源插箱中为CPUB供电的24VDC电源模块状态*/
}PlatGPIODataStruct; }PlatGPIODataStruct;
/*平台发送的电源采集状态容忍同步数据*/
typedef struct S_PlatGPIOToleranceData
{
UINT32 powerANode_TolCyc; /*A系电源插箱的故障容忍起始周期*/
UINT32 powerBNode_TolCyc; /*B系电源插箱的故障容忍起始周期*/
UINT32 powerAMode_TolCyc; /*A系电源模块的故障容忍起始周期*/
UINT32 powerBMode_TolCyc; /*B系电源模块的故障容忍起始周期*/
}PlatGPIOToleranceDataStruct;
+1 -27
View File
@@ -109,8 +109,6 @@
#define EFUNC_ROUTE_FIRST_LOG_UNLOCK ((UINT8)0x50) /*函数:RouteFirstLogSecAutoUnlockProcess进路第一逻辑区段自动解锁检查*/ #define EFUNC_ROUTE_FIRST_LOG_UNLOCK ((UINT8)0x50) /*函数:RouteFirstLogSecAutoUnlockProcess进路第一逻辑区段自动解锁检查*/
#define EFUNC_SWITCHTESTLOGIC ((UINT8)0x80U) /*函数:SetSwitchTestLogicManage道岔定反位测试*/ #define EFUNC_SWITCHTESTLOGIC ((UINT8)0x80U) /*函数:SetSwitchTestLogicManage道岔定反位测试*/
#define EFUNC_OVERLAP_VALIDMASK_CHECK ((UINT8)0x4A) /*函数:OverlapValidMaskCheck 计算保护区段有效码位检查*/ #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) /*办理引导进路检查*/ #define EFUNC_SET_LEAD_ROUTE_CHECK ((UINT8)0x4B) /*办理引导进路检查*/
@@ -137,6 +135,7 @@
#define EFUNC_CLD_CANCEL_D_TRAIN_ROUTE ((UINT8)0x66) /*取消进路调车*/ #define EFUNC_CLD_CANCEL_D_TRAIN_ROUTE ((UINT8)0x66) /*取消进路调车*/
#define EFUNC_CLD_CLOSE_GARAGEDOOR ((UINT8)0x67) /*关闭车库门*/ #define EFUNC_CLD_CLOSE_GARAGEDOOR ((UINT8)0x67) /*关闭车库门*/
#define EFUNC_CLD_CHECK_GARAGEDOOR_CLOSE ((UINT8)0xc9) /*车库门关闭条件检查(RC模式下)*/ #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_L_ERR_CLD ((UINT8)0x69) /*OpenLTrainRouteErrP*/
#define EFUNC_CHECK_OPEN_D_ERR_CLD ((UINT8)0x6a) #define EFUNC_CHECK_OPEN_D_ERR_CLD ((UINT8)0x6a)
#define EFUNC_KEEP_L_ERR_CLD ((UINT8)0x6b) #define EFUNC_KEEP_L_ERR_CLD ((UINT8)0x6b)
@@ -179,8 +178,6 @@
#define EFUNC_LOGSEC_LAST_SECLOCK ((UINT8)0x92) /* CheckLogRouteLogSecLastSecLock */ #define EFUNC_LOGSEC_LAST_SECLOCK ((UINT8)0x92) /* CheckLogRouteLogSecLastSecLock */
#define EFUNC_ROUTE_ZHONGTUZHEFAN_UNLOCK ((UINT8)0x94) /* CheckRouteZhefanJiesuo */ #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逻辑进路信号开放处理*/ #define EFUNC_LogRouteOpenManage ((UINT8)0xC1) /*EFUNC_LogRouteOpenManage逻辑进路信号开放处理*/
@@ -213,13 +210,6 @@
#define EFUNC_FIRSTLEAVE_LOGSEC_CHECK ((UINT8)0xD1) /*离去逻辑区段检查RouteLeaveLogSecCheck*/ #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*/
/*************************************************分界线******************************************************************************/ /*************************************************分界线******************************************************************************/
/*************************************************分界线******************************************************************************/ /*************************************************分界线******************************************************************************/
@@ -240,8 +230,6 @@
#define ETYPE_ROUTE_APPLY_SWITCH_CHECK ((UINT8)0x0b) /*进路办理道岔状态检查*/ #define ETYPE_ROUTE_APPLY_SWITCH_CHECK ((UINT8)0x0b) /*进路办理道岔状态检查*/
#define ETYPE_ROUTE_XUANPAI_OVERTIME ((UINT8)0x10) /*进路选排超时*/ #define ETYPE_ROUTE_XUANPAI_OVERTIME ((UINT8)0x10) /*进路选排超时*/
#define ETYPE_GROUP_AUTO_ROUTE_STATE ((UINT8)0x16) /*组合自动进路*/ #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通信*/ #define ETYPE_COMM_WITH_VOBC ((UINT8)0x11) /*与VOBC通信*/
@@ -252,8 +240,6 @@
#define ETYPE_COMM_WITH_PSC ((UINT8)0x15) /*CI与PSC通信*/ #define ETYPE_COMM_WITH_PSC ((UINT8)0x15) /*CI与PSC通信*/
#define ETYPE_COMM_WITH_TMC ((UINT8)0x17) /*与TMC通信*/ #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 */ /* 信号机故障类型编码 (UINT8)0x21-(UINT8)0x3f */
/* 设备类型 CI_DEVICE_TYPE_SIGNAL */ /* 设备类型 CI_DEVICE_TYPE_SIGNAL */
@@ -307,7 +293,6 @@
/*保护区段类型*/ /*保护区段类型*/
#define ETYPE_OVERLAP_LABORUNLOCK_FAIL ((UINT8)0x51U) /*保护区段人工锁闭条件不满足*/ #define ETYPE_OVERLAP_LABORUNLOCK_FAIL ((UINT8)0x51U) /*保护区段人工锁闭条件不满足*/
#define ETYPE_OVERLAP_RES_CHECK_FAIL ((UINT8)0x52U) /*保护区段资源检查条件不满足*/ #define ETYPE_OVERLAP_RES_CHECK_FAIL ((UINT8)0x52U) /*保护区段资源检查条件不满足*/
#define ETYPE_OVERLAP_LABORUNLOCK_STATE ((UINT8)0x53U) /*保护区段人工解锁状态不满足*/
/* 道岔类型编码 (UINT8)0x61-(UINT8)0x7f */ /* 道岔类型编码 (UINT8)0x61-(UINT8)0x7f */
/* 设备类型 CI_DEVICE_TYPE_SWITCH */ /* 设备类型 CI_DEVICE_TYPE_SWITCH */
@@ -328,7 +313,6 @@
#define ETYPE_CANCLE_ZHAOCHA ((UINT8)0x82) /*取消照查继电器*/ #define ETYPE_CANCLE_ZHAOCHA ((UINT8)0x82) /*取消照查继电器*/
#define ETYPE_ZHAOCHA_ROUTE_OVERTIME ((UINT8)0x83) /*进路照查超时*/ #define ETYPE_ZHAOCHA_ROUTE_OVERTIME ((UINT8)0x83) /*进路照查超时*/
#define ETYPE_JKJ_WORK ((UINT8)0x84) /*应急盘有效*/ #define ETYPE_JKJ_WORK ((UINT8)0x84) /*应急盘有效*/
#define ETYPE_ZHAOCHA_OVERLAP_OVERTIME ((UINT8)0x86) /*保护区段照查超时*/
/* 其他联锁条件检查相关故障类型编码 (UINT8)0x91-(UINT8)0x9f */ /* 其他联锁条件检查相关故障类型编码 (UINT8)0x91-(UINT8)0x9f */
/* 设备类型 /* 设备类型
@@ -395,16 +379,6 @@
#define ETYPE_LOGSEC_XIANSU_STATE ((UINT8)0xC5) /*逻辑区段限速设置*/ #define ETYPE_LOGSEC_XIANSU_STATE ((UINT8)0xC5) /*逻辑区段限速设置*/
#define ETYPE_LOGSEC_FIRSTLOCK_STATE ((UINT8)0xC6) /*逻辑区段为第一个锁闭区段检查*/ #define ETYPE_LOGSEC_FIRSTLOCK_STATE ((UINT8)0xC6) /*逻辑区段为第一个锁闭区段检查*/
#define ETYPE_LOGSEC_CBTC_PROPERTY ((UINT8)0xC7) /*逻辑区段CBTC属性检查*/ #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 */ /* 设备类型 EFUNC_LOGIC_MANAGE_SYETEM */
@@ -662,55 +662,4 @@ UINT8 CheckEsbBelSendRange(const UINT16 wCheckEsbId)
} }
return retVal; 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,7 +19,6 @@
#include "CommonTypes.h" #include "CommonTypes.h"
#include "../System/CiSystemDefine.h" #include "../System/CiSystemDefine.h"
#include "../System/SystemParameterManage.h" #include "../System/SystemParameterManage.h"
#include "dquStructInit.h"
#ifdef __cplusplus #ifdef __cplusplus
@@ -51,8 +50,6 @@ typedef struct S_EsbConfigDataStruct
UINT16 EsbCutoffBuzzRelayId; /*切除蜂鸣器报警继电器ID*/ UINT16 EsbCutoffBuzzRelayId; /*切除蜂鸣器报警继电器ID*/
UINT8 ConfigAtsCiEssSteadyMask; /*是否配置了ATS-CI稳灯状态码位0x55 配置;0xaa未配置*/ UINT8 ConfigAtsCiEssSteadyMask; /*是否配置了ATS-CI稳灯状态码位0x55 配置;0xaa未配置*/
UINT8 ConfigAtsCiEssFlashMask; /*是否配置了ATS-CI闪灯状态码位0x55 配置;0xaa未配置*/ UINT8 ConfigAtsCiEssFlashMask; /*是否配置了ATS-CI闪灯状态码位0x55 配置;0xaa未配置*/
UINT8 RelOnePlatEsbNum; /*关联同站ESB数量*/
UINT16 RelOnePlatEsbId[ESB_PROTECT_LINK_NUM]; /*关联同站ESB ID数组*/
} EsbConfigDataStruct; } EsbConfigDataStruct;
/*******************************全局变量声明*******************************/ /*******************************全局变量声明*******************************/
@@ -296,23 +293,6 @@ UINT16 GetEsbCutoffBuzzRelayId(const UINT16 esbId);
*/ */
UINT8 CheckEsbBelSendRange(const UINT16 wCheckEsbId); 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 #ifdef __cplusplus
} }
#endif #endif
-576
View File
@@ -160,19 +160,12 @@ UINT8 EsbDataManageInit(void)
EsbDataStru[esbId].CutStatus = ESB_CUT_NO; /*ESB旁路未按下*/ EsbDataStru[esbId].CutStatus = ESB_CUT_NO; /*ESB旁路未按下*/
EsbDataStru[esbId].EsbRelateRelayDriveState = ESB_PEPUP_ESSUP_INITION_STA; /*PEP和ESS都无效*/ EsbDataStru[esbId].EsbRelateRelayDriveState = ESB_PEPUP_ESSUP_INITION_STA; /*PEP和ESS都无效*/
EsbDataStru[esbId].EsbErrorFlag = ESB_ERROR_FLAG_NO; /*自复式ESB未故障*/ 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].CancelEsbErrorFlag = ESB_ERROR_FLAG_NO; /*自复式取消ESB未故障*/
EsbDataStru[esbId].EsbPressCycNum = 0U; /*紧急关闭按钮按下周期*/ EsbDataStru[esbId].EsbPressCycNum = 0U; /*紧急关闭按钮按下周期*/
EsbDataStru[esbId].CancelEsbPressCycNum = 0U; /*取消紧急关闭按钮按下周期*/ EsbDataStru[esbId].CancelEsbPressCycNum = 0U; /*取消紧急关闭按钮按下周期*/
EsbDataStru[esbId].CancelEsbErrTriggerPressCycNum = 0U; /*取消紧急关闭按钮误触发按下周期*/ EsbDataStru[esbId].CancelEsbErrTriggerPressCycNum = 0U; /*取消紧急关闭按钮误触发按下周期*/
EsbDataStru[esbId].CancelEsbValidFlag = ESB_CANCEL_VALID_NO; /*取消紧急关闭按钮有效标志*/ EsbDataStru[esbId].CancelEsbValidFlag = ESB_CANCEL_VALID_NO; /*取消紧急关闭按钮有效标志*/
EsbDataStru[esbId].CancelEsbRelayDownState = ESB_RELAY_ERROR_DOWN_YES; /*取消紧急关闭按钮采集继电器落下状态初始化为通信异常落下*/ 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; rtn = CI_SUCCESS;
return rtn; return rtn;
@@ -804,573 +797,4 @@ UINT8 GetCancelEsbRelayDownState(const UINT16 esbId)
} }
return reVal; 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;
} }
-179
View File
@@ -38,19 +38,12 @@ typedef struct S_EsbDataStruct
UINT8 EssSteadyState; /*ESS稳灯状态(用于虚拟联锁向ATS反馈)--0x55 需要设置稳灯;0xaa不需要设置稳灯*/ UINT8 EssSteadyState; /*ESS稳灯状态(用于虚拟联锁向ATS反馈)--0x55 需要设置稳灯;0xaa不需要设置稳灯*/
UINT8 EssFlashState; /*ESS闪灯状态(用于虚拟联锁向ATS反馈)--0x55 需要设置闪灯;0xaa不需要设置闪灯*/ UINT8 EssFlashState; /*ESS闪灯状态(用于虚拟联锁向ATS反馈)--0x55 需要设置闪灯;0xaa不需要设置闪灯*/
UINT8 EsbErrorFlag; /*自复式紧急停车按钮故障标志,0x55未故障,0xaa故障*/ UINT8 EsbErrorFlag; /*自复式紧急停车按钮故障标志,0x55未故障,0xaa故障*/
UINT8 EsbRelayDownState; /*紧急关闭按钮采集继电器落下状态,0x55:正常采集落下,0xaa:通信异常落下*/
UINT8 CancelEsbErrorFlag; /*自复式取消紧急停车按钮故障标志,0x55未故障,0xaa故障*/ UINT8 CancelEsbErrorFlag; /*自复式取消紧急停车按钮故障标志,0x55未故障,0xaa故障*/
UINT32 EsbPressCycNum; /*紧急关闭按钮按下周期*/ UINT32 EsbPressCycNum; /*紧急关闭按钮按下周期*/
UINT32 CancelEsbPressCycNum; /*取消紧急关闭按钮正常按下周期*/ UINT32 CancelEsbPressCycNum; /*取消紧急关闭按钮正常按下周期*/
UINT32 CancelEsbErrTriggerPressCycNum; /*取消紧急关闭按钮误触发按下周期*/ UINT32 CancelEsbErrTriggerPressCycNum; /*取消紧急关闭按钮误触发按下周期*/
UINT8 CancelEsbValidFlag; /*取消紧急关闭按钮有效标志,0x55无效,0xaa有效*/ UINT8 CancelEsbValidFlag; /*取消紧急关闭按钮有效标志,0x55无效,0xaa有效*/
UINT8 CancelEsbRelayDownState; /*取消紧急关闭按钮采集继电器落下状态,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; } EsbDataStruct;
/*******************************全局变量声明*******************************/ /*******************************全局变量声明*******************************/
@@ -317,178 +310,6 @@ void SetCancelEsbRelayDownState(const UINT16 esbId, const UINT8 cRelayDownState)
*/ */
UINT8 GetCancelEsbRelayDownState(const UINT16 esbId); 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 #ifdef __cplusplus
} }
#endif #endif
@@ -1161,7 +1161,7 @@ void elm_CTEnvelopeTrack(void)
} }
else if ((CI_SUCCESS == funRet) && (1u == relEnvelopeCnt)) else if ((CI_SUCCESS == funRet) && (1u == relEnvelopeCnt))
{ {
/* 只有CT包络才涉及B轨UT可追踪功能*/ /* 只有CT包络才设计B轨UT可追踪功能*/
elm_DealNoCGFollowUt(relEnvelopeID[0u], trainID[cycle]); elm_DealNoCGFollowUt(relEnvelopeID[0u], trainID[cycle]);
/** 维护日志--调试级别*/ /** 维护日志--调试级别*/
@@ -1277,9 +1277,16 @@ void elm_DealNoCGFollowUt(UINT16 wEnvelopeID,UINT16 wTrainId)
const EnvelopeStruct* pEnvelop = NULL; const EnvelopeStruct* pEnvelop = NULL;
UINT8 chNoCGFollowUtSwitch = 0U; UINT8 chNoCGFollowUtSwitch = 0U;
ELM_TrainSafeLocStruct safeLoc = { 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*/ UINT16 wTempTrainID = 0U;/*临时记录列车ID*/
UINT8 chTempVirHeadScreenFlag = 0U;/*临时虚拟前筛标志*/ UINT8 chTempVirHeadScreenFlag = 0U;/*临时虚拟前筛标志*/
UINT8 chTempVirTailScreenFlag = 0U;/*临时虚拟后筛标志*/ UINT8 chTempVirTailScreenFlag = 0U;/*临时虚拟后筛标志*/
UINT8 chAgLinkExistRelCgFlag = 0U;/*AG是否存在CG标志*/
/** 获取列车包络 */ /** 获取列车包络 */
pEnvelop = elm_GetEnvelopeInfoPtr(wEnvelopeID); pEnvelop = elm_GetEnvelopeInfoPtr(wEnvelopeID);
@@ -1316,10 +1323,58 @@ void elm_DealNoCGFollowUt(UINT16 wEnvelopeID,UINT16 wTrainId)
{ {
if (0U == errorCode) if (0U == errorCode)
{ {
/*处理AG虚拟筛选标志*/ chLinkRelPhySecAGorBGAttr = GetLinkRelPhySecAGorBGAttr(safeLoc.endPos.Lnk);
elm_DealAgVirScreenFlag(wEnvelopeID, wTrainId); chEnvelopLinkABGAttr = GetLinkRelPhySecAGorBGAttr(pEnvelop->endPos.Lnk);
/*处理BG虚拟筛选标志*/ wLinkRelatedPhySec = GetLinkRelatedPhySec(pEnvelop->endPos.Lnk);
elm_DealBgVirScreenFlag(wEnvelopeID, wTrainId); 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 else
{ {
@@ -1516,183 +1571,4 @@ 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 elm_PrepareTrainSafeLoc(UINT16 trainID,INOUT ELM_TrainSafeLocStruct* pTrainSafeLoc)
{ {
UINT8 chRtnVal = CI_ERROR; UINT8 chRtnVal = CI_ERROR;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainID & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainID & 0x00ffu));
if (NULL != pTrainSafeLoc) if (NULL != pTrainSafeLoc)
{ {
@@ -1012,7 +1012,7 @@ UINT32 elm_PrepareTrainLength(UINT16 trainid)
UINT8 chTrainType = 0u; UINT8 chTrainType = 0u;
UINT8 chFunRtn = CI_ERROR; UINT8 chFunRtn = CI_ERROR;
UINT32 dwRtnVal = 0u; UINT32 dwRtnVal = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
/*获取列车类型*/ /*获取列车类型*/
chFunRtn = dquGetTrainType(wTrainID, &chTrainType); chFunRtn = dquGetTrainType(wTrainID, &chTrainType);
@@ -1074,7 +1074,7 @@ UINT8 elm_PrepareNextAcMinSafeHeadLoc(UINT16 trainid, OUT UINT16 acID[AC_MAXCNT_
UINT8 chFunRtn = CI_ERROR; UINT8 chFunRtn = CI_ERROR;
LinkPointDataStru strPoint = { 0u }; LinkPointDataStru strPoint = { 0u };
UINT16 wSwitchId = 0u; UINT16 wSwitchId = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
UINT8 cDirectionPointFlag = 0U; /*是否具有方向变化点标志*/ UINT8 cDirectionPointFlag = 0U; /*是否具有方向变化点标志*/
@@ -1135,7 +1135,7 @@ UINT8 elm_PrepareMaxSafeHeadLoc(UINT16 trainid, OUT LOD_STRU *pLoc)
UINT16 wLink = 0u; UINT16 wLink = 0u;
UINT32 dwOff = UINT32_MAX; UINT32 dwOff = UINT32_MAX;
UINT8 chDir = 0u; UINT8 chDir = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
wLink = GetTrainMaxHeadLink(wTrainID); wLink = GetTrainMaxHeadLink(wTrainID);
@@ -1169,7 +1169,7 @@ UINT8 elm_PrepareMinSafeHeadLoc(UINT16 trainid, OUT LOD_STRU *pLoc)
UINT16 wLink = 0u; UINT16 wLink = 0u;
UINT32 dwOff = UINT32_MAX; UINT32 dwOff = UINT32_MAX;
UINT8 chDir = 0u; UINT8 chDir = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
wLink = GetTrainMinHeadLink(wTrainID); wLink = GetTrainMinHeadLink(wTrainID);
@@ -1200,7 +1200,7 @@ UINT16 elm_PrepareACOfMaxSafeHeadLoc(UINT16 trainid)
UINT16 wMinHeadLink = 0u; UINT16 wMinHeadLink = 0u;
UINT8 chFunRtn = CI_ERROR; UINT8 chFunRtn = CI_ERROR;
UINT16 wRtn = 0u; UINT16 wRtn = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
wMinHeadLink = GetTrainMaxHeadLink(wTrainID); wMinHeadLink = GetTrainMaxHeadLink(wTrainID);
chFunRtn = IsLinkIdValid(wMinHeadLink); chFunRtn = IsLinkIdValid(wMinHeadLink);
@@ -1227,7 +1227,7 @@ UINT16 elm_PrepareACOfMinSafeHeadLoc(UINT16 trainid)
UINT16 wMinHeadLink = 0u; UINT16 wMinHeadLink = 0u;
UINT8 chFunRtn = CI_ERROR; UINT8 chFunRtn = CI_ERROR;
UINT16 wRtn = 0u; UINT16 wRtn = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
wMinHeadLink = GetTrainMinHeadLink(wTrainID); wMinHeadLink = GetTrainMinHeadLink(wTrainID);
chFunRtn = IsLinkIdValid(wMinHeadLink); chFunRtn = IsLinkIdValid(wMinHeadLink);
@@ -1261,7 +1261,7 @@ UINT8 elm_PrepareNextAcMaxSafeTailLoc(UINT16 trainid, OUT UINT16 acID[AC_MAXCNT_
UINT8 chFunRtn = CI_ERROR; UINT8 chFunRtn = CI_ERROR;
LinkPointDataStru strPoint = { 0u }; LinkPointDataStru strPoint = { 0u };
UINT16 wSwitchId = 0u; UINT16 wSwitchId = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
UINT8 cDirectionPointFlag = 0U; /*是否具有方向变化点标志*/ UINT8 cDirectionPointFlag = 0U; /*是否具有方向变化点标志*/
@@ -1324,7 +1324,7 @@ UINT8 elm_PrepareMaxSafeTailLoc(UINT16 trainid, OUT LOD_STRU *pLoc)
UINT16 wLink = 0u; UINT16 wLink = 0u;
UINT32 dwOff = UINT32_MAX; UINT32 dwOff = UINT32_MAX;
UINT8 chDir = 0u; UINT8 chDir = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
wLink = GetTrainMaxTailLink(wTrainID); wLink = GetTrainMaxTailLink(wTrainID);
dwOff = GetTrainMaxTailOffset(wTrainID); dwOff = GetTrainMaxTailOffset(wTrainID);
@@ -1357,7 +1357,7 @@ UINT8 elm_PrepareMinSafeTailLoc(UINT16 trainid, OUT LOD_STRU *pLoc)
UINT16 wLink = 0u; UINT16 wLink = 0u;
UINT32 dwOff = UINT32_MAX; UINT32 dwOff = UINT32_MAX;
UINT8 chDir = 0u; UINT8 chDir = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
wLink = GetTrainMinTailLink(wTrainID); wLink = GetTrainMinTailLink(wTrainID);
dwOff = GetTrainMinTailOffset(wTrainID); dwOff = GetTrainMinTailOffset(wTrainID);
@@ -1387,7 +1387,7 @@ UINT16 elm_PrepareACOfMaxSafeTailLoc(UINT16 trainid)
UINT16 wMaxTailLink = 0u; UINT16 wMaxTailLink = 0u;
UINT8 chFunRtn = CI_ERROR; UINT8 chFunRtn = CI_ERROR;
UINT16 wRtn = 0u; UINT16 wRtn = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
wMaxTailLink = GetTrainMaxTailLink(wTrainID); wMaxTailLink = GetTrainMaxTailLink(wTrainID);
chFunRtn = IsLinkIdValid(wMaxTailLink); chFunRtn = IsLinkIdValid(wMaxTailLink);
@@ -1414,7 +1414,7 @@ UINT16 elm_PrepareACOfMinSafeTailLoc(UINT16 trainid)
UINT16 wMaxTailLink = 0u; UINT16 wMaxTailLink = 0u;
UINT8 chFunRtn = CI_ERROR; UINT8 chFunRtn = CI_ERROR;
UINT16 wRtn = 0u; UINT16 wRtn = 0u;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainid & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainid & 0x00ffu));
wMaxTailLink = GetTrainMinTailLink(wTrainID); wMaxTailLink = GetTrainMinTailLink(wTrainID);
chFunRtn = IsLinkIdValid(wMaxTailLink); chFunRtn = IsLinkIdValid(wMaxTailLink);
@@ -1529,7 +1529,7 @@ UINT8 elm_PrepareEnvelopeIsSelf(IN const EnvelopeStruct* ptemp)
/** 在一个OC*/ /** 在一个OC*/
ret = ELM_BELONG_OWNER; ret = ELM_BELONG_OWNER;
} }
else if ((localOCid != pointABelongOcid) && (localOCid != pointBBelongOcid)) else if((localOCid != pointABelongOcid) && (localOCid != pointBBelongOcid))
{ {
/** 不在同一OC*/ /** 不在同一OC*/
ret = ELM_BELONG_OTHER; ret = ELM_BELONG_OTHER;
@@ -1652,7 +1652,7 @@ UINT8 elm_PrepareComOCID(IN const UINT8 **pOCIDbuff)
else else
{ {
/** 获取本OC通信的OC数量 */ /** 获取本OC通信的OC数量 */
ret = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_RCI); ret = GetCiTransmitSpecifySysDevSum(CI_SYSTEM_TYPE_CI);
/** 判断是否存在,不存在直接返回*/ /** 判断是否存在,不存在直接返回*/
if (0u == ret) if (0u == ret)
@@ -1662,7 +1662,7 @@ UINT8 elm_PrepareComOCID(IN const UINT8 **pOCIDbuff)
else else
{ {
/** 获取相邻通信的TIOC ID */ /** 获取相邻通信的TIOC ID */
(*pOCIDbuff) = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_RCI); (*pOCIDbuff) = GetCiTransmitSpecifySysDevBuf(CI_SYSTEM_TYPE_CI);
} }
} }
@@ -1683,8 +1683,8 @@ UINT8 elm_PrepareOCCommStatus(UINT8 OCID)
UINT8 ret = ELM_COM_STATUS_ERROR; UINT8 ret = ELM_COM_STATUS_ERROR;
UINT8 funRtn = TRANSMIT_STATE_BAD; UINT8 funRtn = TRANSMIT_STATE_BAD;
/** 获取Rc通信状态 */ /** 获取OC通信状态 */
funRtn = GetRcPbTacsTransmitState(OCID); funRtn = GetCiTransmitState(CI_SYSTEM_TYPE_CI,OCID);
/** 设置函数返回值 */ /** 设置函数返回值 */
ASSERT_SETRET(TRANSMIT_STATE_GOOD == funRtn,ret,ELM_COM_STATUS_OK,ELM_COM_STATUS_ERROR) 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; UINT8 ret = CI_ERROR;
UINT16 funRtn = TRAIN_HEAD_FLAG_YES; UINT16 funRtn = TRAIN_HEAD_FLAG_YES;
UINT16 wTrainID = (UINT16)(TRAIN_ID_MIN_IVOC + (trainId & 0x00ffU)); UINT16 wTrainID = (UINT16)(0x1400u + (trainId & 0x00ffu));
funRtn = GetTrainSafeHeadFlag(wTrainID); funRtn = GetTrainSafeHeadFlag(wTrainID);
@@ -106,7 +106,7 @@ static UINT8 elm_UKTAdjacentSwProtect(void)
nearTrainType = aam_SearchNearbyTrainType(pACIdbuff[cycleAc], EMAP_SAME_DIR, acSameCnt, acSameID); nearTrainType = aam_SearchNearbyTrainType(pACIdbuff[cycleAc], EMAP_SAME_DIR, acSameCnt, acSameID);
} }
if ((AAM_BAD_NEAR == nearTrainType)|| (AAM_SLEEP_OCC == nearTrainType)) if (AAM_BAD_NEAR == nearTrainType)
{ {
elm_PrepareClearSwPassTrainFlag(pACIdbuff[cycleAc]); elm_PrepareClearSwPassTrainFlag(pACIdbuff[cycleAc]);
ELM_LOG(ELM_LOG_FATAL,"info:Switch Zone AC%d Clear CT pass flag by PreAC UT.\n",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); nearTrainType = aam_SearchNearbyTrainType(pACIdbuff[cycleAc],EMAP_CONVER_DIR,acConvertCnt,acConvertID);
if ((AAM_BAD_NEAR == nearTrainType) || (AAM_SLEEP_OCC == nearTrainType)) if (AAM_BAD_NEAR == nearTrainType)
{ {
elm_PrepareClearSwPassTrainFlag(pACIdbuff[cycleAc]); elm_PrepareClearSwPassTrainFlag(pACIdbuff[cycleAc]);
ELM_LOG(ELM_LOG_FATAL,"info:Switch Zone AC%d Clear CT pass flag by backAC UT.\n",pACIdbuff[cycleAc]); ELM_LOG(ELM_LOG_FATAL,"info:Switch Zone AC%d Clear CT pass flag by backAC UT.\n",pACIdbuff[cycleAc]);
@@ -2036,8 +2036,6 @@ void elm_SafeProtectProcess(void)
UINT8 workFlag = ELM_WORK_ERROR; UINT8 workFlag = ELM_WORK_ERROR;
UINT8 funRet = CI_ERROR; UINT8 funRet = CI_ERROR;
UINT32 errorCode = 0u; UINT32 errorCode = 0u;
UINT8 localCiType = 0U;
UINT8 ciTrainTestState = 0U;
/** 包络管理模块可正常处理标志位 */ /** 包络管理模块可正常处理标志位 */
workFlag = elm_GetELMWorkFlag(); workFlag = elm_GetELMWorkFlag();
@@ -2057,17 +2055,8 @@ void elm_SafeProtectProcess(void)
funRet = elm_UTLosingProtect(); funRet = elm_UTLosingProtect();
ASSER_ERROR(CI_ERROR == funRet,errorCode,0x40000000u); ASSER_ERROR(CI_ERROR == funRet,errorCode,0x40000000u);
localCiType = GetLocalCiType(); /** CT/UCT车飞车防护--宕机防护*/
ciTrainTestState = GetCiTrainTestStatus(); elm_FlyingProtect();
if ((CI_TYPE_SCX == localCiType) && ((CI_TRAIN_TEST_OFF == ciTrainTestState) || (CI_TRAIN_TEST_STOP == ciTrainTestState)))
{
ScxClearFlyProtectInfo(); /*试车线在未试车期间,不进行飞车宕机防护处理,同时清除之前的飞车信息,修复CT驶出试车线导致飞车宕机问题*/
}
else
{
/** CT/UCT车飞车防护--宕机防护*/
elm_FlyingProtect();
}
/** 本OC范围内的计轴映射表合法性校验 */ /** 本OC范围内的计轴映射表合法性校验 */
funRet = elm_ACRelEnvelopeCheck(); funRet = elm_ACRelEnvelopeCheck();
@@ -2606,7 +2595,6 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1
UINT16 relEnvelopeID[TRAIN_REL_ENVELOPE_SUM_MAX] = {0u}; /*列车关联的包络索引*/ UINT16 relEnvelopeID[TRAIN_REL_ENVELOPE_SUM_MAX] = {0u}; /*列车关联的包络索引*/
const EnvelopeStruct *pEnvelopeInfo = NULL; const EnvelopeStruct *pEnvelopeInfo = NULL;
const WLTrainStatusInfoStruct* pTemp = NULL; const WLTrainStatusInfoStruct* pTemp = NULL;
UINT8 chTrainNvramPosFlag = 0U; /*列车NVRAM位置标识*/
/* 将本周期的的状态设置成上周期的状态 */ /* 将本周期的的状态设置成上周期的状态 */
for (cycle = 1u; cycle < LINE_MAX_TRAIN; cycle++) for (cycle = 1u; cycle < LINE_MAX_TRAIN; cycle++)
@@ -2652,19 +2640,10 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1
if ((NULL != pEnvelopeInfo) && if ((NULL != pEnvelopeInfo) &&
((TYPE_CT_ENVELOPE == pEnvelopeInfo->envelopeType) || (TYPE_UCT_ENVELOPE == pEnvelopeInfo->envelopeType))) ((TYPE_CT_ENVELOPE == pEnvelopeInfo->envelopeType) || (TYPE_UCT_ENVELOPE == pEnvelopeInfo->envelopeType)))
{ {
chTrainNvramPosFlag = GetTrainNvramPosFlag(cycle); headNeedScreen = LINE_MAX_TRAIN == pEnvelopeInfo->headTrainID ? NEED_SCREEN : UNNEED_SCREEN;
tailNeedScreen = LINE_MAX_TRAIN == pEnvelopeInfo->tailTrainID ? NEED_SCREEN : UNNEED_SCREEN;
if (TRAIN_NVRAM_POS_FLAG_NO == chTrainNvramPosFlag) wls_SetTrainControlStatus(cycle,IN_CONTROL_STATUS,headNeedScreen,tailNeedScreen);
{
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 else
{ {
@@ -2785,24 +2764,25 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1
* @return CI_ERROR 查询失败 * @return CI_ERROR 查询失败
CI_SUCCESS 查询成功 CI_SUCCESS 查询成功
* @note * @note
* edit cgh 20250724 目前只用于RRM * by cgh 20240514 目前只用于RRM
*/ */
UINT8 elm_GetNearEnvelopRelSameTra(UINT16 envelopeId, OUT UINT16* preEnvelope, OUT UINT16* backEnvelope) UINT8 elm_GetNearEnvelopRelSameTra(UINT16 envelopeId, OUT UINT16* preEnvelope, OUT UINT16* backEnvelope)
{ {
/*- 局部变量定义 */ /*- 局部变量定义 */
UINT8 ret = CI_ERROR; UINT8 ret = CI_ERROR;
UINT8 funRet = CI_ERROR; UINT8 funRet = CI_ERROR;
UINT32 errorCode = 0U; /*错误码*/ UINT32 errorCode = 0u; /*错误码*/
const EnvelopeStruct* pEnvelop = NULL; const EnvelopeStruct* pEnvelop = NULL;
UINT8 envelopeCnt = 0U; /* 包络数量 */ UINT8 envelopeCnt = 0u; /* 包络数量 */
UINT16 arEnvelopID[TRAIN_SUM_MAX_IN_OC] = { 0U }; /*包络ID数组*/ UINT16 arEnvelopID[TRAIN_SUM_MAX_IN_OC] = { 0u }; /*包络ID数组*/
UINT16 acCnt = 0U; /** 前方计轴数量*/ UINT16 acCnt = 0u; /** 前方计轴数量*/
UINT16 acID[AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH] = { 0U }; UINT16 acID[AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH] = { 0u };
UINT16 mergeACIndex = 0U; UINT8 acStatus = ELM_AC_OCC;
UINT16 mergeACIndex = 0u;
UINT16 mergeACCntMax = (SECTION_IN_ENVELOPE_SUM_MAX + 2U * AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH); 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 }; UINT16 mergeACID[SECTION_IN_ENVELOPE_SUM_MAX + 2U * AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH] = { 0u };
UINT8 includeCnt = 0U; UINT8 includeCnt = 0u;
UINT16 includeELMid[TRAIN_SUM_MAX_IN_OC] = { 0U }; /** 重合的包络id */ UINT16 includeELMid[TRAIN_SUM_MAX_IN_OC] = { 0u }; /** 重合的包络id */
/** 获取列车包络 */ /** 获取列车包络 */
pEnvelop = elm_GetEnvelopeInfoPtr(envelopeId); pEnvelop = elm_GetEnvelopeInfoPtr(envelopeId);
@@ -2811,36 +2791,63 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1
if ((NULL == pEnvelop) || (NULL == preEnvelope) || (NULL == backEnvelope)) if ((NULL == pEnvelop) || (NULL == preEnvelope) || (NULL == backEnvelope))
{ {
/** 设置错误码*/ /** 设置错误码*/
ASSER_ERROR(CI_ERROR == funRet, errorCode, 0x80000000U); ASSER_ERROR(CI_ERROR == funRet, errorCode, 0x08000000u);
} }
else else
{ {
/* 查询后方计轴区段*/ /** 获取车尾包络计轴占用状态 */
acCnt = elm_GetEnvelopTailACIDs(pEnvelop, acID); acStatus = elm_PrepareACStatus(pEnvelop->ACID[0]);
/** 合并车尾后方的计轴 */ /** 判断包络尾是否占用,如果占用,则需要查询下一个计轴*/
mergeACIndex = elm_PrepareMergeUINT16Array(mergeACID, mergeACCntMax, mergeACIndex, acID, (AC_MAXCNT_IN_SWITCH * AC_MAXCNT_IN_SWITCH), acCnt); if (ELM_AC_OCC == acStatus)
/** 合并包络包含的计轴区段 */
mergeACIndex = elm_PrepareMergeUINT16Array(mergeACID, mergeACCntMax, mergeACIndex, pEnvelop->ACID, SECTION_IN_ENVELOPE_SUM_MAX, pEnvelop->ACCnt);
/** 设置错误码*/
ASSER_ERROR(mergeACIndex > mergeACCntMax, errorCode, 0x40000000U);
if (0U == errorCode)
{ {
(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_GetEnvelopTailACIDs(pEnvelop, acID);
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, 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, 0x20000000U); 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
{
/** 无需处理*/
}
/** 判断是否处理成功 */ /** 判断是否处理成功 */
if (0U == errorCode) if (0u == errorCode)
{ {
/** 获取前方计轴包含的包络 */ /** 获取前方计轴包含的包络 */
envelopeCnt = elm_MergeEnvelope(mergeACID, (UINT8)mergeACIndex, arEnvelopID); envelopeCnt = elm_MergeEnvelope(mergeACID, (UINT8)mergeACIndex, arEnvelopID);
@@ -2849,7 +2856,7 @@ UINT8 elm_UCTEnvelopeLeaveAC(UINT8 flag,IN const EnvelopeStruct* pEnvelope,UINT1
funRet = elm_FindNearSameTrainEnvelop(pEnvelop, arEnvelopID, envelopeCnt, preEnvelope, backEnvelope, &includeCnt, includeELMid); funRet = elm_FindNearSameTrainEnvelop(pEnvelop, arEnvelopID, envelopeCnt, preEnvelope, backEnvelope, &includeCnt, includeELMid);
/** 设置错误码*/ /** 设置错误码*/
ASSER_ERROR(CI_SUCCESS != funRet, errorCode, 0x10000000U); ASSER_ERROR(CI_SUCCESS != funRet, errorCode, 0x08000000u);
} }
else else
{ {
@@ -2863,7 +2870,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; return ret;
} }
@@ -486,22 +486,4 @@ void elm_FlyingProtect_UCT(void);
*/ */
void elm_DeleteUctPassFlag(UINT16 envelopeId); 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 #endif
@@ -634,7 +634,6 @@ void elm_WLScreenProcess(void)
UINT8 relEnvelopeCnt= TRAIN_REL_ENVELOPE_SUM_MAX; /*列车关联的包络数量*/ UINT8 relEnvelopeCnt= TRAIN_REL_ENVELOPE_SUM_MAX; /*列车关联的包络数量*/
UINT16 relEnvelopeID[TRAIN_REL_ENVELOPE_SUM_MAX] = {0u}; /*列车关联的包络索引*/ UINT16 relEnvelopeID[TRAIN_REL_ENVELOPE_SUM_MAX] = {0u}; /*列车关联的包络索引*/
const EnvelopeStruct *pEnvelopeInfo = NULL; const EnvelopeStruct *pEnvelopeInfo = NULL;
UINT8 chTrainNvramPosFlag = 0U; /*列车NVRAM位置标识*/
/** 获取全线免筛标志 */ /** 获取全线免筛标志 */
wlsFlag = wls_GetWLScreenPermitFlag(); wlsFlag = wls_GetWLScreenPermitFlag();
@@ -654,37 +653,26 @@ void elm_WLScreenProcess(void)
((TYPE_CT_ENVELOPE == pEnvelopeInfo->envelopeType) || (TYPE_UCT_ENVELOPE == pEnvelopeInfo->envelopeType))) ((TYPE_CT_ENVELOPE == pEnvelopeInfo->envelopeType) || (TYPE_UCT_ENVELOPE == pEnvelopeInfo->envelopeType)))
{ {
ELM_LOG(ELM_LOG_FATAL,"info:ELM%d WLS Process,",pEnvelopeInfo->id); ELM_LOG(ELM_LOG_FATAL,"info:ELM%d WLS Process,",pEnvelopeInfo->id);
chTrainNvramPosFlag = GetTrainNvramPosFlag(cycle); if (LINE_MAX_TRAIN == pEnvelopeInfo->headTrainID)
if (TRAIN_NVRAM_POS_FLAG_NO == chTrainNvramPosFlag)
{ {
if (LINE_MAX_TRAIN == pEnvelopeInfo->headTrainID) ELM_LOG(ELM_LOG_FATAL," delete Head suspicious,");
{ (void)elm_SetEnvelopeHeadTrainID(pEnvelopeInfo->id,0u);
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 else
{ {
ELM_LOG(ELM_LOG_FATAL, " not finish suspicious,because use nvram pos"); /* 不处理 */
} }
ELM_LOG(ELM_LOG_FATAL, "\n"); 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");
} }
} }
else else
@@ -1990,15 +1990,16 @@ static UINT8 elm_UCTEnvelopeHeadHandle(UINT8 endlineFlag, IN const EnvelopeStruc
/** 不添加前端可疑 */ /** 不添加前端可疑 */
funRtn = elm_SetEnvelopeHeadTrainID(ptemp->id, pPretemp->headTrainID); funRtn = elm_SetEnvelopeHeadTrainID(ptemp->id, pPretemp->headTrainID);
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00002000u); 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 else
{ {
funRtn = elm_DeleteCTOrUCTEnvelope(ptemp->id); funRtn = elm_SetEnvelopeHeadTrainID(ptemp->id, LINE_MAX_TRAIN);
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00000400u); ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00001000u);
} }
/** 则更新车头位置 */
funRtn = elm_SetUCTEnvelopeDot(ELM_HEAD, ptemp->ACID[ptemp->ACCnt - 1u], ptemp);
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00000800u);
} }
ret = 0x55u; ret = 0x55u;
} }
@@ -2270,8 +2271,7 @@ static UINT8 elm_UCTEnvelopeHeadMoving(const EnvelopeStruct *ptemp)
UINT8 includeCnt = 0u; UINT8 includeCnt = 0u;
UINT16 includeELMid[TRAIN_SUM_MAX_IN_OC] = {0u}; /** 重合的包络id */ UINT16 includeELMid[TRAIN_SUM_MAX_IN_OC] = {0u}; /** 重合的包络id */
UINT8 cHeadDirChangeFlag = DIRECTIONPOINT_FLAG_INVALID; /*包络头方向变化点标志*/ UINT8 cHeadDirChangeFlag = DIRECTIONPOINT_FLAG_INVALID; /*包络头方向变化点标志*/
const EnvelopeStruct* pPretemp = NULL;
UINT16 wInputAcId = 0U;
/** 入口参数校验 */ /** 入口参数校验 */
ASSERT_RET_VALUE(NULL == ptemp,ret,0x80000000u); ASSERT_RET_VALUE(NULL == ptemp,ret,0x80000000u);
@@ -2383,30 +2383,7 @@ static UINT8 elm_UCTEnvelopeHeadMoving(const EnvelopeStruct *ptemp)
if (0u == errorCode) if (0u == errorCode)
{ {
endLineFlag = (0u == acSameCnt) ? CI_SUCCESS : CI_ERROR; endLineFlag = (0u == acSameCnt) ? CI_SUCCESS : CI_ERROR;
wInputAcId = acSameID[0U]; funRtn = elm_UCTEnvelopeHeadHandle(endLineFlag,ptemp,acSameID[0u],preEnvelope, cHeadDirChangeFlag);
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); ASSER_ERROR(CI_ERROR == funRtn,errorCode,0x00400000u);
if (CI_ERROR != funRtn) if (CI_ERROR != funRtn)
@@ -2657,17 +2634,17 @@ static UINT8 elm_UCTEnvelopeTailHandle(UINT8 endlineFlag, const EnvelopeStruct *
if (0x55u == funRtn) 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 else
{ {
funRtn = elm_DeleteCTOrUCTEnvelope(ptemp->id); funRtn = elm_SetEnvelopeTailTrainID(ptemp->id, LINE_MAX_TRAIN);
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00000800u); ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00002000u);
} }
/** 则更新车尾位置 */
funRtn = elm_SetUCTEnvelopeDot(ELM_TAIL, ptemp->ACID[0u], ptemp);
ASSER_ERROR(CI_ERROR == funRtn, errorCode, 0x00001000u);
} }
ret = 0x55u; ret = 0x55u;
} }
@@ -2939,8 +2916,6 @@ static UINT8 elm_UCTEnvelopeTailMoving(const EnvelopeStruct *ptemp)
UINT8 includeCnt = 0u; UINT8 includeCnt = 0u;
UINT16 includeELMid[TRAIN_SUM_MAX_IN_OC] = {0u}; /** 重合的包络id */ UINT16 includeELMid[TRAIN_SUM_MAX_IN_OC] = {0u}; /** 重合的包络id */
UINT8 cTailDirChangeFlag = DIRECTIONPOINT_FLAG_INVALID; /*包络尾方向变化点标志*/ UINT8 cTailDirChangeFlag = DIRECTIONPOINT_FLAG_INVALID; /*包络尾方向变化点标志*/
const EnvelopeStruct* pBacktemp = NULL;
UINT16 wInputAcId = 0U;
/** 入口参数校验 */ /** 入口参数校验 */
ASSERT_RET_VALUE(NULL == ptemp,ret,0x80000000u); ASSERT_RET_VALUE(NULL == ptemp,ret,0x80000000u);
@@ -3053,32 +3028,8 @@ static UINT8 elm_UCTEnvelopeTailMoving(const EnvelopeStruct *ptemp)
if (0u == errorCode) if (0u == errorCode)
{ {
endLineFlag = (0u == acConvertCnt) ? CI_SUCCESS : CI_ERROR; endLineFlag = (0u == acConvertCnt) ? CI_SUCCESS : CI_ERROR;
wInputAcId = acConvertID[0U]; funRtn = elm_UCTEnvelopeTailHandle(endLineFlag,ptemp,acConvertID[0u],backEnvelope, cTailDirChangeFlag);
pBacktemp = elm_GetEnvelopeInfoPtr(backEnvelope); ASSER_ERROR(CI_ERROR == funRtn,errorCode,0x00400000u);
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) if (CI_ERROR != funRtn)
{ {
@@ -3305,7 +3256,6 @@ static UINT8 elm_ConvertToUCTCheck(const EnvelopeStruct* ptemp)
UINT8 chCanUct = FLAG_SET; UINT8 chCanUct = FLAG_SET;
UINT32 minTrainLength = 0U; UINT32 minTrainLength = 0U;
UINT32 dwTempLength = 0U; UINT32 dwTempLength = 0U;
UINT8 chTrainNvramPosFlag = 0U;
/** 入口参数校验 */ /** 入口参数校验 */
ASSERT_RET_VALUE(NULL == ptemp,ret,0x80000000U); ASSERT_RET_VALUE(NULL == ptemp,ret,0x80000000U);
@@ -3346,17 +3296,6 @@ static UINT8 elm_ConvertToUCTCheck(const EnvelopeStruct* ptemp)
{ {
; /* 不满足转为UCT条件 */ ; /* 不满足转为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); ASSERT_SETRET(0U == errorCode,ret,CI_SUCCESS,CI_ERROR);
@@ -14,7 +14,6 @@
FloodGateDataStruct FloodGateDataStru[FLOOD_GATE_SUM_MAX]; /*定义防淹门动态数据*/ FloodGateDataStruct FloodGateDataStru[FLOOD_GATE_SUM_MAX]; /*定义防淹门动态数据*/
FloodGateDataStructCC FloodGateDataStruCC[FLOOD_GATE_SUM_MAX]; /*定义防淹门动态数据-车车*/
/* /*
@@ -27,16 +26,7 @@ FloodGateDataStruct *GetFloodGateData(void)
{ {
return FloodGateDataStru; return FloodGateDataStru;
} }
/*
*
*
*
FloodGateDataStructCC *
*/
FloodGateDataStructCC* GetFloodGateDataCC(void)
{
return FloodGateDataStruCC;
}
/* /*
* ID防淹门开门锁闭状态 * ID防淹门开门锁闭状态
@@ -492,7 +482,7 @@ UINT8 GetFloodGateCloseApplyIvocSum(const UINT16 floodGateId)
if (0u < bufIndex) if (0u < bufIndex)
{ {
reVal = FloodGateDataStruCC[bufIndex].FloodGateCloseApplyIvocSum; reVal = FloodGateDataStru[bufIndex].FloodGateCloseApplyIvocSum;
} }
else else
{ {
@@ -515,7 +505,7 @@ void SetFloodGateCloseApplyIvocSum(const UINT16 floodGateId, const UINT8 wTrainS
if (0u < bufIndex) if (0u < bufIndex)
{ {
FloodGateDataStruCC[bufIndex].FloodGateCloseApplyIvocSum = wTrainSum; FloodGateDataStru[bufIndex].FloodGateCloseApplyIvocSum = wTrainSum;
} }
else else
{ {
@@ -537,7 +527,7 @@ UINT16* GetFloodGateCloseApplyIvocId(const UINT16 floodGateId)
if (0u < bufIndex) if (0u < bufIndex)
{ {
applyIvocBuf = FloodGateDataStruCC[bufIndex].FloodGateCloseApplyIvocId; applyIvocBuf = FloodGateDataStru[bufIndex].FloodGateCloseApplyIvocId;
} }
else else
{ {
@@ -559,11 +549,11 @@ void SetFloodGateCloseApplyIvocId(const UINT16 floodGateId, const UINT16* applyI
if (0u < bufIndex) if (0u < bufIndex)
{ {
(void)CommonMemSet(FloodGateDataStruCC[bufIndex].FloodGateCloseApplyIvocId, (void)CommonMemSet(FloodGateDataStru[bufIndex].FloodGateCloseApplyIvocId,
(UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX), (UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX),
0U, (UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX)); /*先出清,防止脏数据*/ 0U, (UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX)); /*先出清,防止脏数据*/
(void)CommonMemCpy(FloodGateDataStruCC[bufIndex].FloodGateCloseApplyIvocId, /*赋值申请的列车ID*/ (void)CommonMemCpy(FloodGateDataStru[bufIndex].FloodGateCloseApplyIvocId, /*赋值申请的列车ID*/
(UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX), (UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX),
applyIvocBuf, (UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX)); applyIvocBuf, (UINT32)(sizeof(UINT16)*FLOOD_GATE_APPLY_TRAIN_SUM_MAX));
} }
@@ -584,7 +574,7 @@ FloodGateTrainAnsStruct* GetFloodGateCloseFromIvocStru(const UINT16 floodGateId)
if (0u < bufIndex) if (0u < bufIndex)
{ {
retVal = FloodGateDataStruCC[bufIndex].FloodGateCloseFromIvocStru; retVal = FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru;
} }
else else
{ {
@@ -620,7 +610,7 @@ void SetFloodGateAllowCloseFlagIVOC(UINT16 floodGateId, UINT16 wTrainId, UINT8 a
trainSumIndex = chIvocSum; trainSumIndex = chIvocSum;
for (ii = 0U; ii < chIvocSum; ii++) for (ii = 0U; ii < chIvocSum; ii++)
{ {
if (FloodGateDataStruCC[bufIndex].FloodGateCloseFromIvocStru[ii].wTrainId == wTrainId) if (FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru[ii].wTrainId == wTrainId)
{ {
retVal = CI_ERROR; /*已存入过的列车,且回复了,不再存入*/ retVal = CI_ERROR; /*已存入过的列车,且回复了,不再存入*/
break; break;
@@ -629,8 +619,8 @@ void SetFloodGateAllowCloseFlagIVOC(UINT16 floodGateId, UINT16 wTrainId, UINT8 a
if (CI_SUCCESS == retVal) if (CI_SUCCESS == retVal)
{ {
FloodGateDataStruCC[bufIndex].FloodGateCloseFromIvocStru[trainSumIndex].wTrainId = wTrainId; FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru[trainSumIndex].wTrainId = wTrainId;
FloodGateDataStruCC[bufIndex].FloodGateCloseFromIvocStru[trainSumIndex].wFloodGateCloseIvocFlag = agreeFlag; /*检查标志的时候,查所有起始周期询问的列车是否都回复了同意*/ FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru[trainSumIndex].wFloodGateCloseIvocFlag = agreeFlag; /*检查标志的时候,查所有起始周期询问的列车是否都回复了同意*/
chIvocSum++; chIvocSum++;
SetFloodGateCloseAnsIvocSum(floodGateId, chIvocSum); SetFloodGateCloseAnsIvocSum(floodGateId, chIvocSum);
} }
@@ -663,8 +653,8 @@ void ClearFloodGateAllowClosFlagIVOC(UINT16 floodGateId)
{ {
for (ii = 0U; ii < chIvocSum; ii++) for (ii = 0U; ii < chIvocSum; ii++)
{ {
FloodGateDataStruCC[bufIndex].FloodGateCloseFromIvocStru[ii].wTrainId = 0U; FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru[ii].wTrainId = 0U;
FloodGateDataStruCC[bufIndex].FloodGateCloseFromIvocStru[ii].wFloodGateCloseIvocFlag = FLOOD_GATE_NOT_ALLOWCLOSE_IVOC; FloodGateDataStru[bufIndex].FloodGateCloseFromIvocStru[ii].wFloodGateCloseIvocFlag = FLOOD_GATE_NOT_ALLOWCLOSE_IVOC;
} }
SetFloodGateCloseAnsIvocSum(floodGateId, 0U); SetFloodGateCloseAnsIvocSum(floodGateId, 0U);
} }
@@ -684,7 +674,7 @@ UINT8 GetFloodGateAccessUTFlag(const UINT16 floodGateId)
if (0u < bufIndex) if (0u < bufIndex)
{ {
reVal = FloodGateDataStruCC[bufIndex].FloodGateAccessUTFlag; reVal = FloodGateDataStru[bufIndex].FloodGateAccessUTFlag;
} }
else else
{ {
@@ -709,7 +699,7 @@ void SetFloodGateAccessUTFlag(const UINT16 floodGateId, const UINT8 accessUTFlag
{ {
if ((FLOOD_GATE_ACCESS_UT_YES == accessUTFlag) || (FLOOD_GATE_ACCESS_UT_NO == accessUTFlag)) if ((FLOOD_GATE_ACCESS_UT_YES == accessUTFlag) || (FLOOD_GATE_ACCESS_UT_NO == accessUTFlag))
{/*混跑或者纯CT跑*/ {/*混跑或者纯CT跑*/
FloodGateDataStruCC[bufIndex].FloodGateAccessUTFlag = accessUTFlag; FloodGateDataStru[bufIndex].FloodGateAccessUTFlag = accessUTFlag;
} }
} }
else else
@@ -732,7 +722,7 @@ UINT8 GetFloodGateCloseAnsIvocSum(const UINT16 floodGateId)
if (0u < bufIndex) if (0u < bufIndex)
{ {
reVal = FloodGateDataStruCC[bufIndex].FloodGateCloseAnsIvocSum; reVal = FloodGateDataStru[bufIndex].FloodGateCloseAnsIvocSum;
} }
else else
{ {
@@ -755,7 +745,7 @@ void SetFloodGateCloseAnsIvocSum(const UINT16 floodGateId, const UINT8 wTrainSum
if (0u < bufIndex) if (0u < bufIndex)
{ {
FloodGateDataStruCC[bufIndex].FloodGateCloseAnsIvocSum = wTrainSum; FloodGateDataStru[bufIndex].FloodGateCloseAnsIvocSum = wTrainSum;
} }
else else
{ {
@@ -50,23 +50,21 @@ typedef struct S_FloodGateDataStruct
* 12 * 12
*/ */
UINT8 CurAgreeCloseStateOut; /*当前同意关门输出状态(动态字段):FLOOD_GATE_AGREE_CLOSE、FLOOD_GATE_NOT_AGREE_CLOSE*/ UINT8 CurAgreeCloseStateOut; /*当前同意关门输出状态(动态字段):FLOOD_GATE_AGREE_CLOSE、FLOOD_GATE_NOT_AGREE_CLOSE*/
UINT32 CurYGJCrossLineStartCount;/*当前YGJ混线开始时间*/
UINT32 CurFloodGateDelayCloseStartCyc; /*防淹门接近区段占压延时关门开始时间*/
} FloodGateDataStruct;
/*防淹门数据结构体*/ UINT32 CurYGJCrossLineStartCount;/*当前YGJ混线开始时间*/
typedef struct S_FloodGateDataStructCC
{ UINT32 CurFloodGateDelayCloseStartCyc; /*防淹门接近区段占压延时关门开始时间*/
UINT16 FloodGateId; /*防淹门ID (初始化字段)*/
UINT8 FloodGateCloseApplyIvocSum; /*防淹门关门申请列车数量*/ UINT8 FloodGateCloseApplyIvocSum; /*防淹门关门申请列车数量*/
UINT16 FloodGateCloseApplyIvocId[FLOOD_GATE_APPLY_TRAIN_SUM_MAX]; /*防淹门关门申请列车ID*/ UINT16 FloodGateCloseApplyIvocId[FLOOD_GATE_APPLY_TRAIN_SUM_MAX]; /*防淹门关门申请列车ID*/
UINT8 FloodGateCloseAnsIvocSum; /*防淹门关门允许,列车回复数量*/ UINT8 FloodGateCloseAnsIvocSum; /*防淹门关门允许,列车回复数量*/
FloodGateTrainAnsStruct FloodGateCloseFromIvocStru[FLOOD_GATE_APPLY_TRAIN_SUM_MAX]; /*列车同意防淹门关门请求结构体*/ FloodGateTrainAnsStruct FloodGateCloseFromIvocStru[FLOOD_GATE_APPLY_TRAIN_SUM_MAX]; /*列车同意防淹门关门请求结构体*/
UINT8 FloodGateAccessUTFlag; /*防淹门接近区段是否有非通信车标志*/ UINT8 FloodGateAccessUTFlag; /*防淹门接近区段是否有非通信车标志*/
}FloodGateDataStructCC; } FloodGateDataStruct;
/*******************************全局变量声明*******************************/ /*******************************全局变量声明*******************************/
extern FloodGateDataStruct FloodGateDataStru[FLOOD_GATE_SUM_MAX]; /*定义防淹门动态数据*/ extern FloodGateDataStruct FloodGateDataStru[FLOOD_GATE_SUM_MAX]; /*定义防淹门动态数据*/
extern FloodGateDataStructCC FloodGateDataStruCC[FLOOD_GATE_SUM_MAX]; /*定义防淹门动态数据-车车*/
/* /*
* *
* *
@@ -74,13 +72,6 @@ extern FloodGateDataStructCC FloodGateDataStruCC[FLOOD_GATE_SUM_MAX]; /*
FloodGateDataStruct * FloodGateDataStruct *
*/ */
FloodGateDataStruct *GetFloodGateData(void); FloodGateDataStruct *GetFloodGateData(void);
/*
*
*
*
FloodGateDataStructCC *
*/
FloodGateDataStructCC* GetFloodGateDataCC(void);
/* /*
* ID防淹门开门锁闭状态 * ID防淹门开门锁闭状态
@@ -14,7 +14,7 @@
#include "WLScreenDataPrepare.h" #include "WLScreenDataPrepare.h"
GaragedoorDataStruct GaragedoorDataStru[GARAGE_DOOR_SUM_MAX]; /*定义车库门数据结构体*/ GaragedoorDataStruct GaragedoorDataStru[GARAGE_DOOR_SUM_MAX]; /*定义车库门数据结构体*/
GaragedoorDataStructCC GaragedoorDataStruCC[GARAGE_DOOR_SUM_MAX]; /*定义车库门数据结构体-车车*/
/* /*
* *
@@ -26,16 +26,7 @@ GaragedoorDataStruct *GetGaragedoorData(void)
{ {
return GaragedoorDataStru; return GaragedoorDataStru;
} }
/*
* -
*
*
GaragedoorDataStructCC *
*/
GaragedoorDataStructCC* GetGaragedoorDataCC(void)
{
return GaragedoorDataStruCC;
}
/* /*
* ID车库门状态 * ID车库门状态
* const UINT16 garagedoorId, ID * const UINT16 garagedoorId, ID
@@ -152,7 +143,7 @@ UINT8 GetGaragedoorAllowCloseFlagIVOC(const UINT16 garagedoorId)
if (bufIndex < GARAGE_DOOR_SUM_MAX) if (bufIndex < GARAGE_DOOR_SUM_MAX)
{ {
reVal = GaragedoorDataStruCC[bufIndex].GDAllowCloseFlagIVOC; reVal = GaragedoorDataStru[bufIndex].GDAllowCloseFlagIVOC;
} }
return reVal; return reVal;
@@ -176,7 +167,7 @@ void SetGaragedoorAllowCloseFlagIVOC(const UINT16 garagedoorId, const UINT8 allo
if ((GARAGE_DOOR_ALLOW_CLOSE_YES == allowCloseFlag) || (GARAGE_DOOR_ALLOW_CLOSE_NO == allowCloseFlag)) if ((GARAGE_DOOR_ALLOW_CLOSE_YES == allowCloseFlag) || (GARAGE_DOOR_ALLOW_CLOSE_NO == allowCloseFlag))
{ {
GaragedoorDataStruCC[bufIndex].GDAllowCloseFlagIVOC = allowCloseFlag; /*允许关门标志*/ GaragedoorDataStru[bufIndex].GDAllowCloseFlagIVOC = allowCloseFlag; /*允许关门标志*/
} }
} }
@@ -199,7 +190,7 @@ UINT16 GetGaragedoorNearestTrainId(const UINT16 garagedoorId)
if (bufIndex < GARAGE_DOOR_SUM_MAX) if (bufIndex < GARAGE_DOOR_SUM_MAX)
{ {
reVal = GaragedoorDataStruCC[bufIndex].GDAkuNearestTrainId; reVal = GaragedoorDataStru[bufIndex].GDAkuNearestTrainId;
} }
return reVal; return reVal;
@@ -224,7 +215,7 @@ void SetGaragedoorNearestTrainId(const UINT16 garagedoorId, const UINT16 trainId
if (UINT16_MAX!= trainId) if (UINT16_MAX!= trainId)
{ {
GaragedoorDataStruCC[bufIndex].GDAkuNearestTrainId = trainId; /*允许关门标志*/ GaragedoorDataStru[bufIndex].GDAkuNearestTrainId = trainId; /*允许关门标志*/
} }
} }
@@ -570,7 +561,7 @@ void SetWaiteIVOCResponseStartCycNum(const UINT16 garagedoorId, const UINT32 sta
if (bufIndex < GARAGE_DOOR_SUM_MAX) if (bufIndex < GARAGE_DOOR_SUM_MAX)
{ {
GaragedoorDataStruCC[bufIndex].waiteIVOCResponseStartCycNum = startCycNum; /*起始周期号*/ GaragedoorDataStru[bufIndex].waiteIVOCResponseStartCycNum = startCycNum; /*起始周期号*/
} }
} }
@@ -590,7 +581,7 @@ UINT32 GetWaiteIVOCResponseStartCycNum(const UINT16 garagedoorId)
if (bufIndex < GARAGE_DOOR_SUM_MAX) if (bufIndex < GARAGE_DOOR_SUM_MAX)
{ {
ret = GaragedoorDataStruCC[bufIndex].waiteIVOCResponseStartCycNum; ret = GaragedoorDataStru[bufIndex].waiteIVOCResponseStartCycNum;
} }
return ret; return ret;
@@ -32,7 +32,8 @@ typedef struct S_GaragedoorDataStruct
UINT16 GaragedoorId; /*车库门ID (初始化字段)*/ UINT16 GaragedoorId; /*车库门ID (初始化字段)*/
UINT8 GaragedoorState; /*车库门状态 (动态字段)*/ UINT8 GaragedoorState; /*车库门状态 (动态字段)*/
UINT8 GaragedoorAllowCloseFlag; /*车库门允许关门标志,ZC发送*/ UINT8 GaragedoorAllowCloseFlag; /*车库门允许关门标志,ZC发送*/
UINT8 GDAllowCloseFlagIVOC; /*车库门允许关门标志,IVOC发送*/
UINT16 GDAkuNearestTrainId; /*A库物理区段上最接近的列车*/
UINT8 GaragedoorModeState; /*车库门模式状态*/ UINT8 GaragedoorModeState; /*车库门模式状态*/
UINT8 GaragedoorFaultState; /*车库门故障状态*/ UINT8 GaragedoorFaultState; /*车库门故障状态*/
UINT8 GaragedoorPangLuState; /*车库门旁路状态*/ UINT8 GaragedoorPangLuState; /*车库门旁路状态*/
@@ -40,21 +41,14 @@ typedef struct S_GaragedoorDataStruct
UINT8 cmdProcessState; /* 命令处理状态 */ UINT8 cmdProcessState; /* 命令处理状态 */
UINT32 drvDoorStartCycle; /* 驱动开始时间,预留 */ UINT32 drvDoorStartCycle; /* 驱动开始时间,预留 */
UINT32 waiteZCResponseStartCycNum; /*等待ZC反馈开始时间*/ UINT32 waiteZCResponseStartCycNum; /*等待ZC反馈开始时间*/
UINT32 waiteIVOCResponseStartCycNum; /*等待IVOC反馈开始时间*/
UINT32 GaragedoorOpenStartCycNum; /*车库门打开开始周期 (动态字段)*/ UINT32 GaragedoorOpenStartCycNum; /*车库门打开开始周期 (动态字段)*/
UINT32 GaragedoorCloseStartCycNum; /*车库门关闭开始周期 (动态字段)*/ UINT32 GaragedoorCloseStartCycNum; /*车库门关闭开始周期 (动态字段)*/
} GaragedoorDataStruct; } 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 GaragedoorDataStruct GaragedoorDataStru[GARAGE_DOOR_SUM_MAX]; /*定义车库门数据结构体*/
extern GaragedoorDataStructCC GaragedoorDataStruCC[GARAGE_DOOR_SUM_MAX]; /*定义车库门数据结构体-车车*/
/* /*
* *
* *
@@ -62,13 +56,6 @@ extern GaragedoorDataStructCC GaragedoorDataStruCC[GARAGE_DOOR_SUM_MAX]; /*
GaragedoorDataStruct * GaragedoorDataStruct *
*/ */
GaragedoorDataStruct *GetGaragedoorData(void); GaragedoorDataStruct *GetGaragedoorData(void);
/*
* -
*
*
GaragedoorDataStructCC *
*/
GaragedoorDataStructCC* GetGaragedoorDataCC(void);
/* /*
* ID车库门驱动状态 * ID车库门驱动状态
@@ -93,7 +93,7 @@ UINT8 HLHTRecvCommonPacketHeadCheck(UINT16 LocalDevName, UINT16 RemoteDevName, U
UINT32 LocalEtcsId = 0u; /*发送方标识*/ UINT32 LocalEtcsId = 0u; /*发送方标识*/
UINT32 RemoteEtcsId = 0u; /*接收方标识*/ UINT32 RemoteEtcsId = 0u; /*接收方标识*/
UINT32 emapVer = 0U;/*应该使用的电子地图版本*/ UINT32 emapVer = 0U;/*应该使用的电子地图版本*/
UINT8 emapCheckVer = CI_ERROR; /*电子地图版本获取结果*/ UINT8 emapCheckVer = 0U; /*电子地图版本校验结果*/
UINT8 chRet = 0U; UINT8 chRet = 0U;
/*错误码每次都清零*/ /*错误码每次都清零*/
@@ -109,66 +109,29 @@ UINT8 HLHTRecvCommonPacketHeadCheck(UINT16 LocalDevName, UINT16 RemoteDevName, U
; ;
} }
/*发送方校验*/
if ((CI_SYSTEM_TYPE_OC == devType) || (CI_SYSTEM_TYPE_XIANDI == devType) || (CI_SYSTEM_TYPE_ATS == devType)) chRet = dquDevName2HlhtId(LocalDevName, logId, &LocalEtcsId);
if ((CI_ERROR == chRet) || (pMICommonPackage->sourceId != LocalEtcsId))
{ {
/*OC/现地/ATS无互联互通ID*/ *pErrorCode |= GAL_COMPARE_SEND_FLAG_ERR;
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 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
{
;
}
} }
if ((CI_SYSTEM_TYPE_CI == devType) || (CI_SYSTEM_TYPE_RC == devType)) /*接收方校验*/
chRet = dquDevName2HlhtId(RemoteDevName, logId, &RemoteEtcsId);
if ((CI_ERROR == chRet) || (pMICommonPackage->destId != RemoteEtcsId))
{ {
/*修改:根据发送方类型获取电子地图校验*/ *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 else
{ {
emapCheckVer = GetCiEmapCheckVer((UINT8)RemoteDevName, &emapVer, devType); ;
} }
emapCheckVer = GetCiEmapCheckVer((UINT8)RemoteDevName, &emapVer, devType);
if (CI_SUCCESS == emapCheckVer) if (CI_SUCCESS == emapCheckVer)
{ {
/*电子地图版本校验信息(4字节CRC比较)*/ /*电子地图版本校验信息(4字节CRC比较)*/
@@ -15,22 +15,15 @@
#include "../2oo2/2oo2InterfaceDataManage.h" #include "../2oo2/2oo2InterfaceDataManage.h"
#include "CommonMemory.h" #include "CommonMemory.h"
HLHTHeadContextStru ciHLHTHeadCtxs[CI_SUM_MAX]={0U};/*存放与本控区通信的相邻CI互联互通报文头上下文数据*/ HLHTHeadContextStru ciHLHTHeadCtxs[CI_SUM_MAX]={0};/*存放与本CI通信的相邻CI互联互通报文头上下文数据*/
HLHTHeadContextStru gSzRcHLHTHeadCtxs[CI_SUM_MAX] = { 0U }; /*存放与本控区通信的相邻RC互联互通报文头上下文数据*/ HLHTHeadContextStru vobcHLHTHeadCtxs[VOBC_SUM_MAX]={0};/*存放与本CI通信的VOBC互联互通报文头上下文数据*/
HLHTHeadContextStru ciHLHTHeadCtxsCiToRc[CI_SUM_MAX] = { 0U };/*存放本控区CI同步的相邻CI互联互通报文头上下文数据*/ HLHTHeadContextStru vobcBackupHLHTHeadCtxs[VOBC_BACKUP_SUM_MAX] = { 0 };/*存放与本CI通信的后备模式VOBC互联互通报文头上下文数据*/
HLHTHeadContextStru gSzRcHLHTHeadCtxsCiToRc[CI_SUM_MAX] = { 0U }; /*存放本控区CI同步的相邻RC互联互通报文头上下文数据*/ HLHTHeadContextStru zcHLHTHeadCtxs[ZC_SUM_MAX]={0};/*存放与本CI通信的ZC互联互通报文头上下文数据*/
HLHTHeadContextStru vobcHLHTHeadCtxs[VOBC_SUM_MAX]={0U};/*存放与本CI通信的VOBC互联互通报文头上下文数据*/ HLHTHeadContextStru ocHLHTHeadCtxs[OC_SUM_MAX]={0};/*存放与本CI通信的OC互联互通报文头上下文数据*/
HLHTHeadContextStru vobcBackupHLHTHeadCtxs[VOBC_BACKUP_SUM_MAX] = { 0U };/*存放与本CI通信的后备模式VOBC互联互通报文头上下文数据*/ HLHTHeadContextStru axleHLHTHeadCtxs[AXLE_SUM_MAX] = { 0 };/*存放与本CI通信的计轴系统互联互通报文头上下文数据*/
HLHTHeadContextStru zcHLHTHeadCtxs[ZC_SUM_MAX]={0U};/*存放与本CI通信的ZC互联互通报文头上下文数据*/ HLHTHeadContextStru tmcHLHTHeadCtxs[TMC_SUM_MAX] = { 0 };/*存放与本TIOC通信的TMC互联互通报文头上下文数据*/
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 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模式下不使用*/
/* /*
* : * :
* : * :
@@ -424,7 +417,6 @@ void ProcHlhtHeadCtxTimeOut(void)
{ {
UINT32 timeoutSnCount = 0U; UINT32 timeoutSnCount = 0U;
UINT32 timeoutSpan = 0U; UINT32 timeoutSpan = 0U;
UINT8 chSystemWorkType = GetSystemWorkType();; /*系统工作类型*/
/*处理VOBC通用报文头的时效性*/ /*处理VOBC通用报文头的时效性*/
timeoutSnCount = GetCiAndVobcTransBadEnsureCnt(); timeoutSnCount = GetCiAndVobcTransBadEnsureCnt();
@@ -444,11 +436,6 @@ void ProcHlhtHeadCtxTimeOut(void)
timeoutSpan = GetCiAndCiTransmitBadEnsureTime(); timeoutSpan = GetCiAndCiTransmitBadEnsureTime();
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, ciHLHTHeadCtxs, CI_SUM_MAX); ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, ciHLHTHeadCtxs, CI_SUM_MAX);
/*处理RC通用报文头的时效性*/
timeoutSnCount = GetCiAndCiTransBadEnsureCnt();
timeoutSpan = GetCiAndCiTransmitBadEnsureTime();
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, gSzRcHLHTHeadCtxs, CI_SUM_MAX);
/*处理与CI通信的ZC通用报文头的时效性*/ /*处理与CI通信的ZC通用报文头的时效性*/
timeoutSnCount = GetCiAndZcTransBadEnsureCnt(); timeoutSnCount = GetCiAndZcTransBadEnsureCnt();
timeoutSpan = GetCiAndZcTransmitBadEnsureTime(); timeoutSpan = GetCiAndZcTransmitBadEnsureTime();
@@ -464,38 +451,10 @@ void ProcHlhtHeadCtxTimeOut(void)
timeoutSpan = GetCiAndOcTransmitBadEnsureTime(); timeoutSpan = GetCiAndOcTransmitBadEnsureTime();
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, ocHLHTHeadCtxs, OC_SUM_MAX); ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, ocHLHTHeadCtxs, OC_SUM_MAX);
#if 0
/*不需要处理CI同步过来的数据 需要留着周期号用来做接收数据判断*/
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, ocHLHTHeadCtxsCiToRc, OC_SUM_MAX);
#endif
/*处理与AXLE通信报文头的时效性*/ /*处理与AXLE通信报文头的时效性*/
timeoutSnCount = GetCiAndAxleTransBadEnsureCnt(); timeoutSnCount = GetCiAndAxleTransBadEnsureCnt();
timeoutSpan = GetCiAndAxleTransBadEnsureTime(); timeoutSpan = GetCiAndAxleTransBadEnsureTime();
ProcHlhtHeadCtxTimeOutDiffSys(timeoutSnCount, timeoutSpan, axleHLHTHeadCtxs, AXLE_SUM_MAX); 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 * ID
@@ -578,43 +537,18 @@ static UINT8 GetHLHTHeadCtxTmepVars(const UINT8 devType, UINT16 *devMaxSum, HLHT
UINT8 retVal = CI_ERROR; UINT8 retVal = CI_ERROR;
UINT16 maxDevSum = 0u; UINT16 maxDevSum = 0u;
HLHTHeadContextStru *tempHeadCtxPtr = NULL; HLHTHeadContextStru *tempHeadCtxPtr = NULL;
UINT8 chSystemWorkType = GetSystemWorkType();/*系统工作类型*/
UINT8 cRcWorkMode = 0U;/*本系统当前工作模式*/
cRcWorkMode = GetLocalRcWorkMode(); if ((CI_SYSTEM_TYPE_CI == devType))
if (CI_SYSTEM_TYPE_CI == devType)
{ {
maxDevSum = CI_SUM_MAX; maxDevSum = CI_SUM_MAX;
tempHeadCtxPtr = ciHLHTHeadCtxs; tempHeadCtxPtr = ciHLHTHeadCtxs;
retVal = CI_SUCCESS; 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) else if (CI_SYSTEM_TYPE_VOBC == devType)
{ {
maxDevSum = VOBC_SUM_MAX; maxDevSum = VOBC_SUM_MAX;
if (RC_WORK_MODE_CI == cRcWorkMode) tempHeadCtxPtr = vobcHLHTHeadCtxs;
{
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; retVal = CI_SUCCESS;
} }
@@ -642,15 +576,8 @@ static UINT8 GetHLHTHeadCtxTmepVars(const UINT8 devType, UINT16 *devMaxSum, HLHT
else if (CI_SYSTEM_TYPE_AXIS == devType) else if (CI_SYSTEM_TYPE_AXIS == devType)
{ {
maxDevSum = AXLE_SUM_MAX; maxDevSum = AXLE_SUM_MAX;
if((SYSTEM_WORK_MODE_ALL == chSystemWorkType) && (RC_WORK_MODE_TIOC == CI_SYSTEM_TYPE_RCI)) tempHeadCtxPtr = axleHLHTHeadCtxs;
{
tempHeadCtxPtr = gSzRcAxleHLHTHeadCtxs;
}
else
{
tempHeadCtxPtr = axleHLHTHeadCtxs;
}
retVal = CI_SUCCESS; retVal = CI_SUCCESS;
} }
else if (CI_SYSTEM_TYPE_TMC == devType) else if (CI_SYSTEM_TYPE_TMC == devType)
@@ -660,20 +587,6 @@ static UINT8 GetHLHTHeadCtxTmepVars(const UINT8 devType, UINT16 *devMaxSum, HLHT
retVal = CI_SUCCESS; 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 else
{ {
retVal = CI_ERROR; retVal = CI_ERROR;
@@ -701,7 +614,7 @@ static void ProcHlhtHeadCtxTimeOutDiffSys(const UINT32 timeoutSnCount, const UIN
HLHTHeadContextStru tempHeadCtx = { 0u }; HLHTHeadContextStru tempHeadCtx = { 0u };
UINT8 headValid = 0u; UINT8 headValid = 0u;
INT32 remainValidiy;/*剩余的时间*/ INT32 remainValidiy;/*剩余的时间*/
UINT8 chRcID = 0U;
if (NULL != headCtxs) if (NULL != headCtxs)
{ {
for (i = 0u;i < headCount;i++) for (i = 0u;i < headCount;i++)
@@ -739,9 +652,21 @@ static void ProcHlhtHeadCtxTimeOutDiffSys(const UINT32 timeoutSnCount, const UIN
if (0u == headValid) if (0u == headValid)
{ {
(void)CommonMemSet(&(headCtxs[i]), (UINT32)sizeof(HLHTHeadContextStru), 0u, (UINT32)sizeof(HLHTHeadContextStru)); if (headCtxs == axleHLHTHeadCtxs) /*计轴系统中断时,GAL层对方序号,收到对方数据时本方序号,设置0xFFFFFFFF*/
headCtxs[i].sourceCrntOwnMsgSN = 0xFFFFFFFFu; {
headCtxs[i].ciPreRecvOwnSn = 0xFFFFFFFFu; 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;
}
} }
else else
{ {
@@ -1257,73 +1182,4 @@ 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,22 +38,15 @@ extern "C" {
} HLHTHeadContextStru; } HLHTHeadContextStru;
/*******************************全局变量声明*******************************/ /*******************************全局变量声明*******************************/
extern HLHTHeadContextStru ciHLHTHeadCtxs[CI_SUM_MAX];/*存放与本控区通信的相邻CI互联互通报文头上下文数据*/ extern HLHTHeadContextStru ciHLHTHeadCtxs[CI_SUM_MAX];/*存放与本CI通信的相邻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 vobcHLHTHeadCtxs[VOBC_SUM_MAX];/*存放与本CI通信的VOBC互联互通报文头上下文数据*/
extern HLHTHeadContextStru vobcBackupHLHTHeadCtxs[VOBC_BACKUP_SUM_MAX];/*存放与本CI通信的后备模式VOBC互联互通报文头上下文数据*/ extern HLHTHeadContextStru vobcBackupHLHTHeadCtxs[VOBC_BACKUP_SUM_MAX];/*存放与本CI通信的后备模式VOBC互联互通报文头上下文数据*/
extern HLHTHeadContextStru zcHLHTHeadCtxs[ZC_SUM_MAX];/*存放与本CI通信的ZC互联互通报文头上下文数据*/ extern HLHTHeadContextStru zcHLHTHeadCtxs[ZC_SUM_MAX];/*存放与本CI通信的ZC互联互通报文头上下文数据*/
extern HLHTHeadContextStru ocHLHTHeadCtxs[OC_SUM_MAX];/*存放与本CI通信的OC互联互通报文头上下文数据*/ 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 axleHLHTHeadCtxs[AXLE_SUM_MAX];/*存放与本CI通信的计轴系统互联互通报文头上下文数据*/
extern HLHTHeadContextStru gSzRcAxleHLHTHeadCtxs[AXLE_SUM_MAX];/*存放与RC通信的计轴系统互联互通报文头上下文数据*/
extern HLHTHeadContextStru tmcHLHTHeadCtxs[TMC_SUM_MAX];/*存放与本TIOC通信的TMC互联互通报文头上下文数据*/ extern HLHTHeadContextStru tmcHLHTHeadCtxs[TMC_SUM_MAX];/*存放与本TIOC通信的TMC互联互通报文头上下文数据*/
extern HLHTHeadContextStru IteHLHTHeadCtxs[ITE_SUM_MAX][VOBC_INC_ITE_SUM_MAX];/*存放与本TIOC通信的ITE互联互通报文头上下文数据*/ 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发送数据时其当前的序号 * :CI发送数据时其当前的序号
* : * :
@@ -292,31 +285,6 @@ extern "C" {
* Created By LQ 2024.06.11 * Created By LQ 2024.06.11
*/ */
void ProcIteHlhtHeadCtxTimeOut(const UINT32 dwTimeoutSnCount, const UINT32 dwTimeoutSpan); 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 #ifdef __cplusplus
} }
File diff suppressed because it is too large Load Diff
+14 -364
View File
@@ -95,8 +95,8 @@ UINT8 GetSignalShowColor(const UINT16 signalId);
/* /*
* *
* *
UINT16 signalIdid UINT16 signalIdid
UINT8 ocId OC ID UINT8 ocId OC ID
* *
*/ */
UINT8 GetOcBoardFaultSignalColor(UINT16 signalId, UINT8 ocId); UINT8 GetOcBoardFaultSignalColor(UINT16 signalId, UINT8 ocId);
@@ -137,14 +137,12 @@ void SwitchDeviceToRelayStateProc(void);
*/ */
void PhySecRelayToDeviceStateProc(void); void PhySecRelayToDeviceStateProc(void);
#if 0
/* /*
* *
* void * void
* void * void
*/ */
void PhySecResetToRelayStateProc(void); void PhySecResetToRelayStateProc(void);
#endif
/* /*
* *
* void * void
@@ -271,7 +269,6 @@ void FloodGateDeviceToRelayStateProc(void);
* *
* void * void
* void * void
* BY CGH 20250523
*/ */
void RouteDCTYRelayToDeviceStateProc(void); void RouteDCTYRelayToDeviceStateProc(void);
@@ -328,17 +325,12 @@ void OcSwitchDeviceOutput(void);
UINT8 GetOcSignalColor(UINT16 signalId); UINT8 GetOcSignalColor(UINT16 signalId);
/* /*
* OC道岔设备状态 * OC道岔设备颜色
* *
UINT16 switchIdid UINT16 signalIdid
UINT8 mainControlOCId OCId * void
*
* ((UINT8)0x01)
* ((UINT8)0x02)
* ((UINT8)0x04)
* ((UINT8)0x08)
*/ */
UINT8 GetOcSwitchState(UINT16 switchId, UINT8 mainControlOCId); UINT8 GetOcSwitchState(UINT16 switchId);
/* /*
* *
@@ -361,7 +353,7 @@ void ProcessJXTCPulseInterfStopDrv(UINT16 startJXTCRelayId, UINT16 stopJXTCRelay
/******************************OC spks指示灯输出处理****************************/ /******************************OC spks指示灯输出处理****************************/
/* /*
* OC spks指示灯spks旁路指示灯及蜂鸣继电器处理 * OC spks指示灯spks旁路指示灯输出处理
* void * void
* void * void
*/ */
@@ -690,14 +682,13 @@ void DetZfsCancelBtnPressStateProc(const UINT16 wSignalId, const UINT16 wCancelD
void DetZfsCancelBtnActFlagProc(const UINT16 wSignalId, const UINT16 wCancelDetBtnRelayId); void DetZfsCancelBtnActFlagProc(const UINT16 wSignalId, const UINT16 wCancelDetBtnRelayId);
/* /*
* *
* const UINT16 signalId ID * const UINT16 signalId, ID
* const UINT16 signalDetDisRelayId ID * const UINT16 signalDetainDisplayId, 1ID
* const UINT16 signalDetCutDisRelayId *
* *
* Modified By LQ 2025.07.03
*/ */
void DriveZfsDetainBsRelay(const UINT16 signalId, const UINT16 signalDetDisRelayId, const UINT16 signalDetCutDisRelayId); void DriveZfsDetainBsRelay(const UINT16 signalId, const UINT16 signalDetainDisplayId);
/* /*
* *
@@ -810,7 +801,7 @@ UINT8 WashMachineWorkModeRelayProc(const UINT16 washMachineId);
* CI_SUCCESS: * CI_SUCCESS:
* by cgh 20231113 * by cgh 20231113
*/ */
void DownWashDevToRelayStaProc(const UINT16 washMachineId); UINT8 DownWashDevToRelayStaProc(const UINT16 washMachineId);
/* /*
* 线 * 线
@@ -862,347 +853,6 @@ UINT8 GetSwitchCollToleratePos(const UINT16 switchId);
*/ */
UINT8 CheckSwitchCollTolerateState(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);
/*
*
* const UINT16 doorIdID
*
*Create fan 2026.03.26
*/
void CancelPsdExceptState(UINT16 doorId);
/*
* OC的主控状态
*
UINT16 switchIdid
* void
* add by mpt 20260326
*/
void SetOcSwitchControlState(UINT16 switchId);
/*
* OC
* UINT16 switchCurSum
*
* add by mpt 20260326
*/
void SetAllSwitchCurMainControlOC(UINT16 switchCurSum);
/*
* OC道岔主控命令生成处理
* UINT16 switchId ID
* void
*/
void OutSwitchControlModeCmd(UINT16 switchId);
/*
*
* UINT16 switchId
* void
*/
void SwitchMainControlCmdOut(UINT16 switchId, UINT8 ocId);
/*
* OC道岔主控状态管理
* void
* void
*/
void OcSwitchControlModeCmdOutput(void);
/*
*
* UINT16 switchId ID
* void
*/
void SwitchDoubleMainProtect(UINT16 switchId);
/*
*
* UINT16 switchId ID
* void
* add by mpt 20260328
*/
void FindSwitchPostionCmdOut(UINT16 switchId);
/*
*
* UINT16 switchId ID
* void
* add by mpt 20260330
*/
void FindSwitchPostionCmdTimeOutCheck(UINT16 switchId);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
File diff suppressed because it is too large Load Diff
+9 -103
View File
@@ -128,6 +128,14 @@ void ProcessPscToCiData(void);
*/ */
UINT8 ProcessAtsOrXianDiToCiData(void); UINT8 ProcessAtsOrXianDiToCiData(void);
/*
* ATS或现地到CI数据
* void
* 0:
* 1:
*/
UINT8 ProcessAtsOrXianDiToCiDataCld(void);
/* /*
* *
* void * void
@@ -296,7 +304,7 @@ UINT8 CheckOrderWhetherDoing(UINT8 virCIid,UINT8 belongVirCIid,UINT8 orderType,U
* UINT8 MaskType * UINT8 MaskType
* *
*/ */
void DealAutoReturnMask(UINT16 DeviceId,UINT8* pMaskBuf,UINT8 MaskType,UINT16 index); void DealAutoReturnMask_UseVirCI(UINT16 DeviceId,UINT16*maskBuf,UINT8 MaskType,UINT16 index);
/* /*
* *
* UINT8 virCIid ID * UINT8 virCIid ID
@@ -443,108 +451,6 @@ void LogRouteCleanOldPhySecLockProc(const UINT16 wPreRouteId);
*/ */
void OtherPartRouteCleanLogRouteProc(const UINT16 wCurRouteId); 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);
/*
* Vobc点连式信息清除
* UINT16 wTrainIdVOBCid
* void
* by lyj 20260316
*/
void VobcBlocLinkDataClear(const UINT16 wTrainId);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
File diff suppressed because it is too large Load Diff
+6 -98
View File
@@ -92,7 +92,6 @@ UINT8 CiToAtsBackInfoFunctionJudge(const UINT8 functionId,const UINT8 deviceType
*/ */
void IndicatorStateProc(void); void IndicatorStateProc(void);
#if 0
/* /*
* *
* void * void
@@ -100,7 +99,6 @@ void IndicatorStateProc(void);
*/ */
void IndicatorStateProc_UseVirCI(UINT8 virCIid); void IndicatorStateProc_UseVirCI(UINT8 virCIid);
#endif
/* /*
* *
* void * void
@@ -149,7 +147,12 @@ void SignaDsBreakAlarmIndicator_Vir(UINT8 virCIid,UINT8 devId);
*/ */
void CiToCiOutputCmdProc(void); void CiToCiOutputCmdProc(void);
/*
*
*
*
*/
static void AutoRtnIndictStatusProc_VirCI(void);
/* /*
* ID * ID
* groupAutoRouteId ID * groupAutoRouteId ID
@@ -453,101 +456,6 @@ UINT8 FindRouteLeaveAxis(const UINT16 routeId);
*/ */
void RtnRealyAdhesionStatePro(void); 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);
/*
*
* void
*
* by lyj 20260314
*/
void VobcBlocLinkOutputProcess(void);
/*
*
* const UINT16 wTrainId ID
*
* by lyj 20260316
*/
UINT8 BlocLinkTrainRouteMange(const UINT16 wTrainId);
/*
*
* const UINT16 wTrainId ID
*
* by lyj 20260316
*/
UINT8 BlocLinkTrainLogSecMange(const UINT16 wTrainId);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
@@ -18,7 +18,7 @@ UINT16 LocalCiIndicatorIdBuf[INDICATOR_SUM_MAX] = {0u};/*
INT16 IndicatorCurSum = 0; /*指示器当前总数*/ INT16 IndicatorCurSum = 0; /*指示器当前总数*/
OCStationIndicConfigDataStru g_OCStationIndicConfigDataStru[INDICATOR_SUM_MAX] = { 0u }; OCStationIndicConfigDataStru g_OCStationIndicConfigDataStru[INDICATOR_SUM_MAX] = { 0u };
UINT16 g_OCStationIndicatorCurSum = 0; /*本联锁OC站(集中站和非集中站)指示器总数,不涉及主备跟随,取值范围 [0,2000) 暂无使用*/ UINT16 g_OCStationIndicatorCurSum = 0; /*本联锁OC站(集中站和非集中站)指示器总数,不涉及主备跟随,取值范围0-1000*/
@@ -423,7 +423,7 @@ UINT8 GetIndicatorDevId(UINT16 indicatorId)
* >0u: ID * >0u: ID
* by cgh 20240910 * by cgh 20240910
*/ */
UINT16 GetIndicatorRelNonReturnId(UINT16 indicatorId) UINT8 GetIndicatorRelNonReturnId(UINT16 indicatorId)
{ {
UINT16 wRetVal = CI_ERROR; UINT16 wRetVal = CI_ERROR;
@@ -456,30 +456,4 @@ UINT16 GetIndicatorRelNonReturnId(UINT16 indicatorId)
} }
return wRetVal; 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,8 +29,7 @@ typedef struct S_IndicatorConfigDataStruct
UINT8 AvalibleFlag;/*指示灯有效标志位 0x55无效 0xAA进路相关 0xAA继电器相关*/ UINT8 AvalibleFlag;/*指示灯有效标志位 0x55无效 0xAA进路相关 0xAA继电器相关*/
UINT8 IdSum; /*相关Id数量(配置字段)*/ UINT8 IdSum; /*相关Id数量(配置字段)*/
UINT16 IdBuf[INDICATOR_RELAY_SUM_MAX]; /*相关ID (配置字段)*/ UINT16 IdBuf[INDICATOR_RELAY_SUM_MAX]; /*相关ID (配置字段)*/
UINT8 BjdDeviceId; /*报警灯设备ID*/ UINT8 BjdDeviceId; /*报警灯设备ID*/
UINT8 chBelongVirCIid; /*所属虚拟联锁ID*/
} IndicatorConfigDataStruct; } IndicatorConfigDataStruct;
/*cgh-合并ECI11.0:OC站表示灯 OC站指一级集中站(CI+OC)的现地工作站、二级集中站(OC)的有岔非集现地工作站,中央联锁工作站*/ /*cgh-合并ECI11.0:OC站表示灯 OC站指一级集中站(CI+OC)的现地工作站、二级集中站(OC)的有岔非集现地工作站,中央联锁工作站*/
@@ -184,15 +183,7 @@ UINT8 GetIndicatorDevId(UINT16 indicatorId);
* >0u: ID * >0u: ID
* by cgh 20240910 * by cgh 20240910
*/ */
UINT16 GetIndicatorRelNonReturnId(UINT16 indicatorId); UINT8 GetIndicatorRelNonReturnId(UINT16 indicatorId);
/*
* ID获取指示灯虚拟联锁ID
* UINT16 wIndicId ID
* 0u:
* >0u: ID
* BY:lyj 20260105
*/
UINT8 GetIndicBelongRtuId(UINT16 wIndicId);
#ifdef __cplusplus #ifdef __cplusplus
} }
@@ -14,7 +14,7 @@
/*总数最大值*/ /*总数最大值*/
#define INDICATOR_SUM_MAX ((UINT16)2000) /*指示器最大数量,每个联锁40个指示灯,总共按20个联锁 */ #define INDICATOR_SUM_MAX ((UINT16)1000) /*指示器最大数量,每个联锁40个指示灯,总共按20个联锁 */
#define INDICATOR_RELAY_SUM_MAX ((UINT16)5) /*指示器相关继电器最大数量*/ #define INDICATOR_RELAY_SUM_MAX ((UINT16)5) /*指示器相关继电器最大数量*/
#define RTNINDICATOR_SUM_MAX ((UINT8)2U) /*一个虚拟联锁集中区无人折返最大数量*/ #define RTNINDICATOR_SUM_MAX ((UINT8)2U) /*一个虚拟联锁集中区无人折返最大数量*/
@@ -64,9 +64,7 @@
#define INDICATOR_TYPE_SWITCH_JICHA ((UINT8)0x24) /* 道岔挤岔状态 */ #define INDICATOR_TYPE_SWITCH_JICHA ((UINT8)0x24) /* 道岔挤岔状态 */
#define INDICATOR_TYPE_GD_DAD ((UINT8)0x25) /* 车库门故障报警状态 */ #define INDICATOR_TYPE_GD_DAD ((UINT8)0x25) /* 车库门故障报警状态 */
#define INDICATOR_TYPE_XICHEJI_ALLOW_STATE ((UINT8)0x26) /* 非FAO线路同意洗车状态指示灯 */ #define INDICATOR_TYPE_XICHEJI_ALLOW_STATE ((UINT8)0x26) /* 非FAO线路同意洗车状态指示灯 */
#define INDICATOR_TYPE_DOWNWASH_ALLOW_PASS ((UINT8)0x29) /* 降级模式洗车同意通过指示灯 */ #define INDICATOR_TYPE_DOWNWASH_ALLOW_PASS_STATE ((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) /*相邻联锁继电接口确认状态指示灯*/ #define INDICATOR_TYPE_ATS_CONFIRM_RELAY_INTERFACE ((UINT8)0x27) /*相邻联锁继电接口确认状态指示灯*/
+16 -124
View File
@@ -129,9 +129,6 @@ UINT8 InitAllStaticDataStr(void)
/*声光报警器配置数据结构体*/ /*声光报警器配置数据结构体*/
chRtn &= CommonMemSet(SGBJConfigDataStru, (UINT32)(SGBJ_SUM_MAX * sizeof(SGBJConfigDataStruct)), 0u, (UINT32)(SGBJ_SUM_MAX * sizeof(SGBJConfigDataStruct))); 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; return chRtn;
} }
@@ -249,7 +246,6 @@ UINT8 ReadConfigureData(void)
{ {
; /*不处理*/ ; /*不处理*/
} }
if (0u == rtnVal) if (0u == rtnVal)
{ {
PhysicalSectionCurSum = ReadPhySicalSectionConfigData(LocalCiId, PhysicalSectionConfigDataStru);/*读物理区段配置数据*/ PhysicalSectionCurSum = ReadPhySicalSectionConfigData(LocalCiId, PhysicalSectionConfigDataStru);/*读物理区段配置数据*/
@@ -450,13 +446,6 @@ UINT8 ReadConfigureData(void)
if (0u == rtnVal) 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); includeVirFlag = GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG);
if (FUNC_SWITCH_ON == includeVirFlag) if (FUNC_SWITCH_ON == includeVirFlag)
{ {
@@ -479,7 +468,15 @@ UINT8 ReadConfigureData(void)
} }
} }
#endif else
{
IndicatorCurSum = ReadIndicatorConfigData(LocalCiId, IndicatorConfigDataStru); /*读指示灯报警灯配置数据*/
if (-1 == IndicatorCurSum)
{
rtnVal = 20u;/*读取指示灯报警灯配置数据失败*/
debug_infor_printf((const)"ReadIndicatorConfigData fail.");
}
}
} }
else else
{ {
@@ -555,23 +552,7 @@ 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) if (0u == rtnVal)
{ {
CiToAtsMaskCurSum = ReadCiToAtsMaskConfigData(LocalCiId, CiToAtsMaskConfigDataStru); /*读CI-ATS配置数据*/ CiToAtsMaskCurSum = ReadCiToAtsMaskConfigData(LocalCiId, CiToAtsMaskConfigDataStru); /*读CI-ATS配置数据*/
@@ -938,7 +919,7 @@ UINT8 ReadConfigureData(void)
g_ret = ReadEaConfigData(g_szEaConfig); g_ret = ReadEaConfigData(g_szEaConfig);
if (-1 == g_ret) if (-1 == g_ret)
{ {
rtnVal = 40u; rtnVal = 37u;
debug_infor_printf((const)"ReadEaConfigData errcode =%d, ReadEaConfigData", rtnVal); debug_infor_printf((const)"ReadEaConfigData errcode =%d, ReadEaConfigData", rtnVal);
} }
else else
@@ -1060,26 +1041,7 @@ UINT8 ReadConfigureData(void)
if (0 == g_ret) if (0 == g_ret)
{ {
debug_infor_printf((const)"PhySectionNearConfigDataManage Error\n"); debug_infor_printf((const)"PhySectionNearConfigDataManage Error\n");
rtnVal = 41u; rtnVal = 37u;
}
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 else
{ {
@@ -1102,32 +1064,6 @@ UINT8 ReadConfigureData(void)
rtnVal = 2u; 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 = (INT16)SetCldAndScxMergeConfig();
if (0 == g_ret)
{
debug_infor_printf((const)"SetCldAndScxMergeConfig fail.\r\n");
rtnVal = 44u;
}
}
} }
@@ -1144,6 +1080,7 @@ UINT8 ReadConfigureData(void)
UINT8 DeviceDataManage(void) UINT8 DeviceDataManage(void)
{ {
UINT8 rtValue = 0u; UINT8 rtValue = 0u;
UINT8 includeVirFlag= GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG);
UINT8 reval = CI_ERROR; UINT8 reval = CI_ERROR;
/*整理继电器数据*/ /*整理继电器数据*/
if (CI_ERROR == RelayConfigDataManage()) if (CI_ERROR == RelayConfigDataManage())
@@ -1267,7 +1204,6 @@ UINT8 DeviceDataManage(void)
{ {
rtValue = 0u; rtValue = 0u;
} }
#if 0
if(FUNC_SWITCH_ON == includeVirFlag) if(FUNC_SWITCH_ON == includeVirFlag)
{ {
reval = InitVirCIlocalCiIndicatorIdBuf(); reval = InitVirCIlocalCiIndicatorIdBuf();
@@ -1276,16 +1212,14 @@ UINT8 DeviceDataManage(void)
rtValue = 1u; rtValue = 1u;
} }
} }
#endif else
if (0U == rtValue)
{ {
reval = IndicatorConfigDataManage(); reval = IndicatorConfigDataManage();
if (CI_ERROR == reval) if(CI_ERROR == reval)
{ {
rtValue = 1u; rtValue = 1u;
} }
} }
if (0U == rtValue) if (0U == rtValue)
{ {
@@ -1346,8 +1280,7 @@ UINT8 SetautoRouteOpposedRoute(UINT16 autoRouteRouteId,UINT8 routeType)
autoRouteSum = GetAutoRouteRouteCurSum();/*自动进路数目*/ autoRouteSum = GetAutoRouteRouteCurSum();/*自动进路数目*/
autoReturnSum = GetAutoReturnRouteCurSum();/*自动折返进路数目*/ autoReturnSum = GetAutoReturnRouteCurSum();/*自动折返进路数目*/
allAutoReturnSum = GetAllAutoReturnRouteCurSum();/*全自动折返进路数目*/ allAutoReturnSum = GetAllAutoReturnRouteCurSum();/*全自动折返进路数目*/
if ((AUTO_ROUTE_SUM_MAX <= autoRouteSum) || (AUTO_RETURN_SUM_MAX<=autoReturnSum ) if ((autoRouteSum >= AUTO_ROUTE_SUM_MAX) || (autoReturnSum >= AUTO_RETURN_SUM_MAX))
||(ALL_AUTO_RETURN_SUM_MAX <= allAutoReturnSum))
{/*配置数据总数错误*/ {/*配置数据总数错误*/
returnValue = CI_ERROR; returnValue = CI_ERROR;
} }
@@ -2087,11 +2020,6 @@ INT8 OcConnectConfigDataToDevStruct(SignalConfigDataStruct* pSignalCfgData, Phys
{ {
pSwitchCfgData[j].ByPassRelayId = pConnectCfgData[i].OcConnetRelayDataBuf[k].RelayId; 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 else
{ {
/*不做处理*/ /*不做处理*/
@@ -3498,40 +3426,4 @@ UINT16 GetTiocDeviceConfigData(UINT32* pConfigDataAddrBuf,UINT16* pConfigDataLen
return wRetSum; 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,7 +60,6 @@
#include "../Route/LongRouteConfigDataManage.h" #include "../Route/LongRouteConfigDataManage.h"
#include "../SGBJ/SGBJConfigDataManage.h" #include "../SGBJ/SGBJConfigDataManage.h"
#include "../VirtualDevice/VirtualDevDataManage.h" #include "../VirtualDevice/VirtualDevDataManage.h"
#include "LightTestButtonConfigDataManage.h"
extern INT16 trackCheckRes; extern INT16 trackCheckRes;
extern INT16 g_ret; extern INT16 g_ret;
@@ -161,16 +160,6 @@ INT8 OcConnectConfigDataToDevStruct(SignalConfigDataStruct* pSignalCfgData, Phys
* *
*********************************************/ *********************************************/
UINT16 GetTiocDeviceConfigData(UINT32* pConfigDataAddrBuf, UINT16* pConfigDataLenBuf, UINT16 wBufMaxLen); 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 #endif
File diff suppressed because it is too large Load Diff
+1 -24
View File
@@ -243,12 +243,7 @@ UINT8 InitialPhySecIdBufOfOtherCi(void);
* void * void
*/ */
void ResetDynamicState(const UINT8 ciId); void ResetDynamicState(const UINT8 ciId);
/*
* Rc通信中断动态数据
* const UINT8 ciId, ID
* void
*/
void ResetDynamicRcState(const UINT8 ciId);
/* /*
* *
@@ -335,24 +330,6 @@ UINT8 InitLEUDataStru(void);
*/ */
UINT8 InitialRtnIndicStaData(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 #ifdef __cplusplus
} }
#endif #endif
@@ -14,7 +14,7 @@
#ifndef __INVADESECTION_DEFINE_H_ #ifndef __INVADESECTION_DEFINE_H_
#define __INVADESECTION_DEFINE_H_ #define __INVADESECTION_DEFINE_H_
#define INVA_SECT_N_COND_SWIT_SUM_MAX ((UINT16)400) /*侵限区段与相关条件道岔数据条目最大数量*/ #define INVA_SECT_N_COND_SWIT_SUM_MAX ((UINT16)300) /*侵限区段与相关条件道岔数据条目最大数量*/
#define COND_SWITCH_SUM_MAX ((UINT16)16) /*单一侵限区段与相关条件道岔数据条目内,条件道岔最大数量*/ #define COND_SWITCH_SUM_MAX ((UINT16)16) /*单一侵限区段与相关条件道岔数据条目内,条件道岔最大数量*/
@@ -1,129 +0,0 @@
/********************************************************
*
* 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;
}
@@ -1,80 +0,0 @@
/********************************************************
*
* 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
@@ -1,63 +0,0 @@
/********************************************************
*
* 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
{
/* 不处理 */
}
}
}
@@ -1,42 +0,0 @@
/********************************************************
* 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
@@ -1,33 +0,0 @@
/********************************************************
*
* 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
+124 -316
View File
@@ -21,27 +21,18 @@ UINT16 colStringLength = 0u;
UINT8 drvString[RELAY_SUM_MAX] = {0u};/*驱动数据*/ UINT8 drvString[RELAY_SUM_MAX] = {0u};/*驱动数据*/
UINT16 drvStringLength = 0u; UINT16 drvStringLength = 0u;
AxisSectionDataStruct Record_AxisSecDataStru[AXIS_SECTION_SUM_MAX];/*参考计轴区段数据*/ AxisSectionDataStruct Record_AxisSecDataStru[AXIS_SECTION_SUM_MAX];/*参考计轴区段数据*/
AxisSectionDataStructCC Record_AxisSecDataStruCC[AXIS_SECTION_SUM_MAX];/*参考计轴区段数据-车车*/
SignalDataStruct Record_SignalDataStru[SIGNAL_SUM_MAX];/*参考信号机动态数据*/ SignalDataStruct Record_SignalDataStru[SIGNAL_SUM_MAX];/*参考信号机动态数据*/
SignalDataStructCC Record_SignalDataStruCC[SIGNAL_SUM_MAX];/*参考信号机动态数据-车车*/
EsbDataStruct Record_EsbDataStru[ESB_SUM_MAX]; /*参考ESB动态数据*/ EsbDataStruct Record_EsbDataStru[ESB_SUM_MAX]; /*参考ESB动态数据*/
SwitchDataStruct Record_SwitchDataStru[SWITCH_SUM_MAX];/*参考道岔动态数据*/ SwitchDataStruct Record_SwitchDataStru[SWITCH_SUM_MAX];/*参考道岔动态数据*/
PhysicalSectionDataStruct Record_PhysicalSectionDataStru[PHYSICAL_SECTION_SUM_MAX];/*参考物理区段动态数据*/ PhysicalSectionDataStruct Record_PhysicalSectionDataStru[PHYSICAL_SECTION_SUM_MAX];/*参考物理区段动态数据*/
PhysicalSectionDataStructCC Record_PhySecDataStruCC[PHYSICAL_SECTION_SUM_MAX] = { 0U };/*参考物理区段动态数据CC*/
RouteDataStruct Record_RouteDataStru[ROUTE_SUM_MAX];/*参考进路动态数据*/ RouteDataStruct Record_RouteDataStru[ROUTE_SUM_MAX];/*参考进路动态数据*/
RouteDataStructCC Record_RouteDataStruCC[ROUTE_SUM_MAX];/*参考进路动态数据-车车*/
NonRouteDataStruct Record_NonRouteDataStru[NONROUTE_ID_NUM_MAX]; /*参考非进路调车动态数据*/ NonRouteDataStruct Record_NonRouteDataStru[NONROUTE_ID_NUM_MAX]; /*参考非进路调车动态数据*/
LogicSectionDataStruct Record_LogicSecDataStru[LOGIC_SECTION_SUM_MAX];/*参考逻辑区段动态数据*/ LogicSectionDataStruct Record_LogicSecDataStru[LOGIC_SECTION_SUM_MAX];/*参考逻辑区段动态数据*/
LogicSectionDataStructCC Record_LogicSecDataStruCC[LOGIC_SECTION_SUM_MAX];/*参考逻辑区段动态数据-车车*/
WashMachineDataStruct Record_WashMachineDataStru[WASHMACHINE_SUM_MAX]; /*参考洗车机动态数据*/ WashMachineDataStruct Record_WashMachineDataStru[WASHMACHINE_SUM_MAX]; /*参考洗车机动态数据*/
PsdDataStruct Record_PsdDataStru[PSD_SUM_MAX];/*参考屏蔽门动态数据*/ PsdDataStruct Record_PsdDataStru[PSD_SUM_MAX];/*参考屏蔽门动态数据*/
PsdDataStructCC Record_PsdDataStruCC[PSD_SUM_MAX] = { 0U };/*参考屏蔽门动态数据CC*/
GaragedoorDataStruct Record_GaragedoorDataStru[GARAGE_DOOR_SUM_MAX]; /*参考车库门数据结构体*/ GaragedoorDataStruct Record_GaragedoorDataStru[GARAGE_DOOR_SUM_MAX]; /*参考车库门数据结构体*/
GaragedoorDataStructCC Record_GaragedoorDataStruCC[GARAGE_DOOR_SUM_MAX]; /*参考车库门数据结构体-车车*/ FloodGateDataStruct Record_FloodGateDataStru[FLOOD_GATE_SUM_MAX]; /**/
FloodGateDataStruct Record_FloodGateDataStru[FLOOD_GATE_SUM_MAX]; /*参考防烟门数据结构体*/
FloodGateDataStructCC Record_FloodGateDataStruCC[FLOOD_GATE_SUM_MAX]; /*参考防烟门数据结构体-车车*/
OverlapDataStruct Record_OverlapDataStru[OVERLAP_SUM_MAX];/*参考保护区段动态数据*/ OverlapDataStruct Record_OverlapDataStru[OVERLAP_SUM_MAX];/*参考保护区段动态数据*/
OverlapDataStructCC Record_OverlapDataStruCC[OVERLAP_SUM_MAX];/*参考保护区段动态数据-车车*/
VirCIKeyDataStru Record_VirCIKeyDataStru[VIRTUAL_CI_MAX]= {0u};/*记录虚拟联锁关键数据*/ VirCIKeyDataStru Record_VirCIKeyDataStru[VIRTUAL_CI_MAX]= {0u};/*记录虚拟联锁关键数据*/
VirCIKeyDataStru newVirCIKeyDataStru[VIRTUAL_CI_MAX]= {0u}; VirCIKeyDataStru newVirCIKeyDataStru[VIRTUAL_CI_MAX]= {0u};
SpksDataStruct Record_spksDataBuff[SPKS_SUM_MAX] = { 0u }; SpksDataStruct Record_spksDataBuff[SPKS_SUM_MAX] = { 0u };
@@ -51,7 +42,7 @@ TsrDataStruct Record_TsrInfo[TSR_MAX_SUM] = { 0u }; /*
OCStationIndicDataStru Record_OCStationIndicBuff[INDICATOR_SUM_MAX] = { 0u }; OCStationIndicDataStru Record_OCStationIndicBuff[INDICATOR_SUM_MAX] = { 0u };
LogicalRouteDataStruct Record_LogicalRouteDataStru[ROUTE_LOGICAL_SUM_MAX] = { 0U }; LogicalRouteDataStruct Record_LogicalRouteDataStru[ROUTE_LOGICAL_SUM_MAX] = { 0U };
NonAutoReturnDataStruct Record_NonReturnDataStru[NON_AUTO_RETURN_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};/*比较后的设备打印数据缓冲*/ UINT8 outString[1024*1024] = {0u};/*比较后的设备打印数据缓冲*/
extern QueueStruct logPrintfQue; /*日志打印缓存队列*/ extern QueueStruct logPrintfQue; /*日志打印缓存队列*/
UINT16 logIndex = 0u; /*日志缓存索引*/ UINT16 logIndex = 0u; /*日志缓存索引*/
@@ -467,29 +458,19 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
UINT16 wTrainId = 0u; UINT16 wTrainId = 0u;
UINT8 returnValue = CI_SUCCESS;/*返回值*/ UINT8 returnValue = CI_SUCCESS;/*返回值*/
UINT8 comparaResult = 0u;/*比较结果*/ UINT8 comparaResult = 0u;/*比较结果*/
UINT8 comparaResultCC = 0u;/*比较结果*/
UINT16 floodGateTotalSum = 0u;/*防淹门总数量*/ UINT16 floodGateTotalSum = 0u;/*防淹门总数量*/
AxisSectionDataStruct* newAxisSecData = GetAxisSecData(); AxisSectionDataStruct* newAxisSecData = GetAxisSecData();
AxisSectionDataStructCC* pAxisSecDataCC = GetAxisSecDataCC();
SignalDataStruct* newSignalData = GetSignalData(); SignalDataStruct* newSignalData = GetSignalData();
SignalDataStructCC* pSignalDataCC = GetSignalDataCC();
SwitchDataStruct* newSwitchData = GetSwitchData(); SwitchDataStruct* newSwitchData = GetSwitchData();
PhysicalSectionDataStruct* newPhysicalSectionData = GetPhySecData(); PhysicalSectionDataStruct* newPhysicalSectionData = GetPhySecData();
PhysicalSectionDataStructCC* pPhysicalSectionDataCC = GetPhySecDataCC();
RouteDataStruct* newRouteData = GetRouteData(); RouteDataStruct* newRouteData = GetRouteData();
RouteDataStructCC* pRouteDataCC = GetRouteDataCC();
NonRouteDataStruct* newNonRouteDataStru = GetNonRouteDataPtr(); NonRouteDataStruct* newNonRouteDataStru = GetNonRouteDataPtr();
LogicSectionDataStruct* newLogicSecData = GetLogicSecData(); LogicSectionDataStruct* newLogicSecData = GetLogicSecData();
LogicSectionDataStructCC* pLogicSecDataCC = GetLogicSecDataCC();
WashMachineDataStruct* newWashMachineData = GetWashMachineData(); WashMachineDataStruct* newWashMachineData = GetWashMachineData();
PsdDataStruct * newPsdData = GetPsdData(); PsdDataStruct * newPsdData = GetPsdData();
PsdDataStructCC* pPsdDataCC = GetPsdDataCC();
GaragedoorDataStruct* newGaragedoorData = GetGaragedoorData(); /*获取车库门数据结构体*/ GaragedoorDataStruct* newGaragedoorData = GetGaragedoorData(); /*获取车库门数据结构体*/
GaragedoorDataStructCC* pGaragedoorDataCC = GetGaragedoorDataCC(); /*获取车库门数据结构体*/
FloodGateDataStruct *pNewFloodGateData = GetFloodGateData(); /*获取防淹门数据结构体*/ FloodGateDataStruct *pNewFloodGateData = GetFloodGateData(); /*获取防淹门数据结构体*/
FloodGateDataStructCC* pNewFloodGateDataCC = GetFloodGateDataCC(); /*获取防淹门数据结构体*/
OverlapDataStruct* newOverlapData = GetOverlapData(); OverlapDataStruct* newOverlapData = GetOverlapData();
OverlapDataStructCC* pOverlapDataCC = GetOverlapDataCC();
TrainInfoStru* pNewTrainInfoData = GetTrainInfoData(); TrainInfoStru* pNewTrainInfoData = GetTrainInfoData();
TsrDataStruct* pNewTsrInfo = GetTsrData(); /* 临时限速信息 */ TsrDataStruct* pNewTsrInfo = GetTsrData(); /* 临时限速信息 */
CfpDataStru * pNewCfpData = GetCfpData(); CfpDataStru * pNewCfpData = GetCfpData();
@@ -503,9 +484,8 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
UINT16 deviceNum = 0u; UINT16 deviceNum = 0u;
UINT8 localCiType = 0u; UINT8 localCiType = 0u;
UINT16 wNonAutoReturnCurSum = 0U;/*无人折返按钮当前总数*/ UINT16 wNonAutoReturnCurSum = 0U;/*无人折返按钮当前总数*/
NonAutoReturnDataStruct* pNonAutoReturnData = NULL; /*无人折返数据结构体指针*/ NonAutoReturnDataStruct* pNonAutoReturnData = NULL;/*无人折返数据结构体指针*/
NonAutoReturnDataStructCC* pNonReturnDataStruCC = NULL; /*无人折返数据结构体指针-CC*/
UINT8 chThisOCBoardState = 0U;
/*************************************打印物理区段数据********************************************/ /*************************************打印物理区段数据********************************************/
/*打印区段数据*/ /*打印区段数据*/
@@ -517,10 +497,9 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
deviceId = GetPhySecId(ii); deviceId = GetPhySecId(ii);
comparaResult = DeviceCompara((UINT8*)(&Record_PhysicalSectionDataStru[deviceId]), (UINT16)sizeof(PhysicalSectionDataStruct), comparaResult = DeviceCompara((UINT8*)(&Record_PhysicalSectionDataStru[deviceId]), (UINT16)sizeof(PhysicalSectionDataStruct),
(UINT8*)(&newPhysicalSectionData[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 ((1U == comparaResult) || (1U == comparaResultCC))
if(0u != comparaResult)
{/*比较数据不一致*/ {/*比较数据不一致*/
if (CI_ERROR != Flag) if (CI_ERROR != Flag)
@@ -547,18 +526,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newPhysicalSectionData[deviceId].CurMergeOccupyState;/*当前融合占用状态*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].CurMergeOccupyState;/*当前融合占用状态*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].PreAndMergeOccupyState;/*之前与占用融合占用状态*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].PreAndMergeOccupyState;/*之前与占用融合占用状态*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].CurAndMergeOccupyState;/*当前与占用融合占用状态*/ 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++] = newPhysicalSectionData[deviceId].StopSteadyFlag;/*停稳状态信息*/
outString[outStringLength] = pPhysicalSectionDataCC[deviceId].StopSteadyFlag;/*停稳状态信息CC(0x55-未停稳,0xAA-停稳)*/
outStringLength++;
outString[outStringLength++] = newPhysicalSectionData[deviceId].ArbState;/*ARB状态*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].ArbState;/*ARB状态*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].ProtectSecLockDelayTimeFlag;/*保护区段锁闭延时标志(动态字段)*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].ProtectSecLockDelayTimeFlag;/*保护区段锁闭延时标志(动态字段)*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].StopCheckFlag; /*物理区段停止检查标志(未设置/设置) (动态字段)*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].StopCheckFlag; /*物理区段停止检查标志(未设置/设置) (动态字段)*/
@@ -576,6 +544,8 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outStringLength += 4u; outStringLength += 4u;
LongToChar(newPhysicalSectionData[deviceId].FaultUnlockStartCycNum,&outString[outStringLength]);/*区故解解锁延时开始周期*/ LongToChar(newPhysicalSectionData[deviceId].FaultUnlockStartCycNum,&outString[outStringLength]);/*区故解解锁延时开始周期*/
outStringLength += 4u; outStringLength += 4u;
LongToChar(newPhysicalSectionData[deviceId].SectionResetStartCycNum,&outString[outStringLength]);/*区段计轴复位开始周期*/
outStringLength += 4u;
outString[outStringLength++] = newPhysicalSectionData[deviceId].FLockType; /*物理区段封锁产生的原因,SPKS或其他原因*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].FLockType; /*物理区段封锁产生的原因,SPKS或其他原因*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].UtOrCtOccFlag; /*获取物理区段占用标志*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].UtOrCtOccFlag; /*获取物理区段占用标志*/
ShortToChar(newPhysicalSectionData[deviceId].SecProUseBelongRouteId,&outString[outStringLength]);/*征用所属进路ID*/ ShortToChar(newPhysicalSectionData[deviceId].SecProUseBelongRouteId,&outString[outStringLength]);/*征用所属进路ID*/
@@ -588,14 +558,8 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newPhysicalSectionData[deviceId].chABLTrainFlag; /*物理区段ABL列车占用状态*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].chABLTrainFlag; /*物理区段ABL列车占用状态*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].chPreABLTrainFlag; /*物理区段之前ABL列车占用状态*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].chPreABLTrainFlag; /*物理区段之前ABL列车占用状态*/
outString[outStringLength++] = newPhysicalSectionData[deviceId].cPhySecInHumidRailFlag; /*物理区段湿轨标志:0x55 无效;0xAA 有效*/ outString[outStringLength++] = newPhysicalSectionData[deviceId].cPhySecInHumidRailFlag; /*物理区段湿轨标志:0x55 无效;0xAA 有效*/
LongToChar(newPhysicalSectionData[deviceId].UtOrCtOccuStartCycNum, &outString[outStringLength]);/*区段UT或CT占用起始周期号*/
outStringLength += 4u;
} }
} }
else
{
/*数据一致,不处理*/
}
} }
if (0u == outStringLength) if (0u == outStringLength)
@@ -642,14 +606,11 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
comparaResult = DeviceCompara((UINT8*)(&Record_SignalDataStru[deviceId]), (UINT16)sizeof(SignalDataStruct), comparaResult = DeviceCompara((UINT8*)(&Record_SignalDataStru[deviceId]), (UINT16)sizeof(SignalDataStruct),
(UINT8*)(&newSignalData[deviceId]), (UINT16)sizeof(SignalDataStruct)); (UINT8*)(&newSignalData[deviceId]), (UINT16)sizeof(SignalDataStruct));
comparaResultCC = DeviceCompara((UINT8*)(&Record_SignalDataStruCC[deviceId]), (UINT16)sizeof(SignalDataStructCC), if (0u==comparaResult)
(UINT8*)(&pSignalDataCC[deviceId]), (UINT16)sizeof(SignalDataStructCC));
if ((0U==comparaResult) && (0U == comparaResultCC))
{/*比较数据一致*/ {/*比较数据一致*/
} }
else if ((1U==comparaResult ) || (1U == comparaResultCC)) else if (1u==comparaResult )
{/*比较数据不一致*/ {/*比较数据不一致*/
if (CI_ERROR != Flag) if (CI_ERROR != Flag)
@@ -660,8 +621,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = newSignalData[deviceId].FLockState;/*封锁状态*/ outString[outStringLength++] = newSignalData[deviceId].FLockState;/*封锁状态*/
outString[outStringLength++] = newSignalData[deviceId].LightExtinctState;/*亮灭灯状态*/ outString[outStringLength++] = newSignalData[deviceId].LightExtinctState;/*亮灭灯状态*/
outString[outStringLength] = pSignalDataCC[deviceId].LightExtinctState;/*亮灭灯状态CC(0x55:灭灯,0xaa:亮灯)*/
outStringLength++;
outString[outStringLength++] = newSignalData[deviceId].PreColor;/*之前显示颜色*/ outString[outStringLength++] = newSignalData[deviceId].PreColor;/*之前显示颜色*/
outString[outStringLength++] = newSignalData[deviceId].CurColor;/*当前显示颜色*/ outString[outStringLength++] = newSignalData[deviceId].CurColor;/*当前显示颜色*/
outString[outStringLength++] = newSignalData[deviceId].PreDriveColor;/*之前驱动颜色*/ outString[outStringLength++] = newSignalData[deviceId].PreDriveColor;/*之前驱动颜色*/
@@ -674,8 +633,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
LongToChar(newSignalData[deviceId].CollSigOpenStartCycNum,&outString[outStringLength]); /*采集信号机开放起始周期*/ LongToChar(newSignalData[deviceId].CollSigOpenStartCycNum,&outString[outStringLength]); /*采集信号机开放起始周期*/
outStringLength += 4u; outStringLength += 4u;
outString[outStringLength++] = newSignalData[deviceId].SignalCrossState;/*信号机跨压状态*/ outString[outStringLength++] = newSignalData[deviceId].SignalCrossState;/*信号机跨压状态*/
outString[outStringLength] = pSignalDataCC[deviceId].SignalCrossState;/*信号机跨压状态CC(0x55:未跨压,0xaa:跨压)*/
outStringLength++;
outString[outStringLength++] = newSignalData[deviceId].SignalYLockOpenState;/*引导总锁信号开放状态*/ outString[outStringLength++] = newSignalData[deviceId].SignalYLockOpenState;/*引导总锁信号开放状态*/
outString[outStringLength++] = newSignalData[deviceId].AtsDetainFlag;/*Ats人工扣车标志*/ outString[outStringLength++] = newSignalData[deviceId].AtsDetainFlag;/*Ats人工扣车标志*/
outString[outStringLength++] = newSignalData[deviceId].AtsDetainFlagAuto;/*Ats自动扣车标志*/ outString[outStringLength++] = newSignalData[deviceId].AtsDetainFlagAuto;/*Ats自动扣车标志*/
@@ -695,7 +652,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newSignalData[deviceId].GreenDsBreakFlag;/*绿灯丝断丝标志状态*/ outString[outStringLength++] = newSignalData[deviceId].GreenDsBreakFlag;/*绿灯丝断丝标志状态*/
outString[outStringLength++] = newSignalData[deviceId].YellowDsBreakFlag;/*黄灯丝断丝标志状态*/ outString[outStringLength++] = newSignalData[deviceId].YellowDsBreakFlag;/*黄灯丝断丝标志状态*/
outString[outStringLength++] = newSignalData[deviceId].WhiteDsBreakFlag;/*白灯丝断丝标志状态*/ outString[outStringLength++] = newSignalData[deviceId].WhiteDsBreakFlag;/*白灯丝断丝标志状态*/
outString[outStringLength++] = newSignalData[deviceId].BlueDsBreakFlag;/*蓝灯丝断丝标志状态*/
outString[outStringLength++] = newSignalData[deviceId].RedYellowDsBreakFlag;/*红黄灯丝断丝标志状态*/ outString[outStringLength++] = newSignalData[deviceId].RedYellowDsBreakFlag;/*红黄灯丝断丝标志状态*/
outString[outStringLength++] = newSignalData[deviceId].RedWhiteDsBreakFlag;/*红白灯丝断丝标志状态*/ outString[outStringLength++] = newSignalData[deviceId].RedWhiteDsBreakFlag;/*红白灯丝断丝标志状态*/
outString[outStringLength++] = newSignalData[deviceId].GreenYellowDsBreakFlag;/*绿黄灯丝断丝标志状态*/ outString[outStringLength++] = newSignalData[deviceId].GreenYellowDsBreakFlag;/*绿黄灯丝断丝标志状态*/
@@ -703,7 +659,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newSignalData[deviceId].DoubleYellowDsBreakFlag;/*双黄灯丝断丝标志状态*/ outString[outStringLength++] = newSignalData[deviceId].DoubleYellowDsBreakFlag;/*双黄灯丝断丝标志状态*/
outString[outStringLength++] = newSignalData[deviceId].MaintainLightState;/*信号机维修点灯状态*/ outString[outStringLength++] = newSignalData[deviceId].MaintainLightState;/*信号机维修点灯状态*/
if (MAX_SIGNAL_LIGHTUPLINK_NUM < pSignalDataCC[deviceId].wSignalLightUpLinkIdSum) if (MAX_SIGNAL_LIGHTUPLINK_NUM < newSignalData[deviceId].wSignalLightUpLinkIdSum)
{ {
/* 数量合法 */ /* 数量合法 */
ShortToChar(0u, &outString[outStringLength]);/*信号机点灯link数量*/ ShortToChar(0u, &outString[outStringLength]);/*信号机点灯link数量*/
@@ -712,12 +668,12 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
else else
{ {
/* 数量合法 */ /* 数量合法 */
ShortToChar(pSignalDataCC[deviceId].wSignalLightUpLinkIdSum, &outString[outStringLength]);/*信号机点灯link数量*/ ShortToChar(newSignalData[deviceId].wSignalLightUpLinkIdSum, &outString[outStringLength]);/*信号机点灯link数量*/
outStringLength += 2u; outStringLength += 2u;
for (jj = 0u; jj < pSignalDataCC[deviceId].wSignalLightUpLinkIdSum; jj++) for (jj = 0u; jj < newSignalData[deviceId].wSignalLightUpLinkIdSum; jj++)
{ {
ShortToChar(pSignalDataCC[deviceId].szSignalLightUpLinkIdBuf[jj], &outString[outStringLength]);/*信号机点灯link数量*/ ShortToChar(newSignalData[deviceId].szSignalLightUpLinkIdBuf[jj], &outString[outStringLength]);/*信号机点灯link数量*/
outStringLength += 2u; outStringLength += 2u;
} }
} }
@@ -727,28 +683,16 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newSignalData[deviceId].CancelDetainBtnErrFlag; /*取消扣车按钮故障标志*/ outString[outStringLength++] = newSignalData[deviceId].CancelDetainBtnErrFlag; /*取消扣车按钮故障标志*/
outString[outStringLength++] = newSignalData[deviceId].CancelDetainBtnValidFlag; /*取消扣车按钮有效标志*/ outString[outStringLength++] = newSignalData[deviceId].CancelDetainBtnValidFlag; /*取消扣车按钮有效标志*/
outString[outStringLength++] = newSignalData[deviceId].CancelDetainRelayDownState; /*取消扣车按钮采集继电器落下状态*/ outString[outStringLength++] = newSignalData[deviceId].CancelDetainRelayDownState; /*取消扣车按钮采集继电器落下状态*/
LongToChar(newSignalData[deviceId].DetainBtnPressCycNum, &outString[outStringLength]); /*扣车按钮1按下周期*/ LongToChar(newSignalData[deviceId].DetainBtnPressCycNum, &outString[outStringLength]); /*扣车按钮按下周期*/
outStringLength += 4u; outStringLength += 4u;
LongToChar(newSignalData[deviceId].DetainSndBtnPressCycNum, &outString[outStringLength]); /*扣车按钮2按下周期*/
outStringLength += 4U;
LongToChar(newSignalData[deviceId].CancelDetainBtnPressCycNum, &outString[outStringLength]); /*取消扣车按钮正常按下周期*/ LongToChar(newSignalData[deviceId].CancelDetainBtnPressCycNum, &outString[outStringLength]); /*取消扣车按钮正常按下周期*/
outStringLength += 4u; outStringLength += 4u;
LongToChar(newSignalData[deviceId].CancelDetainErrTrigPressCycNum, &outString[outStringLength]); /*取消扣车按钮误触发按下周期*/ LongToChar(newSignalData[deviceId].CancelDetainErrTrigPressCycNum, &outString[outStringLength]); /*取消扣车按钮误触发按下周期*/
outStringLength += 4u; outStringLength += 4u;
ShortToChar(pSignalDataCC[deviceId].wSignalLightUpTrainId, &outString[outStringLength]);/*信号机点灯区段接近列车ID*/ ShortToChar(newSignalData[deviceId].wSignalLightUpTrainId, &outString[outStringLength]);/*信号机点灯区段接近列车ID*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = pSignalDataCC[deviceId].cSleepTrainLightUpFlag; /*休眠车点亮信号机标志:0x55 无效,0xAA 有效*/ outString[outStringLength++] = newSignalData[deviceId].cSleepTrainLightUpFlag; /*休眠车点亮信号机标志:0x55 无效,0xAA 有效*/
outString[outStringLength++] = newSignalData[deviceId].cInHumidRailFlag; /*信号机湿轨标志: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 else
@@ -818,7 +762,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = pNewEsbData[deviceId].EssSteadyState;/*ESS稳灯状态(用于虚拟联锁向ATS反馈)--0x55 需要设置稳灯;0xaa不需要设置稳灯*/ outString[outStringLength++] = pNewEsbData[deviceId].EssSteadyState;/*ESS稳灯状态(用于虚拟联锁向ATS反馈)--0x55 需要设置稳灯;0xaa不需要设置稳灯*/
outString[outStringLength++] = pNewEsbData[deviceId].EssFlashState;/*ESS闪灯状态(用于虚拟联锁向ATS反馈)--0x55 需要设置闪灯;0xaa不需要设置闪灯*/ outString[outStringLength++] = pNewEsbData[deviceId].EssFlashState;/*ESS闪灯状态(用于虚拟联锁向ATS反馈)--0x55 需要设置闪灯;0xaa不需要设置闪灯*/
outString[outStringLength++] = pNewEsbData[deviceId].EsbErrorFlag;/*自复式紧急停车按钮故障标志,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].CancelEsbErrorFlag;/*自复式取消紧急停车按钮故障标志,0x55未故障,0xaa故障*/
outString[outStringLength++] = pNewEsbData[deviceId].CancelEsbValidFlag;/*取消紧急关闭按钮有效标志,0x55无效,0xaa有效*/ outString[outStringLength++] = pNewEsbData[deviceId].CancelEsbValidFlag;/*取消紧急关闭按钮有效标志,0x55无效,0xaa有效*/
outString[outStringLength++] = pNewEsbData[deviceId].CancelEsbRelayDownState;/*取消紧急关闭按钮采集继电器落下状态,0x55:正常采集落下,0xaa:通信异常落下*/ outString[outStringLength++] = pNewEsbData[deviceId].CancelEsbRelayDownState;/*取消紧急关闭按钮采集继电器落下状态,0x55:正常采集落下,0xaa:通信异常落下*/
@@ -827,18 +770,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
LongToChar(pNewEsbData[deviceId].CancelEsbPressCycNum, &outString[outStringLength]);/*取消紧急关闭按钮按下周期*/ LongToChar(pNewEsbData[deviceId].CancelEsbPressCycNum, &outString[outStringLength]);/*取消紧急关闭按钮按下周期*/
outStringLength += 4u; outStringLength += 4u;
LongToChar(pNewEsbData[deviceId].CancelEsbErrTriggerPressCycNum, &outString[outStringLength]);/*取消紧急关闭按钮误触发按下周期*/ 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 else
@@ -956,36 +888,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newSwitchData[deviceId].chSwitchJichaState; /*道岔挤岔状态*/ outString[outStringLength++] = newSwitchData[deviceId].chSwitchJichaState; /*道岔挤岔状态*/
LongToChar(newSwitchData[deviceId].SwitchCollTolerateCycNum, &outString[outStringLength]);/*容忍周期号*/ LongToChar(newSwitchData[deviceId].SwitchCollTolerateCycNum, &outString[outStringLength]);/*容忍周期号*/
outStringLength += 4u; outStringLength += 4u;
LongToChar(newSwitchData[deviceId].SwitchOutputDrvCmdCycNum, &outString[outStringLength]);/*驱动起始周期*/
outStringLength += 4u;
outString[outStringLength++] = newSwitchData[deviceId].mainControlOcId;/*主控OC*/
outString[outStringLength++] = newSwitchData[deviceId].chSwitchBelongOcNum;/*道岔所属OC数*/
for (jj = 0U; jj < newSwitchData[deviceId].chSwitchBelongOcNum; jj++)
{
outString[outStringLength++] = newSwitchData[deviceId].belongOCData[jj].OcId;/*道岔所属OC*/
outString[outStringLength++] = newSwitchData[deviceId].belongOCData[jj].controlMode;/*OC当前主控状态*/
outString[outStringLength++] = newSwitchData[deviceId].belongOCData[jj].OutControlCmd;/*发送OC当前主控命令*/
outString[outStringLength++] = newSwitchData[deviceId].belongOCData[jj].PlusBoxSate;/*插箱状态*/
chThisOCBoardState = GetSwitchThisOCBoardState(deviceId, newSwitchData[deviceId].belongOCData[jj].OcId);
outString[outStringLength++] = chThisOCBoardState;/*双系板卡故障状态*/
LongToChar(newSwitchData[deviceId].belongOCData[jj].OutMainControlCmdCycNum, &outString[outStringLength]);/*升主控命令周期*/
outStringLength += 4u;
outString[outStringLength++] = newSwitchData[deviceId].belongOCData[jj].FindPostionCmd;/*寻表命令*/
LongToChar(newSwitchData[deviceId].belongOCData[jj].FindCmdStartCycNum, &outString[outStringLength]);/*寻表命令起始周期*/
outStringLength += 4u;
}
outString[outStringLength++] = newSwitchData[deviceId].PLockedAxisSecNum;/*被防护锁闭的计轴区段ID*/
for (jj = 0; jj < SWITCH_MAX_PROTECT_LOCKED_NUM; jj++)
{
ShortToChar(newSwitchData[deviceId].PLockedAxisSecIdArr[jj], &outString[outStringLength]);
outStringLength += 2u;
}
} }
} }
else else
@@ -1034,14 +936,11 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
comparaResult = DeviceCompara((UINT8*)(&Record_RouteDataStru[deviceId]), (UINT16)sizeof(RouteDataStruct), comparaResult = DeviceCompara((UINT8*)(&Record_RouteDataStru[deviceId]), (UINT16)sizeof(RouteDataStruct),
(UINT8*)(&newRouteData[deviceId]), (UINT16)sizeof(RouteDataStruct)); (UINT8*)(&newRouteData[deviceId]), (UINT16)sizeof(RouteDataStruct));
comparaResultCC = DeviceCompara((UINT8*)(&Record_RouteDataStruCC[deviceId]), (UINT16)sizeof(RouteDataStructCC), if (0u==comparaResult)
(UINT8*)(&pRouteDataCC[deviceId]), (UINT16)sizeof(RouteDataStructCC));
if ((0U == comparaResult) && (0U == comparaResultCC))
{/*比较数据一致*/ {/*比较数据一致*/
} }
else if ((1U==comparaResult) || (1U == comparaResultCC)) else if (1u==comparaResult )
{/*比较数据不一致*/ {/*比较数据不一致*/
if (CI_ERROR != Flag) if (CI_ERROR != Flag)
@@ -1077,8 +976,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
ShortToChar(newRouteData[deviceId].AllAutoReturnId,&outString[outStringLength]);/*全自动折返进路ID*/ ShortToChar(newRouteData[deviceId].AllAutoReturnId,&outString[outStringLength]);/*全自动折返进路ID*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = newRouteData[deviceId].StopensureFlag;/*停车保证标志*/ outString[outStringLength++] = newRouteData[deviceId].StopensureFlag;/*停车保证标志*/
outString[outStringLength] = pRouteDataCC[deviceId].StopensureFlag;/*停车保证标志CC(0x55:已设置,0xAA:未设置)*/
outStringLength++;
outString[outStringLength++] = newRouteData[deviceId].StopKeepCheckFlag; /* 保持时候用的停车保证标志 */ outString[outStringLength++] = newRouteData[deviceId].StopKeepCheckFlag; /* 保持时候用的停车保证标志 */
outString[outStringLength++] = newRouteData[deviceId].RouteStateFlag; /*进路状态标志(1:表示有效;0:表示无效)*/ outString[outStringLength++] = newRouteData[deviceId].RouteStateFlag; /*进路状态标志(1:表示有效;0:表示无效)*/
outString[outStringLength++] = newRouteData[deviceId].TrainEnterFlag;/*列车驶入标志*/ outString[outStringLength++] = newRouteData[deviceId].TrainEnterFlag;/*列车驶入标志*/
@@ -1097,9 +994,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outStringLength += 4u; outStringLength += 4u;
outString[outStringLength++] = newRouteData[deviceId].DCQState;/*调车请求状态*/ outString[outStringLength++] = newRouteData[deviceId].DCQState;/*调车请求状态*/
outString[outStringLength++] = newRouteData[deviceId].DCTYState;/*调车同意状态*/ outString[outStringLength++] = newRouteData[deviceId].DCTYState;/*调车同意状态*/
LongToChar(newRouteData[deviceId].dwDcAgreeBtnPressCycNum, &outString[outStringLength]);/*调车同意按钮按下起始周期*/
outStringLength += 4u;
outString[outStringLength++] = newRouteData[deviceId].chDcAgreeButtonErrState;/*调车同意按钮故障状态*/
outString[outStringLength++] = newRouteData[deviceId].DCTYNotSatisfySignalReOpenFlag;/*调车同意不满足-信号重开标志*/ outString[outStringLength++] = newRouteData[deviceId].DCTYNotSatisfySignalReOpenFlag;/*调车同意不满足-信号重开标志*/
LongToChar(newRouteData[deviceId].DCTYNotSatisfyStartCount,&outString[outStringLength]);/*调车同意不满足-起始周期*/ LongToChar(newRouteData[deviceId].DCTYNotSatisfyStartCount,&outString[outStringLength]);/*调车同意不满足-起始周期*/
outStringLength += 4u; outStringLength += 4u;
@@ -1111,19 +1006,19 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newRouteData[deviceId].AutoSigPropertyLoseEfficacyFlag; /*自动信号属性失效标志(未设置/设置)*/ outString[outStringLength++] = newRouteData[deviceId].AutoSigPropertyLoseEfficacyFlag; /*自动信号属性失效标志(未设置/设置)*/
outString[outStringLength++] = newRouteData[deviceId].OverlapNeedCIlockFlag; /*保护区段需要CI锁闭标志*/ outString[outStringLength++] = newRouteData[deviceId].OverlapNeedCIlockFlag; /*保护区段需要CI锁闭标志*/
outString[outStringLength++] = newRouteData[deviceId].OverlapLockProcFlag; /*保护区段在锁闭过程中标志*/ outString[outStringLength++] = newRouteData[deviceId].OverlapLockProcFlag; /*保护区段在锁闭过程中标志*/
ShortToChar(pRouteDataCC[deviceId].wStopEnsureTrainId, &outString[outStringLength]);/*进路停车保证列车ID*/ ShortToChar(newRouteData[deviceId].wStopEnsureTrainId, &outString[outStringLength]);/*进路停车保证列车ID*/
outStringLength += 2u; outStringLength += 2u;
LongToChar(pRouteDataCC[deviceId].dwStopEnsureCyc, &outString[outStringLength]);/*停车保证询问周期号*/ LongToChar(newRouteData[deviceId].dwStopEnsureCyc, &outString[outStringLength]);/*停车保证询问周期号*/
outStringLength += 4u; outStringLength += 4u;
outString[outStringLength++] = pRouteDataCC[deviceId].cResReqOtherCIId; /*发送资源申请的联锁ID*/ outString[outStringLength++] = newRouteData[deviceId].cResReqOtherCIId; /*发送资源申请的联锁ID*/
if (ROUTE_APPLY_RECD_TRAIN_SUM_MAX >= pRouteDataCC[deviceId].chResReqTrainSum) if (ROUTE_APPLY_RECD_TRAIN_SUM_MAX >= newRouteData[deviceId].chResReqTrainSum)
{ {
outString[outStringLength++] = pRouteDataCC[deviceId].chResReqTrainSum; /*发送资源申请的联锁ID*/ outString[outStringLength++] = newRouteData[deviceId].chResReqTrainSum; /*发送资源申请的联锁ID*/
for (jj = 0u; jj < pRouteDataCC[deviceId].chResReqTrainSum; jj++) for (jj = 0u; jj < newRouteData[deviceId].chResReqTrainSum; jj++)
{ {
ShortToChar(pRouteDataCC[deviceId].wszResReqTrainId[jj], &outString[outStringLength]);/*发送资源申请的列车ID*/ ShortToChar(newRouteData[deviceId].wszResReqTrainId[jj], &outString[outStringLength]);/*发送资源申请的列车ID*/
outStringLength += 2u; outStringLength += 2u;
} }
} }
@@ -1132,13 +1027,13 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = 0u; /*发送资源申请的联锁ID*/ outString[outStringLength++] = 0u; /*发送资源申请的联锁ID*/
} }
if (ROUTE_APPLY_RECD_TRAIN_SUM_MAX >= pRouteDataCC[deviceId].ITSRouteApplyTrainIdSum) if (ROUTE_APPLY_RECD_TRAIN_SUM_MAX >= newRouteData[deviceId].ITSRouteApplyTrainIdSum)
{ {
outString[outStringLength++] = pRouteDataCC[deviceId].ITSRouteApplyTrainIdSum; /*ITS申请路径命令的列车ID记录总数*/ outString[outStringLength++] = newRouteData[deviceId].ITSRouteApplyTrainIdSum; /*ITS申请路径命令的列车ID记录总数*/
for (jj = 0u; jj < pRouteDataCC[deviceId].ITSRouteApplyTrainIdSum; jj++) for (jj = 0u; jj < newRouteData[deviceId].ITSRouteApplyTrainIdSum; jj++)
{ {
ShortToChar(pRouteDataCC[deviceId].ITSRouteApplyTrainIdBuf[jj], &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/ ShortToChar(newRouteData[deviceId].ITSRouteApplyTrainIdBuf[jj], &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/
outStringLength += 2u; outStringLength += 2u;
} }
@@ -1149,16 +1044,16 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
} }
/*可动道岔标志*/ /*可动道岔标志*/
outString[outStringLength++] = pRouteDataCC[deviceId].HalfRouteDataSt.HalfRouteSwitchMoveValid; outString[outStringLength++] = newRouteData[deviceId].HalfRouteDataSt.HalfRouteSwitchMoveValid;
if (MAX_ROUTE_IN_LT_NUM > pRouteDataCC[deviceId].HalfRouteDataSt.RouteLockLgcSecNum) if (MAX_ROUTE_IN_LT_NUM > newRouteData[deviceId].HalfRouteDataSt.RouteLockLgcSecNum)
{ {
/*部分锁闭逻辑区段数量*/ /*部分锁闭逻辑区段数量*/
outString[outStringLength++] = pRouteDataCC[deviceId].HalfRouteDataSt.RouteLockLgcSecNum; outString[outStringLength++] = newRouteData[deviceId].HalfRouteDataSt.RouteLockLgcSecNum;
/*部分锁闭逻辑区段ID*/ /*部分锁闭逻辑区段ID*/
for (jj = 0u; jj < pRouteDataCC[deviceId].HalfRouteDataSt.RouteLockLgcSecNum; jj++) for (jj = 0u; jj < newRouteData[deviceId].HalfRouteDataSt.RouteLockLgcSecNum; jj++)
{ {
ShortToChar(pRouteDataCC[deviceId].HalfRouteDataSt.RouteLockLgcSecIdBuf[jj], &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/ ShortToChar(newRouteData[deviceId].HalfRouteDataSt.RouteLockLgcSecIdBuf[jj], &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/
outStringLength += 2u; outStringLength += 2u;
} }
@@ -1168,18 +1063,18 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = 0u; outString[outStringLength++] = 0u;
} }
/*部分锁闭列车ID*/ /*部分锁闭列车ID*/
ShortToChar(pRouteDataCC[deviceId].HalfRouteDataSt.HalfResReqTrainId, &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/ ShortToChar(newRouteData[deviceId].HalfRouteDataSt.HalfResReqTrainId, &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/
outStringLength += 2u; outStringLength += 2u;
if (ROUTE_TRAIN_LOC_MAX_LGC_SUM >= pRouteDataCC[deviceId].HalfRouteDataSt.TrainLocLgcSecNum) if (ROUTE_TRAIN_LOC_MAX_LGC_SUM >= newRouteData[deviceId].HalfRouteDataSt.TrainLocLgcSecNum)
{ {
/*部分锁闭列车身下资源数量*/ /*部分锁闭列车身下资源数量*/
outString[outStringLength++] = pRouteDataCC[deviceId].HalfRouteDataSt.TrainLocLgcSecNum; outString[outStringLength++] = newRouteData[deviceId].HalfRouteDataSt.TrainLocLgcSecNum;
for (jj = 0u; jj < pRouteDataCC[deviceId].HalfRouteDataSt.TrainLocLgcSecNum; jj++) for (jj = 0u; jj < newRouteData[deviceId].HalfRouteDataSt.TrainLocLgcSecNum; jj++)
{ {
/*部分锁闭列车身下资源逻辑区段ID*/ /*部分锁闭列车身下资源逻辑区段ID*/
ShortToChar(pRouteDataCC[deviceId].HalfRouteDataSt.TrainLocLgcSecIdBuf[jj], &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/ ShortToChar(newRouteData[deviceId].HalfRouteDataSt.TrainLocLgcSecIdBuf[jj], &outString[outStringLength]);/*通过ITS申请路径命令记录的列车ID数组*/
outStringLength += 2u; outStringLength += 2u;
} }
@@ -1188,7 +1083,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
{ {
outString[outStringLength++] = 0u; outString[outStringLength++] = 0u;
} }
LongToChar(pRouteDataCC[deviceId].dwFirstElockStartCycNum, &outString[outStringLength]); /*进路第一个锁闭的逻辑区段延时设置区段故障起始周期号*/ LongToChar(newRouteData[deviceId].dwFirstElockStartCycNum, &outString[outStringLength]); /*进路第一个锁闭的逻辑区段延时设置区段故障起始周期号*/
outStringLength += 4u; outStringLength += 4u;
outString[outStringLength++] = newRouteData[deviceId].cRelZuHeRouteSGBJDelayFlag; /*关联组合进路声光报警是否延时标志*/ outString[outStringLength++] = newRouteData[deviceId].cRelZuHeRouteSGBJDelayFlag; /*关联组合进路声光报警是否延时标志*/
@@ -1199,11 +1094,8 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newRouteData[deviceId].cRouteNeedDriveSGBJFlag; /*进路驱动声光报警标志*/ outString[outStringLength++] = newRouteData[deviceId].cRouteNeedDriveSGBJFlag; /*进路驱动声光报警标志*/
outString[outStringLength++] = newRouteData[deviceId].cRouteDrivedSGBJFlag; /*进路驱动声光报警标志:0x55 未驱动过;0xAA 已驱动过*/ outString[outStringLength++] = newRouteData[deviceId].cRouteDrivedSGBJFlag; /*进路驱动声光报警标志:0x55 未驱动过;0xAA 已驱动过*/
outString[outStringLength++] = pRouteDataCC[deviceId].chRouteNearSecSearchState; /*进路接近区段查询状态是否有故障车*/ outString[outStringLength++] = newRouteData[deviceId].chRouteNearSecSearchState; /*进路接近区段查询状态是否有故障车*/
outString[outStringLength++] = newRouteData[deviceId].chRouteApplySwitchCheckFlag; /*进路办理相邻控区道岔检查标志*/ outString[outStringLength++] = newRouteData[deviceId].chRouteApplySwitchCheckFlag; /*进路办理相邻控区道岔检查标志*/
outString[outStringLength++] = newRouteData[deviceId].chRoutCouplinkFlag; /*进路联挂标志*/
outString[outStringLength++] = newRouteData[deviceId].chCouplinkSuccessFlag; /*进路联挂成功*/
outString[outStringLength++] = newRouteData[deviceId].chCouplinkErrorFlag; /*进路联挂失败*/
} }
} }
else else
@@ -1344,13 +1236,12 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
deviceId = GetLogicSecId(ii); deviceId = GetLogicSecId(ii);
comparaResult = DeviceCompara((UINT8*)(&Record_LogicSecDataStru[deviceId]), (UINT16)sizeof(LogicSectionDataStruct), comparaResult = DeviceCompara((UINT8*)(&Record_LogicSecDataStru[deviceId]), (UINT16)sizeof(LogicSectionDataStruct),
(UINT8*)(&newLogicSecData[deviceId]), (UINT16)sizeof(LogicSectionDataStruct)); (UINT8*)(&newLogicSecData[deviceId]), (UINT16)sizeof(LogicSectionDataStruct));
comparaResultCC = DeviceCompara((UINT8*)(&Record_LogicSecDataStruCC[deviceId]), (UINT16)sizeof(LogicSectionDataStructCC),
(UINT8*)(&pLogicSecDataCC[deviceId]), (UINT16)sizeof(LogicSectionDataStructCC)); if (0u==comparaResult)
if ((0U==comparaResult) && (0U == comparaResultCC))
{/*比较数据一致*/ {/*比较数据一致*/
} }
else if ((1U==comparaResult) || (1U == comparaResultCC)) else if (1u==comparaResult )
{/*比较数据不一致*/ {/*比较数据不一致*/
if (CI_ERROR==Flag) if (CI_ERROR==Flag)
@@ -1366,21 +1257,10 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newLogicSecData[deviceId].PreOccupyState;/*逻辑区段之前占用状态*/ outString[outStringLength++] = newLogicSecData[deviceId].PreOccupyState;/*逻辑区段之前占用状态*/
outString[outStringLength++] = newLogicSecData[deviceId].CurOccupyState;/*逻辑区段当前占用状态*/ outString[outStringLength++] = newLogicSecData[deviceId].CurOccupyState;/*逻辑区段当前占用状态*/
outString[outStringLength++] = newLogicSecData[deviceId].LinShiXianSuSetFlag;/*逻辑区段临时限速*/ outString[outStringLength++] = newLogicSecData[deviceId].LinShiXianSuSetFlag;/*逻辑区段临时限速*/
outString[outStringLength] = pLogicSecDataCC[deviceId].LinShiXianSuSetFlag;/*逻辑区段临时限速CC(0x55-已未设置临时限速,0xAA-已设置临时限速,0xFF-临时限速无效)*/ outString[outStringLength++] = newLogicSecData[deviceId].OccupyState;/*逻辑区段占用状态*/
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].chLogSecCbtcArbState;/*逻辑区段CBTC_ARB状态*/
outString[outStringLength++] = newLogicSecData[deviceId].chLogSecPbTacsArbState;/*逻辑区段PB_TACS_ARB状态*/
outString[outStringLength++] = newLogicSecData[deviceId].chArbState;/*逻辑区段ARB状态*/
outString[outStringLength++] = newLogicSecData[deviceId].LogLockState;/*逻辑区段锁闭状态*/ outString[outStringLength++] = newLogicSecData[deviceId].LogLockState;/*逻辑区段锁闭状态*/
outString[outStringLength++] = newLogicSecData[deviceId].LogLockDir;/*逻辑区段锁闭方向*/ outString[outStringLength++] = newLogicSecData[deviceId].LogLockDir;/*逻辑区段锁闭方向*/
outString[outStringLength++] = pLogicSecDataCC[deviceId].chResShareFlag;/*逻辑区段共享标志 0x55共享 0xAA非共享*/ outString[outStringLength++] = newLogicSecData[deviceId].chResShareFlag;/*逻辑区段共享标志 0x55共享 0xAA非共享*/
ShortToChar(newLogicSecData[deviceId].LogLockBelongRoute,&outString[outStringLength]);/*逻辑锁闭所属进路*/ ShortToChar(newLogicSecData[deviceId].LogLockBelongRoute,&outString[outStringLength]);/*逻辑锁闭所属进路*/
outStringLength += 2u; outStringLength += 2u;
LongToChar(newLogicSecData[deviceId].LogUnlockStartCycNum,&outString[outStringLength]);/*逻辑延时解锁周期号*/ LongToChar(newLogicSecData[deviceId].LogUnlockStartCycNum,&outString[outStringLength]);/*逻辑延时解锁周期号*/
@@ -1388,53 +1268,53 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
ShortToChar(newLogicSecData[deviceId].wPLockBelongRouteId, &outString[outStringLength]);/*防护锁闭的进路编号*/ ShortToChar(newLogicSecData[deviceId].wPLockBelongRouteId, &outString[outStringLength]);/*防护锁闭的进路编号*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = pLogicSecDataCC[deviceId].cResReqOtherCIId;/*发送资源请求的其他联锁ID*/ outString[outStringLength++] = newLogicSecData[deviceId].cResReqOtherCIId;/*发送资源请求的其他联锁ID*/
ShortToChar(pLogicSecDataCC[deviceId].wResReqTrainId, &outString[outStringLength]);/*发送资源请求的列车ID*/ ShortToChar(newLogicSecData[deviceId].wResReqTrainId, &outString[outStringLength]);/*发送资源请求的列车ID*/
outStringLength += 2u; outStringLength += 2u;
ShortToChar(pLogicSecDataCC[deviceId].JumpLockTrainId, &outString[outStringLength]);/*申请或释放跳跃锁闭命令的列车ID*/ ShortToChar(newLogicSecData[deviceId].JumpLockTrainId, &outString[outStringLength]);/*申请或释放跳跃锁闭命令的列车ID*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = pLogicSecDataCC[deviceId].LogJumpLockState;/*逻辑区段跳跃锁闭状态 0x55 未锁闭,0xAA 锁闭*/ outString[outStringLength++] = newLogicSecData[deviceId].LogJumpLockState;/*逻辑区段跳跃锁闭状态 0x55 未锁闭,0xAA 锁闭*/
outString[outStringLength++] = pLogicSecDataCC[deviceId].LogJumpLockDelayUnlockFlag;/*逻辑区段跳跃锁闭延时解锁设置标志 0x55 未设置,0xaa 设置*/ outString[outStringLength++] = newLogicSecData[deviceId].LogJumpLockDelayUnlockFlag;/*逻辑区段跳跃锁闭延时解锁设置标志 0x55 未设置,0xaa 设置*/
LongToChar(pLogicSecDataCC[deviceId].LogSecJumpDelayUnlockStartCyc, &outString[outStringLength]);/*逻辑区段跳跃锁闭延时解锁起始周期号*/ LongToChar(newLogicSecData[deviceId].LogSecJumpDelayUnlockStartCyc, &outString[outStringLength]);/*逻辑区段跳跃锁闭延时解锁起始周期号*/
outStringLength += 4u; outStringLength += 4u;
outString[outStringLength++] = pLogicSecDataCC[deviceId].LogSecJumpLockPermFlag;/*逻辑区段跳跃锁闭允许标志 0x55 允许,0xaa 禁止*/ outString[outStringLength++] = newLogicSecData[deviceId].LogSecJumpLockPermFlag;/*逻辑区段跳跃锁闭允许标志 0x55 允许,0xaa 禁止*/
if (LOGIC_SECTION_RES_SUM_MAX < pLogicSecDataCC[deviceId].chTrainInfoSum) if (LOGIC_SECTION_RES_SUM_MAX < newLogicSecData[deviceId].chTrainInfoSum)
{ {
/* 数量不合法 */ /* 数量不合法 */
outString[outStringLength++] = 0u;/*逻辑区段资源数量*/ outString[outStringLength++] = 0u;/*逻辑区段资源数量*/
} }
else else
{ {
outString[outStringLength++] = pLogicSecDataCC[deviceId].chTrainInfoSum;/*逻辑区段资源数量*/ outString[outStringLength++] = newLogicSecData[deviceId].chTrainInfoSum;/*逻辑区段资源数量*/
for (jj = 0u; jj < pLogicSecDataCC[deviceId].chTrainInfoSum; jj++) for (jj = 0u; jj < newLogicSecData[deviceId].chTrainInfoSum; jj++)
{ {
ShortToChar(pLogicSecDataCC[deviceId].szTrainResData[jj].wTrainId, &outString[outStringLength]);/*列车ID*/ ShortToChar(newLogicSecData[deviceId].szTrainResData[jj].wTrainId, &outString[outStringLength]);/*列车ID*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = pLogicSecDataCC[deviceId].szTrainResData[jj].chTrainApplyState;/*列车申请状态*/ outString[outStringLength++] = newLogicSecData[deviceId].szTrainResData[jj].chTrainApplyState;/*列车申请状态*/
outString[outStringLength++] = pLogicSecDataCC[deviceId].szTrainResData[jj].chLogicResUsable;/*列车资源状态*/ outString[outStringLength++] = newLogicSecData[deviceId].szTrainResData[jj].chLogicResUsable;/*列车资源状态*/
outString[outStringLength++] = pLogicSecDataCC[deviceId].szTrainResData[jj].chLogicReturnState;/*折返逻辑区段标志*/ outString[outStringLength++] = newLogicSecData[deviceId].szTrainResData[jj].chLogicReturnState;/*折返逻辑区段标志*/
outString[outStringLength++] = pLogicSecDataCC[deviceId].szTrainResData[jj].chLogicUnlockState;/*列车申请状态*/ outString[outStringLength++] = newLogicSecData[deviceId].szTrainResData[jj].chLogicUnlockState;/*列车申请状态*/
LongToChar(pLogicSecDataCC[deviceId].szTrainResData[jj].dwRcvUnlockCmdCyc, &outString[outStringLength]);/*逻辑延时解锁周期号*/ LongToChar(newLogicSecData[deviceId].szTrainResData[jj].dwRcvUnlockCmdCyc, &outString[outStringLength]);/*逻辑延时解锁周期号*/
outStringLength += 4u; outStringLength += 4u;
} }
} }
LongToChar(pLogicSecDataCC[deviceId].LogErrlockStartCycNum, &outString[outStringLength]);/*逻辑区段延时设置故障锁闭起始周期号*/ LongToChar(newLogicSecData[deviceId].LogErrlockStartCycNum, &outString[outStringLength]);/*逻辑区段延时设置故障锁闭起始周期号*/
outStringLength += 4U; outStringLength += 4U;
outString[outStringLength++] = newLogicSecData[deviceId].chLogicProResUsable;/*逻辑区段防护锁闭资源可用状态*/ outString[outStringLength++] = newLogicSecData[deviceId].chLogicProResUsable;/*逻辑区段防护锁闭资源可用状态*/
outString[outStringLength++] = newLogicSecData[deviceId].chLogicSpksFLockState;/*逻辑区段被SPKS封锁状态*/ outString[outStringLength++] = newLogicSecData[deviceId].chLogicSpksFLockState;/*逻辑区段被SPKS封锁状态*/
if (LOGSEC_RELATE_ROUTE_SUM_MAX >= pLogicSecDataCC[deviceId].chLogSecLockBelLogRouteSum) if (LOGSEC_RELATE_ROUTE_SUM_MAX >= newLogicSecData[deviceId].chLogSecLockBelLogRouteSum)
{ {
outString[outStringLength++] = pLogicSecDataCC[deviceId].chLogSecLockBelLogRouteSum; /*逻辑区段锁闭所属逻辑进路数量*/ outString[outStringLength++] = newLogicSecData[deviceId].chLogSecLockBelLogRouteSum; /*逻辑区段锁闭所属逻辑进路数量*/
for (kk = 0U; kk < pLogicSecDataCC[deviceId].chLogSecLockBelLogRouteSum; kk++) for (kk = 0U; kk < newLogicSecData[deviceId].chLogSecLockBelLogRouteSum; kk++)
{ {
ShortToChar(pLogicSecDataCC[deviceId].szLogSecLockBelLogRouteData[kk].wLogSecLockBelLogRouteId, &outString[outStringLength]); /*逻辑区段锁闭所属逻辑进路ID*/ ShortToChar(newLogicSecData[deviceId].szLogSecLockBelLogRouteData[kk].wLogSecLockBelLogRouteId, &outString[outStringLength]); /*逻辑区段锁闭所属逻辑进路ID*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = pLogicSecDataCC[deviceId].szLogSecLockBelLogRouteData[kk].chLogSecLockBelLogRouteState; /*逻辑区段锁闭所属逻辑进路状态*/ outString[outStringLength++] = newLogicSecData[deviceId].szLogSecLockBelLogRouteData[kk].chLogSecLockBelLogRouteState; /*逻辑区段锁闭所属逻辑进路状态*/
outString[outStringLength++] = pLogicSecDataCC[deviceId].szLogSecLockBelLogRouteData[kk].wLogSecLockBelLogRouteDir; /*逻辑区段被逻辑进路锁闭的方向ID*/ outString[outStringLength++] = newLogicSecData[deviceId].szLogSecLockBelLogRouteData[kk].wLogSecLockBelLogRouteDir; /*逻辑区段被逻辑进路锁闭的方向ID*/
} }
} }
else else
@@ -1442,12 +1322,11 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = 0U; /*逻辑区段锁闭所属逻辑进路数量超限,不解析*/ outString[outStringLength++] = 0U; /*逻辑区段锁闭所属逻辑进路数量超限,不解析*/
} }
outString[outStringLength++] = pLogicSecDataCC[deviceId].LogSecLogLockState; /*逻辑区段逻辑锁闭状态*/ outString[outStringLength++] = newLogicSecData[deviceId].LogSecLogLockState; /*逻辑区段逻辑锁闭状态*/
outString[outStringLength++] = pLogicSecDataCC[deviceId].LogSecLogLockDir; /*逻辑区段逻辑锁闭方向*/ outString[outStringLength++] = newLogicSecData[deviceId].LogSecLogLockDir; /*逻辑区段逻辑锁闭方向*/
outString[outStringLength++] = newLogicSecData[deviceId].chLinShiXianSuSetSpeed; /*逻辑区段临时限速值*/ outString[outStringLength++] = newLogicSecData[deviceId].chLinShiXianSuSetSpeed; /*逻辑区段临时限速值*/
outString[outStringLength++] = pLogicSecDataCC[deviceId].chAblRelLogSecUsableFlag; /*ABL列车关联逻辑区段允许使用标志*/ outString[outStringLength++] = newLogicSecData[deviceId].chAblRelLogSecUsableFlag; /*ABL列车关联逻辑区段允许使用标志*/
outString[outStringLength++] = pLogicSecDataCC[deviceId].cRouteLeaveLogFlag; /*离去区段ABL列车检查标志*/ outString[outStringLength++] = newLogicSecData[deviceId].cRouteLeaveLogFlag; /*离去区段ABL列车检查标志*/
outString[outStringLength++] = newLogicSecData[deviceId].chLogSecEmergXianSu;/*逻辑区段紧急临时限速*/
} }
} }
else else
@@ -1529,46 +1408,18 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newWashMachineData[deviceId].PauseTrainWashRequestDrvState;/*暂停洗车请求驱动状态(动态字段:驱动)*/ outString[outStringLength++] = newWashMachineData[deviceId].PauseTrainWashRequestDrvState;/*暂停洗车请求驱动状态(动态字段:驱动)*/
outString[outStringLength++] = newWashMachineData[deviceId].PaseWashMachineRequesDrvtState;/*通过洗车机请求驱动状态(动态字段:驱动)*/ 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].WashMachineWorkModeDrvtState;/*洗车机洗车模式驱动状态(动态字段:驱动)*/
outString[outStringLength++] = newWashMachineData[deviceId].WashModeState;/*洗车机洗车模式采集状态*/ outString[outStringLength++] = newWashMachineData[deviceId].WashModeState;/*洗车机洗车模式采集状态*/
outString[outStringLength++] = newWashMachineData[deviceId].chSetWashWorkModeBack;/*设置洗车机工作模式反馈*/ outString[outStringLength++] = newWashMachineData[deviceId].chSetWashWorkModeBack;/*设置洗车机工作模式反馈*/
outString[outStringLength++] = newWashMachineData[deviceId].chDownWashAllowState;/*降级模式洗车同意状态*/
outString[outStringLength++] = newWashMachineData[deviceId].chDownWashAllowPassState;/*降级模式洗车同意通过状态*/
LongToChar(newWashMachineData[deviceId].WashWorkModeRelayDrvCycle, &outString[outStringLength]);/*洗车模式继电器驱动起始周期号*/ LongToChar(newWashMachineData[deviceId].WashWorkModeRelayDrvCycle, &outString[outStringLength]);/*洗车模式继电器驱动起始周期号*/
outStringLength += 4u; 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洗车同意反向通过粘连状态*/
} }
} }
@@ -1612,14 +1463,12 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
deviceId = GetPsdId(ii); deviceId = GetPsdId(ii);
comparaResult = DeviceCompara((UINT8*)(&Record_PsdDataStru[deviceId]), (UINT16)sizeof(PsdDataStruct), comparaResult = DeviceCompara((UINT8*)(&Record_PsdDataStru[deviceId]), (UINT16)sizeof(PsdDataStruct),
(UINT8*)(&newPsdData[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) && (0U == comparaResultCC)) if (0u==comparaResult)
{/*比较数据一致*/ {/*比较数据一致*/
} }
else if ((1U == comparaResult)|| (1U == comparaResultCC)) else if (1u==comparaResult )
{/*比较数据不一致*/ {/*比较数据不一致*/
if (CI_ERROR==Flag) if (CI_ERROR==Flag)
@@ -1634,8 +1483,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outStringLength += 2u; outStringLength += 2u;
ShortToChar(newPsdData[deviceId].psdEditGroupInfo,&outString[outStringLength]);/*PSD 编组信息*/ ShortToChar(newPsdData[deviceId].psdEditGroupInfo,&outString[outStringLength]);/*PSD 编组信息*/
outStringLength += 2u; 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].DoorButtonState;/*屏蔽门按钮状态*/
outString[outStringLength++] = newPsdData[deviceId].MutualLockRemoveState;/*屏蔽门互锁解除状态*/ outString[outStringLength++] = newPsdData[deviceId].MutualLockRemoveState;/*屏蔽门互锁解除状态*/
outString[outStringLength++] = newPsdData[deviceId].PsdDriveState;/*屏蔽门驱动状态*/ outString[outStringLength++] = newPsdData[deviceId].PsdDriveState;/*屏蔽门驱动状态*/
@@ -1645,12 +1492,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newPsdData[deviceId].PsdCmd;/*操作屏蔽门的命令*/ outString[outStringLength++] = newPsdData[deviceId].PsdCmd;/*操作屏蔽门的命令*/
LongToChar(newPsdData[deviceId].CmdSetCycle,&outString[outStringLength]);/*命令设置周期*/ LongToChar(newPsdData[deviceId].CmdSetCycle,&outString[outStringLength]);/*命令设置周期*/
outStringLength += 4u; 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状态设置周期*/ LongToChar(newPsdData[deviceId].CmdSetCyclePsc,&outString[outStringLength]);/*psc状态设置周期*/
outStringLength += 4u; outStringLength += 4u;
outString[outStringLength++] = newPsdData[deviceId].doorOpenButtonState;/*站台开门按钮状态*/ outString[outStringLength++] = newPsdData[deviceId].doorOpenButtonState;/*站台开门按钮状态*/
@@ -1662,8 +1503,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outStringLength += 4u; outStringLength += 4u;
outString[outStringLength++] = newPsdData[deviceId].StartDetectionState;/*启动探测状态*/ outString[outStringLength++] = newPsdData[deviceId].StartDetectionState;/*启动探测状态*/
outString[outStringLength++] = newPsdData[deviceId].StopDetectionState; /*停止探测状态*/ outString[outStringLength++] = newPsdData[deviceId].StopDetectionState; /*停止探测状态*/
LongToChar(newPsdData[deviceId].StopDetectionCycNum,&outString[outStringLength]);/*停止探测周期*/
outStringLength += 4u;
outString[outStringLength++] = newPsdData[deviceId].VOBCDoorState; /*VOBC车门状态*/ outString[outStringLength++] = newPsdData[deviceId].VOBCDoorState; /*VOBC车门状态*/
LongToChar(newPsdData[deviceId].PCBPressCycNum,&outString[outStringLength]);/*PCB按下起始周期*/ LongToChar(newPsdData[deviceId].PCBPressCycNum,&outString[outStringLength]);/*PCB按下起始周期*/
outStringLength += 4u; outStringLength += 4u;
@@ -1689,19 +1528,8 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newPsdData[deviceId].chVideoQkDriveState; /*视频清客驱动状态*/ outString[outStringLength++] = newPsdData[deviceId].chVideoQkDriveState; /*视频清客驱动状态*/
ShortToChar(newPsdData[deviceId].wVideoQkRelateVobcId, &outString[outStringLength]);/*视频清客对应列车ID*/ ShortToChar(newPsdData[deviceId].wVideoQkRelateVobcId, &outString[outStringLength]);/*视频清客对应列车ID*/
outStringLength += 2u; 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 else
{ {
@@ -1744,14 +1572,12 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
deviceId = GetGaragedoorId(ii); deviceId = GetGaragedoorId(ii);
comparaResult = DeviceCompara((UINT8*)(&Record_GaragedoorDataStru[deviceId]), (UINT16)sizeof(GaragedoorDataStruct), comparaResult = DeviceCompara((UINT8*)(&Record_GaragedoorDataStru[deviceId]), (UINT16)sizeof(GaragedoorDataStruct),
(UINT8*)(&newGaragedoorData[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) && (0U == comparaResultCC)) if (0u==comparaResult)
{/*比较数据一致*/ {/*比较数据一致*/
} }
else if ((1U == comparaResult) || (1U == comparaResultCC)) else if (1u==comparaResult )
{/*比较数据不一致*/ {/*比较数据不一致*/
if (CI_ERROR==Flag) if (CI_ERROR==Flag)
@@ -1766,7 +1592,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorState; /*车库门状态 (动态字段)*/ outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorState; /*车库门状态 (动态字段)*/
outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorAllowCloseFlag; /*车库门允许关门标志ZC*/ outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorAllowCloseFlag; /*车库门允许关门标志ZC*/
outString[outStringLength++] = pGaragedoorDataCC[deviceId].GDAllowCloseFlagIVOC; /*车库门允许关门标志IVOC*/ outString[outStringLength++] = newGaragedoorData[deviceId].GDAllowCloseFlagIVOC; /*车库门允许关门标志IVOC*/
outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorModeState; /*车库门模式状态*/ outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorModeState; /*车库门模式状态*/
outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorFaultState; /*车库门故障状态*/ outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorFaultState; /*车库门故障状态*/
outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorPangLuState; /*车库门旁路状态*/; outString[outStringLength++] = newGaragedoorData[deviceId].GaragedoorPangLuState; /*车库门旁路状态*/;
@@ -1774,7 +1600,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = newGaragedoorData[deviceId].cmdProcessState; /* 命令处理状态 */ outString[outStringLength++] = newGaragedoorData[deviceId].cmdProcessState; /* 命令处理状态 */
LongToChar(newGaragedoorData[deviceId].waiteZCResponseStartCycNum,&outString[outStringLength]);/* 等待ZC反馈开始时间 */ LongToChar(newGaragedoorData[deviceId].waiteZCResponseStartCycNum,&outString[outStringLength]);/* 等待ZC反馈开始时间 */
outStringLength += 4u; outStringLength += 4u;
LongToChar(pGaragedoorDataCC[deviceId].waiteIVOCResponseStartCycNum, &outString[outStringLength]);/* 等待IVOC反馈开始时间 */ LongToChar(newGaragedoorData[deviceId].waiteIVOCResponseStartCycNum, &outString[outStringLength]);/* 等待IVOC反馈开始时间 */
outStringLength += 4u; outStringLength += 4u;
LongToChar(newGaragedoorData[deviceId].GaragedoorOpenStartCycNum,&outString[outStringLength]);/* 车库门打开开始周期 */ LongToChar(newGaragedoorData[deviceId].GaragedoorOpenStartCycNum,&outString[outStringLength]);/* 车库门打开开始周期 */
outStringLength += 4u; outStringLength += 4u;
@@ -1823,14 +1649,12 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
deviceId = GetFloodGateId(ii); deviceId = GetFloodGateId(ii);
comparaResult = DeviceCompara((UINT8*)(&Record_FloodGateDataStru[deviceId]), (UINT16)sizeof(FloodGateDataStruct), comparaResult = DeviceCompara((UINT8*)(&Record_FloodGateDataStru[deviceId]), (UINT16)sizeof(FloodGateDataStruct),
(UINT8*)(&pNewFloodGateData[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) && (0U == comparaResultCC)) if (0u==comparaResult )
{/*比较数据一致*/ {/*比较数据一致*/
} }
else if ((1U == comparaResult) || (1U == comparaResultCC)) else if (1u==comparaResult )
{/*比较数据不一致*/ {/*比较数据不一致*/
if (CI_ERROR==Flag ) if (CI_ERROR==Flag )
@@ -1850,19 +1674,19 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength++] = pNewFloodGateData[deviceId].CurAgreeCloseStateIn; /*当前同意关门采集状态*/; outString[outStringLength++] = pNewFloodGateData[deviceId].CurAgreeCloseStateIn; /*当前同意关门采集状态*/;
outString[outStringLength++] = pNewFloodGateData[deviceId].CurAgreeCloseStateOut; /* 当前同意关门输出状态(动态字段)*/ outString[outStringLength++] = pNewFloodGateData[deviceId].CurAgreeCloseStateOut; /* 当前同意关门输出状态(动态字段)*/
outString[outStringLength++] = pNewFloodGateDataCC[deviceId].FloodGateCloseApplyIvocSum; /*防淹门关门申请列车数量*/ outString[outStringLength++] = pNewFloodGateData[deviceId].FloodGateCloseApplyIvocSum; /*防淹门关门申请列车数量*/
for (jj = 0u; jj < pNewFloodGateDataCC[deviceId].FloodGateCloseApplyIvocSum; jj++) for (jj = 0u; jj < pNewFloodGateData[deviceId].FloodGateCloseApplyIvocSum; jj++)
{ {
ShortToChar(pNewFloodGateDataCC[deviceId].FloodGateCloseApplyIvocId[jj], &outString[outStringLength]);/*防淹门关门申请列车ID*/ ShortToChar(pNewFloodGateData[deviceId].FloodGateCloseApplyIvocId[jj], &outString[outStringLength]);/*防淹门关门申请列车ID*/
outStringLength += 2u; outStringLength += 2u;
} }
outString[outStringLength++] = pNewFloodGateDataCC[deviceId].FloodGateCloseAnsIvocSum; /*防淹门关门列车回复列车数量*/ outString[outStringLength++] = pNewFloodGateData[deviceId].FloodGateCloseAnsIvocSum; /*防淹门关门列车回复列车数量*/
for (jj = 0u; jj < pNewFloodGateDataCC[deviceId].FloodGateCloseAnsIvocSum; jj++) for (jj = 0u; jj < pNewFloodGateData[deviceId].FloodGateCloseAnsIvocSum; jj++)
{ {
ShortToChar(pNewFloodGateDataCC[deviceId].FloodGateCloseFromIvocStru[jj].wTrainId, &outString[outStringLength]);/*列车同意防淹门关门请求列车ID*/ ShortToChar(pNewFloodGateData[deviceId].FloodGateCloseFromIvocStru[jj].wTrainId, &outString[outStringLength]);/*列车同意防淹门关门请求列车ID*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = pNewFloodGateDataCC[deviceId].FloodGateCloseFromIvocStru[jj].wFloodGateCloseIvocFlag; /*列车同意防淹门关门请求状态*/ outString[outStringLength++] = pNewFloodGateData[deviceId].FloodGateCloseFromIvocStru[jj].wFloodGateCloseIvocFlag; /*列车同意防淹门关门请求状态*/
} }
} }
@@ -1906,14 +1730,12 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
deviceId = GetOverlapId(ii); deviceId = GetOverlapId(ii);
comparaResult = DeviceCompara((UINT8*)(&Record_OverlapDataStru[deviceId]), (UINT16)sizeof(OverlapDataStruct), comparaResult = DeviceCompara((UINT8*)(&Record_OverlapDataStru[deviceId]), (UINT16)sizeof(OverlapDataStruct),
(UINT8*)(&newOverlapData[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) && (0U == comparaResultCC)) if (0u==comparaResult)
{/*比较数据一致*/ {/*比较数据一致*/
} }
else if ((1U == comparaResult) || (1U == comparaResultCC)) else if (1u==comparaResult )
{/*比较数据不一致*/ {/*比较数据不一致*/
if (CI_ERROR != Flag) if (CI_ERROR != Flag)
@@ -1928,10 +1750,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outStringLength += 4u; outStringLength += 4u;
LongToChar(newOverlapData[deviceId].XuanPaiStartCycNum,&outString[outStringLength]);/*保护区段选排开始周期号*/ LongToChar(newOverlapData[deviceId].XuanPaiStartCycNum,&outString[outStringLength]);/*保护区段选排开始周期号*/
outStringLength += 4u; 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].OverlapUnlockApplyFlag;/*向ZC申请解锁保护区段解锁标志*/
outString[outStringLength++] = newOverlapData[deviceId].OverlapCanLaborUnlockFlag;/*保护区段可以人工解锁标志*/ outString[outStringLength++] = newOverlapData[deviceId].OverlapCanLaborUnlockFlag;/*保护区段可以人工解锁标志*/
outString[outStringLength++] = newOverlapData[deviceId].OverlapLaborUnlockSetState;/*保护区段人工解锁设置状态*/ outString[outStringLength++] = newOverlapData[deviceId].OverlapLaborUnlockSetState;/*保护区段人工解锁设置状态*/
@@ -1948,10 +1766,10 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outStringLength += 2U; outStringLength += 2U;
outString[outStringLength++] = newOverlapData[deviceId].laborLockOverlapCmd;/*人工锁闭保护区段命令标志*/ outString[outStringLength++] = newOverlapData[deviceId].laborLockOverlapCmd;/*人工锁闭保护区段命令标志*/
ShortToChar(pOverlapDataCC[deviceId].wOverlapUnlockApplyTrainId, &outString[outStringLength]);/*申请解锁保护区段的列车ID*/ ShortToChar(newOverlapData[deviceId].wOverlapUnlockApplyTrainId, &outString[outStringLength]);/*申请解锁保护区段的列车ID*/
outStringLength += 2U; outStringLength += 2U;
LongToChar(pOverlapDataCC[deviceId].dwReqIvocUnLockStartCycNum, &outString[outStringLength]);/*向车申请解锁保护区段起始周期号*/ LongToChar(newOverlapData[deviceId].dwReqIvocUnLockStartCycNum, &outString[outStringLength]);/*向车申请解锁保护区段起始周期号*/
outStringLength += 4U; outStringLength += 4U;
outString[outStringLength++] = newOverlapData[deviceId].cProSwitchCheckResultFlag;/*跨控区防护道岔检查结果标志(0xFF:默认值,0x55:失败,0xAA:成功)*/ outString[outStringLength++] = newOverlapData[deviceId].cProSwitchCheckResultFlag;/*跨控区防护道岔检查结果标志(0xFF:默认值,0x55:失败,0xAA:成功)*/
@@ -2026,14 +1844,11 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
comparaResult = DeviceCompara((UINT8*)(&Record_AxisSecDataStru[deviceId]), (UINT16)sizeof(AxisSectionDataStruct), comparaResult = DeviceCompara((UINT8*)(&Record_AxisSecDataStru[deviceId]), (UINT16)sizeof(AxisSectionDataStruct),
(UINT8*)(&newAxisSecData[deviceId]), (UINT16)sizeof(AxisSectionDataStruct)); (UINT8*)(&newAxisSecData[deviceId]), (UINT16)sizeof(AxisSectionDataStruct));
comparaResultCC = DeviceCompara((UINT8*)(&Record_AxisSecDataStruCC[deviceId]), (UINT16)sizeof(AxisSectionDataStructCC), if (0u==comparaResult)
(UINT8*)(&pAxisSecDataCC[deviceId]), (UINT16)sizeof(AxisSectionDataStructCC));
if ((0u==comparaResult) && (0U == comparaResultCC))
{/*比较数据一致*/ {/*比较数据一致*/
} }
else if ((1U==comparaResult ) || (1U == comparaResultCC)) else if (1u==comparaResult )
{/*比较数据不一致*/ {/*比较数据不一致*/
if (CI_ERROR != Flag) if (CI_ERROR != Flag)
@@ -2043,19 +1858,17 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
ShortToChar(newAxisSecData[deviceId].AxisSectionId,&outString[outStringLength]);/*计轴区段ID*/ ShortToChar(newAxisSecData[deviceId].AxisSectionId,&outString[outStringLength]);/*计轴区段ID*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = newAxisSecData[deviceId].AxisArbState;/*计轴ARB状态 (动态字段)*/ outString[outStringLength++] = newAxisSecData[deviceId].AxisArbState;/*计轴ARB状态 (动态字段)*/
outString[outStringLength] = pAxisSecDataCC[deviceId].AxisArbState;/*计轴ARB状态CC(0x55-未ARB0xaa-ARB)*/
outStringLength++;
outString[outStringLength++] = newAxisSecData[deviceId].AxisJumpLockApplyFlag;/*跳跃锁闭申请标志*/ outString[outStringLength++] = newAxisSecData[deviceId].AxisJumpLockApplyFlag;/*跳跃锁闭申请标志*/
outString[outStringLength++] = newAxisSecData[deviceId].AxisJumpLockCancelApplyFlag;/*跳跃锁闭取消申请标志*/ outString[outStringLength++] = newAxisSecData[deviceId].AxisJumpLockCancelApplyFlag;/*跳跃锁闭取消申请标志*/
LongToChar(newAxisSecData[deviceId].AxisJumpLockApplyCylce,&outString[outStringLength]);/*跳跃锁闭申请周期号*/ LongToChar(newAxisSecData[deviceId].AxisJumpLockApplyCylce,&outString[outStringLength]);/*跳跃锁闭申请周期号*/
outStringLength += 4u; outStringLength += 4u;
outString[outStringLength++] = newAxisSecData[deviceId].AxisJumpLockState;/*跳跃锁闭状态*/ outString[outStringLength++] = newAxisSecData[deviceId].AxisJumpLockState;/*跳跃锁闭状态*/
outString[outStringLength++] = pAxisSecDataCC[deviceId].AxisOccStatus;/*计轴占用状态*/ outString[outStringLength++] = newAxisSecData[deviceId].AxisOccStatus;/*计轴占用状态*/
LongToChar(pAxisSecDataCC[deviceId].dwAxisOccCycNum, &outString[outStringLength]);/*计轴占用起始周期*/ LongToChar(newAxisSecData[deviceId].dwAxisOccCycNum, &outString[outStringLength]);/*计轴占用起始周期*/
outStringLength += 4u; outStringLength += 4u;
LongToChar(pAxisSecDataCC[deviceId].dwUtOccupyCycNum, &outString[outStringLength]);/*计轴最近坏车占用周期*/ LongToChar(newAxisSecData[deviceId].dwUtOccupyCycNum, &outString[outStringLength]);/*计轴最近坏车占用周期*/
outStringLength += 4u; outStringLength += 4u;
ShortToChar(pAxisSecDataCC[deviceId].wPosMonitorTrainId, &outString[outStringLength]); /*监督有效的列车ID*/ ShortToChar(newAxisSecData[deviceId].wPosMonitorTrainId, &outString[outStringLength]); /*监督有效的列车ID*/
outStringLength += 2u; outStringLength += 2u;
} }
} }
@@ -2184,8 +1997,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
LongToChar(pNewSpksData[deviceId].flockStartNum, &outString[outStringLength]); LongToChar(pNewSpksData[deviceId].flockStartNum, &outString[outStringLength]);
outStringLength += 4U; outStringLength += 4U;
outString[outStringLength++] = pNewSpksData[deviceId].TotalSpksDriveOutDis; outString[outStringLength++] = pNewSpksData[deviceId].TotalSpksDriveOutDis;
LongToChar(pNewSpksData[deviceId].dwSpksBtnPressCycNum, &outString[outStringLength]); /*SPKS按钮按下起始周期号*/
outStringLength += 4U;
} }
} }
else else
@@ -2203,7 +2015,7 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
else else
{ {
#ifdef PLATFORM_2OO2 #ifdef PLATFORM_2OO2
debug_infor_printf((const)"\nSpksData:%d\nspksId(2)-status-cutStatus-flockStartNum(4)-TotalSpksDriveOutDis:%d", (UINT16)sizeof(SpksDataStruct), outStringLength); debug_infor_printf((const)"\nSpksData:%d\spksId(2)-status-cutStatus-flockStartNum(4)-TotalSpksDriveOutDis:%d", (UINT16)sizeof(SpksDataStruct), outStringLength);
debug_out_array(0xAA, outString, outStringLength); debug_out_array(0xAA, outString, outStringLength);
#endif #endif
@@ -2303,9 +2115,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
LongToChar(pNewTrainInfoData[deviceId].dwDelayTime, &outString[outStringLength]);/*消息延迟时间*/ LongToChar(pNewTrainInfoData[deviceId].dwDelayTime, &outString[outStringLength]);/*消息延迟时间*/
outStringLength += 4u; outStringLength += 4u;
LongToChar(pNewTrainInfoData[deviceId].dwStartFlyCycNum, &outString[outStringLength]);/*列车飞车起始周期号*/
outStringLength += 4U;
ShortToChar(pNewTrainInfoData[deviceId].wGroupOtherTrainId, &outString[outStringLength]);/* 编组另一列车ID*/ ShortToChar(pNewTrainInfoData[deviceId].wGroupOtherTrainId, &outString[outStringLength]);/* 编组另一列车ID*/
outStringLength += 2u; outStringLength += 2u;
@@ -2442,9 +2251,6 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
outString[outStringLength] = pNewTrainInfoData[deviceId].chTrainReportState; /*列车汇报状态*/ outString[outStringLength] = pNewTrainInfoData[deviceId].chTrainReportState; /*列车汇报状态*/
outStringLength++; outStringLength++;
outString[outStringLength++] = pNewTrainInfoData[deviceId].chEaCmdState; /*区间疏散命令状态:0x55 有效;0xAA 无效*/ outString[outStringLength++] = pNewTrainInfoData[deviceId].chEaCmdState; /*区间疏散命令状态:0x55 有效;0xAA 无效*/
outString[outStringLength++] = pNewTrainInfoData[deviceId].chtrainControlMode;/*当前控车模式*/
outString[outStringLength++] = pNewTrainInfoData[deviceId].chTrainPostionMode; /*列车位置模式,0无位置,1使用IVOC位置,2使用VOBC位置*/
} }
@@ -2863,19 +2669,17 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
break; break;
} }
pNonAutoReturnData = GetNonReturnData(); pNonAutoReturnData = GetNonReturnData();
pNonReturnDataStruCC = GetNonReturnDataCC();
/*比较数据*/ /*比较数据*/
deviceId = GetNonReturnId(ii); deviceId = GetNonReturnId(ii);
comparaResult = DeviceCompara((UINT8*)(&Record_NonReturnDataStru[deviceId]), (UINT16)sizeof(NonAutoReturnDataStruct), comparaResult = DeviceCompara((UINT8*)(&Record_NonReturnDataStru[deviceId]), (UINT16)sizeof(NonAutoReturnDataStruct),
(UINT8*)(&pNonAutoReturnData[deviceId]), (UINT16)sizeof(NonAutoReturnDataStruct)); (UINT8*)(&pNonAutoReturnData[deviceId]), (UINT16)sizeof(NonAutoReturnDataStruct));
comparaResultCC = DeviceCompara((UINT8*)(&Record_NonReturnDataStruCC[deviceId]), (UINT16)sizeof(NonAutoReturnDataStructCC), if (0u == comparaResult)
(UINT8*)(&pNonReturnDataStruCC[deviceId]), (UINT16)sizeof(NonAutoReturnDataStructCC));
if ((0U == comparaResult) && (0U == comparaResultCC))
{/*比较数据一致*/ {/*比较数据一致*/
} }
else if ((1U == comparaResult) || (1U == comparaResultCC)) else if (1u == comparaResult)
{/*比较数据不一致*/ {/*比较数据不一致*/
if (CI_ERROR == Flag) if (CI_ERROR == Flag)
@@ -2886,12 +2690,10 @@ UINT8 RecordDeviceDataLog(UINT8 Flag)
{ {
/**************打印数据信息****************/ /**************打印数据信息****************/
outString[outStringLength++] = pNonAutoReturnData[deviceId].IndicatorDevID; /*指示灯设备ID*/ outString[outStringLength++] = pNonAutoReturnData[deviceId].IndicatorDevID; /*指示灯设备ID*/
ShortToChar(pNonReturnDataStruCC[deviceId].cmdSetTrainId, &outString[outStringLength]);/*命令列车ID*/ ShortToChar(pNonAutoReturnData[deviceId].cmdSetTrainId, &outString[outStringLength]);/*命令列车ID*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength] = pNonAutoReturnData[deviceId].VobcToCIAutoRtnIndicFlashState; /*车载给联锁的无人折返指示灯闪灯状态*/ outString[outStringLength++] = pNonAutoReturnData[deviceId].VobcToCIAutoRtnIndicFlashState; /*车载给联锁的无人折返指示灯闪灯状态*/
outStringLength++; outString[outStringLength++] = pNonAutoReturnData[deviceId].VobcToCIAutoRtnIndicSteadyState; /*车载给联锁的无人折返指示灯稳灯状态*/
outString[outStringLength] = pNonAutoReturnData[deviceId].VobcToCIAutoRtnIndicSteadyState; /*车载给联锁的无人折返指示灯稳灯状态*/
outStringLength++;
ShortToChar(pNonAutoReturnData[deviceId].RtnRelayAdhesionState.AdhesionRealyId, &outString[outStringLength]);/*粘连继电器ID*/ ShortToChar(pNonAutoReturnData[deviceId].RtnRelayAdhesionState.AdhesionRealyId, &outString[outStringLength]);/*粘连继电器ID*/
outStringLength += 2u; outStringLength += 2u;
outString[outStringLength++] = pNonAutoReturnData[deviceId].RtnRelayAdhesionState.AdhesionState; /*继电器粘连状态*/ outString[outStringLength++] = pNonAutoReturnData[deviceId].RtnRelayAdhesionState.AdhesionState; /*继电器粘连状态*/
@@ -3083,7 +2885,7 @@ UINT8 DeviceCompara(UINT8* deviceStruAddr1, const UINT16 deviceStruLen1,
void GetVirCIKeyDataStru(void) void GetVirCIKeyDataStru(void)
{ {
UINT8 ii = 0u; UINT8 ii = 0u;
UINT8 jj = 0U;
for(ii=0u;ii<g_VirtualCIStructData.virtualCiNum;ii++) for(ii=0u;ii<g_VirtualCIStructData.virtualCiNum;ii++)
{ {
@@ -3102,6 +2904,12 @@ void GetVirCIKeyDataStru(void)
newVirCIKeyDataStru[ii].ZfwValidCycNum = g_VirtualCIStructData.virtualCi[ii].ZfwValidCycNum; 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; newVirCIKeyDataStru[ii].ZfwjHunXianFLag = g_VirtualCIStructData.virtualCi[ii].ZfwjHunXianFLag;
} }
} }
@@ -16,7 +16,6 @@
#include "../Section/LogicSectionDataManage.h" #include "../Section/LogicSectionDataManage.h"
#include "LogicalRouteDataManage.h" #include "LogicalRouteDataManage.h"
#include "../LogicProcess/LogicalRouteLogicCheck.h" #include "../LogicProcess/LogicalRouteLogicCheck.h"
#include "../Overlap/OverlapDataManage.h"
/* C01_进路监督级别确认 */ /* C01_进路监督级别确认 */
/* /*
@@ -565,8 +564,6 @@ void SetRouteRelProSwitchLockSta(const UINT16 routeId, const UINT8 lockCommand)
UINT16 protectSwitchId = 0u; /*防护道岔ID*/ UINT16 protectSwitchId = 0u; /*防护道岔ID*/
UINT8 routeProtectSwitchSum = 0u; /*防护道岔数目*/ UINT8 routeProtectSwitchSum = 0u; /*防护道岔数目*/
RouteProtectSwitchStruct* routeProtectSwitchStru = NULL; /*防护道岔数据*/ RouteProtectSwitchStruct* routeProtectSwitchStru = NULL; /*防护道岔数据*/
UINT8 cSwitchCurPos = 0U; /*道岔当前位置*/
UINT8 cFuncRet = CI_ERROR;
routeProtectSwitchSum = GetRouteRelatedProtectSwitchSum(routeId); /*获取防护道岔数目*/ routeProtectSwitchSum = GetRouteRelatedProtectSwitchSum(routeId); /*获取防护道岔数目*/
routeProtectSwitchStru = GetRouteRelatedProtSwitchData(routeId); /*获取防护道岔数据*/ routeProtectSwitchStru = GetRouteRelatedProtSwitchData(routeId); /*获取防护道岔数据*/
@@ -589,30 +586,20 @@ void SetRouteRelProSwitchLockSta(const UINT16 routeId, const UINT8 lockCommand)
if (CI_SUCCESS == retVal) if (CI_SUCCESS == retVal)
{ {
for (ii = 0u; ii < routeProtectSwitchSum; ii++) for (ii= 0u; ii < routeProtectSwitchSum; ii++)
{ {
protectSwitchId = routeProtectSwitchStru[ii].ProtectSwitchId; protectSwitchId = routeProtectSwitchStru[ii].ProtectSwitchId;
cSwitchCurPos = GetSwitchCurPosition(protectSwitchId); SetSwitchLockStatus(SWITCH_PLOCKTYPE_ROUTE,routeId,protectSwitchId, lockCommand); /*设置道岔防护锁闭状态*/
cFuncRet = checkSwtLastValDrvPosStayorNot(protectSwitchId, routeProtectSwitchStru[ii].ProtectPosition); /*RC 13.0.0 修:不检查防护道岔中双动道岔另一端*/
if ((SWITCH_LOCK_PROTECT_CANCEL == lockCommand)
|| ((cSwitchCurPos == routeProtectSwitchStru[ii].ProtectPosition) && (CI_SUCCESS == cFuncRet)))
{
SetSwitchLockStatus(SWITCH_PLOCKTYPE_ROUTE, routeId, protectSwitchId, lockCommand); /*设置道岔防护锁闭状态*/
/*RC 13.0.0 修:不检查防护道岔中双动道岔另一端*/
#if 0 #if 0
if (SWITCH_TYPE_DOUBLE == GetSwitchType(protectSwitchId)) if (SWITCH_TYPE_DOUBLE == GetSwitchType(protectSwitchId))
{ /*双动道岔*/ { /*双动道岔*/
SetSwitchLockStatus(SWITCH_PLOCKTYPE_ROUTE, routeId, GetDSwitchOtherId(protectSwitchId), lockCommand); /*设置道岔防护锁闭状态*/ SetSwitchLockStatus(SWITCH_PLOCKTYPE_ROUTE,routeId,GetDSwitchOtherId(protectSwitchId), lockCommand); /*设置道岔防护锁闭状态*/
}
else
{
}
#endif
} }
else else
{ {
/*防护道岔不在防护位置或防护道岔存在反向驱动,不设置防护锁闭*/
} }
#endif
} }
} }
else else
@@ -802,6 +789,7 @@ void PhySecFaultUnlockLogicManage(const UINT16 phySectionId,const UINT8 virCIid)
UINT8 goExec = CI_ERROR; UINT8 goExec = CI_ERROR;
UINT8 autoTriggerType = 0U; UINT8 autoTriggerType = 0U;
UINT8 belongvirCIid = 0U; UINT8 belongvirCIid = 0U;
UINT8 includeVirFlag = GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG);
UINT8 chPhyIncLogSum = 0U; /*包含逻辑区段数目*/ UINT8 chPhyIncLogSum = 0U; /*包含逻辑区段数目*/
UINT16* pPhyIncLogId = NULL; /*物理区段包含逻辑区段ID数组*/ UINT16* pPhyIncLogId = NULL; /*物理区段包含逻辑区段ID数组*/
UINT16 wLogLockBelongRouteId = 0U; /*逻辑区段锁闭所属进路ID*/ UINT16 wLogLockBelongRouteId = 0U; /*逻辑区段锁闭所属进路ID*/
@@ -1038,13 +1026,21 @@ void PhySecFaultUnlockLogicManage(const UINT16 phySectionId,const UINT8 virCIid)
} }
} }
else if((phyBelongCi == localCiId)&&(TRANSMIT_STATE_GOOD == commState)) else if((phyBelongCi == localCiId)&&(TRANSMIT_STATE_GOOD == commState))
{ {
belongvirCIid = GetPhySecBelongVirCiId(phySectionId); if(FUNC_SWITCH_ON == includeVirFlag)
if((belongvirCIid == virCIid)&&(0u != virCIid))/*区故解可以由相邻虚拟联锁现地操作,不相邻不能操作*/ {
belongvirCIid = GetPhySecBelongVirCiId(phySectionId);
if((belongvirCIid == virCIid)&&(0u != virCIid))/*区故解可以由相邻虚拟联锁现地操作,不相邻不能操作*/
{
/*进路属于相邻联锁,且区段属于本联锁时,传递区段故障解锁命令 */
AddCiSendToCiCmdInfo(CI_CMD_SECTION_FAULT_UNLOCK,phySectionId,0u,routeBelongCi);
}
}
else
{ {
/*进路属于相邻联锁,且区段属于本联锁时,传递区段故障解锁命令 */ /*进路属于相邻联锁,且区段属于本联锁时,传递区段故障解锁命令 */
AddCiSendToCiCmdInfo(CI_CMD_SECTION_FAULT_UNLOCK,phySectionId,0u,routeBelongCi); AddCiSendToCiCmdInfo(CI_CMD_SECTION_FAULT_UNLOCK,phySectionId,0u,routeBelongCi);
} }
} }
else else
{ {
@@ -1383,13 +1379,6 @@ void RouteRecoverOpenProc(const UINT16 routeId)
UINT8 recoverState = ROUTE_RECOVER_STA_STAY;/*当前恢复重开状态*/ UINT8 recoverState = ROUTE_RECOVER_STA_STAY;/*当前恢复重开状态*/
UINT8 errType = CI_ERROR; UINT8 errType = CI_ERROR;
UINT8 localCiType = GetLocalCiType();/*获得联锁类型*/ UINT8 localCiType = GetLocalCiType();/*获得联锁类型*/
UINT16 wStartSignalId = 0U; /*进路始端信号机ID*/
UINT8 chVirCiId = 0U;/*虚拟联锁*/
UINT8 chLocalVirCiType = 0U;
chVirCiId = GetRouteBelongVirCiId(routeId);
chLocalVirCiType = GetLocalVirCiType(chVirCiId);
routeState = GetRouteState(routeId); routeState = GetRouteState(routeId);
recoverState = GetRouteRecoverOpenFlag(routeId); recoverState = GetRouteRecoverOpenFlag(routeId);
@@ -1398,7 +1387,7 @@ void RouteRecoverOpenProc(const UINT16 routeId)
{ {
if (ROUTE_RECOVER_STA_WAIT == recoverState) if (ROUTE_RECOVER_STA_WAIT == recoverState)
{ {
if ((CI_TYPE_ZX == chLocalVirCiType) || (CI_TYPE_SCX == chLocalVirCiType)) if ((CI_TYPE_ZX == localCiType) || (CI_TYPE_SCX == localCiType))
{ {
errType = RecoverOpenRouteCheck(routeId); errType = RecoverOpenRouteCheck(routeId);
} }
@@ -1407,7 +1396,6 @@ void RouteRecoverOpenProc(const UINT16 routeId)
errType = RecoverOpenRouteCheckCLD(routeId); errType = RecoverOpenRouteCheckCLD(routeId);
} }
wStartSignalId = GetRouteStartSignalId(routeId); /*获取进路始端信号机ID*/
if (errType == CI_SUCCESS) if (errType == CI_SUCCESS)
{ {
SetRouteOpenSigStartCycNum(routeId, Get2oo2CurCycleNum()); SetRouteOpenSigStartCycNum(routeId, Get2oo2CurCycleNum());
@@ -1422,9 +1410,6 @@ void RouteRecoverOpenProc(const UINT16 routeId)
else else
{ {
SetRouteRecoverState(routeId, ROUTE_RECOVER_STA_STAY);/*一旦出现PSD、SPKS、扣车以外的条件不满足,将进路恢复状态设置为不可恢复*/ SetRouteRecoverState(routeId, ROUTE_RECOVER_STA_STAY);/*一旦出现PSD、SPKS、扣车以外的条件不满足,将进路恢复状态设置为不可恢复*/
/*开放条件检查失败,设置对应始端信号机扣车旁路按钮无效*/
SetDetCutBtnState(wStartSignalId, SIGNAL_DETAIN_CUT_VALID_NO);
} }
} }
} }
@@ -1443,6 +1428,7 @@ void SetAtsExpectLockOverlapIdProc(const UINT16 expLkOverlapId,const UINT8 lockT
UINT16 ii = 0u; UINT16 ii = 0u;
UINT16 routeOverlapSum = 0u; /*进路保护区段数目*/ UINT16 routeOverlapSum = 0u; /*进路保护区段数目*/
UINT16 routeId = 0u; /*进路ID*/ UINT16 routeId = 0u; /*进路ID*/
UINT16 routedLockOverlapId = 0u; /*进路锁闭过OverlapId*/
UINT8 retVal = CI_SUCCESS; /*执行检查*/ UINT8 retVal = CI_SUCCESS; /*执行检查*/
UINT8 routeState = 0u; /*进路状态*/ UINT8 routeState = 0u; /*进路状态*/
UINT16 preOverlepId = 0u; UINT16 preOverlepId = 0u;
@@ -1452,9 +1438,9 @@ void SetAtsExpectLockOverlapIdProc(const UINT16 expLkOverlapId,const UINT8 lockT
UINT8 flag = 0u; UINT8 flag = 0u;
UINT8 belongCiId = 0u; UINT8 belongCiId = 0u;
UINT8 localCiId = GetSystemParaLocalCiId(); /*获取本机联锁ID*/ UINT8 localCiId = GetSystemParaLocalCiId(); /*获取本机联锁ID*/
UINT8 includeVirFlag = GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG);
UINT8 virCIid = 0u; UINT8 virCIid = 0u;
UINT8 ciCtrModeFlag = 0u; UINT8 ciCtrModeFlag = 0u;
UINT32 dwCurCycNum = Get2oo2CurCycleNum();
if ((0u == expLkOverlapId) || (UINT16_MAX == expLkOverlapId)) if ((0u == expLkOverlapId) || (UINT16_MAX == expLkOverlapId))
{/*判断输入参数有效性*/ {/*判断输入参数有效性*/
@@ -1495,9 +1481,9 @@ void SetAtsExpectLockOverlapIdProc(const UINT16 expLkOverlapId,const UINT8 lockT
if (routeOverlapSum >= 1u) if (routeOverlapSum >= 1u)
{/*只有当进路的保护区段数目大于等于1个时,ATS或现地才发送期望锁闭保护区段ID*/ {/*只有当进路的保护区段数目大于等于1个时,ATS或现地才发送期望锁闭保护区段ID*/
/*输入参数保护区段ID是否属于当前进路 且进路保护区段未锁闭过*/ /*输入参数保护区段ID是否属于当前进路 且进路保护区段未锁闭过*/
if (1u == checkExpOverlapBelongToRtOrNot(routeId, expLkOverlapId)) if (1u == checkExpOverlapBelongToRtOrNot(routeId,expLkOverlapId))
{/*期望锁闭的保护区段ID属于进路的保护区段ID*/ {/*期望锁闭的保护区段ID属于进路的保护区段ID*/
flag = 1u;/*有任意一条匹配到了,则置为1*/ flag = 1u;/*有任意一条匹配到了,则置为1*/
retVal = CI_SUCCESS; retVal = CI_SUCCESS;
} }
else else
@@ -1522,62 +1508,79 @@ void SetAtsExpectLockOverlapIdProc(const UINT16 expLkOverlapId,const UINT8 lockT
/*判断当前保护区段所属联锁控制模式是否可以响应锁闭保护区段命令*/ /*判断当前保护区段所属联锁控制模式是否可以响应锁闭保护区段命令*/
if (CI_SUCCESS == retVal) if (CI_SUCCESS == retVal)
{ {
virCIid = GetOverlapBelongVirCiId(expLkOverlapId); 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))/*处于联锁控或者获取错误,发送现地不能响应人工锁闭命令*/
if ((CI_MODE_CI_LOCAL == ciCtrModeFlag) || (0u == ciCtrModeFlag))/*处于联锁控或者获取错误,发送现地不能响应人工锁闭命令*/
{ {
retVal = CI_ERROR; retVal = CI_ERROR;
} }
} }
/*add by shl*/
if (CI_SUCCESS == retVal) if (CI_SUCCESS == retVal)
{ {
/*判断进路状态,是否满足锁闭保护区段条件,若满足则设置期望锁闭保护区段*/
routeState = GetRouteState(routeId);
if ((routeState == ROUTE_STATE_FIRST_XUANPAI) || routedLockOverlapId = GetRouteOverlapLockedId(routeId); /*获取进路锁闭过保护区段ID*/
(routeState == ROUTE_STATE_XUANPAI) ||
(routeState == ROUTE_STATE_FIRST_LOCK) || if (0u == routedLockOverlapId)
(routeState == ROUTE_STATE_FIRST_LOCKERR) || {
(routeState == ROUTE_STATE_YUXIAN_OPEN) || /*判断进路状态,是否满足锁闭保护区段条件,若满足则设置期望锁闭保护区段*/
(routeState == ROUTE_STATE_YUXIAN_LOCK) || routeState = GetRouteState(routeId);
(routeState == ROUTE_STATE_NEAR_OPEN) ||
(routeState == ROUTE_STATE_NEAR_LOCK) || if ((routeState == ROUTE_STATE_FIRST_XUANPAI) ||
(routeState == ROUTE_STATE_NEAR_LOCKERR) || (routeState == ROUTE_STATE_XUANPAI) ||
(routeState == ROUTE_STATE_AUTO_UNLOCK) || (routeState == ROUTE_STATE_FIRST_LOCK) ||
(routeState == ROUTE_STATE_HALF_UNLOCK) (routeState == ROUTE_STATE_FIRST_LOCKERR) ||
) (routeState == ROUTE_STATE_YUXIAN_OPEN) ||
{/*设置指定ID进路的期望锁闭保护区段ID*/ (routeState == ROUTE_STATE_YUXIAN_LOCK) ||
if (LABOR_LOCK_OVERLAP == lockType)/*人工锁闭*/ (routeState == ROUTE_STATE_NEAR_OPEN) ||
{ (routeState == ROUTE_STATE_NEAR_LOCK) ||
SetOverlapAtsOrlaborLockCmdFlag(expLkOverlapId, LOCK_OVERLAP_CMD_YES);/*设置保护区段锁闭命令标志,用于保护区段解锁倒计时计算*/ (routeState == ROUTE_STATE_NEAR_LOCKERR) ||
SetOverlaplaborLockCmdFlag(expLkOverlapId, LOCK_OVERLAP_CMD_YES);/*设置人工锁闭标志,用于人工命令一次有效处理*/ (routeState == ROUTE_STATE_AUTO_UNLOCK) ||
ClearPreLoaborUnlockState(expLkOverlapId); (routeState == ROUTE_STATE_HALF_UNLOCK)
} )
else if (ATS_LOCK_OVERLAP == lockType)/*ATS锁闭*/ {/*设置指定ID进路的期望锁闭保护区段ID*/
{ if(LABOR_LOCK_OVERLAP == lockType)/*人工锁闭*/
phySectionId = GetRouteLastPhySectionId(routeId);
phySectionSta = GetPhySecCurMergeState(phySectionId);
if (SECTION_OCCUPY_YES == phySectionSta)
{ {
SetOverlapAtsOrlaborLockCmdFlag(expLkOverlapId, LOCK_OVERLAP_CMD_YES);/*设置保护区段锁闭命令标志*/ SetOverlapAtsOrlaborLockCmdFlag(expLkOverlapId,LOCK_OVERLAP_CMD_YES);/*设置保护区段锁闭命令标志,用于保护区段解锁倒计时计算*/
SetOverlaplaborLockCmdFlag(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 else
{ {
/*什么也不做*/ retVal = CI_ERROR;
} }
SetRouteAtsExpLkOverlapId(routeId, expLkOverlapId);
SetOverlapFromSetRouteCmdFlag(expLkOverlapId, OVERLAP_ROUTE_FLAG_NO);/*清除标志*/
SetOverlapAtsLastTimeLockCyc(expLkOverlapId, dwCurCycNum);
retVal = CI_SUCCESS;
}
else
{
retVal = CI_ERROR;
} }
} }
} }
} }
} }
@@ -1601,6 +1604,7 @@ UINT8 CheckPhySecFaultUnlockCanDo(const UINT16 phySectionId,const UINT8 virCIid)
UINT16 lockBelongRouteId = 0u; /*区段锁闭所属进路ID*/ UINT16 lockBelongRouteId = 0u; /*区段锁闭所属进路ID*/
UINT8 reVal = CI_ERROR; UINT8 reVal = CI_ERROR;
UINT8 belongvirCIid = 0u; UINT8 belongvirCIid = 0u;
UINT8 includeVirFlag = GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG);
UINT8 isErrLock = CI_ERROR; UINT8 isErrLock = CI_ERROR;
UINT8 phyLockState = 0U; UINT8 phyLockState = 0U;
@@ -1626,33 +1630,38 @@ UINT8 CheckPhySecFaultUnlockCanDo(const UINT16 phySectionId,const UINT8 virCIid)
} }
if(CI_SUCCESS == reVal) if(CI_SUCCESS == reVal)
{ {
if(FUNC_SWITCH_ON == includeVirFlag)
belongvirCIid = GetRouteBelongVirCiId(lockBelongRouteId);
if(0u < virCIid)
{ {
if(virCIid == belongvirCIid) belongvirCIid = GetRouteBelongVirCiId(lockBelongRouteId);
{ if(0u < virCIid)
reVal = CI_SUCCESS; /*本Rtu(虚拟联锁现地)可以操作属于本虚拟联锁的进路锁闭的物理区段区故解,无论该物理区段是否属于该Rtu*/
}
else
{ {
belongvirCIid = GetPhySecBelongVirCiId(phySectionId); if(virCIid == belongvirCIid)
if(belongvirCIid == virCIid) {
{ reVal = CI_SUCCESS; /*本Rtu(虚拟联锁现地)可以操作属于本虚拟联锁的进路锁闭的物理区段区故解,无论该物理区段是否属于该Rtu*/
reVal = CI_SUCCESS;/*本虚拟联锁物理区段由相邻虚拟联锁进路锁闭的,可以在该物理区段所属Rtu上操作区故解*/
} }
else else
{ {
reVal = CI_ERROR; belongvirCIid = GetPhySecBelongVirCiId(phySectionId);
if(belongvirCIid == virCIid)
{
reVal = CI_SUCCESS;/*本虚拟联锁物理区段由相邻虚拟联锁进路锁闭的,可以在该物理区段所属Rtu上操作区故解*/
}
else
{
reVal = CI_ERROR;
}
} }
} }
} else
else {
{ reVal = CI_ERROR;
reVal = CI_ERROR; }
}
}
else
{
reVal = CI_SUCCESS;
}
} }
/*按顺序解锁进路异常锁闭*/ /*按顺序解锁进路异常锁闭*/
@@ -1913,18 +1922,6 @@ void ClearSomeFlagDependRouteState(const UINT16 routeId)
{ {
SetRouteGroupRouteCmdFlag(routeId, ROUTE_GROUPROUTE_CMD_NO); /*清除进路的组合进路命令标志*/ 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
{
/*不处理*/
}
} }
/* /*
@@ -3398,12 +3395,14 @@ void OtherCiLogSecFaultUnlockProcess(const UINT16 wLogSectionId, const UINT8 chV
UINT8 chLogFaultUnLockRes = 0U;/*逻辑区段故障解锁条件检查结果*/ UINT8 chLogFaultUnLockRes = 0U;/*逻辑区段故障解锁条件检查结果*/
UINT8 chLogSecBelongRouteDir = 0U;/*逻辑区段锁闭所属进路方向*/ UINT8 chLogSecBelongRouteDir = 0U;/*逻辑区段锁闭所属进路方向*/
UINT8 chRouteLogSecHaveUnLock = 0u;/*进路逻辑区段是否已解锁*/ UINT8 chRouteLogSecHaveUnLock = 0u;/*进路逻辑区段是否已解锁*/
UINT8 chIncludeVirFlag = 0U;/*是否支持虚拟联锁*/
UINT8 chBelongVirCiId = 0U;/*逻辑区段所属虚拟联锁ID*/ UINT8 chBelongVirCiId = 0U;/*逻辑区段所属虚拟联锁ID*/
UINT16 wLogSecBelongPhySecId = 0U;/*逻辑区段所属物理区段ID*/ UINT16 wLogSecBelongPhySecId = 0U;/*逻辑区段所属物理区段ID*/
chLocalCiId = GetSystemParaLocalCiId(); /*获取本机联锁ID*/ chLocalCiId = GetSystemParaLocalCiId(); /*获取本机联锁ID*/
wLogLockBelongRouteId = GetLogSecLockBelongRoute(wLogSectionId); wLogLockBelongRouteId = GetLogSecLockBelongRoute(wLogSectionId);
chFuncSwitch = GetCiFunctionSwitchConfig(FUNC_SWITCH_USE_RELAY_INTERFACE_BETWEEN_NEIGHBOURCI); chFuncSwitch = GetCiFunctionSwitchConfig(FUNC_SWITCH_USE_RELAY_INTERFACE_BETWEEN_NEIGHBOURCI);
chIncludeVirFlag = GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG);
chConfirmRelayInterfaceFlag = GetCiCiRelayInterfConfirmFlag();/*继电接口确认状态*/ chConfirmRelayInterfaceFlag = GetCiCiRelayInterfConfirmFlag();/*继电接口确认状态*/
if ((0U < wLogLockBelongRouteId) && (ROUTE_SUM_MAX > wLogLockBelongRouteId)) if ((0U < wLogLockBelongRouteId) && (ROUTE_SUM_MAX > wLogLockBelongRouteId))
@@ -3437,15 +3436,21 @@ void OtherCiLogSecFaultUnlockProcess(const UINT16 wLogSectionId, const UINT8 chV
else if ((chLocalCiId == chLogSecBelongCiId) && (TRANSMIT_STATE_GOOD == chCommState)) else if ((chLocalCiId == chLogSecBelongCiId) && (TRANSMIT_STATE_GOOD == chCommState))
{ {
wLogSecBelongPhySecId = GetLgcSecRelativePhySecId(wLogSectionId); wLogSecBelongPhySecId = GetLgcSecRelativePhySecId(wLogSectionId);
if (FUNC_SWITCH_ON == chIncludeVirFlag)
chBelongVirCiId = GetLogSecBelongVirCiId(wLogSectionId); {
if ((chVirCIid == chBelongVirCiId) && (0U != chVirCIid)) chBelongVirCiId = GetLogSecBelongVirCiId(wLogSectionId);
if ((chVirCIid == chBelongVirCiId) && (0U != chVirCIid))
{
/*进路属于相邻联锁,且区段属于本联锁时,传递区段故障解锁命令 */
AddCiSendToCiCmdInfo(CI_CMD_SECTION_FAULT_UNLOCK, wLogSecBelongPhySecId, 0U, chRouteBelongCiId);
}
}
else
{ {
/*进路属于相邻联锁,且区段属于本联锁时,传递区段故障解锁命令 */ /*进路属于相邻联锁,且区段属于本联锁时,传递区段故障解锁命令 */
AddCiSendToCiCmdInfo(CI_CMD_SECTION_FAULT_UNLOCK, wLogSecBelongPhySecId, 0U, chRouteBelongCiId); AddCiSendToCiCmdInfo(CI_CMD_SECTION_FAULT_UNLOCK, wLogSecBelongPhySecId, 0U, chRouteBelongCiId);
} }
} }
else else
{ {
@@ -3466,6 +3471,7 @@ UINT8 CheckLogSecFaultUnlockCanDo(const UINT16 wLogSectionId, const UINT8 chVirC
UINT16 wLockBelongRouteId = 0U; /*区段锁闭所属进路ID*/ UINT16 wLockBelongRouteId = 0U; /*区段锁闭所属进路ID*/
UINT8 reVal = CI_ERROR; UINT8 reVal = CI_ERROR;
UINT8 chBelongvirCIid = 0U; UINT8 chBelongvirCIid = 0U;
UINT8 chIncludeVirFlag = GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG);
if ((0u == wLogSectionId) || (LOGIC_SECTION_SUM_MAX <= wLogSectionId)) if ((0u == wLogSectionId) || (LOGIC_SECTION_SUM_MAX <= wLogSectionId))
{ {
@@ -3488,32 +3494,38 @@ UINT8 CheckLogSecFaultUnlockCanDo(const UINT16 wLogSectionId, const UINT8 chVirC
} }
if (CI_SUCCESS == reVal) if (CI_SUCCESS == reVal)
{ {
if (FUNC_SWITCH_ON == chIncludeVirFlag)
chBelongvirCIid = GetRouteBelongVirCiId(wLockBelongRouteId);
if (0U < chVirCIid)
{ {
if (chVirCIid == chBelongvirCIid) chBelongvirCIid = GetRouteBelongVirCiId(wLockBelongRouteId);
if (0U < chVirCIid)
{ {
reVal = CI_SUCCESS; /*本Rtu(虚拟联锁现地)可以操作属于本虚拟联锁的进路锁闭的逻辑区段区故解,无论该逻辑区段是否属于该Rtu*/
}
else
{
chBelongvirCIid = GetLogSecBelongVirCiId(wLogSectionId);
if (chVirCIid == chBelongvirCIid) if (chVirCIid == chBelongvirCIid)
{ {
reVal = CI_SUCCESS;/*本虚拟联锁逻辑区段由相邻虚拟联锁进路锁闭的,可以在该逻辑区段所属Rtu上操作区故解*/ reVal = CI_SUCCESS; /*本Rtu(虚拟联锁现地)可以操作属于本虚拟联锁进路锁闭的逻辑区段区故解,无论该逻辑区段是否属于该Rtu*/
} }
else else
{ {
reVal = CI_ERROR; chBelongvirCIid = GetLogSecBelongVirCiId(wLogSectionId);
if (chVirCIid == chBelongvirCIid)
{
reVal = CI_SUCCESS;/*本虚拟联锁逻辑区段由相邻虚拟联锁进路锁闭的,可以在该逻辑区段所属Rtu上操作区故解*/
}
else
{
reVal = CI_ERROR;
}
} }
} }
else
{
reVal = CI_ERROR;
}
} }
else else
{ {
reVal = CI_ERROR; reVal = CI_SUCCESS;
} }
} }
return reVal; return reVal;
@@ -4471,6 +4483,7 @@ void DriveLogRouteSignalClose(const UINT16 wLogSignalId)
UINT8 sigalMaintainState = 0u; UINT8 sigalMaintainState = 0u;
UINT8 detainOpenRedBright = 0u; UINT8 detainOpenRedBright = 0u;
UINT8 signalDetainFlag = 0u; UINT8 signalDetainFlag = 0u;
UINT8 includeVirFlag = GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG);
if ((0u == wLogSignalId) || (SIGNAL_SUM_MAX <= wLogSignalId)) if ((0u == wLogSignalId) || (SIGNAL_SUM_MAX <= wLogSignalId))
{ {
/*不做处理*/ /*不做处理*/
@@ -4478,11 +4491,15 @@ void DriveLogRouteSignalClose(const UINT16 wLogSignalId)
else else
{ {
/*虚拟联锁兼容*/ /*虚拟联锁兼容*/
if (FUNC_SWITCH_ON == includeVirFlag)
belongVirCIid = GetSignalBelongVirCiId(wLogSignalId); {
allSignalBrightFlag = GetVirCIAllSignalBrightState(belongVirCIid); /*全站亮灯标志*/ belongVirCIid = GetSignalBelongVirCiId(wLogSignalId);
allSignalBrightFlag = GetVirCIAllSignalBrightState(belongVirCIid); /*全站亮灯标志*/
}
else
{
allSignalBrightFlag = GetAllSignalBrightFlag(); /*全站亮灯标志*/
}
/*无论什么时候,复示信号机关闭都驱动红灭*/ /*无论什么时候,复示信号机关闭都驱动红灭*/
signalIsfushiFlag = GetSignalIsfushiFlag(wLogSignalId); signalIsfushiFlag = GetSignalIsfushiFlag(wLogSignalId);
@@ -5081,6 +5098,7 @@ void LogRouteErrLockFaultManage(const UINT16 wPhySectionId)
void SetAtsLockOverlapHaveRouteId(const UINT16 expLkOverlapId, const UINT16 routeId) void SetAtsLockOverlapHaveRouteId(const UINT16 expLkOverlapId, const UINT16 routeId)
{ {
UINT16 routeOverlapSum = 0U; /*进路保护区段数目*/ UINT16 routeOverlapSum = 0U; /*进路保护区段数目*/
UINT16 routedLockOverlapId = 0U; /*进路锁闭过OverlapId*/
UINT8 retVal = CI_SUCCESS; /*返回值*/ UINT8 retVal = CI_SUCCESS; /*返回值*/
UINT8 routeState = 0U; /*进路状态*/ UINT8 routeState = 0U; /*进路状态*/
UINT16 preOverlepId = 0U; UINT16 preOverlepId = 0U;
@@ -5089,11 +5107,11 @@ void SetAtsLockOverlapHaveRouteId(const UINT16 expLkOverlapId, const UINT16 rout
UINT8 phySectionSta = 0U; UINT8 phySectionSta = 0U;
UINT8 belongCiId = 0U; UINT8 belongCiId = 0U;
UINT8 localCiId = GetSystemParaLocalCiId(); /*获取本机联锁ID*/ UINT8 localCiId = GetSystemParaLocalCiId(); /*获取本机联锁ID*/
UINT8 includeVirFlag = GetCiFunctionSwitchConfig(FUNC_INCLUDEVIRCI_FLAG);
UINT8 virCIid = 0U; UINT8 virCIid = 0U;
UINT8 ciCtrModeFlag = 0U; UINT8 ciCtrModeFlag = 0U;
UINT8 routeStateFlag = 0U; UINT8 routeStateFlag = 0U;
UINT8 flag = 0U; UINT8 flag = 0U;
UINT32 dwCurCycNum = Get2oo2CurCycleNum();
routeStateFlag = GetRouteStateFlag(routeId); routeStateFlag = GetRouteStateFlag(routeId);
@@ -5156,8 +5174,14 @@ void SetAtsLockOverlapHaveRouteId(const UINT16 expLkOverlapId, const UINT16 rout
if (CI_SUCCESS == retVal) if (CI_SUCCESS == retVal)
{ {
virCIid = GetOverlapBelongVirCiId(expLkOverlapId); virCIid = GetOverlapBelongVirCiId(expLkOverlapId);
ciCtrModeFlag = GetVirCImode(virCIid);/*获取联锁控制模式*/ if (FUNC_SWITCH_ON == includeVirFlag)
{
ciCtrModeFlag = GetVirCImode(virCIid);/*获取联锁控制模式*/
}
else
{
ciCtrModeFlag = GetCiModeFlag(); /*获取联锁控制模式*/
}
if ((CI_MODE_CI_LOCAL == ciCtrModeFlag) || (0U == ciCtrModeFlag))/*处于联锁控或者获取错误,发送现地不能响应人工锁闭命令*/ if ((CI_MODE_CI_LOCAL == ciCtrModeFlag) || (0U == ciCtrModeFlag))/*处于联锁控或者获取错误,发送现地不能响应人工锁闭命令*/
{ {
@@ -5167,50 +5191,54 @@ void SetAtsLockOverlapHaveRouteId(const UINT16 expLkOverlapId, const UINT16 rout
if (CI_SUCCESS == retVal) if (CI_SUCCESS == retVal)
{ {
/*判断进路状态,是否满足锁闭保护区段条件,若满足则设置期望锁闭保护区段*/ routedLockOverlapId = GetRouteOverlapLockedId(routeId); /*获取进路锁闭过保护区段ID*/
routeState = GetRouteState(routeId);
if ((ROUTE_STATE_FIRST_XUANPAI == routeState) if (0U == routedLockOverlapId)
|| (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办理保护区段,不处理人工办理保护区段*/ routeState = GetRouteState(routeId);
phySectionId = GetRouteLastPhySectionId(routeId);
phySectionSta = GetPhySecCurMergeState(phySectionId); if ((ROUTE_STATE_FIRST_XUANPAI == routeState)
if (SECTION_OCCUPY_YES == phySectionSta) || (ROUTE_STATE_XUANPAI == routeState)
{ || (ROUTE_STATE_FIRST_LOCK == routeState)
SetOverlapAtsOrlaborLockCmdFlag(expLkOverlapId, LOCK_OVERLAP_CMD_YES);/*设置保护区段锁闭命令标志,用于保护区段解锁倒计时计算*/ || (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;
} }
else else
{ {
/*nothing do*/ retVal = CI_ERROR;
} }
SetRouteAtsExpLkOverlapId(routeId, expLkOverlapId);/*设置期望锁闭保护区段*/
SetOverlapFromSetRouteCmdFlag(expLkOverlapId, OVERLAP_ROUTE_FLAG_YES);/*设置保护区段由进路连带标识*/
SetOverlapAtsLastTimeLockCyc(expLkOverlapId, dwCurCycNum);
retVal = CI_SUCCESS;
} }
else else
{ {
retVal = CI_ERROR; ; /*当前进路保护区段已锁,不处理*/
} }
} }
else
{
; /*当前进路保护区段已锁,不处理*/
}
} }
if (0U == flag) if (0U == flag)
@@ -41,7 +41,6 @@
#include "../LogicManage/TradInterlockLogicManage.h" #include "../LogicManage/TradInterlockLogicManage.h"
#include "../Train/TrainDefine.h" #include "../Train/TrainDefine.h"
#include "LogicalRouteDataManage.h" #include "LogicalRouteDataManage.h"
#include "../EnvelopeManage/EnvelopeManageAPI.h"
#ifdef SCADE_MODE #ifdef SCADE_MODE
#include "../LogicManage/General/LogicManageScadeInterface.h" #include "../LogicManage/General/LogicManageScadeInterface.h"
File diff suppressed because it is too large Load Diff
@@ -365,11 +365,9 @@ void SetOverlapLockState(const UINT16 overlapId, const UINT8 lockState, const UI
/* /*
* *
* const UINT16 routeId, ID * const UINT16 routeId, ID
* const UINT8 chSendLevel * void
* void
* BY cgh 20250828
*/ */
void SetCommonRouteLogicManage(const UINT16 routeId, const UINT8 chSendLevel); void SetCommonRouteLogicManage(const UINT16 routeId);
/* /*
* *
@@ -628,6 +626,14 @@ void StartTrianTestManage(void);
*/ */
void StopTrianTestManage(void); void StopTrianTestManage(void);
/*
*
*
*
CI_ERROR
CI_SUCCESS
*/
UINT8 CancleLinShiXianSuManage(void);
/* /*
* *
* *
@@ -941,7 +947,7 @@ UINT8 CheckPhysecFlockReasonSpksId(const UINT16 phySectionId, UINT16* spksId, UI
* *
*mpt 202239 *mpt 202239
*/ */
UINT8 LaborUnlockOverlapProc(const UINT16 overlapId); UINT8 LaborUnlockOverlapProc(const UINT8 overlapId);
/* /*
* *
* const UINT16 routeId, ID * const UINT16 routeId, ID
@@ -1125,43 +1131,6 @@ void RouteTrainResUnlockManage(void);
*/ */
void LeadRouteFirstXuanPaiManage(const UINT16 routeId); 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 #ifdef __cplusplus
} }
#endif #endif
@@ -189,7 +189,7 @@ UINT8 OpenCbtcLTrainRouteErrProcess(const UINT16 routeId, const UINT8 checkStep)
UINT8 sendLevel = ESEND_LEVEL_ZERO; UINT8 sendLevel = ESEND_LEVEL_ZERO;
UINT8 routeReverseProperty = 0u; UINT8 routeReverseProperty = 0u;
UINT8 airShaftRouteType = 0u; UINT8 airShaftRouteType = 0u;
UINT8 chRouteCouplinkFlag = 0U;
/* 联锁逻辑检查 */ /* 联锁逻辑检查 */
/* 进路监督模式为【CBTC】*/ /* 进路监督模式为【CBTC】*/
@@ -325,36 +325,24 @@ UINT8 OpenCbtcLTrainRouteErrProcess(const UINT16 routeId, const UINT8 checkStep)
{ {
routeReverseProperty = GetRouteReverseProperty(routeId); routeReverseProperty = GetRouteReverseProperty(routeId);
airShaftRouteType = GetAirShaftRouteType(routeId); airShaftRouteType = GetAirShaftRouteType(routeId);
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/ if ((ROUTE_REVERSE_PROPERTY_YES == routeReverseProperty) || (ROUTE_TYPE_AIRSHAFT == airShaftRouteType))
if ((ROUTE_REVERSE_PROPERTY_YES == routeReverseProperty)|| (ROUTE_TYPE_AIRSHAFT == airShaftRouteType)) { /*反向进路需检查所有区段的占用状态,之前由于不检查占用状态导致信号出清进路内方第一区段,信号机重开的问题*/
{ /*风井进路不允许追踪办理,故开放条件需增加对进路内方所有区段的占用状态检查*/
if (ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag) devId = 0u;
devState = 0u;
checkResult = RouteAllSecOccuClearCheck(routeId,&devId, &devState);
if (checkResult == CI_SUCCESS)
{ {
/* 反向联挂进路允许追踪,区段条件在OpenCbtcRouteSectionErrCheck */ /* 通过检查 */
/*存在联挂标志,不在查反向进路全部空闲,其他条件检查;风井进路设置不上联挂标志所以需要检查全部区段空闲*/ reResult = CI_SUCCESS;
} }
else else
{ {
/*反向进路需检查所有区段的占用状态,之前由于不检查占用状态导致信号出清进路内方第一区段,信号机重开的问题*/ /* 记录故障码 */
SetErrorData(functionId,CI_DEVICE_TYPE_PHYSEC,devId,ETYPE_PS_MERGY_OCU_STATE,devState,sendLevel);
/*风井进路不允许追踪办理,故开放条件需增加对进路内方所有区段的占用状态检查*/ /* 失败返回 */
devId = 0u; reResult = CI_ERROR;
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) if (CI_SUCCESS == reResult)
{ {
@@ -775,7 +763,7 @@ UINT8 OpenCbtcReturnRouteErrProcess(const UINT16 routeId, const UINT8 checkStep)
/* 取消标志 */ /* 取消标志 */
UINT8 const zxqFlag = GetRouteZongQuXiaoFlag(routeId); UINT8 const zxqFlag = GetRouteZongQuXiaoFlag(routeId);
UINT8 const zrjFlag = GetRouteZongRenJieFlag(routeId); UINT8 const zrjFlag = GetRouteZongRenJieFlag(routeId);
UINT8 chRouteCouplinkFlag = 0U;
/*故障发送级别*/ /*故障发送级别*/
UINT8 sendLevel = ESEND_LEVEL_ZERO; UINT8 sendLevel = ESEND_LEVEL_ZERO;
@@ -912,16 +900,8 @@ UINT8 OpenCbtcReturnRouteErrProcess(const UINT16 routeId, const UINT8 checkStep)
{ {
devId = 0u; devId = 0u;
devState = 0u; devState = 0u;
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/ checkResult = RouteAllSecOccuClearCheck(routeId, &devId, &devState);
if (ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag) if (checkResult == CI_SUCCESS)
{
checkResult = SetCouplinkRouteSecOccCheck(routeId, &devId, &devState);
}
else
{
checkResult = RouteAllSecOccuClearCheck(routeId, &devId, &devState);
}
if (CI_SUCCESS == checkResult)
{ {
/* 通过检查 */ /* 通过检查 */
reResult = CI_SUCCESS; reResult = CI_SUCCESS;
@@ -1366,7 +1346,6 @@ UINT8 KeepCbtcLTrainRouteErrProcess(const UINT16 routeId)
UINT16 trainEnteringRouteState = 0u; UINT16 trainEnteringRouteState = 0u;
UINT8 signalCrossState = 0u; UINT8 signalCrossState = 0u;
UINT8 rcWorkMode = 0U; /*rc工作模式*/ UINT8 rcWorkMode = 0U; /*rc工作模式*/
UINT8 chRouteCouplinkFlag = 0U;
rcWorkMode = GetLocalRcWorkMode(); rcWorkMode = GetLocalRcWorkMode();
/* 联锁逻辑检查 */ /* 联锁逻辑检查 */
@@ -1492,16 +1471,7 @@ UINT8 KeepCbtcLTrainRouteErrProcess(const UINT16 routeId)
{ /*反向进路或风井进路需对进路内方所有区段的占压状态进行检查*/ { /*反向进路或风井进路需对进路内方所有区段的占压状态进行检查*/
devId = 0u; devId = 0u;
devState = 0u; devState = 0u;
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/ checkResult = RouteAllSecOccuClearCheck(routeId,&devId, &devState);
if (ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag)
{
checkResult = KeepCouplinkRouteSecOccCheck(routeId, &devId, &devState);;
}
else
{
checkResult = RouteAllSecOccuClearCheck(routeId, &devId, &devState);
}
if (checkResult == CI_SUCCESS) if (checkResult == CI_SUCCESS)
{ {
/* 通过检查 */ /* 通过检查 */
@@ -1886,7 +1856,6 @@ UINT8 KeepCbtcReturnRouteErrProcess(const UINT16 routeId)
UINT8 trainEnteringRouteState =0u; UINT8 trainEnteringRouteState =0u;
UINT8 signalCrossState = 0u; UINT8 signalCrossState = 0u;
UINT8 rcWorkMode = 0U; /*rc工作模式*/ UINT8 rcWorkMode = 0U; /*rc工作模式*/
UINT8 chRouteCouplinkFlag = 0U;
rcWorkMode = GetLocalRcWorkMode(); rcWorkMode = GetLocalRcWorkMode();
devState = GetRouteLevel(routeId); devState = GetRouteLevel(routeId);
if (ROUTE_LEVEL_CBTC == devState) if (ROUTE_LEVEL_CBTC == devState)
@@ -2022,16 +1991,7 @@ UINT8 KeepCbtcReturnRouteErrProcess(const UINT16 routeId)
} }
else if(RC_WORK_MODE_CI == rcWorkMode) else if(RC_WORK_MODE_CI == rcWorkMode)
{ {
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/ checkResult = RouteAllSecOccuClearCheck(routeId, &devId, &devState);
if (ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag)
{
checkResult = KeepCouplinkRouteSecOccCheck(routeId, &devId, &devState);
}
else
{
checkResult = RouteAllSecOccuClearCheck(routeId, &devId, &devState);
}
if (CI_SUCCESS == checkResult) if (CI_SUCCESS == checkResult)
{ {
/* 通过检查 */ /* 通过检查 */
@@ -3051,9 +3011,10 @@ UINT8 RecoverOpenRouteCheckCLD(const UINT16 routeId)
UINT8 routeType = 0u; /*进路类型*/ UINT8 routeType = 0u; /*进路类型*/
UINT8 errType = CI_ERROR;/*定义检查失败时的错误类型*/ UINT8 errType = CI_ERROR;/*定义检查失败时的错误类型*/
UINT8 jkjRelayValidFlag = 0u; /*初始化应急盘继电器有效状态*/ UINT8 jkjRelayValidFlag = 0u; /*初始化应急盘继电器有效状态*/
UINT16 jkjRelayId = GetJkjRelayId();
jkjRelayValidFlag = GetCiJkjFlag(); jkjRelayValidFlag = GetCiJkjFlag();
routeType = GetRouteType(routeId); /*获取进路类型*/ routeType = GetRouteType(routeId); /*获取进路类型*/
if (JKJ_REYLAY_VALID == jkjRelayValidFlag) if ((jkjRelayId > 0u) && (JKJ_REYLAY_VALID == jkjRelayValidFlag))
{/*应急盘继电器有效状态,不允许信号重开*/ {/*应急盘继电器有效状态,不允许信号重开*/
errType = CI_ERROR; errType = CI_ERROR;
} }
@@ -3107,7 +3068,6 @@ static UINT8 OtherCiValidErrCheck(UINT16 const routeId)
UINT8 toOpenCheckFlag = 0u;/*恢复可重开信号的条件标志*/ UINT8 toOpenCheckFlag = 0u;/*恢复可重开信号的条件标志*/
UINT8 otherResult = 0u;/*其他联锁检查条件返回值*/ UINT8 otherResult = 0u;/*其他联锁检查条件返回值*/
UINT8 cFuncSwitchSpks = 0U; /*SPKS信号重开检查进路级别开关*/ UINT8 cFuncSwitchSpks = 0U; /*SPKS信号重开检查进路级别开关*/
UINT8 cPsdExceptOpenState = 0U; /*PSD异常打开状态*/
if (routeLevel == ROUTE_LEVEL_BLOC) if (routeLevel == ROUTE_LEVEL_BLOC)
{ {
@@ -3133,7 +3093,7 @@ static UINT8 OtherCiValidErrCheck(UINT16 const routeId)
psdSum = GetSignalRelatedPsdSum(rtStartSigId);/*获得进路始端信号机关联的PSD数量*/ psdSum = GetSignalRelatedPsdSum(rtStartSigId);/*获得进路始端信号机关联的PSD数量*/
psdIdBuf = GetSignalRelatedPsdBuf(rtStartSigId);/*获得进路始端信号机关联的PSD ID数组*/ psdIdBuf = GetSignalRelatedPsdBuf(rtStartSigId);/*获得进路始端信号机关联的PSD ID数组*/
/*开始检查*/ /*开始检查*/
for (i = 0u; i < checkSum; i++) for (i = 0u; i < checkSum; i++)
{ {
tmpOtherCiDevInfo = &dataOtherCiDevBuf[i]; tmpOtherCiDevInfo = &dataOtherCiDevBuf[i];
@@ -3161,16 +3121,8 @@ static UINT8 OtherCiValidErrCheck(UINT16 const routeId)
{ {
if (psdIdBuf[j] == tmpOtherCiDevInfo->DevId) if (psdIdBuf[j] == tmpOtherCiDevInfo->DevId)
{ {
cPsdExceptOpenState = GePsdExceptState(tmpOtherCiDevInfo->DevId); toOpenCheckFlag = 1u;
if (PSD_EXCEPT_NO == cPsdExceptOpenState) break;
{
toOpenCheckFlag = 1U; /*PSD未异常,设置可自动重开*/
}
else
{
toOpenCheckFlag = 0U; /*存在PSD异常,停止遍历,设置不可自动重开*/
break;
}
} }
} }
} }
@@ -3633,9 +3585,6 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
/*防护进路*/ /*防护进路*/
UINT8 const overlapSum = GetRouteOverlapSum(routeId); UINT8 const overlapSum = GetRouteOverlapSum(routeId);
UINT16 const overlapId = GetRouteOverlapLockedId(routeId); UINT16 const overlapId = GetRouteOverlapLockedId(routeId);
UINT8 cSndSideProFuncSwitch = 0U;
cSndSideProFuncSwitch = GetSndSideProtectFuncSwitch(); /*二级侧防功能开关*/
UINT8 lineIdentity = CI_TRADITION_RAILWAY; UINT8 lineIdentity = CI_TRADITION_RAILWAY;
@@ -3679,7 +3628,7 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
} }
} }
if (CI_TRADITION_RAILWAY == lineIdentity) if(CI_TRADITION_RAILWAY == lineIdentity)
{ {
/*保护区段道岔【位置正确】*/ /*保护区段道岔【位置正确】*/
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
@@ -3698,6 +3647,8 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
reResult = CI_ERROR; reResult = CI_ERROR;
} }
} }
} }
else else
{ {
@@ -3741,11 +3692,29 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
} }
/*保护区段关联防护道岔【位置正确】*/ /*保护区段关联防护道岔【位置正确】*/
if(CI_SUCCESS == reResult)
{
devId = 0u;
devState = 0u;
checkResult = OvlpRelatedProtSwitchPosCheck(overlapId,&devId,&devState);
if (checkResult == CI_SUCCESS)
{
/* 通过检查 */
reResult = CI_SUCCESS;
}
else
{
/* 失败返回 */
reResult = CI_ERROR;
}
}
/*保护区段关联防护道岔【防护锁闭】或【单锁且防护锁闭】*/
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
{ {
devId = 0u; devId = 0u;
devState = 0u; devState = 0u;
checkResult = OvlpRelatedProtSwitchPosCheck(overlapId, &devId, &devState); checkResult = OvlpRelatedProtSwitchLockCheck(overlapId,&devId, &devState);
if (checkResult == CI_SUCCESS) if (checkResult == CI_SUCCESS)
{ {
/* 通过检查 */ /* 通过检查 */
@@ -3758,23 +3727,6 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
} }
} }
/*保护区段关联防护道岔【防护锁闭】或【单锁且防护锁闭】*/
if (CI_SUCCESS == reResult)
{
devId = 0u;
devState = 0u;
checkResult = OvlpRelatedProtSwitchLockCheck(overlapId, &devId, &devState);
if (checkResult == CI_SUCCESS)
{
/* 通过检查 */
reResult = CI_SUCCESS;
}
else
{
/* 失败返回 */
reResult = CI_ERROR;
}
}
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
{ {
@@ -3791,21 +3743,13 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
/*保护区段侧防条件检查*/ /*保护区段侧防条件检查*/
if ((CI_SUCCESS == reResult) || (CI_ROUTE_RECOVER_ERR == reResult)) if ((CI_SUCCESS == reResult) || (CI_ROUTE_RECOVER_ERR == reResult))
{ {
if (FUNC_SWITCH_ON == cSndSideProFuncSwitch) /*检查保护区段侧防道岔区段状态*/
devId = 0u;
devState = 0u;
checkResult = OverlapLateralDfnCheck(overlapId, &devId, &devState);
if (CI_ERROR == checkResult)
{ {
/*仅在二级侧防开关配置为支持二级侧防时才进行侧防条件检查*/ reResult = checkResult;
/*检查保护区段侧防道岔区段状态*/
devId = 0u;
devState = 0u;
checkResult = OlapSideProtectConditionCheck(overlapId, 0U, 0U);
if (CI_ERROR == checkResult)
{
reResult = checkResult;
}
}
else
{
/*不处理*/
} }
} }
@@ -3825,7 +3769,7 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
{ {
devId = 0u; devId = 0u;
devState = 0u; devState = 0u;
checkResult = OverlapAllSecJumpLockStateCheck(overlapId, &devId, &devState); checkResult = OverlapAllSecJumpLockStateCheck(overlapId,&devId,&devState);
if (CI_ERROR == checkResult) if (CI_ERROR == checkResult)
{ {
reResult = checkResult; reResult = checkResult;
@@ -3846,30 +3790,13 @@ static UINT8 OpenBlocRouteOverlapErrCheck(const UINT16 routeId)
{ {
devId = 0u; devId = 0u;
devState = 0u; devState = 0u;
checkResult = OverlapFloodGateStateCheck(overlapId, &devId, &devStateType, &devState); checkResult = OverlapFloodGateStateCheck(overlapId,&devId,&devStateType,&devState);
if (CI_ERROR == checkResult) if (CI_ERROR == checkResult)
{ {
reResult = 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 else
{ {
@@ -4171,15 +4098,12 @@ static UINT8 KeepCbtcRouteSectionErrCheck(const UINT16 routeId)
UINT8 preLogDevState = 0u; /*之前逻辑区段占用状态*/ UINT8 preLogDevState = 0u; /*之前逻辑区段占用状态*/
UINT8 LogSecCurCtOrUtOcc = 0U; /*逻辑区段当前占用状态*/ UINT8 LogSecCurCtOrUtOcc = 0U; /*逻辑区段当前占用状态*/
UINT8 cLocalCiType = 0U; /*本控区类型*/ UINT8 cLocalCiType = 0U; /*本控区类型*/
UINT8 chRouteBelongVirCiId = 0U;
rcWorkMode = GetLocalRcWorkMode(); rcWorkMode = GetLocalRcWorkMode();
/* 联锁逻辑检查 */ /* 联锁逻辑检查 */
reResult = CI_SUCCESS; reResult = CI_SUCCESS;
cLocalCiType = GetLocalCiType(); cLocalCiType = GetLocalCiType();
chRouteBelongVirCiId = GetRouteBelongVirCiId(routeId);
cLocalCiType = GetLocalVirCiType(chRouteBelongVirCiId);
if (CI_TYPE_CLD != cLocalCiType) if (CI_TYPE_CLD != cLocalCiType)
{ {
/*非车辆段,按CBTC既有逻辑处理*/ /*非车辆段,按CBTC既有逻辑处理*/
@@ -4325,14 +4249,11 @@ static UINT8 OpenCbtcRouteSectionErrCheck(const UINT16 routeId)
UINT8 functionId = EFUNC_OPENROUTESECTIONERRCHECK; UINT8 functionId = EFUNC_OPENROUTESECTIONERRCHECK;
UINT8 rcWorkMode = 0U; UINT8 rcWorkMode = 0U;
UINT8 cLocalCiType = 0U; /*本控区类型*/ UINT8 cLocalCiType = 0U; /*本控区类型*/
UINT8 chRouteCouplinkFlag = 0U;
UINT8 chSigCrossState = 0U;
UINT8 chRouteBelongVirCiId = 0U;
rcWorkMode = GetLocalRcWorkMode(); rcWorkMode = GetLocalRcWorkMode();
/* 联锁逻辑检查 */ /* 联锁逻辑检查 */
chRouteBelongVirCiId = GetRouteBelongVirCiId(routeId); cLocalCiType = GetLocalCiType();
cLocalCiType = GetLocalVirCiType(chRouteBelongVirCiId);
if (CI_TYPE_CLD != cLocalCiType) if (CI_TYPE_CLD != cLocalCiType)
{ {
/*非车辆段,按CBTC既有逻辑处理*/ /*非车辆段,按CBTC既有逻辑处理*/
@@ -4355,30 +4276,16 @@ static UINT8 OpenCbtcRouteSectionErrCheck(const UINT16 routeId)
} }
else if (RC_WORK_MODE_CI == rcWorkMode) else if (RC_WORK_MODE_CI == rcWorkMode)
{/*CI*/ {/*CI*/
/* 进路始端信号机【未跨压】且内方第一逻辑区段【空闲】*/
startSignalId = GetRouteStartSignalId(routeId); startSignalId = GetRouteStartSignalId(routeId);
chSigCrossState = GetSignalCrossState(startSignalId); devId = GetRouteInFirstLogSecId(routeId);
if (SIGNAL_CROSS_STATE_NO == chSigCrossState) devState = GetLogSecCurOccupyState(devId);
if ((GetSignalCrossState(startSignalId) == SIGNAL_CROSS_STATE_NO) &&
(devState == SECTION_OCCUPY_NO))
{ {
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/ /* 通过检查 */
if (ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag) reResult = CI_SUCCESS;
{
/*联挂进路区段占用检查*/
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 else
{ {
@@ -4732,23 +4639,26 @@ static UINT8 RouteIntruSecVainSPKSErrCheck(const UINT16 routeId)
*/ */
static UINT8 RouteRelayZhaoChaErrCheck(UINT16 const routeId) static UINT8 RouteRelayZhaoChaErrCheck(UINT16 const routeId)
{ {
/* 局部变量定义初始化 */ /* 局部变量定义初始化 */
UINT16 relayId = 0U; UINT16 relayId = 0U;
UINT8 relayState = 0U; UINT8 relayState = 0U;
UINT8 zcPhySecSum = 0U; /*照查物理区段数目*/ UINT8 zcPhySecSum = 0U; /*照查物理区段数目*/
UINT16* pZcPhySecIdBuf = NULL; /*照查物理区段ID数组*/ UINT16* pZcPhySecIdBuf = NULL; /*照查物理区段ID数组*/
UINT8 ii = 0U; UINT8 ii = 0U;
UINT16 thisRealyId = 0U; UINT16 thisRealyId = 0U;
UINT8 thisRelayState = 0U; UINT8 thisRelayState = 0U;
UINT8 routeState = 0U; UINT8 routeState = 0U;
UINT8 retVal = CI_ERROR; /*函数返回值*/ UINT8 retVal = CI_ERROR; /*函数返回值*/
UINT16 pDevId = 0U; UINT16 pDevId = 0U;
UINT8 pDevState = 0U; UINT8 pDevState = 0U;
UINT8 chRouteLevel = 0U;
UINT8 chErrTemp = 0U; UINT8 chErrTemp = 0U;
/* 对端照查检查 */ /* 对端照查检查 */
zcPhySecSum = GetRouteThatZhaoChaPhySecSum(routeId); /*获取照查物理区段数目*/ zcPhySecSum = GetRouteThatZhaoChaPhySecSum(routeId); /*获取照查物理区段数目*/
pZcPhySecIdBuf = GetRouteThatZhaoChaPhySecIdBuf(routeId); /*获取照查物理区段ID数组*/ pZcPhySecIdBuf = GetRouteThatZhaoChaPhySecIdBuf(routeId); /*获取照查物理区段ID数组*/
/*进路监督级别确认*/
chRouteLevel = GetRouteLevel(routeId);
if (NULL == pZcPhySecIdBuf) if (NULL == pZcPhySecIdBuf)
{ {
@@ -4758,14 +4668,14 @@ static UINT8 RouteRelayZhaoChaErrCheck(UINT16 const routeId)
{ {
retVal = CI_SUCCESS; retVal = CI_SUCCESS;
for (ii = 0u; ii < zcPhySecSum; ii++) for (ii = 0u; ii < zcPhySecSum; ii++)
{ {
retVal = RoutePhySecZhaoChaErrCheck(routeId, pZcPhySecIdBuf[ii]); retVal = RoutePhySecZhaoChaErrCheck(routeId,pZcPhySecIdBuf[ii]);
if (CI_ERROR == retVal) if (CI_ERROR == retVal)
{ {
break; break;
} }
else if (CI_ROUTE_RECOVER_ERR == retVal) /*YF00083-1013,出现一个封锁即跳出,防止两个物理区段,一个封锁在前检查,一个未封锁在后检查覆盖掉retVal的值*/ else if(CI_ROUTE_RECOVER_ERR == retVal) /*YF00083-1013,出现一个封锁即跳出,防止两个物理区段,一个封锁在前检查,一个未封锁在后检查覆盖掉retVal的值*/
{ {
chErrTemp++; /*有一个SPKS封锁就计数一次*/ chErrTemp++; /*有一个SPKS封锁就计数一次*/
} }
@@ -4778,13 +4688,24 @@ static UINT8 RouteRelayZhaoChaErrCheck(UINT16 const routeId)
{ {
retVal = CI_ROUTE_RECOVER_ERR; /*出现过一个SPKS封锁,就赋值返回值为SPKS封锁*/ 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继电器的状态*/ thisRelayState = GetRelayCollState(thisRealyId); /*获取指定ID继电器的状态*/
routeState = GetRouteState(routeId); /*获取进路状态*/ routeState = GetRouteState(routeId); /*获取进路状态*/
@@ -4792,32 +4713,25 @@ static UINT8 RouteRelayZhaoChaErrCheck(UINT16 const routeId)
{/*存在本端照查继电器*/ {/*存在本端照查继电器*/
if ((ROUTE_STATE_FIRST_LOCKERR == routeState) || if ((ROUTE_STATE_FIRST_LOCKERR == routeState) ||
(ROUTE_STATE_YUXIAN_LOCK == 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_NEAR_LOCKERR == routeState) ||
(ROUTE_STATE_DELAY_UNLOCK == routeState) || (ROUTE_STATE_NEAR_OPEN == routeState) ||
(ROUTE_STATE_AUTO_UNLOCK == routeState) || (ROUTE_STATE_YUXIAN_OPEN == 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; 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; retVal = RELAY_STATE_WAITE;
} }
} }
else else
{ {
/*进路状态为其它值,此时不处理*/ /*进路状态为其它值,此时不处理*/
@@ -4826,29 +4740,40 @@ 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*/ {
relayId = GetRouteThatZhaoChaRelayId(routeId); /*后备模式对端照查继电器ID*/
if (0u != relayId)
{/*存在对端照查继电器*/
relayState = GetRelayCollState(relayId);
/* 照查吸起检查*/
if (RELAY_STATE_UP == relayState)
{
/*检查通过*/
}
else
{
retVal = CI_ERROR;
}
} }
else if (ROUTE_LEVEL_CBTC == chRouteLevel)
{
relayId = GetRouteCbtcThatZhaoChaRelayId(routeId);/*CBTC模式对端照查继电器ID*/
}
else
{
; /*非法监督模式,继电器ID为0,在下面不会处理*/
}
if(0u != relayId)
{/*存在对端照查继电器*/
relayState = GetRelayCollState(relayId);
/* 照查吸起检查*/
if (RELAY_STATE_UP == relayState)
{
/*检查通过*/
}
else
{
retVal = CI_ERROR;
}
}
} }
return retVal; return retVal;
} }
/* /*
@@ -50,116 +50,58 @@ void JKJRelayLogicProcess(void)
{ {
UINT16 wJkjRelayId = 0u; UINT16 wJkjRelayId = 0u;
UINT8 JkjRelayState = CI_ERROR; UINT8 JkjRelayState = CI_ERROR;
UINT32 yjValidCycNum = 0u; UINT32 JkjRelayCycNum = 0u;
UINT32 JkjValidCycNum = 0u;
UINT32 curCycNum = 0u; UINT32 curCycNum = 0u;
UINT8 checkRes = CI_TIME_OUT; UINT8 checkRes = CI_TIME_OUT;
UINT8 ii = 0u; UINT8 tmpRet =CI_ERROR;
UINT8 haveYjkBreakFlag = 0u;
UINT8 ocYjkBreakFlag = 0u;
wJkjRelayId = GetJkjRelayId(); wJkjRelayId = GetJkjRelayId();
JkjRelayState = GetRelayCollState(wJkjRelayId); /*JKJ应急盘继电器采集状态*/ JkjRelayState = GetRelayCollState(wJkjRelayId); /*JKJ应急盘继电器采集状态*/
yjValidCycNum = GetJkjRelayValidCycNum(); /*JKJ应急盘状态有效周期*/ JkjRelayCycNum = GetRelayStateUpdateCycNum(wJkjRelayId); /*JKJ应急盘继电器状态更新周期*/
curCycNum = Get2oo2CurCycleNum(); JkjValidCycNum = GetJkjRelayValidCycNum(); /*JKJ应急盘状态有效周期*/
for (ii = 0u; ii < m_OcToCiOrginDataNum; ii++)
{
if (OC_HAVE_YJK == m_OcToCiOrginDataArr[ii].chHaveYjk)
{/*任意一个OC具备应急控*/
haveYjkBreakFlag = 1u;
break;
}
else
{
; /*继续*/
}
}
for (ii = 0u; ii < m_OcToCiOrginDataNum; ii++)
{
if (OC_CTLMODE_YJK == m_OcToCiOrginDataArr[ii].chControlMode)
{/*任意一个OC是应急控*/
ocYjkBreakFlag = 1u;
break;
}
else
{
; /*继续*/
}
}
if (wJkjRelayId > 0u)
if ((wJkjRelayId > 0u) && (RELAY_STATE_DOWN == JkjRelayState))
{ {
/*配置了继电器*/ curCycNum = Get2oo2CurCycleNum();
if (RELAY_STATE_DOWN == JkjRelayState) if (0u == JkjRelayCycNum)
{/*落下*/ {/*若未计时,则设置起始周期*/
if (0u == yjValidCycNum) tmpRet = SetRelayStateUpdateCycNum(wJkjRelayId,curCycNum);
{/*未计时*/ if (CI_ERROR == tmpRet)
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) checkRes = SystemOverTimeCheck(JkjRelayCycNum,JKJ_REYLAY_VALID_CYCLE_NUM);
{/*吸起*/ if (CI_TIME_OUT == checkRes)
/*应急效*/ { /*应急盘有效*/
SetCiJkjFlag(JKJ_REYLAY_INVALID); /*设置应急盘有效标志为效*/ SetCiJkjFlag(JKJ_REYLAY_VALID); /*设置JKJ应急盘有效标志为效*/
SetJkjRelayValidCycNum(0u); /*设置应急无效周期*/ if (0u == JkjValidCycNum) /*之前没有设置应急盘有效开始周期*/
} {
else SetJkjRelayValidCycNum(curCycNum); /*设置JKJ应急盘有效周期*/
{ }
/*应急无效*/
SetCiJkjFlag(JKJ_REYLAY_VALID); /*设置应急盘有效标志为无效*/
SetJkjRelayValidCycNum(curCycNum); /*设置应急无效周期*/
} }
} }
else if(1u == haveYjkBreakFlag) else if ((wJkjRelayId > 0u) && (RELAY_STATE_UP == JkjRelayState))
{ {
/*OC具备应急控*/ tmpRet = SetRelayStateUpdateCycNum(wJkjRelayId, 0u); /*清除JKJ继电器有效起始周期号*/
if (1u == ocYjkBreakFlag) if (CI_ERROR == tmpRet)
{/*有一个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); /*设置应急无效周期*/
} }
/*应急盘无效*/
SetCiJkjFlag(JKJ_REYLAY_INVALID); /*设置JKJ应急盘继电器有效标志为无效*/
SetJkjRelayValidCycNum(0u); /*设置JKJ应急盘无效周期*/
} }
else else
{ {
/*JKJ未配置,OC无应急控功能,应急盘无效*/ /*应急盘无效*/
SetCiJkjFlag(JKJ_REYLAY_INVALID); /*设置应急盘有效标志为无效*/ SetCiJkjFlag(JKJ_REYLAY_INVALID); /*设置JKJ应急盘继电器有效标志为无效*/
SetJkjRelayValidCycNum(0u); /*设置应急无效周期*/ SetJkjRelayValidCycNum(0u); /*设置JKJ应急盘继电器无效周期*/
} }
} }
/* /*
@@ -229,7 +171,6 @@ void NonRouteLogicProcess(void)
{ {
NonRouteCancelDeal(pNonRoute->NonRouteId); /*非进路取消处理*/ NonRouteCancelDeal(pNonRoute->NonRouteId); /*非进路取消处理*/
} }
} }
} }
@@ -241,42 +182,22 @@ void NonRouteLogicProcess(void)
*/ */
void NonRouteXuanPaiDeal(UINT8 nonRouteId) void NonRouteXuanPaiDeal(UINT8 nonRouteId)
{ {
UINT8 reResult = CI_ERROR;
NonRouteDataStruct *pNonRoute = GetNonRouteDataById(nonRouteId); NonRouteDataStruct *pNonRoute = GetNonRouteDataById(nonRouteId);
reResult = LockNonRouteP(nonRouteId); if (CI_SUCCESS == LockNonRouteP(nonRouteId))
if (CI_SUCCESS == reResult)
{ /*锁闭成功*/ { /*锁闭成功*/
reResult = CheckNonRouteSwitchPosRight(nonRouteId, 0U, 0U);
if (CI_SUCCESS == reResult) if (CI_SUCCESS == CheckNonRouteSwitchPosRight(nonRouteId,0u,0u))
{ { /*进路道岔位置正确*/
/*进路道岔位置正确*/ SetNonRouteStateDeal(nonRouteId,NONROUTE_STATE_LOCK); /*设置非进路为锁闭*/
/*侵限区段侵限条件不满足检查*/
reResult = NonRouteIntruSecVainCheck(nonRouteId, EFUNC_CLD_LOCK_NONROUTE, ESEND_LEVEL_ATS);
if (CI_SUCCESS == reResult)
{
SetNonRouteStateDeal(nonRouteId, NONROUTE_STATE_LOCK); /*设置非进路为锁闭*/
}
else
{
SetNonRouteStateDeal(nonRouteId, NONROUTE_STATE_IDLE); /*设置非进路为空闲*/
/* NonRouteIntruSecVainCheck函数已经有故障码,不再记录*/
}
} }
else else
{ /*道岔未动作到位*/ { /*道岔未动作到位*/
/*非进路锁闭驱动道岔*/ /*非进路锁闭驱动道岔*/
reResult = NonRouteLockDrvSwitchDeal(nonRouteId); if (CI_ERROR == NonRouteLockDrvSwitchDeal(nonRouteId))
if (CI_SUCCESS == reResult)
{ {
/*继续驱动道岔*/ SetNonRouteStateDeal(nonRouteId,NONROUTE_STATE_IDLE); /*设置非进路为空闲*/
} }
else
{
SetNonRouteStateDeal(nonRouteId, NONROUTE_STATE_IDLE); /*设置非进路为空闲*/
}
} }
} }
@@ -894,6 +815,9 @@ void RouteLogicProcess(void)
/*扣车、SPKS、PSD导致信号关闭又重开处理*/ /*扣车、SPKS、PSD导致信号关闭又重开处理*/
RouteRecoverOpenProc(routeId); RouteRecoverOpenProc(routeId);
/*进路调车同意逻辑处理*/
RouteDCTYLogicM(routeId);
/*根据进路状态清理相关标志*/ /*根据进路状态清理相关标志*/
ClearSomeFlagDependRouteState(routeId); ClearSomeFlagDependRouteState(routeId);
/*cgh-合并CID-2349-5*/ /*cgh-合并CID-2349-5*/
@@ -4436,22 +4360,37 @@ void NonRouteCancelDeal(UINT8 nonRouteId)
void UpdateZhaoChaDeal(const UINT16 routeId, const UINT8 routeState) void UpdateZhaoChaDeal(const UINT16 routeId, const UINT8 routeState)
{ {
UINT16 wSelfRealyId = 0U; /*本模式本端照查ID*/ UINT16 wSelfRealyId = 0U; /*本模式本端照查ID*/
UINT16 wOtherRealyId = 0U; /*本模式本端照查ID*/
UINT8 relauDrvState = 0U; UINT8 relauDrvState = 0U;
UINT8 chRouteLevel = GetRouteLevel(routeId);
UINT8 chOverTimeCheck = 0U; UINT8 chOverTimeCheck = 0U;
UINT32 dwTimeOutCycCount = 0U; UINT32 dwTimeOutCycCount = 0U;
UINT32 dwRouteLockStartCycNum = 0U;
wSelfRealyId = GetRouteThisZhaoChaRelayId(routeId); /*本端照查继电器ID*/ if (ROUTE_LEVEL_BLOC == chRouteLevel)
dwRouteLockStartCycNum = GetRouteLockStartCycNum(routeId); {
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,在下面不会处理*/
}
dwTimeOutCycCount = GetSystemParaSignalCloseCyc(); dwTimeOutCycCount = GetSystemParaSignalCloseCyc();
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))
{ {
if ((routeState == ROUTE_STATE_IDLE) || /*进路空闲 两种模式照查都吸起*/
(routeState == ROUTE_STATE_FIRST_XUANPAI) || if (0U < wSelfRealyId)
(routeState == ROUTE_STATE_XUANPAI) ||
(routeState == ROUTE_STATE_LEAD_FIRST_XUANPAI) ||
(routeState == ROUTE_STATE_LEAD_XUANPAI))
{ {
relauDrvState = GetRelayDriveState(wSelfRealyId); relauDrvState = GetRelayDriveState(wSelfRealyId);
if (RELAY_DRIVE_STATE_NULL == relauDrvState) if (RELAY_DRIVE_STATE_NULL == relauDrvState)
@@ -4459,15 +4398,34 @@ void UpdateZhaoChaDeal(const UINT16 routeId, const UINT8 routeState)
(void)SetRelayDriveState(wSelfRealyId, RELAY_STATE_UP); (void)SetRelayDriveState(wSelfRealyId, RELAY_STATE_UP);
} }
} }
else 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)
{ {
(void)SetRelayDriveState(wSelfRealyId, RELAY_STATE_DOWN); (void)SetRelayDriveState(wSelfRealyId, RELAY_STATE_DOWN);
relauDrvState = GetRelayCollState(wSelfRealyId); relauDrvState = GetRelayCollState(wSelfRealyId);
if (RELAY_STATE_DOWN != relauDrvState) if (RELAY_STATE_DOWN != relauDrvState)
{ /*照查继电器未落下*/ { /*照查继电器未落下*/
chOverTimeCheck = SystemOverTimeCheck(dwRouteLockStartCycNum, dwTimeOutCycCount); chOverTimeCheck = CheckRelayDriveOutTime(wSelfRealyId, dwTimeOutCycCount);
if (CI_TIME_OUT == chOverTimeCheck) if (CI_ERROR == chOverTimeCheck)
{/*照查超时超时*/ {/*照查超时超时*/
/*xxxxx宕机*/ /*xxxxx宕机*/
@@ -6047,8 +6005,6 @@ void DTrainReturnUnlockP(void)
UINT16 routeId = 0u; /*进路ID*/ UINT16 routeId = 0u; /*进路ID*/
UINT8 belongCiId = 0u; /*进路所属联锁ID*/ UINT8 belongCiId = 0u; /*进路所属联锁ID*/
UINT16 ii = 0u; /*循环索引*/ UINT16 ii = 0u; /*循环索引*/
UINT8 belongVirCIid = 0U;
UINT8 chLocalVirCiType = 0U;
routeCurSum = GetRouteCurSum(); /*获取进路总数*/ routeCurSum = GetRouteCurSum(); /*获取进路总数*/
@@ -6070,13 +6026,9 @@ void DTrainReturnUnlockP(void)
{ {
continue; continue;
} }
belongVirCIid = GetRouteBelongVirCiId(routeId);
chLocalVirCiType = GetLocalVirCiType(belongVirCIid); /*调车中途折返进路完整锁闭处理*/
if (CI_TYPE_CLD == chLocalVirCiType) DTrainReturnUnlockRouteAllLockP(routeId);
{
/*调车中途折返进路完整锁闭处理*/
DTrainReturnUnlockRouteAllLockP(routeId);
}
} }
/*处理调车中途折返*/ /*处理调车中途折返*/
@@ -6095,13 +6047,9 @@ void DTrainReturnUnlockP(void)
{ {
continue; continue;
} }
belongVirCIid = GetRouteBelongVirCiId(routeId);
chLocalVirCiType = GetLocalVirCiType(belongVirCIid); /*调车中途折返进路部分锁闭处理*/
if (CI_TYPE_CLD == chLocalVirCiType) DTrainRtnUnlockRoutePartLockP(routeId);
{
/*调车中途折返进路部分锁闭处理*/
DTrainRtnUnlockRoutePartLockP(routeId);
}
} }
} }
@@ -6120,11 +6068,6 @@ UINT16 GetReturnId(const UINT16 routeId)
UINT8 preRouteState = 0u; /* 之前进路状态 */ UINT8 preRouteState = 0u; /* 之前进路状态 */
UINT16 ii = 0u; UINT16 ii = 0u;
UINT8 toGo = CI_SUCCESS; UINT8 toGo = CI_SUCCESS;
UINT8 chRouteState = 0U;
UINT8 chRoutePhysicalType = 0U;
UINT8 chAllLockSecNoOccupyCheck = 0U;
UINT8 chTrainEnterRouteFlag = 0U;
routeState = GetRouteState(routeId); /*获取进路状态*/ routeState = GetRouteState(routeId); /*获取进路状态*/
preRouteState = GetRoutePreState(routeId);/*获取进路前一状态*/ preRouteState = GetRoutePreState(routeId);/*获取进路前一状态*/
@@ -6134,8 +6077,7 @@ UINT16 GetReturnId(const UINT16 routeId)
toGo = CI_ERROR; toGo = CI_ERROR;
} }
chAllLockSecNoOccupyCheck = RouteAllLockSecNoOccupyCheck(routeId); if ((CI_ERROR == RouteAllLockSecNoOccupyCheck(routeId)) && (CI_SUCCESS == toGo))
if ((CI_ERROR == chAllLockSecNoOccupyCheck) && (CI_SUCCESS == toGo))
{ /*进路区段不是都空闲*/ { /*进路区段不是都空闲*/
toGo = CI_ERROR; toGo = CI_ERROR;
@@ -6156,14 +6098,12 @@ UINT16 GetReturnId(const UINT16 routeId)
/*获取所有满足道岔条件的进路ID*/ /*获取所有满足道岔条件的进路ID*/
for (ii = 0u; ii < starSigRouteSum; ii++) for (ii = 0u; ii < starSigRouteSum; ii++)
{ {
chRouteState = GetRouteState(starSigRouteBuf[ii]);
chRoutePhysicalType = CheckRoutePhysicalType(starSigRouteBuf[ii]);
/*B库改为两条进路,当8编组车占压两条进路时,此时BG2进路解锁需要检查以差值信号机为始端的进路的状态*/ /*B库改为两条进路,当8编组车占压两条进路时,此时BG2进路解锁需要检查以差值信号机为始端的进路的状态*/
if ((ROUTE_STATE_IDLE == chRouteState) &&(CI_SUCCESS == chRoutePhysicalType)) if ((ROUTE_STATE_IDLE == GetRouteState(starSigRouteBuf[ii])) &&(CI_SUCCESS == CheckRoutePhysicalType(starSigRouteBuf[ii])) &&
(SIGNAL_VIRTUAL_YES == GetSignalVirtualAttr(returnSigId)))
{ {
/*以并置信号机为始端的进路均为空闲且进路包含的区段均为列检库区段,且并置信号机为虚拟信号机, /*以并置信号机为始端的进路均为空闲且进路包含的区段均为列检库区段,且并置信号机为虚拟信号机,
线(SIGNAL_VIRTUAL_YES == GetSignalVirtualAttr(returnSigId))*/ 线*/
/*联挂功能去掉虚拟信号机检查条件*/
} }
else else
{ {
@@ -6184,17 +6124,16 @@ UINT16 GetReturnId(const UINT16 routeId)
{ {
/*当前状态是接近锁闭异常*/ /*当前状态是接近锁闭异常*/
/* 如果是差至,如果列车驶入过进路,同时之前状态必须为接近锁闭开放 /* 如果是差至,如果列车驶入过进路,同时之前状态必须为接近锁闭正常(列车压入,信号关闭)
* *
*/ */
chTrainEnterRouteFlag = GetTrainEnterRouteFlag(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 == chTrainEnterRouteFlag))
{ {
returnSigId = GetRouteChaZhiSignalId(routeId); /*获取差置信号机ID*/ returnSigId = GetRouteChaZhiSignalId(routeId); /*获取差置信号机ID*/
} }
else else
{ {
returnSigId = 0U; returnSigId = 0u;
} }
} }
} }
@@ -6227,8 +6166,6 @@ void DTrainReturnUnlockRouteAllLockP(const UINT16 routeId)
UINT8 chLockBelRouteType = 0U;/*区段锁闭所属进路进路类型*/ UINT8 chLockBelRouteType = 0U;/*区段锁闭所属进路进路类型*/
UINT8 chTrainEnterRouteFlag = 0U;/*列车驶入进路标志*/ UINT8 chTrainEnterRouteFlag = 0U;/*列车驶入进路标志*/
UINT8 chRouteInOutSecOccupy = 0U;/*进路内外方同时占压标志*/ UINT8 chRouteInOutSecOccupy = 0U;/*进路内外方同时占压标志*/
UINT32 dwRoutLockCycNum = 0U;
UINT32 dwReturnRoutLockCycNum = 0U;
routeState = GetRouteState(routeId); /*获取进路状态*/ routeState = GetRouteState(routeId); /*获取进路状态*/
routeType = GetRouteType(routeId); routeType = GetRouteType(routeId);
@@ -6270,16 +6207,14 @@ void DTrainReturnUnlockRouteAllLockP(const UINT16 routeId)
wLockRouteStartSigId = GetRouteStartSignalId(lockBelongRouteId);/*获取进路始端信号机ID*/ wLockRouteStartSigId = GetRouteStartSignalId(lockBelongRouteId);/*获取进路始端信号机ID*/
chTrainEnterRouteFlag = CheckTrainEnterRoute(lockBelongRouteId);/*获取列车驶入进路标志*/ chTrainEnterRouteFlag = CheckTrainEnterRoute(lockBelongRouteId);/*获取列车驶入进路标志*/
chRouteInOutSecOccupy = RouteInOutSecOccupy(lockBelongRouteId);/*进路内外方同时占用标志*/ chRouteInOutSecOccupy = RouteInOutSecOccupy(lockBelongRouteId);/*进路内外方同时占用标志*/
dwRoutLockCycNum = GetRouteLockStartCycNum(routeId); /*获取进路锁闭起始周期*/
dwReturnRoutLockCycNum = GetRouteLockStartCycNum(lockBelongRouteId);/*获取折出进路锁闭起始周期*/
if ((ROUTE_STATE_NEAR_OPEN == chLockBelRouteState) && (ROUTE_TYPE_DIAOCHE == chLockBelRouteType) && if ((ROUTE_STATE_NEAR_OPEN == chLockBelRouteState) && (ROUTE_TYPE_DIAOCHE == chLockBelRouteType) &&
(returnSigId == wLockRouteStartSigId) && (dwReturnRoutLockCycNum > dwRoutLockCycNum) && (returnSigId == wLockRouteStartSigId) &&
((CI_SUCCESS == chTrainEnterRouteFlag) || ((CI_SUCCESS == chTrainEnterRouteFlag) ||
((CI_SUCCESS == chRouteInOutSecOccupy) && (ROUTE_TYPE_LIECHE == routeType)))) ((CI_SUCCESS == chRouteInOutSecOccupy) && (ROUTE_TYPE_LIECHE == routeType))))
{ {
/*折出进路是调车进路&&状态是接近开放&&折出进路始端信号机是本进路折返信号机 &&(有车驶入 或 待解锁进路为列车进路是折出进路时内外方区段同时占压)*/ /*折出进路是调车进路&&状态是接近开放&&折出进路始端信号机是本进路折返信号机 &&(有车驶入 或 待解锁进路为列车进路是折出进路时内外方区段同时占压)*/
/*by cgh 20250414增加条件:折出进路锁闭时间晚于需中途解锁进路*/
/*解锁成功*/ /*解锁成功*/
SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*设置进路区段未锁闭*/ SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*设置进路区段未锁闭*/
@@ -6289,10 +6224,10 @@ void DTrainReturnUnlockRouteAllLockP(const UINT16 routeId)
SetRouteStateDeal(routeId, ROUTE_STATE_IDLE); /*设置进路状态为空闲*/ SetRouteStateDeal(routeId, ROUTE_STATE_IDLE); /*设置进路状态为空闲*/
} }
if ((ROUTE_TYPE_LIECHE == chLockBelRouteType) && (ROUTE_STATE_NEAR_LOCK == chLockBelRouteState) if ((ROUTE_TYPE_LIECHE == chLockBelRouteType) && (ROUTE_STATE_NEAR_LOCK == chLockBelRouteState)
&& (returnSigId == wLockRouteStartSigId) && (dwReturnRoutLockCycNum > dwRoutLockCycNum)) && (returnSigId == wLockRouteStartSigId))
{ {
/*折出进路是列车进路 且 进路状态是接近锁闭正常 且 折出进路始端信号机是本进路折返信号机*/ /*折出进路是列车进路 且 进路状态是接近锁闭正常 且 折出进路始端信号机是本进路折返信号机*/
/*by cgh 20250414增加条件:折出进路锁闭时间晚于需中途解锁进路*/
/*解锁成功*/ /*解锁成功*/
SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*设置进路区段未锁闭*/ SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*设置进路区段未锁闭*/
/*设置进路逻辑区段: 未锁闭*/ /*设置进路逻辑区段: 未锁闭*/
@@ -6330,8 +6265,6 @@ void DTrainRtnUnlockRemoteRAllLockP(const UINT16 routeId)
UINT8 chLockBelRouteType = 0U;/*区段锁闭所属进路进路类型*/ UINT8 chLockBelRouteType = 0U;/*区段锁闭所属进路进路类型*/
UINT8 chTrainEnterRouteFlag = 0U;/*列车驶入进路标志*/ UINT8 chTrainEnterRouteFlag = 0U;/*列车驶入进路标志*/
UINT8 chRouteInOutSecOccupy = 0U;/*进路内外方同时占压标志*/ UINT8 chRouteInOutSecOccupy = 0U;/*进路内外方同时占压标志*/
UINT32 dwRoutLockCycNum = 0U;
UINT32 dwReturnRoutLockCycNum = 0U;
routeState = GetRouteState(routeId); /*获取进路状态*/ routeState = GetRouteState(routeId); /*获取进路状态*/
routeType = GetRouteType(routeId); routeType = GetRouteType(routeId);
@@ -6379,16 +6312,13 @@ void DTrainRtnUnlockRemoteRAllLockP(const UINT16 routeId)
wLockRouteStartSigId = GetRouteStartSignalId(lockBelongRouteId);/*获取进路始端信号机ID*/ wLockRouteStartSigId = GetRouteStartSignalId(lockBelongRouteId);/*获取进路始端信号机ID*/
chTrainEnterRouteFlag = CheckTrainEnterRoute(lockBelongRouteId);/*获取列车驶入进路标志*/ chTrainEnterRouteFlag = CheckTrainEnterRoute(lockBelongRouteId);/*获取列车驶入进路标志*/
chRouteInOutSecOccupy = RouteInOutSecOccupy(lockBelongRouteId);/*进路内外方同时占用标志*/ chRouteInOutSecOccupy = RouteInOutSecOccupy(lockBelongRouteId);/*进路内外方同时占用标志*/
dwRoutLockCycNum = GetRouteLockStartCycNum(routeId); /*获取进路锁闭起始周期*/
dwReturnRoutLockCycNum = GetRouteLockStartCycNum(lockBelongRouteId);/*获取折出进路锁闭起始周期*/
if ((ROUTE_STATE_NEAR_OPEN == chLockBelRouteState) && (ROUTE_TYPE_DIAOCHE == chLockBelRouteType) && if ((ROUTE_STATE_NEAR_OPEN == chLockBelRouteState) && (ROUTE_TYPE_DIAOCHE == chLockBelRouteType) &&
(returnSigId == wLockRouteStartSigId) && (dwReturnRoutLockCycNum > dwRoutLockCycNum) && (returnSigId == wLockRouteStartSigId) &&
((CI_SUCCESS == chTrainEnterRouteFlag) || ((CI_SUCCESS == chTrainEnterRouteFlag) ||
((CI_SUCCESS == chRouteInOutSecOccupy) && (ROUTE_TYPE_LIECHE== routeType)))) ((CI_SUCCESS == chRouteInOutSecOccupy) && (ROUTE_TYPE_LIECHE== routeType))))
{ {
/*折出进路是调车进路&&状态是接近开放&&折出进路始端信号机是本进路折返信号机 &&(有车驶入 或 待解锁进路为列车进路是折出进路时内外方区段同时占压)*/ /*折出进路是调车进路&&状态是接近开放&&折出进路始端信号机是本进路折返信号机 &&(有车驶入 或 待解锁进路为列车进路是折出进路时内外方区段同时占压)*/
/*by cgh 20250414增加条件:折出进路锁闭时间晚于需中途解锁进路*/
/*解锁成功*/ /*解锁成功*/
SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*设置进路区段未锁闭*/ SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*设置进路区段未锁闭*/
/*设置进路逻辑区段: 未锁闭*/ /*设置进路逻辑区段: 未锁闭*/
@@ -6396,10 +6326,9 @@ void DTrainRtnUnlockRemoteRAllLockP(const UINT16 routeId)
SetRouteStateDeal(routeId, ROUTE_STATE_IDLE); /*设置进路状态为空闲*/ SetRouteStateDeal(routeId, ROUTE_STATE_IDLE); /*设置进路状态为空闲*/
} }
if ((ROUTE_TYPE_LIECHE== chLockBelRouteType) && (ROUTE_STATE_NEAR_LOCK == chLockBelRouteState) if ((ROUTE_TYPE_LIECHE== chLockBelRouteType) && (ROUTE_STATE_NEAR_LOCK == chLockBelRouteState)
&& (returnSigId == wLockRouteStartSigId) && (dwReturnRoutLockCycNum > dwRoutLockCycNum)) && (returnSigId == wLockRouteStartSigId))
{ {
/*折出进路是列车进路 且 进路状态是接近锁闭正常 且 折出进路始端信号机是本进路折返信号机*/ /*折出进路是列车进路 且 进路状态是接近锁闭正常 且 折出进路始端信号机是本进路折返信号机*/
/*by cgh 20250414增加条件:折出进路锁闭时间晚于需中途解锁进路*/
/*解锁成功*/ /*解锁成功*/
SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*设置进路区段未锁闭*/ SetRoutePhySectionLockState(routeId, PHYSICAL_SECTION_LOCK_NO); /*设置进路区段未锁闭*/
/*设置进路逻辑区段: 未锁闭*/ /*设置进路逻辑区段: 未锁闭*/
@@ -7140,232 +7069,58 @@ UINT8 CLDPhySectionFaultUnlockDeal(const UINT16 phySectionId,const UINT16 lockBe
} }
/* /*
* *
* * void
* void * void
by hh 20251208
*/ */
void CancelWashWorkLogicM(void) void CancelWashWorkLogicM(void)
{ {/*取消洗车命令*/
UINT16 washMachineId = 0U; /*洗车机ID*/ UINT16 washMachineId = 0u;
UINT16 wDownWashRelateRouteFirstId = 0U; /*降级模式洗车线控制台表示灯1关联进路ID*/ washMachineId = GetWashMachineId(0u);
UINT8 chRouteState = 0U;/*进路状态*/ #if 0
UINT8 downWashAllowState = 0U;/*降级模式洗车同意状态(融合)*/ SetCancelWashMachineFlag(washMachineId,CANCEL_WASH_FLAG_SET_YES);
UINT8 washMachineButtonType = GetCiFunctionSwitchConfig(FUNC_WDOWNWASH_ZIFUSHI_BUTTON); /*降级模式洗车同意按钮自复式类型*/ #endif
washMachineId = GetWashMachineId(0U); if (washMachineId >0u)
{/*收到现地取消洗车命令,直接把洗车同意按钮状逻辑态置为抬起*/
if ((FUNC_SWITCH_ON == washMachineButtonType) && (washMachineId > 0u) && (washMachineId < WASHMACHINE_SUM_MAX)) (void)SetWashmachineXTALogicState(washMachineId,XTA_STATE_RAISE_UP);
{
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 * void
* by cgh 20250523
*/ */
void RouteDCTYLogic(UINT16 routeId) void RouteDCTYLogicM(UINT16 routeId)
{ {
UINT8 routeType = 0U; UINT8 routeType = 0u;
UINT8 routeState = 0U; UINT8 routeState = 0u;
UINT16 routeDCQJId = 0U; UINT16 routeDCQJId = 0u;
UINT16 routeDCQJTwoId = 0U;
routeType = GetRouteType(routeId);/*进路类型*/ routeType = GetRouteType(routeId);/*进路类型*/
routeState = GetRouteState(routeId);/*进路状态*/ routeState = GetRouteState(routeId);/*进路状态*/
routeDCQJId = GetRouteDCQJId(routeId); routeDCQJId = GetRouteDCQJId(routeId);
routeDCQJTwoId = GetRouteDCQJTwoId(routeId); if ((routeDCQJId >0u) && (ROUTE_TYPE_DIAOCHE == routeType))
if ((0U < routeDCQJId) && (0U < routeDCQJTwoId) && (ROUTE_TYPE_DIAOCHE == routeType))
{/*调车请求继电器ID存在,且是调车进路*/ {/*调车请求继电器ID存在,且是调车进路*/
if((ROUTE_STATE_FIRST_LOCK == routeState) || if((ROUTE_STATE_FIRST_LOCK == routeState) ||
(ROUTE_STATE_FIRST_LOCKERR == routeState) || (ROUTE_STATE_FIRST_LOCKERR == routeState) ||
(ROUTE_STATE_YUXIAN_LOCK == routeState) || (ROUTE_STATE_YUXIAN_LOCK == routeState) ||
(ROUTE_STATE_YUXIAN_OPEN == routeState) || (ROUTE_STATE_YUXIAN_OPEN == routeState) ||
(ROUTE_STATE_NEAR_OPEN == routeState) || (ROUTE_STATE_NEAR_OPEN == routeState) ||
(ROUTE_STATE_NEAR_LOCK == routeState) ||
(ROUTE_STATE_NEAR_LOCKERR == routeState)|| (ROUTE_STATE_NEAR_LOCKERR == routeState)||
(ROUTE_STATE_AUTO_UNLOCK == routeState) || (ROUTE_STATE_LEAD_LOCK == routeState) ||
(ROUTE_STATE_AUTO_UNLOCKERR == routeState) || (ROUTE_STATE_LEAD_LOCKERR == routeState) ||
(ROUTE_STATE_DELAY_UNLOCK == routeState)) (ROUTE_STATE_LEAD_OPEN == routeState) ||
{ (ROUTE_STATE_DELAY_UNLOCK == routeState) ||
/*进路存在锁闭:进路初锁、进路初锁异常、预先锁闭、预先开放、接近开放、接近锁闭异常、接近锁闭正常、延时解锁、自动解锁正常、自动解锁异常*/ (ROUTE_STATE_NEAR_LOCK == routeState))
SetRouteDCQState(routeId,ROUTE_DCQ_REQUEST);/*设置进路调车请求状态调车请求有效*/ {/*进路是完整锁闭:进路初锁、进路初锁异常、预先锁闭、预先开放、接近开放、接近锁闭异常、接近锁闭正常
*/
(void)SetRouteDCQState(routeId,ROUTE_DCQ_REQUEST);/*设置进路调车请求状态为调车请求*/
} }
else else
{ {/*非完整锁闭设置进路调车请求状态为非调车请求*/
/*其它情况设置进路调车请求状态为调车请求无效;调车同意状态无效*/ (void)SetRouteDCQState(routeId,ROUTE_DCQ_NOT_REQUEST);
SetRouteDCQState(routeId,ROUTE_DCQ_NOT_REQUEST);
SetRouteDCTYState(routeId, ROUTE_DCT_NOT_AGREE);
} }
} }
else
{
; /*不处理*/
}
} }
/* /*
@@ -766,44 +766,18 @@ UINT16 GetReturnId(const UINT16 routeId);
void DTrainRtnUnlockRemoteRAllLockP(const UINT16 routeId); void DTrainRtnUnlockRemoteRAllLockP(const UINT16 routeId);
/* /*
* *
* * void
* void * void
by hh 20251208
*/ */
void CancelWashWorkLogicM(void); 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 * void
* by cgh 20250523
*/ */
void RouteDCTYLogic(UINT16 routeId); void RouteDCTYLogicM(UINT16 routeId);
/* /*
* *
File diff suppressed because it is too large Load Diff
@@ -946,18 +946,6 @@ UINT8 RouteAllSecJumpLockStateCheck(UINT16 const routeId,UINT16 *pDevId,UINT8 *p
* CI_SUCCESS * CI_SUCCESS
*/ */
UINT8 KeepRouteSwitchCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel); 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);
/* /*
* *
* *
@@ -982,18 +970,6 @@ UINT8 KeepLTrainRouteSignalCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel
*/ */
UINT8 LockBlocRouteSwitchCheck(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);
/* /*
* *
* *
@@ -1045,6 +1021,14 @@ CI_ERROR:
*/ */
UINT8 CheckRouteZongRenJieFeasibility(const UINT16 routeId); UINT8 CheckRouteZongRenJieFeasibility(const UINT16 routeId);
/*
* 绿
* const UINT16 routeId, ID
* UINT8
CI_SUCCESS:
CI_ERROR:
*/
UINT8 CheckDiaoCheRouteZRJFeasibility(const UINT16 routeId);
/* /*
@@ -1189,17 +1173,6 @@ UINT8 OpenLTrainRouteSignalCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel
*/ */
UINT8 OpenBlocRouteSwitchCheck(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_点式进路开放信号保护区段联锁条件检查 */ /* L10_点式进路开放信号保护区段联锁条件检查 */
/* /*
* *
@@ -1524,7 +1497,6 @@ UINT8 AxisSecAllSwitchPosCheck(UINT16 const axisSecId,UINT16 *pDevId,UINT8 *pDev
* UINT16 const routeId, * UINT16 const routeId,
* CI_ERROR * CI_ERROR
* CI_SUCCESS * CI_SUCCESS
* qw.liu 使
*/ */
UINT8 RouteOutfirstPhySecSwiPosCheck(UINT16 const routeId); UINT8 RouteOutfirstPhySecSwiPosCheck(UINT16 const routeId);
/* /*
@@ -1897,7 +1869,15 @@ UINT8 LockLeadRouteSectionCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLeve
*/ */
UINT8 LogicSecSwitchLtrlDfncCheck(UINT16 const wLgcId, UINT16 *pDevId, UINT8 *pDevState); 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);
/* /*
* 线 * 线
@@ -2231,7 +2211,15 @@ UINT8 LogSecSeqIncUTCheck(const UINT16 wTrainId, const UINT8 cLogSecSum, const U
*/ */
UINT8 RouteHalfProSwitchFLockCheck(UINT16 const routeId, UINT16* pDevId, UINT8* pDevState, UINT8* pYLockAlarmFlag); 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);
/* /*
* 线 * 线
@@ -2306,7 +2294,7 @@ UINT16 SearchNonMainRoute(UINT8 cRouteSum, UINT16 wRouteIdBuff[]);
UINT8 SwitchRelLogSecLSXSStateCheck(UINT16 switchId, UINT16* pLogSecId, UINT8* pLogState); UINT8 SwitchRelLogSecLSXSStateCheck(UINT16 switchId, UINT16* pLogSecId, UINT8* pLogState);
/* /*
* *
* UINT16 const routeId, * UINT16 const routeId,
* CI_ERROR * CI_ERROR
* CI_SUCCESS * CI_SUCCESS
@@ -2518,7 +2506,16 @@ UINT8 CheckRouteZhefanJiesuo(UINT16 const routeId);
*/ */
UINT8 CheckOverlapPhysecOtherLock(UINT16 const overlapId, UINT16* pDevId, UINT8* pDevState); 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区域属性 * CBTC区域属性
@@ -2617,15 +2614,13 @@ UINT8 CtTrainHeadSuspCheck(const UINT16 wTrainId, const UINT8 cLogSecSeqDir, con
* *
* const UINT8 cLogSecSum * const UINT8 cLogSecSum
* const UINT16* pLogSecIdBuff * const UINT16* pLogSecIdBuff
* const UINT16 wTrainId ID * const UINT16 wTrainId
* const UINT8 cFunctionId ID
* const UINT8 cSendLevel
* *
* CI_ERROR 0 * CI_ERROR 0
* CI_SUCCESS 1 * CI_SUCCESS 1
* Created By LQ 2024.09.05 * Created By LQ 2024.09.05
*/ */
UINT8 LogSecSeqAndTrainPosCheckCLD(const UINT8 cLogSecSum, const UINT16* pLogSecIdBuff, const UINT16 wTrainId, const UINT8 cFunctionId, const UINT8 cSendLevel); UINT8 LogSecSeqAndTrainPosCheckCLD(const UINT8 cLogSecSum, const UINT16* pLogSecIdBuff, const UINT16 wTrainId);
/* /*
* *
@@ -2724,323 +2719,5 @@ UINT8 OverlapProSwUsingCheck(const UINT16 wOverlapId, UINT16* pDevId, UINT8* pDe
*/ */
UINT8 RouteRelAllSwitchPosCheck(UINT16 const routeId); 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);
/*
*
* const UINT16 axisSecId ID
* CI_ERROR
* CI_SUCCESS
* add by mpt 20260331
*/
UINT8 JumpPhySectionUseCheck(const UINT16 axisSecId);
/*
*
* const UINT16 axisSecId ID
* CI_ERROR
* CI_SUCCESS
* add by mpt 20260331
*/
UINT8 JumpPhySectionPortectUseCheck(const UINT16 axisSecId);
/*
*
* const UINT16 axisSecId ID
* CI_ERROR
* CI_SUCCESS
* add by mpt 20260331
*/
UINT8 JumpLogicSecPortectUseCheck(const UINT16 wLgcId);
/*
*
* const UINT16 axisSecId ID
* CI_ERROR
* CI_SUCCESS
* add by mpt 20260331
*/
UINT8 JumpPhySectionSwitchUseCheck(const UINT16 axisSecId);
/*
*
* const UINT16 axisSecId ID
* const UINT8 state
* void
* add by mpt 20260331
*/
void SetJumpPhySectionPortectSecUse(const UINT16 axisSecId, const UINT8 state);
/*
*
* const UINT16 axisSecId ID
* const UINT8 state
* void
* add by mpt 20260331
*/
void SetJumpLogicSecPortectUse(const UINT16 wLgcId, const UINT8 state);
/*
*
* const UINT16 routeId, ID
* UINT8
CI_SUCCESS:
CI_ERROR:
add by mpt 20260331
*/
UINT8 ChekJumpLockProtectSwitDrivOvtmStat(const UINT16 axisSecId);
/*
*
* UINT16 const axisSecId,
* UINT16 *pDevId, Id
* UINT8 *pDevState,
* CI_ERROR
* CI_SUCCESS
* Add by mpt 20260331
*/
UINT8 AxisSecProtSwitchFLockCheck(UINT16 const axisSecId, UINT16* pDevId, UINT8* pDevState);
/*
*
* UINT16 const axisSecId,
* UINT16 *pDevId, Id
* UINT8 *pDevState,
* CI_ERROR
* CI_SUCCESS
* add by mpt 20260331
*/
UINT8 AxisSecPorteSwitchPosMoveCheck(UINT16 const axisSecId, UINT16* pDevId, UINT8* pDevState, UINT8 funcId, UINT8 sendLevel);
/*
*
* UINT16 const axisSecId,
* UINT16 *pDevId, Id
* UINT8 *pDevState,
* CI_ERROR
* CI_SUCCESS
* add mpt 20260331
*/
UINT8 AxisSecAllProtSwitchPosCheck(UINT16 const axisSecId, UINT16* pDevId, UINT8* pDevState);
/*
*
* const UINT16 axisSecId, ID
* const UINT8 lockCommand,
* void
* add by mpt 20260331
*/
void SetAxisRelProSwitchLockSta(const UINT16 axisSecId, const UINT8 lockCommand);
/*
*
* UINT16 const routeId,
* UINT16 *pDevId, Id
* UINT8 *pDevState,
* CI_ERROR
* CI_SUCCESS
* add mpt 20260331
*/
UINT8 AxisRelatedProSwitchLockCheck(UINT16 const axisSecId, UINT16* pDevId, UINT8* pDevState);
/*
*
* UINT16 const routeId, ID
* UINT16 *pDevId, Id
* UINT8 *pDevState,
* CI_ERROR
* CI_SUCCESS
* add by mpt 20260331
*/
UINT8 LogicSecRltvPrtctSwFlockCheck(UINT16 const wLgcId, UINT16* pDevId, UINT8* pDevState);
/*
*
* const UINT16 axisSecId, ID
* const UINT8 lockCommand,
* void
* add by mpt 20260331
*/
void SetLogSecRelProSwitchLockSta(const UINT16 wLgcId, const UINT8 lockCommand);
#endif #endif
File diff suppressed because it is too large Load Diff
@@ -325,11 +325,10 @@ UINT8 PhySectionDelayUnlockProcess(const UINT16 routeId, UINT16* phySectionId);
/* C25_解锁进路overlap逻辑处理 */ /* C25_解锁进路overlap逻辑处理 */
/* /*
* overlap逻辑处理 * overlap逻辑处理
* const UINT16 routeId * const UINT16 routeId
* CI_ERROR 0x00 * CI_ERROR
* CI_SUCCESS 0x01 * CI_SUCCESS
* CI_UNLOCK_OVERLAP_REQURE 0x02 ZC/ * CI_UNLOCK_OVERLAP_REQURE ZC申请解锁保护区段
* CI_OVERLAP_OCC_UNLOCK 0x06
* EFUNC_UNLOCK_OVER_LAP * EFUNC_UNLOCK_OVER_LAP
*/ */
UINT8 UnlockRouteOverlapLogicProcess(const UINT16 routeId, UINT16* overlapId, UINT16* pTrainId); UINT8 UnlockRouteOverlapLogicProcess(const UINT16 routeId, UINT16* overlapId, UINT16* pTrainId);
@@ -688,16 +687,15 @@ void LgcSecUnlockProc(const UINT16 routeId, const UINT16 logSectionId);
* void * void
*/ */
void RouteLgcSecResReleaseProcess(const UINT16 wRouteId); void RouteLgcSecResReleaseProcess(const UINT16 wRouteId);
/* /*
* *
* const UINT16 overlapId, ID * const UINT16 overlapId, ID
* const UINT16 wRouteId ID * const UINT32 dwOverlapUnlockCount
* const UINT32 dwOverlapUnlockStartCyc
* CI_SUCCESS: * CI_SUCCESS:
CI_ERROR: CI_ERROR:
* edit cgh 20250928
*/ */
UINT8 CheckOverlapLaborUnlock(const UINT16 overlapId, const UINT16 wRouteId); UINT8 CheckOverlapLaborUnlock(const UINT16 overlapId, const UINT32 dwOverlapUnlockCount, const UINT32 dwOverlapUnlockStartCyc);
/* /*
* *
* const UINT16 overlapId, ID * const UINT16 overlapId, ID
@@ -825,23 +823,6 @@ UINT8 RouteLgcSecResReturnSecCheck(UINT16 wValidReturnSigId, const UINT16 wRoute
*/ */
UINT8 LgcOverlapUsableProcess(UINT16 const wLgcSecId); UINT8 LgcOverlapUsableProcess(UINT16 const wLgcSecId);
#endif #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 #ifdef __cplusplus
} }
#endif #endif
@@ -823,7 +823,7 @@ UINT8 SetLogRouteSwitchCheck(UINT16 logRouteId, UINT8 functionId, UINT8 sendLeve
{ {
devId = 0u; devId = 0u;
devState = 0u; devState = 0u;
checkResult = LogRouteCeFangSwitchCheck(logRouteId, functionId, sendLevel); checkResult = LogRouteCeFangSwitchCheck(logRouteId, &devId, &devState);
if (CI_SUCCESS == checkResult) if (CI_SUCCESS == checkResult)
{ {
/* 通过检查 */ /* 通过检查 */
@@ -831,7 +831,8 @@ UINT8 SetLogRouteSwitchCheck(UINT16 logRouteId, UINT8 functionId, UINT8 sendLeve
} }
else else
{ {
/* 记录故障码 */
SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_NO_UT_CT_OCU_STATE, devState, sendLevel);
/* 失败返回 */ /* 失败返回 */
reResult = CI_ERROR; reResult = CI_ERROR;
} }
@@ -1033,7 +1034,7 @@ UINT8 LockLogRouteSwitchCheck(UINT16 logRouteId, UINT8 functionId, UINT8 sendLev
{ {
devId = 0u; devId = 0u;
devState = 0u; devState = 0u;
checkResult = LogRouteCeFangSwitchCheck(logRouteId, functionId, sendLevel); checkResult = LogRouteCeFangSwitchCheck(logRouteId, &devId, &devState);
if (CI_SUCCESS == checkResult) if (CI_SUCCESS == checkResult)
{ {
/* 通过检查 */ /* 通过检查 */
@@ -1041,7 +1042,8 @@ UINT8 LockLogRouteSwitchCheck(UINT16 logRouteId, UINT8 functionId, UINT8 sendLev
} }
else else
{ {
/* 记录故障码 */
SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_NO_UT_CT_OCU_STATE, devState, sendLevel);
/* 失败返回 */ /* 失败返回 */
reResult = CI_ERROR; reResult = CI_ERROR;
} }
@@ -1296,39 +1298,46 @@ UINT8 LogRouteProSwitchFLockCheck(UINT16 const routeId, UINT16* pDevId, UINT8* p
/* /*
* *
* UINT16 routeId, * UINT16 routeId,
* UINT8 functionId, ID * UINT16 *pDevId, Id
* UINT8 sendLevel * UINT8 *pDevState,
* CI_ERROR * CI_ERROR
* CI_SUCCESS * CI_SUCCESS
*/ */
UINT8 LogRouteCeFangSwitchCheck(UINT16 const routeId,UINT8 functionId, UINT8 sendLevel) UINT8 LogRouteCeFangSwitchCheck(UINT16 const routeId, UINT16* pDevId, UINT8* pDevState)
{ {
/* 进路区段*/
UINT16 const checkSum = GetLogicalRouteInLogSecSum(routeId);
UINT16* const dataIdBuf = GetLogicalRouteInLogSecId(routeId);
/* 局部变量定义初始化 */ /* 局部变量定义初始化 */
UINT8 i = 0u; /* 循环变量 */ UINT16 i = 0u; /* 循环变量 */
UINT16 devId = 0u;
UINT8 reVal = CI_ERROR; UINT8 reVal = CI_ERROR;
SideProtecStru* pLogRoutSidePrtectData = NULL;
UINT8 chLogRoutSidePrtectDataNum = 0u;
UINT8 cDevType = 0u; if ((0u == checkSum) || (NULL == pDevId) || (NULL == pDevState))
UINT8 cDevStateType = 0u;
UINT16 cDevId = 0u;
UINT8 cDevState = 0u;
pLogRoutSidePrtectData = GetLogRoutSidePrtectData(routeId);
chLogRoutSidePrtectDataNum = GetLogRoutSidePrtectDataNum(routeId);
if (NULL == pLogRoutSidePrtectData)
{ {
/*区段数据错误*/ /*区段数据错误*/
reVal = CI_ERROR; reVal = CI_ERROR;
} }
else else
{ {
reVal = CI_SUCCESS; /*开始检查*/
/*功能预留*/ for (i = 0u; i < checkSum; i++)
{
devId = dataIdBuf[i];
reVal = LogicSecSwitchLtrlDfncCheck(devId, pDevId, pDevState);
if (CI_SUCCESS == reVal)
{
/* 通过检查*/
}
else
{
/*状态不一致返回故障状态*/
reVal = CI_ERROR;
break;
}
}
} }
/*全部通过检查*/ /*全部通过检查*/
return reVal; return reVal;
} }
@@ -2791,7 +2800,7 @@ UINT8 KeepLogRouteSwitchCheck(UINT16 wLogRouteId, UINT8 functionId, UINT8 sendLe
{ {
devId = 0u; devId = 0u;
devState = 0u; devState = 0u;
checkResult = LogRouteCeFangSwitchCheck(wLogRouteId, functionId, sendLevel); checkResult = LogRouteCeFangSwitchCheck(wLogRouteId, &devId, &devState);
if (CI_SUCCESS == checkResult) if (CI_SUCCESS == checkResult)
{ {
/* 通过检查 */ /* 通过检查 */
@@ -2799,7 +2808,8 @@ UINT8 KeepLogRouteSwitchCheck(UINT16 wLogRouteId, UINT8 functionId, UINT8 sendLe
} }
else else
{ {
/* 记录故障码 */
SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_NO_UT_CT_OCU_STATE, devState, sendLevel);
/* 失败返回 */ /* 失败返回 */
reResult = CI_ERROR; reResult = CI_ERROR;
} }
@@ -138,12 +138,12 @@ UINT8 LogRouteProSwitchFLockCheck(UINT16 const routeId, UINT16* pDevId, UINT8* p
/* /*
* *
* UINT16 routeId, * UINT16 routeId,
* UINT8 functionId, ID * UINT16 *pDevId, Id
* UINT8 sendLevel * UINT8 *pDevState,
* CI_ERROR * CI_ERROR
* CI_SUCCESS * CI_SUCCESS
*/ */
UINT8 LogRouteCeFangSwitchCheck(UINT16 const routeId, UINT8 functionId, UINT8 sendLevel); UINT8 LogRouteCeFangSwitchCheck(UINT16 const routeId, UINT16* pDevId, UINT8* pDevState);
/* /*
* 线 * 线
@@ -28,47 +28,23 @@ UINT8 SetLTrainRouteP(const UINT16 routeId)
/* 局部变量定义初始化 */ /* 局部变量定义初始化 */
UINT8 devState = 0U; /*设备状态*/ UINT8 devState = 0U; /*设备状态*/
UINT8 reResult = CI_ERROR; /*返回值*/ UINT8 reResult = CI_ERROR; /*返回值*/
UINT8 chRouteCouplinkFlag = 0U;
UINT8 chRouteLevel = 0U;
/* 联锁条件检查 */ /* 联锁条件检查 */
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/
chRouteLevel = GetRouteLevel(routeId); /*获取进路监督级别*/
devState = GetRouteState(routeId); devState = GetRouteState(routeId);
if ((ROUTE_COUPLINK_FLAG_YES == chRouteCouplinkFlag) && (ROUTE_LEVEL_CBTC == chRouteLevel)) /*进路状态空闲或初选或自动解锁异常(ARB且故障锁闭)*/
if ((ROUTE_STATE_IDLE == devState) || (ROUTE_STATE_FIRST_XUANPAI == devState) || (ROUTE_STATE_AUTO_UNLOCKERR == devState))
{ {
/* 进路状态条件:进路状态空闲、进路初选、自动解锁正常、自动解锁异常(ARB)、初锁异常、预先锁闭、接近锁闭正常、接近锁闭异常都可以办理联挂进路 */ /* 返回成功 */
if ((ROUTE_STATE_IDLE == devState) || (ROUTE_STATE_FIRST_XUANPAI == devState) || (ROUTE_STATE_FIRST_LOCKERR == devState) reResult = CI_SUCCESS;
|| (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 else
{ {
/*进路状态空闲或初选或自动解锁异常(ARB且故障锁闭)*/ /* 记录故障码 */
if ((ROUTE_STATE_IDLE == devState) || (ROUTE_STATE_FIRST_XUANPAI == devState) || (ROUTE_STATE_AUTO_UNLOCKERR == devState)) SetErrorData(functionId, CI_DEVICE_TYPE_ROUTE, routeId, ETYPE_ROUTE_STATE, devState, sendLevel);
{ /* 失败返回 */
/* 返回成功 */ reResult = CI_ERROR;
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)))*/ /*if ((CI_SUCCESS == reResult) && (CI_ERROR == SetLTrainRouteSignalCheck(routeId,functionId,sendLevel)))*/
@@ -205,7 +181,6 @@ UINT8 SetLeadRouteP(const UINT16 routeId)
UINT16 devId = 0u; /*设备ID*/ UINT16 devId = 0u; /*设备ID*/
UINT8 devState = 0u; /*设备状态*/ UINT8 devState = 0u; /*设备状态*/
UINT8 reResult = CI_SUCCESS; /*返回值*/ UINT8 reResult = CI_SUCCESS; /*返回值*/
UINT8 cFuncSwitch = FUNC_SWITCH_ON; /*引导进路是否检查防淹门开关*/
/* 联锁条件检查 */ /* 联锁条件检查 */
devId = routeId; devId = routeId;
@@ -242,7 +217,7 @@ UINT8 SetLeadRouteP(const UINT16 routeId)
} }
/*道岔联锁条件检查*/ /*道岔联锁条件检查*/
if ((CI_SUCCESS == reResult) && (CI_ERROR == SetLeadRouteSwitchCheck(routeId,functionId,sendLevel))) if ((CI_SUCCESS == reResult) && (CI_ERROR == SetLTrainRouteSwitchCheck(routeId,functionId,sendLevel)))
{ {
/* 失败返回 */ /* 失败返回 */
reResult = CI_ERROR; reResult = CI_ERROR;
@@ -251,17 +226,8 @@ UINT8 SetLeadRouteP(const UINT16 routeId)
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
{ {
/*防淹门联锁条件检查*/ /*防淹门联锁条件检查*/
cFuncSwitch = GetCiFunctionSwitchConfig(FUNC_LEADROUTE_FLOODGATE_CHECK); reResult = BlocRouteFloodGateCheck(routeId,functionId,sendLevel);
if (FUNC_SWITCH_OFF == cFuncSwitch)
{
/*引导进路办理不检查防淹门状态*/
}
else
{
/*引导进路办理检查防淹门状态*/
reResult = BlocRouteFloodGateCheck(routeId, functionId, sendLevel);
}
} }
return reResult; return reResult;
@@ -694,7 +660,7 @@ UINT8 LockLeadTrainRouteP(const UINT16 routeId)
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
{ {
chCheckResult = SetLeadRouteSwitchCheck(routeId, functionId, sendLevel); chCheckResult = SetLTrainRouteSwitchCheck(routeId, functionId, sendLevel);
if (CI_ERROR == chCheckResult) if (CI_ERROR == chCheckResult)
{ {
/* 失败返回 */ /* 失败返回 */
@@ -1598,14 +1564,12 @@ UINT8 SetNonRouteP(UINT8 nonRouteId)
reResult = NonRouteRelProSwiPosMovValCheck(nonRouteId,functionId,sendLevel); reResult = NonRouteRelProSwiPosMovValCheck(nonRouteId,functionId,sendLevel);
} }
#if 0
/*修复缺陷YF0083-2105---LYJ--20260128*/
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
{/*侵限区段侵限条件不满足检查*/ {/*侵限区段侵限条件不满足检查*/
reResult = NonRouteIntruSecVainCheck(nonRouteId,functionId,sendLevel); reResult = NonRouteIntruSecVainCheck(nonRouteId,functionId,sendLevel);
} }
#endif
return reResult; return reResult;
} }
@@ -1723,6 +1687,14 @@ UINT8 LockNonRouteP(UINT8 nonRouteId)
reResult = NonRouteRelProSwiPosMovValCheck(nonRouteId,functionId,sendLevel); reResult = NonRouteRelProSwiPosMovValCheck(nonRouteId,functionId,sendLevel);
} }
if (CI_SUCCESS == reResult)
{/*侵限区段侵限条件不满足检查*/
reResult = NonRouteIntruSecVainCheck(nonRouteId,functionId,sendLevel);
}
return reResult; return reResult;
} }
@@ -2023,7 +1995,9 @@ UINT8 CancelDTrainRouteP(const UINT16 routeId)
UINT8 devState = 0u; /*设备状态*/ UINT8 devState = 0u; /*设备状态*/
UINT16 cancleZhaoChaRelayId = 0u; /*取消照查继电器ID*/ UINT16 cancleZhaoChaRelayId = 0u; /*取消照查继电器ID*/
UINT8 relayState = 0u; /*继电器采集状态*/ UINT8 relayState = 0u; /*继电器采集状态*/
UINT8 chRouteLevel = 0U;
/* 联锁条件检查 */ /* 联锁条件检查 */
/*进路内所有区段正常锁闭*/ /*进路内所有区段正常锁闭*/
checkResult = RouteAllSecLockStateCheck(routeId,PHYSICAL_SECTION_LOCK_NORMAL,&devId,&devState); checkResult = RouteAllSecLockStateCheck(routeId,PHYSICAL_SECTION_LOCK_NORMAL,&devId,&devState);
@@ -2060,8 +2034,19 @@ UINT8 CancelDTrainRouteP(const UINT16 routeId)
} }
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
{/*检查取消照查继电器状态是否吸起*/ {/*检查取消照查继电器状态是否吸起*/
cancleZhaoChaRelayId = GetRouteCancleZhaoChaRelayId(routeId); /*取消照查继电器ID*/ 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,在下面不会处理*/
}
if((0u != cancleZhaoChaRelayId) && (0xFFFFu != cancleZhaoChaRelayId)) if((0u != cancleZhaoChaRelayId) && (0xFFFFu != cancleZhaoChaRelayId))
{ {
/*取消继电器有效:取消继电器采集状态为:吸起*/ /*取消继电器有效:取消继电器采集状态为:吸起*/
@@ -2201,8 +2186,7 @@ UINT8 SetLTrainRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel
UINT16 devId = 0u; /*设备ID*/ UINT16 devId = 0u; /*设备ID*/
UINT8 devState = 0u; /*设备状态*/ UINT8 devState = 0u; /*设备状态*/
UINT8 chRouteCouplinkFlag = 0U;
UINT8 chRouteLevel = 0U;
/* 联锁逻辑检查 */ /* 联锁逻辑检查 */
/* 进路内所有区段未被封锁 */ /* 进路内所有区段未被封锁 */
@@ -2227,17 +2211,7 @@ UINT8 SetLTrainRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel
{ {
devId = 0u; devId = 0u;
devState = 0u; devState = 0u;
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/ checkResult = RouteAllSecOccuClearCheck(routeId,&devId, &devState);
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) if (checkResult == CI_SUCCESS)
{ {
/* 通过检查 */ /* 通过检查 */
@@ -2245,17 +2219,8 @@ UINT8 SetLTrainRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel
} }
else else
{ {
if (0U == devId) /* 记录故障码 */
{ SetErrorData(functionId,CI_DEVICE_TYPE_PHYSEC,devId,ETYPE_PS_MERGY_OCU_STATE,devState,sendLevel);
/* 记录故障码 */
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; reResult = CI_ERROR;
} }
@@ -2408,12 +2373,11 @@ UINT8 SetLTrainRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLeve
} }
} }
/*场段进路不查侧防条件*/
#if 0
/*进路侧防道岔条件检查*/ /*进路侧防道岔条件检查*/
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
{ {
checkResult = RouteSideProtectConditionCheck(routeId, functionId, sendLevel); checkResult = RouteAllLtrlDfncSwitchCheck(routeId, &devId, &devState);
if (CI_SUCCESS == checkResult) if (CI_SUCCESS == checkResult)
{ {
/* 通过检查 */ /* 通过检查 */
@@ -2421,7 +2385,8 @@ UINT8 SetLTrainRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLeve
} }
else else
{ {
/* 记录故障码 */
SetErrorData(functionId, CI_DEVICE_TYPE_PHYSEC, devId, ETYPE_PS_NO_UT_CT_OCU_STATE, devState, sendLevel);
/* 失败返回 */ /* 失败返回 */
reResult = CI_ERROR; reResult = CI_ERROR;
} }
@@ -2431,7 +2396,6 @@ UINT8 SetLTrainRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLeve
/* 失败返回 */ /* 失败返回 */
reResult = CI_ERROR; reResult = CI_ERROR;
} }
#endif
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
{ {
@@ -2564,288 +2528,9 @@ UINT8 SetLTrainRouteSwitchCheck(UINT16 routeId, UINT8 functionId, UINT8 sendLeve
} }
else 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; 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) if (CI_ERROR == reResultP)
{/*如果防护道岔的检查结果为错误,则总的检查结果为错误*/ {/*如果防护道岔的检查结果为错误,则总的检查结果为错误*/
reResult = CI_ERROR; reResult = CI_ERROR;
@@ -3210,8 +2895,7 @@ UINT8 LockLTrainRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLeve
UINT16 devId = 0u; /*设备ID*/ UINT16 devId = 0u; /*设备ID*/
UINT8 devState = 0u; /*设备状态*/ UINT8 devState = 0u; /*设备状态*/
UINT8 chRouteCouplinkFlag = 0U;
UINT8 chRouteLevel = 0U;
/* 联锁逻辑检查 */ /* 联锁逻辑检查 */
/* 进路内所有区段未被封锁 */ /* 进路内所有区段未被封锁 */
@@ -3236,17 +2920,7 @@ UINT8 LockLTrainRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLeve
{ {
devId = 0u; devId = 0u;
devState = 0u; devState = 0u;
chRouteCouplinkFlag = GetRouteCouplinkFlag(routeId); /*获取进路联挂标志*/ checkResult = RouteAllSecOccuClearCheck(routeId,&devId, &devState);
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) if (checkResult == CI_SUCCESS)
{ {
/* 通过检查 */ /* 通过检查 */
@@ -3254,17 +2928,8 @@ UINT8 LockLTrainRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLeve
} }
else else
{ {
if (0U == devId) /* 记录故障码 */
{ SetErrorData(functionId,CI_DEVICE_TYPE_PHYSEC,devId,ETYPE_PS_MERGY_OCU_STATE,devState,sendLevel);
/* 记录故障码 */
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; reResult = CI_ERROR;
} }
@@ -4450,7 +4115,6 @@ UINT8 SetLeadRouteCheck(const UINT16 routeId)
UINT16 devId = 0u; /*设备ID*/ UINT16 devId = 0u; /*设备ID*/
UINT8 devState = 0u; /*设备状态*/ UINT8 devState = 0u; /*设备状态*/
UINT8 reResult = CI_ERROR; /*返回值*/ UINT8 reResult = CI_ERROR; /*返回值*/
UINT8 cFuncSwitch = FUNC_SWITCH_ON; /*引导进路是否检查防淹门开关*/
/* 联锁条件检查 */ /* 联锁条件检查 */
devId = routeId; devId = routeId;
@@ -4531,7 +4195,7 @@ UINT8 SetLeadRouteCheck(const UINT16 routeId)
/*道岔联锁条件检查*/ /*道岔联锁条件检查*/
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
{ {
reResult = SetLeadRouteSwitchCheck(routeId, functionId, sendLevel); reResult = SetLTrainRouteSwitchCheck(routeId, functionId, sendLevel);
if (CI_ERROR == reResult) if (CI_ERROR == reResult)
{ {
/* 失败返回 */ /* 失败返回 */
@@ -4550,18 +4214,7 @@ UINT8 SetLeadRouteCheck(const UINT16 routeId)
/*防淹门联锁条件检查*/ /*防淹门联锁条件检查*/
if (CI_SUCCESS == reResult) if (CI_SUCCESS == reResult)
{ {
cFuncSwitch = GetCiFunctionSwitchConfig(FUNC_LEADROUTE_FLOODGATE_CHECK); reResult = BlocRouteFloodGateCheck(routeId, functionId, sendLevel);
if (FUNC_SWITCH_OFF == cFuncSwitch)
{
/*引导进路锁闭不检查防淹门状态*/
}
else
{
/*引导进路锁闭检查防淹门状态*/
reResult = BlocRouteFloodGateCheck(routeId, functionId, sendLevel);
}
if (CI_ERROR == reResult) if (CI_ERROR == reResult)
{ {
/* 失败返回 */ /* 失败返回 */
@@ -266,17 +266,6 @@ UINT8 SetLTrainRouteSectionCheck(UINT16 routeId,UINT8 functionId,UINT8 sendLevel
*/ */
UINT8 SetLTrainRouteSwitchCheck(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);
/* /*
* *
* *
-20
View File
@@ -46,7 +46,6 @@ UINT8 MainProcess(void)
UINT8 retVal = CI_SUCCESS; UINT8 retVal = CI_SUCCESS;
UINT8 localCiType = GetLocalCiType(); UINT8 localCiType = GetLocalCiType();
UINT16* pTiocFsVersion = NULL; UINT16* pTiocFsVersion = NULL;
UINT8 cControlState = 0U; /*主备用状态*/
unsigned long long cost[20] = {0U}; unsigned long long cost[20] = {0U};
#ifdef LOGPRINT #ifdef LOGPRINT
@@ -103,10 +102,6 @@ UINT8 MainProcess(void)
#endif/*2OO2平台标志结束*/ #endif/*2OO2平台标志结束*/
} }
/*更新当前系统升主起始周期号*/
UpdateSystemMainUseCyc();
debug_infor_printf((const)"\n\nSystemMainUseCyc: %d\n", gSystemUpdateMainUseCycNum);/*系统切换主用起始周期号*/
#endif/*打印标志结束*/ #endif/*打印标志结束*/
cost[0] = MSCP_GetTick(); cost[0] = MSCP_GetTick();
@@ -149,21 +144,6 @@ UINT8 MainProcess(void)
/*清除上周期故障码*/ /*清除上周期故障码*/
ClearErrorData(); 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(); 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); 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;/*·µ»ØÖµ*/ UINT16 returnValue = 0u;/*·µ»ØÖµ*/
if (SendsystemType == CI_SYSTEM_TYPE_RCI) if (SendsystemType == CI_SYSTEM_TYPE_CI)
{ {
switch (RecvsystemType) switch (RecvsystemType)
{ {
@@ -74,7 +74,7 @@ UINT16 GetMaskId(const UINT8 SendsystemType, const UINT8 RecvsystemType, const U
} }
else if (SendsystemType == CI_SYSTEM_TYPE_ZC) else if (SendsystemType == CI_SYSTEM_TYPE_ZC)
{ {
if (CI_SYSTEM_TYPE_RCI == RecvsystemType) if (CI_SYSTEM_TYPE_CI == RecvsystemType)
{ {
returnValue = ZcToCiMaskConfigDataStru[Index].MaskId; returnValue = ZcToCiMaskConfigDataStru[Index].MaskId;
} }
@@ -345,7 +345,7 @@ UINT16 GetMaskIndex(const UINT8 SendsystemType, const UINT8 RecvsystemType, cons
if (SendsystemType == CI_SYSTEM_TYPE_RCI) if (SendsystemType == CI_SYSTEM_TYPE_CI)
{ {
switch (RecvsystemType) switch (RecvsystemType)
{ {
@@ -390,7 +390,7 @@ UINT16 GetMaskIndex(const UINT8 SendsystemType, const UINT8 RecvsystemType, cons
} }
else if (SendsystemType == CI_SYSTEM_TYPE_ZC) else if (SendsystemType == CI_SYSTEM_TYPE_ZC)
{ {
if (CI_SYSTEM_TYPE_RCI == RecvsystemType) if (CI_SYSTEM_TYPE_CI == RecvsystemType)
{ {
for (ii = 1u; ii <= ZcToCiMaskCurSum; ii++) for (ii = 1u; ii <= ZcToCiMaskCurSum; ii++)
{ {
+6 -35
View File
@@ -49,8 +49,6 @@
#define MASK_TYPE_SWITCH_BYPASS ((UINT8)0x0D) /*定义道岔旁路码位*/ #define MASK_TYPE_SWITCH_BYPASS ((UINT8)0x0D) /*定义道岔旁路码位*/
#define MASK_TYPE_SWITCH_OPEN_CAP ((UINT8)0x0E) /*定义道岔所在板卡开盖状态*/ #define MASK_TYPE_SWITCH_OPEN_CAP ((UINT8)0x0E) /*定义道岔所在板卡开盖状态*/
#define MASK_TYPE_SWITCH_SUDDEN_JICHA ((UINT8)0x0F) /*定义道岔静态红闪码位*/ #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 */ /* zt 删除单轨相关代码 2022-02-15 */
@@ -64,12 +62,11 @@
#define MASK_TYPE_SIGNAL_REDCLOSE ((UINT8)0x15) /*定义信号机红灭码位*/ #define MASK_TYPE_SIGNAL_REDCLOSE ((UINT8)0x15) /*定义信号机红灭码位*/
#define MASK_TYPE_SIGNAL_GREENCLOSE ((UINT8)0x16) /*定义信号机绿灭码位*/ #define MASK_TYPE_SIGNAL_GREENCLOSE ((UINT8)0x16) /*定义信号机绿灭码位*/
#define MASK_TYPE_SIGNAL_YELLOWCLOSE ((UINT8)0x17) /*定义信号机黄灭码位*/ #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_GREENBREAK ((UINT8)0x19) /*定义信号机绿断码位*/
#define MASK_TYPE_SIGNAL_YELLOWBREAK ((UINT8)0x1a) /*定义信号机黄断码位*/ #define MASK_TYPE_SIGNAL_YELLOWBREAK ((UINT8)0x1a) /*定义信号机黄断码位*/
#define MASK_TYPE_SIGNAL_WHITEBREAK ((UINT8)0x1b) /*定义信号机白断码位*/ #define MASK_TYPE_SIGNAL_WHITEBREAK ((UINT8)0x1b) /*定义信号机白断码位*/
#define MASK_TYPE_SIGNAL_BLUEBREAK ((UINT8)0x25) /*定义信号机断码位*/ #define MASK_TYPE_SIGNAL_BREAK ((UINT8)0x1c) /*定义信号机断码位*/
#define MASK_TYPE_SIGNAL_BREAK ((UINT8)0x1c) /*定义信号机断丝码位 (对全电子联锁=红灯断丝)*/
#define MASK_TYPE_SIGNAL_FENGSUO ((UINT8)0x1d) /*定义信号机封锁码位*/ #define MASK_TYPE_SIGNAL_FENGSUO ((UINT8)0x1d) /*定义信号机封锁码位*/
#define MASK_TYPE_SIGNAL_OPENSTATE ((UINT8)0x1e) /*定义信号机开放状态码位*/ #define MASK_TYPE_SIGNAL_OPENSTATE ((UINT8)0x1e) /*定义信号机开放状态码位*/
@@ -93,9 +90,6 @@
#define MASK_TYPE_SIGNAL_DET_ERR ((UINT8)0x5c) /*信号机扣车按钮故障状态码位*/ #define MASK_TYPE_SIGNAL_DET_ERR ((UINT8)0x5c) /*信号机扣车按钮故障状态码位*/
#define MASK_TYPE_SIGNAL_AUTO_DERAIN ((UINT8)0x5e) /*信号机自动扣车码位*/ #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_ZC_CI_SIG_ENGINEERV_NEAR ((UINT8)0x97) /*定义信号机工程车接近码位*/
#define MASK_CI_ZC_SIG_ENGINCROSS_STE ((UINT8)0x98) /*定义信号机工程车关灯码位*/ #define MASK_CI_ZC_SIG_ENGINCROSS_STE ((UINT8)0x98) /*定义信号机工程车关灯码位*/
@@ -118,14 +112,7 @@
#define MASK_TYPE_PHYSECTION_HEAD_XTD ((UINT8)0x31) /*定义物理区段运行方向下行状态码位*/ #define MASK_TYPE_PHYSECTION_HEAD_XTD ((UINT8)0x31) /*定义物理区段运行方向下行状态码位*/
#define MASK_TYPE_PHYSECTION_HEAD_STD ((UINT8)0x32) /*定义物理区段运行方向上行状态码位*/ #define MASK_TYPE_PHYSECTION_HEAD_STD ((UINT8)0x32) /*定义物理区段运行方向上行状态码位*/
#define MASK_TYPE_LIECHE_STOPSTATE ((UINT8)0x3a) /*定义列车停稳信息状态码位*/ #define MASK_TYPE_LIECHE_STOPSTATE ((UINT8)0x3a) /*定义列车停稳信息状态码位*/
#define MASK_TYPE_PHYSECTION_INTRUSION ((UINT8)0x5a) /*定义物理区段侵限状态码位(CI->ZC)*/
#define MASK_TYPE_PHYSECTION_ATS_FLOCK ((UINT8)0x5b) /*定义物理区段由ATS封锁状态码位(CI->ZC)*/
#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) /*定义逻辑区段非通信车占用码位*/ #define MASK_TYPE_LOGICSECTION_UTOCCUPY ((UINT8)0x33) /*定义逻辑区段非通信车占用码位*/
@@ -141,10 +128,9 @@
#define MASK_TYPE_DOWNWARD_DIRECTION ((UINT8)0x94) /*定义逻辑区段下行锁闭码位*/ #define MASK_TYPE_DOWNWARD_DIRECTION ((UINT8)0x94) /*定义逻辑区段下行锁闭码位*/
#define MASK_TYPE_LOGICSECTION_PROTECTLOCK ((UINT8)0x99) /*定义逻辑区段防护锁闭码位*/ #define MASK_TYPE_LOGICSECTION_PROTECTLOCK ((UINT8)0x99) /*定义逻辑区段防护锁闭码位*/
#define MASK_TYPE_LOGICSECTION_JUMPLOCK ((UINT8)0x9A) /*定义逻辑区段跳跃锁闭码位*/ #define MASK_TYPE_LOGICSECTION_JUMPLOCK ((UINT8)0x9A) /*定义逻辑区段跳跃锁闭码位*/
#define MASK_TYPE_LOGSEC_CBTC_ARB ((UINT8)0x9B) /*定义逻辑区段CBTC_ARB状态码位*/ #define MASK_TYPE_LOGICSECTION_ARB ((UINT8)0x9B) /*定义逻辑区段ARB状态码位*/
#define MASK_TYPE_LOGICSECTION_SPKS_FLOCK ((UINT8)0x9C) /*定义逻辑区段SPKS封锁状态码位*/ #define MASK_TYPE_LOGICSECTION_SPKS_FLOCK ((UINT8)0x9C) /*定义逻辑区段SPKS封锁状态码位*/
#define MASK_TYPE_LOGICSECTION_EMERG_XIANSU ((UINT8)0x9D) /*定义逻辑区段紧急临时限速码位*/
#define MASK_TYPE_LOGSEC_PB_TACS_ARB ((UINT8)0xB3) /*定义逻辑区段PB_TACS_ARB状态码位*/
/*保护区段相关码位*/ /*保护区段相关码位*/
@@ -170,9 +156,6 @@
#define MASK_TYPE_ROUTE_DC_QINGQIU ((UINT8)0x51) /*定义进路调车请求状态码位(CI-ATS)*/ #define MASK_TYPE_ROUTE_DC_QINGQIU ((UINT8)0x51) /*定义进路调车请求状态码位(CI-ATS)*/
#define MASK_TYPE_ROUTE_DC_AGREE ((UINT8)0x52) /*定义进路调车同意状态码位(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_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)*/
/*站台相关码位*/ /*站台相关码位*/
@@ -186,10 +169,6 @@
#define MASK_TYPE_ESP_FLASH_STATE ((UINT8)0x9b) /*定义ESS闪灯灯状态码位*/ #define MASK_TYPE_ESP_FLASH_STATE ((UINT8)0x9b) /*定义ESS闪灯灯状态码位*/
#define MASK_TYPE_CANCEL_ESP_FAULT ((UINT8)0x9c) /*定义取消紧急关闭按钮故障码位*/ #define MASK_TYPE_CANCEL_ESP_FAULT ((UINT8)0x9c) /*定义取消紧急关闭按钮故障码位*/
#define MASK_TYPE_ESP_FAULT ((UINT8)0x9d) /*定义紧急关闭按钮故障码位*/ #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用*/ #define MASK_TYPE_PSD_STATE ((UINT8)0x60) /*定义站台安全门状态码位-ZC,LEU用*/
@@ -207,11 +186,7 @@
#define MASK_TYPE_PSD_PDB_FLASH_STATE ((UINT8)0xA0) /*定义清客确认箱PDB按钮指示灯闪灯状态码位*/ #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_LU ((UINT8)0xA1) /*定义清客按钮箱视频清客表示灯(绿)状态码位*/
#define MASK_TYPE_PSD_VIDEO_QK_HONG ((UINT8)0xA2) /*定义清客按钮箱视频清客表示灯(红)状态码位*/ #define MASK_TYPE_PSD_VIDEO_QK_HONG ((UINT8)0xA2) /*定义清客按钮箱视频清客表示灯(红)状态码位*/
#define MASK_TYPE_PSD_EXCEPT ((UINT8)0xA5) /*定义站台安全门异常码位 CI-ATS、CI-ZC*/
#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_OPEN_STATE ((UINT8)0x62) /*定义车库门开门状态码位(CI->ATS*/
#define MASK_TYPE_GARAGEDOOR_CLOSE_STATE ((UINT8)0x63) /*定义车库门关门状态码位(CI->ATS*/ #define MASK_TYPE_GARAGEDOOR_CLOSE_STATE ((UINT8)0x63) /*定义车库门关门状态码位(CI->ATS*/
@@ -243,10 +218,6 @@
/*洗车机相关码位*/ /*洗车机相关码位*/
#define MASK_TYPE_WASHMACHINE_READYSTATE ((UINT8)0x74) /*定义洗车机就绪状态码位*/ #define MASK_TYPE_WASHMACHINE_READYSTATE ((UINT8)0x74) /*定义洗车机就绪状态码位*/
#define MASK_TYPE_WASHMACHINE_WORKMODE ((UINT8)0x9E) /*定义洗车机工作模式码位*/ #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,8 +15,7 @@
NonAutoReturnDataStruct NonReturnDataStru[NON_AUTO_RETURN_SUM_MAX]; /*无人自动折返动态结构体*/ NonAutoReturnDataStruct NonReturnDataStru[NON_AUTO_RETURN_SUM_MAX]; /*无人自动折返动态结构体*/
NonAutoReturnDataStructCC NonReturnDataStruCC[NON_AUTO_RETURN_SUM_MAX]; /*无人自动折返动态结构体-车车*/
/* /*
* *
@@ -29,16 +28,6 @@ NonAutoReturnDataStruct* GetNonReturnData(void)
return NonReturnDataStru; return NonReturnDataStru;
} }
/*
* -
*
*
NonAutoReturnDataStruct *
*/
NonAutoReturnDataStruct* GetNonReturnDataCC(void)
{
return NonReturnDataStruCC;
}
/* /*
* ID无人自动折返按钮命令列车ID * ID无人自动折返按钮命令列车ID
* const UINT16 autoReturnId, ID * const UINT16 autoReturnId, ID
@@ -52,7 +41,7 @@ UINT16 GetNonRtnCmdSetTrainId(const UINT16 nonReturnId)
bufIndex = GetNonReturnBufIndex(nonReturnId); bufIndex = GetNonReturnBufIndex(nonReturnId);
if (bufIndex < NON_AUTO_RETURN_SUM_MAX) if (bufIndex < NON_AUTO_RETURN_SUM_MAX)
{ {
trainId = NonReturnDataStruCC[bufIndex].cmdSetTrainId; trainId = NonReturnDataStru[bufIndex].cmdSetTrainId;
} }
else else
{ {
@@ -75,7 +64,7 @@ void SetNonRtnCmdSetTrainId(const UINT16 nonReturnId,const UINT16 trainId)
if (bufIndex < NON_AUTO_RETURN_SUM_MAX) if (bufIndex < NON_AUTO_RETURN_SUM_MAX)
{ {
NonReturnDataStruCC[bufIndex].cmdSetTrainId = trainId; NonReturnDataStru[bufIndex].cmdSetTrainId = trainId;
} }
else else
{ {
@@ -35,21 +35,15 @@ typedef struct S_RtnRelayAdhesionStruct
/*无人自动自动折返数据结构体*/ /*无人自动自动折返数据结构体*/
typedef struct S_NonAutoReturnDataStruct typedef struct S_NonAutoReturnDataStruct
{ {
UINT16 cmdSetTrainId; /*命令列车ID (动态字段)*/
UINT8 IndicatorDevID; /*指示灯设备ID*/ UINT8 IndicatorDevID; /*指示灯设备ID*/
UINT8 VobcToCIAutoRtnIndicFlashState; /*车载给联锁的无人折返指示灯闪灯状态*/ UINT8 VobcToCIAutoRtnIndicFlashState; /*车载给联锁的无人折返指示灯闪灯状态*/
UINT8 VobcToCIAutoRtnIndicSteadyState; /*车载给联锁的无人折返指示灯稳灯状态*/ UINT8 VobcToCIAutoRtnIndicSteadyState; /*车载给联锁的无人折返指示灯稳灯状态*/
RtnRelayAdhesionStruct RtnRelayAdhesionState; /*无人折返继电器粘连状态*/ RtnRelayAdhesionStruct RtnRelayAdhesionState; /*无人折返继电器粘连状态*/
} NonAutoReturnDataStruct; } NonAutoReturnDataStruct;
/*无人自动自动折返数据结构体-车车*/
typedef struct S_NonAutoReturnDataStructCC
{
UINT8 IndicatorDevID; /*指示灯设备ID*/
UINT16 cmdSetTrainId; /*命令列车ID (动态字段)*/
} NonAutoReturnDataStructCC;
extern NonAutoReturnDataStruct NonReturnDataStru[NON_AUTO_RETURN_SUM_MAX]; /*无人自动折返动态结构体*/ extern NonAutoReturnDataStruct NonReturnDataStru[NON_AUTO_RETURN_SUM_MAX]; /*无人自动折返动态结构体*/
extern NonAutoReturnDataStructCC NonReturnDataStruCC[NON_AUTO_RETURN_SUM_MAX]; /*无人自动折返动态结构体-车车*/
/* /*
* ID无人自动折返按钮命令列车ID * ID无人自动折返按钮命令列车ID
* const UINT16 autoReturnId, ID * const UINT16 autoReturnId, ID
@@ -57,13 +51,6 @@ extern NonAutoReturnDataStructCC NonReturnDataStruCC[NON_AUTO_RETURN_SUM_MAX];
* >0: ID * >0: ID
*/ */
UINT16 GetNonRtnCmdSetTrainId(const UINT16 nonReturnId); UINT16 GetNonRtnCmdSetTrainId(const UINT16 nonReturnId);
/*
* -
*
*
NonAutoReturnDataStruct *
*/
NonAutoReturnDataStruct* GetNonReturnDataCC(void);
/* /*
* *
@@ -365,24 +365,6 @@ UINT16 GetSCXColAgreeTryRelayIdById(UINT8 nonRouteId)
return collAgreeTryTrainRelayId; return collAgreeTryTrainRelayId;
} }
/*
* 线ID
* UINT8 nonRouteId id
* 线ID
*/
UINT16 GetWaysideTryTrainIndRelayId(UINT8 nonRouteId)
{
UINT16 collAgreeTryTrainRelayId = 0u;
NonRouteConfigDataStruct* pNonRouteConfig = GetNonRouteConfigDataPtrById(nonRouteId);
if (pNonRouteConfig != NULL)
{
collAgreeTryTrainRelayId = pNonRouteConfig->ColWaysideTryTrainIndRelayId; /* 试车线采集的轨旁试车指示器继电器ID */
}
return collAgreeTryTrainRelayId;
}
/* /*
* id查找对应的非进路 * id查找对应的非进路
* swId-id * swId-id
@@ -82,7 +82,6 @@ typedef struct S_NonRouteConfigDataStruct
UINT16 AgreeTryTrainRelayId; /*同意试车继电器ID (配置字段)*/ UINT16 AgreeTryTrainRelayId; /*同意试车继电器ID (配置字段)*/
UINT16 DrvApplyTryTrainRelayId; /* 试车线驱动的申请试车继电器ID */ UINT16 DrvApplyTryTrainRelayId; /* 试车线驱动的申请试车继电器ID */
UINT16 ColAgreeTryTrainRelayId; /* 试车线采集的同意试车继电器ID */ UINT16 ColAgreeTryTrainRelayId; /* 试车线采集的同意试车继电器ID */
UINT16 ColWaysideTryTrainIndRelayId; /* 试车线采集的轨旁试车指示器继电器ID */
} NonRouteConfigDataStruct; } NonRouteConfigDataStruct;
/*******************************全局变量声明*******************************/ /*******************************全局变量声明*******************************/
@@ -269,14 +268,6 @@ UINT8 GetnonRouteIdbelongVirCIid(UINT8 nonRouteId);
*/ */
UINT8 GetnonRouteIdbelongCIid(UINT8 nonRouteId); UINT8 GetnonRouteIdbelongCIid(UINT8 nonRouteId);
/*
* 线ID
* UINT8 nonRouteId id
* 线ID
*/
UINT16 GetWaysideTryTrainIndRelayId(UINT8 nonRouteId);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
+1 -1
View File
@@ -28,7 +28,7 @@
/*·Ç½øÂ·µ÷³µ×´Ì¬*/ /*·Ç½øÂ·µ÷³µ×´Ì¬*/
#define NONROUTE_STATE_INVALID ((UINT8)0x0) /*·Ç½øÂ·×´Ì¬ÎÞЧ*/ #define NONROUTE_STATE_INVALID ((UINT8)0x0) /*·Ç½øÂ·×´Ì¬ÎÞЧ*/
#define NONROUTE_STATE_IDLE ((UINT8)0x01) /*·Ç½øÂ·¿ÕÏÐ*/ #define NONROUTE_STATE_IDLE ((UINT8)0x01) /*·Ç½øÂ·¿ÕÏÐ*/
#define NONROUTE_STATE_XUANPAI ((UINT8)0x02) /*·Ç½øÂ·Ñ¡ÅÅ*/ #define NONROUTE_STATE_XUANPAI ((UINT8)0x02) /*·Ç½øÂ·Ñ¡ÅÅ*/
#define NONROUTE_STATE_LOCK ((UINT8)0x04) /*·Ç½øÂ·Ëø±Õ*/ #define NONROUTE_STATE_LOCK ((UINT8)0x04) /*·Ç½øÂ·Ëø±Õ*/
@@ -872,123 +872,4 @@ UINT8 GetOverlapProSwitchPos(const UINT16 wOverlapId, const UINT16 wProSwitchId)
} }
return cRetVal; 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
*
* 12,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 "CommonTypes.h"
#include "../System/CiSystemDefine.h" #include "../System/CiSystemDefine.h"
#include "../System/SystemParameterManage.h" #include "../System/SystemParameterManage.h"
#include "RouteConfigDataManage.h"
#ifdef __cplusplus #ifdef __cplusplus
@@ -72,9 +72,7 @@ typedef struct S_OverlapConfigDataStruct
UINT16 OverlapRouteSum; /*保护区段进路总数*/ UINT16 OverlapRouteSum; /*保护区段进路总数*/
UINT16 OverlapRouteIdBuf[OVERLAP_ROUTE_SUM_MAX]; /*保护区段进路数组*/ UINT16 OverlapRouteIdBuf[OVERLAP_ROUTE_SUM_MAX]; /*保护区段进路数组*/
UINT16 AxisSecFarId; /*保护区段最远端计轴区段ID*/ UINT16 AxisSecFarId; /*保护区段最远端计轴区段ID*/
UINT16 wOverlapThisZhaoChaRelayId; /*保护区段本端照查继电器ID*/
UINT16 wOverlapThatZhaoChaRelayId; /*保护区段对端照查继电器ID*/
SideProtecGroupStru SideProtecGroupData; /*保护区段侧防条件*/
} OverlapConfigDataStruct; } OverlapConfigDataStruct;
extern OverlapConfigDataStruct OverlapConfigDataStru[OVERLAP_SUM_MAX]; /*定义OVERLAP数据配置结构体,cgh-合并CID-2539-1:此处声明不进行初始化,统一放到InitAllStaticDataStr函数中进行初始化,为解决生成内核过大得问题*/ extern OverlapConfigDataStruct OverlapConfigDataStru[OVERLAP_SUM_MAX]; /*定义OVERLAP数据配置结构体,cgh-合并CID-2539-1:此处声明不进行初始化,统一放到InitAllStaticDataStr函数中进行初始化,为解决生成内核过大得问题*/
@@ -375,36 +373,6 @@ UINT8 CheckOtherCiOlpHaveLocalCiPSw(const UINT16 wOverlapId);
*/ */
UINT8 GetOverlapProSwitchPos(const UINT16 wOverlapId, const UINT16 wProSwitchId); 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
*
* 12,0u
*
*/
UINT8 GetOverlapThisPortecSwitchPos(const UINT16 wOverlapId, const UINT16 wSwitchId);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
+22 -327
View File
@@ -14,8 +14,8 @@
OverlapDataStruct OverlapDataStru[OVERLAP_SUM_MAX]; /*定义OVERLAP数据结构体*/ OverlapDataStruct OverlapDataStru[OVERLAP_SUM_MAX]; /*定义OVERLAP数据结构体*/
OverlapDataStructCC OverlapDataStruCC[OVERLAP_SUM_MAX]; /*定义OVERLAP数据结构体-车车*/
/* /*
@@ -28,16 +28,7 @@ OverlapDataStruct *GetOverlapData(void)
{ {
return OverlapDataStru; return OverlapDataStru;
} }
/*
* ID保护区段数据-
*
*
OverlapDataStructCC *
*/
OverlapDataStructCC* GetOverlapDataCC(void)
{
return OverlapDataStruCC;
}
/* /*
* ID保护区段所属进路ID * ID保护区段所属进路ID
* const UINT16 overlapId, ID * const UINT16 overlapId, ID
@@ -60,7 +51,7 @@ UINT16 GetOverlapBelongRouteId(const UINT16 overlapId)
/* /*
* ID保护区段所属进路 * ID保护区段组解锁起始周期号
* const UINT16 overlapId, ID * const UINT16 overlapId, ID
* const UINT16 belongRouteId, * const UINT16 belongRouteId,
* *
@@ -91,13 +82,11 @@ void SetOverlapRelateProtSwLockSta(const UINT16 overlapId, const UINT8 lockComma
UINT16 protectSwitchId = 0u; /*防护道岔ID*/ UINT16 protectSwitchId = 0u; /*防护道岔ID*/
UINT8 overlapProtectSwitchSum = 0u; /*防护道岔数目*/ UINT8 overlapProtectSwitchSum = 0u; /*防护道岔数目*/
OverlapProtectSwitchStruct* overlapProtectSwitchStru = NULL; /*防护道岔数据*/ OverlapProtectSwitchStruct* overlapProtectSwitchStru = NULL; /*防护道岔数据*/
UINT8 cSwitchCurPos = 0U;
UINT8 cFuncRet = CI_ERROR;
overlapProtectSwitchSum = GetOverlapRelatedProtSwitSum(overlapId); /*获取防护道岔数目*/ overlapProtectSwitchSum = GetOverlapRelatedProtSwitSum(overlapId); /*获取防护道岔数目*/
overlapProtectSwitchStru = GetOverlapRelatedProtSwitStru(overlapId); /*获取防护道岔数据*/ overlapProtectSwitchStru = GetOverlapRelatedProtSwitStru(overlapId); /*获取防护道岔数据*/
if ((0U == overlapProtectSwitchSum) || (NULL == overlapProtectSwitchStru)) if (0u == overlapProtectSwitchSum)
{ {
retVal = CI_ERROR; retVal = CI_ERROR;
} }
@@ -118,27 +107,17 @@ void SetOverlapRelateProtSwLockSta(const UINT16 overlapId, const UINT8 lockComma
for (ii= 0u; ii < overlapProtectSwitchSum; ii++) for (ii= 0u; ii < overlapProtectSwitchSum; ii++)
{ {
protectSwitchId = overlapProtectSwitchStru[ii].ProtectSwitchId; protectSwitchId = overlapProtectSwitchStru[ii].ProtectSwitchId;
cSwitchCurPos = GetSwitchCurPosition(protectSwitchId); SetSwitchLockStatus(SWITCH_PLOCKTYPE_OVERLAP,overlapId,protectSwitchId, lockCommand); /*设置道岔防护锁闭状态*/
cFuncRet = checkSwtLastValDrvPosStayorNot(protectSwitchId, overlapProtectSwitchStru[ii].ProtectPosition); /*RC 13.0.0 修:不检查防护道岔中双动道岔另一端*/
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 0
if (SWITCH_TYPE_DOUBLE == GetSwitchType(protectSwitchId)) if (SWITCH_TYPE_DOUBLE == GetSwitchType(protectSwitchId))
{ /*双动道岔*/ { /*双动道岔*/
SetSwitchLockStatus(SWITCH_PLOCKTYPE_OVERLAP, overlapId, GetDSwitchOtherId(protectSwitchId), lockCommand); /*设置道岔防护锁 闭状态*/ SetSwitchLockStatus(SWITCH_PLOCKTYPE_OVERLAP,overlapId,GetDSwitchOtherId(protectSwitchId), lockCommand); /*设置道岔防护锁 闭状态*/
}
else
{
}
#endif
} }
else else
{ {
/*防护道岔不在防护位置或防护道岔存在反向驱动时,不设置防护锁闭*/
} }
#endif
} }
} }
else else
@@ -286,7 +265,7 @@ void SetOverlapUnlockApplyFlag(const UINT16 overlapId, const UINT8 overlapUnlock
* ID保护区段申请解锁的列车ID * ID保护区段申请解锁的列车ID
* const UINT16 overlapId, ID * const UINT16 overlapId, ID
* 0 * 0
* ID0x10 * ID0x14
*/ */
UINT16 GetOverlapUnlockApplyTrainId(const UINT16 overlapId) UINT16 GetOverlapUnlockApplyTrainId(const UINT16 overlapId)
{ {
@@ -297,7 +276,7 @@ UINT16 GetOverlapUnlockApplyTrainId(const UINT16 overlapId)
if (bufIndex < OVERLAP_SUM_MAX) if (bufIndex < OVERLAP_SUM_MAX)
{ {
reVal = OverlapDataStruCC[bufIndex].wOverlapUnlockApplyTrainId; reVal = OverlapDataStru[bufIndex].wOverlapUnlockApplyTrainId;
} }
return reVal; return reVal;
} }
@@ -306,7 +285,7 @@ UINT16 GetOverlapUnlockApplyTrainId(const UINT16 overlapId)
/* /*
* ID保护区段申请解锁的列车ID * ID保护区段申请解锁的列车ID
* const UINT16 overlapId, ID * const UINT16 overlapId, ID
* const UINT16 wTrainIdID0x10 * const UINT16 wTrainIdID0x14
* *
* *
*/ */
@@ -318,7 +297,7 @@ void SetOverlapUnlockApplyTrainId(const UINT16 overlapId, const UINT16 wTrainId)
if (bufIndex < OVERLAP_SUM_MAX) if (bufIndex < OVERLAP_SUM_MAX)
{ {
OverlapDataStruCC[bufIndex].wOverlapUnlockApplyTrainId = wTrainId; OverlapDataStru[bufIndex].wOverlapUnlockApplyTrainId = wTrainId;
} }
} }
@@ -643,7 +622,7 @@ void SetReqIvocUnlockStartCycNum(const UINT16 overlapId, const UINT32 reqIvocUnl
if (bufIndex < OVERLAP_SUM_MAX) if (bufIndex < OVERLAP_SUM_MAX)
{ {
OverlapDataStruCC[bufIndex].dwReqIvocUnLockStartCycNum = reqIvocUnlockStartCycNum; /*人工解锁起始周期号*/ OverlapDataStru[bufIndex].dwReqIvocUnLockStartCycNum = reqIvocUnlockStartCycNum; /*人工解锁起始周期号*/
} }
} }
@@ -662,7 +641,7 @@ UINT32 GetReqIvocUnlockStartCycNum(const UINT16 overlapId)
if (bufIndex < OVERLAP_SUM_MAX) if (bufIndex < OVERLAP_SUM_MAX)
{ {
reVal = OverlapDataStruCC[bufIndex].dwReqIvocUnLockStartCycNum; /*人工解锁起始周期号*/ reVal = OverlapDataStru[bufIndex].dwReqIvocUnLockStartCycNum; /*人工解锁起始周期号*/
} }
return reVal; return reVal;
} }
@@ -682,7 +661,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))) if ((bufIndex < OVERLAP_SUM_MAX) && ((IVOC_ALLOW_UNLOCK_OVERLAP_YES == overlapIvocUnlockFlag) || (IVOC_ALLOW_UNLOCK_OVERLAP_NO == overlapIvocUnlockFlag)))
{ {
OverlapDataStruCC[bufIndex].cIvocAllowUnlockFlag = overlapIvocUnlockFlag; OverlapDataStru[bufIndex].cIvocAllowUnlockFlag = overlapIvocUnlockFlag;
} }
else else
{ {
@@ -706,7 +685,7 @@ UINT8 GetOverlapIvocAllowUnlockFlag(const UINT16 overlapId)
if (bufIndex < OVERLAP_SUM_MAX) if (bufIndex < OVERLAP_SUM_MAX)
{ {
reVal = OverlapDataStruCC[bufIndex].cIvocAllowUnlockFlag; reVal = OverlapDataStru[bufIndex].cIvocAllowUnlockFlag;
} }
else else
{ {
@@ -842,13 +821,13 @@ UINT8 GetOverlapFromSetRouteCmdFlag(const UINT16 overlapId)
} }
/* /*
* * ATS锁闭命令标志
* const UINT16 routeId, ID * const UINT16 routeId, ID
* const UINT16 overlapId, ID * const UINT16 overlapId, ID
* : * :
* by cgh 20260106 * by cgh 20240920
*/ */
void CleanOverlapSpecificFlag(const UINT16 routeId, const UINT16 overlapId) void CleanOverlapAtsOrlaborLockFlag(const UINT16 routeId, const UINT16 overlapId)
{ {
UINT16 overlapRouteSum = 0U; /*保护区段进路数量*/ UINT16 overlapRouteSum = 0U; /*保护区段进路数量*/
UINT16* pOverlapRouteBuf = NULL; /*保护区段进路数据*/ UINT16* pOverlapRouteBuf = NULL; /*保护区段进路数据*/
@@ -856,8 +835,6 @@ void CleanOverlapSpecificFlag(const UINT16 routeId, const UINT16 overlapId)
UINT16 routeLastPhyId = 0U; /*进路最后一个物理区段ID*/ UINT16 routeLastPhyId = 0U; /*进路最后一个物理区段ID*/
UINT8 routeLastPhyState = 0U; /*进路最后一个物理区段融合占用状态*/ UINT8 routeLastPhyState = 0U; /*进路最后一个物理区段融合占用状态*/
UINT16 ii = 0U; /*游标*/ UINT16 ii = 0U; /*游标*/
UINT32 dwUnlockStartCycNum = 0U; /*保护区段解锁起始周期号*/
UINT32 dwAtsLastTimeLockCyc = 0U; /*最近一次ATS锁闭保护区段周期号*/
overlapRouteSum = GetOverlapRouteIdSum(overlapId); /*获取保护区段进路数量*/ overlapRouteSum = GetOverlapRouteIdSum(overlapId); /*获取保护区段进路数量*/
pOverlapRouteBuf = GetOverlapRouteIdBuf(overlapId); /*获取保护区段进路数据*/ pOverlapRouteBuf = GetOverlapRouteIdBuf(overlapId); /*获取保护区段进路数据*/
@@ -878,29 +855,6 @@ void CleanOverlapSpecificFlag(const UINT16 routeId, const UINT16 overlapId)
{ {
SetOverlapAtsOrlaborLockCmdFlag(overlapId, LOCK_OVERLAP_CMD_NO); 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
{
;
}
}
} }
/* /*
@@ -1021,263 +975,4 @@ UINT8 GetOverlapProSwtCheckStartFlag(const UINT16 wOverlapId)
} }
return cRetVal; 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
{
;
}
} }
+11 -91
View File
@@ -35,6 +35,9 @@ typedef struct S_OverlapDataStruct
UINT32 UnlockStartCycNum; /*保护区段解锁起始周期号 (动态字段)*/ UINT32 UnlockStartCycNum; /*保护区段解锁起始周期号 (动态字段)*/
UINT32 XuanPaiStartCycNum; /*保护区段选排开始周期号(动态字段)*/ UINT32 XuanPaiStartCycNum; /*保护区段选排开始周期号(动态字段)*/
UINT8 OverlapUnlockApplyFlag; /*向ZC申请解锁保护区段解锁标志,20181105*/ UINT8 OverlapUnlockApplyFlag; /*向ZC申请解锁保护区段解锁标志,20181105*/
UINT16 wOverlapUnlockApplyTrainId;/* 申请保护区段解锁的列车ID(不带0x14)*/
UINT32 dwReqIvocUnLockStartCycNum; /*向车申请解锁保护区段起始周期号*/
UINT8 cIvocAllowUnlockFlag; /*列车允许解锁保护区段标志,0xAA同意解锁,0x55不同意解锁*/
UINT8 OverlapCanLaborUnlockFlag;/*保护区段可以人工解锁标志*/ UINT8 OverlapCanLaborUnlockFlag;/*保护区段可以人工解锁标志*/
UINT8 OverlapLaborUnlockSetState;/*保护区段人工解锁设置状态*/ UINT8 OverlapLaborUnlockSetState;/*保护区段人工解锁设置状态*/
UINT32 laborUnlockStartCycNum;/*人工解锁起始周期号*/ UINT32 laborUnlockStartCycNum;/*人工解锁起始周期号*/
@@ -45,21 +48,10 @@ typedef struct S_OverlapDataStruct
UINT8 OverlapFromSetRouteCmdFlag;/*保护区段由进路办理时连带的标志*/ UINT8 OverlapFromSetRouteCmdFlag;/*保护区段由进路办理时连带的标志*/
UINT8 cProSwitchCheckResultFlag; /*跨控区防护道岔检查结果标志(0xFF:默认值,0x55:失败,0xAA:成功)*/ UINT8 cProSwitchCheckResultFlag; /*跨控区防护道岔检查结果标志(0xFF:默认值,0x55:失败,0xAA:成功)*/
UINT8 cProSwitchCheckStartFlag; /*跨控区防护道岔检查开始标志(0x55:检查开始,0xAA:检查停止)*/ UINT8 cProSwitchCheckStartFlag; /*跨控区防护道岔检查开始标志(0x55:检查开始,0xAA:检查停止)*/
UINT8 chPreLaborUnlockState; /*之前人工解锁状态*/
UINT32 dwAtsLastTimeLockCyc; /*最近一次ATS锁闭保护区段周期号*/
} OverlapDataStruct; } 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 OverlapDataStruct OverlapDataStru[OVERLAP_SUM_MAX]; /*定义OVERLAP数据结构体*/
extern OverlapDataStructCC OverlapDataStruCC[OVERLAP_SUM_MAX]; /*定义OVERLAP数据结构体-车车*/
/* /*
* ID保护区段数据 * ID保护区段数据
* *
@@ -67,19 +59,6 @@ extern OverlapDataStructCC OverlapDataStruCC[OVERLAP_SUM_MAX]; /*
OverlapDataStruct * OverlapDataStruct *
*/ */
OverlapDataStruct *GetOverlapData(void); OverlapDataStruct *GetOverlapData(void);
/*
* ID保护区段数据-
*
*
OverlapDataStructCC *
*/
/*
* ID保护区段数据-
*
*
OverlapDataStructCC *
*/
OverlapDataStructCC* GetOverlapDataCC(void);
/* /*
* ID保护区段所属进路ID * ID保护区段所属进路ID
@@ -90,11 +69,11 @@ OverlapDataStructCC* GetOverlapDataCC(void);
UINT16 GetOverlapBelongRouteId(const UINT16 overlapId); UINT16 GetOverlapBelongRouteId(const UINT16 overlapId);
/* /*
* ID保护区段所属进路 * ID保护区段组解锁起始周期号
* const UINT16 overlapId, ID * const UINT16 overlapId, ID
* const UINT16 belongRouteId, * const UINT16 belongRouteId,
* *
* *
*/ */
void SetOverlapBelongRouteId(const UINT16 overlapId, const UINT16 belongRouteId); void SetOverlapBelongRouteId(const UINT16 overlapId, const UINT16 belongRouteId);
@@ -159,7 +138,7 @@ void SetOverlapUnlockApplyFlag(const UINT16 overlapId, const UINT8 overlapUnlock
* ID保护区段申请解锁的列车ID * ID保护区段申请解锁的列车ID
* const UINT16 overlapId, ID * const UINT16 overlapId, ID
* 0 * 0
* ID0x10 * ID0x14
*/ */
UINT16 GetOverlapUnlockApplyTrainId(const UINT16 overlapId); UINT16 GetOverlapUnlockApplyTrainId(const UINT16 overlapId);
@@ -167,7 +146,7 @@ UINT16 GetOverlapUnlockApplyTrainId(const UINT16 overlapId);
/* /*
* ID保护区段申请解锁的列车ID * ID保护区段申请解锁的列车ID
* const UINT16 overlapId, ID * const UINT16 overlapId, ID
* const UINT16 wTrainIdID0x10 * const UINT16 wTrainIdID0x14
* *
* *
*/ */
@@ -336,13 +315,13 @@ void SetOverlapFromSetRouteCmdFlag(const UINT16 overlapId, const UINT8 setFlag);
UINT8 GetOverlapFromSetRouteCmdFlag(const UINT16 overlapId); UINT8 GetOverlapFromSetRouteCmdFlag(const UINT16 overlapId);
/* /*
* * ATS锁闭命令标志
* const UINT16 routeId, ID * const UINT16 routeId, ID
* const UINT16 overlapId, ID * const UINT16 overlapId, ID
* : * :
* by cgh 20260106 * by cgh 20240920
*/ */
void CleanOverlapSpecificFlag(const UINT16 routeId, const UINT16 overlapId); void CleanOverlapAtsOrlaborLockFlag(const UINT16 routeId, const UINT16 overlapId);
/* /*
* *
@@ -381,65 +360,6 @@ void SetOverlapProSwtCheckStartFlag(const UINT16 wOverlapId, const UINT8 cCheckS
*/ */
UINT8 GetOverlapProSwtCheckStartFlag(const UINT16 wOverlapId); 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 #ifdef __cplusplus
} }
#endif #endif
@@ -72,10 +72,6 @@
#define PROSWITCH_CHECK_START_VALID ((UINT8)0x55) /*开始检查*/ #define PROSWITCH_CHECK_START_VALID ((UINT8)0x55) /*开始检查*/
#define PROSWITCH_CHECK_START_INVALID ((UINT8)0xAA) /*停止检查*/ #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 /*保护区段征用超时周期数*/ #define OVERLAP_USING_OVERTIME_CYC_NUM 10U /*保护区段征用超时周期数*/
#endif #endif
+1 -142
View File
@@ -1041,145 +1041,4 @@ UINT8 CheckPsdBelSendRange(const UINT16 wCheckPsdId)
} }
return retVal; 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,7 +39,6 @@ typedef struct S_PsdConfigDataStruct
UINT16 MutualLockRelayId; /*互锁解除继电器ID (配置字段)*/ UINT16 MutualLockRelayId; /*互锁解除继电器ID (配置字段)*/
UINT16 wMutualLockRelayId2; /*互锁解除继电器ID2(配置字段) 迪斯尼*/ UINT16 wMutualLockRelayId2; /*互锁解除继电器ID2(配置字段) 迪斯尼*/
UINT16 CloseDriveRelayId; /*关门继电器ID (配置字段)*/ UINT16 CloseDriveRelayId; /*关门继电器ID (配置字段)*/
UINT16 OpenThreeEditGroupDriveRelayId; /*打开三编组屏蔽门的驱动继电器(配置字段)*/
UINT16 OpenFourEditGroupDriveRelayId; /*打开四编组屏蔽门的驱动继电器(配置字段)*/ UINT16 OpenFourEditGroupDriveRelayId; /*打开四编组屏蔽门的驱动继电器(配置字段)*/
UINT16 OpenSixEditGroupDriveRelayId; /*打开六编组屏蔽门的驱动继电器(配置字段)*/ UINT16 OpenSixEditGroupDriveRelayId; /*打开六编组屏蔽门的驱动继电器(配置字段)*/
UINT16 OpenEightEditGroupDriveRelayId; /*打开八编组屏蔽门的驱动继电器(配置字段)*/ UINT16 OpenEightEditGroupDriveRelayId; /*打开八编组屏蔽门的驱动继电器(配置字段)*/
@@ -47,7 +46,6 @@ typedef struct S_PsdConfigDataStruct
UINT16 wDoorStateRelayId2; /*门开采集继电器ID2(配置字段) 迪斯尼*/ UINT16 wDoorStateRelayId2; /*门开采集继电器ID2(配置字段) 迪斯尼*/
UINT16 wRelayDoorButtonId; /*屏蔽门再关门按钮继电器*/ UINT16 wRelayDoorButtonId; /*屏蔽门再关门按钮继电器*/
UINT16 doorReopenRelayId; /*站台门再次开门继电器*/ UINT16 doorReopenRelayId; /*站台门再次开门继电器*/
UINT16 doorReopenRelayId2; /*站台门再次开门继电器2*/
UINT16 departureConfirmRelayId; /*发车确认继电器*/ UINT16 departureConfirmRelayId; /*发车确认继电器*/
UINT16 detectStartRelayId; /*启动探测继电器*/ UINT16 detectStartRelayId; /*启动探测继电器*/
UINT16 detectStopRelayId; /*停止探测继电器*/ UINT16 detectStopRelayId; /*停止探测继电器*/
@@ -66,13 +64,6 @@ typedef struct S_PsdConfigDataStruct
UINT16 wPcbIndicatorRelayId; /*再关门按钮指示灯继电器*/ UINT16 wPcbIndicatorRelayId; /*再关门按钮指示灯继电器*/
UINT16 wVideoQkLight1RelayId; /*清客按钮箱视频清客指示灯1(绿)继电器*/ UINT16 wVideoQkLight1RelayId; /*清客按钮箱视频清客指示灯1(绿)继电器*/
UINT16 wVideoQkLight2RelayId; /*清客按钮箱视频清客指示灯2(红)继电器*/ 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; } PsdConfigDataStruct;
@@ -420,47 +411,6 @@ UINT16 GetPsdVideoQkLight2RelayId(const UINT16 wDoorId);
*/ */
UINT8 CheckPsdBelSendRange(const UINT16 wCheckPsdId); 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 #ifdef __cplusplus
} }
#endif #endif
+9 -916
View File
@@ -11,10 +11,8 @@
#include "PSDDataManage.h" #include "PSDDataManage.h"
#include "../ParsePack/ParsePackDefine.h" #include "../ParsePack/ParsePackDefine.h"
#include "ESBDataManage.h"
PsdDataStruct PsdDataStru[PSD_SUM_MAX] = { 0U }; /*定义屏蔽门数据结构体*/ PsdDataStruct PsdDataStru[PSD_SUM_MAX]; /*定义屏蔽门数据结构体*/
PsdDataStructCC PsdDataStruCC[PSD_SUM_MAX] = { 0U }; /*定义车车屏蔽门数据结构体*/
/* /*
* ID屏蔽门数据 * ID屏蔽门数据
@@ -26,16 +24,6 @@ PsdDataStruct *GetPsdData(void)
return PsdDataStru; return PsdDataStru;
} }
/*
* ID屏蔽门数据CC
*
*
*/
PsdDataStructCC* GetPsdDataCC(void)
{
return PsdDataStruCC;
}
/* /*
* ID屏蔽门互锁解除状态 * ID屏蔽门互锁解除状态
* const UINT16 doorId, ID * const UINT16 doorId, ID
@@ -531,9 +519,6 @@ void ResetPsdData(const UINT16 psdId)
PsdDataStru[bufIndex].PsdDriveState=PSD_DRIVE_STATE_INVALID; PsdDataStru[bufIndex].PsdDriveState=PSD_DRIVE_STATE_INVALID;
PsdDataStru[bufIndex].PsdPreDriveState=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 else
{ {
@@ -952,54 +937,6 @@ UINT8 GetStopDetectionState(const UINT16 doorId)
} }
return retVal; 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 #if 0
/* /*
* VOBC关PSD而需要被重开的进路 * VOBC关PSD而需要被重开的进路
@@ -1506,14 +1443,14 @@ UINT8 SetPsdCmdCyclePsc(const UINT16 doorId, const UINT32 doorCycle)
} }
/* /*
* ID屏蔽门旁路标志 * ID屏蔽门确认PSC互锁解除标志
* const UINT16 doorId, ID * const UINT16 doorId, ID
* const UINT8 setFlag, * const UINT8 setFlag,
* *
* *
*/ */
void SetPsdConfirmFlag(const UINT16 doorId,const UINT8 setFlag) void SetPsdPscConfirmFlag(const UINT16 doorId,const UINT8 setFlag)
{ {
/*变量初始化*/ /*变量初始化*/
UINT16 bufIndex = 0u; UINT16 bufIndex = 0u;
@@ -1530,13 +1467,13 @@ void SetPsdConfirmFlag(const UINT16 doorId,const UINT8 setFlag)
} }
/* /*
* ID屏蔽门旁路标志 * ID屏蔽门确认PSC旁路标志
* const UINT16 doorId, ID * const UINT16 doorId, ID
* *
* 0: * 0:
* >0: * >0:
*/ */
UINT8 GetPsdPlFlag(const UINT16 doorId) UINT8 GetPsdPscPlFlag(const UINT16 doorId)
{ {
/*变量初始化*/ /*变量初始化*/
UINT16 bufIndex = 0u; /*数组下标*/ UINT16 bufIndex = 0u; /*数组下标*/
@@ -1565,6 +1502,7 @@ UINT8 GetPsdPlFlag(const UINT16 doorId)
void SetNearCiPscPlFlag(const UINT16 psdId,const UINT16 pscId,const UINT8 setFlag) void SetNearCiPscPlFlag(const UINT16 psdId,const UINT16 pscId,const UINT8 setFlag)
{ {
/*变量初始化*/ /*变量初始化*/
UINT8 i = 0u;
UINT8 transmitState = 0u; UINT8 transmitState = 0u;
UINT8 localCiId = 0u; UINT8 localCiId = 0u;
UINT8 psdCiId = 0u; UINT8 psdCiId = 0u;
@@ -1594,7 +1532,7 @@ void SetNearCiPscPlFlag(const UINT16 psdId,const UINT16 pscId,const UINT8 setFla
if(psdCiId == localCiId) if(psdCiId == localCiId)
{ {
/*设置PSC对应PSD旁路*/ /*设置PSC对应PSD旁路*/
SetPsdConfirmFlag(psdId, setFlag); SetPsdPscConfirmFlag(psdId, setFlag);
} }
} }
else else
@@ -1606,12 +1544,12 @@ void SetNearCiPscPlFlag(const UINT16 psdId,const UINT16 pscId,const UINT8 setFla
else else
{ {
/*获取PSD旁路标志*/ /*获取PSD旁路标志*/
pscPlFlag = GetPsdPlFlag(psdId); pscPlFlag = GetPsdPscPlFlag(psdId);
if(psdCiId == localCiId) if(psdCiId == localCiId)
{ {
if(CI_PSC_PL_CONFIRM_YES == pscPlFlag) if(CI_PSC_PL_CONFIRM_YES == pscPlFlag)
{ {
SetPsdConfirmFlag(psdId, CI_PSC_PL_CONFIRM_NO); SetPsdPscConfirmFlag(psdId, CI_PSC_PL_CONFIRM_NO);
} }
else else
{ {
@@ -2571,849 +2509,4 @@ UINT16 GePsdVideoQkRelateVobcId(const UINT16 wPsdId)
retVal = CI_ERROR; retVal = CI_ERROR;
} }
return retVal; return retVal;
}
/*
* ID屏蔽门异常状态
* const UINT16 wPsdId ID
* const UINT8 cExceptOpenState
*
* Created By LQ 2025.05.22
*/
void SetPsdExceptState(const UINT16 wPsdId, const UINT8 cExceptOpenState)
{
UINT16 bufIndex = 0U;
bufIndex = GetPsdConfigBufIndex(wPsdId); /*获取屏蔽门数组下标*/
if ((PSD_SUM_MAX > bufIndex) && ((PSD_EXCEPT_YES == cExceptOpenState) || (PSD_EXCEPT_NO == cExceptOpenState)))
{
PsdDataStru[bufIndex].cPsdExceptOpenState = cExceptOpenState; /*设置屏蔽门异常状态*/
}
else
{
; /*不处理*/
}
}
/*
* ID屏蔽门异常状态
* const UINT16 wPsdId ID
* 0x55
* 0xAA
* Created By LQ 2025.05.22
*/
UINT8 GePsdExceptState(const UINT16 wPsdId)
{
UINT16 bufIndex = 0U;
UINT8 cRetVal = PSD_EXCEPT_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,(0u1u)
* 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,(0u1u)
* 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,(0u1u)
* 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 doorIdID
* 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;
}
/*
* ID屏蔽门状态给 VOBC
* const UINT16 doorIdID
*
*/
UINT8 GetPsdStateToVobc(const UINT16 doorId)
{
UINT8 chPsdState = 0U;
UINT8 chPsdPlState = 0U;
UINT8 chExceptOpenState = 0U;
UINT8 chRet = 0U;
chPsdPlState = GetPsdMutualLockRemoveState(doorId); /*屏蔽门互锁解除*/
if ((PSD_MUTUALLOCK_REMOVE_YES == chPsdPlState) || (PSD_ATS_MUTUALLOCK_REMOVE_YES == chPsdPlState) || (PSD_ATS_AND_JD_MUTUALLOCK_REMOVE_YES == chPsdPlState))
{
/*屏蔽门互锁解除*/
chRet = CI_IVOC_PSD_STATE_PANGLU;
}
else
{
chPsdState = GetPsdState(doorId);
if (PSD_STATE_CLOSE == chPsdState)
{/*屏蔽门关*/
chRet = CI_IVOC_PSD_STATE_CLOSE;
}
else
{
/*屏蔽门开, 判断是否异常*/
chExceptOpenState = GePsdExceptState(doorId);
if (PSD_EXCEPT_NO == chExceptOpenState)
{
chRet = CI_IVOC_PSD_STATE_OPEN;
}
else
{
/*屏蔽门异常打开*/
chRet = CI_IVOC_PSD_STATE_OPEN_EXCEPT;
}
}
}
return chRet;
} }
+4 -317
View File
@@ -22,7 +22,6 @@
#include "CommonTypes.h" #include "CommonTypes.h"
#include "../System/CiSystemDefine.h" #include "../System/CiSystemDefine.h"
#include "../Relay/RelayConfigDataManage.h" #include "../Relay/RelayConfigDataManage.h"
#include "CiInterfaceDefine.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
@@ -59,7 +58,6 @@ typedef struct S_PsdDataStruct
UINT32 StartDetectionCycNum; /*开启探测周期*/ UINT32 StartDetectionCycNum; /*开启探测周期*/
UINT8 StartDetectionState; /*启动探测状态*/ UINT8 StartDetectionState; /*启动探测状态*/
UINT8 StopDetectionState; /*停止探测状态*/ UINT8 StopDetectionState; /*停止探测状态*/
UINT32 StopDetectionCycNum; /*停止探测周期*/
UINT8 VOBCDoorState; /*VOBC车门状态*/ UINT8 VOBCDoorState; /*VOBC车门状态*/
UINT32 PCBPressCycNum; /*PCB按下起始周期*/ UINT32 PCBPressCycNum; /*PCB按下起始周期*/
UINT32 POBPressCycNum; /*POB按下起始周期*/ UINT32 POBPressCycNum; /*POB按下起始周期*/
@@ -83,35 +81,9 @@ typedef struct S_PsdDataStruct
UINT8 chCleFarePDBFlaLigFlag; /*清客确认箱PDB按钮指示灯闪灯标志*//*by cgh 20230529*/ UINT8 chCleFarePDBFlaLigFlag; /*清客确认箱PDB按钮指示灯闪灯标志*//*by cgh 20230529*/
UINT8 chVideoQkDriveState; /*视频清客驱动状态 by cgh 20231214*/ UINT8 chVideoQkDriveState; /*视频清客驱动状态 by cgh 20231214*/
UINT16 wVideoQkRelateVobcId; /*视频清客对应列车ID 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; } 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 PsdDataStruct PsdDataStru[PSD_SUM_MAX]; /*定义屏蔽门数据结构体*/
extern PsdDataStructCC PsdDataStruCC[PSD_SUM_MAX]; /*定义车车屏蔽门数据结构体*/
/* /*
* PSD的VOBC操作命令 * PSD的VOBC操作命令
@@ -187,13 +159,6 @@ void ResetPsdData(const UINT16 psdId);
*/ */
PsdDataStruct *GetPsdData(void); PsdDataStruct *GetPsdData(void);
/*
* ID屏蔽门数据CC
*
*
*/
PsdDataStructCC* GetPsdDataCC(void);
/* /*
* ID屏蔽门互锁解除状态 * ID屏蔽门互锁解除状态
* const UINT16 doorId, ID * const UINT16 doorId, ID
@@ -412,23 +377,6 @@ void SetStopDetectionState(const UINT16 doorId, const UINT32 detectionState);
*/ */
UINT8 GetStopDetectionState(const UINT16 doorId); 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屏蔽门开门按钮状态 * ID屏蔽门开门按钮状态
* const UINT16 doorId, ID * const UINT16 doorId, ID
@@ -570,23 +518,23 @@ UINT32 GetPsdCmdCyclePsc(const UINT16 doorId);
UINT8 SetPsdCmdCyclePsc(const UINT16 doorId, const UINT32 doorCycle); UINT8 SetPsdCmdCyclePsc(const UINT16 doorId, const UINT32 doorCycle);
/* /*
* ID屏蔽门旁路标志 * ID屏蔽门确认PSC互锁解除标志
* const UINT16 doorId, ID * const UINT16 doorId, ID
* const UINT8 setFlag, * const UINT8 setFlag,
* *
* *
*/ */
void SetPsdConfirmFlag(const UINT16 doorId,const UINT8 setFlag); void SetPsdPscConfirmFlag(const UINT16 doorId,const UINT8 setFlag);
/* /*
* ID屏蔽门旁路标志 * ID屏蔽门确认PSC旁路标志
* const UINT16 doorId, ID * const UINT16 doorId, ID
* *
* 0: * 0:
* >0: * >0:
*/ */
UINT8 GetPsdPlFlag(const UINT16 doorId); UINT8 GetPsdPscPlFlag(const UINT16 doorId);
/* /*
* PSC同时与另一联锁通信时PSC旁路命令处理 * PSC同时与另一联锁通信时PSC旁路命令处理
@@ -924,267 +872,6 @@ void SetPsdVideoQkRelateVobcId(const UINT16 wPsdId, const UINT16 wVobcId);
*/ */
UINT16 GePsdVideoQkRelateVobcId(const UINT16 wPsdId); UINT16 GePsdVideoQkRelateVobcId(const UINT16 wPsdId);
/*
* ID屏蔽门异常状态
* const UINT16 wPsdId ID
* const UINT8 cExceptOpenState
*
* Created By LQ 2025.05.22
*/
void SetPsdExceptState(const UINT16 wPsdId, const UINT8 cExceptOpenState);
/*
* ID屏蔽门异常状态
* const UINT16 wPsdId ID
* 0x55
* 0xAA
* Created By LQ 2025.05.22
*/
UINT8 GePsdExceptState(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,(0u1u)
* 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,(0u1u)
* 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,(0u1u)
* 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 doorIdID
* 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);
/*
* ID屏蔽门状态给 VOBC
* const UINT16 doorIdID
*
*/
UINT8 GetPsdStateToVobc(const UINT16 doorId);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

Some files were not shown because too many files have changed in this diff Show More