Sei sulla pagina 1di 83

Il linguaggio SPL

Manuale di programmazione

Versione del 19 aprile 2002 (V. 5585P)


Sommario
SOMMARIO.................................................................................................................................................................1
STRUTTURA DEI CONTROLLORI.........................................................................................................................4
Il modello SSC01C.....................................................................................................................................................4
Caratteristiche.............................................................................................................................................................4
I dispositivi periferici..................................................................................................................................................4
Le apparecchiature.................................................................................................................................................4
I segnali..................................................................................................................................................................5
Architettura del software di controllo.........................................................................................................................6
Il programma SBJ...................................................................................................................................................6
I programmi utente.................................................................................................................................................6
Configurazione di un controllore................................................................................................................................6
CONVENZIONI TIPOGRAFICHE...........................................................................................................................7
Nomi e parole chiave riservate....................................................................................................................................7
COMPATIBILIT CON PRECEDENTI VERSIONI..............................................................................................8
Compatibilit con lSSC92.........................................................................................................................................8
Compatibilit con lUPC94.........................................................................................................................................8
IL LINGUAGGIO SPL................................................................................................................................................9
Formato dei valori numerici........................................................................................................................................9
Le regole.....................................................................................................................................................................9
Struttura di un programma SPL................................................................................................................................11
Intestazione del programma (Istruzione MODELLO)..............................................................................................11
Definizione delle stringhe (Istruzione TESTO)........................................................................................................11
Definizione delle icone (Istruzione ICONA)............................................................................................................12
Definizione delle strutture.........................................................................................................................................12
Istruzione TIMER.................................................................................................................................................13
Istruzione SOGLIA...............................................................................................................................................14
Istruzione OPZIONE............................................................................................................................................14
Istruzione SEGNALE............................................................................................................................................15
Istruzione ALLARME............................................................................................................................................16
Istruzione LOOP...................................................................................................................................................20
Istruzione MANUALE...........................................................................................................................................21
Istruzione EVENT.................................................................................................................................................21
Istruzione VARIABILE..........................................................................................................................................22
Altre definizioni........................................................................................................................................................22
Istruzione MODALITY 2.......................................................................................................................................22
Istruzione DIAGPRESMDB..................................................................................................................................23
Istruzione MASTER..............................................................................................................................................24
Istruzione ENERSAVESPL...................................................................................................................................24
Istruzione RISERVA DOT0...................................................................................................................................25
Istruzione INCLUDE............................................................................................................................................25
Istruzione INOUTSEP..........................................................................................................................................26
Definizione della TABELLA GLOBALE.................................................................................................................27
Definizione delle fasi................................................................................................................................................27
Definizione della FASE GLOBALE.........................................................................................................................27
Definizione della FASE LIBRERIA.........................................................................................................................28
Istruzione FASE....................................................................................................................................................29
Istruzione TABELLA.............................................................................................................................................29
Le funzioni di controllo dello stato.......................................................................................................................30
Le funzioni di stato e di sistema............................................................................................................................32
Le funzioni di calcolo...........................................................................................................................................37
Le funzioni di gestione del risparmio energetico..................................................................................................40
Istruzioni di controllo...........................................................................................................................................41
Definizione dei permessi di accesso.........................................................................................................................49
Livelli daccesso...................................................................................................................................................49
Visore e tastiera.........................................................................................................................................................50
Istruzione PRIMO PANNELLO............................................................................................................................50
Istruzione TASTI...................................................................................................................................................50
Istruzione PANNELLO..........................................................................................................................................51
Istruzione SCHERMO...........................................................................................................................................53
Istruzioni varie......................................................................................................................................................53
I campi di un pannello..........................................................................................................................................55
Gestione della grafica..........................................................................................................................................60
Le funzioni video predefinite.................................................................................................................................61
La gestione degli eventi............................................................................................................................................63
CREAZIONE DI UN PROGRAMMA.....................................................................................................................66
Prerequisiti................................................................................................................................................................66
Creazione del file sorgente........................................................................................................................................66
La compilazione del sorgente...................................................................................................................................66
Compilazione del file delle icone IPL.......................................................................................................................67
La trasmissione alla centralina..................................................................................................................................67
Gli errori di compilazione.........................................................................................................................................68
Il salvataggio dei programmi utente..........................................................................................................................74
La conversione dei programmi utente.......................................................................................................................75
APPENDICI................................................................................................................................................................76
Appendice A: Programma desempio.......................................................................................................................76
Compilazione e trasmissione................................................................................................................................76
Appendice B: Esecuzione dei programmi utente......................................................................................................77
Appendice C: Elenco delle parole chiave riservate..................................................................................................78
INDICE ANALITICO................................................................................................................................................81

***

Questo documento contiene informazioni riservate e confidenziali di propriet della societ


Micro Device. Il suo contenuto non pu essere divulgato in nessuna forma senza lautorizzazione
scritta del proprietario.

Le informazioni contenute in questo manuale sono soggette a modifiche senza preavviso.

MICRO DEVICE S.R.L. TUTTI I DIRITTI RISERVATI


Struttura dei controllori
Il modello SSC01C
il pi recente e versatile tra i controllori della famiglia SSC. Le sue
caratteristiche lo rendono particolarmente adatto a svolgere le funzioni di
controllore dimpianti medio-piccoli.
Linterazione con loperatore avviene attraverso un visore grafico a cristalli liquidi
(LCD), retro-illuminato, da di VGA (320 x 240) a colori, con tastiera
multifunzionale dotata di trentadue tasti a membrana per il controllo
dellapparecchiatura e linserimento dei parametri numerici.

La comunicazione con lesterno avviente tramite due bus seriali, destinati alla
connessione con i vari dispositivi periferici (sonde, unit di pilotaggio del quadro
di forza, ecc...) e delle centraline fra loro ed al computer centrale, su cui
installato il programma di supervisione SSCNet32.

Caratteristiche
Libreria dei programmi utente contenente fino a 20 ricette . 1

Pannello con visore grafico da 320 x 240 pixel a 8 colori.


Dimensioni di carattere scalabili, con pannello standard di 16 righe da 32 caratteri
(con il font standard da 10 x15 pixel).
Schermate video e tastiera programmabili via SPL.
La tabella riporta i dispositivi periferici controllati dallSSC01C ed i segnali
disponibili:

din dot Ain aot pwm reg set


Scu 24 24 8 3 24 - -
Stu - - 3 - - - -
Ser - - 1 - - - -
Stg - - 2 2 - 4 3
Stj - - 3 1 - 1 1
Mdb 128 128 64 64 128 - -
N.B. Unuscita digitale, sfruttando le medesime uscite, configurabile sia come
Dot sia come Pwm. Il primo Dot dello SCU 1 riservato alla sirena di
segnalazione degli allarmi.

I dispositivi periferici
Le apparecchiature
Questa tabella contiene la lista delle sigle didentificazione dei diversi apparecchi
periferici:

MDB Generatore di canali atto a gestire un massimo di 128 ingressi od uscite


1 La dimensione totale dei programmi non pu comunque superare la memoria disponibile.

Il linguaggio SPL 3 Il linguaggio SPL


digitali e 64 ingressi od uscite analogiche. connesso sia alla centralina,
sia - tramite un bus proprietario a due fili (alimentazione e
comunicazione dei dati) - ai modulini remoti costituenti i segnali veri e
propri.

SCU Dispositivo di controllo del quadro di forza, dotato di 24 ingressi e 24


uscite digitali, 8 ingressi e 3 uscite analogiche. connesso alla
centralina tramite il bus seriale scu bus.

SDTU Sonda programmabile per lacquisizione della temperatura, dellumidit


e della temperatura prodotto (facoltativa). connessa allo scu bus.

STJ Sonda/controllore, simile alla precedente, ma fornita di una sonda di


umidit e di un loop di controllo composto da una sonda di temperatura,
unuscita analogica e un set point.

STG Sonda/controllore programmabile dotata di due loop di controllo. Pu


acquisire due temperature e regolare di conseguenza due uscite
analogiche, con soglia fornita dalla centralina, oppure pu commutarsi
in manuale con le uscite analogiche controllate direttamente dalla
centralina.

SER Interfaccia seriale per bilance elettroniche. Legge il valore proveniente


dalla bilancia e lo trasmette alla centralina tramite lo scu bus.

Gli SCU e gli STU gestiscono fino a quattro apparecchiature (sonde, bilance,
quadri di forza, ecc...), due tutti gli altri.
I segnali
Ogni apparecchio periferico provvisto di segnali e/o morsetti di ingresso/uscita,
collegati ai sensori, alle valvole e ai rel dellimpianto. Tali segnali sono
identificati dalle seguenti sigle:
din
Ingresso digitale: un contatto in chiusura, tipo micro switch.
dot Uscita digitale: di un contatto in chiusura di tipo On/Off.
ain Ingresso analogico: un segnale in tensione o corrente, variabile con
continuit nel suo campo scala, proveniente da un sensore.
aot Uscita analogica: un segnale modulabile da 0 al 100% per lattivazione
di valvole proporzionali e simili.
pwm Uscita digitale configurata con valori da 0 a 100, indicanti la percentuale
di tempo in cui il Dot tenuto in On, rispetto ad un intervallo base.
reg Registro di un dispositivo periferico programmabile, utilizzato per
limpostazione dei parametri di programmazione (stg e stj).
set Registro di un dispositivo controllore di loop, usato per impostare il
valore di soglia (stg e stj).

Il linguaggio SPL 4 Il linguaggio SPL


Architettura del software di controllo

Il programma SBJ
il programma di configurazione della centralina (il sorgente ha estensione SPL)
contenente la descrizione dellimpianto e degli algoritmi di controllo.

I programmi utente
Si tratta dei programmi sviluppati dallutilizzatore della centralina per
lesecuzione ripetitiva di determinati cicli produttivi. Ogni programma utente
comprende una serie di processi predefiniti, detti fasi, che sovrintendono un
particolare processo di regolazione, quali lasciugamento, la stagionatura, ecc...
Il programma corrente, caricato nella memoria di lavoro tramite loperazione
Lettura programma, pu essere eseguito tramite il pulsante START della
centralina.

Configurazione di un controllore
Per rendere operativo il controllore SSC01C bisogna configurarlo con un
programma SBJ; fino a quel momento inerte . I passi da seguire sono questi:
2

1. Scrittura del programma sorgente e di quello delle icone. Tali file hanno
rispettivamente estensione .SPL e .IPL, ad esempio PROG.SPL e
PRGICO.IPL.
2. Compilazione, utilizzando gli appositi compilatori, dei file PROG.SPL e
PRGICO.IPL. I file risultanti avranno estensione .SBJ (quindi PROG.SBJ) e
.IBJ (quindi PRGICO.IBJ).
3. altres disponibile la forma compilata (il sorgente non viene rilasciato) del file
dei caratteri utilizzati dalla centralina, ad esempio FONT.FBJ.
4. Trasferimento dei file FONT.FBJ, PRGICO.IBJ e PROG.SBJ (in questordine)
nella memoria del controllore con il programma di comunicazione SSCTALK.
5. A questo punto consigliabile avviare il programma ed eseguire i test per
verificarne il corretto funzionamento.

2 Tale stato indicato dal messaggio NO SBJ sul visore.

Il linguaggio SPL 5 Il linguaggio SPL


Convenzioni tipografiche

Nel presente manuale vengono utilizzate le seguenti convenzioni tipografiche.


Convenzione Esempio
Le parole chiave, indicate in maiuscolo, vanno inserite nel TABELLA
programma esattamente come indicato.
I nomi ed i valori variabili compaiono fra i caratteri <..>. Essi <valore>, <nome>
evidenziano la posizione del testo nellistruzione e non vanno
inseriti.
Le scritte visualizzate sul visore della centralina appaiono fra messaggio
virgolette.
Gli elementi facoltativi appaiono racchiusi fra parentesi [attributi]
quadre, che non vanno inserite nel programma.

A titolo desempio ecco la descrizione dellistruzione TIMER:


TIMER <nome> testo descrittivo [,<default>][,<attributi>]
e come invece potrebbe apparire in un programma:
TIMER DurataFase Durata della fase: ,0:60

Nomi e parole chiave riservate


Per nome sintende una combinazione di lettere e numeri che identificano nel
programma un oggetto (quali tabelle, soglie, allarmi, ecc). Un nome valido se:
1. composto dalle lettere A..Z (maiuscole e/o minuscole), numeri e il carattere _.
2. lungo fino a 12 caratteri.
3. Inizia con una lettera o con _.
4. Non fra le parole chiave utilizzate dal programma. Ecco alcuni nomi validi e no:
Asciugamento Valido. 1fase NON valido, inizia con un numero.
T Valido. Nometroppolungo NON valido, troppo lungo.
U_Max Valido. MODELLO NON valido, una parola riservata.
Il compilatore distingue tra lettere minuscole e maiuscole, pertanto
Asciugamento e asciugamento sono nomi diversi.
Le parole chiave identificano le singole istruzioni. Il loro elenco completo
compare come appendice al manuale.

N.B. Alcune istruzioni presentano un corrispondente inglese alla parola


chiave in italiano, come FINESTRA e WINDOW.

Il linguaggio SPL 6 Il linguaggio SPL


Compatibilit con precedenti versioni

Compatibilit con lSSC92


Per gli SSC92 con EPROM a maschere programmabili (versione 2000 o
superiore) lunica incompatibilit riguarda gli SPL contenenti la dichiarazione di
segnali di tipo analogico (ad esempio, ssc1.ain o ssc1.aot). Questo perch, a
differenza dellSSC92, il controllore SSC01C privo dingressi ed uscite
analogiche. Per risolvere il problema, basta dichiarare i segnali analogici a bordo
dello SCU anzich del controllore. Se lSPL privo di dichiarazioni di tal fatta,
basta ricompilarlo ed inviarlo alla centralina tramite SSCTALK.
Le videate del controllore SSC01C si distinguono da quelle dellSSC92 per queste
particolarit:
I caratteri espansi sono assai pi raffinati di quelli usati per lSSC92.
Il cursore sul campo che si sta modificando rosso.
Il cursore sulla voce di men selezionata giallo.
Possono comparire immagini e sinottici.

Compatibilit con lUPC94


Seguire questa procedura per aggiornare gli SPL sviluppati per il controllore
UPC94.
In luogo del file delle stringhe dellUPC94 includere quello dellSSC01C. In
pratica, si tratta di sostituire il file STRINGHE.IPL con il file STRS_ITA.IPL.
I segnali vanno dichiarati sullo SCU anzich a bordo del controllore, sostituendo
tutte le sigle ssc1. con scu1..
Eliminare lattributo MODIF dai campi del pannello frontale oppure aggiungere
lattributo OKMODE al pannello stesso.

Ora possibile modificare a piacimento le maschere del pannello frontale,


sfruttando lo spazio che si ottiene passando dalla risoluzione di 20x4 a 32x16
caratteri.

Il linguaggio SPL 7 Il linguaggio SPL


Il linguaggio SPL

Formato dei valori numerici


Il compilatore riconosce due tipi di valori numerici:

Valori numerici di soglia


Sono numeri interi o con una cifra decimale, utilizzati per rappresentare valori
quali temperatura, umidit, ecc... Accettano valori compresi tra -214,748,364.7 e
+214,748,364.6. Il carattere di separazione tra la parte intera e quella frazionaria
il punto, secondo la notazione anglosassone.

Valori di tempo
Sono numeri con formato ore: minuti. secondi. obbligatorio specificare ore e
minuti, il numero di secondi facoltativo.
Esempi:
Temp > 25.6
Urel = 80.0
Tglic = -15
TimDurFas = 1:10.30 # 1 ora, 10 minuti e 30 secondi
TMaxLav = 0:30 # ora
Sebbene il compilatore accetti espressioni miste, convertendo il valore di tempo in
decine di secondi (e viceversa), sconsigliabile mischiare i due tipi di valori.
VARIABILE A # Dichiarazione di una variabile numerica
A:= 1:0.1 # Carica in A il numero 360.1

Le regole
La regola lelemento base del programma. costituita da una condizione logica
che, in base al fatto che sia vera o falsa, determina le azioni da eseguire. Ad
esempio, la regola: SE la temperatura supera il massimo ALLORA accendi il
compressore frigorifero, in SPL si traduce cos:
T > Tmax: ON(Frigo)
Sintassi:
<condizione> [,<condizione>]: <azione> [,<azione>]
<condizione> Ritorna vero se diversa da 0, falsa altrimenti. possibile
concatenare pi espressioni con i sette operatori matematici
+, *, -, /, |, & e % , nonch con gli operatori logici
3

3 Operatore modulo. Restituisce il resto intero di una divisione. Se una o entrambe le variabili presentano una
parte decimale, essa viene ignorata.
Esempi:
5%2 =1
11 % 4 = 3
5.9 % 2.4 = 1

Il linguaggio SPL 8 Il linguaggio SPL


AND, OR, NOT e ,4. Analogamente ad altri linguaggi di
programmazione gli operatori sono combinabili tramite
parentesi. Una condizione pu contenere:
Timer: Ritorna il valore del contatore al momento
dellesecuzione della regola.
SCADUTO(T1), Temp>45, Umid>Umax: FINEFASE
Termina la fase se il timer T1 scaduto, il segnale Temp
maggiore di 45 e il segnale Umid maggiore di Umax.
Allarmi: Ritornano 0x01 se lallarme non tacitato, 0x02 se
lallarme non rimosso.
Espressioni di confronto matematiche:

Sintassi Significato
<Espr1> = <Espr2> uguale a
<Espr1> < <Espr2> minore di
<Espr1> <= <Espr2> minore o uguale di
<Espr1> > <Espr2> maggiore di
<Espr1> >= <Espr2> maggiore o uguale di
<Espr1> <> <Espr2> diverso da
T > Tmax: V:= T
Esegue lassegnamento se T maggiore di Tmax.
Segnali dingresso ed uscita. Un segnale ritorna vero se
attivo, falso altrimenti.
Opzioni. Unopzione valutata vera se impostata a SI.
Soglie. Allinterno di una regola una soglia restituisce il suo
valore.
Variabili. Ritornano il loro valore attuale.
Comandi manuali. Un manuale ritorna vero se forzato a On.
<azione> Istruzioni e/o assegnamenti eseguiti se la condizione vera. La
centralina esamina le azioni da sinistra a destra, mantenendo
lordinamento derivato dalla posizione di ognuna.
TIMERSTART(TimDurFase)
ON(FredVent)
ATTIVA Tirata
FINEFASE
V1:= (T-Tmax)*(T+Tmin)

11.9 % 4.1 = 3
4 AND assoluto: se la condizione alla sinistra della virgola falsa, la centralina interrompe istantaneamente
listruzione corrente saltando a quella successiva

Il linguaggio SPL 9 Il linguaggio SPL


Struttura di un programma SPL
Di seguito descritta la procedura da seguire per creare di un programma SPL:
1. Definizione dellintestazione del programma.
2. Definizione delle stringhe.
3. Definizione delle icone (facoltativa).
4. Definizione degli oggetti e delle strutture quali variabili, soglie, segnali, ecc...
5. Definizione della tabella globale (facoltativa).
6. Definizione delle fasi (facoltativa).
Per ogni fase: definizione delle tabelle.
Per ogni tabella: definizione delle regole che la compongono.
7. Definizione della tabella dei permessi daccesso agli schermi predefiniti
(facoltativa).
8. Definizione del pannello principale.
9. Definizione degli schermi dei pannelli.

Intestazione del programma (Istruzione MODELLO)


Assegna un titolo e un testo di commento al programma. Queste informazioni
sono visualizzate nello schermo predefinito VERSIONE. Deve essere la prima
istruzione di un programma.
Sintassi:
MODELLO <nome> commento
<nome> Stringa di caratteri valida.
commento Stringa, lunga fino ad ottanta caratteri, utilizzabile per
visualizzare informazioni quali la data di rilascio, la versione,
le personalizzazioni, ecc...
Esempio:
MODELLO Preriposo Locali di Pre-riposo ventilato

Definizione delle stringhe (Istruzione TESTO)


Definisce la sezione contenente la dichiarazione delle stringhe utilizzate negli
schermi predefiniti. Solitamente tale dichiarazione posta in un file IPL (vedi il
paragrafo Istruzione INCLUDE).
Sintassi:
TESTO
stringa,

stringa

stringa Stringa di caratteri validi. Se posta nellultima riga non deve


avere la virgola finale.
Esempio:

Il linguaggio SPL 10 Il linguaggio SPL


TESTO
ALLARMI ATTIVI ,
TIMER ATTIVI ,
LOOP ATTIVI

Definizione delle icone (Istruzione ICONA)


Definisce la sezione contenente la dichiarazione di TUTTE icone utilizzate.
bene porre questa sezione in un file dinclude IPL.
Sintassi:
ICONA
<nome> "path bitmap" [<trasp>] ,

<nome> "path bitmap" [<trasp>]
<nome> Stringa di caratteri valida.
<path bitmap> Cartella contenente il bitmap.
<trasp> Colore trasparente utilizzato se unicona impostata come
TRASP manca dellindicazione di un colore negli attributi di
campo. Il colore predefinito il blu.
La dichiarazione posta nellultima riga non ha la virgola finale.
Esempio:
ICONA
I_Clock c:\icone\clock.bmp ,
I_Estrattore ' c:\icone \estrat1.bmp' ,
I_Freddo1 ' c:\icone \freddo1.bmp' ,
I_Ventola ' c:\icone \vent1.bmp' ,
I_Timer c:\icone\timer2.bmp BIANCO
Il colore trasparente dellicona I_Timer il bianco. Se per nel programma
dovesse comparire unistruzione del tipo
INPIX 31, 53 I_Timer, TRASP, ROSSO
il colore trasparente diventerebbe il rosso.
Per ulteriori informazioni sulla gestione delle icone, vedi il capitolo: Le funzioni
video avanzate.

Definizione delle strutture


Gli oggetti SPL devono essere definiti prima delluso. Per ognuno esiste
listruzione di definizione appropriata, come appare nella lista:
1. Per i timer, listruzione TIMER.
2. Per i valori di soglia, listruzione SOGLIA.
3. Per la definizione delle opzioni di funzionamento, listruzione OPZIONE.
4. Per le condizioni di allarme, listruzione ALLARME.
5. Per la definizione dei loop di regolazione, listruzione LOOP.
6. Per la descrizione dei segnali da e per limpianto, listruzione SEGNALE.

Il linguaggio SPL 11 Il linguaggio SPL


7. Per la definizione dei controlli manuali, listruzione MANUALE.
8. Per la definizione degli eventi, listruzione EVENT.
9. Per la definizione delle variabili, listruzione VARIABILE.

Istruzione TIMER
Definisce un timer, ossia un contatore usato per misurare intervalli di tempo.
Esistono due tipi di timer:
A decremento: partono da una soglia impostata via SPL o manualmente e si
fermano (scadono) quando raggiungono lo zero.
Contaore: partono da zero e sincrementano finch una TIMERSUSP o una
TIMERSTOP interrompono il conteggio.
Il formato di visualizzazione standard ore: minuti.

Sintassi:
TIMER <nome> descrizione [,<default>] [,attributi]

<nome> Stringa di caratteri valida. Nelle espressioni matematiche


assume il valore del contatore al momento dellesecuzione
della regola.
descrizione Stringa visualizzata in caso dimpostazione manuale.
<default> Valore di soglia predefinito. Il formato ore: minuti.
secondi. Vale zero in mancanza sia del default sia di
unimpostazione manuale.
<attributi> CONTAORE
Incrementa il timer una volta al secondo fino al suo arresto. Il
massimo conteggio visualizzabile 99999:59.59.
HHMMSS
Imposta il formato di visualizzazione ore: minuti. secondi.
HMSTIM
Questattributo obsoleto. Usare HHMMSS.
INF
Assegna al contatore un valore infinito se il valore di soglia
zero.
MMSS
Imposta il formato di visualizzazione minuti. secondi.
MSTIM
Questattributo obsoleto. Usare MMSS.
NOEDIT
Impedisce la modifica manuale del valore di soglia.
NOEVENT
Disabilita la generazione degli eventi alla scadenza del timer.
NOSTOP
Non arresta il timer in caso dallarme o con la centralina in
Stop.
N.B. Il numero massimo di timer gestibili in SPL 70.

Il linguaggio SPL 12 Il linguaggio SPL


Esempi:
TIMER Durata_Fase Tempo di durata fase:
TIMER T_Pausa Massimo tempo di pausa , 10:0, NOSTOP, INF

Istruzione SOGLIA
Definisce una variabile numerica impostabile manualmente nello schermo
predefinito DATIFASE.
Sintassi:
SOGLIA <nome> descrizione,<min>,<max>,<default> [,attributi]
<nome> Stringa di caratteri valida. Pu comparire in espressioni
matematiche allinterno delle regole.
descrizione Testo visualizzato durante linserimento della soglia.
<min>, <max> Limiti entro i quali deve essere compreso il valore inserito.
<default> Valore predefinito della soglia.
<attributi> HHMM
Visualizza la soglia nel formato ore: minuti.
HHMMSS
Visualizza la soglia nel formato ore: minuti. secondi.
HMSTIM
Questo attributo obsoleto. Usare HHMMSS.
INTERO
Nello schermo predefinito DATIFASE, in corrispondenza della
soglia genera un campo con formato 00000 anzich 000.0.
MMSS
Visualizza la soglia nel formato minuti. secondi.
MSTIM
Questo attributo obsoleto. Usare MMSS.
Esempio:
SOGLIA Tmax Temp. massima ? 0,100,40
La soglia Tmax richiede unimpostazione manuale della temperatura massima,
accettando valori compresi tra 0 e 100. Il default 40.
N.B. Il numero massimo di soglie gestibili in SPL 150 meno il numero di
opzioni.

Istruzione OPZIONE
Definisce unopzione, ossia una variabile impostabile manualmente dalloperatore.
Sintassi:
OPZIONE <nome> domanda , <default>
<nome> Stringa di caratteri valida.
domanda Domanda visualizzata durante limpostazione dellopzione.
<default> Valore predefinito. Accetta ACCESO/SPENTO, SI/NO oppure
ON/OFF.

Il linguaggio SPL 13 Il linguaggio SPL


Esempio:
OPZIONE UmInPau Umidit abilitata in pausa ? , NO
Lopzione UmInPau richiede unimpostazione manuale in risposta alla domanda
Umidit abilitata in pausa ?, accettando i valori SI o NO. Il default NO.
N.B. Il numero massimo di opzioni gestibili in SPL 150 meno il numero delle
soglie.

Istruzione SEGNALE
Definisce un segnale, ossia un morsetto di collegamento ad un dispositivo
periferico, e lo inserisce nella lista dei dispositivi scansionati dal controllore.
Sintassi:
SEGNALE <nome> <dispN.morsNN> [Tipo] [, Zero, FS ] [, CLASSE = <N>,
POTENZA = <N>] [, PERIODO = <N>] [,<attributi>]
<nome> Stringa di caratteri valida.
<dispN.morsNN> Numero e tipo di dispositivo e di segnale. La seguente tabella
contiene le sigle dei vari dispositivi e morsetti, insieme alle
quantit massime ammesse.

Dispositivo Max Tipo di Max


morsetto
<scu> 4 <din> 0 .. 23
<stu> 4 <dot> 0 .. 23 5

<ser> 2 <ain> 0 .. 7
<stg> 2 <pwm> 0 .. 23
<stj> 2 <reg> 0 .. 1
<mdb> 1 <set> 0 .. 1
<Tipo> Tipo di segnale elettrico connesso ai morsetti. Vale S020, per i
segnali in 0-20 mA, e S420, per quelli in 4-20mA. Il default
S020.
<Zero>, <FS> Valori dinizio e fondo scala della sonda collegata ai morsetti.
Il default 0, 100.
PERIODO=<N> Riservato ai segnali di tipo Pwm. Periodo totale del ciclo,
suddiviso in On e Off.
CLASSE= <N> Riservato alla gestione del risparmio energetico. Classe di
consumo del segnale. Accetta soglie, variabili o costanti. Il
valore passato deve essere compreso fra 1 e 7, in caso contrario
sar automaticamente posto a zero.
POTENZA= <N> Riservato alla gestione del risparmio energetico. Potenza del
segnale. Accetta soglie, variabili o costanti.
SEGNALE P scu1.dot1 CLASSE = 1, POTENZA = TSet
SEGNALE P scu1.dot1 CLASSE = 1, POTENZA = V_Kw
SEGNALE P scu1.dot1 CLASSE = 1, POTENZA = 300
<attributi> NOALMFS

5 Si ricordi che il dot0 dello scu1 riservato come uscita di allarme sullSSC01C e non pu essere utilizzato per altri
scopi

Il linguaggio SPL 14 Il linguaggio SPL


Riservato alle uscite analogiche. Non genera un allarme se il
segnale assume il valore di fuori scala.
NOSTOP
Riservato alle uscite digitali. Fa s che il Dot, se attivato nella
tabella globale, rimanga attivo anche in caso di allarme fatale.
TRASP
Riservato alle uscite digitali. Fa s che il Dot non compaia nella
videata dei Dot attivi (e nemmeno fra quelli mostrati dalla
funzione SHOWDOT), a meno la password corrente della
centralina sia di livello SERVICE. In tal caso esso apparir
nella videata in modalit reverse.
Questo attributo, nato per simulare la sirena dello scu, pu
essere utilizzato per creare logiche di sirena pi complesse.
VIRTUAL
Definisce ingressi ed uscite digitali virtuali, ossia non
corrispondenti a ingressi ed uscite presenti fisicamente.
Esempi:
SEGNALE Freddo scu1.dot15, S420, -20, 50
Freddo unuscita digitale connessa alluscita 15 della scheda SCU 1.
SEGNALE T stu1.ain1
T un ingresso analogico connesso allingresso 1 della scheda STU 1.
SEGNALE U stu1.ain2
U un ingresso analogico connesso allingresso 2 della STU 1.
SEGNALE Caldo stu2.aot1
Caldo unuscita analogica connessa alluscita 1 dello SCU 2.
SEGNALE Valvola scu2.pwm1
Valvola luscita digitale 1 della scheda SCU 2, gestita come Pwm, con periodi di
On di lunghezza variabile, ripetuti con cadenza regolare nel tempo.
SEGNALE Bilan ser1.ain1
Bilan un ingresso analogico connesso allingresso 1 della SER 1.
SEGNALE NonSiPuo ser2.dot1
Questa definizione sbagliata poich un dispositivo di tipo SER sprovvisto di
uscite digitali.

Istruzione ALLARME
Definisce un allarme, ossia un evento, per lo pi legato ad anomalie o a
malfunzionamenti dellimpianto, generabile sia tramite SPL sia direttamente dalla
centralina. La sua vita consta di tre distinti momenti.
La generazione alla comparsa della causa che lattiva. Lo schermo predefinito
ALARMLIST riporta la lista degli allarmi non ancora tacitati e rimossi.
La tacitazione, ossia la presa in visione attuata dallutente selezionando
lapposito tasto della centralina.
La rimozione, al cessare della causa che lo aveva generato.
La tacitazione e la rimozione possono avvenire anche in ordine inverso.

Sintassi:

Il linguaggio SPL 15 Il linguaggio SPL


ALLARME <nome> messaggio [,<attributi>]
<nome> Stringa di caratteri valida. Allinterno di una regola ritorna
0x01 se lallarme non tacitato, 0x02 se lallarme non
rimosso.
messaggio Informazione visualizzata dalla centralina.
<attributi> AUTO
Rimuove lallarme allorch viene premuto il tasto di
tacitazione della centralina, senza attendere una ALARMSTOP.
NOEVENT
Disabilita la generazione degli eventi in caso di comparsa,
tacitazione o rimozione dellallarme.
NOFAT
Imposta lallarme come non fatale.
NOBELL
Disattiva la sirena che segnala la comparsa dellallarme e
imposta la tacitazione automatica alla rimozione.
Esempi:
ALLARME A_TerVc "Termica ventilatore centrifugo"
ALLARME A_TerPF "Termica pompa freddo"
ALLARME A_Tmax "Temperatura sopra il massimo."

TerVc: ALARMSTART(A_TerVc)

Gestione degli allarmi dei dispositivi esterni supplementari


In presenza di pi dispositivi esterni (Scu, Stu, ecc...) conviene dichiarare gli
allarmi dognuno, cos da identificare con certezza il dispositivo in avaria.
Diversamente lo stesso messaggio segnalerebbe un guasto allo scu1 o allo scu2.
Gli allarmi dei dispositivi supplementari sono:
A_Cscu2, A_Cscu3, A_Cscu4, A_Cstu2, A_Cstu3, A_Cstu4, A_Vstu2,
A_Vstu3, A_Vstu4, A_nocal2, A_nocal3, A_nocal4, A_badan2, A_badan3,
A_badan4, A_Cbil2, A_Rbil2, A_Sbil2, A_Cest2, A_Vest2, A_Cstg2, A_Vstg2
Esempio:
MODELLO Demo2Stu "Demo con due Stu"
INCLUDE STRS_ITA.IPL # File IPL contenente le stringhe
INCLUDE INC_BASE.IPL # File IPL contenente le dichiarazioni
# degli allarmi standard
INCLUDE ICO_STD.IPL
SEGNALE Textra stu2.ain2 # Dichiarazione del secondo stu
ALLARME A_Cstu2 Comunicazione Stu 2 # Dichiarazione degli allarmi dello Stu
ALLARME A_Vstu2 Valori Stu 2 errati
Il file INC_BASE.IPL contiene la definizione degli allarmi dello scu1, il
programma SPL quelli dello scu2.

Gestione degli allarmi dei dispositivi MDB


Sigla Messaggio visualizzato e significato
A_Cmdb Comunicazione bus MDB

Il linguaggio SPL 16 Il linguaggio SPL


Sigla Messaggio visualizzato e significato
La centralina non comunica con il generatore di canali del bus
MDB.
A_Vmdb Ripetuti errori di lettura MDB
La centralina non riceve pi i dati dal generatore a causa di ripetuti
errori sulla linea MDB oppure per un errore di protocollo tra la
centralina ed il generatore.
A_Amdb Allarme AIN mdbus
Ogni ingresso analogico dellMDB pu generare un proprio
allarme qualora rilevi unanomalia nella variabile misurata. In tal
caso la centralina segnala la presenza di qualche Ain in allarme, la
cui lista disponibile nella schermo predefinito AINERRLIST.
Insieme al messaggio dallarme compare il nome simbolico del
segnale che ha generato il problema.
A_Dmdb Mancante DIN mdbus
A_Mmdb Mancante AIN mdbus
A_Omdb Mancante DOT mdbus
A_Tmdb Mancante AOT mdbus
Il generatore di canali rileva la mancanza di uno o pi modulini
(Din, Ain, Dot o Aot) e lo segnala alla centralina che genera un
opportuno allarme.
La lista completa dei Din e degli Ain MDB in allarme
disponibile negli schermi predefiniti DINMISSLIST e
AINMISSLIST. Insieme al messaggio dallarme viene indicato il
nome simbolico del segnale che ha generato il problema.
A_COMmdb MDB segnala: comando ignoto
Il generatore non riconosce un comando inviatogli dalla centralina.
A_DATmdb MDB segnala: dati errati
Il generatore non riconosce dei dati inviatigli dalla centralina.
A_CORmdb MDB segnala: cortocircuito linea
Il generatore master riscontra un cortocircuito sulla linea MDB.
A_PROmdb MDB segnala: scattata protezione
Il generatore master segnala che, a causa di un eccessivo
assorbimento di corrente, scattata la protezione interna.
A_MAXmdb MDB segnala: tensione sopra max
Il generatore riscontra una tensione superiore al limite massimo.
A_MINmdb MDB segnala: tensione sotto min
Il generatore riscontra una tensione inferiore al limite minimo.
A_BASmdb MDB segnala: linea bassa
Il generatore slave segnala che la linea bassa. Potrebbe accadere
in caso di cortocircuito sulla linea, se il generatore master assente
o non sta alimentando la linea mdb.
A_NATmdb MDB segnala: linea non attiva
Il generatore slave segnala che, pur essendo la linea alimentata,
non rileva le transazioni di comunicazione del master. Potrebbe
accadere se il master fosse presente ma sconfigurato oppure se,
mancando il master, fosse lo slave ad alimentare la linea.

Il linguaggio SPL 17 Il linguaggio SPL


Sigla Messaggio visualizzato e significato
A_IGNmdb MDB segnala: transazioni ignote
Il generatore slave segnala la presenza sulla linea di transazioni a
lui sconosciute.
A_LETmdb MDB segnala: errori lettura
Il generatore fallisce la comunicazione con il bus MDB oppure
riscontra ripetuti errori di lettura.
A_Emdb Prolungata mancanza dati MDB
La centralina genera questo allarme qualora, nonostante la
comunicazione con il generatore sia regolare, non venga pi
eseguita la transazione di lettura dellimpianto ma soltanto le
transazioni diagnostiche o di servizio.
A_BLKmdb MDB segnala: blocco linea MDB
La centralina, collegata ad un generatore master con versione pari
a 3.2 o superiore, indica la condizione anomala che si verifica sulla
linea quando un singolo modulino ha lo stadio duscita in corto. I
nuovi generatori, infatti, quando rilevano questa condizione,
interrompono la comunicazione con la linea mdb e inviano questo
allarme alla centralina.
Se questo malfunzionamento si presenta su centraline con EPROM
precedenti alla 5196P del 10 febbraio 2000 viene generato
lallarme MDB segnala: linea non attiva (vedi sopra).
A_DI_mdb Digitali insuf. su master MDB
A_AI_mdb Analogici insuf. su master MDB
La centralina slave genera questi allarmi quando lSPL prevede pi
canali digitali o analogici di quelli generati fisicamente dal master
sulla linea.
Lallarme si verifica se il generatore mantiene la condizione
anomala per almeno dieci cicli.
A_Gmdb "Gen.vecchio: non conosce INOUTSEP"
Un SPL contenente la direttiva INOUTSEP stato inviato ad una
centralina collegata ad un generatore di canali con versione
precedente alla 4.1.
A_MCImdb "MDB segnala: master con INOUTSEP"
A_MSImdb "MDB segnala: master non INOUTSEP"
Questi allarmi vengono generati dallo slave qualora si rilevi
unasimmetria col master riguardo alla direttiva.
A_MDImdb "MDB segnala: master INOUTSEP/SIG"
Il generatore Slave dallanalisi delle transazioni rileva un errore sul
Master. Pu trattarso di un Master senza direttiva INOUTSEP
oppure essa presente ma con segnali insufficienti.
A_Pmdb "Qualche segnale MDB disabilitato"
stata rilevata la presenza di almeno un modulo MDB disabilitato.
Lallarme rimane attivo finch il modulo disabilitato. In questo
periodo vengono inibiti i seguenti allarmi relativi al segnale:
A_Amdb, A_Dmdb, A_Mmdb, A_Omdb, A_Tmdb
durante il periodo in cui il modulino disabilitato le uscite
analogiche e digitali sono poste a 0 (off).

Il linguaggio SPL 18 Il linguaggio SPL


Istruzione LOOP
Definisce un loop di regolazione di tipo P.I.D. ad azione proporzionale, integrale e
derivativa. Funzione di un loop mantenere il valore in ingresso uguale ad un
determinato valore di soglia, agendo direttamente sulluscita.
La formula utilizzata per calcolare luscita :
yl = Cp + Ci + Cd
dove:
Cp = Kp * (X-Xo)
Ci = Kp * (Integrale/KINT)
Cd = Kp * (Derivata*KDER)/100
con Kp = 100/BP
La componente integrale Ci equivale a Yo se la costante (KINT) 0. Se invece
KINT diversa da 0, Ci sostituisce Yo, autocorreggendosi fino ad arrivare alla
percentuale di apertura di valvola necessaria per la soglia impostata.
Sintassi:
LOOP <nome> INPUT <input> OUTPUT <output> SETPOINT <n> [,attributi]
<nome> Stringa di caratteri valida.
<input> Nome di un ingresso analogico.
<output> Pu essere unuscita analogica, una variabile o un loop.
<n> Nome di una soglia o di una variabile.
<attributi> BP = <valore>
Percentuale della banda passante. Il default 4.
KDER = <valore>
Percentuale di peso della componente derivativa rispetto a
quella proporzionale. Il default, che 0, significa che la
componente derivativa viene ignorata.
KINT = <valore>
Numero di cicli necessari alla componente integrale per
assumere il medesimo peso di quella proporzionale. Il default,
che 0, significa che la componente integrale viene ignorata.
DTDER = <valore>
Numero di cicli fra una derivata e la successiva. Il default 10.
Y0 = <valore>
Percentuale delluscita analogica con lingresso uguale al
valore di soglia. Il default 50.
YMIN = <valore>
Percentuale minima raggiungibile dalluscita del loop. Il
default 0.
YMAX = <valore>
Percentuale massima raggiungibile dalluscita del loop. Il
default 100.

Esempio:

Il linguaggio SPL 19 Il linguaggio SPL


LOOP Loop1 INPUT TCel OUTPUT Valv1 SETPOINT SetT, BP=-10 KINT=200.0,
KDER=50.0, DTDER=30
Ipotizzando un ciclo del caldo impostato coi parametri sopra definiti, supponiamo
che, in un dato istante, la temperatura scenda di un grado sotto la soglia. A questo
punto la componente proporzionale (BP) richiede immediatamente un 10% di
apertura in pi, mentre quella integrale ( KINT) comincia a sommare gli errori nel
tempo, arrivando a richiedere anchessa un 10% in 200 cicli. Ogni 30 (DTDER)
secondi calcolata la derivata della temperatura, mentre il peso (KDER) il 50%
della proporzionale, ossia 5%.

Istruzione MANUALE
Definisce un comando manuale, ossia un deviatore usato per controllare, tramite
la tastiera della centralina, laccensione e lo spegnimento dei dispositivi
dellimpianto. I comandi manuali sono visualizzati nello schermo predefinito
MANLIST.
Sintassi:
MANUALE <nome>,<default>
<nome> Stringa di caratteri valida.
<default> Accetta SI/NO, ON/OFF o ACCESO /SPENTO.
Esempio:
MANUALE M_Ventil, ACCESO
MANUALE M_Estr, SPENTO

# Sezione azionamento dei comandi manuali
M_Ventil: FORZA(Vent)
M_Estr: FORZA(Estr)
Definisce due comandi manuali, M_Ventil e M_Estr, usati per forzare a On i
segnali Vent ed Estr.

Istruzione EVENT
Configura un nuovo evento, detto evento utente.
Sintassi:
EVENT <nome> commento
<nome> Stringa di caratteri valida.
<commento> Messaggio (massimo 80 caratteri) visualizzato nello schermo
predefinito LOGEVENT.
Esempio:
EVENT Ev_Inib Centralina inibita

ATTENZIONE: Per ulteriori informazioni rigurdanti la gestione degli eventi in


SPL far riferimento al capitolo La gestione degli eventi.

Il linguaggio SPL 20 Il linguaggio SPL


Istruzione VARIABILE
Definisce una variabile. Una variabile pu contenere sia valori numerici sia di
tempo, questi ultimi convertiti in decine di secondi. Le variabili possono
comparire allinterno di espressioni algebriche di calcolo.
Sintassi:
VARIABILE [DI RETE] [VISIBILE] [DI TESTO] <nome> [,<nome>, ... ,<nome>]
[DI RETE] Definisce una variabile di rete. Le variabili di rete presentano
questa particolarit. Possono essere lette dalle centraline che ne
contengono la dichiarazione, ma sono modificabili dalla sola
centralina master (vedi listruzione MASTER).
[VISIBILE] Visualizza il nome simbolico e il valore della variabile nello
schermo predefinito VARLIST.
[DI TESTO] Definisce una variabile di tipo stringa.
<nome> Stringa di caratteri valida.
Esempi:
VARIABILE TempMax, TempMin, TempAlarm
VARIABILE DI TESTO VISIBILE Fase, Mess
VARIABILE DI RETE TempMax, TempMin, TempAlarm
Le variabili di rete si identificano in base allordine di definizione nel master.
Rifacendosi allesempio, i valori delle variabili di rete TempMax, TempMin e
TempAlarm potranno essere letti dalle altre centraline se queste a loro volta
contengono la dichiarazione di tre variabili di rete, magari con nomi differenti da
quelli della centralina master, purch mantengano una corrispondenza per ordine:
la prima variabile definita corrisponder quindi a TempMax del master, la seconda
a TempMin, la terza a TempAlarm anche qualora i nomi scelti fossero A, B e C.
Se la centralina master si guasta o resta isolata, le variabili di rete sono poste a
UNDEF . Questo valore pu essere utilizzato per attivare le azioni previste in caso
6

di caduta del master.

Altre definizioni
Queste direttive, pur non riguardando la definizione di strutture dati od oggetti
SPL, vanno tuttavia inserite in questa sezione.

Istruzione MODALITY 2
Imposta la seconda modalit di funzionamento delle istruzioni SCADUTO,
SCESO, SALITO, CAMBIATO (La prima di esse relativa ai timer, le altre
riguardano uscite e ingressi digitali). La modalit predefinita la 1.

Il funzionamento il seguente:
1. Non sono pi istruzioni a consumo.

6 UNDEF ha valore indefinito, perci non bisogna mai utilizzarlo con gli operatori > (maggiore) o < (minore).
possibile invece impiegarlo con gli operatori logici = (uguale) e <> (diverso).
A > UNDEF o A < UNDEF Operazioni non consentite.
A = UNDEF o A <> UNDEF Operazioni consentite.

Il linguaggio SPL 21 Il linguaggio SPL


Normalmente le istruzioni SCADUTO, SCESO, SALITO, CAMBIATO
funzionano a consumo, ossia ritornano VERO solo la prima volta che sono
testate mentre le successive chiamate ritornano falso anche se, per ipotesi,
si trovano nella riga immediatamente seguente.
Questo comporta la necessit di ricorrere a variabili dappoggio ogniqualvolta
si debba testare in pi punti del programma la suddetta condizione.
Inoltre, una volta verificatosi levento controllato, listruzione rimane
pendente finch non viene testata la prima volta (magari a distanza di molto
tempo). Questo comporta che istruzioni tipo:
O_Freddo, SCESO(Freddo): ALARMSTART(A_ScesoFreddo)
sono errate poich se il segnale Freddo passa da On a Off quando lopzione
disabilitata, lallarme pu venir generato in ritardo rispetto alla condizione
testata, appena qualcuno abiliter lopzione.
Listruzione corretta per ovviare al problema :
SCESO(Freddo), O_Freddo: ALARMSTART(A_ScesoFreddo)

2. Sono vere solo al giro SPL successivo allevento.

Sintassi:
MODALITY 2

Osservazioni:
Vi possono essere problemi di compatibilit per quegli SPL nei quali il
programmatore ha sfruttato a proprio vantaggio, ricorrendo a trucchi insoliti, le
particolarit delle istruzioni SCADUTO, SCESO, SALITO, CAMBIATO.
Ecco un esempio di SPL incompatibile:
O_AllConSir, SCESO(Freddo): ALARMSTART(A_ConSirena)
SCESO(Freddo): ALARMSTART(A_SenzaSirena)
In questo caso il programmatore vuole generare, alla caduta del segnale Freddo,
un allarme con o senza sirena a seconda dello stato di certa opzione. In modalit 2
se il freddo scende quando lopzione abilitata, gli allarmi vengono generati
entrambi!
Questa porzione di codice dovr essere invece cos riformulato per essere
compatibile con la modalit 2:
O_AllConSir, SCESO(Freddo): ALARMSTART(A_ConSirena)
NOT O_AllConSir,SCESO(Freddo): ALARMSTART(A_SenzaSirena)

Istruzione DIAGPRESMDB
Le presenze dei modulini MDB e i relativi allarmi di mancanza sono gestiti in
maniera dissimile per gli ingressi e per le uscite: mentre lSSC01C rileva run-time
la presenza dei segnali dingresso (Din e Ain), per le uscite (Dot e Aot) ci non
avviene. La presenza di queste ultime determinabile solo grazie alle transazioni
periodiche che la centralina esegue se lSPL contiene la direttiva DIAGPRESMDB.

Sintassi:
DIAGPRESMDB [DIAG_DIN]

DIAG_DIN Estende anche ai Din la funzionalit della direttiva


DIAGPRESMDB.

Il linguaggio SPL 22 Il linguaggio SPL


La diagnostica presenze run-time non rileva un modulo Din se
in SPL altres dichiarato un Dot con il medesimo indirizzo.
Ad esempio, supponiamo di avere un SPL contenente la
dichiarazione dei due segnali din0 e dot0. Qualora il modulino
din0 si guastasse, la centralina non rileverebbe la sua
mancanza e, di conseguenza, non genererebbe lallarme.
Tramite lattributo DIAG_DIN la presenza dei modulini Din
viene indagata tramite transazioni periodiche, come gi
avviene per Dot e Aot . 7

La direttiva DIAGPRESMDB agisce SOLO su centraline dichiarate master. Lo lo


slave, infatti, inabile ad eseguire qualunque funzione diagnostica del bus mdb.
La diagnostica a transazioni periodiche presenta uno svantaggio: laumento del
tempo necessario per la generazione e il ripristino dellallarme relativo alla
mancanza di un modulino.

Istruzione MASTER
Abilita una centralina per la scrittura delle variabili di rete.
Sintassi:
MASTER
Sebbene questa direttiva possa comparire ovunque, preferibile porla subito dopo
la dichiarazione del modello.
La centralina master va obbligatoriamente cablata come testa della rete, ossia
deve essere la prima centralina sulla rete, partendo dal punto dinizio del cavo di
network.
Se la centralina master resta isolata, le variabili di rete sono poste a UNDEF. Per
evitare questo inconveniente possibile dichiarare una seconda centralina master 8

che, in caso di guasto, rimpiazzi la centralina master, tenendo aggiornate le


variabili di rete.

Istruzione ENERSAVESPL
Riserva al programma SPL il taglio delle uscite analogiche e digitali per la
gestione del risparmio energetico, impedendo alla centralina di eseguire
automaticamente tali operazioni.
Sintassi:
ENERSAVSPL

7In presenza di SPL contenenti Din e Dot con lo stesso indirizzo, per determinare con sicurezza la presenza dei Din,
devono verificarsi tutte queste condizioni.
La centralina deve essere programmata con una EPROM avente versione maggiore o uguale a 5306P.
Il programma SPL deve contenere la direttiva: DIAGPRES DIAG_DIN.
LSSC01C deve essere collegato ad un generatore master (lo slave pu eseguire solo la diagnostica run-time)
8 Questa centralina deve essere la seconda in ordine di collegamento alla rete e va anchessa configurata master.

Il linguaggio SPL 23 Il linguaggio SPL


Istruzione RISERVA DOT0
Riserva luso del morsetto dot0 dellUPC ( ssc1.dot0) per lattivazione automatica
di una sirena dallarme esterna.
IMPORTANTE: Questistruzione oramai obsoleta, essendo destinata ai soli
controllori di tipo UPC.
Sintassi:
RISERVA DOT0

Istruzione INCLUDE
Inserisce nel programma una porzione di codice posta in un altro file.
Conviene, in presenza di programmi particolarmente lunghi oppure di parti
identiche di codice presenti in pi programmi, spezzare in pi file il codice e
concatenare poi il tutto con una INCLUDE.
Leffetto di questistruzione quello di inserire nel programma principale il
codice del file incluso esattamente al posto dellINCLUDE stessa.
Lestensione IPL caratterizza i file contenenti sezioni di codice da includere nel
programma, quali la definizione delle stringhe usate per gli schermi predefiniti,
oppure quella delle icone, ecc... LINCLUDE di un IPL contenente le istruzioni !
IFDEF o !IFNDEF va posta dopo la corrispondente !DEFINE.
Sintassi:
INCLUDE <nomefile>
<nomefile> Nome del file contenente il codice da concatenare.

Osservazioni:
Il file STRS_ITA.IPL (o gli equivalenti nelle diverse lingue), contenente le
stringhe usate dalla centralina per le proprie maschere, va incluso subito dopo la
dichiarazione del modello, delle eventuali !DEFINE e delle istruzioni direttive
(come la MASTER o la RISERVA DOT0).

Esempio (1):
Supponiamo daver creato il programma principale PRINC.SPL:

MODELLO Princ Prova di INCLUDE


INCLUDE TABGLOB.SPL
FASE Fase1
... continua ...

e il file TABGLOB.SPL:

TIMER Tim1 Tempo di prova:, 0:1


ALLARME A_Timer Fuori tempo massimo
TABELLA GLOBALE
SCADUTO(Tim1): ALARMSTART(A_Timer)

Il compilatore si comporter come se si trovasse di fronte ad un unico file


contenente queste istruzioni:

MODELLO Princ Prova di INCLUDE

Il linguaggio SPL 24 Il linguaggio SPL


TIMER Tim1 Tempo di prova:, 0:1
ALLARME A_Timer Fuori tempo massimo
TABELLA GLOBALE
SCADUTO(Tim1): ALARMSTART(A_Timer)
FASE Fase1
... continua ...
Esempio (2):
Dichiarazione dei file IPL standard:
MODELLO Demo "Demo SPL (con maschere)"
!DEFINE SINOTTICO
!DEFINE INC_SOLO_ALL
INCLUDE STRS_ITA.IPL # File IPL contenente le stringhe
INCLUDE INC_BASE.IPL # File IPL contenente le inclusioni standard
INCLUDE ICO_STUF.IPL # File IPL contenente le icone

Istruzione INOUTSEP
Permette di assegnare agli ingressi e alle uscite (analogiche o digitali) lo stesso
indirizzo senza che lingresso influenzi in alcun modo luscita.

Questa direttiva, infatti, gestisce la comunicazione sul bus MDB in modo da separare
logicamente gli ingressi e le uscite sia digitali sia analogiche. Fino alla Eprom 5313P
gli ingressi e le uscite analogiche non potevano avere il medesimo indirizzo, cosa
possibile per le digitali anche se in questo caso luscita veniva pilotata dallingresso.

Sintassi:
INOUTSEP

Luso di questa direttiva particolarmente vantaggioso nel caso in cui si voglia


aggiornare SPL, progettato per lo SCU, in modo che gestisca gli MDB, il tutto senza
dover cambiare gli indirizzi fisici.

La direttiva INOUTSEP supportata da generatori Master con versione maggiore o


uguale a 4.1 e slave con versione maggiore o uguale a 3.1s.

Questo implica un problema dincompatibilit in quanto il suo utilizzo DEVE essere


associato solamente a sistemi muniti dei pi recenti generatori di canale (versione 4.1
o successiva per i Master, 3.1 o successiva per gli Slave). Qualora si collegasse un
SSC01C configurato con la direttiva INOUTSEP ad un generatore di vecchio tipo,
verrebbe generato un allarme dopo di che si bloccherebbe limpianto.

Anche in impianti di tipo Master/Slave mdbus in presenza di una INOUTSEP


entrambi i generatori devono essere del nuovo tipo. Inoltre gli SPL del Master e dello
Slave devono o contenere entrambi la direttiva oppure esserne entrambi privi.
Bisogna prestare particolare attenzione in quanto in impianti Master/Slave mdbus in
caso derrore non garantita la generazione di un allarme che evidenzi lanomalia.
Il generatore Slave, infatti, analizzando le transazione sul bus Mdb pu non rilevare
se il Master in modalit INOUTSEP oppure no.

Ad esempio i generatori Slave con versione precedente alla 3.1s, non essendo in
grado di riconoscere una tale situazione, si comporterebbero in maniera anomala,

Il linguaggio SPL 25 Il linguaggio SPL


arrivando perfino a leggere valori errati sulle analogiche, confondendo in alcune
letture gli Aot del Master con i valori degli Ain.

Definizione della TABELLA GLOBALE


Contiene le azioni da eseguire prescindendo dalla fase e dalla tabella correnti,
nonch dallo stato (Start o Stop) del controllore. Infatti, le regole di questa tabella
sono attive anche con il controllore in Stop. Tale caratteristica serve per definire,
ad esempio, il comportamento della centralina in caso di allarmi generati da
segnali non influenzati dalla fase e/o tabella in corso.
I parametri definiti nella tabella globale compaiono allinterno dello predefinito
CONFIMP.
Riguardo alla tabella globale bene tener conto di quanto segue:
1. Dal suo interno impossibile attivare altre tabelle. Listruzione ATTIVA ne
causerebbe infatti la disattivazione, perci non pu essere usata.
2. Non pu essere attivata da unaltra tabella.
3. facoltativa ma, se definita, deve contenere almeno una regola.
Sintassi:
TABELLA GLOBALE

Definizione delle fasi


Dopo la tabella globale possibile inserire la definizione delle fasi. Le fasi
disponibili per la creazione di un programma utente sono visualizzate nello
schermo predefinito FASILIST. I parametri delle fasi compaiono allinterno dello
predefinito DATIFASE.

Definizione della FASE GLOBALE


La fase globale una fase speciale, di durata infinita, sempre attiva; in parallelo
con la fase corrente oppure da sola, se la centralina in Stop.
Contrariamente alle fasi normali, non compare nello schermo predefinito
FASILIST, contenente le fasi disponibili per la composizione di un programma
utente.
I parametri definiti nella fase globale compaiono allinterno dello predefinito
CONFIMP.
Le tabelle della fase globale sono gestite dalle istruzioni ATTIVA, ESEGUI ed
ARRESTA, tranne la prima che sempre attiva. Perci, la fase globale inutile se
contiene una sola tabella, essendo sufficiente dichiarare la TABELLA GLOBALE.
Sintassi:
FASE GLOBALE

Esempio:

Il linguaggio SPL 26 Il linguaggio SPL


MODELLO Esempio2
FASE GLOBALE
TABELLA tg1
...
TABELLA tg2
...

Definizione della FASE LIBRERIA


una fase le cui tabelle sono a disposizione delle altre fasi definite. La sua
dichiarazione deve comparire subito dopo la definizione della TABELLA
GLOBALE (o della FASE GLOBALE).
La fase libreria non pu essere mandata in esecuzione, n compare nella
schermata predefinita FASILIST.
Il suo impiego consigliabile in presenza di pi fasi contenenti sezioni identiche
di codice. Sostituire il codice in comune con lattivazione di una tabella della fase
libreria, oltre che migliorare la leggibilit del programma, assicura un risparmio
di spazio in SBJ.
Sintassi:
FASE LIBRERIA
Esempio:
MODELLO Esempio3
FASE LIBRERIA
TABELLA freddi
T>Tmax: FORZA(Fr0)
T>Tmax+Dt1: FORZA (Fr1)
T>Tmax+Dt2: FORZA (Fr2)
Fr1 OR Fr1: FORZA(VcAlta)
T>Tmax+DtA: ALARMSTART(A_Tmax)
T<Tmax+DtA: ALARMSTOP(A_Tmax)
A_Tmax: BLOCCA(Ca1),BLOCCA(Ca2)

FASE lavoro
TABELLA lav
U<Umin: FINEFASE
U>Umax: FORZA(VcBassa)
U>Umax+DtU: FORZA(VcAlta)
T>Tmax: ESEGUI freddi
T<Tmax: ARRESTA freddi

FASE pausa
TABELLA pau
U>Umax: FINEFASE
U<Umin: FORZA(Umidita)
T>Tmax: ESEGUI freddi
T<Tmax: ARRESTA freddi

La tabella freddi della fase libreria a disposizione di tutte le fasi che devono
effettuare il controllo dei freddi.

Il linguaggio SPL 27 Il linguaggio SPL


Istruzione FASE
Definisce una fase. Le fasi corrispondono ai vari cicli di lavorazione del processo
gestito e coincidono con un particolare regime o schema di controllo
dellimpianto. Una fase deve contenere almeno una tabella.
Le fasi sono elencate nella schermata predefinita FASILIST da dove, durante la
creazione di un programma utente, possono essere selezionate per essere inserite
nel programma.
Sintassi:
FASE <nome>
<nome> Stringa di caratteri valida.
Esempio:
FASE Asciugamento
TABELLA Pausa
< ... >
TABELLA Lavoro
< ... >
FASE Raffredda
VISUALIZZA Tdf, Tambiente, Uambiente
TABELLA Freddo
< ... >

Istruzione TABELLA
Definisce una tabella.
Una tabella costituita da una serie di regole. A loro volta le regole sono costituite
da condizioni, che devono essere valutate, e dalle azioni eseguite se la condizione
vera. Le regole di una tabella attiva sono esaminate in sequenza. Dopo lultima
regola della tabella, si riparte dalla prima. Listruzione FINETABELLA interrompe
lesecuzione delle regole contenute in una tabella. Oltre alle regole contenute nella
tabella attiva, vengono esaminate anche quelle contenute nella tabella globale.
Una tabella, per eseguire le regole che la compongono, deve essere attivata con le
istruzioni ATTIVA ed ESEGUI:
Una tabella si disattiva in seguito ad una FINEFASE, ad unATTIVA di unaltra
tabella o ad unARRESTA.
Sintassi:
TABELLA <nome>
<condizione>: <azioni>
<condizione>: <azioni> ...: ... ...
<nome> Stringa di caratteri valida.
<condizione> Condizione da valutare.
<azioni> Azioni eseguite se la condizione valutata vera.
Esempio:
MODELLO Esempio1
FASE Fs1
TABELLA freddo
SEMPRE: FORZA(Fr1)
T>Tmax: ESEGUI piufreddo

Il linguaggio SPL 28 Il linguaggio SPL


T<Tmax: ARRESTA piufreddo
TABELLA piufreddo
SEMPRE: FORZA(Fr2)

La tabella freddo tiene attivo un Dot. Poi, in base al valore della variabile T,
chiama in supporto unaltra tabella che ne attiva un altro. A questo punto entrambe
le tabelle sono attive. In seguito la tabella di supporto viene disattivata.

Le funzioni di controllo dello stato


La funzione SEMPRE
Ritorna sempre il valore vero. indicata per creare regole aventi validit
generale, svincolate da condizioni:
Sintassi:
SEMPRE
Esempio:
TABELLA Lavoro

SEMPRE: ON(Vent)
Attiva il ventilatore durante tutto il periodo di validit della tabella.

La funzione UNAVOLTA
Ritorna vero alla prima scansione della tabella, ossia dopo unistruzione
ATTIVA. Se posta nella tabella globale ritorna vero ad ogni accensione o reset
della centralina. Un utilizzo tipico lavvio dei timer, che deve essere eseguito
una sola volta, e non ripetuto continuamente durante una fase.
Sintassi:
UNAVOLTA
Esempio:
TABELLA Lavoro
UNAVOLTA: TIMERSTOP(TmaxL), TIMERSTART(TmaxR),
OFF(Vent),OFF(CA1), LOOPSTOP(Freddo), LOOPSTOP(Caldo)

La funzione ONATTIVA
Ritorna vero una sola volta, al momento dellattivazione di una tabella. Equivale
a UNAVOLTA nelle tabelle normali.
Sintassi:
ONATTIVA

La funzione ONCONT
Ritorna vero in caso di pressione del tasto CONT.
Sintassi:
ONCONT
Esempio:
TABELLA Globale

ONSBJ: PrimaVolta := 1
PrimaVolta: SETLEVEL( 1, 0)
ONSTOP: OLDCRIT1 := LEVEL(1), SETLEVEL( 1, 0)

Il linguaggio SPL 29 Il linguaggio SPL


ONCONT: SETLEVEL( 1, OLDCRIT1)
ONSBJ: VAR_KWATT := 12.5 , VAR_KCAL := 73 , VAR_KFRI := 44.2
STATUS(0)<>2:ATTESA := 0

Utilizza il tasto CONT per reimpostare la criticit della classe specificata.

La funzione ONRESET
Ritorna vero solamente dopo un reset (spegnimento e riaccensione) del
controllore. Equivale a UNAVOLTA nella tabella globale.
Sintassi:
ONRESET
Esempio:
FASE GLOBALE
TABELLA Globale
ONSBJ OR ONRESET: ESEGUI Animazioni

Esegue la tabella Animazioni a seguito di un reset della centralina oppure dopo
linvio di un nuovo programma SBJ.

La funzione ONSBJ
Ritorna vero dopo che la centralina ha ricevuto un nuovo programma SBJ
oppure in caso di cancellazione della memoria.
Sintassi:
ONSBJ
Esempio:
ONSBJ: PrimaVolta := 1
ONSBJ: VAR_KWATT := 12.5 , VAR_KCAL := 73 , VAR_KFRI := 44.2
PrimaVolta: SETLEVEL( 1, 0)
ONSTOP: OLDCRIT1 := LEVEL(1), SETLEVEL( 1, 0)
ONCONT: SETLEVEL( 1, OLDCRIT1)
STATUS(0)<>2: ATTESA := 0

