Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Save to My Library
Look up keyword
Like this
7Activity
0 of .
Results for:
No results containing your search query
P. 1
Communication Avec Matlab

Communication Avec Matlab

Ratings: (0)|Views: 446 |Likes:
Published by ben boubaker
http://membres.multimania.fr/pierdieu/scilab/scihtm6.htm#Divers langages pour aboutir à des
http://membres.multimania.fr/pierdieu/scilab/scihtm6.htm#Divers langages pour aboutir à des

More info:

Published by: ben boubaker on Nov 11, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

12/15/2011

pdf

text

original

 
Communication de Matlab/Scilab avec des périphériques
 
Le matériel informatique standard est très réduit : l'unité centrale, le clavier, l'écran.
 
Aussi bien Matlab que Scilab sont capables de recevoir des instructions frappées auclavier, et d'afficher le résultat de leur calcul à l'écran.
 
Le programme officiel de BCPST (arrêté du 8-8-2000) prévoit que "l'environnementde programmation utilisé par les étudiants en travaux pratiques ... comprend :
 
- l'exécution d'un programme avec saisie de données au clavier et affichage ouimpression des résultats".
 
En fait, l'impression des résultats n'est pas simple, ni avec Matlab, ni avec Scilab. Iln'y a pas d'instruction simple permettant d'envoyer les résultats d'un calcul directementà l'imprimante. Le plus simple, apparemment, est d'envoyer ces résultats vers unfichier-texte, puis ensuite de charger ce fichier dans un éditeur de texte capable del'imprimer.
 
Une autre possibilité est d'utiliser le fait que l'imprimante porte le nom "lpt1:" dans lesystème MS-DOS-Windows.
 
Donc :
 
- en Matlab, l'instruction save 'lpt1:' A -ascii peut imprimer la matrice A
 
- en Scilab, l'instruction write('lpt1:',A) fait de même.
 
En sciences, plusieurs sortes de périphériques sont utilisables :
 
- des appareils de mesure ou des actionneurs
 
- d'autres ordinateurs ou appareils informatiques.
 
Certains de ces périphériques sont connectables par liaison série (certainesimprimantes, modem, multimètre, oscilloscope, appareils de mesure...), d'autres parliaison parallèle sur la prise imprimante (imprimante, appareils de mesure...), ou biensur des connecteurs internes ("slots").
 
Il y a quelques années, les connecteurs des PC étaient de type "ISA", et de nombreusescartes de mesure y étaient connectables. Sur les ordinateurs PC actuels, les slots sontde type PCI, et peu de cartes de mesure y sont adaptées.
 
Les ordinateurs actuels sont vendus avec d'autres branchements possibles : carte-son(connexion possible d'un micro et de hauts-parleurs), connecteurs USB...
 
Utilisation des appareils RS232
 
Ce qu'est la liaison sérielle (RS232 = V24)
 La communication entre les appareils (ordinateur d'une part, périphérique d'autre part)se fait par des fils électriques.
 
"Série" signifie que les signaux (les bits) sont envoyés en série, c'est à dire l'underrière l'autre. Le contraire serait une liaison "parallèle", où les signaux seraientenvoyés "en parallèle" sur des fils différents : c'est le cas de la plupart desimprimantes.
 
L'intérêt de la liaison RS232, c'est qu'il suffit de 3 fils pour assurer la communicationentre deux appareils A et B. Il faut bien sûr un fil de référence électrique ("masse"), unfil pour envoyer les signaux dans un sens (A vers B), et un fil pour envoyer lessignaux dans l'autre sens (B vers A).
 
La prise normalisée RS232 était une prise à 25 broches. Actuellement, elle est souventréduite à une prise à 9 broches mâle, située à l'arrière de l'ordinateur.
 
 
D'autres appareils ont des prises différentes : l'Apple IIc avait un prise DIN à 5broches, le Macintosh une prise mini-din, certains multimètres une prise jack etd'autres encore pour les ordinateurs de poche Palm...
 
Dans tous les cas, l'important est de connaître les trois fils importants : masse("ground"), transmission de données ("TD" ou "TX") et réception de données ("RD"ou "RX"). Il suffit de relier les fils de masse des deux ordinateurs, de relier le fil TDde l'un au fil RD de l'autre, et inversement. D'autres fils existent, mais sont moinsindispensables. Ils servent à synchroniser les émissions de données, ou à indiquer l'étatde l'appareil.
 
Dans les paragraphes qui suivent, il sera surtout question de la communication avec leboîtier de mesure Orphy GTS. Celui-ci communique à 9600 bits par seconde, 8 bits dedonnées, 1 bit de stop, sans parité.
 
Lorsqu'on lui envoie le message "XEA 0" (suivi d'un retour-chariot, c'est à dire lecaractère 13), il fait la mesure sur l'entrée analogique 0, et envoie le résultat sous laforme d'un nombre entre 0 et 255, suivi d'un retour-chariot.
 
Matlab utilise facilement la liaison RS232
 
