Cnnexion à la balance Mettler Toledo IND310 sur port ethernet (RJ45)

Signaler
Messages postés
7
Date d'inscription
lundi 19 avril 2010
Statut
Membre
Dernière intervention
8 juin 2010
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour à tous.
"L’histoire se répète..."
Comme Mapser (SAMEDI 17 OCTOBRE 2009 A 19:17:31 | VB.NET ET BALANCE METTLER TOLEDO), j’ai à charge de développer une application que communiquerait avec une balance Mettler Toledo IND310.
Mon premier problème est de savoir comment récupérer des données exploitables contenues dans la balace pour pouvoir les traiter par la suite en VB6. La ballance est connectée à l’ordinateur par une prise RJ45 donc 8 voies.
D’après le manuel, les données sont transmises par paquet de 16 ou 18 bites dans un cadre ASCII à 10 bits comprenant
• 1 bit de départ
• 7 bits de données
• 1 bit de parité paire
• 1 bit d’arrêt
J’ai lu aujourd’hui que ManuAntibes avait aussi le même cas (MERCREDI 23 MAI 2007 A 22:17:19 | CONNEXION BALANCE METTLER TOLEDO). Quant à moi, je n’ai aucune bilbiothèque ( pas de .dll connu pour commencer). J’ai déjà pataugé pendant dix jours en essayant de comprendre et si possible de modifier l’analyseur de protocole de TheOCool. C’est après avoir lu Mapser et ManuAntibes que les idées s’éclaircissement.
Je suis convaincu que Casy, Jack, Adn56 et bien d’autres ont des pistes fiables pour la solution.
Ainsi j’ai besoin de vos conseils.
Merci.
A voir également:

12 réponses

Messages postés
14779
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
3 avril 2021
154
Bonjour,

RJ45, càd par réseau Ethernet ?

Si oui, il faut utiliser un socket (System.Net.Sokets.TcpClient ou UdpClient)

Ensuite il faut que tu lise les données, avec des masques de bits (AND) et des décalages ( << >> )

Quel lien entre la connectique (RJ45) et le nombre voies (8) ?

Pour plus de précision, j'attends ton retour.

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut

Ce qui m'épate, c'est que tu parles de prise RJ45, dédiée à l'ethernet, puis que tu parles de paramètres de communication propres aux liaisons séries.
Pas bien compris non plus l'analogie entre la RJ45 et le nombre de voies.
Avant de poursuivre, il faut éclaircir ce point.

Autre chose à maitriser :
Un Bit, c'est le plus petit élément : Valeur 0 ou 1
Un Byte (aussi appelé octet), c'est 8 bits : Valeurs de 0 à 255 (ou &h00 à &hFF en hexa).
Un caractère ASCII est un chiffre codé sur un octet.

Alors, quand tu parles de "paquet de 16 ou 18 bites", parles-tu de bytes ?
Si oui, c'est que les messages que tu vas recevoir sera composé de 16 ou 18 chiffres (octets) : Reste à savoir ce qu'il vont représenter ...

La difficulté avec ce genre d'appareil, c'est qu'on ne sait jamais (sauf quand on a une doc bien faite) sous quel format sont expédiées les données : Représenteront-elles des pesées en unité physiques ou bien d'une proportion de l'échelle.
Cerise sur le gâteau : ce genre d'électronique utilise souvent le format little-endian (avec mantisse) pour envoyer des valeurs numériques à virgule.
Si c'est le cas, ce ne sera pas du gâteau à transformer.
J'avais fait quelques essais il y a quelques temps, si tu as besoin, j'ai un module VB avec les bases.

Résumé :
Si c'est de la liaison série (composant MSComm), apprends à gérer les réceptions (voir l'aide et les sources du site)
Si c'est de l'Ethernet, utilise le composant Winsock et apprends à gérer les connexions au travers des codes du site
Une fois que tu auras réussi à te connecter, analyse le type de données reçues pour faire le rapprochement avec les mesures indiquées.

