Comment pouvons-nous aider ?

Print

Sous-programme : Modbus Master RTU pour la lecture des registres de maintien, la lecture des registres d’entrée et l’écriture des registres de maintien

 

Ce sous-programme maître Modbus est très utile si vous souhaitez utiliser notre incroyable automate ACE pour lire ou écrire dans un dispositif esclave Modbus RTU.

Si vous souhaitez connecter l’automate ACE à un variateur de fréquence, un capteur intelligent, un simple afficheur, des E/S déportées ou même un automate ACE !

Ce sous-programme vous permet de :

  • Lire les registres de maintien – Code de fonction 03
  • Lire les registres d’entrée – Code de fonction 04
  • Écriture des registres de maintien – Code de fonction 06

Vous pouvez télécharger le sous-programme et son exemple ici.

Attention, ce Modbus Master n’est pas aussi rapide qu’un Modbus Master natif. Regardez cette vidéo pour vous faire une idée.
Nous interrogeons 8 capteurs de température esclaves Modbus sur le réseau RS485. (ACE-1430)

Comment fonctionne le sous-programme Modbus Master ?

Votre automate ACE doit être configuré comme Type = « Custom » serial port.

Importez dans votre projet les 2 sous-programmes via le bouton « Add Subroutine » :

  • MBCRC16
  • ModbusMaster

Définissez vos requêtes Modbus pour lire et écrire des données. Il est très important de lire d’abord les données et d’écrire ensuite les autres.

Dans notre exemple, nous voulons lire et écrire ce registre Modbus :

Numéro  » n  » de la requête Modbus ID de l’esclave du dispositif modbus esclave
ID esclave[n]
Lecture ou écriture dans le registre ?
FunctionCode[n]
Adresse dans le registre Modbus ?
Registre[n]
[0] 01 03 (lecture des registres de maintien) 00
[1] 01 03 (lecture des registres de maintien) 01
[2] 01 06 (écriture des registres de maintien) 02 (Nous écrivons 65432 dans notre exemple)
[3] 01 06 (écriture dans les registres de maintien) 03 (Nous écrivons dans la balise « ValueMove » dans notre exemple)

Nous utilisons un tableau de « n » éléments pour chaque paramètre

Configurer ces balises :

  • FunctionCode, ui8, is array, 16 (16 si vous souhaitez lire/écrire jusqu’à 16 valeurs dans le registre Modus)
  • SlaveID, ui8, est un tableau, 16
  • Register, ui16, est un tableau, 16
  • Data, ui16, is array, 16

Si, par exemple, vous n’avez que 3 registres à lire/écrire, vous pouvez ajuster le tableau de 16 à 3.

Vous pouvez maintenant compléter votre tableau avec les 3 valeurs pour chaque requête Modbus:

Nous commençons par n = 0

  • SlaveID[0] = 01
  • CodeFonction[0] = 03
  • Registre[0] = 00

et ensuite… n = 1

  • ID esclave[1] = 01
  • CodeFonction[1] = 03
  • Registre[1] = 01

< Important : la dernière ligne doit être SlaveID[n 1] = 00, dans notre exemple SlaveID[4] = 00

Cela permet d’avertir le sous-programme Modbus Master qu’il n’y a plus de registres à lire ! C’est la fin ! Nous reprenons depuis le début (n=0) !

Et ajoutez maintenant le sous-programme ModbusMaster !

Vous devez appeler ce sous-programme à chaque cycle de l’automate.

Vous récupérerez vos données dans le champ Data[n] .

Si vous utilisez la fonction write, n’oubliez pas de saisir la valeur. Dans notre exemple, nous écrivons 65432 dans Data [2] et la valeur d’une autre balise « ValueMove » dans Data [3].