Techniques avancées

Ce chapitre contient des informations supplémentaires sur l'atelier ISaGRAF et le système cible. Il est dédié aux utilisateurs déjà familiarisés avec les outils et les méthodes d'ISaGRAF.

Les outils ISaGRAF

E/S verrouillées et E/S virtuelles

Validation de la liaison PC-Cible

Les répertoires d'ISaGRAF

Symboles de l'application

Limites de l'atelier ISaGRAF "LARGE" (WDL)


Les outils ISaGRAF

Lors de l'utilisation des outils d'édition de l'atelier ISaGRAF, il est possible de presser le bouton droit de la souris pour ouvrir un menu qui regroupe les principales commandes d'édition. Ce menu est ouvert à l'emplacement du curseur. Ceci réduit en particulier les "allers et retours" de la souris vers la barre de menu pendant les opérations couper / coller.

L'atelier ISaGRAF permet l'exécution multiple des outils. Bien qu'un outil ne puisse pas être ouvert plusieurs fois pour traiter le même objet, il est possible d'ouvrir plusieurs fenêtres pour l'édition de plusieurs objets en parallèle.

D'autres commandes permettent d'afficher la description des boutons graphiques dans les barres d'outils. Cliquer deux fois sur une zone inutilisée de la barre affiche les commandes (boutons et texte) sous forme d'un menu. Laisser le curseur de la souris sur un bouton graphique un certain temps affiche le texte correspondant à la commande associée.


E/S verrouillées et E/S virtuelles

La définition d'une carte virtuelle pendant le câblage des E/S entraîne une déconnexion logique des variables câblées sur la carte et des dispositifs d'E/S correspondants. Quand une carte est définie comme virtuelle, les opérations du noyau ISaGRAF ne sont pas modifiées. La seule différence est que les capteurs ne sont pas acquis et que les actionneurs ne sont pas mis à jour. Les variables d'E/S de l'application peuvent être forcées ou lues avec le debugger. L'attribut "Virtuel" concerne une carte complète. Il est programmé pendant le câblage des E/S, avant la génération du code de l'application. L'attribut "Virtuel" est une spécification statique, qui est mémorisée quand l'application est arrêtée et relancée.

