résultent d'une seule condition, de blocs logiques ou d'instructions à blocs logiques antérieures.

Dans les schémas compliqués, les blocs sont codés en partant de la partie supérieure gauche puis en descendant. Quand on a le choix, on code donc OR LOAD avant AND LOAD.

Le schéma suivant doit être séparé en deux blocs et chaque bloc en deux autres blocs avant le codage. Comme on le voit, les blocs a et b nécessitent une instruction AND LOAD. Avant AND LOAD, OR LOAD doit cependant être utilisée pour combiner les blocs du haut et du bas des deux côtés c'est- à-dire pour combiner a1 et a2 ainsi que b1 et b2.

<figure><img src="image_252.png" /></figure>

<table><thead><tr><td>Adresse</td><td>Instruction</td><td>Opérande</td></tr></thead><tbody><tr><td>00000</td><td>LD</td><td>00000</td></tr><tr><td>00001</td><td>AND NOT</td><td>00001</td></tr><tr><td>00002</td><td>LD NOT</td><td>00002</td></tr><tr><td>00003</td><td>AND</td><td>00003</td></tr><tr><td>00004</td><td>OR LD</td><td>—</td></tr><tr><td>00005</td><td>LD</td><td>00004</td></tr><tr><td>00006</td><td>AND</td><td>00005</td></tr><tr><td>00007</td><td>LD</td><td>00006</td></tr><tr><td>00008</td><td>AND</td><td>00007</td></tr><tr><td>00009</td><td>OR LD</td><td>—</td></tr><tr><td>00010</td><td>AND LD</td><td>—</td></tr><tr><td>00011</td><td>OUT</td><td>10003</td></tr></tbody></table>

Blocs a1 et a2

Blocs b1 et b2

Blocs a et b
### 6.2.8- Codage des instructions multiples de droite

Dans le cas où plusieurs instructions de droite sont exécutées avec la même condition d'exécution, elles sont codées successivement à la suite de la dernière condition de la ligne. Dans l'exemple suivant, la dernière ligne d'instruction contient une instruction supplémentaire correpondant à un AND avec IR 00004.

<figure><img src="image_253.png" /></figure>

<table><thead><tr><th>Adresse</th><th>Instruction</th><th>Opérande</th></tr></thead><tbody><tr><td>00000</td><td>LD</td><td>00000</td></tr><tr><td>00001</td><td>OR</td><td>00001</td></tr><tr><td>00002</td><td>OR</td><td>00002</td></tr><tr><td>00003</td><td>OR</td><td>HR 0000</td></tr><tr><td>00004</td><td>AND</td><td>00003</td></tr><tr><td>00005</td><td>OUT</td><td>HR 0001</td></tr><tr><td>00006</td><td>OUT</td><td>10000</td></tr><tr><td>00007</td><td>AND</td><td>00004</td></tr><tr><td>00008</td><td>OUT</td><td>10006</td></tr></tbody></table>

### 6.2.9- Lignes secondaires

Lorsqu'une ligne d'instructions se sépare en deux ou plusieurs autres lignes secondaires, il est parfois nécessaire d'utiliser des branchements ou des bits TR pour maintenir la condition d'exécution ayant existé au niveau de l'embranchement.

<figure><img src="image_254.png" /></figure>

<table><thead><tr><th>Adresse</th><th>Instruction</th><th>Opérande</th></tr></thead><tbody><tr><td>00000</td><td>LD</td><td>00000</td></tr><tr><td>00001</td><td>OUT</td><td>TR 0</td></tr><tr><td>00002</td><td>AND</td><td>00001</td></tr><tr><td>00003</td><td>OUT</td><td>TR 1</td></tr><tr><td>00004</td><td>AND</td><td>00002</td></tr><tr><td>00005</td><td>Instruction 1</td><td></td></tr><tr><td>00006</td><td>LD</td><td>TR 1</td></tr><tr><td>00007</td><td>AND</td><td>00003</td></tr><tr><td>00008</td><td>Instruction 2</td><td></td></tr><tr><td>00009</td><td>LD</td><td>TR 0</td></tr><tr><td>00010</td><td>AND</td><td>00004</td></tr><tr><td>00011</td><td>Instruction 3</td><td></td></tr><tr><td>00012</td><td>LD</td><td>TR 0</td></tr><tr><td>00013</td><td>AND NOT</td><td>00005</td></tr><tr><td>00014</td><td>Instruction 4</td><td></td></tr></tbody></table>

