Je reviens vers concernant la communication en Modbus via une CP340 (1CH00) car ça fonctionne parfaitement malgré quelques bugs...
Voici les éléments à télécharger:
https://www.dropbox.com/sh/rkitxnirlvyj ... GcPxa?dl=0
Pour ma part, j'ai utilisé uniquement la fonction ModbusRTU en esclave (MBSL340.zip) car je devais faire communiquer un afficheur Magelis XBTGT avec une CPU 318-2 munis du coupleur CP340.
Avant de commencer, il faut vérifier si votre CPU accepte d'utiliser les fonctions P_RCV et P_SEND pour utiliser le bloc FB36. Si elle n'est pas compatible avec ses fonctions, il faudra éclater la protection "Know-how" et modifier le bloc directement. C'est ce qu'il m'est arrivé....
Quand vous ouvrez le projet du fichier ZIP (MBSL340.zip), vous allez vous trouver avec un bloc fonctionnel FB36 (MBSL340), les blocs FB2 (P_RCV), FB3 (P_SEND) ainsi que les SFB 52, 53 et 24 et les DB40, 41, 43 et 44 pour effectuer les échanges. Il faut tout prendre et copier le tout dans un nouveau projet avec votre configuration. N'oubliez pas de configurer le coupleur CP340 avec les paramètres associés avec celui du Maitre Modbus (9600 (obligatoire), 8 bits, parité paire).
Ensuite, il faut placer la fonction FB36 en y créant le bloc d'instance associé, et y renseigner:
Les entrées:
- LADDR: Adresse du coupleur dans le HWConfig (256 pour ma part)
- SLAVE: L'adresse esclave que vous voulez lui donner
- DB_COILS: Le DB pour la fonction Modbus 1
- DB_INPUTS: Le DB pour la fonction Modbus 2
- DB_IREGS: Le DB pour la fonction Modbus 3
- DB_HREGS: Le DB pour la fonction Modbus 4
- SLADDR: Adresse de l'esclave reçu
- FCODE: La code fonction Modbus reçu
- START: L'adresse de début reçu
- NOREGS: La longueur reçu
- DONE: Fin de la réception/envoi (non fonctionnel)
- ERROR: Erreur pendant la réception ou l'envoi
- STATUS: Le mot d'erreur (0h - Aucune erreur, E0FFh - Adresse esclave incorrect, xx01h - Fonction non supporté, xx02h - DB non valide, ou adresse demandé en dehors de la plage)
Les entrées/sorties:
- INIT: Réinitialise le bloc