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.
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. |
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. |
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. |