Dans cet exemple, TR 0 et TR 1 sont utilisés pour stocker les conditions d'exécution au point d'embranchement. Après l'exécution de l'instruction 1, la condition stockée dans TR 1 est
chargée pour effectuer un AND avec l'état de IR 00003. La condition d'exécution stockée dans TR 0 est chargée deux fois, la première pour effectuer un AND avec l'état de IR 00004 et la deuxième avec l'état inversé de IR 00005.

## 6.3- Contrôle de l'état des bits

On peut utiliser 7 instructions de base pour contrôler individuellement l'état des bits : OUTPUT, OUTPUT NOT, SET, RESET, DIFFERENTIATE UP, DIFFERENTIATE DOWN et KEEP. Toutes ces instructions apparaissent à la fin d'une ligne d'instructions et ont une adresse de bit comme opérande.

### 6.3.1- SET et RESET

Les instructions SET et RESET sont très similaires aux instructions OUTPUT et OUTPUT NOT, à ceci près qu'elles changent l'état de leurs bits d'opérande pour les conditions d'exécution à ON. Aucune de ces deux instructions n'affecte l'état de son bit d'opérande lorsque la condition d'exécution est à OFF.

* SET place à ON son bit d'opérande lorsque la condition d'exécution passe à ON, mais à la différence de l'instruction OUTPUT, SET ne place pas à OFF le bit d'opérande lorsque la condition d'exécution passe à OFF.

* RESET place à OFF le bit d'opérande lorsque la condition d'exécution est à OFF, mais contrairement à OUTPUT NOT, RESET ne passe pas à ON le bit d'opérande lorsque la condition d'exécution passe à OFF.

<figure><img src="image_255.png" /></figure>

<table><thead><tr><td>Adresse</td><td>Instruction</td><td>Opérande</td></tr></thead><tbody><tr><td>00000</td><td>LD</td><td>00100</td></tr><tr><td>00001</td><td>SET</td><td>10000</td></tr><tr><td>00002</td><td>LD</td><td>00101</td></tr><tr><td>00003</td><td>RSET</td><td>10000</td></tr></tbody></table>

### 6.3.2- DIFFERENTIATE UP et DIFFERENTIATE DOWN

Les instructions DIFFERENTIATE UP (front montant) et DIFFERENTIATE DOWN (front descendant) s'utilisent pour placer le bit d'opérande à ON pour un tour de scrutation à la fois.
* DIFFERENTIATE UP place à ON le bit d'opérande pour un tour de scrutation après le passage de OFF à ON de sa condition d'exécution ;

* DIFFERENTIATE DOWN place à ON le bit d'opérande pour un tour de scrutation après le passage de ON à OFF de sa condition d'exécution.

Ces deux instructions ne nécessitent qu'une ligne d'instruction en code mnémonique.

<figure><img src="image_256.png" /></figure>

<table><thead><tr><td>Adresse</td><td>Instruction</td><td>Opérande</td></tr></thead><tbody><tr><td>00000</td><td>LD</td><td>00000</td></tr><tr><td>00001</td><td>DIFU(13)</td><td>01000</td></tr></tbody></table>

<table><thead><tr><td>Adresse</td><td>Instruction</td><td>Opérande</td></tr></thead><tbody><tr><td>00000</td><td>LD</td><td>00001</td></tr><tr><td>00001</td><td>DIFD(14)</td><td>01001</td></tr></tbody></table>

### 6.3.3- KEEP

KEEP s'utilise pour maintenir l'état du bit d'opérande résultant de deux conditions d'exécution. Pour ce faire, KEEP est connectée à deux lignes d'instruction. Lorsque la condition d'exécution de la fin de la première ligne est à ON (verrouillage), le bit d'opérande de KEEP est placé à ON (déverrouillage).

Lorsque la condition d'exécution de la fin de la deuxième ligne est à ON, le bit d'opérande de KEEP est placé à OFF(verrouillage).

Le bit d'opérande de KEEP maintient sont état ON ou OFF même s'il est situé dans un branchement. Le bit de déverrouillage est prioritaire sur le bit de verrouillage.

<figure><img src="image_257.png" /></figure>

<table><thead><tr><td>Adresse</td><td>Instruction</td><td>Opérande</td></tr></thead><tbody><tr><td>00000</td><td>LD</td><td>00002</td></tr><tr><td>00001</td><td>AND NOT</td><td>00003</td></tr><tr><td>00002</td><td>LD</td><td>00004</td></tr><tr><td>00003</td><td>OR</td><td>00005</td></tr><tr><td>00004</td><td>KEEP(11)</td><td>HR 0000</td></tr></tbody></table>