La funzione ONSTART
Ritorna vero se stato premuto il tasto START.
Sintassi:
ONSTART
Sintassi:
TABELLA GLOBALE

SEMPRE: v_finT := T, v_finU := U,

ONSTART: VAR_X := 0
SEMPRE: DT0 := FUNTU(T , U)
.

La funzione ONSTOP
Ritorna vero se stato premuto il tasto STOP.
Sintassi:

Il linguaggio SPL 30 Il linguaggio SPL


ONSTOP
Esempio:
TABELLA Globale

ONSBJ: PrimaVolta := 1
PrimaVolta: SETLEVEL( 1, 0)
ONSTOP: OLDCRIT1 := LEVEL(1), SETLEVEL( 1, 0)
ONCONT: SETLEVEL( 1, OLDCRIT1)
ONSBJ: VAR_KWATT := 12.5 , VAR_KCAL := 73 , VAR_KFRI := 44.2
STATUS(0)<>2:ATTESA := 0

Se stato premuto il tasto STOP della centralina, salva la criticit nella variabile OLDCRIT1

Le funzioni di stato e di sistema


La funzione ADDRESS
Ritorna lindirizzo della centralina.
Sintassi:
ADDRESS ()

La funzione ANNO
Ritorna le ultime due cifre dellanno corrente. I valori da 0 a 69 fanno riferimento
al XXI secolo, quelli dal 70 in poi al XX. Quindi 69 equivale al 2069, 70 al 1970.
Sintassi:
ANNO ()

La funzione CAMBIATO
Ritorna vero se il segnale specificato ha cambiato stato nellultimo ciclo di
scansione.
Sintassi:
CAMBIATO (<segnale>)
<segnale> Nome simbolico di unuscita o un ingresso digitale.

Osservazioni:
In modalit di funzionamento normale (MODALITY 1), se un segnale o unuscita
digitale sale per poi scendere immediatamente, le successive due chiamate
dellistruzione CAMBIATO tornano entrambe un vero in quanto la prima
chiamata consuma levento sceso, la seconda levento salito, anche se esse
avvengono a molto distanza fra luna e laltra.

ATTENZIONE: Per ulteriori informazioni rigurdanti luso di questa funzione


vedi anche la direttiva MODALITY 2.

La funzione CHECKSUM ()
Ritorna il valore del codice di checksum del programma SBJ della centralina.
Sintassi:

Il linguaggio SPL 31 Il linguaggio SPL


CHECKSUM ()

La funzione EPROM
Ritorna la versione della Eprom corrente.
Sintassi:
EPROM ()

La funzione ERRNET
Ritorna il numero di errori riscontrati sulla rete SSCNet dallultimo azzeramento.
Sintassi:
ERRNET ()

La funzione ENABLED
Si applica ai segnali MDB. Ritorna 1 se il segnale abilitato, 0 se non lo .
Sintassi:
ENABLED (<segnale>)
<segnale> Nome simbolico di un segnale MDB.

La funzione DATA
Ritorna la data corrente.
Sintassi:
DATA ()

La funzione FASE
Ritorna il numero corrispondente alla fase corrente nella lista delle fasi.
Sintassi:
FASE ()

La funzione FASENUM
Ritorna la posizione della fase corrente nella lista delle fasi del programma utente.
Sintassi:
FASENUM ()

La funzione FASEVID
Ritorna il numero della fase a video.
Sintassi:
FASEVID ()

La funzione GIOMESE
Ritorna un numero da 1 a 31 pari al giorno del mese corrente.
Sintassi:

Il linguaggio SPL 32 Il linguaggio SPL


GIOMESE ()

La funzione GIOSETT
Ritorna il giorno della settimana corrente; 1 equivale a luned, 2 a marted, ecc...
Sintassi:
GIOSETT ()

Le funzioni HH, MM ed SS
La funzione HH ritorna lora corrente. Ad esempio, alle ore 13.50 ritorna 13.
La funzione MM ritorna i minuti trascorsi dallinizio dellora. Ad esempio, alle ore
13.50 ritorna 50.
La funzione SS ritorna il numero di secondi trascorsi dallinizio del minuto
corrente.
Sintassi:
HH ()
MM ()
SS ()

La funzione MASTER
Ritorna 1 se lSSC01C il master delle variabili di rete, 0 altrimenti.
Sintassi:
MASTER ()

La funzione MESE
Ritorna il numero del mese corrente.
Sintassi:
MESE ()

La funzione NOMEFASE
Ritorna il nome della fase a video.
Sintassi:
NOMEFASE ()

La funzione NOMEPROG
Ritorna il nome del programma utente caricato nella memoria di lavoro della
centralina.
Sintassi:
NOMEPROG ()

La funzione NOMESTATO
Ritorna una stringa contenente il nome dello stato (Start o Stop) della centralina.
Sintassi:

Il linguaggio SPL 33 Il linguaggio SPL


NOMESTATO ()

La funzione OD
una funzione speciale di servizio che permette di prendere visione di qualunque
oggetto interno al controllore.
Sintassi:
OD (<cod>, <num>)
<cod> Codice didentificazione delloggetto. Pu assumere questi
valori:
1: Contatore di timer.
15: Criticit (della classe ennesima).
16: Costo (della classe ennesima).
17: Consumo (della classe ennesima).
18: Soglie di fase a video.
20: Valore di soglia del timer di fase a video.
<num> Numero, da 1 a 256, delloggetto.
Esempi:
IN 13, 3 OD(18,1) # Legge il set 1 relativo alla fase a video
IN 4,12 OD(1,0) # Legge il contatore del timer 0
IN 13,12 OD(20,0) # Legge il set del timer 0 della fase a video
IN 0, 0 OD(7,82) # Legge l'orologio di sistema
IN 0, 0 OD(15,1) # Legge la criticita' della classe 1
IN 0, 0 OD(16,2) # Legge il costo della classe 2
IN 0, 0 OD(17,3) # Legge il consumo della classe 3

La funzione ORA
Ritorna il numero di secondi trascorsi dalla mezzanotte.
Sintassi:
ORA ()

La funzione PROGRAM
Ritorna la posizione del programma utente in esecuzione allinterno della libreria
dei programmi dellSSC01C.
Sintassi:
PROGRAM ()

La funzione PASSLEVEL
Ritorna un valore, compreso fra 1 e 4, corrispondente al livello di password
corrente.
Sintassi:
PASSLEVEL ()

La funzione PUCODE
Ritorna il codice di compatibilit SBJ-PU del programma SBJ corrente.
9

9 Si tratta di un codice, generato automaticamente durante la compilazione di un SBJ, che viene assegnato ad ogni
programma utente creato dalla centralina. La trasmissione ha esito positivo solamente se il programma utente
inviato e lSBJ residente sulla centralina hanno lo stesso codice. Questo per evitare di trasmettere erroneamente ad
un controllore un programma utente incompatibile con il suo SBJ.

Il linguaggio SPL 34 Il linguaggio SPL


Sintassi:
PUCODE ()

La funzione REPEATER
Ritorna 1 se la centralina definita come ripetitore, 0 altrimenti.
Sintassi:
REPEATER ()

La funzione SALITO e SCESO


La funzione SALITO ritorna vero se il segnale specificato passato da Off a On
nel corso dellultimo ciclo di scansione.
La funzione SCESO ritorna vero se il segnale specificato passato da On a Off
nellultimo ciclo di scansione.
Sintassi:
SALITO (<segnale>)
SCESO (<segnale>)
<segnale> Nome di un segnale di tipo Din o Dot.
ATTENZIONE: Per ulteriori informazioni rigurdanti luso di queste due funzioni
vedi anche la direttiva MODALITY 2.

La funzione SCADUTO
Ritorna vero se il timer scaduto nellultimo ciclo di scansione, falso
altrimenti.
Sintassi:
SCADUTO (<timer>)
<timer> Nome simbolico di un timer.

ATTENZIONE: Per ulteriori informazioni rigurdanti luso di questa funzione


vedi anche la direttiva MODALITY 2.

La funzione SETTIMANA
Ritorna il numero della settimana corrente, da 1 a 54.
Sintassi:
SETTIMANA ()

La funzione SSCSTAT
Questa funzione obsoleta; utilizzare la funzione STAT.
Sintassi:
SSCSTAT ()

La funzione STAT
Consente di ottenere una serie di informazioni relative allo stato della centralina.
Quando si verificano pi condizioni contemporaneamente, il valore ritornato
pari alla somma dei valori corrispondenti.
Sintassi:

Il linguaggio SPL 35 Il linguaggio SPL


STAT () & <label>
<label> Stringa che determina il tipo di valore ritornato.
BSIRFAT: Un allarme fatale ha attivato la sirena della
centralina.
BSIRNOFAT: Un allarme NON fatale ha attivato la sirena
della centralina.
BALMSIR: La sirena attiva.
BALMNEW: presente un allarme non tacitato.
BALMFAT: La centralina in allarme fatale.
BALM: La centralina in allarme (fatale o no).
BSTART: La centralina in start.
Esempio:
SEGNALE SirFat mdb1.dot0, TRASP,NOSTOP
SEGNALE SirNoF mdb1.dot2, TRASP,NOSTOP
NOT (STAT() & BSIRFAT): FORZA(SirFat)
NOT (STAT() & BSIRNOFAT): FORZA(SirNoF)

La funzione STATUS
unistruzione di servizio il cui valore di ritorno specifica una serie di
informazioni relative allimpianto. Anzich questistruzione, conviene usare la
STAT, la quale permette di acquisire maggiori informazioni.
Sintassi:
STATUS (<cod>)
<cod> Codice numerico che determina il tipo di valore ritornato.
0: Ritorna 0 se la centralina in allarme fatale, 1 se in Stop
e 2 se in Start.

La funzione TESTIME
Ritorna il tempo di internal test (in secondi) impiegato dallSSC01C ad ogni
riaccensione.
Sintassi:
TESTIME()

Le funzioni di calcolo
La funzione ENTALPIA
Ritorna il valore dellentalpia calcolata in base alla temperatura ed allumidit.
Sintassi:
ENTALPIA (<t>, <u>)
<t> Variabile legata alla temperatura.
<u> Variabile legata allumidit.

Le funzioni F71INIT, F71 e F71STOP


La funzione F71INIT inizializza il calcolo del coefficiente di cottura F71.
La funzione F71 ritorna il valore del coefficiente di cottura F71. Bisogna
considerare che la chiamata F71 (x) non ritorna leffettivo valore della F71, bens

Il linguaggio SPL 36 Il linguaggio SPL


quello della funzione inizializzata sulla variabile x, che in questo caso deve
essere una F71INIT(X) oppure una FCTINIT(71,X). Uneventuale F71(x)
posizionata, ad esempio, dopo unistruzione FCTINIT(70,x) priva di senso, in
quanto restituirebbe comunque il valore del coefficiente F70 di x.
La funzione F71STOP interrompe il calcolo del coefficiente di cottura F71.
Sintassi:
F71INIT (<t>)
F71 (<t>)
F71STOP (<t>)
<t> Variabile, legata alla temperatura del prodotto, sulla quale
effettuare il calcolo del coefficiente F71.
ATTENZIONE: Bench siano ancora utilizzabili, queste funzioni sono ormai
obsolete. Si consiglia pertanto di ricorrere alla FCTINIT, FCTe FCTSTOP.

La funzione FCT
Ritorna il valore del coefficiente F(y) del parametro di cottura y. possibile
calcolare contemporaneamente un massimo di dieci coefficienti.
Sintassi:
FCT (<var>)
<var> Variabile su cui effettuare il calcolo del coefficiente F(y).
Esempio:
fcot:=FCT(T) # Assegna alla variabile fcot il valore di FCT di T.

La funzione FCTINIT
Inizializza il calcolo del coefficiente F(y) di cottura.
Sintassi:
FCTINIT (<y>, <Var>)
<y> Coefficiente calcolato. Pu valere:
70 per il coefficiente F70.
71 per il coefficiente F71.
<var> Variabile di riferimento per il calcolo del coefficiente F(y).
Esempio:
FCTINIT (70,TP1) # Inizia il calcolo della F70 sulla variabile TP1.
FCTINIT(71,T) # Inizia il calcolo della F71 sulla variabile T.

La funzione FCTSTOP
Termina il calcolo della F(y).
Sintassi:
FCTSTOP (<var>)
<var> Variabile usata per il calcolo del coefficiente F(y).
Esempio:
FCTSTOP(T) #Interrompe il calcolo della FCT di T.

Il linguaggio SPL 37 Il linguaggio SPL


La funzione FUNDT
Ritorna il valore del punto di rugiada calcolato in base alla temperatura rilevata da
una sonda a bulbo secco (BUBS).
Sintassi:
FUNDT(<t>, <d>)
<t> Variabile legata alla temperatura.
<d> Valore di delta.

La funzione FUNDVP
Ritorna il valore del deficit di saturazione calcolato in base alla temperatura
rilevata da una sonda a bulbo secco.
Sintassi:
FUNDVP(<t>, <d>)
<t> Variabile legata alla temperatura.
<d> Valore di delta.

La funzione FUNMH
Ritorna il valore del rapporto di miscelazione calcolato in base alla temperatura
rilevata da una sonda a bulbo secco.
Sintassi:
FUNMH(<t>, <d>)
<t> Variabile legata alla temperatura.
<d> Valore di delta.

La funzione FUNSVP
Ritorna il valore della pressione di vapore saturo calcolato in base alla
temperatura rilevata da una sonda a bulbo secco.
Sintassi:
FUNSVP(<t>, <d>)
<t> Variabile legata alla temperatura.
<d> Valore di delta.

La funzione FUNVP
Ritorna il valore della pressione di vapore attuale calcolata in base alla
temperatura rilevata da una sonda a bulbo secco.
Sintassi:
FUNVP(<t>, <d>)
<t> Variabile legata alla temperatura.
<d> Valore di delta.

La funzione FUNRH
Ritorna il valore dellumidit relativa calcolata in base alla temperatura rilevata da
una sonda a bulbo secco.

Il linguaggio SPL 38 Il linguaggio SPL


Sintassi:
FUNRH(<t>, <d>)
<t> Variabile legata alla temperatura.
<d> Valore di delta.

La funzione FUNSH
Ritorna il valore dellumidit specifica calcolata in base alla temperatura rilevata
da una sonda a bulbo secco.
Sintassi:
FUNSH (<t>, <d>)
<t> Variabile legata alla temperatura.
<d> Valore di delta.

La funzione FUNTU
Ritorna il valore del delta necessario alle funzioni di calcolo dei vari parametri
legati alla sonda a bulbo secco.
Sintassi:
FUNTU (<t>, <u>)
<t> Variabile legata alla temperatura.
<u> Variabile legata allumidit.
Esempio:
# Calcola lumidit relativa (Psicrometrica RH) dopo aver ricavato il delta con la FUNTU.
secco := T,
delta := FUNTU(T,U),
rh := FUNRH(secco,delta),

Le funzioni di gestione del risparmio energetico


La funzione CONS
Ritorna il valore del consumo di una specifica classe.
Sintassi:
CONS(<cl>)
<cl> Classe di consumo.

La funzione COST
Ritorna il valore del costo di una specifica classe.
Sintassi:
COST(<cl>)
<cl> Classe di consumo.

La funzione LEVEL
Ritorna il livello di criticit di una specifica classe di consumo.
Sintassi:

Il linguaggio SPL 39 Il linguaggio SPL


LEVEL(<cl>)
<cl> Classe di consumo.

La funzione INCLEVEL
Incrementa il livello di criticit di una specifica classe.
Sintassi:
INCLEVEL(<cl>)
<cl> Classe di consumo.

La funzione SETLEVEL
Imposta il livello di criticit per la classe specificata.
Sintassi:
SETLEVEL(<cl>, <liv>)
<cl> Classe di consumo.
<liv> Livello di criticit assegnato alla classe.

La funzione SETINIB
Ritorna un valore necessario al programma del risparmio energetico di SSCNet
per determinare se la centralina mantenuta in inibizione mediante logiche
ordinarie SPL (quali listruzione BLOCCA).
Questistruzione ha senso unicamente se usata congiuntamente alla dichiarazione
ENERSAVESPL.

Sintassi:
SETINIB(<cl>, <abil>)
<cl> Classe di consumo.
<abil> Indica labilitazione o meno della classe di consumo.

Istruzioni di controllo
Si distinguono le seguenti categorie di istruzioni:
Azioni per il controllo dei rel (Dot).
Azioni per il controllo dei loop analogici e Aot.
Azioni per il controllo dei timer.
Azioni per il controllo degli allarmi.
Azioni per il controllo dello stato della centralina.
Azioni per lassegnamento di un valore a timer, segnali, soglie, opzioni, manuali e
variabili.

Azioni di controllo digitale


Queste istruzioni agiscono sulle uscite digitali. Il parametro <segnale> il nome
di simbolico di unuscita digitale.

Il linguaggio SPL 40 Il linguaggio SPL


Listruzione ON
Accende unuscita dello SCU. Prevale sulla OFF in caso di attivazione
contemporanea sul medesimo segnale da regole contenute nella tabella corrente,
in quella globale o nelle tabelle attive. ininfluente sui segnali bloccati
(istruzione BLOCCA) da regole presenti nella tabella corrente, in quella globale o
nelle tabelle attive.
Sintassi:
ON(<segnale>)

Listruzione OFF
Spegne unuscita dello SCU. ininfluente sui segnali accesi (istruzione ON) da
regole contenute nella tabella corrente, in quella globale o in una tabella attiva. Lo
stesso accade se il segnale stato forzato a On (istruzione FORZA).
Sintassi:
OFF(<segnale>)

Listruzione XOFF
Spegne unuscita dello SCU. Differentemente dalla OFF essa prevale
sullistruzione ON.
Sintassi:
XOFF(<segnale>)
Esempio:
Al fine di mantenere inalterata al logica dei programmi, si consiglia di usare
listruzione OFF ovunque ci sia possibile e di utilizzare listruzione XOFF
solamente in caso di passaggio ad unaltra tabella, qualora si voglia spegnere
unuscita digitale con a sinistra la condizione UNAVOLTA oppure ONEXEC. Di
seguito riportiamo un caso tipico:
TABELLA Lavoro
SEMPRE: ON(SolFV)
U < Umin: ATTIVA Pausa

TABELLA Pausa
UNAVOLTA OFF(SolFV)
U > Umax: ATTIVA Lavoro

Nellesempio il segnale SolFV rimane sempre acceso . Per disattivare il segnale, o


10

si invertono le due righe della tabella Lavoro in modo da cambiare tabella prima
dellattivazione del segnale
TABELLA Lavoro
U < Umin: ATTIVA Pausa
SEMPRE: ON(SolFV)

TABELLA Pausa
UNAVOLTA OFF(SolFV)
U > Umax: ATTIVA Lavoro
oppure si utilizza listruzione XOFF.
TABELLA Lavoro

10 Non si tratta di un bug ma una caratteristica di funzionamento del sistema, valevole per ogni versione di SSC01C,
UPC94, UPC93 e SSC92 che sia stata rilasciata.

Il linguaggio SPL 41 Il linguaggio SPL


SEMPRE: ON(SolFV)
U < Umin: ATTIVA Pausa

TABELLA Pausa
UNAVOLTA XOFF(SolFV)
U > Umax: ATTIVA Lavoro

Listruzione BLOCCA
Blocca unuscita dello SCU. Il blocco resta in vigore finch attiva la regola che
lo ha generato. Durante questo periodo eventuali azioni di tipo ON e OFF sul
segnale bloccato sono sospese. Rimosso il blocco, il segnale ritorna allo stato
determinato dallultima ON/OFF eseguita.
In caso di contemporanea esecuzione sullo stesso segnale di una FORZA e di una
BLOCCA, prevale questultima.
Sintassi:
BLOCCA(<segnale>)

Listruzione FORZA
Forza a On il segnale specificato. Nessunazione OFF ha effetto finch attiva la
regola che ha generato la forzatura. Quando questa decade, lo stato del segnale
diviene quello definito dalle ON attive, oppure dalle OFF attive se nessuna ON
attiva, o quello impostato dallultima ON o OFF attiva.
In caso di contemporanea esecuzione sullo stesso segnale di una FORZA e di una
BLOCCA, prevale questultima.
Sintassi:
FORZA(<segnale>)

Le istruzioni GET e RELEASE


Si tratta di due istruzioni riservate alla gestione delle uscite analogiche qualora, in
una linea Mdb, compaiano due generatori di canali, detti master e slave.
Bench entrambi siano connessi alla medesima linea, il generatore master il solo
abilitato a pilotare la linea Mdb. I due generatori di canale gestiscono in
contemporanea le uscite digitali, mentre per le analogiche bisogna che il master
rilasci la risorsa perch questa sia gestibile dallo slave.
La funzione RELEASE rilascia unuscita analogica in modo che questa possa
essere gestita dal generatore slave.
La funzione GET occupa luscita analogica precedentemente liberata dal
generatore master.
Sintassi:
RELEASE()
GET()

Un SSC01C impostato come master ha sempre il sopravvento su di uno slave.


Questo implica che le uscite digitali sono sempre pilotate dal master a meno
luscita non sia rilasciata esplicitamente con una RELEASE.
Di conseguenza nellSPL destinato allo slave si potrebbero anche omettere le
istruzioni GET e RELEASE, dato che lo slave pu solamente pilotare le uscite

Il linguaggio SPL 42 Il linguaggio SPL


