begin process at 2012 02 15 01:50:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

J'AI BESOIN D'AIDE !!!! :)

 > 

protocole modbus


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

protocole modbus

jeudi 21 août 2003 à 18:36:34 | protocole modbus

fbillard

Salut
je vois que nous sommes pas les seuls dans la galere avec ce protocole !!

NOus avons un indicateur utilisant le protocole modbus, nous avons recuperé le prog calcul crc de cyrille qui marche bien, cepedant lorsque l'on envoie la trame nous n'avons pas de réponse !!!
Comment envoyer la trame en VB pour ce faire comprendre ?


urgent, merci
dmretude@wanadoo.fr
jeudi 21 août 2003 à 19:08:05 | Re : protocole modbus

liquide

Membre Club

liquide
Pas de reponse, mais ne connaissant pas, peux tu m'expliquer a quoi cela sert et quelles sont ses fonctionnalités en qqes mots pour mon info perso et dormir moins con se soir, merci d'avance.

-------------------------------
Réponse au message :
-------------------------------

> Salut
> je vois que nous sommes pas les seuls dans la galere avec ce protocole !!
>
> NOus avons un indicateur utilisant le protocole modbus, nous avons recuperé le prog calcul crc de cyrille qui marche bien, cepedant lorsque l'on envoie la trame nous n'avons pas de réponse !!!
> Comment envoyer la trame en VB pour ce faire comprendre ?
>
>
> urgent, merci
> dmretude@wanadoo.fr
lundi 24 avril 2006 à 22:28:54 | Re : protocole modbus

sunlightdada

Moi aussi je dois communiquer avec un compteur d'énergie électrique à l'aide d'une application en VB; quand j'envois les trames je reçois pas réponses!!! pour être plus claire j'ai relié le compteur (RS485) à un convertisseur RS232-RS485 puis au port série du PC; et j'ai essayé d'envoyer les trames via un petit programme en VB mais pas de réponse. puis-je avoir de l'aide plz!!! merci d'avance  
e-mail : adadi_dalale@yahoo.fr
vendredi 4 janvier 2008 à 17:51:53 | Re : protocole modbus

Adn56

Membre Club
Je pense (pour faire les test en ce moment avec un twido) que cela vient du fait que VB utilise les decimale, alors que les API utilise l'héxa !
EX : j'envoie une trame modbus via mon api :
020300000004+CRC pour :
02 = n° exclave
03 = type de requéte ,03=lecture de N mots
0000 = N° du premier mot à lire
0004 = Nb de mots à lire
et le CRC
tout ceci en HEXA !
mais voila VB lui traite cela comme de l'ascii -_-'
Pire il écrit à son tour en DEC ! du style je veux 0A et me place un 010 ! du coup la trame est nul et le CRC totalement à l'ouest !
Voici les tests que je fais en ce moment, si d'autre on une soluce c'est le moment de la placer
amicalement @dn

Tiens les balises ne sont pas reconnues ^_____^, zut alors.....

samedi 9 août 2008 à 05:28:48 | Re : protocole modbus

MCSilver

Il faut utiliser la fonction Chr(Integer).

Par exemple, pour envoyer une requête de lecture du registre 400011 à une device dont l'adresse ModBus est 9, l'on doit construire la chaîne d'envoir de cette façon:

SendString=Chr(9) & Chr(3) & Chr(0) & Chr(10) & Chr(0) & Chr(1) & Chr(2) & Chr(CRC_Hi) & Chr(CRC_Lo)

Ensuite, envoyer SendString sur le port.

Cet exemple est valide en VB5 et en .NET

CiaO!

jeudi 20 août 2009 à 08:30:33 | Re : protocole modbus

vince42

Bonjour,

Je suis dans le même cas, je dois communiquer avec un fuitomètre ATEQ via le protocole Modbus RTU (RS232) avec une application que je développe en VB Express 2008 et le souci est que :

Comme MCSilver, je génère la trame avec la fonction Chr(xxx), cela marche très bien en VB6 mais en VB Express 2008, le résultat du Chr(0) retourne "Nothing" du coup ma trame avec le calcul du CRC est fausse car le Chr(0) considère comme une fin de chaine de caractères.

Je n'ai pas encore trouvé de solution, si quelqu'un peut m'aider.

Merci d'avance

jeudi 3 septembre 2009 à 10:34:37 | Re : protocole modbus

vince42

Bonjour,

J'ai réussi à contourner le problème en utilisant un tableau d'octets que j'envoie via la RS232 et ça marche.

A+

jeudi 3 septembre 2009 à 13:07:53 | Re : protocole modbus

Adn56

Membre Club


Salut, Bien joué
peux tu poster l'exemple stp que je vois comment tu t'y prends
d'avance merci.

Tiens les balises ne sont pas reconnues ^_____^, zut alors.....

mercredi 5 janvier 2011 à 12:56:18 | Re : protocole modbus

c4rr3r4

Bonjour,
je up ce topic car j'ai le même problème et je galère
je dois développer un logiciel qui permet à un pc de communiquer avec un automate en Modbus par une liaison rs485, le tout en VB.NET
je cherche depuis 2 jours et je ne trouve pas beaucoup d'aide à ce sujet.
Je connais le format de ma trame, je connais le calcul du CRC mais je ne sais pas comment envoyer ma trame en héxa sur le port série avec la méthode "serialport.Write".

vince42 parle de mettre les valeurs dans un tableau d'octet, ok mais en décimal ? en hexa ? et comment les envoyer avec la méthode serialport.Write qui n'accepte que les string ?

merci d'avance
jeudi 6 janvier 2011 à 11:09:09 | Re : protocole modbus

c4rr3r4

