Programmation avec VB 6

cs_moumou84 Messages postés 15 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 21 mai 2012 - 2 avril 2012 à 11:58
NHenry Messages postés 15050 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 mars 2023 - 17 mai 2012 à 15:23
salut,
je suis entrain de faire un logiciel en utilisant VB6 qui permet de récupérer les données de module LUCM vers le pc et voici notre environnement de travail:

***un PC ==> RS232 ==> convertisseur RS232/RS485==> module de communication ModBus LULC031 ==>unité de contrôle multifonction LUCM***

les deux unités de travail sont :
***relais de protection = unité de contrôle multifonction LUCM Tesys U
***module de communication ModBus LULC031
j'ai essayer de trouver la trame et un code pour la connexion RS232 mais lors de test j'ai pas trouvé aucune resultat je connais ça depuis le convertisseur car dans ce dernier existe le Tx et Rx
s'il vous est ce que quelqu'un peut m'aider dans le codage j'attend vos reponse et merci d'avance

24 réponses

NHenry Messages postés 15050 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 mars 2023 156
2 avril 2012 à 12:46
Bonjour,

Quel est ton problème ?
- Ouvrir une connexion Série ?
- Gérer le protocole Modbus ?
- Comprendre le protocole Modbus ?
- Savoir quelle commande et quel esclave pour gérer tout ça ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
cs_moumou84 Messages postés 15 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 21 mai 2012
2 avril 2012 à 14:17
bonjour Mr NHenry,

je suis entrain d'utiliser le protocole Modbus RTU, aussi j'ai essayé de manipuler la trame convenable en RTU et j'ai ouvri le port serie avec le codage en VB mais lors de test j'ai pas constaté aucune clignotant au sein de convertisseur ni de l'envoi Tx ni de reception Rx malgré que lors de compilation du programme aucune faute n'est trouvé et le cablage est bien fait donc j'ai pas comprndre d'ou vient l'erreur
s'il vous plait aidez moi et merci
0
NHenry Messages postés 15050 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 mars 2023 156
2 avril 2012 à 20:02
Bonjour,

Quel code utilises-tu ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
cs_moumou84 Messages postés 15 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 21 mai 2012
3 avril 2012 à 11:29
bonjour,

s'il vous plait est ce que tu peux me donner votre adresse mail pour t'envoyer mon travail dans une piéce jointe si tu peux et merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 220
3 avril 2012 à 11:46
Bonjour,
Pourquoi n'utilises-tu pas tout simplement Powersuite, normalement livré avec ton unité de contrôle multifonction et dont l'interface te permet d'en régler les paramètre à ta guise ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_moumou84 Messages postés 15 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 21 mai 2012
3 avril 2012 à 14:11
bonjour ucfoutu,

oui maintenant je suis entrain d'utiliser modscan d'ailleurs avant le lancement de ma nouvelle interface je débute la communication avec modscan pour la vérification et ça marche bien lorsque je lance mon interface il n'y a pas d'erreur dans le codage et il n'y a pas de résultat concernant la communication donc je pense que la faute se trouve dans la programmation s'il vous plait peut on m'envoyer votre adresse mail pour t'envoyer mon interface et merci
0
NHenry Messages postés 15050 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 mars 2023 156
3 avril 2012 à 19:25
Bonjour,

Tu peux la trouvée sur mon site (voir ma signature).

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
cs_moumou84 Messages postés 15 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 21 mai 2012
3 avril 2012 à 21:18
bonsoir Mr NHenry,

s'il vous plait j'ai pas trouvé ton adresse mail sur ton site
0
NHenry Messages postés 15050 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 mars 2023 156
3 avril 2012 à 22:00
Bonjour,

http://nhen0039.chez-alice.fr/fr/contact.php

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
cs_moumou84 Messages postés 15 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 21 mai 2012
3 avril 2012 à 22:44
bonjour,

oui j'ai essayer avec cette adresse mais il m'a declenche adresse invalide
0
cs_moumou84 Messages postés 15 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 21 mai 2012
3 avril 2012 à 23:14
bonjour Mr NHenry,

