Problème d'itinéraires en mode RUN

Re: Problème d'itinéraires en mode RUN

Messagepar MathieuA » 20 Octobre 2022, 07:02

Bonjour Michel,

Désolé pour le manque de réponse j'ai la tête ailleurs ces derniers jours..

CC72000 a écrit:Bon voila je suis maintenant en mesure de me pencher sur ce BUG dans les déclenchements sur événements, l'émulation de RUN refonctionne sur le réseau de Mario, je vais pouvoir investiguer et reproduire le problème.


Alors finalement c'était bien un décalage d'adresse ?

Il s'avère qu'un autre problème est apparu en parallèle, en fait maintenant mon oncle a des KVB intempestifs qui apparaissent au hasard sur certaines loco (voir toutes parfois).
Ils se produisent souvent au moment d'un arrêt manuel ou même d'un arrêt d'urgence, dans ce cas-là les erreurs cité au-dessus n'apparaissent pas mais les loco perdent leurs itinéraires et quand il y en a plusieurs en même temps c'est assez galère de tout relancer :roll:

Petite question idiote: Peux tu m'expliquer comment tu lance l'émulation de RUN ? Comme ça si j'ai le temps je pourrais aussi chercher de mon coté en mode debug pour te donner un coup de main.

Bon courage en tout cas !

Mathieu :respect1:
MathieuA
 
Messages: 57
Inscrit le: 12 Janvier 2020, 16:34
Localisation: Orléans, Loiret

Re: Problème d'itinéraires en mode RUN

Messagepar CC72000 » 20 Octobre 2022, 08:12

MathieuA a écrit:Petite question idiote: Peux tu m'expliquer comment tu lance l'émulation de RUN ?

Pour passer dans les séquences de CODE de détection il faut être en RUN, mais pour être en RUN, il faut le réseau physique derrière… Le mode émulation de RUN est une astuce qui permet de passer en mode RUN sans avoir le réseau, c’est donc un outil de DEBUGAGE très pratique.
Pour l’utiliser, il faut:
1- cocher la case … RUN Run Emulation,
Emul01.png
Emul01.png (7.5 Kio) Consulté 260 fois

2- lancer une interface DCC. Et là on peut faire du RUN sans le réseau, quand une LOCO arrive sur une zone de détection, la LOCO est en attente de synchro, la trame d’interrogation est bien envoyée sur le DCC, et par je ne sais pas quel mécanisme… la réponse est traitée comme toujours possitive, ce qui simule la détection, la LOCO continue sa marche…
Emul02.png
Emul02.png (6.52 Kio) Consulté 261 fois


MathieuA a écrit:Alors finalement c'était bien un décalage d'adresse ?

Avec des adresses S88, je ne sais toujours pas pourquoi, mais la trame est détectée en erreur par la DLL XpressNet et il n’y a donc pas de simulation de détection. Ce que j’ai fait est tout bête, j’ai fait une moulinette pour faire +512 sur les adresses… :mrgreen:

MathieuA a écrit:Il s'avère qu'un autre problème est apparu en parallèle, en fait maintenant mon oncle a des KVB intempestifs qui apparaissent au hasard sur certaines loco (voir toutes parfois).

La prise en charge KVB est une fonction que j’ai écrite pour le cas où une LOCO grille un signal, dans ce cas CDM faisait un STOP RUN pour tout bloquer alors qu’il ne s’agit de d’UNE LOCO.
Il y a dans CDM un certain nombre de cas où le CODE détecte une anomalie qui est plus moins LOGuée, plus ou moins maîtrisée, maintenant j’applique la même stratégie, faire un appel à la prise en charge KVB pour tenter de garder la main… Mais si le CODE détecte une anomalie, la bonne attitude est de trouver la cause de cette anomalie pour la corriger…

Dans le cas (initial) que tu soumets, nous sommes dans la fonction DET_ComputeOpTrnDistToLeaveDetector() pour recalculer la distance du prochain détecteur...

long DET_ComputeOpTrnDistToLeaveDetector(pOP_TRN pOpTrn, pPERIPH pLeaveDetector)
/* intermediate segments */
while (pSegment != pEndSegment)
{
if (!PLC_GetNextConnectedSegment(&pSegment, &pEnterPort, FALSE, FALSE))
{ /* PROBLEMN !!! */ ⇐ Commentaire de Jean-Pierre
if (pSegment != pEndSegment)
{
if (pOpTrn->pNextDetector != NULL)
lIndexNextDetector = OBJ_GetObjectIndex(pOpTrn->pNextDetector);
if (pLeaveDetector != NULL)
lIndexLeaveDetector = OBJ_GetObjectIndex(pLeaveDetector);

//***BugStopRun.7.03.06***
// SIMU_StopRun( TRUE, FALSE, TRUE );
/// Nous Stopons seulement le train en cause !!!
/// Pour repartir, il faut libérer le train de son itinéraire
/// et le repositionner
// SIMU_EmergencyShutDown(pOpTrn, "Anomalous operation", "DET_ComputeOpTrnDistToLeaveDetector" );
sprintf(sMessage, " Seg %ld, EndSeg %ld", OBJ_GetObjectIndex(pSegment), OBJ_GetObjectIndex(pSegment));
INFO_LogActions(pOpTrn, sMessage);
sprintf(sMessage, "DET_ComputeOpTrnDistToLeaveDetector(), next det %ld leave det %ld", lIndexNextDetector, lIndexLeaveDetector);
KVB_StopKVB(pOpTrn, sMessage); // DET_ComputeOpTrnDistToLeaveDetector()
return 0L;
}
}


Maintenant que je peux refaire des Emulation de RUN, je cherche à comprendre pourquoi Jean-Pierre a mis ce commentaire PROBLEM
S'il n'y a pas de solutions, c'est qu'il n'y a pas de problème...
Michel.
CC72000
 
Messages: 3085
Inscrit le: 25 Octobre 2014, 08:30
Localisation: 21240-Talant - Dijon ( Côte d'Or / Bourgogne )

Re: Problème d'itinéraires en mode RUN

Messagepar CC72000 » 03 Novembre 2022, 15:22

Bonjour Mathieu, Bonjour Mario,

Je viens de mettre en ligne la version proto V22.06.39 qui corrige votre problème de prise en charge KVB.
S'il n'y a pas de solutions, c'est qu'il n'y a pas de problème...
Michel.
CC72000
 
Messages: 3085
Inscrit le: 25 Octobre 2014, 08:30
Localisation: 21240-Talant - Dijon ( Côte d'Or / Bourgogne )

Re: Problème d'itinéraires en mode RUN

Messagepar MathieuA » 03 Novembre 2022, 15:35

Bonjour Michel,

Parfait ! Je ferais un saut chez mon oncle pour essayer demain après-midi :D

En attendant je travaillais sur la prise en charge du mode émulation par la DLL DCCpp, il s'avère que c'est bien pratique pour faire des tests et je n'y avais jamais pensé !

Je te ferais suivre cette nouvelle version dès que possible !
(Avec surement quelques nouvelles fonctionnalités au passage!)

Merci encore.

Mathieu :respect1:
MathieuA
 
Messages: 57
Inscrit le: 12 Janvier 2020, 16:34
Localisation: Orléans, Loiret

Précédent

Retourner vers Pilotage du réseau réel

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité