Tecniche di programmazione avvanzate
Tecniche di programmazione avanzate

Questo capitolo contiene ulteriori informazioni sull'ambiente di lavoro ISaGRAF ed il sistema target. L'utente deve aver familiarizzato con strumenti e metodi di ISaGRAF, prima di proseguire nella lettura di questa sezione.

Informazioni aggiuntive sugli strumenti ISaGRAF

I/O bloccati e I/O virtuali

Validazione del collegamento PC-PLC

Cartelle ISaGRAF

Simboli dell'applicazione

Limiti dell'ambiente di lavoro ISaGRAF "LARGE" (WDL)


Informazioni aggiuntive sugli strumenti ISaGRAF

Quando si utilizzano gli strumenti editor di ISaGRAF, l'utente può premere il tasto destro del mouse per aprire un menù a tendina, che contiene i comandi principali dell'editor. Il menù viene aperto nella posizione corrente del cursore. Questo è molto utile per ridurre le operazioni col mouse nell'esecuzione dei comandi taglia e incolla.

Gli strumenti di ISaGRAF supportano l'esecuzione multipla. Sebbene lo stesso oggetto non possa essere aperto due volte per editare lo stesso documento, è possibile aprire finestre differenti con lo stesso strumento ed editare oggetti diversi come operazioni parallele.

Altri comandi sono disponibili per trovare informazioni sui pulsanti grafici nelle barre strumenti. Facendo doppio click su un area vuota di una barra strumenti viene mostrato il contenuto della barra strumenti in un menù a tendina. Fermandosi con il cursore del mouse su un pulsante grafico viene mostrato il corrispondente testo associato al comando.


I/O bloccati e I/O virtuali

Definendo una scheda di I/O come virtuale viene disconnessa l'elaborazione dei canali I/O fisici. Quando una scheda viene definita come virtuale, le operazioni del kernel ISaGRAF non vengono cambiate. L'unica differenza è che i sensori di ingresso non sono letti e i dispositivi di uscita non vengono aggiornati. In tal modo, è possibile utilizzare il debugger ISaGRAF per modificare i valori degli ingressi. L'attributo Virtuale è applicato ad un'intera scheda. Viene programmato durante la definizione della scheda I/O, prima della generazione del codice dell'applicazione. L'attributo Virtuale è una proprietà statica, ed è memorizzato quando l'applicazione viene fermata e fatta ripartire.

Un altra possibilità è il blocco della variabile I/O. Il blocco consiste nello sconnettere un dispositivo fisico e la corrispondente variabile I/O di ISaGRAF. Il blocco e lo sblocco di una variabile viene effettuato attraverso il debugger. IL blocco di variabile è un'operazione dinamica, e non viene memorizzato quando l'applicazione riparte. L'operazione di blocco si applica solo ad una variabile (un canale I/O) alla volta. Di seguito sono riassunte le principali proprietà dei controlli I/O:

Attributo virtuale	Comando di blocco

strumento selezionato	connessione I/O scheda	debugger

definizione	statico	dinamico

modo di selezione	scheda	variabile

applicazione	validazione e test	manutenzione

Il diagramma seguente spiega il flusso di dati I/O tra le applicazioni ISaGRAF:

Quando una variabile di ingresso è bloccata, i vari accessi al data base non provocano cambiamenti, il dispositivo di ingresso è disconnesso. I valori degli ingressi possono essere impostati con il debugger ed elaborati dal kernel ISaGRAF:

Quando una variabile di uscita è bloccata, il kernel dell'applicazione e il driver del'uscita sono disconnessi. In questo modo, è ancora possibile l'accesso al dispositivo di uscita, attraverso il driver delle uscite, con il debugger di ISaGRAF:

Quando si imposta l'attributo virtuale per un ingresso, il data base degli ingressi e il dispositivo di ingresso associato sono disconnessi. Un driver I/O virtuale sostituisce quello reale.