Lit bien la doc, il y a surement des indices.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
7
Date d'inscription
lundi 19 avril 2010
Statut
Membre
Dernière intervention
8 juin 2010

Merci Nhenry
Pour le lien entre la connectique (RJ45) et le nombre voies (8) c’est le fait que je me suis référé à Mapse(SAMEDI 17 OCTOBRE 2009 A 19:17:31 | VB.NET ET BALANCE METTLER TOLEDO )
Et à l’intervention de Casy qui a dit : « Il peut d'ailleurs ne pas s'agir d'une prise RJ45 mais d'une RJ46 (si ma mémoire est bonne), même format mais 10 voies au lieu de 8 pour une RJ45. »(SAMEDI 17 OCTOBRE 2009 A 19:38:39 | RE : VB.NET ET BALANCE METTLER TOLEDO)

Effectivement l’indicateur et l’ordinateur sont reliés par réseau Ethernet.

Merci Jack.
Pour ton premier paragraphe, la réponse est que l’indicateur et l’ordinateur sont reliés par réseau Ethernet.
Merci pour la précision bit, byte et caractère ASCCI.
quand tu parles de "paquet de 16 ou 18 bites", parles-tu de bytes ?
Quand je parle de "paquet de 16 ou 18 bites", il est question de bit. En effet, j’avais littéralement copiés l’information sur le manuel sous format PDF. Voici une autre partie copiée : « Vous pouvez utiliser le mode de sortie en continu du terminal IND310drive pour
envoyer en continu les données de pesage et les informations d'état de la balance
vers un dispositif à distance tel qu'un ordinateur ou un affichage à distance.
Le mode continu peut être défini pour le port COM1 ou COM2. Il peut également
l'être sur COM1 avec somme de contrôle ou COM2 avec somme de contrôle. Une
chaîne de données sera générée après chaque cycle A/N soit environ 10 fois par
seconde. Le format est fixe, sauf pour le débit en baud, la parité, le flux de
données (Xon, Xoff) et l'interface. Les données sont transmises par paquet de 16
ou 18 bites dans un cadre ASCII à 10 bits comprenant :
• 1 bit de départ
• 7 bits de données
• 1 bit de parité paire
• 1 bit d’arrêt
Les données de poids non signifiants et les chiffres de données de tare seront
transmis sous forme d'espace. Le mode de sortie en continu est compatible avec
les produits METTLER TOLEDO nécessitant des données de pesée en temps réel. Le
tableau e-1 indique une sortie en continu.
Tableau E-1: Sortie de format en continu
État Pesée indiquée Poids tare
Caractère 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Données STX SWA SWB SWC MSD - - - - LSD MSD - - - - LSD CR CHK
Remarque A B C D E F
Remarques sur les formats en continu
A. Caractère ASCII de début de texte (02 hex) toujours transmis.
B. Mots d'état. Reportez-vous aux Tableaux E-2, E-3, et E-4 pour de plus
amples informations.
Manuel technique IND310drive
E-2
C. Poids affiché. Soit le poids brut soit le poids net. Six chiffres sans
point décimal ni symbole. Les zéros à gauche non significatifs sont
remplacés par des espaces.
D. Poids de la tare. Six chiffres pour les données de pesage de la tare.
Pas de décimale dans le champ.
E. Caractère de retour à la ligne ASCII <CR> (Hex 0d)
F. La somme de contrôle, transmise uniquement si activée dans la
configuration. La somme de contrôle permet de détecter les erreurs de
transmision de données. Le caractère de somme de contrôle
représente les 2 qui complètent les 7 bits de droite de la somme
binaire de tous les caractères précédant la somme de contrôle y
compris <STX> et <CR>. »

J’ai pris tout le paragraphe pour que vous ayiez une idée globale sur le format des données. Je voulais que vous ayiez une idée sur le format des données dès que j’aurai posé le problème, car vous aviez soulevé ce fait par votre intervention pour le cas de Mapser (SAMEDI 17 OCTOBRE 2009 A 20:11:28 | RE : VB.NET ET BALANCE METTLER TOLEDO )

