Étape 3 :
STRUCTURE GÉNÉRALE D’UN PROGRAMME
Maintenant, avoir un outil de gestion de PAC très basique, les fichiers de stratégie de contrôle ont été étudiés en détail, et les informations recueillies sont les suivantes :
- Tous les fichiers avec l’extension .crn1, .crn2, .crn3, devrait avoir le même nom que le programme « principal »
- fichier .crn1 contient la ligne : nom du fichier. " PNAME "; où PNAME est le nom de « principale » du programme. Le reste des lignes de ce fichier n’a jamais changé lorsque différents programmes ont été créés
- .CRN2 fichiers contiennent les noms des tâches ou des « charts » que compose un programme, les variables à utiliser et les e/s broche assignation
- .crn3 fichiers contient des initialisations : tâches, de variables et de matériel de I/O
- Il devrait y avoir un fichier .ccd pour chaque tâche qui compose un programme, le nom devrait coïncider avec les informations contenues dans le fichier .crn2
Une stratégie de contrôle d’échantillon « BLINK » a été créée. Il est composé de deux tâches : active/désactive une sortie numérique et incrémente un compteur chaque seconde. L’autre regarde si le compteur est exactement divisible par 5 (modulo 5) et une sortie numérique s’allume si la condition est valide, sinon elle s’éteint
BLINK.crn1
Dans ce fichier, il y a une ligne où se trouve le nom du programme « BLINK ». Le reste de l’apparence de lignes comme une sorte d’assignation de l’espace mémoire pour les variables et les e/s. Aucune modification n’ont été constatées dans ces lignes avec différents programmes téléchargés et analysées.
DERNIER NOUVEAU $$$. COURIR
: NOM DE FICHIER. " CLIGNER DES YEUX ";
1 $VAR 0 * _HSV_SEMA
1024 $VAR 0 * _HSV_TEMP
200 $VAR 0 * _HSV_INIT_IO
IVAR 0 ^ _HNV_INIT_IO
BLINK.crn2
Dans ce fichier, trois choses trouvées :
Les tâches qui composent le programme : mise sous tension, slowblink, _INI_IO. Powerup est la tâche par défaut, ne peut être renommé ni supprimé. slowblink a été créé dans le programme du fabricant, et _INIT_IO est probablement est une tâche interne qui initialise le matériel automatiquement.
- Les variables utilisées dans le programme : countervar et modvar
Alias de broche I/O matériel : dans ce cas particulier les broches numériques 0 et 3 ont été assignés alias : DIGITAL_OUT_1 et DIGITAL_OUT_4
0 tâche & _INIT_IO
0 tâche & Powerup
0 tâche & slowblink
IVAR 0 ^ countervar
IVAR 0 ^ modvar
$0000000000000000... 32769 1.000000 0.000000 0,010000 2001 7F000001 $ MBOARD 0 % SELF_RACK SPOINT 0,0 0 % SELF_RACK DE SORTIE
POINT 0 ~ DIGITAL_OUT_1
SORTIE DE SPOINT 0,0 % 3 SELF_RACK
POINT 0 ~ DIGITAL_OUT_4
BLINK.crn3
Ce fichier est un peu plus long que la précédente. On dirait que dans la première partie, tâches et tous les types de variables sont regroupés dans des tableaux et près de l’initialisation de fin de countervar et modvar à 0 sont visibles. Notez également que les broches numériques sont entrées par défaut « 0 », et ceux qui serviront de sorties doit être écrits sur "1" ($... 0009 broches 0 et 3)
: W_INIT_IO CONFIG_PORTS $0000000000000009... PERMET DE SELF_RACK % !
"% SELF_RACK (1/1)" * _HSV_INIT_IO $MOVE 0 ^ _HNV_INIT_IO
PERMETTRE À % SELF_RACK
« Initialisation des variables » * _HSV_INIT_IO $MOVE
0 ^ countervar
0 ^ modvar
« « * _HSV_INIT_IO $MOVE
Fichiers de travail (Powerup.ccd, slowblink.ccd)
Ces fichiers se trouve le code de programme, pour chaque tâche programmée. Il y a deux choses ici : blocs de code et la liste de blocage du code vers la fin.
T: T0
MANNEQUIN
0_0
0_1
0_3
0_5
0_7
0_10
T ; & mise sous tension « T0 SETTASK
Chaque bloc est étiqueté a_b, où a est le numéro de la tâche et b un id de « bloc » à l’intérieur de cette tâche particulière. Numéros de bloc coïncident avec les numéros de bloc illustrés à la demande du fabricant et sont probablement utilisés pour le mode de débogage bloc par bloc.
Voici un exemple d’un bloc de code :
: 1_1
VRAI
1 LIGNE. NUM
^ modvar
1 <
LAND
SI-4 SINON -3 PUIS SAUTER ;
Chaque étiquette est précédée par un signe deux-points (:)), ensuite la ligne. Instruction de NUM précédée d’un numéro de ligne. Le numéro de cette ligne coïncide avec les numéros de ligne figurant dans développement application les directives du fabricant et sont probablement utilisés pour le mode débogage en ligne
Certaines parties du code, sont très proches de suite spécialement l’instruction IF où l’État était avant le mot « IF » !
Un bloc se termine par une instruction de saut, suivie d’un point-virgule (;). Instructions de saut sont relative et non absolue.