Bloc fonction ModbusServer

Présentation

Le bloc fonction ModbusServer fait partie de la bibliothèque SE_ModbusTCP_Slave. Il gère les requêtes Modbus TCP pour lire et écrire des données entre le contrôleur HMI SCU jouant le rôle de serveur et les clients Modbus. Jusqu'à 10 connexions de client sont prises en charge. Le bloc fonction opère sur les zones de données définies dans le HMI SCU, qui représentent les registres d'entrées et de sorties Modbus.

Le bloc fonction ModbusServer s'exécute dans un POU attribué à une tâche. Par conséquent, si le contrôleur est en mode STOP, la tâche associée au bloc fonction ModbusServer ne s'exécute pas.

L'ID d'unité de ModbusServer est 255.

Codes de fonction pris en charge

Les codes fonction Modbus suivants sont pris en charge :

Code de fonction

Description

3 (03 hex) ou 4 (04 hex)

Lecture de multiples registres

6 (06 hex)

Ecriture d'un registre

16 (10 hex)

Ecriture de plusieurs registres

23 (17 hex)

Lecture/écriture de plusieurs registres

Jusqu'à 10 connexions de client sont prises en charge en même temps. Toutes les requêtes de client sont traitées pendant un cycle de contrôleur ; mais avec une requête par connexion de client.

Représentation graphique

G-SE-0043454.1.gif-high.gif

 

 

Paramètres

Ce tableau décrit les entrées du bloc fonction :

Entrée

Type

Valeur par défaut

Description

wPort

WORD

502

Port du serveur, 502 (Modbus par défaut)1

pInputData

POINTER TO WORD

-

Adresse du premier mot de la table des données d'entrée.

pOutputData

POINTER TO WORD

-

Adresse du premier mot de la table des données de sortie.

uiInputDataSize

UINT

-

Taille de la table des données d'entrée.

uiOutputDataSize

UINT

-

Taille de la table des données de sortie.

xEnable

BOOL

FALSE

Lorsque la valeur est TRUE, le bloc fonction est exécuté. Les valeurs des entrées d'un bloc fonction sont modifiables en permanence, et les sorties sont mises à jour en continu.

La valeur FALSE met fin à l'exécution du bloc fonction et réinitialise ses sorties.

xReset

BOOL

 FALSE

La valeur TRUE réactive la communication et le bit d'erreur.

tTimeout

UDINT

0

Timeout d'écriture Modbus en ms. Le bloc fonction doit être réinitialisé après un timeout pour réactiver la communication.

1   Le port utilisé par défaut pour le protocole Modbus TCP/IP est le port 502. Si le protocole Modbus TCP/IP (serveur ou client) est déjà configuré dans Vijeo Designer pour le contrôleur, utilisez un autre port dans le bloc fonction pour que le serveur et les clients puissent communiquer.

Ce tableau décrit les sorties du bloc fonction :

Sortie

Type

Valeur par défaut

Description

xBusy

BOOL

-

Lorsque la valeur est TRUE, le bloc fonction traite une requête de client.

Lorsque la valeur est FALSE, le bloc fonction a fini de traiter une requête de client.

Le bloc fonction doit être maintenu dans une tâche active du programme d'application tant que xBusy a la valeur TRUE. Si tel n'est pas le cas, les tables de données sont mises à 0 et les sorties du bloc fonction restent statiques.

xError

BOOL

-

La valeur TRUE indique qu'une erreur a été détectée. L'exécution du bloc fonction est terminée.

Le bloc fonction doit être réinitialisé pour réactiver la communication.

byClientConnections

BYTE

0

Nombre de connexions actives.

Codes de retour

Ce tableau répertorie les valeurs des codes de retour de la bibliothèque SE_ModbusTCP_Slave, qui sont envoyées aux clients en réponse à différentes requêtes erronées ou à des opérations réussies :

Nom

Type

Valeur

Description

RESPONSE_SUCCESS

BYTE

16#0

Communication réussie.

ILLEGAL_FUNCTION

BYTE

16#1

Code de fonction non pris en charge par le serveur.

ILLEGAL_DATA_ADDRESS

BYTE

16#2

Offset de registre non pris en charge par le serveur.

ILLEGAL_DATA_VALUE

BYTE

16#3

Valeur incorrecte.

SLAVE_DEVICE_FAILURE

BYTE

16#4

Erreur détectée sur l'équipement du serveur.

ACKNOWLEDGE

BYTE

16#5

Réponse du serveur à une requête valide du client.

SLAVE_DEVICE_BUSY

BYTE

16#6

Réponse du serveur à la requête du client envoyée pendant une opération en cours.

GATEWAY_PATH_UNAVAILABLE

BYTE

16#A

Erreur détectée pendant la communication via une passerelle (passerelle mal configurée/occupée)

GATEWAY_DEVICE_FAILED_TO_RESPOND

BYTE

16#B

Aucune réponse de l'équipement connecté à la passerelle.

Liste de constantes globales

Le tableau ci-dessous présente la liste de constantes globales (LCG) de la bibliothèque SE_ModbusTCP_Slave :

Nom

Type

Valeur

Description

MODBUS_TCP_MAXCLIENTS

UINT

10

LCG non modifiable contenant le nombre maximum de connexions actives.