luc desruelle's Blogue

Community Browser
cancel
Showing results for 
Search instead for 
Did you mean: 

ModBus et LabVIEW

Desruelle_luc
Trusted Enthusiast

1- résumé "simple", avec code toolkit NI

 

Avec les API LabVIEW, il est possibile d'utiliser le protocole Modbus, sans savoir comment il est codé.

Cela est totalement transparent pour le développeur.

Il est "quand même intéressant" de connaître quelques bases.

autres liens : http://www.developpez.net/forums/blogs/884588-luc-desruelle/b752/protocole-modbus-tcp-labview/

 

1.A) Modbus série "ASCII" ou "RTU"

En Modbus série, le maître se connecte à l'esclave. Dès que la liaison est établie, le maître envoie des requêtes Modbus (Requests) à l'esclave. Ces requêtes sont traitées par l'esclave. Le résultat est renvoyé au maître sous forme de réponse Modbus (Response).

 

Il existe 2 protocoles série :

  • RTU est le protocle le plus utilisé, avec calcul de CRC
  • ASCII avec calcul du LRC

 

configuration serie modbus VISA.png

 

1.A.a) exemple create Modbus serial ASCII master exemple

create Modbus serial ASCII master exemple.png

 

1.A.b) exemple create Modbus serial RTU master exemple

 

create Modbus serial RTU master exemple.png

 

B) Modbus "TCP"

En Modbus TCP, le client (maître) se connecte au serveur (esclave). Dès que la liaison est établie, le client envoie des requêtes Modbus (Requests) au serveur. Ces requêtes sont traitées par le serveur. Le résultat est renvoyé au client sous forme de réponse Modbus (Response).

 

Il existe, dans la spécification modbus, uniquement le transport TCP ou IP.

 

1.B.a) exemple create Modbus TCP master exemple

 

create Modbus TCP master exemple.png

 

Il est utilisé, rarement, 2 autres modes:

1.B.b) avec Gateway modbus, besoin d'ajouter le "Unit ID" : exemple create Modbus TCP master with unit_ID exemple

create Modbus TCP master with unit_ID exemple.png

 

1.B.c) le protocole RTU sur couche de transport TCP, sous le nom "modbus RTU over TCP"

( pour le code Modbus RTU over TCP Master with LabVIEW)

exemple create Modbus RTU over TCP master exemple

create Modbus RTU over TCP master exemple.png

 

 

Plus d'information : Modbus RTU over TCP Master with LabVIEW

 

 

2 - résumé PDU, ADU et Frame d'une trame Modbus

 

A) Protocole PDU

Le protocole Modbus définit un (Protocol Data Unit) Modbus-PDU, qui ne dépend pas de la couche de communication correspondante. Ce Modbus-PDU se compose des deux champs "Function Code" et "Data".

Grâce au blindage de "Function Code" et "Data" dans Modbus-PDU, les services Modbus et le modèle d'objet restent identiques pour toutes les variantes Modbus.

 

PDU modbus.png

B) Transport et ADU

En fonction de la représentation sur les différents protocoles réseau, Modbus-PDU est complété par des champs supplémentaires (MBAP Header) pour le Modbus-ADU (Application Data Unit).

 

 

Modbus-PDU et Modbus-ADU composent ensemble le message Modbus, également désigné par "Frame" (trame).

 

3 - Introduction à ModBus

MASTER VS SLAVE

Ethernet TCP/IP VS Serial

 

Master donne l'ordre de l'action de lire ou écrire au slave qui va réaliser l'action de donner la valeur (lecture) ou sauvegarder la valeur dans sa mémoire (écriture)

En ethernet TCP/IP Master (client) VS Slave (Serveur de données)

 

 

Un très bon article, en français, sur le protocole ModBus : http://www.ni.com/white-paper/52135/fr/

 

http://www.ni.com/white-paper/7675/en

The Modbus protocol follows a master/slave architecture where a master will request data from the slave. The master can also ask the slave to perform some action. The master initiates a process by sending a function code that represents the type of transaction to perform. The transaction performed by the Modbus protocol defines the process a controller uses to request access to another device, how it will respond to requests from other devices, and how errors will be detected and reported. The Modbus protocol establishes a common format for the layout and contents of message fields.

