TwinCAT 3 & IO-Link IFM

Projet TwinCAT 3 IO-Link

Le matériel mis en oeuvre dans cet article :

Le Runtime TwinCAT constituera notre PLC et va gérer la communication avec le Master IO-Link Profinet. Le schéma suivant résume le montage :

Les appareillages Profinet s'intègrent "naturellement" dans l'éco-système Siemens mais il est également possible d'associer ce matériel à TwinCAT 3, où classiquement, on utilise la communication EtherCAT. La procédure sera très proche de la mise en oeuve d'un coupleur Ethercat vu dans l'article précédent, mais nécessitera de configurer manuellement le matériel.

Configuration du Master IO-Link

Le logiciel Moneo d'IFM

On utilisera le logiciel Moneo dont une licence est fournie avec le Kit IO-Link d'IFM.

Il permet de configurer :

La configuration réseau choisie pour le Master est :

Il est nécessaire que la carte réseau de votre PC soit sur la même plage d'adresse que le Master IO-Link. Dans cet exemple, l'@IP du PC est réglée à 192.168.1.44.

Le détecteur de distance O5D150

Pour le détecteur de distance O5D150, il n'y pas grand chose à vérifier, la distance de détection est réglée à 100 cm, quand la distance mesurée est inférieure à 100 cm, la sortie SwitchState vaut 'True' et passe à 'False' quand la distance dépasse 100 cm. La plage de mesure du détecteur est comprise entre 5 cm et 200 cm.

Le bouton capacitif KT6101

Pour le bouton capacitif, il y a plusieurs modes de fonctionnement possible

plusieurs choix de couleurs de fonctionnement, de réglage de sensibilité, etc. Dans ce contexte, le mode Bistable avec deux couleurs prédéfinies est choisi:

Avant de se déconnecter du logiciel Moneo, on n'oublie pas de faire un write des modifications effectuées.

Association du Master IO-Link à TwinCAT

Mise en place de la liaison Profinet

Après avoir crée un projet TwinCat, développer l'arborescence, et faire un clic droit sur :

On sélectionne un Profinet I/O Controller (RT)

Sur Device 1, on va faire un clic droit :

Et choisir dans Miscellaneous

A ce Profinet I/O Device, on associe le fichier GSDML du MAster IO-Link Profinet AL1100. Le fichier GSDML est disponible sur le site d'IFM.

Configuration IP du Master IO-Link

Il faut modifier l'adresse IP en fonction de celle associée au Master IO-Link. Avec Moneo nous l'avions configuré à :

C'est cette valeur que nous allons saisir

Ajout des capteurs IO-Link

En développant l'arborescence, dans API -> Term2 (4 ports), faire :

Au départ, les SubModules associés aux SubSlot 2,3,4,5 sont vides. Nous allons les configurer de la manière suivante :

Configuration de la PLC

Programme Main et Fonctions

Faire un clic droit sur PLC et faire :

Choisir un Standard PLC Project que nous nommerons PLC1.

Fonction pour le capteur de distance

Nous allons dans un premier temps créer une fonction permettant de récupérer et mettre en forme des données du capteur de distance O5D150. Après avoir développé l'arborescence de PLC1, sur POUs, faire un clic droit et faire un Add POU :

puis faire Open.

Avant de commencer à coder la fonction, il est nécessaire de comprendre le formatage des données du capteur O5D150.

La documentation IFM montre que deux octets (Bytes) sont utilisés pour former un mot (Word 0) de 16 bits.

Il faut faire attention à la lecture des données, dans ce cas précis :

La distance est codée sur 12 bits et correspond au regroupement suivant :

Différentes opérations seront à effectuer :

Fonction O5D150 : variables

Deux variables de sortie seront crées:

Variables d'affectation

aInputBytes AT %I* : ARRAY[0..1] OF BYTE;

c'est les variables que nous allons utiliser pour associer les deux octets d'Input contenus dans la trame IO-Link du O5D150.

Fonction O5D150 : instanciation et appel de fonction

Pour que le fonction O5D150 puisse être utilisée par le main, il est nécessaire

  VAR
      fbO5D150  :   FB_O5D150;
  END_VAR
  fbO5D150();

La capture d'écran ci-dessous synthétise ces actions :

Fonction O5D150 : liaisons variables et I/O

Avant de démarrer le développement du code de la fonction, il est nécessaire de créer les liaisons entre les variables physiques du Master IO-Link et les variables crées dans la fonction. Commencer par faire un activate de votre projet, suivi d'une sauvegarde et d'un build. Un onglet PLC1 Instance devrait apparaître avec les deux octets de variables d'affectation (d'instanciation) que nous venons de créer. Nous pouvons maintenant faire le Link de ces variables avec les Input du Master IO-Link.

Sur la variable MAIN.fbO5D150.aInputBytes[0], faire Change Link et associer la variable Input data 2 Bytes[0] associé à la trame IO-Link du capteur O5D150.

Sur la variable MAIN.fbO5D150.aInputBytes[1], faire Change Link et associer la variable Input data 2 Bytes[1] associé à la trame IO-Link du capteur O5D150.

on vérifie dans l'arberescnce du al1100 que des petites apparaisent dans Input data 2 Bytes [0] [1], preuve que les liens sont pris en compte.

Fonction O5D150 : le programme

Ci-dessous, un exemple de programme permettant de construire le mot de 16 bits avec des décalages. TO-WORD correspond à une opération de conversion de type, ici, la variable BYTE est convertie en WORD.

Il reste à faire le build, puis cliquer sur le Mode Run (case verte avec la roue). Un message d'erreur de ce type peut apparaître. J'ai éliminé ce message en mettant un temps de cycle à 16 ms sur le cycle PLC.

En configuration d'essai, la distance mesurée est de 20 cm

Le programme nous renvoit bien 20 cm pour nCurrentDistance et bSwitchState est bien à TRUE car l'on est inférieur à 100 cm.

Ajout du bouton Capacitif KT6101

Configuration et programme

Le mapping mémoire donné par IFM pour le KT6101 est le suivant :

Les étapes sont identiques à celles présentées précédemment et ci-dessous, une proposition de code fonction pour gérer le bouton. La valeur PDV1 correspond à une valeur d'appui, avec la valeur 3000, le doigt touche complètement le bouton, en dessous de 1000, on effleure à peine.

Tests et essais

La fonction réagit correctement à l'appui du bouton.

Bilan

TwinCAT offre la possibilité d'associer "facilement" du matériel Profinet au Runtime. Il reste à vérifier :

TwinCAT est normalement prévu pour fonctionner avec le bus de terrain EtherCAT qui aurait permis de simplifier encore la procédure ( Master IO-Link EtherCAT AL1333 d'IFM), mais il reste étonnament convivial concernant l'intégration de protocoles tiers.


Revision #2
Created 29 June 2023 10:14:19 by Philippe Celka
Updated 4 July 2023 09:24:13 by Philippe Celka