### 6.4- Instructions de temporisation/comptage

TIM et TIMH(15) sont des instructions de temporisation de retard au travail en décrémentation nécessitant un numéro de TC et une valeur sélectionnée (SV).

STIM(--) s'utilise pour contrôler les tempo. cycliques qui servent
à activer les sous-programmes d'interruption.

CNT est une instruction de compteur en décrémentation et CNTR est une instruction de compteur réversible. Toutes les deux nécessitent un numéro de TC et une SV ; elles sont connectées aux lignes d'instructions multiples et servent de signal d'entrée et de RAZ. CTBL(--) et INT(--) et PRV(--) sont utilisées pour gérer le compteur rapide. INT(--) est également utilisée pour arrêter la sortie par impulsion.

Tout numéro de TC ne peut être défini deux fois, c'est-à-dire qu'une fois qu'il a été utilisé comme zone d'opérande dans une instruction de tempo. ou compteur, il ne peut être réutilisé. Une fois défini, les numéros de TC peuvent être utilisés autant de fois qu'on le souhaite comme opérande dans les instructions autres que tempo. ou compteur.

Les numéros de TC vont de 000 à 511. Aucun préfixe n'est nécessaire lorsque l'on utilise un numéro de TC comme donnée d'opérande dans une instruction de tempo. ou compteur. Une fois défini comme temporisation, un numéro de TC peut porter le préfixe TIM pour être utilisé comme opérande dans certaines instructions. Le préfixe TIM s'utilise sans tenir compte de l'instruction de temporisation utilisée pour définir la temporisation. Une fois défini comme compteur, un numéro de TC peut porter le préfixe CNT pour être utilisé comme opérande dans certaines instructions. CNT s'utilise également sans tenir compte de l'instruction compteur utilisée pour définir le compteur.

### 6.4.1- TIMER - TIM

<figure><img src="image_258.png" /></figure>

SV est située entre 000,0 et 999,9. La virgule décimale n'est pas entrée. Chaque numéro de TC peut être utilisé comme donnée d'opérande dans une seule instruction TIMER ou COUNTER. Une
temporisation s'active lorsque sa condition d'exécution passe à ON et est remise à zéro (à la SV) lorsque la condition passe à OFF. Une fois activée, TIM mesure par unités de 0,1 seconde à partir de la SV.

### 6.4.2- COUNTER – CNT

### 6.4.2- COUNTER – CNT

<figure><img src="image_259.png" /></figure>

#### Valeurs de données d'opérande

<table><tr><td>N: n° de TC</td></tr><tr><td># (000 à 511)</td></tr></table>

#### Zones de données d'opérande

<table><tr><td>SV: valeur sél. (canal, BCD)</td></tr><tr><td>IR, SR, AR, DM, HR, LR, #</td></tr></table>

CNT s'utilise pour décompter à partir de la SV lorsque la condition de l'impulsion de comptage, CP, passe de OFF à ON, c'est-à-dire que la valeur en cours (PV) est décrémentée de un à chaque fois que CNT est exécutée avec une condition à ON pour la CP et que la condition de la dernière exécution était à OFF. Si la condition d'exécution n'a pas changé ou est passée de ON à OFF, la PV de CNT reste inchangée. Le drapeau de fin d'un compteur passe à ON lorsque la PV atteint zéro et y reste jusqu'à remise à zéro du compteur.

CNT est remis à zéro à l'aide d'une entrée de RAZ, R. Lorsque R passe de OFF à ON, la PV est remise à la valeur de la SV. La PV n'est pas décrémentée lorsque R est à ON. Le décomptage à partir de SV recommence lorsque R passe à OFF. La CP de CNT n'est pas remise à zéro dans les branchements ni en cas de coupure de courant.

Voici une illustration de ce qui précède sous la forme d'un schéma et de codes mnémoniques correspondants :
<figure><img src="image_260.png" /></figure>

