Décodage de trame ModBus reçue

Voici la dernière partie du code pour le ModBus en VB.

    Public Function ReadDecoder(ByVal ligne As String)
        'Passage de la trame en Array
        Dim MyBytes As Array = Split(ligne, "/")
        Dim i, partie1, partie2 As Integer
        Dim grille As ListView
        Dim ReponseValeur As String
        Dim MyValue As Array

        'Remplissage table
        Dim _AliasDBData As New GTCDataSet.AliasDBDataTable
        Dim _AliasDBAdapter As New GTCDataSetTableAdapters.AliasDBTableAdapter
        _AliasDBAdapter.Fill(_AliasDBData)

        If MyBytes(1) = "" Then 'Erreur de retour Trame
            Return 0
        Else 'Pas d'erreur
            For i = 4 To UBound(MyBytes) - 1
                If i / 2 = Int(i / 2) Then 'nombre pair

                    partie1 = MyBytes(i - 1)
                    partie2 = MyBytes(i)

                End If
            Next i
        End If
        Return 0
    End Function

La trame ModBus de retour est composé de plusieurs données :

{num esclave} {fonction} {nbr de valeurs} {valeur 1, partie 1} {valeur 1, partie 2}…{CRC1}{CRC2}

Pour avoir valeur 1 en entier, il faut combiner les deux parties en hexadécimale, puis reconvertir en décimal. C’est pour cette raison qu’on récupère les nombres paires et que pour chaque « i » pair, on récupère deux valeurs.

La traitement des données est à votre charge. Mais par exemple, quand vous demandez en trame X mots à partir de l’adresse Y, vous savez que pour i = 4, adresse = Y.

Si vous avez besoin d’infos supplémentaires, n’hésitez pas à demander.

Series Navigation<< Constructeurs de trame ModBus

One thought on “Décodage de trame ModBus reçue”

  1. merci beaucoup c’est très intéressant la série des tuto que vous avez faite , j’en ai vraiment besoin. Vous recevrez plein de questions de ma part!
    bonne continuation

Leave a Reply