Impostando l'attributo virtuale valgono le stesse regole per una scheda di ingresso o di uscita. Per le schede di uscita, il kernel ISaGRAF aggiorna il data base delle uscite, ma questo data base e i dispositivi di uscita associati sono disconnessi. Un driver di I/O virtuale sostituisce quello reale.

Riassumendo tutte le possibilità:


Validazione del collegamento PC-PLC

La maggior parte dei problemi legati ad una non adeguata comunicazione tra l'ambiente di lavoro ISaGRAF ed il target PLC vengono segnalati nella finestra di debugger dal messaggio di stato "disconnesso". Prima di eseguire qualsiasi test diagnostico è necessario validare la comunicazione senza che vi sia alcuna applicazione attiva nel PLC target. In questo modo il collegamento seriale può essere validato indipendentemente dagli effetti dell'esecuzione.

Il linguaggio "C", usato per la stesura di funzioni di conversione e funzioni C, consente di accedere direttamente al sistema target. Un errore di programmazione in questa componente software può generare errori di sistema o un funzionamento non corretto del sistema ISaGRAF. Questi problemi si verificano con i driver I/O sviluppati con l'opzione ISaGRAF IO development tool. Ad esempio un errore di sistema può essere causato dalla connessione di una scheda I/O ad un indirizzo bus non valido. La tavola che segue contiene una sintesi degli errori diagnostici:

stato	contesto	diagnostica
"disconnesso"	(prima del download)	- il target non è in esecuzione - cavo mancante o non adatto - parametri di collegamento errati - target ISaGRAF installato non correttamente
"disconnesso"	(dopo download) Avvio in modalità ciclo a ciclo	- configurazione I/O non valida - crollo del sistema
"disconnesso"	(dopo download) Avvio in modalità tempo reale	- configurazione I/O non valida - crollo del sistema (dovuto alla programmazione "C")
"nessuna applicazione"	-	- applicazione non caricata - applicazione non avviata (dovuto a programmaz. "C") - errata corrispondenza Intel/Motorola  - Versione del target non corretta


Cartelle ISaGRAF

L'ambiente ISaGRAF opera su una struttura dedicata di cartelle. La cartella radice di questa architettura viene indicata dall'utente durante l'installazione di ISaGRAF. Il nome predefinito della cartella radice è ISAWIN. Viene di seguito riportata l'architettura del disco fisso predefinita, creata dal programma di installazione:

Si riportano le sotto-cartelle ISaGRAF standard

CARTELLA	CONTENUT0
APL	Cartella radice per i progetti ISaGRAF,  ogni progetto corrisponde ad una sotto-cartella che contiene tutti i dati del progetto
	altre cartelle possono esistere per altri gruppi di progetti. Il programma di istallazione ISaGRAF crea la cartella "SMP" dove sono memorizzate applicazioni di esempio.
COM	Dati comuni I dati possono essere usati da ogni progetto
EXE	Programmi ISaGRAF e file della guida
LIB	Librerie ISaGRAF: - elenchi di elementi - parametri o interfaccia per ogni elemento - note tecniche
LIB\IOC	Codice sorgente per le configurazioni I/O
LIB\FNC	Codice sorgente di funzioni scritte in linguaggi IEC
LIB\FBL	Codice sorgente di blocchi funzione scritti in linguaggi IEC
LIB\SRC	Codice sorgente per conversioni e funzioni C
LIB\DEFS	Header sorgente per conversioni e funzioni C
LIB\RELS	Modulo oggetto di conversioni e funzioni C
TMP	File temporanei: le sotto-cartelle di tipo TMP vengono riservate ad ISaGRAF Code Generator e non possono essere cancellate.
LIB\DEV	File comandi per lo sviluppo di librerie "C" makefile, link list, ecc...

Le sotto-cartelle possono essere spostate ad altra locazione su disco. Se si usa una architettura non-standard, è necessario dichiarare nella sezione WS001 del file di inizializzazione ISA.ini contenuto nella sotto-cartella EXE di ISaGRAF, il percorso delle sotto-cartelle. Ecco le voci della sezione WS001:

