Bonjour/Bonsoir à tous,
Actuellement alternant en BTS électrotechnique,
j'ai pour projet de faire communiquer un SOFREL S550 avec un SCHNEIDER ATV 312
par l'intermédiaire d'une carte SOFREL RS485A et le port MODBUS de l'ATV 312 afin de piloter des pompes (moteurs) essentiellement en marche avant avec une surveillance du couple (si seui haut couple atteint = faire tourner les pompes en marche arriere pendant 2 min )
voici un petit synoptique :
J'ai traduis la documentation des variables modbus de l'ATV 312 Schreier en français.
On m'a dit que dans mon programme, dans un premier temps, je dois intégrer sa :
COM MOBUS SOFREL vers ATV 312
- Bernardo59
- Dieu du process
- Messages : 957
- Inscription : 20 oct. 2015, 05:48
- Localisation : Nimes
Re: COM MOBUS SOFREL vers ATV 312
Bonjour,
Avec les images, c'est mieux...
Avec les images, c'est mieux...
Re: COM MOBUS SOFREL vers ATV 312
les images ne s'affichent pas?
lien direct de l'image 1 : https://zupimages.net/up/20/09/h4lr.png
image 2 : https://zupimages.net/up/20/09/ccxb.png
lien direct de l'image 1 : https://zupimages.net/up/20/09/h4lr.png
image 2 : https://zupimages.net/up/20/09/ccxb.png
- itasoft
- Mi homme - Mi automate
- Messages : 7037
- Inscription : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: COM MOBUS SOFREL vers ATV 312
slts,
Les commandes se font par écriture de valeur dans le mot de commande du variateur CMD registre ModBus @8501
valeur H,000F pour marche H,0007 pour arrêt
Les commandes se font par écriture de valeur dans le mot de commande du variateur CMD registre ModBus @8501
valeur H,000F pour marche H,0007 pour arrêt
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: COM MOBUS SOFREL vers ATV 312
On ma dit de convertir le Hexadecimal en decimal dans mon programme sofrel,
je ne comprend pas pourquoi je dois y convertir en décimal...// Commande démarrage du variateur de la pompe 1
IF Var_1_Pret and Cmd_Ppe_1 then
MOT_VAR_1 := REAL(Cmd_Marche_Var_1)*15.0;
END_IF;
// Commande arret du variateur de la pompe 1
IF Var_1_Active and (Def_Couple_Var_1 or not Cmd_Ppe_1) then
MOT_VAR_1 := REAL(Cmd_Arret_Var_1)*7.0;
END_IF;
// Commande arriere du variateur de la pompe 1
IF Var_1_Pret and Def_Couple_Var_1 and Cmd_Ppe_1 and not Var_1_Active
(* et consigne temporisation arriere *) then
MOT_VAR_1 := REAL(Cmd_Arriere_Var_1)*2063.0;
END_IF;
Re: COM MOBUS SOFREL vers ATV 312
Bonsoir getzed,
Tu dois absolument déclarer une variable d’automatisme adressé dans ton Sofrel. Deux formats existent seulement TS (tout ou rien) ou TM (real).
Les autres formats existent dans l’atelier d’automatisme mais malheureusement il faudra les convertir pour les adresser donc en real.
De ce fait ta variable est et restera en décimal. Le choix 8, 16, 32, 64 bits s’effectue dans les blocs de lecture ou d’écriture vers ton variateur.
Bon courage
Tu dois absolument déclarer une variable d’automatisme adressé dans ton Sofrel. Deux formats existent seulement TS (tout ou rien) ou TM (real).
Les autres formats existent dans l’atelier d’automatisme mais malheureusement il faudra les convertir pour les adresser donc en real.
De ce fait ta variable est et restera en décimal. Le choix 8, 16, 32, 64 bits s’effectue dans les blocs de lecture ou d’écriture vers ton variateur.
Bon courage
Re: COM MOBUS SOFREL vers ATV 312
Bonjour,
Je me doute que mon commentaire arrive un peu tard, mais espère qu'il éclaircira les choses pour les autres, sachant qu'il est difficile de trouver de l'aide sur la programmation Sofrel sur internet.
le problème n'est pas temps l'hexadécimale, que le fait que le type entier (un nombre en hexadécimal est de type entier, ou registre) n'existe pas pour les variable indexées (celles créées en dehors de l'atelier d'automatisme). Donc tu pourrais utiliser l'hexadécimal, mais en l'associant à une conversion vers réel pour l'écrire dans un dataxxx qui sera envoyé via ta carte de COM RS485.
Rien ne t’empêche d'écrire :
pour rappel, il est possible d'extraire des bits de mots sans utiliser de formules ou l'atelier d'automatisme, en créant une information interne de type "recopie logique"; on indiquera alors le numéro de l'information contenant le bit à extraire et le numéro de ce bit (entre 0 et 31); On prendras bien sur garde à mettre les tempo d'apparition et de disparition à 0 au risque d'avoir de mauvaises surprises avec l'automatisme; à moins que vous en ayez réellement besoin (par défaut toujours à 5 secondes !); il reste toujours possible de créer une autre copie de cette même information en la temporisant (le nombre de copie d'une information n'est pas limité); la recopie logique permet : l'inversion logique, la temporisation et l'extraction de bits; alors que la recopie numérique permet d'appliquer une loi de conversion Affine; pour toute autre loi de conversion, il vous faudra passer par une table de conversion.
d'autre part, vous pouvez créer votre programme afin de reconstituer l'état du variateur selon le diagramme d'état que tu a indiqué en convertissant le mot d'état que tu récupère depuis le variateur en entier à l'aide de la fonction :
Dint := ANA(Real); //conversion analogique/Numérique = Réel/Entier)
Une fois le mot de commande créé ; la commande REAL, que tu connais, fera le travail inverse.
Je me doute que mon commentaire arrive un peu tard, mais espère qu'il éclaircira les choses pour les autres, sachant qu'il est difficile de trouver de l'aide sur la programmation Sofrel sur internet.
le problème n'est pas temps l'hexadécimale, que le fait que le type entier (un nombre en hexadécimal est de type entier, ou registre) n'existe pas pour les variable indexées (celles créées en dehors de l'atelier d'automatisme). Donc tu pourrais utiliser l'hexadécimal, mais en l'associant à une conversion vers réel pour l'écrire dans un dataxxx qui sera envoyé via ta carte de COM RS485.
Rien ne t’empêche d'écrire :
Code : Tout sélectionner
IF Var_1_Pret and Cmd_Ppe_1 then
MOT_VAR_1 := REAL(Cmd_Marche_Var_1)*REAL(16#0F);
END_IF;
d'autre part, vous pouvez créer votre programme afin de reconstituer l'état du variateur selon le diagramme d'état que tu a indiqué en convertissant le mot d'état que tu récupère depuis le variateur en entier à l'aide de la fonction :
Dint := ANA(Real); //conversion analogique/Numérique = Réel/Entier)
Une fois le mot de commande créé ; la commande REAL, que tu connais, fera le travail inverse.
Automaticien dans le domaine de l'eau depuis plus de 10 ans.
Je travail sur les gammes TSX et M340, ainsi qu'avec les IHM Schneider.
Je travail également avec des systèmes de télégestion.
Je travail sur les gammes TSX et M340, ainsi qu'avec les IHM Schneider.
Je travail également avec des systèmes de télégestion.