Ecomat Controller V03.00.02

Télécharger au format pptx, pdf ou txt
Télécharger au format pptx, pdf ou txt
Vous êtes sur la page 1sur 211

ifm electronic

CODESYS 3.5
Pour ecomatController CR7xxS
copyrights
Aucun extrait de cette publication ne peut être utilisé (reproduit,
distribué et placé dans le domaine public), ni modifié ou réarrangé sans
autorisation préalable de la société IFM.

Malgré les précautions prises lors de l’élaboration de ce document,


nous ne pouvons garantir l’absence d’erreurs. Nous apprécions donc
tous les commentaires permettant de l’améliorer.
VUE D'ENSEMBLE
VUE D'ENSEMBLE :

CONNECTEURS ET
ALIMENTATION
CONNECTEURS

CAN 0

6
AFFECTATION CONNECTEURS A et B

CONNECTEUR A :

7
AFFECTATION CONNECTEURS A et B

CONNECTEUR B :

8
TENSION D'ALIMENTATION

9
VUE D'ENSEMBLE :

ENTREES / SORTIES
TERMINOLOGIE ENTREE/SORTIES

Entrées/Sorties à la Masse ou au Plus...


Ancienne notation : Binary Lowside Input → CSi Input→ Signal d'Entrée positif (PNP / +VBB)
Ancienne notation : Binary Highside Input → CSo Input→ Signal d'Entrée négatif (NPN / GND)
Ancienne notation : Binary Lowside Output → CSo Output→ Signal positif (+VBBo)
Ancienne notation : Binary Highside Output → CSi Output→ Signal négatif (GND)

Entrées

Sorties

11
TYPE D'ENTREES

Entrées TYPE CR721S CR720S CR711S

TYP IN MULTIFUNCTION-A 24 24 16
•Digital CSi (10k)
•Analog 0..20 mA Tous type de signaux
•Analog 0..10V analogiques tension et
•Analog 0..32V
courant, ou TOR CSi
•Analog Ratio
TYP IN FREQUENCY-A 16 16 8
•Digital CSi (10k)
•Digital CSo Tous type de signaux fréquentiels (comptage
•Edge CSi (Freq, Ratio, Count) impulsions, mesure période, fréquence, ratio,
•Edge CSo (Freq, Ratio, Count) codeurs,...) ou TOR CSi/CSo
TYP IN RESISTOR-A 4 4 4
•Digital CSi (10k)
•Resistor 0..30kΩ Mesure de Résistance ou TOR CSi
16 4 0
TYP IN DIGITAL-A
•Digital CSi (10k) TOR CSi : compatibilité avec majorité des
capteurs/signaux TOR
8 8 8
TYP IN DIGITAL-B
•Digital CSi (3,3k) TOR CSi : capteurs impédance
particulière exemple: capteurs 2 fils
Total 68 56 36

12
SCHEMA BLOC INTERNE DES ENTREES

Analogique/Multifunction Digital

Fréquence / Comptage Résistance

13
TYPE DE SORTIES
Type de sortie CR721S CR720S CR711S
TYP OUT PWM-25-A 18 12 9
•Digital CSo
•PWM / PWM-i CSo
PWM 2,5 A Signal positif: Mesure de courant 1%

TYP OUT PWM-25-B 18 12 9


•Digital CSo
•PWM CSo PWM 2,5 A Signal Positif : Mesure de courant 5%

TYP OUT PWM-40-A 6 4 3


•Digital CSoO
•PWM / PWM-i CSoO PWM 4 A Signal Positif : Mesure de courant 1%
TYP OUT PWM-40-BRIDGE-A 12 6 6
•Digital CSo / CSi
•PWM CSo / CSi PWM 4 A Signal Positif/Négatif et H-Bridge
•PWM-I Cso
•H-Bridge Mesure de courant 1%

TYP OUT VOLTAGE-A 2 2 1


•0..10V (<5mA)
Sortie Analogique 0-10V

TYP OUT VOLTAGE-B 1 1 1


•5 V (400mA)
•10V (200mA) Sortie Alimentation Périphérie 5V ou 10V
Total 57 37 30

14
SCHEMA BLOC INTERNE DES SORTIES

H-Bridge Alimentation Externe :


Utilisez des diodes!!!

PWM A PWM B
Mesure de courant 1 % Mesure de courant 5 %

15
OUTIL EXCEL : AIDE A LA CONFIGURATION

R360-3 IO Configuration.xlsx

16
VUE D'ENSEMBLE :

CABLAGE
CABLAGE : ALIMENTATIONS

18
Diagnostic amont et aval des "relais statiques" des groupes de sorties

19
CLAMP 15 / 30 : GESTION DE L'ALIMENTATION

PRINCIPE DE GESTION DU +APC :