Isa	cartella radice per architettura ISaGRAF
IsaExe	cartella radice per programmi e file della guida ISaGRAF
IsaApl	cartella radice per progetti ISaGRAF
IsaTmp	cartella per file temporanei
IsaSrc	cartella per codice sorgente di libreria
IsaDefs	cartella per collettore sorgente di libreria

Si noti che se la voce IsaTmp viene assegnata ad una diversa cartella, è necessario creare nella nuova cartella le sotto-cartelle OBJS, RELS e DATA.

Il seguente esempio utilizza le voci della sezione WS001 per ridefinire l'architettura standard di disco ISaGRAF:

;file 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

Volendo aggiungere funzioni "C" o blocchi funzione al target ISaGRAF, si utilizza la cartella \ISAWIN\LIB\DEV per archiviare i file sviluppati: file di comandi, makefiles, mappe, ecc… La cartella \ISAWIN\LIB\RELS serve ad archiviare i moduli oggetto generati dalla compilazione "C" e le librerie ISaGRAF richieste per le operazioni di LINK.


Simboli dell'applicazione

Ogni oggetto di una applicazione ISaGRAF viene identificato da un nome (inserito durante la dichiarazione delle variabili) e da un indirizzo virtuale interno, calcolato dal generatore di codice. L'indirizzo virtuale di una variabile non è l'indirizzo di rete inserito alla dichiarazione della variabile. Gli indirizzi virtuali vengono usati per comunicazioni e per speciali applicazioni "C" che hanno l'opzione strumento di sviluppo I/O. Il generatore di codice ISaGRAF crea un file ASCII con le corrispondenze logiche tra nomi ed indirizzi virtuali per tutti gli oggetti (variabili, programmi, passi,..) del progetto. Questo file può essere facilmente consultato per informazioni circa il data base statico ISaGRAF da qualsiasi applicazione. Il file viene chiamato "APPLI.TST" ed è posizionato nella cartella del progetto ISaGRAF: "\ISAWIN\APL\nomepro" (nomepro è il nome del progetto). Questa sezione descrive in dettaglio il formato del file "APPLI.TST". Le principali notazioni utilizzate per la seguente descrizione, vengono mostrate subito sotto:

VA	indirizzo virtuale

ATTR	attributo di una variabile

USP	funzione "C"

Si riportano in seguito i possibili valori per gli attributi di una variabile che vanno assegnati ai campi "attributi":

+X	variabile interna

+C	variabile interna di sola lettura

+I	variabile input

+O	variabile output

Tutti i numeri, ad eccezione degli indirizzi virtuali, vengono espressi come decimali interi. Gli indirizzi virtuali (VA) sono espressi come numeri esadecimali di 4 cifre e sono preceduti dal carattere "!". Ad esempio:

123	questo è un numero decimale

!A003	questo è un indirizzo virtuale esadecimale

Viene mostrata in seguito la struttura principale del file "APPLI.TST". Il file è strutturato come lista di blocchi. Un blocco corrisponde ad un elenco di record. Ogni record viene descritto da una riga di testo ed inizia con un'intestazione posta su una riga di testo.

Start block

description blocks

end block

Quella che segue è la sintassi generale di un blocco:

@ <nome_blocco> <argomenti>

#record...

#record...

...

Quella che segue è la struttura del primo blocco, che contiene le principali informazioni riguardanti l'applicazione:

@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	riassunto dei simboli dell'applicazione

appli_name	nome dell'applicazione

version	numero della versione dell'ambiente ISaGRAF

creation_date	data della generazione dell'applicazione

nbprg	numero di programmi

nbstep	numero di passi SFC

nbtra	numero delle transizioni SFC

nbpro	numero delle funzioni "C" usate

nbvar	numero totale delle variabili

Quella che segue è la struttura dell'ultimo blocco, che segnala la fine del file:

@END_SYMBOLS