Matlab a directement des fonctions de gestion RS232. Par exemple le programmesuivant initialise le port sériel Com2: à 9600 bauds, 8 bits de données, 1 bit de stop, etavec le retour chariot ("CR" = caractère 13) comme terminateur de ligne d'instruction.
 
% essai d'orphy directement avec matlab
 
s=serial('com2','baudrate',9600,'databits',8,'stopbits',1,'Terminator','CR')
 
% C'était l'initialisation
 
fopen(s)
 
fprintf(s,'XASC')
 
%c'était pour indiquer à Orphy de communiquer en mode ASCII
 
fprintf(s,'XSA 200')
 
%c'était pour fixer la sortie analogique à 200
 
fprintf(s,'XEA 1')
 
%on envoie les caractères comme on écrit dans un fichier : icilecture de l'entrée analogique 1
 
x=fgetl(s)
 
%c'était la lecture de la réponse
 
disp(strcat('l''entrée analogique 1 vaut :',x))
 
disp(strcat('ce qui correspond à ',num2str(str2num(x)*5000/255),'millivolts'))
 
fclose(s)
 
delete(s)
 
clear s
 
Par la même méthode, on doit pouvoir communiquer avec toutes sortes demultimètres, oscilloscopes, thermomètres, luxmètres, pHmètres... ayant une sortieRS232.
 
On doit aussi pouvoir faire communiquer deux ordinateurs entre eux, ou biencommuniquer avec un minitel ou un modem...
 
Scilab a besoin de pilotes externes pour la communication sérielle
 
position du problème
 
Tel quel, Scilab est incapable de communiquer par voie RS232.
 
En regardant la documentation, il semblerait que Scilab puisse utiliser des fonctionsextérieures écrites dans un "vrai" langage de programmation, par exemple Fortran ouC.
 
Malheureusement, cette documentation est très confuse, et je n'ai pas réussi à faire laliaison avec des fonctions extérieures. En particulier, pour la version fonctionnant sousWindows, il devrait être possible d'utiliser des bibliothèques à liaison dynamique(DLL), que l'on peut programmer en C++ ou en Delphi, mais j'ai échoué.
 
 
Comment faire pour lui faire échanger des informations avec le monde extérieur, enparticulier avec des appareils de mesure ?
 
Principe général de la solution envisagée : des fichiers
 
La solution la plus simple que j'aie trouvé consiste à utiliser d'autres programmes, quel'on pourrait qualifier de "pilotes" ou "drivers", qui font l'échange de données par fil àla place de Scilab, et qui lui communiquent les informations par de petits fichiers.
 
Par rapport aux vieilles versions de MS-DOS, Windows n'a pas comme seulavantage l'utilisation de polices de caractères de toutes les formes et de toutes lestailles. Un intérêt souvent méconnu est le fonctionnement en multi-tâches
.
 
Ainsi, on peut lancer plusieurs programmes simultanément : Windows répartit letemps d'utilisation du microprocesseur entre ces divers programmes, qui s'exécutent enmême temps. Bien sûr, lorsque plusieurs programmes fonctionnent simultanément,chacun d'eux travaille moins vite que s'il était seul.
 
On peut donc imaginer de petits programmes dont le rôle unique serait d'échanger desdonnées avec un appareil extérieur par voie sérielle. Ils liraient les données à envoyerdans un fichier spécialisé (par exemple "envoi.txt"), et écriraient les données reçuesdans un autre fichier spécialisé (par exemple "arrivee.txt").
 
Comme Scilab peut lire et écrire dans les fichiers, par cet artifice, il serait capabled'envoyer et de lire des données par la voie RS232.
 
Un exemple en turbo-pascal de "pilote" gérant la communication RS232
 
Le programme ci-dessous utilise l'unité ucomm, permettant la communication RS232.Il existe de nombreuses unités de ce type dans le domaine public.
 
program transfert;
 
uses dos,crt,ucomm;
 
var fichenvoi,ficharrivee:text;
 
carlu:char;
 
nomarrivee,nomenvoi:string;
 
function fileExists(var s : string) : boolean;
 
begin
 
fileExists := fSearch(s, '') <> '';
 
end;
 
begin
 
{$I-}
 
clrscr;
 
nomarrivee:='arrivee.txt';
 
nomenvoi:='envoi.txt';
 
assign(fichenvoi,'envoi.txt');
 
assign(ficharrivee,'arrivee.txt');
 
commserinit(vitesse9600,donnee8,
 
stop1,sansparite,port2);
 
repeat
 
if fileexists(nomenvoi)
 
then begin
 
assign(fichenvoi,nomenvoi);
 
reset(fichenvoi);
 
if not eof(fichenvoi)
 
then begin
 
while not eof(fichenvoi)
 
do begin
 
read(fichenvoi,carlu);
 
commserecrit(port2,ord(carlu));
 
end;
 
close(fichenvoi);
 
end;
 
erase(fichenvoi);
 

Activity (7)

You've already reviewed this. Edit your review.
1 thousand reads
1 hundred reads
slofrahman9381 liked this
slofrahman9381 liked this
Triki Bilel liked this
Emna Mahersi liked this
bmmostefa liked this

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->