Comprendre les modes de compilation des programmes CRBasic : Séquentiel et Pipeline

par Janet Albers | Mis à jour le : 10/25/2017 | Commentaires : 2

Les thèmes principaux du Blog


Recherche sur le Blog


Langages du blog

English
Français (French)


Abonnez-vous au Blog

Recevez un courriel lorsqu'un nouvel article est posté. Choisissez les sujets qui vous intéressent le plus.


Entrez votre adresse courriel :



Suggérer un article

Y a-t-il un sujet que vous souhaiteriez nous voir aborder ? Laissez-nous un message.

Leave this field empty

Les modes séquentiel et pipeline illustrés par des blocs

Avez-vous déjà remarqué un message indiquant que votre programme CRBasic a été compilé en PipelineMode ou en SequentialMode ? Qu'est-ce que ça veut dire ? Et, quand est-ce important ? Dans cet article, nous allons vous expliquer ces deux modes.

Le mode séquentiel

Commençons par le mode plus simple : SequentialMode. L'aide de l'éditeur CRBasic offre cette description : "En mode séquentiel, les instructions sont exécutées par la centrale de mesure séquentiellement comme elles se produisent dans le programme." En d'autres termes, votre programme va de haut en bas. Vous pouvez également penser à un mode séquentiel comme celui-ci, avec une instruction exécutée l'une après l'autre :

Sequential mode represented by boxes with arrows

Le mode séquentiel vous permet de contrôler l'ordre d'exécution des instructions et facilite le suivi de votre programme. Le mode séquentiel peut être particulièrement utile lorsque vous alimentez des capteurs sous le contrôle d'un programme pour vous assurer que votre capteur est allumé au bon moment.

En mode séquentiel, chaque mesure est suivie des tâches de traitement requises. En d'autres termes, les mesures et le traitement ne se produisent pas simultanément. Au lieu de cela, le traitement suit toujours la mesure. Parce que les mesures et le traitement sont effectués dans l'ordre séquentiel, il n'y a pas de mémoire tampon ou buffer pour le traitement.

Dans la figure ci-dessous, il y a trois mesures : A, B et C. Chaque mesure nécessite un traitement, noté respectivement PA, PB et PC. Dans cet exemple simple, le traitement inclut l'application de multiplicateurs et de décalages et l'exécution de calculs de sortie. Nous voyons également qu'il y a un temps d'inactivité dans l'analyse, qui est indiqué par les carrés non étiquetés.

Sequential mode with three scans taking 10 seconds each

Cliquez ci-dessus pour agrandir l'image.

Je vais utiliser les secondes comme unité de mesure pour la vitesse de scrutation, afin de faciliter la compréhension des chiffres. (En pratique, les mesures et le traitement de Campbell Scientific sont beaucoup plus rapides.) Dans la figure ci-dessus, nous pouvons dire que la vitesse de scrutation est de 10 secondes.

Dans la figure suivante, nous avons supprimé le temps d'inactivité dans l'analyse. En mode séquentiel, le plus rapide de cet ensemble de mesures et de traitement pourrait être une vitesse de scrutation de six secondes.

Mode séquentiel avec trois scan prenant 10 secondes chacun

Cliquez ci-dessus pour agrandir l'image.

Essayer d'exécuter l'analyse plus rapidement en mode séquentiel entraînerait des analyses qui ne pourront pas être traitées. À ce rythme, vous risquez d'obtenir une analyse totalement ignorée (skipped scans), si la tâche de traitement occasionnelle prend plus de temps que prévu.

Pour mieux comprendre les analyses non traitées ou ''skipped scans'', regardez la vidéo ci-dessous. 
(Note : Il n'y a pas de son pour cette vidéo.)

Note : Les centrales de mesure de la série CR300 fonctionnent toujours en mode séquentiel.

Le mode pipeline

Maintenant, qu'est-ce que PipelineMode ? L'aide de l'éditeur CRBasic propose cette description : "En mode pipeline, les tâches de mesure et les tâches de traitement sont traitées séparément et exécutées simultanément." En mode pipeline, les tâches de mesure reçoivent la priorité la plus élevée. Les tâches de traitement peuvent être décalées et peuvent être complétées plus tard, même lors d'une analyse différente si la centrale de mesure un planning serré. Ces tâches simultanées sont complétées à l'aide de mémoires tampons pour l'analyse, qui permettent aux tâches de traitement de se mettre en file d'attente et de se produire en arrière-plan pendant les mesures.

Dans la figure ci-dessous, le même programme que nous avons examiné dans l'exemple du mode séquentiel est exécuté en mode pipeline. Encore une fois, il y a trois mesures (A, B et C) avec le traitement des mesures (notées PA, PB et PC, respectivement). Comme nous utilisons le mode pipeline, les tâches de mesure et de traitement sont traitées séparément, mais peuvent se produire simultanément.

Pipeline mode with three scans taking 10 seconds each

Cliquez ci-dessus pour agrandir l'image.

Maintenant, accélérons les choses. En mode séquentiel, le plus rapide que nous pouvions exécuter le programme sans avoir à passer les analyses était de six secondes. En mode pipeline, les mesures et le traitement se font simultanément, au besoin, ce qui nous permet de diminuer la vitesse de scrutation à cinq secondes.

Le mode Pipeline mode avec 6 scrutations prenant chacune 5 secondes

Cliquez ci-dessus pour agrandir l'image.

Question : Quel est la vitesse la plus rapide que ce programme pourrait exécuter en mode pipeline ?

Réponse : En supprimant tous les temps d'inactivité, il pourrait fonctionner toutes les trois secondes.

 

Le traitement des tâches dont la durée est variable, qui nécessitent des tentatives ou qui ne se produisent qu'occasionnellement peuvent augmenter le temps d'analyse requis, ce qui peut entraîner des analyses ignorées. La mémoire tampon d'analyse (défini dans l'instruction CRBasic Scan()) permet de stocker les tâches de traitement dans une file d'attente, puis de les traiter lorsque le processeur devient disponible.

