aftens
Messages postés3Date d'inscriptionjeudi 25 mai 2006StatutMembreDernière intervention 8 août 2007
-
8 août 2007 à 17:13
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
10 août 2007 à 20:30
Bonjour, j'ai créé un programme qui envoie des trames MODBUS ASCII sous visual basic 2005 express.
Maintenant j'aimerais rajouter le format RTU, mais la je coince, les sources sur le format RTU sont peu nombreuses et bug.
Concernant la construction du CRC, je n'ai pas de souci avec, il y a suffisamment de sources.
Je voudrais savoir sous quel format on envoie les infos en mode RTU.
En MODBUS ASCII j'utilise la ligne suivante:
dim send_string as string
send_string = "01060100177071"
objMSCOMM.Output = C
hr(&H3AS) & send_string & Chr(&HDS) & Chr(&HAS)
Aucun souci avec le modbus ASCII.
Par contre si je modifie ma trame en RTU , j'obtiens ca:
dim send_string as string
send_string = "0106000012ABAD14"
objMSCOMM.Output = send_string
, cela ne marche pas.
J'ai vus quelque part que le mode RTU utilisait l'hexa pour sa trame.
Quelqu'un peut il me dire comment je dois convertir mon send_string, le format string ne doit pas être le bon. Me donner le type et le format de la ligen en verte ci-dessus?
J'ai essayer le format char et integer sans succés non plus.
J'ai vu également qu'il était question de silence au début et à la fin de la trame, et en fonction des matériels (automates, variateurs...), elle pouvait être différentes.
Quelqu'un peut il me donner quelque précision sur ces silences, comment les rajoute t-on dans le code, et dois t'on forcément connaitre la valeur du silence du recepteur?
Merci pour vos réponses
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 9 août 2007 à 00:47
Salut
Je pense que "0106000012ABAD14" ne doit pas être envoyé sous forme ASCII mais sous forme de Bytes dont les valeurs sont dans ta chaine :
Dim monCode As String
monCode = "0106000012ABAD14"
Send_String = ""
For r = 1 To (Len(monCode$) / 2) Step 2
Send_String = Send_String & Chr$(Val("&h" & Mid$(monCode$, r, 2)))
Next r
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)