NI Home
Cart Achats | Aide
Hello Events Academic NI Developer Zone Support Solutions Products & Services Contact NI MyNI
You are here: 
NI Home > NI Developer Zone > NI Discussion Forums


Répondre
Active Participant
ouadji
Envois : 877
0 Compliments

timed loop

Bonjour à tous,

 

La structure "Timed Loop".

 

Peu de documentation, difficile d'aborder le sujet.

J'ai lu que cette structure était utilisée pour le Real-Time (?)

 

Est-il possible d'utiliser cette structure (la mettre à profit dans un VI) sans utiliser le module RT ?

 

Je cherche un exemple (simple si possible) où cette structure est utilisée dans un VI "normal",

et permet de résoudre une situation qui n'aurait pas pu être solutionnée autrement (ou plus difficilement)

 

Mes questions sont "floues", je m'en doute, j'en suis désolé.

 

Je me permets exeptionnellement de poser une autre question ... un peu "séparée"

 

"on" parle de Real-Time ... je ne comprends pas.

Quand je fais une acquisition avec ma carte 6025E ... je fais une acquisition en temps réel ...

Alors pourquoi parle-t-on de Real-Time comme quelque chose "à part", "en plus", "séparé de" .... (?)

 

Qu'y a-t-il derrière cette notion de real-time ?

Que permet ce module RT que je ne puisse faire avec simplement LV ?

 

Pour l'une et l'autre question (timed-loop et RT) je cherche la première porte à ouvrir, un point de départ ...

 

à l'avance, merci à tous.

 

 

 

 

 

Active Participant
Rodéric
Envois : 1 064

Re : timed loop

Salut,

 

Quelques réponses rapides (Simon te fera sans doute la version longue^^)

 

Oui cette structure est destinée aux systèmes temps réels.

 

Oui on peut quand même l'utiliser dnas un VI "normal" (les temps seront un poil mieux gérés qu'avec un wait for next ms multiple)

 

Real Time = Déterministe. Donc pas un OS windows mais un OS RT (pharlap par exemple)

 

En RT: OS plus léger (pas d'échec ou erreurs en tout genre =>fiable)

 

 

Voila j'espère avoir un peut dégrossit le problème...

 

A+

Rodéric L
Certified LabVIEW Architect
Active Participant
ouadji
Envois : 877
0 Compliments

Re : timed loop

Merci Rodéric.

 

1. Donc, impossible d'utiliser ce module NI RT sous Windows (XP ou 7)

 

2. Un OS RT

    Ce type d'OS est-il exclusivement utilisé dans des environnements de mesures et d'acquisitions ?

    (je suppose que oui)

    Notre bon vieux DOS aurait-il pu être un OS RT ?

    Un OS RT peut-il être multi-tâches ?

 

3. déterministe

    Principe qui définit que chaque événement provient d'une cause ... à par ça ... oops

    Je ne comprends pas ce mot dans le contexte de LV.

 

    J'ai toujours mon exemple en tête ...

    quand je fais une acquisition avec les fonctions de DAQmx ... je suis en temps réel ... non ?

 

    il y aurait-il plusieurs "niveaux" de temps réel ?

 

Merci de me répondre Rodéric

Je me doute que vu le niveau de mes questions ... et l'étendue du sujet

me répondre ne doit pas être facile.

Active Participant
Rodéric
Envois : 1 064
0 Compliments

Re : timed loop

Déterministe: une tâche mettra toujours le même temps à s'executer, sans erreur.

 

Exemple en temps réel ta boucle mettra 100ms à s'executer sous WIndows sa dépend... tu me suis?

 

Un OS RT peut être multi tâches (au moins dnas le sens ou tu pourra executer N threads)

 

La RAM est préallouée en RT, pas sous Windows.

 

Ton DAQmx n'est pas temps réel, puisque temps réel n'a pas la définition "courante" du therme.

 

 

Pour la question 1, non je ne pense pas, par contre tu peux utiliser les boucles cadencées.

 

 

C'est en effet compliqué de te répondre comme sa dans un message écrit... je te conseille de chercher un peu sur le site NI tu trouveras pas mal d'infos...

 

Rodéric L
Certified LabVIEW Architect
Active Participant
SimonD
Envois : 445

Re : timed loop

Bonjour,

 

Pour commencer, Windows est un OS multitache préemptif donc ton OS peut à tout moment prendre la main sur ce que tu est en train d'exécuter. Tu peux faire un test facilement: sur un graph tu affiche le temps entre deux itérations d'une boucle que tu fais tourner rapidement (genre 10 ou 20 ms). Puis tu ouvres Internet explorer ou word: tu vas voir que ton temps de boucle varie.

 

Sur un OS RT (pharlap, vxWorks..) ou tu vas déployer du code LabVIEW RT, ton timing sera 'déterministe'. Le temps d'exécution sera garantit. Dans les time loop tu vas pouvoir gérer la priorité de tes boucles. Donc ta boucle la plus critique s'exécutera avec le timing défini, car elle ne risquera pas d'être intérompue par une autre boucle de priorité inférieure.

 

C'est pas forcement des notions évidentes :smileywink:

Cordialement,
Simon D. | Certified LabVIEW Architect
Active Participant
ouadji
Envois : 877
0 Compliments

Re : timed loop

Oui, je commence à comprendre.

 

Avec Windows impossible de faire du "véritable" temps réel.

Le dialogue avec le "monde réel" est sujet à un flou artistique sur le temps.

impossible de générer par soft une fréquence de 10KHz à 1hz près.

 

J'ai "vu" sur le net ...

une machine sous Windows qui supervise ... avec les processus non critiques.

et une 2eme machine avec un OS RT sur laquelle tournent les processus temps réel.

NI a même créé le "all in one" avec son hyperviseur (4 coeurs sont nécessaires)

mais ... malin ... la machine avec le soft pré-chargé, pas l'un sans l'autre. :smileyhappy:

 

ok, merci beaucoup.

temps réel, déterministe, le profil général de la "chose", j'ai compris.

Le temps réel me semble être à lui seul un univers tout entier.

Active Participant
ouadji
Envois : 877

Re : timed loop

(time-out du forum ... quelle *****(biiiiip) ce truc ! obligé de re-poster.)

 

Je viens de relire.

 

Dans les time loop tu vas pouvoir gérer la priorité de tes boucles.

Donc ta boucle la plus critique s'exécutera avec le timing défini,

car elle ne risquera pas d'être intérompue par une autre boucle de priorité inférieure.

 

woaw, ça c'est un truc génial.

 

Active Participant
ouadji
Envois : 877
0 Compliments

Re : timed loop

Bonjour à tous,

 

Une dernière petite question concernant cette "Timed Loop"

... et de façon plus générale sur la Palette "Timed Structures".

 

a) Cette Palette concerne des problèmes de Vitesse, de Priorité et de Synchronisation.

