ISa GRAF
ISa GRAF
MANUALE UTENTE
CJ INTERNATIONAL
Manuale utente
Tutti gli altri marchi o nomi di prodotti sono marchi commerciali o marchi commerciali
registrati dei rispettivi detentori.
A-2 CJ International
Manuale utente
Sommario
CJ International A-3
Manuale utente
A-4 CJ International
Manuale utente
CJ International A-5
Manuale utente
A-6 CJ International
Manuale utente
CJ International A-7
Manuale utente
A-8 CJ International
Manuale utente
A. Manuale utente
CJ International A-9
Manuale utente
Uno dei seguenti sistemi operativi deve essere già presente, prima di poter
procedere con l’installazione dell’ambiente di lavoro ISaGRAF:
Il programma di installazione
L’ambiente di lavoro ISaGRAF viene installato da INSTALL, il programma di
installazione ISaGRAF. Tale programma provvede a trasferire il software ISaGRAF
dai dischetti al disco rigido. INSTALL provvede inoltre a creare il gruppo
«ISaGRAF» nella finestra Gestione Risorse (Program Manager) ed il file di
inizializzazione «ISA.ini» nella sottocartella EXE creata in fase di installazione.
INSTALL è un programma per Windows che deve quindi essere avviato dalla
Gestione Risorse di Windows o dal comando Esegui del menù Avvio di Windows
95. Per installare ISaGRAF, si proceda come mostrato di seguito:
A-10 CJ International
Manuale utente
• Dalla Gestione Risorse (Program Manager), richiamare dal menù «File» la voce
«Esegui»; immettere la linea di comando: «A:\INSTALL.exe». Alternativamente è
possibile inserire il comando:
«WIN A:\INSTALL.exe» direttamente da DOS.
• Seguire le istruzioni on-line per completare l’installazione. Si consiglia di installare
l’ambiente di lavoro ISaGRAF in una nuova cartella per evitare confusione con i file
di eventuali altre versioni di ISaGRAF.
CJ International A-11
Manuale utente
L’ambiente di lavoro ISaGRAF fa uso di una porta seriale per comunicare con il
PLC ISaGRAF destinazione. La porta seriale predefinita per ISaGRAF è COM1. Se
anche il mouse usa una porta seriale, è preferibile assegnare COM2 al mouse, in
questo modo l’impostazione COM1 risulterà valida per ogni nuova applicazione
ISaGRAF.
Chiave di protezione
Una chiave hardware impedisce le copie illegali del software ISaGRAF. Gran parte
delle funzioni dell’ambiente di lavoro ISaGRAF sono comunque disponibili anche se
la chiave non è inserita. Inoltre la chiave di protezione permette di definire le opzioni
dell’ambiente di lavoro ISaGRAF e controlla la dimensione massima delle
applicazioni sviluppabili. Qualora la chiave non sia inserita o lo sia in modo non
corretto, alcune funzioni dell’ambiente di lavoro ISaGRAF non funzioneranno.
Questa situazione deve essere considerata NORMALE. Per assicurarsi che la
chiave sia correttamente inserita, richiamare la voce «Informazioni su ...» del
menù «Aiuto» attivabile da qualsiasi finestra ISaGRAF. Verranno mostrate le
opzioni rese disponibili dall’ambiente di lavoro ISaGRAF.
La chiave può essere connessa a qualunque porta parallela presente sul computer.
Qualora la macchina metta a disposizione più porte parallele, è preferibile
connettere chiave e stampante su porte differenti. In alcune configurazioni
PC/stampante, la chiave potrebbe non essere riconosciuta nel caso fosse connessa
ad una stampante in stato «off-line». In queste situazioni si proceda scollegando la
stampante o ponendola in stato «on-line» e si avvii nuovamente l’ambiente di lavoro
ISaGRAF.
A-12 CJ International
Manuale utente
In ogni finestra ISaGRAF è presente il menù «Aiuto» che elenca le informazioni on-
line relative alle caratteristiche principali (ad esempio i linguaggi) ed al programma
che si sta utilizzando
In ISaGRAF è inoltre disponibile la tipica icona Windows di Guida in linea, per
completare le risorse di aiuto in ISaGRAF
Questo capitolo spiega, a passo a passo, tutte le operazioni basilari necessarie per
creare, progettare, produrre e provare una piccola, ma completa applicazione multi-
linguaggio.
CJ International A-13
Manuale utente
1
TRUE;
1
2 (* Wait: no special action *)
RunCmd;
2
3 QX1_1;
NOT(RunCmd);
3
2
Creare il progetto
Per creare il progetto (che chiameremo «RunStop»), richiamare dal menù «File» la
voce «Nuovo» oppure utilizzare il pulsante «Crea nuovo progetto» dalla barra
strumenti della finestra Gestione progetti.
Inserire il nome del progetto: «RunStop»
Selezionare la configurazione di I/O: «Sim_Boo»
Premere il pulsante «OK».
Il progetto è stato così creato.
Aprire il progetto
Per lavorare sui programmi di un progetto si usa la finestra Programmi di
ISaGRAF. Per attivarla usare il comando «File / Apri» della finestra Gestione
progetti o fare doppio click con il mouse sul nome del progetto o usare il pulsante
«Apri» dalla barra strumenti.
Creare i programmi
La finestra Programmi è ora aperta e vuota (non contiene alcun programma). Per
creare il primo programma, richiamare dal menù «File» la voce «Nuovo» o
utilizzare il pulsante «Crea nuovo programma» dalla barra strumenti.
Inserire il nome del programma: «Command».
Selezionare il tipo di linguaggio: «Quick LD».
Selezionare la sezione: «Iniziale».
Premere il pulsante «OK» per creare il programma.
A-14 CJ International
Manuale utente
INVIO Per associare le variabili ai simboli LD: muovere il cursore usando i tasti frecce.
Posizionare il cursore su ciascun simbolo e premere il tasto INVIO. La finestra di
dialogo Selezione variabile viene aperta. Selezionare Validità globale e tipo di
variabile Booleano.
Per il primo contatto, inserire nella casella di selezione variabile: IX0_1 e premere
INVIO.
Per il secondo contatto, inserire nella casella di selezione variabile: IX0_2 e
premere INVIO.
Per la bobina, inserire nella casella di selezione variabile: RunCmd e premere
INVIO.
CJ International A-15
Manuale utente
Il diagramma è ora completo. Premere il pulsante «Zoom» nella barra strumenti per
incrementare le dimensioni delle celle e ottenere spazio per visualizzare i riquadri
per le istruzioni di livello 2. Il diagramma è qui rappresentato:
1
2 Attesa comando
Avvio comando
2
3 Processo in esecuzione
Comando Stop
3
2
Per inserire la programmazione della transizione numero 2, selezionarla utilizzando
i tasti freccia della tastiera e premere il tasto INVIO. A fianco del diagramma viene
aperta la finestra di programmazione di Livello 2. Immettere la programmazione di
Livello 2 per la transizione:
RunCmd;
^TAB Premere i tasti «CTRL + TAB» per riposizionarsi (dalla finestra di programmazione
di Livello 2) sul diagramma SFC, quindi spostare la selezione sul passo numero 3,
e premere il tasto INVIO per editare il testo di programmazione di Livello 2 del
passo 3:
QX1_1;
A-16 CJ International
Manuale utente
Not (RunCmd);
Simulazione
Per avviare il simulatore di kernel ISaGRAF, richiamare dal menù «Debug» la voce
«Simulazione» dalla finestra Programmi o premere il pulsante «Simulazione»
sulla barra strumenti.
Quando appare la finestra del simulatore (di ingressi e uscite), l’applicazione può
essere sottoposta alle prove. In questo esempio, devono essere premuti entrambi
gli ingressi 1 e 2 (pulsanti verdi) per avviare il processo (le uscite sono
rappresentate dalle luci rosse).
CJ International A-17
Manuale utente
Un progetto viene eseguito in modo ciclico sul PLC destinazione. La parte superiore
della finestra elenca i progetti esistenti. La descrizione del progetto selezionato è
visibile, invece, nella porzione inferiore della finestra.
Dimensionare le finestre
Basta un click sul separatore (divisore) posto tra l’elenco dei progetti e la
descrizione per dimensionare la finestra corrispondente. La finestra con la
descrizione non può essere nascosta completamente. Conterrà sempre almeno
una riga di testo.
A-18 CJ International
Manuale utente
«Modifica» per spostare il progetto evidenziato una riga per volta. Da notare che un
separatore posto prima del progetto, viene spostato assieme al progetto.
Le voci del menù della Gestione progetti permettono di creare nuovi progetti,
modificarli e gestire progetti esistenti.
Modificare il progetto
Il comando «File / Apri» apre la finestra Programmi del progetto evidenziato. Tale
finestra permette di accedere a tutti i contenuti (programmi, parametri
dell’applicazione…) del progetto. Alternativamente è possibile fare doppio click con
il mouse sul nome del progetto nella lista.
CJ International A-19
Manuale utente
OK...................................chiude la finestra
Stampa............................invia i contenuti della lista alla stampante
[Cancella] Selezione........elimina dalla lista i riferimenti evidenziati
[Cancella] Tutto ...............svuota completamente la lista
Trova...............................trova un testo nella lista
Il testo da cercare viene inserito nella casella Cerca, sopra il pulsante «Trova».
Questa funzione non distingue tra maiuscolo e minuscolo. Quando la ricerca arriva
in fondo alla lista, riprende dall’inizio proseguendo fino alla posizione inizialmente
selezionata.
Password di protezione
La voce «Progetto / Imposta password» permette di definire una password di
protezione per strumenti e dati del progetto evidenziato. Per ulteriori dettagli su
livelli di password e protezione dei dati, fare riferimento alla sezione «Password di
protezione» alla fine della prima parte di questo manuale. Le password sono
relative solamente al progetto evidenziato. Non riguardano altri progetti o librerie
ISaGRAF.
Ad un progetto ISaGRAF corrisponde sul disco una cartella che contiene tutti i file
del progetto. Un gruppo di progetti corrisponde ad un elenco di cartelle di progetti
raggruppate assieme sotto la stessa cartella radice. Un gruppo di progetti viene
identificato da un nome. Per default, ISaGRAF crea due gruppi progetto:
A-20 CJ International
Manuale utente
Selezionare un gruppo nella lista e premere «Seleziona» per attivare tale gruppo
nella finestra Gestione progetti. Per selezionare un gruppo si può anche fare un
doppio click sul suo nome. Utilizzare il pulsante «Nuovo gruppo» per creare un
gruppo nuovo. Questo comando può essere utilizzato sia per assegnare un nome di
gruppo ad una cartella esistente, sia per creare un nuovo gruppo con una nuova
cartella.
Nessun gruppo può essere selezionato o creato quando sono aperte altre finestre
ISaGRAF (Programmi, editor...).
A.2.3 Opzioni
A.2.4 Strumenti
I comandi del menù «Strumenti» sono usati per lanciare altre applicazioni
ISaGRAF. Il comando «Strumenti / Archivio / Progetti» lancia la gestione archivio
di ISaGRAF per salvare o ripristinare progetti. Il comando «Strumenti / Archivio /
Dati comuni» viene utilizzato per salvare o recuperare file usati da tutti i progetti
(come i nomi definiti con campo di validità comune a tutti i progetti).
CJ International A-21
Manuale utente
A-22 CJ International
Manuale utente
I programmi di primo livello in ciascuna sezione appaiono sul lato sinistro della
struttura ad albero gerarchico. I programmi di primo livello delle prime tre sezioni
(Iniziale, Sequenziale e Finale) sono sempre attivi, ad ogni ciclo di esecuzione del
progetto vengono eseguiti nel seguente ordine:
Sottoprogrammi
Un sottoprogramma è una funzione dedicata ad un programma padre (scritto in
qualsiasi linguaggio: SFC, FC od altro). Un sottoprogramma può essere eseguito
(chiamato) solamente dal proprio programma padre. Ogni programma di ciascuna
CJ International A-23
Manuale utente
Linguaggi di programmazione
Ogni programma può essere scritto esclusivamente in un solo linguaggio. Tale
linguaggio, scelto alla creazione del programma non può essere cambiato in un
secondo tempo. Tuttavia, i diagrammi FBD possono contenere parti in LD, ed i
diagrammi in LD possono contenere chiamate a blocchi funzione. I linguaggi
disponibili con supporto grafico sono: SFC (Sequential Function Chart), FC (Flow
Chart), FBD (Functional Block Diagram) ed LD (Ladder Diagram). I linguaggi con
supporto testuale sono: ST (Structured Text) e IL (Instruction List). I linguaggi SFC
e FC sono riservati per i programmi principali e figli della sezione Sequenziale.
A-24 CJ International
Manuale utente
Nella finestra Programmi, un’icona posta a fianco del programma indica il tipo di
linguaggio usato. Di seguito sono elencate le icone usate per rappresentate i
linguaggi:
Indicando una delle prime cinque scelte, il programma viene collocato al primo
livello di una sezione Iniziale, Finale, Sequenziale, Funzioni o Blocchi funzione.
CJ International A-25
Manuale utente
Modificare un programma
Questa funzione permette di modificare un programma. L’editor usato per
modificare un programma dipende dal tipo di linguaggio scelto. La modifica dei
programmi avviene in finestre indipendenti, in questo modo è possibile modificare
più di un programma in finestre affiancate. Premere il tasto INVIO per modificare il
programma evidenziato. Alternativamente è possibile accedere al programma
facendo doppio click sul nome nella lista.
A-26 CJ International
Manuale utente
CJ International A-27
Manuale utente
Copiare i programmi
Per fare la copia di un programma, evidenziare il programma sorgente nella
finestra Programmi e richiamare il comando «File / Copia». Attivando questa
procedura, appare la stessa finestra usata all’atto della creazione del programma,
con tutti i campi aggiornati alle caratteristiche del programma evidenziato. Inserire il
nome del programma destinazione e la sua posizione nelle sezioni e nella struttura
ad albero. Se il programma destinazione non esiste, viene creato nella posizione
specificata. Se il programma destinazione esiste già, viene sovrascritto. Tutte le
dichiarazioni locali e i nomi definiti vengono copiate assieme al programma. Il tipo di
linguaggio del programma destinazione deve essere il medesimo del programma
sorgente. Premere il pulsante «OK» per copiare il programma.
Sempre nella finestra Programmi, il comando «Copia in altro progetto» del menù
«File» permette di copiare il programma evidenziato in un progetto diverso,
mantenendo lo stesso nome. Eventuali programmi SFC figli e sottoprogrammi del
programma evidenziato verranno copiati nell’altro progetto. I nomi del programma
evidenziato e dei suoi eventuali figli non devono essere in uso nel progetto
destinazione. Questa procedura non permette la sovrascrittura dei programmi. Tutte
le dichiarazioni locali e i nomi definiti vengono copiati assieme al programma.
Eliminare i programmi
Per eliminare un programma, per prima cosa evidenziarlo nell’elenco dei
programmi e poi richiamare la voce «File / Elimina». Un programma che possiede
figli o sottoprogrammi non può essere eliminato. In questo caso bisogna prima
eliminare i programmi figli o i sottoprogrammi. Tutte le dichiarazioni locali e i nomi
definiti vengono eliminati assieme al programma.
A-28 CJ International
Manuale utente
Nota: Se una funzione o blocco funzione viene aggiunto alla Libreria, può essere
richiamato da ogni progetto compreso il progetto a cui apparteneva e da cui
va eliminato.
Se una funzione o blocco funzione viene aggiunto alla Libreria, va poi
compilato indipendentemente dal progetto a cui apparteneva (utilizzando il
comando «File / Verifica (compila)» dalla finestra Librerie) con le
opportune opzioni del compilatore che lo rendano compatibile con i progetti
che lo richiamano.
La funzione o il blocco funzione esportato conserva solo le variabili locali e
non quelle globali del progetto a cui apparteneva. Ne consegue che
eventuali variabili con attributo ingresso o uscita non vengono esportate,
poiché tali variabili non possono avere campo di validità locale, ma
solamente globale.
CJ International A-29
Manuale utente
Definizione di risorse
Si chiamano «risorse» i dati definiti dall’utente (ad esempio un file) che sono stati
aggiunti al codice destinazione per poter essere utilizzati con esso. Consultare la
sezione «Usare il Generatore di codice» in questo stesso manuale per ulteriori
informazioni sul formato del file di definizione delle risorse.
Il menù «Progetto» raggruppa i comandi per avviare gli strumenti ISaGRAF per il
progetto selezionato. Far riferimento ai relativi capitoli in questo manuale per
ulteriori informazioni su questi strumenti.
A-30 CJ International
Manuale utente
M=stringa_menù
C=linea_di_comando
Simulazione
Il comando «Debug / Simulazione» avvia il debugger in modo simulazione. Appare
la finestra del simulatore. Questo comando risulta molto utile per provare
l’applicazione qualora il dispositivo destinazione non sia disponibile. L’avvio del
simulatore chiude la finestra Programmi, che viene poi riaperta in modo debug dopo
l’apertura di entrambe le finestre Debugger e del simulatore. Il simulatore non può
essere avviato senza che sia stato generato il codice destinazione. Il simulatore
non viene avviato se ci sono finestre figlie aperte (editor, generazione di codice,
CJ International A-31
Manuale utente
connessioni I/O…). Ognuna di queste deve essere chiusa prima di avviare questo
comando. Il comando «File / Simulazione» appare anche nei menù degli editor
ISaGRAF dei programmi.
Debug
Il comando « Debug / Debug» apre la finestra principale Debugger, e chiude la
finestra Programmi. La finestra Programmi viene, quindi, riaperta in modo debug
non appena attivata la comunicazione tra il debugger e l’applicazione target. Il
debugger non può essere avviato se il codice target non è stato generato. Il
debugger non viene avviato se ci sono finestre figlie aperte (editor, generazione di
codice, connessioni I/O…). Ognuna di queste deve essere chiusa prima di avviare
questo comando. Questa voce appare anche nei menù degli editor ISaGRAF.
Impostare i collegamenti
Il comando « Debug / Parametri collegamento» apre la seguente finestra di
dialogo. che permette di impostare i parametri del collegamento per le
comunicazioni tra il debugger sul PC host ed il sistema target ISaGRAF.
A-32 CJ International
Manuale utente
Possono essere indicati Baud rate, Parità e Formato. Scegliendo «hardware» per
il parametro «Controllo di flusso», l’ambiente ISaGRAF provvederà a tenere sotto
controllo le linee CTS e DSR per permettere gli scambi in modalità handshaking
hardware.
CJ International A-33
Manuale utente
Il linguaggio SFC viene usato per rappresentare processi di tipo sequenziale. Il ciclo
del processo viene suddiviso in un numero di passi ben definiti (contenenti a loro
volta delle azioni) in successione, separati da transizioni. Ulteriori dettagli sul
linguaggio SFC sono reperibili nel Manuale di riferimento Linguaggi ISaGRAF. I
componenti SFC sono uniti tra loro mediante linee orientate. L’orientamento
predefinito di una linea è dall’alto verso il basso. Questi sono i componenti grafici
di base per creare un diagramma SFC:
A-34 CJ International
Manuale utente
Conclusione
11
MixLevel > 100;
Divergenze e convergenze
Divergenze e convergenze permettono di rappresentare i collegamenti multipli tra
passi e transizioni. Divergenze o convergenze semplici rappresentano differenti
possibilità inclusive fra varie parti del processo.
Processi paralleli
CJ International A-35
Manuale utente
Salto ad un passo
L’editor SFC permette di disegnare collegamenti solamente dall’alto verso il basso.
Un salto verso un passo serve a rappresentare un collegamento con una parte più
in alto nel diagramma. I seguenti diagrammi sono equivalenti:
1 1
2 4 2 4
3 5 3 5
6 6
Macro passi
Un macro passo è la rappresentazione unica di un gruppo isolabile di passi e
transizioni. L’inizio di un macro passo è segnato da un passo iniziale e termina
con un passo finale.
A-36 CJ International
Manuale utente
(Il simbolo freccia che precede un tasto funzione " " indica una combinazione con
il tasto SHIFT)
CJ International A-37
Manuale utente
I comandi Taglia/Copia/Cancella/Incolla
Il menù «Modifica» mette a disposizione le seguenti voci:
Taglia ................. Sposta il rettangolo evidenziato dallo schermo agli appunti SFC
Copia.................. Copia il rettangolo evidenziato dallo schermo agli appunti SFC
Cancella ............. Cancella il rettangolo evidenziato
Incolla................. Inserisce nella posizione corrente il contenuto degli appunti SFC
La voce «Modifica / Incolla» copia il contenuto del blocco appunti SFC sulla
schermo. I comandi copia/incolla funzionano sia sul diagramma SFC, sia con la
programmazione di livello 2 di passi e transizioni. È anche possibile copiare un
diagramma da un programma ed incollarlo in un diverso programma SFC. Gli
elementi vengono inseriti prima della posizione correntemente selezionata.
A-38 CJ International
Manuale utente
Spostare elementi
Quando degli elementi SFC sono selezionati nel diagramma SFC, si può spostarli
in un altra posizione del diagramma trascinando la selezione con il mouse. Mentre
si trascina la selezione, la posizione iniziale degli elementi selezionati viene
tratteggiata.
L’area di destinazione per gli elementi spostati deve essere vuota. Non sono
possibili inserzioni mentre si spostano simboli SFC.
Per inserire le istruzioni di Livello 2, l’utente deve fare doppio click sul simbolo del
passo o della transizione. La finestra di programmazione del Livello 2 viene
mostrata alla destra della finestra principale SFC. La linea di separazione tra il
diagramma SFC e il programma livello 2 può essere spostata liberamente.
CJ International A-39
Manuale utente
Quando due finestre di livello 2 sono visibili, la separazione tra esse può essere
liberamente spostata. Il pulsante alla destra della barra del titolo chiude la finestra
di livello 2.
Una linea di testo appare nella parte superiore della finestra di livello 2, viene usata
per immettere un breve testo di descrizione. Questo testo verrà visualizzato come
commento IEC nel disegno dei simboli SFC. E’ molto utile ed è utilizzato da altri
comandi, come ad esempio «Vai a» ed anche nella stampa (passi e transizioni) di
documenti SFC.
Il comando «Opzioni / Rinfresca diagramma» può essere usato ogni volta che
una finestra di livello 2 è aperta per rinfrescare il diagramma SFC con le modifiche
apportate ai programmi di livello 2.
A-40 CJ International
Manuale utente
Action (P) :
istruzione ST;
...
End_Action;
Le istruzioni di tipo azione Impulsiva, vengono eseguite una sola volta all’attivazione
del passo. Per ulteriori dettagli sulla programmazione SFC, si veda la Guida di
riferimento ai linguaggi ISaGRAF.
Action (N) :
istruzione ST;
...
End_Action;
Azioni booleane
Altre locuzioni semantiche sono disponibili per agire direttamente su una variabile
booleana che controlla l'attività del passo. Tali azioni consistono nel collegare il
segnale di attività di un passo ad una variabile booleana interna o di uscita
CJ International A-41
Manuale utente
Azioni SFC
Altre locuzioni semantiche permettono di controllare l’esecuzione di un programma
figlio SFC. Un’Azione SFC è una sequenza figlia SFC, avviata o terminata a
seconda del segnale di attività del passo. Un’azione SFC può avere i qualificatori N
(Non-memorizzata), S («Set») o R («Reset»). Ecco la sintassi delle azioni SFC di
base:
Transizioni scritte in ST
Una transizione di livello 2 è costituita da un’espressione booleana. Per
programmarla in linguaggio ST, è sufficiente inserire la condizione booleana
rispettando la sintassi ST. L’inserimento di un punto e virgola alla fine
dell’espressione è facoltativo.
A-42 CJ International
Manuale utente
In fase di programmazione Quick LD, usare i tasti freccia per spostare la selezione
sulla griglia logica di programmazione ed inserire i simboli con i seguenti tasti
scorciatoia:
F2:...................... inserisce un contatto dopo il simbolo evidenziato / inizia il ramo
F3:...................... inserisce un contatto prima del simbolo evidenziato
F4:...................... inserisce un contatto parallelamente al simbolo evidenziato
F6:...................... inserisce un blocco dopo il simbolo evidenziato
F7:...................... inserisce un blocco prima del simbolo evidenziato
F8:...................... inserisce un blocco parallelamente al simbolo evidenziato
È anche possibile fare click con il mouse sulla barra dei tasti funzione posta nella
parte inferiore della finestra di livello 2, invece di premere i tasti funzione.
L’editor SFC di ISaGRAF permette di gestire una collezione SFC: tale collezione è
costituita da un insieme di strutture SFC che possono essere inserite in ogni
diagramma SFC. Gli elementi della collezione SFC possono contenere la
programmazione di livello 2 in passi e transizioni. Per gestire la collezione SFC
usare i seguenti comandi del menù «Strumenti»:
Copia nella collezione SFC copia gli elementi selezionati nella collezione SFC.
Incolla dalla collezione SFC incolla un elemento dalla collezione SFC nella
posizione corrente.
Quando si copiano degli elementi nella collezione SFC (i.e. creando un nuovo
elemento della collezione SFC), si può scegliere se inglobare o no la
programmazione di livello 2 dei simboli SFC selezionati.
CJ International A-43
Manuale utente
A-44 CJ International
Manuale utente
Connettori FC: I simboli Connettore sono usati per rappresentare collegamenti tra
due punti del diagramma senza doverli disegnare. Un connettore è rappresentato
con un cerchio ed è connesso alla sorgente del flusso. Il disegno del connettore
viene completato, sul lato appropriato (dipendente dalla direzione del flusso di dati),
con l’identificazione del punto destinazione (generalmente il nome del simbolo
destinazione). Un connettore riporta il flusso sempre ad un simbolo definito sul
diagramma Flow Chart. Il simbolo destinazione è identificato con il suo numero
logico.
Commenti FC: Un blocco Commento contiene del testo che non influenza la
semantica del diagramma. Un commento può essere inserito ovunque in un
qualsiasi spazio inutilizzato della finestra documento Flow Chart, e viene utilizzato
per documentare il programma.
Inserire oggetti
Per inserire un oggetto nel diagramma, selezionare il corrispondente pulsante sulla
barra strumenti, quindi fare click nell’area grafica, nella posizione dove si desidera
inserirlo. Si può posizionare l’elemento su un’area vuota oppure inserirlo all’interno
di un collegamento di flusso facendo click sul collegamento stesso. L’inserimento
all’interno di un collegamento è permesso solo per i collegamenti verticali diretti
dall’alto verso il basso.
CJ International A-45
Manuale utente
L’editor ISaGRAF di diagrammi Flow Chart propone inoltre una lista di strutture
Flow Chart classiche. Tali strutture possono essere inserite solo su un
collegamento già esistente. Non possono essere messe in un area vuota:
Selezionare oggetti
La maggior parte dei comandi di editazione necessitano di selezionare degli oggetti
grafici. L’editor ISaGRAF di diagrammi grafici FC permette la selezione di uno o più
oggetti esistenti nell’area del diagramma. Per selezionare oggetti, bisogna utilizzare
il pulsante «Seleziona» (identificato da una freccia) sulla barra degli strumenti. Per
selezionare un oggetto, l’utente deve solo fare click sul simbolo corrispondente.
Per selezionare una lista di oggetti, trascinare il mouse sul diagramma in modo da
tracciare un area rettangolare. Tutti gli oggetti grafici all’interno del rettangolo di
selezione sono marcati come «selezionati».
Un oggetto selezionato viene disegnato in colore blu scuro, con dei piccoli
quadratini neri attorno al suo simbolo grafico. E’ anche possibile aggiungere o
rimuovere un oggetto da una selezione multipla, mantenendo premuto il tasto
SHIFT o CTRL e facendo click sul suo simbolo.
Per selezionare un singolo oggetto, è possibile usare i tasti freccia per muovere la
selezione da un oggetto ad un altro nel diagramma. Anche i simboli Collegamento
possono essere selezionati.
Inserire commenti
Degli oggetti Commento possono essere inseriti in qualunque parte vuota del
diagramma. I commenti non hanno influenza sull’esecuzione del programma.
Consentono una maggiore leggibilità del diagramma. Per inserire un blocco
Commento, selezionare il corrispondente pulsante nella barra strumenti, e fare click
nel punto del diagramma dove il commento deve essere posizionato. Per immettere
o cambiare il testo di un commento fare doppio click su di esso. Quando si immette
A-46 CJ International
Manuale utente
Usare connettori
L’editor ISaGRAF dei diagrammi Flow Chart permette di utilizzare dei connettori
grafici, in sostituzione di un flusso di collegamento visibile. Gli oggetti Connettore
possono essere molto utili per evitare collegamenti molto lunghi e per migliorare la
leggibilità del diagramma. Un Connettore non può essere utilizzato per stabilire un
collegamento con un altro programma FC.
Un Connettore viene immesso nel diagramma come gli altri oggetti FC. Viene
rappresentato con un cerchio contenente il riferimento numerico all’elemento
destinazione. Il testo della descrizione breve dell’elemento destinazione viene
mostrato vicino al simbolo del Connettore.
Muovere oggetti
Per muovere degli oggetti nel diagramma, bisogna selezionarli, e quindi trascinare il
mouse all’interno del diagramma. Si può spostare sia un elemento singolo che una
selezione multipla. Gli elementi non possono essere sovrapposti. Non è possibile
utilizzare lo spostamento di oggetti per connetterli ad un Collegamento esistente.
Ridimensionare oggetti
CJ International A-47
Manuale utente
I comandi del menù «Modifica» sono utilizzati per cambiare o per completare un
diagramma esistente. La maggior parte di questi comandi agisce sugli elementi
correntemente selezionati nel diagramma.
Correggere un diagramma
Il tasto CANC può essere utilizzato per rimuovere gli elementi selezionati. I
collegamenti pendenti sono cancellati con gli elementi selezionati. Usare il
comando «Modifica / Annulla» per ripristinare gli elementi dopo un comando
CANC. Il comando CANC può anche essere applicato ad un gruppo di elementi
selezionati nel diagramma. I comandi «Taglia», «Copia», «Incolla» del menù
«Modifica» sono utilizzati per muovere o copiare gli elementi selezionati.
Trova e sostituisci
I comandi «Modifica / Trova Sostituisci» possono essere utilizzati per trovare o
per sostituire stringhe di testo nell’intero programma (tutte le Azioni e i Test
programmati in linguaggio ST, IL o Quick LD). La finestra di dialogo
Trova/Sostituisci è utilizzata per immettere il testo che deve essere cercato e per
aprire direttamente la sezione di programmazione dove il testo compare.
A-48 CJ International
Manuale utente
Il comando «Modifica / Rinumera» viene utilizzato per rinumerare gli elementi del
diagramma. Ogni elemento FC messo nel diagramma è identificato con un unico
numero di riferimento. I numeri di riferimento sono allocati dall’editor ogni volta che
dei nuovi elementi vengono inseriti. Il comando «Modifica / Rinumera» permette di
riaggiustare la numerazione degli elementi in accordo con la loro posizione nel
diagramma. La progressione numerica avviene dall’alto verso il basso e da sinistra
verso destra.
Per immettere la programmazione di livello 2, l’utente deve fare doppio click sul
simbolo dell’Azione o del Test. La finestra di programmazione di livello 2 viene
aperta alla destra del diagramma FC. La linea di separazione tra il diagramma FC e
la finestra di programmazione di livello 2 può essere liberamente spostata. Si
possono aprire una o contemporaneamente due aree di livello 2. I seguenti
comandi sono disponibili dalla tastiera, dal mouse o dal menù «Modifica»:
Quando due finestre di livello 2 sono visibili, la separazione tra esse può essere
liberamente spostata. Il pulsante alla destra della barra del titolo chiude la finestra
di livello 2.
Una linea di testo appare nella parte superiore della finestra di livello 2, viene usata
per immettere un breve testo di descrizione. Questo testo verrà visualizzato come
commento IEC nel disegno dei simboli FC. E’ molto utile ed è utilizzato da altri
comandi, come ad esempio «Vai a» ed anche nella stampa di (Azioni e Test)
documenti FC.
CJ International A-49
Manuale utente
Il comando «Opzioni / Rinfresca diagramma» può essere usato ogni volta che
una finestra di livello 2 è aperta per rinfrescare il diagramma FC con le modifiche
apportate ai programmi di livello 2.
Un salto porta al nome di un ramo LD. Il nome del ramo destinazione può essere
immesso premendo INVIO quando è selezionata la testa del ramo di partenza.
L’editor ISaGRAF memorizza le etichette dei rami che sono stati precedentemente
immessi, sia che siano state specificate per il nome di un ramo o per un’operazione
di salto. La finestra di dialogo Salto / Etichetta permette di immettere una nuova
etichetta oppure di selezionarne una esistente. Se si immette un nuovo nome,
questo verrà automaticamente aggiunto alla lista. Il pulsante «Rimuovi» viene
usato per rimuovere il nome selezionato dalla lista, ma non rimuove l’etichetta dal
ramo selezionato nel diagramma. Per far questo bisogna premere OK quando la
casella di edit è vuota.
A-50 CJ International
Manuale utente
Per immettere i simboli LD, si possono usare i pulsanti nella barra strumenti LD
invece di premere i tasti funzione.
Utilizzare il pulsante «Zoom» della barra strumenti per cambiare il rapporto di zoom
corrente. Questo comando è disponibile anche quando si lavora su un programma
Quick LD associato ad un’Azione o ad un Test.
Utilizzare il pulsante «Visualizza / Nascondi griglia» della barra strumenti per
mostrare o nascondere i punti della la griglia. Questo comando è disponibile anche
quando si lavora su un programma Quick LD associato ad un’Azione o ad un Test.
CJ International A-51
Manuale utente
Un programma LD viene espresso come una lista di rami (da cui segue il nome
Ladder Diagram, cioè Diagramma a scala) in cui sono sistemati contatti e bobine.
Di seguito sono descritti i componenti di base di un diagramma LD.
Contatti
Un contatto modifica il flusso dati booleano in relazione allo stato di una variabile
booleana. Il nome della variabile è visibile sopra al simbolo del contatto. L’editor
Quick LD ISaGRAF incorpora i seguenti tipi di contatti:
.................... contatto diretto
.................... contatto inverso
.................... contatto con riconoscimento di fronte positivo (in salita)
.................... contatto con riconoscimento di fronte negativo (in caduta)
Bobine
Una bobina rappresenta un’azione. Lo stato del ramo (lo stato del collegamento alla
sinistra della bobina) viene usato per assegnare un valore ad una variabile
booleana. Il nome della variabile è visibile sopra al simbolo della bobina. L’editor
Quick LD ISaGRAF incorpora i seguenti tipi di bobina:
.................... bobina diretta
.................... bobina inversa (negata)
.................... bobina di tipo «Set»
.................... bobina di tipo «Reset»
A-52 CJ International
Manuale utente
Blocchi funzione
In un diagramma LD, un blocco può rappresentare una funzione, un blocco
funzione, un sottoprogramma o un operatore. I primi parametri di entrata e di uscita
sono sempre collegati al ramo. I rimanenti parametri di input ed output sono scritti
in modo testuale all’esterno della casella del blocco.
Simbolo di salto
Un simbolo di salto fa sempre riferimento ad una etichetta che si trova in un diverso
punto dello stesso diagramma LD. L’etichetta è riportata a fianco del simbolo di
salto. Quando la connessione sinistra ha valore «TRUE», l’esecuzione del
diagramma salta direttamente alla etichetta destinazione. Si ricorda la pericolosità
dei salti all’indietro, che potrebbero, in alcuni casi, causare il blocco del ciclo PLC.
Simbolo di Return
Il simbolo di return viene posizionato alla fine del ramo. Indica di fermare
l’esecuzione del programma quando lo stato del ramo vale «TRUE».
Input «EN»
Con alcuni operatori, funzioni o blocchi funzione, il primo input non è di tipo
booleano. Poiché il primo input deve essere sempre connesso al ramo, nella prima
posizione viene automaticamente inserito un altro input chiamato «EN». Il blocco
viene eseguito solo se l’input EN vale «TRUE». Di seguito viene proposto l’esempio
di un operatore di confronto affiancato dall’equivalente codice espresso in
linguaggio ST:
IF stato_ramo THEN
q := (valore1 > valore2);
ELSE
q := FALSE;
END_IF;
(*prosegue il ramo con lo stato q *)
Output «ENO»
Con alcuni operatori, funzioni o blocchi funzione, il primo output non è di tipo
booleano. Poiché il primo output deve essere sempre connesso al ramo, nella
CJ International A-53
Manuale utente
IF stato_ramo THEN
resultato := (valore1 + valore2);
END_IF;
eno := stato_ramo;
(*prosegue il ramo con lo stato eno *)
Tutti i comandi dell’editor Quick LD Si possono ottenere sia con l’uso della tastiera
che del mouse.
La griglia di modifica
Il diagramma LD viene inserito in una matrice logica. Ogni cella della matrice può
contenere un solo simbolo LD. Per spostare la selezione corrente, si usano i tasti
cursore della tastiera o si fa un click sulla cella voluta. La cella evidenziata è
segnata con colorazione inversa. Per alcune operazioni del tipo taglia/copia/incolla,
è possibile evidenziare più celle. Per far questo con il mouse, è sufficiente
trascinare il cursore del mouse sul diagramma. Con la tastiera bisogna usare i tasti
cursore tenendo premuto il tasto SHIFT.
A-54 CJ International
Manuale utente
Ogni ramo può essere documentato con al massimo due righe di testo. Per inserire
un testo di commento al ramo, posizionare la cella di selezione sopra il ramo e
premere il tasto INVIO, o fare doppio click con il mouse sulla cella voluta:
L’editor Quick LD ISaGRAF memorizza le etichette dei rami già introdotte, se sono
state specificate come nome di un ramo o per operazioni di salto. La seguente
finestra di dialogo permette di inserire una nuova etichetta o di selezionarne una
esistente.
CJ International A-55
Manuale utente
I comandi che seguono hanno validità quando è evidenziato l’output del ramo
(bobina):
F5....................... aggiunge una bobina in parallelo con la selezione
F9....................... aggiunge un salto in parallelo con la selezione
SHIFT + F9 ........ aggiunge un simbolo Return in parallelo con la selezione
Per quanto riguarda gli inserimenti in parallelo (F4/F8), se più contatti di un ramo
sono evidenziati contemporaneamente, il simbolo viene inserito in parallelo con il
gruppo degli elementi evidenziati. Di seguito viene proposto un esempio:
Per l’inserimento dei simboli nel diagramma è anche possibile utilizzare la barra
strumenti. Facendo click sul tipo di simbolo voluto sulla barra, questo viene inserito
nella posizione corrente:
A-56 CJ International
Manuale utente
Inserire simboli
Evidenziando un contatto od una bobina e premendo INVIO, è possibile assegnargli
una variabile. Usando il mouse bisogna fare doppio click sul contatto o sulla bobina.
Appare un riquadro che mostra un elenco di variabili. Far riferimento al capitolo
«Ulteriori informazioni sugli editor di programmi» in questo stesso documento per
l’uso di questa finestra di dialogo.
Selezionando una funzione, blocco funzione o un operatore e premendo INVIO è
possibile scegliere il tipo di blocco funzione da utilizzare.
Per associare una variabile ad un parametro di ingresso o di uscita di un blocco,
bisogna selezionare l’uscita o l’ingresso, all’esterno del rettangolo del blocco, quindi
premere INVIO.
Alternativamente è possibile fare un doppio click con il mouse sull’elemento
selezionato.
Correggere un diagramma
Il tasto CANC permette di eliminare gli elementi evidenziati. Non è possibile
eliminare un simbolo di bobina, salto o return, qualora sia l’unico output del ramo.
Per ripristinare gli elementi dopo un comando CANC, usare la voce «Modifica /
Annulla». Il comando CANC ha effetto anche su gruppi di elementi evidenziati sul
diagramma. Il comando CANC può essere impiegato anche per cancellare, quando
CJ International A-57
Manuale utente
Copiare i simboli
Le voci «Taglia», «Copia», «Incolla» del menù «Modifica» permettono di spostare
o copiare gli elementi evidenziati. La voce «Modifica / Incolla speciale» di inserire
gli elementi degli appunti:
• prima dell’elemento evidenziato (a sinistra)
• dopo l’elemento evidenziato (a destra)
• in parallelo con l’elemento evidenziato
Trovare e sostituire
Le voci «Modifica / Trova» e «Modifica / Sostituisci» permettono di trovare e
sostituire le parti testuali del diagramma. La ricerca ha successo solo su nomi
completi e funziona su contatti, bobine, nomi di blocchi, blocchi di parametri e
etichette di esecuzione. Non può essere usata per trovare una stringa all’interno del
commento di un ramo. Il comando Sostituisci non può essere usato per cambiare la
tipologia di un blocco. La ricerca può avvenire sia verso l’alto che verso il basso a
partire dalla posizione della selezione corrente. L’algoritmo di ricerca «cicla»
quando raggiunge i limiti del diagramma. Sono disponibili i seguenti «tasti
scorciatoia» per la ricerca veloce dei nomi delle variabili:
ALT + F2 trova l’elemento successivo avente lo stesso nome dell’elemento
correntemente selezionato. Questa possibilità è applicabile anche a blocchi
funzione e etichette di rami.
ALT + F5 trova la successiva bobina con lo stesso nome della bobina
correntemente selezionata. Principalmente usato in modo debug, per trovare
rapidamente i rami in relazione con una variabile sospetta.
Commenti ai rami
La voce «Opzioni / Commenti ai rami» permette di nascondere o rendere visibili i
commenti ai rami per l’intero diagramma. Torna utile qualora si desideri una visione
compressa di un diagramma molto grande, poiché, sulla griglia di modifica, ogni
commento occupa una riga. Questa opzione non ha effetto sui contenuti dei
commenti esistenti e si può attivare e disattivare in qualsiasi momento.
Nomi ed alias
A-58 CJ International
Manuale utente
Gli alias non hanno alcun effetto sull’esecuzione del diagramma LD e devono
essere considerati, dal punto di vista sintattico, alla stregua di commenti. L’alias di
una variabile viene automaticamente estratto dal commento della variabile nel
momento in cui viene selezionato il nome dall’elenco delle variabili. Usare la voce
«Opzioni / Contatti e bobine» per scegliere il modo di visualizzazione per
l’identificazione delle variabili. Sono disponibili i seguenti modi:
• solo i nomi delle variabili
• solo gli alias delle variabili
• nomi ed alias contemporaneamente
Opzioni di disegno
La voce «Opzioni / Disposizione» apre una finestra di dialogo in cui sono
raggruppati tutti i parametri e le opzioni relative all’area di lavoro dell’editor ed il
disegno del diagramma grafico LD:
CJ International A-59
Manuale utente
A-60 CJ International
Manuale utente
CJ International A-61
Manuale utente
Contatti
Un contatto modifica il flusso dati booleano in relazione allo stato di una variabile
booleana. Il nome della variabile è visibile sopra al simbolo del contatto. L’editor
FBD/LD ISaGRAF incorpora i seguenti tipi di contatti:
.................... contatto diretto
.................... contatto inverso
.................... contatto con riconoscimento di fronte positivo (in salita)
.................... contatto con riconoscimento di fronte negativo (in discesa)
Bobine
Una bobina rappresenta un’azione. Deve essere connessa a sinistra ad un simbolo
booleano come ad esempio un contatto. Il nome della variabile è visibile sopra al
simbolo della bobina. L’editor FBD/LD ISaGRAF incorpora i seguenti tipi di bobina:
.................... bobina diretta
.................... bobina inversa (negata)
.................... bobina di tipo «Set»
.................... bobina di tipo «Reset»
Blocchi funzione
Un blocco può rappresentare una funzione, un blocco funzione, un sottoprogramma
o un operatore. Ingressi ed uscite devono essere collegati a variabili, contatti o
bobine, o ad altri blocchi di ingresso o di uscita. I nomi dei parametri formali sono
visibili all’interno della casella del blocco.
Etichette
Le etichette possono essere posizionate dovunque sul diagramma. Le etichette
rappresentano la destinazione per le istruzioni di salto, per cambiare l’ordine di
esecuzione del diagramma. Le etichette non hanno connessioni con altri elementi.
Al fine di migliorare la leggibilità del diagramma, si raccomanda di disporre le
etichette alla sinistra del diagramma.
Salti
A-62 CJ International
Manuale utente
Simbolo di Return
Il simbolo di return è connesso ad un «punto» booleano. Indica di fermare
l’esecuzione del programma quando lo stato del ramo vale «TRUE».
Variabili
Le variabili sul diagramma vengono rappresentate all’interno di piccole caselle,
collegate a sinistra e a destra con gli altri elementi del diagramma.
Connessioni
Le linee di connessione sono tracciate tra gli elementi del diagramma. I
collegamenti sono sempre tracciati da un punto di uscita verso un punto ingresso
(in direzione del flusso di dati).
Angoli definibili
Si possono definire dei punti sui collegamenti. Essi consentono all’utente di
controllare manualmente il tracciamento di una connessione. Se gli angoli non
vengono indicati, l’editor ISaGRAF FBD/LD usa un algoritmo di tracciamento
predefinito.
Inserire oggetti
Per inserire un oggetto nel diagramma, selezionare il pulsante corrispondente della
barra strumenti e fare click sull’area grafica, dove lo si vuole collocare.
Selezione oggetti
Per la maggior parte dei comandi di editing è necessario selezionare gli oggetti
grafici. L’editor grafico LD/FBD ISaGRAF permette la selezione di uno o più oggetti
CJ International A-63
Manuale utente
Aggiungere commenti
Possono essere inseriti commenti ovunque nel diagramma. Essi non hanno alcuna
influenza sull’esecuzione dello stesso. I commenti permettono la migliore lettura del
programma. Per inserire un blocco di commenti premere questo pulsante sulla
barra strumenti e trascinare il mouse per selezionare l’area rettangolare in cui
collocare il commento. Inserire poi il testo del commento nell’apposita finestra di
dialogo. Quando si inserisce il testo di un blocco commento non sono necessari
particolari caratteri di inizio o fine quali «(*» e «*)». Un blocco commento può
essere ridimensionato spostando gli angoli del bordo quando è evidenziato.
Spostamento di oggetti
Per spostare oggetti all’interno del diagramma, selezionarli e trascinare il mouse
per muovere l’area selezionata nel diagramma. Per spostare oggetti connessi,
basta semplicemente spostare il loro simbolo all’interno del diagramma. L’editor
ISaGRAF LD/FBD provvederà a tracciare automaticamente le connessioni tra gli
oggetti spostati, basandosi sulla loro nuova collocazione.
Tracciare connessioni
Per tracciare una connessione tra elementi esistenti premere uno di questi tasti
sulla barra strumenti. Se si traccia un collegamento tra un punto connessione ed
uno spazio vuoto nel diagramma, verrà automaticamente terminato con un «angolo
definibile» in modo che sia possibile continuare a tracciare un altro segmento.
A-64 CJ International
Manuale utente
Tracciare rami LD
Per tracciare un nuovo ramo LD, innanzitutto inserire la barra di alimentazione
sinistra. Poi inserire una bobina: verrà automaticamente collegata all’alimentazione.
Altri contatti e connessioni verticali OR possono essere inseriti direttamente sulla
linea del ramo senza tracciare nuove linee di collegamento.
Quando si inserisce un nuovo contatto LD o una nuova bobina in uno spazio vuoto
dell’area di lavoro, un nuovo ramo orizzontale viene tracciato automaticamente a
partire dal nuovo elemento inserito fino alle esistenti barre di alimentazione sulla
destra e sulla sinistra. La linea non viene tracciata automaticamente se il nuovo
elemento non è collocato tra le barre di alimentazione. Il nuovo elemento inserito
può poi essere liberamente spostato sul ramo tracciato. Le linee orizzontali
tracciate automaticamente dall’editor all’inserimento di un nuovo simbolo di contatto
LD o bobina, possono essere evidenziate e cancellate. Si possono inserire nuovi
contatti LD o bobine sulla linea orizzontale di un ramo esistente. L’editor taglia
automaticamente i rami e li connette ai punti di connessione destro e sinistro del
nuovo contatto o bobina inseriti.
Connessioni multiple
Si possono creare connessioni multiple a destra di ogni punto di uscita. In questo
modo l’informazione viene trasmessa a diversi altri punti del diagramma. Lo stesso
stato, viene propagato ad ogni estremità a destra. Non esiste limite al numero di
linee che possono essere tracciate alla destra di un punto di connessione.
Due linee di connessione non possono avere le estremità destre connesse allo
stesso punto di input, ad eccezione dei seguenti simboli LD:
...................... barra di alimentazione destra
...................... connessioni multiple a destra dell’operatore (OR)
Questi simboli LD possono avere un numero illimitato di input.
Trova e sostituisci
Le voci «Modifica / Trova» e «Modifica / Sostituisci» vengono usate per trovare e
sostituire testi all’interno del diagramma. La ricerca avviene solo su nomi completi.
La ricerca viene fatta su contatti, bobine, nomi di blocchi, variabili e etichette. Non
è, invece, possibile trovare una stringa all’interno del testo di un commento. Il
comando Sostituisci non può essere usato per cambiare il nome di un blocco.
CJ International A-65
Manuale utente
Partendo dalla posizione corrente, la ricerca può essere fatta sia verso il basso sia
verso l’alto. Raggiunti i limiti del diagramma la ricerca «cicla».
Per immettere il testo normalmente sono previste delle finestre di dialogo che
includono la lista delle variabili o la lista dei blocchi. Se nel menù «Opzioni» è
selezionato «Immissione manuale da tastiera», i simboli di variabili e i nomi di
blocchi sono introdotti direttamente in una apposita riga di testo. All’interno di tale
riga si scrive il nuovo testo e lo si valida premendo il tasto INVIO, oppure si annulla
l’operazione premendo il tasto ESC. La riga di testo usata nell’ingresso manuale da
tastiera non può essere chiusa con il mouse.
A-66 CJ International
Manuale utente
Quando il menù viene aperto, una linea grigia nell’area di disegno FBD indica dove
lo spazio vuoto verrà inserito o rimosso.
CJ International A-67
Manuale utente
Notare che gli stili non sono visibili durante la simulazione o il debug On-Line,
poiché in tale modalità i colori (rosso e blu) sono utilizzati per evidenziare gli stati
VERO / FALSO delle variabili spiate.
Stili predefiniti
I seguenti stili sono pre-definiti:
Stile Normale: predefinito per il disegno (nero). Per il monitoraggio delle modifiche,
lo stile Normale indica che gli elementi aventi questo stile sono parte del
diagramma originale. Durante la fase di esecuzione viene fatta una scansione degli
elementi con stile Normale.
Stile Modificato: gli elementi marcati con stile Modificato sono colorati in rosa. Per
il monitoraggio delle modifiche, lo stile Modificato viene utilizzato per evidenziare
elementi che sono stati aggiunti o cambiati dopo la versione originale del
diagramma. Durante la fase di esecuzione viene fatta una scansione degli elementi
con stile Modificato.
Stile Cancellato: Gli elementi marcati con stile Cancellato sono colorati in grigio,
con linea tratteggiata. Tali elementi non vengono presi in considerazione durante
l’esecuzione del diagramma. Questo stile viene usato per tenere traccia degli
elementi cancellati dalla versione originale quando è richiesto il controllo della
versione.
Stile Personalizzato: oltre agli stili predefiniti, l’editor ISaGRAF LD/FBD permette
di selezionare il colore da applicare ad ogni parte del diagramma. Tali elementi
vengono considerati come «personalizzati». L’utilizzo dello stile Personalizzato non
ha effetto sull’esecuzione del diagramma.
Utilizzare i comandi del sottomenù «Stile» nel menù «Modifica» per applicare uno
stile agli elementi selezionati.
A-68 CJ International
Manuale utente
Usare il comando «Modifica / Stile/ Rimuovi tutti gli elementi cancellati» per
rimuovere tutti gli elementi marcati con stile Cancellato dal diagramma LD/FBD.
Questo comando non agisce solo sulla selezione corrente, ma viene applicato
sempre all’intero diagramma.
CJ International A-69
Manuale utente
Taglia e incolla
Il tasto CANC permette di cancellare il testo evidenziato. È possibile ripristinare gli
elementi cancellati in seguito all’uso del comando CANC, usando la voce
«Modifica / Annulla». Le voci «Taglia», «Copia», «Incolla» del menù «Modifica»
permettono di spostare o copiare blocchi di testo all’interno del programma o di
inserire parti di testo copiate negli appunti da altre applicazioni.
Trova e sostituisci
Le voci di menù «Modifica / Trova» e «Modifica / Sostituisci» servono a trovare e
sostituire blocchi di testo all’interno del programma. È possibile effettuare la ricerca
con qualsiasi stringa, sia verso l’alto che verso il basso, a partire dalla posizione
corrente del cursore. Non esiste il pericolo della ripetizione della ricerca al
raggiungimento dei limiti del programma.
Raggiungi riga
La voce «Modifica / Vai alla linea» serve a muovere il cursore ad un numero di
riga specificato. Si rivela molto utile per accedere ad una riga di un programma ST
o IL, al cui numero il compilatore ISaGRAF abbia segnalato un errore.
Inserire un file
La voce «Modifica / Inserisci file» permette di inserire l’intero contenuto di un file
alla posizione corrente del cursore. Questo comando è in grado di gestire
solamente file tipo testo esclusivamente in formato ASCII.
A-70 CJ International
Manuale utente
A.8.2 Opzioni
CJ International A-71
Manuale utente
A-72 CJ International
Manuale utente
funzione, per renderlo conforme al linguaggio ST. Un blocco funzione può avere più
di un parametro di ritorno.
La seguente finestra di dialogo serve a descrivere i parametri di un
sottoprogramma:
La lista nella parte superiore destra della finestra mostra i parametri nell’ordine del
modello di chiamata, prima i parametri di chiamata e per ultimi i parametri di ritorno.
La parte inferiore della finestra mostra una descrizione dettagliata del parametro
evidenziato nella lista. Qualsiasi tipo di dato ISaGRAF può essere usato come
parametro. I parametri di ritorno devono essere collocati nella lista dopo quelli di
chiamata. Nell’attribuire un nome ai parametri bisogna rispettare le seguenti regole:
• La lunghezza del nome non può eccedere i 16 caratteri
• Il primo carattere deve essere una lettera
• I caratteri successivi devono essere lettere, cifre o il carattere «_».
• Non viene fatta distinzione tra maiuscole e minuscole
I seguenti comandi sono disponibili nel menù «File» di tutti gli editor di programmi:
CJ International A-73
Manuale utente
Per alcuni editor grafici (SFC, FBD, Quick LD) è possibile usare il comando
«Modifica / Copia diagramma negli appunti (metafile)» per copiare negli appunti
il tracciato del diagramma in formato metafile, in modo da poterlo inserire in altre
applicazioni quali word processor. Per quanto riguarda i programmi SFC, nel
metafile copiato appaiono solo le informazioni di primo livello (diagramma,
numerazione commenti di primo livello).
Premendo il tasto OK il testo nota inserito verrà salvato alla fine del file diario con
l’indicazione della data ed ora correnti. Ciò è particolarmente utile per la
manutenzione dell’intero programma in quanto fornisce informazioni importanti circa
il ciclo di vita del programma stesso.
A-74 CJ International
Manuale utente
...................... Booleano
...................... Intero / Reale
...................... Timer
...................... Messaggio
Per selezionare una variabile basta fare click sul suo nome nella lista. Nome e
relativo commento vengono visualizzati in cima alla lista. Premere poi «OK» per
confermare la selezione. E’ inoltre possibile inserire direttamente una variabile nella
casella di modifica senza utilizzare la lista (in tal caso se la variabile è nuova non
viene aggiunta al dizionario).
I seguenti comandi sono disponibili nel menù Strumenti. Sono utilizzati per
mostrare informazioni in una finestra di testo nella parte inferiore della finestra
principale LD:
CJ International A-75
Manuale utente
A-76 CJ International
Manuale utente
Variabili, blocchi funzione e nomi definiti devono essere dichiarati nel dizionario
prima di poter essere utilizzati nei programmi sorgente. Le variabili e i nomi definiti
possono essere usati in un qualunque linguaggio di programmazione: SFC, FC
FBD, LD, ST e IL. I blocchi funzione usati nel linguaggio FBD non devono essere
dichiarati, perché gli editor ISaGRAF FBD e Quick LD dichiarano automaticamente
le istanze dei blocchi utilizzati.
Variabili
Le variabili vengono ordinate secondo il loro tipo ed il loro campo di validità
(ambiente di programmazione entro cui sono utilizzabili). Solo variabili dello stesso
tipo e con lo stesso campo di validità possono essere inserite nella stessa scheda
della finestra dizionario. Questi sono i campi di validità delle variabili:
GLOBALE .... può essere utilizzata da ogni programma del progetto corrente
LOCALE ...... può essere usata solo da uno specifico programma
Nota: Una variabile di tipo timer ha sempre come attributo quello di variabile interna.
Le variabili con attributo di ingresso o di uscita hanno sempre un campo di validità
Globale.
Nomi definiti
Un nome definito è uno pseudonimo che può essere usato in ognuno dei linguaggi
di programmazione per sostituire una stringa di testo. Il testo sostituito può essere il
nome di una variabile, un’espressione costante o un’espressione complessa. I nomi
CJ International A-77
Manuale utente
definiti sono ordinati in base al loro campo di validità. Solo nomi definiti dello stesso
tipo e con lo stesso campo di validità possono appartenere alla stessa scheda della
finestra dizionario. Questi sono i possibili campi di validità per un nome definito:
COMUNE ..... può essere utilizzato da ogni programma di qualsiasi progetto
GLOBALE .... può essere usato da qualunque programma del presente progetto
LOCALE ...... può essere usato solo da uno specifico programma
Un nome definito è identificato con una stringa di testo (nome assegnato), un ben
definito blocco di testo ST equivalente e da un commento libero.
Si noti che i nomi definiti, a differenza delle variabili e delle istanze di blocchi
funzione, possono avere campo di validità Comune (ed in tal caso possono essere
utilizzati ovunque).
TRIG_B1 (b1);
edge_b1 := TRIG_B1.Q; (* b1 variabile con riconoscimento di fronte *)
TRIG_B2 (b2);
edge_b2 := TRIG_B2.Q; (* b2 variabile con riconoscimento di fronte *)
A-78 CJ International
Manuale utente
r_trig
b1 CLK Q &
r_trig two_edges
b2 CLK Q
(* i blocchi funzione hanno sempre il nome del blocco definito nella libreria.
Gli editor FBD e Quick LD di ISaGRAF dichiarano automaticamente un’istanza
ogni volta che un blocco viene disegnato nel diagramma*)
Indirizzi di rete
Gli indirizzi di rete sono facoltativi. Una variabile con un indirizzo di rete non nullo
può essere spiata da un sistema esterno (ad esempio un sistema di
visualizzazione di processi) in fase di esecuzione. In generale l’indirizzo di rete
fornisce un meccanismo di identificazione per ogni sistema di comunicazione che in
fase di esecuzione non possa lavorare con nomi simbolici. Un indirizzo di rete può
essere inserito per ogni variabile, all’atto della sua descrizione completa, quando la
variabile viene creata o modificata.
La finestra del dizionario mostra una lista di variabili di uno stesso tipo e con lo
stesso campo di validità. Il tipo e la validità delle variabili che si stanno
modificando, vengono sempre visualizzati nella barra strumenti. Di seguito viene
mostrata finestra di editing del dizionario:
CJ International A-79
Manuale utente
Per individuare una variabile in base alle prime lettere del suo nome è sufficiente
scrivere nel campo di testo sulla destra della barra strumenti. In questo modo la
ricerca è effettuata sull’intera lista, dall’inizio. Nella finestra Dizionario è disponibile
anche il comando «Modifica / Trova» per effettuare la ricerca di stringhe di testo
inserite in nomi di variabili o in commenti ed evidenziare nella lista la variabile
trovata. La ricerca tratta allo stesso modo le lettere maiuscole e minuscole.
I comandi disponibili nel menù «File» della finestra del dizionario agiscono su tutta
la classe di variabili, istanze di blocchi funzione e nomi definiti selezionati. Per
selezionare il tipo e il campo di validità degli oggetti da modificare, si utilizza il
comando «File / Altro».
Il comando «Strumenti / Connessioni di I/O» consente all’utente di avviare l’editor
delle connessioni di I/O ISaGRAF relativamente al progetto aperto. Se la variabile di
I/O selezionata nella finestra del dizionario è già connessa, la corrispondente
scheda di I/O verrà visualizzata all’apertura della finestra Connessioni di I/O.
Il comando «Strumenti / Tabelle di conversione» avvia l’editor delle tabelle di
conversione, che possono essere associate a variabili di I/O intere o reali del
dizionario.
Il comando «Strumenti / Riferimenti incrociati» avvia l’editor dei riferimenti
incrociati per il progetto aperto.
Stampa di variabili
Per stampare la lista corrente delle variabili, o dei nomi definiti su una stampante
standard Windows™, si usa il comando «File / Stampa», con cui viene avviato il
Generatore documentazione. La stampa comprenderà la descrizione completa di
ogni singola variabile o nome definito del tipo correntemente selezionato.
A-80 CJ International
Manuale utente
Taglia ed incolla
La finestra dizionario di ISaGRAF consente di selezionare contemporaneamente
più variabili della lista (selezione multipla). Sono poi disponibili comandi per lavorare
sulla lista di variabili evidenziate. Di seguito sono riportati i comandi disponibili del
menù «Modifica»:
COPIA................ Copia il gruppo di variabili selezionato negli appunti
TAGLIA .............. Copia il gruppo di variabili selezionato e lo toglie dalla lista sulla
quale si sta lavorando
INCOLLA ........... Inserisce il contenuto degli appunti prima della variabile
selezionata
Le funzioni Copia/Taglia/Incolla possono essere usate tra liste di variabili. Non
possono essere usate tra liste di oggetti di tipo diverso.
CJ International A-81
Manuale utente
Nome .............................. Nome della variabile: il primo carattere deve essere una
lettera, i seguenti possono essere lettere, cifre o il
carattere «_».
Indirizzo rete .................. Indirizzo di rete esadecimale (facoltativo). Quando questo
campo è non nullo, la variabile può essere spiata da
sistemi esterni in fase di esecuzione.
Commento ..................... Commento libero per descrivere la variabile.
Ritentiva ......................... Questa opzione indica una variabile ritentiva.
Questi sono altri campi descrittivi di variabili booleane.
A-82 CJ International
Manuale utente
Nome .............................. Nome usato nel file sorgente ST: il primo carattere deve
essere una lettera, i successivi possono essere lettere,
cifre o il carattere «_».
Definizione ..................... Stringa conforme alla sintassi ST che sostituisce il Nome
definito durante la compilazione. Ad esempio: Nome = PI
- Equivale = 3.14159
Commento ..................... Commento libero per l’equivalenza definita.
Campi descrittivi di una istanza di blocco funzione
Nome .............................. Nome dell’istanza utilizzato nei file sorgente ST: il primo
carattere deve essere una lettera, i successivi possono
essere lettere, cifre o il carattere «_».
Tipo ................................ Nome del corrispondente blocco funzione all’interno della
libreria.
Commento ..................... Commento libero dell’istanza di blocco funzione.
CJ International A-83
Manuale utente
Inoltre, si possono specificare gli attributi base delle variabili create (interna,
ingresso o uscita ...), più alcune proprietà che dipendono dal tipo di variabile
(l’attributo di variabile ritentiva, il formato intero o reale, la massima lunghezza della
stinga messaggio).
Bisogna sempre definire un testo da inserire prima del numero della variabile,
poiché un simbolo di variabile non può cominciare con una cifra. Quando il numero
di cifre è impostato su «Auto», ISaGRAF formatta il campo numerico di ogni singola
variabile creata con il numero minimo di cifre necessarie. Quando il numero di cifre
viene specificato, ISaGRAF formatta tutti i campi numerici alla lunghezza
specificata aggiungendo dei caratteri '0'. Impostare un numero fisso di cifre per il
campo numerico delle variabili può essere molto utile per prevenire un errato
ordinamento alfanumerico. Seguono alcuni esempi.
A-84 CJ International
Manuale utente
Gli indirizzi di rete di ISaGRAF sono spesso utilizzati per stabilire un collegamento,
tra un sistema ISaGRAF e uno SCADA, basato su comunicazione Modbus. In
questo caso, lo SCADA è un Modbus master e il target ISaGRAF agisce come un
Modbus slave. Gli indirizzi di rete sono usati per creare una mappa Modbus virtuale
per tutte le variabili ISaGRAF che devono essere controllate dallo SCADA. Il
comando «Strumenti / Mappa indirizzi SCADA per Modbus» permette di creare
velocemente una mappa virtuale Modbus con le variabili dell’applicazione.
La finestra Mappa indirizzi Modbus per SCADA mostra due liste. La lista superiore
è un segmento (4096 locazioni) della mappa Modbus, che mostra le variabili
mappate (quelle a cui è associato un indirizzo di rete). La lista inferiore mostra le
variabili non mappate (senza indirizzo di rete). L’indirizzo «0» non può essere usato
per mappare una variabile.
Per muovere variabili da una lista all’altra e costruire così la mappa, usare i
comandi «Mappa» e «Rimuovi» dal menù «Modifica». Oppure facendo doppio
click sul simbolo di una variabile in una lista per spostarla nell’altra lista. In ogni
momento, si può usare il menù a tendina «Segmento» per vedere un altro
segmento della mappa.
Esportazione di dati
La seguente finestra di dialogo appare selezionando il comando «Esporta testo».
Essa consente di controllare la procedura di esportazione dati.
CJ International A-85
Manuale utente
Indicando la scelta «Lista completa» si esporta l’intera lista editata. In questo caso
la selezione corrente viene ignorata. Scegliendo invece «Variabili selezionate»
verranno esportate solo le variabili evidenziate.
Si sceglie poi il formato del file da esportare. I formati disponibili verranno descritti
in seguito. Premendo poi «OK» si da il via all’operazione di export. Premendo
«Annulla» si chiude la finestra di dialogo annullando la procedura di export.
Tutti i campi degli oggetti selezionati vengono salvati nel testo esportato seguendo
l’ordine standard di dichiarazione. La prima riga di testo esportato contiene il nome
dei campi. Ogni oggetto viene descritto in una riga di testo. Il separatore di fine riga
è la sequenza standard MS-DOS «0d-0a». Premendo il tasto «Parole chiavi» si
può modificare il nome usato per identificare i campi nella prima riga del testo
esportato. Questo comando verrà descritto in seguito.
Importazione di dati
Il comando «Importa testo» apre la seguente finestra di dialogo. Essa consente di
controllare la procedura di import.
A-86 CJ International
Manuale utente
La prima riga di testo deve contenere il nome dei campi secondo l’ordine usato
nelle righe successive. Ogni oggetto deve essere descritto su una riga di testo. Il
separatore di fine riga è la sequenza standard MS-DOS «0d-0a». I campi possono
apparire in qualsiasi ordine. Eventuali campi mancanti verranno sostituiti da valori di
default per gli oggetti importati. Se nella lista editata esiste già uno degli oggetti
importati, verrà chiesta conferma prima della sostituzione. La descrizione
dell’oggetto viene poi aggiornata con i campi importati. Eventuali campi mancanti
non verranno aggiornati.
Tabulatori
virgole
Esempio: Nome,Attributo,Commento
CJ International A-87
Manuale utente
Esempio: Nome;Attributo;Commento
livello;interno;Livello interno acqua calcolato
allarm1;uscita;allarme uscita principale
virgole ed apici
Parole chiave
I nomi utilizzati per definire i campi nella prima riga importata o esportata possono
essere modificati attraverso il pulsante «Parole chiavi». Questo comando apre la
seguente finestra di dialogo
La finestra mostra la lista dei campi e le parole chiave ad essi associate. Per
modificare una parola chiave selezionare un campo dell’elenco e premere il tasto
«Modifica». Selezionando «Predefinito» si ripristina la lista originale delle parole
chiave. Per definire una parola chiave bisogna rispettare le seguenti regole:
• il nome non può eccedere i 16 caratteri
• il primo carattere deve essere una lettera
• i caratteri successivi possono essere lettere, cifre o il carattere «_»
• non è possibile utilizzare lo stesso nome per differenti parole chiave
Nome oggetto...........................................Name
Commento testo.......................................Comment
A-88 CJ International
Manuale utente
Indirizzo di rete.........................................Address
Attributi (interno, input, output) ................. Attribute
Stringa booleana 'False' ...........................False
Stringa booleana 'True'.............................True
Formato analogico (reale o intero)............Format
Stringa unità analogica.............................Unit
Nome conversione analogica ...................Conversion
Lunghezza massima messaggio ..............MaxLength
Tipo libreria blocchi funzione .................... Library
Equivalente Nome definito........................Equivalence
Attributo interno........................................Internal
Attributo Input...........................................Input
Attributo Output ........................................Output
Attributo Costante ....................................Constant
Formato reale analogico...........................Reale
Formato intero analogico..........................Integer
CJ International A-89
Manuale utente
Icone
Le icone visualizzate a fianco dei simboli di scheda indicano il tipo e gli attributi
delle variabili che possono essere connesse ai canali della scheda. Il sistema
ISaGRAF non consente di connettere alla stessa scheda variabili di tipo diverso. Di
seguito viene riportato il significato delle icone utilizzate:
....................... tipo booleano
....................... tipo intero/reale (possono essere connessi entrambi i tipi di
variabile)
....................... tipo messaggio
....................... ingresso – nessun canale connesso
....................... uscita - nessun canale connesso
....................... ingresso – almeno un canale connesso
....................... uscita – almeno un canale connesso
A-90 CJ International
Manuale utente
Queste sono le icone utilizzate per mostrare il tipo di dispositivo I/O installato in un
alloggiamento (slot):
...................... apparecchiatura I/O complessa
...................... scheda reale I/O
...................... scheda virtuale I/O
Tutti i canali di una singola scheda hanno lo stesso tipo (booleano, intero/reale o
messaggio) e lo stesso verso (input o output). Non viene fatta distinzione tra
variabili reali ed intere per la connessione di I/O. Un’apparecchiatura complessa di
I/O rappresenta un dispositivo di I/O con canali di diverso tipo o verso. Essa è
rappresentata come una lista di singole schede di I/O ed usa un solo alloggiamento
della lista.
CJ International A-91
Manuale utente
Note tecniche
Il comando «Strumenti / Note tecniche» visualizza la guida utente on-line relativa
alla scheda o all’apparecchiatura complessa selezionata. Le note tecniche relative
alla scheda vengono stilate dal fornitore hardware della scheda I/O. In esse sono
contenute tutte le informazioni riguardanti la gestione della scheda I/O ed il
significato dei parametri.
Commenti
Nell’elenco delle schede viene visualizzato, assieme al nome, anche il testo di
commento ad una variabile di I/O dichiarata. Dal momento che ISaGRAF consente
anche l’utilizzo di variabili rappresentate direttamente (notazione %) i commenti
possono essere associati a canali liberi. Per inserire un commento al canale libero
attualmente evidenziato nella lista delle schede, usare il comando «Strumenti /
Commenti canale». Questo comando non può essere usato per modificare il
commento di una variabile di I/O dichiarata nel dizionario del progetto.
Per impostare il valore dei parametri di una scheda fare doppio click sul nome nella
lista di destra, oppure, evidenziarla e scegliere il comando «Imposta
canale/parametri» nel menù «Modifica». I parametri vengono elencati all’inizio
della lista. La seguente è l’icona che viene usata per rappresentare i parametri nella
lista.
.................... parametri della scheda
Il significato ed il formato di input dei parametri vengono definiti dal fornitore della
corrispondente scheda o apparecchiatura di I/O. Utilizzare il comando «Strumenti /
Note tecniche» oppure consultare il manuale hardware per maggiori informazioni
sui parametri della scheda.
Nota: Quando è selezionata una scheda nella lista di sinistra il comando «Imposta
canale/parametri» apre la finestra di impostazione dei parametri.
Quando è selezionato un canale nella lista di destra il comando «Imposta
canale/parametri» apre la finestra di impostazione del canale.
A-92 CJ International
Manuale utente
Una volta definita la scheda si devono connettere le variabili di I/O ai suoi canali.
La lista contiene tutte le variabili compatibili con il tipo ed il verso della scheda
evidenziata. L’elenco comprende solo variabili non ancora connesse. Premendo il
pulsante «Connetti» la variabile evidenziata nell’elenco verrà connessa al canale
scelto. Il tasto «Disconnetti» rimuove (disconnette) la variabile dal canale
selezionato. Per passare ad un altro canale si usano i pulsanti «Prossimo» e
«Precedente». La posizione del canale selezionato viene sempre mostrata nel
titolo della finestra di dialogo.
Commenti
Nell’elenco delle schede viene visualizzato, assieme al nome, anche il testo di
commento ad una variabile di I/O dichiarata. Dal momento che ISaGRAF consente
anche l’utilizzo di variabili rappresentate direttamente (notazione %) i commenti
possono essere associati a canali liberi. Per inserire un commento al canale libero
attualmente evidenziato nella lista delle schede, usare il comando «Strumenti /
CJ International A-93
Manuale utente
Commenti canale». Questo comando non può essere usato per modificare il
commento di una variabile I/O dichiarata nel dizionario del progetto.
I canali liberi sono quelli non collegati ad una variabile di I/O dichiarata. ISaGRAF
permette l’utilizzo nel codice sorgente dei programmi di variabili rappresentate
direttamente ad indicare canali liberi. L’identificatore di una variabile rappresentata
direttamente inizia sempre con il carattere «%».
A.11.5 Numerazione
A-94 CJ International
Manuale utente
Per default, la numerazione degli slot inizia con l’indice 0, la numerazione dei canali
inizia con l’indice 1.
Quando un canale I/O ha protezione individuale, una piccola icona viene mostrata
vicino al suo nome nella finestra delle connessioni I/O.
CJ International A-95
Manuale utente
A-96 CJ International
Manuale utente
Una volta definita, una tabella di conversione può essere usata per filtrare i valori di
qualsiasi variabile analogica di ingresso o di uscita del progetto selezionato. Per
associare una tabella di conversione ad una variabile, deve essere aperto l’editor di
dichiarazione delle variabili. Deve essere evidenziata una variabile analogica di
ingresso o uscita e deve essere aperta la finestra di modifica dei parametri. Una
variabile non può essere associata ad una tabella di conversione che non sia già
stata definita.
CJ International A-97
Manuale utente
I punti vengono inseriti usando i comandi della finestra. Per la definizione dei punti è
necessario rispettare le regole numeriche descritte alla fine di questo capitolo. La
casella di sinistra contiene sempre l’elenco dei punti già definiti per la tabella
selezionata. La colonna di sinistra mostra i valori elettrici (esterni) dei punti. La
colonna di destra mostra i valori fisici (interni). Per modificare il valore di un punto o
per eliminarlo dalla lista è necessario selezionarlo. L’ultima riga dell’elenco («...
...») viene usata per definire un nuovo punto. La casella in basso a destra visualizza
la rappresentazione grafica della tabella corrente. Non sono visibili né assi, né
coordinate dato che si tratta di una rappresentazione proporzionale della curva. E’
utile per controllare velocemente la corretta definizione della curva.
Modifica di un punto
Per modificare i valori di un punto esistente, innanzitutto evidenziarlo nella lista.
Possono essere inseriti i nuovi valori: elettrico (esterno) e fisico (interno) del punto. I
A-98 CJ International
Manuale utente
valori vengono archiviati come numeri in virgola mobile a precisione singola. Una
volta inseriti entrambi i valori si aggiorna la tavola con il pulsante «Memorizza».
Cancellazione di un punto
Un punto esistente viene eliminato evidenziandolo sull’elenco e premendo il tasto
«Elimina». E’ importante ricordare che il numero di punti definiti nella tabella non
deve mai essere inferiore a due.
Nel definire una tavola di conversione per un progetto è necessario rispettare anche
i seguenti limiti:
• Per ogni singolo progetto non si possono definire più di 127 tabelle di conversione
• Per ogni singola tabella non possono essere definiti più di 32 punti.
CJ International A-99
Manuale utente
Il menù «File» contiene i comandi per la verifica della sintassi del programma e la
generazione del codice.
Ricompilazione completa
Il comando «File / Tocca» simula la modifica di tutti i programmi del progetto, in
modo da forzarne la verifica alla successiva operazione «Compila». Il comando
A-100 CJ International
Manuale utente
«File / Apri» apre l’ultimo programma su cui è stata effettuata la verifica. Questo
comando si rivela molto utile per accedere direttamente ad un programma in cui
siano stati rilevati degli errori di sintassi. Un doppio click sul messaggio di errore
apre il programma e posiziona il cursore alla riga dell’errore.
CJ International A-101
Manuale utente
ISA68M: ............. Questo codice TIC (Codice Target Indipendente) è per i kernel
ISaGRAF installati su processori Motorola. Il tipo di processore
influisce sull’ordine di disposizione dei byte nel codice generato.
CC86M:.............. Con questo target il compilatore produce codice sorgente «C»
che può essere compilato e collegato alle librerie del kernel del
target ISaGRAF da incorporare nell’eseguibile
Elaborazione SFC
Selezionando l’opzione «Usa motore SFC incluso» nella finestra Opzioni
compilatore si abilita l’uso del motore SFC di ISaGRAF. Questa modalità è da
preferirsi, in quanto offre le migliori prestazioni in esecuzione. Tuttavia, il motore
potrebbe risultare mancante in alcune particolari implementazioni del target
ISaGRAF o, più comunemente, su target personalizzati basati su elaborazioni
successive del codice ISaGRAF. In questo caso è necessario disabilitare questa
opzione per permettere al compilatore ISaGRAF di tradurre i diagrammi SFC in
istruzioni di basso livello. Consultare la documentazione hardware per ulteriori
informazioni sull’uso di questa opzione.
Opzioni dell’ottimizzatore
Quelli che seguono sono i parametri, impostabili dalla finestra Opzioni compilatore,
usati dal Generatore di codice ISaGRAF per ottimizzare il codice target. Il pulsante
«Predefinito» disabilita tutte le ottimizzazioni per ridurre il tempo di compilazione.
A-102 CJ International
Manuale utente
CC86M (C source code - V3.04) produce sorgente codice "C" non strutturato.
Questa opzione deve essere selezionata se il software per il target è basato su una
versione ISaGRAF precedente alla 3.23.
SCC (structured C source code) produce sorgente codice "C" strutturato. Questa
opzione è da preferire se il software per il target è basato su una versione ISaGRAF
3.23 o successiva.
CJ International A-103
Manuale utente
Nel caso di generazione di codice sorgente "C" strutturato, per ogni programma
dell’applicazione vengono creati un file sorgente ".C" e un file di definizioni ".H",
oltre ai file comuni "APPLI.C" e "APPLI.H".
Questi file devono essere compilati e collegati alle librerie target ISaGRAF per poter
produrre il codice eseguibile finale. Consultare la Guida Utente al sistema di
sviluppo I/O ISaGRAF per ulteriori informazioni sulle tecniche di implementazione
consigliate.
Comandi di editing
Il comando «Modifica / Cancella» serve a ripulire l’area di testo della finestra. La
finestra viene ripulita automaticamente prima di ogni operazione di generazione di
codice o controllo sintattico. Il comando « Modifica / Copia» permette di copiare il
testo visualizzato negli appunti di Windows, così da poter essere usato da altre
applicazioni come gli editor di testo ISaGRAF.
Altre voci del menù «Modifica» permettono di vedere i file di testo ausiliari prodotti
durante la verifica sintattica e la generazione di codice. Questi file non vengono
generalmente usati nel caso di un progetto comune ISaGRAF.
La voce «Risorse» del menù «Opzioni» permette di definire le risorse. Per risorsa
si intende qualsiasi dato prodotto dall’utente (configurazioni di rete, impostazioni
hardware…) in qualsiasi formato (file, elenco di valori) che debba essere unito al
codice generato per poter essere trasferito al PLC target. Questi dati non vengono
elaborati direttamente dal kernel ISaGRAF e sono comunemente rivolti ad altro
software installato sul PLC target. Consultare il manuale hardware per ulteriori
informazioni sulle risorse disponibili.
A-104 CJ International
Manuale utente
Riferimenti al linguaggio
Quello che segue è un elenco di parole chiave ed istruzioni usate in un file di
definizione delle risorse.
ULONGDATA
VARLIST
CJ International A-105
Manuale utente
BINARYFILE
Significato: Indica una risorsa costituita da un File Binario. I dati sorgente sono
memorizzati in un file MS-DOS. La definizione delle risorse del target
viene completata dal percorso del target. I caratteri end of line non
vengono convertiti dal Compilatore di Risorse ISaGRAF. Il nome della
risorsa non deve eccedere i 15 caratteri.
TEXTFILE
Significato: Indica una risorsa costituita da un File Testo. I dati sorgente sono
memorizzati in un file ASCII. La definizione delle risorse del target
viene completata dal percorso del target. I caratteri end of line
vengono convertiti dal Compilatore di Risorse ISaGRAF secondo le
convenzioni del sistema host. Il nome della risorsa non deve
eccedere i 15 caratteri.
A-106 CJ International
Manuale utente
TARGET
Significato: Indica il nome del codice target in cui deve essere inclusa la risorsa.
Consultare la precedente sezione (Opzioni del compilatore) per
ulteriori informazioni sui target possibili. L’istruzione «Target» può
essere presente più volte all’interno dello stesso blocco di risorsa, per
permettere più target. Non è possibile usare questa direttiva se è
stato specificata la direttiva «AnyTarget» .
ANYTARGET
Significato: Indica che la risorsa deve essere aggiunta al codice di tutti i target
prodotti dal Generatore di Codice. Il Generatore di Codice ISaGRAF
può produrre molteplici codici target con un unico comando
«Compila». Non è possibile usare questa direttiva se sono state
inserite una o più direttive «Target».
Sintassi: ANYTARGET
FROM
TO
CJ International A-107
Manuale utente
Esempio
Quello che segue è un esempio completo di un file di definizione delle risorse:
Implementazione
A-108 CJ International
Manuale utente
Il numero di risorse, la dimensione delle righe dati ed i file non sono limitati da
ISaGRAF. Le risorse vengono aggiunte alla fine del codice generato con una
cartella di risorse. Quello che segue è il formato (in notazione «C») della cartella
delle risorse.
__RESOURCE:
{
long nbres; /* numero di risorse definite */
{
char name[16]; /* nome risorsa */
long type; /* tipo di dati delle risorsa */
long size; /* dimensione del blocco dati */
void *data;
char *path_offset; /* puntatore ad una stringa */
} /*nb di records */
}
Per i file di testo, i caratteri di fine riga vengono tradotti dal compilatore di risorse,
secondo le convenzioni del sistema target. Tutti i puntatori hanno offset a 32 bit a
partire dall’indirizzo della corrispondente struttura. Tutti i nomi e percorsi delle
risorse sono stringhe terminate da NULL. Percorsi e dati seguono la cartella delle
risorse.
CJ International A-109
Manuale utente
A-110 CJ International
Manuale utente
Statistiche
Il comando «Strumenti / Statistiche» visualizza in una finestra di dialogo il numero
di oggetti e variabili dichiarate nel progetto, in base al tipo di variabile ed agli
attributi. In particolare questo comando permette di conoscere il numero di variabili
di I/O dichiarate nel progetto, informazione utile per consentire la compilazione nel
caso si stia usando una versione limitata dell’ambiente di lavoro ISaGRAF.
Aprire un programma
L’elenco sulla destra contiene le ricorrenze dell’oggetto selezionato nei file sorgenti
e nelle connessioni di I/O del progetto aperto. Il comando «Modifica / Apri
programma» consente di aprire direttamente il programma in cui compare la
ricorrenza selezionata dell’oggetto. E’ anche possibile aprire il corrispondente
programma con un doppio click sulla ricorrenza (nell’elenco di sinistra delle
ricorrenze).
CJ International A-111
Manuale utente
Il pannello di controllo (l’area posta sotto al menù del debugger) mostra lo stato
globale dell’applicazione destinazione ed informazioni relative al tempo ciclo di
esecuzione. Quello seguente è l’elenco dei possibili stati che può assumere il
target:
Collegamento…: ............Il debugger stabilisce una comunicazione con il sistema
target.
Disconnesso:.................Il debugger non riesce a comunicare con il sistema target.
Controllare la validità dei cavi di connessione e dei
parametri di comunicazione.
Nessuna applicazione: ..La connessione funziona, ma non sono attualmente
presenti applicazioni ISaGRAF sul sistema target.
Scaricare un’applicazione.
A-112 CJ International
Manuale utente
Nota: Alcuni di questi comandi non sono disponibili in fase di simulazione, poiché
l’applicazione processata dal simulatore viene gestita automaticamente
dall’ambiente ISaGRAF.
Nota: l’applicazione target deve essere fermata (resa inattiva) prima di poter scaricare
una nuova applicazione.
Trasferire l’applicazione
Il comando «File / Scarica applicazione» permette di trasferire il codice
dell’applicazione al sistema target. Selezionare il tipo di codice da scaricare in base
al processore del sistema target ed alle opzioni dell’applicazione.
CJ International A-113
Manuale utente
Numero di versione
Il comando «File / Numero di versione» permette di vedere l’identificazione
completa sia dell’ambiente di lavoro che delle applicazioni target. L’applicazione di
lavoro è quella correntemente aperta nell’ambiente di lavoro ISaGRAF.
L’applicazione target è quella che viene eseguita sul PLC target ISaGRAF.
Vengono visualizzate le seguenti voci:
Modifica on line
Il comando «File / Aggiornamento applicazione» permette di modificare «on line»
l’applicazione target in esecuzione. Questo comando viene trattato in dettaglio nelle
sezioni successive di questo capitolo. Non è disponibile quando il debugger viene
usato in modo simulazione.
Esegui un ciclo
Quando l target si trova in modalità ciclo a ciclo, il comando «Controlli / Esegui un
ciclo» avvia l’esecuzione di un ciclo.
Tempo di ciclo
Il comando «Controlli / Cambia il tempo di ciclo» permette di modificare il tempo
ciclo programmato. Questo tempo viene visualizzato come «Permesso» nella barra
di controllo della finestra del debugger. Il tempo ciclo può essere modificato solo in
modalità «Ciclo per ciclo». Il tempo ciclo viene inserito in milli-secondi come
numero intero.
A-114 CJ International
Manuale utente
A.15.3 Opzioni
Parametri di comunicazione
I parametri di temporizzazione di comunicazione possono essere modificati quando
il debugger è attivo. Da qui possono essere impostati solo il Time out di
comunicazione e il Tempo di rinfresco. Gli altri parametri di comunicazione
(baudrate, frequenza, parità…) devono essere impostati dal menù «Debug» della
finestra Programmi.
Per Time out di comunicazione si intende il tempo lasciato al sistema
destinazione per rispondere ad una richiesta dell’ambiente di lavoro. Il Tempo di
rinfresco è il periodo di tempo utilizzato per l’INVIO delle richieste «di lettura» da
parte del debugger per l’aggiornamento dei dati nelle finestre aperte.
Tutti i valori temporali vengono visualizzati ed inseriti come numeri interi in milli-
secondi. Non è possibile impostare i parametri temporali di comunicazione con il
debugger in modalità simulazione.
Opzioni di visualizzazione
L’opzione «Visualizza tempi di ciclo» nasconde o mostra i valori del tempo ciclo
nella barra di controllo del debugger. Quando questa opzione è abilitata, tutti i
componenti del tempo ciclo (permesso, corrente, massimo, overflow) vengono
visualizzati ed aggiornati. Disabilitando questa opzione si riduce il carico di
comunicazione del debugger.
CJ International A-115
Manuale utente
Variabili
Lo stato di una variabile viene modificato con un doppio click sul nome, in una delle
seguenti finestre:
• Dizionario
• Elenchi di variabili o diagrammi temporali
• Programmi LD o FBD
• Connessioni I/O
I valori simbolici usati per rappresentare i valori booleani «FALSE» e «TRUE» sono
le stringhe definite per la specifica variabile nel dizionario (riquadro Valori della
finestra Variabile booleana). Il valore analogico specificato per un comando
«Scrivi» deve essere inserito in formato intero o reale, in base alla definizione della
variabile data nel dizionario. La stringa specificata per un comando «Scrivi» per un
messaggio non può essere più lunga della capacità del messaggio associato alla
variabile nel dizionario.
Oggetti SFC
I comandi del menù «File» della finestra Programmi aperta in modalità di debug,
permettono di controllare i programmi SFC in fase di debug dell’applicazione. Il
programma SFC deve essere evidenziato dall’elenco dei programmi. Sono
disponibili i seguenti programmi:
A-116 CJ International
Manuale utente
Sospendi programma SFC: ... Rimuove tutti i token esistenti del programma
evidenziato e ne memorizza la posizione.
Riavvia programma SFC: ....... Riavvia un programma sospeso posizionando
nuovamente i token che erano stati rimossi dal
comando «Sospendi».
Per quanto riguarda i programmi figli, questi comandi corrispondono alle funzioni
GSTART», «GKILL», «GFREEZE» e «GRST» del linguaggio di programmazione.
Nel caso di una transizione sono possibili due tipi di attivazione: Incondizionata e
Condizionata. Con l’Attivazione condizionata: viene creato un token nei passi
successivi alla transizione. Vengono rimossi i token dei passi precedenti. Con
l’Attivazione incondizionata: viene creato un token nei passi successivi la
transizione. I token presenti nei passi precedenti non vengono rimossi.
CJ International A-117
Manuale utente
Sequenze di codice
Poiché ISaGRAF offre molte possibilità di accedere dal debugger a variabili,
programmi o schede di I/O, le funzioni di modifica «on line» esaminate qui, si
riferiscono solamente alle modifiche di sequenze di codice. Una sequenza di codice
è costituita da un insieme completo di istruzioni ST, IL, LD o FBD eseguite in una
riga. In un programma della sezione Iniziale o della sezione Finale, una sequenza di
codice è costituita dall’intero elenco di istruzioni del programma. In un programma
SFC (sezione sequenziale) una sequenza di codice corrisponde alla
programmazione di secondo livello di un passo o di una transizione. La modifica
«on line» consiste nel sostituire una o più sequenze di codice senza che venga
fermata l’esecuzione del ciclo PLC. Poiché il controllo dei token SFC è assai critico,
non è possibile modificare una struttura SFC con l’aggiunta, la rinumerazione
o la rimozione di passi, transizioni o programmi SFC.
Variabili
Il database delle variabili è un componente molto importante dell’applicazione, altre
applicazioni possono accedervi in qualsiasi momento (su PLC multi-processo). Dal
debugger è anche possibile apportare modifiche ai valori delle variabili. Per questa
ragione, ISaGRAF non permette, on line, di aggiungere, rinominare o
rimuovere una variabile. È, tuttavia, possibile modificare il modo in cui una
variabile viene usata dall’applicazione. È anche possibile, nella prima versione
dell’applicazione, riservare delle variabili interne o di I/O «non utilizzate», in modo
che modifiche successive possano farne uso.
Esistono diverse tipologie di variabili nel data base del target ISaGRAF. Limitazioni
agiscono su ciascuna di esse:
- Varibili dichiarate
Ogni istanza di blocco funzione scritto in linguaggio «C» o in IEC corrisponde a dati
memorizzati nel data base di esecuzione del target ISaGRAF. Quando vengono
aggiunte o sottratte istanze di blocchi funzione, non è più possibile il cambiamento
«on line». E’ consigliabile lavorare in linguaggio ST con istanze BF dichiarate nel
dizionario, piuttosto di aggiungere blocchi (che corrisponderanno a nuove istanze
automaticamente dichiarate) in linguaggio Quick LD o con diagrammi FBD. Inoltre,
ogni modifica nella definizione di blocchi funzione disponibili nella libreria di
ISaGRAF renderà impossibile il cambiamento «on line».
- Passi
Ad ogni passo SFC corrisponde una parte del data base dove sono memorizzati gli
attributi dinamici dei passi SFC (attività, tempo, e flag). Aggiungere o rimuovere
A-118 CJ International
Manuale utente
passi SFC cambia il data base dell’applicazione e non sono permessi cambiamenti
«on line».
[DEBUG]
MNTVboo=8 ; per booleani
MNTVana=4 ; per interi e reali
MNTVtmr=4 ; per timer
MNTVmsg=2 ; per messaggi
Input e output
Poiché il sistema I/O di ISaGRAF è molto aperto, eventuali modifiche richieste
devono essere implementate dall’OEM, usando le caratteristiche specifiche del
corrispondente hardware. Il sistema ISaGRAF non permette, «on line», di
aggiungere, collegare o rimuovere variabili I/O o di modificare la descrizione
di una scheda I/O. Operazioni come la modifica dei parametri delle schede ed il
blocco di canali I/O, sono disponibili con le caratteristiche standard OEM e la
funzione «OPERATE».
Operazioni in esecuzione
La modifica di un’applicazione in esecuzione avviene con le seguenti operazioni:
• modificare il codice sorgente dell’applicazione nell’ambiente di lavoro
• generare il nuovo codice dell’applicazione
• trasferire il codice della nuova applicazione usando il comando «Aggiornamento
applicazione» invece di «Scarica applicazione»
• passare dalla precedente alla nuova applicazione durante i cicli di esecuzione
PLC usando il comando «Attiva aggiornamento».
CJ International A-119
Manuale utente
Requisiti di memoria
Per supportare la modifica «on line», il PLC destinazione deve avere abbastanza
spazio libero in memoria per contenere la versione modificata del codice
dell’applicazione. Durante lo scambio, entrambe le versioni del codice
dell’applicazione devono essere contenute nella memoria del PLC.
Limitazioni
Come precedentemente descritto, sono possibili modifiche solamente a sequenze
codice. Non possono essere modificate definizioni di variabili, parametri
dell’applicazione e connessioni di I/O. Durante il trasferimento di una versione
modificata dell’applicazione, ISaGRAF esegue un confronto tra l’applicazione
modificata e quella in esecuzione, al fine di rilevare i cambiamenti non sicuri. Nel
caso lo scambio si riveli pericoloso o impossibile, viene generato un errore di
trasferimento. Una delle operazioni svolte da ISaGRAF consiste nel confrontare il
checksum della tavola dei simboli, per rilevare la modifica del nome di qualsiasi
variabile, programma o elemento SFC. Le azioni non-memorizzate (N) di un passo
attivo al momento dello scambio vengono perdute. Non vengono eseguite le azioni
di attivazione del nuovo passo. Le azioni eseguite alla disattivazione del passo sono
quelle portate con il nuovo codice dell’applicazione. Se durante lo scambio una
transizione è valida, viene aggiornata la condizione ad essa associata. Non viene
eseguito il salvataggio di sicurezza sul PLC della nuova applicazione scaricata. Il
salvataggio è costituito dalla versione precedentemente scaricata con i comandi
standard di trasferimento.
Operazioni
L’aggiornamento del codice di un’applicazione in esecuzione avviene con le
seguenti operazioni:
• Prima di apportare qualsiasi modifica ad un’applicazione in esecuzione, si
raccomanda vivamente di fare una copia del progetto corrente con un nome
diverso. Le modifiche possono essere effettuate sulle copie.
• Prima di modificare qualsiasi programma, assicurarsi che l’opzione «Aggiorna
diario» del programma di editing sia abilitata, per facilitare la manutenzione del
programma in futuro.
• Una volta modificata una o più sequenze (senza che siano state modificate le
strutture SFC e la gerarchia dei programmi), è necessario generare nell’ambiente di
lavoro il codice della nuova applicazione prima del trasferimento.
• Usando il debugger, con il vecchio progetto, connettersi al PLC destinazione ed
eseguire tutte le operazioni che possano rendere più veloce o sicuro
l’aggiornamento dell’applicazione.
• Usando il debugger, con il nuovo progetto, connettersi al PLC destinazione. Se è
stato cambiato il nome dell’applicazione, non è possibile accedere al data base del
target. È necessario usare il comando «File / Aggiornamento applicazione».
• Il trasferimento dell’applicazione modificata avviene selezionando l’opzione
«Aggiornamento Successivo» . Questo può rallentare leggermente il PLC nella
fase di trasferimento.
A-120 CJ International
Manuale utente
nome_variabile(nome_programma)
CJ International A-121
Manuale utente
L’editor delle liste non è in grado di visualizzare più di una lista di variabili nella
stessa finestra. Avviare più volte l’editor delle liste per vedere contemporaneamente
diverse liste.
A-122 CJ International
Manuale utente
Il modo «Visualizza dettagli» è molto utile per spiare e interpretare messaggi stringa
che contengono caratteri non stampabili.
CJ International A-123
Manuale utente
ST Per i programmi ST, nella parte inferiore della finestra dell’editor, viene
inserita una lista delle variabili spiate. Si può ridimensionare tale lista
trascinando con il mouse la linea di separazione.
Per ogni variabile della lista, ISaGRAF mostra il suo nome, il suo valore corrente ed
il testo di commento. Le colonne possono essere ridimensionate trascinando le
linee di separazione con il mouse nella barra titolo della lista.
A-124 CJ International
Manuale utente
Figure di sfondo
Le figure di sfondo sono file «bitmap» (.BMP) o «metafile» (.WMF). Il numero di
figure incluse nel grafico non è limitato. Le figure possono essere spostate o
ridimensionate. Le figure non compaiono nella lista degli elementi grafici animati. Le
figure devono essere generate con altri strumenti grafici non inclusi in ISaGRAF. Il
comando «Opzioni / Colore sfondo» della finestra Rappresentazioni grafiche è
utilizzato per selezionare un colore uniforme per gli spazi vuoti tra gli elementi
grafici.
Testo singolo
L’elemento grafico «Testo singolo» è un campo testo inscritto in un rettangolo. Il
testo mostrato è il valore della variabile associata. In tal modo questo elemento può
essere collegato a variabili di tipo messaggio.
Il rettangolo dove il testo è visualizzato può essere riempito con un colore oppure
può essere lasciato trasparente. Quando tale oggetto grafico viene ridimensionato,
la dimensione del front di caratteri utilizzato viene aggiustata in modo da riempire
l’altezza del rettangolo.
CJ International A-125
Manuale utente
Le barre grafiche unipolari possono crescere in ogni direzione: verso l’alto, verso il
basso, verso sinistra o verso destra.
Le barre grafiche bipolari possono crescere sia in direzione positiva, che negativa,
in accordo con il valore della variabile associata. Nel caso di una barra bipolare, il
massimo valore permesso è lo stesso sia per la scala positiva che per quella
negativa.
Curve
L’elemento grafico «Curva» mostra l’andamento nel tempo della variabile
associata. Sebbene non sia uno strumento di misura preciso, può fornire utili
informazioni, durante la fase di debug, in merito al sincronismo tra variabili.
Una curva memorizza gli ultimi 200 valori di una variabile. Il numero dei campioni
non viene modificato quando si cambiano le dimensioni di tale oggetto grafico.
Icone booleane
L’elemento grafico «Icona booleana» viene utilizzata per visualizzare uno stato
binario. Per lo stato logico «FALSE» (falso) è definito un file icona (.ICO), come
pure per lo stato logico «TRUE» (vero). L’ambiente ISaGRAF non include nessun
editor di icone, i file icona devono essere generati con altri strumenti grafici.
A-126 CJ International
Manuale utente
Campi di bit
L’elemento grafico «Campo bit» mostra 32 bit di un valore intero organizzati in un
pannello grafico. Il bit meno significativo viene sempre visualizzato sulla destra.
Non è raccomandabile utilizzare il Campo bit per altri tipi di dati come ad esempio i
reali analogici, poiché l’informazione visualizzata può portare a confusione.
CJ International A-127
Manuale utente
Si possono raggruppare assieme gli oggetti grafici, di modo che siano manipolabili
come un singolo oggetto. Per costruire un gruppo, bisogna selezionare gli oggetti
grafici e quindi eseguire il comando «Modifica / Raggruppa». Il comando
«Modifica / Separa» è utilizzato per separare un gruppo di oggetti in singoli oggetti.
Un gruppo può contenere una figura. Un gruppo può contenere un altro gruppo.
Quando gli oggetti vengono raggruppati, il loro stile non può essere più cambiato.
Gli oggetti di un gruppo sono singolarmente visibili, ma non permettono di
modificare le variabili associate (con un doppio click).
Nella visualizzazione degli oggetti grafici in formato lista, un gruppo occupa una
sola linea.
In ogni momento, l’utente può decidere di visualizzare gli elementi come una
«Disposizione grafica» o come una «Lista di oggetti grafici», è possibile commutare
tra questi due modi di visualizzazione premendo il pulsante della barra strumenti a
fianco riportato. Oppure si può utilizzare il comando «Opzioni / Lista /
Disposizione» dalla finestra Rappresentazioni grafiche.
Nel modo di visualizzazione come lista, gli oggetti grafici vengono mostrati come
una classica lista di finestre. L’altezza riservata a ciascun elemento è calcolata in
accordo con il suo stile grafico. Le figure (bitmap e metafile) non sono visibili dalla
visualizzazione in formato lista. In tale modalità non è permessa la selezione
multipla di oggetti, viene invece permessa la selezione di un singolo oggetto, da
utilizzare per impostare lo stile dell’elemento e per cambiare il valore di una
variabile.
A-128 CJ International
Manuale utente
«FALSE». Si utilizzano i pulsanti «…» a destra delle caselle Se vero, Se falso per
scegliere i file icona presenti su disco.
Fondoscala:
Questo è il massimo valore che può essere visualizzato nelle barre grafiche e nelle
curve. Per le barre grafiche bipolari e per le curve bipolari, viene utilizzato lo stesso
valore assoluto sia per l’asse positivo che per quello negativo.
Legenda:
Un testo Legenda può essere mostrato vicino all’elemento grafico. Si può
personalizzare la posizione di tale legenda (sopra, sotto, sinistra, destra) ed il suo
contenuto. Come legenda si può scegliere: il nome di una variabile, il valore di una
variabile, entrambi nome e valore. La personalizzazione non ha effetto nella
visualizzazione degli oggetti grafici in formato lista.
Variabile di comando:
Se viene selezionata l’opzione "Variabile di comando», l’utente può modificare il
valore della variabile associata all’elemento grafico durante il debug, facendo
doppio click sul simbolo dell’oggetto grafico.
I comandi del menù «File» permettono la gestione del file della rappresentazione
grafica.
Il comando «Nuovo» del menù «File» serve per iniziare una nuova
rappresentazione grafica. ISaGRAF non limita in alcun modo il numero di
rappresentazioni grafiche definibili per un progetto. Una eventuale rappresentazione
grafica aperta precedentemente viene chiusa prima dell’editazione di una nuova.
La finestra di editing della rappresentazione grafica ISaGRAF non permette la
modifica contemporanea di più grafici. Tuttavia, è possibile aprire più finestre di
editing ISaGRAF simultaneamente, ciascuna con una rappresentazione grafica
diversa.
CJ International A-129
Manuale utente
A-130 CJ International
Manuale utente
Errori possibili
I seguenti errori possono essere riscontrati nel caricamento di un progetto. Si viene
informati degli errori dalla finestra Caricamento progetto dal Target.
CJ International A-131
Manuale utente
File opzionali
Oltre ai file sorgente strettamente necessari, possono anche essere inclusi i
seguenti file. Nel caso questi vengano selezionati è necessaria la disponibilità di
memoria extra sul target.
A-132 CJ International
Manuale utente
Il codice sorgente zippato (EZS, Embedded zipped source) richiede della memoria
extra per essere memorizzato con il codice dell’applicazione nel target. Una stima
generale prevede per il codice EZS (senza selezionare opzioni extra) uno spazio
pari ad una volta e mezzo la dimensione del codice eseguibile. Questo significa che
includere il codice EZS moltiplicherà per 2.5 la dimensione del codice scaricato sul
target.
Il progetto caricato dal target nell’ambiente di lavoro ISaGRAF contiene tutti i file e i
dati richiesti per la ricompilazione. Inoltre, a seconda delle opzioni selezionate
durante la compilazione precedente, può contenere file ausiliari come la descrizione
del progetto e i file diario del progetto.
CJ International A-133
Manuale utente
Nota importante: Le librerie non vengono caricate dal target con il codice sorgente.
Bisogna assicurarsi che le appropriate librerie di funzioni e blocchi funzione siano
istallate nell’ambiente di lavoro ISaGRAF prima di ricompilare l’applicazione
caricata dal target.
A-134 CJ International
Manuale utente
La lista dei progetti esistenti viene mostrata in una finestra di dialogo. Permette
all’utente di lanciare una versione limitata del Debugger ISaGRAF per una
applicazione ISaGRAF esistente e scaricata sul target. Premendo il pulsante «OK»
viene lanciata la versione limitata del Debugger per il progetto selezionato.
Premendo il pulsante «Cancel» viene chiusa la finestra di dialogo. Il pulsante
«Setup» è utilizzato per impostare i parametri di comunicazione per il collegamento
tra l’ambiente di lavoro ISaGRAF e il PLC target. Per ulteriori informazioni su
questo comando fare riferimento al capitolo «Gestione dei programmi» di questo
manuale.
Nota: Lo strumento Diagnosis (versione limitata del Debugger) non può essere utilizzato
per scaricare, per aggiornare o per fermare un’applicazione funzionante sul PLC
target.
Se il progetto selezionato nella finestra di dialogo non è lo stesso di quello istallato
sul PLC target, non può essere eseguita nessuna operazione.
CJ International A-135
Manuale utente
Le schede di I/O appaiono nella finestra del simulatore indicate con nome e numero
di alloggiamento. Può essere gestito qualsiasi tipo di I/O (booleano, analogico o di
messaggio). I canali delle schede di ingresso vengono visualizzati con tasti e campi
speciali. I canali delle schede di uscita sono visualizzati con LED grafici di stato e
campi dati.
A-136 CJ International
Manuale utente
analogici possono essere inseriti sia in base decimale che esadecimale. Per
aumentare o ridurre il valore corrente si possono usare le frecce su/giù.
Funzioni di conversione:
bcd, scale
Funzioni:
abs, acos, ArCreate, ArRead, ArWrite, ascii, asin, atan, char, cos, delete, expt, find,
insert, left, limit, log, max, mid, min, mlen, mod, mux4, mux8, odd, rand, replace,
right, rol, ror, sel, shl, shr, sin, sqrt, tan, trunc
Blocchi funzione:
average, blink, cmp, ctd, ctu, ctud, derivate, f_trig, hyster, integral, lim_alrm, r_trig,
rs, sema, sr, stackint, tof, ton, tp
CJ International A-137
Manuale utente
A.21.4 Opzioni
Carica stato ingressi: imposta i valori dei canali di ingresso con i valori
memorizzati in un file che è stato creato su disco usando il comando «Salva stato
ingressi».
Salva stato ingressi: salva lo stato dei canali di ingresso in un file di modo che sia
possibile ripristinarli successivamente utilizzando il comando «Carica stato
ingressi». Il file è memorizzato nella cartella del progetto e viene salvato assieme
agli altri file dal processo di archiviazione di ISaGRAF.
Nota: Solo i canali di ingresso con un nome (quelli che hanno una variabile
connessa) sono salvati sul disco.
Il profiler dei tempi di ciclo viene eseguito con il comando «Strumenti / Profiler
tempi di ciclo» della finestra del simulatore ISaGRAF. Per ogni programma,
funzione o blocco funzione, viene mostrata la percentuale di tempo di ciclo spesa
per eseguirlo:
A-138 CJ International
Manuale utente
Quando viene impostata l’opzione «Visualizza / Media» dalla finestra Profiler tempi
di ciclo, le informazioni visualizzate rappresentano una media delle percentuali
calcolate dopo che l’applicazione è stata avviata, oppure dall’ultima volta che è
stato dato il comando «Visualizza / Reset».
Il valore mostrato per una funzione o un blocco funzione è la somma di tutti i «tempi
di chiamata» prodotti dai programmi dell’applicazione nello stesso ciclo.
Il calcolo dei tempi è basato sul codice TIC e non fornisce informazioni affidabili se
l’attuale codice dell’applicazione è generato nel linguaggio «C» e compilato usando
un compilatore «C».
Il simulatore ISaGRAF include uno strumento per costruire ed eseguire degli Script
di simulazione. Uno Script è descritto con un semplice linguaggio simile al
linguaggio ST, ed è utilizzato per automatizzare i test con il simulatore ISaGRAF.
L’editor degli script di simulazione viene eseguito con il comando «Strumenti /
Script di simulazione» dalla finestra del simulatore. Di seguito è riportata la
finestra dell’editor di script:
CJ International A-139
Manuale utente
Per ogni script vengono creati due file nella cartella del progetto ISaGRAF:
dove <nomescript> è il nome dello script. Entrambi i file sono file di testo standard e
possono essere aperti utilizzando un qualsiasi editor di testi.
Mentre si edita uno script, si può utilizzare il comando «Modifica /
Inserisci simbolo» per selezionare il nome di una variabile dichiarata da inserire
nella posizione corrente.
A-140 CJ International
Manuale utente
Nel caso di un nuovo script senza titolo, questo deve essere salvato (deve essere
immesso un nome) prima di verificarne la sintassi. Nel caso lo script abbia già un
nome, viene automaticamente salvato su disco prima di verificarne la sintassi.
Quando uno script viene eseguito, il suo contenuto non può essere cambiato.
Quando è raggiunta la fine dello script, viene mostrato un messaggio di avviso. E’
anche possibile abbandonare l’esecuzione di uno script usando il seguente
comando del menù «Script»:
Termina Script .........termina l’esecuzione dello script
L’esecuzione dello script avviene durante i cicli target. Nel caso di un loop infinito
programmato nel ciclo, il simulatore ISaGRAF assicura che questo loop sia sempre
interrotto in modo che i cicli ISaGRAF sono sempre eseguiti e le altre applicazioni
ISaGRAF non sono bloccate. L’interprete ISaGRAF degli script decide di
interrompere l’esecuzione di uno script, se la stessa etichetta viene incontrata più di
una volta nello stesso ciclo del target. L’esecuzione dello script può essere
normalmente interrotta dalle istruzioni del linguaggio script «Cycle» o «Wait».
Altre istruzioni sono utilizzate per sincronizzare lo script con il ciclo ISaGRAF:
CJ International A-141
Manuale utente
Altre istruzioni sono utilizzate per controllare il flusso di esecuzione dello script:
Significato: Forza il valore di una variabile ISaGRAF, che può essere una
variabile interna, un canale di ingresso o un canale di uscita.
Note: Una variabile di ingresso forzata con uno script non necessita di
essere bloccata. Quando una variabile di ingresso è forzata da uno
script, viene aggiornata la rappresentazione dell’ingresso
corrispondente.
Attenzione: non forzare le variabili analogiche di ingresso o di uscita
collegate ad una tabella di conversione, poiché l’esecuzione di script
non supporta le funzioni o le tabelle di conversione.
Istruzione di stampa
Significato: Scrive una stringa o il valore di una variabile nella finestra di uscita. Il
testo è riportato su una nuova riga alla fine del testo precedentemente
scritto nella finestra di uscita.
A-142 CJ International
Manuale utente
Print <nomevar>
Argomenti: <testo> è una qualsiasi stringa di testo racchiusa tra singoli apici
<nomevar> è un simbolo valido di una variabile dichiarata
nell’applicazione, o una variabile di I/O direttamente rappresentata
utilizzando le convenzioni di scrittura «%».
Note: I valori delle variabili riportati in uscita sono formattati in accordo con
le convenzioni IEC.
Uscita: Ciao
MyBoovar = TRUE
Sintassi: PrintTime
Sintassi: Cycle
CJ International A-143
Manuale utente
A := 1
Print B (* non viene eseguito il ciclo / B non è impostato a 1 *)
Cycle
Print B
Uscita: B=0
B=0
B=1
Istruzione di attesa
Esempio: PrintTime
Wait 2s
PrintTime
Uscita: 15:45:27
15:45:29
Etichette
Sintassi: <nomeetichetta>:
A-144 CJ International
Manuale utente
Note: Nessuna istruzione deve essere posta sulla linea dove è definita una
etichetta.
Il nome di un etichetta non deve essere lo stesso di un simbolo di
variabile ISaGRAF già dichiarata.
Istruzione di salto
CJ International A-145
Manuale utente
Sintassi: End
A-146 CJ International
Manuale utente
Per creare nuovi elementi o lavorare su quelli già esistenti di una libreria aperta si
usano i comandi del menù «File».
CJ International A-147
Manuale utente
A-148 CJ International
Manuale utente
Note tecniche
Il comando «Modifica / Note tecniche» permette di inserire delle note tecniche per
l’elemento selezionato nella libreria attiva. Le note tecniche sono inserite con l’editor
di testo ISaGRAF e rappresentano la Guida utente dell’elemento. Verranno
consultate nella fase di integrazione in un progetto ISaGRAF. Le note tecniche
relative all’uso di un elemento dovrebbero contenere la descrizione delle funzioni
principali e la spiegazione dettagliata della programmazione, dei parametri, del
contesto e dei limiti.
Il comando «Strumenti / Formato standard note» permette di definire un formato
testo standard per tutti gli elementi della libreria attiva. Quando si inserisce la nota
tecnica di un nuovo elemento questo formato verrà proposto come schema
principale. Questo consente all’utente di ottimizzare la modifica delle note tecniche.
Parametri
I parametri di un elemento costituiscono l’interfaccia tra le operazioni svolte
dall’elemento e l’uso dell’elemento stesso in un’applicazione ISaGRAF. I parametri
hanno un differente significato per ogni tipo di elemento della libreria.
I parametri di una configurazione di I/O definiscono l’insieme completo delle schede
di I/O della configurazione e delle variabili per i canali di I/O. I parametri di una
scheda o di un’apparecchiatura complessa di I/O definiscono le configurazioni fisica
e logica della scheda. I parametri di una funzione o blocco funzione rappresentano
l’interfaccia dell’elemento in accordo con le convenzioni di chiamata del linguaggio
ST. Non sono previsti parametri per la funzione di conversione in quanto essa fa
uso di una interfaccia standard predefinita.
CJ International A-149
Manuale utente
Quando viene creato un nuovo progetto ISaGRAF usando un elemento della libreria
Configurazioni di I/O, viene automaticamente impostata la corrispondente
connessione di I/O, inoltre le variabili di I/O associate ai nomi dei canali vengono
automaticamente dichiarate nel dizionario del progetto.
<direzione><tipo><numero_slot>_<numero_canale>
Tutti i canali di una singola scheda sono dello stesso tipo (booleano, analogico,
messaggio) ed hanno lo stesso verso (ingresso o uscita). Un’apparecchiatura
complessa di I/O rappresenta un dispositivo di I/O con canali di diverso tipo e con
versi differenti. Viene rappresentata come una lista di singole schede di I/O ed usa
un solo alloggiamento nello schema a cestello della finestra Configurazione di I/O.
A-150 CJ International
Manuale utente
Parametri comuni
I parametri comuni vengono inseriti nella parte superiore della finestra Parametri
della scheda di I/O. Essi (insieme al nome della scheda di I/O) identificano
l’interfaccia standard delle schede I/O ISaGRAF.
CJ International A-151
Manuale utente
Note: Variabili di I/O di diverso tipo o verso non possono essere assegnate alla stessa
scheda di I/O ISaGRAF. In questo caso è necessario usare un’apparecchiatura di
I/O complessa.
Parametri OEM
I parametri OEM vengono inseriti nella parte inferiore della finestra Parametri della
scheda di I/O. Questi parametri sono definiti dal fornitore hardware e sono specifici
per ogni scheda. Ci possono essere al massimo 16 parametri OEM per scheda.
Una scheda può non avere parametri OEM. Il gestore di libreria ISaGRAF permette
al fornitore hardware di definire l’identificazione ed il formato di ogni parametro,
nonché il modo in cui il programmatore di automazione può usarlo.
La lista di sinistra contiene l’elenco dei parametri OEM. Ogni parametro viene
identificato da un nome e da un numero logico compreso tra 0 e 15. L’area di
destra contiene la descrizione dettagliata del parametro correntemente selezionato
nella lista di sinistra.
Il pulsante «Pulisci» cancella la descrizione del parametro e lo toglie dall’elenco.
Attenzione: questo comando è irreversibile.
A-152 CJ International
Manuale utente
Il gruppo Accesso viene usato per definire in che modo l’utente finale possa
accedere al parametro. Se è selezionata l’opzione «Definito dall’utente», i
parametri vengono mostrati come un campo input durante la connessione di I/O
della scheda. Il valore predefinito del parametro OEM viene usato come valore
predefinito per la modifica dei parametri. Se è selezionata l’opzione «Nascosto», il
parametro è una costante e non appare nella casella di connessione della scheda
di I/O. Il valore predefinito del parametro OEM costituisce il valore del parametro
costante. L’opzione «Sola lettura» indica che il parametro è visibile per l’utente ma
non può essere modificato. Il suo valore predefinito viene usato come valore
costante.
ISaGRAF gestisce una libreria di funzioni e blocchi funzione scritti con linguaggi
IEC. I linguaggi utilizzabili per la stesura di funzioni o blocchi sono FBD (Function
Block Diagram), LD (Ladder Diagram), ST (Structured Text) o IL (Instruction list). Si
noti che i linguaggi LD e FBD possono essere combinati nelle stesso diagramma. Il
linguaggio SFC (Sequential Function Chart) non può essere usato per descrivere
una funzione o un blocco della libreria. Il linguaggio associato ad un elemento della
libreria viene scelto nel momento in cui si crea la funzione e non può più essere
modificato.
Compilazione
Funzioni e blocchi definiti nella libreria devono essere compilati (verificati) prima di
poter essere usati in un progetto ISaGRAF. Non è necessario modificare nient’altro
nella libreria per quanto riguarda funzioni e blocchi. Gli elementi della libreria
verranno visualizzati automaticamente nel menù di selezione a casella usando
l’editor grafico LD/FBD nello sviluppo di un progetto.
Una funzione definita nella libreria può chiamare altre funzioni della stessa. Tuttavia
il sistema ISaGRAF non supporta la ricorsività nelle chiamate a funzione. Un
blocco funzione scritto in linguaggio IEC non può chiamare altri blocchi funzione
(scritti con i linguaggi IEC, «C»).
CJ International A-153
Manuale utente
Definizione dell’interfaccia
Nella finestra Librerie selezionare una delle voci Funzioni, Blocchi funzione,
Funzioni C, Blocchi funzione C, Funzioni di conversione. Per creare un nuovo
elemento utilizzare il comando «File / Nuovo»; per modificare un elemento
esistente fare doppio click su di esso, viene aperto automaticamente l’editor
ISaGRAF del linguaggio di programmazione utilizzato per l’elemento in questione.
Selezionando un elemento nella lista di sinistra e premendo il pulsante «Visualizza
interfaccia / parametri» sulla barra strumenti (oppure con il comando «Modifica /
Parametri»). Viene aperta la finestra Parametri relativa all’oggetto selezionato.
A-154 CJ International
Manuale utente
L’elenco nella parte superiore sinistra della finestra mostra i parametri ordinati
secondo il modello di chiamata: prima i parametri di chiamata, alla fine i parametri
di ritorno. La parte più bassa della finestra mostra la descrizione dettagliata del
parametro evidenziato nell’elenco. Un qualsiasi tipo di dato ISaGRAF può essere
assegnato ad un parametro. Nell’elenco, i parametri di ritorno devono essere posti
dopo quelli di chiamata. Per attribuire un nome ai parametri è necessario attenersi
alle seguenti regole:
• la lunghezza del nome non può eccedere i 16 caratteri
• il primo carattere deve essere una lettera
• i caratteri successivi possono essere lettere, cifre o il carattere «_»
• nell’attribuzione del nome non viene fatta distinzione tra lettere maiuscole e
minuscole.
CJ International A-155
Manuale utente
La casella di definizione dei parametri viene utilizzata per la definizione del nome e
della tipologia di ogni parametro di chiamata o di ritorno della funzione o del blocco
funzione. Per la definizione dei parametri della funzione o del blocco funzione
evidenziati si utilizzano i comandi del menù «Modifica». Una funzione può avere
fino a 31 parametri di chiamata e sempre un solo parametro di ritorno. Un blocco
funzione può avere fino a 32 parametri con qualsiasi combinazione di parametri di
chiamata e di ritorno. Si riporta di seguito la corrispondenza tra le tipologie
ISaGRAF e «C»:
Per ulteriori informazioni sulla gestione del codice sorgente «C» di una funzione o
blocco funzione e sulle modalità di integrazione di un nuovo elemento nel sistema
target ISaGRAF, si veda la Guida Utente al Target ISaGRAF.
Una funzione di conversione è una funzione «C» chiamata dal gestore di I/O
ISaGRAF ogni volta che le variabili analogiche ad essa associate vengono lette
dagli ingressi del progetto o vengono inviate alle uscite del progetto.
La funzione crea una relazione tra il valore elettrico della variabile (letto dai sensori
di ingresso o inviato al dispositivo uscita) ed il corrispondente valore fisico (usato
nelle espressioni dell’applicazione). La funzione è quindi divisa in due parti:
conversione di ingresso e conversione di uscita. Il gestore di libreria ISaGRAF
consente il controllo del codice sorgente «C» di una funzione di conversione.
Una conversione può essere usata per una variabile analogica di tipo intero o
reale. Questo implica che l’interfaccia della funzione di conversione è sempre
definita con valori in virgola mobile. L’interfaccia è la stessa per ogni funzione di
conversione. La definizione «C» di questa interfaccia è contenuta nel file di
definizione «TACN0DEF.H».
Per ulteriori informazioni sulla gestione del codice sorgente «C» di una funzione di
conversione e su come integrare un nuovo elemento nel sistema target ISaGRAF si
faccia riferimento alla Guida Utente al Target ISaGRAF.
A-156 CJ International
Manuale utente
La finestra Archivio può essere chiamata con il menù «Strumenti / Archivio» della
finestra Gestione progetti, per salvare o recuperare un progetto, oppure dei dati
comuni:
La finestra Archivio può essere chiamata anche con il comando «Strumenti /
Archivio» dalla finestra Librerie di ISaGRAF, per salvare o ripristinare elementi
della libreria correntemente selezionata nella finestra stessa:
Progetti
Un progetto viene sempre salvato interamente. Tutti i componenti del progetto (file
sorgenti del programma, moduli oggetto e codice eseguibile dell’applicazione)
vengono salvati assieme nello stesso file archivio. E’ possibile ridurre la dimensione
dell’archivio del progetto selezionando l’opzione «Compressione».
Elementi di libreria
Gli elementi contenuti nelle librerie ISaGRAF possono essere salvati
individualmente. Tutti i componenti di un elemento della libreria (note tecniche,
definizione, interfaccia, codice sorgente..) vengono salvati assieme nello stesso file
archivio.
Dati comuni
Il comando «Strumenti / Archivio / Dati comuni» della finestra Gestione progetti
permette all’utente di archiviare e ripristinare i dati con campo di validità comune
(visibili da ogni programma di ogni progetto) esistenti nell’ambiente di lavoro
ISaGRAF. Questo comando non agisce sulle librerie di ISaGRAF. Sotto è riportata
la lista dei file che possono essere copiati con questo comando:
Questi file sono salvati uno per uno sul disco archivio, nella loro forma originale. I
file di archivio corrispondenti non sono mai compressi.
CJ International A-157
Manuale utente
A.23.2 Opzioni
Il percorso usato per gli archivi ISaGRAF è mostrato nella parte bassa della finestra
di dialogo. Premere il pulsante «Sfoglia» per sfogliare i dischi e selezionare un
altro disco e un altra cartella di archivio.
Archivia
Per salvare un oggetto in un archivio, è necessario evidenziarlo nell’elenco di
sinistra (oggetti di ambiente ISaGRAF) e premere poi il pulsante «Archivia». E’
possibile evidenziare contemporaneamente più oggetti. Il pulsante «Archivia»
viene disattivato quando si seleziona un elemento dell’elenco di destra (modalità
ripristino).
Ripristina
Per trasferire un oggetto dall’archivio all’ambiente di lavoro ISaGRAF, è necessario
evidenziare l’oggetto nell’elenco di destra (oggetti archiviati) e premere il pulsante
«Ripristina». E’ possibile evidenziare più oggetti dell’elenco. Il pulsante
«Ripristina» viene disattivato quando si seleziona un elemento dell’elenco di
sinistra (modalità salvataggio).
A-158 CJ International
Manuale utente
Il gestore archivi ISaGRAF crea un unico file di archivio per ogni oggetto salvato. Il
file di archivio ha lo stesso nome dell’oggetto salvato. L’estensione del file ne indica
il tipo. Queste sono le estensioni usate:
.pia......progetto
.bia......scheda di I/O
.iia .......funzioni in linguaggio IEC
.aia ......blocchi funzione in linguaggio IEC
.uia......funzioni «C»
.fia.......blocchi funzione «C»
.cia ......funzioni di conversione «C»
.ria ......configurazione di I/O
.xia ......apparecchiatura di I/O
CJ International A-159
Manuale utente
Lista predefinita
Il comando «Lista predefinita» del menù «Modifica» definisce una lista standard
per il documento comprendente tutti i componenti del progetto. La lista standard
consiste in:
• Descrizione del progetto
• Albero gerarchico (collegamenti tra programmi)
• Codice sorgente per ogni programma
• File Diario per ogni programma
• Definizioni comuni
• Definizioni globali
• Definizioni locali per ogni programma
A-160 CJ International
Manuale utente
• Variabili globali
• Variabili locali per ogni programma
• Opzioni dell’applicazione
• Connessioni I/O
• Elenco delle variabili
• Tavole di conversione
• Riassunto dei riferimenti incrociati
• Dettaglio dei riferimenti incrociati
• Sommario delle dichiarazioni
• Mappa degli indirizzi di rete
• Elenco cronologico delle modifiche.
Taglia e incolla
Per spostare il contenuto degli elenchi o per personalizzare l’ordine della lista si
usano i comandi «Modifica / Taglia» e «Modifica / Incolla». E’ possibile
selezionare, tagliare ed incollare gruppi di più voci.
Svuotare la lista
Il comando «Modifica / Cancella tutto». permette di svuotare la lista, in questo
modo è possibile ricostruirla completamente inserendo le singole voci.
Per inserire una voce relativa ad un programma si seleziona il nome del programma
nella casella elenco «Programma» e si seleziona la voce desiderata nella lista
sottostante. Per inserire la voce selezionata nella lista premere il pulsante
CJ International A-161
Manuale utente
A.24.2 Opzioni
Diagrammi SFC
L’opzione «Separa livelli SFC» fa si che il sistema stampi, per ogni programma,
prima il livello 1 del linguaggio SFC (diagrammi e commenti) e poi il livello 2 di
programmazione. Quando non è selezionata questa opzione i livelli 1 e 2 appaiono
assieme nella stessa stampa.
Formato pagina
Il comando «Formato pagina» del menù «Opzioni» permette di definire i principali
parametri utilizzati dal generatore di documentazione per l’impostazione della
pagina. Possono essere specificati i seguenti parametri:
• Margine sinistro: (1 o 2 centimetri, oppure margine assente)
• Bordo pagina: Quando è selezionata questa opzione, attorno ad ogni pagina
stampata viene tracciato un bordo.
A-162 CJ International
Manuale utente
Hjlhkjljljghk Hjlhkjljljghk
fshkjsljhlkfh, fshkjsljhlkfh,
hfkshmksùgùqlùdlù hfkshmksùgùqlùdlù
flmhkmlsfkhml flmhkmlsfkhml
hklkfhlmkshmlf hklkfhlmkshmlf
hfslkjhlkfjshllf hfslkjhlkfjshllf
hfklhjlff hfklhjlff
hgfmkhmlkùzrlpkrioe hgfmkhmlkùzrlpkrioe
glfjklhkjfljhlj glfjklhkjfljhlj
htkmlkfmhk htkmlkfmhk
hmlkfmkhmkfmh hmlkfmkhmkfmh
CJ CJ
Con margine sinistro e bordo principale niente margine, niente bordo principale
Text1 data
ISaGRAF - Progetto 'Nome'
Text2
Text3 Titolo definito dall’utente pag
La prima riga del titolo principale (col nome del progetto ISaGRAF), la data corrente
ed il numero di pagina vengono generati automaticamente non possono essere
modificati.
Le tre righe di testo sulla parte sinistra della casella (text1, text2, text3) e la seconda
riga del titolo principale vengono definite dall’utente. L’utente può modificare anche
il logo stampato nella casella di sinistra. Per usare un logo diverso è necessario
specificare il percorso del file immagine tipo bitmap (.BMP). L’immagine scelta
potrà avere qualsiasi dimensione e verrà adattata all’esatta dimensione della pagina
di stampa. Facendo click nella casella del logo della finestra di dialogo verrà
visualizzata la nuova immagine specificata. Il file immagine deve trovarsi sul disco
(nella cartella e con il nome specificati) quando viene dato il comando di stampa
«Stampa».
CJ International A-163
Manuale utente
list2 vlv_cmd
max_level
Se non vengono definiti i font di caratteri, per ogni testo verrà usato il font standard
della stampante con i seguenti stili:
• Stile «Normale» per i testi ed i nomi all’interno dei diagrammi
• Stile «Grassetto» per i titoli
A-164 CJ International
Manuale utente
Livelli di protezione
All’interno di un progetto o un elemento della libreria, l’utente può definire fino a 16
livelli di accesso, corrispondenti a password diverse. I livelli di accesso sono
ordinati in un sistema gerarchico. Sono numerati da 0 a 15. Il più alto livello di
accesso è numerato come 0. Quando un utente conosce una password, può
accedere a tutti gli elementi protetti dal corrispondente livello di accesso, oltre a tutti
quelli protetti con livello inferiore. Ogni comando o dato elementare di un progetto o
di un elemento di libreria può essere protetto separatamente con un livello di
accesso. Ad esempio, il comando «Compila applicazione» nei vari menù ISaGRAF
può essere protetto separatamente. Come dato elementare si intende un
programma, una lista di opzioni, le note tecniche di un elemento di libreria, etc...
CJ International A-165
Manuale utente
La lista nella parte bassa mostra i differenti elementi (dati o funzioni) che possono
essere protetti, e il livello di protezione corrente associato ad ogni permesso per
accesso in «Lettura» o accesso «Completo». Assegnando un livello di protezione
per l’accesso in «Lettura» si previene che degli utenti senza permesso sufficiente
possano aprire o stampare un documento.
Facendo doppio click su una linea nella lista in basso si impostano i permessi per
l’elemento o il dato selezionato. La seguente finestra viene visualizzata:
Notare che per quei documenti, naturalmente visibili quando si utilizza l’ambiente di
lavoro ISaGRAF, come la descrizione del progetto, l’accesso in lettura non può
essere protetto con una password.
Sarà possibile continuare il lavoro inserendo la parola chiave richiesta o una parola
chiave corrispondente ad un livello di protezione superiore. Ogni volta che viene
introdotta una parola chiave essa verrà memorizzata e non sarà quindi necessario
reinserirla successivamente. Le parole chiave archiviate verranno richiamate ogni
volta che un’applicazione ISaGRAF viene avviata da un altro strumento ISaGRAF
(ad esempio quando il Project Manager avvia il Program Manager). Le parole
chiave vengono mantenute in memoria fintanto che ci sono finestre ISaGRAF
aperte. Le parole chiave inserite durante la modifica di un progetto o usando la
gestione Librerie o la gestione Archivio non possono essere condivise. Se l’utente
inserisce una parola chiave non corretta non avrà accesso alla funzione richiesta.
A-166 CJ International
Manuale utente
- si utilizzano livelli di protezione con priorità più alta per le protezioni individuali
rispetto a variabili globali o protezioni di I/O.
Quando una variabile o un canale di I/O ha protezione individuale, una piccola icona
viene mostrata vicino al suo nome nel dizionario o nella finestra di connessione di
I/O.
CJ International A-167
Manuale utente
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.
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.
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.
A-168 CJ International
Manuale utente
I/O
Definizione statico dinamico
Modo di selezione scheda variabile
Applicazione validazione e test manutenzione
Debugger
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:
DATA Esecuzione
BASE
degli applicazione
OEM Utente INPUT kernel
(chiave utente oem)
Disp.
Input
Esecuzione DATA
kernel BASE
OEM Utente
degli
applicazione OUTPUT Non (chiave oem utente)
bloccato
Disp.
output
Debugger
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.
CJ International A-169
Manuale utente
OEM virtuale
(chiave oem 0)
DATA Esecuzione
BASE
degli kernel
INPUT applicazione
OEM Utente
(chiave oem utente)
Disp.
Input
Non Debugger
virtuale
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.
OEM Virtuale
(chiave oem 0)
Esecuzione DATA
kernel BASE
degli
applicazione OUTPUT
OEM Utente
(chiave oem utente)
Non
Debugger virtuale Disp.
Output
Disp.
Input Non
Non Debugger virtuale Disp.
virtuale Output
Non
bloccato
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
A-170 CJ International
Manuale utente
PROJECT1
COM SRC
PROJECT2
DEFS
EXE
RELS
LIB
DEV
OBJS
TMP FNC
RELS
FBL
DATA
IOC
CJ International A-171
Manuale utente
CARTELLA CONTENUT0
APL Cartella radice per i progetti ISaGRAF,
ogni progetto corrisponde ad una sottocartelle
che contiene tutti i dati del progetto
COM Dati comuni, 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 di 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»
LIB\DEV File comandi per lo sviluppo di librerie «C»
makefile, link list, ecc...
TMP File temporanei: le sottocartelle di tipo TMP vengono riservate
ad ISaGRAF Code Generator e non possono essere
cancellate.
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
A-172 CJ International
Manuale utente
IsaDefs=c:\isawin\lib\defs
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 di ingresso
+O variabile di uscita
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:
Start block
CJ International A-173
Manuale utente
description blocks
end block
@ <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
Quella che segue è la struttura dell’ultimo blocco, che segnala la fine del file:
@END_SYMBOLS
@PROGRAMS,<nbprg>
#<va>,<name>
#...
@STEPS,<nbsteps>
#<va>,<name>,<father>
#...
A-174 CJ International
Manuale utente
Quella che segue è la struttura del blocco usato per descrivere le transizioni SFC
dell’applicazione:
@TRANSITIONS,<nbtrans>
#<va>,<name>,<father>
#...
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>
#...
Quella che segue è la struttura del blocco che descrive le variabili analogiche
dell’applicazione:
@ANALOGS,<nb_ana>
#<va>,<name>,<attr>,<program>,<format>,<unit>
#...
CJ International A-175
Manuale utente
Quella che segue è la struttura del blocco che descrive le variabili timer
dell’applicazione:
@TIMERS,<nb_tmr>
#<va>,<name>,<attr>,<program>
#...
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>
#...
Quella che segue è la struttura utilizzata per descrivere le funzioni «C» utilizzate
nell’applicazione:
@USP,<nb_usp>
#<va>,<name>
#...
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>
#...
A-176 CJ International
Manuale utente
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
q Per un progetto:
q Per i nomi:
CJ International A-177
Manuale utente
q Connessioni di I/O:
q Per le librerie:
A-178 CJ International
Manuale utente
CJ International A-179
Manuale utente
A-180 CJ International
Guida di riferimento ai linguaggi
CJ International B-181
Guida di riferimento ai linguaggi
B.1.1 Programmi
I programmi sono legati assieme in una struttura del tipo ad albero gerarchico. I programmi
principali sono posti in cima all’albero gerarchico e sono attivati dal sistema. I sottoprogrammi
e i programmi figli (i livelli inferiori della struttura ad albero) vengono attivati dai rispettivi
programmi padre. Un programma può essere scritto usando i seguenti linguaggi:
In uno stesso programma non possono coesistere linguaggi diversi, ad eccezione dei
linguaggi LD e FBD che possono essere combinati assieme su uno stesso diagramma.
I programmi della sezione Iniziale o Finale servono a rappresentare operazioni di tipo ciclico
e non dipendono dal tempo. I programmi della sezione Sequenziale rappresentano
operazioni di tipo sequenziale in cui la variabile tempo sincronizza esplicitamente le
operazioni di base.
I programmi principali della sezione Iniziale vengono eseguiti sistematicamente all’inizio di
ogni ciclo di esecuzione. I programmi principali della sezione Finale vengono eseguiti
sistematicamente al termine di ciascun ciclo di esecuzione. I programmi principali della
sezione Sequenziale vengono eseguiti secondo le regole della dinamica SFC o FC.
B-182 CJ International
Guida di riferimento ai linguaggi
I programmi delle sezioni di tipo ciclico (Iniziale ed Finale) non possono venire scritti in
linguaggio SFC o FC.
I programmi della sezione Funzioni sono sottoprogrammi che possono essere chiamati da
un qualsiasi altro programma (sia un padre, che un figlio) del progetto. Un programma della
sezione Funzioni può chiamare un altro programma della medesima sezione Funzioni.
I sottoprogrammi (sezione Funzioni) non possono venire scritti in linguaggio SFC o FC.
Qualsiasi programma di qualsiasi sezione può avere uno o più sottoprogrammi, che
obbligatoriamente non devono essere scritti in linguaggio SFC o FC.
I programmi della sezione Iniziale vengono tipicamente usati per descrivere operazioni
preliminari su dispositivi di ingresso per costruire variabili filtrate ad alto livello. Queste
variabili vengono usate frequentemente dai programmi della sezione Sequenziale. I
programmi della sezione Finale, normalmente, eseguono controlli di sicurezza sulle variabili
elaborate dalla sezione Sequenziale, prima dell’invio dei loro valori ai dispositivi di output.
Ogni programma SFC della sezione Sequenziale può controllare altri programmi SFC. Tali
programmi di livello inferiore vengono chiamati programmi figli SFC. Un programma figlio
SFC è un programma parallelo (entrambi padre e figlio vengono eseguiti in parallelo), che
può essere avviato, terminato, sospeso o riavviato dal proprio programma padre. Sia il
programma padre che il figlio devono essere entrambi scritti in linguaggio SFC. Un
programma SFC figlio può contenere variabili e nomi definiti con campo di validità locale.
Un programma genitore che avvia un programma SFC figlio, inserisce un token SFC in
ciascun passo iniziale del programma figlio. Un programma genitore che termina un
programma SFC figlio, rimuove tutti i token esistenti nei passi del programma figlio.
L’avvio di un programma figlio avviene con l’istruzione GSTART, la terminazione di un
programma figlio avviene con l’istruzione GKILL.
Quando un programma genitore sospende un programma figlio SFC, rimuove da esso tutti i
token esistenti, memorizzandone la posizione. Quando un programma genitore riavvia un
programma figlio SFC sospeso, ripristina tutti i token rimossi al momento della sospensione
del programma figlio.
La sospensione di un programma figlio avviene con l’istruzione GFREEZE, il riavvio di un
programma figlio avviene con l’istruzione GRST.
Per quanto riguarda la gestione dei sottoprogrammi il linguaggio FC (Flow Chart) si differenzia
dal linguaggio SFC (Sequential Function Chart).
Ogni programma FC della sezione Sequenziale può controllare un altro sottoprogramma FC.
Durante l’esecuzione di un sottoprogramma FC, il programma FC padre viene bloccato (in
CJ International B-183
Guida di riferimento ai linguaggi
Programma Sotto-programmi
principale
Ogni programma di ogni sezione può avere uno o più sottoprogrammi. Un sottoprogramma è
una funzione dedicata ad un solo programma padre. Un sottoprogramma può avere variabili e
definizioni locali. Un sottoprogramma può essere scritto con qualunque linguaggio, ad
eccezione del linguaggio SFC o FC (tali linguaggi possono essere usati per descrivere un
programma figlio che, a differenza di un sottoprogramma, può risiedere solo nella sezione
Sequenziale).
I programmi della sezione Funzioni sono sottoprogrammi che possono essere richiamati da
qualunque altro programma del progetto. A differenza degli altri sottoprogrammi, non sono
dedicati ad un unico programma padre. Un programma della sezione Funzioni può chiamare
un altro programma della stessa sezione (ma non se stesso). Una funzione può risiedere
nella libreria.
La tavola seguente mostra come impostare il valore del parametro di ritorno all’interno di una
funzione o di un sottoprogramma, con i differenti linguaggi:
B-184 CJ International
Guida di riferimento ai linguaggi
nome_sottoprogramma := <espressione>;
LD 10
ADD 20 (* valore del parametro di ritorno = 30 *)
>=1
&
nome_sottoprogramma
nome_sottoprogramma
Un blocco funzione può essere scritto in linguaggio: LD, FBD, ST o IL. Un blocco funzione
può avere più parametri di ritorno e complessivamente 32 parametri di chiamata e ritorno.
Un blocco funzione viene istanziato. Ciò significa che viene eseguita una copia delle variabili
locali di un blocco funzione per ogni istanza: viene richiamato lo stesso codice, ma i dati usati
sono quelli allocati per l’istanza. I valori delle variabili dell’istanza vengono memorizzati tra un
ciclo e l’altro.
(* Programm azione ST *)
Implem entazione
(* FB1 è un’istanza dichiarata del Function Block
del function block SAMPLE *)
Avvertenza:
- Un blocco funzione scritto in uno dei linguaggi IEC non può chiamare altri blocchi funzione:
il meccanismo che regola le istanze gestisce solamente le variabili locali del blocco stesso.
CJ International B-185
Guida di riferimento ai linguaggi
Di seguito viene riportata una lista di blocchi funzione standard che non possono essere
richiamate da un blocco funzione IEC:
SR, RS, R_Trig, F_Trig, SEMA, CTU, CTD, CTUD, TON, TOF, TP, CMP, StackInt,
AVERAGE, HYSTER, LIM_ALRM, INTEGRAL, DERIVATE, BLINK, SIG_GEN
- Per la stessa ragione, non è possibile usare contatti o bobine di tipo Positivo o Negativo, o
bobine di tipo set o reset.
- Le funzioni TSTART e TSTOP, che provvedono ad avviare e fermare i timer, non possono
essere usate in un blocco funzione di un target versione 3.0x. Funzionano a partire dalla
versione 3.20.
>= >=
>=1 >=1
& & IntResult
Un programma può essere scritto usando uno qualsiasi dei seguenti linguaggi grafici o
testuali:
In uno stesso programma non possono coesistere linguaggi diversi. Il linguaggio viene scelto
alla creazione del programma e non può più essere cambiato. Fanno eccezione i linguaggi
LD e FBD, che possono essere combinati assieme in uno stesso programma.
Il sistema ISaGRAF è sincrono. Tutte le operazioni eseguite sul PLC target sono comandate
da un impulso di clock. La durata base del clock, viene chiamata Tempo di ciclo:
B-186 CJ International
Guida di riferimento ai linguaggi
Elaborazione programmi
Sezione Iniziale
Elaborazione programmi
Sezione Finale
Il sistema provvede a:
- garantire che una variabile di ingresso mantenga lo stesso valore all’interno di un ciclo,
- garantire che un dispositivo di uscita non venga aggiornato più di una volta per ciclo,
- operare in modo sicuro sulla stessa variabile globale usata in programmi diversi,
- stimare e controllare il tempo di ciclo utilizzato da un’applicazione completa.
CJ International B-187
Guida di riferimento ai linguaggi
Vengono qui illustrate le caratteristiche principali e gli oggetti comuni del data base di
programmazione ISaGRAF. Tali oggetti possono essere usati in uno qualsiasi dei linguaggi
SFC, FC, FBD, LD, ST o IL.
Nota: I timers contengono valori inferiori ad un giorno e non possono essere usati per
memorizzare date.
Le espressioni costanti si riferiscono ad un solo tipo. La stessa notazione non può essere
usata per rappresentare espressioni costanti di tipo differente.
Nelle parole chiave «TRUE» e «FALSE» non viene fatta distinzione tra maiuscole e
minuscole.
Le espressioni costanti intere rappresentano valori interi lunghi con segno (32 bit):
da -2147483647 a +2147483647
Le costanti intere di tipo analogico possono essere espresse con uno dei seguenti tipi base.
Le costanti intere devono iniziare con un prefisso che identifica il tipo base usato:
B-188 CJ International
Guida di riferimento ai linguaggi
Il carattere underscore «_» permette di separare gruppi di cifre. Non ha alcun significato
particolare, ma migliora la leggibilità delle espressioni costanti.
3.14159 -1.0E+12
+1.0 1.0F-15
-789.56 +1.0E-37
L’espressione "123" non è di tipo reale. La corretta rappresentazione di tipo reale è "123.0".
Le espressioni costanti di tipo Timer rappresentano valori temporali compresi tra 0 secondi e
23h59m59s999ms. La più piccola entità rappresentabile è il millisecondo. Alcune unità
temporali standard usate in espressioni costanti sono:
Le espressioni costanti di tipo timer hanno il prefisso "T#" o "TIME#". Non viene fatta
distinzione tra maiuscole e minuscole nei prefissi e nelle lettere. Seguono alcuni esempi di
espressioni costanti di tipo timer:
L’espressione "0" non rappresenta un valore temporale, ma una costante di tipo analogico.
'ECCO UN MESSAGGIO'
CJ International B-189
Guida di riferimento ai linguaggi
Avvertenza: Non è possibile usare il carattere apostrofo «'» all’interno di una espressione
costante di tipo stringa. Un’espressione costante di tipo stringa deve essere contenuta in una
sola riga del codice sorgente del programma. La lunghezza complessiva non deve eccedere i
255 caratteri, spazi compresi.
L’espressione costante stringa vuota viene rappresentata da due apostrofi che non
contengono il carattere spazio o tabulazione.:
Il carattere speciale dollaro ('$'), seguito da altri caratteri speciali, si usa all’interno di una
stringa per rappresentare i caratteri non stampabili:
(*) "hh" rappresenta il valore esadecimale del codice ASCII del carattere da esprimere.
B.2.3 Variabili
Le variabili possono avere campo di validità LOCALE o GLOBALE. Le variabili locali possono
essere usate da un solo programma. Le variabili globali vengono viste da ogni programma del
progetto. I nomi delle variabili devono rispettare le seguenti regole:
Viene riportato sotto l’elenco delle parole chiave . Tali identificatori non possono essere usati
come nome di programma, variabile, funzione «C» o blocco funzione:
A ANA, ABS, ACOS, ADD, ANA, AND, AND_MASK, ANDN, ARRAY, ASIN, AT,
ATAN,
B BCD_TO_BOOL, BCD_TO_INT, BCD_TO_REAL, BCD_TO_STRING,
BCD_TO_TIME, BOO, BOOL, BOOL_TO_BCD, BOOL_TO_INT,
BOOL_TO_REAL, BOOL_TO_STRING, BOOL_TO_TIME, BY, BYTE,
B-190 CJ International
Guida di riferimento ai linguaggi
Tutte le parole chiave che iniziano con il carattere underscore «_» sono ad uso interno e non
devono essere usate in istruzioni testuali.
ISaGRAF consente l’uso nel codice del programma di variabili rappresentate direttamente
per identificare un canale libero di una scheda di I/O. Per canali liberi si intendono quelli che
non sono associati ad una variabile di I/O. L’identificatore di una variabile rappresentata
direttamente inizia sempre con il carattere "%"
CJ International B-191
Guida di riferimento ai linguaggi
Booleano significa logico. Variabili di questo tipo possono assumere valori booleani: TRUE o
FALSE. Le variabili booleane vengono tipicamente usate in espressioni booleane. Le variabili
booleane possono avere uno dei seguenti attributi:
Avvertenza: Dichiarando una variabile booleana, si possono definire delle stringhe sostitutive
dei valori «TRUE» e «FALSE» in fase di debug. Tali stringhe sostitutive possono essere
usate dai programmi solo se dichiarate come nomi definiti nel linguaggio.
Analogico significa continuo. Tali variabili sono di tipo intero con segno o reale (floating). I
formati disponibili per una variabile di tipo analogico:
B-192 CJ International
Guida di riferimento ai linguaggi
Il valore dell’esponente reale analogico deve essere compreso tra -37 e +37. Le variabili di
tipo analogico possono avere uno dei seguenti attributi:
Nota: Quando una variabile di tipo reale è connessa ad un dispositivo di I/O, il driver I/O
agisce sul relativo valore intero.
Avvertenza: Variabili analogiche di tipo intero o reale non possono coesistere nella stessa
espressione analogica con espressioni costanti.
Timer equivale ad orologio o contatore. Tali variabili contengono valori temporali e vengono
tipicamente usate in espressioni di tipo timer. Un valore temporale non può eccedere
23h59m59s99 e non può essere negativo. Le variabili di tipo timer vengono memorizzate in
word a 32 bit. La rappresentazione interna consiste in un numero positivo di millisecondi.
Le variabili di tipo timer possono avere i seguenti attributi:
Avvertenza: Le variabili di tipo timer non hanno gli attributi Ingresso o Uscita.
Le variabili di tipo timer vengono aggiornate automaticamente dal sistema ISaGRAF. Quando
un timer è attivo, il suo valore viene automaticamente incrementato seguendo l’orologio in
tempo reale del sistema target. Per controllare un timer si usano le seguenti istruzioni ST:
Le variabili di tipo stringa possono contenere qualsiasi carattere della tabella standard ASCII.
(codici ASCII compresi tra 0 e 255). Una stringa di caratteri può contenere Il carattere null.
CJ International B-193
Guida di riferimento ai linguaggi
Alcune funzioni «C» della libreria standard ISaGRAF, tuttavia, non tratteranno correttamente i
messaggi contenenti caratteri null (0).
B.2.4 Commenti
Non sono possibili commenti annidati. In pratica i caratteri "(*" non possono comparire
all’interno di un commento.
Una volta definita questa equivalenza, il relativo identificatore può essere usato in qualsiasi
punto del programma ST per sostituire l’espressione abbinata. Segue un esempio di
programmazione in linguaggio ST con l’uso delle definizioni:
If OK Then
angolo := PI / 2.0;
fatto := YES;
End_if;
B-194 CJ International
Guida di riferimento ai linguaggi
Avvertenza: Se lo stesso identificatore viene definito due volte con differenti equivalenze ST,
viene usata l’ultima espressione definita. Ad esempio:
Avvertenza: Un Nome definito non può far uso a sua volta di un altro Nome definito, ad
esempio, non è possibile:
PI equivale a 3.14159
PI2 equivale a PI*2
bisogna scrivere l’equivalenza completa usando costanti, variabili ed operatori:
PI2 equivale a 6.28318
CJ International B-195
Guida di riferimento ai linguaggi
I componenti di base (simboli grafici) del linguaggio SFC sono passi, passi iniziali, transizioni,
collegamenti orientati e salti ad un passo.
Numero di riferimento
Commento
B-196 CJ International
Guida di riferimento ai linguaggi
Passo iniziale:
1 Avvio motore 1
Queste sono le proprietà di un passo. Questi campi si possono usare anche con gli altri
linguaggi:
B.3.2.2 Transizioni
numero di riferimento
Commento
Comando di pesatura
102
CJ International B-197
Guida di riferimento ai linguaggi
Colegamento
orientato esplicito
dalla transizione 100
11 al passo 100 Collegamento
orientato implicito
10
dal passo 100 alla
101 transizione 10
11
I simboli di salto possono essere usati per indicare un collegamento da una transizione ad un
passo, senza dover tracciare la linea di connessione. Al simbolo di salto deve far riferimento
il numero del passo destinazione.
102
Un simbolo di salto non può essere usato per rappresentare il collegamento da un passo ad
una transizione.
Esempio di salti – i seguenti diagrammi sono equivalenti:
1 1
2 2
30 31 30 31
1 1
B-198 CJ International
Guida di riferimento ai linguaggi
Una singola divergenza è un collegamento multiplo tra un solo passo e molte transizioni.
Permette al segnale attivo di passare in una di un certo numero di diramazioni. Una
convergenza singola è un collegamento multiplo da molte transizioni ad uno stesso passo.
Una convergenza singola viene generalmente usata per raggruppare le diramazioni SFC che
si dipartono da una divergenza singola. Divergenze e convergenze singole vengono
rappresentate da linee orizzontali semplici.
Divergenza singola
Convergenza singola
1 Initialize
CJ International B-199
Guida di riferimento ai linguaggi
Divergenza doppia
Convergenza doppia
1 Inizializzazione
Esecuzione
1
true
3
B-200 CJ International
Guida di riferimento ai linguaggi
102 Processo A
Il numero di riferimento visibile nel simbolo del macro passo è il numero di riferimento del
primo passo nel corpo del macro passo. Il corpo di un macro passo deve aver inizio con un
passo iniziale di macro e deve terminare con un passo finale di macro. Il diagramma non
deve avere riferimenti esterni. Un passo iniziale di macro non ha collegamenti superiori
(nessuna transizione precedente). Un passo finale di macro non ha collegamenti inferiori
(nessuna transizione successiva). Il simbolo di un macro passo può essere inserito nel corpo
di un altro macro passo.
unità piena
201
Errore Avvio senza errore
202 Peso
1 101
2 Allarm 201 Pesatura Pesatura effettuata
202
Ack true 203 Svuotamento WUnit
2 102
unità vuota
203
204 Memorizza peso
1
CJ International B-201
Guida di riferimento ai linguaggi
Uno stesso passo può contenere più azioni (di tipo uguale o differente). Le situazioni
particolari che permettono l’uso di altri linguaggi sono:
l Chiamate a sottoprogrammi
l Convenzioni del linguaggio Instruction List (IL)
Le azioni booleane assegnano ad una variabile booleana lo stato di attività del passo. La
variabile booleana può avere attributo di variabile Interna o di Uscita. Il valore della variabile
viene aggiornato ogni volta che viene avviata o fermata l’attività del passo. Questa è la
sintassi delle azioni booleane di base:
Esistono altre possibilità di modificare il valore della variabile booleana all’attivazione del
passo. Questa è la sintassi delle azioni booleane di tipo set e reset:
GS10.X
10 (step activity)
Azioni booleane
Bdirect
Bdirect(N) ;
/Binvert ; Binvert
Bset(S) ;
Breset(R) ; Bset
Breset
B-202 CJ International
Guida di riferimento ai linguaggi
1
2 led1 (N); group12 (S);
GS2.t > t#1s;
2
3 led2;
GS3.t > t#2s;
3
4 led3; group12 (R);
GS4.t > t#1s;
4
2
ACTION (P) :
(* istruzioni ST *)
END_ACTION ;
Esecuzione
1 Action (P):
nb_edge := 0;
End_action;
Cmd;
4
5 Action (P);
nb_edge := nb_edge + 1;
End_action;
CJ International B-203
Guida di riferimento ai linguaggi
ACTION (N) :
(* istruzioni ST*)
END_ACTION ;
Esecuzione
1 Action (P):
nb_edge := 0;
End_action;
Cmd;
4
5 Action (N):
If (nb_egde < 10) then
nb_edge := nb_edge + 1;
End_if;
End_action;
B-204 CJ International
Guida di riferimento ai linguaggi
La sequenza SFC specificata come azione deve essere un programma figlio SFC del
programma attualmente in fase di modifica. L’uso dei qualificatori S (Set) o R (Reset) in
un’azione SFC, produce lo stesso effetto delle istruzioni di avvio e terminazione del
programma figlio SFC programmate con il linguaggio ST in un’azione di tipo Impulsivo.
Segue sotto un esempio di azione SFC. Il programma principale SFC viene chiamato padre.
Ha due figli SFC, chiamati SeqMlx (che controlla mescolatore) e SeqPump (che controlla
una pompa). La programmazione SFC per il programma SFC padre è la seguente:
1
Avvio;
1
Pieno;
101
102 SeqPump (R);
2
1
Sottoprogrammi, funzioni o blocchi funzione (scritti in linguaggio ST, IL, LD o FBD) o funzioni
«C» e blocchi funzione “C”, possono essere chiamati direttamente dall’interno di un’azione
SFC, attenendosi alla seguente sintassi:
ACTION (N) :
result := sub_program ( ) ;
END_ACTION;
CJ International B-205
Guida di riferimento ai linguaggi
ACTION (N) :
Fbinst(in1, in2);
result1 := Fbinst.out1;
result2 := Fbinst.out2;
END_ACTION;
1 Action (P):
init := SPInit ( );
End_action;
Init = OK;
B.3.5.6 Convenzione IL
La programmazione di tipo Instruction List (IL) può essere introdotta direttamente in un’azione
SFC rispettando la seguente sintassi:
ACTION (P) : (* o N *)
#info=IL
<istruzione>
<istruzione>
....
#endinfo
END_ACTION;
Le parole chiave speciali "#info=IL" e "#endinfo" devono essere introdotte esattamente nel
modo esposto, viene fatta distinzione tra lettere maiuscole e minuscole. I caratteri spazio o
tabulazione non possono essere inseriti all’interno, prima o dopo le parole chiave. Segue un
esempio di programma IL all’interno di in un’azione:
1 Action (P):
#info=IL
LD False
ST Led1
ST Led2
#endinfo
End_action;
B-206 CJ International
Guida di riferimento ai linguaggi
B.3.6.1 Convenzione ST
1
Run & not Error;
B.3.6.2 Convenzione LD
1 Run Error
CJ International B-207
Guida di riferimento ai linguaggi
B.3.6.3 Convenzione IL
#info=IL
<istruzione>
<istruzione>
....
#endinfo
Il valore contenuto nel risultato corrente (registro IL) al termine della sequenza IL, viene
abbinato alla condizione della transizione:
Le parole chiave speciali "#info=IL" e "#endinfo" devono essere inserite esattamente nel
modo descritto, viene fatta distinzione tra lettere maiuscole e minuscole. I caratteri spazio o
tabulazione non possono essere inseriti all’interno, prima o dopo le parole chiave. Segue
sotto un esempio di programma IL in una transizione:
Il valore restituito dal sottoprogramma o dalla funzione deve essere di tipo booleano e
determina il risultato della condizione:
return value = FALSE è la condizione vale FALSE
return value = TRUE è la condizione vale TRUE
1
EvalCond ( );
B-208 CJ International
Guida di riferimento ai linguaggi
Situazione iniziale
La situazione iniziale è caratterizzata dai passi iniziali che sono, per definizione, in
stato attivo all’inizio dell’operazione. In ogni programma SFC deve essere presente
almeno un passo iniziale.
Programma PADRE
Programma FIGLIO
CJ International B-209
Guida di riferimento ai linguaggi
l I programmi SFC che non hanno padre, vengono chiamati programmi principali SFC
l I programmi principali SFC vengono attivati dal sistema all’avvio dell’applicazione
l Un programma può avere molteplici programmi figli
l Un programma figlio non può avere più di un padre
l Un programma figlio può essere controllato solamente dal proprio padre
l Un programma non può controllare il figlio di uno dei suoi propri figli
l Avviare (GSTART) Avvia il programma figlio: attiva ognuno dei suoi passi iniziali.
I figli del programma figlio non vengono avviati automaticamente.
l Terminare (GKILL) Termina il programma figlio disattivando ognuno dei suoi passi
attivi. I figli del programma figlio vengono a loro volta terminati.
l Sospendere (GFREEZE) Sospende l’esecuzione del programma (disattiva le azioni di
ognuno dei passi attivi e sospende il calcolo delle transizioni), e
memorizza lo stato dei passi del programma di modo che il programma
possa essere fatto ripartire. I figli del programma figlio vengono a loro
volta sospesi.
l Riavviare (GRST) Riavvia un programma figlio SFC sospeso, riattivando tutti i
passi sospesi. I figli del programma figlio vengono a loro volta riavviati.
l Stato (GSTATUS) Permette di conoscere l’attuale stato (attivo, inattivo o
sospeso) del programma figlio.
B-210 CJ International
Guida di riferimento ai linguaggi
B.4 Linguaggio FC
Flow Chart (FC) è un linguaggio grafico usato per descrivere operazioni sequenziali. Un
diagramma Flow Chart è composto di azioni e test. Tra le azioni ed i test sono interposti dei
collegamenti orientati che rappresentano il flusso dei dati. Le azioni ed i test possono
essere descritti con i linguaggi ST, LD o IL. Funzioni e blocchi funzione di ogni linguaggio
(eccetto SFC e FC) possono essere chiamati da azioni e test. Un programma Flow Chart può
chiamare un altro programma Flow Chart. Il programma FC richiamato è un
sottoprogramma FC del programma FC chiamante.
B.4.1 Componenti FC
Segue una lista dei componenti grafici del linguaggio Flow Chart:
Inizio di un diagramma FC
Un simbolo "Start" deve apparire all’inizio di un programma Flow Chart. Il simbolo è unico e
non può essere omesso. Esso rappresenta lo stato iniziale quando il diagramma viene
attivato . Segue il disegno del simbolo "Start":
Start
Il simbolo "Start" ha sempre una connessione (nella parte inferiore) verso un altro oggetto del
diagramma. Un diagramma Flow Chart non è valido se non esiste una connessione da "Start"
ad un altro oggetto.
Fine di un diagramma FC
Un simbolo "Stop" deve apparire alla fine di un programma Flow Chart. Il simbolo è unico e
non può essere omesso. Esso rappresenta lo stato finale del diagramma, quando la sua
esecuzione è stata terminata. Segue il disegno del simbolo "Stop":
Stop
CJ International B-211
Guida di riferimento ai linguaggi
Due collegamenti non possono essere connessi allo stesso punto sorgente della
connessione.
Azioni FC
Un simbolo di azione rappresenta azioni da eseguire. Un’azione è identificata da un numero
e da un nome. Segue il disegno del simbolo "Azione":
nn: Nome
Due differenti oggetti dello stesso diagramma non possono avere lo stesso nome o lo stesso
numero logico. Il linguaggio di programmazione per un’azione può essere ST, LD o IL.
Un’azione è sempre connessa con dei collegamenti, uno che arriva su di essa, uno che parte
da essa.
Test FC
Un test rappresenta una condizione booleana. Un test è identificato da un nome e da un
numero logico. In accordo con la valutazione dell’espressione ST, LD o IL associata, il flusso
viene diretto verso il percorso "SI" o "NO". Seguono i disegni possibili per un simbolo di test:
NO NO
nn: Nome nn: Nome
SI SI
SI SI
nn: Nome nn: Nome
NO NO
Due differenti oggetti test dello stesso diagramma non possono avere lo stesso nome o lo
stesso numero logico. Il programma di un oggetto test può essere
- un espressione in linguaggio ST,
- un singolo ramo in linguaggio LD, con nessun simbolo collegato all’unica bobina,
- una sequenza di istruzioni in linguaggio IL. Il registro IL (o il risultato corrente) è utilizzato
per valutare il test.
B-212 CJ International
Guida di riferimento ai linguaggi
Sottoprogramma FC
Il sistema permette la descrizione di strutture verticali nei programmi FC. I programmi FC
sono organizzati con una gerarchia ad albero. Ogni programma FC può chiamare altri
programmi FC. Tali programmi sono chiamati sottoprogrammi FC del programma che li ha
chiamati. I programmi FC che chiamano sottoprogrammi FC sono chiamati programmi
padre FC. I programmi FC sono collegati assieme in gerarchia ad albero, usando una
relazione "padre-figlio":
Programma padre FC
Sottoprogramma FC
nn: NomeSp
Due oggetti differenti dello stesso diagramma non possono avere lo stesso numero logico. Le
regole base della struttura gerarchica FC sono le seguenti:
- I programmi FC che non hanno padre sono chiamati programmi FC principali.
- I programmi FC principali sono attivati dal sistema quando l’applicazione inizia
- Un programma può avere più sottoprogrammi FC
- Un sottoprogramma FC non può avere più di un programma padre FC
- Un sottoprogramma FC può essere chiamato solo dal suo programma padre FC
- Un programma non può chiamare i sottoprogrammi FC di un suo sottoprogramma FC
Lo stesso sottoprogramma FC può comparire più volte nel diagramma padre FC. Una
chiamata del sottoprogramma FC rappresenta una esecuzione completa del sotto
CJ International B-213
Guida di riferimento ai linguaggi
diagramma. L’esecuzione del diagramma padre FC viene sospesa durante l’esecuzione del
sottodiagramma FC. I blocchi di chiamata a sottoprogrammi FC devono seguire le stesse
regole di connessione definite per le azioni.
nn: Nome
I blocchi specifici I/O hanno esattamente lo stesso comportamento delle azioni standard.
Questo si riferisce alle loro proprietà, alla programmazione ST, LD o IL, e alle regole di
connessione.
Connettori FC
I Connettori sono usati per rappresentare collegamenti tra due punti del diagramma senza
doverli disegnare. Un connettore è rappresentato con un cerchio ed è connesso alla sorgente
del flusso. Il disegno del connettore viene completato, sul lato appropriato (dipendente dalla
direzione del flusso di dati), con l’identificazione del punto destinazione (generalmente il nome
del simbolo destinazione). Segue il disegno del simbolo connettore:
nn: Nome
Un connettore riporta il flusso sempre ad un simbolo definito sul diagramma Flow Chart. Il
simbolo destinazione è identificato con il suo numero logico.
Commenti FC
Un blocco commento contiene del testo che non influenza la semantica del diagramma. Un
commento può essere inserito ovunque in un qualsiasi spazio inutilizzato della finestra
documento Flow Chart, e viene utilizzato per documentare il programma. Segue il disegno del
simbolo "commento":
Testo di commento
Può occupare più linee
Questa sezione mostra esempi di strutture complesse che possono essere definite in un
diagramma Flow Chart. Tali strutture sono combinazioni di oggetti base collegati insieme.
B-214 CJ International
Guida di riferimento ai linguaggi
IF / THEN / ELSE
REPEAT / UNTIL
WHILE / DO
Nota: Contrariamente ad un diagramma SFC, un azione non è uno stato stabile. Mentre il
simbolo di azione è attivo, non avviene nessuna ripetizione di istruzioni.
B.4.4 Controlli FC
CJ International B-215
Guida di riferimento ai linguaggi
- Tutti i simboli devono essere collegati assieme (non devono apparire parti isolate)
- Tutte le connessioni devono avere una destinazione valida
B-216 CJ International
Guida di riferimento ai linguaggi
Un diagramma FBD descrive una funzione tra variabili di input e variabili di output. Una
funzione viene descritta come insieme di blocchi funzione elementari. Le variabili di input
ed output sono collegate ai blocchi tramite linee di connessione. L’output di un blocco
funzione può essere connesso all’input di un altro blocco.
Funzione
Input Output
Un’intera funzione gestita con un programma FBD è costituita da blocchi funzione standard
elementari presi dalla libreria ISaGRAF. Ogni blocco funzione possiede un numero fisso di
punti di connessione di input ed un numero fisso di punti di connessione di output. Un
blocco funzione è rappresentato da un singolo rettangolo. Gli input collegati sul lato sinistro.
Gli output collegati sul lato destro. Un blocco funzione elementare esegue una singola
funzione tra i suoi input ed output. Il nome della funzione che deve essere eseguita dal
blocco è scritto all’interno del simbolo rettangolare. Ciascun input o output di un blocco ha un
ben definito tipo.
Nome della funzione
CJ International B-217
Guida di riferimento ai linguaggi
Le variabili di input ed output, gli input e gli output dei blocchi funzione, sono connessi tra loro
mediante linee di connessione. Si possono usare delle linee singole per collegare due punti
logici del diagramma:
L’output di un diagramma può essere costituito dalla parola chiave "<RETURN>". Tale parola
chiave deve essere connessa ad un punto di connessione di output, di tipo booleano, di un
blocco funzione. L’istruzione RETURN rappresenta la fine condizionata del programma: se
l’output della casella collegata all’istruzione ha il valore booleano TRUE, la fine (la parte
restante) del diagramma non viene eseguita.
>=1
auto_mode
alarm RETURN
&
bi10 >=1
bi23
x_cmd bo67
(* Equivalente ST: *)
If auto_mode OR alarm Then
Return;
End_if;
bo67 := (bi10 AND bi23) OR x_cmd;
B-218 CJ International
Guida di riferimento ai linguaggi
Quando la linea di connessione alla sinistra del salto ha stato booleano TRUE, l’esecuzione
del programma salta direttamente al simbolo successivo l’etichetta corrispondente.
&
manual
b1 NOMODIF
>=1
input1
input2 result
NOMODIF:
>=1
result
valid cmd10
(* Equivalente IL: *)
ld manual
and b1
jmpc NOMODIF
ld input1
or input2
st result
NOMODIF: ld result
or valid
st cmd10
Una singola linea di connessione con l’estremità destra connessa all’input di un blocco
funzione, può terminare con una negazione booleana . La negazione viene rappresentata da
un piccolo cerchietto. Per usare una negazione booleana, le estremità sinistra e destra della
connessione devono essere di tipo BOOLEANO.
&
input1
input2 output1
(* Equivalente ST: *)
output1 := input1 AND NOT (input2);
CJ International B-219
Guida di riferimento ai linguaggi
Weighing net_weight
mode mode
0 IN2 Q RETURN
tare_weight weight
(* Equivalente ST *)
net_weight := Weighing (mode, delta); (* chiamata a sottoprogramma *)
If (net_weight = 0) Then Return; End_if;
weight := net_weight + tare_weight;
B-220 CJ International
Guida di riferimento ai linguaggi
B.6 Linguaggio LD
Il linguaggio Ladder Diagram (LD) è la rappresentazione grafica di formule booleane che
combinano contatti (argomenti di input) con bobine (risultati di output). Il linguaggio LD
permette di descrivere interrogazioni e modifiche di dati di tipo booleano inserendo simboli
grafici sul diagramma del programma. I simboli grafici LD sono organizzati sul diagramma
esattamente come per un diagramma di contatti elettrici. I diagrammi LD sono connessi sul
lato sinistro e sul lato destro a barre di alimentazione verticali. Questi sono i componenti
grafici di base di un diagramma LD:
I simboli grafici di un diagramma LD sono connessi alle barre di alimentazione o agli altri
simboli mediante linee di connessione . Le linee di connessione possono essere orizzontali
o verticali.
CJ International B-221
Guida di riferimento ai linguaggi
Linee di
connessione Connessione
verticali verticale con OR
Ogni segmento può assumere uno stato booleano FALSE o TRUE. Lo stato booleano è il
medesimo per tutti i segmenti collegati tra loro direttamente. Ogni linea orizzontale connessa
ad una barra verticale sinistra di alimentazione ha stato TRUE.
Lo stato booleano assunto da una singola connessione orizzontale, è lo stesso alle estremità
sinistra e destra della linea stessa. Si possono creare connessioni multiple combinando
assieme linee verticali ed orizzontali. Lo stato booleano delle estremità di una connessione
multipla viene determinato dalle seguenti regole
v1
v2
v3
Una connessione multipla a destra è costituita da una linea orizzontale collegata al lato
sinistro di una linea verticale, al cui lato destro, sono collegate molteplici linee. Lo stato
booleano dell’estremità sinistra viene propagato a ciascuna estremità destra.
input1 output1
output2
(* Equivalente ST: *)
output1 := input1;
output2 := input1;
B-222 CJ International
Guida di riferimento ai linguaggi
Lo stato booleano di ciascuna delle estremità a destra è costituito dall’OR LOGICO di tutte le
estremità a sinistra.
input1 output1
input2 output2
output3
(* Equivalente ST: *)
output1 := input1 OR input2;
output2 := input1 OR input2;
output3 := input1 OR input2;
l Contatto diretto
l Contatto inverso
l Contatto con riconoscimento di fronte
l Bobina diretta
l Bobina inversa
l Bobina di tipo SET
l Bobina di tipo RESET
l Bobina con riconoscimento di fronte
boo_variable
CJ International B-223
Guida di riferimento ai linguaggi
boo_variable
Lo stato della linea di connessione destra del contatto è l’AND LOGICO tra lo stato della linea
di connessione sinistra ed il valore della variabile associata al contatto.
(* Equivalente ST: *)
output1 := input1 AND input2;
boo_variable
Lo stato della linea di connessione destra del contatto è l’AND LOGICO tra lo stato della linea
di connessione sinistra e la negazione booleana del valore della variabile associata al
contatto.
(*Equivalente ST: *)
output1 := NOT (input1) AND NOT (input2);
Questo contatto (positivo) corrisponde ad un’operazione booleana tra lo stato di una linea di
connessione ed il fronte di salita di una variabile booleana.
B-224 CJ International
Guida di riferimento ai linguaggi
boo_variable
P
Connessione sinistra Connessione destra
Lo stato della linea di connessione destra del contatto viene impostato a TRUE quando lo
stato della linea di connessione a sinistra vale TRUE e lo stato della variabile associata sale
da FALSE a TRUE. In tutti gli altri casi viene impostato a FALSE.
(* Equivalente ST: *)
output1 := input1 AND (input2 AND NOT (input2prev));
(* input2prev è il valore di input2 nel ciclo precedente *)
Questo contatto (negativo) corrisponde ad un’operazione booleana tra lo stato di una linea
di connessione ed il fronte di discesa di una variabile booleana.
boo_variable
N Connessione destra
Connessione sinistra
Lo stato della linea di connessione destra del contatto viene impostato a TRUE quando lo
stato della linea di connessione a sinistra vale TRUE e lo stato della variabile associata cade
da TRUE a. FALSE In tutti gli altri casi viene impostato a FALSE.
(*Equivalente ST: *)
output1 := input1 AND (NOT (input2) AND input2prev);
(*input2prev è il valore di input2 nel ciclo precedente*)
CJ International B-225
Guida di riferimento ai linguaggi
boo_variable
Alla variabile associata viene assegnato lo stato booleano della connessione sinistra. Lo
stato della connessione sinistra viene propagato alla connessione destra. La connessione
destra può essere collegata alla barra verticale destra di alimentazione.
input1 output1
output2
(* Equivalente ST: *)
output1 := input1;
output2 := input1;
boo_variable
Alla variabile associata viene assegnata la negazione dello stato booleano della
connessione sinistra. Lo stato della connessione sinistra viene propagato alla
connessione destra. La connessione destra può essere collegata alla barra verticale destra di
alimentazione.
input1 output1
output2
B-226 CJ International
Guida di riferimento ai linguaggi
(* Equivalente ST: *)
output1 := NOT (input1);
output2 := input1;
Le bobine di tipo "SET" corrispondono ad un output booleano dato dallo stato di una linea
di connessione.
boo_variable
S
Connessione sinistra Connessione destra
input1 output1
S
input2 output1
R
(* Equivalente ST: *)
IF input1 THEN
output1 := TRUE;
END_IF;
IF input2 THEN
output1 := FALSE;
END_IF;
Le bobine di tipo "Reset" corrispondono ad un output booleano dato dallo stato di una linea
di connessione.
boo_variable
R
Connessione sinistra Connessione destra
CJ International B-227
Guida di riferimento ai linguaggi
input1 output1
S
input2 output1
R
(*Equivalente ST: *)
IF input1 THEN
output1 := TRUE;
END_IF;
IF input2 THEN
output1 := FALSE;
END_IF;
Le bobine "positive" corrispondono ad un output booleano dato dallo stato di una linea di
connessione. Questo tipo di bobine è disponibile solo usando l’editor Quick Ladder.
variabile_booleana
P
Connessione sinistra Connessione destra
input1 output1
P
(* Equivalente ST: *)
IF (input1 and NOT(input1prev)) THEN
output1 := TRUE;
ELSE
B-228 CJ International
Guida di riferimento ai linguaggi
output1 := FALSE;
END_IF;
(*input1prev è il valore di input1 nel ciclo precedente*)
Le bobine "negative" corrispondono ad un output booleano dato dallo stato di una linea di
connessione. Questo tipo di bobine è disponibile solo usando l’editor Quick Ladder.
variabile_booleana
N
Connessione sinistra Connessione destra
input1 output1
N
(*Equivalente ST: *)
IF (NOT(input1) and input1prev) THEN
output1 := TRUE;
ELSE
output1 := FALSE;
END_IF;
(*input1prev è il valore di input1 nel ciclo precedente*)
L’etichetta RETURN può essere usata come output per rappresentare la fine condizionata del
programma. Nessun’altra connessione è possibile alla destra del simbolo di RETURN.
RETURN
Quando la linea di connessione sinistra ha stato booleano TRUE, il programma termina
senza che vengano eseguite le formule inserite nelle successive linee del diagramma.
Nota: Nel caso il programma LD sia un sottoprogramma, il suo nome deve essere associato
ad una bobina di output per assegnare il valore di ritorno (restituito al programma chiamante).
CJ International B-229
Guida di riferimento ai linguaggi
manual mode
RETURN
input1 input2 result
input3
(* Equivalente ST: *)
If Not (manual_mode) Then RETURN; End_if;
result := (input1 OR input3) AND input2;
Quando la connessione sinistra del simbolo di salto vale TRUE, l’esecuzione del
programma viene indirizzata dopo il simbolo dell’etichetta.
manual_mode
OTHER
input1 result
END
OTHER:
input2 result
END:
(* Equivalente IL: *)
ldn manual_mode
jmpc other
ld input1
st result
jmp END
OTHER: ld input2
st result
END: (* fine del programma *)
B-230 CJ International
Guida di riferimento ai linguaggi
B.6.6 Blocchi in LD
L’editor Quick LD permette di collegare caselle funzione a linee booleane. Per funzione si
intende un operatore, un blocco funzione o una funzione. Poiché non tutti i blocchi hanno
sempre un input booleano e/o un output booleano, per inserire blocchi in un diagramma LD,
è necessario introdurre i nuovi parametri EN, ENO all’interfaccia del blocco. I parametri EN,
ENO non vengono aggiunti nell’editor di programmi FBD/LD, poiché in tale ambiente di
programmazione è possibile collegare variabili del tipo necessario.
• L’input "EN"
Alcuni operatori, funzioni o blocchi funzione, non hanno il primo input di tipo booleano. Poiché
il primo input deve essere sempre collegato al ramo, un altro input, chiamato “EN” viene
automaticamente inserito in prima posizione. Il blocco viene eseguito solamente se l’input EN
vale TRUE. Segue un esempio che riporta un operatore di confronto ed il codice equivalente
espresso in codice ST:
IF rung_state THEN
q := (value1 > value 2);
ELSE
q := FALSE;
END_IF;
(* il ramo prosegue in stato q *)
• L’output "ENO"
Alcuni operatori, funzioni o blocchi funzione, non hanno il primo output di tipo booleano.
Poiché il primo output deve essere sempre collegato al ramo, un altro output, chiamato “ENO”
viene automaticamente inserito in prima posizione. L’output ENO, assume sempre lo stesso
stato del primo input del blocco. Segue un esempio che riporta un blocco funzione AVERAGE
(MEDIA) ed il codice equivalente espresso in codice ST:
IF rung_state THEN
result := (value1 + value2);
END_IF;
eno := rung_state;
(*il ramo prosegue in stato q *)
CJ International B-231
Guida di riferimento ai linguaggi
B.7 Linguaggio ST
ST (Structured Text) è un linguaggio strutturato di alto livello pensato per l’automazione di
processi. Questo linguaggio viene principalmente usato per implementare procedure
complesse che non possono essere facilmente espresse con i linguaggi di tipo grafico. ST è il
linguaggio predefinito per le azioni all’interno di passi e condizioni abbinate alle transizioni del
linguaggio SFC.
B.7.1 Sintassi ST
I separatori inattivi possono essere inseriti liberamente tra separatori attivi, espressioni
costanti ed identificatori. I separatori inattivi ST sono: il carattere Spazio (blank), Tabulazione
ed il carattere Fine riga (End of line). Diversamente dai linguaggi con formattazione a riga,
come ad esempio IL, la fine riga può essere inserita in qualunque punto del programma. È
bene, tuttavia, rispettare alcune regole per migliorare la leggibilità di un programma ST:
B-232 CJ International
Guida di riferimento ai linguaggi
l Sottoprogrammi
l Funzioni e blocchi funzione di libreria scritte con linguaggi IEC
l Funzioni e blocchi funzione “C”
CJ International B-233
Guida di riferimento ai linguaggi
Operandi: Il tipo del valore di ritorno e dei parametri di chiamata deve essere lo
stesso di quello definito per il sottoprogramma.
(* Programma principale ST *)
(* ottiene un valore analogico e lo converte in valore temporale *)
ana_timeprog := SPlimit ( tprog_cmd );
appl_timer := tmr (ana_timeprog * 100);
min
max_value IN1 max
Input_value IN2 Q IN1
(* le funzioni usate in espressioni complesse: min, max, right, mlen e left sono funzioni
standard "C" *)
limited_value := min (16, max (0, input_value) );
rol_msg := right (message, mlen (message) - 1) + left (message, 1);
B-234 CJ International
Guida di riferimento ai linguaggi
Esempio :
Nome: REDGE
CJ International B-235
Guida di riferimento ai linguaggi
Non è possibile, con l’operatore REDGE, interrogare il fronte di salita di un’espressione più di
una volta nello stesso ciclo di esecuzione. Questo operatore può essere usato per descrivere
la condizione associata ad una transizione SFC.
Avvertenza: La variabile booleana <variabile_memo>, usata per mantenere il precedente
stato dell’espressione, non può essere usata per fronti di espressioni differenti.
Nel caso l’espressione sia una variabile booleana chiamata "xxx", è consigliabile dichiarare
una variabile interna unica chiamata "EDGE_xxx" da usarsi nelle espressioni REDGE per la
variabile “xxx”. In questo modo si evita che la variabile memo venga sovrascritta da altre
valutazioni REDGE.
Esempio:
Nota: questo operatore non è conforme alle norme IEC1131-3. È possibile usare il blocco
standard R_TRIG. Viene mantenuto per ragioni di compatibilità.
Nome: FEDGE
B-236 CJ International
Guida di riferimento ai linguaggi
Non è possibile, con l’operatore FEDGE, interrogare il fronte di salita di un’espressione più di
una volta nello stesso ciclo di esecuzione. Questo operatore può essere usato per descrivere
la condizione abbinata ad una transizione SFC.
Avvertenza: La variabile booleana "variabile_memo", usata per mantenere il precedente stato
dell’espressione, non può essere usata per fronti di espressioni differenti.
Nel caso l’espressione sia una variabile booleana chiamata "xxx", è consigliabile dichiarare
una variabile interna unica chiamata "EDGE_xxx" da usarsi nelle espressioni FEDGE per la
variabile “xxx”. In questo modo si evita che la variabile memo venga sovrascritta da altre
valutazioni FEDGE.
Esempio:
Nota: questo operatore non è conforme alle norme IEC1131-3. È possibile usare il blocco
standard F_TRIG. Viene mantenuto per ragioni di compatibilità.
l Assegnazione
l Istruzione RETURN
l Struttura IF-THEN-ELSIF-ELSE
l Istruzione CASE
l Istruzione iterativa WHILE
l Istruzione iterativa REPEAT
l Istruzione iterativa FOR
l Istruzione EXIT
B.7.5.1 Assegnazione
Nome: :=
CJ International B-237
Guida di riferimento ai linguaggi
L’espressione può essere una chiamata a sottoprogramma o una funzione della libreria
ISaGRAF
Esempio:
Nome: RETURN
Sintassi: RETURN ;
Operandi: (nessuno)
Esempio:
CU Q
R ESE T CV
PV
B-238 CJ International
Guida di riferimento ai linguaggi
Q := false;
CV := 0;
RETURN; (* termina il programma *)
end_if;
if R then
CV := 0;
else
if (CV < PV) then
CV := CV + 1;
end_if;
end_if;
Q := (CV >= PV);
Nome: IF ... THEN ... ELSIF ... THEN ... ELSE ... END_IF
Le istruzioni ELSE ed ELSIF sono facoltative. Se non viene specificata l’istruzione ELSE, non
viene eseguita alcuna istruzione quando la condizione vale FALSE.
Esempio:
CJ International B-239
Guida di riferimento ai linguaggi
I valori valutati dall’istruzione CASE, devono essere espressioni costanti intere. Valori diversi,
separati da virgole, portano allo stesso elenco di istruzioni. L’istruzione ELSE è facoltativa.
Esempio:
CASE codice_errore OF
255: err_msg := 'Divisione per zero;
fatal_error := TRUE;
1: err_msg := 'Overflow';
2, 3: err_msg := 'Segno errato;
ELSE
err_msg := 'Errore sconosciuto;
END_CASE;
B-240 CJ International
Guida di riferimento ai linguaggi
Esempio:
Sintassi: REPEAT
<istruzione> ;
<istruzione> ;
...
UNTIL <espressione_booleana>
END_REPEAT ;
Esempio:
CJ International B-241
Guida di riferimento ai linguaggi
nbchar := nbchar + 1;
UNTIL ( (nbchar >= 16) OR NOT (ComIsReady ( )) )
END_REPEAT;
END_IF;
index := mini;
while (index <= maxi) do
<istruzione> ;
<istruzione> ;
index := index + step;
end_while;
Esempio:
B-242 CJ International
Guida di riferimento ai linguaggi
Nome: EXIT
Sintassi: EXIT;
Operandi: (nessuno)
Esempio:
B.7.6 Estensioni ST
Le seguenti istruzioni sono disponibili per controllare l’esecuzione di programmi figli SFC.
Possono essere usate nei passi SFC, all’interno di Blocchi azione ACTION(): ...
END_ACTION;.
Avvertenza: Queste funzioni non fanno parte della normativa IEC 1131-3.
Equivalgono, in un passo SFC, a GSTART e GKILL:
child_name(S); (* equivale a GSTART(child_name); *)
child_name(R); (* equivale a GKILL(child_name); *)
CJ International B-243
Guida di riferimento ai linguaggi
101
1
2 ref_step_X(N); ref_step_X; (* = G S2(prog).X *)
101
102
2
Nome: TSTART
Esempio:
B-244 CJ International
Guida di riferimento ai linguaggi
10 ACT IO N(P):
bo100 := T RUE; (* boolean output *)
tm_ctrl := t#0s;
T ST ART (tm_ctrl);
END_ACT IO N;
11 ACT IO N(P):
T ST O P(tm_ctrl);
alarm := not(bi100);
END_ACT IO N;
GS10.X
GS11.X
timeout
tm ctrl
0
Nome: TSTOP
CJ International B-245
Guida di riferimento ai linguaggi
Nome: GSTART
I figli del programma figlio, non vengono avviati automaticamente dall’istruzione GSTART.
Nota: Poiché GSTART non fa parte delle norme IEC 1131-3, è preferibile avviare un
programma figlio SFC, usando il qualificatore S, con la seguente sintassi:
Child_name(S);
Run_cmd;
3
Nome: GKILL
B-246 CJ International
Guida di riferimento ai linguaggi
Child_name(R);
Nome: GFREEZE
Esempio:
Suspend_cmd;
1
2 ACTION(P):
GFREEZE(Schild);
END_ACTION;
NOT (Suspend_cmd);
2
3 ACTION(P):
GRST(Schild);
END_ACTION;
Nome: GRST
CJ International B-247
Guida di riferimento ai linguaggi
Nome: GSTATUS
Esempio:
1
Run_cmd;
1
Run_cmd;
3
B-248 CJ International
Guida di riferimento ai linguaggi
B.8 Linguaggio IL
Instruction List, o IL è un linguaggio di basso livello, molto efficace per piccole applicazioni o
per ottimizzare parti di un’applicazione. Le istruzioni sono sempre relative al risultato
corrente (o registro IL). L’operatore indica l’operazione che deve essere svolta tra il valore
corrente e l’operando. Il risultato dell’operazione viene, nuovamente, memorizzato nel
risultato corrente.
B.8.1 Sintassi IL
B.8.1.1 Etichette
Un etichetta seguita dai due punti ':' può precedere l’istruzione. Una etichetta può trovar
posto anche su una riga vuota. Le etichette vengono usate come operandi per alcune
operazioni come i salti. Il nome delle etichette deve rispettare le seguenti regole:
Lo stesso nome non può essere usato per più di una etichetta nello stesso programma IL.
Una etichetta può avere lo stesso nome di una variabile.
CJ International B-249
Guida di riferimento ai linguaggi
Il modificatore parentesi '(' indica che la valutazione dell’istruzione deve essere rinviata fino a
quando non venga incontrato il modificatore parentesi chiusa ')'.
Il modificatore 'C' indica che l’istruzione abbinata deve essere eseguita solamente se il
risultato corrente ha valore booleano TRUE (diverso da 0 nel caso di operatori non booleani).
Il modificatore 'C' può essere usato in combinazione con il modificatore 'N' per indicare che
l’istruzione deve essere eseguita solamente nel caso il risultato corrente abbia valore
booleano FALSE (o 0 per valori non booleani).
Poiché esiste un solo registro IL (il risultato corrente ), alcune operazioni devono essere
rinviate , così da permettere di cambiare l’ordine di esecuzione delle istruzioni.
Le parentesi permettono di indicare le operazioni rinviate:
Il modificatore parentesi aperta '(' indica che la valutazione dell’istruzione deve essere
rinviata fino a quando non venga incontrato l’operatore parentesi chiusa ')'. Ad esempio, la
seguente sequenza:
AND( IX12
OR IX35
)
B.8.2 Operatori IL
B-250 CJ International
Guida di riferimento ai linguaggi
Nella seguente sezione, sono descritti solo gli operatori specifici del linguaggio. Per gli altri
operatori standard, si rimanda alla sezione «Operatori, blocchi funzione e funzioni standard»
di questo manuale.
B.8.2.1 Operatore LD
Modificatori permessi: N
Esempio:
(* ESEMPI DI OPERAZIONI LD *)
LDex: LD false (* risultato := costante booleana FALSE *)
LD true (* risultato := costante booleana TRUE *)
LD 123 (* risultato := costante intera *)
LD 123.1 (* risultato := costante reale *)
LD t#3ms (* risultato := costante temporale *)
LD boo_var1 (* risultato := variabile booleana *)
LD ana_var1 (* risultato := variabile analogica *)
LD tmr_var1 (* risultato := variabile temporale *)
LDN boo_var2 (* risultato := NOT ( variabile booleana ) *)
B.8.2.2 Operatore ST
Modificatori permessi: N
CJ International B-251
Guida di riferimento ai linguaggi
Esempio:
(* ESEMPI DI OPERAZIONI ST *)
STboo: LD false
ST boo_var1 (* boo_var1 := FALSE *)
STN boo_var2 (* boo_var2 := TRUE *)
STana: LD 123
ST ana_var1 (* ana_var1 := 123 *)
STtmr: LD t#12s
ST tmr_var1 (* tmr_var1 := t#12s *)
B.8.2.3 Operatore S
Esempio:
(* ESEMPI DI OPERAZIONI S *)
SETex: LD true (* risultato corrente:= TRUE *)
S boo_var1 (* boo_var1 := TRUE *)
(* il risultato corrente non viene modificato *)
LD false (* risultato corrente:= FALSE *)
S boo_var1 (* niente di fatto - boo_var1 invariata *)
B.8.2.4 Operatore R
Esempio:
(* ESEMPI DI OPERAZIONI R *)
RESETex: LD true (* risultato corrente:= TRUE *)
R boo_var1 (* boo_var1 := FALSE *)
(*il risultato corrente non viene modificato *)
ST boo_var2 (* boo_var2 := TRUE *)
LD false (*risultato corrente := FALSE *)
B-252 CJ International
Guida di riferimento ai linguaggi
Modificatori permessi: C N
Esempio:
Modificatori permessi: C N
Operando: (nessuno)
Esempio:
CJ International B-253
Guida di riferimento ai linguaggi
Operando: (nessuno)
Esempio:
B-254 CJ International
Guida di riferimento ai linguaggi
Un sottoprogramma o una funzione (scritta in un qualunque linguaggio IL, ST, LD, FBD o "C")
può essere richiamata dal linguaggio IL usando il nome come operatore.
Esempio:
Main: LD bi0
SUBPRO bi1,bi2 (* chiama sottoprog. per avere valore analogico *)
ST result (* risultato := valore restituito dal sottoprog. *)
GT vmax (* controllo overflow valore*)
RETC (* ritorno se overflow *)
LD result
MUL 1000 (* converte secondi in millisecondi *)
TMR (* converte a timer *)
ST tmval (* assegna valore convertito ad un timer *)
CJ International B-255
Guida di riferimento ai linguaggi
Modificatori permessi: C N
Esempio1:
(* equivalente FBD: *)
&
auto_mode SR
start_cmd SET1
Esempio 2
(*Si suppone R_TRIG1 istanza del blocco R_TRIG e CTU1 istanza del blocco CTU *)
LD command
ST R_TRIG1.clk
CAL R_TRIG1
LD R_TRIG1.Q
ST CTU1.cu
LDN auto_mode
ST CTU1.reset
LD 100
ST CTU1.pv
CAL CTU1
LD CTU1.Q
ST overflow
LD CTU1.cv
ST result
(* equivalente FBD: *)
r_trig CTU
command CLK Q CU
B-256 CJ International
Guida di riferimento ai linguaggi
CJ International B-257
Guida di riferimento ai linguaggi
1 gain
IN Q
Argomenti:
IN qualsiasi tipo
Q qualsiasi tipo
Descrizione:
assegnazione di una variabile ad un’altra
Questo blocco risulta molto utile per collegare direttamente l’input di un diagramma all’output
di un altro diagramma. Può anche essere usato (con una linea di negazione booleana) per
invertire lo stato di una linea connessa all’output di un diagramma.
&
bi1 1
bi2 IN Q bo100
(* equivalente ST: *)
ao23 := ai10;
bo100 := NOT (bi1 AND bi2);
(*equivalente IL: *)
LD ai10
ST ao23
LD bi1
AND bi2
STN bo100
NEG
Neg
IN Q
Argomenti:
IN INT-REALE input ed output devono avere lo stesso formato
Q INT-REALE
Descrizione:
B-258 CJ International
Guida di riferimento ai linguaggi
Neg
ai10 IN Q ao23
+
ri1 Neg
ri2 IN Q ro100
(* equivalente ST: *)
ao23 := - (ai10);
ro100 := - (ri1 + ri2);
(* equivalente IL: *)
LD ai10
MUL -1
ST ao23
LD ri1
ADD ri2
MUL -1.0
ST ro100
& AND
&
Nota: Per questo operatore, il numero degli input può essere esteso a più di due.
Argomenti:
input BOOLEANO
output BOOLEANO AND booleano dei termini in input
Descrizione:
AND booleano tra due o più termini.
&
bi51
bi52
bi53 bo5
(* equivalente ST: *)
bo10 := bi101 AND NOT (bi102);
bo5 := (bi51 AND bi52) AND bi53;
CJ International B-259
Guida di riferimento ai linguaggi
(*equivalente IL *)
LD bi101 (* risultato corrente := bi101 *)
ANDN bi102 (* risultato corrente := bi101 AND not (bi102) *)
ST bo10 (* bo10 := risultato corrente *)
LD bi51 (* risultato corrente := bi51;
& bi52 (* risultato corrente := bi51 AND bi52 *)
& bi53 (* risultato corrente := (bi51 AND bi52) AND bi53
*)
ST bo5 (* bo5 := risultato corrente *)
>=1 OR
>=1
Nota: Per questo operatore, il numero degli input può essere esteso a più di due.
Argomenti:
input BOOLEANO
output BOOLEANO OR booleano dei termini di input
Descrizione:
OR booleano di due o più termini.
>=1
bi51
bi52
bi53 bo5
(* Equivalente ST: *)
bo10 := bi101 OR NOT (bi102);
bo5 := (bi51 OR bi52) OR bi53;
(*Equivalente IL: *)
LD bi101
ORN bi102
ST bo10
LD bi51
OR bi52
OR bi53
ST bo5
=1 XOR
B-260 CJ International
Guida di riferimento ai linguaggi
=1
IN1
IN2 Q
Argomenti:
IN1 BOOLEANO
IN2 BOOLEANO
Q BOOLEANO OR esclusivo booleano dei due termini di input
Descrizione:
OR esclusivo booleano tra due termini.
=1
bi51 IN1 =1
bi52 IN2 Q IN1
(* Equivalente ST: *)
bo10 := bi101 XOR NOT (bi102);
bo5 := (bi51 XOR bi52) XOR bi53;
(* Equivalente IL: *)
LD bi101
XORN bi102
ST bo10
LD bi51
XOR bi52
XOR bi53
ST bo5
Nota: Per questo operatore, il numero degli input può essere esteso a più di due.
Argomenti:
input INT-REALE può essere di tipo INTERO o REALE
(tutti gli input devono avere lo stesso formato)
output INT-REALE addizione con segno dei termini di input
CJ International B-261
Guida di riferimento ai linguaggi
Descrizione:
Addizione di due o più variabili analogiche.
+
ai51
ai52
ai53 ao5
(*equivalente ST: *)
ao10 := ai101 + ai102;
ao5 := (ai51 + ai52) + ai53;
(*equivalente IL: *)
LD ai101
ADD ai102
ST ao10
LD ai51
ADD ai52
ADD ai53
ST ao5
-
IN1
IN2 Q
Argomenti:
IN1 INT-REALE può essere INTERO o REALE
IN2 INT-REALE (IN1 e IN2 devono avere lo stesso formato)
Q INT-REALE sottrazione (primo - secondo)
Descrizione:
Sottrazione tra due variabili analogiche (primo - secondo).
-
ai51 IN1 -
1 IN2 Q IN1
(* Equivalente ST: *)
ao10 := ai101 - ai102;
B-262 CJ International
Guida di riferimento ai linguaggi
(* Equivalente IL: *)
LD ai101
SUB ai102
ST ao10
LD ai51
SUB 1
SUB ai53
ST ao5
Nota: Per questo operatore, il numero degli input può essere esteso a più di due.
Argomenti:
input INT-REALE può essere di tipo INTERO o REALE
(tutti gli input devono avere lo stesso formato)
output INT-REALE moltiplicazione con segno dei termini di input
Descrizione:
Moltiplicazione di due o più variabili analogiche.
*
ai51
ai52
ai53 ao5
(* Equivalente ST *)
ao10 := ai101 * ai102;
ao5 := (ai51 * ai52) * ai53;
(* Equivalente IL: *)
LD ai101
MUL ai102
ST ao10
LD ai51
MUL ai52
MUL ai53
ST ao5
CJ International B-263
Guida di riferimento ai linguaggi
/
IN1
IN2 Q
Argomenti:
IN1 INT-REALE può essere di tipo INTERO o REALE (operando)
IN2 INT-REALE valore analogico diverso da 0 (divisore)
(IN1 e IN2 devono avere lo stesso formato)
Q INT-REALE divisione con segno intera o reale tra IN1 e IN2
Descrizione:
Divisione di due variabili analogiche (la prima diviso la seconda).
/
ai51 IN1 /
2 IN2 Q IN1
(* Equivalente ST: *)
ao10 := ai101 / ai102;
ao5 := (ai51 / 2) / ai53;
(* Equivalente IL: *)
LD ai101
DIV ai102
ST ao10
LD ai51
DIV 2
DIV ai53
ST ao5
AND_MASK
and_mask
IN
MSK Q
Argomenti:
IN INT deve avere formato intero
MSK INT deve avere formato intero
B-264 CJ International
Guida di riferimento ai linguaggi
Descrizione:
Mascheramento intero analogico AND bit a bit.
1 MSK Q parity
and_mask
16#abc IN
(* Equivalente ST: *)
parity := AND_MASK (xvalue, 1); (* 1 se xvalue è dispari *)
result := AND_MASK (16#abc, 16#f0f); (* uguale a 16#a0c *)
(* Equivalente IL: *)
LD xvalue
AND_MASK 1
ST parity
LD 16#abc
AND_MASK 16#f0f
ST result
OR_MASK
or mask
IN
MSK Q
Argomenti:
IN INT deve avere formato intero
MSK INT deve avere formato intero
Q INT OR logico bit a bit tra IN e MSK
Descrizione:
Mascheramento intero analogico OR bit a bit.
1 MSK Q
parity
or_mask
16#abc IN
16#f0f MSK Q
result
(* Equivalente ST: *)
is_odd := OR_MASK (xvalue, 1); (* rende sempre dispari il valore *)
CJ International B-265
Guida di riferimento ai linguaggi
(* Equivalente IL: *)
LD xvalue
OR_MASK 1
ST is_odd
LD 16#abc
OR_MASK 16#f0f
ST result
XOR_MASK
xor_mask
IN
MSK Q
Argomenti:
IN INT deve avere formato intero
MSK INT deve avere formato intero
Q INT OR esclusivo logico bit a bit tra IN e MSK
Descrizione:
Mascheramento intero analogico OR esclusivo bit a bit
xor_mask
16#012 IN
(* Equivalente ST: *)
crc32 := XOR_MASK (prevcrc, nextc);
result := XOR_MASK (16#012, 16#011); (* uguale a 16#003 *)
(* Equivalente IL: *)
LD prevcrc
XOR_MASK nextc
ST crc32
LD 16#012
XOR_MASK 16#011
ST result
NOT_MASK
not_mask
IN Q
B-266 CJ International
Guida di riferimento ai linguaggi
Argomenti :
IN INT deve avere formato intero
Q INT negazione bit a bit a 32 bit di IN
Descrizione:
Mascheramento negato intero analogico bit a bit.
(*Equivalente ST: *)
result := NOT_MASK (16#1234);
(* result is 16#FFFF_EDCB *)
(* Equivalente IL: *)
LD 16#1234
NOT_MASK
ST result
<
<
IN1
IN2 Q
Argomenti:
IN1 INT-REALE-
TMR-MSG
IN2 INT-REALE-
TMR-MSG entrambi gli input devono essere dello stesso tipo
Q BOOLEANO TRUE se IN1 < IN2
Descrizione:
Controlla se un valore sia MINORE DI un altro (per tipo analogico, timer o messaggio)
25 IN2 Q aresult
<
'z' IN1
(* Equivalente ST: *)
aresult := (10 < 25); (* aresult vale TRUE *)
mresult := ('z' < 'B'); (* mresult vale FALSE *)
(* Equivalente IL: *)
CJ International B-267
Guida di riferimento ai linguaggi
LD 10
LT 25
ST aresult
LD 'z'
LT 'B'
ST mresult
<=
<=
IN1
IN2 Q
Argomenti:
IN1 INT-REALE-MSG
IN2 INT-REALE-MSGentrambi gli input devono essere dello stesso tipo
Q BOOLEANO TRUE se IN1 <= IN2
Descrizione:
Controlla se un valore sia MINORE DI o UGUALE A un altro (per tipo analogico o
messaggio)
25 IN2 Q aresult
<=
'ab' IN1
(* Equivalente ST: *)
aresult := (10 <= 25); (* aresult vale TRUE *)
mresult := ('ab' <= 'ab'); (* mresult vale TRUE *)
(* Equivalente IL: *)
LD 10
LE 25
ST aresult
LD 'ab'
LE 'ab'
ST mresult
>
>
IN1
IN2 Q
B-268 CJ International
Guida di riferimento ai linguaggi
Argomenti:
IN1 INT-REALE-
TMR-MSG
IN2 INT-REALE-
TMR-MSG entrambi gli input devono essere dello stesso tipo
Q BOOLEANO TRUE se IN1 > IN2
Descrizione:
Controlla se un valore sia MAGGIORE DI un altro (per tipo analogico, timer o messaggio)
25 IN2 Q aresult
>
'ab' IN1
(* Equivalente ST: *)
aresult := (10 > 25); (* aresult vale FALSE *)
mresult := ('ab' > 'a'); (* mresult vale TRUE *)
(* Equivalente IL: *)
LD 10
GT 25
ST aresult
LD 'ab'
GT 'a'
ST mresult
>=
>=
IN1
IN2 Q
Argomenti:
IN1 INT-REALE-MSG
IN2 INT-REALE-MSG entrambi gli input devono essere dello
stesso tipo
Q BOOLEANO TRUE se IN1 >= IN2
Descrizione:
Controlla se un valore sia MAGGIORE DI o UGUALE A un altro (per tipo analogico o
messaggio)
CJ International B-269
Guida di riferimento ai linguaggi
>=
10 IN1
25 IN2 Q aresult
>=
'ab' IN1
(* Equivalente ST: *)
aresult := (10 >= 25); (* aresult vale FALSE *)
mresult := ('ab' >= 'ab'); (* mresult vale TRUE *)
(* Equivalente IL: *)
LD 10
GE 25
ST aresult
LD 'ab'
GE 'ab'
ST mresult
=
IN1
IN2 Q
Argomenti:
IN1 INT-REALE-MSG
IN2 INT-REALE-MSG entrambi gli input devono essere dello
stesso tipo
Q BOOLEANO TRUE se IN1 = IN2
Descrizione:
Controlla se un valore sia UGUALE A un altro (per tipo analogico o messaggio)
25 IN2 Q aresult
=
'ab' IN1
(* Equivalente ST: *)
aresult := (10 = 25); (* aresult vale FALSE *)
mresult := ('ab' = 'ab'); (* mresult vale TRUE *)
(* Equivalente IL: *)
LD 10
B-270 CJ International
Guida di riferimento ai linguaggi
EQ 25
ST aresult
LD 'ab'
EQ 'ab'
ST mresult
<>
<>
IN1
IN2 Q
Argomenti:
IN1 INT-REALE-MSG
IN2 INT-REALE-MSG entrambi gli input devono essere dello
stesso tipo
Q BOOLEANO TRUE se primo <> secondo
Descrizione:
Controlla se un valore sia DIVERSO DA un altro (per tipo analogico o messaggio)
25 IN2 Q aresult
<>
'ab' IN1
(* Equivalente ST: *)
aresult := (10 <> 25); (* aresult vale TRUE *)
mresult := ('ab' <> 'ab'); (* mresult vale FALSE *)
(* Equivalente IL: *)
LD 10
NE 25
ST aresult
LD 'ab'
NE 'ab'
ST mresult
BOO
Boo
IN Q
Argomenti:
CJ International B-271
Guida di riferimento ai linguaggi
Descrizione:
Converte una variabile da un qualsiasi tipo a tipo booleano
Boo
t#0s IN Q tres
Boo
'false' IN Q mres
(* Equivalente ST: *)
ares := BOO (10); (* ares vale TRUE *)
tres := BOO (t#0s); (* tres vale FALSE *)
mres := BOO ('false'); (* mres vale FALSE *)
(* Equivalente IL: *)
LD 10
BOO
ST ares
LD t#0s
BOO
ST tres
LD 'false'
BOO
ST mres
ANA
Ana
IN Q
Argomenti:
IN ANY qualsiasi valore analogico non intero
Q INT 0 se IN vale FALSE / 1 se IN vale TRUE
numero di millisecondi nel caso di un timer
parte intera nel caso di reale analogico
numero decimale rappresentato da una stringa
Descrizione:
Converte una variabile da un qualsiasi tipo a tipo intero
B-272 CJ International
Guida di riferimento ai linguaggi
Ana
t#1s46ms IN Q tres
Ana
'0198' IN Q mres
(* Equivalente ST: *)
bres := ANA (true); (* bres vale 1 *)
tres := ANA (t#1s46ms); (* tres vale 1046 *)
mres := ANA ('0198'); (* mres vale 198 *)
(* Equivalente IL: *)
LD true
ANA
ST bres
LD t#1s46ms
ANA
ST tres
LD '0198'
ANA
ST mres
REAL
Real
IN Q
Argomenti:
IN BOO-INT-
TMR qualsiasi valore di tipo diverso da reale analogico o
messaggio
Q REAL 0.0 se IN vale FALSE / 1.0 se IN vale TRUE
numero di millisecondi nel caso di un timer
il numero equivalente nel caso di intero analogico
Descrizione:
Converte una variabile da un qualsiasi tipo a tipo reale
Real
t#1s46ms IN Q tres
Real
198 IN Q ares
CJ International B-273
Guida di riferimento ai linguaggi
(* Equivalente ST: *)
bres := REAL (true); (* bres vale 1.0 *)
tres := REAL (t#1s46ms); (* tres vale 1046.0 *)
ares := REAL (198); (* ares vale 198.0 *)
(* Equivalente IL: *)
LD true
REAL
ST bres
LD t#1s46ms
REAL
ST tres
LD 198
REAL
ST ares
TMR
Tmr
IN Q
Argomenti:
IN INT-REALE qualsiasi valore non temporale
IN (o la parte intera di IN nel caso sia di tipo reale)
rappresenta il numero di millisecondi
Q TIMER valore temporale rappresentato da IN
Descrizione:
Converte una variabile di tipo analogico a tipo timer
Tmr
1256 IN Q
ares
Tmr
1256.3 IN Q rres
(* Equivalente ST: *)
ares := TMR (1256); (* ares := t#1s256ms *)
rres := TMR (1256.3); (*rres := t#1s256ms *)
(* Equivalente IL: *)
LD 1256
TMR
ST ares
LD 1256.3
TMR
ST rres
B-274 CJ International
Guida di riferimento ai linguaggi
MSG
Msg
IN Q
Argomenti:
IN BOO-
INT-REA qualsiasi valore che non sia un messaggio
Q MSG 'false' o 'true' se IN è di tipo booleano
rappresentazione decimale se IN è di tipo analogico
Descrizione:
Converte una variabile in messaggio
Msg
125 IN Q ares
(* Equivalente ST: *)
bres := MSG (true); (* bres vale 'TRUE' *)
ares := MSG (125); (* ares vale '125' *)
(* Equivalente IL: *)
LD true
MSG
ST bres
LD 125
MSG
ST ares
CAT
CAT
Nota: Per questo operatore, il numero degli input può essere esteso a più di due.
Argomenti:
input MSG (la lunghezza complessiva dei messaggi non deve
eccedere la capacità del messaggio in output)
output MSG concatenazione dei messaggi in input
Descrizione:
CJ International B-275
Guida di riferimento ai linguaggi
(* Equivalente IL: *)
LD 'Mr'
ADD ''
ADD 'Jones'
ST myname
SYSTEM
System
Mode
Arg Param
Argomenti:
Mode INT rappresenta il parametro di sistema ed il modo di accesso
Arg INT-TMR nuovo valore per un accesso “in scrittura”
Param INT valore del parametro cui si accede
Descrizione:
Accesso ai parametri di sistema
La seguente lista elenca i comandi disponibili (parole chiave predefinite) per la funzione
SYSTEM:
Comando Descrizione
SYS_TALLOWED lettura del tempo ciclo consentito
SYS_TCURRENT lettura del tempo ciclo corrente
SYS_TMAXIMUM lettura del tempo ciclo massimo
SYS_TOVERFLOW lettura overflow tempo ciclo
SYS_TRESET azzeramento contatori temporali
SYS_TWRITE modifica tempo ciclo
SYS_ERR_TEST controllo errori in esecuzione
SYS_ERR_READ lettura errore iniziale in esecuzione
B-276 CJ International
Guida di riferimento ai linguaggi
IN2 Q alarm
alarm
RETURN
nb_err
1 nb_err
System
SYS_TRESET Mode
0 Arg Param rc
(* Equivalente ST: *)
alarm := (SYSTEM (SYS_TOVERFLOW, 0) <> 0);
If (alarm) Then
nb_err := nb_err + 1;
rc := SYSTEM (SYS_TRESET, 0);
End_If;
OPERATE
Operate
IO
Funct
Arg Q
Argomenti:
IO ANY variabile di input o output
Funct INT azione da intraprendere
Arg INT argomento per l’azione di I/O
Q INT controllo di ritorno
Descrizione:
Accesso ad un canale di I/O
CJ International B-277
Guida di riferimento ai linguaggi
Questi sono i blocchi funzione standard supportati dal sistema ISaGRAF. Sono predefiniti e
non devono essere dichiarati nella libreria.
Nota: Nuovi blocchi funzione creati in "C", possono essere richiamati dal linguaggio FBD.
SR
SR
SET1
RESET Q1
Argomenti:
SET1 BOO se TRUE, imposta Q1 a TRUE (dominante)
RESET BOO se TRUE, imposta Q1 a FALSE
Q1 BOO memoria di stato booleano
Descrizione:
Bistabile con set dominante: Si veda la seguente “tavola di verità”:
B-278 CJ International
Guida di riferimento ai linguaggi
(* Equivalente IL: *)
LD auto_mode
AND start_cmd
ST SR1.set1
LD stop_cmd
ST SR1.reset
CAL SR1
LD SR1.Q1
ST command
RS
RS
SET
RESET1 Q1
Argomenti:
SET BOO se TRUE, imposta Q1 a TRUE
RESET1 BOO se TRUE, imposta Q1 a FALSE (dominante)
Q1 BOO memoria di stato booleano
Descrizione:
Bistabile con reset dominante: Si veda la seguente “tavola di verità”:
Set Reset1 Q1 result Q1
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
CJ International B-279
Guida di riferimento ai linguaggi
1 0 1 1
1 1 0 0
1 1 1 0
(* Equivalente IL: *)
LD start_cmd
ST RS1.set
LD stop_cmd
OR alarm
ST RS1.reset1
CAL RS1
LD RS1.Q1
ST command
R_TRIG
r_trig
CLK Q
Argomenti:
CLK BOO qualsiasi variabile booleana
Q BOO TRUE quando CLK sale da FALSE a TRUE
FALSE in tutti gli altri casi
Descrizione:
Rileva un fronte di salita di una variabile booleana
nb_edge
(* Equivalente IL: *)
LD cmd
ST R_TRIG1.clk
B-280 CJ International
Guida di riferimento ai linguaggi
CAL R_TRIG1
LD R_TRIG1.Q
ANA
ADD nb_edge
ST nb_edge
F_TRIG
f_trig
CLK Q
Argomenti:
CLK BOO qualsiasi variabile booleana
Q BOO TRUE quando CLK cambia da TRUE a FALSE
FALSE in tutti gli altri casi
Descrizione:
Rileva un fronte di discesa di una variabile booleana
nb_edge
(* Equivalente IL: *)
LD cmd
ST F_TRIG1.clk
CAL F_TRIG1
LD F_TRIG1.Q
ANA
ADD nb_edge
ST nb_edge
SEMA
sema
CLAIM
RELEASE BUSY
Argomenti:
CLAIM BOOLEANO comando di "controllo ed impostazione"
RELEASE BOOLEANO rilascia il semaforo
CJ International B-281
Guida di riferimento ai linguaggi
Descrizione:
(* "x" è una variabile booleana inizializzata a FALSE *)
busy := x;
If claim Then
x := True;
Else
If release Then
busy := False;
x := False;
End_if;
End_if;
CTU
CTU
CU
RESET Q
PV CV
Argomenti:
CU BOO input del contatore (il conteggio avviene quando CU vale
TRUE)
RESET BOO comando di reset (dominante)
PV INT valore massimo programmato
Q BOO overflow: TRUE quando CV = PV
CV INT valore del contatore
Avvertenza: Il blocco CTU non rileva fronti di salita o di caduta dell’input del contatore (CU).
Per ottenere un contatore ad impulso, si deve associare un blocco di tipo "R_TRIG" o
"F_TRIG".
Descrizione:
Conteggio (intero) da 0 fino ad un dato valore ad incrementi di uno
(* Equivalente ST: Si assuma R_TRIG1 istanza del blocco R_TRIG e CTU1 istanza del CTU
*)
CTU1(R_TRIG1(command),NOT(auto_mode),100);
overflow := CTU1.Q;
result := CTU1.CV;
(* Equivalente IL: *)
LD command
B-282 CJ International
Guida di riferimento ai linguaggi
ST R_TRIG1.clk
CAL R_TRIG1
LD R_TRIG1.Q
ST CTU1.cu
LDN auto_mode
ST CTU1.reset
LD 100
ST CTU1.pv
CAL CTU1
LD CTU1.Q
ST overflow
LD CTU1.cv
ST result
CTD
CTD
CD
LOAD Q
PV CV
Argomenti:
CD BOO input del contatore
(il conteggio a ritroso avviene quando CD vale TRUE)
LOAD BOO comando di caricamento (dominante)
(CV = PV quando LOAD vale TRUE)
PV INT valore iniziale programmato
Q BOO underflow: TRUE quando CV = 0
CV INT valore del contatore
Avvertenza: Il blocco CTD non rileva fronti di salita o di caduta dell’input del contatore (CD).
Per ottenere un contatore ad impulso, si deve associare un blocco di tipo "R_TRIG" o
"F_TRIG".
Descrizione:
Conteggio (intero) da un dato valore fino a zero a decrementi di 1
(* Equivalente ST: Si assuma F_TRIG1 istanza del blocco F_TRIG e CTD1 istanza del
blocco CTD *)
CTD1(F_TRIG1(command),load_cmd,100);
underflow := CTD1.Q;
result := CTD1.CV;
(* Equivalente IL: *)
CJ International B-283
Guida di riferimento ai linguaggi
LD command
ST F_TRIG1.clk
CAL F_TRIG1
LD F_TRIG1.Q
ST CTD1.cd
LD load_cmd
ST CTD1.load
LD 100
ST CTD1.pv
CAL CTD1
LD CTD1.Q
ST underflow
LD CTD1.cv
ST result
CTUD
CTUD
CU
CD
RESET QU
LOAD QD
PV CV
Argomenti:
CU BOO contatore a salire (quando CU vale TRUE)
CD BOO contatore a scendere (quando CD vale TRUE)
RESET BOO comando di reset (dominante)
(CV = 0 quando RESET vale TRUE)
LOAD BOO comando di caricamento (CV = PV quando LOAD vale
TRUE)
PV INT valore massimo programmato
QU BOO overflow: TRUE quando CV = PV
QD BOO underflow: TRUE quando CV = 0
CV INT valore del contatore
Avvertenza: Il blocco CTUD non rileva fronti di salita o di caduta degli input del contatore (CU
e CD). Per ottenere un contatore ad impulso, si deve associare un blocco di tipo "R_TRIG" o
"F_TRIG".
Descrizione:
Conteggio (intero) da 0 fino ad un dato valore ad incrementi di 1
o da un dato valore fino a 0 a decrementi di 1
B-284 CJ International
Guida di riferimento ai linguaggi
r_trig
add_elt CLK Q
CTUD
r_trig CU
sub_elt CLK Q CD
(* Equivalente ST: Si assumano R_TRIG1 e R_TRIG2 due istanze del blocco R_TRIG e
CTUD1 istanza del blocco CTUD *)
CTUD1(R_TRIG1(add_elt), R_TRIG2(sub_elt), reset_cmd, load_cmd,100);
full := CTUD1.QU;
empty := CTUD1.QD;
nb_elt := CTUD1.CV;
(* Equivalente IL: *)
LD add_elt
ST R_TRIG1.clk
CAL R_TRIG1
LD R_TRIG1.Q
ST CTUD1.cu
LD sub_elt
ST R_TRIG2.clk
CAL R_TRIG2
LD R_TRIG2.Q
ST CTUD1.cd
LD reset_cmd
ST CTUD1.reset
LD load_cmd
ST CTUD1.load
LD 100
ST CTUD1.pv
CAL CTUD1
LD CTUD1.QU
ST full
LD CTUD1.QD
ST empty
LD CTUD1.CV
ST nb_elt
TON
TON
IN Q
PT ET
CJ International B-285
Guida di riferimento ai linguaggi
Descrizione:
Incrementa un timer interno fino ad un dato valore.
IN
PT
ET
0
TOF
TOF
IN Q
PT ET
Argomenti:
IN BOO Se fronte di discesa, inizia ad incrementare un timer
interno
Se fronte di salita ferma ed azzera il timer interno
PT TMR massimo tempo programmato
Q BOO Se TRUE, il tempo programmato non è trascorso
ET TMR tempo attualmente trascorso
Descrizione:
Incrementa un timer interno fino ad un dato valore.
B-286 CJ International
Guida di riferimento ai linguaggi
IN
PT
ET
0
TP
TP
IN Q
PT ET
Argomenti:
IN BOO Se fronte di salita, inizia l’incremento di un timer interno
(se non viene già attualmente incrementato)
Se FALSE e solamente se il tempo è trascorso, azzera il
timer interno
I cambiamenti di IN durante il conteggio, non producono
alcun effetto.
PT TMR massimo tempo programmato
Q BOO Se TRUE: il timer è attivo (sta contando)
ET TMR tempo attualmente trascorso
Descrizione:
Incrementa un timer interno fino ad un dato valore.
IN
PT
ET
0
CMP
CJ International B-287
Guida di riferimento ai linguaggi
CMP
LT
VAL1 EQ
VAL2 GT
Argomenti:
VAL1 INT qualsiasi valore analogico intero con segno
VAL2 INT qualsiasi valore analogico intero con segno
LT BOO TRUE se val1 è Minore di val2
EQ BOO TRUE se val1 è Uguale a val2
GT BOO TRUE se val1 è Maggiore di val2
Descrizione:
Confronta due valori: riporta se sono uguali, o se il primo è minore o maggiore del
secondo.
&
manual_mode alarm
(* Equivalente IL: *)
LD level
ST CMP1.val1
LD max_level
ST CMP1.val2
CAL CMP1
LD CMP1.LT
OR CMP1.EQ
ST pump_cmd
LD CMP1.GT
ANDN manual_mode
ST alarm
STACKINT
B-288 CJ International
Guida di riferimento ai linguaggi
stackint
PUSH
POP
R1 EMPTY
IN OFLO
N OUT
Argomenti:
PUSH BOO comando push (solamente per fronti in salita)
aggiunge il valore IN sullo stack
POP BOO comando pop (solamente per fronti in salita)
elimina dallo stack l’ultimo valore inserito (in cima allo
stack)
R1 BOO svuota lo stack
IN INT valore inserito
N INT dimensione dello stack definita dall’applicazione
EMPTY BOO TRUE se lo stack è vuoto
OFLO BOO overflow: TRUE se lo stack è pieno
OUT INT valore in cima allo stack
Descrizione:
Gestione di uno stack di valori interi.
Si noti che il valore OFLO è valido solamente dopo un reset (R1 è stato impostato a TRUE
almeno una volta e poi di nuovo a FALSE).
(* Equivalente IL: *)
LD err_detect
ST STACKINT1.push
LD acknoledge
ST STACKINT1.pop
LD manual_mode
CJ International B-289
Guida di riferimento ai linguaggi
ST STACKINT1.r1
LD err_code
ST STACKINT1.IN
LD max_err
ST STACKINT1.N
CAL STACKINT1
LD auto_mode
ANDN STACKINT1.empty
ST appli_alarm
LD STACKINT1.OFLO
ST err_alarm
LD STACKINT1.OUT
ST last_error
AVERAGE
average
RUN
XIN
N XOUT
Argomenti:
RUN BOO TRUE=esecuzione / FALSE=reset
XIN REALE qualsiasi variabile reale analogica
N INT Numero di campioni definito dall’applicazione
XOUT REALE Media mobile del valore XIN
Descrizione:
Memorizza un valore ad ogni ciclo e calcola il valore tra tutti i valori precedentemente
memorizzati. Vengono memorizzati solamente gli ultimi N valori.
sensor_value XIN
(* Equivalente IL: *)
LD auto_mode
AND store_cmd
B-290 CJ International
Guida di riferimento ai linguaggi
ST AVERAGE1.run
LD sensor_value
ST AVERAGE1.xin
LD 100
ST AVERAGE1.N
CAL AVERAGE1
LD AVERAGE1.XOUT
ST ave_value
HYSTER
hyster
XIN1
XIN2
EPS Q
Argomenti:
XIN1 REALE qualsiasi valore reale analogico
XIN2 REALE per controllare se XIN1 abbia oltrepassato XIN2+EPS
EPS REALE valore di isteresi (deve essere maggiore di zero)
Q BOO TRUE se XIN1 ha oltrepassato XIN2+EPS e non è ancora
inferiore a XIN2-EPS
Descrizione:
Isteresi con limite superiore su un valore reale.
XIN2+EPS
XIN2
XIN2-EPS
XIN1
LIM_ALRM
lim_alrm
H
X QH
L Q
EPS QL
Argomenti:
H REALE limite alto
X REALE input: qualsiasi valore reale analogico
L REALE limite basso
CJ International B-291
Guida di riferimento ai linguaggi
Descrizione:
Isteresi con limite superiore/inferiore su un valore reale.
Isteresi applicata su limiti inferiore/superiore. Il valore delta usato sia per il limite superiore
che inferiore vale la metà del parametro EPS. Segue un esempio del diagramma del tempo:
H
H - EPS
X
L + EPS
L
QH
Q
QL
INTEGRAL
integral
RUN
R1
XIN
X0 Q
CYCLE XOUT
Argomenti:
RUN BOO modo: TRUE=integrate / FALSE=hold
R1 BOO reset dominante
XIN REALE ingresso: qualsiasi valore analogico reale
X0 REALE valore iniziale
CYCLE TMR periodo di campionamento
Q BOO Not R1
XOUT REALE uscita dell’integrale
Descrizione:
Integrazione di un valore reale.
B-292 CJ International
Guida di riferimento ai linguaggi
integral
manual_mode RUN
R1
sensor_value XIN
init_value X0 Q
(* Equivalente IL: *)
LD manual_mode
ST INTEGRAL1.run
STN INTEGRAL1.R1
LD sensor_value
ST INTEGRAL1.XIN
LD init_value
ST INTEGRAL1.X0
LD t#100ms
ST INTEGRAL1.CYCLE
CAL INTEGRAL1
LD INTEGRAL1.XOUT
ST controlled_value
DERIVATE
derivate
RUN
XIN
CYCLE XOUT
Argomenti:
RUN BOO modo: TRUE=normale / FALSE=reset
XIN REALE ingresso: qualsiasi valore analogico reale
CYCLE TMR periodo di campionamento
XOUT REALE uscita della derivata
Descrizione:
Derivazione di un valore reale.
sensor_value XIN
CJ International B-293
Guida di riferimento ai linguaggi
(* Equivalente IL: *)
LD manual_mode
ST DERIVATE1.run
LD sensor_value
ST DERIVATE1.XIN
LD t#100ms
ST DERIVATE1.CYCLE
CAL DERIVATE1
LD DERIVATE1.XOUT
ST derivated_value
BLINK
blink
RUN
CYCLE Q
Argomenti:
RUN BOO modo: TRUE=intermittenza / FALSE=imposta output a
false
CYCLE TMR periodo intermittenza
Q BOO output segnale intermittente
Descrizione:
Genera un segnale intermittente.
CYCLE
SIG_GEN
sig_gen
PULSE
RUN UP
PERIOD END
MAXIMUM SINE
Argomenti:
RUN BOO modo: TRUE=attivo / FALSE=reset a false
PERIOD TMR durata di un campione
MAXIMUM INT valore massimo del contatore
B-294 CJ International
Guida di riferimento ai linguaggi
Descrizione:
Genera l’intermittenza di vari segnali su un valore booleano, un contatore intero ad
incremento, un’onda sinusoidale reale.
Quando il contatore raggiunge il valore massimo, riparte da 0 (zero). Così END assume il
valore TRUE solamente per la durata di 1 PERIOD.
Timing diagram:
PERIOD
RUN
PULSE
MAXIMUM
UP
END
SINE
Queste sono le funzioni standard incorporate dal sistema ISaGRAF. Queste funzioni sono
predefinite e non devono essere dichiarate nella libreria.
CJ International B-295
Guida di riferimento ai linguaggi
MOD Modulo
MUX4, MUX8 Multiplexer (4 o 8 entrate),
SEL Selettore binario
ODD Odd parity (parità dispari)
RAND Valore random (casuale)
l Conversione dati ...................ASCII Carattere à Codice ASCII
CHAR Codice ASCII à Carattere
l Gestione stringhe ..................MLEN Lunghezza stringa
DELETE Cancellazione sottostringa
INSERT Inserimento stringa
FIND, Ricerca sottostringa
REPLACE Sostituzione sottostringa
LEFT, MID Estrazione della parte sinistra, centrale
RIGHT o destra di una stringa
DAY_TIME Tempo del giorno
l Operazioni su Array...............ARCREATE Creazione di array (matrici) di valori interi
ARREAD Lettura /
ARWRITE Scrittura elemento di array
l Gestione file di tipo binario ....F_ROPEN Apertura file binario in modo Lettura
F_WOPEN Apertura file binario in modo Scrittura
F_CLOSE Chiusura file binario
F_EOF Controllo raggiungimento fine file binario
FA_READ Lettura di un valore analogico da file binario
FA_WRITE Scrittura di un valore analogico in un file
binario
FM_READ Lettura di un messaggio stringa da file binario
FM_WRITE Scrittura di un messaggio stringa in file
binario
ABS
abs
IN Q
Argomenti:
IN REALE qualsiasi valore analogico reale con segno
Q REALE valore assoluto (sempre positivo)
Descrizione:
Restituisce il valore assoluto (positivo) di un valore reale.
(* Equivalente ST: *)
over := (ABS (delta) > range);
B-296 CJ International
Guida di riferimento ai linguaggi
(* Equivalente IL: *)
LD delta
ABS
GT range
ST over
EXPT
expt
IN
EXP Q
Argomenti:
IN REALE qualsiasi valore analogico reale con segno
EXP INT esponente intero analogico
Q REALE (IN EXP)
Descrizione:
Restituisce il risultato reale dell’operazione: (BaseEsponente) con 'Base' corrispondente al
primo argomento ed ‘Esponente’ al secondo.
(* Equivalente ST: *)
tb_size := ANA (EXPT (2.0, range) );
(* Equivalente IL: *)
LD 2.0
EXPT range
ANA
ST tb_size
LOG
log
IN Q
Argomenti:
IN REALE deve essere maggiore di zero
Q REALE logaritmo (in base 10) del valore di input
Descrizione:
CJ International B-297
Guida di riferimento ai linguaggi
(* Equivalente ST: *)
xpos := ABS (xval);
xlog := LOG (xpos);
(* Equivalente IL: *)
LD xval
ABS
ST xpos
LOG
ST xlog
POW
pow
IN
EXP Q
Argomenti:
IN REALE numero reale analogico da elevare
EXP REALE potenza (esponente)
Q REALE (IN EXP)
1.0 se IN è non 0.0 ed EXP è 0.0
0.0 se IN è 0.0 ed EXP è negativo
0.0 se entrambi IN e EXP sono 0.0
0.0 se IN è negativo e Y non corrisponde ad un intero
Descrizione:
Restituisce il risultato reale dell’operazione: (Base Esponente) con 'Base' corrispondente
al primo argomento ed ‘Esponente’ al secondo.
(* Equivalente ST: *)
result := POW (xval, power);
(* Equivalente IL: *)
LD xval
B-298 CJ International
Guida di riferimento ai linguaggi
POW power
ST result
SQRT
sqrt
IN Q
Argomenti:
IN REALE deve essere maggiore od uguale a zero
Q REALE radice quadrata del valore in input
Descrizione:
Calcola la radice quadrata di un valore reale.
(* Equivalente ST: *)
xpos := ABS (xval);
xroot := SQRT (xpos);
(* Equivalente IL: *)
LD xval
ABS
ST xpos
SQRT
ST xrout
TRUNC
trunc
IN Q
Argomenti:
IN REALE qualsiasi valore analogico reale
Q REALE se IN>0, il più grande intero minore o uguale dell’input
se IN<0, il più piccolo intero maggiore o uguale dell’input
Descrizione:
Tronca un valore reale restituendo la sola parte intera
CJ International B-299
Guida di riferimento ai linguaggi
trunc
2.67 IN Q +
trunc result
-2.0891 IN Q
(* Equivalente ST: *)
result := TRUNC (+2.67) + TRUNC (-2.0891);
(* significa: result := 2.0 + (-2.0) := 0.0; *)
(* Equivalente IL: *)
LD 2.67
TRUNC
ST temporary (* risultato temporaneo del primo TRUNC *)
LD -2.0891
TRUNC
ADD temporary
ST result
ACOS
acos
IN Q
Argomenti:
IN REALE deve essere compreso tra [-1.0 .. +1.0]
Q REALE arco coseno del valore in input (compreso tra [0.0 .. PI])
= 0.0 per input non valido
Descrizione:
Calcola l’arco coseno di un valore reale.
acos
IN Q result
(* Equivalente ST: *)
cosine := COS (angle);
result := ACOS (cosine); (* result equivale all’angolo *)
(* Equivalente IL: *)
LD angle
COS
ST cosine
ACOS
ST result
B-300 CJ International
Guida di riferimento ai linguaggi
ASIN
asin
IN Q
Descrizione:
Calcola l’arco seno di un valore reale.
asin
IN Q result
(* Equivalente ST: *)
sine := SIN (angle);
result := ASIN (sine); (* result equivale all’angolo *)
(* Equivalente IL: *)
LD angle
SIN
ST sine
ASIN
ST result
ATAN
atan
IN Q
Argomenti:
IN REALE qualsiasi valore analogico reale
Q REALE arco tangente del valore in input (compreso tra [-PI/2 ..
+PI/2])
= 0.0 per input non valido
Descrizione:
Calcola l’arco tangente di un valore reale.
CJ International B-301
Guida di riferimento ai linguaggi
tan
angle IN Q tangent
atan
IN Q result
(* Equivalente ST: *)
tangent := TAN (angle);
result := ATAN (tangent); (* result equivale all’angolo *)
(* Equivalente IL: *)
LD angle
TAN
ST tangent
ATAN
ST result
COS
cos
IN Q
Argomenti:
IN REALE qualsiasi valore analogico reale
Q REALE coseno del valore in input (compreso tra [-1.0 .. +1.0])
Descrizione:
Calcola il Coseno di un valore reale.
acos
IN Q result
(* Equivalente ST: *)
cosine := COS (angle);
result := ACOS (cosine); (* result equivale all’angolo *)
(* Equivalente IL: *)
LD angle
COS
ST cosine
ACOS
ST result
SIN
B-302 CJ International
Guida di riferimento ai linguaggi
sin
IN Q
Argomenti:
IN REALE qualsiasi valore analogico reale
Q REALE seno del valore in input (compreso tra [-1.0 .. +1.0])
Descrizione:
Calcola il Seno di un valore reale.
asin
IN Q result
(* Equivalente ST: *)
sine := SIN (angle);
result := ASIN (sine); (* result equivale all’angolo *)
(* Equivalente IL: *)
LD angle
SIN
ST sine
ASIN
ST result
TAN
tan
IN Q
Argomenti:
IN REALE non può essere uguale a PI/2 modulo PI
Q REALE tangente del valore in input
= 1E+38 per input non valido
Descrizione:
Calcola la Tangente di un valore reale.
atan
IN Q result
(* Equivalente ST: *)
CJ International B-303
Guida di riferimento ai linguaggi
(* Equivalente IL: *)
LD angle
TAN
ST tangent
ATAN
ST result
ROL
rol
IN
NbR Q
Argomenti:
IN INT qualsiasi valore analogico intero
NbR INT numero di rotazioni di 1 bit (compreso tra [1..31])
Q INT valore dopo la rotazione a sinistra
nessun effetto se NbR <= 0
Descrizione:
Esegue la rotazione a sinistra dei bit di un intero. La rotazione viene eseguita su 32 bit:
31 0
1 NbR Q result
(* Equivalente ST: *)
result := ROL (register, 1);
(* register = 2#0100_1101_0011_0101*)
(* result = 2#1001_1010_0110_1010*)
(* Equivalente IL: *)
LD register
ROL 1
ST result
ROR
B-304 CJ International
Guida di riferimento ai linguaggi
ror
IN
NbR Q
Argomenti:
IN INT qualsiasi valore analogico intero
NbR INT numero di rotazioni di 1 bit (compreso tra [1..31])
Q INT valore dopo la rotazione a destra
nessun effetto se NbR <= 0
Descrizione:
Esegue la rotazione a destra dei bit di un intero. La rotazione viene eseguita su 32 bit:
31 0
1 NbR Q result
(* Equivalente ST: *)
result := ROR (register, 1);
(* register = 2#0100_1101_0011_0101 *)
(* result = 2#1010_0110_1001_1010 *)
(* Equivalente IL: *)
LD register
ROR 1
ST result
SHL
shl
IN
NbS Q
Argomenti:
IN INT qualsiasi valore analogico intero
NbS INT numero di spostamenti di 1 bit (compreso tra [1..31])
Q INT valore dopo lo shift a sinistra
nessun effetto se NbS <= 0
il bit più basso viene sostituito da 0
Descrizione:
CJ International B-305
Guida di riferimento ai linguaggi
Esegue lo shift (spostamento) a sinistra dei bit di un intero. Lo shift viene eseguito su 32
bit:
1 NbS Q result
(* Equivalente ST: *)
result := SHL (register,1);
(* register = 2#0100_1101_0011_0101 *)
(* result = 2#1001_1010_0110_1010 *)
(* Equivalente IL: *)
LD register
SHL 1
ST result
SHR
shr
IN
NbS Q
Argomenti:
IN INT qualsiasi valore analogico intero
NbS INT numero di spostamenti di 1 bit (compreso tra [1..31])
Q INT valore dopo lo shift a destra
nessun effetto se NbS <= 0
il bit più alto viene copiato ad ogni shift
Descrizione:
Esegue lo shift (spostamento) a destra dei bit di un intero. Lo shift viene eseguito su 32
bit:
31 0
1 NbS Q result
(* Equivalente ST: *)
B-306 CJ International
Guida di riferimento ai linguaggi
(* Equivalente IL: *)
LD register
SHR 1
ST result
MIN
min
IN1
IN2 Q
Argomenti:
IN1 INT qualsiasi valore analogico intero con segno
IN2 INT (non può essere REALE)
Q INT il minimo di entrambi i valori di input
Descrizione:
Restituisce il minimo di due valori interi.
(* Equivalente ST: *)
new_value := MAX (MIN (max_value, value), min_value);
(* arrotonda il valore all’insieme [min_value..max_value] *)
(* Equivalente IL: *)
LD max_value
MIN value
MAX min_value
ST new_value
MAX
max
IN1
IN2 Q
Argomenti:
CJ International B-307
Guida di riferimento ai linguaggi
Descrizione:
Restituisce il massimo di due valori interi.
(* Equivalente ST: *)
new_value := MAX (MIN (max_value, value), min_value);
(* arrotonda il valore all’insieme [min_value..max_value] *)
(* Equivalente IL: *)
LD max_value
MIN value
MAX min_value
ST new_value
LIMIT
limit
MIN
IN
MAX Q
Argomenti:
MIN INT valore minimo consentito
IN INT qualsiasi valore analogico intero con segno
MAX INT valore massimo consentito
Q INT il valore di input arrotondato all’intervallo consentito
Descrizione:
Limita un valore intero all’interno di un dato intervallo. Mantiene lo stesso valore se è
compreso tra massimo e minimo, assume il valore massimo se è superiore, assume il
minimo se inferiore.
value IN
(* Equivalente ST: *)
new_value := LIMIT (min_value, value, max_value);
(* arrotonda il valore all’insieme [min_value..max_value] *)
B-308 CJ International
Guida di riferimento ai linguaggi
(* Equivalente IL: *)
LD min_value
LIMIT value, max_value
ST new_value
MOD
mod
IN
Base Q
Argomenti:
IN INT qualsiasi valore analogico INTERO
Base INT deve essere maggiore di zero
Q INT calcolo del modulo (input MOD base)
restituisce -1 se Base <= 0
Descrizione:
Calcola il modulo di un valore intero.
mod
IN
Base Q rest_of_division
(* Equivalente ST: *)
division_result := (value / divider); (* divisione intera *)
rest_of_division := MOD (value, divider); (* resto della divisione *)
(* Equivalente IL: *)
LD value
DIV divider
ST division_result
LD value
MOD divider
ST rest_of_division
MUX4
CJ International B-309
Guida di riferimento ai linguaggi
mux4
SEL
IN1
IN2
IN3
IN4 Q
Argomenti:
SEL INT valore intero del selettore (deve essere compreso tra
[0..3])
IN1..IN4 INT qualsiasi valore analogico intero
Q INT = valore1 se SEL = 0
= valore2 se SEL = 1
= valore3 se SEL = 2
= valore4 se SEL = 3
= 0 per tutti gli altri valori del selettore
Descrizione:
Multiplexer a 4 entrate: seleziona un valore tra 4 valori interi.
1 IN1
10 IN2
100 IN3
(* Equivalente ST: *)
range := MUX4 (choice, 1, 10, 100, 1000);
(* seleziona a partire da 4 intervalli predefiniti, ad esempio se la scelta è 1, l’intervallo sarà 10
*)
(* Equivalente IL: *)
LD choice
MUX4 1,10,100,1000
ST range
MUX8
B-310 CJ International
Guida di riferimento ai linguaggi
mux8
SEL
IN1
IN2
IN3
IN4
IN5
IN6
IN7
IN8 Q
Argomenti:
SEL INT valore intero del selettore (deve essere compreso tra
[0..7])
IN1..IN8 INT qualsiasi valore analogico intero
Q INT = valore1 se SEL = 0
= valore2 se SEL = 1
...
= valore8 se SEL = 7
= 0 per tutti gli altri valori del selettore
Descrizione:
Multiplexer a 8 entrate: seleziona un valore tra 8 valori interi.
1 IN1
5 IN2
10 IN3
50 IN4
100 IN5
500 IN6
1000 IN7
(* Equivalente ST: *)
range := MUX8 (choice, 1, 5, 10, 50, 100, 500, 1000, 5000);
(* seleziona a partire da 8 intervalli predefiniti, ad esempio se la scelta è 3, l’intervallo sarà 50
*)
(* Equivalente IL: *)
LD choice
MUX8 1,5,10,50,100,500,1000,5000
ST range
ODD
CJ International B-311
Guida di riferimento ai linguaggi
odd
IN Q
Argomenti:
IN INT qualsiasi valore analogico intero con segno
Q BOO TRUE se il valore di input è dispari
FALSE se il valore di input è pari
Descrizione:
Valuta la parità di un intero: il risultato è dispari o pari.
1 value
(* Equivalente ST: *)
If Not (ODD (value)) Then Return; End_if;
value := value + 1;
(* forza il valore ad essere sempre pari *)
(* Equivalente IL: *)
LD value
ODD
RETNC
LD value
ADD 1
ST value
RAND
rand
base Q
Argomenti:
base INT definisce un insieme di numeri permessi
Q INT valore casuale (random) compreso nell’insieme [0..base-
1]
Descrizione:
Restituisce un valore intero casuale (random) compreso nell’intervallo dato.
B-312 CJ International
Guida di riferimento ai linguaggi
rand mux4
4 base Q SEL
1 IN1
4 IN2
8 IN3
16 IN4 Q selected
(* Equivalente ST: *)
selected := MUX4 ( RAND (4), 1, 4, 8, 16 );
(*
selezione casuale di 1 di 4 valori predefiniti
il valore uscente dalla chiamata a RAND è compreso nell’insieme [0..3],
così 'selected' restituito da MUX4, avrà valore ‘casuale’
1 se 0 viene restituito da RAND,
o 4 se 1 viene restituito da RAND,
o 8 se 2 viene restituito da RAND,
o 16 se 3 viene restituito da RAND,
*)
(* Equivalente IL: *)
LD 4
RAND
MUX4 1,4,8,16
ST selected
SEL
sel
SEL
IN1
IN2 Q
Argomenti:
SEL BOO indica il valore scelto
IN1, IN2 INT qualsiasi valore intero analogico
Q INT = valore1 se SEL vale FALSE
= valore2 se SEL vale TRUE
Descrizione:
Selettore binario: seleziona un valore tra due valori interi.
ManuCmd IN1
(* Equivalente ST: *)
ProCmd := SEL (AutoMode, ManuCmd, InpCmd);
CJ International B-313
Guida di riferimento ai linguaggi
(* Equivalente IL: *)
LD AutoMode
SEL ManuCmd,InpCmd
ST ProCmd
ASCII
ascii
IN
Pos Code
Argomenti:
IN MSG qualsiasi stinga non nulla
Pos INT posizione del carattere voluto
compresa tra [1.. len] (dove len corrisponde alla
lunghezza del messaggio IN)
Code INT codice del carattere voluto
(compreso tra [0 .. 255])
restituisce 0 se Pos è esterna alla stringa
Descrizione:
Restituisce il codice ASCII di un carattere di una stringa messaggio.
(* Equivalente ST: *)
FirstChr := ASCII (message, 1);
(* FirstChr è il codice Ascii del primo carattere della stringa *)
(* Equivalente IL: *)
LD message
ASCII 1
ST FirstChr
CHAR
char
Code Q
Argomenti:
Code INT codice compreso nell’insieme [0 .. 255]
Q MSG stringa di un carattere
B-314 CJ International
Guida di riferimento ai linguaggi
Descrizione:
Restituisce un stringa messaggio composta da un carattere a partire da un dato codice
ASCII.
(* Equivalente ST: *)
Display := CHAR ( value + 48 );
(* il valore appartiene all’insieme [0..9] *)
(* 48 è il codice ascii per '0' *)
(* il risultato è costituito da una stringa di un carattere da '0' a '9' *)
(* Equivalente IL: *)
LD value
ADD 48
CHAR
ST Display
DELETE
delete
IN
NbC
Pos Q
Argomenti:
IN MSG qualsiasi messaggio non vuoto
NbC INT numero di caratteri da cancellare
Pos INT posizione del primo carattere da cancellare
(il primo carattere della stringa ha posizione 1)
Q MSG stringa modificata
stringa vuota se Pos < 1
stringa iniziale se Pos > lunghezza della stringaIN
stringa iniziale se NbC <= 0
Descrizione:
Cancella una parte di una stringa messaggio.
CJ International B-315
Guida di riferimento ai linguaggi
CAT
'ABCD'
'EFGH' complete_string
delete
IN
4 NbC
3 Pos Q sub_string
(* Equivalente ST: *)
complete_string := 'ABCD' + 'EFGH'; (* complete_string vale 'ABCDEFGH' *)
sub_string := DELETE (complete_string, 4, 3); (* sub_string vale 'ABGH' *)
(* Equivalente IL: *)
LD 'ABCD'
ADD 'EFGH'
ST complete_string
DELETE 4,3
ST sub_string
FIND
find
In
Pat Pos
Argomenti:
In MSG qualsiasi stringa messaggio
Pat MSG qualsiasi stringa non vuota (Pattern)
Pos INT = 0 se sottostringa Pat non trovata
= posizione del primo carattere della prima occorrenza
della sottostringa Pat
(la prima posizione equivale ad 1)
questa funzione è case sensitive (distingue tra
maiuscole e minuscole)
Descrizione:
Cerca una sottostringa in una stringa messaggio. Restituisce la posizione della
sottostringa nella stringa.
find
In
(* Equivalente ST: *)
B-316 CJ International
Guida di riferimento ai linguaggi
(* Equivalente IL: *)
LD 'ABCD'
ADD 'EFGH'
ST complete_string
FIND 'CDEF'
ST found
INSERT
insert
IN
Str
Pos Q
Argomenti:
IN MSG stringa iniziale
Str MSG stringa da inserire
Pos INT posizione per l’inserimento
l’inserimento avviene prima della posizione
(la prima posizione valida è 1)
Q MSG stringa modificata
stringa vuota se Pos <= 0
concatenazione delle due stringhe se Pos è maggiore
della lunghezza della stringa IN
Descrizione:
Inserimento in una data posizione, di una sottostringa in una stringa messaggio.
4 Pos Q MyNam
(* Equivalente ST: *)
MyName := INSERT ('Mr JONES', 'Frank ', 4);
(* la variabile MyName contiene 'Mr Frank JONES' *)
(* Equivalente IL: *)
LD 'Mr JONES'
INSERT 'Frank ',4
ST MyName
LEFT
CJ International B-317
Guida di riferimento ai linguaggi
left
IN
NbC Q
Argomenti:
IN MSG Qualsiasi stringa non vuota
NbC INT Numero di caratteri da estrarre
non può essere superiore alla lunghezza della stringa IN
Q MSG la parte a sinistra della stringa IN (con lunghezza = NbC)
stringa vuota se NbC <= 0
la stringa IN completa nel caso NbC >= lunghezza stringa
IN
Descrizione:
Estrazione della parte sinistra di una stringa messaggio, dato il numero di caratteri da
estrarre.
4 NbC Q CAT
left complete_string
IN
NbC Q
(* Equivalente ST: *)
complete_string := RIGHT ('12345678', 4) + LEFT ('12345678', 4);
(* complete_string vale '56781234'
il valore risultante dalla chiamata a RIGHT è '5678'
il valore risultante dalla chiamata a LEFT è '1234'
*)
MID
B-318 CJ International
Guida di riferimento ai linguaggi
mid
IN
NbC
Pos Q
Argomenti:
IN MSG qualsiasi stringa non vuota
NbC INT Numero di caratteri da estrarre
non può essere superiore alla lunghezza della stringa IN
Pos INT posizione della sottostringa
il primo carattere della sottostringa è quello cui si riferisce
Pos (la prima posizione valida è 1)
Q MSG una parte contenuta nella stringa (con lunghezza = NbC)
stringa vuota se parametri non corretti
Descrizione:
Estrazione di una parte di una stringa messaggio, dati il numero di caratteri da estrarre e
la posizione del primo carattere.
2 NbC
4 Pos Q sub_string
(* Equivalente ST: *)
sub_string := MID ('abcdefgh', 2, 4);
(* sub_string vale 'de' *)
(* Equivalente IL: *)
LD 'abcdefgh'
MID 2,4
ST sub_string
MLEN
mlen
IN NbC
Argomenti:
IN MSG qualsiasi stringa messaggio
NbC INT numero di caratteri della stringa IN
Descrizione:
Calcola la lunghezza di una stringa messaggio.
CJ International B-319
Guida di riferimento ai linguaggi
<
IN1
3 IN2 Q RETURN
left
IN
NbC Q prefix
(* Equivalente ST: *)
nbchar := MLEN (complete_string);
If (nbchar < 3) Then Return; End_if;
prefix := LEFT (complete_string, 3);
(* questo programma estrae i 3 caratteri alla sinistra della stringa ed assegna risultato alla
variabile messaggio prefix
non viene compiuta alcuna operazione se la lunghezza della stringa è inferiore ai 3 caratteri *)
(* Equivalente IL: *)
LD complete_string
MLEN
ST nbchar
LT 3
RETC
LD complete_string
LEFT 3
ST prefix
REPLACE
replace
IN
Str
NbC
Pos Q
Argomenti:
IN MSG qualsiasi stringa
Str MSG stringa da inserire (per sostituire NbC caratteri)
NbC INT numero di caratteri da cancellare
Pos INT posizione del primo carattere modificato
(la prima posizione valida è 1)
Q MSG stringa modificata:
- NbC caratteri vengono cancellati dalla posizione Pos
- la sottostringa Str viene inserita in questa posizione
restituisce una stringa vuota se Pos <= 0
restituisce la concatenazione delle stringhe (IN+Str) se
Pos è maggiore della lunghezza della stringa IN
B-320 CJ International
Guida di riferimento ai linguaggi
Descrizione:
Sostituisce una parte di un messaggio con un nuovo insieme di caratteri.
'Frank' Str
1 NbC
4 Pos Q MyName
(* Equivalente ST: *)
MyName := REPLACE ('Mr X JONES, 'Frank', 1, 4);
(* MyName vale 'Mr Frank JONES' *)
(* Equivalente IL: *)
LD 'Mr X JONES'
REPLACE 'Frank',1,4
ST MyName
RIGHT
right
IN
NbC Q
Argomenti:
IN MSG Qualsiasi stringa non vuota
NbC INT non può essere superiore alla lunghezza della stringa IN
Q MSG la parte a destra della stringa IN (con lunghezza = NbC))
stringa vuota se NbC <= 0
la stringa IN completa nel caso NbC >= lunghezza stringa
IN
Descrizione:
Estrazione della parte destra di una stringa messaggio, dato il numero di caratteri da
estrarre.
4 NbC Q CAT
left complete_string
IN
NbC Q
(* Equivalente ST: *)
CJ International B-321
Guida di riferimento ai linguaggi
DAY_TIME
day_time
SEL Q
Argomenti:
SEL INT selezione output
0= data corrente
1= orario corrente
2= giorno della settimana
Q MSG orario/data espresso da una stringa di caratteri
'YYYY/MM/DD' se SEL = 0
'HH:MM:SS' se SEL = 1
nome del giorno se SEL = 2 (es: 'Lunedì')
Descrizione:
Restituisce la data o l’orario del giorno in formato stringa messaggio.
';'
day_time Display
1 SEL Q
(* Equivalente ST: *)
Display := Day_Time (0) + ' ; ' + Day_Time (1);
(* Il formato di visualizzazione del messaggio è: 'YYYY/MM/DD ; HH:MM:SS' *)
B-322 CJ International
Guida di riferimento ai linguaggi
LD 0
DAY_TIME
ADD ';'
ADD hour_str
ST Display
ARCREATE
arcreate
ID
Size ok
Argomenti:
ID INT Identificativo dell’array (deve essere compreso tra [0..15])
Size INT numero di elementi dell’array
ok INT resoconto dell’operazione:
1 = se l’array è stato creato
2 = identificativo dell’array errato o array già creato
3 = dimensione (size) dell’array non corretta
4 = memoria non sufficiente
Descrizione:
Creazione di un array di interi.
Avvertenza: In un’applicazione, sono disponibili al più 16 array. Gli array contengono valori
interi analogici. Poiché l’allocazione della memoria avviene in modo dinamico, questa
funzione può causare un errore di sistema qualora la dimensione dell’array sia prossima alla
dimensione della memoria disponibile.
IN2 Q array_error
1
(* Equivalente ST: *)
array_error := (ARCREATE (ident, 16) <> 1));
(* Equivalente IL: *)
LD ident
ARCREATE 16
NE 1
ST array_error
ARREAD
CJ International B-323
Guida di riferimento ai linguaggi
arread
ID
Pos Q
Argomenti:
ID INT Identificativo dell’array (deve essere compreso tra [0..15])
Pos INT posizione dell’elemento nell’array
deve essere compreso tra [0 .. dimensione-1]
value INT valore dell’elemento letto
0 se gli argomenti non sono corretti
Descrizione:
Lettura di un elemento di un array di interi.
arread
ident ID
(* Equivalente ST: *)
If (array_error) Then Return; End_if;
read_value := ARREAD (ident, index);
(* array_error deriva da una chiamata a ARCREATE *)
(* Equivalente IL: *)
LD array_error
RETC
LD ident
ARREAD index
ST read_value
ARWRITE
arwrite
ID
Pos
IN ok
Argomenti:
ID INT Identificativo dell’array (deve essere compreso tra [0..15])
Pos INT posizione dell’elemento nell’array
deve essere compreso tra [0 .. dimensione-1]
IN INT nuovo valore per l’elemento
ok INT resoconto dell’operazione
1 = scrittura avvenuta
B-324 CJ International
Guida di riferimento ai linguaggi
Descrizione:
memorizza (scrive) un valore in un array di interi.
arwrite
ident ID
index Pos
value IN ok write_status
(* Equivalente ST: *)
If (array_error) Then Return; End_if;
write_status := ARWRITE (Ident, Index, value);
(*array_error deriva da una chiamata a ARCREATE *)
(* Equivalente IL: *)
LD array_error
RETC
LD ident
ARWRITE index,value
ST write_status
F_ROPEN
F_ROPEN
Path ID
Argomenti:
Path MSG nome file
Può includere il percorso (path) di accesso al file con i
simboli \ o / per specificare una directory. Per facilitare la
portabilità dell’applicazione, / o \ sono equivalenti.
ID INT numero file
0 se si è verificato un errore: il file non esiste.
Descrizione:
Apre in file binario in modo lettura, per l’uso con FX_READ e F_CLOSE.
Questa funzione non è inclusa nel simulatore ISaGRAF.
CJ International B-325
Guida di riferimento ai linguaggi
F_ROPEN
'c:\data\data.bin' Path ID file_id
=
file_id IN1
0 IN2 Q error
(* Equivalente ST: *)
file_id := F_ROPEN('c:\data \data.bin');
error := (file_id=0);
(* Equivalente IL: *)
LD 'c:\data\data.bin'
F_ROPEN
ST file_id
EQ 0
ST error
F_WOPEN
F_WOPEN
Path ID
Argomenti:
Path MSG nome file
Può includere il path (percorso) di accesso al file con i
simboli \ o / per specificare una directory. Per facilitare la
portabilità dell’applicazione, / o \ sono equivalenti.
ID INT numero file
0 se si è verificato un errore. Un eventuale file già
esistente viene sovrascritto.
Descrizione:
Apre un file binario in modo scrittura, per l’uso con FX_WRITE e F_CLOSE.
Questa funzione non è inclusa nel simulatore ISaGRAF.
=
file_id IN1
0 IN2 Q error
(* Equivalente ST: *)
file_id := F_WOPEN('c:\data\data.bin');
error := (file_id=0);
(* Equivalente IL: *)
LD 'c:\data\data.bin'
F_WOPEN
B-326 CJ International
Guida di riferimento ai linguaggi
ST file_id
EQ 0
ST error
F_CLOSE
F_CLOSE
ID ok
Argomenti:
ID INT numero file: restituito da F_ROPEN o F_WOPEN.
ok BOO stato
TRUE se la chiusura del file è OK
FALSE se si è verificato un errore
Descrizione:
Chiude un file binario aperto con le funzioni F_ROPEN o F_WOPEN.
Questa funzione non è inclusa nel simulatore ISaGRAF.
F_CLOSE
file_id ID ok ok
(* Equivalente ST: *)
file_id := F_ROPEN('data.bin');
ok := F_CLOSE(file_id);
(* Equivalente IL: *)
LD 'data.bin'
F_ROPEN
ST file_id
F_CLOSE (* file_id è già nel risultato corrente IL *)
ST ok
F_EOF
F_EOF
ID ok
Argomenti:
ID INT numero file restituito da F_ROPEN o F_WOPEN.
ok BOO indicatore di fine file (end of file)
CJ International B-327
Guida di riferimento ai linguaggi
Descrizione:
Controlla se sia stata raggiunta la fine del file.
Questa funzione non è inclusa nel simulatore ISaGRAF.
not_eof:
FA_READ
file_id ID Q VAL
F_EOF
file_id ID ok not_eof
F_CLOSE
file_id ID ok ok
(* Equivalente ST: *)
file_id := F_ROPEN('data.bin');
WHILE not(F_EOF(file_id))
VAL := FA_READ(file_id);
END_WHILE;
MESSAGE := 'last val = ' + msg(VAL);
ok := F_CLOSE(file_id);
(* Equivalente IL: *)
LD 'data.bin'
F_ROPEN
ST file_id
LD file_id
F_EOF
JMPC END_OF_FILE
NOT_EOF: LD file_id
FA_READ
ST VAL
LD file_id
F_EOF
JMPNC NOT_EOF (* se non eof, continua la lettura *)
END_OF_FILE:LD VAL
MSG
ST val_msg (* conversione di VAL in messaggio *)
LD 'last val = '
B-328 CJ International
Guida di riferimento ai linguaggi
ADD val_msg
ST MESSAGE
LD file_id
F_CLOSE
ST ok
FA_READ
FA_READ
ID Q
Argomenti:
ID INT numero file: restituito da F_ROPEN.
Q INT valore intero analogico letto dal file
Descrizione:
Lettura di una variabile ANALOGICA da un file binario. Da usarsi assieme in
concomitanza con F_ROPEN e F_CLOSE.
Questa procedura effettua un accesso sequenziale al file, dalla precedente posizione.
La prima chiamata successiva a F_ROPEN legge i primi 4 byte del file,
ogni chiamata sposta il puntatore di lettura.
Usare F_EOF per controllare se sia stata raggiunta la fine del file.
Questa funzione non è inclusa nel simulatore ISaGRAF.
FA_READ
file_id ID Q vstart
FA_READ
file_id ID Q vend
FA_READ
file_id ID Q vinc
FA_READ Tmr
file_id ID Q IN Q delta_tim
F_CLOSE
file_id ID ok ok
(* Equivalente ST: *)
file_id := F_ROPEN('voltramp.bin');
vstart := FA_READ(file_id);
vend := FA_READ(file_id);
vinc := FA_READ(file_id);
delta_tim := tmr(FA_READ(file_id));
ok := F_CLOSE(file_id);
CJ International B-329
Guida di riferimento ai linguaggi
(* Equivalente IL: *)
LD 'voltramp.bin'
F_ROPEN
ST file_id
FA_READ (* lettura vstart *)
ST vstart
LD file_id
FA_READ (*lettura vend *)
ST vend
LD file_id
FA_READ (*lettura vinc *)
ST vinc
LD file_id
FA_READ (*lettura delta_tim *)
TMR (* conversione a timer *)
ST delta_tim
LD file_id
F_CLOSE
ST ok
FA_WRITE
FA_WRITE
ID
IN ok
Argomenti:
ID INT numero file: restituito da F_WOPEN.
IN INT valore intero analogico che deve essere scritto nel file.
OK BOO stato: TRUE se ok
Descrizione:
Scrittura di una variabile ANALOGICA in un file binario.
Questa procedura effettua un accesso sequenziale al file, dalla precedente posizione.
La prima chiamata successiva a F_WOPEN scrive i primi 4 byte del file,
ogni chiamata sposta il puntatore di lettura.
Questa funzione non è inclusa nel simulatore ISaGRAF.
(* Programma FBD *)
B-330 CJ International
Guida di riferimento ai linguaggi
F_WOPEN
'data.bin' Path ID file_id
0 nb_written
FA_WRITE
file_id ID Ana +
vstart IN ok IN Q
nb_written nb_written
FA_WRITE
file_id ID Ana +
vend IN ok IN Q
nb_written nb_written
FA_WRITE
file_id ID Ana +
vinc IN ok IN Q
nb_written nb_written
FA_WRITE
file_id ID Ana +
Ana IN ok IN Q
F_CLOSE
file_id ID ok ok
= NO ERROR
nb_written IN1
4 IN2 Q RETURN
ERR_FILE ERROR
(* Equivalente ST: *)
file_id := F_WOPEN('voltramp.bin');
nb_written := 0;
nb_written := nb_written + ana(FA_WRITE(file_id,vstart));
nb_written := nb_written + ana(FA_WRITE(file_id,vend));
nb_written := nb_written + ana(FA_WRITE(file_id,vinc));
nb_written := nb_written + ana(FA_WRITE(file_id,ana(delta_tim)));
ok := F_CLOSE(file_id);
IF ( nb_written <> 4) THEN
ERROR := ERR_FILE;
END_IF;
(* Equivalente IL: *)
LD 'voltramp.bin'
F_ROPEN
ST file_id
LD 0
CJ International B-331
Guida di riferimento ai linguaggi
ST nb_written
LD file_id (* scrittura vstart *)
FA_WRITE vstart
ANA
ADD nb_written
ST nb_written
LD file_id (*scrittura vend *)
FA_WRITE vend
ANA
ADD nb_written
ST nb_written
LD file_id (*scrittura vinc *)
FA_WRITE vinc
ANA
ADD nb_written
ST nb_written
LD delta_tim (*scrittura delta_tim *)
ANA (* conversione ad intero *)
ST ana_delta_tim
LD file_id
FA_WRITE ana_delta_tim
ANA
ADD nb_written
ST nb_written
F_CLOSE
ST ok
LD nb_written
EQ 4
RETC (* ritorno se uguale a 4 *)
LD ERR_FILE (* altrimenti errore *)
ST ERROR
FM_READ
FM_READ
ID Q
Argomenti:
ID INT numero file: restituito da F_ROPEN.
Q MSG messaggio letto dal file
Descrizione:
Lettura di variabili MESSAGGIO da file binario.
Da usarsi in concomitanza con F_ROPEN e F_CLOSE.
Questa procedura effettua un accesso sequenziale al file, dalla precedente posizione.
La prima chiamata successiva a F_ROPEN legge la prima stringa del file,
ogni chiamata sposta il puntatore di lettura.
Una stringa viene conclusa da null (0), end of line ('\n') o return ('\r');
Usare F_EOF per controllare se sia stata raggiunta la fine del file.
Questa funzione non è inclusa nel simulatore ISaGRAF.
B-332 CJ International
Guida di riferimento ai linguaggi
FM_READ
file_id ID Q status1
FM_READ
file_id ID Q status2
F_EOF
file_id ID ok CLOSE_FILE
ERR_FILE ERROR
FM_READ
file_id ID Q unused_eof_mes
CLOSE_FILE:
F_CLOSE
file_id ID ok ok
(* Equivalente ST: *)
file_id := F_ROPEN('voltramp.bin');
status1 := FM_READ(file_id);
status2 := FM_READ(file_id);
IF (F_EOF(file_id)) THEN
ERROR := ERR_FILE;
unused_eof_mes := FM_READ(file_id);
END_IF;
ok := F_CLOSE(file_id);
(* Equivalente IL: *)
LD 'voltramp.bin'
F_ROPEN
ST file_id
FM_READ (* lettura status1 *)
ST status1
LD file_id
FM_READ (* lettura status2 *)
ST status2
LD file_id
F_EOF
JMPNC CLOSE_FILE (* se non end of file salta sotto *)
LD ERR_FILE
ST ERROR
LD file_id
FM_READ (* lettura unused_eof_mes *)
ST unused_eof_mes
CLOSE_FILE LD file_id
CJ International B-333
Guida di riferimento ai linguaggi
F_CLOSE
ST ok
FM_WRITE
FM_WRITE
ID
IN ok
Argomenti:
ID INT numero file: restituito da F_WOPEN.
IN MSG messaggio che deve essere scritto nel file
ok BOO stato
TRUE se operazione riuscita
Descrizione:
Scrittura di variabili MESSAGGIO su file binario.
Da usarsi in concomitanza con F_WOPEN e F_CLOSE.
Un messaggio scritto su file ha formato stringa terminata da null.
Questa procedura effettua un accesso sequenziale al file, dalla precedente posizione.
La prima chiamata successiva a F_WOPEN scrive la prima stringa sul file,
ogni chiamata sposta il puntatore di scrittura.
Questa funzione non è inclusa nel simulatore ISaGRAF.
F_WOPEN
'trace.txt' Path ID file_id
FM_WRITE
file_id ID
'First message' IN ok ok
FM_WRITE
file_id ID
'Last message' IN ok ok
F_CLOSE
file_id ID ok ok
(* Equivalente ST: *)
file_id := F_WOPEN('trace.txt');
ok := FM_WRITE(file_id,'First message');
ok := FM_WRITE(file_id,'Last message');
ok := F_CLOSE(file_id);
(* Equivalente IL: *)
LD 'trace.txt'
F_WOPEN
ST file_id
B-334 CJ International
Guida di riferimento ai linguaggi
CJ International B-335
Guida di riferimento ai linguaggi
B-336 CJ International
Guida utente al target
CJ International C-337
Guida utente al target
C.1 Introduzione
Per target ISaGRAF si intende un software in grado di eseguire in tempo reale
un'applicazione ISaGRAF su un computer industriale, sistema o scheda, secondo il seguente
ben noto schema:
Scansione ingressi
Esecuzione programmi
Sezione Iniziale
Ciclo del
Target Esecuzione programmi
ISaGRAF Sezione Sequenziale
Esecuzione programmi
Sezione Finale
Aggiornamento uscite
ll ciclo del target consiste nella scansione degli ingressi fisici del processo da pilotare,
l'elaborazione dei dati dell'applicazione secondo i programmi dell'ambiente di lavoro ISaGRAF
1 , e quindi nell'aggiornamento delle uscite fisiche.
− La prima parte di questa sezione spiega come iniziare ad utilizzare il target di uno specifico
sistema. Rispettivamente i target DOS, OS-9, VxWorks ed NT. Per ciascun sistema, verrà
inizialmente spiegato come avviare il target ISaGRAF. Successivamente verranno esposte
le informazioni relative a caratteristiche specifiche come: avvio del target all’accensione,
gestione degli errori, norme generali, …
− La quarta parte fornisce alcuni strumenti per gestire le interruzioni di energia elettrica ed il
riavvio del target.
C-338 CJ International
Guida utente al target
C.2 Installazione
L’installazione richiede circa 1 Mbyte di spazio libero su disco.
Il file batch install.bat fornito con il disco, provvede ad installare su PC tutti i file necessari per
una piattaforma specifica.
Esempio: a:\install a: c:\path
installerà i file da disco a: al disco c: directory path.
ROOT
CMDS
DEFS
LIB
RELS
USER
CJ International C-339
Guida utente al target
Non è previsto valore predefinito: Senza questa opzione, non è possibile alcuna
comunicazione con il target. In questo caso,
compare l’errore numero 7.
Il target ISaGRAF per DOS non permette comunicazioni con collegamento Ethernet.
Implementazioni speciali possono essere richieste ai fornitori.
Esempio:
MODE COM1:9600,N,8,1
I parametri di comunicazione vengono impostati ai seguenti valori:
baud rate vale 9600
nessun controllo di parità
8 bit di dati
1 bit di stop
Si noti che con alcune versioni del BIOS, non è possibile un’impostazione predefinita a 19200
baud. CJ fornisce il programma di utilità ISAMOD.EXE per impostare i parametri
dell’ambiente di lavoro:
ISAMOD COM1
equivale a MODE COM1:19200,N,8,1
C-340 CJ International
Guida utente al target
comunicazione. Serve principalmente per distinguere i dispositivi slave nel caso ci siano più
target collegati tra loro. Quando si usa il debugger dell’ambiente di lavoro, assicurarsi che il
parametro slave dell’ambiente (vedere sul Manuale utente: Gestione dei programmi)
corrisponda a quello del target.
Esempi:
isamod COM1 Configura COM1 a 19200 baud, nessuna parità, 8 bit di dati, 1 bit di
stop.
isa -t=COM1 Avvia il target ISaGRAF con il numero slave predefinito (1) e con la
porta di comunicazione COM1.
isa -s=3 -t=COM1 Avvia il target ISaGRAF con il numero slave 3 e con COM1 come porta
di comunicazione.
Avvio ISaGRAF
All’avvio del target, viene eseguito il seguente algoritmo.
Applicazione OK
Esegue applicazione
Ferma applicazione
• Definizioni
Il codice dell’applicazione consiste nel data base binario generato e scaricato dall’ambiente di
lavoro, successivamente eseguito dal target. Può essere completato dalla tavola dei simboli.
La tavola dei simboli dell’applicazione è un data base ASCII generato e scaricato
dall’ambiente di lavoro. Questa tavola rappresenta la corrispondenza tra gli oggetti simbolici e
gli oggetti interni del target. Non è normalmente richiesta dal target, ad eccezione di quando
CJ International C-341
Guida utente al target
sia necessario gestire simboli specifici definiti dall’utente. Ulteriori informazioni sulla tavola dei
simboli si possono trovare sul Manuale utente alla sezione : Tecniche di programmazione
avanzata.
• Salvataggio dell’applicazione
Quando una nuova applicazione viene scaricata sul target dal debugger dell’ambiente di
lavoro, il codice dell’applicazione viene salvato nella directory corrente del target, con il nome:
ISAx1 file di salvataggio del codice dell’applicazione ISaGRAF (dove x rappresenta il
numero slave)
La tavola dei simboli, anche se scaricata precedentemente, viene salvata nella directory
corrente del target con il nome:
ISAx6 file di salvataggio dei simboli dell’applicazione ISaGRAF (dove x rappresenta
il numero slave)
All’avvio, il target ISaGRAF, cerca nella directory corrente i file relativi a codice e simboli
dell’applicazione e li carica in memoria.
Se non ci sono simboli disponibili, il target avvia l’esecuzione del codice dell’applicazione
senza aver caricato i simboli.
Se il codice dell’applicazione non è disponibile, il target rimane in attesa del caricamento
dell’applicazione.
Esempio:
Dalla directory in cui è installato isa.exe, con il seguente comando:
copy \ISAWIN\APL\MYPROJ\appli.x8m isa11
Il programma isa.exe troverà ed eseguirà l’applicazione ‘myproj’.
Tutti questi comandi possono essere raggruppati in un file batch ed avviati dal menu
Strumenti dell’ambiente di lavoro (vedere il Manuale utente: Gestione dei programmi).
C-342 CJ International
Guida utente al target
Clock di sistema
Poiché un target ISaGRAF è progettato per essere eseguito su qualsiasi sistema, il tempo di
riferimento usato sia per la sincronizzazione del ciclo, che per l’aggiornamento delle variabili
timer, corrisponde al tick standard di circa 55 millisecondi.
Quindi non è possibile un'accuratezza migliore di 55ms per le variabili di tipo timer. Per
questa ragione, impostare una durata di ciclo minore od uguale a 55ms e diversa da zero,
causa un errore di overflow di durata del ciclo (errore 62) e cicli non temporizzati
regolarmente.
Il vantaggio del non modificare il tick di sistema, consiste nel fatto che nessuna delle
applicazioni residenti, o delle funzioni C o blocchi funzione integrate nell’applicazione,
possono essere disturbate dall’esecuzione ISaGRAF.
Tasto uscita
In fase di prova delle applicazioni non in condizioni “industriali” su un PC desktop, si può voler
fermare l’esecuzione del programma ISaGRAF: questo è possibile tramite una combinazione
di tasti, piuttosto articolata, in modo da evitare che venga attivata in modo accidentale. La
sequenza di tasti è:
CJ International C-343
Guida utente al target
Naturalmente, le applicazioni industriali non devono poter essere fermate con la pressione di
un tasto: è bene disabilitare queste combinazioni.
Un effetto collaterale pericoloso di queste uscite immediate, è costituito dal fatto che
l’interfacciamento con le schede IO non viene chiuso. Il modo corretto per fermare il target
ISaGRAF è:
- fermare l’applicazione dal debugger (chiudendo così le schede IO)
- fermare il target ISaGRAF dalla tastiera
Dimensione dell’applicazione
Il target ISaGRAF per MS-DOS è progettato per la modalità reale Intel, per questo la
dimensione massima di una struttura dati è di 64K. Il codice dell’applicazione scaricato
dall’ambiente di lavoro non deve quindi eccedere questo limite. In casi molto rari può
succedere che la struttura interna allocata da ISaGRAF ecceda questo limite e provochi il
crollo dell’applicazione dopo lo scaricamento. Inoltre, l’intera memoria disponibile è limitata ai
640K della memoria convenzionale.
C-344 CJ International
Guida utente al target
Il target ISaGRAF può essere avviato come processo singolo. In questo modo, però, le
operazioni possono risultare critiche. Si raccomanda di non sovraccaricare la parte relativa
alle comunicazioni per ottenere buone prestazioni. Sul sistema multitasking OS-9, possono
essere avviati più processi ISaGRAF singoli sulla stessa CPU, sempre che il loro numero
slave e porta di comunicazione siano differenti.
L’implementazione a singolo processo è stata progettata per piattaforme scarsamente dotate
dal punto di vista hardware, come ad esempio schede a basso costo o PC MS-DOS, o nel
caso della realizzazione di un primo prototipo per il passaggio ad una nuova piattaforma. È
quindi preferibile l’uso dell’implementazione del target ISaGRAF multiprocesso.
Il target ISaGRAF a singolo processo non è in grado di prevenire l’esecuzione di processi in
parallelo o di routine gestite da interrupt.
Non è previsto valore predefinito: Senza questa opzione, non è possibile alcuna
comunicazione con il target. In questo caso,
compare l’errore numero 7.
Il dispositivo di collegamento seriale viene aperto in modo trasferimento dati binario (senza
controllo caratteri, senza XON/XOFF). I parametri di comunicazione vengono impostati prima
dell’avvio di ISaGRAF, permettendo di assegnare liberamente i parametri necessari. Usando
l’ambiente di debug, è necessario assicurarsi (vedere il Manuale utente: Gestione dei
programmi) della corrispondenza tra i parametri di comunicazione dell’ambiente debug e del
target.
Esempio:
xmode /t0 baud=19200
Imposta il baud rate di comunicazione a 19200 baud sul dispositivo /t0
CJ International C-345
Guida utente al target
Questa opzione specifica il numero slave per il target. Sono possibili valori compresi tra 1 e
255, ad eccezione del numero 13 ($0D). Il numero slave viene usato dal protocollo di
comunicazione. Serve principalmente per distinguere i dispositivi slave nel caso ci siano più
target in esecuzione. Quando si usa il debugger dell’ambiente di lavoro, assicurarsi che il
parametro slave dell’ambiente debug (vedere il Manuale utente: Gestione dei programmi)
corrisponda a quello di un target esistente.
Esempi:
isa -t=/t0 Avvia un target ISaGRAF a processo singolo con il numero slave
predefinito (1) e la porta di comunicazione /t0.
isa -s=3 -t=/t1 Avvia un target ISaGRAF a processo singolo con il numero slave 3 e la
porta di comunicazione /t1.
isa -t=/t0 &
isa -s=3 -t=/t1 Avvia due target ISaGRAF a processo singolo. Uno con il numero slave
predefinito (1) e la porta di comunicazione /t0. L’altro con il numero slave 3
e la porta di comunicazione /t1.
Per migliorare il tempo di risposta del kernel del target ISaGRAF e delle comunicazioni, il
target viene suddiviso in due processi distinguendo la parte relativa alle comunicazioni (il
processo di comunicazione isatst o isanet) dall'esecuzione dell'applicazione (processo
relativo al kernel isaker).
Questa architettura risulta molto più flessibile. Consente di avviare più processi di
comunicazione collegati allo stesso processo kernel, oppure fino a 4 kernel collegati allo
stesso processo di comunicazione. In questo modo vengono semplificate alcune integrazioni
come il collegamento di un processo di visualizzazione ed il debugger dell'ambiente di lavoro
alla stessa applicazione o un collegamento singolo tramite la stessa porta fisica a diverse
applicazioni (fino a 4).
C-346 CJ International
Guida utente al target
Non è previsto valore predefinito: Senza questa opzione, non è possibile alcuna
comunicazione con il target. In questo caso,
compare l’errore numero 7.
Il dispositivo di collegamento seriale viene aperto in modo trasferimento dati binario (senza
controllo caratteri, senza XON/XOFF). I parametri di comunicazione vengono impostati prima
dell’avvio di ISaGRAF, permettendo di assegnare liberamente i parametri necessari. Usando
l’ambiente di debug, è necessario assicurarsi (vedere il Manuale utente: Gestione dei
programmi) della corrispondenza tra i parametri di comunicazione dell’ambiente debug e del
target.
Esempio:
xmode /t0 baud=19200
Imposta il baud rate di comunicazione a 19200 baud sul dispositivo /t0
CJ International C-347
Guida utente al target
Non è previsto valore predefinito: Senza questa opzione, non è possibile alcuna
comunicazione con il target. In questo caso, compare
l’errore numero 7.
Per ISaGRAF, il target OS-9 corrisponde al server ed il debugger al client che si connette al
numero di porta specificato.
Prima di avviare la prima sessione di debug con Ethernet, assicurarsi che il dispositivo
Ethernet di OS-9 sia configurato correttamente, inviando, ad esempio, un ping al sistema OS-
9.
C.4.2.4 Esempi:
isaker &
isatst -t=/t0
C-348 CJ International
Guida utente al target
isaker isatst
slave 1 logical Nb 1
/t0
Avvia:
Un processo kernel ISaGRAF con il numero slave predefinito (1).
Un processo di comunicazione seriale ISaGRAF, sulla porta seriale /t0, connesso al numero
slave predefinito (1) e con il numero logico predefinito (l’ultimo numero slave specificato =
valore predefinito = 1).
isaker &
isanet -t=1100
isaker isanet
slave 1 logical Nb 1 1100
Avvia:
Un processo kernel ISaGRAF con numero slave predefinito (1).
Un processo di comunicazione Ethernet ISaGRAF, sulla porta 1100, connesso al numero
slave predefinito (1), con il numero logico predefinito (ultimo numero slave specificato =
predefinito = 1).
isaker Isatst
slave 2 (isanet) /t0
logical Nb 2 (1100)
Avvia:
Un processo kernel ISaGRAF con numero slave 2
Un processo di comunicazione seriale (Ethernet) ISaGRAF, sulla porta seriale /t0 (Porta
numero 1100), connesso al numero slave 2, con numero logico predefinito (ultimo numero
slave specificato = 2).
CJ International C-349
Guida utente al target
isaker Isatst
slave 1 (isanet)
logical Nb 2 /t0
(1100)
isaker
slave 2
Avvia:
Un processo kernel ISaGRAF con numero slave 1
Un processo kernel ISaGRAF con numero slave 2
Un processo di comunicazione seriale (Ethernet) ISaGRAF, sulla porta seriale /t0 (Porta
numero 1100), connesso ai numeri slave 1 e 2, con numero logico predefinito (ultimo numero
slave specificato = 2).
isatst
(isanet) /t1
logical Nb 2 (1101)
Avvia:
Nota:
I processi di comunicazione seriale ed Ethernet possono essere usati contemporaneamente.
Collegamento comunicazioni
Poiché il Serial Character Manager di OS-9 è molto flessibile, possono essere usati quasi tutti
i dispositivi fisici bi-direzionali supportati da Microware :
Esempio:
Il collegamento seriale può essere costituito da un percorso di rete diretto ad una porta fisica
presente su una diversa CPU.
Allora l’opzione –t verrà, ad esempio, usata ne seguente modo: -t=/nr/MASTER/t0
C-350 CJ International
Guida utente al target
In cui la comunicazione viene indirizzata verso una CPU chiamata MASTER su una rete
ramnet. La porta fisica usta è /t0.
Avvio di ISaGRAF
All’avvio del target, viene eseguito il seguente algoritmo.
Applicazione OK
Esecuzione applicazione
Stop applicazione
• Definizioni
Il codice dell’applicazione è costituito dal data base binario generato e trasferito dall’ambiente
di lavoro e successivamente eseguito dal target. Può essere completato dalla tavola dei
simboli.
La tavola dei simboli dell’applicazione è un data base ASCII generato e trasferito
dall’ambiente di lavoro. Questa tavola rappresenta la corrispondenza tra gli oggetti simbolici e
gli oggetti interni del target. Non è normalmente richiesta dal target, ad eccezione di quando
sia necessario gestire simboli specifici definiti dall’utente. Ulteriori informazioni sulla tavola dei
simboli si possono trovare sul Manuale utente alla sezione: Tecniche avanzate di
programmazione.
CJ International C-351
Guida utente al target
• Salvataggio dell’applicazione
Quando una nuova applicazione viene scaricata dal debugger dell’ambiente di lavoro al
target, il codice dell’applicazione viene salvato nella directory corrente del target, con il nome:
ISAx1 file di salvataggio del codice dell’applicazione ISaGRAF (dove x rappresenta il
numero slave)
La tavola dei simboli, anche se scaricata precedentemente, viene salvata nella directory
corrente del target con il nome:
ISAx6 file di salvataggio dei simboli dell’applicazione ISaGRAF (dove x rappresenta
il numero slave)
All’avvio del target ISaGRAF, i file relativi a codice e simboli dell’applicazione vengono cercati
nella directory corrente e caricati in memoria come moduli dati con gli stessi nomi.
Se la tavola dei simboli non è disponibile, il target avvia l’esecuzione del codice
dell’applicazione senza aver caricato i simboli.
Se il codice dell’applicazione non è disponibile, il target rimane in attesa del caricamento
dell’applicazione.
Per avviare il target all’accensione con un’applicazione specifica, senza usare il collegamento
con il debugger:
• Un primo modo consiste nel copiare direttamente, con un qualsiasi programma di
trasferimento, questi file sul disco della directory corrente dal PC host in cui è installato
l’ambiente di lavoro. Queste operazioni vengono semplificate usando il menu Strumenti
dell’ambiente di lavoro (si veda il Manuale utente: Gestione dei programmi).
All’accensione del sistema, se richiesto (ad esempio per un accesso più veloce o per la
gestione di breakpoint), è possibile caricare il codice dell’applicazione (e, se necessario la
tavola dei simboli dell’applicazione) come moduli dati in memoria ISAx1 (e, se
necessario, ISAx6) dalla PROM alla RAM, con gli appositi programmi.
AVVERTENZA:
La gestione dei breakpoint del debugger ISaGRAF non funziona correttamente se il
modulo del codice dell’applicazione non è accessibile in scrittura. Questo non è un
problema, poiché l’applicazione è stata provata esaustivamente in precedenza .
C-352 CJ International
Guida utente al target
Sul PC host, se l’ambiente di lavoro ISaGRAF è installato nella directory standard \ISAWIN:
il file del codice dell’applicazione del progetto MYPROJ è:
\ISAWIN\APL\MYPROJ\appli.x6m (corrispondente a isax1 sul target).
il file dei simboli dell’applicazione del progetto MYPROJ è:
\ISAWIN\APL\MYPROJ\appli.tst (corrispondente a isax6 sul target).
CJ International C-353
Guida utente al target
− Il processo di comunicazione è in stato inattivo quando non arrivano dati dal collegamento
di comunicazione. Quando necessario, questo processo ottiene informazioni
dall’applicazione in esecuzione mediante un protocollo domanda/risposta con il processo
kernel. Il processo di comunicazione invia una domanda al kernel. Al termine del ciclo
(per mantenere sincrona l’immagine di memoria dell’applicazione), il kernel risponde al
processo di comunicazione.
I processi ISaGRAF non modificano la priorità che è stata loro assegnata. È possibile
regolare liberamente queste priorità, rispettando il funzionamento dei processi ISaGRAF
precedentemente descritto e le esigenze dell’applicazione.
Ad esempio, ci si può assicurare che ISaGRAF non venga interrotto da un processo a bassa
priorità modificando i parametri di gestione dei processi di OS-9 come MIN_AGE e
MAX_AGE.
Modo terminal
Il protocollo di comunicazione seriale del target riconosce una sequenza di 3 caratteri INVIO
(Codice ASCII $0D) e poi avvia una shell OS-9, se disponibile, sul dispositivo seriale.
Questo permette di avere il prompt di una shell OS-9 su qualsiasi terminale usando il
collegamento seriale al target ISAGRAF.
Esempio:
Dal PC host:
− Chiudere il debugger. ISaGRAF
− Avviare una sessione del Terminale Windows (gruppo accessori) con i parametri di
comunicazione correttamente impostati
− Premere 3 volte INVIO.
AVVERTENZA:
Una sessione in modalità terminal, deve essere sempre conclusa in modo corretto usando
logout e niente altro, altrimenti non sarà possibile una successiva connessione con l’ambiente
di lavoro.
C-354 CJ International
Guida utente al target
Questo modulo è sempre necessario, in qualsiasi configurazione del target ISaGRAF. Deve
essere il primo dei moduli del target ISaGRAF ad essere caricato. Il suo compito è di gestire
le risorse di sistema con molteplici target in esecuzione.
uchar ISAMOD
(
char *desc, /* Nome del dispositivo seriale */
uint32 baudrate /* Baud rate */
)
Descrizione:
Configura il dato dispositivo di collegamento seriale per il trasferimento dati in modalità
binaria allo specificato baud rate
valore di ritorno:
0 in caso di successo, BAD_RET se si verifica un errore
CJ International C-355
Guida utente al target
La variabile globale CLKRATE (uint32) deve essere inizializzata alla frequenza di clock del
sistema VxWorks. Per questo scopo si può usare:
CLKRATE = sysClkRateGet ()
Il valore predefinito di CLKRATE è 60Hz.
Il target ISaGRAF può essere eseguito come processo singolo. In questo modo, però, le
operazioni possono risultare critiche. Si raccomanda di non sovraccaricare la parte relativa
alle comunicazioni per ottenere buone prestazioni. Sul sistema multitasking VxWorks,
possono essere avviati più processi ISaGRAF singoli sulla stessa CPU, sempre che il loro
numero slave e porta di comunicazione siano differenti.
L’implementazione a singolo processo è stata progettata per piattaforme scarsamente dotate
dal punto di vista hardware, come ad esempio schede a basso costo o PC MS-DOS, o nel
caso di realizzazione di un primo prototipo per il passaggio ad una nuova piattaforma. È
quindi preferibile l’uso dell’implementazione del target ISaGRAF multiprocesso.
Il target ISaGRAF a singolo processo non è in grado di prevenire l’esecuzione di processi in
parallelo o di routine gestite da interrupt.
uchar isa_register_slave
(
uchar slave /* numero slave */
)
Descrizione:
Aggiunge la registrazione di un nuovo slave al sistema di gestione di target multipli
valore di ritorno:
0 in caso di successo, BAD_RET se si verifica un errore
Esempio:
TSK_FUNIT = "host name:/C:/ISaGRAF/target/apl/"
C-356 CJ International
Guida utente al target
Se necessario, a questa variabile, possono essere assegnati, per ciascun target, differenti
percorsi di unità prima dell’avvio di ciascun kernel.
Informazioni più dettagliate riguardo al salvataggio dei file dell’applicazione si possono trovare
nel capitolo relativo al salvataggio dell’applicazione nella sezione dedicata alle caratteristiche
specifiche.
uchar isa_main
(
uchar slave, /* Numero slave */
char *com /* Nome del dispositivo seriale */
)
Descrizione:
Avvia un processo target ISaGRAF.
valore di ritorno:
ritorna un valore diverso da zero se si verifica un errore.
Il numero slave è lo stesso descritto nel paragrafo relativo alla registrazione degli slave.
Possono essere avviati più target con numeri slave diversi e diverse porte di comunicazione.
Usando il debugger dell’ambiente di lavoro, assicurarsi che il parametro slave dell’ambiente di
lavoro (si veda il Manuale utente: Gestione dei programmi) corrisponda a quello di un target
esistente.
Esempio
Questo esempio mostra come avviare un target ISaGRAF come processo singolo con il
numero slave 1 ed il dispositivo di collegamento seriale /tyCo/1.
La directory host corrente è quella in cui è installato il target.
CJ International C-357
Guida utente al target
ld < CMDS/isa.o
registrazione slave
isa_register_slave (1)
Per migliorare il tempo di risposta del kernel del target ISaGRAF e delle comunicazioni, il
target viene suddiviso in due processi distinguendo la parte relativa alle comunicazioni (il
processo di comunicazione) dall'esecuzione dell'applicazione (processo relativo al kernel).
Questa architettura risulta molto più flessibile. Consente di avviare più processi di
comunicazione collegati allo stesso processo kernel, oppure fino a 4 kernel collegati allo
stesso processo di comunicazione. In questo modo vengono semplificate alcune integrazioni
come il collegamento di un processo di visualizzazione ed il debugger dell'ambiente di lavoro
alla stessa applicazione o un collegamento singolo tramite la stessa porta fisica a diverse
applicazioni (fino a 4).
C-358 CJ International
Guida utente al target
Per IsaGRAF il target VxWorks rappresenta il server, mentre il debugger è il client collegato
al numero di porta specificato.
Registrazione Kernel
Un kernel ISaGRAF è caratterizzato dal numero slave . Sono possibili valori compresi tra 1 e
255, ad eccezione del numero 13 ($0D). Il numero slave viene usato dal protocollo di
comunicazione e dal processo(i) di comunicazione collegato al kernel. È necessario per
distinguere i dispositivi slave nel caso ci siano più target in esecuzione. Perciò, prima di
avviare il processo(i) target ISaGRAF, è necessario registrarlo(i). Per questo scopo esiste la
subroutine isa_register_slave().
uchar isa_register_slave
(
uchar slave /* numero slave */
)
Descrizione:
Aggiunge la registrazione di un nuovo kernel slave al sistema di gestione di target multipli
valore di ritorno:
0 in caso di successo, BAD_RET se si verifica un errore
uchar isa_register_com
(
uchar com_id /* identificatore del processo di comunicazione */
)
Descrizione:
Aggiunge la registrazione di un nuovo processo di comunicazione al sistema di gestione di
target multipli
valore di ritorno:
0 in caso di successo, BAD_RET se si verifica un errore
CJ International C-359
Guida utente al target
Il valore predefinito è costituito da una stringa nulla (“”) che indica che non ci sono unità di
memorizzazione.
Esempio:
TSK_FUNIT = "host name:/C:/ISaGRAF/target/apl/"
Specifica la directory ISaGRAF\target\apl\, sulla root di C, sul PC host_name come unità di
salvataggio per i file dell’applicazione. Attenzione a non dimenticare l’ultimo slash, senza il
quale il salvataggio verrà effettuato sulla directory ISaGRAF\target\ con tutti i nomi dei file con
il prefisso apl.
Se necessario, a questa variabile, possono essere assegnati, per ciascun target, differenti
percorsi di unità prima dell’avvio di ciascun kernel.
Informazioni più dettagliate riguardo al salvataggio dei file dell’applicazione si possono trovare
nel capitolo relativo al salvataggio dell’applicazione nella sezione dedicata alle caratteristiche
specifiche.
uchar isa_main
(
uchar slave, /* Numero slave */
char *com /* NON USATO la stringa nulla va bene */
)
Descrizione:
Avvia un processo kernel ISaGRAF.
valore di ritorno:
ritorna un valore diverso da zero se si verifica un errore.
Il numero slave è lo stesso descritto nel paragrafo relativo alla registrazione degli slave.
Possono essere avviati più kernel con numeri slave diversi.
uchar tst_main_ex
(
char *com, /* Nome del dispositivo di comunicazione */
C-360 CJ International
Guida utente al target
uchar *slave, /* Locazione di un campo di 4 Byte che indica gli slave kernel
cui collegarsi */
uchar com_id /* identificativo del processo di comunicazione */
)
Descrizione:
Avvia un processo di comunicazione ISaGRAF
valore di ritorno:
ritorna un valore diverso da zero se si verifica un errore.
Esempio:
Questo esempio mostra come avviare:
Un processo kernel ISaGRAF con numero slave 1.
Un processo di comunicazione ISaGRAF identificato dal numero 1, connesso al kernel slave
1 e con il dispositivo /tyCo/1 per il collegamento seriale.
Un processo di comunicazione ISaGRAF identificato dal numero 2, connesso al kernel slave
1 e con il numero di porta 1100 per il collegamento Ethernet.
La directory host corrente è quella in cui è installato il target.
carica il modulo isakeret.o (si può caricare isakerse.o nel caso non sia necessario il
collegamento Ethernet)
ld < CMDS/isakeret.o
registrazione slave
isa_register_slave (1)
registrazione comunicazioni
isa_register_com (1)
isa_register_com (2)
CJ International C-361
Guida utente al target
TSK_FUNIT = ""
Com task
logical Nb 2 1100
/tyCo/1
(1100)
Kernel task
slave 2
C-362 CJ International
Guida utente al target
Avvio ISaGRAF
All’avvio del target, viene eseguito il seguente algoritmo.
Applicazione OK
Esecuzione applicazione
Stop applicazione
• Definizioni
Il codice dell’applicazione è costituito dal data base binario generato e trasferito dall’ambiente
di lavoro, successivamente eseguito dal target. Può essere completato dalla tavola dei
simboli.
La tavola dei simboli dell’applicazione è un data base ASCII generato e trasferito
dall’ambiente di lavoro. Questa tavola rappresenta la corrispondenza tra gli oggetti simbolici e
gli oggetti interni del target. Non è normalmente richiesta dal target, ad eccezione di quando
sia necessario gestire simboli specifici definiti dall’utente. Ulteriori informazioni sulla tavola dei
simboli si possono trovare sul Manuale utente alla sezione : Tecniche avanzate di
programmazione.
Il percorso indicante l’unità disco del file viene specificato all’avvio del target ISaGRAF
impostando la variabile globale TSK_FUNIT (valore predefinito = “” per indicare nessuna unità
disco)
• Salvataggio dell’applicazione
CJ International C-363
Guida utente al target
Quando una nuova applicazione viene scaricata dal debugger dell’ambiente di lavoro al
target, il codice dell’applicazione viene salvato (il target fa uso delle routine standard di
gestione dei file come fopen,…) nella directory corrente del target, con il nome:
pathISAx1 file di salvataggio del codice dell’applicazione ISaGRAF (dove x
rappresenta il numero slave)
La tavola dei simboli, anche se scaricata precedentemente, viene salvata nella directory
corrente del target con il nome:
pathISAx6 file di salvataggio dei simboli dell’applicazione ISaGRAF (dove x
rappresenta il numero slave)
Il percorso path viene specificato all’avvio del target ISaGRAF impostando la variabile globale
TSK_FUNIT. Una stringa vuota (“”) indica nessuna unità disco (valore predefinito).
All’avvio del target ISaGRAF, i file relativi a codice e simboli dell’applicazione vengono cercati
nella directory corrente e caricati in memoria.
Se la tavola dei simboli non è disponibile in memoria, il target avvia l’esecuzione del codice
dell’applicazione senza aver caricato i simboli.
Se il codice dell’applicazione non è disponibile in memoria, il target rimane in attesa del
caricamento dell’applicazione.
Per avviare il target all’accensione con un’applicazione specifica, senza usare il collegamento
con il debugger:
• Un primo modo consiste nel copiare direttamente, con un qualsiasi programma di
trasferimento, questi file sull’unità di salvataggio dell’applicazione dal PC host in cui è
installato l’ambiente di lavoro. Queste operazioni vengono semplificate usando il menu
“Strumenti” dell’ambiente di lavoro (si veda il Manuale utente: Gestione dei programmi).
Poi, all’accensione del sistema, se richiesto (ad esempio per un accesso più veloce o per
la gestione di breakpoint), è possibile caricare il codice dell’applicazione (e, se necessario
la tavola dei simboli dell’applicazione) dalla PROM alla RAM, con gli appositi programmi.
Poi, all’avvio di ISaGRAF (poco prima del lancio dei processi) è necessario specificare
l’indirizzo(i) di memoria del codice dell’applicazione (e, se necessario, la tavola dei simboli
dell’applicazione). Per questo, è necessario inizializzare la variabile globale SSR nel
seguente modo:
SSR[x][1].space = indirizzo del codice dell’applicazione
E, se necessario:
SSR[x][6].space = indirizzo della tavola dei simboli dell’applicazione
Per questo, è possibile scrivere una breve procedura. La variabile globale SSR è
dichiarata come struttura str_ssr, definita nel file tasy0ssr.h.
AVVERTENZA:
C-364 CJ International
Guida utente al target
Sul PC host, se l’ambiente di lavoro ISaGRAF è installato nella directory standard \ISAWIN:
il file del codice dell’applicazione del progetto MYPROJ è:
\ISAWIN\APL\MYPROJ\appli.x6m (corrispondente a isax1 sul target).
il file dei simboli dell’applicazione del progetto MYPROJ è:
\ISAWIN\APL\MYPROJ\appli.tst (corrispondente a isax6 sul target).
Sul target, quando si verifica un errore, i codici di errore vengono mostrati sull’output
predefinito stdout. In questo modo, la visualizzazione può essere rediretta con le routines
VxWorks come ioGlobalStdSet()
o ioTaskStdSet()
Nell’ultimo caso, si noti che entrambi i processi, kernel e di comunicazione, possono generare
errori.
CJ International C-365
Guida utente al target
− Il processo di comunicazione è in stato inattivo quando non arrivano dati dal collegamento
di comunicazione. Quando necessario, questo processo ottiene informazioni
dall’applicazione in esecuzione mediante un protocollo domanda/risposta con il processo
kernel. Il processo di comunicazione invia una domanda al kernel. Al termine del ciclo
(per mantenere sincrona l’mmagine di memoria dell’applicazione), il kernel risponde al
processo di comunicazione.
I processi ISaGRAF non modificano la priorità che è stata loro assegnata. È possibile
regolare liberamente queste priorità, rispettando il funzionamento dei processi ISaGRAF
precedentemente descritto e le esigenze dell’applicazione.
C-366 CJ International
Guida utente al target
Init
Il target NT ISaGRAF salva le Il target NT ISaGRAF NON salva Il target NT ISaGRAF salva le
opzioni nel set di default delle le opzioni nel set di default delle opzioni nel set di opzioni
opzioni (la sezione ISaGRAF del opzioni (la sezione ISaGRAF del associato con il numero slave (la
file ISaGRAF.INI) file ISaGRAF.INI) sezione ISaGRAFs del file
ISaGRAF.INI)
CJ International C-367
Guida utente al target
Questa opzione specifica il numero slave per il target. Sono possibili valori compresi tra 1 e
255, ad eccezione del numero 13 ($0D). Il numero slave viene usato dal protocollo di
comunicazione. Serve principalmente per distinguere i dispositivi slave nel caso ci siano più
target connessi allo stesso ambiente di lavoro host o quando sono in esecuzione più target
sullo stesso PC. Quando si usa il debugger dell’ambiente di lavoro, assicurarsi che le
impostazioni slave dell’ambiente di lavoro (vedere il Manuale utente: Gestione dei programmi)
corrispondano a quelle del target.
Valore predefinito: Il valore predefinito del numero slave è 1 o quello del file
ISaGRAF.INI
Esempio:
WISAKER.EXE -s=2
Interfaccia utente: Questa finestra appare con il comando "Options/Slave" della finestra
principale del target NT ISaGRAF.
Usando il mouse sulle frecce (Alto e Basso), è possibile modificare il valore dell’opzione. Per
attivarla è necessario riavviare il target NT ISaGRAF.
Esempi:
WISAKER -t=COM2
WISAKER -t=1101
Configurazione seriale:
È possibile definire alcune opzioni solo se è stata specificata l’opzione -t=COMx.
C-368 CJ International
Guida utente al target
I valori di default sono 19200, no parity, 8 bit di dati, 1 di stop, nessun controllo di flusso
Esempio:
WISAKER -t=COM1 baud=1200 data=8 parity=n stop=2
CJ International C-369
Guida utente al target
Esempio:
WISAKER -x=1 abilita la simulazione delle schede virtuali,
Interfaccia utente: La voce di menu appare segnata o meno secondo lo stato dell’opzione.
Le schede simulate appaiono in un pannello grafico.
C-370 CJ International
Guida utente al target
Esempi:
WISAKER -p=0
WISAKER -p=1
Interfaccia utente: Questa finestra appare con il comando "Options/Priority" della finestra
principale del target NT ISaGRAF.
La priorità più alta è quella in tempo reale e la più bassa quella in attesa.
0: Priorità in tempo reale
1: Priorità alta
2: Priorità normale
3: Priorità in attesa
Esempi:
wisaker -t=COM1 Avvia il target ISaGRAF con il numero slave predefinito (1) e con la
porta di comunicazione COM1.
wisaker -s=3 -t=COM1 Avvia il target ISaGRAF con il numero slave 3 e con la porta di
comunicazione COM1.
Avvio ISaGRAF
All’avvio del target, viene eseguito il seguente algoritmo.
CJ International C-371
Guida utente al target
Applicazione OK
Esecuzione applicazione
Stop applicazione
• Definizioni
Il codice dell’applicazione consiste nel data base binario generato e scaricato dall’ambiente di
lavoro, successivamente eseguito dal target. Può essere completato dalla tavola dei simboli.
La tavola dei simboli dell’applicazione è un data base ASCII generato e scaricato
dall’ambiente di lavoro. Questa tavola rappresenta la corrispondenza tra gli oggetti simbolici e
gli oggetti interni del target. Non è normalmente richiesta dal target, ad eccezione di quando
sia necessario gestire simboli specifici definiti dall’utente come ad esempio le funzionalità
DDE o la simulazione I/O con i nomi dei simboli. Ulteriori informazioni sulla tavola dei simboli
si possono trovare sul Manuale utente alla sezione : Tecniche di programmazione avanzata.
• Salvataggio dell’applicazione
Quando una nuova applicazione viene scaricata dal debugger dell’ambiente di lavoro al
target, il codice dell’applicazione viene nella directory corrente del target, con il nome:
ISAx1 file di salvataggio del codice dell’applicazione ISaGRAF (dove x rappresenta il
numero slave)
La tavola dei simboli, anche se scaricata precedentemente, viene salvata nella directory
corrente del target con il nome:
ISAx6 file di salvataggio dei simboli dell’applicazione ISaGRAF (dove x rappresenta il
numero slave)
C-372 CJ International
Guida utente al target
Esempio:
Dalla directory in cui è installato isa.exe, con il seguente comando:
copy \ISAWIN\APL\MYPROJ\appli.x8m isa11
Il programma WISAKER.EXE troverà ed eseguirà l’applicazione ‘myproj’.
Tutti questi comandi possono essere raggruppati in un file batch ed avviati dal menu
Strumenti dell’ambiente di lavoro (vedere il Manuale utente: Gestione dei programmi).
Specifiche DDE
Il target NT ISaGRAF è un server DDE (Dynamic Data Exchange). Qualsiasi software client
può essere connesso con il target per scambiare variabili. Ad esempio MSEXCEL può
animare dei grafici usando i valori provenienti dal target ISaGRAF via DDE.
La funzionalità DDE richiede la presenza sul target, della tavola dei simboli dell’applicazione:
CJ International C-373
Guida utente al target
Questa opzione permette di specificare la frequenza (in ms) del ciclo di notifica DDE.
Esempio:
WISAKER -d=100
Interfaccia utente: Questa finestra appare con il comando "Options/DDE" della finestra
principale del target NT ISaGRAF.
C-374 CJ International
Guida utente al target
All’avvio del target viene mostrato sull’output un messaggio iniziale composto dal numero
slave, dalla configurazione di comunicazione e dal nome del server DDE.
Clock di sistema
Poiché un target ISaGRAF è progettato per essere eseguito su qualsiasi sistema, il tempo di
riferimento usato sia per la sincronizzazione del ciclo, che per l’aggiornamento delle variabili
timer, corrisponde al tick standard di circa 10 millisecondi.
Per questo non è possibile un’accuratezza migliore di 10ms per le variabili timer. Per questa
ragione, impostare una durata di ciclo minore od uguale a 10ms e diversa da zero, causa un
errore di overflow di durata del ciclo (errore 62). Si rimanda al seguente paragrafo Durata del
ciclo, funzionamento del target per ulteriori informazioni.
I cicli vengono comunemente controllati da un tempo di ciclo, così da rilasciare la CPU ad altri
processi in esecuzione sul sistema Windows NT.
Tasti di uscita
CJ International C-375
Guida utente al target
In fase di prova delle applicazioni non in condizioni “industriali” su un PC desktop, si può voler
fermare l’esecuzione del programma ISaGRAF: questo è possibile tramite una combinazione
di tasti, in modo da evitare che venga attivata in modo accidentale. La sequenza di tasti è:
alt + F4
Un effetto collaterale pericoloso di queste uscite immediate, è costituito dal fatto che
l’interfacciamento con le schede IO non viene chiuso. Il modo corretto per fermare il target
ISaGRAF è il seguente:
- fermare l’applicazione dal debugger o premendo il pulsante Stop/Start
(chiudendo così le schede IO)
- fermare il target ISaGRAF menu di sistema
Barra di stato
C-376 CJ International
Guida utente al target
• menu "Options"
(si veda anche la prima sezione su NT: Informazioni generali sulle opzioni)
Il menu "Options" permette di accedere alle opzioni di esecuzione. Vengono proposte le
seguente opzioni:
Slave per modificare il numero slave . La modifica all’opzione avrà effetto solo al
successivo riavvio del target.
Questa funzionalità non è disponibile se il target è stato avviato con almeno
un’opzione nella riga di comando.
DDE per modificare la frequenza del ciclo di notifica DDE . La modifica all’opzione
avrà effetto solo al successivo riavvio del target.
Questa funzionalità non è disponibile se il target è stato avviato con almeno
un’opzione nella riga di comando diversa dall’opzione -s.
• Menu "Messages"
Il menu "Messages" è relativo alla gestione dell’output. Comprende i due seguenti comandi:
CJ International C-377
Guida utente al target
C-378 CJ International
Guida utente al target
CJ International C-379
Guida utente al target
a) General setup:
n Il numero slave
n la configurazione di comunicazione (Nel caso il collegamento sia Ethernet,
oltre al numero di porta, viene mostrato anche l’elenco degli indirizzi IP
disponibili in quel momento sul sistema NT)
b) DDE setup
n la frequenza del ciclo di notifica
n il nome del server DDE
n gli argomenti e gli elementi DDE. Questa informazione è di tipo generico
che non rispecchia valori reali. Infatti i campi compresi tra < > vengono
sostituiti da valori reali.
c) Application
n Lo stato dell’applicazione, costituito dal nome dell’applicazione stessa nel
caso ci sia un’applicazione in esecuzione, o dalla stringa ‘No application’ in
caso contrario.
n Il modo di esecuzione dell’applicazione, che indica se l’applicazione venga
eseguita dal processore software. In questo caso verrà visualizzata la
stringa: «Software processed». O se l’applicazione sia stata compilata da
un compilatore C. In questo caso la stringa riportata sarà: «C compiled».
nel caso non ci sia un’applicazione in esecuzione la stringa sarà: «No
application».
n La dimensione del codice in byte . Se il modo di esecuzione è «C
compiled», questo campo vale 0.
n La dimensione dei dati in byte, data dalla somma dei dati interni di
esecuzione. e dal database delle variabili.
C-380 CJ International
Guida utente al target
A seconda della configurazione delle connessioni I/O, ci saranno più o meno schede (e
diverse) e più o meno variabili (e diverse). I numeri «s:b» in cima a ciascuna scheda
rappresentano l’identificativo dello slot (s) e l’identificativo della scheda (b). La numerazione
parte da 0 e non è possibile modificarla.
Il ‘Simulatore di schede a 32 bit’ funziona con lo stato Start/Stop dell’applicazione. Quindi,
questa finestra appare se c’è un’applicazione con schede virtuali (o che usa un simulatore di
schede) in esecuzione ed è attivo il flag «Simulate I/O». Al contrario, non appena viene
premuto il pulsante Stop, viene chiusa. Questa finestra funziona assieme alle chiamate I/O.
Variable names mostra i nomi delle variabili solamente se la tavola dei simboli è
stata caricata prima del codice tic.
Hexadecimal values mostra gli interi in formato esadecimale invece del formato
decimale predefinito
CJ International C-381
Guida utente al target
C.7.1 Panoramica
Questo manuale si rivolge agli utenti che siano già a conoscenza dei concetti e dei
programmi dell’ambiente di lavoro ISaGRAF. Dopo aver sviluppato applicazioni
esclusivamente orientate all'automazione usando le funzioni di conversione, le funzioni
“C” ed i blocchi funzione contenuti nelle librerie standard fornite dalla CJ International, è
possibile sviluppare funzioni di conversione, funzioni “C” e blocchi funzione “definiti
dall’utente”. In questo modo è possibile arricchire il PLC target ISaGRAF creando nuove
librerie sfruttando al massimo la versatilità della stazione di lavoro e della piattaforma
hardware.
Per usare un cross compiler, l’ambiente di lavoro ISaGRAF, mette a disposizione dei punti
d’ingresso per avviare , in una finestra DOS, dei file comandi MS-DOS (.bat) definibili
dall’utente. Il cross compiler deve essere in grado di funzionare in una finestra di emulazione
C-382 CJ International
Guida utente al target
Note tecniche
Il gestore di Libreria permette di abbinare una descrizione ad ogni componente della libreria.
Questa nota tecnica rappresenta la guida utente del componente “C” in cui il programmatore
di automazione trova descritte le corrispondenti conversioni, funzioni o blocchi funzione nelle
applicazioni ISaGRAF.
Conversioni, funzioni o blocchi funzione “C” devono essere definite nelle note tecniche con
precisione, in modo da permettere al programmatore di automazione di usarle realmente
come funzioni ISaGRAF già pronte.
CJ International C-383
Guida utente al target
Con l’ambiente di lavoro ISaGRAF, viene installato il codice sorgente “C” delle conversioni
standard scritte dalla CJ International, che può essere una base di partenza per la creazione
di nuove funzioni. Si raccomanda di non modificare le funzioni standard per permetterne
l’uso da qualsiasi applicazione ISaGRAF. Le conversioni standard fornite con l’ambiente di
lavoro ISaGRAF sono supportate dal simulatore ISaGRAF.
C-384 CJ International
Guida utente al target
Nell’elenco appaiono sia le funzioni che le tabelle. Questo implica che non è possibile usare
lo stesso nome per una funzione e per una tabella. Una variabile non può essere abbinata ad
una funzione di conversione ancora da definire o da incorporare nel kernel ISaGRAF.
/*
Nome: tacn0def.h
File di definizione delle conversioni per il target
*/
/* eof */
La struttura "str_cnv" descrive completamente l’interfaccia. L’unico parametro di una
funzione di conversione “C” è un puntatore a tale struttura. Il campo “number” rappresenta il
numero logico della funzione di conversione (la posizione nella libreria ISaGRAF) e non deve
essere usato nella programmazione.
Il campo "direction" indica se la conversione debba essere applicata ad una variabile di input
o ad una variabile di output. Assume il valore DIR_INPUT per una conversione in input o il
valore DIR_OUTPUT per una conversione in output.
Il campo "before" rappresenta il valore prima della conversione. Questo campo ha significato
diverso per una conversione in input o per una conversione in output. Rappresenta il valore
CJ International C-385
Guida utente al target
elettrico (letto dal dispositivo di input) per una conversione in input, quando il campo
direction ha valore DIR_INPUT. Rappresenta il valore fisico (usato nelle formule
programmate) per una conversione in output, quando il campo direction ha valore
DIR_OUTPUT.
ll campo " after " rappresenta il valore dopo la conversione. Questo campo ha significato
diverso per una conversione in input o in output. Rappresenta il valore fisico (usato nelle
formule programmate) per una conversione in input, quando il campo direction ha valore
DIR_INPUT. Rappresenta il valore elettrico (inviato al dispositivo di output) per una
conversione in output, quando il campo direction ha valore DIR_OUTPUT.
Codice sorgente
Poiché la funzione di conversione può essere usata per variabili analogiche sia di input che di
output, il codice sorgente “C” della funzione è suddiviso in due parti principali: la conversione
in input e la conversione in output. Il campo direction della struttura dell’interfaccia indica la
conversione che deve essere effettuata. Il Gestore di libreria ISaGRAF genera
automaticamente lo schema completo della funzione, una volta creata la funzione di
conversione. Questo include l’algoritmo decisionale principale “IF”. Di seguito è riportato lo
schema standard di una funzione di conversione:
/*
funzione di conversione
nome: sample
*/
#include <tasy0def.h>
#include <tacn0def.h>
}
else { /*OUTPUT CONV*/
}
}
C-386 CJ International
Guida utente al target
Il modo migliore per completare la parte specifica della funzione, consiste nello scrivere due
funzioni locali separate, una per la conversione in input ed una per la conversione in output.
Queste funzioni verranno chiamate dall’algoritmo principale, come mostrato nei commenti
dell’esempio precedente, nella struttura principale IF.
Il file di include "TASY0DEF.H" del kernel ISaGRAF è necessario per le definizioni specifiche
del sistema. Contiene anche la definizione del tipo UFP, che rappresenta un puntatore ad una
funzione void e viene usato nella dichiarazione di funzione.
L’uso dei prefissi "CNV_" e "cnvdef_" consente di usare, per una conversione, una parola
chiave riservata del linguaggio “C”, oppure il nome di una funzione esistente nelle librerie “C”
ISaGRAF.
Alla funzione di dichiarazione possono essere aggiunte altre istruzioni per specifiche
operazioni di inizializzazione relative alla conversione. Il sistema ISaGRAF assicura che
questa funzione venga chiamata una sola volta all’avvio dell’applicazione.
CJ International C-387
Guida utente al target
Prima di collegare le nuove funzioni al kernel, è necessario scrivere un altro file sorgente “C”,
chiamato "GRCN0LIB.C", ed inserirlo (con le relative funzioni di conversione) nelle lista dei
file per il linker. Il file "GRCN0LIB.C" contiene solamente un array di dichiarazioni di funzioni.
Questo array viene letto durante le operazioni di inizializzazione per creare un collegamento
dinamico con le funzioni di conversione scritte in “C”. Questo è un esempio di tale file:
NULL };
Con questo file, è possibile generare un nuovo kernel che include tutte le conversioni
esistenti. Un kernel può anche essere realizzato specificatamente per un singolo progetto,
inserendo nell’array CNVDEF unicamente le conversioni usate nel progetto. Il file
"GRCN0LIB.C" viene generato automaticamente dal Generatore di codice ISaGRAF, nella
fase di realizzazione del codice dell’applicazione. Il file viene collocato nella directory del
progetto ISaGRAF ed incorpora solamente le conversioni usate nel progetto.
Limiti
La libreria ISaGRAF può contenere fino a 128 funzioni di conversione. Qualsiasi tipo di
operazione può essere elaborata in una funzione di conversione. Si noti che le funzioni
vengono chiamate dal ciclo ISaGRAF in modo sincrono, quindi l’esecuzione della funzione
influisce direttamente sul tempo di ciclo.
C-388 CJ International
Guida utente al target
Le nuove funzioni non possono essere integrate nel Simulatore ISaGRAF. Le applicazioni
ISaGRAF possono essere simulate solo prima dell’inserimento delle funzioni di conversione
non standard.
Per chiamare una funzione “C” dal linguaggio ST, è necessario rispettare le convenzioni di
chiamata a funzione del linguaggio. I parametri di chiamata della funzione sono scritti dopo il
nome della funzione, circondati da parentesi e separati da virgole. L’espressione costituisce il
valore ritornato dalla funzione. Una chiamata a funzione “C” può essere inserita in una
qualunque istruzione di assegnamento o espressione composita. Questo che segue, è un
esempio di una funzione “C” usata in un’istruzione di assegnamento:
Un programma FBD può chiamare qualsiasi funzione “C”. Una funzione viene usata come
una qualunque casella di funzione standard. Il parametro di ritorno è collegato al lato destro
della casella. Quello che segue è l’aspetto standard di tale casella funzione:
CJ International C-389
Guida utente al target
Parametri XXX
di chiamata
Parametro di
ritorno
Una funzione "C" può essere chiamata da qualsiasi blocco azione SFC o usata in qualsiasi
condizione booleana associata ad una transizione.
L’elenco nella parte superiore della finestra mostra i parametri della funzione “C”, ordinati
secondo il prototipo di chiamata di funzione: per primi i parametri di chiamata, infine il
parametro di ritorno. La porzione inferiore della finestra mostra la descrizione dettagliata del
parametro correntemente evidenziato nell’elenco:
Un parametro può avere uno qualsiasi dei tipi di dati ISaGRAF: booleano, intero analogico,
reale analogico, timer o messaggio. è necessario distinguere tra analogici interi e reali. Di
seguito viene riportata la corrispondenza tra tipi ISaGRAF e tipi “C”:
C-390 CJ International
Guida utente al target
Un messaggio passato ad una funzione “C” non può contenere caratteri null. La stringa
passata al codice “C” è conclusa da null. Non bisogna dimenticare che il parametro di ritorno
deve essere l’ultimo della lista. L’assegnamento del nome deve sottostare alle seguenti
regole:
Non è possibile assegnare lo stesso nome a più variabili. Un parametro di chiamata non può
avere lo stesso nome del parametro di ritorno. Lo stesso nome può essere usato per
parametri di diverse funzioni. Il nome predefinito per il parametro di ritorno è “Q”. Il nome può
essere modificato liberamente. Il nome del parametro serve ad identificare il parametro
stesso nel codice sorgente “C”.
CJ International C-391
Guida utente al target
typedef struct {
/* CHIAMATA */ T_REAL _param1;
/* RITORNO */ T_REAL _param2;
} str_arg;
Ogni campo della struttura "str_arg" corrisponde ad un parametro della funzione. Il parametro
di ritorno della funzione è l’ultimo della struttura. I parametri di chiamata hanno, nella
struttura, lo stesso ordine stabilito nella definizione di funzione. È definito un identificativo in
maiuscolo per aver accesso direttamente ad un parametro della struttura passata
all’implementazione “C” della funzione. I nomi degli identificativi corrispondono a quelli inseriti
per la definizione della funzione dal Gestore di libreria ISaGRAF.
Il file di definizione “C” viene aggiornato ogni volta che l’interfaccia della funzione viene
modificata dal Gestore di libreria ISaGRAF. Questo assicura la perfetta corrispondenza tra
l’implementazione della funzione ed il suo uso nei programmi delle applicazioni ISaGRAF.
Codice sorgente
Quello che segue è lo schema standard dell’implementazione di una funzione “C”:
C-392 CJ International
Guida utente al target
Alla funzione di dichiarazione possono essere aggiunte altre istruzioni per specifiche
operazioni di inizializzazione relative alla funzione. Il sistema ISaGRAF assicura che questa
funzione venga chiamata una sola volta all’avvio dell’applicazione. La funzione di
dichiarazione viene chiamata per qualsiasi funzione integrata, anche se non viene usata nei
programmi dell’applicazione ISaGRAF. L’esecuzione del kernel ISaGRAF fallisce con un
errore fatale se una funzione “C” usata nell’applicazione non è integrata nel kernel.
CJ International C-393
Guida utente al target
Prima di collegare le nuove funzioni al kernel, è necessario scrivere un altro file sorgente “C”,
chiamato "GRUS0LIB.C", ed inserirlo (con le relative funzioni) nelle lista dei file per il linker. Il
file "GRUS0LIB.C" contiene solamente un array di dichiarazioni di funzioni. Questo array
viene letto durante le operazioni di inizializzazione per creare un collegamento dinamico con
le funzioni scritte in “C”. Questo è un esempio di tale file:
NULL };
Limiti
La libreria ISaGRAF può contenere fino a 128 funzioni “C”. Qualsiasi tipo di operazione può
essere elaborata in una funzione. Si noti che le funzioni vengono chiamate dal ciclo ISaGRAF
in modo sincrono, quindi l’esecuzione della funzione influisce direttamente sul tempo di ciclo.
Un esempio completo
Quella che segue è la programmazione completa della funzione "sample", che esegue
solamente un’addizione. Subito sotto la nota tecnica della funzione:
C-394 CJ International
Guida utente al target
nome: SAMPLE
descrizione: esegue solamente un’addizione intera analogica
typedef struct {
T_ANA _par1; /* parametro di chiamata #1 */
T_ANA _par2; /* parametro di chiamata #2 */
T_ANA _sum; /* parametro di ritorno */
} str_arg;
CJ International C-395
Guida utente al target
Subito sotto il codice sorgente “C” della funzione. Solamente le righe in grassetto sono state
inserite manualmente dal programmatore C.
I blocchi funzione "C" associano operazioni e dati statici. Completano l’insieme delle funzioni
“C” permettendo l’elaborazione di oggetti statici. Vengono comunemente usati per estendere
le peculiarità standard dei linguaggi ST e FBD. Diversamente dalle funzioni, che processano
valori, i blocchi funzione possono processare dati statici. Questo significa che l’algoritmo di
un blocco funzione è in grado di gestire variazioni di dati nel tempo.
I blocchi funzione vengono scritti in linguaggio “C”, compilati e collegati al kernel ISaGRAF.
Prima di poter usare i nuovi blocchi funzione nei progetti ISaGRAF, è necessario installare il
kernel espanso sul target PLC ISaGRAF. I nuovi blocchi funzione non possono essere
integrati nel Simulatore ISaGRAF. Le applicazioni ISaGRAF possono essere simulate solo
prima dell’inserimento delle funzioni non standard.
C-396 CJ International
Guida utente al target
blocco funzione viene incluso nel calcolo del tempo di ciclo. È bene assicurarsi che un
blocco funzione non contenga “operazioni di attesa”, in modo da evitare che il ciclo di
elaborazione ISaGRAF non ecceda il tempo massimo consentito.
La variabile statica non visibile "stato_precedente" è necessaria al calcolo del fronte. Questa
variabile deve essere diversa per ogni uso del blocco funzione “TRIG” nell’applicazione. Le
istanze dei blocchi funzione usati nel linguaggio ST devono essere dichiarate nel dizionario.
Poiché un blocco funzione possiede internamente dei dati non visibili, ogni copia (istanza) di
un blocco funzione deve essere identificata da un nome univoco. L’assegnamento del nome
al tipo di blocco viene effettuato usando il gestore di libreria. L’assegnamento del nome alle
istanze viene effettuata usando l’editor del dizionario.
I blocchi funzione usati nel linguaggio FBD non devono essere dichiarati, poiché l’editor FBD
ISaGRAF provvede a dichiarare automaticamente le istanze dei blocchi usati. Le istanze di
blocco funzione dichiarate automaticamente dall’editor FBD, hanno sempre campo di validità
LOCALE al programma modificato.
Per chiamare un blocco funzione “C” dal linguaggio ST, è necessario rispettare le convenzioni
di chiamata del linguaggio. I parametri di chiamata del blocco sono scritti dopo il nome della
CJ International C-397
Guida utente al target
FBINSTNAME.parname
Le istanze dei blocchi funzione usati nel linguaggio ST devono essere dichiarate nel
dizionario. Ogni copia (istanza) di un blocco funzione deve essere identificata da un nome
univoco: segue sotto un esempio di una dichiarazione di istanza nel dizionario ISaGRAF:
TRIG1 (boo_input1);
TRIG2 (boo_input2);
Command := (TRIG1.Q & TRIG2.Q);
Un programma FBD può chiamare qualsiasi blocco funzione “C”. Un blocco funzione viene
usato come una qualunque casella di funzione standard. Il parametri di chiamata sono
collegati al lato sinistro della casella. I parametri di ritorno sono connessi al lato destro della
casella. Quello che segue è il formato standard di un blocco funzione:
Nome del blocco funzione
I blocchi funzione usati dal linguaggio FBD non devono essere dichiarati, poiché l’editor FBD
provvede a dichiarare automaticamente le istanze dei blocchi usati. Le istanze dei blocchi
funzione dichiarate automaticamente dall’editor FBD hanno sempre campo di validità
LOCALE al programma modificato. Subito sotto viene riportato l’esempio precedente
programmato in linguaggio FBD:
r_trig
&
boo_input1 CLK Q
r_trig Command
boo_input2 CLK Q
C-398 CJ International
Guida utente al target
L’elenco nella parte superiore della finestra mostra i parametri del blocco funzione “C”,
ordinati secondo il prototipo di chiamata di funzione: per primi i parametri di chiamata, infine i
parametri di ritorno. La porzione inferiore della finestra mostra la descrizione dettagliata del
parametro correntemente evidenziato nell’elenco:
Un parametro può avere uno qualsiasi dei tipi di dati ISaGRAF: booleano, intero analogico,
reale analogico, timer o messaggio. è necessario distinguere tra analogici interi e reali. Di
seguito viene riportata la corrispondenza tra tipi ISaGRAF e tipi “C”:
Un messaggio passato ad una funzione “C” non può contenere caratteri null. La stringa
passata al codice “C” è conclusa da null. Non bisogna dimenticare che i parametri di ritorno
CJ International C-399
Guida utente al target
devono essere gli ultimi della lista. L’assegnamento del nome deve sottostare alle seguenti
regole:
typedef struct {
/* CALL */ T_BOO _par1;
/* CALL */ T_BOO _par2;
} str_arg;
C-400 CJ International
Guida utente al target
#define FBLPNO_Q1 0
#define FBLPNO_Q2 1
Ogni campo della struttura "str_arg" corrisponde ad un parametro di chiamata del blocco
funzione. I parametri hanno, nella struttura, lo stesso ordine stabilito nella definizione di
blocco funzione. È definito un identificativo in maiuscolo per aver accesso direttamente ad un
parametro della struttura passata all’implementazione “C” del blocco funzione. I nomi degli
identificativi corrispondono a quelli inseriti per la definizione del blocco funzione dal Gestore di
libreria ISaGRAF.
L’ordine usato per la numerazione dei parametri di ritorno è quello stabilito nella definizione di
blocco funzione. Il numero logico del primo parametro di ritorno è sempre 0.
è preferibile usare gli identificativi definiti invece dei valori numerici per rappresentare i
parametri di ritorno nella programmazione del sorgente “C”. In questo modo il file sorgente
può essere facilmente ricompilato dopo una modifica alla definizione dell’interfaccia.
Il file di definizione “C” viene aggiornato ogni volta che l’interfaccia del blocco funzione viene
modificata dal Gestore di libreria ISaGRAF. Questo assicura la perfetta corrispondenza tra
l’implementazione del blocco funzione ed il suo uso nei programmi delle applicazioni
ISaGRAF.
Codice sorgente
L’implementazione in linguaggio "C" di un blocco funzione è suddivisa in tre diversi punti
d’ingresso:
q servizio di inizializzazione
q servizio di attivazione – elaborazione dei parametri di chiamata
q servizio di lettura dei parametri di ritorno
CJ International C-401
Guida utente al target
Per ogni istanza di uno stesso blocco funzione viene usato lo stesso codice, che non viene
quindi duplicato. Una struttura di dati statici è associata ad ogni istanza. L’accesso a tali dati,
che contengono le “variabili non visibili” dell’istanza del blocco funzione, non può avvenire
direttamente da programmazione ISaGRAF.
Il “servizio di attivazione” viene chiamato una volta per ogni istanza di ciascun blocco usato,
per ciascun ciclo target. Esso provvede ad elaborare i parametri di chiamata ed aggiorna i
dati ad essi associati. Rappresenta “l’algoritmo principale” del blocco funzione.
Il “servizio di lettura” viene chiamato dal kernel ISaGRAF per leggere il valore corrente di un
parametro di ritorno di un’istanza. Questo servizio non necessita di particolari operazioni di
calcolo. Provvede solo a trasferire i dati non visibili all’applicazione ISaGRAF.
Diagramma funzionale:
Parametri di Implementazione di Function block
Parametri di
chiamata ritorno
attivazione lettura
(Allocazione)
Inizializzazione
La memoria occorrente per la struttura dati di ogni istanza viene allocata dal sistema
ISaGRAF all’avvio dell’applicazione. Un puntatore alla struttura dati dell’istanza associata,
viene passato ai servizi “attivazione” e “lettura”.
C-402 CJ International
Guida utente al target
Lo schema del codice sorgente “C” per definizione di tipo della struttura dati viene generato
automaticamente dal gestore di libreria ISaGRAF. Il tipo della struttura dati viene sempre
chiamato “str_data”. Il programmatore non dovrebbe cambiare questo nome, per mantenere
la compatibilità con gli header dei servizi. I dati non visibili generalmente raggruppano le
variabili interne con un’immagine dei parametri di ritorno. Il servizio “lettura” di un blocco
funzione viene usato solamente per accedere ai programmi di ritorno e non dovrebbe essere
usato per eseguire altre operazioni.
• Il servizio di inizializzazione
Il servizio di “inizializzazione” di un blocco funzione viene chiamato dal kernel ISaGRAF
all’avvio dell’applicazione. Permette al programmatore “C” di richiedere al sistema
l’allocazione della memoria per un’istanza. Subito sotto è riportato un esempio di
programmazione standard per il servizio di inizializzazione:
• Il servizio di attivazione
Il servizio di “attivazione” viene chiamato ad ogni ciclo del target, per ogni istanza di blocco
funzione usata dall’applicazione. Questo servizio elabora i parametri di chiamata ed esegue
l’algoritmo principale del blocco funzione per aggiornare i dati statici non visibili ed i parametri
relativi ai valori di ritorno. Subito sotto lo schema standard del servizio di attivazione:
void FBACT_xxx (
uint16 hinstance, /* "xxx" è il nome del blocco funzione */
/* numero logico dell’istanza */
str_data *data, /* data: puntatore alla struttura dati dell’istanza */
str_arg *arg /* puntatore alla struttura dei parametri di chiamata */
)
{
}
L’argomento "hinstance" rappresenta il numero logico dell’istanza. È riservato per operazioni
interne ISaGRAF e non deve essere usato nella programmazione del servizio. L’argomento
“data” è un puntatore far alla struttura dati associata all’istanza. L’argomento “arg” è un
puntatore far alla struttura contenente i valori dei parametri di chiamata. Per accedere ai
CJ International C-403
Guida utente al target
campi della struttura “arg”, il programmatore dovrebbe usare gli identificatori definiti
nell’header “C” del blocco funzione.
typedef struct {
T_BOO prev_state; /* stato precedente dell’input del trigger */
T_BOO edge_detect; /* valore del fronte: immagine del parametro di
ritorno */
} str_data;
/* activation service */
C-404 CJ International
Guida utente al target
high_alarm := FB1.QH;
low_alarm := FB1.QL; servizio
any_alarm := FB1.Q; LETTURA
Poiché il servizio di “lettura” può essere chiamato più di una volta nello stesso ciclo, per lo
stesso parametro di ritorno per la stessa istanza di blocco funzione, non devono essere
eseguite particolari operazioni di calcolo. Esso si occupa solamente di trasferire i dati non
visibili all’applicazione ISaGRAF. Subito sotto viene riportato lo schema standard del servizio
di lettura:
/* servizio lettura dei parametri di ritorno: chiamato per ogni parametro di ritorno
*/
CJ International C-405
Guida utente al target
L’argomento "parno" è il numero logico del parametro di ritorno il cui valore è richiesto. Usare
gli identificatori definiti nell’header “C” del blocco funzione per indicare i parametri di ritorno.
Tali identificatori iniziano con il prefisso "FBLPNO_". L’argomento "value" è un puntatore far
al buffer in cui viene copiato il valore corrente del parametro di ritorno voluto. Il tipo di dato cui
punta questo argomento dipende dal tipo ISaGRAF del parametro di ritorno. La seguente
tabella mostra la relazione tra i tipi ISaGRAF ed i tipi di dati del buffer “C”:
Le seguenti macro permettono di accedere al buffer di copia, secondo il tipo del parametro di
ritorno voluto:
Queste sono le operazioni comunemente usate per copiare il valore del parametro nel buffer
ISaGRAF:
C-406 CJ International
Guida utente al target
#include <tasy0def.h>
#include <grfb0nnn.h> /* nnn è il numero del f.block nella libreria */
CJ International C-407
Guida utente al target
/* La seguente funzione viene usata per l’inizializzazione del blocco funzione e per
la dichiarazione della sua implementazione. Realizza il collegamento con il kernel
ISaGRAF, usando il nome del blocco funzione. Questa funzione viene
completamente generata dal Library Manager ISaGRAF. */
L’uso dei prefissi "FBACT_", "FBINIT_", "FBREAD_" e "fbldef_" per i servizi implementati
ed il servizio di definizione, permette di assegnare ad un blocco funzione il nome di una
parola chiave riservata del linguaggio “C” oppure il nome di una funzione esistente nelle
C-408 CJ International
Guida utente al target
libreria “C” ISaGRAF. Nessun altra istruzione deve essere aggiunta al servizio di
dichiarazione.
Il servizio di dichiarazione viene chiamato per qualsiasi blocco funzione “C” integrato, anche
se non viene usato nei programmi dall’applicazione ISaGRAF. Il kernel ISaGRAF rileverà un
errore fatale nel caso un blocco funzione “C” usato nell’applicazione non sia integrato nel
kernel.
Prima di collegare i nuovi blocchi funzione al kernel, è necessario scrivere un altro file
sorgente “C”, chiamato " GRFB0LIB.C", ed inserirlo (con i relativi blocchi funzione) nella lista
dei files per il linker. Il file "GRCN0LIB.C" contiene solamente un array di dichiarazioni di
servizi. Questo array viene letto durante le operazioni di inizializzazione per creare un
collegamento dinamico con i blocchi funzione scritti in “C”. Questo è un esempio di tale file:
#include <tasy0def.h>
FBL_LIST FBLDEF[ ] = {
fbldef_fb1,
fbldef_fb2,
NULL };
Con questo file, è possibile generare un nuovo kernel che include tutti i blocchi funzione
esistenti. Un kernel può anche essere realizzato specificatamente per un singolo progetto,
inserendo nell’array FBLDEF unicamente i blocchi funzione usati nel progetto. Il file "
GRFB0LIB.C" viene generato automaticamente dal Generatore di codice ISaGRAF, nella
fase di realizzazione del codice dell’applicazione. Il file viene collocato nella directory del
progetto ISaGRAF ed incorpora solamente le conversioni usate nel progetto.
Limiti
La libreria ISaGRAF può contenere fino a 255 blocchi funzione "C". Qualsiasi tipo di
operazione può essere usata in una funzione. Qualsiasi tipo di blocco funzione può essere
copiato (istanziato) fino a 255 volte nello stesso progetto.
è bene ricordare che i servizi di blocco funzione vengono chiamati in modo sincrono dal ciclo
ISaGRAF, quindi l’esecuzione del blocco funzione influisce direttamente sul tempo di ciclo.
CJ International C-409
Guida utente al target
Un esempio completo
Quella che segue è la programmazione completa del blocco funzione "sample", contatore ad
incremento.
nome: SAMPLE
descrizione: Contatore ad incremento
C-410 CJ International
Guida utente al target
typedef struct {
T_BOO _cu;
T_BOO _r;
T_ANA _pv;
} str_arg;
#define CU (arg->_cu)
#define R (arg->_r)
#define PV (arg->_pv)
#define FBLPNO_Q 0
#define FBLPNO_CV 1
typedef struct {
T_BOO overflow; /* true:valore contatore >= valore program. */
T_ANA value; /* valore corrente del contatore */
} str_data;
CJ International C-411
Guida utente al target
C-412 CJ International
Guida utente al target
Avvertenza: Il gestore di libreria ISaGRAF non aggiorna i nomi e i numeri logici contenuti nel
testo e nelle righe di programma di elementi di libreria che vengano rinominati o copiati.
L’aggiornamento deve essere eseguito manualmente nel file sorgente “C”.
Il file \ISAWIN\LIB\USPNUMS contiene le relazioni tra nomi e numeri logici delle funzioni
presenti nella libreria ISaGRAF. Esempio di questo file:
1 funct_A
10 funct_B
16 funct_C
Il file \ISAWIN\LIB\FBLNUMS contiene le relazioni tra nomi e numeri logici dei blocchi
funzione presenti nella libreria ISaGRAF. Esempio di questo file:
0 fbl_A
1 fbl_B
2 fbl_C
Il file \ISAWIN\LIB\CNVNUMS contiene le relazioni tra nomi e numeri logici delle funzioni di
conversione presenti nella libreria ISaGRAF. Questo è un esempio relativo alle conversioni
della libreria standard:
0 SCALE
1 BCD
Questi file vengono automaticamente aggiornati dal Gestore di libreria ISaGRAF ogni volta
che una conversione, una funzione o un blocco funzione viene creato, rinominato, copiato o
cancellato. Questi file vengono generati automaticamente dal Generatore di codice ISaGRAF
alla realizzazione dell’applicazione:
CJ International C-413
Guida utente al target
Questi file possono essere usati in fase di link per creare un nuovo kernel ISaGRAF specifico
per il progetto, che contenga solamente le conversioni, le funzioni ed i blocchi funzione usati
nel progetto.
Quando i file sorgente vengono gestiti sul sistema target, è necessario aggiornare i file delle
definizioni con un nuovo trasferimento ogni volta che l’interfaccia di una funzione viene
modificata con il Gestore di libreria ISaGRAF.
In questo caso, è possibile usare il Gestore di libreria ISaGRAF per completare e modificare i
sorgenti di conversioni, funzioni e blocchi funzione.
I comandi per lanciare il compilatore ed il linker possono essere raggruppati, ad esempio, in
un file batch richiamabile dal menu strumenti dell’ambiente di lavoro (Si veda il Manuale
utente: Gestione dei programmi).
Quando conversioni, funzioni e blocchi funzione vengono compilati sul PC, è sufficiente
trasferire il nuovo kernel ISaGRAF così generato (contenente i nuovi componenti) al sistema
target prima di eseguire le applicazioni. Se il target è un PC, il nuovo kernel ISaGRAF può
essere caricato sulla macchina target con un dischetto o tramite rete.
C-414 CJ International
Guida utente al target
Il dischetto target ISaGRAF contiene molti file di utilità per la compilazione ed il link di
conversioni, funzioni e blocchi funzione alle librerie del kernel ISaGRAF.
In entrambi i casi, i componenti “C” vengono incorporati nella stessa libreria: il programmatore
“C” non deve tener conto tra processo singolo e multiplo. Per la versione a processo singolo,
le libreria utente “C” vengono collegate al processo singolo (chiamato generalmente isa),
mentre per la versione multiprocesso, le librerie vengono collegate al processo kernel
(chiamato generalmente isaker).
Sistema Sistema
di sviluppo target
"C" UTENTE
SISTEMA
La parte più interna del software ISaGRAF è indipendente dall’hardware. Esegue linguaggi
IEC e possiede un proprio data base di variabili.
Il primo passo per il link al kernel, consiste nel generare le librerie di tutte le conversioni,
funzioni e blocchi funzione necessarie allo specifico progetto:
libreria contenuto
ISAUSP - GRUS0LIB file object (array di funzioni dichiarate)
- file oggetto di ogni funzione integrata
ISAFBL - GRFB0LIB file object (array di blocchi funzione
dichiarati)
- file oggetto di ogni blocco funzione integrato
ISACNV - GRCN0LIB object file (array di conversioni dichiarate)
- file oggetto di ogni conversione integrata
Successivamente, si devono collegare queste nuove librerie con i file oggetto e le librerie del
kernel ISaGRAF. Nel seguente diagramma vengono delineate le diverse fasi dell’integrazione
con parti sviluppate in “C” dall’utente:
CJ International C-415
Guida utente al target
Utility link
isaker isa
Viene qui riportato l’esatto elenco dei moduli oggetto e delle librerie che devono essere unite
nella fase di link:
C-416 CJ International
Guida utente al target
Potrebbe essere necessario seguire, per i moduli oggetto e le librerie, l’esatto ordinamento
riportato nelle figure precedenti. I moduli oggetto e le librerie hanno le estensioni standard
(".lib", ".obj", ".l", ".r"...) del sistema destinazione.
Tutti i file sorgente "C" del kernel ISaGRAF devono essere compilati con il modello di
memoria LARGE. È necessario usare il medesimo modello per la compilazione sia di
conversioni che di funzioni e blocchi funzione.
Per compilare elementi della libreria “C” , è necessario definire una costante particolare, che
indica il tipo di sistema destinazione ed il processore, in modo che i sorgenti di conversioni,
funzioni e blocchi funzione risultino indipendenti dal sistema. Seguono i nomi di questi valori
costanti:
I file comandi di utilità (per la compilazione ed il link) forniti con il software target ISaGRAF,
illustrano come definire l’adeguato valore costante nella riga di comando del compilatore.
Compilatori supportati
Per lo sviluppo di conversioni, funzioni, blocchi funzione ed il link al kernel ISaGRAF, vengono
supportati i seguenti compilatori.
Sommario
Quello che segue è il sommario delle operazioni da eseguirsi per sviluppare una nuova
conversione, funzione o blocco funzione.
CJ International C-417
Guida utente al target
ð3. Usando il Gestore di Libreria ISaGRAF, inserire il testo dettagliato delle note
tecniche (guida utente) dell’elemento.
ð4. Usando il Gestore di Libreria ISaGRAF, completare il file sorgente “C”, inserendo
la programmazione “C” dell’algoritmo della conversione, funzione o blocco
funzione. Ora, il codice sorgente dell’elemento è completo. Può essere usato
qualsiasi altro editor.
ð5. Selezionare l’opzione "Show logical number" del Gestore di libreria per
conoscere a quale numero logico sia abbinato il nuovo elemento. Questo numero
viene usato nel nome dei corrispondenti file ".C" e".H".
ð7. Avviare il compilatore “C” per i nuovi file sorgente e correggere gli eventuali errori
di sintassi.
ð8. Inserire il nome della dichiarazione del servizio del nuovo elemento nel file
sorgente "GR??0LIB.C" in cui è definito l’array degli elementi inseriti.
ð10. Inserire il nome del modulo oggetto nell’elenco dei file oggetto usati per produrre
la corrispondente libreria.
ð11. Avviare il generatore di libreria “C”. Avviare il linker “C” per produrre il nuovo
kernel.
C-418 CJ International
Guida utente al target
Una rete Modbus è composta da una sola stazione master (normalmente un sistema di
visualizzazione di processo) e da una o più stazioni slave (normalmente dei PLC)
Master
Il master invia una richiesta per volta ad uno slave (usando il corrispondente numero slave) e
rimane in attesa della risposta dallo slave prima di inviare la successiva richiesta. Gli altri
slave non coinvolti non inviano risposta.
Ciascun pacchetto contiene un numero slave, un numero richiesta con i relativi dati ed un
checksum a 16 bit (CRC).
Se non viene ottenuta risposta dopo un certo tempo limite (time out), la domanda può essere
ripetuta un certo numero di volte prima che il master dichiari “non connesso” lo slave.
Il valore del tempo limite ed il numero di tentativi può essere regolato sulla stazione master
per soddisfare i requisiti dello slave (secondo l’applicazione, ecc…).
CJ International C-419
Guida utente al target
1 lettura di N bit
3 lettura di N word
5 scrittura di 1 bit
6 scrittura di 1 word
16 scrittura di N word
È possibile accedere alle variabili di applicazioni ISaGRAF tramite il loro ‘indirizzo di rete’,
naturalmente, se questo è stato impostato nel dizionario dell’ambiente di lavoro. Queste
variabili possono essere:
− Variabili booleane o analogiche
− Variabili con attributo di ingresso, di uscita o interne
− Variabili con campo di validità locale o globale.
Per impostare un valore booleano, possono essere usate le funzioni 5, 6, o 16. Un valore
TRUE in scrittura è rappresentato da un qualunque valore diverso da zero.
Per impostare una variabile analogica, possono usare le funzioni 6 o 16. Il valore letto è un
intero a 16 bit compreso nell’intervallo da –32768 a +32767 (le variabili target ISaGRAF sono
a 32 bit).
La lettura di una variabile analogica avviene tramite la funzione 3. Il valore letto è un intero a
16 bit compreso nell’intervallo da –32768 a +32767. Dal punto di vista del target, le variabili
analogiche sono a 32 bit, tuttavia, un valore, sul target, superiore al range di 16 bit (positivo o
negativo) verrà letto con il massimo valore di range a 16 bit (positivo o negativo).
Non è possibile accedere alle variabili reali con una richiesta Modbus.
Avvertenza:
L’implementazione ISaGRAF non gestisce i codici di errore come ‘indirizzo modbus
sconosciuto’.
C-420 CJ International
Guida utente al target
Notazioni:
Bit 8 Bit 1
Byte 1 Bit 9
Byte 2
Bit nbi
Byte nbb
CJ International C-421
Guida utente al target
Esempi:
Richiesta 01 01 10 20 00 0F 79 04
Risposta 01 01 02 00 12 39 F1
− FUNZIONE 16: scrittura di 2 word all’indirizzo 0x2100 sullo slave 1, i valori scritti sono
0x1234 e 0x5678.
Richiesta 01 10 21 00 00 02 04 12 34 56 78 1C CA
Risposta 01 10 21 00 00 02 4B F4
C-422 CJ International
Guida utente al target
Trasferimento file
A confronto dei moderni bus di campo, il protocollo Modbus offre dei servizi modesti se non è
esteso da codici funzione specifici dei produttori.
Nel nostro caso, eseguendo ISaGRAF con una piattaforma di computer potente e flessibile,
esistono due restrizioni imposte dal protocollo Modbus:
− è possibile accedere solamente alle variabili ISaGRAF
− risulta difficoltoso il trasferimento veloce di grosse quantità di dati
Due sono le ragioni per cui ISaGRAF offre un insieme di richieste di trasferimento file del tipo
Modbus o un protocollo di “gestione remota file”. Queste caratteristiche sono state
implementate per permettere:
− lo scaricamento di file binari o ASCII
− il caricamento di file binari o ASCII
− lo scambio dinamico di dati tra file virtuali o fisici condivisi
Esistono richieste per selezionare il nome del file remoto, selezionare l’indirizzo di base,
leggere o scrivere dati sul file remoto usando indirizzi byte a 16 bit.
CJ International C-423
Guida utente al target
L’indirizzo da cui leggere i byte è specificato in addH/addL. Deve essere inferiore a F000.
Viene letto lo specifico numero di byte, dal precedentemente indicato file remoto, a partire
dall’indirizzo specificato (addH/addL con qualsiasi valore a 16 bit) aggiunto al
precedentemente selezionato indirizzo base.
I valori vengono restituiti (V campi da sinistra verso destra) nell’ordine in cui vengono letti dal
file.
Esempio:
Richiesta 01 11 F0 00 00 0B 0B 74 ... 00 25 9F
Risposta 01 11 F0 00 00 0B 8F 0E
Richiesta 01 11 F0 02 00 04 04 00 01 00 00 76 11
Risposta 01 11 F0 02 00 04 6E CA
Richiesta 01 11 07 D0 00 04 04 01 02 03 04 28 6F
Risposta 01 11 07 D0 00 04 FC 87
C-424 CJ International
Guida utente al target
Richiesta 01 12 07 D0 00 04 B8 87
Risposta 01 12 04 01 02 03 04 58 7D
CJ International C-425
Guida utente al target
La gestione delle interruzioni di alimentazione risulta molto critica in un’applicazione, per tre
ragioni:
− dipende dalle specifiche del processo
− dipende dalle peculiarità hardware
− dipende dai metodi di programmazione
Salvataggio
Kernel memoria
ISaGRAF salvata
+
Data base Ripristino
Non è possibile trovare una soluzione software standard al secondo problema, ma il fornitore
del sistema può provvedere gli strumenti necessari per accedere allo stato dell’hardware
dall’applicazione ISaGRAF o da un programma C.
Inoltre, è importante decidere quali dati debbano essere salvati e recuperati. Definiamo 2 tipi
di dati:
− Variabili dell’applicazione:
Variabili del processo come numero di elementi elaborati, data dell’interruzione di
alimentazione, valori dei parametri dell’applicazione, ecc. …
Variabili del programma come contatori, timer, valori temporanei e flag.
C-426 CJ International
Guida utente al target
Questi due casi ed il tipo di risposta che può dare ISaGRAF vengono esaminati nei seguenti
paragrafi.
Variabili ritentive
L’editor delle variabili dell’ambiente di lavoro permette di assegnare ad ogni variabile interna
(variabili non di I/O) l’attributo Ritentiva.
Al termine di ogni ciclo del target, i valori delle variabili ritentive vengono copiati nella
locazione di memoria specificata. Questa locazione di memoria è generalmente una RAM
alimentata da batteria tampone.
All’avvio, se almeno una variabile possiede l’attributo Ritentiva, ISaGRAF controlla le variabili
ritentive:
− se la stessa applicazione è stata precedentemente eseguita, ISaGRAF recupera i valori
memorizzati e li assegna per tutte le variabili con attributo Ritentiva.
− se la precedente applicazione eseguita era diversa dall’attuale o se l’applicazione non è mai
stata eseguita precedentemente, ISaGRAF rileva che gli attributi Ritentiva non sono validi
e imposta tutte le variabili con attributo Ritentiva a null.
L’area di memoria usata per memorizzare i diversi tipi di variabile viene specificata
dall’ambiente di lavoro, dal menu Compila / Opzioni esecuzione applicazione: Variabili
ritentive.
La stringa specificata deve avere il seguente formato:
dove:
boo_add: Indirizzi esadecimali usati per memorizzare variabili booleane. Devono essere
sempre diversi da zero.
boo_size: Dimensione, in formato esadecimale, in byte, disponibile a questo indirizzo. È
necessario un byte per ogni variabile booleana da memorizzare.
ana_add: Indirizzi esadecimali usati per memorizzare variabili analogiche. Devono essere
sempre diversi da zero.
ana_size: Dimensione, in formato esadecimale, in byte, disponibile a questo indirizzo. È
richiesto sempre un minimo di quattro byte da aggiungere a quattro byte per ogni
variabile analogica da memorizzare.
tmr_add: Indirizzi esadecimali usati per memorizzare variabili timer. Devono essere sempre
diversi da zero.
tmr_size: Dimensione, in formato esadecimale, in byte, disponibile a questo indirizzo. Sono
necessari cinque byte per ogni variabile timer da memorizzare.
msg_add: Indirizzi esadecimali usati per memorizzare variabili messaggio. Devono essere
sempre diversi da zero.
msg_size: Dimensione, in formato esadecimale, in byte, disponibile a questo indirizzo. Sono
necessari 256 byte per ogni messaggio da memorizzare.
CJ International C-427
Guida utente al target
Requisiti:
− è necessario indicare tutti i campi per tutti i tipi anche se non si intende effettuare il
salvataggio di tutti i tipi di variabili. In questo caso, specificare una dimensione zero (eccetto
che per gli analogici, per i quali la dimensione deve essere almeno di quattro byte) e
qualsiasi indirizzo diverso da zero, per i tipi di variabile non voluti.
Esempio:
Supponiamo di voler effettuare il salvataggio di:
20 Variabili booleane
0 Variabili analogiche
0 Variabili timer
3 Variabili messaggio
La memoria alimentata si trova all’indirizzo esadecimale 0xA2F200.
Supponiamo che:
I valori booleani vengano salvati a partire dall’indirizzo 0xA2F200 con l’esatta dimensione
richiesta di 20 byte.
Lo spazio minimo di 4 byte richiesto dai valori analogici venga memorizzato all’indirizzo
0xA2F214.
Gli indirizzi fittizi dei timer saranno 0xA2F200, specificati con dimensione zero.
I messaggi verranno memorizzati all’indirizzo 0x A2F218 con l’esatta dimensione richiesta
di 256*3 byte.
La stringa da inserire dall’ambiente di lavoro dovrà essere:
A2F200,14,A2F214,4,A2F200,0,A2F218,300
Per prima cosa è necessario definire la locazione della memoria di salvataggio per uno
specifico tipo di variabile o per tutti i tipi di variabili:
<nuovo_indirizzo> := SYSTEM(SYS_INITxxx,<indirizzo>);
dove:
− <indirizzo> rappresenta l’indirizzo della locazione della memoria di salvataggio (16# valore
in formato esadecimale). Deve essere un indirizzo pari, altrimenti l’operazione fallisce.
− SYS_INITxxx puo essere:
∗ SYS_INITBOO indica la locazione di memoria di salvataggio per le variabili booleane.
∗ SYS_INITANA indica la locazione di memoria di salvataggio per le variabili analogiche.
∗ SYS_INITTMR indica la locazione di memoria di salvataggio per le variabili timer.
∗ SYS_INITALL indica la locazione di memoria di salvataggio per le variabili booleane,
analogiche e timer.
− <nuovo_indirizzo> riporta il seguente indirizzo libero, ovvero <indirizzo> + la dimensione (in
byte) delle variabili salvate, in accordo con SYS_INIYxxx. In questo modo è possibile
C-428 CJ International
Guida utente al target
<errore> :=SYSTEM(SYS_SAVxxx,0);
dove:
− SYS_SAVxxx può essere:
∗ SYS_SAVBOO per richiedere il salvataggio di tutte le variabili booleane.
∗ SYS_SAVANA per richiedere il salvataggio di tutte le variabili analogiche.
∗ SYS_SAVTMR per richiedere il salvataggio di tutte le variabili timer.
∗ SYS_SAVALL per richiedere il salvataggio di tutte le variabili booleane,
analogiche e timer.
− <errore> riporta uno stato di errore diverso da 0 nel caso l’operazione sia fallita
(SYS_INITxxx non sia stato chiamato).
Infine, si deve poter ripristinare le variabili. Questa procedura può essere chiamata
dall’applicazione in ogni momento, il ripristino avverrà una volta solamente e al termine del
ciclo corrente. Per assicurarsi della correttezza dei dati salvati, è bene usare una variabile
analogica con assegnato un valore costante, con funzione di contrassegno:
<errore> := SYSTEM(SYS_RESTxxx,0);
dove:
− SYS_RESTxxx può essere:
∗ SYS_RESTBOO per ripristinare tutte le variabili booleane.
∗ SYS_RESTANA per ripristinare tutte le variabili analogiche.
∗ SYS_RESTTMR per ripristinare tutte le variabili timer.
∗ SYS_RESTALL per ripristinare tutte le variabili booleane, analogiche e timer.
− <errore> riporta uno stato di errore diverso da 0 nel caso l’operazione sia fallita
(SYS_INITxxx non sia stato chiamato).
Quello che segue è il sommario dei comandi della funzione SYSTEM per la gestione delle
variabili di salvataggio:
comando Significato
parola chiave pre-definita Valore
SYS_INITBOO 16#20 inzializza il salvataggio di valori
booleani
SYS_SAVBOO 16#21 salvataggio valori booleani
SYS_RESTBOO 16#22 ripristino valori booleani
SYS_INITANA 16#24 inizializza il salvataggio di valori
analogici
SYS_SAVANA 16#25 salvataggio valori analogici
CJ International C-429
Guida utente al target
Implementazione personalizzata
Infine, usando funzioni o blocchi funzione C, è possibile sviluppare procedure specifiche per
avere accesso alla memoria alimentata da batteria tampone, per salvare e ripristinare le
variabili dall’applicazione in qualunque momento.
Esempi:
1) Procedure dedicate ad un’applicazione:
backup, restore_temp, restore_date, restore_cpt procedure C definite dall’utente.
2) Procedure generalizzate:
backup_init, backup, backup_link, restore procedure C definite dall’utente.
C-430 CJ International
Guida utente al target
Esempio:
inizializza salvataggio
CJ International C-431
Guida utente al target
Elenco di errori:
C-432 CJ International
Guida utente al target
− Errori di sistema:
Questi problemi sono dovuti probabilmente al software o hardware target, non ad
impostazioni dell’applicazione o all’esecuzione del programma.
Provare con il reset a freddo (spegnimento) del target e provare a mandare in esecuzione
altre applicazioni.
Questi errori devono essere riportati al supporto ISaGRAF.
− Errori dell’applicazione:
Questi problemi sono dovuti a parametri, dimensione o contenuto dell’applicazione
Questi errori dovrebbero scomparire caricando un’applicazione conosciuta e
precedentemente collaudata. Se il problema permane, va incluso negli errori di sistema
precedentemente descritti.
− Errori di programma:
Questi problemi sono dovuti a particolari sequenze del programma.
Questo tipo di errore dovrebbe scomparire avviando l’applicazione in modalità ciclo per ciclo o
fermando il programma critico.
CJ International C-433
Guida utente al target
Il file applicazione, scaricato o salvato non è corretto. Questo errore avviene quando una
procedura è stata generata per INTEL e scaricata per MOTOROLA (o viceversa) o se il file è
alterato.
Questo errore è prodotto dal processo di comunicazione se non riesce ad allocare spazio di
tipo 3 per le comunicazioni tra processi.
Il processo di comunicazione genera questo errore quando al numero slave specificato nella
propria riga di comando non corrisponde alcun kernel in esecuzione.
Il processo di comunicazione non può inviare una richiesta al kernel. Probabilmente il kernel è
impegnato o non è in esecuzione.
Questo avvertimento viene dato quando lo strato di comunicazione non riesce ad inizializzare
la connessione fisica. Questo avvertimento viene anche dato se non è stato specificato un
percorso di comunicazione. Questo non impedisce al target di venire eseguito correttamente,
senza, però, la possibilità di comunicare
ISaGRAF non è in grado di gestire le variabili ritentive. Due possono essere le cause di
questo problema:
- la stringa passata come parametro al target host non è sintatticamente corretta
- la dimensione della memoria specificata per ogni blocco non è sufficiente
bisogna verificare la sintassi dell’attributo di variabile ritentiva e tentare di ridurre il numero di
variabili ritentive.
C-434 CJ International
Guida utente al target
Questo avvertimento viene generato ogni volta che l’applicazione viene fermata dal debugger.
Questo errore si verifica quando uno dei cicli target si trova a dover eseguire troppe azioni
non-memorizzate, impulsive o blocchi ciclici. è possibile localizzare il problema in modalità
CC.
Il massimo numero di azioni simultanee è 2 + 4 per programma SFC.
Questo errore si verifica quando uno dei cicli target si trova a dover eseguire troppe azioni di
tipo set (eseguite all’attivazione del passo). Si proceda come sopra.
Questo errore si verifica quando uno dei cicli target si trova a dover eseguire troppe azioni di
tipo reset (eseguite alla disattivazione del passo). Si proceda come sopra.
Il kernel ha rilevato qualcosa di errato nel codice dell’applicazione (chiamato Codice Target
Indipendente), in un programma. Due sono le possibili spiegazioni:
- un programma esterno sta probabilmente scrivendo nel codice
dell’applicazione. Tentare di localizzare il crollo in modalità CC ed assicurarsi che
nessuna interfaccia IO abbia parametri errati.
- il target che si sta usando ha un insieme ridotto di istruzioni e l’applicazione fa uso di
istruzioni o tipi di variabile non autorizzati.
È stato rilevato un errore di comunicazione nella risposta allo specifico codice funzione di
richiesta 18 (lettura file) del Modbus ISaGRAF. Controllare le connessioni e la configurazione
di sistema sia dal lato target che master.
È stato rilevato un errore di comunicazione nella risposta allo specifico codice funzione di
richiesta 17 (scrittura file) del Modbus ISaGRAF. Controllare le connessioni e la
configurazione di sistema sia dal lato target che master.
È stato rilevato un errore di comunicazione nella risposta ad una richiesta del debugger.
Controllare le connessioni e la configurazione di sistema sia dal lato target che master.
CJ International C-435
Guida utente al target
È stato rilevato un errore di comunicazione nella risposta ad una richiesta del debugger.
Controllare le connessioni e la configurazione di sistema sia dal lato target che master.
È stato rilevato un errore di comunicazione nella risposta ad una richiesta del debugger.
Controllare le connessioni e la configurazione di sistema sia dal lato target che master.
Si verifica ogni volta che viene chiusa la connessione con il debugger chiuso: il sistema
funziona correttamente. Altrimenti indica il rilevamento di un errore di comunicazione
ethernet. Controllare le connessioni e la configurazione di sistema sia dal lato target che
master.
Viene dato un secondo campo che può essere:
1: errore in invio o ricezione
2: errore nella creazione del socket
3: errore in fase di binding o ricezione dal socket
4: errore in fase di accettazione di un nuovo client
C-436 CJ International
Guida utente al target
L’applicazione fa uso di una scheda il cui codice del costruttore (OEM) non viene riconosciuto
dal target.
Controllare le connessioni di I/O nell’ambiente di lavoro ed usare l’attributo “VIRTUAL” per
localizzare la scheda non corretta. La libreria dell’ambiente di lavoro potrebbe non
corrispondere alla versione del target.
CJ International C-437
Guida utente al target
È stato rilevato un errore nell’esecuzione di una chiamata OPERATE per una variabile
booleana. Verificare i parametri dell’istruzione OPERATE e le note utente della scheda.
È stato rilevato un errore nell’esecuzione di una chiamata OPERATE per una variabile
analogica. Verificare i parametri dell’istruzione OPERATE e le note utente della scheda.
È stato rilevato un errore nell’esecuzione di una chiamata OPERATE per una variabile di tipo
messaggio. Verificare i parametri dell’istruzione OPERATE e le note utente della scheda.
C-438 CJ International
Guida utente al target
Due sequenze SFC tentano di scrivere la stessa variabile di uscita di tipo booleano durante lo
stesso ciclo del target. Questa situazione è da evitare per prevenire comportamenti rischiosi
degli I/O. Nel caso di un simile conflitto, la priorità viene data al programma più in alto nella
gerarchia. Se i due programmi SFC sono di pari livello, il risultato è imprevedibile.
Due programmi SFC tentano di scrivere la stessa variabile di uscita di tipo analogico durante
lo stesso ciclo del target. Vedere il commento sopra.
Due programmi SFC tentano di scrivere la stessa variabile di uscita di tipo messaggio durante
lo stesso ciclo del target. Vedere il commento sopra.
La durata del periodo del ciclo del target è superiore a quella specificata nel menu
dell’ambiente di lavoro.
Per un sistema multiprocesso, questo significa che non c’è abbastanza tempo CPU per
l’esecuzione di un ciclo, anche se “la durata del ciclo corrente” è inferiore al periodo
specificato.
Per un sistema a processo singolo, questo significa sempre che ci sono troppe operazioni in
un ciclo del target.
CJ International C-439
Guida utente al target
Un programma usa una funzione di conversione C non riconosciuta dal target. La libreria
dell’ambiente di lavoro potrebbe non corrispondere alla versione del target.
Nel caso si verifichi questa situazione, ISaGRAF non converte il valore.
Un programma usa un blocco funzione C non riconosciuto dal target. La libreria dell’ambiente
di lavoro potrebbe non corrispondere alla versione del target.
Un programma usa un blocco funzione C non riconosciuto dal target. sebbene si supponga
essere disponibile sulla maggior parte dei target. Rivolgersi al fornitore.
Un programma tenta la divisione per zero di un reale analogico. L’applicazione deve prevenire
questa situazione che potrebbe portare ad effetti imprevedibili.
Nel caso questo accada, ISaGRAF assegna come risultato il massimo valore reale analogico.
Nel caso l’operando sia negativo, il risultato viene invertito.
l’applicazione usa una chiamata OPERATE con parametri errati. Questo caso viene
normalmente rilevato dal compilatore. Potrebbe trattarsi di un parametro timer o di una
variabili non di ingresso o di uscita.
Nel tentativo di aggiornare un’applicazione, l’applicazione modificata non può essere lanciata
in quanto i simboli risultano differenti. Una o più variabili o istanze di blocco funzione possono
essere stati aggiunti o modificati, rispetto all’applicazione corrente.
L’applicazione modificata non può essere lanciata in quanto una o più variabili di tipo
booleano possono essere state aggiunte o rimosse, rispetto all’applicazione corrente.
C-440 CJ International
Guida utente al target
L’applicazione modificata non può essere lanciata in quanto una o più variabili di tipo
analogico possono essere state aggiunte o rimosse, rispetto all’applicazione corrente.
L’applicazione modificata non può essere lanciata in quanto una o più variabili di tipo timer
possono essere state aggiunte o rimosse, rispetto all’applicazione corrente.
L’applicazione modificata non può essere lanciata in quanto una o più variabili di tipo
messaggio possono essere state aggiunte o rimosse, rispetto all’applicazione corrente.
Non è presente in memoria l’applicazione modificata: può essersi verificato qualche errore in
fase di scaricamento.
CJ International C-441
Guida utente al target
C-442 CJ International
GLOSSARIO
D. GLOSSARIO
Analogico Tipo di variabili. Si tratta di variabili intere o reali continue.
Attributo Classe di variabili. Gli attributi disponibili per le variabili sono quelli di
variabile: interna, ingresso, uscita, costante.
Azioni booleane Azione contenuta in un passo SFC: in base al segnale di attività del
passo viene impostata una variabile booleana.
Campo di visibilità o Insieme di programmi che può far uso di un oggetto. I campi di
di validità. visibilità predefiniti ISaGRAF sono: Comune, Globale e Locale.
CJ International D-443
GLOSSARIO
Canale di I/O Singola connessione in una scheda di I/O. Un canale di I/O può
essere associato ad una variabile di I/O.
Cella Area fondamentale della matrice grafica dei linguaggi grafici come
SFC, FBD or LD.
Ciclico Attributo di un programma che è sempre in esecuzione.
Ciclo target Insieme delle operazioni eseguite ogni volta che viene attivato il
sistema target ISaGRAF. I cicli vengono controllati dal tempo ciclo
programmabile.
Codice chiave OEM Codice esadecimale a 16 bit per ogni scheda della libreria ISaGRAF.
(scheda di I/O) Il codice OEM identifica il fabbricante della scheda.
Codice sorgente C File di testo contenente il codice sorgente “C” di una funzione o di
una funzione di conversione.
Commento Testo incluso nel programma che non ha alcun effetto durante
l’esecuzione del programma.
Commento (SFC) Testo associato ad un passo o ad una transizione SFC. Non alcun
effetto durante l’esecuzione del programma.
Diario File di testo contenente tutte le note relative alle modifiche apportate
ad un programma. Ogni nota è completata dalla data.
D-444 CJ International
GLOSSARIO
Etichetta (IL) Identificatore all’inizio di una riga di istruzione IL, che identifica
l’istruzione è può essere usato come operando per le istruzioni di
salto.
Function block Componente grafico del linguaggio FBD, che rappresenta una
funzione elementare standard delle librerie ISaGRAF.
Header sorgente C File di testo contenente definizioni e tipi "C" necessari alla
programmazione di funzioni o funzioni di conversione C.
CJ International D-445
GLOSSARIO
D-446 CJ International
GLOSSARIO
Modalità Normale modalità di esecuzione in tempo reale: i cicli del target sono
Tempo reale controllati dal tempo ciclo programmato.
Modificatore (IL) Carattere singolo posto alla fine di un’istruzione IL che modifica il
significato dell’operazione..
Note tecniche Guida utente per un elemento della libreria ISaGRAF (funzioni o
function block C, funzioni di conversione o schede di I/O). La nota
tecnica viene redatta dal progettista dell’elemento.
Parametro (funzione Valore dato come input ad una funzione "C". Un parametro è
C) caratterizzato da un Tipo.
Parametro OEM Parametro di I/O della scheda, definito dal progettista della scheda.
(scheda I/O) Può essere una costante o un parametro variabile inserito dall’utente
la fase di Connessione di I/O.
CJ International D-447
GLOSSARIO
Passo finale di Ultimo passo di una macro SFC. Un passo finale di macro non ha
Macro transizioni successive.
Passo Iniziale di Il primo passo nel corpo di una macro SFC. Nessuna transizione
Macro precede un passo iniziale di macro.
Programma SFC Programma SFC che controlla altri programmi SFC detti figli.
padre
D-448 CJ International
GLOSSARIO
Sezione Finale Gruppo di programmi ciclici eseguiti al termine di ogni ciclo del PLC
target.
Sezione Iniziale Gruppo di programmi ciclici eseguiti all’inizio di ogni ciclo del PLC
target.
Sezione Sequenziale Gruppo di programmi eseguiti durante ogni ciclo del PLC target.
L’esecuzione di questi programmi rispetta le regole dinamiche del
linguaggio SFC.
Situazione iniziale Impostazione dei passi iniziali di un programma SFC che rappresenta
il contesto iniziale del programma all’avvio.
CJ International D-449
GLOSSARIO
Tipo Classe di variabili con lo stesso formato. I tipi base sono: booleano,
analogico, timer e messaggio.
Token (SFC) Segnale grafico usato per mostrare i passi attivi di un programma
SFC.
Validità di una Attributo di una transizione. Una transizione è valida quando sono
transizione attivi i passi che la precedono.
D-450 CJ International
Indice analitico
E. Indice analitico
-, B-262 Archivia, A-21
%, A-94, B-191 Archiviare, A-158
&, B-259 Archiviazione, A-21
) operazione (IL), B-254 Archivio, A-157
*, B-263 Arco coseno, B-300
/, B-264 Arco tangente, B-301
:= (assegnazione ST), B-237 ARCREATE, B-323
+, B-261 ARREAD, B-324
<, B-267 ARWRITE, B-324
<=, B-268 ASCII, B-314
<>, B-271 Assegnazione, B-258
=, B-270 Assegnazione (in ST
=1, B-261 =), B-237
>, B-269 ATAN, B-301
>=, B-269 Attivazione di transizione, D-443
>=1, B-260 Attivazione di una transizione, A-117,
1 gain, B-258 B-209
Attività di un passo, B-209, B-243, D-
443
A Attributo, D-443
ABS, B-296 AVERAGE, B-290
ACOS, B-300 Avvio applicazione, A-113
Addizione, B-261 Azione, A-44, A-49, B-206, B-212, B-
Addizione di messaggi, B-275 214, D-443
Aggiornamento, A-114, A-117 Azione Booleana, D-443
Altra libreria, A-147 Azione non-memorizzata, B-204
ANA, B-272 Azione Non-memorizzata, D-443
Analogico, A-82, A-97, B-188, B-189, Azione Pulse, D-443
B-192, C-383, C-384, D-443 Azioni booleane, A-41, B-202
AND, B-259 Azioni pulse, B-203
AND_MASK, B-264 Azioni SFC, A-42
AnyTarget, A-107
Apertura file, B-325, B-326 B
Apparecchiatura complessa I/O, A-150
appli.tst, C-342, C-353, C-365, C-373 Backup, A-157, A-158
appli.x6m, C-353, C-365 Barra di alimentazione, B-221, D-443
appli.x8m, C-342, C-373 Barra grafica, A-126
Appunti, A-81 Barra Strumenti, D-443
Architettura del target, C-339 Begin, B-211
CJ International E-451
Indice analitico
E-452 CJ International
Indice analitico
CJ International E-453
Indice analitico
E-454 CJ International
Indice analitico
CJ International E-455
Indice analitico
E-456 CJ International
Indice analitico
N Ottimizzatore, A-101
Ottimizzazione, A-138
NE operatore (IL), B-271 Output, A-136, D-450
NEG, B-258
Negazione, B-258
Negazione (FBD), B-219
P
Nome definito, A-83, B-194, D-447 Parametri (Blocchi funzione C), A-156
Nomi definiti, A-77 Parametri (Blocchi funzione), A-149
Nomi di variabili, B-190 Parametri (funzione), A-149
NOT_MASK, B-267 Parametri (funzioni C), A-156
Nota tecnica, A-92, A-149, C-383, C- Parametri (schede I/O), A-149, A-151
384 Parametri collegamento, A-32
Note tecniche, D-447 Parametro, A-26
Numeri di riferimento SFC, A-39 Parametro (blocco funzione), C-398
Numero casuale, B-312 Parametro (funzione C), C-390, D-447
Numero di riferimento, B-196, B-197, Parametro (scheda I/O), D-447
B-198, B-201, D-447 Parametro OEM (scheda I/O), A-152, D-
Numero logico di comunicazione, C- 447
347, C-348, C-359 Parentesi, B-233, B-250
Numero slave, C-340, C-346, C-347, C- Parola chiave, A-20, A-148, A-165, B-
348, C-356, C-359, C-368, C-377, C- 190, B-250, D-447
380 Passo, A-117, B-196, D-447
Nuova tabella di conversione, A-97 Passo finale di macro, A-36, A-38, B-
Nuova variabile, A-81 201
Nuovo elemento di libreria, A-147 Passo finale di Macro, D-448
Nuovo progetto, A-19 Passo iniziale, B-197, B-209, D-448
Passo iniziale di macro, A-36, A-38, B-
O 201
Passo iniziale di Macro, D-448
ODD, B-312 Password, A-95
OF, B-240 POW, B-298
Operando (IL), B-249, B-250, D-447 Priorità, C-377
OPERATE canale I/O, B-277 Processo ISA (OS9), C-345
OPERATE su canale I/O, B-277 Progetti, A-157
Operazione (IL), B-249, B-250, D-447 Progetto, A-160, D-448
Operazione rinviata (IL), B-250, B-254, Programma, A-22, A-72, B-182, D-448
D-447 Programma figlio SFC, D-448
Opzioni (debugger), A-115 Programma padre, D-448
Opzioni (Generatore di codice), A-101 Programma padre SFC, B-209
Opzioni compilatore, A-132 Programma principale, D-448
Opzioni del compilatore, A-30 Programma SFC padre, D-448
OR, B-260 Programmi di primo livello, A-23
OR_MASK, B-265 Programmi figli SFC, A-24, B-209
Ordinamento variabili, A-81 PROM, C-352, C-364
OS-9 shell, C-354 Protezione, A-95
CJ International E-457
Indice analitico
E-458 CJ International
Indice analitico
CJ International E-459
Indice analitico
E-460 CJ International
Indice analitico
CJ International E-461
Indice analitico
E-462 CJ International