maintenant le message est envoyée j'espère que tu le voir et tu me répondre et merci
0
NHenry Messages postés 15050 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 mars 2023 156
3 avril 2012 à 23:46
Bonjour,

J'ai bien reçu ton mail, je l'analyserais dès que possible, car j'ai un travail très occupant.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
cs_moumou84 Messages postés 15 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 21 mai 2012
3 avril 2012 à 23:56
bonjour,

ok merci je t'attend
0
NHenry Messages postés 15050 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 mars 2023 156
7 avril 2012 à 18:30
Bonjour,

J'ai regardé ton code, et j'ai déjà quelques remarques :
- Mets TOUJOURS Option Explicit en haut de tous tes modules de code (y compris Form, ...), et déclare toutes le variables manquantes.
- Évites les noms des contrôles, par défaut, Command3 est nettement moins explicite que CmdSend (CommandButton Envoyer).
- REM (pour les commentaires) peut être remplacé par un apostrophe simple :
REM Commentaire
est identique à
' Commentaire

Le code peut être optimisé :
    Vitesse(0) = "110"
    Configuration.Combo1.AddItem (Vitesse(0))
    Vitesse(1) = "300"
    Configuration.Combo1.AddItem (Vitesse(1))
    Vitesse(2) = "600"
    Configuration.Combo1.AddItem (Vitesse(2))
    Vitesse(3) = "1200"
    Configuration.Combo1.AddItem (Vitesse(3))
    Vitesse(4) = "2400"
    Configuration.Combo1.AddItem (Vitesse(4))
    Vitesse(5) = "4800"
    Configuration.Combo1.AddItem (Vitesse(5))
    Vitesse(6) = "9600"
    Configuration.Combo1.AddItem (Vitesse(6))
    Vitesse(7) = "14400"
    Configuration.Combo1.AddItem (Vitesse(7))
    Vitesse(8) = "19200"
    Configuration.Combo1.AddItem (Vitesse(8))
    Vitesse(9) = "28800"
    Configuration.Combo1.AddItem (Vitesse(9))
    Vitesse(10) = "38400"
    Configuration.Combo1.AddItem (Vitesse(10))
    Vitesse(11) = "56000"
    Configuration.Combo1.AddItem (Vitesse(11))
    Vitesse(12) = "128000"
    Configuration.Combo1.AddItem (Vitesse(12))
    Vitesse(13) = "256000"
    Configuration.Combo1.AddItem (Vitesse(13))


Peut être simplifié en :
    Vitesse(0) = "110"
    Vitesse(1) = "300"
    Vitesse(2) = "600"
    Vitesse(3) = "1200"
    Vitesse(4) = "2400"
    Vitesse(5) = "4800"
    Vitesse(6) = "9600"
    Vitesse(7) = "14400"
    Vitesse(8) = "19200"
    Vitesse(9) = "28800"
    Vitesse(10) = "38400"
    Vitesse(11) = "56000"
    Vitesse(12) = "128000"
    Vitesse(13) = "256000"
    For i = LBound(Vitesse) To UBound(Vitesse)
        Configuration.Combo1.AddItem Vitesse(i)
    Next i

i étant déclaré en numérique, Long de préférence.