<table><thead><tr><th>Adresse</th><th>Instruction</th><th>Donnée</th></tr></thead><tbody><tr><td>00000</td><td>LD</td><td>00000</td></tr><tr><td>00001</td><td>AND</td><td>00001</td></tr><tr><td>00002</td><td>OR</td><td>00002</td></tr><tr><td>00003</td><td>DIFU(13)</td><td>21600</td></tr><tr><td>00004</td><td>LD</td><td>00100</td></tr><tr><td>00005</td><td>AND NOT</td><td>00200</td></tr><tr><td>00006</td><td>LD</td><td>01001</td></tr><tr><td>00007</td><td>AND NOT</td><td>01002</td></tr><tr><td>00008</td><td>AND NOT</td><td>LR 6300</td></tr><tr><td>00009</td><td>OR LD</td><td>—</td></tr><tr><td>00010</td><td>AND</td><td>21600</td></tr><tr><td>00011</td><td>BCNT(67)</td><td>—</td></tr><tr><td></td><td>#</td><td>0001</td></tr><tr><td></td><td></td><td>004</td></tr><tr><td></td><td>HR</td><td>00</td></tr><tr><td>00012</td><td>LD</td><td>00005</td></tr><tr><td>00013</td><td>TIM</td><td>000</td></tr><tr><td></td><td>#</td><td>0150</td></tr><tr><td>00014</td><td>LD</td><td>TIM 000</td></tr><tr><td>00015</td><td>MOV(21)</td><td>—</td></tr><tr><td></td><td>HR</td><td>00</td></tr><tr><td></td><td>LR</td><td>00</td></tr><tr><td>00016</td><td>LD</td><td>HR 0015</td></tr><tr><td>00017</td><td>OUT NOT</td><td>00500</td></tr></tbody></table>

## 7- Diagnostic rapide de l'API

On peut utilisez les diagrammes suivants pour résoudre les éventuels problèmes de fonctionnement.
<figure><img src="image_261.png" /></figure>

# 7.2 PROGRAMMATION DES APIS MOELLER

## 1- L'environnement de Sucosoft S40
Sucosoft S40 de Moeller est un système de programmation IEC 1131-3. Le logiciel possède une ergonomie sans faille et soutien l'utilisateur lors de la gestion et du traitement de son projet d'automatisation. Une grande bibliothèque de logiciel avec de nombreux modules fonctionnels raccourcit les temps de programmation avec la possibilité de créer sa propre bibliothèque et de limiter les bibliothèques étrangères. Entretemps Moeller offre de vastes bibliothèques dans les domaines de la technique de régulation et du chauffage-climatisation-ventilation. L'utilisation de ces modules fonctionnels de série raccourcit considérablement l'établissement d'applications complexes. Même dans des installations distribuées tous les automates programmables peuvent être programmés et diagnostiqués à partir d'une place centrale par la programmation de réseau.
Le logiciel Sucosoft S40 est le moyen de programmation pour les automates de la série PS4-141/151/201/271/341 et pour le PS 416. Il travaille sous Windows 95/98 et Windows NT 4.0. Il soutient les automates compacts et modulaires Moeller et est livré en cinq langues (D, GB, F, E, I).

On se propose dans ce qui suit de vous guider étapes parétapes pour découvrir comment :

* créer un projet

* établir le fichier programme

* entrer la configuration

* générer le code

* effectuer le test et la mise en service,

avec le logiciel Sucosoft S 40.

## 2- Description de la tâche à réaliser

<figure><img src="image_262.png" /></figure>
Figure 6.1 : tâche à réaliser

On veut amener le chariot de cet équipement, de la position initiale en position A par actionnement du bouton marche « START ». Le bouton arrêt « STOP » sert à interrompre l'action.

Dans notre exemple il n y a que des variables d'entrée et de
sortie binaires auxquelles nous affecterons les adresses suivantes
:

- Position initiale : Entrée 0.0

- Bouton START : Entrée 0.1

- Bouton STOP : Entrée 0.2

- Position A : Entrée 0.3

- Moteur : Sortie 0.0

Les noms de variables peuvent être librement choisis. La
déclaration de variables prend donc la forme suivante :

VAR
    position_initiale AT %I0.0.0.0.0:BOOL; (*Position initiale*)
    bouton_marche AT %I0.0.0.0.1:BOOL; (*Bouton Marche*)
    bouton_arret AT %I0.0.0.0.2:BOOL;
    position_A AT %I0.0.0.0.3:BOOL; (*Position A atteinte*)
    moteur AT %Q0.0.0.0.0:BOOL;
END_VAR

L'opérande d'entrée « position_initiale » doit d'abord'être lu, puis
relié par une fonction logique ET à, l'opérande « bouton_marche
».