Ecco la struttura del blocco utilizzato per descrivere i programmi dell'applicazione:

@PROGRAMS,<nbprg>

#<va>,<name>

#...

nbprg	number of programs defined in this block

va	virtual address of the program

name	program name

La struttura del blocco usato per descrivere i passi SFC dell'applicazione è mostrata sotto. Notare che c'è un passo virtuale definito per ogni programma non SFC:

@STEPS,<nbsteps>

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

#...

nbsteps	numero di passi definiti in questo blocco

va	indirizzo virtuale del passo

name	nome del passo

father	indirizzo virtuale del padre

Quella che segue è la struttura del blocco usato per descrivere le transizioni SFC dell'applicazione:

@TRANSITIONS,<nbtrans>

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

#...

nbtrans	numero di transizioni definite in questo blocco

va	indirizzo virtuale della transizione

name	nome della transazione

father	indirizzo virtuale del padre

Quella che segue è la struttura del blocco usato per descrivere le variabili booleane dell'applicazione:

@BOOLEANS,<nb_boo>

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

#...

nb_boo	numero di variabili di questo blocco

va	indirizzo virtuale della variabile

name	nome della variabile

attr	attributo della variabile

program	indirizzo virtuale del programma genitore

o "!0000" per una variabile globale

eq_false	stringa utilizzata per valori false (falso)

eq_true	stringa usata per valori true (vero)

Quella che segue è la struttura del blocco che descrive le variabili analogiche dell'applicazione:

@ANALOGS,<nb_ana>

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

#...

nb_ana	numero di variabili del blocco

va	indirizzo virtuale della variabile

name	nome della variabile

attr	attributo della variabile

program	indirizzo virtuale del programma genitore

o "!0000" per una variabile globale

format	= "I" per una variabile intera

= "F" per una variabile real

unit	stringa unità

Quella che segue è la struttura del blocco che descrive le variabili timer dell'applicazione:

@TIMERS,<nb_tmr>

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

#...

nb_tmr	numero di variabili di questo blocco

va	indirizzo virtuale della variabile

name	nome della variabile

attr	attributo della variabile (sempre +X: interna)

program	indirizzo virtuale del programma genitore o "!0000" per una variabile globale

Quella che segue è la struttura del blocco che descrive le variabili di tipo messaggio dell'applicazione:

@MESSAGES,<nb_msg>

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

#...

nb_msg	numero di variabili in questo blocco

va	indirizzo virtuale della variabile

name	nome della variabile

attr	attributo della variabile

program	indirizzo virtuale del programma genitore o "!0000" per una variabile globale

max_len	lunghezza massima (capacità dichiarata)

Quella che segue è la struttura utilizzata per descrivere le funzioni "C" utilizzate nell'applicazione:

@USP,<nb_usp>

#<va>,<name>

#...

nb_usp	numero di funzioni C in questo blocco

va	indirizzo virtuale della funzione C

name	nome della funzione C

Quella che segue è la struttura del blocco che descrive le istanze di blocchi funzione "C" utilizzate nell'applicazione:

@FBINSTANCES,<nb_fb>

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

#...

nb_fb	numero di istanze di un blocco funzione C in questo blocco

va	indirizzo virtuale dell'istanza di blocco funzione C

inst_name	nome dell'istanza di blocco funzione C

fb_name	nome del blocco funzione C di riferimento


Limiti dell'ambiente di lavoro ISaGRAF "LARGE"(WDL)

Esistono alcune limitazioni per gli oggetti usati in ambiente ISaGRAF. Naturalmente altri limiti pratici sono dovuti alla configurazione del computer utilizzato (memoria disponibile e spazio su disco),ed alle capacità del sistema target ISaGRAF (memoria disponibile, risorse software ed hardware disponibili…). Sono riportati di seguito i limiti massimi che non possono essere oltrepassati.

Per un progetto:

Oggetto	Massimo	Note

Programmi	255	Compresi programmi principali, sottoprogrammi e programmi figli

Livelli nella gerarchia	20