The messages exchanged between the master and the slave are called frames. There are two types of Modbus frames: Protocol Data Unit (PDU) and Application Data Unit (ADU). The PDU frames contain a function code followed by data. The function code represents the action to perform and the data represents the information to be used for this action. ADU frames add a little more complexity with an additional address part. ADU frames also provide some error checking. Both the ADU and PDU frames follow Big-Endian encoding.

 

fig3_modbus_frame_20120316151705.png

 

Primary Tables Object Type Type of
Discrete Input Single bit - boolean Read-Only
Coils Single bit - boolean Read-Write
Input Registers 16-bit word Read-Only
Holding Registers 16-bit word Read-Write

Table 1: Modbus Data Types1

 

4 - Serial Implementation

There are two serial modes that the Modbus application layer can follow: RTU and ASCII. 

In RTU, the data is represented in Binary format, whereas the ASCII mode represents the data such that it is human readable. 

 

Figure 8: Modbus ASCII Serial Frame1

 

Figure 9: Modbus TCP Frame1

  Description Size Example
MBAP Header Transaction Identifier Hi 1 0x15
Transaction Identifier Lo 1 0x01
Protocol Identifier 2 0x0000
Length 2 0x0006
Unit Identifier 1 0xFF

Figure 10: MBAP Header1

 

5 - TCP Implementation

As in many TCP applications, the first requirement is to establish a connection between the master and the slave.  When connection has been established, the master can build a request for the slave.  The request contains a PDU (Modbus frame described above) followed by a MPAB header, as shown in Figure 9.  Figure 10 represents a template for the MPAB header.     

 

 

 

6 - Using LabVIEW With Modbus, version gratuite librairie Modbus LabVIEW

L'ancienne : Bibliothèque LabVIEW Modbus le toolkit de NI

 

Nouvelle librairie Modbus utilisant la POO  à partir de  LabVIEW 2011  :  https://decibel.ni.com/content/docs/DOC-30140

 

7 - Exemples codes, tester communication modbus, analyse problèmes

http://www.ni.com/white-paper/3055/en

http://www.ni.com/white-paper/4433/en

http://www.ni.com/white-paper/3982/en

http://forums.ni.com/t5/Discussions-au-sujet-de-NI​/labview-tcp-ip-multi-client/m-p/1999103/highligh...

 

Analyse d'un problème ModBus :

> version de l'OS Windows ? + 32bits ou 64?

 

> test ping

> firewall sur PC serveur (le port modbus utilise le port 502 sur un PC serveur ModBus. Il n'y a pas de firewall sur le PC qui a le serveur? Firewall de Windows le désactiver pour test)

> Faire vi exemple : Open TCP + Read Input register + close avec affichage du code cluster d’erreur

 

Tester l'EXE sur qui fonctionne avec labVIEW développement  : valider que cela fonctionne sans erreur

Tester l'EXE sur le PC sur lequel l'application ne fonctionne et sur plusieurs PC pour comparer

 

http://forums.ni.com/t5/Discussions-au-sujet-des-autres/Liaison-TCP-IP-sous-appli-windows-7/td-p/177...

http://forums.ni.com/t5/Discussions-au-sujet-des-autres/Liaison-TCP-IP-sous-appli-windows-7/td-p/177...

 

 

ModBus TCP exemple Mesulog Luc Desruelle.png

 

 

 

 

 

 

Luc Desruelle | avatar_ld.gifVoir mon profil | Mon blog LabVIEW
Co-auteur livre LabVIEW : Programmation et applications
Certified LabVIEW Architect (CLA)
LabVIEW Champion

banniere Luc Livre.png

Contact

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW | Auteur livre LabVIEW : Programmation et applications - G Web
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD) | LabVIEW Champion

MESULOG - LinkedIn site | NERYS - NERYS Group
| directeur CEO MESULOG
| CODIR - NERYS group

Comments