Foro Navegantes

Versión completa: PAN-PAN Piloto Simrad o B&G NAC-2/3
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2 3
(24-03-2024, 04:54 PM)Tehani escribió: [ -> ]Para completar la tabla y estar completamente seguro, si ignoro los mensajes del AC12 y el emulate.js que vete tú a saber, me faltan capturas del modo NAV/TRACK y NO DRIFT del NAC-2, y NO DRIFT del TP22:
AUTO Mode  ..0x14 0x00 0x80 0x00 / ..16,00,80,00 / 41,9f,64,0a,10,00,00,00 / 41,9f,ff,0a,10,00,80,00
VANE Mode ?..0x14 0x04 0x80 0x02 / ..06,04,00,00 / 41,9f,64,0a,00,04,00,04 / 41,9f,ff,0a,10,04,80,06
TRACK Mode ..0x54 0x00 0x80 0x00 / ..f0,00,80,00               ??                    / 41,9f,ff,0a,14,00,80,00
NODRIFT M  ..0x14 0x01 0x80 0x00 / ..16,01,00,00               ??                    /             ??
     else          // NFU  (si ninguna de éstas)

Parece que voy descubriendo cosas:
Ese 14 que he marcado lo indica el piloto AP22 como transición por el modo AUTO antes de pasar al modo TRACK/NAV que es un 51 (más adelante en el fichero de la captura he podido ver ese nuevo cambio), lo cual coincide con el AC12 a la izquierda en la misma línea:
                              AC12:                                               NAC-2                               AP22
TRACK Mode ..0x54 0x00 0x80 0x00 / ..f0,00,80,00  /            ??                    / 41,9f,ff,0a,54,00,80,00

Entonces se puede ver que todos los modos automáticos tienen activado (a 1) el bit 4 de ese byte, y a 0 en STBY.
54 hexadecimal = 0101 0100 escrito en binario. El bit de la derecha es el bit número 0 (de menor peso). Ese bit en negrita es entonces el que indica "piloto engranado".
Me puedo saltar el paso previo de "engaged" o "not engaged". Basta con una sola decodificación cuando el byte anterior indica que es información de estado: 0a.
Ya casi pondría la mano en el fuego de que el NAC-2 (??) enviará lo mismo.
Así, el código en C que pegué al principio sigue vigente (de hecho el yanqui dijo que funciona), aunque puede simplificarse.

Nada nuevo. Este tipo de peleas ha sido habitual desde el principio de los tiempos de Ocenav tratando datos de Seatalk, nmea2000, AIS, otros pilotos y muchas más cosas.
Muchas veces, para escribir una sola línea de programa, han sido necesarias semanas de investigación y/o ingeniería inversa como esta.
Bueno, he simplificado el procesado del PGN 65305, y de paso, he hecho más inteligibles los comentarios poniendo las tramas completas.
la cosa queda así:
Código:
    case 65305:                       // Simrad TP22, NAC2/NAC3 Pilot Mode,  0xFF19
      if (PGN65340) break;            // 65340 priority
      if (Rx0Msg.Data[3] == 0x0a) {
        value = get16(&Rx0Msg.Data[4]) & 0xfff0;               //  AC12 capture      / NAC-2 capture           / TP22 capture
        if (value == 0x0000)      ii = 0x00;   // STBY Mode  41,9f,00,0a,0c,00,80,00 / 41,9f,64,0a,08,00,00,00 / 41,9f,ff,0a,08,00,80,00
        else if (value == 0x0010) ii = 0x02;   // AUTO Mode  41,9f,00,0a,14,00,80,00 / 41,9f,64,0a,10,00,00,00 / 41,9f,ff,0a,10,00,80,00
        else if (value == 0x0410) ii = 0x04;   // VANE Mode  41,9f,00,0a,14,04,80,02 / 41,9f,64,0a,00,04,00,04 / 41,9f,ff,0a,10,04,80,06
        else if (value == 0x0050) ii = 0x08;   // TRACK Mode 41,9f,00,0a,54,00,80,00 /                         / 41,9f,ff,0a,54,00,80,00
        else if (value == 0x0110) ii = 0x01;   // NODRIFT M  41,9f,00,0a,14,01,80,00 /
        else                      ii = 0x10;   // NFU
        NAVDAT.autom = ii;
      }
      break;

value = get16(&Rx0Msg.Data[4]) & 0xfff0;  Esto elimina los 4 bits menos significativos que varían de un piloto a otro sin contenido útil para el caso.
A estas alturas no creo que hagan falta más capturas con el NAC-2 (aunque serían bien recibidas). Estoy convencido de que la diferencia en modo viento (VANE) indica alguna anomalía de "not engaged" porque el barco no estaba navegando.
Gracias a todos por la paciencia...
os juro que hoy no bebi nada jajajajajjaja joer para los numeros,me levante y fui beber agua no valla ser jajajajajajjaja,enhorabuena tehani,lo siento de numeros solo entiendo del dinero jajajajajaj,seguro que consigues que funcione eso...abrazos
Al final he aplicado la tijera a fondo y me he cargado el procesado del PGN 65340, ya que el 65305 es común para todos los pilotos si se analiza sólo un conjunto de bits.
De paso, utilizo también ese único PGN para identificar el ID y dirección del piloto en la red.
La cosa ha quedado reducida a su mínima expresión.
Páginas: 1 2 3