Le point C parle de 6 chiffres qui représentent le poids. Je trouve que les données Représenteront des pesées en unité physiques. Des propos tels que : « J'avais fait quelques essais il y a quelques temps. » m’encouragent. J’ai besoin du module VB avec les bases dont vous avez parlé.
J’espère avoir davantage éclairci la situation.

Merci encore à Nhenry et à Jack.
Merci d’avance aux autres.
Messages postés
14779
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
3 avril 2021
154
Bonjour,

BAZENGE,

Comme Jack, je peine à comprendre, tu dis qu'ils sont relié par Ethernet et ensuite tu pares de bauds, bits de parité, de controle de flux Xon/Xoff, qui sont caractéristiques d'une liaison sérielle de type RS232 (ou 485 ou 422).

Ensuite, tu dis que la liaison a 8 voies en RJ45, ce ne sont pas des voies, mais des fils, qui forment 4 paires, donc 4 voies de communications max.

Puis tu dis que les données sont transmises par groupe de 16 à 18 bits, mais ensuite dans la doc, ils parlent de 18 caractères, j'ai du mal à suivre.

J'ai vraiment l'impression que ce n'est pas clair pour toi tout ça.

Voilà, je ne vois pas comment t'aider, les informations contradictoires m'empêchent de te donner une réponse plus fiable.

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Si ce PDF est en ligne sur internet, peux-tu passer le lien.
J'ai trouvé <ce lien (pdf)> qui semble correspondre (Page 30 et 31, paragraphe 4.2.2)

Ethernet - Série :
Ok, tu es connecté en Ethernet mais la doc dit qu'elle transmet les infos en continu sur des ports COM1 ou 2, et toutes les infos techniques qui suivent le confirment.

"bite" n'est pas un terme technique valide. C'est Bit ou Byte. Surement un problème de traduction --> Voir la même ligne dans la langue originale.

Pour moi, au vu des explications qui suivent et décrivent une des trames, ce sont des Bytes.
Caractère 1   2   3   4   5  6 7 8 9 10  11  12 13 14 15 16  17 18
Données. STX SWA SWB SWC MSD - - - - LSD MSD -  -  -  -  LSD CR CHK
- STX : Ascii 2 \ Il faudra donc découper les infos reçues en détectant un début
- CR : Ascii 13 / de trame avec "2" et une fin avec "13" + le byte de CheckSum
- CHK : (sécurisation des échanges) Checksum (XOR) de tous les bytes précédents (sur les 7 bits de chaque byte) - tu peux te passer de le calculer, mais tu risques de voir passer de fausses informations - tout dépend du degré d'exigence des infos que tu reçois.
- SWA, SWB, SWC te donneront des indications sur l'emplacement de la virgule, sur les témoins de signe, de surcharge, de mouvement ... : il te faudra savoir décomposer un byte en bit :
    Dim Bit6actif As Boolean
    Bit6actif CBool((monByte And 2^6) 2^6)
où 6 n'est pas le 6ème bit, mais le 7ème puisqu'on part toujours de 0
- Les bytes numérotés 5 à 10 définissent la pesée, sans virgule (voir SWA), point faible à droite
- Les bytes numérotés 11 à 16 définissent la tare, sans virgule (voir SWA), point faible à droite