analogiche non dichiarate nellSPL del master oppure che, pur essendo state
dichiarate, sono state momentaneamente rilasciate.

Azioni per il controllo dei loop analogici


Agiscono sui loop definiti nel programma:

Listruzione LOOPSTART
Attiva lalgoritmo di regolazione sul loop specificato.
Sintassi:
LOOPSTART(<loop>)
<loop> Nome simbolico di un loop analogico.

Listruzione LOOPSTOP
Disattiva lalgoritmo di regolazione sul loop specificato.
Sintassi:
LOOPSTOP(<loop>)
<loop> Nome simbolico di un loop analogico.

Listruzione ALLOOPSTOP
Disattiva la regolazione su tutti i loop definiti.
Sintassi:
ALLOOPSTOP()

Listruzione SETOUT
Permette di regolare manualmente le uscite analogiche impostando direttamente
i valori di livello su delle specifiche uscite. Questa istruzione pu interagire con i
loop, avendone il sopravvento. Ci significa che quando un loop regola unuscita
analogica, la SETOUT pu correggere il valore di detta uscita, purch la
correzione venga confermata ad ogni giro. Quando viene a mancare la SETOUT,
il loop riprende il sopravvento.
N.B. La SETOUT si comporta in maniera anomala qualora debba regolare
unuscita analogica che non stata dichiarata in nessuna definizione di
loop. In tal caso, il valore impostato dalla SETOUT non viene pi resettato.
Sintassi:
SETOUT(<aot>,<valore>)
<aot> Nome di unuscita analogica.
<valore> Percentuale di campo scala.

Listruzione FORZALOOP
Attiva, per la sola durata del ciclo di scansione corrente, lalgoritmo di
regolazione sul loop specificato. La forzatura si riattiver allorch la regola
contenente FORZALOOP sar nuovamente soddisfatta.
Sintassi:

Il linguaggio SPL 43 Il linguaggio SPL


FORZALOOP(<loop>)
<loop> Nome simbolico di un loop analogico.

Azioni per il controllo dei timer


Il parametro <timer> passato alle istruzioni descritte in questo paragrafo indica il
nome di un timer definito con istruzione TIMER.
Listruzione TIMERSTART
Avvia il conteggio di un timer.
Se il timer di tipo a decremento il conteggio parte dal valore del valore di
soglia (impostato via SPL o manualmente), arrestandosi una volta raggiunto lo
zero. Se il valore di soglia zero e il timer dotato dellattributo INF, esso va in
modalit infinito e risulter attivo finch sar interrotto da una TIMERSTOP.
Se il timer di tipo contaore il conteggio, partendo da zero, si incrementer
continuamente finch non sar interrotto.
Se compare nella condizione di una regola, un timer con conteggio diverso da 0
valutato vero.
Sintassi:
TIMERSTART(<timer>)
<timer> Nome simbolico di un timer.

Listruzione TIMERSTOP
Arresta il timer specificato, azzerandone il contatore. Un timer azzerato valutato
falso se usato allinterno di una condizione.
Sintassi:
TIMERSTOP(<timer>)
<timer> Nome simbolico di un timer.

Le istruzioni TIMERSUSP e TIMERCONT


Listruzione TIMERSUSP sospende il timer specificato senza azzerarne il
contatore. Non ha effetto sui timer di tipo INF. Allinterno di una condizione un
timer sospeso valutato vero.
Listruzione TIMERCONT fa ripartire un timer precedentemente sospeso da una
TIMERSUSP. Non ha alcun effetto sui timer di tipo INF.
Sintassi:
TIMERSUSP(<timer>)
TIMERCONT(<timer>)
<timer> Nome simbolico di un timer.

Listruzione ALLTIMERSTOP
Arresta tutti i timer sprovvisti dellattributo NOSTOP.
Sintassi:

Il linguaggio SPL 44 Il linguaggio SPL


ALLTIMERSTOP()

Azioni per il controllo degli allarmi

Listruzione ALARMSTART
Attiva un allarme. In presenza di un allarme non fatale (attributo NOFAT) la
centralina spegne le uscite digitali ed azzera quelle analogiche, viceversa non
vengono in alcun modo influenzate.
Listruzione attiva inoltre un cicalino di segnalazione (sempre che lallarme non
sia marcato con lattributo NOBELL), mostra a video il Messaggio dallarme
11

definito, inserendolo anche nello schermo predefinito ALARMLIST.


La rimozione dellallarme legata al verificarsi di questi eventi:
La caduta della causa che ha provocato lallarme. Questa la condizione di
default.
La tacitazione dellallarme. Ci vale unicamente per gli allarmi impostati con
lattributo AUTO (Vedi anche listruzione ALLARME).
Sintassi:
ALARMSTART(<allarme>)
<allarme> Nome simbolico di un allarme.

Listruzione ALARMSTOP
Rimuove un allarme senza tacitarlo automaticamente (salvo che non abbia
impostato lattributo NOBELL), ripristinando le uscite digitali e analogiche. Se
lallarme gi stato tacitato, lALARMSTOP lo rimuove dalla lista degli allarmi
attivi.
Sintassi:
ALARMSTOP(<allarme>)
<allarme> Nome simbolico di un allarme.

Le istruzioni ALARMSUSP e ALARMCONT


Listruzione ALARMSUSP impedisce lattivazione di un allarme. Ci vale sia per
gli allarmi attivati da unALARMSTART, sia per quelli generati dalla Eprom, come
dispositivi guasti o mancanti.
Listruzione ALARMCONT toglie linibizione ad un allarme precedentemente
sospeso tramite ALARMSUSP.
Sintassi:
ALARMCONT(<allarme>)
ALARMSUSP(<allarme>)
<allarme> Nome simbolico di un allarme.

Azioni per il controllo di stato


Controllano in vari modi lo stato della centralina, gli allarmi e la tabella corrente.

11 Poich il contenuto del visore del controllore SSC01C programmabile, la visualizzazione facoltativa

Il linguaggio SPL 45 Il linguaggio SPL


Listruzione ACTION
Questistruzione ancora in fase di sviluppo. Attualmente la sua esecuzione non
sortisce alcun affetto. Pu talvolta essere utilizzata per ragioni di servizio.
Sintassi:
ACTION(<n>)
<n> Al momento accetta solo il valore 0.

Listruzione FINEFASE
Termina la fase corrente. La centralina attiva la fase successiva, se prevista,
altrimenti conclude il programma utente. Questistruzione viene ignorata se
compare nella tabella globale.
Sintassi:
FINEFASE

Listruzione ARRESTA
Arresta una tabella. Se una tabella arresta s stessa le regole poste dopo
questazione sono ignorate (questa operazione non pu essere eseguita nella
tabella globale).
Sintassi:
ARRESTA <tabella>
<tabella> Nome simbolico di una tabella.

Listruzione ATTIVA
Attiva una tabella - che diventer la tabella corrente - disattivando quella da cui
partita la chiamata. Entrambe le tabelle devono appartenere alla medesima fase o
alla fase libreria. Il cambio della tabella immediato; tutte le regole poste dopo
lATTIVA sono ignorate.
Sintassi:
ATTIVA <tabella>
<tabella> Nome simbolico di una tabella.

Listruzione ESEGUI
Attiva una nuova tabella, senza disattivare quella da cui partita la chiamata; in
questo modo possibile eseguire contemporaneamente pi tabelle.
Sintassi:
ESEGUI <tabella>
<tabella> Nome simbolico di una tabella.

Listruzione VIDEO
Accende o spegne il visore della centralina.
Sintassi:
VIDEO(<n>)
<n> Pu assumere questi valori:

Il linguaggio SPL 46 Il linguaggio SPL


0: Spegne il visore della centralina. Il visore si accende
automaticamente per dieci minuti quando si preme un
qualunque tasto, poi si rispegne. Perci unistruzione
VIDEO(0) potrebbe non avere effetto immediato, se nei
dieci minuti precedenti stato premuto un tasto della
centralina.
1: Accende il visore della centralina.
Esempio:
Istruzione VIDEO usata per mantenere sempre acceso il visore della centralina.
TABELLA Oper
SEMPRE: VIDEO(1)

Listruzione SCANON e SCANOFF


Listruzione SCANON attiva la scansione di unapparecchiatura periferica da parte
della centralina.
Listruzione SCANOFF disattiva la scansione di unapparecchiatura periferica da
parte della centralina fino alla successiva SCANON. I segnali da essa provenienti
sono posti a UNDEF, mentre il cicalino che segnala la mancata comunicazione
con la periferica viene disattivato . 12

Sintassi:
SCANON(<devN>)
SCANOFF(<devN>)
<devN> Sigla composta dal nome dellapparecchiatura (mdb, ssc, scu,
stu, ser, stj, stg)pi il numero della stessa.
Esempio:
Attiva o disattiva, a seconda dei valori delle opzioni, la scansione di alcuni
dispositivi.
O_NOstu: SCANOFF(stu1)
NOT O_NOstu: SCANON(stu1)
O_NOscu: SCANOFF(scu1)
NOT O_NOscu: SCANON(scu1)

Listruzione SKIP TO
Salta alla linea di programma specificata da unetichetta, non eseguendo il codice
compreso fra la SKIP TO e letichetta stessa. Letichetta deve sempre comparire
sotto la SKIP TO, mai sopra.
Sintassi:
SKIP TO <label>

$<Label>
<label> una qualsiasi stringa di caratteri valida.

Esempio:
Se il timer TIncr inattivo, non esegue la TIMERSTART.
NOT SCADUTO(TIncr): SKIP TO L_DOPOINCR

12 bene tener presente che uno SCU genera un allarme se la centralina non lo interroga con regolarit.

Il linguaggio SPL 47 Il linguaggio SPL


SEMPRE: TIMERSTART(TIncr), INCLEVEL(1,INCR)
$L_DOPOINCR

Definizione dei permessi di accesso


Questa sezione contiene la definizione dei permessi daccesso alle varie maschere
dellSSC01C. infatti possibile attivare un sistema di protezione dei controllori
che consenta al solo personale autorizzato laccesso al pannello della centralina.
Il meccanismo di protezione si basa su quattro livelli gerarchici di parole chiave
(password) utilizzabili per proteggere laccesso agli schermi predefiniti.

Livelli daccesso
Il sistema gestisce fino a tre livelli di password per lutente pi uno riservato
unicamente alla manutenzione. Linserimento della password avviene nello
schermo predefinito CREAPWD.
Livello 4. il livello di massima sicurezza ed detto pubblico poich non
necessita di password. Permette di accedere solamente alle maschere abilitate per
questo livello. il livello predefinito, impostato automaticamente allaccensione
della centralina, dopo un reset e ad ogni mezzanotte.
Livello 3. Permette di accedere alle maschere di livello 3 e 4.
Livello 2. Permette di accedere alle maschere di livello 2, 3 e 4.
Livello 1. Permette di accedere alle maschere di livello 1, 2, 3 e 4.
Livello 0. Riservato ai tecnici incaricati della manutenzione del sistema. Permette
di accedere a quasi tutte le maschere di un SSC01C.

Listruzione TABELLA PERMESSI


Contiene lassociazione dei livelli daccesso agli schermi predefiniti, ai pannelli o
ai tasti. Questa sezione va posta dopo lultima tabella definita. Se non viene
utilizzata, lo schema dei permessi adottato quello predefinito.
Sintassi:

TABELLA PERMESSI
<nome>:<livello>
<nome>:<livello>
<nome> Schermo predefinito, pannello o tasto.
<livello> Livello di password assegnato allo schermo o al tasto
specificati. Accetta valori compresi fra 1 e 4.
Esempio:
TABELLA PERMESSI
START:1
STOP:1
CONT:1
MANLIST:0
TIMERLIST:3

possibile, inoltre, associare livelli daccesso differenti per la lettura e la


modifica dei campi di uno schermo predefinito. Listruzione :

Il linguaggio SPL 48 Il linguaggio SPL


W_<schermo> = <livello>

Esempio:
MANUALI = 3
W_MANUALI = 1
Il conoscitore della password associata al livello 3 pu accedere alla videata dei
manuali, ma non pu modificarne i campi, poich questa operazione richiede il
livello 1.

Visore e tastiera
Lelemento fondamentale per la programmazione del video il pannello, il quale
costituito da uno schermo e da una serie di tasti.
Uno schermo contiene la descrizione delle scritte fisse (titoli), dei campi
dimpostazione o di visualizzazione dei dati, nonch delle opzioni di men che
compaiono sul visore del controllore.
I tasti definiscono il passaggio da un pannello allaltro.

Istruzione PRIMO PANNELLO


Imposta il pannello visualizzato allaccensione del controllore. Questa definizione
obbligatoria e deve essere la prima istruzione della sezione video di un
programma SPL.
Sintassi:
PRIMO PANNELLO <pannello>
<pannello> Nome simbolico di un pannello.

Istruzione TASTI
Associa un pannello o uno schermo ai tasti della centralina. Se posta in una
definizione di pannello gli assegnamenti delle funzioni ai tasti sono detti locali e
restano validi finch attivo il pannello, altrimenti sono detti globali e valgono
per tutti quanti i pannelli. Un assegnamento locale prevale su uno globale finch il
pannello in cui contenuto resta attivo. La pressione di un tasto non associato ad
alcun pannello o schermo viene ignorata.
Sintassi:
TASTI <tasto>:<pan/scherm>, <tasto>:<pannello/schermo> ....
<tasto> Uno dei codici tasto riportati nella tabella.

Codice del tasto Descrizione


TACITA Tasto di tacitazione degli allarmi
SCS Tasti START, STOP e CONT.
F1, F2, F3, F4 Tasti F1, F2, F3 ed F4
FRESX Tasto freccia a sinistra
FREDX Tasto freccia a destra
ESC Tasto ESC
OK Tasto OK

Il linguaggio SPL 49 Il linguaggio SPL


M1, M2 ... M12 Sono tasti virtuali associati alla funzione
TIPOFASE e non presenti fisicamente sul
pannello. Da non confondersi con i tasti
dei comandi manuali della centralina che
non sono visibili in SPL.

<pan/scherm> Nome di un pannello o di uno schermo.


Esempio:
# Definizione di MainPanel come pannello principale.
PRIMO PANNELLO MainPanel

# Assegnamento globale dei tasti ESC al pannello MainMenu e


# TACITA allo schermo predefinito ALARMLIST
TASTI ESC:MainMenu, TACITA:ALARMLIST

# Definizione del pannello MainPanel (la definizione incompleta).


PANNELLO MainPanel
....
# Definizione del pannello MainMenu.
PANNELLO MainMenu

# I tasti ESC (al pannello MainPanel) ed F1 (al pannello MyPanel)


# sono riassegnati localmente, ossia solo quando attivo MainMenu (non mostrato)
TASTI ESC:MainPanel, F1:MyPanel
....

Istruzione PANNELLO
Definisce un pannello.
Sintassi:
PANNELLO <nome>
[<def. tasti>]
[<schermo>]
[<attributi>]
[<def. campi>]
<nome> Stringa di caratteri valida.
[<def. tasti>] Sezione contenente i tasti usati localmente (vedi listruzione
TASTI).
[<schermo>] Nome di uno schermo definito dalloperatore oppure di uno
predefinito.
[<def. campi>] Invece di uno schermo si possono definire direttamente i campi
del pannello.
[<attributi>] ALLCENT
Allinea centralmente campi.
AUTONUM=<NN>
Riservata a pannelli di tipo men. Permette di eliminare dalle
stringhe i numeri indicanti la posizione dellopzione. Tali
numerini sono gestiti automaticamente dalla EPROM, purch
tutte le opzioni di menu inizino con con almeno due spazi.
cos possibile cambiare la posizione delle opzioni di un
men senza dover modificare tutti i file delle traduzioni.

Il linguaggio SPL 50 Il linguaggio SPL


Questopzione fa s che nellimpostare le opzioni di tipo MENU
diventa superfluo specificare le posizioni verticali allinterno
del visore. Le opzioni, infatti, vengono automaticamente
inserite nelle giuste posizioni, purch abbiano ordinata uguale
a zero.
Il programmatore non dovr quindi far altro che impostare
solamente il titolo del men e la posizione della prima opzione,
lasciando a zero tutte le altre.
AZZURRO
Imposta lazzurro come colore, di sfondo o in primo piano,
dello schermo. La sintassi :
<Colore testo> : <Colore sfondo>
I colori disponibili sono: AZZURRO, BIANCO, BLU, GIALLO,
NERO, ROSSO, VERDE e VIOLA.
BOTTOM=<NN>
Numero di righe fisse collocate nella parte bassa del video. Tali
righe sono sempre visibili, non essendo influenzate dallo
scorrimento del video effettuato con il tasto Freccia in gi
dellSSC01C.
CICL
Fa s che il cursore, dopo aver raggiunto lultimo campo dello
schermo, ritorni al primo, cos da ottenere un ciclo chiuso.
Diversamente il cursore, quando si trova sullultimo campo,
pu solo ritornare indietro.
CURBLINK
Rende lampeggiante il campo selezionato.
CURLAST
Quando lo schermo appare sul visore, posiziona il cursore
sullultimo campo modificabile anzich sul primo.
DEFCOLOR <Colore testo> : <Colore sfondo>
Imposta i colori dello schermo. Questattributo va posto subito
dopo listruzione PRIMO PANNELLO. Il default nero su
bianco.
FKEYRES
Riserva i tasti funzione della centralina (F1, F2, F3 e F4) per i
cambi pagina.
OKEXIT
Premendo il tasto OK sullultimo campo modificabile, esce
dallo schermo.
OKMODE
Abilita il tasto EDIT, il quale consente di passare dalla
modalit di modifica a quella di sola lettura e viceversa. Senza
questattributo la centralina sempre in modalit di modifica.
PERM=<NN>
Livello di permesso richiesto per accedere allo schermo.
TOP=<NN>
Numero di righe fisse in alto. Vedi lattributo BOTTOM.

Il linguaggio SPL 51 Il linguaggio SPL


Esempio:
PANNELLO MenuPan
TASTI ESC:Frontale
CICL, ALLCENT
IN 0, 2 "PANNELLI", CSIZE=1,CENT

Istruzione SCHERMO
Definisce uno schermo, ossia linsieme dei campi di un pannello. Uno schermo
pu sostituire la dichiarazione di attributi e campi nella definizione di un pannello.
Il suo uso conveniente qualora la struttura dei campi di pi pannelli sia la
medesima.
Sintassi:
SCHERMO <nome>
[<attributi>]
[<def. campi>]
<nome> Stringa di caratteri valida.
[<attributi>] Vedi gli attributi dellistruzione PANNELLO.
[<def. campi>] Definizione dei campi dello schermo.

Istruzioni varie
Listruzione !DEFINE
Definisce una sigla che, passata alle istruzioni !IFDEF o !IFNDEF, permette di
condizionare la compilazione di una porzione di codice al fatto che essa sia stata o
meno definita. buona norma porre questistruzione subito dopo alla
dichiarazione del modello.
Sintassi:
!DEFINE <nome>
<nome> Stringa di caratteri validi.

Listruzione DESCR
Definisce la descrizione che sostituir sullo schermo il nome simbolico di un
oggetto, essendo questultimo chiaro solamente allo sviluppatore del programma.
Sintassi:
DESCR <Oggetto> descrizione
<oggetto> Nome simbolico di un oggetto (loop, segnale, ecc...).
<descrizione> Stringa di caratteri validi.

Esempio:
DESCR TdF Timer di fase

Listruzione ELSE
La logica di questa istruzione analoga a quella dellomonima istruzione
implementata in moltri altri linguaggi di programmazione. Essa viene eseguita
solamente se la condizione dellistruzione precedente ritorna falso.

Il linguaggio SPL 52 Il linguaggio SPL


Non pu essere la prima istruzione di una tabella e deve comparire solamente ad
inizio riga (ossia come prima istruzione della regola).

anche possibile iniziare pi righe consecutive con listruzione ELSE cos da creare
lequivalente dellistruzione ELSE IF presente in altri linguaggi.

Sintassi:
ELSE [, <condizione>] : <azione> [,<azione>]
<condizione> Condizione da valutare.
<azione> Istruzioni e/o assegnamenti eseguiti se la condizione
determinata dallistruzione precedente falsa e se
<condizione> vera.

Esempio (1):
T<>UNDEF, T>TMax, NOT TimRitAT OR O_IgnoraTim: ALARMSTART(A_Tmax)
T=UNDEF OR T<=TMax OR (TRitAT AND NOT O_NoTim): ALARMSTOP(A_Tmax)

La seconda condizione esattamente lopposto della precedente. Lo stesso risultato


si pu ottenere molto pi semplicemente nella seguente forma:

T<>UNDEF,T>TMax,NOT TimRitAT OR O_IgnoraTim: ALARMSTART(A_Tmax)


ELSE: ALARMSTOP(A_Tmax)

Esempio (2):
U>=80: Mess := "Ambiente molto umido"
U<80, U>=60: Mess := "Ambiente medio umido"
U<60, U>=40: Mess := "Ambiente poco umido"
U<40: Mess := "Ambiente secco"

Questa porzione di codice pu essere cos riscritta.

U>=80: Mess := "Ambiente molto umido"


ELSE, U>=60: Mess := "Ambiente medio umido"
ELSE, U>=40: Mess := "Ambiente poco umido"
ELSE: Mess := "Ambiente secco"

In questo modo si migliora la leggibilit del codice e si riduce il rischio dincorrere in


errori di battitura.

Listruzione HELP
Visualizza nella videata di help una stringa daiuto riguardante un determinato
oggetto.
Sintassi:
HELP <oggetto> <commento>
<oggetto> Nome simbolico di un oggetto (loop, segnale, ecc...).
<commento> Stringa visualizzata nella videata daiuto.
Esempio:
DESCR TdF Timer di fase

Il linguaggio SPL 53 Il linguaggio SPL


Listruzione !IFDEF
Compila il codice compreso fra la !IFDEF e la ENDIF se stata definita con
listruzione !DEFINE una determinata costante.
Sintassi:
!IFDEF <cost>
ENDIF
<cost> Stringa di caratteri validi.

Listruzione !IFNDEF
Compila il codice compreso fra la !IFNDEF e la ENDIF se non stata definita con
listruzione !DEFINE una determinata costante.
Sintassi:
!IFNDEF <cost>
ENDIF
<cost> Stringa di caratteri validi.

I campi di un pannello
Le informazioni che compaiono in un pannello attivo (titoli, messaggi dallarme,
valori delle sonde, ecc...) si suddividono in unit logiche dette campi. I campi
modificabili sono evidenziati in rosso se la modalit di modifica abilitata.
I tipi di campo
Il linguaggio SPL gestisce i seguenti tipi di campi:
Campi numerici. Contengono numeri interi o decimali.
Campi alfa numerici. Contengono testi.
Campi timer. Contengono intervalli di tempo nei formati ore: minuti. secondi,
ore:minuti oppure minuti. secondi.
Campo si/no. Contengono valori binari vero/falso.

Listruzione IN
Ogni campo deve essere definito in un pannello o in uno schermo, specificando la
posizione sul visore, il tipo di variabile associata e gli attributi opzionali.

Sintassi:
IN <x> , <y> <testo> [<attributo> , < attributo > , ...]
oppure
IN <x> , <y> <oggetto> [.<spec>] [<attributo > , < attributo > , ...]

<x>, Indice di colonna: accetta valori compresi fra 1 e 32.


<y> Indice di riga: accetta valori compresi fra 1 e 255. Alle righe
oltre la sedicesima si accede tramite il tasto Freccia in gi
della centralina.
<testo> Campo di testo non modificabile.
<var> [.<spec>] Molti variabili SPL prevedono luso di uno specificatore che
ne modifica il significato. Ad esempio, supponendo di avere un
timer denominato TdF, in mancanza di specificatori il suo

Il linguaggio SPL 54 Il linguaggio SPL


valore sidentifica con il contatore del timer. Se invece si
utilizza la sigla TdF.SET il valore di riferimento diventa la
soglia del timer. Allo stesso modo vi una notevole differenza
fra gli oggetti VAR7 (si tratta di unipotetica variabile) e
VAR7.NOME (nome simbolico delloggetto).
Per identificare i valori di un oggetto si deve utilizzare la
forma:
<Nome_Oggetto>.<Specificatore>
<Specificatore> pu assumere uno dei seguenti valori:
SET - Soglia.
VID - Valore associato alla fase corrente.
SETVID - Soglia associata alla fase a video.
GLOB - Valore associato alla tabella globale.
SETGLOB - Soglia associata alla tabella globale.
NOME - Nome delloggetto.

.SET .VID .SETVID .GLOB .SETGLOB .NOME

Timer Si - Si - Si Si
Segnali - - - - - Si
Soglie - Si - Si - Si
Opzioni - Si - Si - Si
Variabili - - - - - Si
Manuali - - - - - Si
Loop Si - - - - Si
Funzioni - - - - - -
Allarmi - - - - - Si

I valori di soglie ed opzioni mutano in base alla fase in


esecuzione e ai valori impostati dalloperatore durante la
creazione del programma utente. Gli specificatori .VID e
.SETVID permettono di visualizzare sul display i dati di una
fase diversa da quella corrente, detta fase a video (.GLOB e
.SETGLOB per gli oggetti utilizzati nella tabella globale).
<attributo> 3DIN
Visualizza il campo con effetto tridimensionale a rientrare.
3DOUT
Visualizza il campo con effetto tridimensionale in risalto.
AZZURRO
Imposta lazzurro come colore, di sfondo o in primo piano, del
campo. Il formato :
<Colore 1> : <Colore 2>
Dove <Colore 1> il colore in primo piano (quello della
scritta) e <Colore 2> quello dello sfondo. I colori disponibili
sono: AZZURRO, BIANCO, BLU, GIALLO, NERO, ROSSO,
VERDE e VIOLA.

Il linguaggio SPL 55 Il linguaggio SPL


BIN - Numero binario di 32 bit. Questattributo deve essere
obbligatoriamente associato al tipo INTERO e non pu essere
abbinato allattributo COMPR. La lunghezza di default 8, la
massima 31 . 13

Per migliorare la leggibilit del codice, consigliabile


utilizzare le seguenti costanti per testare dei valori binari (sulla
destra riportato il corrispondente valore nella matematica a
virgola fissa con un solo decimale).
BIT__00 0.1
BIT__01 0.2
BIT__02 0.4
BIT__03 0.8
... ...
BIT__30 107374182.4
CENT
Visualizza il campo in posizione centrata rispetto alla videata.
COMPR
Riservato ai campi numerici. Visualizza il punto decimale in
forma compressa, collocandolo immediatamente accanto al
carattere posto alla sua sinistra, s da non occupare lo spazio di
un intero carattere.
CON SEGNO
Riservato ai campi modificabili (attributo MODIF). Visualizza
il segno meno in presenza di valori negativi.
CSIZE
Espansione verticale del campo. Accetta valori da a 1 a 15.
DX
Allinea il contenuto al margine destro del campo. I campi
numerici hanno questattributo predefinito.
ESAD
Riservato ai campi numerici. Mostra il valore in formato
esadecimale.
FVFC
Mostra il campo sul visore solo se la fase in esecuzione
diversa da quella a video.
H5MM
Questo attributo riservato ai campi timer modificabili.
Mostra il valore riservando cinque cifre alle ore, due ai minuti.
il formato usato dai timer quando il valore da essi assunto
supera il 99:59:59. Sacrificando i secondi, infatti, si arriva a
gestire fino a centomila ore.
HHMM

13 Sebbene ci sia possibile, meglio evitare di utilizzare lattributo BIN per visualizzare soglie anzich variabili.
Le soglie, infatti, compaiono anche nelle maschere di dati fase e di configurazione dellimpianto, dove possibile
modificarle. In questo caso uneventuale soglia definita come binaria verrebbe ugualmente mostrata come
decimale. Inoltre, se si definisse una lunghezza eccessiva dei caratteri del campo, verrebbe mostrato XXXXX o
zero se si selezionasse il campo con il cursore. Qualora fosse assolutamente necessario specificare una soglia
binaria, impostarla con lattributo HIDDEN, in modo che non compaia nelle maschere automatiche.

Il linguaggio SPL 56 Il linguaggio SPL


Mostra il valore nel formato ore:minuti.
IFON
Applicabile ai campi numerici, di tipo si/no e a tutti i campi
che possono assumere valore vero, come allarmi, manuali,
segnali digitali, ecc... Mostra il valore solo se vero o
attivo o diverso da 0.
INALM
Mostra il valore solo se il controllore in allarme.
INALMFAT
Mostra il valore solo se il controllore in allarme fatale.
INSTART
Mostra il valore solo se il controllore in start.
INSTOP
Mostra il valore solo se il controllore in stop.
LEN = <N>
Lunghezza in caratteri del campo. Se un valore numerico
eccede il valore impostato, in sua vece appare la scritta
XXXX. Non applicabile ai campi di tipo timer. I valori di
default sono:
Interi: 3 caratteri
Decimali: 5 caratteri
Timer: 8 o 5 caratteri a seconda del formato scelto.
MENU = <nome pannello>
Imposta il campo come opzione di men. Selezionando il
campo e confermando la scelta con il tasto OK della centralina,
il pannello corrente diventa quello specificato.
MMSS
Riservato ai campi di tipo timer. Mostra il valore nel formato
minuti. secondi.
MODIF
Campo modificabile dalloperatore tramite tastiera.
NOMARK
Rimuove il simbolo > che solitamente compare davanti ai
campi di tipo men.
NOSCROLL
Il campo rimane fisso, ossia mantiene la posizione in caso di
scorrimento del pannello (tasto Freccia gi) oltre la
sedicesima riga.
PERM=<livello>
Livello daccesso richiesto per modificare il campo.
REVERSE
Visualizza il campo selezionato in modalit reverse, ossia a
colori invertiti.
SX
Allinea il contenuto al margine sinistro del campo. I campi
alfanumerici hanno questo attributo predefinito.

Il linguaggio SPL 57 Il linguaggio SPL


TIPO = <tipo di campo>
Forzare la visualizzazione in un formato diverso da quello
predefinito (Soglie e variabili sono predefiniti come tipo
DECIMALE, i Timer come TIME, opzioni e manuali come
YESNO). Pu assumere uno dei seguenti valori:
DECIMALE - Numero con cifra decimale.
INTERO - Numero intero.
TIME - Numero in formato ore: minuti. secondi, ore:
minuti oppure minuti. secondi.
YESNO - Visualizza SI se il campo diverso da 0, NO
altrimenti.
TRASP
Visualizza il valore del campo mantenendo il colore di sfondo.
Esempi:
IN 1,1 Temperatura:
IN 2,14 TempMax MODIF, LEN=4

possibile definire un campo speciale, contenente una lista delle uscite digitali o
dei timer attivi. Il tipo di variabili visualizzate dipende dagli attributi SHOWDOT
e SHOWTIMER.

Sintassi:
FINESTRA <x> , <y>, <z> [<attributi>] LEN = <n> CAMPI SHOWTIMER
oppure
FINESTRA <x> , <y>, <z> [<attributi>] LEN = <n> CAMPI SHOWDOT

<x>, <y> Coordinate del vertice superiore sinistro della finestra.


<z> Numero di righe componenti la finestra.
<attributi> Per la lista degli attributi far riferimento allistruzione IN.
<n> Numero di colonne della finestra.

Esempi:
FINESTRA 18,5,6 BIANCO:NERO, 3DIN, REVERSE, LEN=3 CAMPI SHOWDOT

Gestione della grafica


Le schermate sono interamente programmabili sia per quanto riguarda il formato e
la disposizione dei campi, dei men, ecc... (come abbiamo gi visto) sia per le
eventuali immagini inserite per migliorarne la leggibilit e la veste grafica.
Per immagine sintende un file bitmap (ad esempio, stufa.bmp) generato da
appositi programmi, detti Editor grafici, come Paintbrush di Microsoft
Windows, e salvato come motivo di punti (pixel) di schermo.
Nel salvare unimmagine bene tener conto di quanto segue:
Limmagine deve essere salvata come bitmap a 16 colori. I colori utilizzabili
sono quelli gestiti dal display dellSSC01C, ossia: azzurro, bianco, blu, giallo,
nero, rosso, verde e viola.

Il linguaggio SPL 58 Il linguaggio SPL


Le dimensioni (verticale e orizzontale) dellimmagine devono essere multiple
di 8, s da ridurre sensibilmente il tempo di caricamento. possibile creare
icone particolarmente complesse, aventi una dimensione fissa di 320x240
pixel, per realizzare sfondi o sinottici sui quali possibile sovrapporre altre
icone, campi, ecc...
Chiameremo icone le immagini, generalmente di piccole dimensioni, utilizzate
nellSPL. Esse devono essere dichiarate in un file con estensione .IPL (ad
esempio, icone.ipl).
Listruzione INPIX
Inserisce un campo icona nel pannello.
Sintassi:
INPIX <x> , <y> <icona> [, <attributi>]
oppure
INPIX <x> , <y> ICONUM (<variabile>) [, <attributi>]
<x>, <y> Coordinate del vertice superiore sinistro dellicona (Per i valori
assegnabili a <x> e <y> vedi anche: I campi di un pannello).
<icona> Nome simbolico dellicona.
<variabile> Variabile cui stata assegnata unicona. Se vale zero la INPIX
non visualizza nessunicona.
Cambiando opportunamente la variabile, e quindi licona
visualizzata, possibile realizzare parziali animazioni. A tal
fine licona assegnata alla variabile viene ridisegnata ad ogni
ciclo di scansione.
N.B. Gli sfondi possono essere fissi oppure rivisualizzati
continuamente utilizzando listruzione ICONUM
(sfondo). A questi ultimi non si devono mai
sovrapporre campi modificabili (attributo MODIF) o
con cornice (attributi 3DIN o 3DOUT).
I_Freddo_ON 'fred-ON.bmp' ,
I_Freddo_OFF 'fred-OFF.bmp' ,

VARIABILE icofreddo
TABELLAGLOBALE
SolFV: icofreddo := I_Freddo_ON
NOT SolFV: icofreddo := I_Freddo_OFF

PANNELLO Frontale
INPIX 88,184 ICONUM(icofreddo)
Visualizza una delle due icone a seconda del valore di SolFv.

<attributi> CSIZE=<N>
Espande licona con lo stesso criterio usato per i campi. Tener
presente che questa operazione rallenta decisamente il tempo
di caricamento dellicona. Pu assumere i valori da 1 a 15.
TRASP
Colore trasparente sostituito dal colore dello sfondo durante la
visualizzazione dellicona. bene usare con parsimonia

Il linguaggio SPL 59 Il linguaggio SPL


questattributo, poich esso provoca notevoli rallentamenti nel
caricamento dellicona.
I colori disponibili sono: AZZURRO, BIANCO, BLU, GIALLO,
NERO, ROSSO, VERDE e VIOLA.
Esempi:
INPIX 184, 32 I_Clock
INPIX 96, 40 I_Temp
INPIX 31, 53 ICONUM(Pos1), TRASP,BLU

Le funzioni video predefinite


Le schermate predefinite contengono dati di utilit generale e sono utilizzabili
come normali schermi.

Gli schermi predefiniti


Sono qui elencate le schermate predefinite, con la descrizione della loro funzione.
AINCALIB Calibrazione in campo degli ingressi analogici della
scheda.
AINALMLIST Questa schermata obsoleta. Usare AINERRLIST.
AINERRLIST Lista degli ingressi analogici (Ain) in allarme
AINMISSLIST Lista degli ingressi analogici (Ain) mancanti
AINLIST Lista dei valori presenti sugli ingressi analogici.
ALARMLIST Lista degli allarmi attivi. Uscendo da questa schermata
vengono tacitati tutti gli allarmi ancora attivi.
AOTLIST Lista dei valori presenti sulle uscite analogiche.
CONFENABLED Abilitazione dei singoli moduli MDB.
CONFIG Configurazione dellindirizzo di rete, della velocit di
comunicazione e altri parametri.
CONFIMP Impostazione delle soglie, timer e opzioni utilizzate nelle
regole della tabella globale.
CONFLOOP Impostazione dei parametri di controllo dei loop analogici.
CREAMODPU Gruppo di schermate per la creazione e la modifica di un
programma utente.
CREAPWD Inserimento di una password.
DATIFASE Impostazione delle soglie, timer e opzioni utilizzate nelle
regole della fase corrente.
DINLIST Lista degli ingressi digitali.
DINALMLIST Questa schermata obsoleta. Usare DINMISSLIST.
DINMISSLIST Lista degli ingressi digitali (Din) mancanti
DOTDINLIST Lista delle uscite e degli ingressi digitali.
DOTLIST Lista delle uscite digitali.
ESAMMEM Analisi del contenuto della memoria. (Riservato alla
manutenzione).
FASILIST Lista delle fasi esistenti (definite nel programma SPL).
GRAFICI Visualizzazione in forma grafica dei dati raccolti dal
controllore.
LOGAINLIST Diagnostica MDB. Indica la presenza di moduli Ain.
LOGALARM Visualizzazione degli allarmi storici rilevati dalla
centralina con indicazione dello stato: comparso, tacitato o

Il linguaggio SPL 60 Il linguaggio SPL


rimosso.
LOGAOTLIST Diagnostica MDB. Indica la presenza di moduli Aot.
LOGDINLIST Diagnostica MDB. Indica la presenza di moduli Din.
LOGDOTLIST Diagnostica MDB. Indica la presenza di moduli Dot.
LOGEVENT Lista degli eventi .14

LOOPLIST Lista dei loop analogici e dei valori di funzionamento.


MANLIST Lista dello stato dei comandi manuali.
MESGSYS Accesso ai messaggi di sistema (Riservato alla
manutenzione).
MODPWD Modifica di una password.
PROGDELETE Cancellazione di un programma utente.
PROGLIST Lista dei programmi utente.
PROGREAD Lettura del programma utente.
PROGWRITE Memorizzazione di un programma utente.
PWDLIST Lista delle password esistenti.
SCALELIST Lista delle bilance.
SERVIZIO Riservata alla manutenzione.
SETADDMDB Modifica degli indirizzi dei moduli MDB.
SETMASKEVENT Selezione degli eventi che si desidera siano visualizzati.
SETMEMOEVENT Configurazione degli eventi in scansione.
SIGMDBLIST Contiene la lista riassuntiva dello stato dei singoli segnali
gestiti dallMDB, indicando, fra le altre cose, se il segnale
abilitato oppure no.
STUCALIB Calibrazione a distanza sonda termo-igrometrica della
SDTU.
TIMERLIST Lista dei timer e dei valori di conteggio.
VARLIST Lista delle variabili.
VERMODMDB Diagnostica MDB. Visualizza la versione del modulo
MDB specificato.
VERSIONE Controllo della versione del software di gestione (Eprom),
del programma SBJ e dei codici PU-SBJ-CNF.

Le funzioni speciali
Si tratta di pseudo schermate che, senza mostrare nulla sul visore, eseguono
alcune funzioni di servizio, terminando automaticamente senza attendere la
pressione di alcun tasto.
Questa tabella contiene la lista delle funzioni speciali:
CANCEPROM Cancella la Eprom contenente il software di gestione. La
centralina va riprogrammata con una nuova Eprom.
CANCMEM Azzera tutti i timer, le variabili e i manuali. Azzera inoltre i dati
per i grafici del PC e dellSSC01C e quelli degli eventi e degli
allarmi storici.
CANCPWD Azzera la password corrente, ponendo la centralina in stato no
password.

14 Per evento sintende unazione compiuta dalla centralina come, ad esempio, la partenza di un timer o la sua
scadenza.

Il linguaggio SPL 61 Il linguaggio SPL


DECFASE Decrementa di uno la fase a video; Le soglie dei timer, le soglie
e le opzioni usate con gli specificatori .VID e .SETVID
mostrano ora i valori relativi alla fase che, nel programma
utente corrente, si trova immediatamente prima della
precedente fase a video.
INCFASE Incrementa di uno la fase a video. Vedi sopra.
LEGGIPU Legge il programma utente. Tale funzione pu essere usata nel
caso in cui si debba gestire un solo programma, cos come
accadeva nella vecchia modalit senza libreria di programmi.
SALVAPU Memorizza il programma utente. Tale funzione pu essere
usata nel caso in cui si debba gestire un solo programma, cos
come accadeva nella vecchia modalit senza libreria di
programmi.
RESET Spegne e riaccende la centralina.
TIPOFASE Ritorna un codice da M1 a M12 associato al tipo della fase a
video. Questi codici possono essere gestiti come tasti virtuali
dal pannello che utilizza TIPOFASE.
Esempio:
PANNELLO Speciale
TASTI M1:FaseFredda. M2:FaseCalda
TIPOFASE

La gestione degli eventi


possibile abilitare la centralina per la raccolta duna serie di eventi (ossia di
azioni eseguite dalla centralina quali lo scadere di un timer, ecc) che
permetteranno di ricostruire la storia dellimpianto (funzionamento tipo scatola
nera). Tale raccolta prende il nome di lista eventi ed visualizzata nello schermo
predefinito LOGEVENT.
Per usufruire di questa funzione occorre includere nel programma il file
EVENT_ITA.IPL (o i corrispondenti nelle diverse lingue) contenente la
definizione degli eventi standard. Di seguito riprodotto tale file.
EVENT Ev_Cambio_Ma "COMANDO MANUALE"
EVENT Ev_Carica_Pr "LETTO PROGRAMMA"
EVENT Ev_Chg_Sbj "CAMBIO SBJ"
EVENT Ev_Chg_Sep "CAMBIATO DATO"
EVENT Ev_ChgAddMod "CHG.ADD. MODULO"
EVENT Ev_ChgPwdLev "CAMBIO LIV.PASS"
EVENT Ev_Com_Alarm "COMPARSO ALARM"
EVENT Ev_Cont "CONT"
EVENT Ev_Del_Fase "CANCELLATA FASE"
EVENT Ev_Del_Memo "CANCELL.MEMORIA"
EVENT Ev_Del_PU "CANC.PROG.CORR."
EVENT Ev_Errore "ERRORE SISTEMA"
EVENT Ev_Fine_Fase "FINE DELLA FASE"
EVENT Ev_Ins_Fase "INSERITA FASE"
EVENT Ev_Persi_Ev "PERSI EV. X NET"
EVENT Ev_Reset "RESET"
EVENT Ev_Reset_Ev "NETWORK RES.EV."
EVENT Ev_Rim_Alarm "RIMOSSO ALARM"

Il linguaggio SPL 62 Il linguaggio SPL


EVENT Ev_Rx_Corruz "CORRUZ. RX BUF."
EVENT Ev_Sca_Timer "SCADUTO TIMER"
EVENT Ev_Start "START"
EVENT Ev_Stop "STOP"
EVENT Ev_Tac_Alarm "TACITATO ALARM"

Gli eventi rilevati sono memorizzati in unapposita zona di memoria della


centralina. Una volta esaurito lo spazio di memoria a disposizione, la registrazione
di un nuovo evento causer la rimozione dellelemento pi vecchio fra quelli
registrati.
N.B. Per non riempire la memoria con eventi di sistema a discapito di altri pi
importanti, bene marcare gli allarmi e i timer di servizio, i quali si
verificano molto frequentemente, con lattributo NOEVENT.

