begin process at 2008 07 09 05:49:54
1 207 200 membres
46 nouveaux aujourd'hui
14 130 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : RS232 ModBus [ Divers / General ] (Alien)

RS232 ModBus le 20/05/2008 19:48:20

Alien
Membre Club
Bonjour,

J'essai de convertir une application VB6 en VB.net 2005 qui consiste à lire en modbus sur le port com RS232
une serie de mot dans un automate de type télémécanique.

je commence à comprendre la difference entre VB6 et VB.net pour le port com.

mais bien que mon code à l'air de fonctionner l'automate ne repond pas en VB.net.
Suite à divers recherche dans mon programme je me suis apercu quand VB.net la fonction Chr(0) me rend la valeur "nothing" alors quand VB6 y a bien un caractére. evidement si je n'envois pas la bonne trame l'automate ne risque pas d'y repondre

Qqu'un aurait eu le même probleme ou une piste ?

Par avance merci,

Jérôme.


Re : RS232 ModBus le 20/05/2008 19:53:19

Alien
Membre Club
Re,

Complement d'information.

J'ai besoin de la fonction chr(0) dans le code si dessous.
je re précise quand VB6 mon programme fonctionne très bien.
Le pb que j'ai en VB.net vient de cette fonctionne qui ne rend pas les mêmes valeur en utilisant chr(0) seulement.


(------------------------------------)
Mot = 1
' Demande de lecture de mot
' Emet la demande au sous programme de dialogue ModBus
R_Float_Modbus = ModBus(Chr(Esclave) + Chr(3) + Chr(Mot \ 256) + Chr(Mot Mod 256) + _
              Chr(0) + Chr(2), 5 + 2 * 2)


Jérôme.


Re : RS232 ModBus le 21/05/2008 09:02:12

NHenry
Membre Club
Bonjour

Voir ce message aussi :
http://www.vbfrance.com/infomsg_SUPERVISION-AUTOMATES-AVEC-MODBUS-TCP-IP_1122096.aspx

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site

Re : RS232 ModBus le 21/05/2008 21:15:38

Alien
Membre Club
Bonjour,

NHenry je viens de parcourir ton code et je n'ai pas trouvé de reponse.

J'espere que qqu'un à eu le même soucis et pourra m'éclairer parce que depuis plusieurs jours je fais du surplace.

Chr(3) + Chr(3) + Chr(1 \ 256) + Chr(1

Mod 256) + Chr(1 \ 256) + Chr(1 Mod 256)

c'est exactement la trame que j'envois sur le port com...

En VB6 cette trame me donné 6 caracteres...
en vb.net cette trame me donne que les deux premiers caracteres parce que chr(1\256) = nothing et tous le reste n'est pas interpreter
est ce que qqu'un aurait une solution pour que le chr(1\256) = chr(0) me donne le même resultat quand VB6 ou
qu'il est une explication de pourquoi deux fonctions identiques ne donne pas les mêmes resultats d'ou viendrait le Pb ?
 

Merci,

Jérôme




Jérôme.


Re : RS232 ModBus le 22/05/2008 08:28:53

NHenry
Membre Club
Bonjour

A la place d'utiliser une chaine de caractère, utilise un tableau d'octet plutot, et tu n'auras plus ce pb.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site

Re : RS232 ModBus le 22/05/2008 18:23:47

Alien
Membre Club
Merci pour ton aide,

tu pourrais me donner un exemple de comment remplacerma trame de 6 caracteres de la table ascii en un tableau d'octets

Jérôme.


Re : RS232 ModBus le 22/05/2008 19:44:15

Alien
Membre Club

Chr utilise la classe Encoding dans l'espace de noms System.Text pour déterminer si le thread en cours utilise un jeu de caractères codé sur un octet (SBCS, Single-Byte Character Set) ou sur deux octets (DBCS, Double-Byte Character Set). Il accepte ensuite CharCode comme un point de code dans le jeu approprié. La plage peut s'étendre de 0 à 255 pour les caractères SBCS et de -32 768 à 65 535 pour les caractères DBCS. Pour les tableaux des caractères ASCII codés sur un octet, consultez Codes de caractères ASCII.

La valeur retournée dépend de la page de codes du thread en cours, contenue dans la propriété ANSICodePage de la classe TextInfo de l'espace de noms System.Globalization. Vous pouvez obtenir ANSICodePage en spécifiant System.Globalization.CultureInfo.CurrentCulture.TextInfo.ANSICodePage.

Mon Pb viendrait peut etre de ca ? pck a part ca je vois strictement aucune raison qu'une fonction en VB6 ( chr(0) ) ne retourne pas exactement la même chose en VB.net


Jérôme.


Re : RS232 ModBus le 22/05/2008 20:11:07

Alien
Membre Club
Aprés réfléxion je me demande si mon soucis ne viendrais pas plutot de ma config du port rs232

Variable de mon fichier config.ini
[Com]
port=5
bitsparseconde=19200
bitsdedonnees=8
parite=0 ( zéro numérique = none )
bitsdarret=1


Function Init_Comm(ByVal RScom AsObject) AsBoolean
OnErrorGoTo Erreur
' Configuration du port RS232
R
Scom.Port = Com_config.Port ' Num,ro de port
RScom.BaudRate = Com_config.Bitsparseconde ' Bit par seconde
RScom.Parity = Com_config.Parite ' Parit,e IO.Ports.Parity.None
RScom.StopBit = Com_config.Bitsdarret ' Bit d'arr^t IO.Ports.StopBits.One
RScom.DataBit = Com_config.Bitsdedonnes ' Bit de donn,es
RScom.Open()
Init_Comm =
True
ExitFunction

' Gestion des erreurs
'*******************
Erreur:
'Call Arc_Erreur("Erreur lors de l'initialisation du port com (Divers/G,n,ral/Init_Comm) " & Error)
EndFunctionSi qqu'un  deja communiquer en Modbus sur port rs232 en vb.net peut-il me dire si y a d'autre élément à configurer pour le port ? en sachant que les valeurs de config sont bonne puisqu'elle sont identique a celle de mon Programme VB6 qui fonctionne.

Jérôme.


Re : RS232 ModBus le 22/05/2008 22:55:51

Alien
Membre Club
Re,

Après 3 Jours de galère je viens enfin de comprendre pourquoi l'appareil ne repondait pas...

Pour gerer mon port com j'utilise le fichier fournit par microsoft rs232.vb
et j'ai du modifier la fonction write

J'ai remplacer ceci ...


Dim oEncoder As New System.Text.ASCIIEncoding()
Dim aByte() As Byte = oEncoder.GetBytes(Buffer)

par cela...

Dim
aByte() AsByte
Dim a AsInteger
ReDim aByte(Len(Buffer) - 1)
For a = 0 To Len(Buffer) - 1
    aByte(a) = Asc(Mid(Buffer, a + 1, 1))
Next a
Me.Write(aByte)

Merci NHenry ( je pige mieux le tableau de octet ( byte ) )

et merci aussi à portmon, j'ai pus avec ce logiciel analysé la trame envoyé en VB6 et VB.net et ca ma permit de localiser le soucis

( Mon logiciel ne fonctionne trjs pas lol , mais l'appareil repond... c'est un très bon début , maintenant il me reste a récupere les infos dans le buffer ce qui n'est pas le plus dure)

Jérôme.

 

Ps: si qqu'un rencontre le même soucis que moi qu'il n'hesite pas à me ML



Classé sous : net, vb, vb6, automate, modbus

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS