![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Apuntes sobre la comunicación con el CBTC de bombardierAnalizando los dos primeros mensajes:>>> 80 00 00 54 00 00 00 11 00 00 00 00 00 00 00 2D 00 00 00 65 00 00 00 66 00 00 00 44 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF Mensaje de sico a bombardier (">>>"), marcador de último elemento del mensaje (empieza por 0x80), de tamaño 0x54 (84 bytes). Como sólo se envía un tipo mensaje de sico a bombardier, no se requiere discriminante de tipo de mensaje, y vienen directamente los datos del mensaje. En este caso tiene como datos un entero (Ws) con valor 0x11 (17), seguido de 20 enteros con valores {0x0,0x2d,0x65,0x66,0x44,-1,...,-1}. Se codifica en /home/teleind/linux/f_misc/SicoXDR.c:xdr_peticion_bd_rojo <<< 80 00 00 20 00 00 52 E8 00 00 00 01 00 00 00 00 00 00 00 07 31 31 31 54 5F 5 0 43 00 00 00 00 00 00 00 00 00 Supongo que el primer mensaje que manda bombardier es "InitialStatus-message" Este es un mensaje de bombardier a sico ("<<<"). Supongo que siendo el primer mensaje que manda bombardier, es un mensaje de tipo "InitialStatus-message", pero el mensaje que habéis enviado le falta el discriminador de tipo de mensaje (CBTC_MENS_INICIALIZACION, con valor 0x02), que debería ir justo detrás de la cabecera (debería empezar con algo del estilo de 0x80 0x00 0x00 0x20 0x00 0x00 0x00 0x02...). El mensaje correcto (con el discriminador de tip de mensaje y ajustado el tamaño de mensaje en la cabecera), sería: 80 00 00 24 <-- Cabecera: Último fragmento, tamaño de datos en fragmento 0x24 (36 bytes) 00 00 00 02 <-- Discriminador de tipo de mensaje: CBTC_MENS_INICIALIZACION ("InitialStatus-message") 00 00 52 E8 <-- (Mensaje de estado inicial) índice unívoco: 0x52e8 00 00 00 01 <-- (Mensaje de estado inicial) número de línea: 1 00 00 00 00 <-- (Mensaje de estado inicial) Discriminador de tipo de objeto: 0 (CCBTC_CIRCUITO_VIA) 00 00 00 07 <-- (Mensaje de estado inicial, circuito via) Tamaño de cadena nombre objeto: 7 31 31 31 54 5F 50 43 00 <-- (Mensaje de estado inicial, circuito via) Cadena nombre de objeto: "111T_PC" 00 00 00 00 <-- (Mensaje de estado inicial, circuito via) Estado de circuito vía: 0x00 00 00 00 00 <-- (Mensaje de estado inicial, circuito via) Número de trenes en circuito: 0 Supongo que lo que os ha confundido es que los mensajes de sico a bombardier no tienen discriminador (por haber un único mensaje, no se necesita). Pero en los mensajes de bombardier a sico sí hay discriminador, y es esencial para saber qué mensaje enviando y así poderlo parsear de forma correcta. Por otro lado, el segundo discriminador de la estructura "(Mensaje de estado inicial) Discriminador de tipo de objeto: 0 (CCBTC_CIRCUITO_VIA)" sí está siendo utilizado correctamente. Sólo hace falta añadir el discriminador del tipo de mensaje y los mensajes que enviais deberían ser correctos. Se codifica en /home/teleind/linux/f_misc/SicoXDR.c:xdr_mensaje_cbtc Otro mensaje decodificado: el de sincronización <<< 80 00 00 24 00 00 00 01 00 00 00 01 00 00 00 09 00 00 00 13 32 30 30 37 2F 30 31 2F 30 39 20 31 31 3A 31 37 3A 34 37 00 "<<<": Bombardier a Sico 80 00 00 24 <-- Tamaño: 0x24 (36bytes), último fragmento xdr_mensaje_cbtc 00 00 00 01 <-- Tipo de mensaje CBTC_MENS_CAMBIO_DE_ESTADO(1) xdr_cambio_estado_cbtc 00 00 00 01 <-- Indice unívoco: 1 00 00 00 09 <-- Tipo de Objeto: CBTC_SINCRONIZACION(9) xdr_sincronizacion_cbtc 00 00 00 13 <-- Tamaño de string 0x13 (19 bytes) 32 30 30 37 2F 30 31 2F 30 39 20 31 31 3A 31 37 3A 34 37 00 <-- String "2007/01/09 11:17:47" Otro mensaje decodificado: envío de base de datos // ...24/01 13:10:26 WARNING (TraducirEstadoInicialCBTC2Rojo): CBTC_EQUIPO_DE_CAMPO NO implementado (IL MIGUEL HERN //...24/01 13:10:26 BD 1 IndexCTC 17684 - (0 CV) 00000 Tren (0 - ) Composicion # remote2local 48 bytes80 00 00 2C -- Tamaño: 0x2C (44bytes), último fragmento 00 00 00 02 -- Tipo de mensaje CBTC_MENS_INICIALIZACION(2) 00 00 45 14 -- Inice univoco 17684 00 00 00 01 -- Nro de Linea 1 00 00 00 04 -- Tipo de Objeto CBTC_EQUIPO_DE_CAMPO(4) 00 00 00 13 -- Tamaño de String: 19 bytes 49 4C 20 4D 49 47 55 45 4C 20 48 45 52 4E FF 4E 44 45 5A 00 -- String "IL MIGUEL HERN.NDEZ" 00 00 00 01 -- Estado de Objeto: 1 //...24/01 13:10:26 BD 1 IndexCTC 17700 157T_MH (0 CV) 00000 Tren (0 - ) Composicion # remote2local 240 bytes (extracto)80 00 00 24 -- mensaje de 36 bytes 00 00 00 02 -- Tipo de mensaje CBTC_MENS_INICIALIZACION(2) 00 00 45 24 -- Ind. univ. 17700 00 00 00 01 -- Nro linea 1 00 00 00 00 -- Tipo de objeto CBTC_CIRCUITO_VIA(0) 00 00 00 07 -- Tamaño de String: 7 bytes 31 35 37 54 5F 4D 48 00 -- String "157T_MH" 00 00 00 00 -- Estado de Objeto: 0 00 00 00 00 -- Diagnóstico: //...24/01 13:10:27 BD 1 IndexCTC 17745 D4T1_MH (0 CV) 00000 Tren (0 - ) Composicion 80 00 00 24 -- Tamaño de mensaje 36 bytes 00 00 00 02 -- Tipo de mensaje CBTC_MENS_INICIALIZACION(2) 00 00 45 51 -- Id. Univoco 17745 00 00 00 01 -- Nro linea 1 00 00 00 00 -- Tipo de objeto CBTC_CIRCUITO_VIA(0) 00 00 00 07 -- Tamaño de string 7 bytes 44 34 54 31 5F 4D 48 00 -- String "D4T1_MH" 00 00 00 00 -- Estado: 0 00 00 00 00 -- Diagnóstico: //...24/01 13:10:27 BD 1 IndexCTC 17746 - (0 CV) 00000 Tren /2_BA_AA (12612 - ) Composicion A_AA 80 00 00 24 -- Tamaño de mensaje: 36 bytes 00 00 00 02 -- Tipo de mensaje CBTC_MENS_INICIALIZACION(2) 00 00 45 52 -- Id. unívoco 17746 00 00 00 01 -- Línea 1 00 00 00 01 -- Tipo de objeto CBTC_VUELTA_AUTOMATICA(1) 00 00 00 0A -- Tamaño de String 10 44 31 2F 32 5F 42 41 5F 41 41 00 00 -- Contenido de string de 10 bytes con valor "D1/2_BA_AA" 00 00 00 FF -- Estado 0xff Diagnóstico: Link to this Page
|