b) Toutes ces fonctions s'appliquent aux VIs "Temps Réel".

 

c) Sur le forum, je ne manque jamais de jetter un coup d'oeil à "tous ce qui passe".

    Je n'ai jamais vu un VI "normal" (pas RT) comportant une fonction de cette Palette.

    Ce qui semble logique vu les points a) et b)

 

a + b + c :

 

alors (bon dieu) que fait cette Palette dans une version "normale" (non RT) de LabView ?

 

Je présuppose une éventuelle réponse :

oui, mais on peut "quand même" utiliser ces fonctions dans un VI "normal".

on peut placer une "période" sur un Timed Loop", on peut synchroniser 2 Timed Loop ... etc ... (dans un VI normal)

 

et je dis :

oui, ok ... mais cela a-t-il le moindre sens, puisque dans un environnement "non-RT"

ces contraintes de temps ne pourront de toute façon pas être respectées.

 

et je retombe sur ma question .

 

merci à tous.

Active Participant
Rodéric
Envois : 1 064
0 Compliments

Re : timed loop

Oui et non, sa permet quand même de gerer des priorités, un exemple simple tu fais une timed loop en mesurant le temps d'exécution de chaque itération et la même chose avec une boucle classique et un wait next ms multiple. Pendant les exécutions tu lances d'autres choses du style mozilla etc... tu verras que la timed loop est régulière alors qe la boucle simple est perturbée par le lancement d'autres applications...

Rodéric L
Certified LabVIEW Architect
Active Participant
ouadji
Envois : 877
0 Compliments

Re : timed loop

C'est un "plus" de taille ça.

donc même dans un environnement "non-RT" ... il y aurait malgré tout une gestion des priorités avec la "timed-loop"

Très intéressant, je testerai ça pour me rendre compte.

 

Question à 10cent. ...pourquoi ne pas utiliser des timed-loop "partout" ...

puisque de toute façon on a toujours besoin de "temporiser" une boucle (ressources µP)

Il y aurait-il un revers à la médaille ? ... un code compilé plus lourd peut-être ? ou autres choses ?

 

J'en profite pour donner mon avis sur "autre chose".

Tu parles d'une boucle avec un "wait next ms multiple".

Et bien moi, je ne mettrai jamais un "wait next ms multiple" pour cadencer une boucle., mais bien un wait(ms).

D'abord (et peut être surtout) parceque le temps de la 1ere itération sera ... aléatoire.

Et deuxio, parceque pour moi, "wait next ms multiple" c'est pour synchroniser, pas pour temporiser.

Q'en penses-tu Rodéric ?

En consultant ce site, vous en acceptez les Conditions d'utilisation. Veuillez les lire attentivement avant d'accéder à une quelconque partie du site. Veuillez suivre ce lien pour en savoir plus sur la politique sur les droits d'auteur de ni.com.
Mon Profil | Confidentialité | Conditions d'utilisation | Contacter NI © 2011 National Instruments Corporation. All rights reserved.    |    Envoyer cette page Envoyer cette page