Instruction de lecture : **LD**

Opération ET : **AND**

Si le résultat de l'opération (résultat courant) est égalà 1,
l'opérande « moteur » est positionné à 1 (la DEL s'allume sur la
sortie « moteur ).

Instruction de positionnement à 1 si résultat courant = 1: **S**

Les opérandes d'entrée « bouton_arret » et« position_A » sont
ensuite lus et reliés par un OU logique. Si le résultat courant est
égal à 1, l'opérande de sortie « moteur » est positionné à 0 (la
DEL sur la sortie « moteur » est éteinte).

Instruction de remise à 0 si résultat courant = 1 : **R**

nstruction de remise à 0 si résultat courant = 1 : R
<figure><img src="image_263.png" /></figure>

Avant le bloc de déclaration doit figurer le mot clé « PROGRAM » suivi du nom du programme. La partie instructions doit se terminer par le mot clé « ENDnan PROGRAM » qui marque la fin du programme.

Le programme final se présente sous l'aspect suivant :

PROGRAM position
VAR
  position_initiale AT %I0.0.0.0.0: BOOL; (*Position initiale*)
  bouton_marche   AT %I0.0.0.0.1: BOOL; (*Bouton Marche*)
  bouton_arret    AT %I0.0.0.0.2: BOOL;
  position_A      AT %I0.0.0.0.3: BOOL; (*Position A atteint*
  moteur          AT %Q0.0.0.0.0: BOOL;
END_VAR
  LD             position_initiale
  AND            bouton_marche
  S              moteur (*Met le moteur en marche*)
  LD             bouton_arret
  OR             position_A
  R              moteur (*Met le moteur à l'arrêt*)
ENDnan PROGRAM

3- Le logiciel Sucosoft S40

Lancer Sucosoft S40, l'écran ci-dessous apparaît.
<figure><img src="image_264.png" /><figcaption>Figure 6.2 : L'écran du Navigateur</figcaption></figure>

La fenêtre « Navigateur » contient les icônes permettant d'ouvrir les différents outils.

Le Navigateur vous assiste dans toutes les opérations, depuis l'élaboration du programme utilisateur jusqu'à son exécution dans l'automate programmable :

- Il renferme le Gestionnaire de projets à l'aide duquel vous créez et structurez vos projets.

- Il vous donne accès à l'Editeur d'UOP pour traiter vos UOP (programmes, blocs fonctionnels et fonctions).

La partie instructions de votre UOP peut être élaborée en langage IL, LD ou FBD. Il vous est possible de passer d'un langage de programmation à l'autre pendant la saisie du programme.

Vous disposez d'un Configurateur de topologie pour définir la configuration matérielle.

La Génération du code traduit votre programme utilisateur en programme exécutable par l'automate.
### 3.1- Création d'un projet

Pour établir un nouveau projet, dans le menu principal activer l'option (Projet >> Nouveau...) La boîte de dialogue « Créer un nouveau projet » s'ouvre :

<figure><img src="image_265.png" /><figcaption>Figure 6.3 : Création d'un nouveau projet</figcaption></figure>

Sélectionnez tout d'abord l'emplacement sur le disque par exemple le lecteur « C ».

Si vous souhaitez réaliser votre projet dans un nouveau dossier "Projets" qu'il faut créer :

* Cliquez sur le bouton « Nouveau dossier » puis entrez le nom de ce dossier dans la boîte de dialogue « Nouveau dossier » qui s'ouvre.

* Validez par « OK ».

* Dans la zone de saisie « Nouveau dossier de projet », entrez le nom « Exemple » désignant votre projet. Validez votre entrée par « OK ».

Maintenant vous pouvez choisir le type d'automate approprié. Vous pouvez le sélectionner dans une fenêtre de choix à l'aide de la barre d'outils du Navigateur. Activez le menu <Génération >>
Choisir un automate...> puis dans la fenêtre de dialogue «Choisir un automate» qui s'ouvre alors, sélectionnez un API de la zone de liste «Types d'API».

<figure><img src="image_266.png" /><figcaption>Figure 6.4 : Choix d'un automate programmable</figcaption></figure>

## 3.2- Création d'un programme

Les programmes utilisateur, qui se composent d'une ou plusieurs UOP (fichiers), sont élaborés à l'aide de l'Editeur d'UOP. Le terme générique « UOP », abréviation d'unité d'organisation de programme issue de la norme internationale IEC 1131-3, désigne trois types d'UOP, le programme, le bloc fonctionnel et la fonction.
Pour les parties de programme fréquemment utilisées, on a recours à la « Fonction » et au « Bloc fonctionnel ».

Créer votre programme utilisateur à l'aide du menu du Navigateur : **Outils >> Editeur d'UOP**

L'Editeur d'UOP est ouvert :

Dans la barre d'outils standard, cliquez sur le bouton « P » qui désigne les UOP de type programme

Les deux fenêtres « Partie déclaration » et « Partie instructions » s'affichent à l'écran, avec la présentation de base configurée dans l'Editeur d'UOP.
<figure><img src="image_267.png" /><figcaption>Figure 6.5 : Editeur d’UOP en mode assisté</figcaption></figure>

Pour saisir les variables de la partie déclaration, le Sucosoft S 40 vous offre un éditeur de variables convivial doté d'une assistance syntaxique (mode assisté) qui se présente sous la forme d'un tableau constitué de cellules de saisie dans lesquelles vous entrez votre déclaration.

<figure><img src="image_268.png" /></figure>
<caption>Figure 6.6 : Variables déclarées en mode assisté</caption>

**Type** : Vous disposez pour cette entrée d'une zone de liste avec différents types de données, que vous pouvez sélectionner à l'aide de l'option <Insérer >> Types de données... >> types de données> ou du menu contextuel. Choisissez le type « BOOL ».

**Valeur initiale** : N'entrez aucune indication. La valeur 0 sera ainsi affectée à la variable « position_initiale » lors du lancement du programme.

**Attribut** : N'entrez aucune indication. Les qualificatifs « RETAIN » pour une variable non volatile ou « CONSTANT » pour une constante ne sont pas destinés aux variables d'entrée et de sortie (I/Q).

**Adresse** : I0.0.0.0.0 Adresse physique de la variable « position_initiale ».

**Commentaire** : Facultatif. Entrez dans ce cas *Position initiale*.

Vous pouvez visualiser la déclaration de variables achevée en « Mode libre » également appelé Editeur de variables libre : Sélectionnez **Spécial >> Editeur de variables >> Mode libre**

<figure><img src="image_269.png" /><figcaption>Figure 6.6 : Variables déclarées en mode libre</figcaption></figure>

**Entrée du programme dans l'Editeur IL :**
Le langage de programmation IL est un langage littéral, structuré en ligne de la manière suivante :

* Etiquette (facultative), opérateur, opérande, commentaire (facultatif)

* Vous devez entrer les différents éléments, en les séparant par une tabulation ou un espace.

* Chaque instruction doit commencer à une nouvelle ligne.

Passez à la partie instructions en cliquant **Spécial >> Langage de programmation >> IL** de l'Editeur d'UOP.

<figure><img src="image_270.png" /><figcaption>Figure 6.7 : Programme terminé</figcaption></figure>

Enregistrez l'exemple de programme terminé en sélectionnant **Fichier >> Enregistrer sous...** Vous accédez à une fenêtre contenant le dossier **SOURCE** du projet courant, destiné à recevoir l'UOP. Entrez le nom d'UOP " *position* " et validez votre entrée par " *OK* ".
<figure><img src="image_271.png" /><figcaption>Figure 6.8 : Boite de dialogue Enregistrer l’UOP sous
Sélectionnez **Fichier »» Vérification de la syntaxe**.</figcaption></figure>

vous devez maintenant configurer votre système matériel à l'aide
de l'outil **Configurateur de topologie**. Vous entrez les
informations concernant la structure du système, ou topologie.
Activez la fenêtre " **Configurateur de topologie** " dans le
**Navigateur**

<figure><img src="image_272.png" /><figcaption>Figure 6.9 : Configurateur de topologie</figcaption></figure>
Vous devez entrer tous les modules constitutifs du système d'automatisation ainsi que les informations relatives à chaque élément de la configuration. Dans notre exemple, seul l'automate compact PS 4 est pris en compte.

Créez une nouvelle configuration topologique par **Configuration >> Nouveau**

<figure><img src="image_273.png" /><figcaption>Figure 6.10 : Boite de dialogue nouvelle configuration</figcaption></figure>

Entrez le nom « APPAREIL » dans la zone « Nom du fichier », sélectionnez « PS 4-141-MM1 » ou le type de votre PS 4 existant dans la zone de liste« Type d'automate » et validez par « OK ».

<figure><img src="image_274.png" /><figcaption>Figure 6.11 : Configuration topologique terminée</figcaption></figure>

Sélectionnez **Configuration >> Enregistrer**
### 3.3- Génération du programme

Pour générer le programme exécutable par l'automate programmable, le Navigateur vous offre des commandes directement activables à l'aide de l'option « Génération », ou les boutons de la barre d'outils.

Sélectionnez **Génération >> Nouvelle liste de génération..**,

<figure><img src="image_275.png" /></figure>

Figure 6.12 : La fenêtre de dialogue « Nouvelle liste de génération »

Choisissez dans les zones de liste : l'UOP de type « programme » que vous voulez générer comme programme exécutable. Validez à l'aide du bouton « OK ».

Sélectionnez **Génération >> Générer tout**

### 3.4- Test et mise en service

Les fonctions de Test et mise en service vous permettent de transférer le programme dans l'automate et de le tester.

Dans le Navigateur du Sucosoft, sélectionnez les **outils** et activez la commande « **Test et mise en service** »
<figure><img src="image_276.png" /><figcaption>Figure 6.13 : Test et mise en service</figcaption></figure>

Sélectionnez « Transfert... ». La boîte de dialogue « Transfert/Gestionnaire de fichiers » s'ouvre :

<figure><img src="image_277.png" /><figcaption>Figure 6.14 : Transfert/Gestionnaire de fichiers</figcaption></figure>

Marquez le fichier du code que vous voulez transférer dans l'automate et sélectionnez le bouton <Transfert → API> pour lancer la commande. Une barre de progression vous permet de suivre l'état d'avancement de l'opération en cours :
<figure><img src="image_278.png" /><figcaption>Figure 6.14 : Barre de progression transfert de fichiers</figcaption></figure>

## Lancement du programme:

Cliquez sur le bouton « Etat du programme... » dans la fenêtre « Liste des connexions ». Lla boîte de dialogue suivante s'ouvre :

<figure><img src="image_279.png" /><figcaption>Figure 6.15 : Etat du programme</figcaption></figure>

Vous pouvez utiliser les boutons pour lancer ou arrêter votre programme ou encore pour obtenir des informations sur les erreurs survenues.

## 3.5- Entrée du programme en LD

Vous pouvez élaborer vos programmes dans les langages LD et les mettre en service, de la manière décrite pour le langage IL. La
partie instructions d'une UOP en langage LD est représentée par des symboles graphiques. La partie déclaration se présente sous la même forme qu'en langage IL.

Choisissez le langage de programmation LD à l'aide de l'option **Options >> Langage de programmation >> LD**

<figure><img src="image_280.png" /><figcaption>Figure 6.16 : UOP « position » représentée en LD</figcaption></figure>

Vous pouvez aussi élaborer vos programmes dans les langages FBD et les mettre en service, de la manière décrite pour le langage IL. La partie instructions d'une UOP en langage FBD est représentée par des symboles graphiques. La partie déclaration se présente sous la même forme qu'en langage IL.

Choisissez le langage de programmation FBD à l'aide de l'option **Options >> Langage de programmation >> FBD**
<figure><img src="image_281.png" /><figcaption>Figure 6.16 : UOP « position » représentée en FBD</figcaption></figure>

## 7.3 PROGRAMMATION DES APIS SIEMENS S7-200
<figure><img src="image_282.png" /><figcaption>Affectation des bornes du S7-200 (CPU 221)</figcaption></figure>
<figure><img src="image_283.png" /></figure>

# Sorties à relais

## Exécution cyclique du programme dans le S7-200

### Exécution cyclique du programme dans le S7-200

Tous les automates SIMATIC fonctionnent de façon cyclique. Le cycle commence par la lecture des états des entrées et leur transfert dans la mémoire image des entrées MIE (phase d'acquisition des entrées). Cette mémoire image est la source d'approvisionnement du programme pour son exécution. En cours de traitement, le programme range les résultats des opérations dans la mémoire image des sorties MIS. A la fin du programme, les états contenus dans la MIS sont transférés aux sorties physiques (phase d'émission des sorties), et le cycle reprend au début.
<figure><img src="image_284.png" /></figure>
Configuration de l'interface pour liaison PC/PG-API

<figure><img src="image_285.png" /></figure>

<figure><img src="image_286.png" /></figure>

<figure><img src="image_287.png" /></figure>

<figure><img src="image_288.png" /></figure>

<figure><img src="image_289.png" /></figure>

<figure><img src="image_290.png" /></figure>

1. Cliquez sur l'icône de communication dans la barre de navigation.

2. Vérifier les paramètres de la communication.
3. Double-cliquez sur le champ de mise à jour de la communication. Le logiciel devrait alors identifier et inscrire de lui-même la CPU connectée.

4. Si la CPU n'est pas identifiée ou s'il apparaît un message signalant que la communication n'est pas possible, double-cliquez sur le champ Câble PPI.

5. Dans l'interface PG/PC, sélectionnez le câble PC/PPI puis cliquez sur Propriétés.

6. Dans la fenêtre PPI, réglez l'adresse CPU sur 2 et la vitesse de transmission sur 9,6 kbits/s. Dans

La fenêtre Connexion locale, sélectionnez l'interface à laquelle est connecté le câble PC/PPI. Dans chaque fenêtre, confirmez votre choix par OK. 7. Dans la fenêtre Liaisons de communication, double cliquez à nouveau sur le champ de mise à jour de la communication. La CPU est alors identifiée et inscrite automatiquement. Cette opération peut durer quelques secondes. Fermez alors la fenêtre Liaisons de communication.

## Combinaisons logiques :

Les opérations combinatoires sur bits utilisent deux chiffres : 1 et 0. Ces deux chiffres sont à la base du système de numération binaire et sont appelés chiffres binaires ou bits. Pour les contacts et les bobines, 1 signifie activé ou excité et 0 signifie désactivé ou désexcité. Les opérations de combinaison sur bits évaluent les états de signal 1 et 0 et les combinent selon la logique booléenne. Le résultat de ces combinaisons est égal à 1 ou 0. Il s'agit du résultat logique (RLG).

Il existe des opérations combinatoires sur bits pour effectuer les fonctions suivantes :
<table><thead><tr><th>Contact/contacteur</th><th></th><th>Instruction dans l'API avec la fonction correspondante</th></tr></thead><tbody><tr><td></td><td>Interrogation :<br>Est-ce qu'il circule du courant ?<br>Si oui, le résultat de l'interrogation est vrai.<br>(interrogation à "1")</td><td></td></tr><tr><td></td><td>Interrogation : est-ce qu'il ne circule pas de courant ?<br>Si oui (pas de courant), le résultat de l'interrogation est vrai.<br>(interrogation à "0")</td><td></td></tr><tr><td></td><td>Bobine :<br>si une bobine est alimentée avec la valeur "vraie" (courant), elle est activée (attraction)</td><td></td></tr><tr><td></td><td>Couplage en série :<br>(combinaison ET).<br>Le premier ET le deuxième contact doivent être fermés pour laisser passer le courant</td><td></td></tr><tr><td></td><td>Couplage en parallèle<br>(combinaison OU).<br>Le premier OU le deuxième contact doit être fermé pour laisser passer le courant</td><td></td></tr></tbody></table>

Les réseaux servent à structurer un programme. On entre chaque circuit dans un réseau.
Les réseaux servent à structurer un programme. On entre chaque
circuit dans un réseau.

<figure><img src="image_291.png" /></figure>

Les autres modes de représentation sont la liste d'instructions (Langage LIST) et le logigramme (Langage LOG). Dans le menu Affichage, vous pouvez commuter entre les langages CONT, LIST et LOG.

**Instructions**
**Instructions**
Instruction

L'instruction est la plus petite entité d'un programme utilisateur d'API. Une instruction se compose d'une partieopérande.

<figure><img src="image_292.png" /></figure>

(Que faut-il faire ?)

La partie opération d'une instruction (ici une fonction ET) spécifie la fonction qui doit être réalisée lors de l'exécution de l'instruction.

(Avec quoi faut-il le faire ?)

La partie opérande d'une instruction (ici l'entrée 0.0) précise l'élément concerné par l'opération. Il se décompose lui même en un identificateur d'opérande et un paramètre.

<figure><img src="image_293.png" /></figure>

Identificateur d'opérande

L'identificateur d'opérande indique la zone dans l'API. Ici l'opération porte sur une **Entrée**. Exemple d'autres zones possibles : **Sortie ou Mémento**.

Paramètre

Le paramètre est l'adresse de l'opérande ; il se compose par ex. d'une adresse d'octet et d'un numéro de bit.
# CHAP.8 INTRODUCTION A LA CONCEPTION ASSISTEE PAR ORDINATEUR AVEC AUTOCAD

VOIR TP