Il peut y avoir plus de 2 ports COM sur une machine (jusqu'à 255), mais le contrôle MSComm n'en gère que 16, il serait préférable de mettre une ComboBox plutôt que des boutons d'options.

" + Chr(13) + Chr(10) + "
Se remplace par :
" & VbCrLf & "

Je remarque aussi que tu gère les données dans une chaine de caractères.
Dans le cadre du Modbus RTU, il est préférable d'utiliser des tableaux d'octets plutôt.

On préfère utiliser l'opérateur & à la place de + pour concaténer des chaines, car il y a un risque de conversion implicite en nombre.

Text1.Text = Chr(1) & Chr(3) & Chr(2) & Chr(H5E) & Chr(0) & Chr(1) & Chr(40) & Chr(11)
H5E, c'est quoi ? Si c'est de l'hexa, c'est : &h5E

Dim CodeCaractere As octet
Dans Text5_MouseUp, octet est définit où ? En VB, c'est Byte.
De plus, cette méthode comporte 2 End Sub.

Des morceaux de code qui ne servent à rien :
ChaineASCII = ChaineRTU + CaractereLettre + " "
Dans Timer1_Timer, ChaineASCII n'est utilisé nul part.

Fin_Application = False
Dans Main, n'est utilisé nul part.


Concernant Modbus :
Il y a pas de contrôle de flux, tu peux donc toujours mettre comNone dans la ComboBox et la masquer.

Pourquoi 2 timeout ?
Il y a 2 temporisation : Le timeout (non réponse de l'esclave) et l'inter-trame (durée minimum entre 2 envois).

Sinon, je n'ai as compris la méthode d'entrée pour envoyer les données.
Utilises plutôt une série d'octet au format hexadécimal :
12 34 56 78 9A BC DE F0


Voilà, pour une première série de remarques.
J'attends ta réponse avant d'aller plus loin.

---------------------------------------------------------------------
[list =ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
cs_moumou84 Messages postés 15 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 21 mai 2012
11 avril 2012 à 14:19
bonjour Mr NHenry,

merci pour votre réponse et je suis entrain de le corriger et puis je fais le test.
0
NHenry Messages postés 15050 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 mars 2023 156
11 avril 2012 à 19:13
Bonjour,

Pas de problème, dès que tu as des retours à faire, tu peux les faire ici :)

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
cs_moumou84 Messages postés 15 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 21 mai 2012
3 mai 2012 à 18:19
bonsoir,

Je souhaiterais communiquer avec une relais multifonction en modbus RTU, pour cela on doit envoyer une trame et récupérer ce qu'il nous renvoie, j'ai essayer de coder l'envoie de trame mais je ne sais pas comment coder la récupération de ce qu'il nous renvoie Comment faire cela avec vB 8?
svp aider moi et merci d'avance
0
NHenry Messages postés 15050 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 mars 2023 156
3 mai 2012 à 19:23
Bonjour,

As-tu récupéré la réception déjà, sinon, comment fais-tu ton envoi et ta réception ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
cs_moumou84 Messages postés 15 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 21 mai 2012
3 mai 2012 à 20:48
bonsoir,

j'ai essayer pour le moment de coder l'emission de la trame et comment elle est reçue par la machine elles sont visualisées dans mon interface est voici le code d'emission:

Private Sub EmiEmission_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EmiEmission.Click
Dim SubCRLF As String 'Substitution de &H0D et &H0A par &H20 (Pb saut de ligne pour affichage RichTextBox)
Try
CreationTrame()
SubCRLF = Replace(TrameEmi, Chr(&HD), Chr(&H20)) 'Substitution de "CR"
SubCRLF = Replace(SubCRLF, Chr(&HA), Chr(&H20)) 'Substitution de "LF"
Rtb_Rec.SelectionColor = Color.GreenYellow 'Couleur verte pour les trames emises
Rtb_Rec.AppendText(SubCRLF) 'Affichage de la trame ASCII d'emission sans les caracteres "CR" et "LF"
Rtb_Rec.AppendText(vbCrLf)
Rtb_Rec.SelectionColor = Color.GreenYellow
Rtb_Rec.AppendText(TrameEmiH) 'Affichage de la trame hexa d'emission
Rtb_Rec.AppendText(vbCrLf)
Rtb_Rec.AppendText("")
Rtb_Rec.AppendText(vbCrLf)
Tx = True
MajFlags()
Tp_emi.Enabled = True
Emission(TrameEmi)
Catch ex As Exception
EcritureLog("Class F_Com - Sub EmiEmission_Click -- " & ex.Message)
End Try
End Sub



il me reste que comment faire pour récupérer les données que sont revoyées par cette machine avec que la réponse se fait aussi sous forme de trame modbus RTU

et merci d'avance
0
NHenry Messages postés 15050 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 mars 2023 156
3 mai 2012 à 20:56
Bonjour,

Lis et appliques le point 3 de ma signature.
Corriges le code.

Ce n'est pas du RTU, mais du Modbus série ASCII.

Ensuite, pour la réception, regardes les sources au sujet des ports COM, tu auras bien une partie du code qui sera déjà fait.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0