Per configurare un nuovo evento, utilizzare listruzione EVENT, la cui descrizione


compare allinterno del capitolo Definizione delle strutture.
Listruzione MAKEVENT
Genera levento.
Sintassi:
MAKEVENT (<nome>, <var>)
<nome> Stringa di caratteri valida.
<var> Nome simbolico della variabile legata allevento. Va posto a
zero se nessuna variabile prevista.
Esempi:
MODELLO TestEventi
INCLUDE EVEN_ITA.IPL
EVENT Ev_Tcritica Temp. critica
TABELLA GLOBALE
T > Tmax-Delta MAKEVENT(Ev_Tcritica, T)
T > Tmax ALARMSTART(A_Tmax)
Visualizza il messaggio Temp. critica, legato allevento Ev_Tcritica, nel caso in cui
la temperatura T sia maggiore della temperatura massima impostata (Tmax) meno
il delta (Delta).

Il linguaggio SPL 63 Il linguaggio SPL


Creazione di un programma

Prerequisiti
Il kit di programmazione delle centraline SSC01C composto da:

1. Un computer MSDOS compatibile con DOS versione 3.1 o superiore


equipaggiato con una porta di comunicazione seriale.
2. Un controllore tipo SSC01C con modulo di controllo I/O tipo SCU
3. Una sonda per temperatura e umidit tipo STU oppure, in alternativa, uno o pi
generatori di canali MDB CHGEN.
4. Il kit di connessione al controllore, composto dal cavo e dal modulo dinterfaccia
RS232 - RS422.
5. Il compilatore SPL SGRC.EXE, v. 3.10 (o successive) per SSC01C con le relative
utility:15

CVBIT.EXE: il compilatore IPL per file bitmap (solo per SSC01C).


CONVPU.EXE: gestisce la conversione dei programmi utente.
SSCTAL32.EXE: gestisce la procedura di trasmissione ai controllori.
TRPU32.EXE: gestisce il salvataggio dei programmi utente.
PSEND32: invio della EPROM alla centralina.
SSCINF32.EXE: fornisce una serie dinformazioni diagnostiche sullo stato
dellimpianto.
TRANS32.EXE: ritorna lo stato della comunicazione fra le centraline e il PC.

Creazione del file sorgente


Per la stesura del sorgente si pu ricorrere ad un qualsiasi editor in grado di
generare un file di testo ASCI. Sebbene la maggior parte dei Word Processor non
memorizzino i file in questo formato, taluni di questi dispongono di unapposita
modalit di salvataggio che risolve questo problema.
La struttura del file sorgente deve corrispondere a quanto descritto in questo
manuale. Tale file pu avere un nome qualsiasi anche se si consiglia caldamente di
utilizzare lestensione .SPL.

La compilazione del sorgente


Per compilare il sorgente SPL utilizzare il seguente comando:

15 Per alcuni di questi programmi disponibile anche una vecchia versione. Tali eseguibili si chiamano
SSCTALK.EXE, TRPU.EXE, SSCINF32.EXE, PSEND.EXE e TRANS.EXE.

Il linguaggio SPL 64 Il linguaggio SPL


SGRC [opzioni] <sorgente>
<opzioni> La lista delle opzioni la seguente.
-V Mostra i diritti dautore e la versione.
-D <nome> Imposta come vero il flag di compilazione
specificato.
-O <SBJ> Assegna al programma compilato il nome specificato.
-I <dir> Imposta la cartella dei file IPL.
-C Segnala gli oggetti che, pur essendo stati dichiarati,
sono inutilizzati.
<sorgente> il nome del programma da compilare.
Esempio:

SGRC parmacot.spl
Compila il file parmacot.spl e, se non rileva errori, genera il codice compilato. Il
nuovo file ha estensione .SBJ (in questo caso: PARMACOT.SBJ). Se la
compilazione va a buon fine appare a video un messaggio indicante:
Il numero di righe compilate.
Il numero di simboli utilizzati e quello dei simboli disponibili. Se si esauriscono i
simboli disponibili la compilazione fallisce e va quindi ripetuta dopo aver
diminuito il loro numero.
Il nome del programma generato dalla compilazione.
Una serie di numeri o codici relativi al programma compilato.

Compilazione del file delle icone IPL


Il file contenente la libreria delle icone, si ottiene compilando il sorgente. Il
comando da impartire :
CVBIT [opzioni] <sorgente>
<opzioni> La lista delle opzioni la seguente.
-D Visualizza la diagnostica relativa alla struttura del file.
-R Genera un bitmap ridotto ad otto colori.
-I Path Imposta una o pi cartelle alternative contenenti i
bitmap da compilare.
<sorgente> il nome di un file contenente la dichiarazione delle icone.
Esempio:
CVBIT ICONE.IPL
Se non rileva errori di sorta il compilatore genera il file ICONE.IBJ, in caso
contrario visualizza un messaggio indicante il tipo di errore e la riga del sorgente
in cui stato rilevato. La maggioranza degli errori derivano dal fatto che, essendo
stata indicata una cartella sbagliata, il compilatore non trova il bitmap indicato
nellIPL.

La trasmissione alla centralina


Per trasferire i file compilati nella centralina occorre seguire questa procedura:

Il linguaggio SPL 65 Il linguaggio SPL


1. Le centraline SSC01C devono essere collegate alla rete SSCNet di raccolta dati,
cui va altres connesso il computer contenente il programma SSCTALK e il file
.SBJ da trasferire.
2. Le centraline devono essere configurate con indirizzi di rete differenti. La lista
degli indirizzi deve esser nota.
3. Il comando per trasmettere i file IBJ e SBJ il seguente:
SSCTALK -V<n> <File> <s1 ... sN>
<n> Velocit di trasmissione del file alle centraline. Pu assumere questi
valori:
0 9600 baud (default).
1 19200 baud.
2 38400 baud.
3 57600 baud.
4 115000 baud.
<file> Nome del file compilato (FBJ, IBJ o SBJ).
<s1 sn> Indirizzi delle centraline che riceveranno il file.

Esempio:
SSCTALK FONT_STD.FBJ 1
Invia il file dei caratteri FONT_STD.FBJ alla centralina con indirizzo 1.
SSCTALK ICONE.IBJ 1 10
Invia il file delle icone ICONE.IBJ alle centraline con indirizzo 1 e 10.
SSCTALK -V3 PROGR.SBJ 1 - 4
Invia il file PROG.SBJ alle centraline con indirizzo 1, 2, 3 e 4, alla velocit di
57600 baud.
Per visualizzare la lista delle istruzioni daiuto, usare il comando SSCTALK senza
parametri.

Gli errori di compilazione


I messaggi derrore sono siglati con una lettera (W o F) e un numero
didentificazione.
La lettera W caratterizza le avvertenze non fatali (warning), che non
impediscono la corretta generazione del file oggetto.
La lettera F segnala invece un errore fatale che impedisce di generare il codice
oggetto; in tal caso necessario apportare al programma le opportune correzioni.

Elenco degli errori


-F01- Code buffer overflow.
Errore interno al compilatore. La sua comparsa deve essere segnalata al fornitore,
accompagnata dal sorgente che lo ha generato.
-F02- Cant realloc() code buffer.
Errore interno al compilatore. La sua comparsa deve essere segnalata al fornitore,
accompagnata dal sorgente che lo ha generato.
-F03- Troppi include file concatenati.

Il linguaggio SPL 66 Il linguaggio SPL


Ci sono troppi file dinclude annidati luno nellaltro. Ridurre il numero di
annidamenti.
-F04- La tabella <xx> non definita.
Si cercato di attivare una tabella che non stata dichiarata. Dichiarare la tabella.
-F05- La fase <xx> ha troppi Timer/Soglie. (Max. N)
Una fase non pu contenere timer e/o soglie in quantit superiore al massimo
indicato. necessario eliminare quelli in eccesso.
-F06- Il nome <xx> gi stato utilizzato.
Si utilizzato lo stesso nome per definire due oggetti diversi. Cambiare il nome
delloggetto.
-F07- <xx> deve essere un ingresso analogico.
In unistruzione LOOP stato specificato un oggetto diverso da un Ain.
-F08- <xx> deve essere un uscita analogica.
In unistruzione LOOP stato specificato come un oggetto diverso da un Aot.
-F09- <xx> deve essere una SOGLIA o una VARIABILE.
In unistruzione LOOP stato specificato un oggetto diverso da una soglia o una
variabile.
-F10- Troppi dispositivi periferici, <XX> il massimo attuale.
I dispositivi periferici (scu, stu, ssc, ser, ecc...) utilizzati dal programma eccedono
il massimo consentito.
-F11- Istruzione illegale o non permessa qui: <xx>
Il compilatore ha trovato unistruzione sconosciuta oppure ha perso il filo a
causa di un errore incontrato nellistruzione appena compilata.
Eventualmente controllare che la linea precedente a quella segnalata non contenga
errori. Il testo <xx> specifica il punto in cui si verificato lerrore e pu aiutare
nella ricerca.
-F12- Puoi attivare <xx> solo da tabelle in <xx>,(lin. N).
Si tentato di attivare una tabella non appartenente alla fase corrente. Ci
esplicitamente proibito. La linea contenente lattivazione indicata.
-F14- Una tabella deve contenere almeno una regola.
Il sorgente contiene una tabella vuota. Rimuoverla o inserire almeno una regola.
-F15- La regola contiene un errore vicino a: <xx>
Durante lesame di una tabella stata trovata una regola scorretta. Controllare il
formato della linea specificata e di quella precedente.
-F16- Simbolo non definito: <xx>
Si utilizzato un simbolo inesistente. Correggere se si tratta di un errore di
battitura oppure definire il simbolo.
-F17- La funzione <XX()> non esiste
stata specificata unazione che non fa parte del linguaggio SPL.
-F18- La funzione <xx()> richiede pi di N parametri
La funzione indicata stata utilizzata con un numero di parametri inferiore a
quello previsto.
-F19- La funzione <xx()> non accetta N parametri.
La funzione indicata stata utilizzata con un numero di parametri superiore a
quello previsto.

Il linguaggio SPL 67 Il linguaggio SPL


-F20- La tabella <xx> non pu attivarne altre
Non si pu usare lazione ATTIVA allinterno della tabella globale.
-F21- La tabella <xx> non appartiene a <xx>
La linea contiene unATTIVA di una tabella gi definita come appartenente ad
unaltra fase.
-F22- La tabella <xx> non pu essere attivata
Non si pu attivare la tabella globale da unaltra tabella in quanto essa sempre
attiva.
-F23- Largomento deve essere una TABELLA: <xx>
Il nome passato allATTIVA non corrisponde ad una tabella.
-F25- Operando illegale: <xx>
stato usato un termine scorretto in una condizione, una lista di parametri o
unespressione.
-F26- Memoria insufficiente, compilazione impossibile.
Il computer non dispone di abbastanza memoria. Eliminare gli eventuali
programmi residenti in surplus e/o semplificare il programma
-F28- Impossibile creare il file di output <xx>
Il compilatore non riesce a creare la forma compilata del file. Verificare se il file
gi esiste e se protetto contro la scrittura.
-F29- Impossibile accedere al file <xx>
Il file sorgente specificato inesistente o non pu essere letto.
-F30- Errore di scrittura del file di output
Si verificato un errore di disco durante la scrittura del file oggetto. Controllare
che il disco non sia pieno o rovinato.
-F31- Numero di simboli non valido: <XX> (Max. XX)
stata usata lopzione -s specificando un numero di simboli non legale. Il
massimo indicato nel messaggio.
-F31- Numero di simboli non valido: N
stato specificato un numero di simboli non legale usando lopzione -s.
-F32- Due segnali sullo stesso morsetto: <XX>, <XX>
Due segnali con nomi diversi sono definiti con lo stesso codice di tipo, (Din, Dot,
Ain o Aot) morsetto e unit (scu o stu). Eliminare lambiguit definendo in
maniera univoca i segnali.
-F33- Parametro <XX> di <XX()> di tipo sbagliato
Alla funzione specificata stato passato un parametro di tipo incompatibile con la
funzione stessa. Ad esempio, si passato un timer alla ON invece di un segnale.
-F35- Il dot0 dello SCU riservato.
stato definito un segnale che utilizza il dot 0 di uno SCU. Questo un morsetto
riservato per la sirena di allarme e non pu essere utilizzato.
-F36- <XX> non pu essere usato a sinistra di <:=>
In unistruzione di assegnamento di tipo <VARIABILE> := <valore> stato
specificato a sinistra un nome non appartenente ad una variabile.
-F37- Classe <XX> non compresa tra MIN e MAX.
stato specificato un SEGNALE con una CLASSE di consumo non esistente.

Il linguaggio SPL 68 Il linguaggio SPL


-F42- Troppe VARIABILI DI RETE, max.: <XX>
Sono state dichiarate pi variabili di rete di quelle che il sistema in grado di
gestire.
-F43- <XX>: Tipo di segnale inesistente su questo apparecchio.
Si definito un segnale in modo errato, specificando un tipo di segnale (Din, Dot,
Ain) che non esiste sullapparecchio specificato. Esempio: ser1.din1 una
definizione errata poich le periferiche di tipo ser non hanno Din.
-F44- <XX>: Questo apparecchio possiede solo XX segnali di questo tipo.
Si definito un segnale specificando un numero di segnale che non esiste
sullapparecchio specificato.
-F45- <XX>: Questo punto di controllo daccesso non esiste.
stato specificato nel programma un punto di controllo daccesso non esistente.
-F46- <XX>: Livello di password illegale: <XX>
Si cercato di assegnare ad un punto di controllo daccesso un livello di password
non valido. Tale livello deve essere compreso fra 0 e 3.
-F47- Troppe FASI, <XX> il massimo.
Le fasi utilizzate superano il massimo consentito. Ridurle di numero.
-F47- Troppe SOGLIE, <XX> il massimo.
Le soglie utilizzate eccedono il massimo consentito. Ridurle di numero.
-F47- Troppe TABELLE, <XX> il massimo.
Le tabelle utilizzate eccedono il massimo consentito. Ridurle di numero.
-F47- Troppe VARIABILI, <XX> il massimo.
Le variabili utilizzate eccedono il massimo consentito. Ridurle di numero.
-F47- Troppi ALLARMI, <XX> il massimo.
Gli allarmi utilizzati eccedono il massimo consentito. Ridurli di numero.
-F47- Troppi LOOP, <XX> il massimo.
I loop utilizzati eccedono il massimo consentito. Ridurli di numero.
-F47- Troppi SEGNALI, <XX> il massimo.
I segnali utilizzati eccedono il massimo consentito. Ridurli di numero.
-F47- Troppi TIMER, <XX> il massimo.
I timer utilizzati eccedono il massimo consentito. Ridurli di numero.
-F48- <XX>: Usare una SOGLIA, VAR o un NUMERO.
In questo contesto il compilatore accetta solamente dati di tipo soglia, variabile o
numerico.
-F49- Il PANNELLO <XX> non definito.
Si tentata unoperazione su un pannello non definito.
-F50- Lo SCHERMO <XX> non definito.
Si tentata unoperazione su uno schermo non definito.
-F51- Attributo illegale per uno SCHERMO.
stato specificato per lo SCHERMO un attributo non legale.
-F52- <XX> non uno SCHERMO o una funzione predefinita.
In questo contesto accetta soltanto uno schermo oppure una funzione predefinita.

Il linguaggio SPL 69 Il linguaggio SPL


-F53- <XX> non un PANNELLO, SCHERMO o predefinito.
In questo contesto accetta soltanto un pannello, uno schermo oppure una funzione
predefinita.
-F54- <XX> non un tasto valido.
stato specificato un codice di tasto non legale.
-F55- <XX()> illegale in questo contesto.
La funzione utilizzata illegale in questo contesto.
-F55- <XX.XXX> illegale in questo contesto.
Loggetto o lo specificatore utilizzato illegale in questo contesto.
-F55- <XX> illegale in questo contesto.
Loggetto o lo specificatore utilizzato illegale in questo contesto.
-F56- <XX>: Troppe voci di MENU: <XX> il max.
Il campo di tipo men presenta un numero troppo elevato di voci. Ridurle entro il
limite specificato.
-F057 - obbligatorio definire i TASTI nel Primo Pannello.
-F058- Attributo illegale per un CAMPO.
-F058- Attributo illegale per un CAMPO.
-F059- Una WINDOW pu avere da 1 a 15 righe.
-F060- <X %s Y>: X e Y sono di tipo incompatibile.
-F060- Operando non numerico, operazione <->.
-F060- Operando non numerico, operazione <NOT>.
-F061- <Y := X>: X non numerico.
-F062- <<XX> di tipo TESTO !
-F063- Una VAR DI TESTO non pu essere DI RETE
-F064- <XX()>: numero parameti errato.
-F065- <XX> non accetta il parametro in questo contesto.
-F065- <XX> non accetta parametri in questo contesto.
-F066- <SKIP TO XX>: non sono ammessi salti all'indietro.
-F067- La prima TABELLA GLOBALE gi attiva.
-F068- La prima TABELLA GLOBALE non pu essere fermata.
-F069- Non si pu usare VISUALIZZA nella FASE LIBRERIA.
-F070- Non sono ammesse istruzioni dopo una SKIP.
-F071- Parola estranea o incomprensibile: < XX>
-F072- SKIP TO <XX> impossibile: troppo distante!
-F073- Troppe chiamate a F71INIT() o FCTINIT(), il massimo ammesso
(MAX_F71);
-F074- Dalla FASE GLOBALE non puoi attivare tabelle di altre fasi.
-F075- ICONUM() illegale in questo contesto.
-F076- Non esiste l'ICONA numero:

Il linguaggio SPL 70 Il linguaggio SPL


-F077- <XX> non una ICONA o una VARIABILE.
-F078- Stringa costante non definita:
-F079- Si possono dichiarare al massimo 2 lingue.
-F080- Stringa costante definita nella II lingua ma non nella I:
-F081- Stringa costante definita 2 volte nella stessa lingua:
-F082- Le lingue devono stare prima delle stringhe.
-F083- Errore nella parte destra assegnamento:
-F084- Operando illegale:
-F085- Errore nella parte sinistra assegnamento:
-F086- Due segnali ain e aot sullo stesso morsetto:
-F087- ERRORE INTERNO.
-F088- Parametri errati: la funzione accetta solo un parametro aot.
-F089- Valore costante troppo grande.
-F090- Costante di sistema errata.
-F091- La modalit 1 quella vecchia, istruzione inutile.
-F092- Modalit troppo nuova per questo compilatore.
-F093- Una VAR DI RETE non pu essere PERMANENTE.
-F094- Una VAR DI TESTO non pu essere PERMANENTE.
-F095- Errore interno del compilatore.
-F096- Errore interno del compilatore.
-F097- Se uno SCREEN ha opzioni di MENU va definito PRIMA del
PANNELLO.
-F098- Istruzione ELSE come prima istruzione di tabella.
-F099- Istruzione ELSE come prima istruzione di tabella.
-F100- L'attributo BIN si pu usare solo col tipo INTERO.
-F101- L'attributo BIN non si pu combinare con COMPR.
-F102- L'attributo BIN non si puo' combinare con PWD.
-W01- <XX> non pu essere visualizzato.
Loggetto utilizzato non legale come campo di una maschera.
-W02- <xx> un nome troppo lungo, sar troncato.
Il nome specificato troppo lungo e sar troncato. meglio correggere.
-W03- Azione <FINEFASE> nella TABELLA GLOBALE ignorata.
La tabella globale contiene unistruzione FINEFASE che, essendo inutile, viene
ignorata.
-W04- <XX> non ha un HELP predefinito.
Loggetto usato non fra quelli dotati di un Help predefinito (quali soglie e timer).
-W05- L'istruzione SSC92 non serve pi.
-W05- L'istruzione UPC94 non serve pi.

Il linguaggio SPL 71 Il linguaggio SPL


-W05- L'istruzione VARPANEL non serve pi.
-W07- Opzione non valida in WINDOW, stata ignorata.
-W08- < XX> descritto ma non usato.
-W08- Il TIMER <XX> non viene mai utilizzato.
-W08- La SOGLIA/OPZIONE <XX> non viene mai utilizzata.
-W08- L'ALLARME <XX> non viene mai utilizzato.
-W08- Il SEGNALE <XX> non viene mai utilizzato.
-W08- Il LOOP <XX> non viene mai utilizzato.
-W08- La VARIABILE <XX> non viene mai utilizzata
-W09- Manca l'allarme <XX>: sar sostituito da Undefined alarm.
-W10- Operazione inutile su questo dispositivo (non viene eseguita).
-W11- Per MDB non hanno senso gli attributi S020 e S420.

Il salvataggio dei programmi utente


Prima di sostituire lSBJ di una centralina con un altro bene recuperare i
programmi utente contenuti nellapposita libreria per evitare che questi vengano
cancellati. Il seguente comando salva i programmi utente sul disco fisso, creando
per ognuno un file con un nome di tipo Sxx-Pyy.PU dove <xx> il numero della
centralina e <yy> quello del programma utente.
TRPU READ n
I programmi utente cos salvati possono poi essere ritrasmessi ad una centralina
SSC01C (non necessariamente quella da cui erano stati letti) con il comando:
TRPU WRITE n