J'ai eu une réponse en mp, j'en fais profiter tout le monde même si ça n'a pas résolu mon problème :


Citation de MCSilver

Salut C4rr3r4, en réponse à ton appel à l'aide pour transformer une chaîne de byte en string:

Disons que l'on veut lire le registre 400011 de l'équipement à l'adresse ModBus 9, il faut envoyer (en décimal et peut importe la méthode choisie pour l'envoyer sur le port):
9,3,0,10,0,1,CRC_Hi,CRC_Lo

Maintenant, pour arricher à obtenir cette chaîne de caractères dans une String:
Dim MyString as String
MyString=Chr(9) & Chr(3) & Chr(0) & Chr(10) & Chr(0) & Chr(1) & Chr(2) & Chr(CRC_Hi) & Chr(CRC_Lo)
*Sache que tu ne pourras valider le contenu de cette trame car étant une variable string, à l'affichage, VB essaiera d'afficher le caractère ASCII 0, qui n'est pas un caractère affichable, il le remplacera par un autre caractère genre "|"*

Pour obtenir une chaîne de Byte dans un tableau:
Dim MyArrByte(9) as Byte
MyArrByte(0)=9
MyArrByte(1)=3
....
MyArrByte(8)=CRCHi
MyArrByte(9)=CRCLo

Il y a une 3e méthode proposée par SerialPort.Write (Char,Int, Int). Ne l'utilise par c'est incompatible avec le ModBus (les paramètres de trame ne peuvent pas êtres signés (-1 à -127, ils doivent demeurer dans une plage positive 0 à 255).

Voilà, n'hésites pas si tu as d'autre Q. Bonne chance.



Auquel j'ai répondu :

Salut, merci de m'avoir répondu :)
je t'explique la situation plus en détail, c'est tout simple.
J'ai un automate (iSmart SMT-CD-R20), sur cette automate j'ai une lumière branchée sur une sortie, et je dois créer un logiciel pour allumer cette lumière en envoyant une trame Modbus (supporté par l'automate).
Mon programme est très simpliste, j'ai une interface graphique avec un bouton connexion pour ouvrir le port série COM1, un bouton pour envoyer une trame et une textbox pour lire un retour quelconque de trame sur le port COM1.
Et voila le code pour le moment de mon bouton envoyer :


Code Visual Basic :
Private Sub send_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles send.Click
        Dim retour As String
        
        'envoie de la trame
        serialport.Write(...)
        
        retour = serialport.ReadExisting

        log.Text += retour
End Sub


je ne sais pas quoi mettre à la place des "..."
la trame que je dois envoyer est la suivant pour allumer la lumière : 01 06 00 07 00 80 39 AB (en hexa) h80=128, h39=57, hAB=171, le CRC est bon c'est 39 AB
j'ai testé avec simply modbus, j'arrive à envoyer cette trame et allumer la lumière donc mon cablage est bon ;)

pour envoyer une trame sur le port série il y a juste la méthode write de l'objet serialport qui s'implémente avec une string, un tableau de byte ou un tableau de char.

je sais qu'en faisant la méthode chr(01) & chr(00) ... ça ne fonctionne pas car le chr(00) est considéré comme NUL et donc n'envoie pas "0", j'ai essayé en décimal mais je ne sais pas trop comment envoyer la trame en décimal

à la fin de ton message tu me dis de ne pas employer la méthode write, ok mais comment je m'y prends pour envoyer une trame sur le port série alors ?

désolé pour toutes ces questions mais il n'y a pas beaucoup d'infos sur le net :/

1 2

Cette discussion est classée dans : trame, protocole, modbus


Répondre à ce message

Sujets en rapport avec ce message

MODBUS [ par ricoux ] Voila le probleme: Nous possédons un Médiator de VisioProcess communiquant par la voie rs232 avec le protocole MODBUS RTU. Nous avons trouvé Modbus /JBus rs 232 [ par dgje ] Je souhaite envoyer une tramepar le port série par protocole Modbus.J'ai la trame à envoyer! mais comment l'envoyerque ce soit en Décimal,hexadecimal Bessoins de testeur pour protocole modbus [ par patte ] Bonjour Je viens de crée un programme qui normalement devrai lire un nombre de mots defini sur un automate grace au protocole modbus Pour le crc j'ai Envoi d'une Trame Modbus par prog Java [ par chant_du_13 ] Voila, j'ai un pb, j'aimerai envoyer des données en utilisant les trames modbus et mon programme utilise les sockets java ....je ne sais pas du tout c Protocole Modbus RTU RS232 - VB Express 2008 [ par vince42 ] Bonjour, Je suis actuellement entrain de développer en VB Express 2008 une application qui permettra de communiquer avec un appareil détectant des com en modbus trame décriture (jj68) [ par jean68 ] bonjour je suis a la recherche d'une trame d'écriture de variable en modbus vers un automate cette variable est constituer d'un mot merci pour votre a communication avec protocole Modbus [ par Maninga ] je fais mon pfe et j'ai des difficultés pour créer un réseau qui puisse permettre la communication entre un automate (tsx37) et des modules controller le protocole snmp [ par nahlafrt ] bonsoir, je cherche une documentation sur de commende snmp ecritent en java pour trouver la liste des ports ouverts.j'utilise netbeans.si vous pouvez Protocole HTTP en Visual Basic [ par beorchia ] Bonjour à tous, Je développe en ce momment une petite applic client qui communique avec un serveur HTTP (Apache). Pour cela j'ai utilisé les objets Protocole de communication d'une sourie série !! [ par Moses ] J'essaye de récuperer ce qu'envoie une sourie série sur un port COM!!Sous windows CE (iPAQ 3630)mais le contrôle mscomm me permet de lire du texte, ou


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,747 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales