Discussions au sujet des autres produits NI

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

[QUESTION] RS-232 : break

Résolu !
Accéder à la solution

Bonjour à tous.

 

Je préfère prévenir, je suis un novice, et mes questions peuvent vous sembler très basiques, je vous les posent en espérant avoir de l'aide, voir pouvoir parler dans un chat direct avec certains d'entre vous qui auraient la patience de m'enseigner certaines bases, et prendre contact via MP.

 

-Je suis donc entrain d'apprendre le système de com du serial RS-232, et j'ai quelques soucis de compréhensions.

J'ai plus ou moins compris l'utilité d'un break, mais la notion me reste vague.

-J'ai aussi entendu parler de "temps" sur les breaks, qu'ils ne soient ni trop court, ni trop long, mais j'ignore ce que cela signifie vraiment.

 

Ce qu'il me manque, c'est surement la vision global de tout cela, j'en suis conscient.

Je vous demande de l'aide car je suis en stage, et que comme vous le savez surement, je n'ai pas à ma disposition le temps de tout voir du début..

 

En espérant ne pas déranger ce forum avec ma question, merci à vous.

0 Compliments
Message 1 sur 13
4 096 Visites

Bonjour Phantom42,

Premièrement, sachez qu'il n’y a pas de question bête sur le forum. En effet, d'autre personnes peuvent être intéressées par votre question, ainsi, votre question est utile pour notre forum.

 

Le break est une absence de transmission. Il est utilisé comme état de repos et peu donc durée autant de temps que l'on veut. On le retrouve avant une transmission mais aussi en guise de stop (d’où le nom break), après le bit de polarité. Le break doit avoir une durée minimale de 2 bits.

 

Si vous parlez anglais, je vous invite à visiter les bits suivants :

https://wcscnet.com/tutorials/introduction-to-rs232-serial-communication/

http://www.arcelect.com/rs232.htm

 

Bien cordialement,

Caillot Antoine

Message 2 sur 13
4 056 Visites

Salut, effectivement ta question n’est pas bête, et les questions ne sont jamais bêtes.

Mais concrètement tu veux faire quoi ? Si tu es en stage, tu dois faire « quelque chose ».

Tu dois peut-être communiquer avec un instrument connecté en RS232 (via VISA) ?

La fonction « break » n’est pas la fonction la plus utilisée. Dans 99% des cas, il suffit d’utiliser « configuration port série » ; « écriture » ; « lecture » et « fermeture » de la palette VISA.

A+

 

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 3 sur 13
4 053 Visites

Merci pour les réponses !

Concernant les liens, je vais les lire dès que j'aurais poster ce message.

 

Je dois actuellement trouver un défaut de communication, potentiellement un soucis de robustesse.

C'est à dire que mon ordinateur communique avec un appareil via un cable RS-232.

Que des "break" sont utilisés, et que deux soucis surviennent.

 

1/ La durée du break est dite "trop courte".

2/ La durée du break est dite "trop longue".

 

De ce que je pensais avoir compris du break, il devait par exemple sur un baudrate de 19200, s'envoyer entre 2 trames pour permettre l'envoie "safe" des données.

Un temps trop cours signifiais donc que les données se faisaient possiblement "coupé".

Alors qu'un temps trop long signifiais souvent une erreur. (que j'imagine dépendant de la configuration de l'appareil)

 

Lorsque tu me parles de la palette VISA, tu parles du LabView, logiciel payant ?

0 Compliments
Message 4 sur 13
4 031 Visites

salut, lorsque je parle de VISA je pense à : L’API du driver VISA, Virtual Instrumentation Software Architecture, installe sous LabVIEW une bibliothèque de fonctions constituées de VIs et de propriétés.

Pilotage des instruments avec LabVIEW et VISA (driver d’instruments)

 

avec ton instrument, tu es en RS232, donc en point à point. Donc ton PC envoie une commande et l'instrument va répondre.

