CH629321A5 - Procede de transmission et d'analyse de donnees de performances enregistrees a bord d'un vehicule durant un parcours. - Google Patents
Procede de transmission et d'analyse de donnees de performances enregistrees a bord d'un vehicule durant un parcours. Download PDFInfo
- Publication number
- CH629321A5 CH629321A5 CH766277A CH766277A CH629321A5 CH 629321 A5 CH629321 A5 CH 629321A5 CH 766277 A CH766277 A CH 766277A CH 766277 A CH766277 A CH 766277A CH 629321 A5 CH629321 A5 CH 629321A5
- Authority
- CH
- Switzerland
- Prior art keywords
- line
- data
- distance
- file
- recorded
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 26
- 230000005540 biological transmission Effects 0.000 title claims description 4
- 238000012545 processing Methods 0.000 claims description 24
- 238000011068 loading method Methods 0.000 claims description 23
- 230000003137 locomotive effect Effects 0.000 claims description 8
- 238000009434 installation Methods 0.000 claims description 6
- 230000008878 coupling Effects 0.000 claims 1
- 238000010168 coupling process Methods 0.000 claims 1
- 238000005859 coupling reaction Methods 0.000 claims 1
- 238000012544 monitoring process Methods 0.000 claims 1
- 230000009897 systematic effect Effects 0.000 claims 1
- 230000004044 response Effects 0.000 description 18
- 238000006243 chemical reaction Methods 0.000 description 17
- 238000012546 transfer Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 238000001514 detection method Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 239000003550 marker Substances 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000010835 comparative analysis Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000011179 visual inspection Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07C—TIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
- G07C5/00—Registering or indicating the working of vehicles
- G07C5/08—Registering or indicating performance data other than driving, working, idle, or waiting time, with or without registering driving, working, idle or waiting time
- G07C5/0841—Registering performance data
- G07C5/085—Registering performance data using electronic data carriers
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07C—TIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
- G07C5/00—Registering or indicating the working of vehicles
- G07C5/08—Registering or indicating performance data other than driving, working, idle, or waiting time, with or without registering driving, working, idle or waiting time
- G07C5/0841—Registering performance data
- G07C5/0875—Registering performance data using magnetic data carriers
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60L—PROPULSION OF ELECTRICALLY-PROPELLED VEHICLES; SUPPLYING ELECTRIC POWER FOR AUXILIARY EQUIPMENT OF ELECTRICALLY-PROPELLED VEHICLES; ELECTRODYNAMIC BRAKE SYSTEMS FOR VEHICLES IN GENERAL; MAGNETIC SUSPENSION OR LEVITATION FOR VEHICLES; MONITORING OPERATING VARIABLES OF ELECTRICALLY-PROPELLED VEHICLES; ELECTRIC SAFETY DEVICES FOR ELECTRICALLY-PROPELLED VEHICLES
- B60L2200/00—Type of vehicles
- B60L2200/26—Rail vehicles
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02T—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
- Y02T90/00—Enabling technologies or technologies with a potential or indirect contribution to GHG emissions mitigation
- Y02T90/10—Technologies relating to charging of electric vehicles
- Y02T90/16—Information or communication technologies improving the operation of electric vehicles
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Recording Measured Values (AREA)
- Debugging And Monitoring (AREA)
- Time Recorders, Dirve Recorders, Access Control (AREA)
Description
La présente invention concerne un procédé de transmission tervient une variation de vitesse ou un changement d'événe-et d'analyse de données de performances enregistrées à bord ment, un enregistrement est effectué sur la bande et les nou-d'un véhicule tel qu'une locomotive, une benne d'ascenseur de 55 velles variables sont mises en mémoire.
mine, etc. Un ordinateur est programmé pour comparer les don- Une position d'événement est réservée pour l'enregistre-nées enregistrées à un profil type préétabli. ment des «bornes». Ces bornes sont des balises répondeuses
Les brevets des USA No. 3 864 731 du 4 février 1975 et No. implantées le long de la voie et interrogées par un dispositif 3 938 092 du 10 février 1976 décrivent un système d'enregistre- monté sur la locomotive. La position des balises est connue et ment de variables définissant la marche d'un véhicule, par so fait partie du «profil type» du parcours. On peut ainsi aligner exemple sa vitesse, la distance parcourue, les freinages et cer- automatiquement les variables enregistées avec le profil type au tains événements ou paramètres particuliers. L'emploi des enre- moment du dépouillement. L'ordinateur central contient à cet gistreurs tachygraphiques est généralisé depuis longtemps sur effet toutes les informations d'identification nécessaires pour les locomotives et sur d'autres véhicules, mais tend à être sup- chaque tronçon de la voie.
planté par l'enregistrement numérique ou «digital» qui facilite 65
considérablement le dépouillement sur ordinateur. Les brevets Lorsqu'un enregistrement correspondant à un parcours réel précités concernent essentiellement les systèmes d'enregistre- est introduit dans l'ordinateur, il est mis en mémoire et reçoit un ment alors que la présente invention a pour objet un procédé de nom.
3
629 321
Le dépouillement des informations peut se dérouler de dif- des données enregistrées à partir de leur support externe (dis-
férentes manières. Avec un clavier d'entrée, l'opérateur peut que). Ces données sont ensuite interprétées et préparées en vue demander une présentation graphique de la vitesse et des événe- du traitement.
ments entre des points spécifiés. Il peut aussi obtenir des rap- D'une manière analogue, la séquence 3000 commande le ports d'anomalies faisant ressortir les écarts par rapport aux 5 chargement en mémoire des données du profil type à partir de
■ procédures normales d'exploitation. leur support externe et leur préparation en vue du traitement.
Les dessins annexés représentent à titre d'exemple un mode La séquence 4000 est un bloc de décision commandant le de réalisation de l'objet de l'invention. déroulement général du programme principal. Plus précisément,
La figure 1 est un schéma synoptique simplifié de l'installa- après le chargement initial en mémoire des données de réfé-
tion informatique de l'invention pour l'analyse des enregistre- io rence et des données enregistrées, l'opérateur a le choix entre ments numériques. plusieurs options. Il peut par exemple demander la fin du pro-
La figure 2 est un organigramme du programme principal. gramme (End) ou la fin du programme et la déconnexion du
La figure 3 est un organigramme du sous-programme de termina (Off).
présentation graphique. La séquence 5000 est un sous-programme d'analyse compa-
La figure 4 est un exemple de listage fourni par le pro- 15 rant les données de l'enregistrement à celles du profil type et gramme principal. signalent d'éventuelles «violations» des consignes: excès de vi-
La figure 5 est un organigramme général du sous-pro- tesse ou non-respect des événements imposés.
gramme d'analyse. La séquence 7000 est un sous-programme de présentation
La figure 6 est un organigramme du sous-programme de graphique de la vitesse, des limitations de vitesse et des événe-
chargement des enregistrements dans la mémoire de l'ordina- 20 ments en fonction de la distance parcourue par la locomotive,
teur en vue de l'analyse. Une autre option possible est le rechargement (28) permettant
La figure 7 est un organigramme du sous-programme de de remplacer le jeu de données enregistrées et/ou de référence chargement du profil type dans la mémoire de l'ordinateur. par un nouveau jeu de données à traiter, ce qui correspond à
Les listages des programmes sources correspondant aux or- une répétition des séquences 2000 et 3000.
ganigrammes ci-dessus sont donnés aux pages 46a à 46i. 25 La séquence 9000 est une option d'examen détaillé des don-
La figure 1 est un schéma synoptique général de l'installa- nées présentes en mémoire.
tion pour l'analyse selon la présente invention. Un terminal On va maintenant étudier pas à pas le sous-programme de d'entrée-sortie 10 transmet les données enregistrées à une fi- chargement en mémoire de l'enregistrement (figure 6 et sé-
chier sur disque 12. Le terminal 10 peut être un terminal EXE- quence 2000 sur la figure 2). Ce sous-programme permet de
CUPORT série 310 fabriqué par Computer Transceiver Sys- 30 transférer l'enregistrement de son support externe (disque) à la tems Inc. On a vu dans la description générale de l'invention que mémoire centrale de l'ordinateur et à le préparer en vue du les cassettes enregistrées à bord du véhicule (locomotive) sont traitement.
lues par un appareil spécial qui est directement connecté au L'instruction (2001) est un aiguillage simple permettant d'o-
terminal 10. Il est évident qu'on peut utiliser d'autres modèles mettre la routine de chargement si l'enregistrement a déjà été de terminaux reliés à un ordinateur central soit directement, soit 35 chargé au cours d'un passage précédent. Si le chargement est par l'intermédiaire d'une ligne de télécommunications. nécessaire, la première valeur du fichier est lue en (2003) pour
Les données enregistrées sont stockées dans le fichier d'en- déterminer le type de fichier traité (2004). Une valeur nulle trée 12 sous la forme d'une succession d'octets (caractères de 8 indique que le fichier contient des données déjà traitées par le bits). Pour des raisons de compatibilité avec le programme gé- programme principal et sauvegardées. Dans ce cas, il suffit de néral de l'ordinateur, les données enregistrées doivent être con- 40 recharger les données enregistrées (2006). Par contre, une va-
verties par un programme spécial 14. A titre d'exemple, l'ordi- leur non nulle détectee au début du fichier indique que celui-ci nateur peut être un modèle quelconque des séries IBM 360 ou contient des données brutes directement issues du programme
370. Comme on le verra dans la suite, le programme de conver- de conversion. Dans ce cas, la lecture (2011) doit être suivie sion 14 est décrit en langage PL/1. La conversion produit un d'une opération d'interprétation (2040).
nouveau fichier sur disque 16 qui sert d'entrée au programme 45 Dans les deux cas, le programme effectue une recherche principal 18. Dans une application type du système de la figure (2165) dans le fichier pour localiser les deux bornes nécessaires
1, le programme principal 18 compare les variables enregistrées à l'alignement des données par rapport au profil type. Ces du fichier 16 et des données de référence représentant le profil bornes définissent avec précision l'intervalle de distance couvert type du parcours. Les données de référence qui peuvent être des Par chaque enregistrement et par conséquent l'échelle des don-
limitations de vitesse, des intervalles imposés ou limités entre so nées. L'avantage de cette technique est que le dépouillement des événements, etc., sont mémorisées sous la forme d'un fichier des enregistrements ne nécessite pas la connaissance du diamè-
type 20. Un programme de chargement 22 assure la vérification tre des roues.
des données de référence, leur conversion en code machine et Lorsque le fichier d'enregistrement a été chargé, le proleur chargement dans un fichier sur disque 24. Dans l'exemple gramme passe à la routine de chargement du profil type (page décrit, le programme de chargement 22 est décrit en FOR- 55 46d et bloc 3000 de la figure 2) dont le rôle est de transférer les TRAN comme le programme principal 18. Ainsi qu'on l'a vu, le données relatives au profil type de la mémoire auxiliaire à la programme 18 effectue une analyse comparative des contenus mémoire centrale et de les préparer au traitement.
des fichiers 16 et 24. Sur demande de l'opérateur, plusieurs Un branchement conditionnel (3040) permet d'omettre la types de rapports 26 peuvent être imprimés par le terminal d'en- routine de chargement si les données de référence sont déjà
trée-sortie 10. 60 présentes en mémoire. Si l'opération de chargement est néces-
La figure 2 est l'organigramme logique du programme prin- saire, les données sont transférées dans la mémoire (3050) et les cipal 18. Les valeurs numériques inscrites au-dessus des sym- deux premières bornes du profil type sont localisées (3120).
boles de l'organigramme représentent les numéros de ligne des Après le chargement des données enregistrées et du profil séquences correspondantes du programme-source, comme on le type, les deux premières bornes de chaque fichier sont utilisées verra en détail dans la suite. pour aligner les données enregistrées par rapport au profil typ
La séquence 1000 *MAIN* initialise et définit les variables (3350). La première borne de chaque fichier est utilisée comme et les constantes à utiliser dans l'ensemble du programme. point de référence absolue pour situer les données enregistrées
La séquence 2000 commande le chargement en mémoire par rapport au profil type. Les secondes bornes de chaque fi
629 321
4
chier servent ensuite à établir l'échelle des données. Les don- borne kilométrique initiale (7160). Le fichier profil type est nées enregistrées peuvent alors être analysées et reproduites à avancé pour fournir la nouvelle vitesse limite (7230). La dis-l'échelle par rapport aux bornes de distance qu'ont été détectées tance de référence est comparée à la distance enregistrée pour sur le tronçon de voie. déterminer si les données de référence s'appliquent à la borne
La suite est une brève description du sous-programme d'à- 5 kilométrique considérée (7300) et, si ce n'est pas le cas, le fi-nalyse (figures 4,5 et bloc 5000 sur la figure 2). Le résultat de ce chier de profil type est à nouveau avancé (7230).
traitement est une table des violations de consignes dont la fi- Des opérations similaires sont ensuite effectuées sur le fi gure donne un exemple (29). chier des données enregistrées (7310 et 7320). A la fin de l'un
Chaque ligne de la table représente une seule violation con- ou l'autre des fichiers, toute nouvelle demandé de données se tinue de la limitation de vitesse et contient les informations 10 traduit par un branchement à la fin du sous-programme (7540). descriptives nécessaires. Après le positionnement des informations, la ligne courante du
Par exemple, la première ligne (39) de la table indique que graphique est imprimée (7480). La distance de la ligne suivante le véhicule a dépassé continuellement la vitesse limite de 60 km/ est calculée (7520) et comparée à la position du point final h entre les bornes kilométriques 42 et 62, et que le maximum de (7530) pour déterminer si la fin du tronçon a été atteint. Si c'est l'excès de vitesse a été 20 km/h à la borne 46,5. is le cas, la ligne du bas est imprimée (7540) et le sous-programme
Avant d'effectuer l'analyse, le programme demande à l'opé- se termine. Dans le cas contraire, de nouvelles données corres-rateur une tolérance de vitesse (34) qui spécifie en km/h l'excès pondant à la borne suivante sont acquises et traitées.
de vitesse au-dessus duquel on considère qu'il y a violation. Le sous-programme de «détail» (blöc 9000 sur la figure 2)
Dans l'exemple de la figure 4, la réponse «0» indique qu'il n'y a contient un certain nombre de petites routines offrant des op-pas de tolérance. En fin d'analyse, le programme imprime un 20 tions de traitement spécialisées et facilitant la mise au point et la état contenant le nombre total de violations (40) et le nombre vérification du logiciel et du matériel. Ces routines sont pour la total de kilomètres parcourus à une vitesse excessive (41). plupart des modules spécifiques et leur connaissance n'est pas
S'il n'y a pas eu de violation, le programme peut imprimer essentielle pour la compréhension du reste du programme, ime phrase du genre «aucune violation des limitations de vi- La figure 7 est l'organigramme du programme dé conversion tesse». 25 qui sert d'interface entre le système et le programme principal.
En revenant à l'organigramme de la figure 5, on voit que le La principale fonction de ce programme est de convertir le sous-programme demande et lit la tolérance spécifiée en (5006), code et le format des données brutes de l'enregistrement pour puis initialise les variables utilisées (5010). qu'elles puissent être traitées par le programme principal.
L'analyse consiste en une comparaison segment par segment En pratique, chaque caractère ASCII à 8 bits est remplacé des données enregistrées par rapport au profil type pour cons- 30 par une valeur numérique entière qui est obtenue dans une table truire la table des violations. de conversion appropriée. Les caractères d'entrée non valables
Un aiguillage (5054) détermine celui des deux fichiers qui sont traduits en une valeur de sortie de — 1. Cette technique doit être avancé ou «mis à jour» pour permettre le traitement du permet d'accepter des codes et des formats d'entrée très varia-segment de voie suivant. Après la mise à jour des données enre- bles avec un même programme principal de traitement. Pour gistrées (5058) ou des données de référence (5020), la vitesse 35 changer de code ou de format, il suffit d'employer une table de enregistrée est comparée à la vitesse limite (5330) et les viola- conversion différente et/ou un programme de conversion légè-tions éventuelles sont mémorisées pour être imprimées dans la rement modifié.
table des violations. A la fin de l'un ou l'autre des deux fichiers,
un signal «fin de données» apparaît et déclenche l'impression de Description detaillée des programmes la table des violations (5570) avant de rendre le contrôle à la 40 La description qui suit se rapporte aux listages des pages 46a séquence 4000 pour le traitement suivant. à 46i qui représentent les programmes-sources correspondant
Le sous-programme de présentation graphique va mainte- aux organigrammes précédemment décrits. Les numéros utilisés nant être brièvement décrit (figures 3,4 et bloc 7000 de la figure sur les organigrammes correspondent aux numéros de ligne fi-2). Chaque passage de la routine fournit une représentation gurant dans la colonne de gauche des listages.
graphique de la vitesse, de la vitesse limite et de événements en 45 Le programme de conversion page 46e qui est écrit en lan-fonction de la distance parcourue en bornes kilométriques (fi- gage standard PL/1 sera décrit le premier:
gure4).
Initialement, le programme demande à l'opérateur de fixer Ligne 100
les limites du graphique (42) en spécifiant les bornes initiale et CONVERT: PROCEDURE:
finale et l'échelle (43) sous forme d'une résolution du graphi- 50 définit le début du programme ou de la procédure et lui donne le que. L'échelle peut être spécifiée comme un entier positif repré- nom «CONVERT».
sentant un nombre de lignes par kilomètre, ou d'un entier négatif représentant un nombre de kilomètres par ligne. La valeur Lignes 110 à 170
zéro est interdite. Le numéro de la borne figure au début de DECLARE CONVTABLE ENVIRONMENT (LINE)
chaque ligne suivi de l'état des événements (48) à la borne ss input,
considérée. Dans l'exemple illustré, l'état des événements est un (TAPUNF, DATAFILE) ENV (INTERNAL),
groupe de quatre caractères au maximum indiquant chacun la BYTE (0:0) CHAR (1), CHUNK CHAR (18),
présence d'un événement particulier (50). A droite de la sépara- TABLINDX (0:0) FIXED (9), FILL CHAR (3),
tion verticale (52), la vitesse est représentée par une astérisque TUFLCHAR CHAR (1), TABLE (0:2555) FIXED (9),
«*» (62) et la vitesse limite est représentée par un signe dollar 60 (SUBSCRPT, VALUE, POSITION) FIXED (9),
«$» (60). Dans le cas où les deux signes occupent la même (SOURCE, DESTIN) CHARACTER (8);
position, c'est l'astérisque qui est conservée. Ces lignes servent à définir les différentes variables etcons-
La résolution de l'échelle horizontale des vitesses est de 2 tantes à utiliser dans l'ensemble du programme, à déclarer leur • km/h et les valeurs sont exprimées en dizaines de km/h (44 et occupation en mémoire et le type et la longueur des données 45).
65 qu'elles contiennent.
Sur l'organigramme de la figure 3, on voit que le sous-programme commence par demander et lire des limites et l'échelle Ligne 180
(7030), puis établit les variables à utiliser, dans l'exemple la ON ENDFILE (TAPUNF) GO TO ENDUP ;
5
629 321
Cette instruction indique au programme qu'il doit transférer le contrôle aux instructions suivant l'étiquette «ENDUP» lorsqu'une lecture est tentée au-delà de la fin du fichier d'entrée «TAPUNF». Ceci se produit dès que toutes les données d'entrée ont été traitées.
Ligne 190 ON ERROR GO TO FETCH ;
Le programme doit transférer le contrôle à l'instruction suivant l'étiquette «FETCH» si le programme rencontre une erreur à un moment quelconque. Le début effectif du programme est:
Ligne 200 FETCH: K = 0;
Dans ce cas l'étiquette «FETCH» est celle à laquelle renvoie l'instruction d'erreur de la ligne 190. K == 0 réinitialise le comptage des caractères.
Ligne 220 /* OPEN INPUT FILE (TAPUNF) */
(OUVERTURE FICHIER D'ENTRÉE (TAPUNF))
C'est un commentaire décrivant la fonction des quatre lignes suivantes 230 à 260. L'étiquette «TAPUNF» désigne le fichier d'entrée.
Ligne 230 PUT LIST (INPUT FILE) ;
(Impression du message «INPUT FILE» sur le terminal)
Ligne 240 GET FILE (SYSIN) LIST (SOURCE) ;
Cette instruction fait apparaître un point d'interrogation (?) sur l'imprimante pour signaler à l'opérateur que le programme attend une réponse. L'opérateur frappe sur le clavier le nom du fichier d'entrée qui est rangé dans la variable «SOURCE».
Ligne 250
PUT FILE (SYSPRINT) LIST (SOURCE) ;
Pour permettre une vérification immédiate, le nom frappé sur le clavier est immédiatement reproduit sur l'imprimante du terminal.
Ligne 260
OPEN FILE (TAPUNF) TITLE (SOURCE) INPUT ;
Le programme tente d'établir la liaison entre le programme et le support externe qui contient le fichier d'entrée à préparer pour le traitement. L'impossibilité d'établir cette liaison est une condition d'erreur.
Ligne 280
/* OPEN OUTPUT FILE (DATAFILE) */
(OUVERTURE FICHIER DE SORTIE (DATAFILE))
Comme la ligne 220, c'est un commentaire précisant que le fichier de sortie est appelé «DATAFILE».
Ligne 290 PUT SKIP (2) LIST (OUTPUT FILE) ;
Cette instruction fait sauter le papier de deux interlignes sur l'imprimante et provoque l'impression du message «OUTPUT FILE».
Ligne 300 GET FILE (SYSIN) LIST (DESTIN) ;
L'opérateur doit frapper sur le clavier la destination du fichier de sortie du programme CONVERT. Le nom de ce fichier est rangé dans la variable «DESTIN». Ce fichier (16 sur la figure 1) recevra les données converties par le programme CONVERT.
Ligne 305
IF DESTIN = ' ' THEN DESTIN = 'SYSPRINT' ;
C'est un branchement conditionnel qui intervient si l'opérateur n'a pas spécifié de destination pour le fichier de sortie. Il est 5 alors envoyé sur l'imprimante du système, dans ce cas le terminal. Cette option perment de contrôler visuellement les données converties, ce qui est particulièrement utile pour la mise au point des programmes ou la vérification du système.
10 Ligne 310 PUT FILE (SYSPRINT) LIST (DESTIN) ;
Le nom de fichier introduit au clavier est immédiatement reproduit sur l'imprimante pour un contrôle visuel.
15 Ligne 320 IF DESTIN = 'SYSPRINT' THEN PUT SKIP; ELSE
Ce branchement conditionnel n'intervient que si la destination du fichier de sortie est l'imprimante pour positionner le papier au début d'une ligne. Dans le cas contraire (ELSE), l'ins-20 traction suivante est exécutée.
Ligne 330
OPEN FILE (DATAFILE) TITLE (DESTIN) OUTPUT; Le programme tente d'établir une seconde liaison avec le 25 support externe, cette fois pour le fichier de sortie. En cas d'échec, une erreur est signalée.
Ligne 350
/* ASSIGN TABLE DEFAULT VALUE */ TABLE = - 1 ; 30 Cette ligne commence par un commentaire et la partie «TABLE = — 1» introduit la valeur initiale — 1 dans les 256 rangées de la table.
Ligne 360 35 TABLINDX (1) = 0;
Charge la valeur zéro dans le premier élément de TABLINDX.
Ligne 380
40 /* LO AD CONVERSION TABLE */
(CHARGEMENT TABLE DE CONVERSION)
C'est un commentaire indiquant que la table de conversion va être chargée en mémoire. La table comprend deux colonnes: la colonne de gauche contient une représentation numérique du 45 caractère d'entrée et la colonne de droite contient l'équivalent numérique de sortie.
Ligne 390 OPEN FILE (CONVTABL) ;
so Le programme établit une troisième liaison avec le support externe pour préparer le traitement de conversion.
Ligne 400
ON ENOFILE (CONVTABL) TO TO ENDLOAD ; 55 Cette instruction indique qu'à la détection de la fin de la table de conversion, l'exécution se poursuivra à l'étiquette «ENDLOAD».
Ligne 410
co READ: GET FILE (CONVTABL) LIST (SUBSCRPT, VALUE);
Deux valeurs sont lues sur le support externe et sont mises en mémoire aux adresses «SUBSCRPT» et «VALUE».
65
Ligne 420
TABLE (SUBSCRPT) = VALUE; GO TO READ;
Le valeur «VALUE» est rangée dans la table à la ligne indiquée par la variable «SUBSCRPT». Toutes les lignes de la
629 321
6
table qui ne sont pas ainsi modifiées conservent leur valeur initiale de — 1 pour indiquer qu'il n'y a pas d'équivalence. La partie «GO TO READ» transfère le contrôle à l'étiquette «READ» pour permettre le traitement de la paire suivante.
Ligne 430
ENDLOAD : IF DESTIN = «SYSPRINT» THEN GO TO LISTFILE ;
La destination désirée pour les données de sortie est testée et le contrôle est transféré à l'étiquette «LISTFILE» si la sortie doit se faire sur imprimante. Dans le cas contraire, l'exécution se poursuit en séquence.
Ligne 450 /* CONVERT FILE*/
(CONVERSION FICHIER)
C'est un commentaire indiquant le rôle des instructions qui se suivent.
Ligne 460
LOOP : GET FILE (TAPUNF) LIST (CHUNK) ;
L'étiquette «LOOP» est définie et le groupe suivant de 18 caractères (appelé bloc) est transféré du support externe par la variable «CHUNK» en vue de sa conversion.
Ligne 470 DO POSITION = 1 TO 18;
La séquence d'instructions constituant la boucle est répétée pour chacun des 18 caractères de la variable «CHUNK».
Ligne 480 TUFLCHAR = BYTE (POSITION) ;
Cette instruction assigne temporairement l'un des 18 caractères (désignés par la variable «POSITION») à la variable «TUFLCHAR» pour créer un mot numérique complet (à partir d'un seul octet de «CHUNK») qui sera utilisé comme indexe dans la table de conversion.
Ligne 490
PUT FELE (DATAFELE) LIST (TABLE) (TABLINDX (1) ) ;
(La valeur donné par la table de conversion désignée par l'indexe est transférée sur le support externe. Cette opération étant répétitive, les lignes 480 et 490 sont éxecutées 18 fois de suite pour traiter les 18 caractères du block «CHUNK» sous contrôle de l'instruction DO. La variable K assure le comptage du nombre de blocs ainsi traités.
Ligne 500 END; K = K + 1 ; GO TO LOOP;
L'instruction END limite la portée de l'instruction DO précédente. K = K + 1 incrémente le comptage des caractères et le contrôle est transféré à l'étiquette «LOOP» pour traiter le bloc de données suivant.
Les lignes 520-570 assurent la même fonction de conversion des données que les lignes 450- 500, à la différence que la sortie est envoyée sur l'imprimante au lieu du support externe.
Ligne 590 /* EXIT */
C'est un commentaire indiquant la fonction des quatre lignes suivantes du programme.
Ligne 600 ENDUP : K = K * 18 ;
Cette instruction définit l'étiquette «ENDUP» pour l'instruction de fin et calcule la nouvelle valeur de K qui est égale au nombre de blocs multiplié par le nombre de caractères par bloc
(18), ce qui donne le nombre total de caractères traités. Dans l'application décrite, ce nombre peut aller jusqu'à 30 000.
Ligne 610
5 PUT SKIP (2) LIST (K, 'CHARACTERS LOADED') ;
C'est un saut de papier avant l'impression de la valeur de K suivie du message «CHARACTERS LOADED» (CARACTERES CHARGES).
10 Ligne 620 CLOSE FILE (CONVTABL), FILE (DATAFILE), FILE (TAPUNF);
Cette instruction sert à supprimer les liaisons établies avec le ou les supports externes des trois fichiers.
15
Ligne 630 ENDCONVERT;
Fin du programme de conversion, indique au compilateur la fin du programme source.
20 A l'issue de cette conversion, le code et le format des données d'entrée ont été convertis, c'est à dire qu'un train d'octets représentant des caractères est transformé en une séquence de nombres entiers d'un mot complet (4 octets) qui sont compatibles avec la structure du langage. La table de conversion assure 25 le transcodage des données qui facilite leur traitement ultérieur par le programme principal.
On voit surla figure 1 que le programme principal 18 travaille simultanément sur le fichier enregistrement converti 16 et 30 sur le fichier profil type converti 24. Le fichier 16 contient la distance enregistrée, la vitesse et les événements codées qui doivent être arrangés en mémoire dans un ordre logique. Le programme principal travaille ensuite sur ces données pour produire les différents graphiques et rapports. Le programme prin-35 cipal est écrit en FORTRAN et son organigramme est représenté sur la figure 2. Les pages 46b à 46i donnent les instructions source des différents sous-programmes. Les pages 46b et 46c correspondent aux fonctions de commande et de mise en place du programme principal.
40
Ligne 1020
INTEGER *2 TAPE (30000), DATA (3,10000), TM/30000 NT/10000/, %
Le terme «INTEGER *2» indique que 2 octets (un demi-45 mot) de mémoire doivent être réservés pour chacune des variables citées. La première variable définie est TAPE avec 30 000 éléments. Ainsi, 30 000 demi-mots sont réservés en mémoire auxiliaire pour recevoir les données lues dans le fichier d'entrée 16 (figure 1). La variable «DATA» est un tableau bidimension-50 nel de 10 000 lignes de hauteur sur trois colonnes de largeur correspondant respectivement à la distance, à la vitesse et aux codes d'événement. La variable «TM» peut avoir une valeur de 30 000 et représente le nombre maximal de caractères d'entrée pour lequel le programme est prévu. De même, NT représente 55 le nombre maximal d'articles prévus sur les disques. Le symbole « %» indique que l'instruction n'est pas terminée et continue sur la ligne suivante.
Ligne 1030
60 C'est donc la continuation de l'instruction qui définit la zone de mémoire auxiliaire affectée au fichier profil type (24 sur la figure 1). Cette variable est un tableau à trois colonnes contenant respectivement la distance, la vitesse et les événements. MTM (=500) spécifie le nombre maximal d'articles que peut 65 avoir le fichier profil type (limitation de mémoire).
Ligne 1040
INTEGER *4 Kl 151 ,KO 16/ ,KD III ,KM /SI
7
629 321
Cette instruction définit comme suit les unités d'entrée-sortie à utiliser par le programme:
KI/5/ - Données introduites par l'opérateur (clavier) KO/6/ - Sortie (imprimante)
KD/7/-Données enregistrées (disque)
KM/8/ - Profil type (disque)
Lignes 1050,1060,1070 INTEGER *2 El(16)/0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1/,% E3(16)/0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,/
,E5D(16)/8*0,8*l/,%
E4 (16/4*0,4*1,4*0,4*1/E5(16)/
8*0,1,2,1,2,1,2,1,2/
Ces tables sont créées pour faciliter l'accès au code d'événement. Le code d'événement comprend quatre bits donnant un total de 16 combinaisons possibles. La table El permet d'accéder au bit de plus bas rang du code, comme on le verra dans la suite. L'alternance de 0 et des 1 s'explique par le fait que le dernier bit du code est alternativement un 0 et un 1 lorsque le code prend dans l'ordre ses seize valeurs possibles.
Lignes 1072 et 1073 INTEGER *4 EV(26)/' ','P','M','MP','
T',' PT','MT','M PT', %
' D',' DP','MD','MDP','
D T',' DPT','MD T7MDPT7
Cette instruction crée un table «EV» capable de contenir 16 éléments de quatre caractères (un pour chaque événement). Cette table fournit une représentation sous forme de caractères des 16 combinaisons possibles de quatre événements ou paramètres: puissance développée, freinage dynamique, détection des bornes et freinage normal du train. Le principe de ce traitement est d'imprimer un caractère conventionnel lorsque le bit correspondant du code d'événement est un 1. Ainsi, toutes les combinaisons possibles sont définies de l'absence d'événements à la présence simultanée des quatre événements.
Ligne 1075
INTEGER *2 PLOT (53)/53*' 7,CM/'$7,CD/'*'/,CB/' 7
Cette instruction crée une zone auxiliaire de 53 positions pour la présentation graphique (la notation 53*' '/ indique que les 53 positions sont initialement à zéro). Trois autres variables contenant les symboles à utiliser sur le graphique ($, * et blanc) sont également définies.
Ligne 1080 INTEGER *4 EC,FLAG+PM/1/,PD/1,MS/ 1/,SPDCHK,TMAX
Des zones de mémoire sont réservées pour les différentes variables citées.
Lignes 1090 et 1092 INTEGER *2 YES/'Y'/,NO/'N'/ ,A/'A7,P/'P7,D/'D'/' E/'E'/,R/'R',%
REPLY,U/'U'/,0/'0'/,MC/'M '/,C/'C'/, S/'S7,XC/'X'/LM/,'L7
Cette instruction initialise les variables à utiliser pour le décodage des réponses au clavier. Par exemple, la variable YES (OUI) a la valeur du caractère 'Y'.
Ligne 1100
REAL *8 REPLY8 (2), NULL/' '/,REPLY9 (2)
Des zones de mémoire sont réservées pour des noms de fichier de 16 caractères qui seront utilisés ultérieurement. La variable NULL est initialement mise à zéro avec des blancs.
Ligne 1110 EQUIVALENCE (DATA(1,1), TAPE (1))
Pour économiser l'espace mémoire, on établit une équivalence ou un recouvrement automatique entre le tableau des données brutes (TAPE) et le tableau des données interprétées (DATA).
5
Ligne 1510 "* OPEN FILES*"
(OUVERTURE DES FICHIERS), c'est un simple commentaire.
10
Ligne 1520 1500 WRITE (KO,120)
Définit l'étiquette «1500» et commande l'impression du format 120 sur le périphérique précédemment défini par la variable îs KO (l'imprimante du terminal). Cette impression demande à l'opérateur le nom du fichier d'entrée.
Ligne 1530 READ (Kl, 108) REPLY9 20 C'est la lecture du nom du fichier d'entrée sur le périphérique défini par la variable Kl (le clavier du terminal) sous contrôle du format 108. La réponse est transférée dans la variable «REPLY9».
25 Ligne 1540 IF (REPLY9 (1).NE.NULL)CALL OPEN (KD,RE-PLY9,'INPUT')
Cette instruction de branchement conditionnel tente de localiser et de préparer le fichier d'entrée pour la suite du traite-30 ment si la réponse de l'opérateur n'est pas nulle.
Lignes 1550 à 1570
Des opérations similaires sont exécutées pour le fichier profil type.
35
Lignes 4001^4090
Cette séquence fonctionnelle permet d'interroger l'opérateur sur le type de traitement qu'il veut effectuer et d'appeler le sous-programme correspondant.
40
Ligne 4010
4000 WRITE (KO,400)
Impression du format 400 qui demande une réponse de l'opérateur.
45
Ligne 4020
4001 READ (Kl,101) REPLY
Cette instruction définit l'étiquette 4001 et commande la lecture de la réponse de l'opérateur sur le clavier sous le con-5o trôle du format 101. Le premier caractère de la réponse est rangé dans la variable «REPLY» qui est ensuite comparée à chacune des réponses autorisées (lignes 4030 à 4075) pour déterminer l'option choisie.
Si la réponse ne fait pas partie des réponses autorisées, le 55 programme continue à:
Ligne 4080 .
WRITE (KO,404)
Pour imprimer le format 4004 qui signale à l'opérateur que 6o sa réponse n'est pas valable.
Ligne 4090 - GO TO 4001
Cette instruction effectue un bouclage à l'étiquette 4001 (ligne 4020). Pour sortir de cette boucle itérative, l'opérateur 65 doit fournir une réponse valable.
Lignes 99101 à 99999 (page 46c)
Ceux sont des instructions de format utilisés dans toutes les
629 321
8
opérations d'entrée-sortie pour faciliter des échanges d'informations (messages, réponses, graphiques, analyses, etc.) entre le programme et le terminal. Ces instructions de format seront reprises dans la description du programme.
La ligne 99999 END indique la fin des instructions du programme.
Lorsque la réponse de l'opérateur a été identifiée comme l'une des réponses attendues, l'instruction correspondante (4030 à 4075) effectue un branchement au sous-programme désigné. Ces sous-programmes vont être décrits en détail. L'option END provoque le transfert du contrôle à l'instruction 99999 (ligne 99003) qui termine le programme. Le système est alors prêt pour entreprendre un traitement quelconque. Si l'option est «OFF», le contrôle est transféré à l'instruction 9998 (ligne 99002) qui est un appel au contrôleur de communication commandant l'interruption de la liaison avec le terminal et l'abandon de toutes les fonctions du système. Si l'option R est demandée (ou après la première itération du programme) le contrôle est transféré à l'instruction 1500 (ligne 1520) comme indiqué précédemment, puis au sous-programme de chargement des données. Ces opérations particulières appartiennent au bloc 2000 de la figure 2 et correspondent à l'organigramme de la figure 6. Leur but est de transférer les données enregistrées de l'unité de disques dans la mémoire et de les y préparer pour le traitement.
Ligne 2001 IF (REPLY9 (1)=NULL) GO TO 2910
En cas de réponse nulle pour le nom du fichier d'entrée, ce branchement permet de sauter la routine de chargement. Le contrôle est alors transféré directement à l'instruction 2910 (ligne 2160). Une réponse nulle n'est acceptable que s'il s'agit d'une opération de rechargement dans laquelle seul le profil type est à changer.
Ligne 2002 WRITE (KO,210)
Un message est imprimé sur le terminal (format 210) pour signaler à l'opérateur que le chargement du fichier a commencé. A ce point, deux types de fichiers peuvent être lus en mémoire, l'un contenant des données brutes du programme de conversion et nécessitant une interprétation, l'autre contenant des données conservées après un passage précédent du programme principal et ne nécessitant donc pas d'interprétation. C'est la première valeur du fichier qui détermine son type et le traitement à appliquer.
Ligne 2003 READ (KI) NSS
La première valeur du fichier est lue et rangée dans la variable NSS.
Ligne 2004 IF (NSS < 0) GO TO 2000
Test du signe de la première valeur du fichier: s'il est négatif, c'est un fichier de données brutes nécessitant une interprétation. Dans ce cas, le contrôle est transféré à l'instruction 2000 (ligne 2011). Dans le cas contraire, l'exécution se poursuit en séquence.
Ligne 2006
READ (KD) NT, ((DATA (I,J,), J=NSS,NT), 1= 1,3)
Les instructions déjà traitées sont transférées du disque à la mémoire.
Ligne 2008 WRITE (KO,204) NULL
Le message «LOADED» (CHARGE) est imprimé pour indiquer la fin de l'opération de chargement.
Ligne 2009 s GO TO 2910
Le contrôle est transféré à l'instruction 2910 (ligne 2160) pour sauter la routine de chargement qui suit.
Lignes 2011 et 2012 io 2000 DO 20011=1, TM 2001 READ (KD,END = 2003) TAPE (I)
Les données brutes (issues de la conversion) sont transférées du disque à la mémoire. «END=2003» indique qu'il faut donner le contrôle à l'instruction 2003 (ligne 2016) à la détection 15 d'un code de fin de fichier.
Ligne 2014 WRITE (KO,121 )TM
Un message d'erreur est imprimé si le nombre maximal de 20 valeurs d'entrée (variable TM) est atteint sans qu'une marque de fin de fichier soit détectée, ce qui signifie que la longueur du fichier dépasse l'espace mémoire réservé.
Ligne2018 25 TMAX = 1-1
La variable «TMAX» est le nombre d'articles effectivement chargés.
Ligne 2026 30 WRITE (KO,201) TMAX
Le nombre d'articles effectivement lus (TMAX) est imprimé et suivi du message «LOADED» (format 201).
Ligne 2038 35 "* REFORMAT DATA*"
Ce commentaire indique le début du sous-programme d'interprétation des données et de préparation de leur traitement par les autres sous-programmes (voir figure 11).
40 Lignes 2040 à 2058
Des valeurs initiales sont assignées à certaines variables utilisées par le sous-programme.
La ligne 2056 est la mise à zéro du compteur de distance.
45 Ligne 2060 "* START*"
Ce commentaire indique le début de la boucle itérative d'interprétation de la chaîne de données numériques (caractères) et de création du tableau 3 XN qui contiendra la distance parcou-50 rue, la vitesse et les codes d'événements à traiter par le reste du programme.
Ligne 2062
Début de la boucle itérative «DO» qui va jusqu'à l'instruc-55 tion 2900 (ligne 2150). Les instructions intermédiaires sont donc effectuées une fois pour chaque donnée d'entrée, sauf les deux premières.
A la ligne 2064, la ième valeur du train de données d'entrée est temporairement rangée dans la variable K et contrôlée à la 60 ligne 2066 pour détecter une éventuelle valeur négative qui indique que l'entrée n'est pas valable. Dans ce cas, le contrôle est transféré à l'instruction 2510.
La ligne 2068 définit l'étiquette 2505 et transfère le contrôle, à l'une des trois instructions 2600,2700 ou 2800 selon la valeur 65 courante de «L» (si L = 1, c'est l'instruction 260Ö qui est exécutée). La valeur de L identifie celui des trois types de données (distance, vitesse ou événements) qui est attendu par le programme.
9
629 321
Les lignes 2070 à 2076 sont exécutées aprè la ligne 2066 si l'entrée est reconnue non valable. La ligne 2070 définit l'étiquette 2510 et assigne à l'entrée erronnée une valeur nulle de défaut. Ces entrées erronnées sont par exemple provoquées par une erreur de transmission ou par un défaut du système.
La ligne 2074 imprime un message signalant à l'opérateur que le ième caractère des données d'entrée n'est pas valable. La ligne 2076 renvoie ensuite le contrôle à l'instruction 2505 pour continuer le traitement.
Les lignes 2084 à 2104 constituent une routine d'interprétation du caractère distance qui est constitué de cinq bits d'information de distance, d'un bit de marche avant/arrière et du quatrième bit d'événement.
La ligne 2086 (instruction 2600) teste la présence du bit de marche arrière et en son absence transfère le contrôle à l'instruction 2601. Si ce bit est présent, la ligne 2088 retranche un poids binaire de 64 de la valeur de distance et la ligne 2090 place un signe négatif devant la valeur correspondante.
La ligne 2092 (instruction 2601) teste la présence du quatrième bit d'événement et, en son absence, donne le contrôle à l'instruction 2602. Si ce bit est présent, la ligne 2094 retranche un poids binaire de 32 de la valeur de distance et la ligne 2096 met à jour le code d'événements approprié dans le tableau. A ce stade, il ne reste dans la variable K que les cinq bits de l'information de distance qui est rangée dans la case appropriée du tableau à la ligne 2098 (instruction 2602).
La ligne 2100 assure le comptage des intervalles d'enregistrement traités dans la variable «IDIST».
La ligne 2102 établit une valeur de L indiquant que le prochain caractère à traiter est un code d'événements (colonne 3). Finalement, la ligne 2104 renvoie le contrôle à l'instruction 2900 pour avancer le caractère d'entrée suivant.
Les lignes 2106à2114 concernent le traitement d'un caractère de vitesse, c'est à dire d'un caractère ne contenant qu'une information de vitesse. Sa valeur est simplement transférée dans la seconde colonne du tableau des données enregistrées à la ligne 2108. La valeur de L est mise à 1 à la ligne 2110 pour indiquer que le prochain caractère à traiter sera un caractère de distance. A la ligne 2112, le compte des articles du fichier d'enregistrement est décrémenté d'une unité et la ligne 2114 transfère le contrôle à l'instruction 2900 pour le traitement du caractère suivant.
Les lignes 2116 à 2148 constituent une routine d'interprétation des caractères d'événements et de vérification de la conformité des données. Le caractère contient les trois premiers bits d'événement et une configuration fixe de bits 1 et 0. Si cette configuration fixe n'est pas détectée, il y a erreur de synchronisation. Cette situation se produit lorsque le déroulement du sous-programme n'est pas synchronisé avec les transferts de données, c'est à dire si un caractère de distance apparaît alors qu'un caractère d'événement est attendu. La variable «ISE» sert à compter ces erreurs (ligne 2144) et le processus d'interprétation est abandonné si le nombre d'erreurs dépasse 50 à la ligne 2146. Dans le cas contraire, une valeur de défaut de 1 est assignée au code d'événement à la ligne 2148.
La ligne 2150 (instruction 2900) reçoit le contrôle après le traitement de chaque caractère par l'une des trois routines décrites ci-dessus. La ligne 2152 est un commentaire indiquant la dernière instruction de la boucle d'interprétation. Le pointeur de caractères est décrémenté et le contrôle est rendu à la ligne 2062 jusqu'à ce que tous les caractères de la mémoire aient été traités. Lorsque tous les caractères on été traités ou lorsque la limite des erreurs de synchronisation a été dépassée, le contrôle est transféré à la ligne 2154 qui définit simplement l'étiquette 2905.
La ligne 2156 imprime le nombre d'erreurs de synchronisation s'il y en a eu (variable ISE non nulle).
La ligne 2158 place un pointeur indiquant le début des données valables du tableau. La variable NSS désigne donc le premier élément valable de l'enregistrement en mémoire.
La ligne 2160 définit l'étiquette d'instruction 2910 et place un pointeur temporaire indiquant la première borne égale au 5 point initial de l'enregistrement.
Les lignes 2165 à 2200 assurent une recherche dans le tableau pour y détecter les bornes enregistrées à aligner avec le profil type.
Les lignes 2165 à 2170 servent à initialiser diverses varia-10 bles.
La ligne 2172 marque l'entrée d'une boucle itérative allant jusqu'à l'instruction 2930 (ligne 2194) pour rechercher la présence d'une borne dans chaque article du fichier.
La ligne 2174 donne le contrôle à l'instruction 2930 si l'arti-15 de examiné ne contient pas de borne. Par contre, si une borne est détectée, la ligne 2175 examine l'article précédent pour voir s'il contient également une borne. Dans ce cas, la borne n'étant pas la première d'une série consécutive, elle est ignorée et le contrôle est rendu à l'instruction 2930 pour reprendre la boucle 2o avec l'article suivant.
La ligne 2176 examine la valeur de J pour déterminer si la borne trouvée est ou non la première du fichier. Si c'est le cas (J= 1), la ligne 2178 place un pointeur (NS) pour repérer l'emplacement de la première borne, la ligne 2180 enregistre la 25 distance actuelle dans la variable NDISTM, la ligne 2182 positionne la variable J pour indiquer que la première borne a été trouvée et la ligne 2184 rend le contrôle à l'instruction 2930 pour traiter l'article suivant. Si la borne trouvée n'est pas la première, la ligne 2176 donne le contrôle à la ligne 2186 qui 30 détermine s'il s'agit de la seconde borne ou d'une borne ultérieure. Si la seconde borne a déjà été trouvée et traitée (J=2), le contrôle est rendu à l'instruction 2930, comme précédemment, sinon la ligne 2188 calcule la distance qui sépare les première et seconde bornes en retranchant la distance enregistrée à la pre-35 mière borne (NDISTM) de la distance actuelle (NDIST). Le résultat est chargé dans la variable NDISTM, puis la ligne 2190 enregistre la position de la seconde borne dans NM2 et la ligne 2192 modifie la valeur de J pour indiquer que la seconde borne a également été trouvée.
40 La ligne 2194 (qui est la dernière instruction de la boucle itérative commençant à la ligne 2172) tient un comptage de la distance relative parcourue depuis le début des données valables.
A la ligne 2196, un message d'avertissement (format 261) 45 est imprimé si les deux bornes n'ont pas été trouvées.
Ala ligne 2198, la distance approximative couverte par l'enregistrement est calculée en divisant le nombre d'unités enregistrées par le nombre estimé d'unitées par kilomètre.
La ligne 2200 imprime le résultat du calcul précédent avec so une indication appropriée (format 271). Après le chargement des données de l'enregistrement, le programme passe au chargement des données du profil type en exécutant la séquence 3000 à 3300 qui commence par une ligne de commentaire (3020)
La ligne 3030 charge dans la variable SM la valeur 1/100 qui 55 est le facteur d'échelle applicable au fichier du profil type.
La ligne 3040 est un test permettant de déterminer s'il faut ou non charger un nouveau fichier de profil type. Si ce n'est pas nécessaire (réponse de la ligne 1560 nulle ou en blanc), le contrôle est donné à l'instruction 3200 (ligne 3350). Par contre, s'il 6o faut charger un fichier de profil type, les lignes 3050 à 3290 sont exécutées.
La ligne 3050 commande l'impression du message «LOA-DING» pour indiquer le début de la routine de chargement.
La ligne 3060 initialise la variable J à 0. Comme précédem-65 ment, J indique s'il s'agit de la première, de la seconde ou d'une autre borne kilométrique.
La ligne 3070 initialise à 1 le nombre d'articles du profil type. La ligne 3080 initialise le compteur de distance MDIST à
629 321
10
0. MDIST totalise le nombre de centièmes de kilomètre couverts à partir du premier article.
La ligne 3090 définit l'étiquette d'instruction 3010 et lit sur disque une ligne du profil type pour l'introduire en mémoire. Cette donnée est rangée dans l'article M de la variable «MASTER» et se compose de trois éléments: la distance (en 1/100 de km), la vitesse et un code d'événements. La notation «END = 303» provoque le transfert du contrôle à l'instruction 3030 lorsque la fin du fichier est atteinte.
Les lignes 3100 et 3110 permettent d'ignorer les articles dont les codes d'événements sont négatifs.
La ligne 3120 détermine si l'article traité contient une borne dans son code d'événements. Pour cela, on ajoute 1 au code d'événements (MASTER (3,M)) et on utilise la valeur résultante comme indexe dans la table E4 définie à la ligne 1070. Si la table contient un 1 dans l'emplacement désigné, la borne est présente. Par contre, si la table contient un 0, il n'y a pas de borne et le contrôle est rendu à l'instruction 3020 pour traiter l'article suivant.
Lorsqu'une borne est détectée, la ligne 3130 détermine s'il s'agit de la première ou d'une borne ultérieure. Dans le premier cas, les lignes 3140 à 3180 sont exécutées. La ligne 3140 positionne la variable MS pour signaler que la première borne se trouve dans cet article. La ligne 3150 positionne J à la valeur 1 pour indiquer que la première borne a été trouvée. La ligne 3160 totalise les marques de distance dans la variable «DISTM» pour une utilisation ultérieure.
La ligne 3170 calcule la distance kilométrique de la borne en multipliant la distance actuelle (en 1/100 de km) par un facteur d'échelle de 0,01 et charge le résultat dans la variable STARTR.
La ligne 3180 rend le contrôle à l'instruction 3020 pour traiter l'article suivant.
La ligne 3190 définit l'étiquette d'instruction 3015 et détermine si la borne trouvée est la seconde ou une borne plus éloignée. Si la seconde borne a déjà été trouvée, le contrôle est rendu à l'instruction 3020 pour appeler l'article suivant, sinon la ligne 3200 positionne J à la valeur 2 pour indiquer que la seconde borne a été trouvée. La ligne 3210 calcule la distance relative entre les deux bornes en retranchant la distance enregistrée à la première borne de la distance actuelle, le résultat étant chargé dans la variable MDISTM.
La ligne 3220 (instruction 3020) assure le comptage de la distance en ajoutant la distance de l'article en cours de traitement (MASTER (1,M)) au comptage précédent.
La ligne 3230 incrémente le nombre d'articles.
La ligne 3240 contrôle si l'article suivant peut entrer dans la zone réservée au profil type (ligne 1030) et, si c'est le cas, rend le contrôle à l'instruction 3010 pour lire l'article. Si le nombre d'articles dépasse le nombre maximal prévu (MTM), l'instruction suivante de la ligne 3245 est exécutée en séquence pour imprimer un message signalant à l'opérateur un dépassement de la capacité du fichier d'entrée. Normalement, la ligne 3250 (instruction 3030) reçoit le contrôle de la ligne 3090 lorsque la fin du fichier a été atteint et charge dans la variable MT une valeur désignant le dernier article valable enregistré en mémoire.
La ligne 3260 imprime le nombre d'articles du fichier profil type qui ont été chargés.
La ligne 3270 imprime un message d'avertissement si deux bornes au moins n'ont pas été trouvées.
La ligne 3290 appelle une routine de service pour fermer le fichier profil type et supprimer la liaison du programme avec le support externe.
Les lignes 3350 à 3400 utilisent certaines valeurs qui ont été précédemment obtenues pour calculer le facteur d'échelle des données enregistrées, comme le suggère le commentaire de la ligne 3340.
A la ligne 3350 (instruction 3200), la constante de vitesse est fixée à 1.
La ligne 3360 assigne une valeur initiale nulle au facteur d'échelle ou constante de distance (DC).
Si le nombre d'unités d'enregistrement comprises entre les deux premières bornes des données enregistrées n'est pas nul, la 5 ligne 3370 calcule une nouvelle valeur du facteur d'échelle en multipliant l'intervalle défini par les deux premières bornes du profil type par le facteur d'échelle applicable à ce profil, et en divisant le résultat par le nombre d'unités d'enregistrement comprises entre les bornes des données enregistrées, ce qui io donne la distance représentée par chaque unité d'enregistrement (DC).
Si le facteur d'échelle a toujours une valeur nulle à la ligne 3380, une valeur de défaut de 0,05 lui est assignée pour poursuivre le traitement 15 Le signe de DC est choisi d'après le signe du nombre total d'unités d'enregistrement dans le fichier de façon que le résultat de la multiplication soit une distance positive.
La ligne 3390 calcule la distance totale du parcours et l'introduit dans la variable DIST.
20 La ligne 3400 imprime la distance totale du parcours couvert par l'enregistrement et le facteur d'échelle à utiliser pour le reste du programme.
La ligne 3410 assigne à la variable DCP la valeur absolue de la variable DC. Ceci marque la fin du sous-programme de char-25 gement des données enregistrées et du profil type en mémoire à partir des unités de disques. Les données sont maintenant prêtes à être traitées par les autres söus-programmes.
Le sous-programme d'analyse (figure 5) comprend les lignes dont le numéro débute par un 5. Il compare les données enregis-30 trées au profil type pour en tirer des rapports d'anomalies.
La ligne 5006 commande l'impression d'un message correspondant au format 500 pour demander à l'opérateur d'introduire la tolérance de vitesse (en km/h). H y a violation lorsque la vitesse enregistrée dépasse la vitesse limite plus la tolérance 35 spécifiée. Cette tolérance est chargéé dans la variable MTOL.
Les lignes 5010 à 5052 assurent l'initialisation d'un certain nombre de variables utilisées dans la suite du sous-programme.
La ligne 5030 imprime l'entête du rapport (format 501). La variable DISTD indique le point où l'article traité des données 40 enregistrées cesse d'être applicable. De même, la variable DISTM indique le point où l'article traité du profil type cesse d'être applicable.
La ligne 5054 détermine le plus proche de ces deux points, et par conséquent celui des deux articles (données ou profil 45 type) qui doit être mis à jour le premier. Si DISTD 3= DISTM, le contrôle est rendu à l'instruction 5030, sinon les lignes 5058 à 5109 sont exécutées pour mettre à jour les données enregistrées.
La ligne 5060 analyse l'état d'un indicateur de fin de traitelo ment de l'article et, s'il est positionné, l'article suivant est traité.
La ligne 5062 incrémente le nombre d'articles.
La ligne 5064 contrôle si le nombre d'articles obtenus correspond aux données enregistrées et sinon donne le contrôle à l'instruction 5090 pour terminer l'analyse.
ss La ligne 5066 contient le nombre total d'unités d'enregistrement recontrées depuis la première borne.
La ligne 5068 calcule la vitesse réelle en multipliant la vitesse enregistrée par l'échelle de vitesse (cans ce cas 1). Pour tout article de données, le code d'événements ne s'applique qu'à 60 la dernière unité d'enregistrement. Ainsi, si un article représente plus d'une unité d'enregistrement et s'il contient également un événement, il doit être traité deux fois, une première fois pour la dernière unité d'enregistrement qui contient l'événement et une fois pour le reste de l'article sans événement. 65 La ligne 5070 contrôle l'état du code d'événements.
Si un événement est présent, la ligne 5072 détermine si l'article comprend plusieurs unités d'enregistrement et s'il nécessite un double traitement.
11
629 321
Si c'est le cas, la ligne 5074 positionne l'indicateur et la ligne 5076 décrémente le compteur de distance pour tenir compte du fait que la dernière unité d'enregistrement de l'article contient un événement.
La ligne 5078 positionne le code d'événements actuel pour indiquer une absence d'événement.
La ligne 5082 calcule la distance actuelle absolue (en km) en ajoutant le produit du comptage des unités d'enregistrement (NDIST) et de l'échelle des données (DC) à la distance initiale correspondant au début du parcours.
La ligne 5084 contrôle si la nouvelle valeur de la distance est plus grande que la précédente et, si ce n'est pas le cas, le contrôle est donné à l'instruction 5020 pour avancer de nouvelles données.
Sinon, la distance actuelle est prise comme dernière distance à la ligne 5086.
La ligne 5088 donne le contrôle à l'instruction 5060 pour analyser la vitesse.
La ligne 5090 est exécutée lorsque la dernière unité de l'article est en train d'être traitée et signale le fait en supprimant l'indicateur.
La ligne 5092 rajoute une unité au contenu du compteur de distance pour remplacer celle qui avait été temporairement enlevée à la ligne 5076.
La ligne 5094 assigne la valeur actuelle du code d'événements à la variable «EC».
La ligne 5098 totalise le nombre d'unités d'enregistrement pendant lesquelles les freins étaient appliqués (plus généralement quand le quatrième bit est un 1).
Les lignes suivantes 5099 à 5109 (page 46g) constituent une routine capable de détecter et de signaler d'éventuelles violations d'événement.
La ligne 5100 compare la valeur de l'état antérieur des freins (LEC) avec leur état actuel. S'il n'y a pas de changement, le contrôle est donné à l'instruction 5026 et l'état actuel des freins est assigné à LEC. L'instruction 5005 reçoit le contrôle au début de l'application des freins et enregistre la distance de freinage dans la variable Z. L'instruction 5007 reçoit le contrôle au moment du desserrage des freins et examine le code d'événements actuel du profil type pour déterminer s'il y a des restrictions de freinage. Si c'est le cas, la ligne 5107 imprime un message de violation des consignes avec indication des points initial et final.
Les lignes 5120-5180 font avancer le fichier du profil type selon les besoins.
La ligne 5130 incrémente le nombre d'articles.
La ligne 5140 vérifie que l'article est bien présent dans le fichier et, si ce n'est pas le cas, provoque un branchement à l'instruction 5090 pour terminer la routine.
La ligne 5150 calcule la nouvelle distance type.
La ligne 5160 extrait la vitesse limite et la ligne 5170 extrait le code d'événements.
A la ligne 5180, s'il n'y a pas eu de changement dans le code d'événements du profil type, c'est-à-dire si le nouveau code (NMEC) est égal à l'ancien (LMEC), le contrôle est donné à l'instruction 5059 où la valeur de LMEC est rendue égale à celle de NMEC.
Si le code d'événements du profil type est modifié, les lignes 5190 à 5290 sont exécutées. Ces lignes constituent un second exemple de routine de détection et de rapport d'éventuelles violations de consignes.
La ligne 5200 détermine si le changement affecte le quatrième bit du code d'événements qui, dans l'exemple décrit, était un 1 pour indiquer que l'emploi du freinage dynamique était prescrit sur cet intervalle de distance. Si ce bit n'a pas changé, le contrôle passe à l'instruction 5036 qui peut examiner l'un des autres bits du code d'événements. Si le quatrième bit était un 0 et est devenu un 1, c'est que le véhicule est entré dans une zone de freinage imposée et les lignes 5210 à 5240 sont exécutées.
A la ligne 5210, le comptage du nombre d'intervalles d'enregistrement est remis à zéro.
La ligne 5220 fait passer le comptage à un si les freins du 5 véhicule sont appliqués à ce moment.
La ligne 5230 établit une variable pour enregistrer le numéro de la borne kilométrique marquant le début de la zone de freinage.
La ligne 5240 transfère le contrôle pour la détection de io l'événement suivant. Si le quatrième bit était un 1 et est devenu un 0, c'est que le véhicule vient de quitter une zone de freinage imposé et les lignes 5250 à 5270 sont exécutées.
La ligne 5250 calcule une valeur de la variable X qui est le rapport de la distance sur laquelle les freins ont été effective-15 ment appliqués àia distance sur laquelle ils devaient l'être.
La ligne 5260 vérifie ce rapport par comparaison avec une valeur minimale prescrite et donne le contrôle à la séquence de vérification de l'événement suivant si les consignes ont bien été respectées. Dans le cas contraire, par exemple si les freins de-20 vaient être appliqués sur au moins 50 % de la zone et ne l'ont été que sur 10%, la violation.est signalée à la ligne 5270 avec impression des bornes de début et de fin de la zone de freinage et de la fraction de la zone sur laquelle les freins ont été effectivement appliqués. Le commentaire de la ligne 5280 indique que 25 d'autres routines d'examen d'événements peuvent être introduites à ce point selon les besoins de l'utilisateur.
Les lignes 5320 à 5640 comparent la vitesse du véhicule à la vitesse limite prescrite et les éventuelles violations de consignes sont imprimées dans le rapport.
30 A la ligne 5330, la distance initiale du segment en cours d'analyse est rendue égale à la distance finale du segment précédent et la distance finale du segment en cours d'analyse est rendue égale à la plus petite des deux variables «DISTD» et «DISTM» qui sont respectivement les distances ou les articles 35 des données enregistrées et du profil type cessent d'être applicables.
La ligne 5350 détermine ensuite si l'excès de vitesse est supérieur à la tolérance et, si c'est le cas, les lignes 5360 à 5430 sont exécutées. Sinon, l'exécution se poursuit à la ligne 5440. 40 La ligne 5360 fixe la valeur de ISV pour indiquer une violation en cours de la limitation de vitesse.
La ligne 5370 donne à la variable BDIST (borne initiale de la violation) une valeur égale à la distance actuelle si le véhicule vient d'entrer en violation.
45 La ligne 5380 détermine l'importance de l'excès de vitesse.
La ligne 5390 compare l'excès de vitesse actuel au maximum enregistré pour la violation actuelle et s'il dépasse ce dernier, les lignes 5400 à 5430 sont exécutées.
La ligne 5410 exprime que la violation actuelle est unmaxi-50 mum et range la valeur correspondante dans la variable MLIMIT.
La ligne 5420 calcule le point approximatif du maximum de la violation.
La ligne 5430 donne le contrôle à l'instruction 5070 pour 55 traiter le tronçon suivant.
Si la ligne 5390 a déterminée qu'il n'y avait pas violation de la limite de vitesse,
la ligne 5440 contrôle l'état de l'indicateur de violation. S'il est positionné, c'est que la violation vient de cesser et l'exécu-60 tion se poursuit aux lignes 5450 à 5530.
La ligne 5450 efface l'indicateur de violation.
La ligne 5460 incrémente le compte du nombre de violation de vitesse.
La ligne 5470 calcule la longueur de la violation. 65 La ligne 5480 totalise les kilomètres parcourus en violation de vitesse.
La ligne 5490 est l'impression de l'état des violations.
La ligne 5500 détermine si c'est le dernier passage dans la
629 321
12
boucle et si c'est le cas, donne le contrôle à l'instruction 5094. Sinon, les trois variables «BDIST», «MLIST» et «MAXOVR» sont remises à zéro et la ligne 5540 donne le contrôle à l'instruction 5010 pour faire avancer de nouvelles données. Lorsque l'un des fichiers d'enregistrement ou de profil type est épuisé, le contrôle passe à la ligne 5570 qui termine la routine. Dans ce cas, l'instruction 5090 contrôle l'état de l'indicateur de violations et, s'il est encore positionné, la ligne 5580 indique que c'est la «dernière violation», puis la ligne 5590 donne le contrôle à l'instruction d'impression 5062.
Finalement, la ligne 5600 examine le compteur de violations et s'il est à zéro, la ligne 5630 imprime un message précisant qu'il n'y a pas eu de violation des consignes de vitesse.
Dans le cas contraire, la ligne 5610 imprime le nombre de violations enregistrées et la distance totale en kilomètres parcourus pendant ce temps.
Dans les deux cas, le contrôle est transféré à l'instruction 4000 pour traiter la demande suivante.
Les lignes dont les numéros commencent par 7 constituent le sous-programme de présentation graphique (organigramme figure 3 et instructions page 46i) qui constitue l'une des options de branchement delà ligne 4030.
La ligne 7030 imprime un message demandant à l'opérateur d'introduire les limites du graphique.
La ligne 7040 lit ces limites sous la forme de bornes initiale et finale. D'ime manière analogue, les lignes 7050 et 7060 demandent et lisent l'échelle (ou résolution ) du graphique.
A la ligne 7070, si la valeur 0 est spécifiée pour l'échelle, la demande est rététée. Si la valeur introduite est positive, elle représente un nombre de lignes par kilomètre et si elle est négative, elle représente un nombre de kilomètres par ligne.
D'après cette définition, les lignes 7080 et 7090 déterminent la valeur de l'échelle variable «SCALE» qui représente la distance réelle entre des points correspondant à deux lignes consécutives du graphique. Par exemple, si l'échelle spécifiée est 20 lignes/kilomètre la valeur de la variable SCALE est 0,05 (1/20).
La ligne 7100 vérifie que le numéro de la borne initiale du graphique (START) est égal ou supérieur à celui de la borne initiale du parcours enregistré (STARTR).
La ligne 7110 calcule le nombre de lignes à imprimer, soit le nombre de kilomètres divisé par le nombre de lignes/km, plus 1. Si le nombre de lignes dépasse un facteur de sécurité prédéterminé (par exemple 41), la routine sollicite la permission de procéder comme suit:
A la ligne 7120, le contrôle est donné à l'instruction 7005 qui commence la présentation graphique si le nombre de lignes est compatible avec la limite.
Sinon, la ligne 7130 imprime le nombre de lignes et demande l'autorisation de poursuivre. La réponse de l'opérateur est lue à la ligne 7140 et si elle n'est pas «YES» (OUI), la ligne 7150 donne le contrôle à l'instruction 4000 pour traiter une nouvelle demande.
Les lignes 7160 à 7220 assignent les valeurs initiales voulues aux variables.
Les lignes 7230 à 7300 assurent l'acquisition des données du profil type nécessaires pour la création de la ligne graphique.
La ligne 7230 incrémente le nombre d'articles du profil type.
La ligne 7240 vérifie si la fin des données est atteinte et, si c'est le cas, donne le contrôle à l'instruction 7059 pour achever la routine.
La ligne 7250 calcule une nouvelle valeur de distance sur le profil type.
La ligne 7260 transfère un caractère blanc (CB) dans la zone tampon qui contenait les anciennes données de présentation graphique.
La ligne 7270 calcule une nouvelle position du profil type (PM) en prenant la moitié de la limite de vitesse plus 1.
La ligne 7280 transfère le caractère «profil type» (CM = $) dans la nouvelle position de la zone tampon.
La ligne 7290 replace le caractère «enregistrement» (CD) car les positions des points représentatifs du profil type et de 5 l'enregistrement peuvent coïncider.
Finalement, la ligne 7300 détermine si le fichier de profil type a été suffisamment avancé pour inclure la ligne actuelle du graphique. Si ce n'est pas le cas, les opérations précédentes sont répétées.
io Les lignes 7310 à 7470 permettent d'acquérir les données enregistrées nécessaires pour la ligne actuelle du graphique.
La ligne 7310 détermine si le fichier d'enregistrement a été suffisamment avancé et, si c'est le cas, le contrôle est donné à l'instruction 7030.
15 Sinon, l'instruction 7320 incrémente le numéro d'article.
La ligne 7330 détermine si les données enregistrées sont épuisées.
La ligne 7340 compte les unités d'enregistrement rencon-
20 trées.
La ligne 7350 calcule la nouvelle distance réelle (enregistrement).
La ligne 7360 examine s'il faut encore avancer le fichier.
La ligne 7370 introduit un caractère blanc dans l'ancienne
25 position «enregistrement».
La ligne 7380 calcule la nouvelle position de la vitesse dans la zone tampon.
La ligne 7390 limite la position d'impression au 52ème caractère.
3Q La ligne 7400 replace le caractère «profil type» car il pouvait coïncider avec l'ancien caractère «enregistrement» qui vient d'être supprimer. La ligne 7410 place le caractère enregistrement (CD) à sa nouvelle position dans la zone tampon. Pour tout article, le code d'événements ne s'applique qu'à la dernière
35 unité d'enregistrement. Au moment de l'impression, la variable «L» contient la valeur ad hoc du code d'événements déterminée par les lignes 7420 à 7460.
La ligne 7420 initialise L à la valeur 1 (pas d'événement).
La ligne 7430 range le code d'événements dans la variable
40 «K».
la ligne 7450 permet de calculer la distance à laquelle le code d'événements prend effet (DISTE), soit une unité (DCP) de moins que la distance correspondant à la fin de l'article (DISTD).
45 La ligne 7460 assigne à «L» la valeur du code d'événements (K) lorsque la distance spécifiée pour le graphique dépasse la «distance d'événement» (DISTE).
La ligne 7480 détermine la partie de la zone tampon à imprimer pour couvrir les deux caractères (profil type et vitesse).
50 On gagne ainsi du temps en omettant l'impression des caractères blancs à droite des informations significatives.
La ligne 7490 imprime l'entête du graphique (référence 44 sur la figure 4) ainsi que le numéro d'articles de données si la distance spécifiée est égale à la distance initiale de départ.
55 La ligne7500 imprime laligne courante du graphique constituée par la distance (borne kilométrique), les caractères d'événements, et le nombre de caractères de la zone tampon indiqué par la variable J.
La ligne 7520 calcule la distance pour la ligne suivante en
60 ajoutant l'échelle à la distance précédente.
Si la distance résultante est inférieure à la distance finale,
la ligne 7530 donne le contrôle à l'instruction 7015 pour poursuivre le traitement. A la fin du graphique demandé (ou lorsque l'un des deux fichiers a été épuisé).
65 La ligne 7540 imprime la ligne du bas du graphique et la ligne 7550 rend le contrôle à l'instruction 4000 pour obtenir une nouvelle demande à traiter.
Ci-après les listes de programme sont données.
13
CONVERT 15:58 03/05/74 TUESDAY I05
629 321
100 CONVERT : PROCEDURE ;
110 DECLARE CONVTABL ENVIRONMENT (LINE) INPUT.
120 (TAPUNF .DATAFILE) ENV (INTERNAL).
130 BYTE(O.O) CHAR(l) .CHUNK CHAR(18) .
140 TABLINDX(0:0) FIXED(9). FILL CHAR( 3).
150 TUFLCHAR CHAR(l). TABLE(0:255) FIXED(9).
160 (SUBSCRPT. VALUE.POSITION)FIXED(9).
170 (SOURCE.DESUN) CHARACTER(8);
180 ON ENOFILE (TAPUNF) GO TO ENDUP;
190 ON ERROR GO TO FETCH ;
200 FETCH: K = 0;
210
220 /* OPEN INPUT FILE (TAPUNF) */
230 PUT LIST('INPUT FILE') ;
240 GET FILE(SYSIN) LIST(SOURCE) ;
250 PUT FILE(SYSPRINT) LIST(SOURCE) ;
260 OPEN FILE(TAPUNF) TITLE(SOURCE) INPUT ;
270
280 /* OPEN OUTPUT FILE (DATAFILE) */
290 PUT SKIP(2) LIST('OUTPUT FELE') ;
300 GET FTLE(SYSIN) LIST(DESTIN) ;
305 IF DESTIN = " THEN DESTIN = 'SYSPRINT' ;
310 PUT FILE (SYSPRINT) LIST(DESHN) ;
320 IF DESTIN = 'SYSPRINT' THEN PUT SKIP ; ELSE
330 OPEN FILE(DATAFILE) TTTLE(DESHN) OUTPUT ;
340
350 /* ASSIGN TABLE DEFAULT VALUE */ TABLE = -1 ;
360 TABLINDX(l) = 0 ;
370
380 /* LO AD CONVERTTON TABLE */
390 OPEN FILE(CONVTABL) ;
400 ON ENDFILE(CONVTABL) GO TO ENDLOAD ;
410 READ : GET FILE(CONVTABL) LIST(SUBSCRPT.VALUE) ;
420 TABLE(SUBSCRPT) = VALUE ; GO TO READ ;
430 ENDLOAD : IF DESTIN = 'SYSPRINT' THEN GO TO LISTFILE;
440
450 /* CONVERT FILE */
460 LOOP : GET FILE(TAPUNF) LIST(CHUNK) ;
470 DO POSITION = 1 TO 18 ;
480 TUFLCHAR = BYTE(POSITION) ;
490 PUT F1LE(DATAFILE) LIST(TABLE(TABLINDX(1))) ;
500 END ;K = K+l;GOTO LOOP;
510
520 /* LIST FILE*/
530 LISTFÏLE : GET FTLE(TAPUNF) LIST(CHUNK) ;
540 PUT SKIP ; DO POSITION = 1 TO 18 ;
550 TUFLCHAR = BYTE(POSITION) ;
560 PUT FILE(SYSPRINT) EDIT(TABLE(TABLINDX) (1))) (F(4)) ;
570 END ; K = K + 1 ; GO TO LISTFELE ;
580
590 /* EXIT */
600 ENDUP : K = K * 18 ;
610 PUT SKIP(2) LIST(K. 'CHARACTERS LOADED') ;
620 CLOSE FILE(CONVTABL).FTLE(DATAFILE). FILE(TAPUNF) ;
630 END CONVERT ;
M 15:49 03/05/74 TUESDAY I05
1000 "* MAIN*"
1020 INTEGER*2 TAPE (30000),DATA (3.10000),TM/30000/,NT/10000/. %
1030 MASTER (3.500).MTM/500/
1040 INTEGERM KI/5/.KO/6/.KD /7/.KM/8/
1050 INTEGER*2El(16)/0.1.0.1. 0.1.0.1.0.1.0.1.0.1.0.1/.%
1060 E3(16)/0.0.1.1.0.0.1.1.0.0.1.1.0.0.1.1. /.E5D(16)/8*0.8*l/.%
1070 E4(16)/4*0.4*1.4*0.4*1/.E5(16)/8*0.1.2.1.2.1.2.1.2/
M
1072
1073
1075
1080
1090
1092
1100
1110
1500
1510
1520
1530
1540
1550
1560
1570
4000
4001
4010
4020
4030
4040
4050
4060
4070
4075
4080
5000
5010
7000
7010
9000
9010
M
99000
99001
99002
99003
99100
99101
99108
99120
99121
99122
99201
99210
99212
99251
99261
99271
99291
99310
99320
99400
99402
99404
99500
99501
14
15:49 03/05/74 TUESDAY 105
INTEGER*4EV(16)/ ' V P'.'M'.'MP'.' T'.' PT7MTVM PT\ %
' D'.' DP'.'MD'.'MDP'.' D T'.' DPT'.'MD T'.'MDPTV INTEGER*2 PLOT(53)/53*' 7.CM/'$'/.CD/'*'/.CB/' 7 INTEGERM EC.FLAG.PM/1 /.PD/l/.MS/l/.SPDCHK.TMAX INTEGER*2 YES/'Y'/.NO/'N'/.A/'A'/.P/'P'/.D/'D'/.E/'E'/.R/'R'/. %
REPLY .U/'U7.0/'07.MC/'M7.C/'C7.S/'S7.XC/'X7.LM/'L7 REAL*8 REPLY8(2).NULL/' 7. REPLY9(2)
EQUIVALENCE (DATA(l.l).TAPE(l))
"* OPEN FILES*"
1500 WRITE(K0.120)
READ(KI.108) REPLY9
IF(REPLY9(1).NE.NULL) CALL OPEN(KD.REPLY9. 'INPUT')
WRTTE(K0.122)
READ(KI.108) REPLY8
IF(REPLY8(1).NE.NULL) CALL OPEN(KM.REPLY8.'INPUT')
"* PROCESSREQ*"
4000 WRITE(K0.400)
4001 READ(KI.101) REPLY IF(REPLY=P) GO TO 7000 IF(REPLY=A) GO TO 5000 IF(REPLY=D) GO TO 9000 IF(REPLY=R) GO TO 1500 IF(REPLY=E) GO TO 9999 IF(REPLY=0) GO TO 9998 WRITE(K0.404)
5000 WRITE(KO.402)
GO TO 4000
7000 WRITE(K0.402)
GO TO 4000
9000 WRITE (K0.402)
GO TO 4000
16:03 03/05/74 TUESDAY I05
"* ENDUP*"
9998 CALL COM('OFF')
9999 STOP
101 FORMAT (2A1)
108 FORMAT (2A8)
120 FORMAT ('INPUT FILE?')
121 FORMAT ('I*F*C*E'.I8)
122 FORMAT (' MASTER FELE?')
201 FORMAT (18.'LOADED')
210 FORMAT ('LOADING')
212 FORMAT ('SPILL?')
251 FORMAT (' IV'. 16)
261 FORMAT (' FEWER THAN 2 MARKS')
271 FORMAT (' APPROX DIST COVERED'.FlO.l)
291 FORMAT (16.' SYNC ERRORS')
310 FORMAT (' MASTER LT 2 MARKS')
320 FORMAT (' ACTUAL DIST COVERED'.F11.2.F10.4.'=UNIT DIST.'./)
400 FORMAT ('OA*P*R*D ORE')
402 FORMAT (' UNAVAILABLE')
404FORMAT(' +1VLDRQ'./.' + NAI E.'./)
500 FORMAT ('SPEED TOL?')
501 FORMAT (' ######## ######## ANALYZE #################'./.%
FROM TO LIM. OVR.')
503 FORMAT (2F10.2.2I6.F10.2)
504 FORMAT (2F10.2.' ***BRK ERROR***'.F6.2)
506 FORMAT (' NO SPEED VIOLATIONS DETECTED')
L
2000
2001
2002
2003
2004
2006
2008
2009
2011
2012
2014
2016
2018
2026
2036
2038
2040
2042
2044
2046
2048
2052
2054
2056
2058
2060
2062
2064
2066
2068
2070
2074
2076
2084
2086
2088
2090
2092
2094
2096
2098
2100
2102
2104
L
2106
2108
2110
2112
2114
15
629 321
M 16:03 03/05/74 TUESDAY I05
99700 700 FORMAT ('LIMITS?')
99701 701 FORMAT (' LINES PER MILE?')
99702 702 FORMAT (' ***MP**MDPT*0****1****2****' %
99703 '3****4 ****5****g****7****g****g****Q'
99704 704 FORMAT (F8.2.A4.'*'.52A1.' + ')
99706 706 FORMAT (16.'LINES-RUN?')
99707 707 FORMAT (12X.'*'.20X.' OUT OF TRACK'. A4) 99999 END
15:53 03/05/74 TUESDAY I05
"* LOAD DATA*"
IF(REPLY9(1)=NULL) GO TO 2910
WRITE(K0.210)
READ(KD) NSS
IF (NSS<0) GO TO 2000
READ(KD) NT.((DATA(I.J) .J=NSS.NT).I=
WRITE(KO .201) NULL GO TO 2910
2000 DO 2001 I=1.TM
2001 READ(KD.END=2003) TAPE(I) WRITE(K0.121) TM
2003 CALL CLOSE (KD)
TMAX = 1-1
2005 WRITE(K0.201) TMAX
"* REFORMAT DATA *"
2050 NT = TM/3 — 1 N=NT L=3
I=TMAX KP=1
ISE=0
DATA(1.N)=0
IDIST=0
DATA(3.N+1)=1
"* START*"
DO 2900 J=3.TMAX
K = TAPE(I)
IF(K.LT.O) GO TO 2510
2505 GO TO (2600.2700. 2800).L
2510
K=0
WRITE (KO.251) I GO TO 2505
"*DISTANCE*"
2600 IF (K<64) GO TO 2601 K=K-64
DATA(1.N+1) = -DATA(l.NH-l)
2601 IF (K<32) GO TO 2602 K=K—32
DATA(3.N+1) = DATA(3.N+1) + 8
2602 DATA(l.N) = K IDIST = IDIST + K L=3
GO TO 2900
15:43 03/05/74 TUESDAY I05
"* SPEED *"
2700 DATA(2.N) = K
L = 1
N = N-1
GO TO 2900
= 1.3)
2116
2118
2120
2122
15 2124
2126
2128
2130
2132
20 2136
2138
2140
2142
2144
« 2146
2148
2150
2152
2154
30
2156
2158
2160
2162
2164
35
2165
2167
2168
2170
2172
40
2174
2175
2176
2178
2180
45
2182
2184
2186
2188
2190
50
2192
2194
2196
2198
2200
55
L
3000
3010
3020
60
3030
3040
3050
3060
3070
65
3080
3090
3100
3110
"* EVENT CODE*"
2800 L = 2
IF(K=64) GO TO 2820 IF(K<64) GO TO 2810 K = K - 64
IF(K>26)GO TO 2810 M=K/8*2 K=K-4*M IF(K>1) GO TO 2801 DATA(3.N) = M+l GO TO 2900
2801 DATA(3.N) = M+2 GO TO 2900 2810ISE=ISE+1
IF (ISE = 50) GO TO 2905 2820 DATA(3.N) = 1 29001 = 1-1 "*END *"
2905 CONTINUE IF(ISE>0) WRITE(K0.291) ISE NSS = N + 1 2910 NS = NSS
"* MARKS*"
J = 0
NM2 = 0
NDIST = 0
NDISTM = 0
DO 2930N=NS.NT
IF(E3(DATA(3.N)).NE.l) GO TO 2930
IF(E3(DATA(3.N — 1)) = 1) GO TO 2930
IF(J.GE.l) GO TO 2932
NS = N
NDISTM = NDIST J= 1
GO TO 2930
2932 IF (J=2) GO TO 2930 NDISTM = NDIST-NDISTM NM2 = N J = 2
2930 NDIST = NDIST + DATA(l.N) IF(J.NE.2) WRTTE(K0.261) X = NDIST/20 WRITE(KO,271) X
15:38 03/05/74 TUESDAY I05
"* LOAD MASTER FILE *"
SM = 1./100.
3000 IF(REPLY8(1)=NULL) GO TO 3100 WRTTE(K0.210)
J = 0 M = 1 MDIST = 0
3010 READ(KM.END=3030) (MASTER(I.M).I= IF(MASTER(3.M)> — 1) GO TO 3012 GO TO 3010
= 1.3)
629 321
16
L 15:38 03/05/74 TUESDAY I05
3120 3012 IF(E4(MASTER(3.M)+l).NE.l) GO TO 3020
3130 IF(J.GE.l) GO TO 3015
3140 MS = M
3150 J = 1
3160 MDISTM = MDIST
3170 STARTR = SM*MDIST
3180 GO TO 3020
3190 3015 JF(J.GE.2) GO TO 3020
3200 J = 2
3210 MDISTM = MDIST-MDISTM
3220 3020 MDIST = MDIST + MASTER(l.M)
3230 M = M + 1
3240 IF(M.LE.MTM) GO TO 3010
3245 WRITE(K0.121) MTM
3250 3030 MT = M-l
3260 WRTTE(K0.201) MT
3270 IF(J.NE.2) WRTTE(K0.310)
3290 CALL CLOSE(KM)
3300
3340 "* DATA SCALE*"
3350 3200 SC=1.
3360 DC=0.
3370 IF(NDISTM.NE.0)DC = SM*FLOAT(MDISTM)/ FLOAT(NDISTM)
3380 IF(DC=0.)DC=0.05*ISIGN(1.NDIST)
3390 DIST=DC*NDIST
3400 WRITE(K0.320) DIST.DC
3410 DCP = ABS(DC)
A 15:34 03/05/74 TUESDAY I05
5000 "*ANALYZE *"
5006 5000 WRITE(K0.500)
5008 READ (KI.*) MTOL
5010 M = MS
5012 N = NS — 1
5014 DISTD = STARTR
5016 DISTM = STARTR
5018 SDIST = STARTR
5020 FDIST = STARTR
5022 DISTL = DISTD
5024 DISTM = DISTM + SM*MASTER(1.M)
5026 LIMIT = MASTER(2.M)
5028 NDIST = 0
5030 WRITE(K0.501)
5032 ISV = 0
5034 BDIST = 0.0
5036 TDIST = 0.0
5038 MAXOVR = 0
5040 SPDCHK = 0
5042 LAST = 0
5044 FLAG = 0
5046 NEI = 0
5048 NE5 = 0 LMEC = 0
5050
5052 LMEC = 1 + MASTER(3.M)
5054 5010 IF(DISTD.GT.DISTM) GO TO 5030
5056
5058 "* UPDATE DATA *"
5060 5020 IF(FLAG.NE.O) GO TO 5027
5062 N = N + 1
5064 IF(N.GT.NT) GO TO 5090
5066 NDIST = NDIST + DATA(l.N)
5068 ISPEED = SC*DATA(2.N)+ .2
5070 IF(DATA(3.N+1) = 1) GO TO 5025
5072 IF(DATA(1.N)=1) GOTO 5028
5074 FLAG = 1
5076 NDIST = NDIST-INCR
5078 5025 EC = 1
5082 5026 DISTD = STARTR + DC*NDIST
5084 IF(DISTD.LT.DISTL) GO TO 5020
5086 DISTL = DISTD
5088 GO TO 5060
5090 5027 FLAG = 0
5092 NDIST = NDIST + INCR
5094 5028 EC = DATA(3.N+1)
5098 IF(E5(EC)>0) NE5 =NE5 +1
5099 "*RESTRICTED BRKS *"
5100 IF(LEC—E5D(EC)) 5005.5026.5007
5101 5005 Z = FDIST
5102 GO TO 5029
5103 5007 IF(E3(LMEC)=0) GO TO 5029
5107 WRITE(K0.504) Z.F DIST
5108 5029 LEC = E5D(EC)
5109 GO TO 5026
A 15:31 03/05/74 TUESDAY I05 5110
5120 "* UPDATE MASTER*"
5130 5030 M = M + 1
5140 IF(M.GT.MT) GO TO 5090
5150 DISTM = DISTM + SM*M ASTER( 1. M)
5160 LIMIT = MASTER(2.M)
5170 NMEC = MASTER(3.M) + 1
5180 IF(NMEC=LMEC) GO TO 5059
5190 "*REQ DYNAMBRK*"
5200 IF(E5(LMEC)-E5 (NMEC)) 5032.5036.5034
5210 5032 NE5 = 0
5220 IF(E5(EC)=2)NE5 = 1
5230 E5MP = FDIST
5240 GO TO 5036
5250 5034 X = ABS ((NE5*DC) / ( FDIST-E5MP«
5260 IF(X.GT 50 ) GOTO 5036
5270 WRITE(K0.504) E5MP .FDIST X
5280 "* OTHEREVENTS *"
5290 5036 CONTINUE
5300 5059 LMEC = NMEC 5310
5320 "* CHECK SPEED *"
5330 5060 SDIST = FDIST
5340 FDIST = AMINl(DISTD.DISTM)
5350 IF(ISPEED.LE.LIMIT+MTOL) GO TO 5062
5360 ISV = 1
5370 IF(BDIST=0.0) BDIST = SDIST
5380 IOVR = ISPEED - LIMIT
5390 IF(IOVR.LE.MAXOVR) GO TO 5070
5400 MAXOVR = IOVR
5410 MLIMIT = LIMIT
5420 VDISTM = (FDIST+SDIST) 12.
5430 GOTO 5070
5440 5062 IF(ISV=0) GO TO 5070
5450 ISV = 0
5460 SPDCHK = SPDCHK + 1
5470 VDIST = SDIST - BDIST
5480 TDIST = TDIST + VDIST
5
10
15
20
25
30
35
40
45
50
55
60
65
A 15:31 03/05/74 TUESDAY I05
5490 WRITE(K0.503) BDIST.SDIST.MLIMIT.
MAXOVR. VDISTM
5500 IF(LAST= 1) GO TO 5094
5510 BDIST = 0.0
5520 MLIMIT = 0
5530 MAXOVR = 0
5540 5070 GO TO 5010 5550
5560 "* OUT OF DATA*"
5570 5090 IF(ISV=0) GO TO 5094
5580 LAST = 1
5590 GO TO 5062
5600 5094 IF(SPDCHK=0) GO TO 5095
5610 WRITE(KO.*) SPDCHK.TDIST
5620 GO TO 4000
5630 5095 WRTTE(K0.506)
5640 GO TO 4000
P 15:11 03/05/74 TUESDAY I05
7000 "* PLOT*"
7030 7000 WRITE(K0.700)
7040 RE AD (KI.*) START.F1NISH
7050 7001 WRITE(K0.701)
7060 READ (KI.*) I
7070 IF(I.EQ.O) GO TO 7001
7080 SCALE = FLOAT(IABS(I))
7090 IF(I.GT.O) SCALE = 1.0/SCALE
7100 IF(START.LT.STARTR) START=STARTR
7110 LINES = (F1NISH-START)/SCALE + 1
7120 IF(LINES.LE.41) GO TO 7005
7130 WRITE(K0.706) LINES
7140 READ(KI. 101) REPLY
7150 IF(REPLY.NE.YES) GO TO 4000
7160 7005 FLAG = CD
7170 M = MS — 1
629 321
N = NS -1
DIST = START
DISTM = STARTR
DISTD = STARTR
NDIST = 0
7010 M = M + 1
IF(M.GT.MT) GO TO 7050
DISTM = DISTM + MASTER(1.M)*SM
PLOT(PM) = CB
PM = MASTER(2.M)/2 + 1
PLOT(PM) = CM
PLOT(PD) = CD
7015 IF(DISTM.LT.DIST) GO TO 7010
IF(DISTD.GE.DIST) GO TO 7030
7020 N = N + 1
IF(N.GT.NT) GO TO 7060
NDIST = NDIST + DATA(l.N)
DISTD = STARTR + NDIST*DC
IF(DISTD.LT.DIST) GO TO 7020
PLOT(PD) = CB
PD = (DATA(2.N)*SC)/2.0 + 1
IF(PD.GT.51) PD = 52
PLOT(PM) = CM
PLOT(PD) CD
L = 1
K = DATA(3.N+1)
DISTE = DISTD-DCP
7030 IF(DIST.GE.DISTE) L = K J = MAXO(PM.PD)
IF(DIST=START) WRTTE(K0.702) N X = DIST
WRITE(K0.704) X.EV(L).(PLOT(I).I=l.J)
DIST = DIST + SCALE IF(DIST.LT.F1NISH) GO TO 7015 7050 WRITE(K0.702) N GO TO 4000
17
7180
7190
7200
7210
s7220
7230
7240
7250
7260
io 7270
7280
7290-
7300
7310
15 7320
7330
7340
7350
7360
20 7370
7380
7390
7400
7410
25 7420
7440
7450
30 7470
7480
7490
7500
7510
35 7520
7530
7540
7550
C
5 feuilles dessins
Claims (9)
- 629 3212REVENDICATIONS transmission et d'analyse des données enregistrées permettant1. Procédé de transmission et d'analyse de données de per- d'analyser à posteriori la marche et le fonctionnement du véhi-formances enregistrées à bord d'un véhicule durant un parcours, cule. Le brevet USA No. 3 864 731 contient une description caractérisé en ce qu'il consiste à: transmettre les données enre- succincte de l'art antérieur.gistrées à une mémoire d'informations distante du véhicule, con- s L'enregistrement numérique des variables de fonctionne-vertir les dites données à un format préétabli, charger les don- ment à bord des locomotives ouvre des perspectives intéres-nées converties dans la mémoire d'un ordinateur, charger dans santés dans le domaine du dépouillement automatisé sur ordinala mémoire de l'ordinateur des données de référence représen- teur. Il permet des analyses de performances différentes de la tant un profil type préétabli, c'est-à-dire le déroulement idéal du comparaison à des normes très schématisées, seules possibles parcours, et comparer les données enregistrées aux données de io autrefois, et qui ne permettaient pas de dégager les différents référence dans l'ordinateur sous contrôle d'un programme pour éléments — éléments techniques du véhicule, éléments propres obtenir des résultats analytiques concernant les performances. au parcours, éléments propres à la conduite - les uns des autres.
- 2. Procédé selon la revendication 1, caractérisé en ce que les Ces incovénients sont évités par le procédé selon l'invention résultats de l'analyse sont transformés par un terminal de sortie qui est défini par la revendication 1.en une représentation graphique. is L'invention a également pour objet une installation pour la
- 3. Procédé selon la revendication 1, caractérisé en ce que le mise en œuvre de ce procédé définie par la revendication 7. Ces véhicule est un train. techniques sont évidemment applicables à des véhicules autres
- 4. Procédé selon la revendication 3, caractérisé en ce que les que ferroviaires mais, par commodité, l'invention sera décrite résultats analytiques sont transformés par un terminal de sortie dans le cas d'une locomotive.en une représentation graphique. 20 Ce qui va suivre jusqu'à la présentation des figures est
- 5. Procédé selon la revendication 1, caractérisé par une donné à titre d'exemple.transmission décalée dans le temps des données enregistrées des Dans les enregistreurs, les bandes de papier peu commodes performances d'un véhicule de transport en commun. à manipuler sont remplacées par des cassettes amovibles qui
- 6. Procédé selon la revendication 5, caractérisé en ce que les peuvent être lues directement par un appareil branché sur le données enregistrées sont présentées graphiquement en fonc- 25 réseau de télécommunications et le système informatique de la tion de la distance parcourue. compagnie de chemins de fer. En cas de rupture d'attelage ou de
- 7. Installation informatique pour la mise en œuvre du pro- déraillement du train, l'enregistreur permet de connaître des cédé selon la revendication 1, caractérisée en ce qu'elle com- circonstances et des anomalies qui ont précédé l'accident,prend: un ordinateur numérique, des moyens (10) pour intro- comme la «boîte noire» des avions.duire dans l'ordinateur les données de référence comprenant 30 Les cassettes amovibles sont des boîtiers étanches contenant des informations définissant des repères de distance du parcours une bande magnétique en boucle sans fin, les têtes magnétiques du véhicule et des informations de limitation de vitesse entre les et toutes les pièces mobiles. La bande elle-même est réutilisable, repères de distance, et les données enregistrées entre des re- Avant le départ du train, une cassette vierge est introduite dans pères de distance, l'ordinateur étant programmé pour calculer l'enregistreur de bord de la locomotive qui est relié aux divers l'importance des violations des consignes de vitesse entre les 35 capteurs et détecteurs.repères de distance successifs, et détecter la vitesse maximale A l'arrivée du train, la cassette est retirée de l'enregistreur entre les repères de distance successifs, et des moyens d'impres- de bord pour être introduite dans un appareil de lecture qui peut sion des données enregistrées et des résultats de l'analyse. être connecté soit directement à l'ordinateur, soit à un terminal
- 8. Installation selon la revendication 7, caractérisée en ce qui est lui-même relié à l'ordinateur par le réseau de télécom-qu'elle comprend en outre des moyens associés à l'ordinateur 40 munications. Au niveau de l'ordinateur, les informations enre-pour totaliser le nombre de violations de vitesse et le nombre gistrées sont mémorisées sur un support approprié avant d'être total d'unités de distance parcourues en violation. traitées et analysées. Les résultats du dépouillement décrivant la
- 9. Installation selon la revendication 7, caractérisée en ce marche du train sur les différents tronçons de son parcours sont qu'elle comprend: un périphérique de sortie graphique relié à fournis par l'ordinateur sous forme de rapports systématiques de l'ordinateur pour présenter la position des repères de distance 45 variance et/ou de rapports spéciaux créés à la demande.sur un premier axe, la vitesse et les limitations de vitesse en Trois variables sont enregistrées à des intervalles de distance fonction de la position des dits repères, et des codes d'événe- fixes: la vitesse, la distance parcourue depuis l'enregistrement ments placés à proximité des repères de distance auxquels ils précédent et les «événements». .correspondent. Tant que la vitesse reste constante et que les événements50 sont inchangés, aucune information n'est enregistrée sur la bande, mais le système de surveillance totalise en permanence la distance parcourue dpuis le dernier enregistrement. Lorsqu'in-
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US05/699,075 US4241403A (en) | 1976-06-23 | 1976-06-23 | Method for automated analysis of vehicle performance |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CH629321A5 true CH629321A5 (fr) | 1982-04-15 |
Family
ID=24807815
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CH766277A CH629321A5 (fr) | 1976-06-23 | 1977-06-22 | Procede de transmission et d'analyse de donnees de performances enregistrees a bord d'un vehicule durant un parcours. |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US4241403A (fr) |
| CA (1) | CA1203624A (fr) |
| CH (1) | CH629321A5 (fr) |
| DE (1) | DE2728362A1 (fr) |
| FR (1) | FR2356203A1 (fr) |
| GB (1) | GB1586070A (fr) |
Families Citing this family (54)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4933852A (en) * | 1979-08-22 | 1990-06-12 | Lemelson Jerome H | Machine operation indicating system and method |
| US4418388B1 (en) * | 1980-08-14 | 1998-08-25 | Spx Corp | Engine waveford pattern analyzer |
| JPS57187201A (en) * | 1981-05-14 | 1982-11-17 | Kyoritsu Kk | Chain saw |
| DE3211691A1 (de) * | 1982-03-30 | 1983-10-06 | Porsche Ag | Einrichtung zur aufnahme, abgabe und verarbeitung von daten |
| NZ204535A (en) * | 1982-07-23 | 1987-01-23 | Sundstrand Data Control | Direct display of data from a flight data recorder |
| US4561057A (en) * | 1983-04-14 | 1985-12-24 | Halliburton Company | Apparatus and method for monitoring motion of a railroad train |
| US4794548A (en) * | 1986-08-28 | 1988-12-27 | Halliburton Company | Data collection apparatus and train monitoring system |
| US4827438A (en) * | 1987-03-30 | 1989-05-02 | Halliburton Company | Method and apparatus related to simulating train responses to actual train operating data |
| US4853883A (en) * | 1987-11-09 | 1989-08-01 | Nickles Stephen K | Apparatus and method for use in simulating operation and control of a railway train |
| GB8813066D0 (en) * | 1988-06-02 | 1988-07-06 | Pi Research Ltd | Vehicle data recording system |
| EP0431645B1 (fr) * | 1989-12-08 | 1996-03-20 | Hitachi Koki Co., Ltd. | Système pour la gestion de rotors centrifuges |
| US5109343A (en) * | 1990-06-06 | 1992-04-28 | Union Switch & Signal Inc. | Method and apparatus for verification of rail braking distances |
| FR2667962B1 (fr) * | 1990-10-11 | 1994-05-20 | Opti Pilote | Procede d'enregistrement et de traitement de donnees pour la gestion de la conduite de vehicules. |
| US5255208A (en) * | 1991-08-08 | 1993-10-19 | Aeg Westinghouse Transportation Systems, Inc. | On-line processor based diagnostic system |
| US7082359B2 (en) * | 1995-06-07 | 2006-07-25 | Automotive Technologies International, Inc. | Vehicular information and monitoring system and methods |
| US5905374A (en) * | 1994-08-31 | 1999-05-18 | Auto Meter Products, Inc. | High performance tachometer |
| US8090598B2 (en) | 1996-01-29 | 2012-01-03 | Progressive Casualty Insurance Company | Monitoring system for determining and communicating a cost of insurance |
| US8140358B1 (en) | 1996-01-29 | 2012-03-20 | Progressive Casualty Insurance Company | Vehicle monitoring system |
| US5982168A (en) * | 1996-05-16 | 1999-11-09 | Auto Meter Products, Inc. | High performance tachometer with automatic triggering |
| US5825283A (en) * | 1996-07-03 | 1998-10-20 | Camhi; Elie | System for the security and auditing of persons and property |
| JP3366837B2 (ja) * | 1997-08-15 | 2003-01-14 | 株式会社小松製作所 | 機械の異常監視装置および方法 |
| US6826951B1 (en) | 1998-01-15 | 2004-12-07 | International Marketing, Inc. | Tire management system and method for surveying and servicing a vehicle tire |
| JP4023643B2 (ja) * | 1998-06-02 | 2007-12-19 | 株式会社小松製作所 | 建設機械の機器性能データ測定方法及び装置 |
| JP2002529665A (ja) | 1998-11-05 | 2002-09-10 | ルーク ラメレン ウント クツプルングスバウ ベタイリグングス コマンディートゲゼルシャフト | 第1のデータと走行距離とから成る値の組を記憶するメモリを備えた車両 |
| US6762684B1 (en) | 1999-04-19 | 2004-07-13 | Accutrak Systems, Inc. | Monitoring system |
| US7378961B1 (en) | 1999-04-19 | 2008-05-27 | Accutrak Systems, Inc. | Monitoring system |
| SE516119C2 (sv) * | 1999-08-27 | 2001-11-19 | Thoreb Ab | Metod och anordning för att assistera en förare av ett fordon |
| US6137399A (en) * | 1999-11-02 | 2000-10-24 | Auto Meter Products, Inc. | High performance tachometer having a shift indicator system with "short-shift" protection |
| US6353777B1 (en) | 2000-08-16 | 2002-03-05 | Ford Global Technologies, Inc. | Path correction for lane change analysis |
| US7941258B1 (en) | 2000-08-31 | 2011-05-10 | Strategic Design Federation W, Inc. | Automobile monitoring for operation analysis |
| US6556905B1 (en) * | 2000-08-31 | 2003-04-29 | Lisa M. Mittelsteadt | Vehicle supervision and monitoring |
| US7584033B2 (en) | 2000-08-31 | 2009-09-01 | Strategic Design Federation W. Inc. | Automobile monitoring for operation analysis |
| US7188009B2 (en) * | 2001-10-31 | 2007-03-06 | New York Air Brake Corporation | Chain of custody |
| US6825767B2 (en) | 2002-05-08 | 2004-11-30 | Charles Humbard | Subscription system for monitoring user well being |
| US10308265B2 (en) | 2006-03-20 | 2019-06-04 | Ge Global Sourcing Llc | Vehicle control system and method |
| US9733625B2 (en) | 2006-03-20 | 2017-08-15 | General Electric Company | Trip optimization system and method for a train |
| US10569792B2 (en) | 2006-03-20 | 2020-02-25 | General Electric Company | Vehicle control system and method |
| US9950722B2 (en) | 2003-01-06 | 2018-04-24 | General Electric Company | System and method for vehicle control |
| USRE47986E1 (en) | 2003-05-15 | 2020-05-12 | Speedgauge, Inc. | System and method for evaluating vehicle and operator performance |
| US20050177337A1 (en) * | 2004-02-05 | 2005-08-11 | Penske Truck Leasing Co., L.P. | Vehicle usage forecast |
| US9828010B2 (en) | 2006-03-20 | 2017-11-28 | General Electric Company | System, method and computer software code for determining a mission plan for a powered system using signal aspect information |
| US8768543B2 (en) * | 2006-03-20 | 2014-07-01 | General Electric Company | Method, system and computer software code for trip optimization with train/track database augmentation |
| US9689681B2 (en) | 2014-08-12 | 2017-06-27 | General Electric Company | System and method for vehicle operation |
| US8963702B2 (en) | 2009-02-13 | 2015-02-24 | Inthinc Technology Solutions, Inc. | System and method for viewing and correcting data in a street mapping database |
| US9834237B2 (en) | 2012-11-21 | 2017-12-05 | General Electric Company | Route examining system and method |
| US9916625B2 (en) | 2012-02-02 | 2018-03-13 | Progressive Casualty Insurance Company | Mobile insurance platform system |
| DE102011089590A1 (de) * | 2011-01-31 | 2012-08-02 | Continental Automotive Gmbh | Verfahren zur Funktionsüberwachung einer Sicherheitsüberwachung einer Steuereinheit |
| US9702715B2 (en) | 2012-10-17 | 2017-07-11 | General Electric Company | Distributed energy management system and method for a vehicle system |
| US9669851B2 (en) | 2012-11-21 | 2017-06-06 | General Electric Company | Route examination system and method |
| US9682716B2 (en) | 2012-11-21 | 2017-06-20 | General Electric Company | Route examining system and method |
| CN104376617A (zh) * | 2014-10-31 | 2015-02-25 | 上海自仪泰雷兹交通自动化系统有限公司 | 车载数据记录仪及其收纳结构 |
| US9601021B2 (en) * | 2015-07-07 | 2017-03-21 | The Boeing Company | Retrospective analysis of vehicle operations |
| US10613854B2 (en) * | 2016-12-22 | 2020-04-07 | The United States Of America, As Represented By The Secretary Of The Navy | Systems and methods for automated renumbering, reformatting, and re-referencing of branching statements or go-to instruction line referencing within modified code using a dual-pass approach that includes operations using predicted new line numbers, error detection/correction, and alignment correction processing |
| CN109087407A (zh) * | 2018-07-27 | 2018-12-25 | 安徽安为科技有限公司 | 机车文件远程转储系统 |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3485093A (en) * | 1965-09-16 | 1969-12-23 | Universal Testproducts Inc | Engine performance analyzer |
| US3655962A (en) * | 1969-04-01 | 1972-04-11 | Melpar Inc | Digital automatic speed control for railway vehicles |
| CH520587A (de) * | 1969-09-13 | 1972-03-31 | Int Standard Electric Corp | Steuerverfahren für eine automatische Steuerzentrale einer Eisenbahnsicherungsanlage |
| US3688099A (en) * | 1971-04-28 | 1972-08-29 | Lear Siegler Inc | Automatic control system with a digital computer |
| US3825744A (en) * | 1971-06-14 | 1974-07-23 | Gen Signal Corp | Overspeed detector for vehicle control system |
| US3927308A (en) * | 1972-11-22 | 1975-12-16 | Ebasco Serv | Monitor and results computer system |
| IT980896B (it) * | 1973-04-24 | 1974-10-10 | Olivetti & Co Spa | Perfezionamenti alle calcolatri ci elettroniche |
| US3938092A (en) * | 1973-07-16 | 1976-02-10 | Vapor Corporation | System for telecommunicating vehicle operation data between a ground station and a remote data processing station |
| US3882305A (en) * | 1974-01-15 | 1975-05-06 | Kearney & Trecker Corp | Diagnostic communication system for computer controlled machine tools |
| US3974992A (en) * | 1975-03-13 | 1976-08-17 | Westinghouse Electric Corporation | Vehicle velocity limit control method and apparatus |
-
1976
- 1976-06-23 US US05/699,075 patent/US4241403A/en not_active Expired - Lifetime
-
1977
- 1977-06-22 CA CA000281169A patent/CA1203624A/fr not_active Expired
- 1977-06-22 CH CH766277A patent/CH629321A5/fr not_active IP Right Cessation
- 1977-06-23 DE DE19772728362 patent/DE2728362A1/de not_active Withdrawn
- 1977-06-23 FR FR7719315A patent/FR2356203A1/fr active Granted
- 1977-06-23 GB GB26376/77A patent/GB1586070A/en not_active Expired
Also Published As
| Publication number | Publication date |
|---|---|
| CA1203624A (fr) | 1986-04-22 |
| GB1586070A (en) | 1981-03-18 |
| FR2356203B1 (fr) | 1983-07-08 |
| FR2356203A1 (fr) | 1978-01-20 |
| US4241403A (en) | 1980-12-23 |
| DE2728362A1 (de) | 1978-03-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CH629321A5 (fr) | Procede de transmission et d'analyse de donnees de performances enregistrees a bord d'un vehicule durant un parcours. | |
| CN114756505B (zh) | 一种自动驾驶场景自识别方法及存储介质 | |
| CN109754594B (zh) | 一种路况信息获取方法及其设备、存储介质、终端 | |
| EP0290679B1 (fr) | Dispositif de réception et de traitement de messages d'information routière | |
| CH651144A5 (fr) | Unite de traitement et d'enregistrement de donnees d'un vehicule. | |
| CN108399752A (zh) | 一种驾驶违章预判方法、装置、服务器和介质 | |
| EP2903875A2 (fr) | Procede d'evaluation du risque de collision a une intersection | |
| CA2819848C (fr) | Train et procede de determination de la composition d'un tel train en securite | |
| CN118484741A (zh) | 一种基于ai算法的数据处理智能分析方法 | |
| FR2530568A1 (fr) | Procede et dispositif de reconnaissance et de controle de position pour vehicules de transport | |
| CN118683594A (zh) | 一种高速列车的运行状态监测方法 | |
| CN109766274B (zh) | 一种测试脚本自动化融合方法、存储介质 | |
| CN116909255A (zh) | 一种用于智能驾驶系统的故障诊断系统、方法以及车辆 | |
| EP0704952B2 (fr) | Circuit d'autosurveillance, notamment d'appareillage électrique et en particulier de disjoncteur haute tension à SF6 | |
| CN114358196B (zh) | 高架场景下的训练样本生成方法、装置、设备及存储介质 | |
| CN112769929B (zh) | 面向车路协同技术的场地在环测试系统及测试方法 | |
| CA2137742C (fr) | Methode et dispositif pour memoriser des donnees transactionnelles | |
| CN113763988B (zh) | 机车司机室监控信息与lkj监控信息的时间同步方法及系统 | |
| JP2019125004A (ja) | 車両監視システム、サーバシステム、監視装置、車両監視方法、サーバシステムの制御方法、監視方法、およびプログラム | |
| CN115017174A (zh) | 乘客信息系统的显示内容监测方法、系统及电子设备 | |
| KR102780379B1 (ko) | Can 데이터베이스를 위한 차량용 데이터의 분석 및 수집 방법 | |
| WO2024154208A1 (fr) | Procédé d'analyse de données de véhicule ferroviaire, dispositif d'analyse de données de véhicule ferroviaire et programme informatique d'analyse de données de véhicule ferroviaire | |
| EP3666664B1 (fr) | Procede et dispositif d'optimisation de tests de systemes en particulier d'un aeronef | |
| FR2600796A1 (fr) | Systeme de compilation du dictionnaire de diagnostic | |
| CN120492877A (zh) | 卡车编队的场景数据缺失确定方法及装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PL | Patent ceased | ||
| PL | Patent ceased |