TEST JBUS MODBUS RTU

blondin71 Messages postés 2 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 22 février 2008 - 22 févr. 2008 à 19:50
phoenix591 Messages postés 32 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 18 mai 2012 - 10 janv. 2013 à 18:33
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/45809-test-jbus-modbus-rtu

phoenix591 Messages postés 32 Date d'inscription mercredi 5 décembre 2007 Statut Membre Dernière intervention 18 mai 2012
10 janv. 2013 à 18:33
Salut Churchill,

Ton petit soft m'a bien aidé car j'avais un projet de superviseur utilisant une communication jbus avec un API Schneider.
Aujourd'hui j'ai un autre soucis, je doit récupérer 67 fois 6 mots de 16 Bits à plusieurs adresses de dépard dans un autre API Schneider toujours en Jbus RTU.
Là je séche car cela dépasse la capacité des 126 mots d'une trame jbus.
Il faut faire plusieurs itérations mais en mode synchrone. Mon prog se plante car je ne contrôle pas la réception des données.
Pour illustrer ci dessous la partie dialogue (emission et réception de la trame jbus)

For ind_emis = 10050 To 13400 Step 50 'adresses des mots à lire dans l'esclave
Longueur_trame_jbus = Modbus_Creat_trame_Lecture(Frm_Propriétés.Num_esc_jbus.Text, 3, (ind_emis), 16, Trame_jbus()) 'appel fonction:num d'esclave, fonction, adresse 1er mot, Nb de mot, table de valeur composant la future trame jbus
If Longueur_trame_jbus > 0 Then ' la trame est correcte
Longueur_trame_jbus = Modbus_Ajout_Trame_CRC16(Trame_jbus()) 'appel fonction:finalise la trame par l'ajout du CRC16
snd = Créat_trame_Jbus(Trame_jbus())
Envoi_Trame_RTU (snd) 'sub:envoie la trame d'interrogation jbus sur liaison série
Do While MSComm1.CommEvent <> comEvReceive
'attend une réponse de l'API
Loop
rep = MSComm1.Input
Frm_Dial_JBUS.Text3.Text = Frm_Dial_JBUS.Text3.Text & vbCrLf & " " & Time & " -API >> PC : " 'pour afficher la trame
For i = 0 To Len(rep)
Rep_jbus(i) = Mid(rep, 1, i)
Frm_Dial_JBUS.Text3.Text = Frm_Dial_JBUS.Text3.Text & Hex(Asc(Mid(Réponse, i, 1))) & " " 'pour afficher la trame
Next i
If Modbus_verif_trame_rep(Rep_jbus, Frm_Propriétés.Num_esc_jbus.Text, 3) = 0 Then 'fonction:Trame de la réponse, num d'esclave, fonction
Donnée1 = Val(Rep_jbus(0)) * 256 + Val(Rep_jbus(1))
Donnée2 = Val(Rep_jbus(4)) * 256 + Val(Rep_jbus(5))
Donnée3 = Val(Rep_jbus(6)) * 256 + Val(Rep_jbus(7))
Donnée4 = Val(Rep_jbus(8)) * 256 + Val(Rep_jbus(9))

Else
MsgBox ("Erreur de dialogue avec API refaire un rafraichissement")
Exit Sub
End If
Else 'erreur dans la demande de création de la trame
MsgBox ("erreur dans la création de la trame" & vbCrLf & "code erreur:" & Longueur_trame_jbus)
End If
Next ind_emis

L'émission se passe bien l'API répond correctement (j'ai vérifier sur une itération grâce à ton soft) mais je ne récupére rien dans ma variable Rep malgré le MSComm1.CommEvent = comEvReceive. (j'ai simplifier pour que cela ne soit pas trop long)
Je te remercie par avance pour ton aide.

Phoenix591
zakariabamou Messages postés 28 Date d'inscription mercredi 16 décembre 2009 Statut Membre Dernière intervention 24 août 2012
20 avril 2010 à 14:46
bonjour,
j'ai essayé d'utiliser vorte application pour communiquer avec un regulateur qui utilise la meme table JBus que vous avez utilisez mais ca marche pas toujours j obtient "NO Answer"
que dois je faire?
meci d'avance
cs_Churchill Messages postés 4 Date d'inscription mercredi 17 mai 2006 Statut Membre Dernière intervention 13 avril 2010
13 avril 2010 à 14:13
Il est probablement possible de l'utiliser pour cela. Mais il faut connaitre la table JBus du régulateur (que je ne connais pas, définie par le fabricant.
Elle vous donnera quels mots correspondent à quelles fonctions, ainsi que leurs formats.
zakariabamou Messages postés 28 Date d'inscription mercredi 16 décembre 2009 Statut Membre Dernière intervention 24 août 2012
13 avril 2010 à 13:55
bonjour
svp je ss interesser par votre application, je me demande est ce ke cette appli peut aussi communiquer avec un regulateur de temperature eurotherm ki utilise le protocole modbus RTU
c urgent
merci d'avance
blondin71 Messages postés 2 Date d'inscription jeudi 18 octobre 2007 Statut Membre Dernière intervention 22 février 2008
22 févr. 2008 à 19:50
super pratique.
félicitations.
Rejoignez-nous