Pour que le contrôleur démarre, il faut : VBB30>8V et VBB15>5V. En interne, le "relais statique" général
(Latching) est activé.
Le programmeur a accès (via l'applicatif) à la tension +APC (VBB15). Il peut ainsi savoir si le contact est coupé et,
le cas échéant prendre les mesures nécessaires pour éteindre "proprement" le système.
Le "relais statique" général peut être désactivé via l'application codesys (FB SupplySwitch voir plus loin).

20
CABLAGE : ENTREES ANALOGIQUES

21
CABLAGE : ENTREES RESISTIVES

22
CABLAGE : SIGNAL ENTREE NEGATIF TOR CSo

23
CABLAGE : SIGNAL ENTREE NEGATIF TOR CSo

Dans le cas où le diagnostic est


nécessaire sur la sortie (NPN), il
est nécessaire de fournir le VBBx
via une autre sortie (PNP) pour
pouvoir mesurer le courant

24
CABLAGE : MIXITE DES TENSIONS DE SORTIES

25
CABLAGE : VUE GENERALE

26
VUE D'ENSEMBLE :

CPU et MEMOIRE
CPU et MEMOIRE

Processeur triple core 32 bit Infineon AURIX™


2 API internes STANDARD et SAFETY jusqu'à SIL2/PLd

MÉMOIRE FLASH RAM Mémoire Rémanente


Totale : 9 Mb Total : 2,7 Mb Total : 10 Kb
Disponible : 5,5 Mb Disponible : 1,5 Mb Disponible : 10 Kb
IEC code Safe IEC RAM Safe IEC retain Safe
(Taille Configurable) (Taille Configurable) (2,5 Kb)
IEC code Non Safe IEC RAM Non Safe IEC Memory byte (%MB) Safe
(Taille Configurable) (Taille Configurable) (2,5 Kb)
Fichiers Utilisateur IEC retain Non Safe
(768 Ko) (2,5 Kb)
IEC Memory byte (%MB) Non Safe
(2,5 Kb)

Configuration IEC-Code IEC-RAM IEC-Code IEC-RAM


Possible Safety PLC Safety PLC Standard PLC Standard PLC
Configuration 1 1,0 Mb 512 Kb 3,5 Mb 1024 Kb
Configuration 2 2,25 Mb 768 Kb 2,25 Mb 768 Kb
Configuration 3 3,5 Mb 1024 Kb 1,0 Mb 512 Kb

28
VUE D'ENSEMBLE :

LED
COMPORTEMENT DES LED SYS0 ET SYS1

4 LED APPLx :
Ces LED sont utilisables librement (Couleur RGB)
et contrôlées par l'applicatif Codesys

LED SYS0 et SYS1 :

30
COMPORTEMENT DES LED SYS0 ET SYS1

31
AVANT DE COMMENCER
AVANT DE COMMENCER:

Utilisation du Mainteance Tool


UTILISATION DU MAINTENANCE TOOL :
TELECHARGEMENT DES OUTILS

Téléchargement du Package : www.ifm.com/fr


Taper la référence du contrôleur dans Choisir l'onglet téléchargement puis "Package de code source
l'onglet de recherche et le sélectionner : et documentation".

Un login vous est demandé si vous n'en n'avez pas


créez en un.

Choisir le package le plus récent dans le cadre d'un nouveau projet :

34
UTILISATION DU MAINTENANCE TOOL :
TELECHARGEMENT DES OUTILS
Contenu du Package :
Le dossier contient plusieurs fichiers important :
- Le manuel de programmation du contrôleur
- La release note du firmware qui recense plusieurs informations importantes concernant le système
- Le manuel de programmation Codesys Safety SIL2
- Le firmware (dossier zip) contenant aussi le package codesys

Télécharger et installer la dernière version de Maintenance TOOL :

35
UTILISATION DU MAINTENANCE TOOL :
CONNEXION AU CONTRÔLEUR
Connexion au Contrôleur :
Clic Droit sur Ecomat mobile -> Load AddIn -> Ethernet Clic Droit sur Ethernet-> Load AddIn -> EcomatController

Avant de vous connecter, vérifier que l'@ IP du


PC est "compatible" (même domaine) que celle
du contrôleur.
@IP du contrôleur par défaut : 192.168.82.247
Masque de sous réseau : 255.255.255.0

36
UTILISATION DU MAINTENANCE TOOL :
INFORMATIONS CONTRÔLEUR

37
UTILISATION DU MAINTENANCE TOOL :
CHARGEMENT FIRMWARE ET APPLICATION
Choisir le Menu Software -> Firmware Update -> Firmware File … -> Sélectionner le fichier zip contenu dans le package

Les fonctionnalités Load From/To Device vous permettent de récupérer le contenu d'un contrôleur ou de charger un
nouveau contenu dans le contrôleur. Deux possibilités sont offertes pour gérer les fichiers de façon unitaire ou des
packages complet

38
UTILISATION DU MAINTENANCE TOOL :
CHARGEMENT FIRMWARE ET APPLICATION
Lors du chargement, vous avez la possibilité de choisir tous le package ou une partie seulement (dans ce cas les
éléments présents dans le fichier zip et disponible pour le chargement apparaissent en surbrillance dans le menu. Il est
ainsi possible de gérer que l'application (sans les retains par exemple).

39
UTILISATION DU MAINTENANCE TOOL :
MENU DEVICE

Le menu "Device-> Interfaces" permet de paramétrer les interfaces de communication.

Le menu "Device-> Function Calls" permet de supprimer les application, mettre en RUN/STOP faire un Reset à Froid

Pour plus d'informations sur l'AddIn EcomatController, tapez F1 pour l'aide en ligne ou référez-vous au manuel ici.

40
UTILISATION DU MAINTENANCE TOOL :
PARTICULARITE POUR IOMAPPING

Attibution des Entrées/Sorties Application SAFETY et STANDARD


Par défaut toutes les Entrées/Sorties sont affectées à l'application standard. Pour modifier cette répartition, il faut
éditer le fichier IO_Mapping.cfg du contrôleur.

Pour cela il est nécessaire d'utiliser un autre outil : l'update tool disponible dans la zone de téléchargement

Vous trouverez plus d'informations concernant l'IO Mapping plus loin dans ce document.

41
UPDATE TOOL :
ALTERNATIVE AU MAINTEANCE TOOL

Mise à jour Firmware / ifmOS / RTS via fichier batch


CR07xx Package disponible sur le site web ifm :

Important: Activer Windows Feature TFTP!!!

42
UPDATE TOOL :
ALTERNATIVE AU MAINTEANCE TOOL

Pour info, utilité des différents fichier fournis :


• „cmd.ifm“ - Goto Bootloader File „cmd.ifm“ – OFF/ON après chargement met le contrôleur en statut
Bootloader (pas d'OS„boot.ifm“ - Bootloader file

• „ifmOS.ifm“ - FW / ifmOS / RTS File : contient l'OS

• „ CR07xx_Vx.x.x.x_sissys.ifm“ - System information File – Il contient les informations de la cible

Pour procéder à la mise à jour :


1 – Décompressez le Fichier UpdateTool_VX.X.X.X.zip
directement sous la racine d'un de vos disque dur
2 – Vérifier que l'alimentation du contrôleur est
garantie et stable
3 – Exécutez le fichier de commande
4 – Suivez les étapes et instructions

43
MISE A JOUR DE L'OS DU CONTRÔLEUR
AVEC UPDATE TOOL
Exécuter le .bat et ignorer les avertissements : Choix 4 : Le menu suivant apparaît

Choisir 9..14 En fonction du firmware souhaité et valider. L'installation commence, le contrôleur reboot
automatiquement à chaque phase. Attendre la fin du processus jusqu'à l'apparition de ce message.

44
AUTRES FONCTIONNALITES DE L'UPDATE TOOL

Autres fonctionnalités :
Il est possible comme avec le maintenance Tool :
- D'écrire les fichier Iomapping et comconf
- De supprimer les applications
Mais aussi :
- De lister/vérifier les compatibilités HW/FW
- De modifier le mot de passe
- De lire les infos du contrôleur

Les menus "utilites" et "application features" donnent accès à plusieurs autres fonctions download/upload
applications, retain, comconf, iomapping, fichier de log des défauts, START/STOP des applications, ….

45
AVANT DE COMMENCER:

En Savoir plus ...TFTP


Fonctionnalité TFTP

La fonctionnalité TFTP:
Le serveur TFTP intégré au contrôleur permet l'envoi (PUT) et la réception (GET) de fichier vers/du
contrôleur du/vers le PC.
Vous trouverez quantité de freeware sur internet fournissant des interfaces qui vous éviteront de taper
des commandes sous windows cmd.exe.
Ci-dessous un exemple Tftpd32 by Ph. Jounin
Pour plus de détail sur le contenu des répertoires merci de consulter le Manuel Système

47
Fonctionnalité TFTP

Accès via Codesys -> Fenêtre "Device Setting" -> Onglet "Files"
La fonctionnalité TFTP permet ainsi l'accès à différentes données :
- Les applications (fichiers compilés, pas de fichiers sources) Safe et Standard
- Les variables rémanentes MB et retain
- La configuration (Mémoire, Can, Ethernet, IO-Mapping,…)
- Le répertoire /data (données utilisateur accès libre)
- ….

48
AVANT DE COMMENCER:

INSTALLATION
CODESYS ET PACKAGE
INSTALLATION DE CODESYS

Installation...
CODESYS3.5 nécessite un minimum de ressources.

La configuration matérielle recommandée est la suivante :

● processeur: Intel COREi7 ou équivalent


● RAM: 4GB minimum
● ROM: 200GB SSD minimum
● OS: Windows7 ou Windows10

CODESYS3.5 doit être installé à l‘aide de son outils


d‘installation. Cette installation dure environ 30min
suivant le matériel.

L‘installation nécessite les droits administrateur et peut


être lancée depuis l‘icône appropriée.

Pour éviter tout conflit avec d'éventuelle installation


antérieures de codesys V3.5 (SP5,SP8,SP9,...), nous
recommandons l'installation de codesys SP11 dans un
répertoire dédié (ex : 3S CODESYS SP11).

50
INSTALLATION DES PACKAGES
Sous CoDeSys 2.3 , toutes les ressources spécifiques
de chaque « target » étaient installées via l'outil
séparé "InstallTarget.exe"

Avec CODESYS3.5, nous ne parlons plus de « Target »,


mais de « package ». Le package est assez similaire à
une archive compressée zip. Le gestionnaire intégré
de package permet d'installer (extraire) tous les
dossiers pertinents qui l’accompagnent. Vous pouvez
utiliser la procédure suivante pour installer les
packages:

● MENU  Tools  Package Manager …


● Double-clique sur package file …

L'installation nécessite de lire (attentivement !) un


avertissement. Vous pouvez directement cocher la
case appropriée pour procéder rapidement sans lire...
Pour les contrôleurs M307xx et CR7xx Il faut installer
3 packages Nous recommandons d'utiliser les
versions les plus récentes :

51
INSTALLATION DES PACKAGES

Le package intègre un certain nombre de fichiers de configuration


pour des périphériques CANOPEN (fichier eds). A l'invite du
package manager (voir ci-contre):
permettant d‘avoir accès à l‘explorateur, choisissez le répertoire :
● Cliquez sur le petit icône "..."
● Destination: \CODESYS\IFM_EDS (Par exemple)
● [OK] pour valider la sélection

Valider les étapes suivantes avec le bouton [Suivant], différents


fichiers seront stockés dans les dossiers appropriés.

52
Premier Projet
Premier Projet :

Nouveau Projet
PREMIER PROJET : NOUVEAU PROJET

Premier démarrage…
Lorsque l’installation est terminée, CODESYS 3.5 peut
être lancé via le menu de démarrage ou avec un
raccourci sur le bureau. Dans la page d’acceuil, vous
aurez besoin de procéder à différentes étapes pour la
mise en place du projet. Vous pouvez utiliser
l'assistant de projet ou l'approche générique via

MENU  New
Il est recommandé d'utiliser les "templates" (modèles).
L’usage d’une arborescence de répertoire explicite est aussi
recommandée...

Dorénavant, nous allons utiliser le libellé CODESYS pour


CODESYS3.5.

55
NOUVEAU PROJET

Le Template contient les éléments


principaux et indispensables pour un
nouveau projet. Quand vous serez
familiarisés avec ces éléments, vous
pourrez supprimer ceux que vous
n'utilisez pas.
● Device
● Program interface Editor
● POUs
● Task Manager
● Library Manager
● Fieldbus

ATTENTION!
Toutes les versions de Devices &
CODESYS3.5 ne sont pas interfaces, Local
nécessairement compatibles Blocks
Messages & Watchlist
avec votre matériel !!!

56
Premier Projet :

Communication
PREMIER PROJET : COMMUNCATION

COMMUNICATION AVEC LA CIBLE

Pour communiquer avec la cible, procédez de la manière suivante


MENU  Online  Login
Une boite de dialogue apparait…
Confirmez [YES] ...

Un Double Clic sur Device affiche


l'onglet ci-contre. Effectuez les
actions :
● Scan Network
● Sélectionner la cible Trouvée
● OK

58
Premier Projet :

Conseil
CONSEILS

CONSEIL 1: AUTOSAVE

Configurez la fonction AUTOSAVE :

MENU  Tools  Options  Load


and Save

Dans le menu At startup, vous pouvez


aussi configurer le comportement au
lancement de Codesys :

Validez avec [OK] …

60
Premier Projet :

Création de POU
CREATION DE POU

Ajouter des programmes, par exemple PLC_PRG

CODESYS distingue 3 type de POU (Programm


Organisation Unit).

● PROGRAM
● FUNCTION BLOCK
● FUNCTION

Pour qu‘un programme soit executé, il doit être


appelé par une tâche. Vous pouvez pour cela
utiliser le programme principal PLC_PRG.

Click droit sur Application: Add Object  POU

NOTE :
PLC_PRG n'est plus obligatoire ...
Vous pouvez le garder pour la compatibilité
avec les projets plus anciens.

62
CREATION DE POU

Créer le PLC_PRG (ou Autre POU de votre choix)

A l‘aide du menu Add POU (clik droit sur Application), vous allez
maintenant ajouter le bloc contenant votre code. L‘appellation
PLC_PRG n‘est plus obligatoire. Pour des raisons de compatibilité
avec le CODESYS V2.3, nous allons conserver cette appellation.
Choisissez votre langage préféré entre FBD et ST.

Validez [Add] …

CODESYS prend en charge les langages IEC 61131 suivants :

● IL (Instruction List)
● LD (Ladder)
● FBD (Function Block Diagram)
● SFC (Sequential Function Chart)
● ST (Strutured Text)
● CFC (Continuous Function Chart) = FBD sans Réseau

63
Premier Projet :

Les Tâches
LES TÂCHES : CREATION

Créer une Nouvelle Tâche

Pour être exécuté, un programme doit être appelé


par une tâche ou par un autre programme.
Pour créer la tâche appelant le PLC_PRG :

Click droit sur Task Configuration [Add] Add Object


-> Task [Add]
Vous pouvez maintenant choisir le comportement
souhaité :

● Cyclic : Exécution cyclique avec période fixe


● Freeweeling: Exécution en boucle, période
variable suivant code.
● Event: Exécution déclenchée par un évènement
● External: Exécution conditionnée par une donnée
externe

Il est possible de configurer jusqu'à 4 tâches


différentes. Seul les propriétés External et Cyclic
sont disponibles pour les CR7xxS

65
LES TÂCHES : CREATION

Configuration de la tâche PLC_PRG

Dans cet exemple , le PLC_PRG sera exécuté de façon cyclique toutes les 100ms.

Dans la fenêtre TASK, cliquez sur Add CALL puis sélectionnez PLC_PRG dans application. Validez
par [OK] …
Renseignez alors la priorité (0 à 3, 0 étant le plus prioritaire), le type (cyclic dans notre cas) et la
période (T#100ms dans notre cas)

66
LES TÂCHES : PREEMPTION ET PRIORITE

Comportement du système et gestion des priorités pour plusieurs tâches :


Prenons l'exemple de 2 tâches Main et CAN_Task configurées ainsi :

La tâche au temps de cycle le plus court doit être la plus prioritaire. Si une tâche moins prioritaire est en cours
d'exécution, elle peut-être interrompue par une tâche plus prioritaire. C'est ce qu'on appelle la préemption.

1: Priorité
2: Temps
3: CAN_Task priorité 0 (la plus élevée)
4: Tâche Main priorité 1
5: Intervalle CAN_Task = 5 ms
6: Intervalle main task = 20 ms
7: Préemption : Interruption
d'exécution de la tâche Main par la
tâche CAN_Task.

67
LES TÂCHES : MONITORING

Codesys permet de visualiser les temps relatifs à chaque tâche en ligne :

Pour choisir les intervalles des différentes tâches et notamment connaître la limite en fonction de l'application, il est
utile de tester et surveiller les temps d'exécution.
Une méthode simple consiste à configurer une seule tâche et appeler l'ensemble des POU de l'application dans cette
tâche sans configurer le chien de garde. Le temps moyen d'exécution de cette seule tâche permettra de connaître le
temps de la tâche la plus prioritaire de l'application.
En effet l'intervalle d'exécution de la tâche la plus prioritaire doit permettre aux autres tâches de s'exécuter
normalement et en respectant le cycle défini.
Si la tâche la plus prioritaire à un temps de cycle de 5ms et qu'elle s'exécute en 4ms, cela ne laisse qu'une ms aux
autres tâches pour s'exécuter à cause du principe de préemption.
68
LES TÂCHES : Pour les Experts

La librairie codesys CmpIecTask permet de manipuler et obtenir des infos sur les tâches

exemple de code ici.

69
Premier Projet :

Environnement Codesys
ORGANISATION DES PROGRAMMES

Organisation des programmes

Le menu View  POUs permet de faire apparaitre une


fenêtre séparée destinée à recevoir tout les éléments
devant être disponibles à plusieurs endroit du projet.

Un POU peut aussi être cantoné à une application


particulière :

● Project-global: disponible pour toutes applications


● Application locale: application unique

71
OPTIONS / PREFERENCES

Nous allons réaliser les étapes suivantes :

● Créer
● Commenter
● Compiler
● Charger
● Lancer

Avant de programmer, choisir ses préférences

MENU Tools  Options…  FBD, LD ou IL editeur

72
LIBRAIRIES

Charger les librairies

Les librairies peuvent être chargées à l‘aide de library manager:

Library Manager  Add Library  Click "Advanced…" -> IfmR360-3 (par exemple)

73
Premier Projet :

Exercice
PREMIER PROJET : EXERCICE

Description du comportement du programme

Avant la programmation, il est essentiel de décrire


avec précision le comportement à obtenir, c‘est la
phase de spécification.

Pour notre exemple, le comportement à obtenir est


le graphique ci-dessus. Page suivante, vous
trouverez un exemple de spécification.

Créer une „Fonction block“…

Clic droit sur Application, sélectionnez Add


Object, POU

La boite de dialogue permet de choisir le nom, le


type de programme et le langage

● Pour notre exemple, entrez MyBlock pour le


nom, sélectionnez Function block pour le type
et FBD pour le langage.

Validez par [Add] …

75
TRUC ET ASTUCES

TIP 2:

Doublecliquez sur
l‘onglet…

…pour séparer l‘éditeur FBD.

76 / 102
Premier Projet :

L'éditeur FBD
L'EDITEUR FBD

Ajouter une BOX

Faire glisser l‘élément depuis la


Toolbox située à droite de
l‘écran.

Assigner une fonction à cette box

Double cliquez sur le label ??? situé dans


la box et tapez une fonction valide. Vous
pouvez aussi faire appel à l‘input assistant
(F2) pour retrouver programme et
fonctions.

78
L'EDITEUR FBD

Déclaration en table
Déclaration en texte
… ou sous forme de table. La
La zone déclaration peut être sélection est effectuée à l‘aide
présentée sous forme de texte de petits icones situés à droite
… de cette zone.

79
L'EDITEUR FBD

Titre de réseau logique …


Afin de rendre votre programme plus
lisible, chaque réseau logique peut
bénéficier d‘un titre.

MENU Tools  Options …


Pour cela, l‘option (Show network title) doit
être activée.

Commentaires…
Vous pouvez, toujours pour rendre le programme plus
lisible, ajouter des commentaires sous le titre.

MENU Tools  Options …

Pour cela, l‘option (Show network Comment)


doit être activée.

80
L'EDITEUR FBD

Intellisense…

Pour faciliter l‘accès aux variables internes d‘une


instance, CODESYS propose intellisense.
Intellisense permet de gagner du temps et évite les
déclarations multiples et réduit la mémoire utilisée …

Negation…

Pour inverser l‘état d‘une entrée, vous pouvez effectuer un


clic droit dessus et sélectionner Negation.

La négation apparait sous la forme d‘un petit cercle.

81
L'EDITEUR FBD

Détection de front …

La détection peut être directement sélectionnée


à l‘aide du même menu contextuel que la Front montant: Front Descendant:
négation :

Exclure un réseau de la compilation

Durant la phase de "debug", il est parfois


nécessaire d‘exclure un réseau de la compilation.

Non exclu : Exclu:

82
Premier Projet :

Compilation Chargement
COMPILATION/CHARGEMENT

SET ACTIVE APPLICATION

Il y a dans votre projet 2 applications distinctes


(SAFETY et STANDARD). Il faut sélectionner
l'application qui doit être compilée et chargée :

Clic droit -> Application -> Set Active Application

84
MEMORY LAYOUT

MEMORY LAYOUT

Les 2 CPUs (Standard et Safety) se "partagent" la


mémoire, il est possible que le "Memory Layout" du
projet (Codesys) ne corresponde pas à celui de la cible.

CHANGEMENT DU MEMORY LAYOUT

Sélectionner la configuration de la cible connectée.


Exemple si dessus : Projet = 3M et Cible =4M

Il faut donc sélectionner : MemoryLayout_1s_4


( 1 M Safety et 4 M Standard)

Clic sur Update Devices .

Il est possible de faire l'inverse, dans ce cas il faut


cliquer sur Download Configuration puis OFF/ON du
calculateur.

85
Premier Projet :

Online Mode - Monitoring


ONLINE MODE

Compiler le projet

Une fois votre programme prêt, utilisez la fonction “Clean All”.


La touche [F11] vous permet ensuite de lancer la compilation.
La zone de texte indique le processus en cour.

Onlinemode

En cliquant sur l’icone “online”, une connection est établie


selon le paramétrage précédemment effectué. Une fois le
programme chargé, vous devez le lancer à l’aide de la
commande Debug / Start (ou la touche F5). Le statut des
variables peut alors être observé :

Utilisation des Watchlist

Les watchlist sont des fenêtres de monitoring.


Il existe 4 watchlist accessibles via le menu view / watch.
Pour ajouter une variable, double cliquez dans la case
expression.
Sélectionnez la variable à l‘aide de l‘input assistant.
Ou Glisser la variable dans une liste existante

87
ONLINE MODE

Onlinemode : writing (Ctrl + F7)

La colonne prepared value permet, après une


action Ctrl + F7 d‘affecter une valeur donnée à
une variable. Cette valeur n‘est prise en compte
qu‘une fois et peut être écrasée par le
programme.
Ctrl

F7

Onlinemode : Forçage (F7)

Le forçage permet l'affectation permanente


d'une valeur de débogage à toute variable
intéressante.

ATTENTION! CETTE ACTION PEUT CAUSER UNE


SITUATION DANGEREUSE !

F7

88
ONLINE MODE

Onlinemode : arrêt du forçage

La statégie à adopter lors de l‘arrêt du forçage par


une nouvelle action F7 peut être choisie :

F7

89
Lecture/Ecriture des variables
Bus Cycle et Update Variables
LECTURE / ECRITURE DES VARIABLES SYSTEMES
RAFRAICHISSENT – UPDATE VARIABLES

Arborescence "DEVICE" :

Le choix de la cible, à la création du projet, génère un


certain nombres de variables (dites implicites)
disponibles pour le programmeur :
- Entrées / Sorties
- Valeurs des Tensions
- Températures
- Communication
- ...

Arborescence "DEVICE" – Onglet IO Mapping Exemple

91
LECTURE / ECRITURE DES VARIABLES SYSTEMES
RAFRAICHISSENT – UPDATE VARIABLES

Propriété "ALWAYS UPDATE VARIABLES" :


Codesys V3.5 laisse au programmeur le choix de la
méthode rafraîchissement des variables. Pour chaque
liste de variables, 3 choix sont possibles.

Pour toutes les I/Os (Can Open, Hardware I/O, Backligth, ...) vous devez choisir quelle tâche met à jour la variable.
Use Parent Device Setting: Mise à jour dépendante de la configuration du module Père
Use bus cycle task if not used in any task: Les I/O sont mises à jour par “bus cycle task” si elles ne sont utilisées dans
aucune tâche de l'application.
Always in bus cycle task: Toutes les variables sont systématiquement mises à jour à chaque bus cycle task.

Quand vous choisissez une méthode de rafraîchissement pour les variables...


Les variables prennent alors la valeur inscrite (par défaut) dans la variable système.
Exemple : Si Supply_Switch_Q = FALSE, dès que les variables sont rafraichies, SUPPLY_SWITCH_Q
devient FALSE : Le contrôleur s'éteint... Il ne reste plus alors qu'une solution RESET du contrôleur...

92
LECTURE / ECRITURE DES VARIABLES SYSTEMES
RAFRAICHISSENT – UPDATE VARIABLES
Bus Cycle Task - Manuel Codesys :

Bus Cycle Task -> → Tâche dans à laquelle le BUS CYCLE est assignée, attachée (Copie des data du/vers bus ou
système vers/du IEC application image 4+7)
Les autres tâches qui lisent écrivent ces variables n'utilisent qu'un buffer de recopie qui n'est échangé (lu ou écrit
par le système) que dans la tâche définie comme étant la Bus Cycle Task ....

Si une sortie est dans plusieurs tâches, sont état n'est pas stable (risque de réécriture...).
De même, si une entrée est utilisée dans plusieurs tâches, l'état de celle-ci peut changer au
moment de l'exécution de la tâche. Cela peut se produire lorsqu'une tâche est interrompue par
une autre avec une priorité plus élevée, dans ce cas, on relit les variables...
Il est donc préférable de toujours rafraîchir la variables dans la même tâche, la plus rapide si
possible.
93
UPDATE VARIABLES :
CONSEQUENCES POUR LES SORTIES
EXEMPLE : UTILISATION DES VARIABLES SYSTEMES OUTXXXX_Q
OUTPUTS (Double Click) -> IO Mapping-> Always Update Variables : Disabled (update only if used in a task)
Avec cette configuration, les valeurs pour la sortie OUTXXXX_Q ne seront misent à jour que si on utilise
OUTXXXX_Q dans le programme.

PLC PARENTS (Double Click) -> PLC Setting -> Always Update Variables : Disabled (update only if used in a task)
Les conditions de rafraîchissement du "Device Parent" s'appliquent.

Dans le Programme, on écrit la sortie :

SUITE ....
94
UPDATE VARIABLES :
CONSEQUENCES POUR LES SORTIES
EXEMPLE : UTILISATION DES VARIABLES SYSTEMES OUTXXXX_Q et APPEL DU FB "ifmIOcommon.Output" :

Dans l'exemple ci-dessus, si la valeur uiValue reste à FALSE, l'état de la sortie OUT0000 est réécrit à FALSE
(OVERWRITE) ...
SOLUTION : On n'écrit plus la valeur de la sortie OUT0000_Q.ValueDigital mais directement la variable
en entrée du FB ifmIOcommon.Output ....

95
UPDATE VARIABLES :
CONSEQUENCES POUR LES SORTIES
Pour éviter toute confusion, on garde la configuration par défaut pour le contrôleur

En utilisant ce paramétrage, on optimise les ressources car seul ce qui est utilisé est rafraîchit donc lu ou
écrit, on évite tout risque "d'Overwrite" sur les sorties.

96
Gestion des Sorties
GESTION DES SORTIES : FB Output
Diagnostic 1er Niveau : Visualisation des variables systèmes

Etat Logique différent de


l'état physique...

Quelles peuvent être les raisons :


- La sortie n'est pas alimentée : alimentation du groupe de sortie = FALSE
- Autre erreur indéterminée...
Pour plus de détails, il faut appeler le FB ifmIOcommon.output sur la voie concernée :

98
GESTION DES SORTIES : FB Output

Entrées du FB OUTPUT :
● xResetError : Sur Front le FB est remis à l'état initial (ex : acquittemnt d'erreur)
● uiChannel : Numéro de la sortie
● eMode : Enumération correspondant au mode de la sortie (voir plus loin)
● uiValue : Valeur de la sortie (Attention comme vu précédemment, l'état de la sortie ne
correspond pas toujours à la commande)

Sorties du FB OUTPUT :
● xError : Une error est détectée
● eDiagInfo : Diagnostic détaillé
● xOutState : Etat "réel" de la sortie
● uiOutVoltage : Tension en sortie (non significatif pour les sorties autres que Analogique et
Alimentations stabilisées 5V/10V).
99
GESTION DES SORTIES : FB Output

En Ligne, le FB ifmIOcommon.output fournit plus de détails....:


Dans cet exemple, on peut lire sur la sortie eDiagInfo que le système a détecté une coupure fil ou une
perte de charge : ERR_LOW_CURRENT. En conséquence, la sortie est à FALSE (xOutState=FALSE) même si
la commande est à TRUE (OUT000_Q.ValueDigital=TRUE).

Par défaut, une erreur sur la sortie provoque le repli de la sortie


considérée : xOutState=FALSE même si OUT000_Q.ValueDigital=TRUE.
Il est possible de modifier la réaction et les conditions de détection de
défaut pour chacune des sorties.

100
GESTION DES SORTIES : Diagnostic

Le FB ifmIODiagProt.ConfigDiagLevel permet de régler les seuils de diagnostic pour les sorties :


Dans cet exemple, si le courant de sortie est à 0 pendant plus de 100ms alors que la sortie est à 1, une
ereur ERR_LOW_CURRENT est générée.

Le FB ifmIODiagProt.ConfigDiagProt permet d'activer la protection automatique :


Par défaut le diagnostic est la protection sont actifs. On peut choisir de désactiver la protection, le
diagnostic ou les deux.

101
GESTION DES SORTIES : Diagnostic

EXEMPLE : SORTIE EN ERREUR MAIS TOUJOURS ACTIVE

102
GESTION DES SORTIES : Exemple de Mise en Oeuvre

EXEMPLE : FB pour la configuration d'une Sortie TOR … le code ici

Conseil :
- Faire un Reset à la fin de l'initialisation
pour éliminer les comportements
transitoires.
- Ne commander la sortie que si elle a
été correctement initialisée

Dans cet exemple, la configuration des


niveaux et du mode de diagnostic ne sont
faits qu'à l'initialisation (pas de
modification dynamique en RUN). C'est la
méthode que nous recommandons.
Par défaut, il est préférable de régler :
- uiDiagLimMin = 0
- uiDiagLimMax = 2,5A (ou 4A) suivant le
calibre du Canal de sortie

103
GESTION DES SORTIES : Pilotage des Groupes VBBx_SW

Il est recommandé de procédé de la même façon pour les groupes de sorties :

exemple de code ici

104
GESTION DES SORTIES : Détail des Modes

La fiche technique du CR7xxS et le manuel de programmation recensent les possibilités de réglage


pour chacune des sorties (R360-3 IO Configuration.xlsx).

La liste des Modes possibles suivant le type de sortie : TOR, PWM, … est disponible sous
forme d'une énumération dans la librairie concernées :

Remarques concernant les modes


● UNCHANGED : A l'appel du FB, le Mode reste inchangé.
● OUT_DIGITAL_CSI : Dans ce mode, les valeurs uiDiagLimMin/Max du FB ConfigDiagLevel sont ignorées (en effet
dans ce mode, la mesure de courant est impossible)
● OUT_SENSOR_xx : Ce mode concerne la sortie pour alimentation 5V/10V stabilisée
● OUT_ANALOGUE_10 : Ce mode concerne les sorties Analogique Tension (OUT3001 et OUT3002)
● MONITOR : Ce mode est utilisé pour accéder à la ressource (en l'occurrence la sortie) en lecture seule. Les
paramètres d'entrée du FB ne sont pas pris en compte.

105
GESTION DES SORTIES : PWM

Librairie ifmOutPWM

exemple de code ici

Remarques concernant les modes


● UNCHANGED : A l'appel du FB, le Mode reste inchangé.
● OUT_PWM_CSO
● OUT_PWM_CSI : Dans ce mode, les valeurs uiDiagLimMin/Max du FB
ConfigDiagLevel sont ignorées (en effet dans ce mode, la mesure de courant
est impossible)
● MONITOR : Ce mode mode est utilisé pour accéder à la ressource (en
l'occurrence la sortie) en lecture seule. Les paramètres d'entrée du FB ne
sont pas pris en compte.

106
GESTION DES SORTIES : Curent Control (PWM-i)

Librairie ifmOutPWM

exemple de code ici

KP, KI : à régler en fonction de l'actionneur et de l'application réglage recommandé à 50 et 50

Remarques concernant les modes


● UNCHANGED : A l'appel du FB, le Mode reste inchangé.
● OUT_CURRENT_CSO : Obligatoire, en CSI, la mesure de courant est impossible
● MONITOR : Ce mode est utilisé pour accéder à la ressource (en l'occurrence la
sortie) en lecture seule. Les paramètres d'entrée du FB ne sont pas pris en
compte.

107
GESTION DES SORTIES : H-Bridge
Librairie ifmOutHBridge

Dans le cas du H-Bridge, les canaux sont configurés et pilotés par paire. Dans l'exemple les canaux 6 et 7 sont utilisés pour
réaliser la fonction. Cependant, la configuration du diagnostic est indépendante, il faut la faire manuellement pour les 2
canaux… exemple de code ici.

Plusieurs possibilités sont offertes pour le freinage…


Dynamique et statique en fonction de la valeur
uiBrakeValue. Avec ou sans application de
tBrakeTime,…

Pour plus de "maîtrise" on peut aussi réaliser sa


propre fonction Hbridge en utilisant 2 sorties CSO et
CSI exemple de code ici.

108
GESTION DES SORTIES : Exemple

Exemple d'appel de ces Blocs Fonctionnels :

Tous les FB ici…

109
Gestion des Entrées
Gestion des Entrées : Introduction

De façon générale, par analogie, les mêmes règles que celles pour les sorties s'appliquent en
terme de diagnostic et concernant la mise à jour (voir chapitre Update Variable plus haut).
Cela dit puisqu'il s'agit d'entrées et non de sorties, les diagnostics sont moins indispensables et
sont laissés à la discrétion du programmeur :
- On pourra ainsi lire les valeurs de tension et les états des entrées via les variables système :

- Ou via le FB IfmIOcommon.INPUT, exemple IN0000:

- Pour tout autre mode que DIGITAL_CSI ou VOLTAGE_32, il est impératif d'utiliser le FB
ifmIOcommon.Input pour configurer l'entrée.
- Par défaut, toutes les entrées sont configurées en IN_DIGITAL_CSI.

111
Gestion des Entrées : Les différents modes possibles

Comme pour les sorties, on retrouve les mode UNCHANGED et MONITOR, ils ont le même effet que pour les sorties.
Les modes ne sont pas tous possibles sur toutes les entrées. Il est indispensable de se référer au manuel de
programmation et à la fiche technique du contrôleur pour connaître les capacités de chaque entrée.
L'énumération ci-dessus liste les différents modes, pour plus de précisions sur chacun d'eux, il faut se référer au
manuel de programmation.
112
Gestion des Entrées : Diagnostic

Le diagnostic dépend du Mode


Le mode de diagnostic par défaut est DIAG_PROT, cela signifie qu'en cas d'erreur, la valeur de l'entrée est FALSE
(DigitalValue) et 0 (AnalogValue).
Le niveau de diagnostic (Valeur pour uiDiagLimMin/Max) dépend du mode sélectionné…
Par exemple ci-dessous :
- L'entrée est configurée en 0..10V : IN_VOLTAGE_10
- La tension appliquée est VBB30 >> 10 V -> l'entrée passe en erreur

- Si on change le Mode pour IN_VOLAGE_32, il n'y plus d'erreur:

113
Gestion des Entrées : Diag et Threshold

Les FBs ifmIODiagProt.ConfigDiagLevel et ifmIODiagProt.ConfigDiagProt sont aussi utilisables


pour les entrées :
- La philosophie est la même que pour les sorties
- Les valeurs uiDiagLimMin/Max dépendent du Mode : en mA pour une entrée 4-20mA, en mV pour une entrée
0/10V, 0/32V ou TOR
- Il est conseillé de passer l'ensemble des entrées en mode DIAG seul pour les entrées Non-Safe

L'hystérésis pour l'état des entrées TOR (threshold) est réglable en % (pas de 0,1%) de la valeur
de VBB30 :

Par défaut le niveau d'enclenchement est fixé à 70% de VBB30 et 30 % de VBB30 pour le déclenchement .

114
Gestion des Entrées : Entrées Fréquences
La librairie ifmFastInput permet la configuration des entrées pour répondre à plusieurs
applications de comptage via plusieurs FBs (FastCount, IncEncoder, Period) utilisables suivant
différents modes permettant de répondre aux différents besoins:

Les entrées rapides, sont utilisables avec des signaux PNP(CSI) ou NPN(CSO).

115
Gestion des Entrées : Entrées Fréquences

Pour rappel, il existe 2 méthodes pour mesurer une fréquence :


1. Comptage du nombre de fronts pendant un temps donné : Mode IN_FREQUENCE_CSx
2. Mesure du temps entre 2 fronts : Mode IN_PERIOD_CSx
L'utilisation de l'une ou l'autre méthode dépend de l'application. Souvent la mesure du temps écoulé entre 2
fronts (méthode 2) est plus précise pour les basse fréquences (<4Khz) alors que la méthode 1 est plus précise pour
les fréquences plus haute.
Le FB Period permet de faire une moyenne sur la mesure (nb x de périodes). Dans tous les cas, en sortie, on a la
possibilité de lire la période du signal d'entrée en us et sa fréquence.

116
Supply Switch
Supply Switch

La gestion du +APC (Clamp 15) se fait via le FB SupplySwitch

Cette fonctionnalité doit être testée en mode Normal (pas en mode debug).
Généralement, on surveille la tension du + Après Contact (+APC aussi appelé Clamp 15). Lorsque cette tension
descend au-dessous d'un certain niveau, on décide de couper le calculateur (en agissant sur le SupplySwitch).

On peut agir sur le relais d'alimentation par exemple pour le maintient de certaines fonctionnalités pendant un
certain temps, la possibilité est donnée à l'utilisateur de gérer l'extinction avec le FB ci-dessous.

Ce FB doit être appelé avec xValue à True puis à False. Exemple ci-dessous extinction du calculateur 10s après la
perte du CLAMP 15 :

Lors du Test de cette fonctionnalité, il est


fortement conseillé de prévoir un replis. En
effet il est possible de rendre le calculateur
inutilisable si on programme de telle sorte
que chaque fois qu'on s'allume on demande
à s'éteindre… Exemple conditionner l'appel
avec l'état d'une entrée :

118
Variables Rémanentes
VARIABLES REMANENTES

Variables Persistent Retain


Contrairement au Codesys 2.3, il n’y a plus de distinction entre les variables Retain et les persistent. Toutes les variables
sont Retain et Persistent.
Une variable Retain conserve sa valeur après une coupure et une remise sous tension.
Une variable Persistent conserve sa valeur malgré le chargement d’un nouveau programme.
Les Retain Persistent Variable peuvent être réinitialisées par Menu -> Online -> Reset Origin.
Ces variables doivent être déclarées dans un élément spécifique :
Click-droit sur Application  Add Object…  Persistent Variables

Vous ne pouvez créer qu’une seule liste de variables


retain persistent par application.
Après toute modification de la liste de variables nous
vous conseillons d'utiliser la fonction suivante :
Click-droit dans la liste de Persistent Variables ->
Reorder List and Clear gap

120
VARIABLES REMANENTES

Memory Bytes
Une autre zone de mémoire non-volatile est disponible. Cette zone mémoire s'étend du %MB0 au
%MB2559 (soit 2,5ko).
Il existe plusieurs possibilités pour utiliser ces zones mémoires :
1- Utilisation de l'opérateur "AT" lors de la déclaration .
A noter : on utilise un attribut pour ne pas réinitialiser la variables à chaque démarrage

2- Utilisation de l'opérateur "ADR" et de la library MemoryUtils

121
Variables Réseau
VARIABLES RESEAU (UDP)

192.168.82.16 192.168.82.10 192.168.82.100 192.168.82.120

Network Variables
Dans la mesure ou les différentes cibles le supportent, CODESYS propose un "service variables réseau" pour l'échange
de données.
Les variables réseau sous CODESYS sont basées sur le protocole Ethernet UDP (User Datagram Protocol). Cette
fonction ne comprenant pas de contrôle d’intégrité des données, cela signifie que l'utilisateur doit s'assurer de la
cohérence des données dans le programme.

La création de la structure de données est libre, elle doit cependant être compréhensible et les variables booléennes
regroupées en Byte ou Word. Aussi nous recommandons d'éviter l'utilisation de structures imbriquées.

De même, si en théorie la taille des listes et leur nombre sont quasi infinie, il est important de veiller à rester
raisonnable. Le mécanisme d'échange étant asynchrone, il est possible qu'une variable ne soit pas reçue/envoyée
en temps voulu (si la liste est trop longue par exemple).

123
VARIABLES RESEAU (UDP)

Network Variable : TX

Créez votre liste de variables à envoyer :


Clic droit sur Application  Add Object…  Network Variable List (Sender)

Sélectionnez UDP pour le Network Type, puis cliquez sur Settings


Les variables sont déclarées et commentées de la même façon que dans les listes de variables globales.

124
VARIABLES RESEAU (UDP)

Network Variable : TX – Type de Transmission

• CyclicTransmission : Les variables sont émises cycliquement.


L'intervalle doit être un multiple du temps de cycle de la
tâche utilisée.

• Transmit On Change : Les variables sont envoyées sur


changement d'état. Le Minimum Gap permet d'inhiber des
changements trop fréquents. Si une variable change d'état
toutes les 10 ms et que minimum Gap est de 200ms, les
variables seront envoyées après un filtre de 200ms.

• Transmit On Event : Les variables sont envoyées sur


occurrence d'un évènement (variable booléenne applicative).

• Attention : Pour rappel, sans autre vérification de la part du


programmeur, la transmission n'est pas garantie. Il appartient
à l'utilisateur de vérifier la cohérence des données (CRC, bit
de vie, …).

125
VARIABLES RESEAU (UDP)

Network Variable Export: TX

Pour que le destinataire puisse paramétrer la réception, il est nécessaire d’exporter la configuration dans un fichier
*.gvl. Cet export est automatique si l'Option Export before compile ... a été sélectionnée.(voir ci-dessus).
L’utilité d’avoir choisi un nom de liste significatif apparait !
Lorsque le projet est compilé, un fichier *.gvl est créé dans le répertoire cible.

126
VARIABLES RESEAU (UDP)

Network variable import: RX


Du côté du destinataire, il faut créer l’élément Network Variable List (Receiver) et sélectionner le bon fichier *.gvl .
Ce fichier n’est pas modifiable.
Lorsque le projet “récepteur” est compilé... Chargé et lancé, les variables sont visibles.

127
VARIABLES RESEAU (UDP)

Limites concernant l'utilisation des variables réseau

La taille limite d'une liste de variable ou le temps minimum d'envoi d'une liste sont des grandeurs difficiles à
appréhender et évaluer. Il faut pour cela prendre en compte la charge globale du contrôleur : nombre de listes
émises et ou reçues, autres tâches ou processus consommateurs de ressources (CAN, TCP, …).

Pour vous aider dans l'évaluation de ces limites, vous pouvez vous référer au programme exemple ci-dessous et
évaluer le taux d'erreur de réception pour 3 listes de variables en lecture et 3 autres en écriture.

Projet Evaluation ici:


CR0711_CR1085_Netvar.project

128
VARIABLES RESEAU (UDP)
Remarques concernant le Port, le List Identifier et les tâches :
Un même port (UDP) ne peut être ouvert que dans une seule tâche de l'application :
• Si le port 1202 est utilisé dans une liste, en émission ou en réception, les tâches liées à ces listes de
variables réseaux doivent être les mêmes.
• Si l'application l'impose et que plusieurs tâches doivent être utilisées pour la communication avec les
variables réseaux, il faudra, à minima, utiliser un port par tâche.
• De manière générale, il faut limiter le nombre de ports utilisés au strict nécessaire.
• Attention au temps de cycle des tâches liées aux variables réseau :
• Le temps de cycle doit être un multiple de la période d'émission.
• Attention aux ressources, un cycle d'émission trop rapide peut dans certains cas générer un
nombre trop important de data et le contrôleur peut manquer des messages.
• Le List Identifier doit être unique dans l'application.

129
CANBUS
CAN, CANOPEN et J1939
CAN COUCHE 2
CAN COUCHE 2

Can Layer 2 et Raw Can Library


Ifm fournit des function Block simplifiant l‘envoi et la réception de messages Can.
Il n‘est pas nécessaire d‘ajouter d‘élément dans l‘arborescence pour utiliser ces fonctions.
Nous allons passer en revue les fonctions apparaissant en bleu. Pour les autres, vous pouvez consulter le manuel.
CAN_Enable (FB)
CAN_Recover (FB)
CAN_RemoteRequest (FB)
CAN_RemoteResponse (FB)
CAN_Rx (FB)
CAN_RxMask (FB)
CAN_RxRange (FB)
CAN_Tx (FB)
CAN_Status (FB)

Nous allons utiliser un exemple dans lequel nous devons envoyer un message ID100 sur le CAN1 de façon cyclique
toutes les 100ms.

132 / 102
CAN COUCHE 2

Can Couche 2 : Transmission cyclique


La première étape est l'activation du Can 1 (Channel 0) et le choix de la bonne vitesse de transmission.
L’appelle d’un programme d’une librairie est fait sous la forme suivante : "Name_of_library.Pou_Name". Notons que
pour des raisons de compatibilité, les DATA sont sous la forme d’un tableau de USINT et non de BYTE.
L’envoi fonctionne mais il n’est pas cyclique. Voyons ce que l’on peut faire avec Task configuration pour corriger cela.

133 / 102
CAN COUCHE 2

Can Couche 2 : Transmission cyclique


La première étape consiste à créer une nouvelle tâche :
Clic droit sur Task Configuration, Add Object, Task. Choisir le niveau de priorité, le mode cyclic et 100ms.
Ensuite, choisir le programme qui sera appelé par cette tache :
Click droit sur PLC_100ms Task, Add Object -> Program Call.
Sélectionnez notre programme nouvellement créé : CAN_Layer_2_Tx.
Chargez l’application-> Run. Vous pouvez maintenant vérifier à l’aide d’un analyseur de CAN que le message ID 100 est
bien envoyé tous les 100 ms.

134 / 102
CAN COUCHE 2

Can Couche 2 : Réception des messages

Important : comme dans l’exemple ci-


dessus, les données reçues (aData) ne
sont à prendre en compte que
lorsqu’elles sont significative, c’est-à-
dire lorsque la sortie uiAvailable >=1.

Si la fonction CAN Enable a déjà été


appelée par un autre programme, il
est inutile de renouveler cet appel.

135 / 102
CAN OPEN
CAN OPEN

?
:

137 / 102
CAN OPEN

Ajout des composants


Insertion du CAN bus IFM : De la même façon, ajoutez le CANopen Manager :
Click droit sur CAN (sous communication dans Clic droit sur CANBus  Add Device
l‘arborescence) Add Device Sélectionnez CANopen_Manager from 3S pour un
Sélectionnez CANBus ifm electronic, puis Add Device. Master CANopen

138 / 102
CAN OPEN

Ajout des composants


Sélectionnez CANopen_Manager dans l‘arborescence
Click droit sur CANOpen_Manager  Add Device
Sélectionnez le module esclave à gérer (e.g. CR2032 ifm IO –
Modules).
Note : Si vous ne trouvez pas votre module -> Sélectionnez All
vendors
Si le module n‘existe pas, utilisez Device Repository pour
l‘ajouter.

139 / 102
CAN OPEN

Configuration du Master
Double cliquez sur CANBus dans l‘arborescence:

Sélectionnez la vitesse de communication (Baudrate), le port CAN (Network), 0 pour CAN 1, 1 pour CAN 2, ...
Puis double cliquez sur CANOpen_Manager pour avoir accès à la configuration master

140 / 102
CAN OPEN

Configuration d'un Esclave


Double cliquez dans l‘arborescence sur l‘esclave à configurer.

Désélectionnez Reset Node et choisissez de préférence Hearbeat si cette configuration est supportée par l‘esclave. Le
Nodeguarding est obsolète et ne doit être utilisé que pour les anciens modules esclaves.
Notez que vous devez configurer Heartbeat Consumer en fonction des paramètres Master:

141 / 102
CAN OPEN

Configuration des PDOs


Grâce à cet éditeur, vous pouvez sélectionner et mapper les PDO à recevoir et à transmettre

PDOs Propriétés
Vous avez accès aux propriétés de chaque PDO à l‘aide
de la fonction Edit.
Choisissez le type de transmission. Les autres propriétés
peuvent conserver leur valeur par défaut.

Note : Le type de transmission doit être sélectionné en fonction de l‘application.


Entrées tout-ou-rien : transmission asynchrone recommandée, les messages seront envoyés sur changement d‘état.
Entrées analogiques : nécessitent par contre une transmission cyclique pour ne pas surcharger le bus.
Vous trouverez des explications plus détaillées dans l‘aide en ligne et le manuel système ifm
142
CAN OPEN

Configuration des SDOs


Grâce à cet éditeur, vous pouvez sélectionner les SDO (parameters) qui seront envoyés (written) au module esclave
durant la phase d‘initialisation du Can Open.
Les lignes en gris sont implicitement envoyées par le Master. Les valeurs ne peuvent pas être changées. Par contre,
vous pouvez à nouveau ajouter le SDO (voir le rectangle vert ci-dessus) pour l'envoyer de nouveau avec la valeur
désirée.

Note : Il est fortement recommandé de modifier le SDO 16#1006 avec le subindex 0 afin de modifer le time
monitoring. En effet, cette surveillance est déjà réalisée par le Heartbeat ou le Nodeguarding et la valeur par défaut
de 3S n'est pas assez permissive (cette valeur est une surveillance du temps entre 2 Sync=CobID 0x80)

143 / 102
CAN OPEN

I/O Mapping

N'oubliez pas ...

Utilisations des variables pour le


mapping Lors du mapping des I/O et autres variables
Notez la différence entre système, il est possible de choisir une nouvelle
variable. Celle-ci, comme n‘importe quelle
variable globale, sera disponible dans tous les
programmes. Vous pouvez aussi en choisir une
... et : existante : dans ce cas, il est recommandé
d‘utiliser l‘Input Assistant à l‘aide de la touche F2.

144
CAN OPEN

Online Mode Monitoring et Diagnostic

Statut des modules esclave clairement détaillés


avec lecture directe des messages d‘alerte (EMCY)

145 / 102
CAN OPEN

Can Open FBs

Des fonctions blocs de la librairie ifmCANopenManager sont disponibles pour faciliter l’utilisation du CANopen : voir la
documentation pour plus de détails (dans le manuel ou directement dans la librairie). Au besoin, les FB de codesys
sont aussi utilisables...

Une variable implicite (Type Objet) est générée par codesys portant le nom de l'esclave. Elle donne accès à des
informations concernant l'esclave par appel de méthodes. Voir exemple ci-dessous. Pour plus de détail se référer à la
documentation codesys.

146 / 102
J1939
J1939

J J1939 Manager

En procédant de la même façon que pour


le CANopen, après avoir ajouté le
« CANbus » sous « CAN », le J1939
manager est ajouté sous CANbus à l’aide
de la commande Add Device accessible
par le menu contextuel (bouton droit) :

J1939 ECU
Sans quitter la boite de dialogue "Add
Device", vous pouvez directement ajouter
un J1939 ECU.

148 / 102
J1939

Réception J1939

Après avoir renommé l’objet


J1939_ECU, par exemple en
J1939_ECU_RX, ne cochez pas « Local
Device », puis cliquez sur « TX Signals »
pour sélectionner les messages à
recevoir ( Rx vu du calculateur, Tx du
moteur thermique !)

Cliquez ensuite sur Add PG puis


sélectionnez le message souhaité, par
exemple EEC1, ou PGN 61444 pour
recevoir le régime du moteur.

149 / 102
J1939 – Reception de Messages

Réception des messages J1939

Vous avez maintenant accès au contenu du message sélectionné ainsi qu’à la description des données qu’il
contient :

150 / 102
J1939 – Reception de Messages

Réception des messages J1939 - Timeout

Il est possible de contrôler la réception d'un PGN en intégrant un timeout en utilisant la libraire IoDrvJ1939 de
codesys.
Le FB ReceiveParameterGroup permet, à partir du nom de
l’ECU (itfECU) …

… de « récupérer » une interface (comme un pointeur) sur


le PGN à surveiller (itfParameterGroup).

Ensuite, il "suffit" d’appeler le FB ReceiveWatchdog avec


l’itfParameterGroup correspondant pour monitorer la
réception du PGN.

Voir exemple de code à la fin du chapitre J1939

151 / 102
J1939 – Envoi de Messages

Envoi des messages J1939

Pour l‘envoi des messages, il faut utiliser un autre J1939_ECU, renommé par exemple en J1939_ECU_TX, puis cocher
« Local Device » dans l’onglet général. L’onglet Tx Signals permet de sélectionner les messages de type Broadcast
envoyés à tous les participants au réseau. L’onglet P2P est réservé au messages destinés à un ECU particulier.
Pour ajouter des messages à envoyer, cliquez sur « Add PG » puis sélectionner le PGN concerné, par exemple TSC1
pour une commande de régime moteur.

Pour l‘envoi d'un


message ne faisant
pas partie de la base
de données, vous
pouvez utiliser
l'onglet Custom

152 / 102
J1939 – Envoi de Messages

Envoi des messages J1939

Pour ajouter des messages à envoyer, cliquez sur « Add PG » puis sélectionner le PGN concerné, par exemple TSC1
pour une commande de régime moteur.
Vous disposez maintenant de la description du contenu du message avec le détail de chaque variable

153 / 102
J1939 – Envoi de Messages

Envoi des messages J1939

Pour configurer le mode de transmission du message, utilisez l’onglet General situé à droite dans la fenêtre TX Signals.

Vous pouvez sélectionner la priorité (0 à 7) et le type d’envoi :


• Change of state : sur changement d’état d’une des variables (SPN) contenu dans le PGN
• Cyclic : envoyé tous les x cycles (suivant Task attribuée au J1939 Manager), "x" étant le cycle time factor.
• On Request : sur requête d’un autre ECU (Voir Norme J1939-21 et J1939-71)
• Application Triggered : envoi géré par l’application (en utilisant la librairie et les méthodes J1939IODrv voir plus loin)

154 / 102
J1939 – Envoi de Messages

Envoi des messages J1939 – Application Triggered

Pour envoyer un Message J1939 sur demande de l’application (Application Triggered), il faut utiliser 2 FB de la librairie
codesys IoDrvJ1939 :

Le FB TransmitParameterGroup permet, à partir du nom de


l’ECU (itfECU) …

… de « récupérer » une interface (comme un pointeur) sur


le PGN à envoyer (itfParameterGroup).

Ensuite, il "suffit" d’appeler le FB TransmissionTrigger avec


l’itfParameterGroup correspondant pour envoyer le PGN
désiré. exemple de code ici

155 / 102
J1939 – Adresse des ECU

Adresse des ECU

Il est possible de changer l'adresse d'un ECU Locale via une méthode. Pour accéder à cette méthode, il faut utiliser dans
codesys, nom_de_ECU_locale.Change_Address :

L'appel de cette méthode permet de changer l'adresse d'une ECU J1939 locale dynamiquement.

Cette fonction n'existe malheureusement pas pour les Remote ECU. Cela rend la gestion des variantes châssis et/ou
moteur pour une même machine un peu complexe.

Si vous devez écrire un seul et même programme permettant de gérer des châssis ou des moteurs différents n'utilisant
pas la même source adresse (SA), il faudra soit :
- Déclarer plusieurs remote ECU et utiliser les données reçues en fonction d'un paramètre (Case … of)
- Soit faire la réception en couche 2 avec la libraire ifmRcan.Can_Rx

156 / 102
La Programmation SAFETY
L'application Safety
L'application SAFETY : Généralité

Il est fortement recommandé d'utiliser la PLC Standard pour gérer tout le fonctionnel de
l'application de telle sorte que :

● L'application standard décide et envoie des commandes (demandes) à la partie Safety (voir plus
loin échange EVC/EVL entre les deux PLCs).
● Ensuite, la "seule" responsabilité de la PLC Safety est de vérifier que l'exécution de l'action, du
mouvement, … demandé par la partie Standard (l'applicatif) n'est pas dangereuse.
● La partie Safety est "maître" des sorties de sécurité. Ces sorties sont celles liées aux fonctions
de sécurité telles que définies par l'analyse de risque préalable.
● Si la machine est dans un état sûr, le pilotage de la sortie est autorisé, sinon il est interdit et la
sortie liée est dans un état sûr (SAFE) = 0 => pas d'énergie.

Le codage permettant de vérifier que l'on est dans un état sûr est soumis à des règles suivant
ISO13849. Ifm fournit une librairie écrite suivant les spécifications du consortium PlcOpen qui
facilite le travail du programmeur. Les FBs de cette librairie sont documentés et certifiés. Reste à la
charge de l'utilisateur, la mise en œuvre de ces FBs dans le respect des règles, limites et
contraintes du matériel ifm.

Les fonctions de sécurité programmées à l'aide de ces FBs doivent être testées, documentées et
validées mais les FBs élémentaires sont considérés comme conformes, testés et validés.

D'autres conseils pour la programmation SAFETY sont disponibles ici.


159 / 102
Architecture
Architecture et concept

La structure matérielle des CR7xxS est conforme aux normes IEC 61131-6, IEC 61508 et ISO 25119 avec tolérance d'erreur
matérielle (= HFT) de "0" ([HFT = 0).

Architecture HW 1oo1 HW modifiée avec unité de test séparée :


- Entrées / sorties sécurisées à 2 canaux
- Entrées sécurisées 1 canal (selon le type d'entrée)
- Sorties sécurisées 1 canal
- Puce complémentaire pour la surveillance du processeur
principal et des alimentations
- Concept d'erreur graduée :
- Les erreurs en raison desquelles l'intégrité de l'ensemble
du contrôleur n'est plus garantie conduisent à l'état sûr.
- Les erreurs pour lesquelles l'intégrité d'une Fonction de
sécurité n'est plus garantie mènent à l'état de sécurité
des entrées / sorties affectées.
- La défaillance d'un composant lié à une fonction de
sécurité peut entraîner l'arrêt complet du composant ou
de tout un groupe de composant
- Les erreurs de périphérie pour lesquelles une seule
entrée / sortie est affectée n'entraîneront que la
désactivation de cette entrée / sortie

161 / 102
IO Mapping et configuration
IO Mapping : Codesys

Les 2 PLCs (Safe et Non-Safe) se partagent les même ressources :


Il faut donc spécifier pour chacune des E/S si elle est attribuée à la partie Safe ou la partie Non-Safe
Pour cela on utilise 2 "outils" en parallèle : Codesys d'une part et l'update tool d'autre part

Sous codesys, il faut ouvrir la fenêtre de configuration du device à la racine (root) ensuite ouvrir l'onglet I/O
Assigment.
Il suffit ensuite d'affecter les ressources à la PLC souhaitée :

A noter : L'ensemble des entrées sorties, LED, Group_Switch, … sont affectables.

La configuration ici doit correspondre à celle du fichier Iomapping du contrôleur /cfg/iomapping.cfg

163 / 102
IO Mapping : Upload Tool

L'outil updatetool permet la mise à jour du fichier iomapping :


- Il faut tout d'abord éditer le fichier CR07xx_Iomapping.cfg situé dans le répertoire Config de l'update tool avec un
éditeur de texte par exemple. Sauvegarde le fichier pour le mettre dans le dossier du projet.
- Après avoir modifié le fichier, lancer l'update tool et écrivez ce fichier dans le contrôleur "o".

164 / 102
Mode debug / Safe run
Mode DEBUG et SAFE RUN

La PLC Safety a 2 mode de fonctionnement :


- Le mode DEBUG :
Le programme peut être chargé et les variables écrites lorsque l'on est en ligne.
L'état de sécurité n'est plus assurer, ce mode n'est pas considéré comme SAFE
- Le mode SAFE RUN :
Seule la lecture est possible contrairement au mode debug. Dans ce cas, les sécurités sont effectives, l'état peut être
considéré comme SAFE

166 / 102
Mode Debug et Safe RUN

Il est possible de connaître le mode en cours via l'application


La librairie codesys CmpSIL2 fournit quelques fonctions dont la fonction :
SIL2OEMGetOperationMode qui inique le mode en cours.
Il est laissé à la discrétion du programmeur de surveiller l'état de cette
variable et de mettre le calculateur en état sûr dans le cas où le mode Debug
est actif.

Par exemple en ouvrant l'ensemble des boucles de sécurité ou en désactivant


toutes les sorties SAFE.

Ci-dessous un exemple de code pour connaître l'état actuel de la CPU

167 / 102
La Librairie IfmIOSafety
Configuration des Entrées Sorties Safety

La logique est exactement la même que pour la partie standard (activation et choix des niveaux
de diagnostic, appel des FBs, …)

La différence réside dans l'utilisation de Blocs Fonctionnels dédiés pour la configuration des entrées sorties. Ces FBs
sont disponibles dans la librairie ifmIOSafety. On a les même possibilités de configuration à la différence près que :
- Pour les entrées, la sortie des FBs est de type SAFE (SAFEBOOL, SAFEUINT,…)
- Pour les sorties, une entrée S_SAFECONTROL de type SAFEBOOL a été ajoutée. A FALSE, la sortie est désactivée en
respectant un niveau SIL2 PLd (bien sûr ce n'est pas suffisant pour garantir le PLr de la fonction dans sa globalité).

exemple de code ici :


- Sortie TOR
- Sortie PWM Courant
- Sortie PWM1000
- Groupe Switch
169 / 102
Configuration des Entrées Safety

Valeurs par défaut pour le diagnostic des entrées :


Mode Filtre temporel Seuil Bas Seuil Haut

IN_DIGITAL_CSI 10 ms 0 % de VBB30 400 % de VBB30

IN_DIGITAL_CSI_NAMUR 10 ms 1V 95 % de VBB30

IN_DIGITAL_CSO 10 ms 0 % de VBB30 100 % de VBB30


IN_VOLTAGE_10 Seuil dépendant de la
Seuil dépendant de la
IN_VOLTAGE_32 10 ms plage de mesure définie
plage de mesure définie
IN_CURRENT_CSI
IN_VOLTAGE_RATIO 10 ms 0% 1000 %

Pour les modes suivants, pas de fonctionnalité de diagnostic prédéfinie :


IN_DIGITAL_CSI_BLANKING IN_COUNT_CSI
IN_COUNT_CSO IN_FREQUENCY_CSI
IN_FREQUENCY_CSO IN_INC_ENCODER_CSI
IN_INC_ENCODER_CSO IN_PERIOD_RATIO_CSI
IN_PERIOD_RATIO_CSO IN_PHASE_CSI
IN_PHASE_CSO

Dans ces modes, le diagnostic peut-être réalisé via l'application, en évaluant par exemple le paramètre
udiValueTime (temps écoulé depuis le dernier changement d'état du signal d'entrée) en sorties des FBs
correspondant de la librairie IfmFastInput pour l'exemple.

170 / 102
Architecture Mono Canal
Configuration des Entrées Safety : Architecture Mono Canal

L'architecture Mono Canal peut-être réalisée en évaluant :


• Signal TOR (Namur de préférence pour le diagnostic)
• Signal analogique
• Signal OSSD

Evidemment, dans le cas de l'utilisation d'une entrée TOR (classique), cela ne garantit pas la détection de tous les
défauts ( défauts externes comme court-circuit à la masse ou au plus).

Pour une entrée Safety en mono canal, les modes de fonctionnement suivants sont autorisés en
fonction du type d'entrée:

Type d'entrée Modes de fonctionnement autorisé FB de configuration et Lecture

IN_DIGITAL_CSI
IN_DIGITAL_CSI_NAMUR
IN MULTIFUNCTION-A IN_VOLTAGE_10 SF_Input
IN_VOLTAGE_32
IN_VOLTAGE_RATIO

IN FREQUENCY-B IN_DIGITAL_CSI_BLANKING SF_InputBlanking

172 / 102
Entrée TOR Safety

Une entrée TOR utilisée surtout si elle est utilisée en mono canal doit changer d'état
régulièrement (fréquence à déterminer en fonction de l'analyse de risque et de l'application).

1- Valeur Maxi (uiDiagLimitMax)


2- Seuil d'enclenchement
3- Seuil de déclenchement
4- Valeur Mini (uiDiagLimitMin)

173 / 102
Entrée ANA Safety

1- Valeur Maxi de la plage de mesure


2- Valeur Max de diagnostic
3- Signal
4- Valeur Min de diagnostic
5- 0V

Pour détecter toutes les erreurs, le signal analogique doit être compris dans la plage de signal valide
comprise entre Valeur minimale et Valeur maximale dépendant du mode de fonctionnement

Mode Min Max Safety-Tolerance

IN_VOLTAGE_10 >310 mV 10 V +/- 310 mV

IN_VOLTAGE_32 >740 mV 32 V +/- 740 mV

IN_CURRENT_RATIO >740 mV 32 V +/- 740 mV

174 / 102
Entrée OSSD

1- Seuil d'enclenchement ( 70% de VBB30)


2- Seuil de déclenchement (30% de VBB30)
3- Largeur d'impulsion
4- Intervalle des impulsions

Les entrées OSSD doivent être connectées sur des entrées de Type IN_FREQUENCY_B.
Elles doivent être configurées en utilisant le FB SF_InpuBlanking :
• largeur d'impulsion minimale (3)> = 10 μs
• Largeur d'impulsion maximale (3) <= 800 μs
• L'impulsion doit être inférieure au seuil de déclenchement (<30% de VBB30).
• Intervalle d'impulsion minimum (4)> = 16 ms

175 / 102
Architecture à Double Canal
Configuration des Entrées Safety : Architecture Double Canal
Dans une architecture Double Canal, les signaux suivants peuvent être évalués :
• Signaux TOR
• Signaux analogique
• Signaux fréquentiels
Pour ces entrées Safety, les modes de fonctionnement suivants sont autorisés en fonction du
type d'entrée:
Type d'entrée Modes de fonctionnement autorisé FB de configuration et Lecture

IN_DIGITAL_CSI
IN_DIGITAL_CSI_NAMUR
IN_VOLTAGE_10
IN MULTIFUNCTION-A SF_Input
IN_VOLTAGE_32
IN_VOLTAGE_RATIO
IN_CURRENT_CSI

IN_DIGITAL_CSI
IN_DIGITAL_CSI_NAMUR
IN_DIGITAL_CSI_BLANKING
IN_VOLTAGE_10
IN FREQUENCY-B SF_InputBlanking
IN_FREQUENCY_CSI
IN_INC_ENCODER_CSI
IN_PERIOD_RATIO_CSI
IN_PHASE_CSI IN_COUNT_CSI

IN RESISTOR-A IN_DIGITAL_CSI
IN_DIGITAL_CSI_NAMUR
IN_DIGITAL_CSI
IN DIGITAL-A/B SF_Input
IN_DIGITAL_CSI_NAMUR

177 / 102
Configuration des Entrées Safety : Architecture Double Canal

Si l'application le permet, les signaux d'entrée standard peuvent être utilisés dans les fonctions de sécurité.
Pour cela, connecter les signaux avec 2 canaux et comparez-les à l'aide d'un FB de sécurité. Ifm fournit les blocs de
fonctions de sécurité suivants à cette fin:
• SF_Equivalent_BOOL
• SF_Antivalent_BOOL
• SF_Equivalent_UINT
• SF_Equivalent_UDINT
• SF_Equivalent_REAL

Les deux canaux d'entrée d'une structure à 2 canaux doivent être situés dans des groupes d'entrée différents afin
que les exigences de sécurité puissent être satisfaites.
• Les 2 canaux doivent être câblés sur le même connecteur
• Un canal d'entrée dans la moitié supérieure du connecteur
• L'autre canal d'entrée dans la moitié inférieure du connecteur

Même si ce n'est pas obligatoire, il est recommandé de :


• Utiliser des entrées du même type pour les 2 canaux
• Configurer les deux canaux d'entrée dans le même mode

178 / 102
Configuration des Entrées Safety : Répartition des canaux

Répartitions des canaux pour une évaluation sûre de signaux TOR Conecteur A:

Les entrées de ces groupes… Peuvent être combinées avec les entrées de ces groupes

IN00nn IN05nn

IN01nn IN06nn

IN01nn IN07nn

IN02nn IN06nn

IN02nn IN07nn

IN03nn IN08nn

IN04nn IN09nn

179 / 102
Configuration des Entrées Safety : Répartition des canaux

Répartitions des canaux pour une évaluation sûre de signaux TOR Connecteur B:

Les entrées de ces groupes… Peuvent être combinées avec les entrées de ces groupes

IN10nn IN15nn

IN11nn IN16nn

IN12nn IN17nn

IN12nn IN18nn

IN14nn IN17nn

IN14nn IN18nn

180 / 102
Configuration des Entrées Safety : Répartition Canaux

Répartitions des canaux pour une évaluation sûre de signaux Analogiques Connecteur A:

Les entrées de ces groupes… Peuvent être combinées avec les entrées de ces groupes

IN01nn IN06nn

IN01nn IN07nn

IN02nn IN06nn

IN02nn IN07nn

181 / 102
Configuration des Entrées Safety : Répartition Canaux

Répartitions des canaux pour une évaluation sûre de signaux Analogiques Connecteur B:

Les entrées de ces groupes… Peuvent être combinées avec les entrées de ces groupes

IN11nn IN16nn

182 / 102
Configuration des Entrées Safety : 2 canaux TOR

183 / 102
Configuration des Entrées Safety : 2 canaux analogiques

184 / 102
Configuration des Entrées Safety : 2 canaux fréquentiels

185 / 102
MONO CANAL VERSUS DOUBLE CANAL

Exemple concret de l'incidence applicative du mono canal ou double canal :


Prenons le cas d'un codeur certifié SIL2 fournissant 4 canaux ou plus (A et son complément, B et son complément). En
mono canal, on ne peut pas utiliser le mode INC_ENCODER pour l'entrée Cf ci-dessus.
Il faut donc mettre en œuvre une architecture double canal. Pour cela on implémente 2 FB IncEncoder pour les voies A
et B d'une part et A et B complémenté d'autres part. A l'aide d'un FB ifm certifié, on vérifie la cohérence des deux
canaux.
Ce FB doit être testé et validé, il peut ensuite être utiliser dans l'application Safety.

186 / 102
Configuration des Sorties Safety

Selon les besoins, une sortie relative à la sécurité peut être configurée comme suit:
• 1 canal
• 1 canal avec surveillance de la fonction
• 2 canaux
• 2 canaux avec surveillance de fonction
Ceci est autorisé pour les types de sortie suivants:
Type d'entrée Modes de fonctionnement autorisé FB de configuration et Contrôle

OUT_DIGITAL_CSO SF_Output
OUT PWM-25-A OUT_PWM_CSO SF_PWM1000
OUT_CURRENT_CSO SF_CurrentControl
OUT_DIGITAL_CSO SF_Output
OUT PWM-25-B
OUT_PWM_CSO SF_PWM1000
OUT_DIGITAL_CSO SF_Output
OUT PWM-40-A OUT_PWM_CSO SF_PWM1000
OUT_CURRENT_CSO SF_CurrentControl
OUT_DIGITAL_CSO SF_Output
OUT PWM-40-BRIDGE-A OUT_PWM_CSO SF_PWM1000
OUT_CURRENT_CSO SF_CurrentControl

De même il est possible de contrôler des H-Bridge de façon SAFE et même des
groupes entiers de sorties :
• OUT PWM-40-BRIDGE-A et SF_HBridge
• SF_OutGroup

187 / 102
Architecture Mono Canal
Configuration d'une Sortie Safety Monocanal

La sortie doit être testée à intervalle régulier (fréquence déterminée suivant analyse de risque
et application). Les sorties sont testées à chaque redémarrage par le système

Lorsque la fonction de sécurité est demandée, le contrôleur désactive le commutateur de sortie. La sortie associée
est désactivée.
Le commutateur de groupe a une importance pour la fonction de sécurité en tant que deuxième chemin d'arrêt si
le commutateur de sortie présente un défaut, ce deuxième canal peut être utilisé pour atteindre l'état sûr.
En option, une surveillance de la fonction de sécurité mécanique peut être mise en œuvre pour augmenter le
diagnostic (capteurs, codeurs, fins de course, par exemple).

189 / 102
Configuration d'une Sortie Safety avec Arrêt du groupe de sortie

Lorsque la fonction de sécurité est demandée, le contrôleur commute le commutateur de groupe de sorties et
la sortie est désactivée. Les sorties associées sont désactivées.

190 / 102
Architecture Double Canal
Configuration des Sorties Safety : Double Canal

Il existe 2 options pour réaliser une sortie à 2 canaux:


• 2 sorties utilisant le commutateur de groupe de sorties (comme canal d'arrêt)
• 2 sorties sans utiliser le commutateur de groupe de sorties

Comme pour les entrées, il faut respecter une certaine répartition :

Les sorties de ces groupes… Peuvent être combinées avec les entrées de ces groupes

OUT00nn OUT01nn

OUT00nn OUT04nn

OUT01nn OUT02nn

OUT01nn OUT04nn

OUT02nn OUT03nn
OUT03nn OUT04nn

192 / 102
Configuration d'une Sortie Safety Double Canal

La sortie doit être testée à intervalle régulier, au moins une fois toute les huit heures. Les
sorties sont testées à chaque redémarrage par le système

Lorsque la fonction de sécurité est demandée, le contrôleur désactive les deux commutateurs de sortie en
parallèle. Les sorties associées sont désactivées.
Le commutateur de groupe a une importance pour la fonction de sécurité en tant que deuxième canal d'arrêt
lorsqu'un commutateur de sortie présente un défaut (ne peut pas être désactivé).
En option, une surveillance de la fonction de sécurité peut être mise en œuvre pour augmenter le diagnostic
(capteurs, codeurs, fins de course, par exemple).

193 / 102
Configuration d'une Sortie Safety H-Bridge

Lorsque la fonction de sécurité est demandée, le contrôleur désactive les commutateurs de sortie. Les sorties
associées sont désactivées.
Le commutateur de groupe n'a aucune incidence sur la fonction de sécurité.
Il est également possible de commander en toute sécurité des actionneurs autres que des moteurs sans inverser le
sens de rotation avec un pont en H.

194 / 102
La librairie ifmPLCopenSafe
La Librairie ifmPLCopenSafe

La librairie est très riche, ifm a ajouté quelques FBs utiles dans un AddOn. Il serait trop long
d'expliquer l'utilité de chaque Bloc dans le détail. Nous vous renvoyons à la documentation
disponible sur le site de plcOpen.org et à notre manuel de programmation pour plus de détails.

Les spécifications sont disponibles sur internet :


http://www.plcopen.org/pages/tc5_safety/specific
ations/

196 / 102
ECHANGE DE VARIABLES ENTRE
APPLICATIONS SAFE ET STANDARD
Il est possible de lire/écrire des données de l'application standard à partir de l'application Safety.
Pour cela on utilise 2 objets Codesys EVC (Exchange Variable Connection) côté standard et EVL (Exchange Variable
List) côté Safety.
Les règles d'accès sont les suivantes :

197 / 102
ECHANGE DE VARIABLES ENTRE
APPLICATIONS SAFE ET STANDARD
Dans l'exemple ci-dessous, nous déclarons 3 variables écrites par l'application Standard vers l'application Safety
dans les EVL ensuite il faut compiler l'application.

Dans l'application standard sélectionner EVC puis Build (en haut à gauche). Sélectionner ensuite les variables
nécessaires

Il est ensuite possible de lire des variables de l'application Safety et d'écrire les EVL.

198 / 102
CANopen SAFETY
CAN OPEN SAFETY

Ajout des composants - Master


Insertion du CAN bus IFM : De la même façon, ajoutez le CANopen Manager :
Click droit sur CAN (sous communication dans Clic droit sur CANBus  Add Device
l‘arborescence) Add Device Sélectionnez CANopen_Manager_SIL2 pour un
Sélectionnez CANBus ifm electronic, puis Add Device. Master CANopen

200 / 102
CAN OPEN SAFETY

Ajout des composants Slave


Sélectionnez CANopen_Manager dans l‘arborescence
Click droit sur CANOpen_Manager  Add Device
Sélectionnez le module esclave à gérer (e.g. Inclinomètre
SAFETY)
Note : Si vous ne trouvez pas votre module -> Sélectionnez All
vendors
Si le module n‘existe pas, utilisez Device Repository pour
l‘ajouter.

201 / 102
CAN OPEN SAFETY

Configuration du Master
La configuration est identique à celle d'un Master standard

Un nouvel onglet apparaît, il permet d'identifier la variable de diganostic

202 / 102
CAN OPEN SAFETY

Configuration de l'Esclave
La configuration est identique à celle d'un Esclave standard

Les onglets de l'esclave standard sont dupliqués avec les onglets SAFETY (PDO->SRDO CANopen I/O
Mapping -> CANopen Safety I/O Mapping, …)

203 / 102
CAN OPEN SAFETY

Configuration de l'Esclave
L'onglet SRDO indique le contenu et les Ids utilisés pour les SRDO comme pour des PDO standards

L'onglet CANopene Safety Parameters permet d'accéder aux paramètres SAFETY (SCT, SRVT, SRDO CobID, …)

204 / 102
CAN OPEN SAFETY : DIAGNOSTIQUE

Diagnostic CANopen Safety


Une variable implicite (Type Objet) est générée par codesys portant le nom de l'esclave. Elle donne accès à des
informations SAFE concernant l'esclave par appel de méthodes. Voir exemple ci-dessous. Pour plus de détail se référer
à la documentation codesys. On peut ainsi contrôler les erreurs, les acquitter et activer ou non l'esclave safety.

205 / 102
CAN OPEN SAFETY : COMMUNICATON ENTRE 2 CONTRÔLEURS

Ajouter un CANopen Device SIL 2


Certaines applications nécessitent le transfert d'information SAFETY entre 2 calculateurs. Pour cela une
méthode simple consiste à "programmer" un des deux contrôleurs en tant qu'esclave SAFETY.
De la même façon que pour un Master, ajoutezun CANopen_Remote_Device_SIL2 :
Clic droit sur CANBus  Add Device
Sélectionnez Local Device CANopen Device SIL 2 pour un esclave CANopen Safety

206 / 102
CAN OPEN SAFETY : COMMUNICATON ENTRE 2 CONTRÔLEURS

Configuration du CANopen Device SIL2


Il faut tout d'abord configurer et paramétrer les éléments propres au CANopen standard : Node ID, heartbit
consumer/producer, EMCY,…
Ensuite, on peut définir ses propres PDOs et SRDO : General -> Edit Safety I/O Area ->

207 / 102
CAN OPEN SAFETY : COMMUNICATON ENTRE 2 CONTRÔLEURS

Configuration du CANopen Device SIL2


Reste ensuite à "Mapper" les variables sur les bonnes Entrées / Sorties

Par défaut les SRDOs sont créés avec les ID 101,102,… et un type de transmission donné

208 / 102
CAN OPEN SAFETY : COMMUNICATON ENTRE 2 CONTRÔLEURS

Configuration du CANopen Device SIL2


il est possible de modifier les paramètres des SRDOs en éditant le dictionnaire d'objets

209 / 102
CAN OPEN SAFETY : COMMUNICATON ENTRE 2 CONTRÔLEURS

Configuration du CANopen Device SIL2


Quand la configuration est terminée, il faut générer le fichier .eds de l'esclave qu'on vient de créer

Il faut ensuite ajouter ce nouvel eds au device repository et d'ajouter l'esclave au master CANopen Safety

210 / 102
contact

ifm electronic
support.networkandcontrol.fr@ifm.com
www.ifm.com

Vous aimerez peut-être aussi