Guide d’intégration
LDH292 — raccordement IO-Link
Capteur d’humidité et de température de l’air. Deux valeurs process sur un seul port IO-Link. Conçu pour l’armoire électrique.
ifm electronic LDH292
ifm AL1102
IO-Link
Siemens
Capacitif
Maître PROFINET générique (ex. ifm AL1102)
Caractéristiques de l’appareil
| Grandeurs mesurées | Humidité relative + température |
|---|---|
| Plage humidité | 0 … 100 % RH — précision 3 % (20 à 80 %), résolution 0,1 |
| Plage température | −40 … +80 °C — précision ±0,3 K, résolution 0,1 |
| Principe | Capacitif |
| Alimentation | 18 … 30 V DC — 13 mA |
| Interface | IO-Link 1.1 — COM2 (38,4 kBaud) |
| Port maître requis | Classe A |
| Temps de cycle mini | 4,5 ms |
| DeviceID | 1337 |
| Protection | IP 20 — sonde seule IP 57 |
| Montage | Rail DIN TH35, vertical, raccordement en haut |
| Raccordement | 1 × M12 codage A, 4 broches |
CompatibilitéLe AL1102 dispose de 8 ports classe A et gère IO-Link 1.0 à 1.1.2 — compatible.
Câblage
M12 codage A — 4 broches — Non blindé, 3 à 5 conducteurs, 20 m maximum
| Broche | Fil | Fonction |
|---|---|---|
| 1 | BN Brun | L+ — alimentation 18…30 V DC |
| 2 | WH Blanc | Non utilisé |
| 4 | BK Noir | C/Q — communication IO-Link |
| 3 | BU Bleu | L− — 0 V |
Une liaison IO-Link n’utilise que 4 conducteurs
L’alimentation, le 0 V, la ligne de communication C/Q, et un quatrième non utilisé en classe A.
Peu importe que le connecteur en compte 8 : les autres fils restent inutilisés et doivent être isolés individuellement.
Intégration dans TIA Portal
Procédure « IO-Link via un maître PROFINET » — commune à tous les appareils raccordés de cette façon.
| 01 Télécharger le GSDML du maître | Le constructeur du maître fournit le fichier GSD qui décrit l’appareil, ses paramètres et ses données process. |
|---|---|
| 02 Installer le GSDML dans TIA Portal | Gérer les fichiers de description des appareils, puis pointer le dossier. Le projet doit être fermé, sinon TIA refuse. |
| 03 Insérer le maître dans le projet | Le maître apparaît dans le catalogue après installation. Le glisser dans la vue réseau et l’affecter au système PROFINET de la CPU. |
| 04 Déclarer les ports | Glisser le module correspondant au nombre de ports sur le slot 1 du maître. La configuration devient accessible via le slot 1.1. |
| 05 Récupérer et installer l’IODD du capteur | L’IODD décrit le capteur : paramètres, données process, plages. Source officielle : IODDfinder. Prendre la version correspondant au firmware. |
| 06 Configurer le port | Mode IO-Link, révision attendue, temps de cycle, validation du device par DeviceID. Un port mal configuré ne remonte rien. |
| 07 Relever la plage d’adresses | TIA attribue automatiquement une plage d’entrées au port. C’est la base de tout l’adressage dans le programme. |
Structure des données process
64 bits — 8 octets — les zones hachurées ne sont pas utilisées
Humidité
MSB
MSB
Humidité
LSB
LSB
—
—
Température
MSB
MSB
Température
LSB
LSB
—
Device status
0
1
2
3
4
5
6
7
Humidité — octets 0-1Température — octets 4-5Device status — octet 7
Inutilisé
| Donnée | Offset bit | Longueur | Type | Plage brute | Conversion |
|---|---|---|---|---|---|
| Humidité | 48 | 16 bits | INT | 0 … 1000 | ÷ 10 → % RH |
| Température | 16 | 16 bits | INT | -400 … 850 | ÷ 10 → °C |
| Device status | 4 | 4 bits | UINT | 0 … 4 | bits d’état |
Exemple de lectureValeur brute 435 sur les octets 0-1 → 43,5 % RH. Valeur brute -85 sur les octets 4-5 → −8,5 °C.
Valeurs spéciales à filtrer
| Valeur brute | Signification | Concerne |
|---|---|---|
| −32760 | UL — sous la plage de mesure | Température |
| 32760 | OL — au-dessus de la plage | Température |
| −32762 | cr.UL — dépassement critique bas | Température |
| 32762 | cr.OL — dépassement critique haut | Température |
| 32764 | NoData — pas de donnée valide | Humidité et température |
Device status
| 0 | Appareil OK |
|---|---|
| 1 | Maintenance requise |
| 2 | Hors spécification |
| 3 | Contrôle fonctionnel |
| 4 | Défaillance |
Maintenance conditionnelleCopie du paramètre index 36 dans le canal cyclique : exploitable sans lecture acyclique.
Programmation
// Adresses à adapter à la plage attribuée à votre port. Réseau 1 — Humidité : donnée valide ? ┌─────────────┐ │ <> │ ──────┤ Int ├──────────( humValide ) │ IN1 humRaw│ │ IN2 32764│ ← NoData └─────────────┘ Réseau 2 — Conversion humidité (÷ 10 → % RH) ┌──────────┐ ┌──────────┐ humValide │ CONV │ │ DIV │ ──────┤ ├───────┤ Int→Real ├────┤ Real ├──( humidite ) │IN humRaw│ │IN2 10.0│ └──────────┘ └──────────┘ Réseau 3 — Température : donnée valide ? Les 5 valeurs spéciales sont testées en série : toutes doivent être fausses. ┌─────────────┐ │ <> │ ──────┤ Int ├────── │ IN1 tempRaw│ │ IN2 -32760 │ └─────────────┘ ┌─────────────┐ │ <> │ ┤ Int ├────── │ IN1 tempRaw│ │ IN2 32760 │ └─────────────┘ ┌─────────────┐ │ <> │ ┤ Int ├────── │ IN1 tempRaw│ │ IN2 -32762 │ └─────────────┘ ┌─────────────┐ │ <> │ ┤ Int ├────── │ IN1 tempRaw│ │ IN2 32762 │ └─────────────┘ ┌─────────────┐ │ <> │ ┤ Int ├──────────( tempValide ) │ IN1 tempRaw│ │ IN2 32764 │ └─────────────┘ Réseau 4 — Conversion température (÷ 10 → °C) ┌──────────┐ ┌──────────┐ tempValide │ CONV │ │ DIV │ ──────┤ ├───────┤ Int→Real ├────┤ Real ├──( temperature ) │IN tempRaw│ │IN2 10.0│ └──────────┘ └──────────┘ Réseau 5 — Device status : 4 bits de poids fort ┌──────────────┐ ┌──────────────┐ │ SHR │ │ AND │ ──────┤ Byte ├────┤ Byte ├──( deviceStatus ) │IN statusRaw │ │IN2 16#0F │ │N 4 │ └──────────────┘ └──────────────┘
// Données process LDH292 — 8 octets // Octets 0-1 : humidité (INT, ×0,1 %RH) · 4-5 : température (INT, ×0,1 °C) · 7 : status FUNCTION_BLOCK "FB_LDH292" VAR_INPUT humRaw : INT; tempRaw : INT; statusRaw : BYTE; END_VAR VAR_OUTPUT humidite : REAL; temperature : REAL; humValide : BOOL; tempValide : BOOL; deviceStatus : USINT; maintenance : BOOL; defaillance : BOOL; END_VAR BEGIN IF #humRaw = 32764 THEN // NoData #humValide := FALSE; #humidite := 0.0; ELSE #humValide := TRUE; #humidite := INT_TO_REAL(#humRaw) / 10.0; END_IF; CASE #tempRaw OF -32760, 32760, -32762, 32762, 32764: #tempValide := FALSE; #temperature := 0.0; ELSE #tempValide := TRUE; #temperature := INT_TO_REAL(#tempRaw) / 10.0; END_CASE; #deviceStatus := BYTE_TO_USINT(SHR(IN := #statusRaw, N := 4)) AND 16#0F; #maintenance := (#deviceStatus >= 1); #defaillance := (#deviceStatus = 4); END_FUNCTION_BLOCK // Valeurs aberrantes ? Inversion d'octets Siemens : // humRaw := WORD_TO_INT(SWAP(INT_TO_WORD(humRaw)));
CONT ou SCL ?La mise à l’échelle est plus lisible en SCL.
L’usage courant est d’écrire ce bloc en SCL et de l’appeler depuis le programme CONT.
La version CONT existe pour les sites où le SCL n’est pas autorisé.
Code non validé sur installationGénéré depuis la documentation. À confirmer sur matériel avant mise en production.
Les pièges
| Mode SIO : non | Le capteur ne fonctionne qu’en IO-Link, sans repli en mode standard. Port en DI ou désactivé : il ne remonte rien, et le diagnostic ne le dit pas clairement. |
|---|---|
| Inversion d’octets Siemens | La description d’interface ifm signale que les automates Siemens permutent poids fort et poids faible en adressage par octet. Humidité à 44 800 au lieu de 435 : c’est ça. |
| IP 20 contre IP 67 | Le maître va au bord de la machine, pas le capteur. Le LDH292 est un appareil d’armoire. |
| Mesure jusqu’à 100 %, utilisation jusqu’à 90 % | Plage de mesure et plage d’utilisation ne sont pas les mêmes. Au-delà de 90 % RH ambiants, on sort des conditions d’emploi. |
| Air turbulent interdit | Gaines d’aspiration et point de rosée : mesures erronées. Ne pas recouvrir le capteur. |
Sources
Fiche technique ifm 13.04.2023 · Notice 09/2020 · IODD rév. 1.1 du 27.11.2020
