Communication serie avec variateur eurotherm ssd590 (protocol ei - bisynch ascii)

Description

Bonjour,
Voici une classe tres simple pour communiquer avec les variateurs eurotherm (nouveau nom SSD Drive).
Les essais ont ete fait sur un 590, mais les fonctions sont valable aussi sur 590, 590+, 690+, 605,650v, & 584SV et sans doute d'autre.
J'ai utilise le protocol EI - Bisynch sur le port 3 (RS232 d'origine). Mais cela fonctionne aussi sur le port 2 RS422, port le port 1 RS485, il faut prendre en compte que l'on va recevoir ce que l'on a emis.
On a un programme d'exemple de toutes les fonctions de communication, il faut choisir le mnemonic et l'adresse du variateur.
Dans la classe il y a aussi des fonctions classique pour la communication serie qui ne sont pas liees au protocol de communication. Si des choses ne sont pas claire ou si vous avez des remarques n'hesite pas.

Source / Exemple :


Voici les fonctions de la classe (
GID Group ID du variateur, UID Unit ID, C1 partie gauche du mnemonic, C2 partie droite du Mnemonic)
- Recoit n byte sur la liaison serie et returne si la lecture est effectue
   bool  ReceptionNchar(unsigned char* tampon,unsigned long ncount);
- Renvoie le nombre de byte dans le tampon de reception
   DWORD CheckNBChar();
- Emet n byte sur la liaison serie et renvoie l'etat d'envoie
   bool  EmissionsNchar(unsigned char* trame,unsigned char longueur_chaine);
- Sous fonction d'analyse de la reponse suite a une demande de lecture 
   short ResponseOfReadFromSSD590(unsigned char *C1,unsigned char *C2,char *Str_Value, bool CheckMnemo);
- Lit un Mnemonic dans le variateur. La valeur lu est retourne dans Str_Value et la fonctionne retourne l'etat de la lecture
   short ReadFromSSD590(unsigned char GID,unsigned char UID,unsigned char C1,unsigned char C2,char *Str_Value);
- Demande le meme Mnemonic que dans la derniere demade de lecture
   short PollingParameterSSD590(unsigned char C1,unsigned char C2,char *Str_Value);
- Va lire les Mmemonic qui suivent la dernier demande de lecture.
   short SequentialPollingSSD590(unsigned char *C1,unsigned char *C2,char *Str_Value);
- Ecrit une valeur dans le variateur.
   short WriteToSSD590(unsigned char GID,unsigned char UID,unsigned char C1,unsigned char C2,char *Str_Value);
- Ecrit une valeur dans le variateur sans specifier son adress, soit en fait le dernier variateur interroge.
   short WriteToSSD590WithoutAdress(unsigned char C1,unsigned char C2,char *Str_Value);
- Lit le Menmonic sur les erreurs de communication
   short ReadErrorFromSSD590(unsigned char GID,unsigned char UID,char *Str_Value);
- Renvoie un message d'erreur pour un code d'erreur donne
   char* ConvertErrorMSGSSD590(char *Str_Error);
- Remise a zero du registre d'erreur
   short ResetErrorFromSSD590(unsigned char GID,unsigned char UID);
- Calcul le BCC (somme en Xor)
   char  CheckSumBCC(unsigned char* tampon,unsigned char ncount);
- compare le BCC calcule avec celui recu
   bool  TestCheckSumBCC(unsigned char* tampon,unsigned char ncount);
- configuration du port Serie
   bool  SetUp(char * com, DWORD vitesse, BYTE taille,BYTE parite, BYTE stop,DWORD inqueue,DWORD outqueue);

Conclusion :


Si j'ai le courage je ferai la meme chose, mais avec un thread et les evenements. Pour eviter la boucle d'attente de reception.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.