Projet Protocole Rs485 Huanyang 2,2kw

  • Auteur de la discussion carnage
  • Date de début
C

carnage

Apprenti
Bonjour,

Je cherche à communiquer avec ce variateur via l'interface Rs485 en mode terminal.

Il y a juste un truc que je ne comprends pas dans le manuel ou même en parcourant en long en large et en travers notre ami internet.

Je comprends le protocole, qu'il soit en mode RTU ou ASCII, y compris le calcul du LRC ou du CRC ...

Mais dans les exemples founies, je ne vois pas où est inclus le numéro du paramètre que je souhaite modifier.

Exemple en Ascii, vu dans le manuel :

For example: write 30.00Hz to inverter of 01(write to PD003)

01 02 03 00 0B B8 37

01 pour l'adresse du variateur
02 pour la fonction d'écriture
03 pour la longueur du paramètre Data
00 0B B8 pour le 30.00Hz
37 pour le LRC

Quelque chose m'échappe...
Où est-ce qu'il est dit au variateur que je souhaite modifier le paramètre PD003 ?
J'ai du mal interpréter le 3ème paramètre ?

En fait, je possède plusieurs moteurs et je souhaite reprogrammer mon variateur via RS485 pour modifier à la volé les paramètres de Tr/min, amperage, fréquence, etc ... pour chaque moteur.
M'évitant ainsi de parcourir le menu en facade pour chaque changement moteur.

Je préfère le connecter à mon téléphone via adaptateur USB -> RS485, et injecter les commandes par terminal.

Merci pour votre aide.
 
O

osiver

Compagnon
Vous pouvez nous dire de quel manuel vous tirez ça ? il y a un PDF ?
Le seul que j'ai pour le RS485 des huang est pour la série HuangGT mais ça diffère pas mal :shock:
 
O

osiver

Compagnon
Ok, d'après moi, la fonction écriture de fréquence est spécifique : fonction 05.
De ce que je comprends c'est que lorsqu'on utilise les fonctions 01 ou 02, il devrait y avoir auparavant une sélection de fonction ou la dernière utilisée.
 
O

osiver

Compagnon
Avez-vous essayé de lire des données par exemple status avec la fonction 04 ?
 
C

coredump

Compagnon
Je pense que tu n'es pas le seul a te poser la question:

En regardant le source de https://github.com/itschleemilch/huanyango/blob/master/v1/vfdio/inverter.go
On voit que FUNC=5 c'est pour écrire la fréquence, le paramètre c'est 0xBB8=3000, soit 30.00 Hz
FUNC=3 c'est pour ecrire le controle
FUNC=4 c'est pour lire un controle
Pour FUNC 1 et 2 c'est pas clair du tout.
 
C

carnage

Apprenti
Ça serait une erreur dans le manuel.

Si je comprends bien il devrait y etre écrit :

01 02 03 03 0B B8 (CRC)

Au lieu de

01 02 03 00 0B B8 (CRC)

Après un tour sur un forum et relecture du manuel, le format est plus évident.

ADDR 02 LEN FUNC Data

Le manuel n'est pas intuitif, il y a cette erreur 00 au lieu de 03
Et le mot FUNC est utilisé à 2 endroits différents de la trame ...

ADDR 02 LEN (FUNC Data) CRC

FUNC Data est en fait le DATA visible dans le tableau 3.1 du manuel, page 56.


J'essaie ce soir, à commencer par la fonction Read qui effectivement m'a permis de mieux comprendre leur erreur.

J'espère que cette explication sera clair pour les suivants qui tomberont dessus.

Merci !
 
O

osiver

Compagnon
Je suis en train d'essayer sur un que j'ai mais je ne reçois rien de la liaison RS485.
Je suis sûr de l'interface car j'ai ouvert 2 connexions (fenêtres puTTY) avec 2 interfaces (rs485->USB) et je vois ce que que j'envoie de l'une à l'autre.
Vous avez pu communiquer avec le VFD ? :smt017
 
A

AlliPapa

Compagnon
Bonjour @carnage

Désolé de pouvoir t'aider ! j'aimerai juste connaitre l' appli terminal que tu utilise sur ton mobile et le type de l'adaptateur ( µ usb vers rs485)