Attention : Si la centrale de mesure n'effectue pas les tâches complètement et si la mémoire tampon est pleine, toutes les tâches dans la mémoire tampon seront immédiatement supprimées, ce qui provoquera qu'une scrutation sera ignorée (ou skipped scans) pour chaque mémoire tampon. Si vous constatez que vos analyses ignorées augmentent régulièrement, vous risquez probablement d'en être victime. Pour éliminer les scrutations manquantes, vous pouvez augmenter le nombre de mémoires tampons, augmenter la vitesse de scrutation ou modifier la structure du programme.

Pour obtenir de l'aide sur la compréhension des analyses manquantes et les mémoires tampons, regardez la courte vidéo ci-dessous.

Pour un affichage optimal, cliquez sur le bouton plein écran situé à droite des commandes vidéo.

Dans cet exemple vidéo, l'utilisation de deux mémoires tampons au lieu d'un aurait éliminé les analyses manquantes.

Note : En PipelineMode, la centrale de mesure utilise un minimum de deux mémoires tampons. 

La valeur MaxBuffDepth dans la table d'état de la centrale de mesure peut être surveillée pour aider à comprendre le nombre optimal pour la taille des mémoires tampons à allouer pour un programme.

Recommandé pour vous : Pour de plus amples informations au sujet de la table d'état (Status table), regardez la vidéo Connect – Station Status” video.

Commutation entre les modes

Par défaut, votre programme CRBasic essaiera de compiler en mode pipeline. Cela vous donne le temps de mesure le plus précis et généralement un traitement et une consommation d'énergie plus efficaces. CRBasic passera automatiquement en mode séquentiel si nécessaire. Plus particulièrement, un programme se compilera en mode séquentiel lorsque des mesures ne seront pas effectuées à chaque scrutation (par exemple, dans une instruction If ... Then) ou lorsque des mesures doivent être configurées en externe (par exemple, le capteur doit être alimenté par le Port SW12).

Pour de plus amples informations

Voir PipelineMode ou SequentialMode dans le menu d'aide de l'éditeur CRBasic Editor pour plus de détails. Pour accéder à ces informations, procédez comme suit :

  1. Sélectionnez PipelineMode ou SequentialMode dans la liste des instructions de l'éditeur CRBasic.
  2. Cliquez sur le bouton Help (Aide) au-dessus de la liste d'instructions.

Recommandé pour vous : Pour de plus amples informations au sujet du menu d'aide de l'éditeur CRBasic, visionnez la vidéo CRBasic | Help System”.

 

Crédits : John Markham, ingénieur de test de produits chez Campbell Scientific, Inc., a contribué à cet article.

Si vous avez des questions sur l'utilisation de PipelineMode ou SequentialMode, veuillez les poster ci-dessous.


Partagez cet article



A propos de l'auteur

janet albers Janet Albers est rédactrice technique senior. Elle vous fera part de ses conseils, simplifiera les concepts et vous guidera vers un projet réussi. Elle est à Campbell Scientific, Inc depuis plus longtemps que la CR1000, mais pas depuis aussi longtemps que la CR10X. Après les heures de travail, Janet aime le plein air avec ses garçons et ses chiens.

Voir tous les articles de cet auteur.


Commentaires

Minh T. | 12/05/2018 at 08:29 AM

Hi Janet, how do users determine whether a built-in (or user-defined) CRBasic subroutine or function is a `Measurement` or `Processing` task? Is it possible to view the buffer contents?

jra | 12/05/2018 at 08:41 AM

Thanks for your question Minh.

In the CRBasic editor select PipeLineMode from the instruction list, click the Help button. In the first paragraph under Remarks there is a link to a list of instructions that run as measurement or processing tasks. 

No - it is not possible to view the buffer contents. 

I hope that helps. Let me know if you need more informations. 

Please log in or register to comment.