Perso, je n'ai jamais utilisé la commande "break", si elle est indispensable dans ton cas, je n'ai pas de retour te faire.

 

Par contre, j'ai le sentiment que l'erreur de communication n'est pas correctement gérée.

Ton PC va demander "une fonction du driver" et l'instrument doit répondre.

 

1) Qu'elle est la condition de réception des données? condition entre la demande du PC (write) et la lecture des données (Read) (caractère de fin? nombre d'octet en fonction de la question? Timeout?)

2) Si erreur comment est-elle gérée?

3) As-tu du code à montrer?

4) Qu'elle est ta fonction logicielle qui ne fonctionne pas?

A+

 

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 5 sur 13
4 019 Visites

Salut Je te propose de communiquer via le forum (plus simple que en MP).

Suite à ton message, je pense comme toi, je ne suis pas sûr de l'utilité du break

si tu regarde l'exemple RS232

 

6.png

 

il faut

  1. ouvrir la ressource VISA, port COM VISA
  2. configurer les paramètres du port série (question as-tu un caractère de fin de réception de données de l'instrument vers le PC???)
  3. le PC écrit une commande (fonction Write VISA)
  4. l'instrument va répondre, donc le PC attend via la fonction Read que la réponse soit récupérée (question comment savoir que la réponse est arrivée?? cf Lecture des données dans l’instrument

    Pour la lecture des données retournées par l’instrument, on utilise VI VISA Read. Il est très important de comprendre que cette fonction retourne les données contenues dans le buffer dès qu’une de ces 3 conditions est présente :

        • Un caractère de terminaison est arrivé ;
        • Le nombre d’octets dans le buffer de réception est égal à celui passé en paramètre à la fonction VISA Read ;
        • Le temps d’attente a dépassé le TimeOut. Dans ce cas LabVIEW retourne un code d’erreur, 0xBFFF0015, le délai d’attente (timeout) a expiré avant que l’opération ne soit achevée.
banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

Message 6 sur 13
4 009 Visites

Je ne pense pas que nous utilisons VISA et LabView.

 

1/

La condition pour recevoir les données est de le demander, il ne semble pas que ce soir une communication permanente.

Sinon le but est l'envoie de données, le break semble donc marquer le début et la fin de l'envoie de données. Et d'utiliser pleinement les trames de données sans devoir prendre en compte le bit de "start" et le "stop".

Un timeout semble être envoyer de l'appareil en face au bout d'un certain moment, mais je n'ai pas plus d'indication la dessus.

 

2/

Si une erreur se fait remarquer, un retry de l'opération est opéré.

 

3/

Non, malheureusement. (pas l'autorisation en vue du sujet)

 

4/ 

Aucune, le soucis est ma compréhension du break, mais si la définition que j'en ai donnée est juste, cela signifie que mon autre soucis est de comprendre pleinement ce que pourrait signifier le fait d'avoir un break "trop rapide" ou "trop lent".

 

Un break est une sorte de signal envoyé avant ou après une suite de données dans le but de ne pas avoir à gérer les bits de parités, et d'aller par conséquent "plus vite". (peut être utiliser dans ce cas)

Le break se défini par l'utilisation de "SetCommBreak" puis "ClearCommBreak".

Le break est d'une durée courte, on va dire 4 ms pour du 19200 de baudrate.

Le break est utilisé en tant que signal.

 

Mais dans ce cas, toujours la même question, que peu signifier un break "trop court" ou "trop long".

0 Compliments
Message 7 sur 13
3 984 Visites

http://ltxfaq.custhelp.com/app/answers/detail/a_id/736/~/what-is-a-serial-break%3F

A serial break is not a character. It is a signal that can be sent using the TX line of the device sending the break.

When a serial port is idle and no data is being sent the TX line is in a logical 1 state. While data is being send the TX line rapidly transitions between logical 0 and logical 1. Each frame of data takes a certain period of time to send, depending on the bit rate of the connection. This is called the "frame time" or "word time".

A break occurs when the TX line is held to a logical 0 for longer than one frame time.

There are short breaks and long breaks. In general a short break is one that lasts longer than one frame time, but less than two frame times. A long break can last two or more frame times. Most serial devices that support breaks use a short break.

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 8 sur 13
3 974 Visites

Lien que j'ai bien entendu déjà regarder avant de venir poser mes questions ici, ne t'inquiète pas.

 

Ça ne m'a en revanche pas plus éclairer sur la notion de "court" et "long".

Un break étant défini par le temps entre "SetCommBreak" et "ClearCommBreak", il est plus ou moins dit qu'une trame est égal à "court", et deux égal à "long", mais ça ne m'indique pas grand chose de plus.

 

En tout cas de ce que je suis capable d'en comprendre sur mes connaissances du RS-232, des port COM et du break.

0 Compliments
Message 9 sur 13
3 966 Visites
Solution
Accepté par Phantom42

salut,

comme je n'ai jamais utilisé le break, ma remarque est à pendre avec des réserves. Je ne suis pas en accord avec ta définition.

 

ta définition :


Phantom42 a écrit : Un break est une sorte de signal envoyé avant ou après une suite de données dans le but de ne pas avoir à gérer les bits de parités, et d'aller par conséquent "plus vite".

ou

s'envoyer entre 2 trames pour permettre l'envoie "safe" des données. Un temps trop cours signifiais donc que les données se faisaient possiblement "coupé".

dans sa réponse caillotantoine  écrit : Le break est une absence de transmission. Il est utilisé comme état de repos et peu donc durée autant de temps que l'on veut.

 

 

quelques liens en plus cf La liaison RS-232 : break

DTR et DSR : Ces lignes sont gérées un peu différemment des autres, en ce sens qu'elles ont une valeur par défaut, qui est 1. Lors qu'elles doivent passer à 0, on effectue alors un break par une violation du protocole série sur la ligne de données. Ceci empêche la transmission de caractères pendant toute la durée du break, mais comme le passage à 0 de la ligne signifie que l'émetteur du break ne s'intéresse plus à la liaison, cela n'a pas d'importance. On distingue deux types de break, selon leur durée : le break court (< 250ms) et le break long (> 250ms). La réaction d'un modem à ces deux évènements est général programmable, mais souvent configurée pour, dans le cas court, causer un retour du mode connecté au mode commande (plus rapide qu'une séquence « +++ ») ou, dans le cas long, forcer un raccrochage de la ligne (plus rapide qu'un « +++ » suivi d'un « ATH »).

 

ou wikipedia : If the line is held in the logic low condition for longer than a character time, this is a break condition that can be detected by the UART.

 

RS232 Break condition : Some equipment will deliberately transmit the "space" level for longer than a character as an attention signal. When signaling rates are mismatched, no meaningful characters can be sent, but a long "break" signal can be a useful way to get the attention of a mismatched receiver to do something (such as resetting itself). Unix-like systems can use the long "break" level as a request to change the signaling rate, to support dial-in access at multiple signaling rates.

 

dans l'aide de LabVIEW : LabVIEW Serial Instr tu vas trouver comment l'utiliser et le configurer

 

Serial Settings:Modem Line Settings:Break State Permet de contrôler manuellement l'état d'arrêt du port série. Si elle est activée, cette propriété suspend la transmission de caractères et place la ligne de transmission en état d'arrêt jusqu'à ce que cette propriété soit désactivée. Si vous souhaitez que VISA envoie automatiquement un signal d'arrêt après chaque opération d'écriture, utilisez plutôt les propriétés Break Length (Break Len) et End Mode for Writes (ASRL End Out). La valeur par défaut est Unasserted (non activé). Détails

 

A+

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

0 Compliments
Message 10 sur 13
3 928 Visites