DIRIS A40 MODBUS TCP IP

lepetitpoussin Messages postés 9 Date d'inscription vendredi 28 décembre 2001 Statut Membre Dernière intervention 30 juillet 2019 - Modifié le 25 juin 2019 à 16:52
lepetitpoussin Messages postés 9 Date d'inscription vendredi 28 décembre 2001 Statut Membre Dernière intervention 30 juillet 2019 - 30 juil. 2019 à 18:49
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

2 réponses

NHenry Messages postés 15118 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 mai 2024 159
25 juin 2019 à 18:47
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.
0
lepetitpoussin Messages postés 9 Date d'inscription vendredi 28 décembre 2001 Statut Membre Dernière intervention 30 juillet 2019
Modifié le 30 juil. 2019 à 21:07
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
0
Rejoignez-nous