Introduction
Par leur concept, les systèmes ADwin sont dédiés aux applications temps réel. Ils sont capables, non seulement de mettre en œuvre des programmes temps réel multitâches, mais il sont aussi en mesure de créer des applications multi processeurs. Cela s'avère particulièrement intéressant lorsque des conditions spécifiques sont rencontrées et qu'il devient alors plus simple, et plus efficace, de distribuer les tâches sur plusieurs cibles.
A titre d'exemple, si sur une machine spéciale, un équipement, un banc d'essais, sont équipés d'un bus numérique spécifique, quelle que soit son implémentation matérielle, et que ce bus impose un protocole lui aussi spécifique, il devient intéressant que la couche logicielle en charge de gérer ce protocole soit implantée sur une cible dédiée. Par exemple, une simple carte d'entrées/sorties numériques TTL. On implémentera alors sur le processeur local de cette carte la gestion de ce protocole. Ce processeur local pourra alors nourrir le processeur temps réel central de données directement utilisables.
Un autre exemple classique consiste à utiliser une carte de sorties analogiques équipée d'un coprocesseur pour générer des formes d'ondes arbitraires sans pour cela prendre des ressources au processeur temps réel central.
Les systèmes ADwin autorisent ce type de fonctionnement grâce à la présence sur certains systèmes, ou sur certains modules de la série ADwin-Pro II, d'un coprocesseur nommé TiCo.
Les coprocesseurs TiCo sont optimisés pour des tâches ou le contrôle temporel est important. Ils peuvent accéder aux ressources matérielles en un simple cycle d'horloge sans gigue (Jitter Free). Ce cycle d'horloge étant, selon les versions de 10ns ou de 5 ns. Cela permet donc de créer des applications avec des gestions de temps ou de déclenchement complexes.
Le langage TiCoBasic et son environnement de développement sont dédiés à la génération des codes exécutables par ces coprocesseurs.
Cibles
TiCoBasic est donc utilisable sur tous les systèmes ou modules équipés d'un coprocesseur TiCo. La liste de cibles possibles est donc la suivante :
- ADwin-Gold II,
- ADwin-Pro II. La liste des modules concernés est la suivante :
Modules multifonctions | |
Pro II-MIO-4 | 16 entrées analogiques, 4 sorties analogiques, 8 entrées/sorties numériques |
Pro II-MIO-4-ET1 | 16 entrées analogiques, 4 sorties analogiques, 16 entrées/sorties numériques, compteurs, Ethercat |
Pro II-MIO-D12 | 12 sorties transistor, 12 relais, 2 compteurs |
Modules d'entrées analogiques multiplexées 8 voies 18 bits | |
Pro II AIN-8/18-LP30V-TiCo | Gamme ± 30V. Filtres 10 KHz. Coprocesseur TiCo. Connecteurs LEMO |
Pro II-AIN-8/18-LP30V-D-TiCo | Gamme ± 30V. Filtres 10 KHz. Coprocesseur TiCo. Connecteur SubD 37 |
Pro II AIN-8/18-LP50-TiCo | Filtres 50 KHz. Coprocesseur TiCo. Connecteurs LEMO |
Pro II AIN-8/18-LP50-D-TiCo | Filtres 50 KHz. Coprocesseur TiCo. Connecteur SubD 37 |
Modules d'entrées analogiques multiplexées 32 voies 18 bits | |
Pro II-AIN-32/18-D-TiCo | 16/32 voies référencées/différentielles. Coprocesseur TiCo |
Modules de sorties analogiques 16 bits | |
Pro II AOUT-4/16-TiCo | 4 Voies. 3 µs. Coprocesseur TiCo. Connecteurs LEMO 1 pôle |
Pro II AOUT-4/16-L2-TiCo | 4 Voies. 3 µs. Coprocesseur TiCo. Connecteurs LEMO 2 pôles |
Pro II AOUT-4/16-B-TiCo | 4 Voies. 3 µs. Coprocesseur TiCo. Connecteurs BNC |
Pro II AOUT-4/16-D-TiCo | 4 Voies. 3 µs. Coprocesseur TiCo. ConnecteurSubD 37 |
Pro II AOUT-8/16-TiCo | 8 Voies. 3 µs. Coprocesseur TiCo. Connecteurs LEMO 1 pôle |
Pro II AOUT-8/16-L2-TiCo | 8 Voies. 3 µs. Coprocesseur TiCo. Connecteurs LEMO 2 pôles |
Pro II AOUT-8/16-B-TiCo | 8 Voies. 3 µs. Coprocesseur TiCo. Connecteurs BNC |
Pro II AOUT-8/16-D-TiCo | 8 Voies. 3 µs. Coprocesseur TiCo. Connecteur SubD 37 |
Modules d'entrées/sorties numériques | |
Pro II DIO32-TiCo | 32 entrées/sorties numériques TTL. Coprocesseur TiCo |
Pro II DIO32/1-TiCo | 32 entrées/sorties numériques TTL. Coprocesseur TiCo 1 |
Pro II DIO32-TiCo2 | 32 entrées/sorties numériques TTL. Coprocesseur TiCo 2 |
Modules Interfaces Bus Numériques et de Terrain | |
Pro II SPI-2-T | 3 ports SPI TTL |
Pro II SPI-2-D | 2 ports SPI Différentiels |
Utilisation de TiCoBasic
Comme ADbasic, TiCoBasic dispose de son propre environnement de développement. Hors les deux environnements et les deux langages sont, à l'exception de quelques fonctionnalités liées au matériel, strictement identiques. Apprendre ADbasic, c'est aussi apprendre TiCoBasic.
On peut donc se reporter aux rubriques suivantes pour appréhender le langage et l'environnement de développement :
-Le développement temps réel
-ADbasic (Environnement de développement)
La suite de cette rubrique se concentre donc exclusivement sur les quelques différences entre les deux langages et environnements.
Communication avec les coprocesseurs TiCo
Il n'existe pas de lien direct entre un PC hôte du système ADwin et les coprocesseurs TiCo potentiellement hébergés par le système. Seul le processeur temps réel central du système ADwin est en mesure de communiquer avec le ou les coprocesseurs. Cela impose quelques différences par rapport à ADbasic :
- Le chargement des process fonctionnant sur un coprocesseur TiCo impose auparavant de mettre en œuvre la communication avec le processeur central. Sous TiCoBasic,
deux boutons sont dédiés à ces deux étapes.
- Une fois les process chargés sur un coprocesseur, ceux-ci sont autonomes par rapport au processeur central. Même si celui-ci est stoppé, les process
fonctionnant sur les coprocesseurs continuent à s'exécuter.
-Si l'application de supervision fonctionnant sur le PC doit lire or écrire des données vers un process fonctionnant sur un coprocesseur, elle doit
passer par une variable globale partagée commune à ADbasic ou TiCoBasic.
Les process
Sur les coprocesseurs TiCo, un seul process haute priorité est autorisé. Un process de basse priorité est possible uniquement si le process de haute priorité est dépendant d'interruptions temps réel émanant d'un timer.
Jeu d'instructions
De par leur structure matérielle les coprocesseurs TiCo n'utilisent que le type de données LONG (entiers longs). Ils ne peuvent pas effectuer de calculs en virgule flottante.
Il n'est possible de définir que 16 tableaux globaux partagés sur le coprocesseur TiCo (contre 200 sur le processeur central).
TiCoBasic définit un type de structure de données nommé "RingBuffer". Cette structure est optimisée pour des accès et des transferts de données à très haut débit.
Certaines instructions ADBAsic sont absentes de TiCoBasic (comme par exemple les instructions de calcul trigonométrique). TiCoBasic définit également des instructions spécifiques.
Communication entre le processeur central et les coprocesseurs TiCo
Pour communiquer avec les coprocesseurs TiCo, le lange ADBAsic dispose d'un jeu d'instructions complémentaires lui permettant de charger, démarrer, stopper, suivre l'état des process fonctionnant sur les coprocesseurs. Il peut également lire et/ou écrire les variables globales de type PAR ou DATA défnies par le coprocesseur. Ces instructions sont l'équivalent, pour ADbasic, des fonctions de l'API ADwin utilisées par les programmes de supervision fonctionnant sur un PC hôte. Cette API est décrite à la rubrique : Pilotes (API).