Introduction
Le terme "ADbasic" regroupe plusieurs entités sous un seul et même nom.
C'est le langage natif de développement des process temps réel fonctionnant sur les plateformes ADwin. Par conséquence, le compilateur porte le même nom. On parle du compilateur ADbasic.
Comme ce langage et son compilateur sont fournis accompagnés d'un environnement intégré de développement comprenant un éditeur, un débogueur, un analyseur de performances, etc..., cet environnement de développement porte aussi le nom d'ADbasic.
Le Langage
Le langage ADbasic permet le développement des process temps réel exécutés par les plateformes matérielles ADwin. Contrairement à ce que son nom évoque, il ne s'agit pas d'un langage interprété. ADbasic génère un code binaire directement exécutable via son compilateur dédié. Allié au système d'exploitation léger résidant sur le processeur temps réel, il offre des fonctionnalités supplémentaires par rapport à d'autres environnements de développement temps réel. Il intègre deux notions qui rendent la programmation temps réel accessible à tous :
- Il intègre, sans intervention du programmeur, la gestion du multitâche temps réel. Les notions complexes telle que
les mutex, les sémaphores, les sections de code critique, etc... sont gérées par la paire système d'exploitation/ADbasic. L'accès aux ressources
matérielles, aux données partagées, se fait nativement de manière non concourante.
- Il prend en charge les communications inter process et avec le ou les PC hôtes, qu'ils fonctionnent sous Windows, Linux, Mac OS. Ainsi, il n'est
jamais nécessaire à un utilisateur de gérer un quelconque protocole de communication. Tout est intégré et pris en charge par le système.
ADbasic est un langage simple. Il n'impose ni syntaxe, ni sémantique complexes. Il est muni de tous les mots clés nécessaires à la mise en oeuvre de toutes formes algorithmiques (Divers types de boucles, de branches, de structures). Il intègre toutes les fonctions requises à l'utilisation des systèmes :
- Acquisition analogique point à point, en blocs, en séquences,
- Génération analogique sous ses formes,
- Lecture/écriture des entrées et sorties numériques,
- Acquisition de comptage d'impulsions, comptage/décomptage, PWM, lecture d'encodeurs incrémentaux, etc...
- Lecture, écriture, monitorage de tous les bus numériques supportés,
- Echanges de données inter process et inter hôtes,
- Bibliothèques de fonctions arithmétiques, trigonométriques, mathématiques, analyse spectrale, etc...
- Bibliothèques de gestion des chaînes de caractères, etc...
- Transtypage des données,
- Gestion du temps et de l'horodatage,
- etc...
Afin d'encourager la réutilisation, ADbasic vous permet de développer vos macro-instructions, vos routines, vos fonctions et de placer celles-ci dans des librairies que vous pourrez inclure dans tous vos programmes.
Une présentation exhaustive du langage est hors du contexte de ce site Web. Cependant vous trouverez un tutoriel ADbasic et une présentation de ses notions fondamentales à la rubrique : Le développement temps réel
Si vous souhaitez consulter l'intégralité de la documentation ADbasic, vous trouverez les liens de téléchargement à la rubrique : Téléchargements
Environnement de développement intégré
L'environnement de développement ADbasic vous permet d'effectuer les opérations courantes telles que :
- Editer vos programmes,
- Compiler vos programmes,
- Charger et lancer vos programmes sur une cible ADwin,
- Suivre leur exécution,
- Effectuer les opérations de débogage,
- Analyser leurs comportements, y compris temporels,
- Organiser vos programmes en projets et librairies,
- etc...
Nous donnons ci-après un premier aperçu des fonctions offertes par cet environnement de développement.
Editeur
L'éditeur permet d'ouvrir de multiples fichiers sources dans divers onglets. Au-delà des fonctions classiques de sélection, copie, recherche, remplacement, "Undo", "Redo", etc... cet éditeur offre des fonctionnalités plus orientées vers le développement. Elles sont proposées via un menu contextuel et une barre d'outils dédiés :
- Transformer des parties de code en commentaires,
- Transformer des commentaires en code actif,
- Ajouter et supprimer des indentations,
- Ajouter ou supprimer des marques et des signets,
- Naviguer entre marques ou entre signets,
- Ouvrir ou fermer des blocs de code,
- Afficher des informations sous forme de "tooltip" à propos d'une variable,
- Naviguer vers la déclaration d'une variable,
- Afficher des variables déclarées,
- Insérer des "snippets",
- Ajouter le fichier sélectionné au projet en cours,
- etc...
La fenêtre de projet recense tous les fichiers sources intégrés à un projet :
Génération du code exécutable
L'environnement de développement intègre tous les outils permettant de compiler le code, et de paramétrer les options de compilation.
En premier lieu, il convient de définir la cible qui exécutera les codes compilés. La commande "Compiler" du menu principal "Options" permet d'ouvrir la boîte de dialogue ci-dessous :
Cette fenêtre permet de définir la cible (ADwin-light-16, ADwin-Gold II, ADwin-X-A20, ADwin-Pro, ADwin-Pro II) et pour les systèmes ADwin-Pro et ADwin-Pro II, le type de processeur utilisé. Elle permet de sélectionner le numéro de périphérique ADwin cible (le numéro d'identification attribué lors de l'installation). Cela permet de gérer plusieurs cibles ADwin reliées au même moment au PC hôte. Enfin, l'option "Autostart" permet de sélectionner si les process doivent être exécutés dès la fin de la compilation.
Les systèmes ADwin peuvent exécuter en même temps et en multitâche jusqu'à 10 process. Chaque process reçoit un numéro compris entre 1 et 10. On attribue ce numéro et divers paramètres du process en cours d'édition via la commande "Process" du menu principal "Options" :
Cette boîte de dialogue attribue : un numéro de process au code en cours d'édition, une source aux interruptions temps réel, une priorité, une caractéristique d'optimisation, et une fréquence d'exécution de base lorsque la source d'interruption temps réel est un timer.
Enfin, le menu principal permet d'activer des options permettant un débogage lors de l'exécution :
- Ajout des informations de débogage aux codes compilés,
- Mise en service du mode "Timing Analyzer".
Finalement la compilation et la génération du code exécutable est mise en oeuvre par le sous menu "Build" du menu principal :
- La commande "Compile and Autostart" permet de compiler le code en cours d'édition et de lancer son exécution,
- La commande "Make Bin File" compile le code et génère un fichier binaire exécutable, après chargement, par une cible ADwin,
- La commande "Make Lib File" compile le code et génère une librarie binaire utilisable dans un programme ADbasic,
- La commande "Make All Bin Files of project" compile tous les fichiers d'un projet et génère une image exécutable pour chacun d'eux.
Si, lors de la compilation, une erreur est identifiée dans le code source, la compilation est stoppée et la fenêtre "Info" affiche les informations à propos de ou des erreurs :
Suivi d'exécution et débogage des process temps réel
Depuis l'environnement de développement, vous pouvez suivre et contrôler l'exécution des process, et obtenir des informations de débogage.
Si une erreur d'exécution survient alors que le mode de débogage est actif, la fenêtre d'information "Debug Errors" affichera cette erreur :
Lorsqu'un ou plusieurs process sont en cours d'exécution, la barre d'état d'ADbasic affiche les informations suivantes :
- Pourcentage d'occupation du processeur temps réel,
- Mémoire programmes disponible,
- Mémoire données disponible,
- Mode débogage actif ou non,
- Mode "Timing Analyzer" actif ou non,
- Mode "Stack Analyzer" actif ou non,
- Numéro de périphérique ADwin en cours de suivi,
- Type de processeur,
- Modèle de système ADwin.
De plus, toute une panoplie d'outils permet de suivre et contrôler (démarrer ou arrêter) les process. La fenêtre "Processes" liste les process en cours de fonctionnement et leur fréquence d'exécution :
La valeur affichée pour chaque process correspond au temps de latence entre chaque exécution des tâches temps réel, si le process a pour source d'interruption temps réel un timer. Elle est exprimée en unité d'horloge du processeur cible. A titre d'exemple, pour un processeur de type Pro-CPU-T12 cette unité est de 1 ns. Dans l'exemple donné, le process N° 1 fonctionne toutes les 10 000 ns, soit à une fréquence de 100 KHz.
Lorsque le mode "Timing Analyzer" est actif, la fenêtre "Timing Analyzer" donne les informations suivantes :
- Min. Lenght : Temps minimal d'exécution du process depuis son démarrage,
- Max. Lenght : Temps maximal d'exécution du process depuis son démarrage,
- Ø Lenght : Temps moyen d'exécution du process depuis son démarrage,
- Max. Latency : Temps maximal de latence du process depuis son démarrage,
- Max. (Latency + Lenght) : Temps maximal de latence et d'exécution du process depuis son démarrage,
- Count (Lenght > Delay) : Le nombre de fois où le process n'a pas pu être exécuté au moment imparti. Toute autre valeur que 0 indique une possible surcharge du processeur.
- Critical Timings : Indique le nombre de fois où une interruption temps réel n'a pas pu être traitée à temps. Cette donnée peut varier lors du démarrage des process.
Ensuite elle doit rester stable, sinon cela indique une possible surcharge du processeur.
Données globales partagées
Afin de simplifier l'échange d'informations entre les divers process et le programme de supervision fonctionnant sur le PC hôte,
le langage ADBASIC prédéfinie un ensemble de variables globales connues de tous les process et de toutes les applications
fonctionnant sur le PC hôte. Le système définie les variables globales suivantes :
- 79 variables scalaires globales de type entier nommées PAR_1 à PAR_80.
- 79 variables scalaires globales de type réel nommées FPAR_1 à FPAR_80.
- 200 tableaux (pointeurs) dont le type, la forme et la taille sont définies par l'utilisateur, nommées DATA_1 à DATA_200.
la fenêtre "Parameters" d'ADbasic permet de visualiser le contenu des variables PAR et FPAR :
Enfin, l'environnement de développement intègre aussi des liens vers les outils ADtools qui permettent de visualiser : les paramètres PAR et FPAR sous diverses formes et les tableaux DATA via l'application TGraph des ADtools. Ces outils sont documentés à la rubrique ADtools.