DIRIS A40 MODBUS TCP IP

Messages postés
9
Date d'inscription
vendredi 28 décembre 2001
Statut
Membre
Dernière intervention
30 juillet 2019
-
Bonjour,

Je réouvre ce sujet déjà ancien :
Bonjour,

Je réouvre ce sujet déjà ancien :

https://codes-sources.commentcamarche.net/forum/affich-10039411-relever-des-donnees-sur-un-reseau-modbus-via-vba

J'ai des difficulté à dialoguer avec le DIRIS A40.
Quelqu'un aurait complété le code que CORENTINTE a fait.
Je n'ai pas de retour de mon DIRIS A40 en Tcp-IP/ modbus

Merci par avance
Afficher la suite 

2 réponses

Messages postés
14599
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
8 décembre 2019
137
0
Merci
Tu peux déjà proposer ce que tu as fais que l'on regarde.
Le protocole modbus TCP est assez simple, je l'utilise souvent, mais je ne connais pas spécifiquement ton équipement.

Note (toujours bon à préciser, au cas où), je peux t'aider à corriger ton code, pas coder à ta place.
Commenter la réponse de NHenry
Messages postés
9
Date d'inscription
vendredi 28 décembre 2001
Statut
Membre
Dernière intervention
30 juillet 2019
0
Merci
Bonjour,

je te remercie HenrY pour ta réponse.
Tu as tout à fait raison. J'ai formulé une demande un peu trop light ... lol
Je mets à dispo le bout de code que j'utilise.
Ca servira les prochains comme moi.
La solution de l'ancien poste n'a pas fonctionné pour moi.
j'ai malgré toutes mes tentatives une erreur d'initialisation impossible de créer l'objet....
J'ai utilisé l'utilitaire MBAXP qui est gratuit mais fonctionne seule 60mn. ( shareware)
je vais regarder pour utiliser l'utilitaire d'ARKHAN. pour l'instant l'ajout de la DLL me pose PB

Public e As Integer
Public f As Integer

Private Sub CommandButton1_Click()
 
    'Connexion en local
       
    Mbaxp1.Connection = TCP_IP   '0 = TCP/IP
    Mbaxp1.IPAddr1 = 192
    Mbaxp1.IPAddr2 = 168
    Mbaxp1.IPAddr3 = 1
    Mbaxp1.IPAddr4 = 1
    Mbaxp1.TCPIPPort = 502
   
    Mbaxp1.Timeout = 1000 ' Read timeout
    Mbaxp1.ConnectTimeout = 2000 ' TCP/IP Connection timeout
    Mbaxp1.LicenseKey ("xxxx-xxxx-xxxx-xxxx-xxxx-xxxx")
    
    e = Mbaxp1.OpenConnection
    
    
    e = Mbaxp1.GetLastError
    
    If e = 0 Then
      Cells(1, 4) = "Connection success"
    
    ElseIf e = 34 Then
      Cells(1, 4) = "Connection timeout"
    
    ElseIf e <> 0 Then
      Cells(1, 4) = "Connection Error"
    End If
    
    'Mbaxp1.Connection = Port4    'Port 1
    'Mbaxp1.BaudRate = B9600      '9600 Baud
    'Mbaxp1.DataBits = Eight      '8 Data bits
    'Mbaxp1.Parity = NONE         'None parity
    'Mbaxp1.StopBits = One        '1 Stop bits
    'Mbaxp1.ProtocolMode = RTU    'RTU Mode
    'Mbaxp1.Timeout = 1000
    'Mbaxp1.LicenseKey ("xxxx-xxxx-xxxx-xxxx-xxxx-xxxx")
    
    'Mbaxp1.OpenConnection
    
    'Diris5 id 5 sur le bus RS485
    e = Mbaxp1.ReadHoldingRegisters(1, 5, 50520, 2, 2000) 'tensionL1
'1 hanlde, 5 id diris,  50520 code en decimal de la lecture de la tension sous diris, 2 nombre 
'de mots,  2000 délai de rafraichissement)
    ‘[http://sebastienguillon.com/test/javascript/convertisseur.html]
    ‘ site de conversion de l’hexa en decimal
    'MBAXP : lien sur internet facile à trouver : a rajouter dans les références après l'avoir 
  ' copié dans le dossier SYSTEM32.
    
   Mbaxp1.UpdateEnable (1)
   
End Sub

Private Sub CommandButton2_Click()

    Mbaxp1.CloseConnection

End Sub

Private Sub Mbaxp1_ResultError(ByVal Handle As Integer, ByVal Error As Integer)

   Cells(1, 5) = Error

End Sub




Private Sub Mbaxp1_ResultOk(ByVal Handle As Integer)

  If Handle = 1 Then
    ' Be sure Excel is ready for input
    If Application.Ready Then
       Cells(3, 2) = Mbaxp1.Register(1, 1) / 1000
       Cells(3, 3) = "Success"
    End If
  End If
End Sub


Private Sub Mbaxp2_ResultOk(ByVal Handle As Integer)

End Sub


c
Commenter la réponse de lepetitpoussin