Tu as tous les éléments en main.
Le module que je te proposais n'a aucun intérêt ici puisqu'il n'est pas question d'encapsulage little-endian.
A toi de programmer tout ça.
Familiarise toi avec la réception des trames (1), la détection de fin de trame avant de commencer à dépouiller les infos, découpage de chaque byte, décomposition des certains bytes en bits (2) afin de pouvoir afficher correctement les valeurs renvoyées (mises à l'échelle).
(1) Cherche des sources qui parlent de communication sur port série
(2) Cherche des sources qui parlent de conversion décimal, hexa, binaire

On pourra t'aider sur des problèmes liés au langage VB, mais c'est à toi de te former.
Si tu n'as aucune expérience en communication ni en VB et que tu ne veux pas y passer des semaines, fait appel aux professionnels de la programmation.

D'après ton IP (3), tu es vraiment au Congo ?
(3) les admins ont accès à certaines infos secrètes ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
7
Date d'inscription
lundi 19 avril 2010
Statut
Membre
Dernière intervention
8 juin 2010

Merci NHenry.
Je me rends compte que j'ai sûrement embrouillé la situation par les bribes d'information que j'ai transmises. Ce que je sais, c'est que l'indicateur est relié à l'ordinateur par un cable réseau. Peut être que la lecture de ce texte provenant du manuel pourra vous éclairer:

" L'écran de configuration Connexions affiche les affectations de port (COM1, COM2,
Ethernet canal 1 ou Ethernet canal 2) pour les flux de données suivants tels que
définis par les modèles respectifs ou par le format de rapport :
• Continu
• PTS63
• Multicontinu 1
• Multicontinus 2
• Multicontinu 1 a/c somme
contrôle
• Multicontinu 2 a/c somme
contrôle
• Continu a/c somme contrôle
• CTPZ
• Entrant
• Sortant
• Rapport
• Modèle 1
• Transitoire

Ethernet est disponible uniquement pour le téléchargement FTP. La configuration
d'Ethernet ne permet que l'adressage IP statique. Si le paramètre Client DHCP est
activé, les champs Adresse IP, Masque sous-réseau et Adresse de la passerelle
sont en lecture seulement. "

Merci.
Messages postés
7
Date d'inscription
lundi 19 avril 2010
Statut
Membre
Dernière intervention
8 juin 2010

Bonjour Jack.
En écrivant tout à l'heure pour répondre à l'intervention de NHenry, je n'avais pas encore lu votre intervention c'est maintenant que je vais lire votre intervention et je pourrai écrire.
Merci et à tout à l'heure.
Messages postés
7
Date d'inscription
lundi 19 avril 2010
Statut
Membre
Dernière intervention
8 juin 2010

Merci Jack.
Je ne sais pas si ce PDF est en ligne, il est enregistré sous : IND310_FTM_71207918_R4.PDF
Je l’ai eu dans le CD d’installation livré avec l’équipement Mettler Toledo IND310.
Il est certes vrai que pour moi les informations concernant la balance ne sont pas encore claires.
Cela est dû au fait qu’il n’était question que de construire une application sur la facturation.
C’est alors qu’il fut question de lire directement le poids depuis les informations livrées par la balance.
Du côté facturation, l’application roule sans problème, reste la lecture du poids, d’où le sujet actuel.
Deux points me poussent à suivre votre piste :
1. Vos explications sur une des trames
2. Votre phrase : « Tu as tous les éléments en main »
Ce qui justifie qu’il a quelqu’un quelque part qui comprend le mécanisme…
S’agissant du module que vous proposiez, je pensais que cela pouvait avoir les éléments de base.
Pour les conversions décimal, hexa et binaire même si je n’ai pas de source qui s’y rapportent, je pourrai construire des procédures mais là où j’éprouve des difficultés c’est au premier point comme vous l’avez dit : « La réception des trames, la détection de fin de trame avant de commencer à dépouiller les infos, découpage de chaque byte, décomposition des certains bytes en bits ».
Je dois avouer que vos interventions m’aident précieusement et que c’est pour moi une bonne formation.
Bien visé, je suis exactement au Congo.
Je m’emploie à Chercher des sources qui parlent de communication sur port série afin de suivre la piste que vous m’avez conseillé.
Vu la richesse de ces partages, je ne pourrai à un seule moment m’empêcher d’écrire pour une quelconque difficulté jusqu’à ce que j’atteigne le but.
Merci.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Apparemment, ce fichier n'existe pas dans les pages technico-commerciales de Mettler. Tu peux mettre toi même en ligne ce PDF, s'il apportent des renseignements supplémentaires de ceux fournis par la doc dont je t'ai donné le lien.