Une autre possibilité consiste à verrouiller des variables d'E/S. Le verrouillage des variables d'E/S est réservé à la maintenance. C'est la déconnexion logique du dispositif d'entrée ou de sortie associé à une variable d'E/S de l'application. Le verrouillage ou le déverrouillage d'une variable est réalisé avec le debugger. C'est une opération dynamique, qui ne sera pas mémorisée au redémarrage de l'application. Le verrouillage ne concerne qu'une variable (une voie d'E/S). Voici le résumé des fonctions de contrôle des E/S:

Attribut "Virtuel"	Verrouillage

outil de sélection	câblage des E/S	debugger

définition	statique	dynamique

mode de sélection	par carte	par variable

application	validation et tests	maintenance

Le diagramme suivant montre le flux de données des E/S entre les différents modules d'ISaGRAF:

Quand une variable d'entrée est verrouillée, les accès à la base de données des entrées par le noyau ISaGRAF sont inchangés, mais la base de données et le capteur sont déconnectés. Les valeurs d'entrée pour l'application sont forcées par le debugger :

Quand une variable de sortie est verrouillée, le noyau exécutif et le driver de sortie sont déconnectés. Dans ce cas, l'accès à l'actionneur est encore possible avec le debugger d'ISaGRAF :

La définition d'une carte d'entrée virtuelle suit les mêmes règles que le verrouillage des entrées. La base de données des entrées et les capteurs correspondants sont déconnectés. Un driver d'E/S virtuel remplace le driver réel.

La définition d'une carte virtuelle suit les mêmes règles pour une carte d'entrée ou une carte de sortie. Pour une carte de sortie, le noyau exécutif ISaGRAF (application) continue la mise à jour de la base de données, mais celle-ci est déconnectée des actionneurs associés. Un driver d'E/S virtuel remplace le driver réel.

Pour résumer toutes les possibilités :


Validation de la liaison PC-Cible

La plupart des problèmes dus à une mauvaise communication entre l'atelier ISaGRAF et l'automate cible sont annoncés par le message "déconnecté" dans la fenêtre du debugger. Avant tout diagnostic, il faut valider la communication, quand aucune application n'est active dans l'automate. On peut ainsi valider la communication série, en dehors de tout problème dû à l'exécution de l'application.

Le langage "C", utilisé pour la description des fonctions de conversion et des procédures, permet l'accès direct aux ressources du système cible. Une erreur de programmation dans un tel composant logiciel peut provoquer de graves problèmes système ou un comportement incorrecte du système ISaGRAF. Ces problèmes peuvent également apparaître lors de l'implémentation de nouveaux pilotes d'E/S, en utilisant l'option IO Toolkit d'ISaGRAF. Une erreur système peut survenir si une carte d'E/S est implantée à une adresse mémoire incorrecte ou invalide.

Le tableau suivant résume les principaux diagnostics des erreurs de communication entre l'atelier et la cible ISaGRAF:

statut	contexte	diagnostic
"déconnecté" (avant téléchargement)		- cible arrêtée ou hors tension - câble absent ou invalide - paramètres de comm. invalides - ISaGRAF mal installé sur la cible
"déconnecté" (après téléchargement)	démarrage en cycle à cycle	- mauvaise configuration des E/S - erreur système
	démarrage en temps réel	- mauvaise configuration des E/S - erreur système (due à la programmation "C")
"pas d'application"		- application non téléchargée - application arrêtée  (à cause de la programmation "C") - confusion Intel/Motorola - version de cible incorrecte


Les répertoires d'ISaGRAF

L'atelier ISaGRAF travaille sur une architecture de répertoires dédiée. Le nom du répertoire racine pour cette architecture est spécifié par l'utilisateur lors de l'installation d'ISaGRAF. Le nom par défaut pour le répertoire racine est "ISAWIN". Voici les répertoires créés par le programme d'installation:

Les sous répertoires standard d'ISaGRAF sont :

Répertoire	Contenu
APL:	répertoire de base pour les projets ISaGRAF:  chaque projet correspond à un sous répertoire qui contient toutes les données du projet
	D'autres répertoires peuvent exister pour d'autres groupes de projets. L'installateur d'ISaGRAF crée le répertoire SMP où sont installés les projets d'exemple.
COM	objets de portée "commune", utilisables par tous les projets
EXE	programmes d'ISaGRAF et fichiers d'aide
LIB	librairies ISaGRAF:  - liste des éléments, - interface,  paramètres pour chaque élément - fiches techniques
LIB\IOC	code source des configurations d'E/S
LIB\FNC	code source des fonctions en langages IEC
LIB\FBL	code source des blocs fonctionnels en langages IEC
LIB\SRC	code source des éléments en langage "C"
LIB\DEFS	fichiers de définitions en langage "C"
LIB\RELS	code relogeable des éléments en langage "C"
LIB\DEV	fichier de commande pour le développement "C" des librairies: makefile, fichier d'édition de liens...
TMP	fichiers temporaires. les sous-répertoires sous TMP sont réservés  au générateur de code ISaGRAF et ne doivent jamais être détruits.
Les répertoires peuvent être placés ailleurs sur le disque. Si une architecture non standard est utilisée, le chemin des sous répertoires doit être décrit dans la section "WS001" du fichier d'initialisation "ISA.ini", dans le sous-répertoire EXE de ISaGRAF. Voici les entrées de la section "WS001" :

Isa	chemin du répertoire racine d'ISaGRAF

IsaExe	chemin du répertoire des exécutables ISaGRAF

IsaApl	chemin du répertoire racine des projets ISaGRAF

IsaTmp	chemin du répertoire pour les fichiers temporaires

IsaSrc	chemin du répertoire pour les fichiers de code source C

IsaDefs	chemin du répertoire pour les fichiers de définitions C

Notez que si vous changez l'entrée IsaTmp, vous devez créer les sous-répertoires OBJS, RELS et DATA dans le nouveau répertoire.

L'exemple suivant montre les entrées de la section "WS001" pour une architecture standard :

;fichier c:\ISAWIN\EXE\ISA.ini

[WS001]

Isa=c:\isawin

IsaExe=c:\isawin\exe

IsaApl=c:\isawin\apl

IsaTmp=c:\isawin\tmp

IsaSrc=c:\isawin\lib\src

IsaDefs=c:\isawin\lib\defs

Quand vous voulez ajouter des fonctions ou des blocs fonctionnels "C" à la cible ISaGRAF, le répertoire \ISAWIN\LIB\DEV peut être utilisé pour les fichiers de développement: fichiers de commandes, makefiles, maps, etc... Le répertoire \ISAWIN\LIB\RELS peut être utilisé pour les fichiers objets générés lors de la compilation "C", et les fichiers librairies nécessaires à l'édition de lien du noyau ISaGRAF.


Symboles de l'application

Chaque objet d'une application ISaGRAF est identifié par un nom (saisi pendant la déclaration des variables) et une adresse virtuelle interne, calculée par le générateur de code. L'adresse virtuelle ne doit pas être confondue avec l'adresse réseau saisie pendant la déclaration d'une variable. Les adresses virtuelles sont utilisées dans les opérations de communication entre le noyau ISaGRAF et le debugger ou une autre tâche "C" utilisateur. Quand le générateur de code d'ISaGRAF est lancé, il génère un fichier ascii qui donne la correspondance entre les noms et les adresses virtuelles pour tous les objets (variables, programmes, étapes...) de l'application. Ce fichier peut être facilement interprété par un programme utilisateur, pour accéder aux informations symboliques de la base de données statique du noyau ISaGRAF. Ce fichier est nommé "APPLI.TST" et il est situé dans le répertoire du projet ISaGRAF : "\ISAWIN\APL\nompro" (nompro est le nom du projet). Cette section présente le format détaillé du fichier "APPLI.TST". Les  notations suivantes sont utilisées pour la description du fichier :

VA	adresse virtuelle

ATTR	attribut d'une variable

USP	fonction  "C"

Voici les valeurs que peut prendre le champ "attributs" qui décrit les attributs d'une variable :

+X	variable interne

+C	variable interne accessible en lecture seulement

+I	variable d'entrée

+O	variable de sortie

Tous les nombres, à l'exception des adresses virtuelles, sont exprimés en décimal. Les adresses virtuelles (VA) sont exprimées en hexadécimal sur quatre chiffres, précédés du caractère "!". Par exemple :

123	est une valeur décimale

!A003	est une adresse virtuelle exprimée en hexadécimal

Voici le format global du fichier "APPLI.TST". Le fichier est structuré comme une liste de blocs. Un bloc est une suite d'enregistrements. Chaque enregistrement est décrit sur une ligne de texte. Chaque bloc commence par un en-tête décrit sur une ligne.

Bloc de début

Blocs de description

Bloc de fin

Voici le format général d'un bloc :

@ <nom_bloc> <arguments>

#enregistrement...

#enregistrement...

...

Voici la structure du premier bloc du fichier, qui regroupe des informations globales sur l'application :

@ISA_SYMBOLS,<appli_crc>

#NAME,<appli_name>,<version>

#DATE,<creation_date>

#SIZE,G=<nbprg>,S=<nbstep>,T=<nbtra>,L=0,P=<nbpro>,V=<nbvar>

#COMMENT,cj international

appli_crc	checksum du fichier de symboles

appli_name	nom de l'application

version	numéro de version de l'atelier ISaGRAF

creation_date	date de génération de l'application

nbprg	nombre de programmes

nbstep	nombre d'étapes SFC

nbtra	nombre de transitions SFC

nbpro	nombre de procédures "C" utilisées

nbvar	nombre total de variables d'E/S

Voici la structure du dernier bloc, qui indique la fin du fichier :

@END_SYMBOLS

Voici la structure du bloc utilisé pour décrire les programmes de l'application:

@PROGRAMS,<nbprg>

#<va>,<name>

#...

nbprg	nombre de programmes définis dans ce bloc

va	adresse virtuelle du programme

name	nom du programme

Voici la structure du bloc utilisé pour décrire les étapes SFC de l'application. Une adresse virtuelle de pseudo-étape est définie pour chacun des programmes non SFC:

@STEPS,<nbsteps>

#<va>,<name>,<father>

#...

nbsteps	nombre d'étapes définies dans ce bloc

va	adresse virtuelle de l'étape

name	nom de l'étape

father	adresse virtuelle du programme

Voici la structure du bloc utilisé pour décrire les transitions SFC de l'application :

@TRANSITIONS,<nbtrans>

#<va>,<name>,<father>

#...

nbtrans	nombre de transitions définies dans ce bloc

va	adresse virtuelle de la transition

name	nom de la transition

father	adresse virtuelle du programme

Voici la structure du bloc utilisé pour décrire les variables booléennes de l'application :

@BOOLEANS,<nb_boo>

#<va>,<name>,<attr>,<program>,<eq_false>,<eq_true>

#...

et si l'index de la variable excède 4095:

X#(1.<varno>),<name>,<attr>,<program>,<eq_false>,<eq_true>

nb_boo	nombre de variables dans ce bloc

va	adresse virtuelle de la variable

varno	index de la variable (non masqué par le type)

name	nom de la variable

attr	attribut de la variable

program	adresse virtuelle du programme père

ou "!0000" pour une variable globale

eq_false	libellé équivalent à false

eq_true	libellé équivalent à true

Voici la structure du bloc utilisé pour décrire les variables analogiques de l'application :

@ANALOGS,<nb_ana>

#<va>,<name>,<attr>,<program>,<format>,<unit>

#...

et si l'index de la variable excède 4095:

X#(2.<varno>),<name>,<attr>,<program>,<format>,<unit>

nb_ana	nombre de variables dans ce bloc

va	adresse virtuelle de la variable

varno	index de la variable (non masqué par le type)

name	nom de la variable

attr	attribut de la variable

program	adresse virtuelle du programme père

ou "!0000" pour une variable globale

format	= "I" pour une variable entière

= "F" pour une variable réelle

unit	libellé d'unité

Voici la structure du bloc utilisé pour décrire les variables temporisations de l'application :

@TIMERS,<nb_tmr>

#<va>,<name>,<attr>,<program>

#...

et si l'index de la variable excède 4095:

X#(3.<varno>),<name>,<attr>,<program>

nb_tmr	nombre de variables dans ce bloc

va	adresse virtuelle de la variable

varno	index de la variable (non masqué par le type)

name	nom de la variable

attr	attribut de la variable (toujours +X : interne)

program	adresse virtuelle du programme père

ou "!0000" pour une variable globale

Voici la structure du bloc utilisé pour décrire les variables messages de l'application :

@MESSAGES,<nb_msg>

#<va>,<name>,<attr>,<program>,<max_len>

#...

et si l'index de la variable excède 4095:

X#(4.<varno>),<name>,<attr>,<program>,<max_len>

nb_msg	nombre de variables dans ce bloc

va	adresse virtuelle de la variable

varno	index de la variable (non masqué par le type)

name	nom de la variable

attr	attribut de la variable

program	adresse virtuelle du programme père

ou "!0000" pour une variable globale

max_len	longueur maximum (capacité déclarée du message)

Voici la structure du bloc utilisé pour décrire les fonctions "C" utilisées dans l'application :

@USP,<nb_usp>

#<va>,<name>

#...

nb_usp	nombre de fonctions dans ce bloc

va	adresse virtuelle de la fonction

name	nom de la fonction

Voici la structure du bloc utilisé pour décrire les instances de blocs fonctionnels "C" utilisées dans l'application :

@FBINSTANCES,<nb_fb>

#<va>,<inst_name>,<fb_name>

#...

nb_fb	nombre d'instances d'un bloc fonctionnel C dans ce bloc

va	adresse virtuelle de l'instance du bloc fonctionnel

inst_name	nom de l'instance du bloc fonctionnel

fb_name	nom du bloc fonctionnel de référence


Limites de l'atelier ISaGRAF "LARGE" (WDL)

Voici quelques limites numériques concernant les objets traités par l'atelier ISaGRAF. Bien sûr, d'autres limites pratiques sont imposées par la configuration du matériel utilisé (mémoire disponible, espace disque), et les capacités du système cible ISaGRAF (mémoire, ressources matérielles et logicielles disponibles...). Les tableaux suivants donnent des limites purement théoriques qui ne pourront en aucun cas être dépassées.

Concernant un projet :

Objet	Maximum	Notes

Programmes	255	pour l'ensemble des programmes principaux,

fils, et sous-programmes

Niveaux de hiérarchie	20

Le nombre de projets installés dans l'atelier n'est limité que par l'espace disque disponible.

Concernant les noms :

Nom pour :	Maximum	Notes

Projet	8 char

Programme	8 char

Variable	16 char	+ 60 caractères de commentaire

Nom de mot équivalent	16 char

Equivalence	255 char	+ 60 caractères de commentaire

Table de conversion 	16 char

Liste de variables	16 char

fonction / bloc fonc.(librairie)	8 char	fonctions ou blocs fonctionnels en C ou en langage CEI

fonction paramètre (librairie)	16 char	fonctions ou blocs fonctionnels en C ou en langage CEI

Carte d'E/S	8 char

Configuration d'E/S	8 char

Paramètre OEM	16 char

Fonction de conversion 	8 char

Edition (pour un programme) :

Objet	Maximum	Notes

Lignes SFC 	600

Colonnes SFC 	20

Etapes SFC 	4095	pour l'application entière, groupant les étapes, étapes initiales,

étapes de début et de fin

Transitions SFC 	4095	pour l'application entière

LD/FBD 	200 cols

2000 lignes	taille de l'espace d'édition en pas de la grille

Quick LD	pas limité	les limites sont imposées par la capacité du PC

Etiquettes IL 	251	dans le même programme IL

Edition de texte	40KBytes	ou moins selon la configuration du système

Concernant le dictionnaire (pour un projet) :

Objet	Maximum	Notes

Variables booléennes 	65535

Variables analogiques	65535	variables entières et réelles

Temporisations	65535

Variables message 	65535

Les limites données pour les variables booléennes, analogiques et messages regroupent les variables internes, d'entrée et de sortie. Il prend également en compte toutes les variables temporaires allouées par les compilateurs. Le nombre de variables éditées ensemble dans le dictionnaire (même type, même portée) ne peut pas excéder 16000. Cette limite peut être inférieure à 16000 selon la configuration de votre PC. L'application ne peut pas fonctionner sur une cible 3.21 ou antérieure si le nombre total de variable pour un type excède 4095. Le lien "MODBUS" utilisant les adresses réseau ne peut pas être utilisé si le nombre de variables d'un type excède 4095.

Mots équivalents	4095	dans la même liste (même portée)

Mots équivalents	255	utilisés dans le même programme

Tables de conversion 	127	utilisées dans l'application

Points dans une table	32	définis dans la même table de conversion

Concernant le câblage des E/S :

Objet	Maximum	Notes

Cartes d'E/S	256	définies dans la même application

(cartes ou E/S complexes)

Le nombre de carte est la somme des cartes simples et des éléments de chaque équipement complexe.

Voies d'E/S	128	sur la même carte

Concernant les librairies :

Objet	Maximum	Notes

Fonctions (lang. CEI)	255	installées ensemble dans la librairie

B.Fs (lang. CEI)	255	installés ensemble dans la librairie

Fonctions C	255	installées ensemble dans la librairie

Blocs fonctionnels C	255	installés ensemble dans la librairie

Instances de B.F	4095	pour le même type de bloc dans la même application

Paramètres fonction	31	en entrée - fonctions en C ou en langage CEI

Paramètres B.F	32	répartis en entrée et sortie (au moins une sortie est requise)

Fonction de conversion	128	installées ensemble dans la librairie

Configurations d'E/S	255	installées ensemble dans la librairie

Cartes d'E/S	255	installées ensemble dans la librairie

Equipt. complexes d'E/S	255	installés ensemble dans la librairie

Paramètres OEM	16