Esempi:
TRPU READ 5
Salva nella cartella corrente i programmi utente della centralina con indirizzo 5.
TRPU READ 1 10
Legge i programmi utente delle centraline con indirizzo 1 e 10.
TRPU READ 1 - 4
Legge i programmi utente sulle centraline con indirizzo 1, 2, 3 e 4.
TRPU WRITE 15
Trasmette alla centralina con indirizzo 15 i programmi utente precedentemente
salvati nella cartella corrente.
ATTENZIONE: La trasmissione ha successo solo se lSBJ della centralina
destinata ad accogliere il programma utente e quello della centralina usata per la
sua creazione sono compatibili (vedi il capitolo successivo).

Il linguaggio SPL 72 Il linguaggio SPL


La conversione dei programmi utente
Per rendere compatibili i programmi utenti con un nuovo SBJ occorre seguire
questa procedura:
1. Salvare tutti i programmi utente della centralina PRIMA di riprogrammarla:
TRPU READ 1
2. Salvare una copia dei programmi utente su un dischetto di backup:
COPY *.PU A:
3. Compilare il nuovo SPL e ricompilare quello gi presente sulla centralina:
SGRC NUOVO.SPL
SGRC VECCHIO.SPL
ottenendo cosi i file NUOVO.SBJ e VECCHIO.SBJ.
4. Convertire i programmi utente gi salvati con il comando CONVPU:
CONVPU VECCHIO.SBJ NUOVO.SBJ P1-S1.PU
che rende compatibili i file P1-S1.PU e NUOVO.SBJ.
5. Riprogrammare la centralina con il file NUOVO.SBJ:
SSCTALK NUOVO 1
6. Trasmettere alla centralina i programmi utente convertiti:
TRPU WRITE 1

Il linguaggio SPL 73 Il linguaggio SPL


APPENDICI

Appendice A: Programma desempio


Lesempio concerne la gestione di una semplice cella di condizionamento.
Trascrivere il codice con un programma di composizione testi , quindi 16

denominare il file TERMO.SPL e salvarlo.


# Esempio di gestione di una cella di condizionamento.
# Non richiede il file delle icone .IPL
MODELLO Termo Termo-Condizionatore V1.0
SOGLIA SetTemp Temperatura Cella:, -10,30,5
SOGLIA DeltaTemp Soglia DT: , 0.1,0.5,1
SOGLIA DeltaAll Soglia DT di allarme:, 1,100,1
SEGNALE Caldo scu1.dot1
SEGNALE Freddo scu1.dot2
SEGNALE T stu1.ain0
ALLARME AllTemp Temperatura fuori controllo, NOFAT

FASE Termostato
TABELLA T1
T > SetTemp + DeltaTemp: ON(Freddo), OFF(Caldo)
T < SetTemp - DeltaTemp: ON(Caldo), OFF(Freddo)

T > SetTemp + DeltaAll: ALARMSTART(AllTemp)


T < SetTemp - DeltaAll: ALARMSTART(AllTemp)

T < SetTemp + DeltaAll: ALARMSTOP(AllTemp)


T > SetTemp - DeltaAll: ALARMSTOP(AllTemp)

Compilazione e trasmissione
Compilare il sorgente per ottenere il formato eseguibile. Il comando da digitare :
SGRC PROG.SPL
Il compilatore, se non rileva errori di sintassi, genera il file PROG.SBJ, altrimenti
segnala a video il tipo di errore e la riga contenente listruzione irregolare.
A questo punto lSBJ pu essere inviato al controllore con indirizzo 1.
SSCTALK PROG 1

NB: Ogni controllore configurato con un indirizzo da 1 a 254 che lo individua


in maniera univoca allinterno della rete SSCNet. Se lindirizzo del vostro
controllore diverso da quello riportato nellesempio, sostituite
questultimo con quello corretto.
Se la connessione tra il computer ed il controllore operativa e lindirizzo
specificato coincide con quello del controllore, la centralina memorizza in forma
permanente lSBJ.

16 Ci si pu avvalere di un qualunque editor o word processor, purch i file siano salvati in modalit testo, ossia
utilizzando caratteri ASCII standard.

Il linguaggio SPL 74 Il linguaggio SPL


Appendice B: Esecuzione dei programmi utente
Per eseguire un programma utente procedere come segue:
Prelevare il programma dalla libreria dei programmi utenti, se gi disponibile , 17

altrimenti crearlo ex novo. Vedi le funzioni Lettura programma e Creazione


programma del men Programmi della centralina.
Premere il pulsante START della centralina.
La centralina esegue la fase a video, che diventa la fase corrente. Di solito
coincidente con la prima fase del programma corrente, pu anche essere
18

differente se loperatore ha selezionato a video una fase diversa. Terminata una


fase, passa alla successiva, fino ad arrivare allultima fase del programma, che
termina a sua volta. Le regole di una fase sono a loro volta suddivise in tabelle,
definite in SPL, che costituiscono un insieme di subalgoritmi, non visibili
dallesterno, nei quali suddivisa la logica della fase in corso. In ogni istante la
centralina esegue le regole di due tabelle: la tabella globale, che unica nel
programma, e una delle altre tabelle, detta tabella corrente (associata alla fase in
esecuzione). quindi possibile, passando da una tabella corrente ad unaltra,
cambiare il gruppo di regole attive, senza uscire dalla fase corrente.

17 LSSC01C dotato di una libreria in grado di contenere fino a 20 programmi utenti di 20 fasi ciascuno.
18 frequente anche il caso di applicazioni che prevedono una sola fase, e che non prevedono programmi utente,
come nel caso del controllo di celle frigorifere, compressori, ecc.

Il linguaggio SPL 75 Il linguaggio SPL


Appendice C: Elenco delle parole chiave riservate
Le tabella sottostante riporta la lista completa delle parole chiave riservate. La tabella di
sinistra contiene lelenco completo delle parole chiave, disposto in ordine alfabetico. Ad
alcuni comandi SPL sono state associate due parole chiave, una in italiano, laltra in inglese.
In tal caso il termine inglese compare nella casella di destra. Qualora al comando sia associata
una sola parola chiave, la rispettiva casella di destra presenter il simbolo -.

!DEFINE - CLASSE CLASS


!IFDEF - COMPR -
!IFNDEF - CON SEGNO SIGNED
3DIN - CONFENABLED
3DOUT - CONFIG -
ACCESO - CONFIMP PLANTCONF
ACTION - CONFLOOP LOOPCONF
ADDRESS - CONS -
AINCALIB - CONTAORE COUNTER
AINLIST - COST -
ALARMCONT - CREAMODPU PUCREATE
ALARMLIST - CREAPWD PWDCREATE
ALARMSTART - CSIZE -
ALARMSTOP - CURBLINK -
ALARMSUSP - CURLAST -
ALLARME ALARM DATA DATE
ALLCENT - DATIFASE PHASEDATA
ALLOOPSTOP - DECFASE PHASEDEC
ALLTIMERSTOP - DECIMALE DECIMAL
AND - DEFCOLOR -
ANNO YEAR DESCR -
AOTLIST - DIAGPRESMDB
ARRESTA KILL DI RETE NET
ATTIVA ACTIVATE DI TESTO STRING
AUTO - DINLIST -
AUTONUM DOTDINLIST -
AZZURRO CYAN DOTLIST -
BALM DTDER -
BALMFAT DX RJUST
BALMNEW ELSE
BALMSIR ENABLED
BIANCO WHITE ENERSAVESPL -
BIN ENTALPIA ENTHALPY
BLOCCA LOCK EPROM -
BLU BLUE ERRNET -
BOTTOM - ESAD HEX
BP - ESAMMEM MEMSHOW
BSIRFAT ESEGUI RUN
BSIRNOFAT EVENT
BSTART F71 -
CAMBIATO JUSTCHANGED F71INIT -
CAMPI FIELDS F71STOP -
CANCEPROM EPROMCLEAR FASE PHASE
CANCMEM MEMCLEAR FASE GLOBALE -
CANCPWD PWDCLEAR FASE LIBRERIA -
CENT - FASENUM PHASENUM
CHECKSUM - FASEVID PHASEVID
CICL CYCLIC FASILIST PHASELIST
FCT - MENU -
FCTINIT - MESE MONTH
FCTSTOP - MESGSYS -
FINEFASE ENDPHASE MM -
FINESTRA WINDOW MMSS -
FINETABELLA ENDTABLE MODALITY
FKEYRES - MODELLO MODEL
FORZA FORCE MODIF -
FORZALOOP LOOPFORCE MODPWD PWDMOD
FUNDT - MSTIM -
FUNDVP - NERO BLACK
FUNMH - NO -
FUNRH - NOALMFS
FUNSH - NOBELL -
FUNSVP - NOEDIT -
FUNTU - NOEVENT -
FUNVP - NOFAT -
FVFC - NOMARK -
GET NOME NAME
GIALLO YELLOW NOMEFASE PHASENAME
GIOMESE MONTHDAY NOMEPROG PROGNAME
GIOSETT WEEKDAY NOMESTATO STATENAME
GLOB - NOSCROLL -
GRAFICI TRENDS NOSTOP -
HELP - NOT -
H5MM OD -
HH - OFF -
HHMM - OKEXIT -
HHMMSS - OKMODE DIRECT
HMSTIM ON -
ICONA ICON ONATTIVA ONEXEC
ICONUM - ONCONT -
IFON - ONRESET -
IN AT ONSBJ -
INALM - ONSTART -
INALMFAT - ONSTOP -
INCFASE PHASEINC OPZIONE OPTION
INCLEVEL - OR -
INCLUDE - ORA LOCALTIME
INF - OUTPUT -
INOUTSEP PANNELLO PANEL
INPIX - PASSLEVEL -
INPUT - PERIODO PERIOD
INSTART - PERM -
INSTOP - POTENZA POWER
INTERO INTEGER PRIMO PANNELLO FIRST PANEL
KDER - PROGDELETE -
KINT - PROGLIST -
LEGGIPU PUREAD PROGRAM -
LEN - PROGREAD -
LEVEL - PROGWRITE -
LOOP - PUCODE -
LOOPLIST - PWDLIST -
LOOPSTART - RELEASE
LOOPSTOP - REPEATER -
MANLIST - RESET -
MANUALE MANUAL REVERSE -
MASTER - RISERVA DOT0 RESERVE DOT0
ROSSO RED VERDE GREEN
S020 - VERSIONE VERSION
S420 - VID -
SALITO JUSTSET VIDEO -
SALVAPU PUSAVE VIOLA VIOLET
SCADUTO EXPIRED VIRTUAL
SCALELIST - VISIBILE VISIBLE
SCANOFF - VISUALIZZA SHOW
SCANON - XOFF
SCESO JUSTRESET Y0 -
SCHERMO SCREEN YESNO -
SEGNALE SIGNAL YMAX -
SEMPRE ALWAYS YMIN -
SERVIZIO SERVICE
SET -
SETGLOB -
SETINIB -
SETLEVEL -
SETMASKEVENT -
SETMEMOEVENT -
SETOUT -
SETPOINT -
SETTIMANA WEEK
SETVID -
SHOWDOT -
SHOWTIMER -
SI YES
SIGMDBLIST
SKIP TO -
SOGLIA SET LEVEL
SPENTO -
SS -
SSCSTAT -
STAT -
STATUS -
STUCALIB -
SX LJUST
TABELLA GLOBALE GLOBAL TABLE
TABELLA PERMESSI PASSWORD TABLE
TABELLA TABLE
TASTI KEYS
TESTIME -
TESTO TEXT
TIME -
TIMER -
TIMERCONT -
TIMERLIST -
TIMERSTART -
TIMERSTOP -
TIMERSUSP -
TIPO TYPE
TIPOFASE PHASETYPE
TOP -
TRASP -
UNAVOLTA ONCE
UNDEF -
VARIABILE VARIABLE, VAR
VARLIST -
Indice analitico

!DEFINE.....................................25; 26; 53; 54; 55 CONFIMP.....................................................27; 61


!IFDEF....................................................25; 53; 55 CONFLOOP.......................................................61
!IFNDEF.................................................25; 53; 55 CONS.................................................................40
3DIN.......................................................57; 59; 60 CONTAORE.......................................................13
3DOUT.........................................................57; 60 COST.................................................................41
ACCESO......................................................14; 21 CREAMODPU....................................................62
ACTION.............................................................47 CREAPWD...................................................49; 62
ADDRESS..........................................................32 CSIZE...........................................................57; 61
AINCALIB...........................................................61 CURBLINK.........................................................52
AINERRLIST......................................................61 CURLAST..........................................................52
AINLIST.............................................................61 DATA..................................................................33
AINMISSLIST.....................................................61 DATIFASE..............................................14; 27; 62
ALARMCONT.....................................................46 DECFASE..........................................................63
ALARMLIST.....................................16; 46; 51; 61 DECIMALE.........................................................59
ALARMSTART......................25; 26; 28; 46; 64; 76 DEFCOLOR.......................................................52
ALARMSTOP...................................17; 28; 46; 76 DESCR.........................................................54; 55
ALARMSUSP.....................................................46 DI RETE.............................................................22
ALLARME.......................12; 16; 17; 25; 26; 46; 76 DI TESTO...........................................................22
ALLCENT...........................................................52 DIAGDIN............................................................23
ALLOOPSTOP...................................................44 DIAGPRESMDB...........................................23; 24
ALLTIMERSTOP................................................46 DINALMLIST......................................................62
AND...................................................................10 DINLIST.............................................................62
ANNO.................................................................32 DINMISSLIST.....................................................62
AOTLIST............................................................61 DOTDINLIST......................................................62
ARRESTA...................................27; 28; 29; 30; 47 DOTLIST............................................................62
ATTIVA.................................10; 27; 29; 30; 47; 70 DTDER.........................................................20; 21
AUTO...........................................................17; 46 DX......................................................................57
AUTONUM.........................................................52 ELSE..................................................................54
AZZURRO..............................................52; 57; 61 ENABLED..........................................................33
BIANCO...........................................52; 57; 59; 61 ENERSAVESPL...........................................24; 41
BIN.....................................................................57 ENTALPIA....................................................37; 38
BLOCCA..........................................28; 41; 42; 43 EPROM..............................................................33
BLU........................................................52; 57; 61 ERRNET............................................................33
BOTTOM......................................................52; 53 ESAD.................................................................58
BP................................................................20; 21 ESAMMEM.........................................................62
CAMBIATO.............................................22; 23; 32 ESEGUI......................................27; 28; 29; 30; 47
CAMPI................................................................59 EVENT.............................................13; 21; 63; 64
CANCEPROM....................................................63 F71.....................................................................38
CANCMEM.........................................................63 F71INIT..............................................................38
CANCPWD.........................................................63 F71STOP...........................................................38
CENT.................................................................57 FASE....................................25; 26; 28; 29; 33; 76
CHECKSUM.................................................32; 33 FASE GLOBALE..........................................27; 28
CICL...................................................................52 FASE LIBRERIA.................................................28
CLASSE.............................................................15 FASENUM..........................................................33
COMPR..............................................................57 FASEVID............................................................33
CON SEGNO.....................................................57 FASILIST..........................................27; 28; 29; 62
CONFENABLED................................................61 FCT....................................................................38
CONFIG.............................................................61 FCTINIT.............................................................38
FCTSTOP....................................................38; 39 MANUALE....................................................13; 21
FINEFASE..................................10; 28; 29; 47; 73 MASTER..........................................22; 24; 25; 34
FINESTRA.........................................................59 MENU................................................................58
FINETABELLA...................................................29 MESE.................................................................34
FKEYRES..........................................................53 MESGSYS.........................................................62
FORZA.......................................28; 29; 30; 42; 43 MM.....................................................................34
FORZALLOP......................................................45 MMSS....................................................13; 14; 58
FORZALOOP.....................................................45 MODALITY.......................................22; 23; 32; 36
FUNDT...............................................................39 MODELLO................11; 17; 25; 26; 28; 29; 64; 76
FUNDVP............................................................39 MODIF..........................................8; 57; 58; 59; 60
FUNMH..............................................................39 MODPWD..........................................................62
FUNRH..............................................................40 MSTIM..........................................................13; 14
FUNSH...............................................................40 NERO...............................................52; 57; 59; 61
FUNSVP.............................................................39 NO....................................................14; 15; 21; 59
FUNTU...............................................................40 NOALMFS..........................................................15
FUNVP.........................................................39; 40 NOBELL.......................................................17; 46
FVFC..................................................................58 NOEDIT.............................................................13
GET..............................................................43; 44 NOEVENT..............................................13; 17; 64
GIALLO..................................................52; 57; 61 NOFAT...................................................17; 46; 76
GIOMESE....................................................33; 34 NOMARK...........................................................58
GIOSETT...........................................................34 NOME................................................................56
GLOB...........................................................56; 57 NOMEFASE.......................................................34
GRAFICI.............................................................62 NOMEPROG......................................................34
H5MM................................................................58 NOMESTATO...............................................34; 35
HELP..................................................................55 NOSCROLL.......................................................59
HH......................................................................34 NOSTOP..........................................13; 14; 16; 45
HHMM..........................................................14; 58 NOT.............................................................10; 61
HHMMSS.....................................................13; 14 OD......................................................................35
HIDDEN.............................................................57 OFF............................................14; 21; 42; 43; 76
HMSTIM.......................................................13; 14 OKEXIT..............................................................53
ICONA................................................................12 OKMODE.......................................................8; 53
ICONUM.............................................................61 ON........................9; 10; 14; 21; 30; 42; 43; 70; 76
IFON..................................................................58 ONATTIVA..........................................................30
IN............................................................55; 56; 59 ONCONT............................................................30
INALM................................................................58 ONEXEC............................................................42
INALMFAT..........................................................58 ONRESET..........................................................31
INCFASE............................................................63 ONSBJ...............................................................31
INCLEVEL..........................................................41 ONSTART..........................................................31
INCLUDE.........................................17; 25; 26; 64 ONSTOP......................................................31; 32
INF.........................................................13; 14; 45 OPZIONE...............................................12; 14; 15
INOUTSEP...................................................19; 26 OR................................................................10; 28
INPIX......................................................12; 60; 61 ORA...................................................................35
INSTART............................................................58 PANNELLO......................................51; 53; 61; 63
INSTOP..............................................................58 PASSLEVEL.......................................................35
INTERO..................................................14; 57; 59 PERM...........................................................53; 59
KDER...........................................................20; 21 POTENZA..........................................................15
KINT.............................................................20; 21 PRIMO PANNELLO................................50; 51; 52
LEGGIPU...........................................................63 PROGDELETE...................................................62
LEN..............................................................58; 59 PROGLIST.........................................................62
LEVEL................................................................41 PROGRAM.........................................................35
LOGAINLIST......................................................62 PROGRAM.........................................................35
LOGALARM.......................................................62 PROGREAD.......................................................62
LOGAOTLIST.....................................................62 PROGWRITE...............................................62; 63
LOGDINLIST......................................................62 PUCODE......................................................35; 36
LOGDOTLIST....................................................62 PWDLIST...........................................................62
LOGEVENT..................................................62; 63 RELEASE.....................................................43; 44
LOOP...............................................12; 20; 21; 69 REPEATER........................................................36
LOOPLIST..........................................................62 RESET...............................................................63
LOOPSTART......................................................44 REVERSE..........................................................59
LOOPSTOP.......................................................44 RISERVA DOT0.................................................25
MAKEVENT.......................................................64 ROSSO............................................12; 52; 57; 61
MANLIST................................................21; 50; 62 S020...................................................................15
S420.............................................................15; 16
SALITO..................................................22; 23; 36
SALVAPU...........................................................63
SCADUTO............................10; 22; 23; 25; 26; 36
SCALELIST........................................................62
SCANOFF..........................................................48
SCANON............................................................48
SCESO...................................................22; 23; 36
SCHERMO.........................................................53
SEGNALE..................................12; 15; 16; 17; 76
SEMPRE......................................................29; 30
SERVIZIO..........................................................62
SET....................................................................56
SETADDMDB.....................................................62
SETGLOB....................................................56; 57
SETINIB.............................................................41
SETLEVEL.........................................................41
SETMASKEVENT..............................................62
SETMEMOEVENT.............................................62
SETOUT.............................................................44
SETTIMANA.......................................................36
SETVID........................................................56; 63
SHOWDOT..................................................16; 59
SHOWTIMER.....................................................59
SI10; 14; 21; 59
SIGMDBLIST.....................................................62

SKIP TO.............................................................48
SOGLIA..................................................12; 14; 76
SPENTO......................................................14; 21 TIPOFASE....................................................51; 63
SS......................................................................34 TOP....................................................................53
SSCSTAT.....................................................36; 37 TRASP.............................................12; 16; 59; 61
STAT............................................................36; 37 UNAVOLTA.............................................30; 31; 42
STATUS.............................................................37 UNDEF...................................................22; 24; 48
STUCALIB..........................................................62 VARIABILE.........................................9; 13; 22; 61
SX......................................................................59 VARLIST......................................................22; 62
TABELLA..............................25; 26; 28; 29; 30; 76 VERDE...................................................52; 57; 61
TABELLA GLOBALE............25; 26; 27; 28; 61; 64 VERSIONE...................................................11; 63
TABELLA PERMESSI..................................49; 50 VID...............................................................56; 63
TASTI.....................................................50; 51; 63 VIDEO................................................................47
TESTIME............................................................37 VIOLA.....................................................52; 57; 61
TESTO.........................................................11; 12 VIRTUAL............................................................16
TIME..................................................................59 VISIBILE.............................................................22
TIMER..................................12; 13; 14; 25; 26; 45 VISUALIZZA.......................................................29
TIMERCONT......................................................45 XOFF............................................................42; 43
TIMERLIST..................................................50; 62 Y0.......................................................................20
TIMERSTART...............................................10; 45 YESNO..............................................................59
TIMERSTOP................................................13; 45 YMAX.................................................................20
TIMERSUSP................................................13; 45 YMIN..................................................................20
TIPO...................................................................59