Pour la connexion Ethernet, là je sèche. Car il est facile d'établir une connexion avec un serveur sous TCP/IP ou sous UDP, mais une définition "Ethernet Canal 1 ou 2" ne me dit rien du tout, surtout qu'après tu parles du protocole FTP : je vois mal comment ça pourrait marcher.

Pour la liaison série, ils parlent de XON/XOFF : Cela veut dire que la comm peut fonctionner avec trois fils : émission-réception-commun : pas besoin de câbler les RTS-CTD-...

Quand tu auras fais fonctionner la liaison série (quand le Open du MsComm ne génèrera plus d'erreur), tu recevras des infos par ce port.
Pour voir comment être averti de l'arrivée de données et de la manière de les lire, consulte l'aide du composant MsComm et les sources du site qui parlent de liaison série.

Il te suffira de stocker ces infos dans un Buffer (sous forme String ou un tableau de Bytes) et d'analyser ces infos.
Puisqu'on sait qu'une trame commence par un 02 et se termine par un 13, il te sera facile de repérer qu'une trame est complète et prête à être analysée, byte par byte. Pour faire ces détections de 02 et 13, il te suffira de faire une boucle For-Next de recherche dans le Buffer.
Messages postés
7
Date d'inscription
lundi 19 avril 2010
Statut
Membre
Dernière intervention
8 juin 2010

Merci Jack.
Je m’emploie à rechercher la documentation sur MsComm pour commencer à travailer.
Toutefois, je verrai comment vous faire parvenir la documentation: IND310_FTM_71207918_R4.pdf
Messages postés
7
Date d'inscription
lundi 19 avril 2010
Statut
Membre
Dernière intervention
8 juin 2010

Bonjour.
J’ai commencé à construire une application avec MScomm la journée (quand j’étais à la carrière où se trouve le pont bascule). Seulement, l’erreur suivante :"Numéro de port non valide" était renvoyée pour la méthode :" MSComm1.PortOpen=True" que ce soit dans le cas de MSComm1.CommPort = 1 ou MSComm1.CommPort = 2
Comme depuis la source j’avais reçu l’information suivante : " CommPort : Cette méthode fixe ou retourne le port COM utilisé par le contrôle. La plupart des ordinateurs n’ayant qu’un ou deux ports COM, cette propriété vaudra donc le plus souvent 1 (port COM1: ) ou 2 (port COM2: )" http://grafikm.developpez.com/portcomm/
Je ne pouvais continuer. Je pris l’analyseur de protocole de TheCool que j’avais précédemment cité (contenant Winsock). Après l’avoir modifié, le constat est le suivant :
1. De fois plusieurs adaptateurs s’affichent sur la liste de combo1 mais lorsque le choix est porté sur la carte réseau appropriée, les infos sont reçues.
2. Ces infos précisent l’IP de l’indicateur de la balance comme IP source et l’IP de l’ordinateur comme IP de destination.
3. J’ai essayé d’enregistrer quelques infos reçues en hexadécimal :
C2 0A 08 1A 0C D6 00 E0 7C F3 11 30 08 00 45 00 00 30 00 00 40 00 40 06 B9 74 C0 A8 00 01 C0 A8 00 02 04 D2 0C 88 23 4A D5 17 6C 10 1F 72 70 12 16 D0 55 AD 00 00 02 04 05 B4 01 01 04 02 00

FF FF FF FF FF FF C2 0A 08 1A 0C D6 08 06 00 01 08 00 06 04 00 01 C2 0A 08 1A 0C D6 C0 A8 00 02 00 00 00 00 00 00 C0 A8 00 01 00

C2 0A 08 1A 0C D6 00 E0 7C F3 11 30 08 06 00 01 08 00 06 04 00 02 00 E0 7C F3 11 30 C0 A8 00 01 C2 0A 08 1A 0C D6 C0 A8 00 02 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 88 B0

C2 0A 08 1A 0C D6 00 E0 7C F3 11 30 08 00 45 00 00 28 15 07 40 00 40 06 A4 75 C0 A8 00 01 C0 A8 00 02 04 D2 0C 88 23 4A D5 18 6C 10 1F 73 50 11 16 D0 82 6F 00 00 88 88 88 88 88 88 B0

C2 0A 08 1A 0C D6 00 E0 7C F3 11 30 08 00 45 00 00 30 00 00 40 00 40 06 B9 74 C0 A8 00 01 C0 A8 00 02 04 D2 09 62 36 AB D8 F2 B9 3F 48 16 70 12 16 D0 CB C3 00 00 02 04 05 B4 01 01 04 02 00

C2 0A 08 1A 0C D6 00 E0 7C F3 11 30 08 00 45 00 00 28 E2 BE 40 00 40 06 D6 BD C0 A8 00 01 C0 A8 00 02 04 D2 09 62 36 AB D8 F3 B9 3F 48 17 50 10 16 D0 F8 86 00 00 88 88 88 88 88 88 B1
En étudiant l’application avec MScomm le soir, j’ai constaté que si je fixe le numéro de port à 9, je n’ai aucune erreur.
Mes questions sont les suivantes :
1. Puis-je continuer avec le projet ayant le contrôle MScomm en fixant le numéro à 9 ?
2. Devrais-je travailler avec un projet qui contient Winsock ?
3. Ces informations en hexadécimal sont elles le Buffer ?
- Si oui, j’ai essayé de chercher le debut de la trame avec :
For i = 0 To pktHeader.caplen
If cbuff(i) = 2 Then
End if
Next i
Ceci m’arrète à la valeur i 33. Or cbuff(33) est le dernier numéro de getDestIP dans le projet. Et effectivement, le numéro de l’IP de l’ordinateur doit être : 192.168.0.2 pour être connecté à l’indicateur (IP : 192.168.0.1). If cbuff(i) 13 Then n’existe pas. Peut être que je ne devais pas rechercher par la condition : If cbuff(i) = 2 ou If cbuff(i) = 13
- Si non : Y-a-t’il une possibilité de stocker les infos par cette application dans un buffer ?
4. Le poids qui s’affichait à l’indicateur fut 40 Kg. J’ai converti les infos en décimal sans trouver pour certaines le 40 ni le chiffre 4 suivi de 0.
5. Comment puis-je faire pour vous envoyer le manuel PDF que j’ai concernant la balance ?
Merci pour votre aide, sa valeur est largement estimable.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Première chose : il faut se mettre d'accord sur le type d'interface : Ethernet ou Série
Ethernet : Il faudra travailler avec WinSock, mais dans ce cas, je ne vois pas pourquoi la doc parlerait de paramétrage de liaison série
Série : Il faut connecter ton PC sur un des deux ports série de ta machine + bien configurer les vitesses

Les données que tu as collées ne ressemblent pas aux trames attendues.
On y voit bien un cycle avec "C2 0A 08 1A 0C D6" mais la longueur des données qui suivent n'est pas fixe.

Port série 9 : Ce n'est pas un port série matériel mais surement USB.
Il n'y a que toi qui peut savoir se qui est connecté à ton PC et qui a un rapport avec ta bascule.
Qu'as-tu branché - câblé ?
Si tu as câblé un port COM, quel brochage ? avec des connecteurs DB9 : 2-3-5 <--> 3-2-5 - Voir <ce site> et ne regarde que la colonne RS232.
La connectique RJ45 pour un port série n'existe pas sur un PC, par contre, tu peux la rencontrer sur des équipements comme des électroniques de bascule, oui.
Attention à ne pas faire de branchement aléatoire qui risquerait d'endommager le matériel !

Si c'est vraiment de l'Ethernet, tu peux t'aider de logiciels gratuits comme <Fiddler> ou <Ethereal Wireshark>.

Le revendeur du matériel ne pourrait-il pas t'aider dans ces problèmes de connectique ?

Pour partager des fichiers, suffit de taper "partager fichier" sur ton moteur de recherche favori : http://rapidechange.com/, pris au hasard. Tu n'auras plus qu'à donner l'URL de ton fichier.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)