Il numero di progetti installati nell'ambiente di lavoro viene limitato esclusivamente dallo spazio su hard disk.

Per i nomi:

Nomi per:	Massimo	Note

Progetto	8 caratteri

Programmi	8 caratteri

Variabile	16 caratteri	+ 60 caratteri di commento

Etichetta di nome definito	16 caratteri

Equivalenze definite	255 caratteri	+ 60 caratteri di commento

Tavole di conversione	16 caratteri

Elenco variabili	16 caratteri

funzioni / blocchi funz. (libreria)	8 caratteri	Si applica a funzioni C, blocchi funzione C o funzioni scritte in linguaggio IEC

Parametri di funzione (libreria)	16 caratteri	Si applica a funzioni C, blocchi funzione C o funzioni scritte in linguaggio IEC

Scheda I/O	8 caratteri

Configurazione I/O	8 caratteri

Parametri scheda oem	16 caratteri

Funzioni di conversione	8 caratteri

Editing (per un programma):

Oggetto	Massimo	Note

Righe SFC	600

Colonne SFC	20

Passi SFC	4095	Per l'intero progetto, raggruppamenti di passi, passi iniziali, passi di 	inizio e fine

Transizioni SFC	4095	Per l'intera applicazione

Modifica LD/FBD	200 colonne

2000 righe	Questa è la dimensione dell'area di modifica espressa in unità celle.

Modifica Quick LD

nessun limite	I limiti sono imposti dalle capacità del PC

Etichette IL	251	Nello stesso programma IL

Modifica testo	40 KByte

Per il dizionario (di un progetto):

Object	Massimo	Notes

Variabili booleane	65535

Variabili analogiche	65535	Comprendenti variabili intere e reali

Timers	65535

Variabili di messaggio	65535

Nomi definiti	4095	nella stessa lista (stesso range)

Nomi definiti	255	Utilizzate nello stesso programma

Tabelle di conversione	127	Usate nell'applicazione

Punti in una tavola	32	Definiti nella stessa tabella di conversione

I limiti dati per il numero massimo di variabili booleane, analogiche o messaggio comprende le variabili interne, di ingresso e di uscita. Tale limite include anche tutte le variabili temporanee nascoste e le variabili allocate dal compilatore. Il numero di variabili editate contemporaneamente (stesso tipo, stesso campo), mediante editor del dizionario non può superare 16000. A seconda della configurazione del PC, il limite può essere minore di 16000. L'applicazione non può essere eseguita su un target ISaGRAF versione V1.21 o precedente se il numero totale di variabili per un tipo di dati eccede 4095. Il collegamento standard "Modbus" con utilizzo di indirizzi di rete non può essere utilizzato se il numero di variabili per un tipo di dati eccede 4095.

Connessioni di I/O:

Oggetto	Massimo	Note

Schede IO 	256	Definite nella stessa applicazione

(schede o apparecchiature complesse)

Canali IO	128	sulla stessa scheda

Il numero di schede I/O includendo schede singole ed elementi di dispositivi complessi non può eccedere

256.

Per le librerie:

Oggetto	Massimo	Note

funzioni (linguaggi IEC)	255	Installati assieme nella libreria

Bunction blocks

(IEC lang.)	255	Installati assieme nella libreria

funzioni C	255	Installati assieme nella libreria

blocchi funzione C	255	Installati assieme nella libreria

blocchi funzione

instanze	4095	Per lo stesso tipo di blocco funzione nella stessa applicazione

Parametri input funzioni	31	Si applica a funzioni C e a funzioni scritte in linguaggi IEC

Parametri di blocchi funzione	32	Liberamente distribuiti tra parametri di input e di output.

E' richiesto minimo un parametro di output.

Funzioni di conversione	128	Installati assieme nella libreria

Configurazioni IO	255	Installati assieme nella libreria

Schede IO	255	Installati assieme nella libreria

Apparecchi complessi IO	255	Installati assieme nella libreria

Parametri di schede oem	16