Merci d'avance ! :-D
Allipapa
 
C

carnage

Apprenti
Je n'ai pas pu tester ce soir finalement...

L'adaptateur :

Waveshare Industrial USB to RS485 Converter with Original FT232RL Embedded Protection Circuits Resettable Fuse, ESD Protection, and TVS Diode, etc https://amzn.eu/d/g2ZwCXB

L'appli android :


Il faut aussi un adaptateur USB -> USB-C

Je ferai un retour quand j'aurai eu le temps de tester.
 
O

osiver

Compagnon
@AlliPapa pour moi, c'est comme celui-ci, basé sur un CH341 :

J'arrive maintenant à parler au VFD en RTU avec Hterm.
La commande 01 02 03 00 0B B8 7F0C retourne 01 82 01 00 A060
La réponse semble indiquer (82) que la commande 00 n'est pas reconnue.
Le A060 est bien le CRC16-modbus de 01 82 01 00 (avec inversion des octets) voir

 
O

osiver

Compagnon
J'ai pu lire la tension du bus DC par 01 04 01 04 404A => 0CE4 = 3300 (sans doute 330,0V)
Et aussi la fréquence de consigne : 01 04 01 00 4189 => 1388 = 5000 (50,00Hz)
8-)
 
C

carnage

Apprenti
Essaie celle ci si tu veux :

01 02 03 03 0B B8 8F 0C

J'ai calculé le CRC

Ca devrait modifier PD.003 à 30.00hz
 
O

osiver

Compagnon
YES !! Ça marche ! PD003 est passé à 30 ...
Pour info, la réponse a été : 01 02 03 03 0B B8 8F 0C
:supz:
 
O

osiver

Compagnon
Je peux le démarrer/arrêter après avoir mis 2 dans PD002 (par rs485 ou clavier)
RUN
01 03 01 01 3188
STOP
01 03 01 08 F18E
 
Dernière édition:
C

carnage

Apprenti
Super !!!

ADDR 02 LEN (FUNC Data) CRC

Il n'y a plus qu'à gérer le fait que LEN vaut 2 ou 3 ... suivant la taille de la variable Data ... si j'ai bien compris.
 
O

osiver

Compagnon
Quel est ton objectif @osiver ?
Aucun dans l'immédiat, l'expérimentation, la connaissance :wink:
Il n'y a plus qu'à gérer le fait que LEN vaut 2 ou 3 ... suivant la taille de la variable Data ... si j'ai bien compris.
Bon, là je pense avoir compris quelque chose.
Le manuel est très mal écrit, en plus en mauvais Anglais. Si on devait écrire en Chinois sans doute que ça ne serait pas terrible non plus. Bref ...
Habituellement, lorsqu'un protocole prévoit d'indiquer une longueur de message il peut inclure ou non la longueur dans le calcul du nombre d'octets. Dans le premier cas LEN = longueur message réel +1 et LEN = longueur du message réel dans le second cas.
Ici la mauvaise traduction (rédaction ?) ajoute une confusion entre DATA (le message réel) et données du paramètre.

Le nombre d'octets (LEN) est toujours le nombre d'octets entre LEN et CRC.

Il y a deux groupes d'instructions à considérer : les paramètres (FUNC 1 et 2) et les commandes (FUNC 3 et 4) + la fonction 5 à évaluer.

On a donc pour le paramètre PD003 à 30Hz

ADDR = 01 (cf. PD163)
FUNC = 01 (read) ou 02 (write)
LEN = 03
03 0B B8 (N° du paramètre + 2 octets valeur du paramètre)
CRC

Pour la lecture / écriture des autres valeurs comme la tension DC, LEN =1 car il y a juste un octet à fournir.
Lecture DC :
ADDR = 01
FUNC = 04
LEN = 01
04 => tension DC
CRC

Commandes RUN/STOP :
ADDR = 01
FUNC = 03
LEN = 01
01 => bit RUN ou 08 => bit STOP (ATTENTION : pour les commandes c'est la valeur binaire du bit qui compte)
CRC
 
Dernière édition:
O

osiver

Compagnon
Concernant la fonction 05, il faut mettre PD002 à 2 et c'est la valeur de fréquence envoyée par la fonction 05 qui devient la consigne de fréquence.
ex :
01 05 02 15 70 B7B8
va mettre la fréquence de consigne à 54,88Hz
Par contre, je ne vois pas où cette valeur est mémorisée, car on la trouve affichée en mode stop, c'est le set frequency du paramètre PD171.
Et PD003 ne bouge pas
8-)
 
Dernière édition:
O

osiver

Compagnon
La fonction 8 semble retourner simplement ce qu'on lui envoie, elle accepte même plus de 3 octets comme ici :
01 08 05 FF 55 FF 55 FF 42AA
:wink:
 
N

nitocle

Apprenti
Salut,
c'est une obligation de parler en hexa au vfd ? Sinon, utiliser python et les bibliothèques modbus vous simplifierait grandement la vie, au moins pour comprendre le fonctionnement.
En plus, dès qu'on a compris, on veut faire le developpement d'un petit programme d'automatisation du travail d'un moteur, donc autant y
aller directement.....
 
O

osiver

Compagnon
c'est une obligation de parler en hexa au vfd ?

Pour le mode RTU il semble que oui.
Par contre il y a un mode ASCII mais je ne l'ai pas encore exploré.
Globalement, ça me semble du modbus mais arrangé à leur sauce
:shock:
 
N

nitocle

Apprenti
Pour ce que j'en ai vu, le hy (ancienne version du soft désormais) fonctionnent en RTU et en ASCII, y compris avec modbus.
C'est d'ailleurs modbus qui sert d'interpreteur de commande.
Modbus est un standard de fait et non une norme, chacun l'implémente un peu comme il veut.....
je n'ai jamais eu de pb de commande non reconnue sur Nflixin
 
O

osiver

Compagnon
En mode ASCII, ça donne ceci pour par exemple la lecture de la consigne de fréquence :
:01040100(FA)
Réponse :
:01403001570(73)
C'est plus ou moins pareil, ce sont les caractères hexa transmis en ASCII :???:
 
Dernière édition:
N

nitocle

Apprenti
Normal, RTU et Ascii doivent donner les mêmes réponses.....sinon, il y a un gros pb.
l'usage des biblio de fonctions simplifie beaucoup les choses....
les commandes 1 à6 correspondent à une actions (lecture ou écriture) sur des élements typés (coils/registers)
coils = bobine (un élemnt binaire 0 ou 1) certains sont modifiables
regsiter = registre, élément numérique, cela correspond à un paramétres avec sa valeur, certains ne sont pas modifiables
 
O

osiver

Compagnon
Normal, RTU et Ascii doivent donner les mêmes réponses.....sinon, il y a un gros pb.
Oui, bien sûr !
Ce que je voulais dire c'est que ça ne change pas fondamentalement le raisonnement ou la structure des messages.
Il y a cependant quelques avantages et inconvénients au mode ASCII
- on peut le transmettre même avec mot de 7 bits, tous les caractères sont imprimables. Bien que ce ne soit pas le cas ici.
- ayant un caractère de start ":" et un CRLF à la fin il n'y a pas la contrainte de blanc entre les messages et d'absence de blanc à l'intérieur des messages comme avec le mode RTU.
MAIS il est bien plus bavard, de 2 à 3 fois
 
S

speedjf37

Compagnon
Bonjour,

La gestion des vfd Huanyang est intégrée dans linuxcnc depuis pas mal de temps.
J'ai modifié et compilé il y a longtemps un driver .


il y a différent modèles:

un exemple de code ici

This Huanyang VFD driver has been merged into LinuxCNC as of 2.7.0

JF
 
N

nitocle

Apprenti
Bonsoir,
j'avais repéré ce dev lors de mes recherches pour le projet "1 vfd pour N moteurs"
mais je n'ai pas apporfondi car l'approche CNC est très différente de la mienne.
J'ai 2 questions :
Aurais-tu un dev de driver pour les XSY AT ? (modèle fréquent mais mal documenté, ca m'aiderait .....beaucoup)
Ce driver HY est-il capable de gérer la dernière version de soft sur les HY ?
C'est sympa de savoir qu'il y a des solutions libres dispo !
JF
 

Sujets similaires

T
Réponses
8
Affichages
1 462
Triplebill
T
C
Réponses
29
Affichages
7 935
CNC watchmaking
C
Haut