Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Manuale d’uso
Revisione: 2.02.10
Autoware srl
Via Pio XII, 15 – 74100 Taranto Via Roma, 6 –70010 Casamassima
Tel: 099.7303413 Tel: 080.675426
URL: http://www.autoware.com
e-mail: support@autoware.com
SOMMARIO
CAPITOLO 1 INTRODUZIONE AD AW-SYS
Generalità ....................................................................................................................................................1-1
Composizione..............................................................................................................................................1-2
Il modulo PC-Sim........................................................................................................................................1-3
Il modulo PL-Sim........................................................................................................................................1-3
Il modulo PC-RIS........................................................................................................................................1-4
Il modulo PL-RIS........................................................................................................................................1-5
Il modulo PL-Lab ........................................................................................................................................1-5
Il modulo PL-Net ........................................................................................................................................1-5
Guida in linea ..............................................................................................................................................1-6
Servizio Supporto Tecnico Utenti AW-SYS...............................................................................................1-6
Autoware su Internet ...................................................................................................................................1-7
Struttura del manuale ..................................................................................................................................1-7
Errori di esecuzione...................................................................................................................................3-99
Combinazioni di tasti
Quando si fa riferimento ad una combinazione di tasti di comando (es. Ctrl+N) si intende che, per attivare il
comando, occorre premere e mantenere il primo tasto (nell’esempio il tasto Control) quindi premere il
secondo tasto (N nell’esempio) e successivamente rilasciare entrambi.
Generalità
L’insegnamento dell’automazione di base e della programmazione dei PLC è entrato in maniera
preponderante in quasi tutte le discipline tecniche degli Istituti Tecnici e Professionali. Esso è stato introdotto
sia nei corsi di Elettronica, nelle materie TDP e Sistemi, sia nei corsi di Elettrotecnica e Meccanica, nella
materia Automazione; non da meno operano in questo senso gli Istituti ed i Centri di Formazione
Professionale.
Organizzare un laboratorio efficiente, funzionale e flessibile, cercando di limitare al massimo gli investimenti
in termini economici e di sistemazione logistica, rappresenta per costoro un vero problema. Infatti, realizzare
un’esercitazione di automazione comporta l’approntamento di postazioni di lavoro comprendenti un PLC
completo di sistema di sviluppo (che il più delle volte gira su personal computer) e di uno o più pannelli per la
simulazione dell’impianto oggetto dell’esercitazione stessa. Ci si rende subito conto dell’impegno sia
economico che logistico al quale si va incontro nel caso si voglia eseguire più di una esercitazione. Molto
spesso, inoltre, riprodurre con modelli fisici situazioni impiantistiche reali diventa pressoché impossibile.
Per questi motivi la Autoware propone AW-SYS, un sistema che permette di trasformare il personal computer
in un laboratorio virtuale di automazione. AW-SYS è un sistema software e hardware che simula, su personal
computer in ambiente Windows, i PLC più diffusi in ambito scolastico ed impianti di grande valenza didattica.
AW-SYS si rivolge a tutti coloro che svolgono attività didattica nel campo dell’automazione industriale:
• Istituti Tecnici e Professionali con indirizzi in Elettronica, Elettrotecnica, Meccanica ed Informatica;
• Università;
• Istituti di Formazione Professionale;
• Aziende.
L’utilizzo del software di simulazione AW-SYS come laboratorio virtuale di automazione, offre tutta una serie di
vantaggi di ordine pratico:
• semplicità di organizzazione del laboratorio, che può essere una comune aula di informatica;
• flessibilità del laboratorio, poiché i personal computer possono essere utilizzati anche per altre attività;
• economicità rispetto alle soluzioni tradizionali;
• nessuna necessità di manutenzione;
e consente, a livello didattico:
• maggiore attivazione dei meccanismi percettivo-attenzionali;
• grande velocità di interazione tra allievo ed esercitazione da svolgere;
• attivazione di una forte carica motivazionale;
• attivazione di un processo d’insegnamento/apprendimento individualizzato e verificabile a tappe;
• visualizzazione e riscontro immediati del lavoro svolto.
Con AW-SYS è possibile effettuare tutte quelle operazioni che portano all'automazione di un impianto come
nel caso reale, e cioè:
• scrittura del programma utente;
Composizione
AW-SYS è concepito in maniera modulare per essere utilizzato nel modo più opportuno in relazione alle
diverse esigenze didattiche dei docenti.
AW-SYS è composto dai seguenti moduli software e hardware integrati:
Il modulo PC-Sim
PC-Sim è il modulo di AW-SYS dedicato alla simulazione di controllori logici programmabili (PLC).
Esso costituisce un ottimo strumento per l'insegnamento della programmazione di queste apparecchiature
perché, attraverso l'esclusivo utilizzo di un personal computer, consente:
• la visualizzazione del PLC, che viene rappresentato graficamente sullo schermo in una apposita finestra;
• la scrittura del programma utente in maniera grafica o testuale, utilizzando i linguaggi specifici più diffusi,
Ladder e AWL (lista istruzioni);
• la definizione di simboli, che potranno essere utilizzati nel programma, semplificandovi il lavoro, al posto
degli operandi assoluti;
• la verifica del programma realizzato, per mezzo di interruttori, pulsanti e LED di segnalazione dello stato,
tutti simulati e presenti all’interno del software;
• la correzione del medesimo, con l'ausilio dei potenti strumenti di debug in linea che gli stessi editor di
programmi mettono a disposizione dell’utente;
• la visualizzazione dello stato e/o del valore, con aggiornamento continuo, di tutte le variabili utilizzate dal
vostro programma.
Inoltre, grazie all’integrazione tra i moduli, PC-Sim potrà essere utilizzato per comandare gli impianti simulati
di PL-Sim o gli impianti reali presenti nel vostro laboratorio per mezzo del modulo PC-RIS.
PC-Sim al momento della stampa di questo manuale simula i seguenti PLC:
Il modulo PL-Sim
PL-Sim è il modulo di AW-SYS dedicato alla simulazione di impianti e permette la realizzazione di svariate
esercitazioni.
Gli impianti di PL-Sim, tutti di grande valenza didattica, costituiscono un'alternativa o un'integrazione ai
banchi di simulazione e pongono l'utilizzatore di fronte a varie problematiche nel campo dell'automazione,
spesso impossibili da ricostruire con altri strumenti in laboratorio.
Gli impianti di PL-Sim possono essere pilotati direttamente dai PLC simulati di PC-Sim o, tramite il modulo
PL-RIS, dai PLC reali di qualsiasi marca presenti nel vostro laboratorio. Attraverso PL-RIS, essi potranno
essere pilotati anche da sistemi a microprocessore, microcontrollori, schede elettroniche o quadri elettrici in
logica cablata.
Al momento della stampa di questo manuale sono in distribuzione i seguenti impianti:
• Elettropneumatica 1: banco di elettropneumatica con 3 cilindri doppio effetto e distributori 5/2 bistabili.
• Elettropneumatica 2: banco di elettropneumatica con 3 cilindri doppio effetto e distributori 5/2
monostabili.
• Elettropneumatica 3: banco di elettropneumatica con 3 cilindri semplice effetto e distributori 3/2
monostabili.
• Automazione cancello: cancello automatico con comandi del motore, lampeggiatore, finecorsa,
fotocellula e telecomando.
• Controllo livello serbatoio: serbatoio con livellostati di funzionamento e di allarme, valvole di ingresso e
uscita, lampade e sirena d’allarme, registratore di livello.
• Nastri trasportatori: impianto industriale con due nastri trasportatoti, sensori di prossimità e motori trifase
con inversione di marcia.
• Ascensore: impianto civile di ascensore a quattro piani con fotocellule, sensore di peso, pulsanti di
chiamata e mandata e lampade di segnalazione.
• Mixer liquidi: impianto industriale per la produzione di un composto ottenuto attraverso la miscelazione
ed il riscaldamento tre diversi liquidi.
• Incrocio semaforizzato: impianto semaforico stradale per incrocio di due vie con possibilità di
funzionamento automatico, manuale e notturno.
Il modulo PC-RIS
PC-RIS è il modulo di AW-SYS che consente di pilotare gli impianti simulati di PL-Sim con svariati sistemi
hardware, eventualmente già presenti nel vostro laboratorio ma comunque non compresi nel sistema AW-
SYS, quali:
• PLC reali (di qualsiasi marca)
• sistemi a microprocessore
• microcontrollori
• schede elettroniche in logica cablata
• quadri elettrici in logica cablata
• personal computer con schede di I/O.
Il modulo PL-RIS
PL-RIS è il modulo di AW-SYS che consente di collegare i PLC simulati di PC-Sim agli impianti reali o banchi
di esercitazione presenti nel vostro laboratorio.
Per il funzionamento è necessario disporre dei seguenti accessori hardware:
• interfaccia hardware per la connessione 16 ingressi e 16 uscite digitali
• cavo di collegamento alla porta seriale del PC
• n.2 cavi multipolari di collegamento al sistema di controllo reale
Per aumentare il numero di I/O collegabili è possibile interconnettere su ring in fibra ottica fino ad un
massimo di 8 interfacce.
Il modulo PL-Lab
Ulteriore componente del mondo AW-SYS è PL-Lab, driver di interfaccia tra PC-Sim o PC-RIS e InTouch.
Esso permette il collegamento dei PLC simulati di PC-Sim o di quelli reali, attraverso PC-RIS, con il noto
pacchetto di supervisione della WonderWare, per mezzo del quale potrete costruire nuove finestre di
simulazione di impianti.
PL-Lab contiene inoltre il sorgente di un impianto prototipo ed alcuni esempi applicativi di impianti realizzati
con InTouch.
Il modulo PL-Net
PL-Net è il modulo di AW-SYS che consente il controllo di un impianto reale, avente un elevato numero di
ingressi/uscite, per mezzo di più PLC simulati in esecuzione su altrettanti personal computer collegati in rete.
Con PL-Net, inoltre, i diversi PLC simulati possono condividere informazioni, sotto forma di word globali,
permettendo così la sincronizzazione delle diverse parti di impianto controllate dai diversi PLC.
PL-Net consente quindi l'organizzazione di un laboratorio di automazione flessibile in cui ciascuno degli
allievi, o gruppo di allievi, potrà dedicarsi alla programmazione dell'automazione di una parte di impianto per
poi verificare il risultato con gli altri. Successivamente i compiti potranno essere scambiati, anche
continuando a lavorare con lo stesso PC.
Guida in linea
Oltre al presente manuale potrete consultare in caso di dubbi la Guida in linea di PC-Sim o quelle degli
impianti di PL-Sim.
E’ possibile accedere alla Guida in linea scegliendo il Comando guida dal Menu File.
Le guide di AW-SYS sono sensibili al contesto: ovvero è possibile accedere a voci specifiche di ogni guida
direttamente selezionando l’elemento su cui si desiderano informazioni e premendo il tasto F1
Sono sensibili al contesto:
In diverse finestre è attiva anche la funzione di Guida rapida che vi consente di ottenere velocemente
informazioni su uno specifico componente di una finestra. Per attivare questa funzione scegliete il comando
Guida rapida dal Menu ?, oppure premete Maiusc+F1, e fate clic sull’elemento su cui desiderate informazioni.
Una finestra popup contenente le informazioni richieste verrà mostrata a video.
L’attivazione di questa modalità di guida viene evidenziata dal fatto che il puntatore del mouse assume lo
stato Guida rapida (freccia con punto interrogativo).
Autoware su Internet
La Autoware mantiene un proprio sito su Internet all’indirizzo:
http://www.autoware.com/
che potrete visitare per scaricare aggiornamenti al vostro software AW-SYS.
L’indirizzo diretto della pagina per il download, che potrete inserire tra i vostri indirizzi preferiti, è:
http://www.autoware.com/italian/support/upgrade.htm
Il sito viene aggiornato con regolarità riportando le novità sul software, le ultime release dei programmi e
nuovi esempi di programmazione. I programmi non in versione dimostrativa potranno essere utilizzati solo dai
possessori di chiave hardware AW-SYS.
Informazioni ulteriori sul software potranno essere richieste per posta elettronica all’indirizzo:
info@autoware.com
Una copia del presente manuale è disponibile in versione elettronica all’interno del CD di AW-SYS, per
consultarlo e stamparlo fate doppio clic su Manuale d'uso all’interno della cartella Italiano\Manuali.
Licenza singola
La confezione contiene:
• una copia del presente Manuale d’uso di AW-SYS in lingua italiana
• la Scheda di registrazione
• un CD d’installazione di AW-SYS
• una chiave hardware
Multilicenza da 6
La confezione contiene:
• due copie del presente Manuale d’uso di AW-SYS in lingua italiana
• la Scheda di registrazione
• due CD d’installazione di AW-SYS
• sei chiavi hardware
Multilicenza da 12
La confezione contiene:
• tre copie del presente Manuale d’uso di AW-SYS in lingua italiana
• la Scheda di registrazione
• due CD d’installazione di AW-SYS
• dodici chiavi hardware
Scheda di registrazione
Provvedete alla compilazione della scheda di registrazione in ogni sua parte e speditela alla Autoware al
seguente indirizzo:
Autoware s.r.l. - Servizio clienti
Questo riscontro consentirà a noi di tenervi informati sugli sviluppi del prodotto ed a voi di usufruire del
servizio di assistenza, secondo quanto specificato nel paragrafo Servizio Supporto Tecnico Utenti AW-SYS.
In alternativa, sul Sito Web della Autoware è attivo il Servizio di Registrazione in Linea all'indirizzo:
http://www.autoware.com/italian/regawsys.htm
Installazione di AW-SYS
Avvio dell'installazione
[drive]:\setup
dove [drive] è la lettera identificativa del vostro lettore di CD-ROM.
Vi viene proposta a questo punto la scelta della cartella in cui installare AW-SYS. Potete accettare il percorso
di default, premendo Continua, o cambiare percorso, digitandone uno nuovo, e quindi premendo Continua. Il
Programma d'installazione di AW-SYS crea automaticamente la cartella specificata.
All’interno di questa vengono create altre cartelle di cui l’utente non può scegliere il nome durante la fase di
installazione e che non deve modificare successivamente. Esse sono:
• Fpc404 contiene i file di PC-Sim per FPC 404
• Ps3 contiene i file di PC-Sim per PS3
• S5100 contiene i file di PC-Sim per S5 100U
• S7300 contiene i file di PC-Sim per S7 300
• Pl-sim contiene i file degli impianti di PL-Sim e dei moduli PL-RIS, PL-Lab e PL-Net
• Pc-ris contiene i file di PC-RIS
le prime tre, a loro volta, contengono un'altra cartella:
Il Programma d'installazione di AW-SYS vi propone inoltre di scegliere se desiderate installare gli esempi
forniti col programma: rispondete selezionando o meno la casella di controllo.
Se siete un insegnante e state caricando il programma sul vostro computer, installate pure gli esempi: vi
daranno immediatamente idea delle potenzialità di AW-SYS. Se, invece, state caricando il programma sui
computer dei vostri allievi, potreste evitare di installare gli esempi, per non fornire loro soluzioni già pronte
alle esercitazioni che proporrete durante l’arco del vostro corso.
Il Programma d'installazione di AW-SYS provvede quindi alla copia dei file necessari al funzionamento di AW-
SYS, nel percorso selezionato e nella directory di sistema di Windows nonché alla creazione dei file di
inizializzazione.
Il Programma d'installazione di AW-SYS crea automaticamente il gruppo AW-SYS e, al suo interno, le icone di
PC-Sim per ogni PLC simulato e l’icona di PC-RIS.
Procedura di installazione
Per installare correttamente AW-SYS in ambiente Windows NT:
• Avviare Windows NT ed effettuare un accesso come 'Amministratore'
• Installare AW-SYS dal CD-ROM
• Al termine dell'installazione, avviare l'utility SKEYADD.EXE (presente nella cartella Winnt del sistema) per
installare la periferica KEYP
• Riavviare il sistema.
Procedura di disinstallazione
Per disinstallare correttamente tutti i componenti di AW-SYS dal sistema:
• Avviare Windows NT ed effettuare un accesso come 'Amministratore'
• Eseguire l'utility SKEYRM.EXE (presente nella cartella Winnt del sistema) per rimuovere la periferica
KEYP
• Eseguire la disinstallazione di AW-SYS secondo la procedura standard di Windows NT.
Procedura di installazione
Per installare correttamente AW-SYS in ambiente Windows 2000:
• Avviare Windows 2000 ed effettuare un accesso come 'Amministratore'
• Installare AW-SYS dal CD-ROM
• Al termine dell'installazione, avviare l'utility SKEYADD.EXE (presente nella cartella Winnt del sistema) per
installare la periferica KEYP
• Riavviare il sistema.
Procedura di disinstallazione
Per disinstallare correttamente tutti i componenti di AW-SYS dal sistema:
• Avviare Windows 2000 ed effettuare un accesso come 'Amministratore'
• Eseguire l'utility SKEYRM.EXE (presente nella cartella Winnt del sistema) per rimuovere la periferica
KEYP
• Eseguire la disinstallazione di AW-SYS secondo la procedura standard di Windows 2000.
Opzioni prestazioni
Quando si utilizza un impianto simulato unitamente ad uno dei PLC simulati, è consigliabile impostare
Windows 2000 in modo che conceda uguali risorse a tutti i programmi. Per fare ciò:
• Fare clic con il pulsante destro su Risorse del computer e scegliere Proprietà
• Visualizzare la scheda Avanzate
• Fare clic su Opzioni prestazioni
• Attivare Servizi in background
• Chiudere facendo clic su OK
Introduzione
Come abbiamo visto nel precedente capitolo, AW-SYS ha una struttura modulare, è costituito cioè da diversi
componenti software a da pochi accessori hardware, ognuno con funzioni specifiche ma perfettamente
integrato con gli altri. PC-Sim costituisce il modulo di AW-SYS dedicato alla simulazione dei Controllori Logici
Programmabili.
Esso simula quattro diversi PLC:
PC-Sim vi consente di editare un programma utente per PLC in linguaggio Ladder o AWL per risolvere un
esercizio di automazione, basato eventualmente su uno degli impianti di PL-Sim. Quindi potrete trasferire il
programma e farlo ‘girare’ nel PLC simulato e testarlo, utilizzando gli strumenti di debug e lo stato variabili.
Una volta terminato il vostro lavoro, potrete stampare la documentazione di quanto avete realizzato: in
maniera organica verranno presentati su carta il programma, la tabella dei simboli, le liste incrociate ed altro
ancora, come approfondiremo nel paragrafo dedicato a questo argomento.
Per quanto i PLC simulati presentino nella realtà caratteristiche hardware, di sistema e di programmabilità
software molto diverse tra loro, si è cercato di rendere quanto più uniforme possibile l'interfaccia utente di
questo modulo, utilizzando quanto più possibile finestre di programma somiglianti o identiche, con lo scopo di
rendere più semplice il passaggio da un PLC simulato all’altro.
A questo principio generale fanno però decisamente eccezione la Finestra Lista blocchi (S5 100U e S7 300)
e la Finestra Impostazioni preset (FPC 404): la prima viene utilizzata solo per il PLC S5 100U, a causa delle
peculiarità nella programmazione strutturata che saranno approfondite più avanti e che lo differenziano dagli
altri due; la seconda è richiamabile soltanto utilizzando la simulazione del PLC FPC 404, per via della
particolare impostazione dei preset dei temporizzatori e dei contatori di tale PLC.
La finestra di programmazione AWL, utilizzata per una delle modalità di programmazione dei PLC PS3 ed S5
100U, mostra sostanziali differenze nella presentazione e nella flessibilità di utilizzo nei due diversi casi.
Mentre, la finestra di programmazione Ladder, proprio per la maggiore uniformità di questo linguaggio, si
presenta in modo sostanzialmente identico nei tre PLC, eccezion fatta per i diversi tipi di strumenti disponibili
per il disegno in relazione alla diversa implementazione di temporizzatori, contatori, ecc.
La Finestra Tabella dei simboli a la Finestra Stato variabili si presentano in maniera identica, ovviamente ogni
riferimento ad operando effettuato in esse dovrà tener conto delle specifica sintassi che ognuno dei PLC
riconosce come corretta per l’accesso alle variabili di ingresso/uscita e di memoria.
Ancora in maniera identica si presentano la Finestra Informazioni sul progetto e le finestre di dialogo Stampa
documentazione, Trova operando e Sostituisci operando.
Infine, sebbene graficamente offrano la rappresentazione di macchine diverse, le finestre PLC si presentano
in modo sostanzialmente uniforme, grazie alle scelte operate per modelli e composizioni: ogni PLC possiede
infatti 16 canali digitali di ingresso, dotati di LED di segnalazione dello stato ed interruttori di comando, e 16
canali digitali di uscita, anch’essi dotati di LED di segnalazione. Alcune differenze comunque si presentano
(anche nelle macchine reali) nel numero dei canali analogici.
In questo capitolo affrontiamo la descrizione contemporanea dei simulatori dei tre PLC. Verranno sempre
specificate, ove necessario, le loro differenze rispetto all’argomento in esame, menzionando tra parentesi i
modelli dei PLC simulati ai quali si applicano le considerazioni che si stanno facendo; se nessun PLC viene
specificato le considerazioni si applicheranno a tutti e tre i modelli.
Se non si possiede già sufficiente pratica con il PLC reale corrispondente, converrà integrare quanto detto in
questo capitolo con ciò che è riportato in quelli dedicati alla programmazione e, eventualmente, con quanto
riportato nei manuali della casa costruttrice del dispositivo reale.
Quando non diversamente specificato, per ‘PLC’ in questo capitolo si intenderà il PLC simulato e non
l’apparecchiatura reale.
Composizione di un progetto
Tutto il lavoro sviluppato utilizzando in PC-Sim è organizzato in progetti. Un progetto contiene:
• il programma utente (in linguaggio AWL, ladder o entrambi);
• i simboli e le loro associazioni con gli operandi assoluti;
• l’elenco delle variabili in stato;
• le informazioni sul progetto;
• le impostazioni di preset (solo FPC 404);
• i testi delle etichette del PLC (solo S5 100U);
• le posizioni e le dimensioni delle finestre Lista blocchi (solo S5 100U), Stato variabili e Tabella dei simboli.
Tutte queste informazioni vengono salvate con il comando Salva Progetto, o con uno dei metodi equivalenti,
in un file con estensione prj e vengono ricaricate alla successiva apertura dello stesso progetto.
Tabella blocchi
La Tabella blocchi contiene la lista dei blocchi presenti nel progetto ed indica per ciascuno il tipo di editor e lo
stato attuale.
Facendo clic su una riga della tabella se ne ottiene la selezione ed il blocco descritto in quella riga diventa
quello attualmente puntato; cioè la selezione della riga funge da puntatore all’interno della tabella. Ogni clic
sui pulsanti della barra inferiore, quando abilitati e con eccezione del pulsante Nuovo, agirà direttamente su
quest’unico blocco. E’ possibile selezionare un solo blocco per volta.
Il puntatore al blocco attuale viene aggiornato automaticamente ogni qualvolta portate in primo piano una
finestra di editor o di debug: al variare della finestra in primo piano, varia corrispondentemente il rigo
selezionato nella tabella.
Quando l’elenco dei blocchi non può essere contenuto interamente nella finestra, PC-Sim mostra
automaticamente una barra di scorrimento sulla destra della tabella che vi consentirà di scorrere il suo
contenuto e di visualizzare e selezionare ogni blocco del progetto.
La tabella è composta dalle seguenti quattro colonne.
Colonna Blocco
Riporta la sigla del blocco.
I blocchi di PC-Sim per S5 100U possono essere di tipo organizzativo (OB0 - OB63), di programma (PB0 -
PB63), funzionali (FB0 - FB63) o dati (DB2 - DB63). Informazioni ulteriori sulle caratteristiche specifiche dei
diversi tipi di blocchi possono essere trovate alla voce Programmazione strutturata nel Capitolo 14.
I blocchi di PC-Sim per S7 300 possono essere di tipo organizzativo (OB0 – OB127), funzione (FC0 – FC127)
o dati (DB2 – DB127). Informazioni ulteriori sulle caratteristiche specifiche dei diversi tipi di blocchi possono
essere trovate alla voce Programmazione strutturata nel Capitolo 16.
Colonna Editor
Riporta il tipo di linguaggio utilizzato per la programmazione del blocco con i seguenti significati:
• AWL linguaggio AWL (Lista istruzioni)
• Ladder linguaggio Ladder diagram (Schema a contatti)
• Dati nessun linguaggio, il blocco è di tipo dati.
Colonna Stato
Riporta lo stato attuale del blocco. Esso si può trovare in uno dei tre seguenti stati:
Colonna Commento
Riporta il testo di commento al blocco, così come digitato nella creazione del blocco medesimo (vedere
Pulsante Nuovo più avanti). Per modificare il testo di commento, selezionate il blocco nella tabella e premete
il Pulsante Rinomina.
Barra pulsanti
La parte inferiore della Finestra Lista blocchi è costituita dalla barra pulsanti.
Facendo clic su questi pulsanti si possono compiere azioni sui blocchi, in particolare su quello puntato
correntemente. I pulsanti vengono disabilitati singolarmente quando l'azione ad essi collegata risulta
impossibile o priva di senso in quel dato momento o contesto. In alternativa ai pulsanti potete usare i
comandi del Menu di scelta rapida attivabile facendo clic col pulsante destro del mouse sulla tabella.
Pulsante Nuovo
Consente di creare un nuovo blocco e di aprirne il relativo editor. Facendo clic su questo pulsante viene
mostrata la finestra di dialogo Nuovo blocco. In essa inserite la sigla del blocco, fate clic se necessario sul
pulsante opzione per scegliere il tipo di editor del blocco da creare (AWL o Ladder), facoltativamente inserite
un testo di commento nella casella dedicata. Quindi premete Crea per aprire l’editor del nuovo blocco e
aggiungere il suo nome all’elenco nella Tabella blocchi. I blocchi vengono automaticamente ordinati in
relazione al tipo: prima gli OB, poi i PB, quindi gli FB e gli FC ed infine i DB. All’interno di ogni gruppo
l’ordinamento viene effettuato nel senso crescente del numero del blocco.
Quando inserite la sigla di un blocco dati nessuna importanza verrà data alla selezione dell'Editor da parte di
PC-Sim e verrà aperto, in ogni caso, l’editor dati.
Non è consentito creare un blocco che abbia la stessa sigla di un altro già presente nel progetto. Tale
operazione viene segnalata da PC-Sim con un messaggio di errore.
Metodi equivalenti per creare un nuovo blocco sono:
• scegliere il Comando Nuovo blocco (S5 100U e S7 300) dal Menu File;
• fare clic sul pulsante Nuovo blocco della Barra strumenti di PC-Sim;
• premere la combinazione di tasti Ctrl+N.
Il pulsante Nuovo è disabilitato quando il PLC si trova in Run.
Pulsante Codice
Questo pulsante consente la visualizzazione del codice del blocco selezionato nella tabella, aprendone il
relativo editor. Facendo clic su questo pulsante viene aperto il tipo di editor previsto per il blocco (AWL,
Ladder o dati) e viene direttamente caricato e mostrato il codice come presente nella memoria di
programma.
Il pulsante Codice risulta disabilitato quando il progetto corrente non contiene alcun blocco.
Un metodo equivalente per aprire un blocco esistente è scegliere il Comando Apri blocco (S5 100U e S7 300)
dal Menu File.
Se desiderate aprire contemporaneamente tutti i blocchi che compongono il vostro progetto, evitando di
ripetere per tutti la selezione ed il clic, qualsiasi sia il blocco selezionato, premete e mantenete il tasto Maiusc
e fate clic sul Pulsante Codice, quindi rilasciate. Tutti i blocchi del vostro progetto verranno aperti e disposti in
cascata sullo schermo.
Pulsante Debug
Un clic su questo pulsante vi permette di passare al debug sul blocco selezionato nella Tabella blocchi. Con
PC-Sim è possibile attivare il debug su quanti blocchi desiderate, contemporaneamente! (Vedere in merito
Debug nelle finestre Ladder e Debug nelle finestre AWL)
Il debug sul blocco può essere disattivato in qualsiasi momento facendo clic sul Pulsante Codice.
L'elaborazione del debug, su uno o più blocchi, impegna il processore del vostro computer in un ulteriore
compito e può provocare rallentamenti, talvolta sensibili, nell'esecuzione del programma, specie se il numero
di blocchi in debug è elevato. Pertanto, quando non più necessario, disabilitate questa funzionalità facendo
riguadagnare all’elaborazione la sua velocità originale.
Il pulsante Debug viene abilitato soltanto quando la CPU del PLC è alimentata (vedere i comandi del Menu
CPU).
Pulsante Rinomina
Il pulsante Rinomina vi consente di cambiare la sigla o il testo del commento di un blocco, o entrambi.
Per rinominare: selezionate nella Tabella blocchi il blocco desiderato e fate clic sul pulsante Rinomina. PC-
Sim vi mostra la finestra di dialogo Rinomina blocco. Apportate le modifiche alla casella Blocco e/o alla
casella Commento, quindi fate clic sul pulsante Rinomina. Non è possibile cambiare il tipo di blocco quindi i
pulsanti di opzione relativi risultano disabilitati.
PC-Sim provvede a rinominare il blocco nella Finestra Lista blocchi (S5 100U e S7 300) e nella memoria di
programma. Se avete cambiato la sigla del blocco, vi verrà chiesto se intendete aggiornare tutte le chiamate
al blocco presenti nel programma. Se rispondete affermativamente tutte le istruzioni di chiamata al blocco
rinominato presenti nel programma verranno aggiornate alla nuova sigla.
Esistono alcune limitazioni nella procedura di cambio della sigla di un blocco, infatti non è possibile cambiare
la sigla se:
• un blocco con la nuova sigla esiste già nel progetto;
• il blocco è di tipo dati e si digita la sigla di un blocco di tipo differente;
• il blocco non è di tipo dati e si digita la sigla di un blocco dati;
• il blocco è programmato in ladder e si digita la sigla di un blocco funzionale (S5 100U);
• il blocco è di tipo funzionale e parametrizzato e si digita la sigla di un blocco organizzativo o di programma
(S5 100U);
• il blocco è di tipo funzionale e contiene delle operazioni appartenenti al set integrativo e si digita la sigla di
un blocco organizzativo o di programma (S5 100U).
Chiarimenti a queste limitazioni possono essere trovate in Note sulla programmazione del PLC S5 100U nel
Capitolo 14.
Il pulsante Rinomina è disabilitato quando l'editor del blocco corrente è aperto o quando il PLC è in Run
(vedere i comandi del Menu CPU).
Pulsante Elimina
Utilizzate questo pulsante per eliminare un blocco dal progetto corrente.
Selezionate il blocco nella Tabella blocchi, quindi fate clic sul pulsante Elimina. PC-Sim vi chiede conferma
della vostra intenzione di eliminare il blocco con un'opportuna finestra di dialogo. Se rispondete
affermativamente il blocco verrà eliminato dalla tabella e dalla memoria di programma e, se aperto, l'editor
del blocco verrà chiuso.
Se in altri blocchi sono presenti delle chiamate al blocco da eliminare, PC-Sim vi avvisa con un ulteriore
messaggio di questa occorrenza chiedendovi ancora conferma dell'eliminazione. Se rispondete
affermativamente, il blocco verrà comunque eliminato, ma il programma che avrete scritto conterrà delle
chiamate a blocco inesistente. Se volete ricercare tutte le chiamate al blocco eliminato presenti nel
programma usate il Comando Trova operando... del Menu Modifica, impostando nella casella Trova la sigla
del blocco eliminato.
Il pulsante Elimina è disabilitato quando nel progetto non è presente alcun blocco o il PLC è in stato di Run
(vedere i comandi del Menu CPU).
Un metodo equivalente per eliminare un blocco è scegliere il Comando Elimina blocco dal Menu File.
L’editor Ladder
Premessa
Questa descrizione non è e non può essere una lezione, né tanto meno un corso, sull'utilizzo del linguaggio
ladder per la programmazione dei PLC. Utilizzate testi specializzati o il manuale del programmatore del
vostro PLC reale per apprendere i rudimenti di questo linguaggio. PC-Sim vi consentirà comunque un
apprendimento più veloce per la possibilità che offre di sperimentare immediatamente e semplicemente il
programma realizzato.
Vi saranno molto utili anche gli ultimi capitoli del presente manuale. In essi vengono illustrati i PLC simulati
con riguardo particolare alle loro peculiarità di programmazione e viene fornita un’interessante serie di
esercizi di programmazione risolti e commentati. Ricordate che Autoware è sempre disponibile per
chiarimenti. Le modalità per contattarci sono descritte nel paragrafo dedicato al Servizio Supporto Tecnico
Utenti AW-SYS nel Capitolo 1.
La programmazione in ladder
Il Ladder diagram o Schema a contatti è sicuramente il più diffuso linguaggio di programmazione di PLC.
Esso rappresenta una metodologia di programmazione grafica. Tra due linee verticali, che rappresentano
l’alimentazione, viene disegnato un schema elettrico composto da diversi circuiti disposti in successione. Il
PLC esegue nell’ordine ognuno di essi durante l’elaborazione del programma utente.
L'editor ladder di PC-Sim vi offre la possibilità di scrivere comodamente e rapidamente il programma, unendo
alla velocità delle azioni con il mouse, la potenza dei comandi tipici di editor avanzati: per esempio comandi
taglia, copia e incolla.
Il disegno dello schema avviene utilizzando gli strumenti della Casella strumenti ed i Menu di scelta rapida
attivabili facendo clic con il pulsante destro del mouse all'interno dello schema. La verifica della correttezza
sintattica degli operandi, che potranno essere introdotti anche sotto forma di simbolo, viene effettuata alla
fine di ogni digitazione. Lo stesso editor permetterà, durante l’esecuzione del programma realizzato, la
visualizzazione del debug. Verranno mostrati, con variazioni di colore, contatti chiusi, bobine attive e
circolazione della corrente. La colorazione sarà aggiornata in tempo reale ed in conseguenza dei risultati
dell’elaborazione e delle variazioni dei segnali a campo.
Ulteriori informazioni sulla modalità di programmazione ladder vengono fornite nei paragrafi Programmazione
in ladder nei capitoli sulle note di programmazione dei diversi PLC.
L’editor ladder del nuovo blocco viene aperto e la sigla di quest’ultimo viene aggiunta nella Tabella blocchi.
All'apertura della finestra di editor vi viene proposto, già inserito, un primo percorso di corrente in cui è
presente la sola bobina.
Un metodo equivalente per chiudere il blocco consiste nel premere la combinazione di tasti Alt+F4.
Casella strumenti
La Casella strumenti contiene gli 'attrezzi' che vi consentono di disegnare comodamente e rapidamente il
vostro schema Ladder. La selezione dello strumento da utilizzare si effettua facendo clic su di esso.
Quando create un nuovo blocco ladder (S5 100U e S7 300) o quando create un nuovo progetto ladder (FPC
404 e PS3), PC-Sim provvede automaticamente ad aprire la casella. Quando aprite un blocco Ladder
esistente con l'intenzione di modificarlo, richiamate la Casella strumenti con uno dei seguenti metodi:
• scegliete il Comando Casella strumenti dal menu Finestra;
• fate clic sul pulsante Casella strumenti della Barra strumenti di PC-Sim;
• fate clic su uno degli elementi dello schema con il pulsante destro e scegliete il comando Casella
strumenti dal Menu di scelta rapida che compare.
La Tabella 1 mostra l’elenco dei pulsanti disponibili per ogni PLC con una breve descrizione.
Selezione di percorso
Costruzione di parallelo
Bobina diretta
Bobina inversa
Bobina di set
Bobina di reset
Bobina di incremento
Bobina di decremento
Bobina di preset
Temporizzatore
Temporizzatore impulso SI
Contatore
Registro a scorrimento
Comparatore
Salto incondizionato
Introduzione di un contatto NA o NC
Nella Casella strumenti selezionate lo strumento di disegno contatti normalmente aperti o quello di disegno
contatti normalmente chiusi. Posizionate quindi il puntatore del mouse nell’editor ladder puntando la
posizione di introduzione. A questo punto fate clic per ottenere la scrittura del contatto.
Dopo la prima scrittura, la funzione di introduzione del contatto da voi scelta rimane attiva per permettervi
inserimenti multipli successivi in modo estremamente veloce: è sufficiente che continuiate a puntare e fare
clic.
Contatti normalmente aperti o chiusi possono essere posizionati solo nelle prime cinque posizioni di ogni
ramo. Dopo l’introduzione di un contatto, il campo operando viene automaticamente visualizzato ed il
puntatore di inserimento testo viene già posizionato su di esso per permettervi l'immediato inserimento della
sigla. Potrete digitare subito l'operando relativo al contatto appena introdotto, oppure continuare a disegnare i
contatti e poi inserire tutti gli operandi, a voi la scelta.
Altrettanto semplice è sovrascrivere un tipo di contatto con l'altro, per esempio, trasformare un contatto NA in
uno NC. Ancora una volta basterà selezionare lo strumento del contatto da inserire e poi fare clic sulla
posizione del contatto da sovrascrivere. La sovrascrittura di un contatto non modifica l’operando.
La scrittura o sovrascrittura di un contatto può essere effettuata anche utilizzando i Menu di scelta rapida,
facendo clic col pulsante destro del mouse sulla posizione di inserimento desiderata e quindi scegliendo
l’opportuna voce di menu.
Cancellazione di contatti
Selezionate lo strumento di cancellazione nella Casella strumenti e quindi fate clic sul contatto da cancellare.
Sia il contatto che l’operando associato vengono eliminati dallo schema.
Anche in questo caso l’operazione può essere effettuata richiamando, come già descritto, il menu di scelta
rapida sul contatto da cancellare.
Sovrascrittura di bobine
Nell’ultima posizione di ogni nuovo percorso generato nell’editor ladder viene automaticamente inserita la
bobina di default: quella diretta. Se avete bisogno di un altro tipo di bobina (inversa, set, reset, incremento o
decremento a seconda del PLC che state utilizzando) selezionate lo strumento del tipo di bobina che
desiderate e poi, nello schema, fate clic sulla bobina che intendete cambiare. L’operazione di sovrascrittura
di bobina non modifica l’operando.
Anche in questo caso l’operazione può essere effettuata richiamando, come già descritto, il Menu di scelta
rapida sulla bobina da cambiare.
L’introduzione della sigla di un operando nell’editor ladder si effettua nel campo operando, subito al di sopra
del rispettivo elemento: contatto, bobina, temporizzatore, ecc. Quando è presente un elemento di schema ma
il relativo operando non è ancora stato digitato, il campo appare con sfondo grigio chiaro, per ricordarvi che
l'operazione di inserimento non è completa. Per introdurre l'operando fate clic sul campo, digitate la sigla
dell'operando assoluto o del simbolo a cui l'elemento sottostante si riferisce e premete Invio. Consultate i
capitoli dedicati alle note di programmazione dei PLC per un elenco degli operandi assoluti validi.
L’operando inserito viene convertito automaticamente, se necessario, nella modalità di visualizzazione
corrente: cioè, ad esempio, se è attiva la visualizzazione simboli ed inserite un operando assoluto, questo
verrà sostituito dal corrispondente simbolo, se ne esiste uno. Il contrario accade se è attiva la visualizzazione
degli operandi assoluti e digitate un simbolo dichiarato nella Tabella simboli.
L’introduzione di un operando assoluto errato o di un simbolo non dichiarato viene segnalata, al
completamento della digitazione, con il passaggio del testo a caratteri rossi.
Potete muovervi velocemente da un operando all'altro: in avanti premendo il tasto Invio o il tabulatore,
indietro premendo la combinazione di tasti Maiusc+Tab.
L’editor ladder di PC-Sim vi aiuta nel velocizzare la fase di inserimento degli operandi e quindi della scrittura
del programma: ogni volta che inserite un nuovo elemento il cursore di inserimento testo si posiziona
automaticamente nel campo operando di quest’ultimo. Vi basterà quindi digitare il nome dell’operando
immediatamente dopo aver introdotto l’elemento.
L’introduzione o la variazione di un operando porta automaticamente alla selezione della funzione di
Selezione di percorso nella Casella strumenti.
Per aggiungere un nuovo percorso selezionate uno degli strumenti di inserimento contatti nella Casella
strumenti e, successivamente, fate clic sulla prima riga vuota alla fine dello schema, in una delle prime
cinque posizioni di inserimento. Otterrete così la scrittura di un nuovo percorso, già provvisto della bobina e
del contatto che avete scelto nella posizione cliccata. Oppure, selezione nella Casella strumenti uno degli
strumenti di inserimento bobine e fate clic sulla prima riga vuota alla fine dello schema nell’ultima posizione di
inserimento.
Se non fosse visibile il primo rigo libero dell'editor dopo l'ultimo percorso, scrollate la finestra utilizzando la
barra di scorrimento.
Metodi alternativi per aggiungere un percorso alla fine dello schema sono:
• fare clic col pulsante destro su uno dei numeri di percorso e scegliete il comando Aggiungi dal Menu di
scelta rapida
• scegliere il Comando Aggiungi dal Menu Modifica
Per inserire un nuovo percorso in una specifica posizione dello schema ladder che state disegnando,
selezionate il percorso prima del quale desiderate inserire, facendo clic con il pulsante destro sul suo numero
identificativo, e scegliete il comando Inserisci dal Menu di scelta rapida: un nuovo percorso verrà inserito
nella posizione cliccata ed i successivi verranno rinumerati e scalati verso il basso.
In alternativa, selezionate il percorso facendo clic sul suo numero identificativo e scegliete il Comando
Inserisci dal Menu Modifica.
Selezionate lo strumento desiderato nella Casella strumenti e quindi fate clic nella posizione di inserimento
nell’editor ladder. Sono permesse solo le posizioni dalla 2 alla 4.
Il percorso non deve avere rami in parallelo né paralleli di bobine.
Creazione di rami di ingresso e di uscita a moduli di sistema (PS3) o temporizzatori e contatori (S5
100U e S7 300)
Quando inserite un temporizzatore in uno schema ladder, il ramo su cui avete inserito verrà diviso in due: la
parte sinistra fungerà da ramo di ingresso per il terminale di set e la parte destra da ramo di uscita del
temporizzatore stesso. Analoghe considerazioni possono essere effettuate per l’inserimento di contatori o
degli altri moduli di sistema per il PS3.
Se avete bisogno di utilizzare gli altri ingressi o le altre uscite (ove esistenti) dovrete creare, per ognuno di
essi, un ramo di ingresso o uscita al modulo.
Per creare un ramo di ingresso, selezionate uno degli strumenti di inserimento contatti e poi fate clic sullo
schema ladder, alla sinistra del modulo, in corrispondenza dell’ingresso che desiderate inserire. Otterrete
così l'inserimento di un nuovo ramo d'ingresso, già provvisto del contatto che avete scelto nella posizione
cliccata.
Allo stesso modo, per creare un ramo di uscita ad un modulo, selezionate uno degli strumenti di inserimento
bobine quindi fate clic sull’editor in corrispondenza dell’ultima posizione di inserimento e della riga di uscita al
modulo che desiderate creare.
Un metodo equivalente consiste nello scegliere tra i comandi presenti nel Menu di scelta rapida, che
compare facendo clic con il pulsante destro sul modulo, quello che corrisponde all'azione che intendete
compiere.
Per cancellare rami di ingresso o uscita ad un temporizzatore o contatore (S5 100U e S7 300) o ad un
modulo di sistema (PS3), selezionate lo strumento di cancellazione nella Casella strumenti e quindi fate clic
sul ramo da cancellare.
Se la posizione che avete cliccato sull'editor Ladder non contiene alcun contatto, si otterrà l'immediata
eliminazione del ramo; se, invece, la posizione contiene un contatto, al primo clic si otterrà la cancellazione
del contatto ed occorrerà un secondo clic per la completa eliminazione del ramo.
Un metodo equivalente consiste nel richiamare il menu di scelta rapida facendo clic con il pulsante destro sul
modulo e scegliendo tra i comandi presenti in esso quello corrispondente alla cancellazione che intendete
effettuare.
Cancellazione di un percorso
Per cancellare un intero percorso, selezionate lo strumento di cancellazione nella Casella strumenti e quindi
fate clic sul numero identificativo del percorso, alla sinistra di esso. PC-Sim eliminerà il percorso e
provvederà a scalare ed a rinumerare progressivamente i seguenti. L'eliminazione di un intero percorso
comporta l'eliminazione del ramo base e di tutti i rami paralleli ad esso collegati.
In alternativa:
• attivate il Menu di scelta rapida sul numero di percorso e scegliete il comando Elimina
oppure:
• selezionate il percorso e scegliete il Comando Elimina dal Menu Modifica.
Selezionate lo strumento di cancellazione nella Casella strumenti quindi fate clic sul temporizzatore o
contatore (S5 100U e S7 300) o sul modulo di sistema (PS3) da eliminare. PC-Sim provvederà a cancellare il
modulo e tutti i rami di ingresso e di uscita successivi al primo ad esso collegati.
Se volete eliminare il modulo e tutti i rami, primo compreso, comportatevi come descritto nel paragrafo
Cancellazione di un percorso.
Alternativamente, e come sempre, utilizzate il menu di scelta rapida del modulo, scegliendo il comando
Elimina.
Con PC-Sim è possibile compiere operazioni di editing su interi percorsi. I comandi del menu Modifica, o
quelli dei Menu di scelta rapida sui numeri di percorso, permettono infatti di tagliare, copiare ed incollare
percorsi in uno stesso programma Ladder, o tra blocchi ladder diversi dello stesso progetto (S5 100U e S7
300) o di progetti diversi.
Le operazioni si effettuano sul percorso selezionato, cioè quello circondato da una cornice di colore blu. Per
selezionare un percorso fate clic con il pulsante sinistro del mouse sul numero identificativo dello stesso. Un
altro clic sullo stesso numero elimina la selezione.
Per ulteriori informazioni sulle operazioni di editing su percorsi vedere le descrizioni riportate per il Menu
Modifica e quanto detto per i Menu di scelta rapida.
Per creare un ramo parallelo, selezionate lo strumento per la creazione di paralleli nella Casella strumenti,
quindi premete il pulsante sinistro del mouse sul ramo da parallelare in corrispondenza della posizione
iniziale di costruzione del parallelo e, mantenendo la pressione, trascinate il puntatore del mouse fino alla
posizione finale. Quindi rilasciate il pulsante del mouse.
Durante il trascinamento PC-Sim disegna, con linee tratteggiate, la forma del costruendo parallelo per
aiutarvi nell’operazione.
Leggete il paragrafo Limitazioni dell’editor ladder per avere informazioni circa le restrizioni dell’operazione di
costruzione di un ramo parallelo.
Per parallelare una bobina, selezionate lo strumento di creazione di paralleli nella Casella strumenti e poi fate
clic sulla bobina da parallelare. PC-Sim provvede a disegnare il parallelo e ad inserire su di esso la bobina di
default: quella diretta. Se desiderate un altro tipo di bobina comportatevi secondo quanto descritto in
precedenza nel paragrafo Sovrascrittura di bobine. PC-Sim posiziona immediatamente il cursore di
inserimento testo sull'operando della bobina appena inserita per permettervi una rapida scrittura
dell'operando.
Fate riferimento al paragrafo Limitazioni dell’editor ladder per informazioni circa le restrizioni dell’operazione
di parallelo di una bobina.
Per cancellare un ramo parallelo selezionate lo strumento di cancellazione nella Casella strumenti, quindi fate
clic sul ramo parallelo da eliminare.
Se la posizione che avete cliccato non contiene alcun contatto, si otterrà l'immediata eliminazione del
parallelo. Se, invece, la posizione contiene un contatto, al primo clic si otterrà la cancellazione del contatto ed
occorrerà un secondo clic per l'eliminazione del parallelo.
Fate riferimento al paragrafo Limitazioni dell’editor ladder in questo capitolo per informazioni sui casi in cui è
possibile eliminare un ramo parallelo.
Il menu è composto dai comandi Contatto NA e Contatto NC che permettono di inserire, nella posizione
cliccata, il contatto specificato.
Sono attivi il comando Elimina, che cancella l’elemento cliccato ed il suo operando, ed il comando Inverti, che
inverte il tipo di contatto (da NA a NC e viceversa) senza alterare l’operando.
Un clic col pulsante destro del mouse su una bobina, attiva un menu di scelta rapida composto dai seguenti
comandi:
• Bobina diretta
• Bobina inversa (FPC 404 e PS3)
• Bobina di set
• Bobina di reset
• Bobina di incremento (FPC 404)
• Bobina di decremento (FPC 404)
• Bobina di preset (FPC 404)
• Jump con sottocomandi JP, JC e JCN (PS3)
Essi permettono di trasformare la bobina cliccata nel tipo specificato dal comando scelto.
Scelta rapida su moduli di sistema (PS3) o su temporizzatori e contatori (S5 100U e S7 300)
Facendo clic col pulsante destro del mouse sul numero identificativo di percorso si attiva un menu di scelta
rapida composto dalle seguenti voci.
Dimensione massima
La massima dimensione raggiungibile dallo schema ladder è di 999 rami. Il numero massimo di percorsi
dipenderà quindi da quanti paralleli avete disegnato o da quanti e quali moduli di sistema (PS3), o quanti
temporizzatori e contatori (S5 100U e S7 300) avete inserito ma, in ogni caso, non potrà superare 999.
Rami paralleli
Un ramo parallelo non può essere tracciato se si verifica una delle seguenti condizioni:
• sul percorso esiste un modulo di sistema (PS3) o un temporizzatore o un contatore (S5 100U e S7 300);
• il ramo base possiede già quattro rami in parallelo e si tenta di disegnare il quinto;
• si sta tentando di tracciare un parallelo su un ramo, che è già un parallelo, bypassando un collegamento
verso il ramo superiore;
• il ramo ha già un parallelo nella posizione iniziale di disegno del nuovo parallelo;
• è stata raggiunta la dimensione massima del programma ladder.
Un ramo parallelo può essere eliminato se non si verifica nessuna delle condizioni seguenti:
• il ramo possiede a sua volta un altro parallelo;
• il ramo parallelo da eliminare possiede ancora contatti.
Parallelo di bobina
Una bobina non può essere parallelata se si verifica una delle seguenti condizioni:
• la bobina base possiede già quattro bobine in parallelo e si tenta di inserire la quinta;
• la bobina è collegata all’uscita di un modulo di sistema (PS3);
• è stata raggiunta la dimensione massima del programma ladder.
L'attivazione della funzione di debug impegna il processore del vostro computer in un ulteriore compito, con
conseguente rallentamento del sistema, soprattutto con CPU non molto potenti. Ricordate di disabilitare
questa funzione quando non è più necessaria, per consentire ad PC-Sim di 'girare' a velocità normali. D'altro
canto, in fase di debug, è quasi sempre necessario un rallentamento delle velocità, proprio per meglio
osservare il comportamento dell'impianto e meglio comprendere eventuali difetti nel programma che avete
realizzato. Quindi, con ogni probabilità, risulterà conveniente diminuire ancora la velocità degli impianti o
procedere passo-passo quando possibile, come spiegato nel Capitolo 4 dedicato a PL-Sim.
Premessa
Questa descrizione non è e non può essere una lezione, né tanto meno un corso, sull'utilizzo del linguaggio
AWL per la programmazione dei PLC. Utilizzate testi specializzati o il manuale del programmatore del vostro
PLC reale per apprendere i rudimenti di questo linguaggio. PC-Sim vi consentirà comunque un
apprendimento più veloce per la possibilità che offre di sperimentare immediatamente e semplicemente il
programma realizzato.
Vi saranno molto utili anche gli ultimi capitoli del presente manuale. In essi vengono illustrati i PLC simulati
con riguardo alle loro peculiarità di programmazione e viene fornita un’interessante serie di esercizi di
programmazione risolti e commentati. Ricordate che Autoware è sempre disponibile per chiarimenti. Le
modalità per contattarci sono descritte nel paragrafo dedicato al Servizio Supporto Tecnico Utenti AW-SYS.
La programmazione in AWL
Il linguaggio AWL o STL o Lista istruzioni è una delle modalità più diffuse di programmazione dei PLC.
Scrivere un programma AWL vuol dire digitare una serie di istruzioni, ognuna delle quali rappresenta un
compito elementare, che la CPU del PLC eseguirà in sequenza. Ogni istruzione occupa un solo rigo di
programma ed ogni rigo contiene una sola istruzione.
La scrittura di istruzioni all’interno dell’editor AWL avviene in maniera sequenziale, ogni istruzione occupa un
solo rigo e non è consentito lasciare righi vuoti. PC-Sim provvede a scalare automaticamente di posto
un’istruzione scritta lasciando uno o più righi vuoti prima di essa.
Ogni rigo dell’editor è identificato da un numero progressivo a tre cifre: il massimo numero di righi che l’editor
può contenere è quindi 1000, da 000 a 999.
Per introdurre un’istruzione, portate il cursore sul primo rigo vuoto dell’editor e digitatene il codice, senza
preoccuparvi di lasciare spazi di separazione, e concludete premendo Invio. PC-Sim provvede a formattare
l’istruzione appena digitata, separando ed allineando operazioni ed operandi per una lettura più comoda. Il
cursore viene quindi posizionato sul rigo successivo, per consentirvi l’immediata digitazione dell’istruzione
seguente.
L’operando inserito viene convertito automaticamente, se necessario, nella modalità di visualizzazione
corrente: cioè, ad esempio, se è attiva la visualizzazione simboli ed inserite un operando assoluto, questo
verrà sostituito dal corrispondente simbolo, se ne esiste uno; il contrario accade se è attiva la visualizzazione
degli operandi assoluti e digitate un simbolo dichiarato nella Tabella simboli. Vedere in merito il Comando
Mostra simboli e il Comando Mostra operandi assoluti del Menu Modifica.
Per introdurre un modulo di sistema digitatene la sigla nel primo rigo vuoto e premete Invio; l’editor AWL
inserisce automaticamente in coda a questa istruzione le linee necessarie alla assegnazione degli ingressi e
delle uscite del modulo per il collegamento al programma utente. Completate digitando, ove necessario, le
sigle degli operandi da collegare al blocco.
Per cancellare un’istruzione inserita in precedenza operate in uno dei seguenti modi:
• Posizionate il cursore sull’istruzione da eliminare e scegliete il Comando Elimina dal Menu Modifica
• Posizionate il cursore sull’istruzione da eliminare e premete Ctrl+Y
• Cancellate tutti i caratteri del rigo e premete Invio od uno dei tasti di direzione
Occorre procedere come descritto per la cancellazione di istruzioni eliminando la chiamata al modulo, cioè il
rigo che riporta la sigla dello stesso. L’eliminazione della chiamata eliminerà l’intero modulo, compresi tutti i
righi per la definizione degli ingressi/uscite.
Posizionate il cursore sul rigo dell’editor prima del quale desiderate inserire un rigo vuoto e scegliete il
Comando Inserisci del Menu Modifica oppure digitate Ctrl+I.
Operazioni supportate
L’editor AWL riconosce tutte le operazioni supportate dal PLC reale, l’elenco e la descrizione dettagliata di
esse è fornita nel Capitolo 12 al paragrafo Descrizione delle operazioni.
Le operazioni di inserimento del codice AWL sono completamente e continuamente controllate dall’editor.
Ogni volta che inserite una istruzione, l’editor controlla la correttezza sia dell’operazione che dell’operando e,
in caso di controllo positivo, formatta l’input allineandolo per una comoda lettura. Se, invece, l’istruzione che
avete inserito risulta errata, l’editor non vi consente di cambiare rigo e vi segnala l’errore con un bip.
Premessa
Questa descrizione non è e non può essere una lezione, né tanto meno un corso, sull'utilizzo del linguaggio
AWL per la programmazione dei PLC. Utilizzate testi specializzati o il manuale del programmatore del vostro
PLC reale per apprendere i rudimenti di questo linguaggio. PC-Sim vi consentirà comunque un
apprendimento più veloce per la possibilità che offre di sperimentare immediatamente e semplicemente il
programma realizzato.
Vi saranno molto utili anche gli ultimi capitoli del presente manuale. In essi vengono illustrati i PLC simulati
con riguardo alle loro peculiarità di programmazione e viene fornita un’interessante serie di problemi di
programmazione risolti e commentati. Ricordate che Autoware è sempre disponibile per chiarimenti. Le
modalità per contattarci sono descritte nel paragrafo dedicato al Servizio Supporto Tecnico Utenti AW-SYS.
La programmazione in AWL
Il linguaggio AWL o STL o Lista istruzioni è una delle modalità più diffuse di programmazione dei PLC.
Scrivere un programma AWL vuol dire digitare una serie di istruzioni, ognuna delle quali rappresenta un
compito elementare, che la CPU del PLC eseguirà in sequenza. Ogni istruzione occupa un solo rigo di
programma ed ogni rigo contiene una sola istruzione.
Ognuna di esse è composta da un’operazione e, generalmente, da un operando. L’operazione specifica
l’azione che la CPU deve compiere e l’operando specifica l’oggetto su cui tale azione deve essere compiuta.
L’editor AWL di PC-Sim per S5 100U consente una comoda e rapida introduzione delle istruzioni, anche
grazie alla possibilità di utilizzare comandi di taglia, copia ed incolla. La sintassi di ognuna di esse viene
controllata immediatamente ed il programmatore viene avvisato in caso di errore. Il programma, inoltre, può
essere semplicemente corredato di testi di commento.
Lo stesso editor permetterà, durante l’esecuzione del programma realizzato, la visualizzazione del debug. In
corrispondenza di ogni rigo, verranno visualizzate informazioni sui registri principali del PLC e sullo stato degli
operandi. Queste saranno aggiornate in tempo reale ed in conseguenza dei risultati dell’elaborazione e delle
variazioni dei segnali a campo.
Nel Capitolo 14 è riportato un dettagliato elenco delle operazioni supportate da questo PLC e degli operandi
ammissibili per ognuna.
Le tre procedure sono equivalenti ed a tutte PC-Sim da seguito mostrando la finestra di dialogo Nuovo
blocco. Digitate la sigla del blocco da creare, scegliete come editor di blocco da adottare il tipo AWL,
facoltativamente inserite un testo di commento al blocco e, infine, premete il pulsante Crea.
Se la sigla digitata è valida ed il blocco non è già presente nel progetto, esso viene aggiunto nella Tabella
blocchi e l’editor AWL viene aperto.
Composizione di un’istruzione
Ogni istruzione in codice AWL è composta da una operazione e, generalmente, da un operando sul quale
l’operazione agisce. Esistono comunque alcune operazioni che non necessitano di operando o nelle quali
l’operando da utilizzare è implicito e quindi non è necessario menzionarlo.
Per informazioni sulle operazioni implementate in questa simulazione e sugli operandi che supportano
consultate il paragrafo Programmazione in AWL nel Capitolo 14.
Scrivere del codice AWL con PC-Sim è una cosa semplicissima e, come tale, non richiede tanti commenti.
Posizionate il puntatore di inserimento testo nell’editor AWL, facendo clic su di esso, ed iniziate a scrivere il
vostro programma senza preoccuparvi di lasciare spazi, di usare tabulazioni di inserire in maiuscolo o
minuscolo. Provvede a tutto l’editor di PC-Sim! Unico avvertimento: ricordate di andare accapo premendo
Invio dopo ogni istruzione inserita.
Ogni volta che completate l'inserimento di un'istruzione l'editor provvede a formattare correttamente il testo
inserito, regolando le spaziature, incolonnando operazioni ed operandi e riportandone il testo in caratteri
maiuscoli.
Introduzione di etichette
Ogni rigo di un programma AWL in un blocco funzionale (FB) può essere contrassegnato da una etichetta.
L’etichetta è una stringa alfanumerica lunga al massimo quattro caratteri, di cui il primo necessariamente
alfabetico, che trova posto all’inizio del rigo alla sinistra del carattere ‘:’. Le etichette contraddistinguono le
posizioni di arrivo di un’istruzione di salto.
Quando desiderate inserire un’etichetta sul rigo corrente, digitatene la sigla e quindi il carattere ‘:’ e,
facoltativamente, fate seguire l’istruzione e terminate premendo Invio. Ancora una volta, l’editor AWL di PC-
Sim provvede a formattare il rigo appena inserito come visto in precedenza, mostrando l’etichetta in colore
blu.
In ogni rigo dell’editor, contenga o no un’istruzione e/o un’etichetta, è possibile inserire un testo di commento.
Vi basterà digitare un carattere apice (‘) e farlo seguire dal commento e terminare l’operazione premendo il
tasto Invio. Non appena cambiate il rigo corrente, PC-Sim provvede a formattare, oltre alle eventuali
istruzione ed etichetta presenti sul rigo, anche il commento, impostandone la posizione di inizio ed il colore,
che per il commento è il verde.
La posizione iniziale del commento è il margine sinistro, se nel rigo non è presente alcuna istruzione, o una
posizione adeguata a lasciare posto per l’istruzione più lunga (L KM ...). Fa eccezione a questa regola il caso
di istruzione di salto, condizionato o non condizionato, a blocco funzionale, la cui lunghezza può variare con il
numero di parametri presenti. In questo caso la posizione iniziale del commento, se non compatibile con
quanto detto in precedenza, verrà fissata alla fine dell’istruzione.
Utilizzate i comandi Taglia, Copia e Incolla del Menu Modifica o le corrispondenti Scelte rapide da tastiera
Ctrl+X, Ctrl+C e Ctrl+V per tagliare, copiare ed incollare codice nello stesso blocco o da un blocco all'altro
dello stesso progetto o di progetti diversi.
Se inserite una istruzione commettendo un errore sintattico, alla convalida di questa (passaggio a diverso
rigo) l’istruzione errata viene evidenziata in colore rosso. Potrete ancora compiere tutte le azioni che volete su
questo o altri editor ma l’istruzione errata continuerà ad essere mostrata in rosso fino alla sua correzione.
E’ indispensabile quindi dichiarare numero e tipo dei parametri. Per questo scopo l’editor AWL di PC-Sim
fornisce la possibilità di aprire una griglia per la loro definizione. Facendo clic sul pulsante contraddistinto da
un triangolo rovesciato, situato proprio al di sopra della barra di scorrimento, appare la griglia di inserimento
parametri, che inizialmente è vuota.
Per inserire un parametro bisogna specificarne la sigla e la specie. Per alcune specie è necessario
specificare ulteriormente il tipo. Quello del commento è un campo opzionale.
La griglia è costituita da quattro colonne.
Colonna Sigla
In essa deve essere specificata la sigla dell’operando formale che verrà utilizzato nel codice del blocco con le
operazioni che lo prevedono. La sigla può avere una lunghezza massima di quattro caratteri alfanumerici e
deve necessariamente iniziare con un carattere alfabetico. L’inserimento del campo è obbligatorio.
Colonna Specie
In questa colonna viene dichiarata la specie dell’operando formale la cui sigla è alla colonna precedente. Le
possibili specie sono:
• E parametro di ingresso
• A parametro di uscita
• D dato costante
• B parametro blocco
• T temporizzatore
• Z contatore
Colonna Tipo
Per alcune delle specie è necessario fornire l’ulteriore dichiarazione del tipo, che informa il compilatore del
programma utente sul numero di bit del parametro, quando questa informazione non si evinca univocamente
dalla dichiarazione della specie.
Tipi validi per le specie A ed E sono:
• B parametro a bit
• BY parametro a byte
• W parametro a word
Le altre specie non necessitano della dichiarazione del tipo e quindi, per esse, la cella in questa colonna non
deve essere compilata.
Colonna Commento
Questa colonna consente di associare ad ogni parametro un testo di commento per chiarirne l’utilizzo o la
specifica funzione. L’inserimento in essa è facoltativo.
questa condizione selezionate, se necessario, nella Tabella blocchi il blocco da analizzare e fate clic sul
Pulsante Debug.
Il simbolo della matita sulla barra del titolo dell’editor viene sostituito da quello di una lente d'ingrandimento, a
segnalarvi la condizione di blocco in debug. Il commento al blocco nella barra del titolo viene sostituito da
un'indicazione che informa se il blocco è attualmente elaborato, cioè se la CPU del PLC simulato sta
eseguendo il codice del blocco. In effetti, esso potrebbe non essere eseguito se la CPU è in Stop o se non
esiste alcuna chiamata al blocco o se le condizioni per la chiamata non sono soddisfatte in un altro blocco
eseguito.
La visualizzazione normale del blocco sarà sostituita da una griglia formata da tante righe quante sono le
istruzioni e da quattro colonne.
Colonna Istruzione
Riporta le istruzioni che compongono il codice del blocco AWL ed alle quali le celle nelle colonne successive
fanno riferimento.
Colonna RLC
Mostra il risultato logico combinatorio dopo l'elaborazione dell'istruzione sullo stesso rigo. Per chiarimenti
ulteriori vedere il paragrafo Registri nel Capitolo 14.
Colonna Stato/Accu
Questa colonna riporta:
• per operandi a bit, lo stato dell'operando (0 o 1)
• per operazioni di caricamento o trasferimento (L o T) ed in generale per operazioni che coinvolgono
operandi a più bit, il valore degli accumulatori ACCU1 e ACCU2, vedere il paragrafo Registri nel Capitolo
14
• per operazioni di set di temporizzatori (SI, SV, SE, SS, SA), il valore attuale del temporizzatore, espresso
nella base tempi per esso impostata.
Per ulteriori informazioni sugli accumulatori vedere il paragrafo Registri nel Capitolo 14.
Colonna commento
L’ultima colonna riporta l’eventuale commento presente su quel rigo.
Solo le colonne RLC e Stato/Accu sono dinamiche, cioè il loro contenuto varia in relazione all’elaborazione
del programma.
Se portate il PLC in STOP la visualizzazione corrente del debug viene congelata agli ultimi valori elaborati. Il
ritorno del PLC nello stato di OFF riporta automaticamente la finestra nello stato di Edit.
Premessa
Questa descrizione non è e non può essere una lezione, né tanto meno un corso, sull'utilizzo del linguaggio
AWL per la programmazione dei PLC. Utilizzate testi specializzati o il manuale del programmatore del vostro
PLC reale per apprendere i rudimenti di questo linguaggio. PC-Sim vi consentirà comunque un
apprendimento più veloce per la possibilità che offre di sperimentare immediatamente e semplicemente il
programma realizzato.
Vi saranno molto utili anche gli ultimi capitoli del presente manuale. In essi vengono illustrati i PLC simulati
con riguardo alle loro peculiarità di programmazione e viene fornita un’interessante serie di problemi di
programmazione risolti e commentati. Ricordate che Autoware è sempre disponibile per chiarimenti. Le
modalità per contattarci sono descritte nel paragrafo dedicato al Servizio Supporto Tecnico Utenti AW-SYS.
La programmazione in AWL
Il linguaggio AWL o STL o Lista istruzioni è una delle modalità più diffuse di programmazione dei PLC.
Scrivere un programma AWL vuol dire digitare una serie di istruzioni, ognuna delle quali rappresenta un
compito elementare, che la CPU del PLC eseguirà in sequenza. Ogni istruzione occupa un solo rigo di
programma ed ogni rigo contiene una sola istruzione.
Ognuna di esse è composta da un’operazione e, generalmente, da un operando. L’operazione specifica
l’azione che la CPU deve compiere e l’operando specifica l’oggetto su cui tale azione deve essere compiuta.
L’editor AWL di PC-Sim per S7 300 consente una comoda e rapida introduzione delle istruzioni, anche grazie
alla possibilità di utilizzare comandi di taglia, copia ed incolla. La sintassi di ognuna di esse viene controllata
immediatamente ed il programmatore viene avvisato in caso di errore. Il programma, inoltre, può essere
semplicemente corredato di testi di commento.
Lo stesso editor permetterà, durante l’esecuzione del programma realizzato, la visualizzazione del debug. In
corrispondenza di ogni rigo, verranno visualizzate informazioni sui registri principali del PLC e sullo stato degli
operandi. Queste saranno aggiornate in tempo reale ed in conseguenza dei risultati dell’elaborazione e delle
variazioni dei segnali a campo.
Nel Capitolo 16 è riportato un dettagliato elenco delle operazioni supportate da questo PLC e degli operandi
ammissibili per ognuna.
Se la sigla digitata è valida ed il blocco non è già presente nel progetto, esso viene aggiunto nella Tabella
blocchi e l’editor AWL viene aperto.
Composizione di un’istruzione
Ogni istruzione in codice AWL è composta da una operazione e, generalmente, da un operando sul quale
l’operazione agisce. Esistono comunque alcune operazioni che non necessitano di operando o nelle quali
l’operando da utilizzare è implicito e quindi non è necessario menzionarlo.
Per informazioni sulle operazioni implementate in questa simulazione e sugli operandi che supportano
consultate il paragrafo Programmazione in AWL nel Capitolo 16.
Scrivere del codice AWL con PC-Sim è una cosa semplicissima e, come tale, non richiede tanti commenti.
Posizionate il puntatore di inserimento testo nell’editor AWL, facendo clic su di esso, ed iniziate a scrivere il
vostro programma preoccupandovi solo di lasciare uno spazio tra operazione e operando, e senza badare ad
usare tabulazioni o inserire in maiuscolo o minuscolo. Provvede a tutto l’editor di PC-Sim! Unico
avvertimento: ricordate di andare accapo premendo Invio dopo ogni istruzione inserita.
Ogni volta che completate l'inserimento di un'istruzione l'editor provvede a formattare correttamente il testo
inserito, regolando le spaziature, incolonnando operazioni ed operandi e riportandone il testo in caratteri
maiuscoli ove necessario.
Introduzione di etichette
Ogni rigo di un programma AWL può essere contrassegnato da una etichetta. L’etichetta è una stringa
alfanumerica lunga al massimo quattro caratteri, di cui il primo necessariamente alfabetico, che trova posto
all’inizio del rigo alla sinistra del carattere ‘:’. Le etichette contraddistinguono le posizioni di arrivo di
un’istruzione di salto.
Quando desiderate inserire un’etichetta sul rigo corrente, digitatene la sigla e quindi il carattere ‘:’ e,
facoltativamente, fate seguire l’istruzione e terminate premendo Invio. Ancora una volta, l’editor AWL di PC-
Sim provvede a formattare il rigo appena inserito come visto in precedenza, mostrando l’etichetta in colore
blu.
In ogni rigo dell’editor, contenga o no un’istruzione e/o un’etichetta, è possibile inserire un testo di commento.
Vi basterà digitare un carattere apice (‘) e farlo seguire dal commento e terminare l’operazione premendo il
tasto Invio. Non appena cambiate il rigo corrente, PC-Sim provvede a formattare, oltre alle eventuali
istruzione ed etichetta presenti sul rigo, anche il commento, impostandone la posizione di inizio ed il colore,
che per il commento è il verde.
La posizione iniziale del commento è il margine sinistro, se nel rigo non è presente alcuna istruzione, o una
posizione adeguata a lasciare posto per l’istruzione più lunga. Fa eccezione a questa regola il caso di
istruzione di richiamo di funzione parametrizzata, la cui lunghezza può variare con il numero di operandi
attuali passati. In questo caso la posizione iniziale del commento, se non compatibile con quanto detto in
precedenza, verrà fissata alla fine dell’istruzione.
Utilizzate i comandi Taglia, Copia e Incolla del Menu Modifica o le corrispondenti Scelte rapide da tastiera
Ctrl+X, Ctrl+C e Ctrl+V per tagliare, copiare ed incollare codice nello stesso blocco o da un blocco all'altro
dello stesso progetto o di progetti diversi.
Se inserite una istruzione commettendo un errore sintattico, alla convalida di questa (passaggio a diverso
rigo) l’istruzione errata viene evidenziata in colore rosso. Potrete ancora compiere tutte le azioni che volete su
questo o altri editor ma l’istruzione errata continuerà ad essere mostrata in rosso fino alla sua correzione.
Parametrizzazione di funzioni
I blocchi funzione di questo PLC possono essere parametrizzati, cioè in essi è possibile definire variabili
fittizie, chiamati operandi formali, da utilizzare nella scrittura del programma. Quando il blocco viene
richiamato, occorrerà specificare nella chiamata una lista variabili (operandi assoluti o simboli) corrispondenti
per numero e per tipo ai parametri che la funzione prevede. Queste variabili, nell’elaborazione della funzione
parametrizzata, verranno utilizzate al posto degli operandi formali. Questo è quello che accade, per certi
versi, anche in linguaggi ad alto livello per PC quando si chiama un sottoprogramma per cui sono stati definiti
dei parametri.
E’ indispensabile quindi dichiarare numero e tipo dei parametri. Per questo scopo l’editor AWL di PC-Sim
fornisce la possibilità di aprire una griglia per la loro definizione. Facendo clic sul pulsante contraddistinto da
un triangolo rovesciato, situato proprio al di sopra della barra di scorrimento, appare la griglia di inserimento
parametri, che inizialmente è vuota.
Per inserire un parametro bisogna specificarne il nome, la dichiarazione ed il tipo. Quello del commento è un
campo opzionale.
La griglia è costituita da cinque colonne.
Colonna Indirizzo
Viene compilata automaticamente da PC-SIM. Per parametri ad un bit, essa riporta l’indirizzo del parametro;
per quelli a più bit, riporta invece l’indirizzo del primo bit del parametro.
Colonna Nome
In essa deve essere specificata la sigla dell’operando formale che verrà utilizzato nel codice del blocco con le
operazioni che lo prevedono. La sigla può avere una lunghezza massima di sedici caratteri alfanumerici e
deve necessariamente iniziare con un carattere alfabetico. L’inserimento del campo è obbligatorio.
Colonna Dichiarazione
In questa colonna viene dichiarata la specie del parametro il cui nome è alla colonna precedente. Le possibili
dichiarazioni sono:
• in parametro di ingresso
• out parametro di uscita
• in_out parametro di ingresso-uscita
Per i parametri di ingresso ed ingresso-uscita, prima della chiamata della funzione, il valore o lo stato degli
operandi attuali viene ricopiato in quelli formali corrispondenti.
Per i parametri di uscita ed ingresso-uscita, al termine della elaborazione della funzione, il valore o lo stato
degli operandi formali viene ricopiato in quelli attuali corrispondenti.
Colonna Tipo
La specificazione del tipo informa il compilatore del programma utente circa il numero di bit del parametro.
Tipi validi sono:
• BOOL parametro a bit
• BYTE parametro a byte
• WORD parametro a word
• DWORD parametro a doppia word
Colonna Commento
Questa colonna consente di associare ad ogni parametro un testo di commento per chiarirne l’utilizzo o la
specifica funzione. L’inserimento in essa è facoltativo.
eseguendo il codice del blocco. In effetti, esso potrebbe non essere eseguito se la CPU è in Stop o se non
esiste alcuna chiamata al blocco o se le condizioni per la chiamata non sono soddisfatte in un altro blocco
eseguito.
La visualizzazione normale del blocco sarà sostituita da una griglia formata da tante righe quante sono le
istruzioni e da quattro colonne.
Colonna Istruzione
Riporta le istruzioni che compongono il codice del blocco AWL ed alle quali le celle nelle colonne successive
fanno riferimento.
Colonna RLC
Mostra il risultato logico combinatorio dopo l'elaborazione dell'istruzione sullo stesso rigo. Per chiarimenti
ulteriori vedere il paragrafo Registri nel Capitolo 16.
Per ulteriori informazioni sugli accumulatori vedere il paragrafo Registri nel Capitolo 16.
Colonna commento
L’ultima colonna riporta l’eventuale commento presente su quel rigo.
Solo le colonne RLC e Stato/Accu1 Accu2 sono dinamiche, cioè il loro contenuto varia in relazione
all’elaborazione del programma.
Se portate il PLC in STOP la visualizzazione corrente del debug viene congelata agli ultimi valori elaborati. Il
ritorno del PLC nello stato di OFF riporta automaticamente la finestra nello stato di Edit.
Se la sigla digitata è valida ed il blocco non è già presente nel progetto, esso viene aggiunto nella Tabella
blocchi e l’editor di dati viene aperto.
Se rispondete negativamente alla richiesta di salvataggio, le ultime modifiche effettuate non verranno salvate
nella memoria di programma, verranno cioè perse. Se il blocco non era stato mai salvato dalla sua
creazione, l’operazione di chiusura e la scelta di non salvare le modifiche comporteranno la perdita totale del
blocco, che verrà eliminato anche dalla Tabella blocchi.
Un metodo equivalente per chiudere il blocco è premere la combinazione di tasti Alt+F4.
La barra del titolo riporta la sigla ed il commento al blocco, così come digitati al momento della sua creazione
o successivamente modificati.
Tabella dati
La Tabella dati contiene, suddivisi per righe, i dati del blocco e ne permette l’introduzione di nuovi e la
modifica degli esistenti. Le sue dimensioni sono adeguate automaticamente a quelle della finestra. Quando
queste non permettano la visualizzazione completa dei dati, PC-Sim mostra una barra di scorrimento
verticale a destra della tabella.
L’ultimo rigo della tabella è sempre vuoto e consente l’aggiunta di un nuovo dato.
Colonna DW
Il campo in questa colonna non è modificabile dall’utente, come ricorda lo sfondo grigio. PC-Sim inserisce in
esso il numero progressivo della data word, partendo da 0 fino al massimo consentito di 255.
Quando inserite o eliminate righe della tabella, i numeri in questa colonna vengono riordinati
automaticamente.
Colonna Tipo
Specifica il tipo di rappresentazione per il dato contenuto nella colonna successiva. I tipi riconosciuti, tutti a 16
bit, sono:
• KH numero esadecimale
• KF numero decimale con segno
• KT valore di tempo
• KZ valore di conteggio
• KY numero a doppio byte
• KM numero binario
Ogni cella di questa colonna è in realtà una casella combinata a discesa. Cioè potete immettere direttamente
il testo, digitando una delle sigle valide, oppure fare clic sulla freccia a destra per visualizzare l’elenco delle
scelte e selezionarne una.
Colonna Valore
Contiene il valore del dato nella rappresentazione stabilita nella Colonna Tipo. La formattazione del valore
viene effettuata automaticamente. Una modifica al tipo di rappresentazione, specificato nella colonna
precedente, comporta un adeguamento automatico del valore visualizzato. Se nella nuova base ha senso la
rappresentazione del dato corrente, questa viene visualizzata, altrimenti verrà mostrato un valore nullo.
Colonna Commento
In questa colonna è possibile inserire facoltativamente un commento al dato sullo stesso rigo che serva di
chiarimento o che ne rammenti la funzione.
Selettori di rigo
La parte della tabella a sinistra della prima colonna è formata dai selettori di rigo. Essi vi permettono di
selezionare i righi della tabella e, nel contempo, forniscono informazioni sul rigo corrispondente mediante la
visualizzazione di immagini:
rigo di aggiunta
rigo corrente
rigo corrente in editazione
Barra pulsanti
La Barra pulsanti è la parte inferiore della finestra di editor. Essa contiene i pulsanti necessari alle operazioni
di inserimento ed eliminazione di righi di dati, singoli o multipli. Le procedure avviate premendo i pulsanti
agiscono sui righi selezionati.
Per selezionare un singolo dato fate clic sul corrispondente selettore di rigo.
Per selezionare righi multipli contigui: selezionate il primo rigo come appena descritto, quindi premete e
mantenete premuto il tasto Maiusc e fate clic sul selettore dell’ultimo rigo. Tutti i righi dal primo all’ultimo
verranno selezionati e tutti saranno oggetto delle azioni dei pulsanti Elimina ed Inserisci.
E’ possibile, infine, effettuare selezioni multiple di righi non contigui: selezionate il primo quindi premete e
mantenete il tasto Control e fate clic sui selettori dei righi da aggiungere alla selezione, uno alla volta. Un clic
sul selettore di un rigo non selezionato aggiungerà il rigo alla selezione; mentre, un clic sul selettore di un rigo
già selezionato eliminerà il rigo dalla selezione.
Pulsante Elimina
Il pulsante è abilitato solo se esiste una selezione nella tabella. Facendo clic su di esso si ottiene
l’eliminazione dei righi selezionati, la ricompattazione della tabella e la riorganizzazione della numerazione
nella colonna DW.
Pulsante Inserisci
Il pulsante è abilitato solo se esiste una selezione nella tabella. Facendo clic su di esso si ottiene
l’inserimento di uno o più righi vuoti in corrispondenza del primo selezionato, lo spostamento verso il basso
dei righi selezionati e di tutti i successivi e la riorganizzazione della numerazione della colonna DW. E’
possibile inserire più di un rigo per volta solo se la selezione è formata da righi contigui.
Aggiunta di un dato
L’aggiunta di un dato si effettua sul rigo di aggiunta, cioè l’ultimo della tabella che ha campi completamente
vuoti ed è contraddistinto da un asterisco sul selettore di rigo. All’apertura di un nuovo blocco questo è l’unico
rigo presente.
Per aggiungere un dato alla tabella:
• Selezionate, nel rigo di aggiunta, la cella corrispondente alla Colonna Tipo, facendo clic su di essa,
• Digitate la sigla della rappresentazione oppure sceglietela dall’elenco a discesa. Automaticamente verrà
compilata la cella nella colonna DW con il numero progressivo del dato. La selezione passerà alla cella
immediatamente a destra.
• Digitate il valore del dato in maniera congruente con la base specificata e premete Invio. La cella
selezionata diventa ora quella nella Colonna Commento.
• Facoltativamente digitate un testo che serva ad identificare il dato e premete Invio. Se non desiderate
inserire alcun commento, premete soltanto il tasto Invio.
Il dato è aggiunto alla tabella, ed un nuovo rigo di aggiunta viene visualizzato alla fine di essa.
rappresentazione, è selezionabile dall’utente tra le diverse previste. Sono inoltre disponibili funzionalità per
l’inserimento e l’eliminazione di righi singoli o multipli.
I dati così programmati potranno essere indirizzati, in lettura o in scrittura, nei blocchi di programma del
progetto.
Ulteriori informazioni sui blocchi dati e sulle operazioni di accesso ad essi sono disponibili nel Capitolo 16.
Se la sigla digitata è valida ed il blocco non è già presente nel progetto, esso viene aggiunto nella Tabella
blocchi e l’editor di dati viene aperto.
La barra del titolo riporta la sigla ed il commento al blocco, così come digitati al momento della sua creazione
o successivamente modificati.
Tabella dati
La Tabella dati contiene, suddivisi per righe, i dati del blocco e ne permette l’introduzione di nuovi e la
modifica degli esistenti. Le sue dimensioni sono adeguate automaticamente a quelle della finestra. Quando
queste non permettano la visualizzazione completa dei dati, PC-Sim mostra una barra di scorrimento
verticale a destra della tabella.
L’ultimo rigo della tabella è sempre vuoto e consente l’aggiunta di un nuovo dato.
Colonna Indirizzo
Il campo in questa colonna non è modificabile dall’utente, come ricorda lo sfondo grigio. PC-Sim inserisce in
esso il l’indirizzo del dato.
I dati sono organizzati in byte. L’indirizzo e composto da due numeri separati da un punto. Il primo numero
identifica l’indirizzo di byte, il secondo quello di bit. Per dati booleani, in questo campo viene mostrato proprio
l’indirizzo del bit come combinazione del byte a cui appartiene e del bit che lo identifica. Per dati a byte, la
prima parte dell’indirizzo identifica proprio l’indirizzo del byte in questione, mentre l’indirizzo di bit vale sempre
0. Per dati a più byte (word e doppia word), l’indirizzo di byte specifica il primo dei byte che contengono il
dato, l’indirizzo di bit vale 0 anche questa volta.
All’inserimento o all’eliminazione di righe della tabella, gli indirizzi vengono adeguati automaticamente.
Colonna Tipo
Specifica il tipo di dato contenuto nella riga. I tipi riconosciuti sono:
• BOOL dato booleano, 1 bit
• BYTE dato a byte
• WORD dato a word
• DWORD dato a doppia word
Ogni cella di questa colonna è in realtà una casella combinata a discesa. Cioè potete immettere direttamente
il testo, digitando uno dei tipi validi, oppure fare clic sulla freccia a destra per visualizzare l’elenco delle scelte
e quindi selezionarne una.
Colonna Valore
Contiene il valore del dato nella rappresentazione stabilita nella Colonna Tipo. Per valore 0 non effettuare
immissione nella casella premendo Invio.
Colonna Commento
In questa colonna è possibile inserire facoltativamente un commento al dato sullo stesso rigo che serva di
chiarimento o che ne rammenti la funzione.
Selettori di rigo
La parte della tabella a sinistra della prima colonna è formata dai selettori di rigo. Essi vi permettono di
selezionare i righi della tabella e, nel contempo, forniscono informazioni sul rigo corrispondente mediante la
visualizzazione di immagini:
rigo di aggiunta
rigo corrente
rigo corrente in editazione
Barra pulsanti
La Barra pulsanti è la parte inferiore della finestra di editor. Essa contiene i pulsanti necessari alle operazioni
di inserimento ed eliminazione di righi di dati, singoli o multipli. Le procedure avviate premendo i pulsanti
agiscono sui righi selezionati.
Per selezionare un singolo dato fate clic sul corrispondente selettore di rigo.
Per selezionare righi multipli contigui: selezionate il primo rigo come appena descritto, quindi premete e
mantenete premuto il tasto Maiusc e fate clic sul selettore dell’ultimo rigo. Tutti i righi dal primo all’ultimo
verranno selezionati e tutti saranno oggetto delle azioni dei pulsanti Elimina ed Inserisci.
E’ possibile, infine, effettuare selezioni multiple di righi non contigui: selezionate il primo quindi premete e
mantenete il tasto Control e fate clic sui selettori dei righi da aggiungere alla selezione, uno alla volta. Un clic
sul selettore di un rigo non selezionato aggiungerà il rigo alla selezione; mentre, un clic sul selettore di un rigo
già selezionato eliminerà il rigo dalla selezione.
Pulsante Elimina
Il pulsante è abilitato solo se esiste una selezione nella tabella. Facendo clic su di esso si ottiene
l’eliminazione dei dati selezionati, la ricompattazione della tabella e la riorganizzazione degli indirizzi.
Pulsante Inserisci
Il pulsante è abilitato solo se esiste una selezione nella tabella. Facendo clic su di esso si ottiene
l’inserimento di uno o più righi vuoti in corrispondenza del primo selezionato, lo spostamento verso il basso
dei righi selezionati e di tutti i successivi e la riorganizzazione degli indirizzi. E’ possibile inserire più di un rigo
per volta solo se la selezione è formata da righi contigui.
Aggiunta di un dato
L’aggiunta di un dato si effettua sul rigo di aggiunta, cioè l’ultimo della tabella che ha campi completamente
vuoti ed è contraddistinto da un asterisco sul selettore di rigo. All’apertura di un nuovo blocco questo è l’unico
rigo presente.
Per aggiungere un dato alla tabella:
• Selezionare, nel rigo di aggiunta, la cella corrispondente alla Colonna Tipo, facendo clic su di essa,
• Digitare il tipo del dato oppure sceglierlo dall’elenco a discesa e premere Invio.
• Digitare il valore del dato in maniera congruente con il tipo specificato e premere Invio.
• Facoltativamente digitare un testo che serva ad identificare il dato e premete Invio. Se non si desidera
inserire alcun commento, premere soltanto il tasto Invio.
Il dato è aggiunto alla tabella, ed un nuovo rigo di aggiunta viene visualizzato alla fine di essa.
trasparente: vedrete ed userete comodi simboli, mentre il PLC simulato lavorerà sui corrispondenti operandi
assoluti.
I simboli utilizzabili in PC-Sim possono avere una lunghezza di 8 caratteri al massimo (16 con S7 300), il
primo di questi deve necessariamente essere un carattere alfabetico in maiuscolo (da 'A' a 'Z'), gli altri
possono essere sia alfabetici che numerici (da '0' a '9'). Ogni simbolo utilizzato nel programma dovrà essere
preceduto dal carattere '-' (trattino o segno meno) che avvisa il compilatore che l’operando in esame è da
considerare un simbolo e come tale dovrà essere trattato. Con S7 300 i simboli devono venire racchiusi tra
virgolette ma, semplicemente lasciando uno spazio tra operazione ed operando, l’editor provvederà
automaticamente all’inserimento delle virgolette.
Per poter utilizzare i simboli al posto degli operandi assoluti è necessario specificarne la corrispondenza nella
Finestra Tabella dei simboli. Ogni associazione di un operando assoluto ad un simbolo verrà denotata in
seguito come attribuzione.
Tabella simboli
La Tabella simboli mostra la lista delle attribuzioni valide per il progetto. Essa è composta da 100 righe, nelle
quali possono essere inserite altrettante attribuzioni.
Colonna Simbolo
Contiene il simbolo che nella programmazione si userà al posto dell'operando assoluto della prima colonna.
L'inserimento del simbolo in questa colonna avviene tralasciando il carattere iniziale '-', o le virgolette per S7
300, che è necessario utilizzare invece nella scrittura del programma. Se comunque digitate anche il trattino
iniziale, PC-Sim provvederà a toglierlo automaticamente.
Colonna Commento
Contiene un commento descrittivo legato alla funzione dell'operando. L’introduzione in questo campo è
facoltativa.
Selettori di rigo
La parte della tabella a sinistra della prima colonna è formata dai selettori di rigo. Essi vi permettono di
selezionare i righi della tabella e, nel contempo, forniscono informazioni sul rigo corrispondente mediante la
visualizzazione di immagini:
rigo corrente
rigo corrente in editazione
Barra pulsanti
La Barra pulsanti della finestra Tabella dei simboli contiene i pulsanti necessari alle operazioni di inserimento
ed eliminazione di dichiarazioni singole o multiple.
Per selezionare una singola attribuzione fate clic sul selettore di rigo, alla sinistra del rigo della tabella che
contiene la dichiarazione da selezionare.
Per selezionare righi multipli contigui: selezionate il primo rigo come appena descritto, quindi premete e
mantenete premuto il tasto Maiusc e fate clic sul selettore dell’ultimo rigo. Tutti i righi dal primo all’ultimo
verranno selezionati e tutti saranno oggetto delle azioni dei pulsanti Elimina ed Inserisci.
E’ possibile, infine, effettuare selezioni multiple di righi non contigui: selezionate il primo quindi premete e
mantenete il tasto Control e fate clic sui selettori dei righi da aggiungere alla selezione, uno alla volta. Un clic
sul selettore di un rigo non selezionato aggiungerà il rigo alla selezione; mentre, un clic sul selettore di un rigo
già selezionato eliminerà il rigo dalla selezione.
Pulsante Elimina
Utilizzate questo pulsante per eliminare le attribuzioni selezionate dalla lista. Selezionate il rigo o i righi della
tabella contenenti le attribuzioni da eliminare e premete il Pulsante Elimina.
Il pulsante risulta abilitato solo se è presente una selezione nella tabella.
Pulsante Inserisci
Utilizzate questo pulsante per inserire uno o più righi vuoti nella tabella. Selezionate il rigo della tabella prima
del quale si desidera inserire quindi selezionate se necessario ulteriori righi purché contigui e premete il
Pulsante Inserisci.
Viene così creato un numero di righi vuoto pari al numero di righi selezionati ed i successivi vengono spostati
verso il basso. Prestate attenzione al fatto che le attribuzioni che occupano gli ultimi righi della tabella, se
presenti, verranno perse.
Il pulsante risulta abilitato solo se è presente una selezione nella tabella.
Introdurre un'attribuzione
Posizionate il puntatore del mouse su una cella nella colonna dell'operando assoluto e fate clic. Il rigo cliccato
diventa il rigo corrente così come evidenzia il triangolo sul corrispondente selettore di rigo.
Digitate il nome dell'operando assoluto. Appena iniziate l'inserimento, l’immagine sul selettore di rigo da
triangolo si trasforma in matita, indicandovi che il rigo corrente è in editazione.
Completato l'inserimento dell'operando assoluto, premete Invio o la freccia a destra per posizionare il cursore
nel campo successivo. Digitate il simbolo e premete ancora Invio o freccia a destra per passare al campo
commento. Inserite il commento e premete Invio per l'accettazione della attribuzione introdotta. Se corretta,
la dichiarazione viene accettata, altrimenti una finestra di dialogo vi segnalerà l'errore.
PC-Sim controlla l'esattezza della dichiarazione introdotta segnalandovi eventuali errori con i seguenti
messaggi:
• Nella dichiarazione manca l'operando assoluto
• Operando assoluto non corretto
• Nella dichiarazione manca il simbolo
• Operando assoluto già presente
• Operando simbolico già presente
• Attribuzione già presente
Per una spiegazione dettagliata rimandiamo al paragrafo Messaggi di avviso più avanti in questo capitolo.
Non è possibile associare ad un operando assoluto due o più simboli né ad un unico simbolo due o più
operandi assoluti. Perciò l'inserimento delle vostre attribuzioni è controllato dal programma anche dal punto
di vista dell'univocità nei termini appena citati.
Modificare un'attribuzione
Eliminare un'attribuzione
Selezionate l'attribuzione o le attribuzioni da eliminare nella Tabella simboli e premete il pulsante Elimina.
L'attribuzione selezionata viene eliminata e le successive vengono scrollate in alto di una riga.
Importare le attribuzioni
PC-Sim vi consente inoltre di recuperare le attribuzioni che avete già effettuato in un altro progetto ed
aggiungerle alla Tabella simboli di quello corrente. Per fare ciò scegliete il Comando Importa simboli... dal
Menu File e quindi digitate o selezionate il nome del progetto da cui importare nella finestra di dialogo che
viene presentata.
Elimina
Stessa funzionalità del pulsante omonimo.
Inserisci
Stessa funzionalità del pulsante omonimo.
Barra pulsanti
Nasconde o visualizza la Barra pulsanti della finestra Tabella dei simboli. Se vi abituerete ad usare i menu di
scelta rapida la Barra pulsanti non vi servirà più, potrete quindi nasconderla per guadagnare spazio per la
visualizzazione della tabella.
Tabella variabili
La Tabella variabili è organizzata su 100 righe, tante quante le variabili che possono essere messe in stato, e
quattro colonne.
Colonna Simbolo
Mostra, se dichiarato, il simbolo corrispondente all’operando assoluto della prima colonna così come definito
nella Tabella simboli.
Colonna Stato
Ha significato solo per operandi a bit e mostra '0' oppure '1' a seconda che lo stato della variabile nel rigo sia
basso oppure alto.
Se la variabile non è a bit la cella in questa colonna risulterà vuota.
Colonna Base
Questa colonna ha significato solo per operandi a più bit. In essa è possibile impostare il valore della base di
rappresentazione della quantità visualizzata nella Colonna Valore.
Se la variabile è a bit la cella in questa colonna risulterà vuota.
Basi valide per FPC 404, PS3 e S7 300 sono le seguenti:
• 2 rappresentazione binaria
• 10 rappresentazione decimale senza segno
• ±10 rappresentazione decimale con segno
• 16 rappresentazione esadecimale
Ulteriori informazioni per i tipi di rappresentazione si trovano nei capitoli dedicati alle note di programmazione
per i diversi PLC.
Colonna Valore
Ha significato solo per gli operandi a byte e a word nonché per i temporizzatori, contatori e registri di shift.
Mostra il valore dell’operando specificato nella colonna Op.assoluto espresso nella base di rappresentazione
specificata nella colonna Base.
Selettori di rigo
La parte della tabella a sinistra della prima colonna è formata dai selettori di rigo. Essi permettono di
selezionare i righi della tabella e, nel contempo, forniscono informazioni sul rigo corrispondente mediante la
visualizzazione di immagini:
rigo corrente
rigo corrente in editazione
Barra pulsanti
La Barra pulsanti della finestra Stato variabili contiene i pulsanti necessari alle operazioni di inserimento ed
eliminazione di variabili singole o multiple.
Per selezionare una singola variabile fate clic sul selettore di rigo, alla sinistra del rigo della tabella che
contiene la variabile da selezionare.
Per selezionare righi multipli contigui: selezionate il primo rigo come appena descritto, quindi premete e
mantenete premuto il tasto Maiusc e fate clic sul selettore dell’ultimo rigo. Tutti i righi dal primo all’ultimo
verranno selezionati e tutti saranno oggetto delle azioni dei pulsanti Elimina ed Inserisci.
E’ possibile, infine, effettuare selezioni multiple di righi non contigui: selezionate il primo quindi premete e
mantenete il tasto Control e fate clic sui selettori dei righi da aggiungere alla selezione, uno alla volta. Un clic
sul selettore di un rigo non selezionato aggiungerà il rigo alla selezione; mentre, un clic sul selettore di un rigo
già selezionato eliminerà il rigo dalla selezione.
Pulsante Elimina
Utilizzare il pulsante Elimina per eliminare una o più variabili dalla tabella. Selezionate i righi della tabella
contenenti le variabile da eliminare e premere il pulsante Elimina.
Pulsante Inserisci
Utilizzate questo pulsante per inserire uno o più righi vuoti nella tabella. Selezionate il rigo della tabella prima
del quale si desidera inserire, quindi selezionate se necessario ulteriori righi purché contigui e premete il
Pulsante Inserisci.
I nuovi righi vuoti vengono inseriti in corrispondenza del primo rigo selezionato ed i successivi verranno
scalati verso il basso. Prestate attenzione al fatto che le variabili negli ultimi righi utili della tabella potrebbero
venire perse.
Introduzione di variabili
Per introdurre una variabile nella tabella fate clic su una casella vuota nella prima colonna e digitate
l'operando assoluto o il simbolo (preceduto dal carattere '-' per PLC diversi da S7 300) e premete il tasto
Invio. La procedura è valida anche se si desidera sovrascrivere una variabile introdotta in precedenza.
Indipendentemente dal fatto che abbiate digitato la sigla di un operando assoluto o un simbolo, l'operando
assoluto prenderà posto nella prima colonna e il corrispondente simbolo, se attribuito, nella seconda.
L'introduzione di data byte e data word per il PLC S5 100U necessita di una descrizione a parte.
Perché PC-Sim recuperi il valore di tali variabili e lo mostri nella finestra, occorrerà informarlo circa il numero
del blocco dati di appartenenza. Per fare ciò digitate in una cella della Colonna Operando assoluto la sigla del
blocco dati e quindi nei righi successivi la o le variabili di dati da visualizzare.
Una volta digitata la sigla di un blocco dati, questo riferimento rimane attivo per tutte le righe seguenti, fino ad
una nuova sigla di blocco dati. Il rigo in cui viene specificato il nome del blocco non viene utilizzata per
mostrare alcun valore.
PC-Sim potrebbe non riuscire a recuperare il valore di un byte o di una parola dati se non avete specificato
prima il blocco di appartenenza o se il blocco specificato non esiste nel progetto o se il dato non esiste, cioè
se il numero del dato richiesto è maggiore dell'ultima data word inserita in quel blocco. In tale caso PC-Sim
mostra nella corrispondente cella della Colonna Valore il testo '???'.
Per informazioni sull'utilizzo di blocchi dati vedere anche il Capitolo 14.
Digitare l’operando (bit, byte, word o doppia word) specificando anche il blocco dati di appartenenza. Per
esempio, se si desidera controllare il valore del byte 5 del blocco dati 22, digitare nella colonna Op.assoluto:
DB22.DBB5.
Per informazioni sull'utilizzo di blocchi dati vedere anche il Capitolo 16.
Introduzione di costanti
Per quanto non appartengano in senso stretto alla categoria delle variabili, le costanti sono anch’esse
operandi ammissibili nella programmazione dei PLC e, come tali, rientrano nella definizione data all’inizio di
questo paragrafo. La colonna Op.assoluto accetta quindi anche operandi di questo tipo.
Potreste utilizzare questa caratteristica della tabella per conversioni di base. Per esempio se desideraste
conoscere la rappresentazione esadecimale del numero decimale 2000 ed utilizzate il PLC PS3, digitate nella
colonna Op.assoluto la costante KW2000 ed impostate la base esadecimale ('16') nella colonna Base. Nella
colonna valore apparirà il valore convertito 7D0.
Forzamento variabili
La finestra Stato variabili consente inoltre l'impostazione manuale del valore o dello stato di una variabile,
cioè il forzamento della stessa.
E' possibile forzare bit, byte o word di memoria, valori dei contatori, ingressi, uscite, registri a scorrimento
(PS3), data byte e data word (S5 100U e S7 300). Ricordate che, con CPU in RUN, le variabili appena
forzate potrebbero essere riscritte dal programma utente, facendo sembrare inattiva questa funzionalità.
Per forzare un bit di merker (flag) fate clic sulla colonna stato corrispondente alla riga che contiene
l'operando da forzare e digitate 1 se volete impostare un valore logico alto o 0 per un valore logico basso,
quindi premete Invio.
In alternativa fate clic sulla medesima cella col pulsante destro del mouse e dal Menu di scelta rapida
scegliete il comando relativo al valore che desiderate impostare.
Per forzare un merker byte o una merker word fate clic sulla cella corrispondente alla riga che contiene
l'operando da forzare in corrispondenza della colonna valore, digitate il nuovo valore e premete Invio. Il valore
digitato dovrà essere coerente con la base di rappresentazione impostata per la variabile corrente e con il
suo numero di bit. Per esempio, se state forzando un merker byte del PLC PS3 in rappresentazione decimale
('10' nella colonna Base) potrete inserire solo valori tra 0 e 255. Ogni inserimento al di fuori di questo campo
verrà segnalato da un bip e l'indicazione della cella tornerà al valore precedente l'inserimento errato.
Forzamento di contatori
Per forzare il valore di conteggio di un contatore operate come descritto per le merker word. Anche lo stato
del contatore verrà variato in conseguenza del valore inserito. Cioè, ad esempio, se forzate il valore del
contatore Z15 del PLC S5 100U su 0 lo stato dello stesso contatore verrà automaticamente aggiornato ad 1.
Per il PLC S7 300 il forzamento dei contatori è possibile solo nella base esadecimale.
Per informazioni sul funzionamento dei contatori vedere i capitoli sulle note di programmazione dei PLC.
Per il PLC PS3 è possibile forzare il valore dei registri a scorrimento e quindi influenzare direttamente le
uscite di questo modulo di sistema. Seguite quanto descritto per le merker word.
Per i PLC S5 100U è possibile forzare il valore di data byte e data word e, solo per S7 300, anche doppie
word. Operate come descritto per le merker word ma ricordate quando detto ai paragrafo Introduzione di data
byte e data word (S5 100U) e Introduzione di dati (S7 300).
Con CPU nello stato di STOP è possibile effettuare il forzamento delle uscite, indirizzate come bit, byte, word
o doppie word. Digitare il valore desiderato nella colonna stato per i bit o nella colonna Valore per i byte, le
word o le doppie word e premere Invio. Le uscite verranno attivate o disattivate a seconda della introduzione
effettuata ma l’indicazione nella cella non varierà poiché essa riporta il valore non già dei canali di uscita fisici
ma dei corrispondenti bit della memoria immagine. Vedere in merito quanto descritto nel capitolo dedicato
alle note di programmazione del PLC che si utilizza.
Al passaggio in RUN le uscite verranno cancellate.
Barra pulsanti
Nasconde o visualizza la Barra pulsanti della finestra Stato variabili. Se vi abituerete ad usare i menu di
scelta rapida la Barra pulsanti non vi servirà più, potrete quindi nasconderla per guadagnare spazio per la
visualizzazione della tabella.
Casella Tipo
Consente la scelta del tipo di operando per l'impostazione dei valori di preset.
Le scelte possibili sono: Temporizzatori e Contatori.
Le tabelle dei preset riportano l’elenco dei valori di tempo dei temporizzatori e di quelli di conteggio dei
contatori presenti nel PLC. E’ visibile una sola delle due tabelle per volta. Per scegliere la tabella da
visualizzare utilizzate la casella a discesa Tipo.
Colonna Operando
Riporta l’elenco delle sigle dei temporizzatori o dei contatori presenti nel PLC. Le celle di questa colonna non
sono modificabili.
Colonna Preset
Elenca i valori di preset dei temporizzatori o dei contatori specificati nella prima colonna. I valori di tempo
sono espressi in centesimi di secondo.
Per impostare o modificare un valore di preset di tempo fate clic sulla colonna Preset in corrispondenza della
riga che riporta la sigla del temporizzatore da impostare e digitate il nuovo valore, quindi premete Invio. Il
valore essere espresso in centesimi di secondo quindi, se intendete impostare ad esempio un tempo di 5
secondi, digitate 500.
Il massimo valore impostabile è 65535, cioè 655.35 secondi.
Per impostare o modificare un valore di preset di conteggio fate clic sulla colonna Preset in corrispondenza
della riga che riporta la sigla del contatore da impostare e digitate il nuovo valore, quindi premete Invio.
Il massimo valore impostabile è 65535.
Finestra PLC
Questa finestra mostra l’immagine del PLC e, ovviamente, il suo contenuto varia in funzione del modello che
state utilizzando. Essa è stata studiata e realizzata per rappresentare una apparecchiatura quanto più
possibile simile nelle forme esteriori al PLC reale. Questo, anche se inutile dal punto di vista funzionale, vi
fornirà un passaggio più facile verso il PLC reale, quando decidiate di farlo. In tutte le finestre sono state
riproposte le segnalazioni luminose a LED dello stato degli ingressi e delle uscite digitali. Come nel PLC reale
l'accensione di un LED d'ingresso indica la chiusura del contatto ad esso collegato; l'accensione di un LED
d'uscita indica l'attivazione dell'uscita corrispondente.
FPC 404
Nella simulazione dello FPC 404 la finestra contiene un PLC composto da due moduli:
• modulo 0 - CPU con 8 ingressi digitali e 8 uscite digitali;
• modulo 1 - I/O con 8 ingressi digitali e 8 uscite digitali.
Il tipo, il numero e la posizione dei moduli non sono modificabili.
Sul fronte del modulo 0 sono presenti i LED di segnalazione dello stato della CPU.
LED Stop
Il LED è di colore giallo e risulta acceso quando la CPU e’ alimentata, cioè quando il pulsante CPU On sulla
Barra strumenti di PC-Sim è premuto ed il PLC è in Stop, cioè quando il pulsante CPU Stop è premuto
LED Run
Il LED è di colore giallo e risulta acceso quando la CPU è in Run, cioè quando i pulsanti CPU On e CPU Run
sulla Barra strumenti di PC-Sim sono premuti e nessun errore è stato riscontrato nel programma.
Trovate ulteriori informazioni su questo PLC nel Capitolo 10.
PS3
Questo PLC è un ‘compatto’ pertanto non ha una struttura modulare. Esso dispone di 16 ingressi digitali, 16
uscite digitali, 4 ingressi analogici ed 1 uscita analogica.
Sul fronte del modulo sono presenti i LED di segnalazione dello stato della CPU.
LED Power
Il LED è di colore giallo e risulta acceso quando la CPU e’ alimentata, cioè quando il pulsante CPU On sulla
Barra strumenti di PC-Sim è premuto. Spento altrimenti.
LED Run
Il LED è di colore giallo e risulta acceso quando la CPU è in Run, cioè quando i pulsanti CPU On e CPU Run
sulla Barra strumenti di PC-Sim sono premuti e nessun errore è stato riscontrato nel programma.
Trovate ulteriori informazioni su questo PLC nel Capitolo 12.
S5 100U
Il PLC simulato è composto dai seguenti moduli:
• CPU;
• modulo 0: 8 ingressi digitali;
In corrispondenza di ogni canale di ingresso o uscita sono presenti delle etichette per l’inserimento del tag del
segnale a campo. Per scrivere una breve descrizione del segnale fate clic con mouse sulla etichetta e
digitate; è consentita una lunghezza massima di cinque caratteri. Il contenuto delle etichette verrà salvato con
il progetto e ricaricato ad una sua successiva riapertura.
Sul fronte del modulo CPU sono presenti i LED di segnalazione dello stato.
LED Stop
Il LED è di colore rosso e risulta acceso quando la CPU e’ alimentata e si trova in stato di Stop, cioè quando i
pulsanti CPU On e CPU Stop sulla Barra strumenti di PC-Sim sono premuti. Spento altrimenti.
LED Run
Il LED è di colore verde e risulta acceso quando la CPU è in Run, cioè quando i pulsanti CPU On e CPU Run
sulla Barra strumenti di PC-Sim sono premuti e nessun errore è stato riscontrato nel programma.
S7 300
Il PLC simulato è composto nell’ordine dai seguenti moduli:
• CPU;
• modulo 0: 16 ingressi digitali;
• modulo 1: 16 uscite digitali;
• modulo 2: 4 ingressi analogici (non visualizzato)
• modulo 3: 4 uscite analogiche (non visualizzato)
Il tipo e la posizione dei moduli non sono modificabili.
Sul fronte del modulo CPU sono presenti i LED di segnalazione dello stato.
LED STOP
Il LED è di colore giallo e risulta acceso quando la CPU e’ alimentata e si trova in stato di Stop, cioè quando i
pulsanti CPU On e CPU Stop sulla Barra strumenti di PC-Sim sono premuti. Spento altrimenti.
LED RUN
Il LED è di colore verde e risulta acceso quando la CPU è in Run, cioè quando i pulsanti CPU On e CPU Run
sulla Barra strumenti di PC-Sim sono premuti e nessun errore è stato riscontrato nel programma.
LED DC5V
Il LED è di colore verde e risulta acceso quando la CPU è in On, cioè quando il pulsante CPU On sulla Barra
strumenti di PC-Sim è premuto.
LED BATF
Il LED è di colore rosso e risulta acceso quando la CPU è alimentata e la batteria è scarica o non presente,
cioè quando i pulsanti CPU On e Batteria fuori servizio della Barra strumenti di PC-Sim sono premuti.
Pulsanti/interruttori
Nella finestra di simulazione del PLC sono presenti 16 pulsanti/interruttori. Essi vengono utilizzati per il
comando degli ingressi digitali quando usate il PLC senza impianto o quando non tutti gli ingressi del PLC
sono collegati all’impianto.
Questi pulsanti/interruttori possono essere impostati sia come pulsanti che come interruttori; l'aspetto ne
specificherà la funzione:
interruttore;
pulsante;
dove la doppia freccia indica la funzione bistabile, quella singola la funzione monostabile.
Per cambiare tra le impostazioni fate clic col pulsante destro del mouse sull'elemento che desiderate
cambiare; esso commuta di funzione ad ogni pressione: se pulsante diventa interruttore e viceversa.
Quando l'interruttore assume questo aspetto:
disabilitato
esso risulta disabilitato: fare clic su di esso non produrrà alcun effetto.
PC-Sim disabilita automaticamente un interruttore o un pulsante quando al corrispondente ingresso del PLC
viene collegato un sensore di un impianto (per esempio un finecorsa di cilindro o un livellostato di serbatoio)
per evitare interferenze inopportune tra i contatti di componenti di quest'ultimo ed i pulsanti/interruttori locali.
Per abilitare nuovamente il pulsante/interruttore occorrerà scollegare l'ingresso del PLC dall’impianto.
Leggete in merito la sezione Collegare gli impianti al PLC nel Capitolo 4.
Il campo riporta il nome del file progetto attualmente in uso. Per aprire un nuovo progetto o cambiare nome a
quello attuale vedere quanto detto a proposito dei comandi del Menu File di PC-Sim.
Il campo non è modificale e perciò appare con fondo grigio.
Campo Versione
Riporta la versione di PC-Sim con cui è stato realizzato il progetto o con cui è stato salvato l’ultima volta.
Anche questo campo non è modificale, l’aggiornamento è effettuato automaticamente da PC-Sim, e perciò
appare con fondo grigio.
Campo Titolo
Inserite in questo campo il titolo che desiderate attribuire all’esercitazione che avete realizzato.
Campo Autore
Inserite il vostro nome o quelli degli appartenenti al gruppo di lavoro che ha realizzato l’esercitazione.
Campo Data
Il campo viene automaticamente impostato alla data odierna ad ogni apertura di un nuovo progetto. Se state
modificando un progetto realizzato in precedenza premete il pulsante Aggiorna per inserire nel campo la data
corrente oppure digitatela manualmente.
Campo Revisione
Inserite il numero di revisione del progetto. Ogni volta che vengono apportate modifiche al lavoro sarebbe
bene incrementare questo numero per distinguerne gli aggiornamenti.
Campo Note
Digitate in questa casella un testo di chiarimento o di commento all'esercizio svolto. In fase di stampa questo
testo, se troppo lungo, verrà troncato fino ad occupare al massimo due righe nello specifico riquadro
destinato alla stampa delle note.
Barra pulsanti
Pulsante Annulla
Pulsante Ok
Chiude la finestra e convalida le modifiche apportate. Le modifiche verranno salvate su file solo al momento
del salvataggio del progetto.
Menu File
Questo comando da inizio ad un nuovo progetto. A seguito della sua scelta, PC-Sim compie le seguenti
azioni:
• chiede se si intende salvare il progetto corrente se questo ha subito modifiche;
• pone in OFF il PLC;
• cancella la memoria di programma;
• svuota la Tabella blocchi;
• cancella le attribuzioni dei simboli;
• inizializza il nome del progetto corrente;
• cancella gli operandi nella Tabella variabili;
• cancella le etichette del PLC;
• cancella le informazioni sul progetto.
E' possibile iniziare un nuovo progetto anche premendo il Pulsante Nuovo progetto nella Barra strumenti di
PC-Sim.
Questo comando da inizio ad un nuovo progetto utilizzando l’editor di programma ladder. A seguito della sua
scelta, PC-Sim compie le seguenti azioni:
• chiede se si intende salvare il progetto corrente se questo ha subito modifiche;
• pone in OFF il PLC;
• cancella la memoria di programma;
• cancella le attribuzioni dei simboli;
• inizializza il nome del progetto corrente;
• cancella gli operandi nella Tabella variabili;
• inizializza i valori dei preset (FPC 404);
• cancella le informazioni sul progetto.
• apre l’editor di programma ladder e la casella strumenti.
Come alternativa a questo comando è possibile premere il Pulsante Nuovo progetto ladder nella Barra
strumenti di PC-Sim.
Questo comando da inizio ad un nuovo progetto utilizzando l’editor AWL. A seguito della sua scelta PC-Sim
compie le seguenti azioni:
• chiede se si intende salvare il progetto corrente se questo ha subito modifiche;
• pone in OFF il PLC;
• cancella la memoria di programma;
Questo comando permette di aprire un progetto realizzato e salvato in precedenza. In risposta alla scelta di
questo comando, PC-Sim mostrerà la finestra di dialogo Apri progetto. In essa scegliete il percorso ed il
nome del file progetto (.prj) da aprire e fate clic sul Pulsante Apri.
All'apertura di un progetto PC-Sim compie le seguenti azioni:
• chiede se si intende salvare il progetto corrente se questo ha subito modifiche;
• pone in OFF il PLC;
• carica l’elenco dei blocchi nella Tabella blocchi (S5 100U e S7 300);
• legge dal file il programma utente trasferendolo nella memoria di programma;
• carica le attribuzioni dei simboli;
• aggiorna il nome del progetto corrente;
• carica gli operandi nella Tabella variabili;
• carica le etichette del PLC (S5 100U);
• carica i valori dei preset (FPC 404);
• aggiorna le informazioni sul progetto.
• recupera le impostazioni di dimensione e posizione della Finestra Lista blocchi (S5 100U e S7 300), della
Finestra Tabella dei simboli e della Finestra Stato variabili;
• apre l’editor di programma ladder o AWL a seconda del tipo di codice nella memoria di programma (FPC
404 e PS3)
E' possibile aprire un progetto anche premendo il Pulsante Apri progetto nella Barra strumenti di PC-Sim.
Questo comando permette di salvare su disco il progetto corrente. In riposta alla sua scelta, PC-Sim controlla
che il progetto corrente abbia un nome. Se il progetto corrente non è ancora stato nominato, cioè se lo state
salvando per la prima volta, apre la finestra di dialogo Salva con nome che vi consentirà di assegnare un
nome al progetto corrente (vedi Comando Salva progetto con nome...).
Dopo aver nominato il progetto, o se il progetto corrente possiede già un nome, PC-Sim compie le seguenti
azioni:
• registra il contenuto dell’editor di programma aperto, se modificato, nella memoria di programma (FPC
404 e PS3);
• registra il contenuto di tutti i blocchi aperti e modificati nella memoria di programma (S5 100U e S7 300);
• salva sul file le informazioni sul progetto;
• salva le impostazioni di dimensione e posizione della Finestra Lista blocchi (S5 100U e S7 300), della
Finestra Tabella dei simboli e della Finestra Stato variabili.
• salva le attribuzioni dei simboli;
• salva gli operandi della Tabella variabili;
• salva i testi delle etichette del PLC (S5 100U);
• salva i valori dei preset (FPC 404);
• salva il programma utente registrato nella memoria di programma.
Il progetto corrente può essere salvato in qualsiasi momento durante l'utilizzo del software.
E' possibile salvare un progetto anche premendo il Pulsante Salva progetto nella Barra strumenti di PC-Sim.
Consente di salvare un progetto con un nome diverso da quello corrente o consente di nominare e salvare un
progetto senza nome.
Scegliendo questo comando, PC-Sim propone la finestra di dialogo Salva con nome. Selezionate o digitate il
percorso ed il nome del file in cui intendete salvare il progetto e premete il pulsante Salva. Il progetto verrà
salvato nel file dal nuovo nome. Per una descrizione dettagliata delle operazioni di salvataggio vedere quanto
detto in precedenza per il Comando Salva progetto.
Consente di creare un nuovo blocco nel programma. Alla scelta di questo comando viene mostrata la finestra
di dialogo Nuovo blocco. Inserite il nome del blocco, fate clic se necessario sul pulsante opzione per
scegliere il tipo di editor da utilizzare (AWL o Ladder), facoltativamente inserite un testo di commento nella
casella relativa, quindi premete il pulsante Crea per aprire l'editor del blocco.
Non è consentito creare un blocco che abbia lo stesso nome di un altro già presente nel progetto. Tale
operazione viene segnalata da PC-Sim con un messaggio di errore.
Metodi equivalenti per creare un nuovo blocco sono:
• fare clic sul Pulsante Nuovo della Finestra Lista blocchi (S5 100U e S7 300);
• fare clic sul Pulsante Nuovo blocco della Barra strumenti di PC-Sim;
• premere la combinazione di tasti Ctrl+N.
Apre l'editor del blocco selezionato nella Tabella blocchi o lo porta in primo se già aperto. Scegliere questo
comando è equivalente a premere il Pulsante Codice della Finestra Lista blocchi (S5 100U e S7 300).
Salva il blocco selezionato nella Tabella blocchi all’interno della memoria di programma.
Ricordiamo che il salvataggio nella memoria di programma non comporta la registrazione su file. Questa
verrà effettuata soltanto dopo un Comando Salva progetto. Fate riferimento per maggiori informazioni a
quanto detto a proposito di quest'ultimo comando.
Elimina la sigla del blocco selezionato dalla Tabella blocchi ed il suo codice dalla memoria di programma.
Se nessun blocco è stato ancora creato il comando risulta disabilitato.
Per ulteriori informazioni fate riferimento a quanto descritto per il Pulsante Elimina della Finestra Lista blocchi
(S5 100U e S7 300) che risulta equivalente al comando in oggetto.
Consente di importare nel progetto corrente i simboli già definiti in precedenza in un altro progetto. Alla scelta
di questo comando PC-Sim risponde con la visualizzazione della finestra di dialogo Importa simboli che vi
consente di specificare il percorso ed il nome del file progetto dal quale recuperare i simboli.
PC-Sim controlla l’univocità delle attribuzioni importate rispetto a quelle eventualmente già presenti e, se non
in contrasto, le aggiunge a quest’ultime.
Al termine dell'operazione un messaggio vi informerà circa il numero delle attribuzioni importate.
Utilizzate questo comando quando volete aggiungere al progetto corrente del codice già sviluppato in
precedenza. In risposta ad esso PC-Sim mostra la finestra di dialogo Importa programma. In essa digitate o
selezionate il nome del file progetto da cui importare e premete il Pulsante Apri.
Per i PLC FPC 404 e PS3 la procedura è terminata; se il progetto indicato contiene codice compatibile con
quello attuale (cioè se è dello stesso tipo, ladder o AWL), il programma viene letto ed inserito nell’editor
corrente. Se l’editor è AWL il codice verrà inserito in corrispondenza della posizione del cursore, se l’editor è
ladder i nuovi percorsi verranno inseriti prima del percorso selezionato o, se non esiste un percorso
selezionato, alla fine dello schema.
Per i PLC S5 100U e S7 300 la procedura comporta, invece, un ulteriore passo: PC-Sim legge il file progetto
prescelto ed estrae la lista dei blocchi, quindi mostra la finestra di dialogo Scelta blocchi da importare che
riporta sigla e commento di ogni blocco trovato.
Selezionate i blocchi che desiderate importare e premete il pulsante Importa. E’ possibile la selezione
multipla di blocchi contigui con il tasto Maiusc o non contigui con il tasto Control.
Purché nel progetto corrente non esistano blocchi con la stessa sigla, PC-Sim aggiunge la sigla di ogni
blocco alla Tabella blocchi e registra il relativo codice nella memoria di programma.
Utilizzate questo comando per selezionare una stampante da impiegare nella stampa del progetto corrente
ed un collegamento per essa.
Permette di stampare il progetto corrente o parte di esso. A questo argomento si è dedicato un intero
paragrafo dal titolo Stampa della documentazione, più avanti in questo capitolo, al quale rimandiamo per
dettagliate spiegazioni.
I nomi degli ultimi file progetto che avete utilizzato con PC-Sim, per un massimo di sei, vengono memorizzati
in una sezione del Menu File.
L'ultimo progetto aperto occupa la prima posizione, segue il penultimo e così via. L'elenco di questi file viene
aggiornato automaticamente ad ogni apertura, creazione o registrazione di progetto. I nomi dei progetti
antecedenti al sestultimo vengono persi.
Per aprire uno dei progetti nell'elenco, fate clic sul comando che ne riporta il nome. Questo metodo risulta
molto più veloce dell'apertura classica con il Comando Apri progetto... dello stesso menu.
Comando Esci
Esce dalla sessione corrente di PC-Sim. Prima della chiusura, PC-Sim compie le seguenti azioni:
• chiude l’editor di programma e, se vi sono variazioni non registrate, vi chiede se intendete salvare le
modifiche nella memoria di programma (FPC 404 e PS3);
• chiude tutti gli editor di blocco aperti e, se vi sono variazioni nel codice dei blocchi, vi chiede
singolarmente se intendete salvare le modifiche nella memoria di programma (S5 100U e S7 300);
• se il progetto è stato variato, cioè se sono variate la memoria di programma o le variabili in stato o i
simboli o le etichette del PLC (S5 100U) o, ancora, le impostazioni di preset (FPC 404), chiede se si
intende registrare le modifiche su file;
• in caso di risposta affermativa, e se non è stato già assegnato un nome al progetto, mostra la finestra di
dialogo Salva progetto con nome per l'assegnazione del nome del file e quindi salva il progetto nel file
specificato (vedere Comando Salva progetto con nome...);
• se il progetto corrente ha già un nome, e rispondete affermativamente alla richiesta di salvataggio, PC-
Sim salva il progetto direttamente in quel file (vedere Comando Salva progetto);
• infine aggiorna la lista degli ultimi progetti aperti nel file di inizializzazione del programma.
Menu Modifica
Comando Elimina
Nell’editor AWL del PLC PS3 elimina il rigo corrente, scalando di una posizione verso l’alto il restante
programma.
Per i PLC S5 100U e S7 300, invece, cancella la selezione corrente nell'editor AWL di blocco. Il comando
risulta abilitato solo se nella finestra corrente di editor esiste una selezione di testo. In queste condizioni, la
scelta del comando porta all'eliminazione del testo selezionato.
Se il blocco (S5 100U e S7 300) o il progetto (FPC 404 e PS3) è invece di tipo ladder, il comando risulta
abilitato solo se nella finestra corrente di editor è selezionato un percorso. La scelta di questo comando porta
alla eliminazione del percorso selezionato e allo spostamento verso l'alto ed alla rinumerazione dei percorsi
successivi.
Comando Inserisci
Se l’editor corrente è di tipo ladder, inserisce un percorso vuoto in corrispondenza della selezione. Il
comando risulta abilitato solo se nella finestra di editor è selezionato un percorso. La scelta di questo
comando porta allo spostamento verso il basso ed alla rinumerazione progressiva dei percorsi a partire da
quello selezionato ed all'inserimento di un nuovo percorso vuoto.
Per l’editor AWL del PLC PS3 questo comando inserisce un rigo vuoto nella posizione corrente.
Per l’editor AWL dei PLC S5 100U e S7 300 questo comando non è abilitato.
Comando Aggiungi
Se l’editor corrente è di tipo ladder, aggiunge un percorso vuoto alla fine dello schema e lo numera.
Se l'editor corrente è di tipo AWL questo comando risulta disabilitato.
Comando Taglia
Tastiera: Ctrl+X
Comando Copia
Tastiera: Ctrl+C
Comando Incolla
Permette di inserire nell’editor corrente una parte di programma precedentemente tagliata o copiata (vedere
Comando Taglia e Comando Copia dello stesso menu).
Per i PLC S5 100U e S7 300, se l’editor corrente è di tipo AWL, l'operazione di copia porta all'inserimento del
testo nella posizione del cursore. Il testo potrebbe essere stato copiato o tagliato anche da un'altra
applicazione Windows.
Per il PLC PS3, invece, l’operazione porta all’inserimento dell’istruzione, copiata o tagliata in precedenza,
nella posizione corrente del cursore.
Se il blocco corrente è Ladder l'inserimento del percorso avviene in corrispondenza della selezione o, se
nessuna selezione è presente, alla fine del blocco.
Tastiera: Ctrl+V
Scegliete questo comando quando è vostra intenzione far uso di operandi simbolici nella programmazione.
Per informazioni sui tipi di operandi vedere il paragrafo Operandi assoluti e simboli. Un segno di spunta a
fianco del comando vi indica che questo tipo di visualizzazione è attiva.
Per usare gli operandi simbolici è indispensabile che abbiate scritto delle attribuzioni di simboli o che le
abbiate importate da un altro progetto. Vedere in merito quanto riportato a proposito della Finestra Tabella
dei simboli o del Comando Importa simboli... del menu File.
Quando impostate questa modalità di visualizzazione, viene effettuata la conversione degli operandi su tutti
gli editor aperti e, in ogni editor che aprirete successivamente, verranno già visualizzati gli operandi simbolici.
Ogni nuovo operando che andrete ad inserire in un editor ladder o AWL sarà automaticamente convertito
nella forma attiva. Cioè, se in modalità di visualizzazione simboli inserite un operando assoluto, questo verrà
convertito da PC-Sim nel corrispondente simbolo.
Se non avete definito dei simboli, l’impostazione di questa modalità non porterà ad alcuna variazione di
visualizzazione: non essendo disponibili simboli da sostituire agli operandi assoluti, PC-Sim continuerà a
mostravi questi ultimi.
Se, invece, esiste una lista delle attribuzioni attiva, ma non tutti gli operandi usati nel programma hanno dei
simboli attribuiti, PC-Sim sostituirà solo gli operandi assoluti per i quali avete dichiarato un simbolo, lasciando
i restanti inalterati.
Tastiera: Ctrl+Q
Scegliete questo comando quando intendete programmare usando gli operandi assoluti. Per informazioni sui
tipi di operandi vedere il paragrafo Operandi assoluti e simboli. Un segno di spunta a fianco del comando vi
indica che questo tipo di visualizzazione è attiva. La visualizzazione preimpostata con PC-Sim è quella che
mostra gli operandi assoluti, quindi all'avvio del programma sarà questa la visualizzazione utilizzata.
Quando impostate questa modalità di visualizzazione, PC-Sim effettua la conversione di tutti i simboli
presenti in tutti gli editor aperti. Inoltre, in ogni in editor che aprirete successivamente, verranno già
visualizzati gli operandi assoluti. Ogni nuovo operando che andrete ad inserire in un editor ladder o AWL sarà
automaticamente convertito nella forma attiva. In questo caso cioè, essendo attiva la modalità di
visualizzazione degli operandi assoluti, se digitate un simbolo, questo verrà convertito da PC-Sim nel
corrispondente operando assoluto.
Tastiera: Ctrl+W
Questo comando vi permette di ricercare tutte le occorrenze di un dato operando all'interno del vostro
programma.
In risposta ad esso, PC-Sim mostra la finestra di dialogo Trova operando. Inserite la sigla dell'operando da
ricercare nella casella Trova; potete inserire sia operandi assoluti che simboli, ma ricordate di far precedere
questi ultimi dal trattino.
Per PLC S5 100U o S7 300, scegliete quindi l'area di ricerca facendo clic sul pulsante opzione Blocco
selezionato o su quello Intero programma. Facendo clic sul primo, la ricerca verrà effettuata solo sul blocco
correntemente selezionato nella Tabella blocchi; facendo clic sul secondo, questa verrà compiuta in tutti i
blocchi del progetto senza riguardo al tipo di editor (AWL o ladder). Per le altre simulazioni di PLC, il pulsante
opzione Blocco selezionato è disabilitato e la ricerca verrà effettuata all’interno dell’unico editor disponibile.
Fate clic sul pulsante Trova per cominciare la ricerca a partire dall'inizio dell'area specificata, inizio del blocco
selezionato o inizio del primo blocco della Tabella blocchi (S5 100U e S7 300) o inizio del programma
(FPC404 e PS3). Se l'operando viene trovato PC-Sim mostrerà l’editor che lo contiene e attiverà la selezione
del nome dell'operando. La finestra Trova operando continua a rimanere aperta e, per ogni clic sul pulsante
Trova successivo, PC-Sim mostrerà l'occorrenza successiva trovata. Un messaggio vi avviserà quando la
ricerca sarà arrivata al termine dell'area prevista. Un altro messaggio vi avviserà se nessuna occorrenza
dell'operando in ricerca è stata trovata.
Se necessario, PC-Sim converte automaticamente l’operando inserito nella modalità di visualizzazione
impostata con il Comando Mostra simboli o il Comando Mostra operandi assoluti. Cioè se, ad esempio, è
attiva la modalità di visualizzazione dei simboli ed inserite per la ricerca un operando assoluto, questo verrà
sostituito dal corrispondente simbolo, se ve n’è uno definito.
Per terminare la ricerca e chiudere la finestra premete il pulsante Annulla.
Per attivare la sostituzione dell'operando trovato con un operando nuovo premete il pulsante Sostituisci. Per
informazioni sulla sostituzione vedere la descrizione del Comando Sostituisci operando....
Per i PLC S5 100U e S7 300 il comando Trova operando risulta disabilitato se nel progetto non esiste alcun
blocco.
Per i PLC FPC 404 e PS3 il pulsante opzione Blocco selezionato risulta disabilitato in quanto il programma
non può essere strutturato in blocchi.
Tastiera: Ctrl+F
Per PLC S5 100U o S7 300, scegliete quindi l'area di ricerca facendo clic sul pulsante opzione Blocco
selezionato o su quello Intero programma. Facendo clic sul primo, la sostituzione verrà effettuata solo sul
blocco correntemente selezionato nella Tabella blocchi; facendo clic sul secondo, invece, questa verrà
compiuta in tutti i blocchi del progetto senza riguardo al tipo di editor (AWL o ladder). Per le altre simulazioni
di PLC, il pulsante opzione Blocco selezionato è disabilitato.
Fate clic sul pulsante Sostituisci per sostituire la prima occorrenza dell'operando in ricerca. Ad ogni clic su
questo pulsante PC-Sim provvederà ad un'unica sostituzione ed inizierà la ricerca dell'occorrenza
successiva.
Fate clic sul pulsante Trova successivo per saltare la sostituzione dell'operando appena trovato ed iniziare la
ricerca di una nuova occorrenza.
Fate clic su Sostituisci tutto per sostituire automaticamente tutte le occorrenze dell'operando nell'area di
ricerca specificata.
Se necessario, PC-Sim converte automaticamente gli operandi inseriti nella modalità di visualizzazione
impostata con il Comando Mostra simboli o il Comando Mostra operandi assoluti. Cioè se, ad esempio, è
attiva la modalità di visualizzazione dei simboli ed inserite un operando assoluto, questo verrà sostituito dal
corrispondente simbolo, se ve n’è uno definito.
Per terminare la sostituzione e chiudere la finestra premete il pulsante Annulla.
Per i PLC S5 100U e S7 300 il comando Sostituisci operando risulta disabilitato se nel progetto non esiste
alcun blocco.
Per i PLC FPC 404 e PS3 il pulsante opzione Blocco selezionato risulta disabilitato in quanto il programma
non può essere strutturato in blocchi.
Tastiera: Ctrl+H
Consente di scegliere la lingua di rappresentazione delle operazioni AWL e degli operandi tra le due possibili:
tedesco (default) e inglese. Un segno di spunta su una delle due sottovoci denota quella correntemente
attiva.
Occorre riavviare PC-Sim per rendere operativo il cambio di rappresentazione.
Menu Finestra
Apre o porta in primo piano l’editor di programma. Se attiva la visualizzazione del debug ritorna alla
condizione di editazione. Ricordate che è possibile editare un programma solo se la CPU si trova nello stato
di OFF o in quello di STOP. Vedere in merito il paragrafo Stato della CPU ed i comandi del Menu CPU.
Per i PLC S5 100U e S7 300 utilizzate invece il Pulsante Codice nella Finestra Lista blocchi (S5 100U e S7
300) o il Comando Apri blocco (S5 100U e S7 300) del menu File dopo aver selezionato il blocco nella
Tabella blocchi.
Porta la visualizzazione dell’editor di programma in debug. Questo comando è disabilitato se la CPU si trova
nello stato di OFF. Per riportare l’editor nella visualizzazione normale utilizzate il Comando Codice (FPC 404
e PS3) nello stesso menu.
Per ulteriori informazioni vedere i paragrafi Debug nelle finestre Ladder, Debug nella finestra AWL, Stato
della CPU ed i comandi del Menu CPU.
Per i PLC S5 100U e S7 300 utilizzate invece il Pulsante Debug nella Finestra Lista blocchi (S5 100U e S7
300) dopo aver selezionato il blocco nella Tabella blocchi.
Apre o porta in primo piano la Finestra Lista blocchi (S5 100U e S7 300). Equivale a premere il Pulsante
Finestra Lista blocchi nella Barra strumenti di PC-Sim.
Tastiera: Ctrl+B
Apre o porta in primo piano la Finestra Tabella dei simboli. Equivale a premere il Pulsante Finestra Tabella
dei simboli nella Barra strumenti di PC-Sim.
Tastiera: Ctrl+A
Apre o porta in primo piano la Finestra Stato variabili. Equivale a premere il Pulsante Finestra Stato variabili
nella Barra strumenti di PC-Sim.
Apre o porta in primo piano la Finestra Impostazioni preset. Equivale a premere il pulsante Finestra
Impostazioni preset nella Barra strumenti di PC-Sim.
Apre o porta in primo piano la Casella strumenti per l'editing dello schema ladder. Per il PLC PS3 questo
comando non è attivo se il progetto corrente è di tipo AWL. Equivale a premere il Pulsante Casella strumenti
nella Barra strumenti di PC-Sim.
Tastiera: F9
Comando PLC
Apre o porta in primo piano la Finestra PLC. Equivale a premere il Pulsante Finestra PLC nella Barra
strumenti di PC-Sim.
Tastiera: F11
Apre o porta in primo piano la Finestra Informazioni sul progetto. Equivale a premere il Pulsante Finestra
Informazioni sul progetto nella Barra strumenti di PC-Sim.
Tastiera: F12
Porta in primo piano la finestra dell'impianto correntemente aperto. Se nessun impianto risulta aperto il
comando è disabilitato. Equivale a premere il Pulsante Impianto corrente nella Barra strumenti di PC-Sim.
Tastiera: Ctrl+J
Menu CPU
Premete questo pulsante per simulare la disinserzione dell'alimentazione alla CPU. Quando si toglie
alimentazione alla CPU vengono compiute le seguenti operazioni:
• vengono spenti il LED di stato della CPU;
• vengono disattivate le uscite e spenti i LED relativi.
Le CPU dei PLC S5 100U e S7 300 hanno un alimentatore, o per lo meno un interruttore, diverso da quello
della periferia. Quindi, togliendo tensione alla CPU, quest’ultima continua ad essere alimentata: ecco perché i
LED di ingresso continuano a rimanere accesi se i contatti ad essi collegati sono chiusi.
Gli altri PLC hanno un unico interruttore di alimentazione per la CPU e per la periferia per cui, togliendo
alimentazione alla CPU, i LED di segnalazione dello stato degli ingressi vengono spenti.
Comando CPU On
FPC 404
• accensione del LED Stop della CPU;
e, se il pulsante di Run sulla Barra strumenti di PC-Sim è già premuto:
• compilazione del programma in codice macchina;
e, se la compilazione avviene correttamente:
• cancellazione dei temporizzatori, dei contatori e dei flag;
• accensione del LED Run della CPU;
• spegnimento del LED Stop;
• elaborazione ciclica del programma utente.
PS3
• accensione del LED Power della CPU;
e, se il pulsante di Run sulla Barra strumenti di PC-Sim è già premuto:
• compilazione del programma in codice macchina;
e, se la compilazione avviene correttamente:
• cancellazione delle immagini di processo e dei merker non ritentivi, inizializzazione dei moduli di sistema;
S5 100U
• accensione del LED Stop della CPU;
e, se manca la batteria:
• accensione del LED Battery Off/Low;
e, se il pulsante di Run sulla Barra strumenti di PC-Sim è già premuto:
• compilazione del programma in codice macchina;
e, se la compilazione avviene correttamente:
• cancellazione delle immagini di processo, dei temporizzatori, dei contatori non ritentivi e dei merker non
ritentivi;
• accensione del LED Run della CPU;
• elaborazione blocco di avviamento OB22 (vedere Blocchi Organizzativi (OB) nel Capitolo 14);
• spegnimento del LED Stop;
• lettura della IPI (vedere Immagini di processo nel Capitolo 14);
• elaborazione dell'OB1 (vedere Blocchi Organizzativi (OB) nel Capitolo 14);
• emissione della IPU (vedere Immagini di processo nel Capitolo 14).
Gli ultimi tre passi si ripetono fino ad un successivo passaggio in STOP o in OFF e costituiscono
l'elaborazione ciclica.
S7 300
• accensione del LED DC5V della CPU;
• accensione del LED STOP della CPU;
e, se manca la batteria:
• accensione del LED BATF;
e, se il pulsante di Run sulla Barra strumenti di PC-Sim è già premuto:
• compilazione del programma in codice macchina;
e, se la compilazione avviene correttamente:
• cancellazione delle immagini di processo, dei temporizzatori, dei contatori non ritentivi e dei merker non
ritentivi;
• accensione del LED RUN della CPU;
• elaborazione blocco di avviamento OB100 (vedere Blocchi Organizzativi (OB) nel Capitolo 16);
• spegnimento del LED STOP della CPU;
• lettura della IPI (vedere Immagini di processo nel Capitolo 16);
• elaborazione dell'OB1 (vedere Blocchi Organizzativi (OB) nel Capitolo 16);
• emissione della IPU (vedere Immagini di processo nel Capitolo 16).
Gli ultimi tre passi si ripetono fino ad un successivo passaggio in STOP o in OFF e costituiscono
l'elaborazione ciclica.
Se la CPU non è alimentata (pulsante CPU Off premuto) la scelta di questo comando non ha alcun effetto.
Se, invece, la CPU è alimentata (pulsante CPU On premuto) vengono compiuti i seguenti passi:
FPC 404
• compilazione del programma in codice macchina;
e, se la compilazione avviene correttamente:
• cancellazione dei temporizzatori, dei contatori e dei flag;
• accensione del LED Run;
• spegnimento del LED Stop;
• elaborazione ciclica del programma utente.
PS3
• compilazione del programma in codice macchina;
e, se la compilazione avviene correttamente:
• cancellazione delle immagini di processo e inizializzazione dei moduli di sistema;
• accensione del LED di Run della CPU;
• lettura della IPI (vedere Immagini di processo nel Capitolo 12);
• elaborazione del programma utente;
• emissione della IPU (vedere Immagini di processo nel Capitolo 12).
Gli ultimi tre passi si ripetono fino ad un successivo passaggio in STOP o in OFF e costituiscono
l'elaborazione ciclica.
S5 100U
• compilazione del programma in codice macchina del PLC;
e, se la compilazione avviene correttamente:
• cancellazione delle immagini di processo, dei temporizzatori, dei contatori non ritentivi e dei merker non
ritentivi;
• accensione del LED Run della CPU;
• elaborazione blocco di avviamento OB21 (vedere Blocchi Organizzativi (OB) nel Capitolo 14);
• spegnimento del LED Stop;
• lettura della IPI (vedere Immagini di processo nel Capitolo 14);
• elaborazione dell'OB1 (vedere Blocchi Organizzativi (OB) nel Capitolo 14);
• emissione della IPU (vedere Immagini di processo nel Capitolo 14).
Gli ultimi tre passi si ripetono fino ad un successivo passaggio in STOP o in OFF e costituiscono
l'elaborazione ciclica.
S7 300
• compilazione del programma in codice macchina del PLC;
e, se la compilazione avviene correttamente:
• cancellazione delle immagini di processo, dei temporizzatori, dei contatori non ritentivi e dei merker non
ritentivi;
• accensione del LED RUN della CPU;
• elaborazione blocco di avviamento OB100 (vedere Blocchi Organizzativi (OB) nel Capitolo 16);
• spegnimento del LED STOP;
• lettura della IPI (vedere Immagini di processo nel Capitolo 16);
• elaborazione dell'OB1 (vedere Blocchi Organizzativi (OB) nel Capitolo 16);
• emissione della IPU (vedere Immagini di processo nel Capitolo 16).
Gli ultimi tre passi si ripetono fino ad un successivo passaggio in STOP o in OFF e costituiscono
l'elaborazione ciclica.
Fate clic su questo comando per simulare l'inserimento di una nuova batteria tampone nella CPU del PLC.
Quando la batteria è inserita, le variabili residenti nella memoria RAM tamponata vengono mantenute anche
in caso di mancanza di alimentazione al PLC simulato.
Per il PLC S5 100U, al ritorno in servizio della batteria non viene più elaborato il blocco OB34 all'inizio di ogni
ciclo (vedere Blocchi Organizzativi (OB) nel Capitolo 14).
Per il PLC S7 300, al ritorno in servizio della batteria non viene più elaborato il blocco OB81 all'inizio di ogni
ciclo (vedere Blocchi Organizzativi (OB) nel Capitolo 16).
Questo comando serve a simulare la disinserzione o l'esaurimento della batteria tampone. Quando la batteria
è disinserita, le variabili residenti nella memoria RAM vengono azzerate in caso di mancanza di
alimentazione.
Per il PLC S5 100U, in queste condizioni e prima dell'inizio di ogni ciclo, la CPU del PLC simulato elaborerà il
blocco OB34, se programmato, fino al reinserimento della batteria tampone (vedere Blocchi Organizzativi
(OB) nel Capitolo 14).
Per il PLC S7 300, in queste condizioni e prima dell'inizio di ogni ciclo, la CPU del PLC simulato elaborerà il
blocco OB81, se programmato, fino al reinserimento della batteria tampone (vedere Blocchi Organizzativi
(OB) nel Capitolo 16).
Menu Impianti
Attraverso questo menu è possibile avviare gli impianti di PL-Sim. Ognuna delle voci rappresenta e richiama
uno specifico impianto. PC-Sim controlla al suo avviamento gli impianti presenti sul vostro PC e, per tutti
quelli previsti e non trovati, provvede a disabilitare il relativo comando.
Inoltre, da questo menu possono essere avviate le interfacce verso gli impianti reali (PL-RIS e PL-Net) e
verso quelli autocostruiti (PL-Lab).
Per avviare un impianto è sufficiente scegliere la voce che ne individua il nome ed il numero progressivo.
All’avviamento di un impianto il menu viene disabilitato per evitare la contemporanea esecuzione di più
impianti. Esso tornerà ad essere abilitato alla chiusura dell’impianto che verrà effettuata dalla relativa finestra.
Comando Elettropneumatica 1
Avvia l'impianto n.1, Elettropneumatica 1, che simula un banco di elettropneumatica composto da tre cilindri
pneumatici a doppio effetto e tre distributori bistabili a comando elettrico.
Per maggiori informazioni vedere Impianto n.1: Elettropneumatica 1 nel Capitolo 4.
Comando Elettropneumatica 2
Avvia l'impianto n.2, Elettropneumatica 2, che simula un banco di elettropneumatica composto da tre cilindri
pneumatici a doppio effetto e tre distributori monostabili a comando elettrico.
Per maggiori informazioni vedere Impianto n.2: Elettropneumatica 2 nel Capitolo 4.
Comando Elettropneumatica 3
Avvia l'impianto n.3, Elettropneumatica 3, che simula un banco di elettropneumatica composto da tre cilindri
pneumatici a semplice effetto e tre distributori monostabili a comando elettrico.
Per maggiori informazioni vedere Impianto n.3: Elettropneumatica 3 nel Capitolo 4.
Avvia l'impianto n.4, Automazione cancello, che simula una classica applicazione dell’automazione in campo
civile, l’automazione di un cancello elettrico. Sono disponibili finecorsa, fotocellula, telecomando, motore e
lampeggiatore.
Per maggiori informazioni vedere Impianto n.4: Automazione cancello nel Capitolo 4.
Avvia l'impianto n.5, Controllo livello serbatoio, che rappresenta una classica applicazione dell’automazione
industriale. Sono disponibili i livellostati di funzionamento e di allarme, le valvole ed un pannello per la
gestione degli allarmi.
Per maggiori informazioni vedere nel Impianto n.5: Controllo livello serbatoio Capitolo 4.
Avvia l'impianto n.6, Nastri trasportatori, che simula un impianto di smistamento scatole con nastri
trasportatori. Sono presenti sensori, fotocellule, finecorsa, motori ed un pannello per il comando dell’impianto
e la gestione degli allarmi.
Per maggiori informazioni Impianto n.6: Nastri trasportatori vedere nel Capitolo 4.
Comando Ascensore
Avvia l'impianto n.7, Ascensore, un’altra classica applicazione dell’automazione all’impiantistica civile. Si
tratta di un impianto di ascensore a quattro piani con finecorsa, pulsanti di chiamata e di mandata, lampade
di segnalazione, fotocellula, motore.
Per maggiori informazioni vedere Impianto n.7: Ascensore nel Capitolo 4.
Avvia l’impianto n.8, Miscelatore liquidi, che permette di elaborare esercitazioni sull’automazione di ricette
che hanno come componenti tre diversi liquidi. Fanno parte di questo impianto: livellostati, termostato,
valvole ed elettropompe, sonde di livello e temperatura, nonché un pannello operatore per la gestione del
ciclo di funzionamento e degli allarmi.
Per maggiori informazioni vedere Impianto n.8: Miscelatore Liquidi nel Capitolo 4.
Avvia l’impianto n.9, Incrocio semaforizzato, che permette di elaborare esercitazioni sull’automazione di un
impianto semaforico con modi di funzionamento automatico, manuale e notturno.
Per maggiori informazioni vedere Impianto n.9: Incrocio semaforizzato nel Capitolo 4.
Comando PL-RIS
Comando PL-Lab
Comando PL-Net
Menu ?
Comando guida
Tastiera: F1
Richiama la guida in linea alla voce che fornisce informazioni sul sito WEB di Autoware.
Richiama la guida in linea alla voce che fornisce informazioni sulle modalità di assistenza agli utenti di
AW-SYS.
Barra strumenti
I pulsanti della barra strumenti di PC-Sim vi permettono di compiere alcune azioni, già viste per i comandi dei
menu, ma in modo più veloce. Nella barra sono stati raggruppati quei comandi che si richiamano più spesso
nell’uso di PC-Sim. Per spiegazioni a riguardo il lettore farà riferimento a quanto già detto negli equivalenti
comandi dei menu.
Nella Tabella 2 riportiamo l’elenco dei pulsanti, del nome del comando equivalente e del menu di
appartenenza, nonché il modello di PLC simulato per cui sono disponibili.
Senza programma
Non verrà stampato il codice di alcun blocco presente nel progetto (S5 100U e S7 300) o non verrà stampato
il programma (FPC 404 e PS3).
Tutto il programma
Verrà stampato il codice di tutti i blocchi presenti nel progetto, sia ladder che AWL che dati (S5 100U e S7
300) o verrà stampato il programma (FPC 404 e PS3).
Verrà stampato solamente il codice relativo al blocco correntemente selezionato nella Tabella blocchi.
Permette di inserire, nella casella a fianco, l’elenco dei blocchi da stampare. Le sigle dei blocchi devono
essere separate da virgole e sono consentiti anche i caratteri speciali ‘-’ e ‘*’. Di seguito riportiamo alcuni
esempi che chiariranno l’utilizzo della casella.
PB45: viene stampato il codice del solo blocco PB45.
OB1,OB34,PB45: vengono stampati i codici dei tre blocchi menzionati.
FB10-FB14: viene stampato il codice dei blocchi da FB10 a FB14 cioè: FB10, FB11, FB12, FB13 e FB14.
OB*: viene stampato il codice di tutti i blocchi organizzativi (OB) presenti nel programma.
Ma sono possibili anche inserimenti multipli ad es. OB*,PB12-PB14,DB35 che permette di stampare tutti gli
OB, i PB 12, 13, 14 ed il DB35.
Tipo operandi
L'attivazione di questa casella di controllo consente di stampare la lista dei blocchi presenti nel programma,
contenente le colonne Blocco, Tipo e Commento, così come presenti nella Tabella blocchi.
Essa consente di stampare anche la struttura del programma, cioè l’albero delle chiamate ai blocchi. Gli
alberi hanno come radice (blocco generante) i blocchi chiamati da sistema operativo cioè OB1, OB21, OB22
ed OB34. Saranno presenti nella stampa solo gli alberi relativi ai blocchi radice programmati. Cioè se, ad
esempio, non avete programmato l’OB34 per reagire alla scarica o disinserzione della batteria tampone,
l’albero relativo non sarà stampato perché inesistente.
Consente la stampa della lista delle attribuzioni corrente così definita come nella Finestra Tabella dei simboli,
organizzata in tabella con colonne per l’operando assoluto, quello simbolico ed il commento.
Liste incrociate
Con l'attivazione di questa casella di controllo si otterrà la stampa delle liste incrociate degli operandi,
verranno cioè stampati tutti gli operandi trovati nel programma ed, in corrispondenza di ognuno di essi,
verranno riportati i blocchi in cui sono stati trovati (S5 100U e S7 300) ed il numero di percorso, per i blocchi
Ladder, o il numero di linea, per i blocchi AWL, che contengono l’operando considerato. La lista incrociata è
estremamente importante in fase di debug del programma perché, come appena spiegato, vi consente di
conoscere le posizioni di ogni singolo operando all’interno del programma.
La casella di controllo Liste incrociate, una volta abilitata, vi consente inoltre di decidere per quali operandi
eseguire e stampare la ricerca. Sarà possibile abilitarla per gli ingressi, le uscite, i merker o flag, i
temporizzatori e contatori (FPC 404, S5 100 e S7 300) o per i moduli di sistema (PS3).
Le liste incrociate per gli ingressi, le uscite ed i merker per i PLC PS3, S5 100U e S7 300 forniscono
informazioni non solo per gli operandi specifici indirizzati a bit, ma anche per gli stessi tipi di operandi
indirizzati a byte ed a word.
Tabelle di occupazione
L'attivazione di questa casella di controllo della finestra Stampa documentazione permette la stampa di griglie
in cui ogni cella individua uno specifico operando. Le griglie sono organizzate per byte o per word a seconda
del PLC, ogni riga corrisponde infatti ad un byte o word d’ingresso, d’uscita o di memoria merker (flag). Le
colonne individuano all’interno di ciascun byte o word uno specifico bit corrispondente al numero della
colonna; ove possibile altre colonne individuano l’intero byte e l’intera word.
Le celle relative agli operandi utilizzati nel programma vengono annerite. Una rapida occhiata a questa
stampa permetterà di capire se avete già utilizzato un certo operando nel programma o di individuare, ad
esempio, un merker libero da utilizzare.
Cioè, ad esempio, se nel programma per S5 100U viene indirizzato l’ingresso E1.4, la cella corrisponde alla
riga EB1 ed alla colonna 4 risulterà annerita; così come la cella corrispondente alla riga AB2 ed alla colonna
B se nel programma avete utilizzato il byte di uscita AB2; ancora, se nel programma avete utilizzato la MW40,
le celle corrispondenti alle righe MB40 e MB41 ed alla colonna W risulteranno annerite.
Anche in questo caso è possibile abilitare singolarmente la stampa delle griglie relative agli ingressi, uscite,
merker (flag), temporizzatori e contatori (FPC 404, S5 100U e S7 300) o ai moduli di sistema (PS3).
Messaggi di avviso
In questo paragrafo riportiamo l’elenco di alcuni dei messaggi con cui PC-Sim risponde ad azioni o situazioni
anomale. Vengono riportati solo quelli per cui è necessario qualche chiarimento. Per ognuno di essi vengono
descritte le procedure per risolvere o evitare il problema.
La chiave hardware fornita nella confezione di PC-Sim non è stata inserita nella porta parallela del vostro
computer. Se il vostro computer è dotato di più di una porta parallela inserite la chiave in una qualsiasi di
queste, PC-Sim è in grado di ricercare la chiave su qualunque porta parallela.
Oppure, la porta parallela su cui avete inserito la chiave non viene vista da Windows, controllate le
impostazioni di sistema dal pannello di controllo.
Avete inserito nella porta parallela del vostro PC una chiave hardware per la versione 1 di PC-Sim. Contattate
Autoware srl – servizio commerciale per informazioni sulle modalità di aggiornamento di AW-SYS.
Un’istanza di PC-Sim o PC-RIS è già in esecuzione! Non è possibile avviare contemporaneamente (un
altro) PC-Sim
Una sola copia di PC-Sim è eseguibile per volta: una seconda istanza del programma non potrà essere
avviata, anche se relativa ad un diverso PLC. L’avvio di PC-Sim è impossibile anche quando PC-RIS è già in
esecuzione. Chiudere l’istanza di PC-Sim o PC-RIS in esecuzione e riprovare.
AW-SYS potrebbe non girare correttamente con questa modalità video. E’ consigliabile impostare
‘caratteri piccoli’ nelle proprietà dello schermo.
L’utilizzo di una modalità video ‘caratteri grandi’ o ‘caratteri molto grandi’ potrebbe portare ad irregolarità nella
visualizzazione delle immagini. Chiudete PC-Sim ed impostate una modalità ‘caratteri piccoli’ nella finestra di
dialogo Proprietà Schermo richiamabile dal Pannello di controllo di Windows.
Il file [nome progetto] è per un modello diverso di PLC. Impossibile aprire il progetto.
Il file progetto specificato nella finestra di dialogo Apri progetto è stato realizzato con la versione di PC-Sim
dedicata alla simulazione di un altro PLC. Chiudere la sessione corrente di PC-Sim, lanciare il simulatore
dell’altro PLC e riprovare ad aprire il progetto.
Il file specificato nella finestra di dialogo Apri progetto non è un progetto di PC-Sim. E’ impossibile caricare il
file.
Il nome del progetto inserito nella finestra di dialogo Apri progetto, o scelto direttamente dal Menu File, non è
valido o comunque non è presente alcun progetto con quel nome. Correggere il nome del file e riprovare.
Il nome del percorso del file inserito nella finestra di dialogo Apri progetto, o scelto direttamente dal Menu
File, non è valido o non esiste alcun percorso con quel nome. Correggere il nome del percorso e riprovare.
Si è tentato di sovrascrivere un file impostato a sola lettura. Salvare con un altro nome oppure rimuovere
l'attributo 'Sola lettura' dal file utilizzando la scheda Proprietà.
Durante l’apertura del progetto si è verificato un errore indeterminato. Contattare il Servizio Supporto Tecnico
Utenti AW-SYS.
Dopo aver avviato il Comando Salva progetto con nome... dal Menu File, si sta chiedendo di salvare il
progetto corrente con un nome di file già esistente.
Rispondere:
• Si se si desidera sovrascrivere il preesistente progetto;
• No se si desidera cambiare il nome del file scelto per la registrazione e quindi non sovrascrivere il
vecchio progetto;
• Annulla se si intende annullare la registrazione del progetto corrente.
E’ stata chiesta la chiusura del progetto corrente, con uno dei comandi Nuovo progetto, Apri progetto o Esci
del Menu File o con una delle azioni equivalenti, ma questo contiene modifiche non ancora registrate.
PC-Sim vi invita a registrare le modifiche prima di abbandonare il progetto.
Rispondere:
• Si se si desidera salvare il progetto;
• No se si non si desidera salvare il progetto, perdendo quindi le ultime modifiche apportate ad esso;
• Annulla se si intende annullare l’operazione di chiusura del progetto corrente.
E’ stata chiesta la chiusura del progetto corrente, con uno dei comandi Nuovo progetto, Apri progetto o Esci
del menu File o con una delle azioni equivalenti, ma questo è stato realizzato con una versione precedente di
PC-Sim. Vi viene chiesto se intendete aggiornare il file progetto al nuovo formato.
Rispondere:
• Si se si desidera aggiornare il progetto al nuovo formato;
• No se si desidera lasciare il file progetto nel vecchio formato;
• Annulla se si intende annullare l’operazione di chiusura del progetto corrente.
Nella creazione o nella rinominazione di un blocco è stato inserita, nella casella Blocco, una sigla non valida.
Le sigle di blocco valide per S5 100U vanno da OB0 a OB63 per i blocchi organizzativi, da PB0 a PB63 per i
blocchi di programma, da FB0 a FB63 per i blocchi funzionali e da DB2 a DB63 per i blocchi dati.
Le sigle di blocco valide per S7 300 vanno da OB0 a OB127 per i blocchi organizzativi, da FC0 a FB127 per le
funzioni e da DB2 a DB127 per i blocchi dati.
Correggere la sigla e riprovare.
Nella creazione di un blocco, o nella rinominazione di uno esistente, si è usata la sigla di un blocco già
presente nella Tabella blocchi. Ciò non è possibile: la sigla di ogni blocco dev’essere univoca. Assegnare un
nome univoco al blocco che si sta creando o rinominando.
E’ impossibile creare un ulteriore blocco nel progetto corrente perché quelli già presenti sono già il massimo
numero che PC-Sim per S5 100U o S7 300 può gestire: 100.
E’ stata raggiunta la dimensione massima consentita del {blocco | programma}. Impossibile eseguire
il comando.
E’ in uso la simulazione per FPC 404 o PS3 e si sta chiudendo un editor di programma il cui contenuto non è
stato salvato, o le cui ultime modifiche non sono state registrate.
Rispondere:
• Si se si desidera salvare il codice nella memoria di programma.
• No se non si desidera registrare il codice, perdendo così le variazioni successive all’ultimo
salvataggio.
• Annulla se si intende annullare l’operazione, cioè la chiusura dell’editor di programma.
E’ in uso la simulazione di S5 100U o S7 300 e si sta chiudendo un editor di blocco il cui contenuto non è
stato salvato, o le cui ultime modifiche non sono state registrate.
Rispondere:
• Si se si desidera salvare il blocco nella memoria di programma.
• No se non si desidera registrare il blocco, perdendo così le variazioni successive all’ultimo
salvataggio. Se il blocco non è mai stato salvato dalla sua creazione, verrà completamente
perso e la sua sigla eliminata dalla Tabella blocchi.
• Annulla se si intende annullare l’operazione, cioè la chiusura dell’editor di blocco.
Si è chiesto di eliminare un blocco dal progetto corrente. Il messaggio ve ne chiede la conferma per
sicurezza. Una volta eliminato un blocco, non ne sarà più possibile il recupero.
Dopo aver confermato l’eliminazione di un blocco, PC-Sim controlla che nel restante programma non vi siano
operazioni di chiamata al blocco in eliminazione. Se vengono trovate chiamate, questo messaggio vi avviserà
chiedendovi ancora conferma dell’eliminazione.
Infatti, le chiamate ad un blocco non presente, pur non provocando un errore nella compilazione e
nell’esecuzione del programma, costituiscono sicuramente un’anomalia di programmazione. Per trovare
rapidamente tutte le chiamate al blocco all’interno del programma, utilizzate il Comando Trova operando...
del menu Modifica digitando nella casella Trova la sigla del blocco eliminato.
Si è chiesto di rinominare un blocco in Edit o in Debug, così come è indicato nella Colonna Stato della
Tabella blocchi. L’operazione è impossibile. Chiudere il blocco e riprovare a rinominare.
Durante la fase di input di una nuova attribuzione nella Tabella simboli si è omesso di compilare il campo
relativo all’operando assoluto, oppure durante la modifica di una attribuzione esistente si è cancellato lo
stesso campo. Inserire un operando assoluto valido nel campo.
Durante la fase di input di una attribuzione si è digitato un nome di operando non valido nel campo operando
assoluto della Tabella simboli. Correggere l’operando.
L’elenco completo degli operandi validi è riportato nei paragrafi Indirizzamento all’interno dei capitoli dedicati
alle note di programmazione dei diversi PLC simulati.
Durante la fase di input di una nuova attribuzione nella Tabella simboli si omesso di compilare il campo
relativo al simbolo, oppure durante la modifica di una attribuzione esistente si è cancellato lo stesso campo.
Inserire il nome di un simbolo valido nella casella.
Durante la fase di input o di modifica di una attribuzione nella Tabella simboli si è digitato un operando
simbolico non valido nel campo Simbolo. Correggere il simbolo.
Consultate il paragrafo Operandi assoluti e simboli in questo capitolo per informazioni sulla sintassi degli
operandi simbolici.
L’operando assoluto che si sta utilizzando nel rigo corrente della Tabella simboli è già stato usato in un’altra
attribuzione. PC-Sim non consente l’attribuzione di più simboli ad un unico operando assoluto. Desistere
dalla attribuzione o utilizzare un altro operando assoluto.
Il simbolo che si sta utilizzando nel rigo corrente della Tabella simboli è già stato usato in un’altra attribuzione.
PC-Sim non consente l’attribuzione di un unico simbolo a più operandi assoluti. Inserire un simbolo diverso.
L’intera attribuzione, cioè la coppia operando assoluto e simbolo, è già presente nella Tabella simboli ed è
quindi già valida all’interno del progetto. Annullare l’inserimento.
Durante la fase di input nel campo Op.assoluto della Tabella variabili si è digitata la sigla di un operando
assoluto o simbolico non valido. Correggere l’operando.
L’elenco completo degli operandi assoluti validi è riportato nei paragrafi Indirizzamento all’interno dei capitoli
dedicati alle note di programmazione dei diversi PLC simulati.
Le regole sintattiche per la definizione dei simboli sono riportate nel paragrafo Operandi assoluti e simboli in
questo capitolo.
Nel campo Trova della finestra di dialogo Trova operando è stato digitato un operando assoluto o simbolico
non valido. Correggere l’operando.
L’elenco completo degli operandi assoluti validi è riportato nei paragrafi Indirizzamento all’interno dei capitoli
dedicati alle note di programmazione dei diversi PLC simulati.
Le regole sintattiche per i simboli sono riportate nel paragrafo Operandi assoluti e simboli in questo capitolo.
PC-Sim ha terminato la ricerca dell’operando indicato nella casella Trova delle finestre di dialogo Trova
Operando o Sostituisci operando all’interno dell’area specificata. Tutte le occorrenze dell’operando presenti
nel programma sono state trovate.
PC-Sim ha terminato la ricerca dell’operando indicato nella casella Trova delle finestre di dialogo Trova
Operando o Sostituisci operando all’interno dell’area specificata, senza trovare nessuna occorrenza
dell’operando.
Nel campo Sostituisci con della finestra di dialogo Sostituisci operando è stato digitato un operando assoluto
o simbolico non valido. Correggere l’operando.
L’elenco completo degli operandi assoluti validi è riportato nei paragrafi Indirizzamento all’interno dei capitoli
dedicati alle note di programmazione dei diversi PLC simulati.
Le regole sintattiche per i simboli sono riportate nel paragrafo Operandi assoluti e simboli in questo capitolo.
La casella Sostituisci con della finestra di dialogo Sostituisci operando contiene un operando incompatibile
con quello contenuto nella casella Trova. La sostituzione è impossibile.
Due operandi sono compatibili quando hanno lo stesso numero di bit e, per i moduli di sistema del PS3,
quando sono dello stesso tipo.
La sostituzione di operando è avvenuta con successo all’interno dell’area specificata. L’operando contenuto
nella casella Trova della finestra di dialogo Sostituisci operando è stato sostituito con quello nella casella
Sostituisci con il numero indicato di volte.
La sostituzione di operando non è avvenuta. Nessuna occorrenza dell’operando indicato nella casella Trova
della finestra di dialogo Sostituisci operando è stata trovata all’interno dell’area specificata.
PC-Sim per S5 100U o S7 300 ammettono un limite di 200 linee per la lunghezza dei blocchi AWL che
possono supportare la funzionalità di debug. Se il blocco supera questo limite, non è possibile effettuare il
debug e questo messaggio vi avvisa dell’evenienza. Provare a dividere il blocco in due parti, richiamando il
secondo al termine del primo, con un’istruzione di richiamo incondizionato di blocco e ad attivare per
entrambi il debug.
Nella casella Blocchi: della finestra di dialogo Stampa documentazione è stato inserito un elenco blocchi non
valido. Correggere l’inserimento.
Informazioni circa la compilazione della casella sono reperibili nel paragrafo Stampa della documentazione
nel presente capitolo.
L’operazione di importazione di un programma AWL non è stata conclusa con successo poiché il progetto
specificato nella finestra di dialogo Importa programma non contiene codice in questo linguaggio. Il
programma AWL corrente è rimasto inalterato.
L’operazione di importazione di un programma ladder non è stata conclusa con successo poiché il progetto
specificato nella finestra di dialogo Importa programma non contiene codice in questo linguaggio. Lo schema
a contatti corrente è rimasto inalterato.
L’operando assoluto [sigla operando] è già associato al simbolo [sigla simbolo] nella Tabella simboli
corrente. Si desidera aggiornare il commento?
Durante una procedura di importazione di simboli, PC-Sim ha rilevato che la coppia di [sigla operando] [sigla
simbolo] fa già parte della Tabella simboli corrente con un commento diverso e vi chiede se deve aggiornare
il commento dell’attribuzione a quello presente nel file specificato per l’importazione.
Rispondere:
• Si se si desidera sovrascrivere il commento attuale con quello prelevato dal file
• No se si desidera lasciare inalterato il commento attuale.
L’operando assoluto [sigla operando] è già presente nella tabella simboli corrente in associazione al
simbolo [sigla simbolo]. Si desidera aggiornare l’attribuzione col nuovo simbolo?
Durante una procedura di importazione di simboli, PC-Sim ha rilevato che l’operando assoluto
dell’attribuzione che si sta importando è già presente nella Tabella simboli corrente associato ad un diverso
simbolo. Un operando assoluto può essere associato ad un solo simbolo, pertanto vi viene chiesto se
intendete sostituire l’esistente con il nuovo.
Rispondere:
• Si se si desidera sovrascrivere il simbolo attuale con quello prelevato dal file
• No se si desidera lasciare inalterato il simbolo attuale.
Il simbolo [sigla simbolo] è già presente nella Tabella simboli corrente! Impossibile importare
l’attribuzione.
Durante una procedura di importazione di simboli, PC-Sim ha rilevato che il simbolo che si sta importando è
già presente nella Tabella simboli corrente, associato ad un diverso operando assoluto. Un simbolo può
essere associato ad un solo operando assoluto, pertanto non è possibile importare l’attribuzione.
L’operazione di importazione di simboli è stata completata senza che PC-Sim sia riuscito ad importare nuove
attribuzioni o ad aggiornarne di esistenti.
Operazione di edit attiva su una tabella della finestra. Si vuole veramente chiudere?
Si sta chiudendo la Finestra Tabella simboli, o la Finestra Stato variabili, o un editor dati oppure un editor
AWL di un blocco funzionale ma è ancora pendente un’operazione di edit sulla tabella nella finestra.
Rispondere:
• Si se si desidera chiudere la finestra perdendo quanto si stava editando
• No se si desidera continuare e terminare l’operazione di edit
E' stata richiesta la rinominazione di un blocco ma la nuova sigla digitata non è compatibile con la
precedente.
Fare riferimento alla tabella sottostante per chiarimenti sulla compatibilità tra sigle per S5 100U.
Vecchia sigla Nuova sigla
OB OB, PB, FB (*)
PB OB, PB, FB (*)
FB FB
DB DB
Fare riferimento alla tabella sottostante per chiarimenti sulla compatibilità tra sigle per S7 300.
Vecchia sigla Nuova sigla
OB OB, FC
FC OB, FC (*)
DB DB
Errori di compilazione
Al passaggio allo stato di RUN della CPU, PC-Sim compila il programma utente nel codice macchina
eseguibile dal PLC simulato. Durante questa operazione, vengono effettuati controlli sulla correttezza del
codice. In caso di errore, il PLC non verrà avviato e verrà mostrato un messaggio.
In questa sezione elenchiamo e descriviamo i messaggi di errore che possono essere mostrati a video e,
quando possibile, suggeriamo una soluzione al problema.
L’istruzione del programma o del blocco AWL è errata, oppure non appartiene al set di istruzioni del PLC
simulato. Correggere l’istruzione o sostituirla, se possibile, con una o più istruzioni comprese nel set.
Il programma utente, una volta compilato, eccede i limiti di memoria del PLC simulato. Se possibile,
accorciare il programma e riavviare la compilazione.
Il numero dei parametri nell’istruzione di chiamata a blocco funzionale o funzione parametrizzato non
corrisponde a quello atteso dal blocco. Aggiungere i parametri mancanti o eliminare quelli in eccesso.
Vedere Blocchi Funzionali (FB) nel Capitolo 14 o Funzioni (FC) ne Capitolo 16 per maggiori informazioni sulla
parametrizzazione dei blocchi.
Il tipo di uno dei parametri nell’istruzione di chiamata a blocco funzionale o funzione parametrizzato non
corrisponde a quello atteso dal blocco.
Vedere Blocchi Funzionali (FB) nel Capitolo 14 o Funzioni (FC) nel Capitolo 16 per maggiori informazioni
sulla parametrizzazione dei blocchi.
In un blocco di programma per S5 100U o S7 300 manca il terminatore di blocco, cioè l’operazione BE.
Digitare l’operazione alla fine del blocco e riavviare la compilazione riportando in Run la CPU.
Il compilatore del programma utente non riesce a rintracciare all’interno del blocco l’etichetta di arrivo di
un’istruzione di salto. Verificare il codice del blocco ed inserire l’etichetta.
Per S5 100U vedere anche i paragrafi Introduzione di etichette nel presente capitolo e Operazioni di salto nel
Capitolo 14.
Per S7 300 vedere anche i paragrafi Introduzione di etichette nel presente capitolo e Operazioni di salto nel
Capitolo 16.
Un blocco organizzativo (OB) o di programma (PB) di un programma per PLC S5 100U contiene
un’operazione del set integrativo. Queste operazioni possono essere programmate solo all’interno di blocchi
funzionali (FB). Sostituire se possibile l’operazione con una o più operazioni del set fondamentale oppure
rinominare il blocco assegnando ad esso la sigla di un blocco funzionale.
Per maggiori informazioni vedere il paragrafo Programmazione strutturata, la Tabella 26: Operazioni
fondamentali implementate e la Tabella 27: Operazioni integrative implementate nel Capitolo 14 e quanto
detto a proposito del Pulsante Rinomina della Finestra Lista blocchi (S5 100U e S7 300) nel presente
capitolo.
All’interno del programma utente esistono due o più riferimenti allo stesso modulo di sistema. Cambiare gli
operandi ripetuti per risolvere il problema.
Per maggiori informazioni sull’argomento vedere Moduli di sistema nel Capitolo 12
Nel programma o nel blocco ladder o AWL non è stato inserito l’operando in corrispondenza di un’operazione
o di un elemento dello schema. Inserire l’operando e riavviare la compilazione riportando in Run la CPU.
Nel programma o nel blocco ladder o AWL è stato inserito un operando non riconosciuto dal compilatore in
corrispondenza di un’operazione o di un elemento dello schema. Correggere l’operando e riavviare la
compilazione riportando in Run la CPU.
Per un elenco degli operandi supportati dai PLC simulati vedere i paragrafi Indirizzamento nel capitolo
dedicato alle note di programmazione del PLC che state utilizzando.
Nel programma o nel blocco ladder o AWL è stato inserito un operando non valido in corrispondenza di
un’operazione o di un elemento dello schema. Correggere l’operando e riavviare la compilazione riportando
in Run la CPU.
Per un elenco degli operandi supportati dai PLC simulati vedere i paragrafi Indirizzamento nel capitolo
dedicato alle note di programmazione del PLC che state utilizzando.
All’interno di una sequenza AWL per PLC PS3 è stata utilizzata un’istruzione con tipo di dati differente
rispetto a quello della sequenza. Correggere l’istruzione.
Per maggiori informazioni vedere il paragrafo Sequenza nel Capitolo 12.
All’interno di una sequenza AWL binaria per PLC PS3 sono state utilizzate più di 8 operazioni di caricamento
consecutive. In questa situazione il registro di stack verrebbe saturato nell’esecuzione del programma.
Spezzare la sequenza binaria in sequenze più corte, appoggiando i risultati intermedi in merker bit.
Per maggiori informazioni vedere Registro di stack e l’operazione L (Caricamento) nel Capitolo 12.
All’interno di una sequenza AWL binaria per PLC PS3, il numero di operazioni con il registro di stack è
maggiore del suo contenuto. Correggere la sequenza binaria.
Per maggiori informazioni vedere Registro di stack e le operazioni A (And), O (Or) e XO (Or esclusivo) nel
Capitolo 12.
All’interno di una sequenza AWL binaria per PLC PS3, il numero di operazioni con il registro di stack è
minore del suo contenuto. Correggere la sequenza binaria.
Per maggiori informazioni vedere Registro di stack e le operazioni L (Caricamento), A (And), O (Or) e XO (Or
esclusivo) nel Capitolo 12.
All’interno di un programma AWL per PS3, una sequenza viene iniziata con un’operazione non prevista per
questo scopo. Quella di caricamento è l’unica operazione valida per l’inizio di una sequenza. Correggere
l’istruzione.
Per maggiori informazioni vedere Sequenza e l’operazione L (Caricamento) nel Capitolo 12.
E’ programmata una chiamata a blocco funzionale non presente nel progetto. A differenza di quanto accade
per le chiamate a blocchi organizzativi o di programma (OB e PB), quelle a blocchi funzionali (FB)
necessitano che il blocco sia presente nel progetto per il controllo dei parametri. Eliminare la chiamata o
creare il blocco all’interno del progetto.
Vedere Programmazione strutturata ed Operazioni sui blocchi nel Capitolo 14 e Comando Nuovo blocco (S5
100U e S7 300) nel presente capitolo.
Un blocco AWL, con la simulazione del PLC S5 100U o S7 300, contiene un numero di operazioni di apertura
parentesi ‘U(‘, ‘O(‘ o ‘X(‘ diverso dal numero di quelle di chiusura ‘)’.
Controllare il blocco specificato e correggerlo rendendo uguali i numeri delle parentesi.
Errori di esecuzione
Gli errori elencati di seguito non possono, per loro natura, essere intercettati in fase di compilazione del
programma utente e vengono rilevati solo durante la sua esecuzione. Quando PC-Sim incontra uno di questi
errori porta automaticamente in STOP la CPU.
Il sistema operativo del PLC simulato ha riscontrato il superamento del limite di 16 per le chiamate di blocco
annidate e segnala l’errore. Correggere il programma utente.
Per maggiori informazioni vedere:
• S5 100U Programmazione strutturata ed Operazioni sui blocchi nel Capitolo 14.
• S7 300 Programmazione strutturata ed Operazioni di controllo del programma nel Capitolo 16.
Nell’esecuzione del programma utente è stata incontrata un’operazione di apertura di blocco dati che fa
riferimento ad un blocco non presente nel progetto. Programmare il DB richiesto all’interno del progetto
oppure correggere l’operando dell’istruzione modificando la sigla con quella di un DB esistente.
Vedere anche:
• S5 100U il paragrafo Blocchi Dati (DB) e la descrizione dell’operazione A (Apertura di un blocco dati) nel
Capitolo 14 e il Comando Nuovo blocco (S5 100U e S7 300) nel presente capitolo.
• S7 300 il paragrafo Blocchi Dati (DB) e la descrizione dell’operazione AUF (Apertura di un blocco dati)
nel Capitolo 16 e il Comando Nuovo blocco (S5 100U e S7 300) nel presente capitolo.
Per S5 100U: nell’esecuzione del programma utente è stata incontrata un’operazione di accesso a dati senza
che sia correntemente aperto nessun blocco di questo tipo. Correggere il programma aprendo il blocco dati
richiesto, con l’istruzione A DB, prima dell’operazione di accesso a dati.
Vedere il paragrafo Blocchi Dati (DB) e la descrizione dell’operazione A (Apertura di un blocco dati) nel
Capitolo 14.
Per S7 300: nell’esecuzione del programma utente è stata incontrata un’operazione di accesso a dati, nel cui
operando non è specificato il blocco dati, senza che sia correntemente aperto nessun blocco di questo tipo.
Correggere il programma aprendo il blocco dati richiesto, con l’istruzione AUF DB, prima dell’operazione di
accesso a dati oppure specificare il blocco dato nell’operando.
Vedere Indirizzamento e Blocchi Dati (DB) e la descrizione dell’operazione AUF (Apertura di un blocco dati)
nel Capitolo 16.
Nell’esecuzione del programma utente è stata incontrata un’operazione di accesso a dati che fa riferimento
ad una data word oltre l’ultima programmata nel blocco dati. Correggere il programma, verificando anche
l’apertura del blocco dati desiderato, o aumentare il numero di data word nel blocco dati in questione.
Vedere Blocchi Dati (DB) nel Capitolo 14.
Vedere anche:
• S5 100U Blocchi Dati (DB) nel Capitolo 14
• S7 300 Blocchi Dati (DB) nel Capitolo 16
Durante l’esecuzione del programma utente per S5 100U è stata incontrata un’operazione di elaborazione
seguita da un’istruzione non indicizzabile. Correggere il programma.
Per ulteriori informazioni vedere la descrizione dell’operazione B (Elaborazione di parola dati o merker) nel
Capitolo 14
In una operazione di indirizzamento indiretto per PLC S7 300, il puntatore fa riferimento ad una variabile al di
fuori del campo massimo indirizzabile.
Controllare il puntatore, esso contiene un valore troppo alto o negativo.
Per maggiori informazioni fare riferimento al paragrafo Indirizzamento nel Capitolo 16.
Il Programma Utente non restituisce il controllo al sistema operativo del PLC simulato. Portare in
Stop la CPU?
Apparentemente la CPU, a causa delle operazioni di salto programmate, continua ad eseguire sempre la
stessa parte di codice, senza ritornare a sistema operativo per circa 10 secondi. PC-Sim ha rilevato questo
problema e vi chiede se intendete terminare l’elaborazione del programma utente.
Rispondere:
• Si se si desidera terminare portando in Stop la CPU.
• No se si desidera attendere per altri 10 secondi che il programma si sblocchi.
Per ulteriori informazioni leggere il paragrafo Controllo del tempo di ciclo nel capitolo dedicato alle note di
programmazione dello specifico PLC che state utilizzando.
Introduzione
PL-Sim è il modulo di AW-SYS dedicato alla simulazione degli impianti.
Gli impianti di PL-Sim sono stati ideati e realizzati tenendo sempre presente la loro finalità didattica, sono
semplici da usare e, generalmente, offrono la possibilità di realizzare diverse esercitazioni. Spaziano in
diversi campi: dalle semplici simulazioni di banchi di elettropneumatica a più complesse applicazioni
dell’automazione nell’impiantistica civile ed industriale.
Rispetto ai bachi di simulazione o alla modellistica reale, gli impianti simulati hanno il vantaggio di essere
semplici da usare, di non richiedere tarature e, non meno importante, di poter essere usati e riusati senza
rompersi mai! Alcuni degli impianti simulati, poi, sarebbero quasi impossibili da realizzare come modelli reali,
se non a prezzi estremamente proibitivi in termini di spazio occupato, costi di realizzazione e manutenzione.
Immaginate, per esempio, quello che potrebbe costare la realizzazione o l’acquisto di un modellino di
ascensore o, peggio, di un impianto di miscelazione, del tipo di quello descritto più avanti in questo capitolo e
fornito, come gli altri, nel pacchetto AW-SYS.
I sensori e gli attuatori presenti negli impianti simulati possono essere collegati agli ingressi ed alle uscite dei
PLC di PC-Sim o a sistemi di controllo reali attraverso il modulo PC-RIS. L’eccitazione di un sensore ON-
OFF chiuderà l’ingresso del PLC a cui è connesso, e l’attivazione di un’uscita del PLC ecciterà l’attuatore
dell’impianto ad essa collegato.
Il compito dell’utente di AW-SYS sarà quello di progettare e scrivere, una volta scelto uno dei PLC ed uno
degli impianti, un programma per il primo che risolva il compito di rendere automatico il funzionamento del
secondo.
In questo capitolo vengono descritti i diversi impianti che compongono PL-Sim e le modalità di collegamento
dei loro componenti ai PLC simulati.
Composizione dell’impianto
Questo impianto di PL-Sim simula un banco per esercitazioni di elettropneumatica. Esso è composto da tre
cilindri pneumatici a doppio effetto (A, B e C) pilotati ognuno da un distributore 5/2 bistabile. Il comando dei
distributori è di tipo elettrico, ognuno di essi è fornito sia di solenoide positivo (A+, B+ e C+) che negativo (A-,
B- e C-). Tutti i cilindri sono equipaggiati con finecorsa negativi (a0, b0 e c0) e positivi (a1, b1 e c1).
Finecorsa dei cilindri e solenoidi dei distributori sono dotati di LED di segnalazione dello stato. L’accensione
del LED indica l’eccitazione del finecorsa o l’attivazione del solenoide. I distributori sono forniti di pulsanti di
comando manuale.
A partire da una condizione di cilindro a finecorsa negativo, l’attivazione del solenoide positivo fa commutare
il distributore e l’aria compressa può affluire nella camera positiva del cilindro e fuoriuscire da quella negativa.
Il pistone si muoverà, abbandonando il finecorsa negativo; quindi, compiendo la corsa positiva, raggiungerà il
finecorsa positivo.
Al contrario, l’attivazione del solenoide negativo fa commutare nuovamente il distributore e l’aria compressa
può affluire, questa volta, nella camera negativa e fuoriuscire da quella positiva. Il pistone si muoverà,
abbandonando il finecorsa positivo; quindi, compiendo la corsa negativa, raggiungerà il finecorsa negativo.
Appena eccitato un solenoide, il distributore commuta e, essendo bistabile, permane in quella posizione,
anche togliendo l’alimentazione al solenoide, fino a quando non viene eccitato il solenoide opposto.
L’eccitazione contemporanea dei due solenoidi porta alla indeterminazione dello stato del distributore, e
quindi della posizione del cilindro, e costituisce una condizione da evitare nella programmazione del PLC.
D’altro canto, l’eccitazione di un solenoide quando sia già attivo quello opposto non fa commutare il
distributore, che rimane nel suo stato fino all’eliminazione del comando all'altro solenoide.
I pulsanti di comando ai lati di ogni distributore ne consentono la commutazione manuale e risultano perciò
utili in fase di messa a punto del programma. Premendo questi pulsanti potrete far commutare il distributore,
facendo compiere al cilindro la corsa positiva o quella negativa.
Barra strumenti
La Barra strumenti è la parte estrema verso il basso della finestra. In essa sono raggruppati i controlli
generali dell’impianto.
Abilita o disabilita l'emissione di suoni attraverso la scheda audio. Si ricorda che potrete ascoltare i suoni
soltanto se sul vostro computer è installata una scheda audio e i driver audio di Windows sono stati
correttamente caricati. Per informazioni su come caricare i driver consultare il manuale del vostro Windows.
Pulsante Run
Consente l'avvio della base tempi dell’impianto e disabilita il funzionamento a passi. Normalmente deve
essere premuto al fine di consentire il movimento dei distributori e dei cilindri.
Pulsante Stop
Consente di fermare la base tempi dell’impianto cioè congela la posizione attuale dei componenti pneumatici.
Abilita il funzionamento a passi.
Pulsante Passo
Selettore di velocità
Consente di regolare la velocità di movimento dei cilindri. Spostate il cursore a sinistra per rallentare la
velocità di funzionamento della pneumatica o a destra per accelerarla.
Ogni finecorsa è dotato di contatto deviato e, durante l’operazione di collegamento al PLC, sarà possibile
scegliere il tipo di contatto da utilizzare, NA o NC.
Per effettuare i collegamenti procedere secondo quanto descritto nel paragrafo Collegare gli impianti al PLC
più avanti in questo capitolo. Nei pressi di ogni componente comparirà l'indirizzo del canale collegato: in blu
per gli ingressi, in rosso per le uscite.
Ricordate che non è possibile collegare due sensori dell'impianto allo stesso canale di ingresso del PLC.
Questa eventualità viene segnalata da PL-Sim con un messaggio di errore.
Test dell'automazione
Per verificare la correttezza del programma realizzato, mettete in Run il PLC e controllate che i movimenti dei
cilindri avvengano secondo la sequenza prefissata. Se necessario, riducete la velocità o avanzate passo-
passo, come spiegato in precedenza. Se avete utilizzato merker (flag), temporizzatori o contatori nel vostro
programma, potrà tornarvi utile la Finestra Stato variabili di PC-Sim per controllarne stato e/o valore. Se il
ciclo non funziona correttamente, o non funziona per nulla, vi potranno tornare molto utili le potenzialità di
debug offerte dall’editor che avete utilizzato per scrivere il programma.
Se utilizzate una simulazione di PLC FPC 404 la Finestra Impostazioni preset vi servirà per impostare valori
di temporizzazione e conteggio.
Composizione dell’impianto
Questo impianto di PL-Sim simula un ulteriore banco per esercitazioni di elettropneumatica. Esso è
composto da tre cilindri pneumatici a doppio effetto (A, B e C) pilotati ognuno da un distributore 5/2
monostabile. Il comando dei distributori è di tipo elettrico, ognuno di essi è fornito di solenoide positivo (A+,
B+ e C+), il ritorno è di tipo meccanico a molla. Tutti i cilindri sono equipaggiati con finecorsa negativi (a0, b0
e c0) e positivi (a1, b1 e c1). Finecorsa dei cilindri e solenoidi dei distributori sono dotati di LED di
segnalazione dello stato. L’accensione del LED indica l’eccitazione del finecorsa o l’attivazione del solenoide.
I distributori sono forniti di pulsante di comando manuale.
A partire da una condizione di cilindro a finecorsa negativo, l’attivazione del solenoide fa commutare il
distributore e l’aria compressa può affluire nella camera positiva del cilindro e fuoriuscire da quella negativa.
Il pistone si muoverà, abbandonando il finecorsa negativo; quindi, compiendo la corsa positiva, raggiungerà il
finecorsa positivo.
Al contrario, la disattivazione del solenoide permette alla molla di commutare nuovamente il distributore, e
riportarlo nella posizione stabile. L’aria compressa può affluire, questa volta, nella camera negativa e
fuoriuscire da quella positiva. Il pistone si muoverà, abbandonando il finecorsa positivo; quindi, compiendo la
corsa negativa, raggiungerà il finecorsa negativo.
Appena eccitato il solenoide, il distributore commuta e, essendo monostabile, permane in quella posizione,
finché il solenoide rimane alimentato. Togliendo l’alimentazione, il distributore si riporta nella posizione
originaria.
Il pulsante di comando al lato di ogni distributore ne consente la commutazione manuale e risulta perciò utile
in fase di messa a punto del programma. Premendo questo pulsante potrete far commutare il distributore,
facendo compiere al cilindro la corsa positiva; rilasciando il pulsante il distributore commuterà nuovamente
ed il cilindro compirà la corsa negativa.
Barra strumenti
La Barra strumenti è la parte estrema verso il basso della finestra. In essa sono raggruppati i controlli
generali dell’impianto.
Abilita o disabilita l'emissione di suoni attraverso la scheda audio. Si ricorda che potrete ascoltare i suoni
soltanto se sul vostro computer è installata una scheda audio e i driver audio di Windows sono stati
correttamente caricati. Per informazioni su come caricare i driver consultare il manuale del vostro Windows.
Pulsante Run
Consente l'avvio della base tempi dell’impianto e disabilita il funzionamento a passi. Normalmente deve
essere premuto al fine di consentire il movimento dei distributori e dei cilindri.
Pulsante Stop
Consente di fermare la base tempi dell’impianto cioè congela la posizione attuale dei componenti pneumatici.
Abilita il funzionamento a passi.
Pulsante Passo
Selettore di velocità
Consente di regolare la velocità di movimento dei cilindri. Spostate il cursore a sinistra per rallentare la
velocità di funzionamento della pneumatica o a destra per accelerarla.
Ogni finecorsa è dotato di contatto deviato e, durante l’operazione di collegamento al PLC, sarà possibile
scegliere il tipo di contatto da utilizzare, NA o NC.
Per effettuare i collegamenti procedere secondo quanto descritto nel paragrafo Collegare gli impianti al PLC
più avanti in questo capitolo. Nei pressi di ogni componente comparirà l'indirizzo del canale collegato: in blu
per gli ingressi, in rosso per le uscite.
Ricordate che non è possibile collegare due sensori dell'impianto allo stesso canale di ingresso del PLC.
Questa eventualità viene segnalata da PL-Sim con un messaggio di errore.
Test dell'automazione
Per verificare la correttezza del programma realizzato, mettete in Run il PLC e controllate che i movimenti dei
cilindri avvengano secondo la sequenza prefissata. Se necessario, riducete la velocità o avanzate passo-
passo, come spiegato in precedenza. Se avete utilizzato merker (flag), temporizzatori o contatori nel vostro
programma, potrà tornarvi utile la Finestra Stato variabili di PC-Sim per controllarne stato e/o valore. Se il
ciclo non funziona correttamente, o non funziona per nulla, vi potranno tornare molto utili le potenzialità di
debug offerte dall’editor che avete utilizzato per scrivere il programma.
Se utilizzate una simulazione di PLC FPC 404 la Finestra Impostazioni preset vi servirà per impostare valori
di temporizzazione e conteggio.
Composizione dell’impianto
Questo impianto di PL-Sim simula l’ultimo banco per esercitazioni di elettropneumatica. Esso è composto da
tre cilindri pneumatici a semplice effetto (A, B e C) pilotati ognuno da un distributore 3/2 monostabile. Il
comando dei distributori è di tipo elettrico, ognuno di essi è fornito di solenoide positivo (A+, B+ e C+), il
ritorno è di tipo meccanico a molla. Tutti i cilindri sono equipaggiati con finecorsa negativi (a0, b0 e c0) e
positivi (a1, b1 e c1). Finecorsa dei cilindri e solenoidi dei distributori sono dotati di LED di segnalazione dello
stato. L’accensione del LED indica l’eccitazione del finecorsa o l’attivazione del solenoide. I distributori sono
forniti di pulsante di comando manuale.
A partire da una condizione di cilindro a finecorsa negativo, l’attivazione del solenoide fa commutare il
distributore e l’aria compressa può affluire nella camera positiva del cilindro. Il pistone si muoverà,
abbandonando il finecorsa negativo; quindi, compiendo la corsa positiva e comprimendo la molla,
raggiungerà il finecorsa positivo.
Al contrario, la disattivazione del solenoide permette alla molla di commutare nuovamente il distributore, e
riportarlo nella posizione stabile. L’aria compressa può ora fuoriuscire dalla camera positiva e la molla del
cilindro porterà indietro il pistone; questo, abbandonando il finecorsa positivo, compirà la corsa negativa, fino
a raggiungere il finecorsa negativo.
Appena eccitato il solenoide, il distributore commuta e, essendo monostabile, permane in quella posizione,
finché il solenoide rimane alimentato. Togliendo l’alimentazione, il distributore si riporta nella posizione
originaria.
Il pulsante di comando al lato di ogni distributore ne consente la commutazione manuale e risulta perciò utile
in fase di messa a punto del programma. Premendo questo pulsante potrete far commutare il distributore,
facendo compiere al cilindro la corsa positiva; rilasciando il pulsante il distributore commuterà nuovamente
ed il cilindro compirà la corsa negativa.
Barra strumenti
La Barra strumenti è la parte estrema verso il basso della finestra. In essa sono raggruppati i controlli
generali dell’impianto.
Abilita o disabilita l'emissione di suoni attraverso la scheda audio. Si ricorda che potrete ascoltare i suoni
soltanto se sul vostro computer è installata una scheda audio e i driver audio di Windows sono stati
correttamente caricati. Per informazioni su come caricare i driver consultare il manuale del vostro Windows.
Pulsante Run
Consente l'avvio della base tempi dell’impianto e disabilita il funzionamento a passi. Normalmente deve
essere premuto al fine di consentire il movimento dei distributori e dei cilindri.
Pulsante Stop
Consente di fermare la base tempi dell’impianto cioè congela la posizione attuale dei componenti pneumatici.
Abilita il funzionamento a passi.
Pulsante Passo
Selettore di velocità
Consente di regolare la velocità di movimento dei cilindri. Spostate il cursore a sinistra per rallentare la
velocità di funzionamento della pneumatica o a destra per accelerarla.
Ogni finecorsa è dotato di contatto deviato e, durante l’operazione di collegamento al PLC, sarà possibile
scegliere il tipo di contatto da utilizzare, NA o NC.
Per effettuare i collegamenti procedere secondo quanto descritto nel paragrafo Collegare gli impianti al PLC
più avanti in questo capitolo. Nei pressi di ogni componente comparirà l'indirizzo del canale collegato: in blu
per gli ingressi, in rosso per le uscite.
Ricordate che non è possibile collegare due sensori dell'impianto allo stesso canale di ingresso del PLC.
Questa eventualità viene segnalata da PL-Sim con un messaggio di errore.
Test dell'automazione
Per verificare la correttezza del programma realizzato, mettete in Run il PLC e controllate che i movimenti dei
cilindri avvengano secondo la sequenza prefissata. Se necessario, riducete la velocità o avanzate passo-
passo, come spiegato in precedenza. Se avete utilizzato merker (flag), temporizzatori o contatori nel vostro
programma, potrà tornarvi utile la Finestra Stato variabili di PC-Sim per controllarne stato e/o valore. Se il
ciclo non funziona correttamente, o non funziona per nulla, vi potranno tornare molto utili le potenzialità di
debug offerte dall’editor che avete utilizzato per scrivere il programma.
Se utilizzate una simulazione di PLC FPC 404 la Finestra Impostazioni preset vi servirà per impostare valori
di temporizzazione e conteggio.
Composizione dell’impianto
Questo impianto di PL-Sim vi propone una classica applicazione dell'automazione nel campo civile: un
cancello elettrico.
La parte superiore della finestra mostra lo scenario di un ingresso ad una abitazione. In primo piano notiamo
il cancello che è provvisto di finecorsa di apertura e chiusura, fotocellula, motore elettrico e lampeggiatore.
Nella parte inferiore, invece, sono rappresentati il telecomando, con i pulsanti di apertura e chiusura, la
morsettiera del quadro elettrico, destinata ad effettuare i collegamenti dei componenti dell’impianto con gli
ingressi e le uscite del PLC, e i pulsanti per il movimento manuale.
La morsettiera è suddivisa in due parti: a sinistra sono raccolti i segnali di ingresso, a destra quelli di uscita.
Per ognuno di essi è presente un LED di segnalazione dello stato di colore verde, la cui accensione
corrisponde all’eccitazione dell’ingresso o all’attivazione dell’uscita.
Gli ultimi due LED, di colore giallo, ci informano lampeggiando dell’avvenuto intervento di una delle
protezioni, termica o magnetica, del circuito di alimentazione del motore.
Il lampeggiatore non è dotato di circuito di lampeggio autonomo cioè, quando alimentato, rimane
continuamente acceso. Sempre con un occhio di riguardo alla didattica, sarete voi a dover realizzare il
lampeggio attraverso un’opportuna programmazione del PLC.
I pulsanti di comando manuale vi consentono di muovere e posizionare il cancello manualmente e non
rientrano nell'automazione, cioè non vanno collegati al PLC.
La corsa del cancello viene fermata meccanicamente in corrispondenza del finecorsa di chiusura e
leggermente oltre il finecorsa di apertura. Continuare ad alimentare il motore in queste condizioni porterebbe
al sovraccarico ed al conseguente intervento del relè termico di protezione. L’intervento del termico, che
viene segnalato per mezzo del lampeggio del relativo LED, mantiene in apertura i contattori di comando del
motore fino al suo ripristino. Quest’ultimo potrà essere effettuato solo manualmente premendo il pulsante R.
Perciò, prestate attenzione nella realizzazione dell’automazione a togliere l’alimentazione al motore quando il
cancello raggiunge una posizione di finecorsa.
Analogamente se attivate contemporaneamente i contattori di apertura e chiusura non essendo questi dotati
di interblocco, né elettrico né meccanico, si genera un cortocircuito che provocherà l’intervento del relè
magnetico dell’interruttore di protezione. Questa condizione, segnalata con il lampeggio del relativo LED,
impedirà l’alimentazione del motore fino al ripristino che potrà essere effettuato dallo stesso pulsante R.
Di seguito riportiamo la descrizione delle sigle usate nella morsettiera elettrica virtuale e delle funzioni che i
corrispondenti segnali svolgono.
Sigla Descrizione
FCC finecorsa chiusura cancello, viene eccitato quando il cancello è completamente chiuso.
FCA finecorsa apertura cancello, viene eccitato quando il cancello è completamente aperto.
FOTOC. fotocellula, viene eccitata dalla simulazione dell’interruzione del raggio.
TELESX contatto eccitato dalla pressione del pulsante sinistro del telecomando.
TELEDX contatto eccitato dalla pressione del pulsante destro del telecomando.
CHIUSURA attuazione del motore (chiusura cancello), attivando questa uscita viene avviato il motore con
senso di rotazione che permette la chiusura del cancello.
APERTURA attuazione del motore (apertura cancello), attivando questa uscita viene avviato il motore con
senso di rotazione che permette l'apertura del cancello.
LAMPEG. comando lampeggiatore.
TERMICO segnalazione lampeggiante dell’intervento del relè termico.
MAGNETICO segnalazione lampeggiante dell’intervento del relè magnetico.
Per testare l’eccitazione del finecorsa FCA, premete il comando manuale per l’apertura del cancello fino alla
completa apertura, il corrispondente LED verrà attivato.
Per il finecorsa FCC premete il comando manuale di chiusura fino alla completa chiusura, il LED
corrispondente verrà attivato.
Per simulare l’intervento della fotocellula, portate il puntatore del mouse tra i rilevatori, in una zona di apertura
del cancello. Il puntatore si trasforma per informarvi che in questa posizione è possibile interrompere il
raggio. Fate clic, il raggio si interrompe ed il LED corrispondente alla fotocellula nella morsettiera si accende.
Premete i pulsanti del telecomando per testare l’eccitazione dei contatti TELESX e TELEDX e verificate
l’accensione del LED corrispondente..
Barra strumenti
La Barra strumenti è la parte estrema verso il basso della finestra. In essa sono raggruppati i controlli
generali dell’impianto.
L'unico presente in questo impianto è:
Abilita o disabilita l'emissione di suoni attraverso la scheda audio. Si ricorda che potrete ascoltare i suoni
soltanto se sul vostro computer è installata una scheda audio e i driver audio di Windows sono stati
correttamente caricati. Per informazioni su come caricare i driver consultare il manuale del vostro Windows.
Modalità di utilizzo
Lo scopo dell’esercitazione è scrivere un programma per PLC che permetta un funzionamento corretto del
cancello. Cioè l’automazione deve realizzare le seguenti funzioni:
Ogni ingresso è dotato di contatto deviato e, durante l’operazione di collegamento al PLC, sarà possibile
scegliere il tipo di contatto da utilizzare, NA o NC.
Per effettuare i collegamenti procedere secondo quanto descritto nel paragrafo Collegare gli impianti al PLC
più avanti in questo capitolo. Nei pressi di ogni componente comparirà l'indirizzo del canale collegato: in blu
per gli ingressi, in rosso per le uscite.
Ricordate che non è possibile collegare due sensori dell'impianto allo stesso canale di ingresso del PLC.
Questa eventualità viene segnalata da PL-Sim con un messaggio di errore.
Test dell'automazione
Dopo aver scritto il vostro programma o caricato l'esempio, mettete in RUN il PLC. Premete, quindi, il
pulsante di apertura. Il motore dovrà essere comandato in apertura e contemporaneamente si dovrà attivare
il lampeggiatore fino al raggiungimento del finecorsa di apertura.
Attendete per il tempo impostato il cancello dovrà chiudersi.
Provate a testare ora il comando di chiusura da telecomando. Se il cancello è aperto o sta aprendosi dovrà
iniziare la corsa di chiusura.
Se durante una fase di chiusura interrompete il raggio della fotocellula, come descritto in precedenza, il
cancello dovrà invertire la sua marcia.
Durante tutte le fasi di movimento del cancello il lampeggiatore dovrà accendersi.
Se avete utilizzato merker (flag), temporizzatori o contatori nel vostro programma, potrà tornarvi utile la
Finestra Stato variabili di PC-Sim per controllarne stato e/o valore. Se l’automazione non funziona
correttamente, o non funziona per nulla, vi potranno tornare molto utili le potenzialità di debug offerte
dall’editor che avete utilizzato per scrivere il programma.
Se utilizzate una simulazione di PLC FPC 404 la Finestra Impostazioni preset vi servirà per impostare valori
di temporizzazione e conteggio.
Descrizione
Questo impianto vi propone il compito di regolare il livello di un serbatoio di liquido in modo da garantire un
sufficiente accumulo per gli impianti a valle. Quando la quantità di liquido diventasse troppo poca o quando si
rischiasse la tracimazione del serbatoio occorrerà generare e gestire degli allarmi.
La finestra contiene nella parte superiore il serbatoio equipaggiato con quattro livellostati per le funzioni
descritte di seguito.
Livellostato Funzione
HH alto livello di allarme, se il liquido supera questo livello occorrerà generare un allarme per
avvisare l’operatore di una prossima tracimazione del serbatoio;
H alto livello di funzionamento, rappresenta il livello massimo che il liquido potrà raggiungere
durante il normale funzionamento;
L basso livello di funzionamento, rappresenta il livello minimo che il liquido potrà raggiungere
durante il normale funzionamento;
LL basso livello di allarme, se il livello del liquido va al di sotto di questo livellostato occorrerà
generare un allarme per avvisare l’operatore che il serbatoio non ha più una sufficiente
scorta per gli impianti.
Ogni livellostato si eccita quando l’altezza del liquido nel serbatoio supera il proprio livello. L’eccitazione viene
segnalata dall’accensione del LED: nell'esempio in figura risultano eccitati LL ed L e diseccitati H ed HH.
La tubazione di adduzione, quella superiore, è intercettata dalla valvola d'ingresso. L'attuatore di quest'ultima
è comandato dal selettore del modo di funzionamento con le seguenti possibilità:
La tubazione di uscita, quella inferiore, è intercettata dalla valvola di uscita. L'attuatore di quest'ultima è
comandato dal selettore del modo di funzionamento con le seguenti possibilità:
Non è possibile, né avrebbe senso per lo scopo proposto, comandare questa valvola dal PLC.
La parte inferiore della finestra mostra il quadro di segnalazione e gestione degli allarmi; su esso sono
disponibili i componenti elencati di seguito.
Pulsante Reset
Permette di resettare un allarme. Deve spegnere le segnalazioni di allarme se la causa che le ha provocate è
cessata.
Pulsante Tacitazione
Permette la tacitazione della sirena. Deve spegnere la sirena fino alla generazione di un nuovo allarme.
E' la rappresentazione di un segnalatore ottico di allarme di massimo livello. Ammette due rappresentazioni
grafiche:
lampada spenta con uscita del PLC a zero.
lampada accesa con uscita del PLC a uno.
E' la rappresentazione di un segnalatore ottico di allarme di massimo livello. Ammette due rappresentazioni
grafiche:
lampada spenta con uscita del PLC a zero.
lampada accesa con uscita del PLC a uno.
Sirena
E' la rappresentazione della sirena di allarme. Essa può essere collegata ad una qualsiasi uscita del PLC.
Ammette due rappresentazioni grafiche:
Se nel vostro PC è installata una scheda audio potrete udirne il suono, altrimenti vi orienterete con la
rappresentazione grafica.
Barra strumenti
La Barra strumenti è la parte estrema verso il basso della finestra. In essa sono raggruppati i controlli
generali dell’impianto.
Abilita o disabilita l'emissione di suoni attraverso la scheda audio. Si ricorda che potrete ascoltare i suoni
soltanto se sul vostro computer è installata una scheda audio e i driver audio di Windows sono stati
correttamente caricati. Per informazioni su come caricare i driver consultare il manuale del vostro Windows.
Pulsante Registratore
Mostra la simulazione del registratore a carta che riporta l'andamento temporale (il trend) del segnale del
trasmettitore di livello.
Finestra Registratore
Simula un componente molto comune nelle applicazioni industriali: il registratore a carta. Su un supporto
cartaceo, graduato in verticale in percentuale ed in orizzontale con una scala di tempi, viene tracciato, istante
per istante, il punto corrispondente al valore del livello nel serbatoio. Viene così a formarsi graficamente
l'andamento nel tempo (il trend) del segnale di livello che vi consente di valutare la bontà della regolazione
attuata.
Una volta esaurito lo spazio di visualizzazione, la finestra scrolla: i campioni più vecchi vengono perduti e
viene procurato spazio per i nuovi in arrivo.
Modalità di utilizzo
Lo scopo dell’esercitazione è scrivere un programma per PLC che permetta di mantenere il livello del
serbatoio tra i livelli H ed L e generi degli allarmi quando il livello sia superiore ad HH o inferiore ad LL. La
gestione degli allarmi potrebbe, ad esempio, avvenire con le seguenti modalità:
• se il livello è al di sopra di HH o al di sotto di LL si dovrà azionare la sirena e la lampada corrispondente
all'allarme (min o max)
• la sirena dovrà spegnersi se viene premuto il Pulsante Tacitazione o se il livello ritorna al di fuori delle
condizioni di allarme
• la lampada dovrà spegnersi se il livello ritorna al di fuori delle condizioni di allarme e se si fa clic sul
Pulsante Reset. Ciò garantisce la memoria dell’allarme ed il fatto che ad un operatore,
momentaneamente distratto, non sfugga l’evento di un’attivazione di allarme e successivo rientro.
Il programma potrebbe essere poi migliorato facendo lampeggiare le lampade di segnalazione min e MAX
durante la condizione di allarme e accendendole fisse quando questo rientra. Lo spegnimento avverrà
sempre a seguito della pressione sul Pulsante Reset.
Ogni ingresso è dotato di contatto deviato e, durante l’operazione di collegamento al PLC, sarà possibile
scegliere il tipo di contatto da utilizzare, NA o NC.
Per effettuare i collegamenti procedere secondo quanto descritto nel paragrafo Collegare gli impianti al PLC
più avanti in questo capitolo. Nei pressi di ogni componente comparirà l'indirizzo del canale collegato: in blu
per gli ingressi, in rosso per le uscite.
Ricordate che non è possibile collegare due sensori dell'impianto allo stesso canale di ingresso del PLC.
Questa eventualità viene segnalata da PL-Sim con un messaggio di errore.
Test dell'automazione
Per verificare la correttezza del programma realizzato mettete in Run il PLC ed in automatico le valvole di
ingresso e di uscita e osservate il livello del serbatoio: superato il livello H la valvola di ingresso dovrà
chiudersi, il serbatoio si svuoterà progressivamente in funzione delle richieste degli impianti a valle. Quando il
livello diventerà inferiore ad L la valvola di ingresso dovrà riaprirsi.
Per verificare l'allarme di massimo mettete in condizione di apertura manuale la valvola d'ingresso (selettore
su 1) ed eventualmente chiudete la valvola di uscita (selettore su 0), simulando così un malfunzionamento
degli organi a campo. Il livello del serbatoio aumenterà progressivamente e, una volta superato il livello HH,
dovranno accendersi la sirena e l'indicatore di massimo (MAX). La prima dovrà spegnersi alla pressione sul
pulsante di tacitazione, il secondo alla pressione del pulsante di reset allarmi una volta che la causa di
allarme sia scomparsa.
Per far scomparire la causa di allarme occorre che il livello torni ad essere compreso tra LL ed HH. Per
ottenere ciò, rimettete in automatico entrambe le valvole (selettori su A) ed aspettate.
Per verificare l'allarme di minimo mettete in condizione di chiusura manuale la valvola d'ingresso (selettore su
0) ed eventualmente aprite la valvola di uscita (selettore su 1) simulando così un malfunzionamento degli
organi a campo. Il livello del serbatoio diminuirà progressivamente e, una volta superato il livello LL,
dovranno accendersi la sirena e l'indicatore di minimo (min). La prima dovrà spegnersi alla pressione sul
pulsante di tacitazione, il secondo alla pressione del pulsante di reset allarmi una volta che la causa di
allarme sia scomparsa.
Per far scomparire la causa di allarme occorre che il livello torni ad essere compreso tra LL ed HH. Per
ottenere ciò, rimettete in automatico entrambe le valvole (selettori su A) ed aspettate.
Se avete utilizzato merker (flag), temporizzatori o contatori nel vostro programma, potrà tornarvi utile la
Finestra Stato variabili di PC-Sim per controllarne stato e/o valore. Se l’automazione non funziona
correttamente, o non funziona per nulla, vi potranno tornare molto utili le potenzialità di debug offerte
dall’editor che avete utilizzato per scrivere il programma.
Se utilizzate una simulazione di PLC FPC 404, infine, la Finestra Impostazioni preset vi servirà per impostare
valori di temporizzazione e conteggio.
Come ultima possibilità, provate a confrontare la vostra soluzione con quella proposta da Autoware caricando
uno degli esempi fornito per questo impianto. La descrizione delle procedure di caricamento e di test è
riportata nella Guida in linea di PC-Sim.
Impostare i collegamenti
Per impostare un collegamento tra un componente di un impianto ed il PLC, procedete secondo i seguenti
passi:
• Fate clic sul componente dell’impianto che si vuole collegare al PLC per far comparire la finestra di
dialogo Scelta collegamento per gli ingressi o per le uscite.
PL-Sim determina automaticamente il tipo in conseguenza del componente cliccato. Inoltre, la numerazione
dei canali varia automaticamente in funzione del PLC simulato in uso. In caso di collegamento ad un PLC
reale, attraverso il modulo PC-RIS, verranno mostrate numerazioni che fanno riferimento ai canali della
EasyPort D16.
• Selezionate il pulsante opzione che riporta l’indirizzo del canale che si vuole collegare.
• Solo per gli ingressi, selezionare il tipo di contatto che si desidera utilizzare, normalmente aperto (NA) o
normalmente chiuso (NC).
• Premete OK per confermare.
In corrispondenza del componente prescelto appare l’indirizzo del collegamento al PLC, in blu per gli ingressi
o in rosso per le uscite.
Nel caso si sia effettuato un collegamento ad un ingresso del PLC, PC-Sim provvede a disabilitare il
pulsante/interruttore collegato a tale ingresso. Il LED del canale corrispondente assumerà lo stato (acceso o
spento) in conseguenza dello stato del contatto (chiuso o aperto) del componente collegato. Vedere
Pulsanti/interruttori nel paragrafo Finestra PLC del Capitolo 3.
E' possibile collegare ad una stessa uscita del PLC due o più attuatori dell'impianto, ma ad ogni ingresso
dovrà essere collegato non più di un sensore; l'operazione di collegamento di un sensore ad un ingresso già
utilizzato viene segnalata da un messaggio di errore.
Modificare i collegamenti
Per modificare un collegamento tra un componente di un impianto ed il PLC, procedete secondo i seguenti
passi:
• fate clic sul componente dell’impianto di cui si vuole modificare il collegamento per far comparire la
finestra di dialogo Scelta collegamento per gli ingressi o per le uscite.
• selezionate il pulsante opzione che riporta l’indirizzo del nuovo canale che si vuole collegare;
• solo per gli ingressi, selezionare il nuovo tipo di contatto che si desidera utilizzare, normalmente aperto
(NA) o normalmente chiuso (NC);
• premete OK per confermare.
PL-Sim provvede ad aggiornare il collegamento nella sua memoria ed il riferimento accanto al componente.
Se si trattava di un sensore, PC-Sim provvede a riabilitare il pulsante/interruttore relativo al vecchio
collegamento ed a disabilitare quello del nuovo. Vedere Pulsanti/interruttori nel paragrafo Finestra PLC del
Capitolo 3.
Rimuovere i collegamenti
Per rimuovere un collegamento tra un componente dell’impianto ed il PLC, procedete secondo i seguenti
passi:
• fate clic sul componente dell’impianto di cui si vuole rimuovere il collegamento per far comparire la
finestra di dialogo Scelta collegamento per gli ingressi o per le uscite; PL-Sim determina automaticamente
il tipo in conseguenza del componente cliccato;
• premete il pulsante Scollega.
PL-Sim provvede a eliminare il collegamento dalla sua memoria, a cancellare il riferimento situato nei pressi
del componente. Se si trattava di sensore, PC-Sim provvede a riabilitare il pulsante/interruttore relativo.
Vedere Pulsanti/interruttori nel paragrafo Finestra PLC del Capitolo 3.
Menu File
Nel menu File sono raggruppati i comandi per la gestione (apertura, chiusura, salvataggio) dei file contenenti
i collegamenti tra l’impianto ed il PLC. E’ inoltre presente il comando per la chiusura impianto.
Utilizzate questo comando per cancellare l'intero set di collegamenti tra impianto e PLC.
Se i collegamenti non sono stati registrati, PL-Sim vi chiederà se intendete salvarli prima di eliminarli. In caso
di vostra risposta affermativa, se un file di collegamenti è già aperto PL-Sim salva i collegamenti in questo
file, altrimenti vi chiederà il nome di un nuovo file con l'opportuna finestra di dialogo. Se rispondete
negativamente, PL-Sim non provvederà al salvataggio dei collegamenti attuali.
Dopo la cancellazione dei collegamenti vengono abilitati nuovamente tutti i pulsanti/interruttori del PLC.
Per dettagli su come effettuare collegamenti vedere Collegare gli impianti al PLC in questo capitolo.
Questo comando vi permette di caricare un set di collegamenti tra l’impianto ed il PLC salvato in precedenza
con il Comando Salva collegamenti dello stesso menu.
Dopo il caricamento, PC-Sim provvede a disabilitare i pulsanti/interruttori degli ingressi del PLC per cui è
previsto un collegamento all’impianto.
I file dei collegamenti hanno estensione lin.
Per dettagli su come effettuare collegamenti vedere Collegare gli impianti al PLC in questo capitolo.
Utilizzate questo comando per salvare un set di collegamenti realizzati tra impianto e PLC. In seguito, sarà
possibile ricaricare il set con il comando Carica collegamenti dello stesso menu.
I file dei collegamenti hanno estensione lin.
Per dettagli su come effettuare collegamenti vedere Collegare gli impianti al PLC in questo capitolo.
Comando Esci
Questo comando consente di chiudere l'impianto. Se i collegamenti non sono stati registrati, PL-Sim vi
chiede se intendete salvarli prima di uscire.
In caso di vostra risposta affermativa, se esiste un nome di file corrente PL-Sim salva i collegamenti in
questo file, altrimenti vi chiederà il nome di un nuovo file con l'opportuna finestra di dialogo. Se rispondete
negativamente, PL-Sim non provvede al salvataggio dei collegamenti correnti.
Dopo la chiusura dell’impianto vengono abilitati nuovamente tutti i pulsanti/interruttori del PLC ed il menu
Impianti di PC-Sim.
La chiusura di PC-Sim provoca automaticamente la chiusura dell’impianto.
Tastiera: Alt+F4
Menu ?
Sono raggruppati in questo menu i comandi per ottenere informazioni sull'impianto e sul suo funzionamento.
Comando Guida
Tastiera: F1, se desiderate informazioni su un particolare comando portatevi su di esso usando la tastiera
e premete F1. La guida, sensibile al contesto, si aprirà alla voce da voi suggerita.
Attiva la modalità di Guida rapida cambiando il puntatore del mouse in quello di guida rapida (freccia e punto
interrogativo). In queste condizioni, fate clic su un qualsiasi elemento dell’impianto per ricevere attraverso
una finestra popup informazioni specifiche.
Tastiera: Maiusc+F1
Mostra la finestra delle informazioni sull’impianto corrente. Dove [nome impianto] è uno degli impianti descritti
finora.
In essa potrete trovare informazioni sulla versione del programma, sul nome dell’impianto e sul produttore del
software. Per chiudere la finestra premete il pulsante OK.
Descrizione
Questo impianto mostra un classico scenario industriale. Esso è costituito da due nastri trasportatori, ognuno
movimentato da un motore elettrico trifase. Il primo nastro, quello orizzontale, può scorrere in una sola
direzione; il secondo, quello verticale, può farlo in entrambi i sensi.
Il loro compito è di trasportare le scatole che vengono immesse sulla linea all’inizio del primo nastro. Questo
provvede ad una prima movimentazione e scarica le scatole sul secondo nastro. Da qui potranno essere
movimentate in due direzioni, a seconda del verso di rotazione del motore M2. Le scatole hanno due possibili
lunghezze e, corrispondentemente, due colori. La differenza di lunghezza potrà essere rilevata dai sensori
come vedremo più avanti; la differenza di colore è un mero attributo estetico, che in nessun modo rientra
nell’automazione ma che aiuta l’operatore al riconoscimento visivo del tipo di scatola.
Motori
I motori rappresentati nello scenario sono di tipo asincrono trifase e vengono comandati attraverso dei
contattori. La chiusura dei contattori e la rotazione dei motori vengono visualizzati graficamente: per i primi si
noterà lo spostamento dei contatti, per i secondi comparirà una freccia ad indicare il verso di rotazione.
Il primo motore (M1) movimenta il nastro orizzontale in un unica direzione ed è alimentato attraverso il
contattore K1.
Il secondo (M2) comanda la traslazione del nastro verticale nelle due direzioni. Per realizzare l'inversione
della marcia del secondo motore, vengono utilizzati due contattori (K2 e K3). Questi operano lo scambio delle
fasi L1 ed L3 dell'alimentazione. Quando chiude K3 la sequenza delle fasi sul motore M2 è L1-L2-L3, quando
chiude K2 la sequenza si inverte in L3-L2-L1.
Per questo motivo, prestate attenzione a che i due contattori non vengano eccitati contemporaneamente;
questo causerebbe un cortocircuito tra le fasi dell'alimentazione. Tale evento, nella realtà impiantistica, non
potrebbe accadere, poiché la buona norma impone che venga effettuato un interblocco tra i due contattori.
Infatti, i contattori di inversione devono essere interbloccati elettricamente attraverso i contatti ausiliari
normalmente chiusi e possono essere interbloccati anche meccanicamente. In questo modo si impedisce
che vengano chiusi contemporaneamente entrambi i contattori, situazione che causerebbe un cortocircuito
tra due fasi. Il blocco meccanico tiene il contattore di inversione sicuramente in posizione di aperto se il
contattore diretto è ancora chiuso anche in presenza di forti vibrazioni meccaniche.
Qui, invece, non è stato effettuato intenzionalmente alcun interblocco per permetterne l'implementazione a
livello logico (nel programma del PLC) e per poterne verificare il corretto funzionamento. Come conseguenza,
un programma errato potrebbe eccitare contemporaneamente i contattori in questione e provocare così un
cortocircuito tra le fasi dell'alimentazione, determinando la rottura dei fusibili di protezione.
Provate a provocare volontariamente un cortocircuito: ad esempio, collegate ad una stessa uscita del PLC i
contattori K2 e K3. Quindi scrivete un semplice programma che attivi quest’uscita alla chiusura di un
determinato ingresso. Mettere in Run il PLC e chiudete l'ingresso.
Fusibili
Sulla linea di alimentazione sono posti dei fusibili di tipo aM (accompagnamento motori) come protezione dai
cortocircuiti e forti sovraccarichi.
Se provocate accidentalmente un cortocircuito sull'alimentazione, i fusibili si interrompono. In questa
situazione i motori non ricevono alimentazione, anche se le apparecchiature di controllo continuano ad
essere alimentate.
Per sostituire virtualmente i fusibili, fate clic su di essi. I fusibili si ripristineranno consentendo nuovamente
l'alimentazione dei motori .
Carico scatole
Il carico delle scatole sul nastro orizzontale avviene secondo due modalità di funzionamento la cui scelta
viene effettuata attraverso un apposito selettore.
Nella posizione ‘manuale’, la scelta dell’istante di caricamento della scatola e del colore di questa viene
lasciata all’operatore. In queste modalità i pulsanti di carico a fianco del selettore sono abilitati e sarà
sufficiente premere il pulsante giallo per caricare una scatola corta, o il pulsante blu per una lunga.
Se, invece, il selettore del modo di funzionamento viene posizionato su ‘automatico’, i pulsanti di caricamento
vengono disabilitati e le scatole, il cui colore (e quindi la dimensione) viene determinata in maniera casuale,
verranno caricate continuamente ed automaticamente sul primo nastro. Ogni volta che la una scatola esce
dal secondo nastro ne viene caricata una nuova sul primo.
Presenza rete
La presenza dell'alimentazione, viene testata da un apposito relè di linea (R1) installato a valle dei fusibili.
Se i fusibili si interrompono, R1 si diseccita ed il suo contatto si apre; viceversa se è presente alimentazione
a valle dei fusibili il contatto associato al relè R1 sarà chiuso. Questo contatto è collegato al PLC ed è
possibile testarne lo stato nel vostro programma di automazione al fine di segnalare un allarme attivando la
lampada contrassegnata da ‘ALIMENT.’ ed eventualmente la sirena.
Relè termici
La protezione dai deboli sovraccarichi viene effettuata attraverso i relè termici F1 ed F2 posti a monte di
ciascuno dei motori. E’ possibile simularne l'intervento facendo clic su di essi.
La norma impone che il contatto ausiliario normalmente chiuso del relè termico sia inserito in serie nel
circuito della bobina di comando del contattore in modo che sia impedito, dopo l'intervento del termico, il
riavviamento del motore. Anche questo accorgimento non è stato volutamente adottato nell’impianto per
permetterne l'implementazione e l'eventuale verifica a livello logico, cioè nel programma del PLC.
Pannello Pulsanti
Questo pannello è composto da quattro pulsanti di cui suggeriamo di seguito una possibilità di utilizzo.
Pannello Allarmi
Nel pannello allarmi sono disponibili tre lampade di segnalazione. Vi suggeriamo anche per esse una
possibilità di utilizzo coerente con le etichette poste al fianco delle lampade.
Segnalazione luminosa dell'intervento del termico F1
Segnalazione luminosa dell'intervento del termico F2
Segnalazione luminosa dell'intervento dei fusibili di protezione
Sirena
E' disponibile nell'impianto una sirena che può essere attivata in caso di allarme. Essa ammette due
rappresentazioni grafiche:
Se nel vostro PC è installata una scheda audio potrete udirne il suono, altrimenti vi orienterete con la
rappresentazione grafica.
Sensori
Completano l’impianto una serie di sensori necessari per la realizzazione dell’automazione. Eccone un
elenco con un suggerimento sul loro utilizzo.
• Fotocellule B1 e B2 all'inizio del primo nastro per la rilevazione della presenza e della dimensione della
scatola. B1 viene eccitato appena caricata una nuova scatola sulla linea. B2 è posto ad una distanza da
B1 superiore alla lunghezza delle scatole più corte, ma inferiore a quella delle scatole più lunghe. Così,
dopo l’avviamento del primo nastro, la chiusura contemporanea dei contatti delle fotocellule indicherà che
la scatola attuale è lunga, al contrario essa sarà corta.
• Finecorsa S1 a metà del secondo nastro: rilevazione del passaggio della scatola sul secondo nastro.
• Finecorsa S2 e S3 alle estremità del secondo nastro: rilevazione dell'uscita della scatola dal nastro.
• Fotocellule B3 e B4 in posizione intermedia sul secondo nastro: rilevazione passaggio scatole per
eventuale conteggio.
Barra strumenti
La Barra strumenti costituisce a parte superiore della finestra. In essa sono raggruppati i controlli generali
dell’impianto. Segue l'elenco relativo a questo impianto.
Pulsante Esci
Pulsante Guida
Abilita o disabilita l'emissione di suoni attraverso la scheda audio. Si ricorda che potrete ascoltare i suoni
soltanto se sul vostro computer è installata una scheda audio e i driver audio di Windows sono stati
correttamente caricati. Per informazioni su come caricare i driver consultare il manuale del vostro Windows.
Modalità di utilizzo
Potete rendere automatico questo impianto in vari modi. Ad esempio provate a smistare sul secondo nastro
le scatole blu (più lunghe) in una direzione e le scatole gialle (più corte) in quella opposta. Contate quante
scatole sono state smistate in totale, quante di colore blu e quante di colore giallo.
Oppure potete smistare le scatole non tenendo conto della dimensione ma solo del numero: per esempio
cinque verso l’alto ed altrettante verso il basso.
Siamo sicuri che altri possibili modi di funzionamento potranno essere suggeriti dalla vostra fantasia.
Troverete esempi di programmazione per questo impianto nella cartella Esempi del PLC che utilizzate e le
loro descrizioni nella Guida in linea di PC-Sim.
I collegamenti dei sensori e degli attuatori al PLC si effettuano per mezzo degli appositi selettori posti nei
pressi di ogni componente collegabile. Il testo che compare in essi indica l'indirizzo del canale di ingresso o di
uscita del PLC al quale è collegato l'elemento dell'impianto. In blu vengono riportati i collegamenti ad ingressi
del PLC ed in rosso i collegamenti alle uscite.
saranno collegati in parallelo; cioè ancora, sarà necessario e sufficiente che uno dei due sia chiuso per
ottenere la chiusura dell’ingresso del PLC.
Test dell'automazione
Per verificare la correttezza del programma realizzato mettete in Run il PLC e verificate che i movimenti dei
nastri trasportatori avvengano secondo la sequenza prefissata.
Se avete utilizzato merker (flag), temporizzatori o contatori nel vostro programma, potrà tornarvi utile la
Finestra Stato variabili di PC-Sim per controllarne stato e/o valore. Se l’automazione non funziona
correttamente, o non funziona per nulla, vi potranno tornare molto utili le potenzialità di debug offerte
dall’editor che avete utilizzato per scrivere il programma.
Se utilizzate una simulazione di PLC FPC 404 la Finestra Impostazioni preset vi servirà per impostare valori
di temporizzazione e conteggio.
Guida rapida
Se desiderate ottenere informazioni relativamente ad uno specifico elemento dell'impianto, operate nel
seguente modo:
• posizionate il puntatore del mouse sull'elemento;
• premete la combinazione di tasti Ctrl+H;
a questo punto comparirà, se prevista per lo specifico elemento, una finestra di guida rapida che ne riporta
una breve descrizione.
La guida rapida è sensibile al contesto cioè, muovendo il puntatore del mouse su un altro elemento, la
descrizione nella finestra verrà aggiornata in funzione del nuovo elemento puntato.
Se desiderate fissare il contenuto della finestra rendendolo indipendente dalla posizione del puntatore,
premete la combinazione dei tasti Ctrl+G. Per rendere nuovamente variabile la descrizione nella finestra in
funzione del contesto, premete ancora una volta Ctrl+G.
Premendo, infine, ancora la combinazione di tasti Ctrl+H, la finestra di guida rapida verrà chiusa.
Descrizione
Lo scenario di questo impianto mostra una palazzina di quattro piani dotata di ascensore di tipo tradizionale,
costituito cioè da una cabina con contrappeso movimentata da un motore elettrico. Il motore è sito in
apposito locale al di sopra del vano di scorrimento della cabina. Sulla sinistra, per ogni piano, sono riportati i
finecorsa, i pulsanti di chiamata e le lampade di segnalazione.
In basso è riportato l’ingresso della cabina, non visibile nella rappresentazione della palazzina, che
permetterà di controllare lo stato ed il movimento delle porte, la presenza di persone e l’interruzione del
raggio della fotocellula. A sinistra di esso è rappresentato il pannello di comando interno alla cabina che qui,
per comodità di rappresentazione ed utilizzo, ne è stato portato al di fuori.
Comando cabina
Comando porte
La cabina è dotata di porte automatiche. Per aprire e chiudere le porte basta comandare con un impulso
rispettivamente le bobine dei contattori K3 e K4.
Comandi manuali
E’ possibile comandare manualmente la salita e la discesa della cabina dell’ascensore attraverso gli appositi
pulsanti situati rispettivamente in prossimità delle segnalazioni di stato dei contattori K1 e K2.
Utilizzate invece i pulsanti che si trovano nei pressi delle bobine K3 e K4 per azionare manualmente
l’apertura e la chiusura delle porte della cabina.
Controlli di piano
Controlli di cabina
Per provocare l’intervento della fotocellula, fate clic all’interno della cabina, al di sotto del raggio giallo. Il
raggio si interromperà e l’indicatore S5 cambierà di stato.
Analogo funzionamento si ottiene premendo il tasto funzionale F5.
Per diseccitare il sensore fate clic nuovamente al disotto della linea gialla.
Per simulare l’ingresso di persone in cabina, fate clic all’interno della cabina al di sopra della linea gialla.
Compariranno delle persone all’interno della cabina e potrete osservare il cambiamento dello stato del
sensore di peso S6.
Per simulare l’uscita delle persone fate clic nuovamente al sopra della linea gialla.
Ogni ingresso o uscita digitale è dotata di LED di segnalazione dello stato, l’accensione del LED indica
l’eccitazione dell’ingresso o l’attivazione dell’uscita.
Barra strumenti
La Barra strumenti costituisce a parte superiore della finestra. In essa sono raggruppati i controlli generali
dell’impianto. Segue l'elenco relativo a questo impianto.
Pulsante Esci
Pulsante Guida
Abilita o disabilita l'emissione di suoni attraverso la scheda audio. Si ricorda che potrete ascoltare i suoni
soltanto se sul vostro computer è installata una scheda audio e i driver audio di Windows sono stati
correttamente caricati. Per informazioni su come caricare i driver consultare il manuale del vostro Windows.
Modalità di utilizzo
Con questo impianto si possono realizzare tutte le modalità di funzionamento di un tipico ascensore. Si può
partire con semplici e tradizionali gestioni ed arrivare a più complessi programmi che implementano le
funzioni di prenotazione della chiamata e della mandata al piano, con ottimizzazione delle fermate. Tutto è
lasciato, come sempre, all’inventiva dell’utilizzatore di AW-SYS.
Troverete esempi di programmazione per questo impianto nella cartella Esempi del PLC che utilizzate. La
descrizione delle procedure di caricamento e di test è riportata nella Guida in linea di PC-Sim.
I collegamenti dei sensori e degli attuatori al PLC si effettuano per mezzo degli appositi selettori posti nei
pressi di ogni componente collegabile. Il testo che compare in essi indica l'indirizzo del canale di ingresso o di
uscita del PLC al quale è collegato l'elemento dell'impianto. In blu vengono riportati i collegamenti ad ingressi
del PLC ed in rosso i collegamenti alle uscite.
Se desiderate scollegare un elemento d’impianto posizionate il selettore, in uno dei due modi appena visti, su
‘NC’,
L‘impianto propone comunque, al suo caricamento, un set di collegamenti di default. Potrete utilizzarlo o
cambiarlo ma, in quest’ultima ipotesi, ricordate che non sarà possibile salvare i collegamenti modificati; in
atre parole, ad ogni nuovo avviamento della finestra di questo impianto verranno proposti comunque i
collegamenti di default.
A differenza dei primi cinque impianti di PL-Sim, questo non controlla l’univocità del collegamento ad un
ingresso del PLC. Quindi prestate molta attenzione ad evitare questa eventualità. In ogni caso, se collegate
due sensori allo stesso ingresso del PLC, essi realizzeranno una connessione logica OR, cioè i loro contatti
saranno collegati in parallelo; cioè ancora, sarà necessario e sufficiente che uno dei due sia chiuso per
ottenere la chiusura dell’ingresso del PLC.
Test dell'automazione
Per verificare la correttezza del programma realizzato mettete in Run il PLC e verificate che i movimenti dei
nastri trasportatori avvengano secondo la sequenza prefissata.
Se avete utilizzato merker (flag), temporizzatori o contatori nel vostro programma, potrà tornarvi utile la
Finestra Stato variabili di PC-Sim per controllarne stato e/o valore. Se l’automazione non funziona
correttamente, o non funziona per nulla, vi potranno tornare molto utili le potenzialità di debug offerte
dall’editor che avete utilizzato per scrivere il programma.
Se utilizzate una simulazione di PLC FPC 404 la Finestra Impostazioni preset vi servirà per impostare valori
di temporizzazione e conteggio.
Guida rapida
Se desiderate ottenere informazioni relativamente ad uno specifico elemento dell'impianto, operate nel
seguente modo:
• posizionate il puntatore del mouse sull'elemento;
• premete la combinazione di tasti Ctrl+H;
a questo punto comparirà, se prevista per lo specifico elemento, una finestra di guida rapida che ne riporta
una breve descrizione.
La guida rapida è sensibile al contesto cioè, muovendo il puntatore del mouse su un altro elemento, la
descrizione nella finestra verrà aggiornata in funzione del nuovo elemento puntato.
Se desiderate fissare il contenuto della finestra rendendolo indipendente dalla posizione del puntatore,
premete la combinazione dei tasti Ctrl+G. Per rendere nuovamente variabile la descrizione nella finestra in
funzione del contesto, premete ancora una volta Ctrl+G.
Premendo, infine, ancora la combinazione di tasti Ctrl+H, la finestra di guida rapida verrà chiusa.
Descrizione
Questo impianto di PL-Sim simula una parte di stabilimento industriale che ha il compito di produrre e
stoccare un composto destinato ad essere utilizzato altrove nel ciclo produttivo. Lo scenario ha come
elementi principali due serbatoi. Nel primo, denominato Mixer, vengono miscelati e riscaldati tre diversi liquidi
che costituiscono gli ingredienti della ricetta. Il secondo, denominato Prodotto, viene utilizzato per lo
stoccaggio del composto.
Il mixer è alimentato da tre diverse tubazioni, ognuna di esse adduce al suo interno un diverso ingrediente.
Le valvole e le pompe su queste tubazioni, nonché i livellostati ed il trasmettitore di livello che equipaggiano il
serbatoio, ne permettono un dosaggio accurato. I tre ingredienti sono rispettivamente di colore rosso, verde e
blu. La miscela assume un colore che è funzione delle percentuali dei diversi liquidi che la compongono,
secondo le leggi della colorimetria. Per esempio, se vengono versate uguali quantità di rosso e di verde nel
serbatoio, la miscela risultante avrà un colore giallo.
Con l’attivazione del riscaldatore e la rilevazione dello stato del termostato o la lettura del valore del
trasmettitore di temperatura, il composto potrà essere riscaldato fino alla temperatura desiderata.
Una coppia pompa-valvola permette il travaso del prodotto finito dal primo al secondo serbatoio, dove verrà
stoccato. La coppia pompa-valvola, in uscita dal serbatoio prodotto, serve ad alimentare impianti dello
stabilimento che utilizzano il prodotto, qui non rappresentati e che non fanno parte dell’automazione. Nel
serbatoio prodotto dovrà sempre rimanere una quantità di composto sufficiente a coprire le richieste fino al
completamento di un nuovo ciclo di produzione.
Nella parte superiore della finestra è presente un pannello operatore nel quale sono raggruppati pulsanti e
lampade per il comando dell’impianto e la segnalazione del suo stato.
Un ulteriore riquadro raggruppa le segnalazioni di stato e le regolazioni dei sensori ON-OFF installati sui
serbatoi.
Valvole
La valvola è un dispositivo attraverso il quale è possibile controllare una corrente di fluido. Nell'impianto sono
presenti cinque valvole, tutte di tipo ON-OFF. Le prime tre sono dedicate al controllo del flusso degli
ingredienti nel serbatoio Mixer. La quarta valvola controlla il trasferimento della miscela nel serbatoio di
stoccaggio. L’ultima controlla il prelievo del prodotto finito dal serbatoio di stoccaggio.
Elettropompe
Con l'azionamento di una elettropompa è possibile spingere un fluido attraverso una tubazione. Nell’impianto
sono presenti quattro elettropompe. Due all’ingresso del Mixer, una tra i due serbatoi e l’ultima in uscita dallo
stoccaggio.
Riscaldatore
L’accensione del riscaldatore elettrico permette il riscaldamento della miscela nel serbatoio Mixer. Una volta
spento la temperatura del liquido diminuirà gradualmente a causa delle dispersioni termiche. Anche
l’ingresso di nuovo liquido, supposto a 20ºC, all’interno del serbatoio produce un abbassamento della
temperatura.
Sirena
E' disponibile nell'impianto una sirena che può essere attivata in caso di allarme. Essa ammette due
rappresentazioni grafiche:
sirena spenta con uscita del PLC a zero
Se nel vostro PC è installata una scheda audio potrete udirne il suono, altrimenti vi orienterete con la
rappresentazione grafica.
Sensori ON/OFF
L'impianto è dotato di sensori ON/OFF. Parte di questi sensori possono essere utilizzati in alternativa ai
trasmettitori di livello e di temperatura presenti sull'impianto e collegati a canali di ingresso analogici del PLC.
Ciò da la possibilità di scegliere se effettuare l'automazione dell'impianto utilizzando i sensori digitali oppure
quelli analogici.
Nell'impianto sono presenti i seguenti sensori ON/OFF:
Sensore Descrizione
LM1 1° livellostato di servizio del serbatoio Mixer, attivazione al raggiungimento della quantità
desiderata del primo ingrediente.
LM2 2° livellostato di servizio del serbatoio Mixer, attivazione al raggiungimento della quantità
desiderata del secondo ingrediente.
LM3 3° livellostato di servizio del serbatoio Mixer, attivazione al raggiungimento della quantità
desiderata del terzo ingrediente.
LM-MAX livellostato di massimo del serbatoio Mixer, generazione allarme.
LM-Min livellostato di minimo del serbatoio Mixer, generazione allarme.
LP1 livellostato di servizio del serbatoio Prodotto, attivazione per la richiesta di un nuovo ciclo di
produzione.
LP-MAX livellostato di massimo del serbatoio Prodotto, generazione allarme.
L’impostazione dei livelli di intervento dei livellostati LM1, LM2 e LM3 deve essere incrementale.
Supponiamo, cioè, di voler produrre una miscela secondo una ricetta che abbia come ingredienti 500 l del
primo ingrediente, 300 l del secondo e 200 l del terzo. Il livellostato LM1 dovrà essere tarato per intervenire a
500 l, LM2 a 800 l (500+300) e LM3 a 1000 l (500+300+200).
Ogni sensore è dotato di una isteresi pari al 2% del campo di regolazione, cioè:
Sensore Isteresi
Livellostati serbatoio Mixer ±15 litri
Livellostati serbatoio Prodotto ±30 litri
Termostati serbatoio Mixer ±1°C
Trasduttori
Il trasduttore è una apparecchiatura in grado di trasformare una grandezza fisica in una grandezza elettrica.
Nell’impianto sono presenti un trasduttore di temperatura che misura la temperatura della miscela presente
nel serbatoio Mixer e due trasduttori di livello per la misura del livello dei due serbatoi.
Ognuno di essi produce un segnale analogico proporzionale alla grandezza misurata. Questo segnale può
essere acquisito dai PLC di PC-Sim che supportano canali analogici (PS3, S5 100U e S7 300).
Prelievo prodotto
E' possibile intervenire sulla modalità di prelievo del prodotto finito agendo sull'apposito selettore.
In modo AUTO è possibile affidare il prelievo del prodotto al PLC oppure selezionare una modalità di prelievo
casuale.
In modo MANU è possibile comandare manualmente il prelievo del prodotto.
Pannello operatore
Nel pannello operatore sono disponibili per il collegamento con il PLC quattro pulsanti di cui suggeriamo una
possibilità di utilizzazione:
Pulsante Utilizzazione
Nel pannello è presente inoltre una lampada che potrete utilizzare per segnalare un allarme verificatosi
durante il processo produttivo, per esempio un allarme di alta temperatura o massimo livello.
Ogni ingresso o uscita digitale è dotata di LED di segnalazione dello stato, l’accensione del LED indica
l’eccitazione dell’ingresso o l’attivazione dell’uscita.
Barra strumenti
La Barra strumenti costituisce a parte superiore della finestra. In essa sono raggruppati i controlli generali
dell’impianto. Segue l'elenco relativo a questo impianto.
Pulsante Esci
Pulsante Guida
Pulsante Registratore
Mostra la simulazione del registratore a carta che riporta l'andamento temporale (il trend) dei segnali dei
trasmettitori di livello e di quello di temperatura.
Abilita o disabilita l'emissione di suoni attraverso la scheda audio. Si ricorda che potrete ascoltare i suoni
soltanto se sul vostro computer è installata una scheda audio ed il driver di Windows è stato correttamente
caricato. Per informazioni su come caricare i driver consultare la vostra guida di Windows.
Finestra Registratori
Simula un componente molto comune nelle applicazioni industriali: il registratore a carta.
Nel riquadro superiore viene tracciato l’andamento dei livelli nei due serbatoi, il colore della penna utilizzata è
differente per consentire l’immediato riconoscimento della traccia.
In quello inferiore viene riportato l’andamento della temperatura nel serbatoio Mixer, tra i limiti di 0 e 100°C.
Modalità di utilizzo
Provate a miscelare i tre ingredienti secondo dei rapporti prefissati. Riscaldate per un certo tempo ad una
certa temperatura la miscela ottenuta e travasatela nel serbatoio Prodotto. Siamo sicuri che altri possibili
modi di utilizzo potranno essere suggeriti dalla vostra fantasia.
Per le prime applicazioni non è detto che dobbiate usare tutti i segnali previsti a campo. Potreste usare solo
due ingredienti, saltare la fase di riscaldamento ed evitare la generazione di allarmi. Man mano poi, potreste
aggiungere queste funzionalità ed altre ancora quali, ad esempio, la gestione di più ricette.
Troverete esempi di programmazione per questo impianto nella cartella Esempi del PLC che utilizzate. La
descrizione delle procedure di caricamento e di test è riportata nella Guida in linea di PC-Sim.
I collegamenti dei sensori e degli attuatori al PLC si effettuano per mezzo degli appositi selettori posti nei
pressi di ogni componente collegabile. Il testo che compare in essi indica l'indirizzo del canale di ingresso o di
uscita del PLC al quale è collegato l'elemento dell'impianto. In blu vengono riportati i collegamenti ad ingressi
del PLC ed in rosso i collegamenti alle uscite.
Oppure:
• fate clic sui pulsanti col triangolo a sinistra del selettore: in alto per ottenere l’incremento dell’indirizzo, in
basso per il suo decremento.
Se desiderate scollegare un elemento d’impianto posizionate il selettore, in uno dei due modi appena visti, su
‘NC’,
L‘impianto propone comunque, al suo caricamento, un set di collegamenti di default. Potrete utilizzarlo o
cambiarlo ma, in quest’ultima ipotesi, ricordate che non sarà possibile salvare i collegamenti modificati; in
atre parole, ad ogni nuovo avviamento della finestra di questo impianto verranno proposti comunque i
collegamenti di default.
A differenza dei primi cinque impianti di PL-Sim, questo non controlla l’univocità del collegamento ad un
ingresso del PLC. Quindi prestate molta attenzione ad evitare questa eventualità. In ogni caso se collegate
due elementi dell’impianto allo stesso ingresso del PLC, essi realizzeranno una connessione logica OR, cioè i
loro contatti saranno collegati in parallelo; cioè ancora, sarà necessario e sufficiente che uno dei due sia
chiuso per ottenere la chiusura dell’ingresso del PLC.
Test dell'automazione
Per verificare la correttezza del programma realizzato mettete in Run il PLC e verificate che il processo si
svolga secondo la sequenza prefissata.
Se avete utilizzato merker (flag), temporizzatori o contatori nel vostro programma, potrà tornarvi utile la
Finestra Stato variabili di PC-Sim per controllarne stato e/o valore. Se l’automazione non funziona
correttamente, o non funziona per nulla, vi potranno tornare molto utili le potenzialità di debug offerte
dall’editor che avete utilizzato per scrivere il programma.
Se utilizzate una simulazione di PLC FPC 404 la Finestra Impostazioni preset vi servirà per impostare valori
di temporizzazione e conteggio.
Guida rapida
Se desiderate ottenere informazioni relativamente ad uno specifico elemento dell'impianto, operate nel
seguente modo:
• posizionate il puntatore del mouse sull'elemento;
• premete la combinazione di tasti Ctrl+H;
a questo punto comparirà, se prevista per lo specifico elemento, una finestra di guida rapida che ne riporta
una breve descrizione.
La guida rapida è sensibile al contesto cioè, muovendo il puntatore del mouse su un altro elemento, la
descrizione nella finestra verrà aggiornata in funzione del nuovo elemento puntato.
Se desiderate fissare il contenuto della finestra rendendolo indipendente dalla posizione del puntatore,
premete la combinazione dei tasti Ctrl+G. Per rendere nuovamente variabile la descrizione nella finestra in
funzione del contesto, premete ancora una volta Ctrl+G.
Premendo, infine, ancora la combinazione di tasti Ctrl+H, la finestra di guida rapida verrà chiusa.
Descrizione
Questa finestra di simulazione vi propone uno scenario costituito da un incrocio (o intersezione) con relativo
impianto semaforico. Anche se ormai il semaforo è entrato a far parte della nostra vita quotidiana sia di
pedoni che di automobilisti e non sarebbe certo necessario spiegare di che cosa si tratta, ci sembra
opportuno proporre delle considerazioni di ordine generale che servono a meglio inquadrare il problema della
semaforizzazione.
Gli impianti semaforici svolgono la funzione di regolazione del traffico nelle intersezioni stradali. Vengono
utilizzati sia nei centri urbani, dove sono ormai strumento obbligatorio nella regolazione del traffico, che nelle
arterie extraurbane.
Essi sono costituiti da:
• un impianto di segnalazione;
• una centralina semaforica.
Impianto di segnalazione
E' costituito da un semaforo a quattro facce. Le facce sono singolarmente visibili nella parte superiore della
finestra e sono numerate progressivamente da F1 a F4.
• F1 individua la faccia semaforica relativa a Via Petrarca lato Ovest
• F2 individua la faccia semaforica relativa a Via Dante lato Sud
• F3 individua la faccia semaforica relativa a Via Petrarca lato Est
• F4 individua la faccia semaforica relativa a Via Dante lato Nord
Centralina semaforica
La centralina semaforica è costituita dal PLC simulato di PC-Sim e da un Pannello di Comando visualizzato
in una apposita finestra e di cui diremo più avanti.
Caratteristiche dell'incrocio
Fasi e temporizzazioni
Per l'analisi del problema ed il successivo sviluppo del software vi consigliamo di suddividere il movimento
veicolare in più fasi: ad ogni fase corrisponde il movimento di determinate correnti di traffico. Costruite uno
schema di fasatura in cui ciascuna fase è associata all'indicazione delle correnti di transito. Successivamente
costruite un diagramma di fasatura in cui schematizzare le temporizzazioni del segnale cromatico associato a
ciascuna faccia semaforica che comanda il movimento veicolare.
Barra strumenti
La Barra strumenti costituisce la parte superiore della finestra. In essa sono raggruppati i controlli generali
dell’impianto. Segue l'elenco relativo a questo impianto.
Pulsante Esci
Premendo questo pulsante potrete chiudere l'impianto.
Dopo la chiusura dell’impianto vengono abilitati nuovamente tutti i pulsanti/interruttori del PLC ed il menu
Impianti di PC-Sim.
La chiusura di PC-Sim provoca automaticamente la chiusura dell’impianto aperto.
Pulsante Guida
Apre una finestra contenente la simulazione del Pannello di Comando della centralina semaforica.
Contiene il Pannello di comando della centralina semaforica. Il Pannello di comando è costituito da:
• pulsante Conferma
• pulsante Manuale
• selettore con le seguenti tre posizioni:
• M -> Manuale
• A -> Automatico
• GL -> Giallo Lampeggiante
Modi di funzionamento
L'impianto semaforico può funzionare in 3 modi selezionabili manualmente con il selettore posto nel Pannello
di comando; posizionando il selettore sulla funzione desiderata e premendo il pulsante Conferma si attiva la
modalità prescelta.
• selettore in posizione A;
• il PLC esegue sequenzialmente le fasi semaforiche rispettando le temporizzazioni riportate nel
diagramma di fasatura.
• selettore in posizione M;
• il PLC esegue sequenzialmente le fasi semaforiche. Il passaggio da una fase a quella successiva è
attivato esclusivamente dalla pressione del pulsante Manuale effettuata da voi.
Schema di fasatura
Le figure sottostanti mostrano le due fasi in cui è stato suddiviso il ciclo. Ad ogni fase corrisponde il
movimento di determinate correnti di traffico scelte in modo tale da limitare al massimo le situazioni
conflittuali. Naturalmente quello riportato è l’esempio più semplice: per limitare ancora le situazioni conflittuali
potreste provare ad aumentare il numero delle fasi.
Fase A Fase B
Diagramma di fasatura
Le colonne rappresentano le fasi di movimento, così come sono state definite nello schema di fasatura. Le
righe rappresentano le facce semaforiche. Nell’ultima riga vengono riportati le durate di ogni fase espresse in
secondi.
Faccia Fasi
semaforica A B
F1 Verde Giallo Rosso Rosso
F2 Rosso Verde Giallo Rosso
F3 Verde Giallo Rosso Rosso
F4 Rosso Verde Giallo Rosso
Tempo in sec 80 6 5 80 6 5
I collegamenti dei sensori e degli attuatori al PLC si effettuano per mezzo degli appositi selettori posti nei
pressi di ogni componente collegabile. Il testo che compare in essi indica l'indirizzo del canale di ingresso o di
uscita del PLC al quale è collegato l'elemento dell'impianto. In blu vengono riportati i collegamenti ad ingressi
del PLC ed in rosso i collegamenti alle uscite.
Test dell'automazione
Per verificare la correttezza del programma realizzato mettete in Run il PLC e verificate che il processo si
svolga secondo la sequenza prefissata.
Se avete utilizzato merker (flag), temporizzatori o contatori nel vostro programma, potrà tornarvi utile la
Finestra Stato variabili di PC-Sim per controllarne stato e/o valore. Se l’automazione non funziona
correttamente, o non funziona per nulla, vi potranno tornare molto utili le potenzialità di debug offerte
dall’editor che avete utilizzato per scrivere il programma.
Se utilizzate una simulazione di PLC FPC 404 la Finestra Impostazioni preset vi servirà per impostare valori
di temporizzazione e conteggio.
Guida rapida
Se desiderate ottenere informazioni relativamente ad uno specifico elemento dell'impianto, operate nel
seguente modo:
• posizionate il puntatore del mouse sull'elemento;
• premete la combinazione di tasti Ctrl+H;
a questo punto comparirà, se prevista per lo specifico elemento, una finestra di guida rapida che ne riporta
una breve descrizione.
La guida rapida è sensibile al contesto cioè, muovendo il puntatore del mouse su un altro elemento, la
descrizione nella finestra verrà aggiornata in funzione del nuovo elemento puntato.
Se desiderate fissare il contenuto della finestra rendendolo indipendente dalla posizione del puntatore,
premete la combinazione dei tasti Ctrl+G. Per rendere nuovamente variabile la descrizione nella finestra in
funzione del contesto, premete ancora una volta Ctrl+G.
Premendo, infine, ancora la combinazione di tasti Ctrl+H, la finestra di guida rapida verrà chiusa.
Introduzione
Come già accennato nell'introduzione di questo manuale, PC-RIS è il modulo di AW-SYS che consente di
pilotare gli impianti simulati di PL-Sim con svariati sistemi hardware, quali:
• PLC reali (di qualsiasi marca)
• sistemi a microprocessore
• microcontrollori
• schede elettroniche in logica cablata
• quadri elettrici in logica cablata
• personal computer con schede di I/O.
Questo è possibile grazie all'impiego dell'interfaccia hardware EasyPort D16. Una o più di queste interfacce
possono essere collegate al PC, come sarà spiegato nel seguito, e consentiranno da un lato l'acquisizione
delle uscite del sistema di controllo reale per l'azionamento degli attuatori dell'impianto simulato e dall'altro il
trasferimento dello stato dei sensori dell'impianto agli ingressi del sistema di controllo, per un massimo di 16
ingressi e 16 uscite digitali.
La figura che segue illustra il funzionamento del sistema. Da sinistra a destra: le uscite del PLC reale
vengono acquisite tramite l'interfaccia EasyPort D16. I segnali di quest'ultima, attraverso la porta seriale del
PC, vengono prelevati da PC-RIS che a sua volta li trasmette agli attuatori dell'impianto simulato. Nell'altro
senso: lo stato dei sensori dell'impianto viene letto da PC-RIS che, attraverso la seriale, provvede a
trasmetterli alle uscite digitali dell'interfaccia. Da questa vengono quindi pilotati gli ingressi del PLC.
Se non siete in possesso dell'interfaccia EasyPort D16 non potrete utilizzare PC-RIS. Rivolgetevi al vostro
fornitore di AW-SYS per informazioni circa l'acquisto dell'interfaccia.
Nel corso di questo capitolo faremo riferimento al sistema di controllo reale 'PLC', ma quanto verrà detto per
questo varrà anche per tutti gli altri sistemi di controllo, fatte salve le necessarie verifiche della compatibilità
fra segnali dell'interfaccia e segnali del sistema di controllo.
Configurazione dell'interfaccia
Come operazione preliminare occorre impostare i DIP switch che si trovano sul pannello posteriore della
EasyPort D16 come segue.
Numero Stato Posizione
1 ON in basso
2 OFF in alto
3 OFF in alto
Collegamento dell'interfaccia al PC
Con il cavo fornito a corredo collegare la porta seriale della EasyPort D16 ad una delle porte seriali del PC.
Eventuali altre interfacce dello stesso tipo possono essere collegate alla prima mediante fibra ottica ma non
verranno viste e quindi utilizzate dal sistema.
Collegare i morsetti +/- 24V della EasyPort D16 ad un alimentatore a 24V. In alternativa, e con lo stesso
effetto, è possibile fornire alimentazione attraverso i piedini di PORT1 o PORT2 identificati con OVCC e
24VCC (vedere Capitolo 17) ma, probabilmente, sarà conveniente riservare quest'ultimi per l'alimentazione
dei moduli di ingresso/uscita del PLC.
• Per evitare confusioni nelle fasi successive, effettuate i collegamenti in maniera progressiva secondo la
numerazione degli ingressi/uscite del PLC e della EasyPort D16.
Avvio di PC-RIS
Per avviare PC-RIS fate clic sul pulsante Start di Windows, aprite quindi la cartella Programmi\Aw-sys e,
all’interno di questa, scegliete la voce corrispondente a PC-RIS. Una sola istanza di PC-RIS è eseguibile per
volta. Inoltre è impossibile avviare PC-RIS anche quando PC-Sim è già in esecuzione.
All’avvio del programma viene mostrata la Finestra Informazioni su PC-RIS. In essa sono riportate
informazioni circa il programma, numero di versione, il numero di autorizzazione della copia che state
utilizzando, il produttore del software. Chiudete questa finestra premendo il pulsante Ok per iniziare a
lavorare.
Ricerca dell'interfaccia
PC-RIS esegue a questo punto una scansione delle porte seriali del PC alla ricerca della EasyPort D16.
Durante l'intero procedimento nella Barra di stato compariranno indicazioni sull'avanzamento della ricerca. In
particolare: la casella a sinistra riporterà il numero della porta seriale correntemente testata e l'altra lo stato
del test.
Al termine della ricerca, se trovata una EasyPort D16, la prima casella indicherà la porta a cui è connessa, la
seconda conterrà il testo 'Connessione attiva'.
Nel caso invece che l'interfaccia non venga trovata, la prima casella risulterà vuota mentre la seconda
conterrà il testo 'EasyPort D16 non trovata'. In questa evenienza, dopo aver controllato la correttezza dei
collegamenti, fate ripartire la procedura di ricerca scegliendo il Comando Cerca EasyPort D16 dal Menu File.
PC-RIS è composto da un'unica finestra. La parte superiore riporta, per disposizione e colore, la
visualizzazione dei LED della EasyPort D16. L'accensione di uno dei LED OUTPUT (colore giallo) coincide
con l'attivazione della corrispondente uscita sull'interfaccia, mentre l'attivazione di uno degli ingressi
dell'interfaccia coincide con l'accensione del corrispondente LED INPUT (colore verde). In ogni momento, se
la connessione seriale è attiva, lo stato dei LED sull'interfaccia coinciderà con lo stato dei corrispondenti LED
nella finestra di PC-RIS.
Nella parte inferiore della finestra sono rappresentati16 pulsanti/interruttori. Essi potranno essere utilizzati per
il comando degli ingressi digitali del PLC reale non collegati all'impianto.
Questi pulsanti/interruttori possono essere impostati sia come pulsanti che come interruttori; l'aspetto ne
specificherà la funzione:
interruttore
pulsante
dove la doppia freccia indica la funzione bistabile, quella singola la funzione monostabile.
Per cambiare tra le due impostazioni, fate clic col pulsante destro del mouse sull'elemento che desiderate
cambiare; esso commuterà di funzione ad ogni pressione: se pulsante diventerà interruttore e viceversa.
Quando il pulsante/interruttore assume questo aspetto:
disabilitato
esso risulta disabilitato: fare clic su di esso non produrrà alcun effetto.
PC-RIS disabilita automaticamente un interruttore o un pulsante quando al corrispondente ingresso viene
collegato un sensore di un impianto (per esempio un finecorsa di cilindro o un livellostato di serbatoio) per
evitare interferenze inopportune tra i contatti di quest'ultimo ed i pulsanti/interruttori locali.
Per abilitare nuovamente il pulsante/interruttore occorrerà scollegare l'ingresso del PLC dall’impianto.
Leggete in merito la sezione Collegare gli impianti al PLC nel Capitolo 4.
Apertura di un impianto
Gli impianti simulati di PL-Sim devono essere avviati dal Menu Impianti di PC-RIS: è sufficiente scegliere, fra
quelli presenti, il comando che descrive il nome dell'impianto che si desidera avviare.
Poiché si può avviare un solo impianto per volta, il menu viene disabilitato subito dopo. Esso verrà riabilitato
solo alla chiusura dell'impianto.
Per la descrizione dei diversi impianti vedere il Capitolo 4 ad essi dedicato.
Poiché PC-RIS non è in grado di determinare quale PLC avete collegato all'interfaccia e quali collegamenti
avete effettuato, i canali di ingresso sono denominati con le sigle generiche da I0 a I15, mentre quelli di
uscita con le sigle altrettanto generiche da O0 a O15.
Collegare un sensore dell'impianto simulato all'ingresso I0, ad esempio, significa collegare il sensore
all'ingresso del PLC che risulta elettricamente connesso con l'uscita OUTPUT 0 della EasyPort D16, cioè con
il conduttore bianco del cavo multipolare della PORT 1. Parimenti e sempre per esempio, collegare un
attuatore dell'impianto simulato all'uscita O15 significa collegare l'attuatore all'uscita del PLC che risulta
elettricamente connessa con l'ingresso INPUT 15 della EasyPort D16, cioè con il conduttore grigio/marrone
del cavo multipolare della PORT 2.
Una volta collegato un sensore ON/OFF dell'impianto, il suo stato sarà immediatamente disponibile sulla
corrispondente uscita dell'interfaccia e sull'ingresso ad essa collegato del PLC. La chiusura del contatto del
sensore corrisponderà all'emissione di una tensione di 24V sull'uscita della EasyPort e quindi all'attivazione
dell'ingresso del PLC. L'apertura del medesimo corrisponderà all'emissione di una tensione di 0V e quindi
alla disattivazione dell'ingresso del PLC.
Nell'altro senso: l'attivazione di una delle uscite del PLC fornisce una tensione di 24V all'ingresso della
EasyPort D16 corrispondente che permetterà l'eccitazione dell'attuatore dell'impianto ad esso collegato. La
disattivazione della medesima uscita fornirà tensione di 0V all'ingresso dell'interfaccia e l'attuatore
dell'impianto verrà diseccitato.
Proseguimento dell'esperienza
Il seguito dell'esperienza consisterà nel programmare o cablare il sistema di controllo che avete deciso di
utilizzare. Quindi farete per il seguito riferimento ai manuali forniti con essi. Per informazioni sugli impianti
simulati consultate invece il Capitolo 4 di questo manuale oppure la Guida in linea dello specifico impianto
richiamando il Comando Guida del Menu ? oppure facendo clic sul pulsante Guida, a seconda dell'impianto
che state utilizzando.
Introduzione
PL-RIS è il modulo di AW-SYS che consente di collegare i PLC simulati di PC-Sim agli impianti reali o ai
banchi di esercitazione presenti nel vostro laboratorio.
La figura che segue illustra il funzionamento del sistema. Da sinistra a destra: le uscite del PLC simulato
vengono lette da PL-RIS che provvede ad inviarle tramite la connessione seriale e l'eventuale anello in fibra
ottica alle interfacce EasyPort D16. Le uscite di quest'ultime vanno a pilotare gli attuatori dell'impianto reale.
Nell'altro senso: lo stato dei sensori dell'impianto viene acquisito dalle interfacce e viene quindi letto da PL-
RIS. Quest'ultimo provvede a pilotare gli ingressi del PLC.
Se non siete in possesso dell'interfaccia EasyPort D16 non potrete utilizzare PC-RIS. Rivolgetevi al vostro
fornitore di AW-SYS per informazioni circa l'acquisto dell'interfaccia.
Configurazione dell'interfaccia
Come operazione preliminare occorre impostare i DIP switch che si trovano sul pannello posteriore delle
EasyPort D16 come segue.
Collegamento dell'interfaccia al PC
Con il cavo fornito a corredo collegare la porta seriale della prima EasyPort D16 ad una delle porte seriali del
vostro computer. Le ulteriori eventuali interfacce, per un massimo di sette, vanno collegate alla prima
seguendo le indicazioni fornite in Capitolo 17. Tutte verranno viste dal sistema ed utilizzate nei limiti che ogni
PLC simulato impone, come sarà chiarito nel seguito.
Collegare i morsetti +/- 24V della EasyPort D16 ad un alimentatore a 24V (non fornito). In alternativa, e con lo
stesso effetto, è possibile fornire alimentazione attraverso i piedini di PORT1 o PORT2 identificati con OVCC
e 24VCC (vedere Capitolo 17) ma, probabilmente, sarà conveniente riservare quest'ultimi per l'alimentazione
dei moduli di ingresso/uscita del PLC.
Avvio di PC-Sim
PL-RIS può funzionare solo in connessione con uno dei simulatori di PLC. Perciò prima di avviarlo si richiede
l'avvio di PC-Sim.
Fate clic sul pulsante Start di Windows, aprite quindi la cartella Programmi\Aw-sys e, all’interno di questa,
scegliete la voce corrispondente al simulatore di PLC che desiderate avviare.
Avvio di PL-RIS
Per avviare PL-RIS scegliete il Comando PL-RIS dal Menu Impianti di PC-Sim.
PL-RIS viene visto da PC-Sim come se fosse uno degli impianti simulati, perciò il Menu Impianti viene
disabilitato subito dopo il suo avvio. Esso verrà riabilitato solo alla chiusura di PL-RIS per impedire l'apertura
contemporanea di un altro impianto.
Ricerca dell'interfaccia
Al suo avvio PL-RIS esegue una scansione delle porte seriali del PC alla ricerca di una EasyPort D16
connessa ad una di esse.
Durante l'intero procedimento nella Barra di stato compariranno indicazioni sull'avanzamento della ricerca. In
particolare: la casella a sinistra riporterà il numero della porta seriale correntemente testata e l'altra lo stato
del test.
Al termine della ricerca, se trovata una EasyPort D16, la prima casella indicherà la porta a cui è connessa, la
seconda conterrà il testo 'Connessione attiva'.
Nel caso invece che l'interfaccia non venga trovata, la prima casella risulterà vuota mentre la seconda
conterrà il testo 'EasyPort D16 non trovata'. In questa evenienza, dopo aver controllato i collegamenti, fate
ripartire la procedura di ricerca scegliendo il Comando Cerca EasyPort D16 dal Menu File.
PL-RIS è in grado non solo di trovare una EasyPort D16 collegata ad una delle porte seriali del PC ma anche
di determinare se a quest'ultima ne sono collegate altre mediante ring in fibra ottica e quante queste siano.
Nella finestra di PL-RIS verranno visualizzati e numerati progressivamente tanti pannelli a LED quante sono
le interfacce presenti. La finestra verrà ridimensionata automaticamente in modo da poter contenere tutti i
pannelli. Esiste comunque un limite superiore per i pannelli dato dal tipo di PLC simulato. Se utilizzate
PC-Sim per FPC 404 o per PS3 il numero massimo di pannelli visualizzabili è quattro: tanti quante le word di
ingresso/uscita gestibili da questi PLC. Per le simulazioni dei PLC S5 100U e S7 300 non esiste questo limite
e quindi il numero massimo dei pannelli è dato dal numero massimo di EasyPort D16 collegabili in ring: otto.
Indirizzamento ingressi
Il numero degli ingressi del sistema dipende, come già spiegato, dal numero delle EasyPort D16 e dal tipo di
PLC simulato utilizzato, per un massimo di 64 per i PLC FPC 404 e PS3 e di 128 per i PLC S5 100U e S7
300. Ognuno degli ingressi è individuato in maniera univoca da due termini:
• numero della EasyPort D16 a cui è collegato, con valori tra 1 e 8
• numero del canale di ingresso di quest'ultima, con valori tra INPUT 0 e INPUT 15
Lo stato degli ingressi della EasyPort D16 può essere acquisito indirizzando nel programma (ladder o AWL)
gli ingressi del PLC in accordo con quanto riportato nella tabella seguente. Prestate attenzione al fatto che gli
ingressi per i primi due PLC sono in sequenza mentre per l'ultimo questo non accade, essendovi una
discontinuità tra il byte 1 ed il byte 8.
Lo stato dei primi sedici bit di ingresso sarà visibile sul fronte del PLC simulato attraverso le segnalazioni
luminose a LED previste. Lo stato dei successivi potrà invece essere valutato solo dalla finestra di PL-RIS
nonché, come per tutte le altre variabili, dalla Finestra Stato variabili di PC-Sim.
Tabella 4: Indirizzamento a bit degli ingressi delle EasyPort D16 con PL-RIS
EasyPort #1 FPC 404 PS3 S5 100U S7 300
INPUT 0 I0 I0.0 E0.0 E0.0
INPUT 1 I1 I0.1 E0.1 E0.1
INPUT 2 I2 I0.2 E0.2 E0.2
INPUT 3 I3 I0.3 E0.3 E0.3
INPUT 4 I4 I0.4 E0.4 E0.4
INPUT 5 I5 I0.5 E0.5 E0.5
INPUT 6 I6 I0.6 E0.6 E0.6
INPUT 7 I7 I0.7 E0.7 E0.7
INPUT 8 I1.0 I0.8 E1.0 E1.0
INPUT 9 I1.1 I0.9 E1.1 E1.1
INPUT 10 I1.2 I0.10 E1.2 E1.2
INPUT 11 I1.3 I0.11 E1.3 E1.3
INPUT 12 I1.4 I0.12 E1.4 E1.4
INPUT 13 I1.5 I0.13 E1.5 E1.5
INPUT 14 I1.6 I0.14 E1.6 E1.6
INPUT 15 I1.7 I0.15 E1.7 E1.7
EasyPort #2 FPC 404 PS3 S5 100U S7 300
INPUT 0 I2.0 I1.0 E8.0 E8.0
INPUT 1 I2.1 I1.1 E8.1 E8.1
INPUT 2 I2.2 I1.2 E8.2 E8.2
INPUT 3 I2.3 I1.3 E8.3 E8.3
INPUT 4 I2.4 I1.4 E8.4 E8.4
INPUT 5 I2.5 I1.5 E8.5 E8.5
INPUT 6 I2.6 I1.6 E8.6 E8.6
INPUT 7 I2.7 I1.7 E8.7 E8.7
INPUT 8 I3.0 I1.8 E9.0 E9.0
INPUT 9 I3.1 I1.9 E9.1 E9.1
INPUT 10 I3.2 I1.10 E9.2 E9.2
INPUT 11 I3.3 I1.11 E9.3 E9.3
INPUT 12 I3.4 I1.12 E9.4 E9.4
INPUT 13 I3.5 I1.13 E9.5 E9.5
INPUT 14 I3.6 I1.14 E9.6 E9.6
INPUT 15 I3.7 I1.15 E9.7 E9.7
Per i PLC PS3, S5 100U e S7 300 è inoltre data la possibilità di indirizzamento a byte ed a word nei termini
mostrati dalla tabella che segue.
Tabella 5: Indirizzamento a byte e a word degli ingressi delle EasyPort D16 con PL-RIS
EasyPort #1 FPC 404 PS3 S5 100U S7 300
INPUT 0 – 7 - IB0.0 EB0 EB0
INPUT 8 – 15 - IB0.8 EB1 EB1
INPUT 0 – 15 - IW0 EW0 EW0
EasyPort #2 FPC 404 PS3 S5 100U S7 300
INPUT 0 – 7 - IB1.0 EB8 EB8
INPUT 8 – 15 - IB1.8 EB9 EB9
INPUT 0 – 15 - IW1 EW8 EW8
EasyPort #3 FPC 404 PS3 S5 100U S7 300
INPUT 0 – 7 - IB2.0 EB10 EB10
INPUT 8 – 15 - IB2.8 EB11 EB11
INPUT 0 – 15 - IW2 EW10 EW10
EasyPort #4 FPC 404 PS3 S5 100U S7 300
INPUT 0 – 7 - IB3.0 EB12 EB12
INPUT 8 – 15 - IB3.8 EB13 EB13
INPUT 0 – 15 - IW3 EW12 EW12
EasyPort #5 FPC 404 PS3 S5 100U S7 300
INPUT 0 – 7 - - EB14 EB14
INPUT 8 – 15 - - EB15 EB15
INPUT 0 – 15 - - EW14 EW14
EasyPort #6 FPC 404 PS3 S5 100U S7 300
INPUT 0 – 7 - - EB16 EB16
INPUT 8 – 15 - - EB17 EB17
INPUT 0 – 15 - - EW16 EW16
EasyPort #7 FPC 404 PS3 S5 100U S7 300
INPUT 0 – 7 - - EB18 EB18
INPUT 8 – 15 - - EB19 EB19
INPUT 0 – 15 - - EW18 EW18
EasyPort #8 FPC 404 PS3 S5 100U S7 300
INPUT 0 – 7 - - EB20 EB20
INPUT 8 –15 - - EB21 EB21
INPUT 0 – 15 - - EW20 EW20
Indirizzamento uscite
Il numero delle uscite del sistema dipende, come già spiegato, dal numero delle EasyPort D16 e dal tipo di
PLC simulato utilizzato, per un massimo di 64 per i PLC FPC 404 e PS3 e di 128 per i PLC S5 100U e S7
300. Ognuna delle uscite è individuata in maniera univoca da due termini:
• numero della EasyPort D16 a cui è collegata, con valori tra 1 e 8
• numero del canale di uscita di quest'ultima, con valori tra OUTPUT 0 e OUTPUT 15
Lo stato delle uscite della EasyPort D16 può essere impostato ed acquisito indirizzando nel programma
(ladder o AWL) le uscite del PLC in accordo con quanto riportato nella tabella seguente. Prestate attenzione
al fatto che le uscite per i primi due PLC sono in sequenza mentre per l'ultimo questo non accade, essendovi
una discontinuità tra il byte 3 ed il byte 8.
Lo stato dei primi sedici bit di uscita sarà visibile sul fronte del PLC simulato attraverso le segnalazioni
luminose a LED previste. Lo stato dei successivi potrà invece essere valutato solo dalla finestra di PL-RIS
nonché, come per tutte le altre variabili, dalla Finestra Stato variabili di PC-Sim.
Tabella 6: Indirizzamento a bit delle uscite delle EasyPort D16 con PL-RIS
EasyPort #1 FPC 404 PS3 S5 100U S7 300
OUTPUT 0 O0 Q0.0 A2.0 A4.0
OUTPUT 1 O1 Q0.1 A2.1 A4.1
OUTPUT 2 O2 Q0.2 A2.2 A4.2
OUTPUT 3 O3 Q0.3 A2.3 A4.3
OUTPUT 4 O4 Q0.4 A2.4 A4.4
OUTPUT 5 O5 Q0.5 A2.5 A4.5
OUTPUT 6 O6 Q0.6 A2.6 A4.6
OUTPUT 7 O7 Q0.7 A2.7 A4.7
OUTPUT 8 O1.0 Q0.8 A3.0 A5.0
OUTPUT 9 O1.1 Q0.9 A3.1 A5.1
OUTPUT 10 O1.2 Q0.10 A3.2 A5.2
OUTPUT 11 O1.3 Q0.11 A3.3 A5.3
OUTPUT 12 O1.4 Q0.12 A3.4 A5.4
OUTPUT 13 O1.5 Q0.13 A3.5 A5.5
OUTPUT 14 O1.6 Q0.14 A3.6 A5.6
OUTPUT 15 O1.7 Q0.15 A3.7 A5.7
EasyPort #2 FPC 404 PS3 S5 100U S7 300
OUTPUT 0 O2.0 Q1.0 A8.0 A8.0
OUTPUT 1 O2.1 Q1.1 A8.1 A8.1
OUTPUT 2 O2.2 Q1.2 A8.2 A8.2
OUTPUT 3 O2.3 Q1.3 A8.3 A8.3
OUTPUT 4 O2.4 Q1.4 A8.4 A8.4
OUTPUT 5 O2.5 Q1.5 A8.5 A8.5
OUTPUT 6 O2.6 Q1.6 A8.6 A8.6
OUTPUT 7 O2.7 Q1.7 A8.7 A8.7
OUTPUT 8 O3.0 Q1.8 A9.0 A9.0
OUTPUT 9 O3.1 Q1.9 A9.1 A9.1
OUTPUT 10 O3.2 Q1.10 A9.2 A9.2
OUTPUT 11 O3.3 Q1.11 A9.3 A9.3
OUTPUT 12 O3.4 Q1.12 A9.4 A9.4
OUTPUT 13 O3.5 Q1.13 A9.5 A9.5
OUTPUT 14 O3.6 Q1.14 A9.6 A9.6
OUTPUT 15 O3.7 Q1.15 A9.7 A9.7
Per i PLC PS3, S5 100U e S7 300 è inoltre data la possibilità di indirizzamento a byte ed a word nei termini
mostrati dalla tabella che segue.
Tabella 7: Indirizzamento a byte e a word delle uscite delle EasyPort D16 con PL-RIS
EasyPort #1 FPC 404 PS3 S5 100U S7 300
OUTPUT 0 – 7 - QB0.0 AB2 AB4
OUTPUT 8 – 15 - QB0.8 AB3 AB5
OUTPUT 0 – 15 - QW0 AW2 AW4
EasyPort #2 FPC 404 PS3 S5 100U S7 300
OUTPUT 0 – 7 - QB1.0 AB8 AB8
OUTPUT 8 – 15 - QB1.8 AB9 AB9
OUTPUT 0 – 15 - QW1 AW8 AW8
EasyPort #3 FPC 404 PS3 S5 100U S7 300
OUTPUT 0 – 7 - QB2.0 AB10 AB10
OUTPUT 8 – 15 - QB2.8 AB11 AB11
OUTPUT 0 – 15 - QW2 AW10 AW10
EasyPort #4 FPC 404 PS3 S5 100U S7 300
OUTPUT 0 – 7 - QB3.0 AB12 AB12
OUTPUT 8 – 15 - QB3.8 AB13 AB13
OUTPUT 0 – 15 - QW3 AW12 AW12
EasyPort #5 FPC 404 PS3 S5 100U S7 300
OUTPUT 0 – 7 - - AB14 AB14
OUTPUT 8 – 15 - - AB15 AB15
OUTPUT 0 – 15 - - AW14 AW14
EasyPort #6 FPC 404 PS3 S5 100U S7 300
OUTPUT 0 – 7 - - AB16 AB16
OUTPUT 8 – 15 - - AB17 AB17
OUTPUT 0 – 15 - - AW16 AW16
EasyPort #7 FPC 404 PS3 S5 100U S7 300
OUTPUT 0 – 7 - - AB18 AB18
OUTPUT 8 – 15 - - AB19 AB19
OUTPUT 0 – 15 - - AW18 AW18
EasyPort #8 FPC 404 PS3 S5 100U S7 300
OUTPUT 0 –7 - - AB20 AB20
OUTPUT 8 – 15 - - AB21 AB21
OUTPUT 0 – 15 - - AW20 AW20
Introduzione
Ulteriore componente del mondo AW-SYS è PL-Lab, interfaccia tra PC-Sim o PC-RIS e InTouch.
Come mostrato nella figura seguente, PL-Lab permette lo scambio dati, e quindi il collegamento, tra i PLC
simulati di PC-Sim ed InTouch, il noto pacchetto di supervisione della Wonderware, mediante il quale potrete
costruire per vostro conto nuove finestre di simulazione di impianti.
Gli stessi impianti potranno essere comandati anche da PLC reali, o da altri sistemi di controllo, per mezzo
del modulo PC-RIS di cui si è già detto in precedenza.
Con PL-Lab vengono forniti il sorgente di un impianto prototipo ed alcuni esempi applicativi di impianti
realizzati con InTouch.
In questo capitolo, oltre a descrivere il funzionamento di PL-Lab, verranno presentati degli esempi di impianti
realizzati con esso. Per quanto le procedure di costruzione dei medesimi verranno descritte in dettaglio, non
saranno fornite spiegazioni specifiche sull'utilizzo di InTouch. A meno che non siate già utenti esperti di
InTouch, sarà quindi conveniente integrare la lettura di questo capitolo con le informazioni riportate nei
manuali di InTouch.
PL-Lab può funzionare solo in connessione con uno dei simulatori di PLC o con PC-RIS. Perciò è necessario
che sia in esecuzione uno di questi prima che PL-Lab venga avviato.
Per avviare PC-Sim o PC-RIS, fate clic sul pulsante Start di Windows, aprite quindi la cartella
Programmi\Aw-sys e, all’interno di questa, scegliete la voce di uno dei simulatori di PLC o dell'interfaccia
verso i PLC reali: PC-RIS.
Avvio di PL-Lab
Per avviare PL-Lab scegliete il Comando PL-Lab dal Menu Impianti di PC-Sim o di PC-RIS.
PL-Lab viene visto da PC-Sim e da PC-RIS come se fosse uno degli impianti simulati presenti nel pacchetto
perciò, subito dopo il suo avvio, il Menu Impianti viene disabilitato per impedire l'apertura contemporanea di
un altro impianto. Esso verrà riabilitato solo alla chiusura di PL-Lab.
Descrizione di PL-Lab
La finestra di PL-Lab contiene una serie di caselle che mostrano i valori degli ingressi e delle uscite del PLC.
Le caselle di ingresso consentono all'impianto di assegnare il valore degli ingressi digitali ed analogici del
PLC. Dalle caselle di uscita, invece, l'impianto potrà leggere i valori delle uscite digitali ed analogiche del
PLC.
In particolare, la casella IW0 contiene il valore, espresso in base decimale, dei 16 ingressi digitali del PLC,
con limiti quindi da 0 a 65535. Analoga cosa si può dire per la casella QW0, che contiene il valore delle 16
uscite del PLC.
Per il PLC PS3 simulato, lo stato di ognuno dei canali di I/O occupa nella specifica word il corrispondente bit.
Quindi, il canale di ingresso I0.0 occupa il bit 0 della word IW0, il canale I0.1 il bit 1, e così via per
terminare con il canale I0.15 che, nella medesima word, occupa il bit di peso maggiore: il 15. Similmente
accade ai canali di uscita nella composizione di QW0.
Word IW0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Ingresso I0.15 I0.14 I0.13 I0.12 I0.11 I0.10 I0.9 I0.8 I0.7 I0.6 I0.5 I0.4 I0.3 I0.2 I0.1 I0.0
Word QW0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Q0.1
Uscita Q0.14 Q0.13 Q0.12 Q0.11 Q0.10 Q0.9 Q0.8 Q0.7 Q0.6 Q0.5 Q0.4 Q0.3 Q0.2 Q0.1 Q0.0
5
Per il PLC FPC 404 gli otto canali di ingresso del modulo 0 occupano il byte meno significativo della IW0,
conservando il loro ordine al suo interno. Il byte più significativo è invece composto in modo analogo dagli
ingressi del modulo 1. Una rappresentazione simile ammettono le uscite dei medesimi moduli all'interno della
word QW0.
Word IW0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Ingresso I1.7 I1.6 I1.5 I1.4 I1.3 I1.2 I1.1 I1.0 I7 I6 I5 I4 I3 I2 I1 I0
Word QW0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Uscita O1.7 O1.6 O1.5 O1.4 O1.3 O1.2 O1.1 O1.0 O7 O6 O5 O4 O3 O2 O1 O0
Per il PLC S5 100U la formattazione delle word è simile a quella appena vista, fatta salva la differente
numerazione dei moduli di uscita: 2 e 3.
Word IW0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Ingresso E1.7 E1.6 E1.5 E1.4 E1.3 E1.2 E1.1 E1.0 E0.7 E0.6 E0.5 E0.4 E0.3 E0.2 E0.1 E0.0
Word QW0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Uscita A3.7 A3.6 A3.5 A3.4 A3.3 A3.2 A3.1 A3.0 A2.7 A2.6 A2.5 A2.4 A2.3 A2.2 A2.1 A2.0
Word IW0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Ingresso E1.7 E1.6 E1.5 E1.4 E1.3 E1.2 E1.1 E1.0 E0.7 E0.6 E0.5 E0.4 E0.3 E0.2 E0.1 E0.0
Word QW0
Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Uscita A5.7 A5.6 A5.5 A5.4 A5.3 A5.2 A5.1 A5.0 A4.7 A4.6 A4.5 A4.4 A4.3 A4.2 A4.1 A4.0
Le caselle da IA0 a IA3 visualizzano invece il valore degli ingressi analogici del PLC. Tale valore,
indipendentemente dal modello del PLC simulato, è normalizzato tra 0 e 10000. Esso verrà poi scalato, in
dipendenza del PLC collegato, per essere disponibile a questo in maniera congruente con la
rappresentazione attesa. Per esempio, per il PLC PS3 il valore 0-10000 verrà convertito in un valore 0-255,
coerentemente con la rappresentazione su 8 bit degli ingressi analogici di questo PLC. Per ulteriori
informazioni sulla codifica degli ingressi analogici, leggete quanto detto nei capitoli dedicati alle note di
programmazione dei PLC PS3, S5 100U e S7 300; nella simulazione del PLC FPC 404 non sono stati
implementati canali analogici.
Lo Item Name dipenderà invece dal particolare dato a cui si vuole fare riferimento, come riassunto di seguito:
• Ingressi digitali del PLC IW0
• Uscite digitali del PLC QW0
• Ingressi analogici del PLC IA0, IA1, IA2, IA3
• Uscite analogiche del PLC QA0, QA1, QA2, QA3
Dove il percorso specificato nella casella Application Directory Name dipende dall'aver voluto inserire la
nuova directory nella cartella di InTouch, ma potreste inserire qui un nome valido a vostro piacimento.
Premete Ok per chiudere la finestra.
Premete ora il pulsante di avvio del WindowMaker per entrare nell'ambiente di sviluppo.
Vediamo qual'è la procedura da seguire per impostare un tag del database perché il suo valore rifletta il
contenuto della word QW0, cioè la word delle uscite digitali del PLC.
Dal menu Special di WindowMaker scegliete il comando Tagname Dictionary. Viene mostrata la finestra di
definizione del tag.
Per dichiarare un nuovo tag premete il pulsante New. Nella casella Tagname digitate "QW0" ed in quella
Comment digitate "Uscite digitali PLC (word)".
Per definire il tipo di dato e la sua posizione, premete il pulsante Type e, nella finestra che compare, scegliete
DDE Integer facendo doppio clic su di esso.
A seguito di questa operazione la finestra Tagname Definition viene ampliata per far posto alle specifiche di
accesso al DDE.
Fate clic sul pulsante DDE Access Name per far comparire la finestra di dialogo DDE Access Name
Definition.
Fate clic sul pulsante Add. Compilate le caselle come nella figura che segue in modo da definire due dei tre
parametri del DDE: Application Name (PLLAB) e Topic Name (PLCIO) ed associare all'insieme un nome
identificativo (PL-Lab).
Quindi premete il pulsante OK. Il nuovo nome di accesso al DDE viene aggiunto nella lista. Fate clic sul
pulsante Done per chiudere la finestra.
Correggiamo i valori preimpostati per la caselle Max EU e Max Raw digitando in esse 65535: il valore
massimo di QW0 che si ottiene quando tutti i sedici bit di uscita del PLC sono impostati a 1.
Per finire, selezionate il pulsante opzione Use Tagname as Item Name, definendo così l'ultimo elemento del
DDE: come Item Name verrà utilizzato lo stesso nome già specificato per il tag (QW0). A questo punto la
finestra Tagname Definition vi apparirà così.
Abbiamo terminato la definizione del tag QW0, ogni riferimento a questo tag porterà ad ottenere il valore
della word di uscita del PLC simulato o di quello reale, se usate PL-RIS. Chiudete la finestra facendo clic sul
pulsante Done. Siamo pronti per sperimentare quanto realizzato.
Dal menu File del WindowMaker scegliete il comando New Window e nella casella Name della finestra di
dialogo Window Property digitate "Mio impianto", lasciando inalterato il resto delle impostazioni.
Fate clic sul pulsante OK per confermare ed aprire la nuova finestra.
Se la Toolbox non è aperta, apritela scegliendo il comando Toolbox Show/Hide dal menu Special.
In essa selezionate lo strumento Text e quindi quello Left Justify poi fate clic nella finestra Mio impianto,
quindi digitate "Valore della word delle uscite digitali:". Selezionate nuovamente lo strumento testo e fate clic
ancora sulla finestra. Digitate ora "#" per specificare ad InTouch che il campo sarà utilizzato per visualizzare
un valore numerico. Fate clic al di fuori del testo appena inserito per terminare la fase di input. Spostate se
necessario i due oggetti per ottenere una visualizzazione simile a quella mostrata nella figura seguente.
Definiamo ora le caratteristiche di animazione dell'ultimo oggetto inserito. Fate doppio clic su di esso, oppure
selezionatelo e premete Invio, per richiamare la finestra di dialogo di definizione dell'animazione.
Fate clic sul pulsante Analog nel pannello Value Display. Nella casella Expression della finestra di dialogo
che viene visualizzata digitate "QW0": in runtime al simbolo # verrà così sostituita la visualizzazione del
valore di QW0.
Fate clic su OK. Il pulsante opzione al lato del pulsante Analog cliccato in precedenza sarà ora selezionato ad
indicare che un assegnazione per tale caratteristica è stata effettuata.
Premete il pulsante Done per terminare.
Siamo ora pronti per testare il funzionamento del DDE. Fate clic sul menu Runtime!, all'estrema destra della
barra dei menu del WindowMaker, per avviare l'ambiente runtime di InTouch. La figura che segue mostra
quanto vi apparirà.
Il numero visualizzato come valore della word delle uscite digitali dipende dall'aver attivato tutte le uscite del
PLC. Per far variare la visualizzazione provate a forzare le uscite con valori diversi. Fate riferimento a quanto
detto nel paragrafo Forzamento variabili nel Capitolo 3 o, se usate PL-RIS, al manuale del software di
programmazione del vostro PLC reale.
Arricchiamo ora l'impianto, che per il momento non fa assolutamente onore a questo nome, inserendo due
lampade che verranno comandate dalle prime due uscite del PLC.
Ritorniamo alla modalità di progettazione facendo clic sul menu Development! all'estrema destra della barra
dei menu della finestra WindowViewer.
Nella Toolbox selezionate lo strumento Ellipse quindi tracciate un cerchio nella finestra Mio impianto.
Tracciatene un altro uguale, oppure selezionate il primo e scegliete il comando Duplicate dal menu Edit.
Disponete e ridimensionate i due cerchi per ottenere qualcosa di simile a quanto illustrato nella figura che
segue.
Nella maniera illustrata in precedenza, inserite quattro testi per migliorare la leggibilità, al fine di ottenere
quanto illustrato nella figura seguente.
L1 ed L2 saranno le sigle delle due lampade, mentre OUT0 e OUT1 ci ricorderanno a quali uscite del PLC
sono rispettivamente collegate. Per l'allineamento dei testi con i cerchi saranno utili i comandi del menu
Arrange - Align.
Definiamo ora le caratteristiche di animazione per le due lampade. Fate doppio clic sulla prima per
richiamare la finestra di dialogo dell'animazione. Quindi in quest'ultima fate clic sul pulsante Discrete del
pannello Fill color.
Nella casella Expression della finestra di dialogo Fill Color digitate "QW0.00" per specificare che il bit 0 della
word QW0 determinerà il colore della lampada. Impostate quindi due colori diversi per le caselle FALSE e
TRUE del pannello Colors, ad esempio verde scuro e verde chiaro rispettivamente. La finestra vi apparirà
come segue.
Variando lo stato delle uscite del PLC le lampade cambieranno colore, simulando così l'accensione e lo
spegnimento.
Aggiungiamo ora dei pulsanti per comandare due ingressi del PLC. Selezionate lo strumento Button nella
Toolbox del WindowViewer. Nella finestra Mio impianto disegnate due pulsanti, ridimensionateli e spostateli
per ottenere il risultato mostrato nella figura che segue. Quindi aggiungete e modificate i testi.
I testi all'interno dei pulsanti possono essere modificati selezionandoli singolarmente e scegliendo il comando
Substistute Strings dal menu Special.
Occupiamoci del collegamento dei pulsanti al PLC, cominciando da P1. Fate doppio clic su di esso per far
apparire la finestra di dialogo per la scelta dell'animazione. Quindi fate clic sul pulsante Discrete value nel
gruppo Touch Pushbuttons del pannello Touch Links.
Nella casella Tagname digitate "IW0.00", per indicare che il bit da cambiare alla pressione del pulsante è il bit
0 della word degli ingressi digitali del PLC, e premete OK. Non essendo ancora definito il tag IW0, InTouch vi
chiede se intendete farlo ora, rispondete affermativamente.
Nella casella Tagname della nuova finestra di dialogo che compare è già mostrato "IW0". Fate clic sul
pulsante Type e selezionate dall'elenco il tipo DDE Integer e premete OK. Il contenuto delle caselle Max EU e
Max Raw dovrebbe già essere al valore corretto: l'ultimo impostato per la word di uscita e cioè 65535. Se
così non fosse digitate in esse il giusto valore. Per finire, selezionate il pulsante opzione Use Tagname as
Item Name e premete il pulsante Done.
Ripetete l'operazione per il pulsante P2, il valore da impostare per il Tagname è IW0.01 cioè il bit 1 della word
degli ingressi. Non vi verrà chiesto di definire il tag IW0 in quanto è stato appena fatto per l'altro pulsante.
Bene! L'impianto è pronto, possiamo avviarlo portando InTouch in runtime.
Per verificare il funzionamento degli ingressi proviamo a premere il pulsante P1. La casella IW0 di PL-Lab
mostrerà il valore 1, informandoci che è attivo il bit 0. Facendo clic su P2 la stessa casella mostrerà il valore
2 segnalandoci che, questa volta, è attivo il bit 1. In accordo col valore di questi bit, i primi LED di
segnalazione dello stato degli ingressi del PLC si accenderanno o si spegneranno.
E' arrivato il tempo di scrivere un programma sul PLC per verificare il funzionamento dell'intero impianto e dei
collegamenti. Poniamoci l'obbiettivo di far accendere la lampada L1 con il pulsante P1 e di farla spegnere con
P2. La lampada L2 si accenderà invece ogniqualvolta si preme uno dei due pulsanti
Supponiamo di utilizzare il PLC simulato PS3. Il programma ladder da disegnare è il seguente:
Avviate il PLC e provate a premere i due pulsanti per testare il funzionamento dell'impianto e del programma.
Se la procedura fin qui descritta è stata eseguita correttamente, lo stato delle lampade simulate varierà in
funzione della pressione sui pulsanti come specificato in precedenza. Se, invece, l'impianto non dovesse
funzionare correttamente, controllate dapprima lo stato degli ingressi e delle uscite del PLC osservando lo
stato dei rispettivi LED sul fronte dell'apparecchiatura e quindi verificate la correttezza delle impostazioni dei
tag di InTouch.
Selezionate ora l'intera valvola e scegliete il comando Make symbol dal menu Arrange: la valvola composta
prima da diverse parti è diventata ora un unico elemento.
Duplicate per due volte la valvola, spostate gli oggetti e completate il disegno tracciando le linee delle
tubazioni ed aggiungendo i testi al fine di ottenere quanto illustrato nella figura che segue.
Con lo strumento Button disegnate quindi i due pulsanti P1 e P2 e con quello Ellipse disegnate due cerchi
che andranno a rappresentare i livellostati. Completate scrivendo o modificando i testi ed inserendo al di
sotto del serbatoio il particolare testo "#" che permetterà di visualizzare in formato numerico il livello del
liquido contenuto al suo interno.
La finestra Serbatoio si presenterà a questo punto come mostrato nella figura seguente.
Definiamo ora le caratteristiche di animazione dei singoli oggetti. Ricordate che l'accesso alla finestra di
dialogo per la definizione dell'animazione si ottiene facendo doppio clic sull'oggetto. Non descriveremo più
questa procedura ma faremo direttamente riferimento alle specifiche caratteristiche di animazione
dell'oggetto volta per volta in esame. Cominciamo da quelle del serbatoio.
Fate clic sul pulsante Vertical nel pannello Percent Fill della finestra di definizione dell'animazione e compilate
i campi come segue.
Premendo il pulsante OK vi verrà chiesto di definire il tag LEVEL. Impostate nella finestra di dialogo Tagname
Definition i valori riportati nella figura seguente, facendo attenzione a scegliere il tipo Memory Integer.
Le impostazioni specificano, tra l'altro, che la quantità massima di liquido nel serbatoio sarà di 10000 unità e
che l'impianto verrà avviato con serbatoio pieno a metà (5000 unità).
Passiamo ora alla definizione dell'animazione dei pulsanti. Per P1 fate clic sul pulsante Discrete Value nel
gruppo Touch Pushbuttons del pannello Touch Links ed impostate il Tagname su "P1", quindi premete OK.
Vi verrà chiesto di definire il tag P1. L'unica impostazione da effettuare è quella del tipo: Memory Discrete.
Seguite un analogo procedimento per il pulsante P2, dichiarando come tag "P2".
Passiamo ora alle valvole. La valvola VIN avrà la proprietà Fill Color - Discrete impostata come nella figura
seguente.
Il colore di riempimento dipenderà quindi dal tag Q0, cioè dal canale di uscita del PLC. I colori scelti sono
grigio per lo stato Off e verde chiaro per lo stato On.
Premete OK per chiudere la finestra. Vi verrà chiesto di definire il tag Q0. L'unica impostazione da effettuare
è quella del tipo: Memory Discrete..
Analoghe impostazioni vanno effettuate per le valvole VOUT1 e VOUT2 che assocerete rispettivamente ai
tag P1 e P2.
Le impostazioni per i livellostati sono semplici: si tratta di definire per essi la proprietà Fill Color – Discrete in
relazione ai tag I0 per L1 e I1 per L2. Questa impostazione consentirà, attraverso la variazione del colore del
livellostato, la visualizzazione dello stato dell'ingresso del PLC specifico. L'impostazione dell'ingresso, come
valore vero o falso, sarà invece effettuata in seguito.
Rimane da animare soltanto l'indicatore numerico di livello. Definiamo per esso la proprietà Value Display –
Analog associandola al tag LEVEL.
Definiamo ora le funzioni che ci permetteranno di passare dalle word di ingresso/uscita ai singoli bit,
limitatamente a quelli utilizzati nel presente impianto.
Scegliete il comando Special – Scripts – Data Change Scripts… e compilate i campi come nella figura
seguente.
Ad ogni variazione del valore di QW0, Q0 sarà aggiornato con il contenuto del bit 0 della word.
Premete ora il pulsante New e nella casella Tagname digitate 'I0'. Quindi inserite il seguente script:
IW0.00=I0;
Ad ogni variazione di I0 il bit 0 della word IW0 verrà aggiornato in base del primo.
Seguite la stessa procedura per il tag I1, definendo lo script:
IW0.01=I1;
Si tratta ora di scrivere poche espressioni che consentiranno ai diversi componenti dell'impianto di interagire
tra di loro. Cioè il livello del serbatoio dovrà aumentare se la valvola VIN viene aperta e diminuire quando lo
diventano VOUT1 e/o VOUT 2. Inoltre i contatti dei livellostati dovranno chiudersi a determinati livelli di liquido
nel serbatoio e, di conseguenza, gli ingressi del PLC che ad essi sono collegati dovranno attivarsi.
Per fare ciò scegliete il comando Special / Scripts / Application Scripts… e, nella finestra di dialogo che
compare, compilate i campi come mostrato nella seguente figura.
La prima parte dello script, che viene eseguito ogni 20 ms come specificato nella casella Every, e cioè:
IF Q0 AND LEVEL <=9980 THEN
LEVEL=LEVEL+20;
ENDIF;
provvede ad aumentare di 20 unità il livello del serbatoio quando la valvola di ingresso è aperta e vi è spazio
sufficiente in esso. Il codice che segue, e cioè:
IF P1 AND LEVEL >=10 THEN
LEVEL=LEVEL - 10;
ENDIF;
IF P2 AND LEVEL >15 THEN
LEVEL=LEVEL - 15;
ENDIF;
serve, al contrario, a diminuire il livello quando sono aperte una o entrambe le valvole sulle tubazioni di uscita
e nel serbatoio esiste ancora una quantità di minima liquido. Il livello verrà diminuito di 10 unità per VOUT1
aperta e di 15 per VOUT2 aperta. La seconda tubazione avrà quindi una portata maggiore.
L'ultima parte dello script, cioè:
I0=LEVEL>7050;
I1=LEVEL>8750;
provvede all'impostazione degli ingressi del PLC collegati ai livellostati. Le quantità di confronto sono state
ricavate sperimentalmente per fare in modo che la commutazione avvenga in corrispondenza dei livellostati
nel disegno e, quindi, nell'impianto da voi realizzato i valori corretti potrebbero risultare diversi.
Per trovare sperimentalmente i valori corretti da inserire, operate nel seguente modo: chiudete le valvole di
uscita e riempite il serbatoio fino al livellostato L1, forzando l'uscita del PLC a cui è collegato l'attuatore della
valvola VIN. In queste condizioni il valore indicato dal testo al di sotto del serbatoio è quello da inserire nel
primo confronto. Se inavvertitamente doveste superare tale livello, potreste svuotare un po’ il serbatoio
azionando P1. Ripetete il procedimento per L2 per ricavare il secondo valore di confronto.
Scriviamo ora un programma per PLC, ad esempio il PS3, che comandi la valvola VIN in modo da mantenere
il livello nel serbatoio tra L1 ed L2. La cosa è molto semplice ed è mostrata nella seguente figura.
Avviamo ora l'impianto passando alla modalità runtime. Avviamo anche il PLC simulato portandolo in Run.
Nella figura seguente è mostrato quanto dovreste vedere. Potete aprire o chiudere le due valvole VOUT1 e
VOUT2 facendo clic sui rispettivi pulsanti di comando. Il PLC, comandando la valvola VIN, provvederà a
mantenere il livello tra i due livellostati. A meno che non apriate contemporaneamente le valvole di uscita. In
tal caso la portata della tubazione di ingresso sarà minore della complessiva in uscita ed il livello nel
serbatoio, lentamente ma inesorabilmente, diminuirà.
Gli impianti descritti in questo capitolo sono presenti nelle cartelle AW-SYS\PL-Lab\DdeTest e AW-SYS\PL-
Lab\Tank del CD di installazione di AW-SYS. Per provarli, copiate l'intera cartella nell'hard disk del vostro PC,
quindi eliminate per tutti i file in essa presenti l'attributo 'Sola lettura' ed aprite l'applicazione con InTouch.
Gli esempi sono stati realizzati usando una risoluzione video di 800x600 pixel. Se aperti con una risoluzione
diversa, InTouch vi chiederà l'autorizzazione alla conversione della risoluzione. A seguito di questa
operazione potrebbero verificarsi lievi irregolarità nella visualizzazione delle immagini.
L'impianto prototipo
Nella cartella AW-SYS\PL-Lab\Prototyp del CD-ROM di AW-SYS è presente un impianto senza alcuna
finestra, in cui sono già stati implementati i tag e gli script per la gestione del DDE con i PLC simulati o con
quelli reali attraverso PC-RIS. Per sfruttare queste potenzialità, copiate la cartella nell'hard disk del vostro
PC, rinominandola eventualmente in modo consono all'impianto che intendete realizzare, ed eliminate per
tutti i file in essa presenti l'attributo 'Sola lettura'. Quindi lanciate InTouch e fate clic sul pulsante Modify
Directory List…. Nella finestra che compare fate clic sul pulsante Add… e digitate il nome del cartella, o
cercatela cliccando su Browse…., quindi premete OK e poi ancora Done.
La cartella ora compare nella lista; selezionatela e premete il pulsante per l'avvio del WindowMaker.
Per generare una finestra scegliete il comando New Window… dal menu File e compilate i campi Name e
Comment con nomi adeguati, quindi premete OK. Vi viene mostrata la finestra vuota del vostro impianto. Si
tratterà ora di disegnare i componenti e di definirne le caratteristiche di animazione e gli eventuali script per le
interconnessioni. Ricordate comunque di utilizzare i tag predefiniti per far riferimento alle variabili di ingresso
e di uscita del PLC.
La Tabella 8 che segue illustra l'elenco di questi tag, con una breve descrizione, e mostra la corrispondenza
con gli operandi di ognuno dei PLC simulati o con il canale della EasyPort D16 quando si utilizza PC-RIS.
Mentre gli ingressi e le uscite digitali sono disponibili per tutti, gli ingressi ed uscite analogici lo sono a
seconda delle peculiarità del PLC simulato.
Gli script preimpostati nell'impianto prototipo assolvono ad un duplice compito: da un lato aggiornano i tag da
Q0 a Q15, quelli che corrispondono alle uscite digitali del PLC, ad ogni variazione della word QW0 che li
rappresenta nel complesso; dall'altro aggiornano la word IW0 ad ogni variazione dei tag da I0 a I15, quelli
che corrispondono ai singoli ingressi del PLC e che detta word idealmente vanno a formare.
Per accedere ad essi scegliete il comando Scripts – Data Change Scripts… dal menu Scripts del
WindowMaker.
Nella Tabella 9 che segue riportiamo questi script ed il nome del tag il cui evento Change porta in
esecuzione.
TAGNAME SCRIPT
Q0=QW0.00;
Q1=QW0.01;
Q2=QW0.02;
Q3=QW0.03;
Q4=QW0.04;
Q5=QW0.05;
Q6=QW0.06;
Q7=QW0.07;
QW0 Q8=QW0.08;
Q9=QW0.09;
Q10=QW0.10;
Q11=QW0.11;
Q12=QW0.12;
Q13=QW0.13;
Q14=QW0.14;
Q15=QW0.15;
I0 IW0.00=I0;
I1 IW0.01=I1;
I2 IW0.02=I2;
I3 IW0.03=I3;
I4 IW0.04=I4;
I5 IW0.05=I5;
I6 IW0.06=I6;
I7 IW0.07=I7;
I8 IW0.08=I8;
I9 IW0.09=I9;
I10 IW0.10=I10;
I11 IW0.11=I11;
I12 IW0.12=I12;
I13 IW0.13=I13;
I14 IW0.14=I14;
I15 IW0.15=I15;
Generalità
PL-Net è il modulo di AW-SYS che consente il controllo di un impianto reale, avente un elevato numero di
ingressi/uscite, per mezzo di più PLC simulati in esecuzione su altrettanti personal computer collegati in rete
con protocollo TCP/IP. L'interfacciamento verso l'impianto avviene mediante più EasyPort D16, per un
massimo di otto, collegate tra loro ad anello in fibra ottica e ad uno dei PC attraverso la porta seriale.
Ad ognuno dei PLC sarà possibile associare logicamente una o più interfacce in modo da far corrispondere
gli ingressi/uscite dei primi a quelli delle seconde. La chiusura del contatto di un sensore dell'impianto
comporterà così l'eccitazione del corrispondente ingresso del PLC simulato; all'attivazione di una delle uscite
di quest'ultimo corrisponderà l'eccitazione di un attuatore sull'impianto. PL-Net provvederà a leggere,
interpretare ed incanalare i dati sulla rete e sull'anello in modo assolutamente trasparente per l'utente.
Con PL-Net, inoltre, i diversi PLC simulati possono condividere informazioni, sotto forma di word globali,
permettendo così la sincronizzazione delle diverse parti di impianto controllate dai diversi PLC.
PL-Net consente quindi l'organizzazione di un laboratorio di automazione flessibile in cui ciascuno degli
allievi, o gruppo di allievi, potrà dedicarsi alla programmazione dell'automazione di una parte di impianto per
poi verificare il risultato con gli altri. Successivamente i compiti potranno essere scambiati, anche
continuando a lavorare con lo stesso PC.
Avvio di PC-Sim
PL-Net può funzionare solo in connessione con uno dei simulatori di PLC. Perciò è necessario che sia in
esecuzione PC-Sim prima che PL-Net venga avviato.
Per avviare PC-Sim, su ognuno dei PC in rete fate clic sul pulsante Start di Windows, aprite quindi la cartella
Programmi\Aw-sys e, all’interno di questa, scegliete il comando per l'avviamento di uno dei simulatori di PLC.
Non è necessario che il tipo di PLC simulato sia lo stesso su ogni PC, ma un gruppo potrebbe lavorare con il
PLC FPC 404, un altro con il PS3 un altro ancora con l'S5 100U o S7 300.
Avvio di PL-Net
Per avviare PL-Net scegliete il Comando PL-Net dal Menu Impianti di PC-Sim.
PL-Net viene visto da PC-Sim come se fosse uno degli impianti simulati presenti nel pacchetto AW-SYS
perciò, subito dopo il suo avvio, il Menu Impianti viene disabilitato per impedire l'apertura contemporanea di
un altro impianto. Esso verrà riabilitato solo alla chiusura di PL-Net.
Avviate dapprima PL-Net sul computer a cui è connesso l'anello delle EasyPort D16. Al completamento della
procedura descritta nel seguito potrete avviare PL-Net sugli altri computer.
PL-Net vi segnalerà con un apposito messaggio se l'indirizzo del server è errato o se il server non è stato
ancora avviato. Se l'indirizzo è corretto e se viene correttamente stabilita una connessione col server, PL-Net
passa alla fase seguente.
Se PL-Net sta girando sul server, la procedura descritta fin questo paragrafo viene saltata poiché il client
riconosce il server già in esecuzione sulla stessa macchina ed automaticamente determina l'indirizzo IP del
computer.
La procedura viene conclusa con la visualizzazione nella Barra di stato di PL-Net dell'indirizzo IP del server,
specificato manualmente o determinato automaticamente.
della interrogazione. Le caselle selezionate specificano per questo client una richiesta di connessione logica
alle interfacce 5 e 6.
Tenete presente che la procedura di richiesta delle EasyPort D16 può essere eseguita contemporaneamente
su più client. Pertanto, una EasyPort D16 dichiarata come disponibile nella finestra di dialogo potrebbe
successivamente essere richiesta da un altro client, e ad esso assegnata, prima che voi concludiate la
procedura premendo il pulsante Ok. Il server assegnerà comunque solo le EasyPort D16 disponibili al
momento della richiesta e cioè quando premete il pulsante Ok.
Fate clic sul pulsante opzione che identifica la word globale che intendete venga assegnata a questo client e
premete il pulsante Ok. Se la word globale è rimasta disponibile, cioè se nessun altro client nel frattempo l'ha
richiesta ed ottenuta, la word verrà assegnata al PLC corrente. L'indicazione del numero della word globale
assegnata verrà mostrata nella Barra di stato di PL-Net.
Se, invece, la word nel frattempo è stata assegnata, PL-Net vi informerà di questo tramite un messaggio e vi
mostrerà nuovamente la finestra di dialogo per consentirvi una scelta diversa.
Le word globali costituiscono un potente mezzo per lo scambio di dati tra PLC simulati in rete al fine
principale della sincronizzazione dei processi, o parte di essi, da automatizzare. Supponete a tale scopo che
un PLC abbia bisogno di un informazione booleana che rappresenta la fine di un determinato ciclo gestito da
un altro dei PLC in rete. Sarà sufficiente impostare un bit globale su quest'ultimo quando il ciclo termina e
controllarne lo stato dal primo. Quando lo stato del bit diventa alto, il primo PLC sarà informato che il ciclo è
terminato quindi potrà compiere le azioni necessarie di sua competenza.
L'aggiornamento delle word globali in lettura viene effettuato prima della lettura dell'immagine degli ingressi
per i PLC PS3, S5 100U e S7 300 e prima dell'esecuzione ciclica del programma utente per il PLC FPC 404.
La scrittura dell'unica word globale viene effettuata dopo l'aggiornamento delle uscite per i primi e dopo
l'esecuzione del programma per l'ultimo PLC.
Il tipo di indirizzamento accettato dall'editor di programma dipende dal modello di PLC simulato che state
utilizzando. La disponibilità per ognuno di essi è illustrata nella tabella che segue.
PLC PS3
Questo PLC accetta l'indirizzamento di variabili globali sia a word che a bit, ma non è possibile utilizzare bit o
word globali come ingressi o uscite dei moduli di sistema. In questa evenienza occorrerà utilizzare merker
come variabili di appoggio.
Supponiamo, ad esempio, di voler attivare il temporizzatore TR6 al passaggio allo stato vero del bit globale
G1.0. I programmi che segue risolvono il problema nei due linguaggi.
LADDER AWL
000: L G1.0
001: = M1.0
002: TR6
*S: M1.0
*STP:
*IW: KW100
*EQ: N Q0.14
Lo stato del bit globale G1.0 viene dapprima copiato nel merker M1.0, quindi quest'ultimo viene usato per
pilotare l'ingresso S del temporizzatore.
In modo analogo ci si dovrà comportare se si desidera comandare un bit globale da un'uscita di un modulo di
sistema. Nell'esempio che segue si vuole attivare il bit globale G3.2 quando la merker word MW10 è
maggiore della merker word MW11. L'uscita GT del comparatore viene collegata ad un merker bit e,
successivamente, lo stato dello stesso merker bit verrà copiato nel bit globale.
LADDER AWL
000: CP2
*I1W: MW10
*I2W: MW11
*GT: M0.0
*EQ:
*LT:
001: L M0.0
002: = G3.2
Vediamo infine come condividere il valore di conteggio di un contatore: supponiamo che la word globale
assegnata a questo PLC sia la GW4 e che in essa appunto si desideri registrare il valore di conteggio del
contatore C12. I programmi illustrati nella figura seguente risolvono il problema in ladder e in AWL.
LADDER AWL
000: C12
*U: I0.0
*D:
*S:
*R: I0.1
*IW:
*Z:
*QW: MW8
001: L MW8
002: = GW4
Il contatore C12 conta gli impulsi all'ingresso I0.0 e viene resettato quando l'ingresso I0.1 è chiuso. Il valore di
conteggio, cioè il numero degli impulsi contati, viene depositato nella merker word MW8 tramite l'uscita QW
del contatore, quindi il contenuto di questa viene ricopiato nella word globale GW4.
In esso viene dapprima copiato il contenuto della GW7 nella MW114. Quindi il bit 2 di quest'ultima, uguale al
bit nella medesima posizione della word globale, viene utilizzato per il comando dell'uscita.
Tenete a mente la differenza di indirizzamento di bit che esiste tra word globali in genere e merker word in
questo PLC. Quando copiate la GW7 nella MW100, la parte meno significativa della prima andrà ad
occupare il byte MB100 mentre quella più significativa il byte MB101. Così, se nell'esempio appena visto il bit
da testare fosse stato il 12, avremmo dovuto scrivere come terza istruzione del programma U M101.4, non
essendo possibile scrivere U M100.12.
Un procedimento analogo va seguito quando si desidera scrivere un bit di una word globale. Supponiamo
che si voglia trasmettere la fine di un ciclo di lavorazione al PLC che controlla la stazione di produzione
successiva e che questa informazione sia contenuta nel merker bit M3.0. Supponiamo ancora che la word
globale assegnata per la scrittura al PLC in uso sia la GW2. Il codice seguente provvede a eseguire il
compito.
: U M3.0
: = M104.3
: L MW104
: T GW2
In esso la MW104 viene usata come variabile di appoggio per la GW2. Il suo bit 3 è stato scelto per la
scrittura dell'informazione del completamento del ciclo. Gli altri bit della stessa word potranno essere
eventualmente impostati altrove nel programma. Le prime due istruzioni provvedono all'impostazione del bit
della merker word, le successive al trasferimento di questa nella word globale.
Operazioni preliminari
In questo capitolo vi seguiremo, passo dopo passo, nella realizzazione della vostra prima applicazione con
AW-SYS utilizzando tutti i PLC simulati: FPC 404, PS3, S5 100U e S7 300.
Ci poniamo l’obbiettivo della realizzazione di un ciclo quadro che utilizzi i cilindri A e B dell’impianto
Elettropneumatica 1. L’interruttore 0.7 sulla Finestra PLC servirà da consenso al ciclo: inserendo l’interruttore
il ciclo verrà avviato, disinserendolo il ciclo terminerà una volta che i cilindri siano ritornati alla posizione
iniziale.
Procedete secondo i passi elencati di seguito.
1. Dal menu Start di Windows lanciate PC-Sim per il PLC che desiderate utilizzare, scegliendolo tra quelli
presenti nella cartella Aw-sys.
2. Premete il Pulsante Ok per chiudere la Finestra Informazioni su PC-Sim.
3. Avviate l’impianto scegliendo dal Menu Impianti il Comando Elettropneumatica 1.
Compare la finestra di simulazione del banco di elettropneumatica con cilindri doppio effetto e distributori
bistabili.
1. Fate clic sull’impianto in corrispondenza del finecorsa negativo del cilindro A (a0).
PL-Sim risponde mostrando a video la finestra di dialogo Scelta collegamento per gli ingressi del PLC. Il tipo
di finestra da visualizzare viene automaticamente decisa da PC-Sim poiché riconosce come ingresso o come
uscita il componente dell’impianto cliccato.
La finestra viene chiusa e sull’impianto di elettropneumatica, in corrispondenza del finecorsa negativo del
cilindro A, viene mostrato l’indirizzo del collegamento in colorazione blu, come riportato nella figura seguente.
3. Impostate in successione i collegamenti per gli altri finecorsa, come fatto per il primo e secondo quanto
specificato nella tabella precedente.
Occupiamoci ora dei solenoidi, che andremo a collegare ai canali di uscita del PLC secondo quanto riportato
nella tabella seguente.
4. Fate clic sull’impianto in corrispondenza del solenoide positivo del cilindro A (A+).
PL-Sim risponde mostrando a video la finestra di dialogo Scelta collegamento per le uscite del PLC.
La finestra viene chiusa e sull’impianto di elettropneumatica, in corrispondenza del solenoide positivo del
cilindro A, viene mostrato l’indirizzo del collegamento in colorazione rossa, come riportato nella seguente
figura.
6. Impostate in successione i collegamenti per gli altri solenoidi come fatto per il primo e secondo quanto
specificato nella tabella precedente.
Abbiamo così terminato i collegamenti. Gli indirizzi di collegamento per i primi due cilindri dell’impianto
appariranno come in figura. Ricordiamo che la colorazione blu individua i collegamenti a canali d’ingresso e
quella rossa i collegamenti a canali di uscita.
Passiamo all’introduzione degli operandi per ognuno degli elementi di schema presenti: i due contatti e la
bobina.
5. Fate clic nel campo con sfondo grigio al di sopra del primo contatto.
6. Digitate l’operando I7 e premete Invio.
Il cursore di inserimento caratteri si sposta sul campo operando del contatto successivo; l’operando sul primo
contatto ha ora uno sfondo bianco.
Abbiamo così terminato il disegno del primo percorso di corrente che vi apparirà così sullo schermo.
10. Disegnate un contatto NA in prima posizione, come abbiamo imparato a fare disegnando il primo
percorso.
11. Digitate gli operandi I1 e O2 come indicato nello schema seguente.
Lo schema ladder è ora completo e la descrizione specifica per questo PLC è così terminata. Continuate la
lettura dal paragrafo Test del programma più avanti in questo capitolo.
PLC PS3
1. Fate clic sull’impianto in corrispondenza del finecorsa negativo del cilindro A (a0).
PL-Sim risponde mostrando a video la finestra di dialogo Scelta collegamento per gli ingressi del PLC. Il tipo
di finestra da visualizzare viene automaticamente decisa da PC-Sim poiché riconosce come ingresso o come
uscita il componente dell’impianto cliccato.
La finestra viene chiusa e sull’impianto di elettropneumatica, in corrispondenza del finecorsa negativo del
cilindro A, viene mostrato l’indirizzo del collegamento in colorazione blu, come riportato nella figura seguente.
3. Impostate in successione i collegamenti per gli altri finecorsa, come fatto per il primo e secondo quanto
specificato nella tabella precedente.
Occupiamoci ora dei solenoidi, che andremo a collegare ai canali di uscita del PLC secondo quanto riportato
nella tabella seguente.
4. Fate clic sull’impianto in corrispondenza del solenoide positivo del cilindro A (A+).
PL-Sim risponde mostrando a video la finestra di dialogo Scelta collegamento per le uscite del PLC.
La finestra viene chiusa e sull’impianto di elettropneumatica, in corrispondenza del solenoide positivo del
cilindro A, viene mostrato l’indirizzo del collegamento in colorazione rossa, come riportato nella seguente
figura.
6. Impostate in successione i collegamenti per gli altri solenoidi, come fatto per il primo e secondo quanto
specificato nella tabella precedente.
Abbiamo così terminato i collegamenti. Gli indirizzi di collegamento per i primi due cilindri dell’impianto
appariranno come in figura. Ricordiamo che la colorazione blu individua i collegamenti a canali d’ingresso e
quella rossa i collegamenti a canali di uscita.
Questo è quanto dovreste vedere sullo schermo a questo punto della fase di introduzione del programma.
Passiamo all’introduzione degli operandi per ognuno degli elementi di schema presenti: i due contatti e la
bobina.
5. Fate clic nel campo con sfondo grigio al di sopra del primo contatto.
6. Digitate l’operando I0.7 e premete Invio.
Il cursore di inserimento caratteri si sposta sul campo operando del contatto successivo; l’operando sul primo
contatto ha ora uno sfondo bianco.
Abbiamo così terminato il disegno del primo percorso di corrente che vi apparirà così sullo schermo.
10. Disegnate un contatto NA in prima posizione, come abbiamo imparato a fare disegnando il primo
percorso.
11. Digitate gli operandi I0.1 e Q0.2 come indicato nello schema seguente.
Lo schema ladder è ora completo e la descrizione specifica per questo PLC è così terminata. Continuate la
lettura dal paragrafo Test del programma più avanti in questo capitolo.
PLC S5 100U
1. Fate clic sull’impianto in corrispondenza del finecorsa negativo del cilindro A (a0).
PL-Sim risponde mostrando a video la finestra di dialogo Scelta collegamento per gli ingressi del PLC. Il tipo
di finestra da visualizzare viene automaticamente decisa da PC-Sim poiché riconosce come ingresso o come
uscita il componente dell’impianto cliccato.
La finestra viene chiusa e sull’impianto di elettropneumatica, in corrispondenza del finecorsa negativo del
cilindro A, viene mostrato l’indirizzo del collegamento in colorazione blu, come riportato nella figura seguente.
3. Impostate in successione i collegamenti per gli altri finecorsa come fatto per il primo e secondo quanto
specificato nella tabella precedente.
Occupiamoci ora dei solenoidi, che andremo a collegare ai canali di uscita del PLC secondo quanto riportato
nella tabella seguente.
4. Fate clic sull’impianto in corrispondenza del solenoide positivo del cilindro A (A+).
PL-Sim risponde mostrando a video la finestra di dialogo Scelta collegamento per le uscite del PLC.
La finestra viene chiusa e sull’impianto di elettropneumatica, in corrispondenza del solenoide positivo del
cilindro A, viene mostrato l’indirizzo del collegamento in colorazione rossa, come riportato nella seguente
figura.
6. Impostate in successione i collegamenti per gli altri solenoidi, come fatto per il primo e secondo quanto
specificato nella tabella precedente.
Abbiamo così terminato i collegamenti. Gli indirizzi di collegamento per i primi due cilindri dell’impianto
appariranno come in figura. Ricordiamo che la colorazione blu individua i collegamenti a canali d’ingresso e
quella rossa i collegamenti a canali di uscita.
3. Inserite i dati secondo quanto riportato in figura; il tipo blocco AWL è la selezione predefinita.
Viene aperto l’editor AWL per il blocco appena creato (OB1) e la sua sigla viene aggiunta nella Tabella
blocchi.
5. Digitate il codice seguente, premendo Invio al termine di ogni istruzione. Gli spazi di separazione
vengono aggiunti automaticamente.
U E0.7
U E0.2
= A2.0
U E0.1
= A2.2
U E0.3
= A2.1
U E0.0
= A2.3
BE
La fase di introduzione del programma è così terminata e si può avviare il PLC e testare l’automazione.
Proseguite la lettura con il paragrafo Test del programma più avanti in questo capitolo.
3. Inserite i dati secondo quanto riportato in figura; notate che occorre selezionare Ladder come editor di
blocco.
La sigla del blocco appena creato viene aggiunta nella Tabella blocchi e vengono aperte la finestra di editor
ladder per il blocco specificato e la Casella strumenti. Nell’editor è già presente il primo percorso di corrente
vuoto.
Passiamo all’inserimento degli operandi per ognuno degli elementi di schema presenti: i due contatti e la
bobina.
8. Fate clic nel campo con sfondo grigio al di sopra del primo contatto.
9. Digitate l’operando E0.7 e premete Invio.
Il cursore di inserimento caratteri si sposta sul campo operando del contatto successivo; l’operando sul primo
contatto ha ora uno sfondo bianco.
Abbiamo così terminato il disegno del primo percorso di corrente che vi apparirà così sullo schermo.
13. Disegnate un contatto NA in prima posizione, come abbiamo imparato a fare disegnando il primo
percorso.
14. Digitate gli operandi E0.1 e A2.2 come indicato nello schema seguente.
PLC S7 300
PL-Sim risponde mostrando a video la finestra di dialogo Scelta collegamento per gli ingressi del PLC. Il tipo
di finestra da visualizzare viene automaticamente decisa da PC-Sim poiché riconosce come ingresso o come
uscita il componente dell’impianto cliccato.
La finestra viene chiusa e sull’impianto di elettropneumatica, in corrispondenza del finecorsa negativo del
cilindro A, viene mostrato l’indirizzo del collegamento in colorazione blu, come riportato nella figura seguente.
3. Impostate in successione i collegamenti per gli altri finecorsa come fatto per il primo e secondo quanto
specificato nella tabella precedente.
Occupiamoci ora dei solenoidi, che andremo a collegare ai canali di uscita del PLC secondo quanto riportato
nella tabella seguente.
4. Fate clic sull’impianto in corrispondenza del solenoide positivo del cilindro A (A+).
PL-Sim risponde mostrando a video la finestra di dialogo Scelta collegamento per le uscite del PLC.
5. In essa selezionate l’uscita A4.0 (byte 4 e canale 0) e premete il Pulsante Ok.
La finestra viene chiusa e sull’impianto di elettropneumatica, in corrispondenza del solenoide positivo del
cilindro A, viene mostrato l’indirizzo del collegamento in colorazione rossa, come riportato nella seguente
figura.
6. Impostate in successione i collegamenti per gli altri solenoidi, come fatto per il primo e secondo quanto
specificato nella tabella precedente.
Abbiamo così terminato i collegamenti. Gli indirizzi di collegamento per i primi due cilindri dell’impianto
appariranno come in figura. Ricordiamo che la colorazione blu individua i collegamenti a canali d’ingresso e
quella rossa i collegamenti a canali di uscita.
Viene aperto l’editor AWL per il blocco appena creato (OB1) e la sua sigla viene aggiunta nella Tabella
blocchi.
5. Digitate il codice seguente, premendo Invio al termine di ogni istruzione. Gli spazi di separazione
vengono aggiunti automaticamente.
U E0.7
U E0.2
= A2.0
U E0.1
= A2.2
U E0.3
= A2.1
U E0.0
= A2.3
BE
La fase di introduzione del programma è così terminata e si può avviare il PLC e testare l’automazione.
Proseguite la lettura con il paragrafo Test del programma più avanti in questo capitolo.
3. Inserite i dati secondo quanto riportato in figura; notate che occorre selezionare Ladder come editor di
blocco.
La sigla del blocco appena creato viene aggiunta nella Tabella blocchi e vengono aperte la finestra di editor
ladder per il blocco specificato e la Casella strumenti. Nell’editor è già presente il primo percorso di corrente
vuoto.
Passiamo all’inserimento degli operandi per ognuno degli elementi di schema presenti: i due contatti e la
bobina.
8. Fate clic nel campo con sfondo grigio al di sopra del primo contatto.
9. Digitate l’operando E0.7 e premete Invio.
Il cursore di inserimento caratteri si sposta sul campo operando del contatto successivo; l’operando sul primo
contatto ha ora uno sfondo bianco.
Abbiamo così terminato il disegno del primo percorso di corrente che vi apparirà così sullo schermo.
13. Disegnate un contatto NA in prima posizione, come abbiamo imparato a fare disegnando il primo
percorso.
14. Digitate gli operandi E0.1 e A2.2 come indicato nello schema seguente.
Se tutte le fasi precedenti sono state eseguite correttamente vedrete i cilindri A e B muoversi secondo un
ciclo quadro, fintanto che l’interruttore 0.7 rimane inserito.
Se avete programmato in AWL nella finestra di editor, in corrispondenza di ciascuna istruzione potrete
leggere lo stato dell’operando ed il valore corrente dei registri.
Se, invece, avete programmato in ladder lo schema a contatti si animerà: il colore dei contatti, delle bobine e
delle linee di corrente varierà nel tempo indicandovi i contatti e le bobine eccitati ed i percorsi attraversati da
corrente.
8. Provate ora a variare la base tempi dell’impianto agendo sul selettore di velocità ( ) nella
Barra strumenti dell’impianto.
Ad ogni clic l’impianto avanzerà di un passo, permettendovi così di esaminare con attenzione il
funzionamento del ciclo.
Siete ora pronti a sperimentare altri cicli con questo e con gli altri impianti di elettropneumatica e quindi le
automazioni degli altri impianti di PL-Sim. Ricordate che, in caso di difficoltà, potrete consultare la Guida in
linea di PC-Sim e quella di PL-Sim o il presente manuale. Potrete inoltre caricare i numerosi esempi forniti
insieme con gli impianti.
Se proprio non riuscite a risolvere il problema di automazione che state affrontando contattate il Servizio
Supporto Tecnico Utenti AW-SYS della Autoware, saremo lieti di aiutarvi.
Premessa
Le note fornite in questa sezione si riferiscono unicamente al PLC simulato, cioè a PC-Sim per FPC 404.
Molto spesso comunque, e proprio perché in tutta la simulazione in AW-SYS si è cercato di avvicinarsi quanto
più possibile alla realtà, esse trovano riscontro anche nel PLC reale. Si consiglia vivamente l’utilizzo dei
manuali originali del PLC e dell’apparecchiatura di programmazione per tutte le informazioni necessarie alla
programmazione del dispositivo reale.
Alcuni degli argomenti trattati, per loro natura, sono comuni ai diversi PLC simulati. Si è preferito però
ripetere le stesse descrizioni per tutti al fine di far diventare ognuno di questi capitoli un’entità autonoma: un
comodo ed indispensabile manuale da tenere a portata di mano durante la programmazione del PLC
simulato.
Indirizzamento
Sotto il nome di indirizzamento va la serie di regole sintattiche che si deve osservare nel far riferimento a
variabili o costanti durante la scrittura di un programma applicativo per PLC. L’indirizzamento nella
simulazione del PLC FPC 404 si effettua in accordo alle regole esposte di seguito e riassunte nella
Tabella 11.
Ingressi - Uscite
La sigla per l’indirizzamento degli ingressi e delle uscite in questo modello di PLC è composta da:
• lettera che individua gli ingressi (I) o le uscite (O);
• numero di modulo;
• punto di separazione;
• numero di canale.
Nell’indirizzamento dell’I/O del modulo 0 viene usata la forma abbreviata con la omissione del numero del
modulo e del punto di separazione.
Quindi, ad esempio:
• I1.4 individua il canale di ingresso 4 del modulo 1;
• O1.3 individua il canale di uscita 3 del modulo 1;
• I2 individua il canale di ingresso 2 del modulo 0;
• O3 individua il canale di uscita 3 del modulo 0;
Allora, riassumendo:
gli 8 ingressi del modulo 0 corrispondono agli indirizzi abbreviati I0 ÷ I7;
gli 8 ingressi del modulo 1 corrispondono agli indirizzi I1.0 ÷ I1.7;
le 8 uscite del modulo 0 corrispondono agli indirizzi abbreviati O0 ÷ O7;
le 8 uscite del modulo 1 corrispondono agli indirizzi O1.0 ÷ O1.7.
Flag
La memoria flag è composta da 16 word. Ogni bit di questa memoria è indirizzabile singolarmente con le
sigle composte come segue:
• lettera che individua i flag (F);
• numero di word;
• punto di separazione;
• numero di bit.
Il campo dei flag indirizzabili va quindi da F0.0 a F15.15.
Trattazione separata merita il flag FI. Con questa sigla è possibile indirizzare un flag che il sistema provvede
a impostare a 1 all’inizio del primo ciclo di elaborazione del programma e a portare a zero al ciclo successivo
e che poi rimarrà in questo stato fino ad un nuovo riavviamento. Questo flag è utilizzabile solo con operazioni
di test, cioè come operando di contatti, e viene utilizzato per le impostazioni iniziali che debbano essere
effettuate al passaggio in RUN.
Temporizzatori
Sono stati implementati nel PLC simulato i 40 temporizzatori presenti in quello reale; gli indirizzi vanno da T0
a T39.
Contatori
Sono stati implementati nel PLC simulato i 48 contatori presenti in quello reale; gli indirizzi vanno da C0 a
C47.
Tabella 11: Riepilogo operandi per FPC 404
Tipo Q.tà Min Max
Ingressi a bit 16 I0 (I0.0) I1.7
Uscite a bit 16 O0 (O0.0) O1.7
Flag bit 256 F0.0 F15.15
Flag primo ciclo 1 FI
Temporizzatori 40 T0 T39
Contatori 49 C0 C47
Sistema operativo
Il cuore del funzionamento del PLC è il suo Sistema Operativo: un programma che gestisce il funzionamento
di base dell’apparecchiatura, registrato in ROM dalla casa costruttrice.
Una disamina puntale delle funzioni del Sistema Operativo non rientra nei compiti di questo manuale, ed
anche nei manuali dei PLC reali è difficile trovare chiarimenti dettagliati a riguardo; tra l’altro, il fatto che
questo programma venga eseguito è completamente trasparente al programmatore che, per certi versi, può
addirittura ignorarne l’esistenza.
Elenchiamo comunque, per completezza, alcune delle funzioni da esso svolte, quelle che riteniamo più
importanti ai fini della trattazione seguente:
• controllo del tempo di ciclo (watch-dog)
• test dell’hardware e della memoria
• richiamo del programma utente
• gestione presa di programmazione
Il sistema operativo, subito prima di effettuare il richiamo del programma utente, avvia un monostabile che ha
in genere una durata che va da qualche decina fino a pochissime centinaia di millisecondi. Supponiamo che il
programma utente richieda per la sua esecuzione un tempo inferiore a quello del monostabile. In questa
situazione, prima di ogni suo successivo richiamo il monostabile verrebbe avviato nuovamente e, come
risultato, l’uscita di quest’ultimo rimarrebbe continuamente alta.
Se, invece, il programma utente richiedesse per la sua esecuzione più tempo della durata del monostabile,
allora l’uscita di questo si porterebbe allo stato basso, provocando l’immediato passaggio in Stop del PLC.
Un programma realizzato male potrebbe portare la CPU ad eseguire indefinitamente, o per un tempo
eccessivo ai fini della rapidità del controllo dell’impianto, un ciclo chiuso di istruzioni senza tornare
all’elaborazione del sistema operativo. Questa condizione potrebbe portare danni all’impianto e grave
pericolo per il personale che vi opera. Il controllo del tempo di ciclo, che nella letteratura tecnica specializzata
trovate anche col nome di watch-dog, evita proprio questo problema.
Anche PC-Sim controlla che il vostro programma non generi un ciclo chiuso ma, in questo caso, i molteplici e
mutabili compiti di un PC, impongono tempi più lunghi per la rilevazione del problema, dell’ordine di qualche
secondo.
Programmazione in Ladder
La scrittura di un programma per PLC in Ladder diagram o Schema a contatti avviene in maniera simile al
disegno di un circuito elettrico a relè. Tra due linee verticali, poste ai margini dello schema, che
rappresentano l’alimentazione del circuito, possono prendere posto gli elementi del circuito elettrico disposti
su linee orizzontali (che d’ora in avanti chiameremo rami) collegati tra loro da linee orizzontali e verticali.
Ogni ramo può contenere al massimo 6 elementi circuitali in precise posizioni. Nelle prime 5 posizioni si
possono disegnare soltanto contatti, nell’ultima solamente bobine.
Ogni ramo può quindi essere suddiviso in due zone: la zona condizionale, formata dalle prime 5 posizioni,
che contiene le condizioni che devono essere verificate per compiere una determinata azione; la zona
esecutiva, ultima posizione, che contiene le azioni da compiere quando le condizione sono verificate.
Tabella 12: Elementi del ladder per FPC 404 per ingressi, uscite e flag
Elemento Descrizione
Zona condizionale
Contatto normalmente aperto, test sullo stato 1 dell’operando.
Il contatto sullo schema si chiude quando l’operando corrispondente si trova allo
stato logico alto. Per esempio, se l’operando è un ingresso digitale del PLC, il
contatto è chiuso quando l’ingresso è chiuso e viceversa.
Zona esecutiva
Bobina diretta
Se la bobina è attiva, cioè se esiste una catena di contatti chiusi verso la linea
sinistra di alimentazione, viene assegnato all’operando il valore logico alto. Se la
bobina non è attiva, all’operando viene assegnato il valore logico basso.
Bobina inversa
Se la bobina è attiva, cioè se esiste una catena di contatti chiusi verso la linea
sinistra di alimentazione, viene assegnato all’operando il valore logico basso. Se
la bobina non è attiva, all’operando viene assegnato il valore logico alto.
Bobina di set
Se la bobina è attiva, cioè se esiste una catena di contatti chiusi verso la linea
sinistra di alimentazione, viene assegnato all’operando il valore logico alto. Se la
bobina non è attiva, nessuna azione è compiuta sullo stato dell’operando.
Bobina di reset
Se la bobina è attiva, cioè se esiste una catena di contatti chiusi verso la linea
sinistra di alimentazione, viene assegnato all’operando il valore logico basso. Se
la bobina non è attiva, nessuna azione è compiuta sullo stato dell’operando.
Questo è simile a quanto accade in un circuito elettrico: un carico elettrico rappresenta la parte esecutiva di
un ramo; i contatti in serie o in parallelo, di tipo normalmente chiusi o aperti, rappresentano la parte
condizionale.
Ogni contatto può essere parallelato da solo o a gruppi, disegnando contatti sul ramo successivo che
saranno collegati al ramo base, o al ramo parallelo precedente, attraverso linee verticali. Il massimo numero
di rami paralleli consentiti è 4. L’insieme di ramo base e di tutti i rami paralleli collegati ad essi verrà denotato
nel seguito come percorso di corrente. Ogni percorso di corrente viene numerato automaticamente e
progressivamente dall’editor.
Anche le bobine possono essere collegate in parallelo, ma esse devono avere l’ingresso in comune. Cioè, un
percorso di corrente può inviare un singolo segnale logico a tutte le bobine.
All’interno dello schema a contatti possono prendere posto gli elementi descritti nella Tabella 12.
Operazioni di temporizzazione
L’avviamento di un tempo si effettua utilizzando una bobina ed immettendo come operando una sigla valida
per temporizzatore.
Se l’operazione di avviamento del tempo si effettua con la bobina di set verrà generato un impulso
prolungato. Sul fronte di attivazione della bobina, il valore di preset viene caricato nel temporizzatore e viene
iniziato il conteggio del tempo. Lo stato del temporizzatore è a 1 durante tutto lo scorrere del tempo.
Trascorso il tempo, lo stato viene portato a 0.
Se l’operazione di avviamento del tempo si effettua, invece, con la bobina diretta verrà generato un impulso.
Sul fronte di attivazione della bobina, il valore di preset viene caricato nel temporizzatore e viene iniziato il
conteggio del tempo. Lo stato del temporizzatore è a 1 durante tutto lo scorrere del tempo. Trascorso il
tempo, viene messo a 0. Se durante lo scorrere del tempo la bobina viene disattivata, il tempo viene
cancellato e lo stato viene portato immediatamente a 0.
Il test sullo stato del temporizzatore si effettua utilizzando un contatto (NA o NC) a cui viene assegnato come
operando la sigla del temporizzatore.
Tabella 13: Elementi del ladder per FPC 404 per temporizzatori
Elemento Descrizione
Zona condizionale
Zona esecutiva
Bobina diretta
Alla attivazione della bobina (fronte di salita), cioè alla chiusura di una catena di
contatti verso la linea sinistra di alimentazione, il tempo viene avviato. Durante lo
scorrere del tempo lo stato del temporizzatore è alto. Alla apertura della catena o
al termine del tempo lo stato del temporizzatore viene riportato a zero.
Bobina inversa
Alla disattivazione della bobina (fronte di discesa), cioè alla apertura di una catena
di contatti verso la linea sinistra di alimentazione, il tempo viene avviato. Durante
lo scorrere del tempo lo stato del temporizzatore è alto. Alla chiusura della catena
o al termine del tempo lo stato del temporizzatore viene riportato a 0.
Bobina di set
Alla attivazione della bobina (fronte di salita), cioè alla chiusura di una catena di
contatti verso la linea sinistra di alimentazione, il tempo viene avviato. Durante lo
scorrere del tempo lo stato del temporizzatore è alto. Al termine del tempo lo stato
del temporizzatore viene riportato a 0.
Bobina di reset
Alla attivazione della bobina (fronte di salita), cioè alla chiusura di una catena di
contatti verso la linea sinistra di alimentazione, il tempo viene azzerato e lo stato
viene portato a 0.
Operazioni di conteggio
Le operazioni di conteggio si programmano utilizzando diversi tipi di bobina e riportando in corrispondenza
operandi validi di contatori.
Con questo PLC è possibile effettuare operazioni di conteggio sia in avanti che all’indietro utilizzando i 47
contatori implementati. Occorrerà tener presente le regole seguenti.
• L’attivazione di una bobina di set con operando contatore azzera il valore di conteggio e porta lo stato a
1.
• L’attivazione di una bobina di reset con operando contatore agisce solo sullo stato, portandolo a 0.
• L’attivazione di una bobina di preset con operando contatore carica come conteggio il valore di preset e
porta lo stato a 1.
• L’attivazione di una bobina di decremento con operando contatore diminuisce di 1 il valore di conteggio
• L’attivazione di una bobina di incremento con operando contatore aumenta di 1 al valore di conteggio.
• Il test sullo stato del contatore si effettua utilizzando un contatto (NA o NC) a cui viene assegnato
l’operando del contatore.
Conteggio in avanti
Per costruire un contatore per conteggio in avanti, bisogna eseguire innanzitutto un set dello stesso. Questa
operazione porta il valore di conteggio a 0 e l’uscita a 1. Incrementando il valore di conteggio, lo stato
continua a permanere ad 1 fino al raggiungimento del valore di preset, in corrispondenza del quale l’uscita
passa a 0.
Conteggio all’indietro
Per costruire un contatore per conteggio all’indietro, è necessario eseguire dapprima un preset del
medesimo. Questa operazione imposta il valore di conteggio a quello di preset e l’uscita a 1.
Successivamente è possibile decrementare. Lo stato permane ad 1 fino a quando il valore di conteggio
raggiunge lo 0, in corrispondenza di ciò l’uscita passa a 0.
L'impostazione del valore di preset di un contatore nel PLC reale avviene in maniera differente. Nella logica di
uniformare per quanto possibile i diversi simulatori di PLC, in particolare nella metodologia di
programmazione ladder, si è scelto di introdurre la bobina di preset che, in questi termini precisi, non trova
corrispondenza nel linguaggio ladder dello FPC 404 reale.
Tabella 14: Elementi del ladder per FPC 404 per contatori
Elemento Descrizione
Zona condizionale
Zona esecutiva
Bobina di set
Alla attivazione della bobina (fronte di salita), cioè alla chiusura di una catena di
contatti chiusi verso la linea sinistra di alimentazione, il valore di conteggio del
contatore indicato come operando viene azzerato ed il suo stato viene impostato
ad 1.
Bobina di reset
Alla attivazione della bobina (fronte di salita), cioè alla chiusura di una catena di
contatti chiusi verso la linea sinistra di alimentazione, lo stato del contatore
indicato come operando viene portato a 0.
Bobina di incremento
Alla attivazione della bobina (fronte di salita), cioè alla chiusura di una catena di
contatti verso la linea sinistra di alimentazione, il valore di conteggio del contatore
indicato come operando viene incrementato di 1.
Bobina di decremento
Alla attivazione della bobina (fronte di salita), cioè alla chiusura di una catena di
contatti verso la linea sinistra di alimentazione, il valore di conteggio del contatore
indicato come operando viene decrementato di 1.
Bobina di preset
Alla attivazione della bobina (fronte di salita), cioè alla chiusura di una catena di
contatti verso la linea sinistra di alimentazione, il valore di conteggio del contatore
indicato come operando viene impostato al valore di preset.
Realizzare O2 = I0 AND I1
L’uscita O2 deve essere attivata se, e solo se, entrambi gli interruttori collegati agli ingressi I0 e I1 sono
chiusi.
LADDER
La soluzione si ottiene mettendo in serie due contatti, con operandi I0 e I1, e la bobina O2. Infatti la
combinazione logica AND, tradotta in linguaggio ladder, equivale alla serie di due contatti: ai capi della serie
'si legge’ la chiusura del circuito solo quando entrambi sono chiusi; questa è quindi l’unica condizione che
attiva la bobina.
Esempio 2: combinazione OR
Realizzare O2 = I0 OR I1
L’uscita O2 deve essere attivata se almeno uno degli interruttori collegati agli ingressi I0 o I1 è chiuso.
LADDER
La soluzione si ottiene mettendo in serie alla bobina O2 il parallelo di due contatti, con operandi I0 e I1.
Infatti la combinazione logica OR, tradotta in linguaggio ladder, equivale al parallelo di due contatti: ai capi del
parallelo 'si legge’ la chiusura del circuito quando almeno uno dei contatti è chiuso; questa è quindi la
condizione che porta all’eccitazione della bobina.
LADDER
La soluzione dovrebbe essere intuitiva dopo aver realizzato gli esercizi precedenti: vengono messi in serie
(AND) due paralleli (OR) di contatti, riportando opportunamente gli operandi in corrispondenza di questi e
della bobina.
Realizzare O7 = (I0 AND I1) OR (I2 AND I3). Dove le parentesi, sebbene non necessarie in quanto
l’operazione AND ha precedenza sulla OR, sono state aggiunte per chiarezza.
LADDER
La soluzione proposta mette in parallelo (OR) due serie (AND) di contatti, riportando opportunamente gli
operandi in corrispondenza di questi e della bobina.
Realizzare O2 = I0 XOR I1
L’operazione logica XOR applicata a due variabili booleane dà risultato vero solo quando solo una delle due
variabili è vera.
LADDER
La prima serie di contatti del programma ladder è chiusa solo quando I0 è chiuso ed I1 è aperto; la seconda
serie è chiusa solo quando, al contrario, I0 è aperto ed I1 è chiuso. Realizzando il parallelo delle due si
ottiene la funzione desiderata. Cioè, la bobina viene eccitata solo quando un ingresso è chiuso e l’altro è
aperto.
Esempio 6: autoritenuta
Un pulsante collegato all’ingresso I0 deve attivare l’uscita O1.7; un secondo pulsante collegato all’ingresso
I1 deve disattivarla.
LADDER
Nel programma ladder proposto viene realizzato un circuito con autoritenuta. Premendo il pulsante collegato
a I0 la bobina O1.7 viene attivata, quindi il contatto con lo stesso operando sul secondo rigo si chiude
(immaginate che il contatto e la bobina siano parti dello stesso relè O1.7) continuando a mantenere eccitata
la bobina anche dopo l’apertura di I0. La chiusura del pulsante all’ingresso I1 provoca l’apertura del contatto
normalmente chiuso sullo schema, diseccitando la bobina e facendo cadere l’autoritenuta.
Un pulsante collegato all’ingresso I0 deve attivare l’uscita O1.7; un secondo pulsante, collegato all’ingresso
I1, deve disattivarla
L’esercizio è identico al precedente ma, questa volta, nella soluzione vengono usate bobine di set e reset.
LADDER
L’utilizzo del flag di appoggio F0.15 è necessario per impedire le oscillazioni dell’uscita quando sono chiusi
entrambi gli ingressi. Infatti, in questa condizione ed a causa della mancanza dell'immagine delle uscite, il
collegamento diretto delle bobine di set e reset ai contatti I0 ed I1 porterebbe ad avere, per ogni ciclo di
esecuzione, prima l’eccitazione dell’uscita fisica O1.7 e poi la sua diseccitazione. Utilizzando un flag come
operando delle bobine e sempre nell’ipotesi di entrambi i pulsanti eccitati, esso continua ancora ad oscillare
assumendo lo stato alto e successivamente quello basso ma, l’unico valore a passare in uscita, al terzo
percorso, sarà l’ultimo assunto: quello basso.
Con questa scrittura di programma abbiamo quindi realizzato una prevalenza del reset rispetto al set. Se
desiderate ottenere il contrario, vi basterà invertire la posizione dei primi due percorsi nello schema a contatti.
Attivare le uscite O1.6 ed O1.7 in corrispondenza rispettivamente del fronte di salita e di quello di discesa
dell’ingresso I0.
Notiamo che l’ultimo percorso dello schema ladder impone l’eguaglianza del flag F0.0 all’ingresso I0 al
termine dell’esecuzione del programma. Ma, in corrispondenza dei fronti e per i percorsi precedenti, accade
che lo stato delle due variabili sia opposto e solo alla fine dell’elaborazione diventi uguale.
LADDER
Tutto ciò viene rappresentato nelle prime due righe del diagramma di Figura 2 con un ritardo temporale di
F0.0 rispetto ad I0 che vale un ciclo di esecuzione.
L’uscita O5 viene attivata alla chiusura dell’ingresso I0 e disattivata 5 secondi dopo. Se l’ingresso viene
riaperto in questo periodo, l’uscita viene disattivata immediatamente.
LADDER
L’uscita O5 viene attivata alla chiusura dell’ingresso I0 e disattivata 5 secondi dopo, indipendentemente dal
fatto che l’ingresso venga riaperto o meno in questo periodo.
Il funzionamento del temporizzatore ad impulso prolungato è illustrato nel diagramma temporale di Figura 4.
Nel primo rigo è rappresentato il segnale di ingresso, nel secondo la corrispondente uscita.
A differenza di quanto fatto nell’esempio precedente, qui viene utilizzata una bobina di set per l’avvio del
temporizzatore. Questa, a differenza della bobina diretta, è sensibile solo al fronte di salita per l’avviamento di
un temporizzatore.
LADDER
Il valore di preset del temporizzatore deve essere impostato a 500 centesimi di secondo nella Finestra
Impostazioni preset (FPC 404).
L’uscita O5 viene attivata 3,5 secondi dopo la chiusura dell’ingresso I0. Quando l’ingresso viene riaperto
l’uscita viene disattivata.
Il diagramma temporale di Figura 5 illustra il funzionamento della temporizzazione mostrando al primo rigo
l’ingresso ed all’ultimo l’uscita. Il secondo rigo rappresenta, invece, lo stato del temporizzatore T2 che, come
si evince dallo schema ladder è collegato per funzionare da impulso (vedi esempio relativo in precedenza).
LADDER
Il valore di preset del temporizzatore deve essere impostato a 350 centesimi di secondo nella Finestra
Impostazioni preset (FPC 404).
L’uscita O5 deve essere attivata contemporaneamente alla chiusura dell’ingresso I0 e disattivata 5 secondi
dopo la sua riapertura.
LADDER
Il valore di preset del temporizzatore deve essere impostato a 500 centesimi di secondo nella Finestra
Impostazioni preset (FPC 404).
L’uscita O5 viene attivata 5 secondi dopo la chiusura dell’ingresso I0 (anche se quest’ultimo nel frattempo
torna viene riaperto) e disattivata in corrispondenza della chiusura dell’ingresso I1.
Il funzionamento del temporizzatore con ritardo all’eccitazione con memoria si ottiene dal confronto dei primi
due righi e dell’ultimo del diagramma temporale di Figura 7. I primi rappresentano i segnali di ingresso,
l’ultimo l’uscita a questi corrispondente.
Figura 7: diagramma temporale per temporizzatore con ritardo all'eccitazione con memoria e reset
Il terzo rigo del diagramma temporale mostra l’andamento del flag F0.0 così come ottenuto dall’elaborazione
dei primi due percorsi dello schema ladder (vedere set e reset tra gli esempi precedenti). Questo flag avvia,
al terzo percorso, un temporizzatore ad impulso il cui andamento temporale è mostrato al quarto rigo.
Ancora una volta, come negli esempi precedenti, confrontiamo gli andamenti per ricavare l’espressione
logica che descrive il comportamento di O5 in termini delle variabili sui righi precedenti:
O5 = F0.0 ⋅ T2
L’espressione è stata implementata al quarto percorso dello schema a contatti.
LADDER
Il valore di preset del temporizzatore deve essere impostato a 500 centesimi di secondo nella Finestra
Impostazioni preset (FPC 404).
L’uscita O1.3 viene attivata 2 secondi dopo la chiusura dell’ingresso I1 e disattivata 7 secondi dopo la sua
riapertura.
La Figura 8 illustra, al primo ed all’ultimo rigo del diagramma, l’andamento dei due segnali della traccia. Nel
rigo intermedio è stato disegnato l’andamento di un flag che rappresenta lo stato di un temporizzatore con
ritardo all’eccitazione attivato proprio da I1. Notiamo come l’andamento dell’uscita O5, rispetto all’andamento
del flag, rappresenti un ritardo alla diseccitazione.
Il gioco è fatto! Si tratta di realizzare un programma contenente due temporizzatori: il primo, ritardo
all’eccitazione da 2s, attivato da I1, il secondo, ritardo alla diseccitazione da 7s, attivato dal primo.
Osservando la soluzione proposta, notiamo che i primi due percorsi implementano un temporizzatore con
ritardo all’eccitazione con ingresso I1 ed uscita F0.0. Gli altri tre percorsi implementano, invece, un
temporizzatore con ritardo alla diseccitazione che ha come ingresso F0.0 ed uscita O1.3. Il flag F0.1 è
necessario per la rilevazione del fronte di discesa di F0.0. L’esercizio è risolto!
LADDER
Il valore di preset del temporizzatore T0 deve essere impostato a 500 e quello di T1 a 700 centesimi di
secondo nella Finestra Impostazioni preset (FPC 404).
L’uscita O7 viene attivata 2 secondi l'apertura dell’ingresso I5 per una durata di 1 secondo.
Il diagramma in Figura 9 illustra al primo rigo l’andamento dell’ingresso ed all’ultimo quello della uscita del
temporizzatore richiesto. Il secondo ed il terzo rigo rappresentano gli andamenti dello stato di due
temporizzatori (T10 e T11) con ritardo alla diseccitazione (da 2s e 3s) che abbiamo già imparato ad
realizzare negli esempi precedenti. Dal confronto è possibile ricavare l'espressione booleana che descrive
l'uscita:
O7 = T10 ⋅ T11
Il primo e l’ultimo percorso dello schema implementano i due temporizzatori con ritardo alla diseccitazione, il
secondo implementa l’espressione logica.
Il valore di preset del temporizzatore T10 deve essere impostato a 200 e quello di T11 a 300 centesimi di
secondo nella Finestra Impostazioni preset (FPC 404).
Il valore di preset del temporizzatore deve essere impostato a 100 centesimi di secondo nella Finestra
Impostazioni preset (FPC 404).
Il contatore C4 viene impostato sul valore 10 in corrispondenza dell’attivazione dell’ingresso I1.0 e viene
decrementato ad ogni chiusura dell’ingresso I1.1. L’uscita O1.7 viene attivata in corrispondenza del valore
0 del conteggio.
Nel primo percorso del programma ladder, il contatore C4 è utilizzato come operando di una bobina di preset.
Il suo valore di conteggio viene impostato al preset alla chiusura dell'ingresso I1.0. Corrispondentemente il
suo stato diventa vero.
Nel secondo percorso, la bobina di decremento provvede a diminuire di 1 il valore di conteggio di C4 ad ogni
attivazione dell'ingresso I1.1. Al raggiungimento dello zero lo stato del contatore diventa falso.
Nell'ultimo percorso, l'uscita O1.7 viene comandata con il complemento dello stato del contatore.
LADDER
Il valore di preset del contatore deve essere impostato a 10 nella Finestra Impostazioni preset (FPC 404).
Il contatore C4 viene incrementato ad ogni chiusura dell’ingresso I1.2 e riportato a zero in corrispondenza
dello stato alto dell’ingresso I1.3. L’uscita O1.6 viene attivata quando il valore di conteggio raggiunge 10.
Nel primo percorso del programma ladder, il contatore C4 è utilizzato come operando di una bobina di set. Il
suo valore di conteggio viene portato a zero alla chiusura dell'ingresso I1.3. Corrispondentemente il suo
stato diventa vero.
Nel secondo percorso, la bobina di incremento provvede ad aumentare di 1 il valore di conteggio di C4 ad
ogni attivazione dell'ingresso I1.2. Al raggiungimento del preset lo stato del contatore diventa falso.
Nell'ultimo percorso, l'uscita O1.6 viene comandata con il complemento dello stato del contatore.
LADDER
Il valore di preset del contatore deve essere impostato a 10 nella Finestra Impostazioni preset (FPC 404).
Determinare per quanti secondi l’ingresso I5 rimane chiuso ed utilizzare l’ingresso I6 per azzerare il
conteggio del tempo.
Occorre realizzare innanzitutto una base tempi da un secondo, cioè un treno di impulsi con periodo da un
secondo. Quindi occorrerà contare quanti impulsi di base tempi vengono generati durante la chiusura
dell’ingresso, cioè gli istanti in cui sono contemporaneamente veri l’ingresso e la base tempi.
Il percorso 2 genera il treno di impulsi, così come chiarito nell’esempio 16. Il primo percorso ha il compito di
incrementare il conteggio ogni secondo in corrispondenza della chiusura di I5. L’ultimo percorso esegue
l’azzeramento del conteggio sulla chiusura di I6.
LADDER
Il valore di preset del temporizzatore deve essere impostato a 100 centesimi di secondo nella Finestra
Impostazioni preset (FPC 404).
Esempio 20: conteggio tempo di chiusura di un ingresso (in ore, minuti e secondi)
Determinare per quante ore, minuti e secondi l’ingresso I5 rimane chiuso ed utilizzare l’ingresso I6 per
azzerare il conteggio del tempo.
LADDER
Osserviamo anzitutto, alla fine del programma, la costruzione di un treno di impulsi col temporizzatore T3,
che fungerà da base tempi. Per ottenere un periodo di 1 s il valore di preset deve essere pari a 100.
Al percorso 4 viene incrementato il contatore C5 quando, durante la chiusura dell’ingresso, si verifica un
impulso di base tempi, cioè quando sono veri I5 e T3 contemporaneamente. Pertanto, con ingresso chiuso,
C5 viene incrementato ogni secondo e quindi rappresenta il contatore dei secondi.
Quando il conteggio di C5 raggiunge il valore di preset, impostato su 60, lo stato del contatore va basso. Due
contatti NC di esso, che in questo momento si chiudono, sono presenti sullo schema ai percorsi 1 e 5. Il
primo, per mezzo della bobina di set, azzera C5; il secondo incrementa il contatore C6. Quest’ultimo viene
incrementato di 1, quindi, ogni volta che C5 raggiunge il suo preset, cioè ogni 60 secondi. C6 pertanto
rappresenta il contatore dei minuti.
Anche C6 ha un valore di preset pari a 60 e, quando viene raggiunto, lo stato del contatore diventa basso.
Nella schema, ai percorsi 2 e 6, sono presenti due contatti NC di C6 che, in questa condizione, azzerano il
valore di conteggio di C6 e incrementano C7. Quest’ultimo viene incrementato di 1, quindi, ogni volta che C6
raggiunge il suo preset, cioè ogni 60 minuti. C7 pertanto rappresenta il contatore delle ore.
I contatti NA di I6, presenti nei paralleli dei primi tre percorsi, provvedono alla funzione di azzeramento dei
tre contatori a seguito della chiusura dell’ingresso, cioè all’azzeramento dell’intero contatempo. Identica
funzione viene svolta dai contatti con operando FI che eseguono l’azzeramento all’avvio del PLC, passaggio
Stop-Run.
Concludendo, i contatori dei secondi e dei minuti vengono azzerati al raggiungimento del valore 60, quando si
chiude l’ingresso I6 e durante il primo ciclo di elaborazione. Il contatore delle ore, invece, viene azzerato a
seguito degli ultimi due eventi e non ha un limite di conteggio, se non la lunghezza del registro interno a 16bit.
Il contatempo software costruito ci consente di contare, quindi, fino a 65535 ore, 59 minuti e 59 secondi (per
la precisione!). Ammesso che si possa considerare un valore così preciso, su un tempo tanto lungo, tenendo
presenti gli inevitabili errori dell’orologio interno sia del PLC reale che del PC su cui ‘gira’ quello simulato.
Nella Finestra Impostazioni preset (FPC 404) occorre impostare il valore di preset del temporizzatore a 100
centesimi di secondo e quelli dei contatori C5 e C6 a 60.
L’uscita O7 deve essere comandata da un segnale ad onda quadra con Ton = 0.5s e Toff = 1.5s.
LADDER
Nella soluzione proposta vengono utilizzati due temporizzatori che si ‘rimpallano’ l’eccitazione. Inizialmente i
due temporizzatori sono fermi. La prima elaborazione del percorso 1 dello schema a contatti attiva il
temporizzatore T1 poiché il contatto NC di T2 è chiuso, in quanto T2 è disattivo. L’elaborazione del percorso
successivo trova quindi T1 già avviato, il suo contatto NC allora è aperto e T2 non viene avviato. Nulla
cambia fino allo scadere del tempo di T1. A questo punto il contatto sul percorso 2 si chiude ed avvia T2, di
conseguenza il contatto sul percorso 1 si apre. Scaduto T2 il contatto sul percorso 1 si richiude e T1 riparte
… e così via.
Il risultato di ciò è mostrato nel diagramma temporale di Figura 12 dove l’andamento di T2 rappresenta
proprio la forma d’onda richiesta dalla traccia.
Potremmo aggiungere un percorso 3 nello schema in cui un contatto NA di T2 pilota una bobina dell’uscita
O7. Abbiamo preferito invece sfruttare il contatto di T2 già presente, ma essendo quest’ultimo di tipo NC è
stato necessario invertire anche la bobina per ottenere un risultato identico.
Nella Finestra Impostazioni preset (FPC 404) occorre impostare il valore di preset del temporizzatore T1 a
150 e quello di T2 a 50 centesimi di secondo. Modificando opportunamente tali valori è possibile variare Ton e
Toff realizzando un’onda quadra con diversi duty cycle e frequenza.
Un pulsante collegato all’ingresso I0 attiva per tre minuti un gruppo di lampade collegate all’uscita O1,
insieme a queste viene attivata una spia collegata all’uscita O2 che, 15 secondi prima dello spegnimento delle
lampade, inizia a lampeggiare per avvisare dell’imminente scadere del tempo. La spia si spegne
definitivamente insieme con le lampade.
Per la soluzione di questo esercizio sono stati utilizzati 4 temporizzatori. T2 e T3 vengono usati come
generatore di onda quadra con valori di preset di 0.5s, in modo che l’onda abbia un periodo di 1s ed un duty
cycle del 50% (vedere esempio 21). Questo segnale verrà utilizzato per il comando del lampeggio della spia.
I temporizzatori T0 e T1 vengono invece avviati come impulsi prolungati (percorso 3) dal medesimo segnale
d’ingresso (I0). T0 ha un valore di preset di 3 minuti e verrà utilizzato per comandare direttamente il gruppo
di lampade all’uscita O1 (percorso 4). Osserviamo dal confronto del secondo, terzo e quarto rigo del
diagramma con l’ultimo che l’uscita O2 deve essere attiva quando è attivo T0 o quando,
contemporaneamente, è attivo T1, non attivo T0 ed attivo T2, cioè in termini di espressione booleana:
O2 = T0 + T1 ⋅ T0 ⋅ T2
Riportando questa espressione in termini elettrici, si ottiene il percorso 5 dello schema.
LADDER
Nella Finestra Impostazioni preset (FPC 404) occorre impostare il valore di preset dei temporizzatori T2 e T3
a 50, quello di T0 a 1800 e quello di T1 a 1650 centesimi di secondo.
Realizzare un divisore di frequenza per 4: ogni quattro impulsi in ingresso viene attivato un impulso sull’uscita
O1.7.
LADDER
E’ sufficiente cambiare il valore di preset di C3 per dividere per un numero qualsiasi di volte (fino a 65535).
Nella Finestra Impostazioni preset (FPC 404) occorre impostare il valore di preset del contatore a 4 e quello
del temporizzatore ad un valore conveniente per la valutazione del funzionamento. Impostando 100, il treno
di impulsi avrà un periodo di 1 secondo e il LED dell'uscita si accenderà ogni 4 secondi.
Alla attivazione del pulsante collegato all’ingresso I0 le cinque lampade di un semaforo devono accendersi in
progressione, una ogni secondo. Un secondo dopo la completa accensione, le lampade devono spegnersi.
Nel programmare la soluzione di questo problema si è fatto uso di simboli. La loro corrispondenza con gli
operandi assoluti è stata stabilita secondo la seguente tabella.
LADDER
Nella Finestra Impostazioni preset (FPC 404) occorre impostare il valore di preset del temporizzatore T1 a
500, di T2 a 100, di T3 a 200, di T4 a 300 e quello di T5 a 400 centesimi di secondo.
Portate in Run il PLC, trasformate l’interruttore 0.1 in un pulsante, premete il pulsante e … vinca il migliore!
Premessa
Le note fornite in questa sezione si riferiscono unicamente al PLC simulato, cioè a PC-Sim per PS3. Molto
spesso, comunque, e proprio perché in tutta la simulazione in AW-SYS si è cercato di avvicinarsi quanto più
possibile alla realtà, esse trovano riscontro anche nel PLC reale. Si consiglia vivamente l’utilizzo dei manuali
originali del PLC e dell’apparecchiatura di programmazione per tutte le informazioni necessarie alla
programmazione del dispositivo reale.
Alcuni degli argomenti trattati, per loro natura, sono comuni ai diversi PLC simulati. Si è preferito però
ripetere le stesse descrizioni per tutti al fine di far diventare ognuno di questi capitoli un’entità autonoma: un
comodo ed indispensabile manuale da tenere a portata di mano durante la programmazione del PLC
simulato.
Indirizzamento
Sotto il nome di indirizzamento va la serie di regole sintattiche che si deve osservare nel far riferimento a
variabili o costanti durante la scrittura di un programma utente per PLC. L’indirizzamento nella simulazione
del PLC PS3 si effettua in accordo alle regole descritte di seguito.
La sigla che compone ogni riferimento ad operando è costituita da una parte letterale seguita da una parte
numerica. La lettera iniziale specifica la natura dell’operando: essa sarà una ‘I’ per gli ingressi, una ‘Q’ per le
uscite, una ‘M’ per i merker, ecc.
Per grandezze a byte, a questa lettera viene fatta seguire una B, per grandezze a word una W, mentre una A
servirà ad individuare un canale analogico. Nessuna lettera successiva è utilizzata per l’indirizzamento di bit.
Quindi la parte letterale ci informa (o meglio informa la macchina) circa la natura ed il numero di bit
dell’operando. La successiva parte numerica individua in modo univoco lo specifico operando tra tutti quelli
della stessa natura e numero di bit. Così, allora, per individuare la merker word 20 occorrerà scrivere MW20;
‘M’ per merker, ‘W’ per word ed il numero della merker word ‘20’. Poiché l’organizzazione della memoria di
questo PLC è strutturata a word, il riferimento ad operandi a 16 bit risulta immediato: numero della word
dell’operando.
Per indirizzare un singolo bit occorrerà specificare la word di appartenenza e la posizione del bit all’interno di
essa, separando con un punto le due informazioni. Ad esempio, il bit 10 della merker word 20 avrà indirizzo
M20.10.
L’indirizzamento dei byte viene effettuato in maniera simile. Ogni byte è individuato dal numero della word di
appartenenza e dal numero del bit meno significativo tra quelli che lo compongono. Allora, il byte alto della
merker word 20 sarà MB20.8, mentre quello basso MB20.0.
Caso particolare è l’indirizzamento delle costanti che, comunque, segue regole abbastanza simili. La lettera
che specifica la natura di un operando come costante è la ‘K’, che dovrà essere seguita da una ‘B’ per le
costanti di byte o da una ‘W’ per le costanti di word. A questa prima parte dovrà seguire il valore numerico
della costante, con i limiti propri della rappresentazione nel numero di bit che la compongono.
Esaminiamo ora più in dettaglio l’indirizzamento con riferimento alle diverse tipologie di operandi. Quanto
espresso è stato riassunto in Tabella 15 per comodità di consultazione.
Ingressi
I sedici ingressi digitali del PLC corrispondono agli indirizzi da I0.0 a I0.15. La word completa formata da
questi 16 bit viene indirizzata con IW0. I due byte che la compongono hanno indirizzi IB0.0 quello meno
significativo e IB0.8 quello più significativo.
I quattro ingressi analogici corrispondono agli indirizzi da IA0.0 a IA0.3. Ognuno dei canali è rappresentato
in un byte; può quindi assumere 256 diversi valori, da 0 a 255.
Al dispositivo reale possono essere collegati in rete altri tre PLC identici. Ingressi ed uscite di questi ultimi,
denominati espansioni e numerati progressivamente da 1 a 3, diventano così accessibili dal primo,
denominato apparecchiatura base e identificato dal numero 0.I canali di ingresso delle espansioni assumono
sigle da I1.0 a I3.15, per i digitali, e da IA1.0 fino a IA3.3, per gli analogici. Per tutti la prima cifra della
parte numerica individua il numero di espansione così come lo 0 nell’indirizzamento dei canali interni
individua l’apparecchiatura base. Le word di ingresso delle espansioni assumono indirizzi IW1, IW2 e IW3.
Mentre i 6 byte che le compongono verranno identificati con sigle da IB1.0 a IB3.8.
Al PLC simulato non è possibile collegare espansioni ma gli indirizzi relativi vengono comunque accettati
dagli editor e compilati. Il test di un ingresso di una apparecchiatura ampliamento comporterà sempre il
risultato 0, a meno di utilizzo di PL-RIS o PL-Net.
Uscite
Le sedici uscite digitali del PLC corrispondono agli indirizzi da Q0.0 a Q0.15. La word completa formata da
questi 16 bit viene indirizzata con QW0. I due byte che la compongono hanno indirizzi QB0.0 quello meno
significativo e QB0.8 quello più significativo.
L’unico canale di uscita analogica ha indirizzo QA0.0. Esso viene rappresentato in un byte; può quindi
assumere 256 diversi valori, da 0 a 255.
Considerazioni analoghe a quelle riportate per gli ingressi, in merito alle apparecchiature di ampliamento,
possono essere ripetute per le uscite. Nel PLC simulato, l’impostazione di una di queste uscite non causa
alcun effetto, a meno di utilizzo di PL-RIS o PL-Net.
Merker
La memoria merker è composta da 36 parole merker (merker word) indirizzabili con sigle da MW0 a MW35.
Ogni bit di esse è indirizzabile singolarmente con sigle operando da M0.0 fino a M35.15. Dove la ‘M’
individua l’operando merker, la prima cifra il numero della word e la seconda la posizione del bit all’interno di
quest’ultima.
Ognuno dei byte che compongono le merker word può essere indirizzato con sigle che vanno da MB0.0 a
MB35.8.
Per chiarezza, riportiamo come esempio nello schema seguente l’indirizzamento a word, byte e bit per la
merker word 2.
MW2
MB2.8 MB2.0
M2.15 M2.14 M2.13 M2.12 M2.11 M2.10 M2.9 M2.8 M2.7 M2.6 M2.5 M2.4 M2.3 M2.2 M2.1 M2.0
Funzione particolare assolvono i merker M34.14 e M34.15: essi sono infatti due multivibratori che oscillano
con periodi di 100ms e 2s rispettivamente.
Costanti
Nella programmazione possono essere utilizzate due costanti booleane (a bit).
K0 valore falso
K1 valore vero
Sono richiamabili nel programma anche costanti a 8 bit, con sigle da KB0 a KB255, e a 16 bit, con sigle da
KW0 a KW65535, nelle quali la parte numerica individua proprio il valore della costante.
Temporizzatori
Sono presenti nel PLC 32 temporizzatori di tipo a ritardo all’eccitazione con indirizzi da TR0 a TR31. Il ritardo
impostabile varia tra 0 e 6553.5 secondi.
Contatori
I contatori disponibili per la programmazione sono 32 ed hanno indirizzi da C0 a C31. Il valore di conteggio ha
un campo tra 0 e 65535 e possono essere effettuate sia operazioni di conteggio in avanti che all’indietro.
Registri di scorrimento
Sono presenti 32 registri a scorrimento (shift register) i cui indirizzi vanno da SR0 a SR31. Il numero di bit di
ogni registro è 16 ed è possibile effettuare scorrimenti sia a sinistra che a destra.
Comparatori
Sono infine presenti 32 comparatori i cui indirizzi vanno da CP0 a CP31.
Tabella 15: Riepilogo operandi per PS3 (apparecchiatura base)
Tipo Q.tà Min Max
Ingressi a bit 16 I0.0 I0.15
Ingressi a byte 2 IB0.0 IB0.8
Ingressi a word 1 IW0
Ingressi analogici 4 IA0.0 IA0.3
Sistema operativo
Il cuore del funzionamento del PLC è il suo Sistema Operativo: un programma che gestisce il funzionamento
di base dell’apparecchiatura, registrato in ROM dalla casa costruttrice.
Una disamina puntale delle funzioni del Sistema Operativo non rientra nei compiti di questo manuale, ed
anche nei manuali dei PLC reali è difficile trovare molti chiarimenti a riguardo; tra l’altro, il fatto che questo
programma venga eseguito è completamente trasparente al programmatore che, per certi versi, può
addirittura ignorarne l’esistenza.
Elenchiamo comunque, per completezza, alcune delle funzioni da esso svolte, quelle che riteniamo più
importanti ai fini della trattazione seguente:
• controllo del tempo di ciclo (watch-dog)
• test dell’hardware e della memoria
• richiamo del programma utente
• aggiornamento dell’immagine degli ingressi
• trasferimento dell’immagine delle uscite
• gestione presa di programmazione
• controllo della batteria tampone.
Immagini di processo
Una parte della RAM della PLC è destinata al compito di fungere da memoria intermedia per l’accesso alla
periferia. Questa memoria prende il nome di immagine di processo e si divide in due parti: immagine di
processo degli ingressi ed immagine di processo delle uscite (nel seguito denominate solo immagine degli
ingressi ed immagine delle uscite).
Prima dell’elaborazione del programma utente, tutti gli ingressi del PLC vengono letti ed il loro stato copiato
nell’immagine degli ingressi. Al termine dell’elaborazione del programma utente, la memoria immagine delle
uscite è ricopiata nelle uscite del PLC.
Durante l’elaborazione del programma, ogni acceso agli ingressi o alle uscite non viene riferito all’effettivo
canale fisico ma ad un bit, corrispondente a quel canale, nella memoria immagine di processo. Quando si
richiede la lettura di un ingresso, quello che si legge è in realtà un bit di memoria che, in precedenza, è stato
copiato dall’ingresso effettivo. Quando si scrive su un’uscita, in realtà non si scrive direttamente sul canale di
uscita, ma viene scritto un bit di memoria che solo successivamente verrà ricopiato sul canale fisico di uscita.
Il microprocessore all’interno del PLC dovrà pertanto dividere il suo tempo tra diversi compiti: eseguire il
Sistema operativo, aggiornare l’immagine degli ingressi, eseguire il programma applicativo e trasferire
l’immagine delle uscite. Il diagramma a torta della Figura 16 illustra queste attività. Il senso di percorrenza del
diagramma è quello illustrato dalla freccia. Le rispettive percentuali di tempo sono del tutto indicative ed, in
particolare, quella dedicata all’esecuzione del programma utente è variabile con le dimensioni dello stesso
cioè, in generale, quanto più lungo è il programma tanto più tempo occorrerà alla CPU per eseguirlo
(escludendo da questa considerazione programmi che contengono operazioni di salto e diramazione).
Il sistema operativo, subito prima di effettuare il richiamo del programma utente, avvia un monostabile che ha
in genere una durata che va da qualche decina fino a pochissime centinaia di millisecondi. Supponiamo che il
programma utente richieda per la sua esecuzione un tempo inferiore a quello del monostabile. In questa
situazione, prima di ogni suo successivo richiamo il monostabile verrebbe avviato nuovamente e, come
risultato, l’uscita di quest’ultimo rimarrebbe continuamente alta.
Se, invece, il programma utente richiedesse per la sua esecuzione più tempo della durata del monostabile,
allora l’uscita di questo si porterebbe allo stato basso, provocando l’immediato passaggio in Stop del PLC.
Un programma realizzato male potrebbe portare la CPU ad eseguire indefinitamente, o per un tempo
eccessivo ai fini della rapidità del controllo dell’impianto, un ciclo chiuso di istruzioni senza tornare
all’elaborazione del sistema operativo. Questa condizione potrebbe portare danni all’impianto e grave
pericolo per il personale che vi opera. Il controllo del tempo di ciclo, che nella letteratura tecnica specializzata
trovate anche col nome di watch-dog, evita proprio questo problema.
Anche PC-Sim controlla che il vostro programma non generi un ciclo chiuso ma, in questo caso, i molteplici e
mutabili compiti di un PC, impongono tempi più lunghi per la rilevazione del problema, dell’ordine di qualche
secondo.
Registri
Il PLC PS3 utilizza i registri elencati di seguito per memorizzazioni temporanee durante l’esecuzione del
programma utente.
Viene utilizzato come memoria di lavoro nell’elaborazione del programma utente. In esso vengono depositati i
risultati delle operazioni di caricamento o delle operazioni logiche e da esso vengono prelevati i valori per le
operazioni di assegnazione.
Questo registro ha una lunghezza variabile: sarà a 16 bit in sequenze di istruzioni che lavorano su word, ad 8
bit in sequenze di istruzioni che lavorano su byte, infine sarà ad 1 bit in sequenze di istruzioni binarie. Vedere
più avanti la descrizione di una sequenza.
Registro di stato
Il registro di stato è un registro a 2 bit. Il primo, Bit di overflow (C), è portato al valore 1 quando un’operazione
aritmetica genera un overflow; il secondo, Bit di zero (Z), viene impostato ad 1 quando, dopo un’operazione
aritmetica, il registro generale è nullo. Come vedremo in seguito, le operazioni di diramazione testano lo stato
di questi due bit per valutare se occorre compiere il salto all’etichetta specificata.
Registro di stack
Il PLC possiede un registro di stack da 8 bit con struttura LIFO (Last In First Out) nel quale vengono
memorizzati i risultati intermedi per l’implementazione di funzioni logiche che necessitano di parentesi
(vedere i dettagli nelle descrizioni delle operazioni logiche e negli esempi di programmazione).
Programmazione in AWL
La modalità di programmazione AWL o Lista istruzioni costituisce una delle due metodologie di
implementazione di programmi utente in questo PLC. Essa consiste nella scrittura di istruzioni consecutive;
ognuna di esse è la più piccola unità di programma e costituisce un compito elementare per la CPU.
Istruzioni
Ogni istruzione è composta, come illustrato nella Figura 17, da una parte operazione e, generalmente, da
una parte operando. Di quest’ultima abbiamo già parlato nel paragrafo dedicato all’indirizzamento. La prima è
composta a sua volta da una operazione e da un eventuale complemento. Le operazioni che questo PLC
supporta sono di caricamento (L), di assegnazione (=, R, S), aritmetiche (ADD, SUB, MUL, DIV), di salto e
diramazione (JP, JC, JCN, BC, BNC, BZ, BNZ), su registri (NOT, GOR).
Una descrizione dettagliata delle operazioni, presentate in ordine alfabetico, viene effettuata più avanti in
questo paragrafo. Per comodità di consultazione da parte del programmatore, in Tabella 16 ne viene fornito
un riepilogo con le operazioni raggruppate secondo il tipo.
Sequenza
Una sequenza è una successione di più istruzioni di programma AWL (almeno due) che devono soddisfare le
regole seguenti.
• La prima istruzione di una sequenza deve essere una istruzione di caricamento.
• Il tipo di operando di questa prima istruzione (bit, byte o word) determina il tipo di dati dell’intera
sequenza.
• Il tipo di dati non può essere cambiato all’interno di una sequenza. Ogni istruzione seguente la prima,
cioè, deve far riferimento ad un operando dello stesso numero di bit.
• Una sequenza può essere terminata da una o più operazioni di assegnazione, set/reset o salto
condizionato.
A quest’ultima regola fa eccezione l’istruzione GOR. L’effetto di chiusura di sequenza di una istruzione di
assegnazione a byte viene annullato se a seguirla è un’istruzione GOR che riapre, quindi, la sequenza di byte.
Esempio di una sequenza binaria:
L I0.2 Apertura di una sequenza binaria con istruzione di caricamento di bit
A I0.3 Operazione logica binaria
ON I0.5 Operazione logica binaria
= Q0.14 Chiusura della sequenza binaria con istruzione di assegnazione
= (Assegnazione)
A (And)
Se viene specificato un operando, esegue l’operazione logica AND tra l’operando, eventualmente negato, e il
registro generale. Il risultato viene depositato nel registro generale. L’operando non viene modificato. Per
operazione AND su byte viene effettuato l’AND bit a bit dei due termini.
Se non viene specificato alcun operando, l’operazione AND viene effettuata tra l’ultimo valore binario inserito
nel registro di stack, eventualmente negato, ed il contenuto del registro generale. Il risultato viene depositato
ancora nel registro generale.
ADD (Addizione)
Esegue l’addizione tra l’operando specificato e il registro generale. L’operazione può essere utilizzata solo in
sequenze di byte. Il risultato viene depositato nel registro generale. L’operando non viene modificato.
Il registro ausiliario non viene modificato dall’operazione di addizione.
B… (Diramazioni condizionate)
Il contenuto del registro di stato viene confrontato con la condizione di diramazione. In caso di concordanza il
programma viene continuato dall’istruzione specificata nell’operando.
Le diramazioni condizionate sono ammesse solo in sequenze di byte ed hanno senso solo dopo operazioni
che influenzano i bit del registro di stato.
I registri non sono influenzati dalle operazioni di diramazione.
DIV (Divisione)
Esegue la divisione del contenuto del registro generale per l’operando specificato. Il risultato viene depositato
nel registro generale, il resto nel registro ausiliario. I valori sono interpretati come numeri interi positivi in
rappresentazione ad 1 byte (da 0 a 255). L’operazione può essere programmata solo in sequenze di byte.
L’operando non viene modificato.
Il contenuto del registro ausiliario potrà essere successivamente elaborato con un'istruzione GOR.
L’operazione di divisione per 0 non viene eseguita.
JC (Salto condizionato)
Se il contenuto del registro generale di bit è concorde con l’operazione specificata, l’elaborazione riprende
dall’istruzione il cui numero è specificato come operando, altrimenti l’elaborazione continua dall’istruzione
successiva.
L’operazione è ammessa solo in sequenze di bit.
Il contenuto del registro generale e del registro ausiliario non viene modificato.
JP (Salto assoluto)
L (Caricamento)
MUL (Moltiplicazione)
Esegue la moltiplicazione tra il contenuto del registro generale e l’operando specificato. I valori sono
interpretati come numeri interi positivi in rappresentazione ad 1 byte (da 0 a 255). Il risultato viene depositato
nel registro generale (byte meno significativo) e nel registro ausiliario (byte più significativo). Il contenuto del
registro ausiliario potrà essere elaborato utilizzando un’operazione GOR.
L’operando non viene modificato.
L’operazione è ammessa solo in sequenze di byte.
NOT (Negazione)
Il contenuto del registro generale viene negato, cioè ne viene eseguito il complemento ad 1.
Il contenuto del registro ausiliario non viene modificato.
L’operazione è ammessa solo in sequenze di byte.
O (Or)
Se viene specificato un operando, esegue l’operazione logica OR tra l’operando, eventualmente negato, e il
registro generale. Il risultato viene depositato nel registro generale. L’operando non viene modificato. Per
operazione OR su byte viene effettuato l’OR bit a bit dei due termini.
Se non viene specificato alcun operando, l’operazione OR viene effettuata tra l’ultimo valore binario inserito
nel registro di stack, eventualmente negato, ed il contenuto del registro generale. Il risultato viene depositato
ancora nel registro generale.
R (Reset)
Il bit specificato dall’operando viene cancellato se il contenuto del registro generale di bit e uguale ad 1.
Altrimenti nessuna modifica dell’operando viene eseguita.
L’operazione è ammessa solo in sequenze di bit.
Il contenuto del registro generale e del registro ausiliario non viene modificato.
S (Set)
Il bit specificato dall’operando viene impostato a 1 se il contenuto del registro generale di bit e uguale ad 1.
Altrimenti nessuna modifica dell’operando viene eseguita.
L’operazione è ammessa solo in sequenze di bit.
Il contenuto del registro generale e del registro ausiliario non viene modificato.
SUB (Sottrazione)
L’operando specificato viene sottratto dal contenuto del registro generale. Il risultato viene depositato nel
registro generale. L’operando non viene modificato.
Il contenuto del registro ausiliario non viene modificato dall’operazione di sottrazione.
L’operazione è ammessa solo in sequenze di byte.
XO (Or esclusivo)
Se viene specificato un operando, esegue l’operazione logica OR esclusivo (XOR) tra l’operando,
eventualmente negato, e il registro generale. Il risultato viene depositato nel registro generale. L’operando
non viene modificato. Per operazione XOR su byte viene effettuato l’XOR bit a bit dei due termini.
Se non viene specificato alcun operando, l’operazione XOR viene effettuata tra l’ultimo valore binario inserito
nel registro di stack, eventualmente negato, ed il contenuto del registro generale. Il risultato viene depositato
ancora nel registro generale.
Sigla Significato
RA registro generale di bit
RAb registro generale di byte
RAw registro generale di word
RS registro di stack
RH registro ausiliario
C flag di overflow
Z flag di zero
Op operando
Tabella 16: Riepilogo operazioni per PS3
Operazione Operando Descrizione
Operazioni di caricamento
L I, Q, M, K Carica lo stato dell’operando nel registro generale RS = RA
(bit) RA = Op
L IB, IA, QB, Carica lo stato dell’operando nel registro generale RAb = Op
QA, MB, KB (byte)
L IW, QW, Carica lo stato dell’operando nel registro generale RAw = Op
MW (word)
LN I, Q, M, K Carica il complemento dell’operando nel registro RS = RA
generale (bit) RA = Op
Operazioni di assegnazione
= Q, M Assegna all’operando il valore del registro Op = RA
generale (bit)
= QB, QA, MB Assegna all’operando il valore del registro Op = RAb
generale (byte)
= QW, MW Assegna all’operando il valore del registro Op = RAw
generale (word)
Programmazione in Ladder
La scrittura di un programma per PLC in Ladder diagram o Schema a contatti avviene in maniera simile al
disegno di un circuito elettrico a relè. Tra due linee verticali, poste ai margini dello schema e che
rappresentano l’alimentazione del circuito, possono prendere posto gli elementi del circuito elettrico disposti
su linee orizzontali (che d’ora in avanti chiameremo rami) collegati tra loro da linee orizzontali e verticali.
Ogni ramo può contenere al massimo 6 elementi circuitali in precise posizioni. Nelle prime 5 posizioni si
possono disegnare soltanto contatti, nell’ultima solamente bobine.
Ogni ramo può quindi essere suddiviso in due zone: la zona condizionale, formata dalle prime 5 posizioni,
che contiene le condizioni che devono essere verificate per compiere una determinata azione; la zona
esecutiva, ultima posizione, che contiene le azioni da compiere quando le condizione sono verificate.
Questo è simile a quanto accade in un circuito elettrico: un carico elettrico rappresenta la parte esecutiva di
un ramo; i contatti in serie o in parallelo, di tipo normalmente chiusi o aperti, rappresentano la parte
condizionale.
Ogni contatto può essere parallelato da solo o a gruppi, disegnando contatti sul ramo successivo che
saranno collegati al ramo base, o al ramo parallelo precedente, attraverso linee verticali. Il massimo numero
di rami paralleli consentiti è 4. L’insieme di ramo base e di tutti i rami paralleli collegati ad essi verrà denotato
nel seguito come percorso di corrente. Ogni percorso di corrente viene numerato automaticamente e
progressivamente dall’editor.
Anche le bobine possono essere collegate in parallelo, ma esse devono avere l’ingresso in comune. Cioè, un
percorso di corrente può inviare un singolo segnale logico a tutte le bobine.
All’interno dello schema a contatti possono prendere posto gli elementi descritti nella tabella, a questi
saranno da aggiungere i moduli di sistema di cui si farà menzione separatamente più avanti.
Elemento Descrizione
Zona condizionale
Zona esecutiva
Bobina diretta
Se la bobina è attiva, cioè se esiste una catena di contatti chiusi verso la linea
sinistra di alimentazione, viene assegnato all’operando il valore logico alto. Se la
bobina non è attiva, all’operando viene assegnato il valore logico basso.
Bobina inversa
Se la bobina è attiva, cioè se esiste una catena di contatti chiusi verso la linea
sinistra di alimentazione, viene assegnato all’operando il valore logico basso. Se
la bobina non è attiva, all’operando viene assegnato il valore logico alto.
Salto incondizionato
L’elaborazione del programma viene continuata dal percorso il cui numero
identificativo è riportato come operando.
Elemento Descrizione
identificativo è riportato come operando. Altrimenti l’elaborazione continua
normalmente.
Moduli di sistema
Generalità
Tutti i moduli sono unità di programma finite e a se stanti ed all’interno di essi non sono permesse operazioni.
Un determinato modulo può essere utilizzato una sola volta nel programma. Non è necessario utilizzare i
moduli in ordine crescente di numero.
Tutti i moduli sono rimanenti: conservano il valore al ritorno tensione se presente la batteria tampone.
Per poter funzionare devono essere collegati al programma utente. Questa operazione viene compiuta
scrivendo opportunamente degli operandi validi nelle righe che seguono la chiamata al modulo e che
vengono aggiunte automaticamente dall’editor AWL. Oppure, se si sta programmando in ladder, collegando
contatti agli ingresso del modulo e bobine alle sue uscite e attribuendo loro degli operandi. Le bobine
collegate alle uscite possono essere solo di tipo diretto o inverso, gli altri tipi non sono consentiti. Se risulta
necessario il collegamento di bobine di set, di reset, o salti occorre memorizzare temporaneamente l’uscita
del modulo in un merker bit e quindi, nel percorso successivo, utilizzare un contatto del merker per
comandare la bobina o il salto desiderati.
Se un ingresso non viene collegato questo prenderà di default il valore basso (0).
Temporizzatori
Il PLC mette a disposizione del programmatore 32 temporizzatori con ritardo all’eccitazione con indirizzi da
TR0 a TR31.
La rappresentazione del modulo è la seguente.
LADDER AWL
000: TR5
*S:
*STP:
*IW:
*EQ:
Dove:
S (ingresso): sul fronte di salita il temporizzatore viene inizializzato al valore di preset e avviato.
STOP (ingresso): allo stato alto congela lo scorrere del tempo.
WI (ingresso): valore di preset di tempo su 16 bit (da 0 a 65535) con base tempi fissa da 0.1s. La
temporizzazione può essere impostata quindi tra 0 e 6553.5s (poco più di due ore).
EQ (uscita): uscita del temporizzatore, vale 1 se l’ingresso S è a 1 e se è trascorso il tempo.
Al fronte positivo sull’ingresso S viene attivata la temporizzazione per il tempo espresso all’ingresso WI. Allo
scadere del tempo viene attivata l’uscita Q. L’uscita viene disattivata in corrispondenza della disattivazione
dell’ingresso S.
Uno stato alto all’ingresso STOP congela la temporizzazione che ritornerà a scorrere, dal punto dove si era
fermata, al ritorno allo stato 0 di questo ingresso.
La figura che segue chiarisce maggiormente il funzionamento del temporizzatore, in essa T1 + T2 = T.
Contatori
Il PLC mette a disposizione del programmatore 32 contatori con indirizzi da C0 a C31.
La rappresentazione del modulo nei due linguaggi è la seguente.
LADDER AWL
000: C10
*U:
*D:
*S:
*R:
*IW:
*Z:
*QW:
Dove:
U (ingresso): sul fronte di salita viene incrementato di 1 il valore di conteggio.
D (ingresso): sul fronte di salita viene decrementato di 1 il valore di conteggio.
S (ingresso): sul fronte di salita il valore di conteggio viene impostato al valore di preset.
R (ingresso): allo stato alto, il valore di conteggio viene portato a zero.
WI (ingresso): valore di preset, da 0 a 65535.
Z (uscita): uscita del contatore, allo stato alto quando il conteggio attuale vale 0.
QW (uscita): uscita a word del contatore, riporta il valore attuale del conteggio.
Sul fronte di salita all’ingresso S il valore attribuito all’ingresso IW viene trasferito nel contatore. Per ogni
fronte di salita all’ingresso D il valore del contatore viene decrementato di 1 (conteggio indietro); per ogni
fronte di salita all’ingresso U il valore del contatore viene incrementato di 1 (conteggio avanti). Un livello alto
all’ingresso R cancella il valore del contatore ed inibisce ogni conteggio.
L’uscita Z sarà 1 quando il valore di conteggio è 0.
La Figura 19 chiarisce maggiormente il funzionamento del contatore.
Registri a scorrimento
Il PLC mette a disposizione del programmatore 32 registri a scorrimento con indirizzi da SR0 a SR31.
La rappresentazione del modulo è la seguente.
LADDER AWL
000: SR0
*U:
*D:
*R:
*IU:
*ID:
*Q0:
*Q1:
*Q2:
*Q3:
*Q4:
*Q5:
*Q6:
*Q7:
*Q8:
*Q9:
*Q10:
*Q11:
*Q12:
*Q13:
*Q14:
*Q15:
Dove:
U (ingresso): in corrispondenza del fronte di salita, sposta il contenuto del registro di un bit a sinistra.
D (ingresso): in corrispondenza del fronte di salita, sposta il contenuto del registro di un bit a destra.
R (ingresso): allo stato alto, azzera il contenuto del registro e quindi tutte le uscite.
IU (ingresso): valore del bit meno significativo per la successiva operazione di scorrimento a sinistra.
ID (ingresso): valore del bit più significativo per la successiva operazione di scorrimento a destra.
Q0 (uscita): uscita 0 pari al valore del bit 0 del registro.
Q1 (uscita): uscita 1 pari al valore del bit 1 del registro.
…
…
Q15 (uscita): uscita a 15 pari al valore del bit 15 del registro.
Ad ogni fronte di salita dell’ingresso U il registro viene fatto scorrere di una posizione a sinistra, il bit meno
significativo prende il valore di IU mentre il bit più significativo viene perso. Ad ogni fronte di salita
dell’ingresso D il registro viene fatto scorrere di una posizione a destra, il bit più significativo prende il valore
di ID mentre il bit meno significativo viene perso. In corrispondenza dello stato alto all’ingresso R il registro
viene azzerato.
Le 16 uscite, da Q0 a Q15, hanno il valore del corrispondente bit del registro.
Comparatori
Il PLC mette a disposizione del programmatore 32 comparatori con indirizzi da CP0 a CP31.
La rappresentazione del modulo è la seguente.
LADDER AWL
000: CP0
*I1W:
*I2W:
*GT:
*EQ:
*LT:
Dove:
I1(W) (ingresso): valore di confronto 1
I2(W) (ingresso): valore di confronto 2
GT (uscita): è 1 se I1(W) > I2(W)
EQ (uscita): è 1 se I1(W) = I2(W)
LT (uscita): è 1 se I1(W) < I2(W)
Ingressi LT EQ GT
I1 < I2 1 0 0
I1 = I2 0 1 0
I1 > I2 0 0 1
L’uscita Q0.2 deve essere attivata se, e solo se, entrambi gli interruttori collegati agli ingressi I0.0 e I0.1
sono chiusi.
La soluzione ladder si ottiene pilotando la bobina Q0.2 attraverso la serie due contatti con operandi I0.0 e
I0.1. Infatti la combinazione logica AND, tradotta in linguaggio ladder, equivale alla serie di due contatti: ai
capi della serie 'si legge’ la chiusura del circuito solo quando entrambi i contatti sono chiusi; questa è quindi
l’unica condizione che attiva la bobina.
LADDER AWL
000: L I0.0
001: A I0.1
002: = Q0.2
La soluzione AWL si ottiene caricando dapprima lo stato di I0.0 nel registro generale di bit (L I0.0), quindi
viene effettuata una AND tra quest’ultimo e l’ingresso I0.1 (A I0.1) ed il risultato viene ancora depositato
nel registro generale. L’ultima istruzione (= Q0.2) provvede a trasferire il contenuto del registro generale,
che a questo punto rappresenta la combinazione logica I0.0 · I0.1, all’uscita Q0.2.
Esempio 2: combinazione OR
L’uscita Q0.2 deve essere attivata se almeno uno degli interruttori collegati agli ingressi I0.0 o I0.1 è
chiuso.
La soluzione ladder si ottiene pilotando la bobina Q0.2 attraverso il parallelo di due contatti, con operandi
I0.0 e I0.1. Infatti la combinazione logica OR, tradotta in linguaggio ladder, equivale al parallelo di due
contatti: ai capi del parallelo 'si legge’ la chiusura del circuito quando almeno uno dei contatti è chiuso; questa
è quindi la condizione che porta all’eccitazione della bobina.
LADDER AWL
000: L I0.1
001: O I0.3
002: = Q0.2
La soluzione AWL si ottiene caricando dapprima lo stato di I0.0 nel registro generale di bit (L I0.0), quindi
viene effettuata una OR tra quest’ultimo e l’ingresso I0.1 (O I0.1) ed il risultato viene ancora depositato
nel registro generale. L’ultima istruzione (= Q0.2) provvede a trasferire il contenuto del registro generale,
che a questo punto rappresenta la combinazione logica I0.0 + I0.1, all’uscita Q0.2.
La soluzione ladder dovrebbe essere intuitiva dopo aver realizzato gli esercizi precedenti: la bobina Q0.0
viene pilotata dalla serie (AND) di due paralleli (OR) di contatti, in corrispondenza dei quali sono stati
opportunamente riportati gli operandi.
LADDER AWL
000: L I0.0
001: O I0.1
002: L I0.2
003: O I0.3
004: A
005: = Q0.0
La soluzione AWL richiede, invece, qualche chiarimento poiché è stata introdotta una nuova operazione che
utilizza il registro di stack. Notiamo anzitutto che dopo l’esecuzione dell’istruzione 001, il registro generale di
bit contiene il risultato della combinazione logica OR tra I0.0 e I0.1 (vedi Esempio di programmazione 2).
La successiva operazione di caricamento, non essendo ancora conclusa la sequenza, immette dapprima il
contenuto del registro generale nel registro di stack, quindi carica lo stato dell’operando specificato nel
registro generale. Dopo l’esecuzione dell’istruzione 003 il registro di stack contiene ancora, in prima
posizione, il valore precedentemente calcolato I0.0 + I0.1 ed il registro generale contiene il valore di
I0.2 + I0.3, così come ottenuto eseguendo le istruzioni 002 e 003. L’istruzione 004, una AND senza
operando, richiede alla CPU del PLC di eseguire una AND tra il registro di stack ed il registro generale cioè,
in questo caso, tra i risultati delle due combinazioni OR e di depositare ancora il risultato nel registro
generale. Non rimane che copiare il contenuto di quest’ultimo nell’uscita Q0.0 con l’ultima istruzione.
Realizzare Q0.0 = (I0.0 AND I0.1) OR (I0.2 AND I0.3). Dove le parentesi, sebbene non necessarie in
quanto l’operazione AND ha precedenza sulla OR, sono state aggiunte per chiarezza.
Nella soluzione ladder la bobina Q0.0 viene pilotata dal parallelo (OR) di due serie (AND) di contatti, in
corrispondenza dei quali sono stati opportunamente riportati gli operandi.
LADDER AWL
000: L I0.0
001: A I0.1
002: L I0.2
003: A I0.3
004: O
005: = Q0.0
Nella soluzione AWL notiamo anzitutto che, dopo l’esecuzione dell’istruzione 001, il registro generale di bit
contiene il risultato della combinazione logica AND tra I0.0 e I0.1 (vedi Esempio di programmazione 1). La
successiva operazione di caricamento, non essendo ancora conclusa la sequenza, immette dapprima il
contenuto del registro generale nel registro di stack, quindi carica lo stato dell’operando specificato nel
registro generale. Dopo l’esecuzione dell’istruzione 003 il registro di stack contiene ancora, in prima
posizione, il valore precedentemente calcolato I0.0 · I0.1 ed il registro generale contiene il valore di
I0.2 · I0.3, così come ottenuto eseguendo le istruzioni 002 e 003. L’istruzione 004, una OR senza
operando, richiede alla CPU del PLC di eseguire una OR tra il registro di stack ed il registro generale, cioè in
questo caso tra i risultati delle due combinazioni AND e di depositare ancora il risultato nel registro generale.
Non rimane che copiare il contenuto di quest’ultimo nell’uscita Q0.0 con l’ultima istruzione.
L’operazione logica XOR applicata a due variabili booleane dà risultato vero solo quando solo una delle due
variabili è vera.
La prima serie di contatti del programma ladder è chiusa solo quando I0.1 è chiuso e I0.2 è aperto; la
seconda serie è chiusa solo quando, al contrario, I0.1 è aperto e I0.2 è chiuso. Realizzando il parallelo
delle due si ottiene la funzione desiderata: la bobina viene eccitata solo quando un ingresso è chiuso e l’altro
è aperto.
LADDER AWL
000: L I0.1
001: AN I0.2
002: LN I0.1
003: A I0.2
004: O
005: = Q0.2
000: L I0.1
001: XO I0.2
002: = Q0.2
La prima soluzione AWL altro non è che la traduzione del programma ladder ed è molto simile nel
funzionamento all’esempio precedente. La seconda soluzione utilizza, invece, l’operazione XO che realizza
direttamente la XOR tra gli operandi.
Esempio 6: autoritenuta
Un pulsante collegato all’ingresso I0.0 deve attivare l’uscita Q0.15; un secondo pulsante collegato
all’ingresso I0.1 deve disattivarla.
Nel programma ladder proposto viene realizzato un circuito con autoritenuta. Premendo il pulsante collegato
a I0.0, la bobina Q0.15 viene attivata, quindi il contatto con lo stesso operando sul secondo rigo si chiude
(immaginate che il contatto e la bobina siano parti dello stesso relè Q0.15) continuando a mantenere
eccitata la bobina anche dopo l’apertura di I0.0. La chiusura del pulsante all’ingresso I0.1 provoca
l’apertura del contatto normalmente chiuso sullo schema, diseccitando la bobina e facendo cadere
l’autoritenuta.
LADDER AWL
000: L I0.0
001: O Q0.15
002: AN I0.1
003: = Q0.15
Il programma AWL propone la conversione di quanto appena descritto. Il valore dell’uscita Q0.15 nell’ultima
istruzione viene calcolato caricando lo stato di I0.0, quindi valutandone la OR con Q0.5 ed infine ponendo
in AND il risultato con il complemento di I0.1.
Un pulsante collegato all’ingresso I0.0 deve attivare l’uscita Q0.15; un secondo pulsante, collegato
all’ingresso I0.1, deve disattivarla
L’esercizio è identico al precedente ma, questa volta, nella soluzione vengono usate bobine di set e reset
della stessa uscita Q0.15 pilotate separatamente da contatti di I0.0 e I0.1.
LADDER AWL
000: L I0.0
001: S Q0.15
002: L I0.1
003: R Q0.15
Facendo girare il programma, notiamo come la pressione contemporanea sui due pulsanti comporti la
disattivazione dell’uscita. In effetti, in entrambi i linguaggi, quando sono contemporaneamente valide le
condizioni di test, l’operando Q0.15 viene dapprima attivato, nel percorso 1 o con le prime due istruzioni,
quindi disattivato, nel percorso 2 o con la terza e quarta istruzione. Ma ricordiamo che Q0.15 non
rappresenta effettivamente l’uscita fisica del PLC, ma il corrispondente bit all’interno della memoria delle
immagini di processo. Tale bit di memoria viene effettivamente portato a 1 e poi a 0 ma, solo alla fine
dell’elaborazione del programma utente, il valore elaborato per esso viene trasferito al canale fisico di uscita
corrispondente, che rimane quindi costantemente al valore basso quando entrambi gli ingressi sono chiusi.
Con questa scrittura di programmi abbiamo quindi realizzato una prevalenza del reset rispetto al set. Se
desiderate ottenere il contrario, vi basterà invertire la posizione dei percorsi nello schema a contatti o la prima
sequenza con la seconda nel programma AWL.
Attivare le uscite Q0.8 e Q0.9 in corrispondenza rispettivamente del fronte di salita e di quello di discesa
dell’ingresso I0.0.
Notiamo che l’ultimo percorso dello schema ladder e le ultime due istruzioni del programma AWL
impongono, al termine dell’esecuzione del programma, l’eguaglianza del merker bit M0.0 allo stato
dell’ingresso I0.0. Ma, in corrispondenza dei fronti e per i percorsi o per le istruzioni precedenti, accade che
lo stato delle due variabili sia opposto e solo alla fine dell’elaborazione del programma utente diventi uguale.
Ciò viene rappresentato nelle prime due righe del diagramma di Figura 20 con un ritardo temporale tra di
M0.0 rispetto ad I0.0 che vale un ciclo di esecuzione.
LADDER AWL
000: L I0.0
001: AN M0.0
002: = Q0.8
003: LN I0.0
004: A M0.0
005: = Q0.9
006: L I0.0
007: = M0.0
La parte iniziale dei due programmi attiva la bobina Q0.8, per un ciclo di esecuzione, quando I0.0 è a 1 e
M0.0 è a 0, cioè in corrispondenza del fronte di salita di I0.0, come mostrato al terzo rigo del diagramma.
L’uscita Q0.0 viene attivata 5 secondi dopo l’attivazione dell’ingresso I0.2. Quando l’ingresso torna basso
l’uscita viene disattivata.
LADDER AWL
000: TR2
*S: I0.0
*STP:
*IW: KW50
*EQ: Q0.5
La soluzione è estremamente semplice poiché esiste un modulo di sistema che realizza proprio la
funzionalità richiesta dalla traccia: il temporizzatore con ritardo all’eccitazione, unico tipo di temporizzatore
che questo PLC possiede (vedere Figura 18).
In ladder si tratta di collegare gli ingressi e l’uscita del modulo di sistema a contatti e bobine. In
corrispondenza di questi occorrerà riportare gli operandi appropriati. Cosi, l’ingresso S è stato collegato ad un
contatto NA di I0.0 mentre l’uscita EQ e’ stata collegata ad una bobina di Q0.5; l’ingresso I(W) è stato
collegato ad un contatto con operando KW50 (50 decimi di secondo).
Le operazioni da compiere per la scrittura del programma AWL sono simili. Dopo aver inserito la sigla del
temporizzatore, occorre digitare gli operandi da cui il modulo dovrà prendere i dati o a cui il modulo dovrà
inviare i comandi.
Sia nel programma ladder che in quello AWL l’ingresso STOP non viene utilizzato. Nel primo caso è
sufficiente non collegare nulla all’ingresso, nel secondo basta lasciare vuoto il rigo relativo. In entrambi
l’ingresso del modulo sarà automaticamente posto a valore logico basso.
L’uscita Q0.5 deve essere attivata contemporaneamente alla chiusura dell’ingresso I0.0 e disattivata 5
secondi dopo la sua apertura.
Per risolvere questo problema, non essendo dotato questo PLC di temporizzatori di questo tipo, è necessario
utilizzare l’unico temporizzatore fornito, ritardo all’eccitazione, e scrivere un programma che ne modifichi il
funzionamento. Osservate la Figura 21 che chiarisce il metodo usato per risolvere questo problema.
Il secondo rigo del diagramma rappresenta il segnale che si ottiene complementando l’ingresso. Il terzo rigo
rappresenta invece l’uscita di un temporizzatore con ritardo all’eccitazione che ha come in ingresso il segnale
al rigo superiore (vedere Figura 18). Notiamo come questo segnale rappresenti il complemento di quello
cercato.
Quindi, in conclusione, un temporizzatore con ritardo alla diseccitazione si ottiene da uno con ritardo
all’eccitazione semplicemente negando i segnali di ingresso ed uscita.
LADDER AWL
000: TR2
*S: N I0.0
*STP:
*IW: KW50
*EQ: N Q0.5
In ladder la negazione di un ingresso si ottiene utilizzando un contatto normalmente chiuso (test sullo stato
negato del segnale) e la negazione di un’uscita si ottiene utilizzando una bobina inversa. In AWL basta far
precedere gli operandi dall’indicatore di complemento ‘N’.
L’uscita Q0.0 viene attivata alla chiusura dell’ingresso I0.0 e disattivata 5 secondi dopo. Se l’ingresso viene
riaperto in questo periodo, l’uscita viene disattivata immediatamente.
LADDER AWL
000: TR2
*S: I0.0
*STP:
*IW: KW50
*EQ: M0.0
001: L I0.0
002: AN M0.0
003: = Q0.5
La soluzione in ladder prevede allora la scrittura di un primo percorso per l’attivazione di un temporizzatore
con ritardo all’eccitazione con ingressi (S) I0.0 e (IW) KW50 (5 secondi), l’uscita viene appoggiata in un
merker bit (M0.0). Nel secondo percorso di corrente, la bobina dell'uscita Q0.5 viene pilotata dalla serie
dell’ingresso e del complemento di M0.0 che corrisponde all’uscita del temporizzatore.
La soluzione AWL, pur nella diversa scrittura, è analoga a quella ladder.
L’uscita Q0.5 viene attivata alla chiusura dell’ingresso I0.0 e disattivata 5 secondi dopo, indipendente-
mente dal fatto che l’ingresso venga riaperto o meno in questo periodo.
Il funzionamento del temporizzatore ad impulso prolungato si evince dal confronto del primo e dell’ultimo rigo
del diagramma temporale di Figura 23. Nel primo rigo è rappresentato il segnale di ingresso, nell’ultimo la
corrispondente uscita.
Anche in questo caso dobbiamo utilizzare l’unico temporizzatore che questo PLC possiede, il ritardo alla
eccitazione, per ricavare un temporizzatore del tipo desiderato. Il compito è portare allo stato alto (eccitare)
l’uscita Q0.5 quando l’ingresso va alto e portarla allo stato basso (diseccitarla) quando sia trascorso il tempo.
LADDER AWL
000: L I0.0
001: S Q0.5
002: TR2
*S: Q0.5
*STP:
*IW: KW50
*EQ: M0.0
003: L M0.0
004: R Q0.5
Il primo percorso del diagramma ladder provvede al primo compito: attivare l’uscita quando l’ingresso è alto.
Il temporizzatore del percorso successivo viene avviato tramite un contatto della medesima uscita e, dopo 5
secondi, provvede ad attivare il merker M0.0. Nell’ultimo percorso, il medesimo merker riporta a 0 l’uscita
Q0.5. L’appoggio dell’uscita di TR2 in M0.0 è necessario soltanto perché non è possibile utilizzare la bobina
di reset di Q0.5 direttamente all’uscita del temporizzatore. Ricordiamo che, alle uscite dei moduli di sistema,
possono essere collegate solo bobine dirette o inverse.
La Figura 23 rappresenta il diagramma temporale degli operandi principali presenti in questo esempio. Oltre
all’ingresso ed all’uscita del PLC, sul primo e l’ultimo rigo rispettivamente, è rappresentata nel rigo intermedio
l’uscita del temporizzatore TR2 (corrispondente perfettamente al merker M0.0). Notate come questo segnale
rimanga attivo per un tempo molto breve, un solo ciclo di esecuzione del programma, che nel diagramma è
stato allungato per motivi di leggibilità. In effetti non appena attiva, l’uscita del temporizzatore provvede alla
diseccitazione di Q0.0 ma, poiché questi rappresenta il suo ingresso, alla successiva elaborazione del
programma si ottiene l’azzeramento anche dello stato del temporizzatore.
L’uscita Q0.5 viene attivata 5 secondi dopo la chiusura dell’ingresso I0.0 (anche se quest’ultimo nel
frattempo viene riaperto) e disattivata in corrispondenza della chiusura dell’ingresso I0.1.
Il funzionamento del temporizzatore con ritardo all’eccitazione con memoria si evince raffrontando i primi due
righi del diagramma temporale di Figura 24 con l’ultimo. I primi rappresentano i segnali di ingresso, l’ultimo
riporta la corrispondente uscita.
Figura 24: Diagramma temporale per temporizzatore con ritardo all'eccitazione con memoria
Anche in questo caso dobbiamo utilizzare l’unico temporizzatore che questo PLC possiede, il ritardo alla
eccitazione, per ricavare un temporizzatore del tipo desiderato. Allo scopo utilizziamo un merker che viene
settato da I0.0 e resettato da I0.1, il cui andamento è riportato al terzo rigo del diagramma, e notiamo
come l’uscita Q0.5, rispetto al quest’ultimo, altro non sia che un ritardo all’eccitazione: la soluzione è stata
trovata!
LADDER AWL
000: L I0.0
001: S M0.0
002: L I0.1
003: R M0.0
004: TR2
*S: M0.0
*STP:
*IW: KW50
*EQ: Q0.5
Nello schema a contatti, i primi due percorsi hanno lo scopo di impostare lo stato del merker M0.0. Da
questo, nel terzo percorso, viene ricavata l’uscita, attraverso un temporizzatore con ritardo all’eccitazione.
Il programma AWL è la traduzione di quello ladder.
L’uscita Q0.7 viene attivata 2 secondi dopo la chiusura dell’ingresso I0.1 e disattivata 7 secondi dopo la
sua riapertura.
Figura 25: Diagramma temporale temporizzatore con ritardo all'eccitazione ed alla diseccitazione
La Figura 25 illustra al primo ed ultimo rigo del diagramma l’andamento dei due segnali della traccia. Il rigo
intermedio riporta l’andamento di un merker che sia l’uscita di un temporizzatore con ritardo all’eccitazione
avente per ingresso proprio I0.1. Notiamo che l’andamento dell’uscita Q0.13, rispetto all’andamento del
merker, rappresenta un ritardo alla diseccitazione. Il temporizzatore con ritardo all’eccitazione è presente nel
PLC mentre, in uno degli esempi precedenti, abbiamo imparato a costruire quello con ritardo alla
diseccitazione. Il gioco è fatto! Si tratta quindi di scrivere un programma contenente due temporizzatori: il
primo, un ritardo all’eccitazione, ha come ingresso I0.1 e come uscita M0.0; il secondo, un ritardo alla
diseccitazione, che ha come ingresso M0.0 e come uscita Q0.13.
I programmi ladder ed AWL riportati di seguito implementano questa soluzione.
LADDER AWL
000: TR1
*S: I0.1
*STP:
*IW: KW30
*EQ: M0.0
001: TR2
*S: N M0.0
*STP:
*IW: KW70
*EQ: N Q0.13
L’uscita Q0.7 viene attivata 2 secondi dopo l'apertura dell’ingresso I0.13 per una durata di 1 secondo.
Il diagramma in Figura 26 illustra al primo rigo l’andamento dell’ingresso ed all’ultimo quello della uscita del
temporizzatore richiesto. Il secondo rigo riporta invece l’andamento del complemento di I0.13. Questo
segnale verrà usato per avviare due temporizzatori con ritardo all’eccitazione TR10 e TR11, da 2 e 3 secondi
rispettivamente, i cui segnali di uscita sono riportati nei righi seguenti del diagramma.
Notiamo allora che l’uscita Q0.7 deve essere vera quando accadono contemporaneamente le condizioni:
uscita di TR10 vera e uscita di TR11 falsa quindi, in termini di espressione booleana:
Q0.7 = TR10 ⋅ TR11
Nel programma ladder, i primi due percorsi sono dedicati ai temporizzatori: entrambi hanno per ingresso il
complemento di I0.13 (contatto NC = test sullo stato 0); le uscite sono appoggiate in due merker. Nel terzo
percorso viene implementata l'espressione logica appena ricavata: i due contatti posti in serie svolgono la
funzione dell'operazione AND; in particolare, per il secondo è stato usato il tipo NC al fine di eseguire il
complemento del suo operando.
Nella soluzione AWL, in maniera analoga, vengono richiamati e collegati al programma utente i due
temporizzatori. Quindi la sequenza finale elabora il valore dell’uscita.
LADDER AWL
000: TR10
*S: N I0.13
*STP:
*IW: KW20
*EQ: M0.0
001: TR11
*S: N I0.13
*STP:
*IW: KW30
*EQ: M0.1
002: L M0.0
003: AN M0.1
004: = Q0.7
LADDER AWL
000: TR3
*S: N Q0.4
*STP:
*IW: KW10
*EQ: Q0.4
Il contatore C4 viene impostato sul valore 10 in corrispondenza dell’attivazione dell’ingresso I0.10 e viene
decrementato ad ogni chiusura dell’ingresso I0.11. L’uscita Q0.15 viene attivata in corrispondenza del
valore 0 del conteggio.
Il programma ladder è molto semplice. La costante KW10, assegnata all’ingresso IW, fornirà il valore di preset
10. L’ingresso di set (S) del contatore C4 viene collegato ad un contatto di I0.10, mentre quello di
decremento (D) viene collegato ad un contatto di I0.11. Sul fronte di chiusura di I0.10 avviene
l’impostazione del valore di conteggio a 10; ad ogni fronte di chiusura di I0.11 il conteggio viene invece
decrementato di 1. L’uscita del contatore (Q) è alta quando il valore di conteggio uguale a 0. Sarà quindi
sufficiente collegare ad essa una bobina dell’uscita Q0.15 del PLC.
LADDER AWL
000: C4
*U:
*D: I0.11
*S: I0.10
*R:
*IW: KW10
*QW: Q0.15
L’istruzione 000 del programma AWL costituisce una chiamata al modulo di sistema C4 che viene collegato
in maniera analoga a quanto fatto per il programma ladder.
Il contatore C12 viene incrementato ad ogni chiusura dell’ingresso I0.12 e riportato a zero in corrispondenza
dello stato alto dell’ingresso I0.13. L’uscita Q0.15 è attiva quando il valore di conteggio è diverso da zero.
L’ingresso di reset (R) del contatore C12 viene collegato ad un contatto di I0.13, mentre quello di
incremento (U) viene collegato ad un contatto di I0.12. Sul fronte di chiusura di I0.13 avviene il reset del
contatore, cioè l’impostazione del valore di conteggio a 0; ad ogni fronte di chiusura di I0.12 il conteggio
viene invece incrementato di 1. L’uscita del contatore (Q) è alta quando il valore di conteggio è uguale a 0.
Sarà quindi sufficiente collegare ad essa una bobina inversa dell’uscita Q0.15 del PLC per ottenere il
funzionamento desiderato.
LADDER AWL
000: C12
*U: I0.12
*D:
*S:
*R: I0.13
*IW:
*QW: N Q0.15
L’istruzione 000 del programma AWL costituisce una chiamata al modulo di sistema C12 che viene collegato
in maniera analoga a quanto fatto per il programma ladder.
Determinare per quanti secondi l’ingresso I0.5 rimane chiuso ed utilizzare l’ingresso I0.6 per azzerare il
conteggio del tempo.
Occorre realizzare innanzitutto una base tempi da un secondo, cioè un treno di impulsi che abbia questo
periodo. Quindi sarà necessario contare quanti impulsi di base tempi vengono generati durante la chiusura
dell’ingresso, cioè contare gli istanti in cui sono contemporaneamente veri l’ingresso e l’impulso (vedere
Figura 28).
LADDER AWL
000: TR3
*S: N M0.0
*STP:
*IW: KW10
*EQ: M0.0
001: L I0.5
002: A M0.0
003: = M0.1
004: C5
*U: M0.1
*D:
*S:
*R: I0.6
*IW:
*Z:
*QW:
Il percorso 1 del programma ladder genera il treno di impulsi con periodo di 1 secondo, così come visto
nell’esempio 16. Questa volta viene però utilizzato un merker (M0.0) come ingresso/uscita del
temporizzatore, non essendo richiesto di portare all’esterno del PLC il segnale generato. Il merker M0.1
viene impostato invece alla combinazione logica AND (serie di contatti nel diagramma) tra l’ingresso ed il
treno d’impulsi, esso rappresenta cioè proprio gli impulsi da contare. Questo merker viene utilizzato nel
percorso successivo per pilotare l’ingresso di conteggio avanti del contatore C5. L’ingresso I0.6 pilota
invece il reset del contatore, al fine di ottenere l’azzeramento del conteggio come richiesto.
Il programma AWL realizza le stesse funzioni in modo analogo.
Il valore del contatore C5 rappresenterà il numero dei secondi per cui l’ingresso è rimasto chiuso, con il limite
di 65535 proprio dei contatori di questo PLC.
Esempio 20: conteggio tempo di chiusura di un ingresso (in ore, minuti e secondi)
Determinare per quante ore, minuti e secondi l’ingresso I0.5 rimane chiuso ed utilizzare l’ingresso I0.6 per
azzerare il conteggio del tempo.
I programmi proposti come soluzione terminano con la costruzione di un treno di impulsi sul merker M0.0,
che fungerà da base tempi con periodo di 1 secondo. All’inizio degli stessi, invece, viene elaborato il valore
del merker M0.1, che risulterà impostato ad 1 in presenza di un impulso di base tempi quando il contatto
all’ingresso I0.5 è chiuso. M0.1 viene attivato quindi ogni secondo durante la chiusura dell’ingresso: il
conteggio degli impulsi di questo merker ci permetterà di valutare il tempo come richiesto nella traccia.
In effetti, l’ingresso di conteggio in avanti (U) del contatore C5 è pilotato proprio M0.1; pertanto C5 costituisce
il contatore dei secondi. Il valore attuale del conteggio, presente alla sua uscita QW, viene depositato nella
merker word MW10.
Successivamente alla chiamata di C5, troviamo quella dell’altro modulo di sistema CP0 (comparatore) che
viene utilizzato per confrontare MW10, cioè il numero dei secondi contati, con la costante numerica 60 (KW60).
Quando le due quantità risultano uguali, cioè quando i secondi contati sono 60, il merker M0.2 collegato
all’uscita EQ viene impostato ad 1.
Quest’ultimo merker pilota l’ingresso U del contatore C6 che verrà in tal modo incrementato ogni 60 secondi.
Pertanto C6 costituirà il contatore dei minuti. Il numero dei minuti contati viene depositato in MW11.
Il comparatore CP1 svolge una funzione analoga a CP0: porta a 1 il merker M0.4 quando i minuti contati
raggiungono il valore 60. Il contatore C7, che ha M0.4 collegato all’ingresso U, conterà quindi le ore di
chiusura del contatto e ne depositerà il conteggio in MW12.
Rimane da analizzare come i contatori dei secondi e dei minuti vengano azzerati al sessantesimo impulso
d’ingresso. Notiamo come l’ingresso di reset (R) di C5 sia collegato al merker M0.3 e come questo valga 1
se I0.6 o M0.2 sono a 1 (percorso 7). Ricordiamo come quest’ultimo merker sia l’uscita del comparatore
dei secondi. Quindi il contatore dei secondi verrà azzerato o in corrispondenza della chiusura dell’ingresso
I0.6, come richiesto nella traccia, o quando il conteggio dei secondi arriva a 60.
LADDER AWL
000: L I0.5
001: A M0.0
002: = M0.1
003: C5
*U: M0.1
*D:
*S:
*R: M0.3
*IW:
*Z:
*QW: MW10
004: CP0
*I1W: MW10
*I2W: KW60
*GT:
*EQ: M0.2
*LT:
005: C6
*U: M0.2
*D:
*S:
*R: M0.5
*IW:
*Z:
*QW: MW11
006: CP1
*I1W: MW11
*I2W: KW60
*GT:
*EQ: M0.4
*LT:
007: C7
*U: M0.4
*D:
*S:
*R: I0.6
*IW:
*Z:
*QW: MW12
008: L I0.6
009: O M0.2
010: = M0.3
011: L I0.6
012: O M0.4
013: = M0.5
014: TR3
*S: N M0.0
*STP:
*IW: KW10
*EQ: M0.0
LADDER AWL
Analogamente, osservando l’elaborazione del merker M0.5 nel percorso 8, il contatore dei minuti verrà
azzerato in corrispondenza della chiusura di I0.6 o quando il conteggio dei minuti raggiunge il valore 60.
Il contatore delle ore, invece, viene azzerato solo a seguito della chiusura dell’ingresso I0.6.
Concludendo, quindi, il contatempo software costruito ci consente di contare fino a 65535 ore, 59 minuti e 59
secondi (per la precisione!). Ammesso che si possa considerare un valore così preciso, su un tempo tanto
lungo, tenendo presenti gli inevitabili errori dell’orologio interno sia dell’eventuale PLC reale che del PC su cui
'gira' quello simulato.
Per esercizio, potreste provare a modificare il programma aggiungendo un contatore dei giorni che viene
incrementato di 1 ogni 24 ore.
Per testare il programma, senza dover attendere tempi lunghissimi, potreste diminuire la costante di tempo
nel caricamento di TR3, aumentando così la frequenza del treno di impulsi, oppure forzare manualmente
valori di conteggio prossimi a quelli di comparazione.
L’uscita Q0.7 deve essere comandata da un segnale ad onda quadra con Toff=1.5s e Ton=0.5s.
Nella soluzione proposta vengono utilizzati due temporizzatori che si ‘rimpallano’ l’eccitazione. Il merker
M0.0, inizialmente disattivo, avvia il temporizzatore TR1 per un tempo di 1.5s. A tempo scaduto, l’uscita
Q0.7 viene attivata da TR1. Il contatto di nel percorso 2 Q0.7 avvia quindi il temporizzatore TR2 con un
tempo di 0.5s durante il quale Q0.7 rimane attivo. Scaduto anche questo tempo, il merker M0.0 viene
impostato ad 1 quindi, al successivo ciclo di esecuzione, l’ingresso S di TR1 si porta a livello 0 e così anche
la sua uscita. Anche l’ingresso S di TR2 si porta a livello logico basso e la sua uscita M0.0 con esso.
Finora l’uscita Q0.7 è rimasta disattiva per 1.5s ed attiva per 0.5s, abbiamo cioè analizzato un intero periodo
del segnale. Ma, a questo punto, il sistema si è riportato nelle sue condizioni iniziali, come mostra il
diagramma di Figura 29, e il tutto riprende nuovamente e ciclicamente, realizzando il generatore desiderato.
Impostando opportunamente il valore delle due costanti di word è possibile variare Ton e Toff, realizzando
un’onda quadra con frequenza e duty cycle diversi.
LADDER AWL
000: TR1
*S: N M0.0
*STP:
*IW: KW15
*EQ: Q0.7
001: TR2
*S: Q0.7
*STP:
*IW: KW5
*EQ: M0.0
L’uscita Q0.7 deve essere comandata da un segnale ad onda quadra con Toff=1.5s e Ton=0.5s.
La soluzione qui presentata si differenzia da quella proposta nell’esempio precedente avente la medesima
traccia. Il temporizzatore TR1 è usato per generare un treno di impulsi con periodo di due secondi. In Figura
30 è riportato nel primo rigo l’andamento della sua uscita e nel secondo il complemento del merker M0.0 ad
essa collegato. Questo segnale viene applicato all’ingresso di un temporizzatore con ritardo alla eccitazione,
alla cui uscita è collegata una bobina di Q0.7. L'andamento di Q0.7 è mostrato nell’ultimo rigo del
diagramma e rappresenta la soluzione al problema.
Anche in questo caso, impostando opportunamente le due costanti di tempo, è possibile variare frequenza e
duty cycle dell’onda quadra.
LADDER AWL
000: TR1
*S: N M0.0
*STP:
*IW: KW20
*EQ: M0.0
001: TR2
*S: N M0.0
*STP:
*IW: KW15
*EQ: Q0.7
Un pulsante collegato all’ingresso I0.0 attiva per tre minuti un gruppo di lampade collegate all’uscita Q0.1,
insieme a queste viene attivata una spia collegata all’uscita Q0.2 che, 15 secondi prima dello spegnimento
delle lampade, inizia a lampeggiare per avvisare dell’imminente scadere del tempo. La spia si spegne
definitivamente insieme con le lampade.
Vengono utilizzati due temporizzatori collegati al programma utente per funzionare come ritardi alla
diseccitazione. Il primo, caricato con un tempo di 3 minuti (KW1800 cioè 1800 decimi di secondo), comanda
direttamente l’uscita del gruppo di lampade. Il secondo, caricato con un tempo inferiore di 15 secondi
(KW1650), attiva un merker di appoggio.
Gli andamenti temporali di Q0.1 ed M0.0, a seguito dell’impulso su I0.0, sono riportati nel secondo e terzo
rigo del diagramma di Figura 31. Il quarto rigo riporta l’andamento non in scala del merker M34.15 che funge
da multivibratore astabile con periodo di 2 secondi, direttamente controllato dal Sistema Operativo del PLC.
Questo merker tornerà utile per il lampeggio della spia.
Osservando il quinto rigo del diagramma, si nota che la lampada spia deve essere accesa o quando è attivo
M0.0 o, ancora, quando sono attivi Q0.1 e M34.15 e contemporaneamente M0.0 è disattivo. Cioè in termini
di funzione booleana:
Q0.2 = M0.0 +( Q0.1 ⋅ M0.0 ⋅ M34.14 )
Le soluzioni proposte implementano precisamente quanto descritto.
Nella prima, realizzata in ladder, vengono utilizzati i primi due percorsi per la gestione dei temporizzatori con
ritardo alla diseccitazione. L’ultimo percorso è dedicato invece alla costruzione della logica per il
funzionamento della spia.
Nel programma AWL le prime due istruzioni riportano le chiamate ai moduli di sistema temporizzatori e le
successive implementano la logica di funzionamento della spia.
LADDER AWL
000: TR1
*S: N I0.0
*STP:
*IW: KW1800
*EQ: N Q0.1
001: TR2
*S: N I0.0
*STP:
*IW: KW1650
*EQ: N M0.0
002: L Q0.1
003: AN M0.0
004: A M34.15
005: O M0.0
006: = Q0.2
Realizzare un divisore di frequenza per 4: ogni quattro impulsi in ingresso viene attivato un impulso sull’uscita
Q0.1.
La prima parte delle soluzioni proposte genera un treno d’impulsi, così come abbiamo imparato a fare negli
esempi precedenti, mostrandone il segnale sull’uscita Q0.0. Questo costituirà il segnale da dividere.
La seconda parte implementa effettivamente il divisore. Esso è costituito da un contatore che viene
decrementato ad ogni impulso del generatore (ingresso D collegato a Q0.0) e che, al raggiungimento dello
zero, si autopresetta al valore 4 (uscita Z riportata su ingresso S attraverso Q0.1) .
Ogni 4 impulsi di Q0.0, per un solo ciclo di esecuzione, il conteggio si azzera. In questo ciclo, l’uscita del
contatore si attiva e così l’uscita Q0.1 del PLC ad essa collegata.
LADDER AWL
000: TR1
*S: N Q0.0
*STP:
*IW: KW5
*EQ: Q0.0
001: C3
*U:
*D: Q0.0
*S: Q0.1
*R:
*IW: KW4
*Z: Q0.1
*QW:
Alla attivazione del pulsante collegato all’ingresso I0.0 le cinque lampade di un semaforo devono
accendersi in progressione, una ogni secondo. Un secondo dopo la completa accensione, le lampade
devono spegnersi.
Nel programmare la soluzione di questo problema si è fatto uso di simboli. La loro corrispondenza con gli
operandi assoluti è stata stabilita secondo la seguente tabella.
Il diagramma temporale di Figura 33 mostra nei righi da 2 a 6 l’andamento delle uscite del PLC che
comandano le lampade del semaforo, in funzione dell’ingresso START riportato al primo rigo.
Alla chiusura dell’ingresso START viene settato il merker M0.0, che quindi rimarrà attivo anche alla riapertura
dell’ingresso come mostrato ai righi 1 e 2 del diagramma. Con questo merker viene comandata la lampada
L1, che è la prima ad accendersi contemporaneamente all’attivazione dell’ingresso START, e vengono avviati
cinque temporizzatori con ritardo all’eccitazione con tempi progressivi da 1 a 5 secondi. I primi 4 hanno la
funzione di comandare direttamente l’uscita della rispettiva lampada, l’ultimo la funzione di resettare il merker
M0.0 e quindi portare a zero l’ingresso di tutti i temporizzatori e, di conseguenza, spegnere le cinque
lampade collegate alle rispettive uscite.
Portate in Run il PLC, trasformate l’interruttore 0.1 in un pulsante, premete il pulsante e …vinca il migliore!
LADDER AWL
000: L -START
001: S M0.0
002: S -L1
003: L -END
004: R M0.0
005: R -L1
006: TR1
*S: M0.0
*STP:
*IW: KW10
*EQ: -L2
007: TR2
*S: M0.0
*STP:
*IW: KW20
*EQ: -L3
008: TR3
*S: M0.0
*STP:
*IW: KW30
*EQ: -L4
009: TR4
*S: M0.0
*STP:
*IW: KW40
*EQ: -L5
010: TR5
*S: M0.0
*STP:
*IW: KW50
*EQ: -END
Lo schema stabilisce la sequenza di accensione delle lampade collegate ai quattro canali: i cerchi pieni
segnalano l’attivazione del canale durante lo specifico passo. Così durante il passo 0 sarà attivo il canale 0,
durante il passo 1 il canale 1, e così via. Se le lampade vengono posizionate in linea, l’effetto sarà quello di
uno spostamento della fonte luminosa dalla prima all’ultima posizione e poi al contrario.
Al passo 6 succede un passo 7 identico allo 0 e poi un altro identico al passo 1, cioè il diagramma viene
percorso ciclicamente. Immaginate di ritagliarlo ed avvolgerlo a cilindro facendo combaciare i lembi opposti
del passo 0 e del 5, esso sarebbe simile al tamburo di un carillon: terminato il motivetto, comincia
nuovamente.
Continuando con il parallelo sonoro, perché un carillon funzioni abbiamo bisogno di un cilindro con delle
camme disposte in modo opportuno sulla sue superficie laterale e di un meccanismo che lo faccia girare.
Cominciamo proprio a costruire quest’ultimo. Il meccanismo di avanzamento del sequenziatore sarà un treno
di impulsi con periodo di 0.2 secondi, cioè una base tempi con periodo scelto in modo da portare ad avere
una velocità di spostamento della fonte luminosa ritenuta idonea. Il temporizzatore TIMER provvede a questa
funzione nella maniera già descritta nell'esempio 16.
Il cilindro invece sarà costituito da un contatore che, partendo dal valore 6, viene decrementato ad ogni
impulso. L’uscita di TIMER viene inviata, tramite il merker M10.0, all’ingresso D del contatore COUNTER. Il
valore attuale del conteggio viene depositato nella merker word MW9. L’uscita del contatore viene riportata
all’ingresso di set tramite il merker M10.1 e quindi esso si autopresetta a 6 appena arrivato a 0.
Prima di sistemare le camme sul cilindro, identifichiamo gli spicchi del cilindro che corrispondono ad ogni
specifico passo. I comparatore CP0 imposta ad 1 il merker PASSO0 quando il contatore vale 6, identificando
tra i possibili valori del contatore quello corrispondente a tale passo. I successivi comparatori impostano il
merker corrispondente a ciascuno degli altri passi. Così, alla fine, ogni 0.2s sarà attivo un merker diverso,
andando ad 1 in successione da PASSO0 a PASSO5 e, quindi, riprendendo da PASSO0.
Ora che abbiamo identificato le posizioni possiamo inserire le camme. Cominciamo dal canale 0, osserviamo
nuovamente la griglia di Figura 34, il canale 0 è attivo solo durante il passo 0, quindi CH0=PASSO0.
Il canale 1 deve essere attivo sia durante la passo 1 che durante il passo 5, cioè CH1=PASSO1+PASSO5
Proseguendo così, per gli altri due canali, fino a terminare il carillon o, abbandonando a questo punto il
parallelo didattico, il sequenziatore.
In questo esempio è possibile aumentare o diminuire la durata dei passi semplicemente cambiando la
costante con cui viene caricato il temporizzatore, producendo l’effetto di variare la velocità dello spostamento
apparente della fonte luminosa. E’ possibile modificare il numero dei passi, cambiando la costante con cui
viene caricato il contatore ed aggiungendo altri confronti per discriminare i passi aggiunti. E’ possibile, infine,
cambiare la sequenza di accensione delle lampade, modificando le condizioni nei gruppi di OR che
costituiscono l’ultima parte del programma.
LADDER AWL
000: -TIMER
*S: N M10.0
*STP:
*IW: KW1
*EQ: M10.0
001: -COUNTER
*U:
*D: M10.0
*S: M10.1
*R:
*IW: KW6
*Z: M10.1
*QW: MW9
002: CP0
*I1W: MW9
*I2W: KW6
*GT:
*EQ: M0.0
*LT:
003: CP1
*I1W: MW9
*I2W: KW5
*GT:
*EQ: -FASE1
*LT:
004: CP2
*I1W: MW9
*I2W: KW4
*GT:
*EQ: -FASE2
*LT:
005: CP3
*I1W: MW9
*I2W: KW3
*GT:
*EQ: -FASE3
*LT:
006: CP4
*I1W: MW9
*I2W: KW2
*GT:
*EQ: -FASE4
*LT:
007: CP5
*I1W: MW9
*I2W: KW1
*GT:
*EQ: -FASE5
*LT:
008: L M0.0
009: = -CH0
010: L -FASE1
011: O -FASE5
012: = -CH1
013: L -FASE2
LADDER AWL
014: O -FASE4
015: = -CH2
016: L -FASE3
017: = -CH3
MB20.0 è destinata a contenere Il numero contato di ingressi chiusi. Tale merker byte viene inizializzata a 0
all’inizio del programma. MB10.0 rappresenta invece una maschera ad 8 bit, uno solo dei quali per volta sarà
ad 1. Il valore iniziale è 1 cioè (00000001)2 dove solo il bit 0 è vero.
Le istruzioni 004 e 005 eseguono la AND bit a bit della maschera e del byte di ingresso meno significativo
del PLC. Al primo passaggio, col valore della maschera appena visto, la AND da risultato diverso da 0 solo
se E0.0 è chiuso. Quindi la diramazione su zero prevista dall’istruzione successiva viene eseguita solo per
ingresso aperto.
Se l’ingresso è chiuso, viene incrementiamo il byte di conteggio MB20.0, caricandone il valore nel registro
generale (L MB20.0), sommando 1 (ADD KB1) e trasferendo il risultato nuovamente in MB20.0 (=
MB20.0).
In un caso o nell’altro i due percorsi di elaborazione si ricongiungono all'istruzione 010 dove, dopo aver
caricato la maschera nel registro generale di byte (L MB10.0), si provvede allo scorrimento a sinistra di una
posizione, che equivale ad una moltiplicazione per 2 (MUL KB2). Il risultato dello scorrimento viene ritrasferito
nuovamente in MB10.0. La maschera ora vale 2, cioè (00000010)2, dove solo il bit 1 è vero e, essendo
diversa da 0, l’operazione di diramazione su 0 (BNZ 4) viene eseguita e l’elaborazione continua
dall’istruzione 004 per l'esame dell’ingresso successivo.
Per ognuno degli ingressi trovati chiusi il merker byte MB20.0 viene incrementato di 1.
Dopo 8 scorrimenti, il bit allo stato alto, che si è man mano spostato nella maschera, esce da sinistra e
MB10.0 diventa 0. In questa condizione, l’ultima operazione di diramazione viene ignorata ed il ciclo termina.
MB20.0 in questo momento ha un valore che rappresenta il numero degli ingressi trovati chiusi.
LADDER AWL
000: L KB0
001: = MB20.0
002: L KB1
003: = MB10.0
004: L MB10.0
005: A IB0.0
006: BZ 10
007: L MB20.0
008: ADD KB1
009: = MB20.0
010: L MB10.0
011: MUL KB2
012: = MB10.0
013: BNZ 4
Premessa
Le note fornite in questa sezione si riferiscono unicamente al PLC simulato, cioè a PC-Sim per S5 100U.
Molto spesso comunque, e proprio perché in tutta la simulazione in AW-SYS si è cercato di avvicinarsi quanto
più possibile alla realtà, esse trovano riscontro anche nel PLC reale. Comunque, si consiglia vivamente
l’utilizzo dei manuali originali Siemens del PLC reale e dell’apparecchiatura di programmazione per tutte le
informazioni necessarie alla programmazione del dispositivo reale.
Alcuni degli argomenti trattati, per loro natura, sono comuni ai diversi PLC simulati. Si è preferito però
ripetere le stesse descrizioni per tutti al fine di far diventare ognuno di questi capitoli un’entità autonoma: un
comodo ed indispensabile manuale da tenere a portata di mano durante la programmazione del PLC
simulato.
Indirizzamento
Sotto il nome di indirizzamento va la serie di regole sintattiche che si deve osservare nel far riferimento a
variabili o costanti durante la scrittura di un programma utente per PLC. L’indirizzamento nella simulazione
del PLC S5 100U si effettua in accordo alle regole esposte di seguito e riassunte nella Tabella 19.
Ingressi–Uscite digitali
La sigla per l’indirizzamento degli ingressi e delle uscite digitali in questo modello di PLC è composta da:
• lettera che individua gli ingressi (E) o le uscite (A)
• numero di modulo
• punto di separazione
• numero di canale
I moduli vengono numerati in successione: il modulo più vicino alla CPU assume il numero 0, quello
successivo il numero 1 e così via.
I moduli digitali adottati nella simulazione sono quattro e assumono numeri identificativi compresi tra 0 e 3.
Sia quelli di ingresso che quelli di uscita sono del tipo a 8 canali. I canali disponibili su ogni modulo assumono
un identificativo compreso tra 0 e 7.
Quindi, ad esempio:
• E1.4 individua il canale di ingresso 4 del modulo di periferia 1;
• A2.3 individua il canale di uscita 3 del modulo di periferia 2.
Il PLC simulato è composto, oltre che dalla CPU, da quattro moduli digitali di periferia: nell’ordine due di
ingresso e due di uscita. Quindi gli indirizzi per i canali di questi moduli sono:
• da E0.0 a E1.7 per gli ingressi digitali
• da A2.0 a A3.7 per le uscite digitali.
Vedremo in seguito che questa modalità di indirizzamento non fa riferimento diretto agli ingressi ed alle uscite
fisiche del PLC, ma alla loro immagine che il sistema operativo costruisce all’interno della memoria della
CPU. In realtà, le immagini della periferia sono state riproposte interamente nella CPU simulata; così
all’interno del vostro programma potrete indirizzare, senza generare alcun errore, tutta l’immagine degli
ingressi da E0.0 a E127.7 e tutta l’immagine delle uscite da A0.0 a A127.7. L’indirizzamento di variabili
nelle immagini di processo, non corrispondenti a moduli di I/O, porta semplicemente a test o impostazioni di
bit, byte o word di memoria senza condurre ad attivazione di uscite o valutazione di stato degli ingressi.
Ingressi e uscite (da intendersi sempre come immagine di processo degli ingressi e immagine di processo
delle uscite) sono indirizzabili anche a byte ed a word.
EB0 rappresenta il byte di ingresso del modulo 0; EB1 rappresenta il byte di ingresso del modulo1 e così via
fino a EB127. Con l’ovvia limitazione che solo i byte a cui corrispondono effettivamente moduli di ingresso
assumono significato pratico.
AB2 e AB3 rappresentano invece i byte di uscita per i moduli digitali presenti nel PLC simulato anche se,
ancora una volta, il campo ammesso per questo tipo di operando va da AB0 ad AB127.
EW0 rappresenta la word di ingresso 0, composta dai byte EB0 ed EB1. Il campo indirizzabile in questo PLC
arriva fino ad EW126.
AW2 rappresenta la parola di uscita 2, composta dai byte AB2 ed AB3. Il campo indirizzabile in questo PLC va
da AW0 ad AW126.
Ingressi–Uscite analogici
Il modulo 4 possiede quattro canali analogici di ingresso che vengono mappati nella immagine degli ingressi
in corrispondenza delle word EW96, EW98, EW100 ed EW102. La codifica del valore utilizza 12 dei 16 bit
disponibili. Come indicato in figura, il bit meno significativo della codifica (B0) occupa il bit 3 della word, B1
occupa il bit 4 e così via fino a B11 che occupa il bit 14. I bit 15, 2, 1 e 0 sono sempre a zero nella
simulazione.
Tabella 17: Codifica valori dei canali analogici di ingresso per S5 100U
Bit di EW 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Al valore minimo dell’ingresso (es. 0V) corrisponde una codifica B11-B0 pari a 0; al valore massimo
corrisponde una codifica di 2048. Quindi, concludendo, il valore di una delle word dell’immagine può variare
3
da 0 a 2048x8=16384. Dove la moltiplicazione per 8 deriva dallo scorrimento di 3 posti a sinistra (2 =8) che
prevede la codifica.
Il modulo 5 possiede quattro canali analogici di uscita che vengono mappati nella immagine delle uscite in
corrispondenza delle word AW104, AW106, AW108 ed AW110. La codifica del valore utilizza 11 dei 16 bit
disponibili. Come indicato nello schema seguente, il bit meno significativo della codifica (B0) occupa il bit 4
della word, B1 occupa il bit 5 e così via fino a B10 che occupa il bit 14. I bit 15, 3, 2, 1 e 0 sono ininfluenti al
fine dell’emissione di un certo valore di tensione.
Tabella 18: Codifica valori dei canali analogici di uscita per S5 100U
Bit di AW 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Codifica X B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 X X X X
Per ottenere il valore minimo in uscita (es. 0V) occorre una codifica B10-B0 pari a 0; il valore massimo si
ottiene invece con una codifica di 1024. Quindi, concludendo, il valore che è possibile scrivere in una delle
word dell’immagine può variare da 0 a 1024x16=16384. Dove la moltiplicazione per 16 deriva dallo
4
scorrimento di 4 posti a sinistra (2 =16) che prevede la codifica.
Merker
I merker o flag costituiscono una parte della memoria RAM della CPU. Essa è direttamente accessibile da
programma utente e da questo viene utilizzata per memorizzazioni intermedie di risultati di calcoli o
temporanee di dati. In questo PLC essa è composta da 128 byte (merker byte). Ogni byte di questa memoria
è indirizzabile attraverso la sigla MBx, dove x è il numero progressivo di byte. Ad esempio, MB100 identifica il
byte 100 della memoria merker. Gli indirizzi possibili vanno quindi da MB0 a MB127.
Ogni bit della stessa memoria è indirizzabile singolarmente con la sigla Mx.y, dove x è ancora il numero di
byte e y è il numero del bit all’interno del byte. Quindi sono possibili gli indirizzi da M0.0 a M127.7.
Infine, la memoria merker può essere indirizzata a word utilizzando la sigla MWx dove x è il numero di word.
La MW0 (merker word numero 0) è composta dai merker byte MB0 e MB1, la MW1 da MB1 e MB2, e così via. Il
campo operandi possibile va da MW0 a MW126. Infatti la MW126, che raggruppa MB126 e MB127, è l’ultima
merker word disponibile, essendo MB127 l’ultimo byte indirizzabile.
I merker byte da MB0 a MB63 sono ritentivi, cioè conservano il loro valore dopo una mancanza di
alimentazione e così pure lo sono, ovviamente, i merker bit che contengono e le merker word che
compongono.
I merker byte da MB64 a MB127 sono non ritentivi, perdono quindi il loro valore dopo una mancanza di
alimentazione alla CPU, cioè vengono azzerati. Lo stesso dicasi per i merker bit contenuti in essi e le merker
word da essi composte.
Temporizzatori
All’interno del programma utente è possibile l’utilizzo di 64 temporizzatori con indirizzi da T0 a T63. Tutti i
temporizzatori sono non ritentivi.
Contatori
Sono disponibili al programmatore 64 contatori, indirizzabili con le sigle da Z0 a Z63. I primi 8 (da Z0 a Z7)
sono ritentivi i restanti (da Z8 a Z63) sono non ritentivi.
Costanti
E’ data la possibilità di utilizzare nel programma delle costanti, per assegnare valori a merker word, per
caricare temporizzatori e contatori, per operazioni di confronto, ecc. Le costanti definite per questo PLC sono
di vario genere per adattarsi alle diverse esigenze che si riscontrano in fase di programmazione. Eccone di
seguito un elenco.
Costanti di byte
Sono costanti costituite da un solo byte; il loro valore va da 0 a 255 e la sigla corrispondente da KB0 a
KB255. Per esempio, KB100 è una costante di byte dal valore di (100)10.
Costanti esadecimali
Sono costanti espresse su 16 bit in formato esadecimale da KH 0000 a KH FFFF. Per esempio, KH 0120
identifica una costante che vale (120)16 o , se preferite, (288)10.
Costanti binarie
Sono costanti espresse su 16 bit con descrizione diretta binaria; la rappresentazione va da
KM 00000000 00000000 a KM 11111111 11111111. Per esempio, KM 00100000 11100111 identifica
una costante del valore (0010000011100111)2 o, in base esadecimale, (20E7)16.
Costanti di tempo
Esprimono costanti per il caricamento dei temporizzatori. Esse sono composte dalla sigla KT seguita da un
numero che identifica gli intervalli di tempo, da un punto di separazione e da un altro numero che identifica la
base tempi. I valori ammissibili hanno per limiti KT 0.0 e KT 999.3. Per maggiori dettagli vedere più avanti
Operazioni di temporizzazione.
Costanti di conteggio
Esprimono costanti a 16 bit formattate in BCD per l’impostazione dei contatori. Valori da KZ 0 a KZ 999.
Vedere più avanti Operazioni di conteggio.
Sistema operativo
Il cuore del funzionamento del PLC è il suo Sistema Operativo: un programma che gestisce il funzionamento
di base dell’apparecchiatura, registrato nella ROM dalla casa costruttrice.
Una disamina puntale delle funzioni del Sistema Operativo non rientra nei compiti di questo manuale, ed
anche nei manuali dei PLC reali è difficile trovare molti chiarimenti a riguardo; tra l’altro, il fatto che questo
programma venga eseguito è completamente trasparente al programmatore che, per certi versi, può
addirittura ignorarne l’esistenza.
Elenchiamo comunque, per completezza, alcune delle funzioni da esso svolte, quelle che riteniamo più
importanti ai fini della trattazione seguente:
Immagini di processo
Una parte della RAM della CPU è destinata al compito di fungere da memoria intermedia per l’accesso alla
periferia. Questa memoria prende il nome di immagine di processo e si divide in due parti: immagine di
processo degli ingressi ed immagine di processo delle uscite (nel seguito denominate solo immagine degli
ingressi ed immagine delle uscite).
Prima dell’elaborazione del programma utente, tutti gli ingressi del PLC vengono letti ed il loro stato copiato
nell’immagine degli ingressi. Al termine dell’elaborazione del programma utente, la memoria immagine delle
uscite è ricopiata nelle uscite del PLC.
Durante l’elaborazione del programma, ogni acceso agli ingressi o alle uscite non viene riferito all’effettivo
canale fisico ma ad un bit, corrispondente a quel canale, nella memoria immagine di processo. Quando si
richiede la lettura di un ingresso, quello che si legge è in realtà un bit di memoria che, in precedenza, è stato
copiato dall’ingresso effettivo. Quando si scrive su un’uscita, in realtà non si scrive direttamente sul canale di
uscita, ma viene scritto un bit di memoria che solo successivamente verrà ricopiato sul canale fisico di uscita.
Vedremo come si possa anche scrivere un ingresso e leggere un’uscita, ma questo non cambia i termini
della questione.
Il microprocessore all’interno del PLC dovrà pertanto dividere il suo tempo tra diversi compiti: eseguire il
Sistema operativo, aggiornare l’immagine degli ingressi, eseguire il programma applicativo e trasferire
l’immagine delle uscite. Il diagramma a torta della Figura 16 illustra queste attività. Il senso di percorrenza del
diagramma è quello illustrato dalla freccia. Le rispettive percentuali di tempo sono del tutto casuali ed, in
particolare, quella dedicata all’esecuzione del programma utente è variabile con le dimensioni dello stesso
cioè, in generale, quanto più lungo è il programma tanto più tempo occorrerà alla CPU per eseguirlo
(escludendo da questa considerazione i programmi che contengono operazioni di salto).
Il sistema operativo, subito prima di effettuare il richiamo del programma utente, avvia un monostabile che ha
in genere una durata che va da qualche decina fino a pochissime centinaia di millisecondi. Supponiamo che il
programma utente richieda per la sua esecuzione un tempo inferiore a quello del monostabile. In questa
situazione, prima di ogni suo successivo richiamo il monostabile verrebbe avviato nuovamente e, come
risultato, l’uscita di quest’ultimo rimarrebbe continuamente alta.
Se, invece, il programma utente richiedesse per la sua esecuzione più tempo della durata del monostabile,
allora l’uscita di questo si porterebbe allo stato basso, provocando l’immediato passaggio in Stop del PLC.
Un programma realizzato male potrebbe portare la CPU ad eseguire indefinitamente, o per un tempo
eccessivo ai fini della rapidità del controllo dell’impianto, un ciclo chiuso di istruzioni senza tornare
all’elaborazione del sistema operativo. Questa condizione potrebbe portare danni all’impianto e grave
pericolo per il personale che vi opera. Il controllo del tempo di ciclo, che nella letteratura tecnica specializzata
trovate anche col nome di watch-dog, evita proprio questo problema.
Anche PC-Sim controlla che il vostro programma non generi un ciclo chiuso ma, in questo caso, i molteplici e
mutabili compiti di un PC, impongono tempi più lunghi per la rilevazione del problema, dell’ordine di qualche
secondo.
Programmazione strutturata
Il programma per questo PLC può essere redatto dividendone il contenuto in più parti. Ognuna di queste
prende il nome di blocco. Esistono blocchi organizzativi (OB), blocchi di programma (PB), blocchi funzionali
(FB) e blocchi dati (DB). I diversi blocchi possono essere richiamati l’uno dall’altro utilizzando le operazioni di
chiamata o di apertura che saranno trattate nel paragrafo dedicato alla descrizione delle operazioni. Un
programma scritto secondo questo criterio prende il nome di programma strutturato.
L’operazione di divisione del programma in blocchi, cioè la sua strutturazione, non è indispensabile: il
programma può essere tranquillamente redatto in un unico blocco e funzionare perfettamente. Questo è
quanto faremo all’inizio della nostra pratica con il PLC. Nel capitolo seguente sono riportati una serie di
programmi la maggioranza dei quali, i più semplici, sono scritti in un unico blocco. Ma, quando i programmi
diventano lunghi, la divisione può assumere diversi vantaggi:
• Accorpamento di parti identiche di codice in un blocco e richiamo di questo da dove necessario. Del tutto
simile alla scrittura di sottoprogrammi in linguaggi di programmazione evoluti per PC.
• Trasportabilità di blocchi con funzioni specifiche da un progetto all’altro.
• Aumento della leggibilità del programma e, quindi, della semplicità di manutenzione successiva.
In questa sezione verranno descritti i diversi tipi di blocchi, le loro peculiarità e le loro funzioni. La Tabella 20
riassume le caratteristiche principali dei diversi tipi di blocco.
Tabella 20: Riepilogo tipi di blocchi per S5 100U
OB PB FB DB
Numero 0…63 0…63 0…63 2…63
Lunghezza max 256 word
Set operazioni Fondamentali Fondamentali Fondamentali ed
integrative
Programmazione Ladder e AWL Ladder e AWL Solo AWL
I blocchi organizzativi rappresentano l’interfaccia tra il sistema operativo ed il programma utente. Sono cioè
blocchi che l’utente può programmare ma che normalmente vengono chiamati da sistema operativo
ciclicamente o a seguito del verificarsi di specifiche condizioni. Essi possono essere programmati in ladder o
in AWL con il set di istruzioni fondamentali. Di seguito elenchiamo i blocchi organizzativi che il sistema
operativo del PLC simulato chiama e le condizioni per cui tale chiamata si verifica.
Questo blocco può essere utilizzato per le impostazioni iniziali che eventuali merker debbano assumere al
riavviamento della CPU.
Sono blocchi in cui è possibile scrivere il programma utilizzando il linguaggio ladder o quello AWL con il set di
istruzioni fondamentale. Essi rappresentano parti compiute di programma. Affinché siano eseguiti essi
dovranno essere richiamati da altri blocchi con operazioni SPA o SPB.
Sono blocchi in cui è possibile scrivere il programma utilizzando solo il linguaggio AWL. Rappresentano parti
compiute di programma ed in essi è programmabile l’intero set di operazioni (fondamentali e integrative).
Affinché siano eseguiti essi dovranno essere richiamati da altri blocchi con operazioni SPA o SPB.
Questi blocchi sono inoltre parametrizzabili, ossia ad essi possono essere passati dei parametri dal blocco
chiamante. Per le istruzioni che ne fanno uso, i parametri verranno sostituiti nel blocco chiamato agli
operandi formali. Il massimo numero di parametri per blocco è di 40. Ogni parametro deve essere dichiarato
all’inizio del blocco nell’apposita griglia dell’editor AWL specificandone la sigla, la specie ed eventualmente il
tipo. I parametri nelle operazioni SPA FB o SPB FB devono corrispondere per tipo e numero a quelli attesi.
Vedere in merito L'editor AWL per il PLC S5 100U nel Capitolo 3.
La Tabella 21 riassume i possibili parametri e gli operandi attuali corrispondenti.
In questi blocchi possono essere immagazzinati dati che serviranno nell’elaborazione del programma utente.
I blocchi dati sono strutturati in word, a partire dalla numero 0 fino alla numero 255, al massimo. L’accesso ai
dati potrà essere effettuato con operazioni di lettura e scrittura a word (DW) o a byte (sinistro DL, destro DR).
In fase di editing del blocco sono memorizzabili tutti i tipi di costanti a 16 bit.
E' necessaria l'apertura del blocco mediante l'istruzione A DBn, dove n è il numero del blocco, prima di
accedere ai dati in esso contenuti. Operazioni di accesso a dati con blocco non aperto, o accesso a dati oltre
la lunghezza del blocco, provocano errore di esecuzione e portano la CPU in Stop.
Tabella 21: Specie e tipo dei parametri per blocco funzionale di S5 100U
Specie Tipo Operandi attuali
E, A BI (operandi a bit) E
A
M
BY (operandi a byte) EB
AB
MB
DR
DL
W (operandi a word) EW
AW
MW
DW
D KB
KF
KH
KM
KT
KY
KZ
B Non è ammessa l’indicazione del tipo OB
PB
FB (non parametrizzati)
DB
T Non è ammessa l’indicazione del tipo T
Z Non è ammessa l’indicazione del tipo Z
Programmazione in AWL
La modalità di programmazione AWL o Lista istruzioni costituisce una delle due metodologie di
implementazione di programmi utente in questo PLC. Essa consiste nella scrittura consecutiva di istruzioni;
ognuna di esse costituisce la più piccola unità di programma e rappresenta un compito elementare per la
CPU nella elaborazione del programma utente.
Istruzioni
Ogni istruzione AWL è composta da una operazione e, dove necessario, da un operando. Di questi ultimi
abbiamo già parlato nel paragrafo dedicato all’indirizzamento. Nei paragrafi seguenti forniamo, invece, una
descrizione dettagliata delle operazioni, raggruppate per tipologia. Vengono inoltre fornite, per comodità di
consultazione da parte del programmatore, due tabelle riepilogative che raggruppano le operazioni in
funzione del set di appartenenza. Le operazioni del set fondamentale possono essere programmate in
qualunque blocco, escluso ovviamente i DB che, per loro stessa natura, non supportano istruzioni ma dati. Le
operazioni integrative possono essere programmate, invece, solo nei blocchi funzionali.
Registri
Per l’esecuzione del programma utente la CPU utilizza diversi registri allo scopo di memorizzare risultati
intermedi di calcolo e/o valutare se eseguire o meno certe operazioni. Forniamo di seguito l’elenco e la
descrizione di questi registri.
RLC
E’ un registro ad 1 bit e viene utilizzato come memoria di lavoro nell’elaborazione del programma utente. In
esso vengono depositati i risultati delle operazioni logiche o delle operazioni di test sullo stato e da esso
vengono prelevati i valori per le operazioni di memorizzazione.
Accumulatori
Sono due registri a 16 bit denotati con le sigle ACCU1 ed ACCU2. In ACCU1 vengono depositati i valori letti
con operazioni di caricamento, ottenuti da operazioni logiche su word, aritmetiche e di conversione e da esso
viene prelevato il valore da ricopiare nelle operazioni di trasferimento e di impostazione di temporizzatori e
contatori. ACCU2 serve come registro ausiliario ad ACCU1 nelle operazioni logiche su word, di confronto ed
aritmetiche.
Indicatori
• ANZ 0
• ANZ 1
• OV
Essi vengono influenzati da operazioni di confronto, calcolo, scorrimento e conversione e vengono testati
dalle operazioni di salto.
Vedere la Tabella 28 per informazioni sull’influenza delle operazioni sugli indicatori ANZ 0 ed ANZ 1.
Il bit di overflow (OV) va alto se in un’operazione di calcolo il risultato è maggiore di +32767 o minore di -
32768.
Operazioni logiche
Se l’istruzione non è la prima di una sequenza, cioè se l’istruzione precedente non è RLC limitante, esegue la
AND tra il contenuto di RLC e lo stato dell’operando specificato e pone il risultato in RLC.
Se l’istruzione è la prima di una sequenza, cioè se l’istruzione precedente è RLC limitante, lo stato
dell’operando viene copiato in RLC.
Consultate la Tabella 26 e la Tabella 27 per conoscere quali operazioni sono RLC limitanti.
Operandi ammessi: E, A, M, T, Z.
Se l’istruzione non è la prima di una sequenza, cioè se l’istruzione precedente non è RLC limitante, esegue la
OR tra il contenuto di RLC e lo stato dell’operando specificato e pone il risultato in RLC.
Se l’istruzione è la prima di una sequenza, cioè se l’istruzione precedente è RLC limitante, lo stato
dell’operando viene copiato in RLC.
Consultate la Tabella 26 e la Tabella 27 per conoscere quali operazioni sono RLC limitanti.
Operandi ammessi: E, A, M, T, Z.
Se l’istruzione non è la prima di una sequenza, cioè se l’istruzione precedente non è RLC limitante, esegue la
AND tra il contenuto di RLC e il complemento dello stato dell’operando specificato e pone il risultato in RLC.
Se l’istruzione è la prima di una sequenza, cioè se l’istruzione precedente è RLC limitante, il complemento
dello stato dell’operando viene copiato in RLC.
Consultate la Tabella 26 e la Tabella 27 per conoscere quali operazioni sono RLC limitanti.
Operandi ammessi: E, A, M, T, Z.
Se l’istruzione non è la prima di una sequenza, cioè se l’istruzione precedente non è RLC limitante, esegue la
OR tra il contenuto di RLC e il complemento dello stato dell’operando specificato e pone il risultato in RLC.
Se l’istruzione è la prima di una sequenza, cioè se l’istruzione precedente è RLC limitante, il complemento
dello stato dell’operando viene copiato in RLC.
Consultate la Tabella 26 e la Tabella 27 per conoscere quali operazioni sono RLC limitanti.
Operandi ammessi: E, A, M, T, Z.
O (Or di AND)
Il risultato logico combinatorio RLC attuale viene accantonato per essere messo in OR con l’RLC corrente
alla prima operazione RLC limitante. Il risultato viene depositato in RLC.
Operandi ammessi: nessuno
L’RLC corrente viene accantonato per essere ripreso alla chiusura della parentesi e messo in AND con l’RLC
risultante dal calcolo dell’espressione entro parentesi.
Operandi ammessi: nessuno
L’RLC corrente viene accantonato per essere ripreso alla chiusura della parentesi e messo in OR con l’RLC
risultante dal calcolo dell’espressione entro parentesi.
Operandi ammessi: nessuno
) (Parentesi di chiusura)
Indica la fine di un’espressione entro parentesi. L’RLC accantonato con un’operazione di apertura parentesi
viene recuperato e messo in AND o in OR con l’RLC attuale, a seconda che l’operazione che ha dato inizio
all’espressione entro parentesi sia una U( o una O(. Il risultato viene depositato in RLC.
Operandi ammessi: nessuno
Operazioni di memorizzazione
S (Set)
Se RLC=1, l’operando viene impostato ad 1. Se RLC=0, l’operando non viene modificato. L’operazione limita
l’RLC, cioè costituisce un’operazione di chiusura di sequenza e la successiva operazione logica U, O, UN o
ON verrà interpretata come un test sullo stato dell’operando.
Operandi ammessi: E, A, M
R (Reset)
Se RLC=1, l’operando viene impostato ad 0. Se RLC=0 l’operando non viene modificato. L’operazione limita
l’RLC, cioè costituisce un’operazione di chiusura di sequenza e la successiva operazione logica U, O, UN o
ON verrà interpretata come un test sullo stato dell’operando.
Operandi ammessi: E, A, M
= (Assegnazione)
Il valore di RLC viene copiato nell’operando. L’operazione limita l’RLC, cioè costituisce un’operazione di
chiusura di sequenza e la successiva operazione logica U, O, UN o ON verrà interpretata come un test sullo
stato dell’operando.
Operandi ammessi: E, A, M
L (Caricamento)
Con le operazioni di caricamento è possibile ricopiare nel registro ACCU1 il valore di operandi a byte ed a
word. Prima di ogni caricamento, il valore di ACCU1 viene trasferito in ACCU2.
Per operazioni di caricamento di byte, il valore dell’operando viene ricopiato nel byte meno significativo di
ACCU1, mentre il byte più significativo viene azzerato.
Operandi ammessi: EB, EW, AB, AW, MB, MW, DR, DL, DW, T, Z, KM, KH, KF, KY, KB, KT, KZ
La Figura 36 illustra le modifiche che avvengono negli accumulatori a seguito di due operazioni consecutive
di caricamento. Il primo rigo mostra uno stato precedente alla prima operazione di caricamento in cui i valori
degli accumulatori sono stati assunti a zero. Il secondo ed il terzo rigo mostrano rispettivamente il contenuto
di ACCU1 ed ACCU2 dopo l’operazione di caricamento sullo stesso rigo. Al termine dell’esecuzione delle due
istruzioni, il primo valore caricato si trova in ACCU2 ed il secondo in ACCU1.
LC (Caricamento BCD)
Con questa operazione viene caricato nel registro ACCU1 il valore dell’operando con codifica BCD. Prima del
caricamento il valore di ACCU1 viene trasferito in ACCU2.
Operandi ammessi: T, Z
T (Trasferimento)
Con le operazioni di trasferimento è possibile ricopiare in operandi a byte ed a word il valore del registro
ACCU1. Nel caso di operando a byte, viene ricopiato solo il byte meno significativo di ACCU1.
Operandi ammessi: EB, EW, AB, AW, MB, MW, DR, DL, DW
Operazioni di temporizzazione
Premettiamo alla descrizione delle operazioni di temporizzazione alcuni chiarimenti riguardo alla codifica dei
tempi.
Quando si avvia un temporizzatore con una delle operazioni illustrate più avanti in questa sezione, il valore in
ACCU1 verrà utilizzato per l’impostazione del tempo come mostrato nel seguente schema.
I bit 13 e 12 determinano la base tempi; quelli da 0 ad 11, in codifica BCD, determinano il numero di intervalli
in detta base. I bit 14 e 15 non sono significativi. La base viene determinata nel modo specificato nella tabella
seguente:
Tabella 23: Codifica dei valori di base tempo per S5 100U
B1 B0 Valore Base
0 0 0 0.01 s
0 1 1 0.1
1 0 2 1s
1 1 3 10s
In realtà le cose sono più semplici di quanto possano far pensare queste premesse, essendo possibile
caricare un valore di tempo codificato direttamente con l'operazione di caricamento di costante di tempo
(L KT).
Una costante di tempo è costituita come segue:
• Sigla KT
• Numero che esprime gli intervalli di tempo (da 0 a 999)
• Carattere punto (.)
SI (Impulso)
La temporizzazione viene attivata sul fronte di salita di RLC con il tempo specificato e codificato in ACCU1 e
continua a scorrere fintanto che RLC=1. Se RLC diventa 0, il tempo viene impostato su 0.
Lo stato del temporizzatore è alto per tutto lo scorrere del tempo.
Operandi ammessi: T
SV (Impulso prolungato)
La temporizzazione viene attivata sul fronte di salita di RLC con il tempo specificato e codificato in ACCU1.
Lo stato di RLC non influenza ulteriormente la temporizzazione.
Lo stato del temporizzatore è alto per tutto lo scorrere del tempo.
Operandi ammessi: T
SE (Ritardo all’eccitazione)
La temporizzazione viene attivata in corrispondenza del fronte di salita di RLC con il tempo specificato e
codificato in ACCU1. Se RLC diventa 0, il tempo viene impostato su 0.
Lo stato del temporizzatore è alto quando il tempo è trascorso e RLC si trova ancora allo stato alto.
Operandi ammessi: T
La temporizzazione viene attivata in corrispondenza del fronte di salita di RLC con il tempo specificato e
codificato in ACCU1. Se RLC diventa 0, il tempo non viene influenzato.
Lo stato del temporizzatore è alto quando il tempo è trascorso. Esso ritorna allo stato basso solo dopo un
reset del temporizzatore con operazione R.
Operandi ammessi: T
Figura 40: Temporizzatore con ritardo all'eccitazione con memoria per S5 100U
La temporizzazione viene attivata in corrispondenza del fronte di discesa di RLC con il tempo specificato e
codificato in ACCU1. Se RLC diventa 1, il tempo viene reimpostato al valore iniziale.
Lo stato del temporizzatore è alto quando RLC = 1 oppure quando il tempo sta scorrendo.
Operandi ammessi: T
R (Reset di un temporizzatore)
Se RLC=1, il tempo viene reimpostato al valore iniziale. Se RLC=0, l’operazione viene ignorata.
Lo stato del temporizzatore è basso fin quando il tempo è ripristinato (RLC=0).
Operandi ammessi: T
Operazioni di conteggio
Premettiamo alla descrizione delle operazioni alcuni chiarimenti riguardo alla codifica dei valori di
impostazione dei contatori.
Quando si imposta un contatore, occorre specificarne il valore preset in ACCU1 come mostrato nel seguente
schema.
I bit da 0 ad 11, in codifica BCD, rappresentano il valore iniziale del conteggio. I bit da 12 a 15 non sono
significativi.
S (Set di un contatore)
Il conteggio viene impostato al valore in ACCU1 in corrispondenza del fronte di salita di RLC.
Lo stato del contatore va alto se il valore di conteggio impostato è diverso da 0.
Operandi ammessi: Z
R (Reset di un contatore)
Fintanto che RLC = 1, il valore di conteggio viene impostato a 0 e lo stato del contatore va basso.
Operandi ammessi: Z
ZV (Conteggio in avanti)
ZR (Conteggio indietro)
Operazioni di confronto
Se ACCU2 è maggiore o uguale di ACCU1, l’RLC viene impostato ad 1, altrimenti viene impostato a 0.
Operandi ammessi: nessuno
Se ACCU2 è minore o uguale di ACCU1, l’RLC viene impostato ad 1, altrimenti viene impostato a 0.
Operandi ammessi: nessuno
Operazioni aritmetiche
+F (Addizione)
I contenuti di ACCU1 ed ACCU2 vengono sommati come numeri a 16 bit con segno. Il risultato viene
memorizzato in ACCU1.
Operandi ammessi: nessuno
-F (Sottrazione)
Il contenuto di ACCU1 viene sottratto da ACCU2. I valori vengono interpretati come numeri a 16 bit con
segno. Il risultato viene memorizzato in ACCU1.
Operandi ammessi: nessuno
La costante specificata come operando, a byte (BF) o a word (KF), viene sommata ad ACCU1. Il risultato
viene memorizzato in ACCU1.
Operandi ammessi: BF, KF
Indipendentemente da RLC, l’elaborazione del programma viene fatta proseguire dalla prima istruzione del
blocco specificato come operando. A seguito dell’elaborazione di un’istruzione BE, BEB o BEA in
quest’ultimo, l’elaborazione torna al blocco chiamante in corrispondenza dell’istruzione successiva.
In caso di chiamata di blocco funzionale parametrizzato occorre specificare, tra parentesi e separati dal
carattere ‘;’ (punto e virgola), gli operandi da passare al blocco chiamato.
Operandi ammessi: OB, PB, FB
Se RLC=1, l’elaborazione del programma viene fatta proseguire dalla prima istruzione del blocco specificato
come operando. A seguito dell’elaborazione di un’istruzione BE, BEB o BEA in quest’ultimo, l’elaborazione
torna al blocco chiamante in corrispondenza dell’istruzione successiva.
Se RLC=0, l’operazione viene ignorata, RLC viene impostato ad 1 e l’elaborazione continua con l’istruzione
successiva.
In caso di chiamata di blocco funzionale parametrizzato occorre specificare, tra parentesi e separati dal
carattere ‘;’ (punto e virgola), gli operandi da passare al blocco chiamato.
Operandi ammessi: OB, PB, FB
Indipendentemente da RLC, viene impostato il blocco dati attuale, cioè il blocco a cui faranno riferimento tutte
le operazioni di lettura e scrittura dati sia a byte che a word. Il blocco aperto rimane attivo fino all’apertura di
un nuovo blocco. In caso di successiva chiamata a blocco con operazioni SPA o SPB il blocco dati
eventualmente aperto rimane attivo anche nel blocco chiamato.
Ogni accesso a dati, senza che sia stato preventivamente aperto un blocco di questo tipo, genera errore.
Operandi ammessi: DB
BE (Fine blocco)
Indipendentemente da RLC, viene terminata l’elaborazione del blocco attuale con conseguente ritorno al
blocco chiamante. Il valore di RLC, non modificato, viene riportato nel blocco chiamante. Nel caso dell’OB1,
dopo l'elaborazione di questa istruzione, il controllo ritorna a Sistema Operativo. L'operazione BEA, a
differenza della precedente, può essere utilizzata anche all’interno di un blocco.
Operandi ammessi: nessuno
Se RLC=1, viene terminata l’elaborazione del blocco attuale con conseguente ritorno al blocco chiamante. Il
valore di RLC (1 in questo caso), non modificato, viene riportato nel blocco chiamante. Nel caso dell’OB1,
dopo l'elaborazione di questa istruzione, il controllo ritorna a Sistema Operativo.
Se RLC=0, l’operazione non viene eseguita, RLC viene impostato ad 1 e l’elaborazione continua con
l’istruzione successiva.
Operandi ammessi: nessuno
UW (And su word)
Esegue la combinazione logica AND bit a bit di ACCU1 e ACCU2. Il risultato viene depositato in ACCU1.
Operandi ammessi: nessuno
OW (Or su word)
Esegue la combinazione logica OR bit a bit di ACCU1 e ACCU2. Il risultato viene depositato in ACCU1.
Operandi ammessi: nessuno
Esegue la combinazione logica XOR bit a bit di ACCU1 e ACCU2. Il risultato viene depositato in ACCU1.
Operandi ammessi: nessuno
Operazioni di scorrimento
Scorrimento dei bit di ACCU1 a sinistra del numero di posizioni espresse dal parametro. I bit fuorusciti da
sinistra vengono persi, mentre da destra entrano zeri. In caso di operando uguale a 0, nessuno scorrimento
viene compiuto e l’istruzione viene sostanzialmente ignorata.
Operandi ammessi: numero da 0 a 15
Scorrimento dei bit di ACCU1 a destra del numero di posizioni espresse dal parametro. I bit fuorusciti da
destra vengono persi, mentre da sinistra entrano zeri. In caso di operando uguale a 0, nessuno scorrimento
viene compiuto e l’istruzione viene sostanzialmente ignorata.
Operandi ammessi: numero da 0 a 15
Operazioni di conversione
KEW (Complemento ad 1)
ACCU1 viene trasformato nel suo complemento ad 1, cioè ogni bit viene invertito.
Operandi ammessi: nessuno
KZW (Complemento ad 2)
ACCU1 viene trasformato nel suo complemento ad 2, cioè prima ogni bit viene invertito e successivamente
ad esso viene sommato +1.
Operandi ammessi: nessuno
Operazioni di incremento/decremento
D (Decremento)
Il contenuto del byte meno significativo di ACCU1 viene diminuito del valore dell’operando. Il byte più
significativo non subisce modifiche, viene trascurato anche l’eventuale prestito.
Operandi ammessi: numero da 0 a 255
I (Incremento)
Il contenuto del byte meno significativo di ACCU1 viene aumentato del valore dell’operando. Il byte più
significativo non subisce modifiche, viene trascurato anche l’eventuale riporto.
Operandi ammessi: numero da 0 a 255
Operazioni di elaborazione
Con questa operazione si possono compiere indicizzazioni di molte delle altre operazioni. Il contenuto
dell’operando dell’istruzione viene utilizzato per ricavare l’operando dell’istruzione successiva. Le operazioni
indicizzabili sono quelle di caricamento, trasferimento, richiamo blocchi, logiche, di memorizzazione, di
temporizzazione e di scorrimento.
In caso di indicizzazione di operazioni binarie, l’indirizzo di bit dovrà essere presente nel byte più significativo
e l’indirizzo di byte in quello meno significativo.
Operandi ammessi: MW, DW
Per esempio, la coppia di istruzioni
B MW100
L MB0
carica in accumulatore, per effetto della seconda, il merker byte il cui numero è contenuto nell’operando della
prima. Se il contenuto di MW100 fosse (36)10, allora l’effetto delle due istruzioni combinate sarebbe L MB36,
cioè il caricamento in accumulatore del contenuto di MB36. Se, al ciclo di esecuzione successivo,
provvediamo ad incrementare di 1 il contenuto di MW100
L MW100
I 1
T MW100
Un altro esempio: ammettendo che sia già aperto un blocco dati, la coppia di istruzioni
B DW4
U E0.0
esegue una AND con RLC del bit d’ingresso specificato nella data word. Se DW4 contiene (0701)16 allora
l’ingresso indirizzato sarà il canale 7 del modulo 1. Cioè la coppia di istruzioni avrà lo stesso effetto di
U E1.7.
In realtà la combinazione tra il contenuto del primo operando e la parte numerica del secondo è di tipo OR bit
a bit, e solo nei casi in cui quest’ultimo è nullo, cioè uguale a 0 o 0.0, la combinazione OR da risultato proprio
uguale al contenuto dell’operando della prima istruzione. Se ciò non accade, l’indicizzazione continua a
funzionare, ma occorre molta cautela nel valutarne pienamente gli effetti.
B = (Elaborazione di blocco)
Richiama il blocco passato come parametro. Se il blocco è OB, PB o FB, l’elaborazione continua dalla prima
istruzione di questo. Se DB, il blocco dati viene aperto. Gli FB possono essere richiamati solo se in essi non
sono stati definiti parametri.
Operandi ammessi: formale (Specie parametro: B). Vedere Tabella 21.
Operazioni di salto
SPZ = (Salto su 0)
Il salto viene eseguito quando ANZ1=0 e ANZ0=0. RLC non viene modificato. Vedere Tabella 28.
Operandi ammessi: etichetta
Il salto viene eseguito quando ANZ1 è diverso da ANZ0. RLC non viene modificato. Vedere Tabella 28.
Operandi ammessi: etichetta
Il salto viene eseguito quando ANZ1=1 e ANZ0=0. RLC non viene modificato. Vedere Tabella 28.
Operandi ammessi: etichetta
Il salto viene eseguito quando ANZ0=1 e ANZ0=1. RLC non viene modificato. Vedere Tabella 28.
Operandi ammessi: etichetta
Il salto viene eseguito quando si verifica un overflow, bit OV=1. RLC non viene modificato.
Operandi ammessi: etichetta
Se l’istruzione non è la prima di una sequenza, cioè se l’istruzione precedente non è RLC limitante, esegue la
AND tra il contenuto di RLC e lo stato dell’operando formale specificato e pone il risultato in RLC.
Se l’istruzione è la prima di una sequenza, cioè se l’istruzione precedente è RLC limitante, lo stato
dell’operando formale viene copiato in RLC.
Consultate la Tabella 26 e la Tabella 27 per conoscere quali operazioni sono RLC limitanti.
Operandi ammessi: formale (Specie parametro: E, A, T, Z; Tipo parametro: BI dove ammesso). Vedere
Tabella 21.
Se l’istruzione non è la prima di una sequenza, cioè se l’istruzione precedente non è RLC limitante, esegue la
OR tra il contenuto di RLC e lo stato dell’operando formale specificato e pone il risultato in RLC.
Se l’istruzione è la prima di una sequenza, cioè se l’istruzione precedente è RLC limitante, lo stato
dell’operando formale viene copiato in RLC.
Consultate la Tabella 26 e la Tabella 27 per conoscere quali operazioni sono RLC limitanti.
Operandi ammessi: formale (Specie parametro: E, A, T, Z; Tipo parametro: BI dove ammesso). Vedere
Tabella 21.
Se l’istruzione non è la prima di una sequenza, cioè se l’istruzione precedente non è RLC limitante, esegue la
AND tra il contenuto di RLC e il complemento dello stato dell’operando formale specificato e pone il risultato
in RLC.
Se l’istruzione è la prima di una sequenza, cioè se l’istruzione precedente è RLC limitante, il complemento
dello stato dell’operando formale viene copiato in RLC.
Consultate la Tabella 26 e la Tabella 27 per conoscere quali operazioni sono RLC limitanti.
Operandi ammessi: formale (Specie parametro: E, A, T, Z; Tipo parametro: BI dove ammesso). Vedere
Tabella 21.
Se l’istruzione non è la prima di una sequenza, cioè se l’istruzione precedente non è RLC limitante, esegue la
OR tra il contenuto di RLC e il complemento dello stato dell’operando formale specificato e pone il risultato in
RLC.
Se l’istruzione è la prima di una sequenza, cioè se l’istruzione precedente è RLC limitante, il complemento
dello stato dell’operando formale viene copiato in RLC.
Consultate la Tabella 26 e la Tabella 27 per conoscere quali operazioni sono RLC limitanti.
Operandi ammessi: formale (Specie parametro: E, A, T, Z; Tipo parametro: BI dove ammesso). Vedere
Tabella 21.
S = (Set)
Se RLC = 1, l’operando formale viene impostato ad 1. Se RLC=0, l’operando formale non viene modificato.
L’operazione limita RLC cioè costituisce un’operazione di chiusura di sequenza e la successiva operazione
logica verrà interpretata come un test sullo stato dell’operando.
Operandi ammessi: formale (Specie parametro: E, A; Tipo parametro: BI). Vedere Tabella 21.
RB = (Reset)
Se RLC = 1, l’operando formale viene impostato ad 0. Se RLC=0, l’operando formale non viene modificato.
L’operazione limita RLC cioè costituisce un’operazione di chiusura di sequenza e la successiva operazione
logica verrà interpretata come un test sullo stato dell’operando.
Operandi ammessi: formale (Specie parametro: E, A; Tipo parametro: BI). Vedere Tabella 21.
= = (Assegnazione)
Il valore di RLC viene copiato nell’operando formale. L’operazione limita RLC cioè costituisce un’operazione
di chiusura di sequenza e la successiva operazione logica verrà interpretata come un test sullo stato
dell’operando.
Operandi ammessi: formale (Specie parametro: E, A; Tipo parametro: BI) . Vedere Tabella 21.
L = (Caricamento)
Con le operazioni di caricamento è possibile ricopiare nel registro ACCU1 il valore di operandi formali a byte
ed a word. Prima di ogni caricamento, il valore di ACCU1 viene trasferito in ACCU2.
Per operazioni di caricamento di byte il valore dell’operando viene ricopiato nel byte meno significativo di
ACCU1, mentre il byte più significativo viene azzerato.
Operandi ammessi: formale (Specie parametro: E, A, T, Z; Tipo parametro: BY, W dove ammesso). Vedere
Tabella 21.
LC = (Caricamento BCD)
Con questa operazione viene caricato nel registro ACCU1 il valore dell’operando formale con codifica BCD.
Prima del caricamento il valore di ACCU1 viene trasferito in ACCU2.
Operandi ammessi: formale (Specie parametro: T, Z). Vedere Tabella 21.
LW = (Caricamento di costante)
Viene caricato nel registro ACCU1 il valore dell’operando formale costante. Prima del caricamento il valore di
ACCU1 viene trasferito in ACCU2.
Operandi ammessi: formale (Specie parametro: D; Tipo parametro: KF, KH, KM, KY, KT, KZ). Vedere
Tabella 21.
T = (Trasferimento)
Con le operazioni di trasferimento è possibile ricopiare in operandi formali a byte ed a word il valore del
registro ACCU1. In caso di operando a byte, viene ricopiato solo il byte meno significativo di ACCU1.
Operandi ammessi: formale (Specie parametro: E, A Tipo parametro: BY, W). Vedere Tabella 21.
SI = (Impulso)
Il temporizzatore specificato come operando formale viene avviato in corrispondenza del fronte di salita di
RLC con il tempo specificato in ACCU1. Il tempo continua a scorrere fintanto che RLC=1. Se RLC diventa 0 il
valore del tempo viene impostato su 0.
Lo stato del temporizzatore è alto per tutto lo scorrere del tempo.
Operandi ammessi: formale (Specie parametro: T). Vedere Tabella 21.
SE = (Ritardo all’eccitazione)
Il temporizzatore specificato come operando formale viene avviato in corrispondenza del fronte di salita di
RLC con il tempo specificato in ACCU1. Il tempo continua a scorrere fintanto che RLC=1. Se RLC diventa 0 il
tempo viene impostato su 0.
Lo stato del temporizzatore è alto quando il tempo è trascorso e RLC si trova ancora allo stato alto.
Operandi ammessi: formale (Specie parametro: T). Vedere Tabella 21.
Se l’operando formale è un temporizzatore, esso viene attivato in corrispondenza del fronte di salita di RLC
con il tempo specificato in ACCU1. Lo stato di RLC non influenza ulteriormente la temporizzazione. Lo stato
del temporizzatore è alto per tutto lo scorrere del tempo.
Se l’operando formale è un contatore, il conteggio viene impostato al valore in ACCU1 in corrispondenza del
fronte di salita di RLC. Lo stato del contatore va alto se il valore di conteggio impostato è diverso da 0.
Operandi ammessi: formale (Specie parametro: T, Z). Vedere Tabella 21.
Se l’operando formale è un temporizzatore, esso viene attivato in corrispondenza del fronte di salita di RLC
con il tempo specificato in ACCU1. Se RLC diventa 0, il tempo non viene influenzato. Lo stato del
temporizzatore è alto quando il tempo è trascorso. Esso ritorna allo stato basso solo dopo un reset del
temporizzatore con operazione R.
Se l’operando formale è un contatore, il valore di conteggio viene incrementato di 1 in corrispondenza del
fronte di salita di RLC. Lo stato del contatore va o rimane alto.
Operandi ammessi: formale (Specie parametro: T, Z). Vedere Tabella 21.
Se l’operando formale è un temporizzatore, esso viene attivato in corrispondenza del fronte di discesa di RLC
con il tempo specificato in ACCU1. Se RLC diventa 1, il tempo viene reimpostato al valore iniziale. Lo stato
del temporizzatore è alto quando RLC = 1 oppure quando il tempo sta scorrendo.
Se l’operando formale è un contatore, il valore di conteggio viene decrementato di 1 in corrispondenza del
fronte di salita di RLC. Lo stato del contatore va stato basso se il valore di conteggio diventa 0.
Operandi ammessi: formale (Specie parametro: T, Z). Vedere Tabella 21.
Operazioni speciali
L’elaborazione del programma viene continuata fino alla fine del ciclo di esecuzione corrente, l’immagine
delle uscite viene trasferita, quindi la CPU viene portata in stato di Stop.
Operandi ammessi: nessuno
Set di operazioni
Le operazioni AWL implementate nel PLC simulato, cioè quelle che il compilatore interno di PC-Sim
riconosce e compila correttamente, costituiscono, come abbiamo appena visto, un ampia parte del set di
operazioni del corrispondente PLC reale.
La Tabella 26 riporta sinteticamente l’elenco delle operazioni fondamentali implementate nel PLC simulato,
mentre la Tabella 27 riporta quello delle integrative. Ricordiamo che queste ultime sono disponibili per la
programmazione solo in blocchi funzionali (FB).
Le colonne relative al risultato logico combinatorio (RLC) hanno il significato espresso in Tabella 25.
Programmazione in Ladder
La scrittura di un programma per PLC in Ladder diagram o Schema a contatti avviene in maniera simile al
disegno di un circuito elettrico a relè. Tra due linee verticali, poste ai margini dello schema e che
rappresentano l’alimentazione del circuito, possono prendere posto gli elementi del circuito elettrico disposti
su linee orizzontali (che d’ora in avanti chiameremo rami) collegati tra loro da linee orizzontali e verticali.
Ogni ramo può contenere al massimo 6 elementi circuitali in precise posizioni. Nelle prime 5 posizioni si
possono disegnare soltanto contatti, nell’ultima solamente bobine.
Ogni ramo può quindi essere suddiviso in due zone: la zona condizionale, formata dalle prime 5 posizioni,
che contiene le condizioni che devono essere verificate per compiere una determinata azione; la zona
esecutiva, ultima posizione, che contiene le azioni da compiere quando le condizione sono verificate.
Questo è simile a quanto accade in un circuito elettrico: un carico elettrico rappresenta la parte esecutiva di
un ramo; i contatti in serie o in parallelo, di tipo normalmente chiusi o aperti, rappresentano la parte
condizionale.
Ogni contatto può essere parallelato da solo o a gruppi, disegnando contatti sul ramo successivo che
saranno collegati al ramo base, o al ramo parallelo precedente, attraverso linee verticali. Il massimo numero
di rami paralleli consentiti è 4. L’insieme di ramo base e di tutti i rami paralleli collegati ad essi verrà denotato
nel seguito come percorso di corrente. Ogni percorso di corrente viene numerato automaticamente e
progressivamente dall’editor.
Anche le bobine possono essere collegate in parallelo, ma esse devono avere l’ingresso in comune. Cioè, un
percorso di corrente può inviare un singolo segnale logico a tutte le bobine.
All’interno dello schema a contatti possono prendere posto gli elementi descritti nella Tabella 29.
Tabella 29: Elementi del ladder per S5 100U
Elemento Descrizione
Zona condizionale
Contatto normalmente aperto, test sullo stato 1 dell’operando.
Il contatto sullo schema si chiude quando l’operando corrispondente si trova allo
stato logico alto. Per esempio, se l’operando è un ingresso digitale del PLC, il
contatto è chiuso quando l’ingresso è chiuso e viceversa.
Contatto normalmente chiuso, test sullo stato 0 dell’operando.
Il contatto sullo schema si chiude quando l’operando corrispondente si trova allo
stato logico basso. Per esempio, se l’operando è un ingresso digitale del PLC, il
contatto è chiuso quando l’ingresso è aperto e viceversa.
Zona esecutiva
Bobina diretta
Se la bobina è attiva, cioè se esiste una catena di contatti chiusi verso la linea
sinistra di alimentazione, viene assegnato all’operando il valore logico alto. Se la
bobina non è attiva, all’operando viene assegnato il valore logico basso.
Elemento Descrizione
Temporizzatori e contatori
Temporizzatore SI (impulso)
Ingressi/uscite:
ingresso di avviamento del temporizzatore
TW ingresso per costante di tempo
R ingresso di reset
Q uscita del temporizzatore
La temporizzazione viene attivata sul fronte di chiusura verso l’alimentazione
dell’ingresso (vedere Figura 43) con il tempo specificato all’ingresso TW, se
l’ingresso viene riaperto il tempo viene azzerato. Lo stato del temporizzatore è alto
quando il tempo sta scorrendo e l’ingresso è a potenziale alto. Lo stato è
prelevabile direttamente dall’uscita Q o tramite un qualsiasi contatto con lo stesso
operando. Quando l’ingresso di reset viene collegato alla linea di alimentazione il
tempo viene azzerato e l’uscita si porta a potenziale basso.
Temporizzatore SV (impulso prolungato)
Ingressi/uscite:
ingresso di avviamento del temporizzatore
TW ingresso per costante di tempo
R ingresso di reset
Q uscita del temporizzatore
La temporizzazione viene avviata sul fronte di chiusura verso l’alimentazione
dell’ingresso (vedere Figura 44) con il tempo specificato all’ingresso TW. Lo
stato del temporizzatore è alto quando il tempo sta scorrendo. Lo stato è
prelevabile direttamente dall’uscita Q o tramite un qualsiasi contatto con lo stesso
operando. Quando l’ingresso di reset viene collegato alla linea di alimentazione il
tempo viene azzerato e l’uscita si porta a potenziale basso.
Temporizzatore SE (ritardo all’eccitazione)
Ingressi/uscite:
ingresso di avviamento del temporizzatore
TW ingresso per costante di tempo
R ingresso di reset
Q uscita del temporizzatore
La temporizzazione viene avviata sul fronte di chiusura verso l’alimentazione
dell’ingresso (vedere Figura 45) con il tempo specificato all’ingresso TW. Lo
stato del temporizzatore è alto quando il tempo è trascorso e quando l’ingresso è
a potenziale alto. Lo stato è prelevabile direttamente dall’uscita Q o tramite un
qualsiasi contatto con lo stesso operando. Quando l’ingresso di reset viene
collegato alla linea di alimentazione il tempo viene azzerato e l’uscita si porta a
potenziale basso.
Elemento Descrizione
Temporizzatore SS (ritardo all’eccitazione con memoria)
Ingressi/uscite:
ingresso di avviamento del temporizzatore
TW ingresso per costante di tempo
R ingresso di reset
Q uscita del temporizzatore
La temporizzazione viene avviata sul fronte di chiusura verso l’alimentazione
dell’ingresso (vedere Figura 46) con il tempo specificato all’ingresso TW. Lo
stato del temporizzatore è alto quando il tempo è trascorso e rimane in questo
stato fino all’attivazione dell’ingresso reset. Lo stato è prelevabile direttamente
dall’uscita Q o tramite un qualsiasi contatto con lo stesso operando.
Temporizzatore SA (ritardo alla diseccitazione)
Ingressi/uscite:
ingresso di avviamento del temporizzatore
TW ingresso per costante di tempo
R ingresso di reset
Q uscita del temporizzatore
La temporizzazione viene avviata sul fronte di apertura verso l’alimentazione
dell’ingresso (vedere Figura 47) con il tempo specificato all’ingresso TW. Lo
stato del temporizzatore è alto quando l’ingresso è a potenziale alto o quando il
tempo sta scorrendo. Lo stato è prelevabile direttamente dall’uscita Q o tramite un
qualsiasi contatto con lo stesso operando. Quando l’ingresso di reset viene
collegato alla linea di alimentazione il tempo viene azzerato e l’uscita si porta a
potenziale basso.
Contatore
Ingressi/uscite:
ZR ingresso conteggio indietro
ZV ingresso conteggio avanti
S ingresso di impostazione
ZW ingresso per costante di conteggio
R ingresso di reset
Q uscita del contatore
Sul fronte di chiusura verso l’alimentazione dell’ingresso ZR il conteggio viene
decrementato di 1, sul fronte di chiusura verso l’alimentazione dell’ingresso ZV il
conteggio viene incrementato di 1. Sul fronte di chiusura verso l’alimentazione
dell’ingresso S il conteggio viene impostato al valore specificato all’ingresso ZW.
Sulla chiusura dell’ingresso R il conteggio viene azzerato. L’uscita è a potenziale
alto se il valore di conteggio è diverso da 0.
Lo stato è prelevabile direttamente dall’uscita Q o tramite un qualsiasi contatto
con lo stesso operando.
L’uscita A2.2 deve essere attivata se e solo se entrambi gli interruttori collegati agli ingressi E0.0 e E0.1
sono chiusi.
La soluzione ladder si ottiene pilotando la bobina A2.2 attraverso la serie di due contatti con operandi E0.0
e E0.1. Infatti la combinazione logica AND, tradotta in linguaggio ladder, equivale alla serie di due contatti: ai
capi della serie 'si legge’ la chiusura del circuito solo quando entrambi i contatti sono chiusi; questa è quindi
l’unica condizione che attiva la bobina.
LADDER AWL
: U E0.0
: U E0.1
: = A2.2
: BE
La soluzione AWL si ottiene caricando dapprima lo stato di E0.0 nel registro RLC (U E0.0). In effetti
l’operazione, in senso stretto, è una AND ma qui, essendo la prima di una sequenza, viene interpretata come
un’operazione di caricamento di bit e quindi lo stato dell’operando viene copiato in RLC. Successivamente
viene effettuata una AND tra quest’ultimo e lo stato dell’ingresso E0.1 (U E0.1) ed il risultato viene ancora
depositato in RLC. Questa istruzione non è la prima di una sequenza e quindi l’operazione viene interpretata
effettivamente come una AND. L’ultima istruzione (= A2.2) provvede a trasferire il contenuto di RLC, che a
questo punto rappresenta la combinazione logica E0.0 · E0.1, all’uscita A2.2.
Esempio 2: combinazione OR
L’uscita A2.2 deve essere attivata se almeno uno degli interruttori collegati agli ingressi E0.0 o E0.1 è
chiuso.
La soluzione ladder si ottiene pilotando la bobina A2.2 attraverso il parallelo di due contatti con operandi
E0.0 ed E0.1. Infatti la combinazione logica OR, tradotta in schema a contatti, equivale al parallelo di due
contatti: ai capi del parallelo 'si legge’ la chiusura del circuito quando almeno uno dei contatti è chiuso; questa
è quindi la condizione che porta all’eccitazione della bobina.
LADDER AWL
: O E0.0
: O E0.1
: = A2.2
: BE
La soluzione AWL si ottiene caricando dapprima lo stato di E0.0 nel registro RLC (O E0.0). In effetti
l’operazione in senso stretto è una OR ma qui, essendo la prima di una sequenza, viene interpretata come
una operazione di caricamento di bit e quindi lo stato dell’operando viene copiato in RLC. In questo caso
l’istruzione è perfettamente equivalente alla U E0.0, che potrà essere sostituita ad essa ottenendo un
programma dall’identico funzionamento. Quindi viene effettuata una OR tra l'RLC e l’ingresso E0.1 (O
E0.1), che deposita ancora il risultato in RLC. Questa istruzione non è la prima di una sequenza e
l’operazione quindi viene interpretata effettivamente come una OR. L’ultima istruzione (= A2.2) provvede a
trasferire il contenuto di RLC, che a questo punto rappresenta la combinazione logica E0.0 + E0.1, all’uscita
A2.2.
La soluzione ladder dovrebbe essere intuitiva dopo aver realizzato gli esercizi precedenti: la bobina A2.0
viene pilotata dalla serie (AND) di due paralleli (OR) di contatti, in corrispondenza dei quali sono stati
opportunamente riportati gli operandi.
LADDER AWL
: O E0.0
: O E0.1
: U(
: O E0.2
: O E0.3
: )
: = A2.0
: BE
La soluzione AWL richiede invece qualche chiarimento poiché sono state introdotte due nuove operazioni.
Notiamo anzitutto che, dopo l’esecuzione della seconda istruzione, RLC contiene il risultato della
combinazione logica OR tra E0.0 ed E0.1 (vedi Esempio 2). La successiva operazione è un’apertura di
parentesi, l’RLC attuale viene accantonato momentaneamente per essere successivamente combinato in
AND con il risultato dell’espressione entro parentesi. L’operazione U( è RLC limitante (vedi Tabella 26) e
quindi l’istruzione successiva sarà la prima di una nuova sequenza, così la quarta istruzione (O E0.2) verrà
interpretata come un caricamento in RLC dello stato di E0.2 e, dopo l’esecuzione dell’istruzione seguente,
RLC conterrà il risultato della combinazione logica E0.2 + E0.3. La seguente istruzione di chiusura di
parentesi farà eseguire al PLC la combinazione AND (la terza era U() tra l’RLC attuale, cioè il risultato della
OR in parentesi, con l’RLC accantonato in precedenza, cioè il risultato della prima OR. L’ultima istruzione (=
A2.0) provvede a trasferire il contenuto di RLC, che a questo punto rappresenta la combinazione logica
(E0.0 + E0.1) · (E0.2 + E0.3), all’uscita A2.0.
Realizzare A2.0 = (E0.0 AND E0.1) OR (E0.2 AND E0.3). Dove le parentesi, sebbene non necessarie in
quanto l’operazione AND ha precedenza sulla OR, sono state aggiunte per chiarezza.
Nella soluzione ladder la bobina A2.0 viene pilotata dal parallelo (OR) di due serie (AND) di contatti, in
corrispondenza dei quali sono stati opportunamente riportati gli operandi.
LADDER AWL
: U E0.0
: U E0.1
: O(
: U E0.2
: U E0.3
: )
: = A2.0
: BE
Per quanto riguarda la soluzione AWL, notiamo anzitutto che, dopo l’esecuzione della seconda istruzione,
RLC contiene il risultato della combinazione logica AND tra E0.0 ed E0.1 (vedi Esempio 1). La successiva
operazione è un’apertura di parentesi, l’RLC attuale viene accantonato momentaneamente per essere
successivamente combinato in OR con il risultato dell’espressione entro parentesi. L’operazione O( è RLC
limitante (vedi Tabella 26) e quindi l’istruzione successiva sarà la prima di una nuova sequenza, così la
quarta istruzione (U E0.2) verrà interpretata come un caricamento in RLC dello stato di E0.2 e, dopo
l’esecuzione dell’istruzione successiva, RLC conterrà il risultato della combinazione logica E0.2 · E0.3. La
seguente istruzione di chiusura di parentesi farà eseguire al PLC la combinazione OR (la terza era O() tra
l’RLC attuale, cioè il risultato della AND in parentesi, con l’RLC accantonato in precedenza, cioè il risultato
della prima AND. L’ultima istruzione (= A2.0) provvede a trasferire il contenuto di RLC, che a questo punto
rappresenta la combinazione logica (E0.0 · E0.1) + (E0.2 · E0.3), all’uscita A2.0.
L’operazione logica XOR applicata a due variabili booleane dà risultato vero solo quando solo una delle due
variabili è vera.
La prima serie di contatti del programma ladder è chiusa solo quando E0.1 è chiuso ed E0.2 è aperto; la
seconda serie è chiusa solo quando, al contrario, E0.1 è aperto e E0.2 è chiuso. Realizzando il parallelo
delle due si ottiene la funzione desiderata: la bobina viene eccitata solo quando un ingresso è chiuso e l’altro
è aperto.
LADDER AWL
: U E0.1
: UN E0.2
: O(
: UN E0.1
: U E0.2
: )
: = A2.2
: BE
La soluzione AWL altro non è che la traduzione del programma ladder ed è molto simile nel funzionamento a
quella dell’esempio precedente con la differenza che, in corrispondenza dei contatti NC, vengono
programmate delle operazioni UN, test sullo stato negato dell’operando.
Esempio 6: autoritenuta
Un pulsante collegato all’ingresso E0.0 deve attivare l’uscita A3.7; un secondo pulsante collegato
all’ingresso E0.1 deve disattivarla.
Nel programma ladder proposto come soluzione viene realizzato un circuito con autoritenuta. Premendo il
pulsante collegato a E0.0 la bobina A3.7 viene attivata, quindi il contatto con lo stesso operando sul
secondo rigo si chiude (immaginate che il contatto e la bobina siano parti dello stesso relè A3.7)
continuando a mantenere eccitata la bobina anche dopo l’apertura di E0.0. La chiusura del pulsante
all’ingresso E0.1 provoca l’apertura del contatto normalmente chiuso sullo schema, diseccitando la bobina e
facendo cadere l’autoritenuta.
LADDER AWL
: U E0.0
: O A3.7
: UN E0.1
: = A3.7
: BE
Il programma AWL propone la conversione di quanto appena descritto. Il valore dell’uscita A3.7 nell’ultima
istruzione viene calcolato caricando lo stato di E0.0, quindi valutandone la OR con A3.7 e successivamente
ponendo in AND il risultato con il complemento di E0.1.
Un pulsante collegato all’ingresso E0.0 deve attivare l’uscita A3.7; un secondo pulsante collegato
all’ingresso E0.1 deve disattivarla
L’esercizio è identico al precedente ma, questa volta, nella soluzione vengono usate bobine di set e reset
della stessa uscita A3.7 pilotate separatamente da contatti di E0.0 e E0.1.
LADDER AWL
: U E0.0
: S A3.7
: U E0.1
: R A3.7
: BE
Facendo girare il programma, notiamo come la pressione contemporanea sui due pulsanti comporti
l’azzeramento dell’uscita. In effetti, in entrambi i linguaggi ed essendo valide le condizioni di test, l’operando
A3.7 viene dapprima attivato, nel percorso 1 o con le prime due istruzioni, quindi disattivato, nel percorso 2 o
con la terza e quarta istruzione. Ma ricordiamo che A3.7 non rappresenta effettivamente l’uscita fisica del
PLC, ma il corrispondente bit all’interno della memoria delle immagini di processo. Tale bit di memoria viene
effettivamente portato a 1 e poi a 0 ma, solo alla fine dell’elaborazione del programma utente, il valore
elaborato per esso viene trasferito al canale fisico di uscita corrispondente, che rimane quindi costantemente
al valore basso quando entrambi gli ingressi sono chiusi.
Con questa scrittura di programmi abbiamo quindi realizzato una prevalenza del reset rispetto al set. Se
desiderate ottenere il contrario, vi basterà invertire la posizione dei percorsi nello schema a contatti o il primo
gruppo di due istruzioni con il secondo nel programma AWL.
Attivare le uscite A2.0 e A2.1 in corrispondenza rispettivamente del fronte di salita e di quello di discesa
dell’ingresso E0.0.
Notiamo che l’ultimo percorso dello schema ladder e le ultime due istruzioni del programma AWL
impongono, al termine dell’esecuzione del programma, l’eguaglianza del merker bit M0.0 allo stato
dell’ingresso E0.0. Ma, in corrispondenza dei fronti, per i percorsi o per le istruzioni precedenti, accade che
lo stato delle due variabili sia opposto e, solo alla fine dell’elaborazione del programma utente, diventi uguali.
Ciò viene rappresentato nelle prime due righe del diagramma di Figura 42 con un ritardo temporale di M0.0
rispetto ad E0.0 che vale un ciclo di esecuzione.
La parte iniziale del programma attiva la bobina A2.0, per un ciclo di esecuzione, quando E0.0 è a 1 ed
M0.0 è a 0, cioè in corrispondenza del fronte di salita di E0.0, come mostrato al terzo rigo del diagramma.
LADDER
AWL
: U E0.0 'rilevazione fronte
: UN M0.0 'di salita
: = A2.0
: BE
Invece, la bobina A2.1 sarà attivata, sempre per un ciclo di esecuzione, quando E0.0 è a 0 ed M0.0 è a 1,
cioè in corrispondenza del fronte di discesa di E0.0, come mostrato al quarto rigo del diagramma.
L’uscita A2.5 viene attivata alla chiusura dell’ingresso E0.0 e disattivata 5 secondi dopo. Se l’ingresso viene
riaperto in questo periodo, l’uscita viene disattivata immediatamente.
Il funzionamento del temporizzatore è illustrato nel diagramma temporale di Figura 43. Nel primo rigo è
rappresentato il segnale di ingresso, nel secondo la sua uscita.
Il programma ladder è stato realizzato utilizzando un temporizzatore SI (impulso) attivato dal contatto NA di
E0.0, con una costante di tempo pari a 500 centesimi di secondo e uscita collegata alla bobina di A2.5.
LADDER AWL
: U E0.0
: L KT 500.0
: SI T2
: U T2
: = A2.5
: BE
Il primo gruppo di istruzioni del programma AWL costituisce l’attivazione del temporizzatore T2 come impulso
(SI T2) a seguito di un fronte di salita dell’ingresso (U E0.0), con la costante di tempo di 5 secondi caricata
nell’accumulatore 1 (L KT500.0). Il secondo gruppo di istruzioni copia lo stato del temporizzatore (U T2)
nell’uscita del PLC (= A2.5).
L’uscita A2.5 viene attivata alla chiusura dell’ingresso E0.0 e disattivata 5 secondi dopo indipendentemente
dal fatto che l’ingresso venga riaperto o meno in questo periodo.
Il funzionamento del temporizzatore è illustrato nel diagramma temporale di Figura 44. Nel primo rigo è
rappresentato il segnale di ingresso, nel secondo la sua uscita
Il programma ladder è stato realizzato utilizzando un temporizzatore SV (impulso prolungato) attivato dal
contatto NA di E0.0, con una costante di tempo pari a 500 centesimi di secondo e uscita collegata alla
bobina di A2.5.
LADDER AWL
: U E0.0
: L KT 500.0
: SV T2
: U T2
: = A2.5
: BE
Il primo gruppo di istruzioni del programma AWL costituisce l’attivazione del temporizzatore T2 come impulso
prolungato (SV T2) a seguito di un fronte di salita dell’ingresso (U E0.0), con la costante di tempo di 5
secondi caricata nell’accumulatore 1 (L KT500.0). Il secondo gruppo di istruzioni copia lo stato del
temporizzatore (U T2) nell’uscita del PLC (= A2.5).
L’uscita A2.5 viene attivata 5 secondi dopo la chiusura dell’ingresso E0.0. Quando l’ingresso viene riaperto
l’uscita viene disattivata.
Il funzionamento del temporizzatore è illustrato nel diagramma temporale di Figura 45. Nel primo rigo è
rappresentato il segnale di ingresso, nel secondo l’uscita che se ne ricava.
Il programma ladder è stato realizzato utilizzando un temporizzatore SE (ritardo all’eccitazione) attivato dal
contatto NA di E0.0, con una costante di tempo pari a 500 centesimi di secondo e uscita collegata alla
bobina di A2.5.
LADDER AWL
: U E0.0
: L KT 500.0
: SE T2
: U T2
: = A2.5
: BE
Il primo gruppo di istruzioni del programma AWL costituisce l’attivazione del temporizzatore T2 come ritardo
all’eccitazione (SE T2) a seguito di un fronte di salita dell’ingresso (U E0.0), con la costante di tempo di 5
secondi caricata nell’accumulatore 1 (L KT500.0). Il secondo gruppo di istruzioni copia lo stato del
temporizzatore (U T2) nell’uscita del PLC (= A2.5).
L’uscita A2.5 viene attivata 5 secondi la chiusura dell’ingresso E0.0 (anche se quest’ultimo nel frattempo
viene riaperto) e disattivata in corrispondenza della chiusura dell’ingresso E0.1.
Figura 46: Diagramma temporale per temporizzatore con ritardo all'eccitazione con memoria e reset
Il funzionamento del temporizzatore con ritardo all’eccitazione con memoria e reset si ricava dal confronto dei
primi due righi del diagramma temporale di Figura 46 con l’ultimo. Nei primi sono rappresentati i segnali di
ingresso, nell’ultimo la corrispondente uscita.
Il programma ladder è stato realizzato utilizzando un temporizzatore SS (ritardo all’eccitazione con memoria)
attivato dal contatto NA di E0.0, con una costante di tempo pari a 500 centesimi di secondo, l'ingresso di
reset collegato ad un contatto NA di E0.1 e l’uscita collegata alla bobina di A2.5.
LADDER AWL
: U E0.0
: L KT 500.0
: SS T2
: U E0.1
: R T2
: U T2
: = A2.5
: BE
Il primo gruppo di istruzioni del programma AWL costituisce l’attivazione del temporizzatore T2 come ritardo
alla eccitazione con memoria (SS T2) a seguito di un fronte di salita dell’ingresso E0.0 (U E0.0), con la
costante di tempo di 5 secondi caricata nell’accumulatore 1 (L KT500.0). Il secondo gruppo di istruzioni
provvede al reset del temporizzatore (R T2) in corrispondenza dello stato alto di E0.1 (U E0.1). L’ultimo
gruppo copia lo stato del temporizzatore (U T2) nell’uscita del PLC (= A2.5).
L’uscita A2.5 deve essere attivata alla chiusura dell’ingresso E0.0 e disattivata 5 secondi dopo la sua
riapertura.
Il funzionamento del temporizzatore è illustrato nel diagramma temporale di Figura 47. Nel primo rigo è
rappresentato il segnale di ingresso, nel secondo la corrispondente uscita.
Il programma ladder è stato realizzato utilizzando un temporizzatore SA (ritardo alla diseccitazione) attivato
dal contatto NA di E0.0, con una costante di tempo pari a 500 centesimi di secondo e uscita collegata alla
bobina di A2.5.
LADDER AWL
: U E0.0
: L KT 500.0
: SA T2
: U T2
: = A2.5
: BE
Il primo gruppo di istruzioni del programma AWL costituisce l’attivazione del temporizzatore T2 come ritardo
alla diseccitazione (SA T2) a seguito di un fronte di discesa dell’ingresso (U E0.0), con la costante di tempo
di 5 secondi caricata nell’accumulatore 1 (L KT500.0). Il secondo gruppo di istruzioni copia lo stato del
temporizzatore (U T2) nell’uscita del PLC (= A2.5).
L’uscita A3.3 viene attivata 3 secondi dopo la chiusura dell’ingresso E0.1 e disattivata 7 secondi dopo la
sua riapertura.
Figura 48: Diagramma temporale temporizzatore con ritardo all'eccitazione ed alla diseccitazione
La Figura 48 illustra, al primo ed ultimo rigo del diagramma, l’andamento dei due segnali descritti nella
traccia. Nel rigo intermedio è stato disegnato l’andamento di un temporizzatore con ritardo all’eccitazione
avente come ingresso proprio E0.1. Notiamo come l’andamento dell’uscita A3.3, rispetto all’andamento di
T0, rappresenti un ritardo alla diseccitazione. Il gioco è fatto! Si tratta quindi di scrivere un programma
contenente due temporizzatori: il primo, un ritardo all’eccitazione da 3s, ha come ingresso E0.1; il secondo,
un ritardo alla diseccitazione da 7s, ha come ingresso lo stato del primo temporizzatore e come uscita A3.3.
I programmi ladder ed AWL riportati di seguito implementano questa soluzione.
LADDER AWL
: U E0.1
: L KT 300.0
: SE T0
: U T0
: L KT 700.0
: SA T1
: U T1
: = A3.3
: BE
L’uscita A2.7 viene attivata 2 secondi dopo l'apertura dell’ingresso E1.5 per una durata di 1 secondo.
Il diagramma in Figura 49 illustra al primo rigo l’andamento dell’ingresso ed all’ultimo quello della uscita che
si desidera ottenere. Il secondo e terzo rigo rappresentano l’andamento di due temporizzatori con ritardo alla
diseccitazione T10 e T11, da 2 e 3 secondi rispettivamente, che hanno come segnale d’ingresso proprio
E1.5.
Notiamo allora che l’uscita deve essere vera quando accadono contemporaneamente le condizioni: T11 vero
e T10 falso. Quindi, in termini di espressione booleana:
LADDER AWL
: U E1.5
: L KT 200.0
: SA T10
: L KT 300.0
: SA T11
: U T11
: UN T10
: = A2.7
: BE
Nel programma ladder i primi due percorsi sono dedicati all’attivazione dei temporizzatori, entrambi hanno
per ingresso il segnale E1.5. Nel terzo percorso viene implementata l'espressione logica appena ricavata: i
due contatti posti in serie svolgono la funzione dell'operazione AND; in particolare, per il secondo è stato
usato il tipo NC al fine di eseguire il complemento del suo operando
Analogamente, per il programma AWL, il primo gruppo di istruzioni attiva i due temporizzatori sul segnale di
ingresso. Il secondo gruppo calcola il valore dell’espressione booleana e lo assegna all’uscita.
LADDER AWL
: UN T3
: = A2.4
: UN T3
: L KT 100.0
: SA T3
: BE
Rimane da chiarire che il percorso di assegnazione di A2.4 deve precedere necessariamente quello per
l’attivazione del temporizzatore. Infatti, se così non fosse, il tempo verrebbe riavviato prima che A2.4 possa
essere impostato a 1. A2.4 rimarrebbe perennemente allo stato basso poiché lo stato di T3, visto a questo
punto dell’elaborazione del programma, apparirebbe sempre alto. Lo stesso dicasi per il programma AWL,
nel quale il gruppo di istruzioni di assegnazione di A2.4 deve precedere, per le stesse ragioni, quello per
l’avviamento di T3. Queste considerazioni saranno da ricordare ogni volta che utilizzeremo negli esempi
successivi un treno di impulsi.
Il contatore Z4 viene impostato sul valore 10 in corrispondenza della chiusura dell’ingresso E1.3 e viene
decrementato ad ogni chiusura dell’ingresso E1.2. L’uscita A2.7 viene disattivata alla fine del conteggio
(valore 0).
Il programma ladder è molto semplice. La costante KZ10, assegnata all’ingresso ZW, fornirà il valore di
preset 10 al contatore. Il suo ingresso di set (S) è stato collegato ad un contatto di E1.3, mentre quello di
decremento (ZR) ad un contatto di E1.2. Sul fronte di chiusura di E1.3 avviene l’impostazione del valore di
conteggio a 10, ad ogni fronte di chiusura di E1.2 il conteggio viene decrementato di 1. L’uscita del contatore
(Q) è alta quando il valore di conteggio è diverso da 0. Sarà quindi sufficiente pilotare con essa l’uscita A2.7
del PLC.
LADDER AWL
: U E1.2
: ZR Z4
: U E1.3
: L KZ 10
: S Z4
: U Z4
: = A2.7
: BE
Il primo gruppo di istruzioni del programma AWL provvede ad incrementare di 1 il valore di conteggio del
contatore Z4 ad ogni fronte di salita di E1.2. Il secondo effettua l’impostazione del conteggio al valore
caricato in ACCU1 (10) in corrispondenza del fronte di salita di E1.3. L’ultimo gruppo provvede a trasferire lo
stato del contatore all’uscita A2.7.
Il contatore Z12 viene incrementato ad ogni chiusura dell’ingresso E0.0 e riportato a zero in corrispondenza
della chiusura dell’ingresso E0.1. L’uscita A2.0 è attiva quando il valore di conteggio è zero.
L’ingresso di reset (R) del contatore Z12 è stato collegato ad un contatto di E0.1, mentre quello di
incremento (ZV) ad un contatto di E0.0. Sul fronte di chiusura di E0.1 avviene il reset del contatore, cioè
l’impostazione del valore di conteggio a 0, ad ogni fronte di chiusura di E0.0 il conteggio viene incrementato
di 1. L’uscita del contatore (Q) è alta quando il valore di conteggio è diverso da 0. Sarà quindi sufficiente
invertirla per pilotare l’uscita A2.0 del PLC, come fatto nel percorso 2.
LADDER AWL
: U E0.0
: ZV Z12
: U E0.1
: R Z12
: UN Z12
: = A2.0
: BE
Il primo gruppo di istruzioni del programma AWL provvede ad incrementare di 1 il valore di conteggio del
contatore Z12 ad ogni fronte di salita di E0.0. Il secondo effettua il reset del conteggio in corrispondenza
dello stato alto di E0.1. L’ultimo gruppo provvede a trasferire il complemento dello stato del contatore
all’uscita A2.0.
Determinare per quanti secondi l’ingresso E0.5 rimane chiuso ed utilizzare l’ingresso E0.6 per azzerare il
conteggio del tempo.
Occorre realizzare innanzitutto una base tempi da un secondo, cioè un treno di impulsi che abbia questo
periodo. Quindi sarà sufficiente contare quanti impulsi di base tempi vengono generati durante la chiusura
dell’ingresso, cioè gli istanti in cui sono contemporaneamente veri l’ingresso e l’impulso (vedere Figura 51).
Il percorso 2 dello schema a contatti implementa il treno di impulsi da 1 secondo di periodo, così come
abbiamo visto nell’esempio 16. Al percorso 1 notiamo che l’ingresso ZV del contatore viene pilotato dalla
combinazione logica AND (serie di contatti nel diagramma) tra l’ingresso E0.5 ed il treno d’impulsi, cioè
viene pilotato proprio dagli impulsi da contare. Un contatto di E0.6 comanda invece l’ingresso reset del
contatore per l’azzeramento del conteggio, così come richiesto dalla traccia.
LADDER AWL
: U E0.5
: UN T3
: ZV Z5
: UN T3
: L KT 100.0
: SA T3
: U E0.6
: R Z5
: BE
Nel programma AWL, il primo gruppo di istruzioni si occupa dell’incremento del contatore in corrispondenza
del fronte di salita della AND tra E0.5 ed il treno di impulsi generato da T3 nel secondo gruppo di istruzioni.
L’ultimo gruppo opera il reset del conteggio sullo stato alto dell’ingresso E0.6.
Il valore di conteggio di Z5 rappresenta il numero dei secondi per cui l’ingresso è rimasto chiuso, con il limite
proprio dei contatori di questo PLC di 999.
Esempio 20: conteggio tempo di chiusura di un ingresso (in ore, minuti e secondi)
Determinare per quante ore, minuti e secondi l’ingresso E0.5 rimane chiuso ed utilizzare l’ingresso E0.6 per
azzerare il conteggio del tempo.
Nel programmare la soluzione di questo problema si è fatto uso di simboli. La loro corrispondenza con gli
operandi assoluti è stata stabilita secondo la seguente tabella.
Il programma proposto termina con la costruzione di un treno di impulsi col temporizzatore CLOCK, che
fungerà da base tempi con periodo di 1 secondo. All’inizio dello stesso, invece, le prime tre istruzioni fanno
avanzare il conteggio del contatore SEC quando un impulso di CLOCK viene rilevato durante la chiusura di
INGRESSO. SEC, ovvero Z5, è quindi il contattore dei secondi.
Il secondo gruppo di istruzioni provvede al caricamento del valore dei secondi in ACCU2 e della costante 60
in ACCU1, quindi i due valori vengono comparati per l’uguaglianza e, in caso di test affermativo, il contatore
MIN viene incrementato e quello SEC riazzerato. Il contatore MIN viene incrementato quindi ogni 60 secondi e
costituisce così il contatore dei minuti.
Il terzo gruppo di istruzioni provvede al caricamento del valore dei minuti in ACCU2 e della costante 60 in
ACCU1, quindi i due valori vengono comparati per l’uguaglianza e, in caso di test affermativo, il contatore
ORE viene incrementato e quello MIN riazzerato. Il contatore ORE viene incrementato quindi ogni 60 minuti e
costituisce così il contatore delle ore.
Concludendo, quindi, il contatempo software costruito ci consente di contare fino a 999 ore, 59 minuti e 59
secondi (per la precisione!). Ammesso che si possa considerare un valore così preciso, su un tempo tanto
lungo, tenendo presenti gli inevitabili errori dell’orologio interno sia dell'eventuale PLC reale che del PC su cui
gira quello simulato.
Per esercizio, potreste provare a modificare il programma aggiungendo un contatore GIORNI che viene
incrementato di 1 ogni 24 ore.
Per testare il programma, senza dover attendere tempi lunghissimi, potreste diminuire la costante di tempo
nel caricamento di CLOCK, aumentando così la frequenza del treno di impulsi, oppure forzare manualmente
valori di conteggio prossimi a quelli di comparazione.
AWL
: U -INGRESSO 'ogni secondo incrementa il contatore
: UN -CLOCK 'dei secondi
: ZV -SEC
: BE
L’uscita A2.7 deve essere comandata da un segnale ad onda quadra con Toff =1.5s e Ton =0.5s.
Nella soluzione proposta vengono utilizzati due temporizzatori che si ‘rimpallano’ l’eccitazione.
Alla prima elaborazione del programma ladder il contatto NC di T2 è chiuso, pertanto l’uscita del
temporizzatore T1 (ritardo alla diseccitazione) viene attivata. Ora anche il contatto NA di T1 sul percorso 2 è
chiuso ed anche l’uscita di T2 viene attivata.
Al ciclo successivo, il contatto NC di T1 questa volta è aperto e quindi il tempo di T1 inizia a scorrere, la sua
uscita continua a rimanere alta lasciando T2 nello stesso stato.
Terminato il tempo di T1 (1.5s) l’uscita dello stesso va bassa ed il contatto NA sul percorso 2 si apre, il
temporizzatore T2 viene avviato ed il suo tempo inizia a scorrere mentre la sua uscita continua a rimanere
alta.
Trascorso il tempo T2, l’uscita del temporizzatore va bassa. Siamo tornati così nella condizione iniziale ed il
ciclo si ripete come già descritto, indefinitamente.
L’andamento temporale dei segnali T1 e T2 è mostrato ai primi due righi della Figura 52; mentre il terzo rigo
mostra l’andamento che dovrebbe avere l’uscita A2.7. Notiamo come questa uscita sia il complemento del
segnale T1, a meno della piccola differenza di tempo pari ad un ciclo di esecuzione che, per motivi di
chiarezza, è stata volutamente esagerata nel diagramma. Concludiamo il programma implementando al terzo
percorso l'assegnazione dell’uscita del PLC secondo questo criterio.
Il programma AWL è la semplice conversione di quello ladder e riteniamo che, a questo punto, non dovrebbe
essere di difficile comprensione.
Impostando opportunamente il valore delle due costanti di tempo è possibile variare Ton e Toff realizzando
un’onda quadra con diversi duty cycle e frequenza.
LADDER
AWL
: UN T2 'attivazione tempo OFF
: L KT 150.0
: SA T1
: U T1 'attivazione tempo ON
: L KT 50.0
: SA T2
: UN T1
: = A2.7 'impostazione uscita
: BE
L’uscita A2.7 deve essere comandata da un segnale ad onda quadra con Toff =1.5s e Ton =0.5s.
La soluzione qui presentata si differenzia da quella proposta nell’esempio precedente avente la medesima
traccia. In effetti, qui è utilizzato un unico temporizzatore ad autoavviamento che viene impostato, nel primo
gruppo di istruzioni, con un tempo pari al periodo del segnale richiesto (2s). Nel suo scorrere quindi, il tempo
varia quindi tra 200 e 0 centesimi di secondo. Tra i valori 200 e 50 l’uscita A2.7 deve essere impostata allo
stato basso, mentre per valori minori di 50 la medesima dovrà assumere lo stato alto.
Il secondo gruppo di istruzioni provvede al confronto del valore di tempo attuale con la costante 50 e se
minore attiva l’uscita.
Anche in questo caso è possibile cambiare sia il periodo del segnale, variando la costante di tempo di T3,
che il tempo allo stato alto, variando la costante decimale di confronto.
AWL
: UN T3 'avvio temporizzatore
: L KT 200.0 'periodo onda quadra
: SA T3
: BE
Un pulsante collegato all’ingresso E0.0 attiva per tre minuti un gruppo di lampade collegate all’uscita A2.1.
Insieme a queste viene attivata una spia collegata all’uscita A2.2 che, 15 secondi prima dello spegnimento
delle lampade, inizia a lampeggiare per avvisare dell’imminente scadere del tempo. La spia si spegne
definitivamente insieme con le lampade.
I temporizzatori T2 e T3 vengono utilizzati per generare un’onda quadra con periodo di 1s e duty cycle del
50%. Entrambi sono caricati con una costante di tempo da 50 centesimi di secondo. Vedere in merito il primo
esempio sulla generazione di un’onda quadra.
Vengono utilizzati inoltre altri due temporizzatori ad impulso prolungato. T1, caricato con un tempo di 3 minuti
(KT180.2 cioè 180 secondi), comanda direttamente l’uscita del gruppo di lampade. T0, caricato con un
tempo inferiore di 15 secondi (KT165.2), sarà utilizzato per discriminare l’istante di inizio lampeggio della
spia.
Gli andamenti temporali di T0 e T1 a seguito dell’impulso su E0.0 sono riportati rispettivamente nel secondo
e terzo rigo del diagramma di Figura 53. Il quarto rigo riporta l’andamento, non in scala, del temporizzatore
T2.
Osservando l’ultimo rigo si nota che la lampada spia deve essere accesa o quando è attivo T0 o, ancora,
quando sono attivi A2.1 e T2 e contemporaneamente T0 è disattivo. Cioè in termini di espressione
booleana:
A2.2 = T0 +( A2.1 ⋅ T0 ⋅ T2 )
Le soluzioni proposte implementano precisamente quanto descritto.
Nella prima, realizzata in ladder, vengono utilizzati i primi due percorsi per la costruzione del segnale ad onda
quadra. I successivi due attivano i temporizzatori delle lampade e della spia. L’ultimo costituisce
l’implementazione della espressione logica che determina lo stato di accensione di quest’ultima.
Nel programma AWL, il primo gruppo di istruzioni genera il segnale ad onda quadra. Il secondo avvia i
temporizzatori per le lampade e la spia. Il terzo accende le lampade e, infine, il quarto accende la spia
secondo le modalità determinate dall’espressione trovata in precedenza.
LADDER
AWL
: UN T3 'oscillatore 1Hz
: L KT 50.0
: SA T2
: U T2
: L KT 50.0
: SA T3
: U T1 'accensione luci
: = A2.1
: U T1 'accensione e
: UN T0 'lampeggio spia
: U T2
: O T0
: = A2.2
: BE
Realizzare un divisore di frequenza per 4: ogni quattro impulsi in ingresso viene attivato un impulso sull’uscita
A2.1.
La prima parte delle soluzioni proposte realizza un treno d’impulsi, così come abbiamo imparato a fare negli
esempi precedenti, e ne mostra il segnale sull’uscita A2.0. La seconda parte implementa effettivamente il
divisore. Esso è costituito da un contatore che viene decrementato ad ogni impulso del generatore (ingresso
ZR pilotato da A2.0) e, al raggiungimento dello zero, si autopresetta al valore 4 (uscita Q riportata su
ingresso S attraverso M0.0).
Ogni quattro impulsi di A2.0, per un solo ciclo di esecuzione, il conteggio si azzera. In questo ciclo l’uscita
del contatore si disattiva e così il merker M0.0 ad essa collegato. Al contrario, l’uscita A2.1 del PLC si attiva,
a causa della negazione del contatto di M0.0 che la comanda.
LADDER
AWL
: UN T1 'conteggio impulsi
: ZR Z3
: = A2.0 'attivazione uscita ogni 0.5 secondi
: UN Z3
: = A2.1 'attivazione uscita ogni 2 secondi
: L KZ 4 'ripristino contatore a 4
: S Z3
: BE
Per risolvere questo esempio sono necessarie operazioni che appartengono al set integrativo (vedere
Tabella 27). Pertanto è necessario scrivere il programma in un blocco funzionale e poi richiamare questo
dall’OB1 per permetterne l’esecuzione ciclica. Non sarà quindi possibile programmare in ladder.
Depositeremo in MB80 il numero degli ingressi chiusi ed utilizzeremo MW10 come puntatore all’ingresso
correntemente in esame. La prima parte del programma in OB1 consiste nell’inizializzazione a 0 di queste
due variabili. L’istruzione successiva chiama il blocco FB4 che contiene il nucleo del programma. Come
conseguenza dell’istruzione di chiamata di blocco incondizionata, l’elaborazione del programma prosegue
dalla prima istruzione di FB4.
Le prime due istruzioni di questo blocco permettono di caricare in RLC il complemento dell’ingresso puntato
da MW10, con indirizzo di canale nel byte alto e indirizzo di modulo nel byte basso. Al primo passaggio,
essendo MW10 a 0, verrà caricato il complemento dello stato di E0.0.
L’istruzione successiva è un salto condizionato: se RLC=1, cioè se il complemento di E0.0 è uguale ad 1,
cioè se l’ingresso è aperto, l’elaborazione viene proseguita dall’etichetta INC. Se l’ingresso è chiuso, invece,
il salto non viene effettuato e l’elaborazione continua con l’istruzione seguente.
In quest'ultimo caso, le quattro istruzioni successive incrementano il valore di MB80, cioè del numero che
rappresenta il conteggio di ingressi trovati chiusi, caricandone dapprima il valore in ACCU1, quindi
sommando a questo 1 e, infine, trasferendo il risultato di nuovo in MB80. Il compito complessivo di queste
istruzioni e delle precedenti è quello di incrementare la variabile MB80 se l’ingresso è chiuso e di non
incrementarla se l’ingresso è aperto.
In un caso o nell’altro l’elaborazione arriva al gruppo di istruzioni individuato dall’etichetta INC che provvede,
come prima azione, ad incrementare il byte alto di MW10, cioè MB10 e cioè il byte che rappresenta il numero
del canale dell’ingresso nell’operazione di caricamento indicizzato che abbiamo già visto (a scopo didattico,
abbiamo utilizzato un’operazione diversa per ottenere l’incremento del byte). Quindi, viene confrontato il
valore appena ottenuto con il valore 7. Se minore o uguale, l’ingresso puntato esiste e dobbiamo valutarne il
suo stato tornando all’etichetta TEST, come specificato dall’istruzione di salto condizionato. Altrimenti, nel
caso il valore sia 8, il canale non esiste e dobbiamo uscire dal blocco, avendo esaminato tutti gli otto gli
ingressi possibili, da E0.0 a E0.7.
La parte di programma che va dall’etichetta TEST all’istruzione SPB =TEST viene quindi eseguita otto volte,
prima di ritornare al blocco chiamante OB1 per mezzo dell’ultima istruzione BE. Ogni volta MW10 conterrà un
valore diverso: in successione e in esadecimale 0000, 0100, 0200, 0300, 0400, 0500, 0600, 0700; ed ogni
volta il gruppo di istruzioni B MW10 e UN E0.0 caricherà in RLC il complemento di un diverso ingresso del
modulo, dal primo fino all’ultimo.
La parte di programma che va da L MB80 fino a T MB80 viene elaborata soltanto se l’ingresso testato
correntemente è chiuso, col risultato di eseguire un incremento di MB80 soltanto in questa condizione e,
siccome il valore iniziale di questo merker byte è pari a 0, alla fine dell’esecuzione del blocco, esso conterrà
effettivamente il numero degli ingressi chiusi.
Se desiderate analizzare gli ingressi chiusi del modulo 1 sarà sufficiente caricare 1 come valore di
inizializzazione per MW10. E’ anche possibile valutare il totale degli ingressi chiusi per i due moduli. Si tratta di
richiamare due volte l’FB4, la prima inizializzando MW10 a 0, la seconda inizializzandola ad 1. Per MB80
occorrerà invece una sola inizializzazione a 0 all’inizio dell’OB1. Lasciamo al lettore la realizzazione di questo
programma.
AWL
OB1
: L KF +0 'impostazioni iniziali
: T MB80
: T MW10
: SPA FB4 ()
: BE
FB4
: BE
In questo esercizio, allo scopo di utilizzare un’operazione di scorrimento, affrontiamo una soluzione differente
rispetto a quella programmata nell’esempio precedente.
Il contatore di ingressi chiusi è ancora MB80 ed il suo valore viene ancora inizializzato a 0 all’inizio dell’OB1.
MB10 rappresenta invece una maschera a 8 bit, uno solo dei quali per volta sarà ad 1. Il suo valore iniziale è
1 cioè (00000001)2, dove solo il bit 0 è vero.
Le prime tre istruzione del blocco FB4 caricano negli accumulatori i valori della maschera e del byte di
ingresso relativo al modulo 0 e ne eseguono la AND bit a bit. Al primo passaggio, col valore della maschera
appena visto, la AND dà risultato diverso da 0 solo se E0.0 è chiuso. Quindi il salto su zero previsto
dall’istruzione successiva viene effettuato solo per ingresso aperto.
Se l’ingresso è chiuso, come fatto per l’esempio precedente, incrementiamo il byte di conteggio MB80.
In un caso o nell’altro i due percorsi di elaborazione si ricongiungono all’etichetta INC dove, dopo aver
caricato la maschera in ACCU1, si provvede allo scorrimento a sinistra di una posizione. Il risultato dello
scorrimento o, meglio, la parte bassa di esso, viene ritrasferito in MB10.
Dopo l’istruzione L KF+256, ACCU1 conterrà il valore 256 e ACCU2 conterrà il risultato dello scorrimento.
Se il bit di maschera, dopo 8 scorrimenti, è finito in posizione 8 nel registro a 16 bit dell’accumulatore, il
8
valore di quest’ultimo sarà 2 =256 e quindi l’istruzione di salto condizionato viene ignorata e l’elaborazione
del blocco termina. Se il bit occupa posizioni inferiori, e quindi il contenuto dell’accumulatore risulta minore di
256, il salto all’etichetta TEST viene eseguito per ripetere l’elaborazione al fine di esaminare l’ingresso
successivo.
AWL
OB1
: L KF +0 'inizializzazione merker byte
: T MB80 'di conteggio
: L KF +1 'inizializzazione maschera
: T MB10
: SPA FB4 ()
: BE
FB4
TEST: L MB10 'controllo dell'ingresso
: L EB0 'non mascherato
: UW
: SPZ =INC
: BE
Alla attivazione del pulsante collegato all’ingresso E0.0 le cinque lampade di un semaforo devono
accendersi in progressione, una ogni secondo. Un secondo dopo la completa accensione, le lampade
dovranno spegnersi.
Nel programmare la soluzione di questo problema si è fatto uso di simboli. La loro corrispondenza con gli
operandi assoluti è stata stabilita secondo la seguente tabella.
Il diagramma temporale di Figura 55 mostra, nelle righe intermedie, l’andamento delle uscite del PLC che
comandano le lampade del semaforo in funzione dell’ingresso START riportato al primo rigo.
La chiusura di questo ingresso, oltre a settare l’uscita che comanda la prima lampada, determinandone
l'immediata accensione, attiva cinque temporizzatori con ritardo all’eccitazione con memoria, impostati con
tempi da 1 a 5 secondi. L’uscita di ognuno di essi, T1 escluso, trascorso il tempo programmato, si porterà
allo stato alto attivando la rispettiva lampada e ottenendo così facilmente la sequenza di accensione. Il
temporizzatore T1, invece, provvede allo spegnimento di tutte le lampade resettando L1 e tutti i
temporizzatori, ivi compreso se stesso.
Portate in Run il PLC, trasformate l’interruttore 0.1 in un pulsante, premete il pulsante e …vinca il migliore!
LADDER
AWL
: U -START 'impostazione temporizzatori per sequenza
: L KT 100.0
: SS T2
: L KT 200.0
: SS T3
: L KT 300.0
: SS T4
: L KT 400.0
: SS T5
: L KT 500.0
: SS T1
: U T1 'reset temporizzatori
: R -L1
: R T1
: R T2
: R T3
: R T4
: R T5
: BE
Lo schema stabilisce la sequenza di accensione delle lampade collegate ai quattro canali: i cerchi pieni
segnalano l’attivazione del canale durante lo specifico passo. Così durante il passo 0 sarà attivo il canale 0,
durante il passo 1 il canale 1 e così via. Se le lampade vengono posizionate in linea, l’effetto sarà quello di
uno spostamento della fonte luminosa dalla prima all’ultima posizione e poi al contrario.
Al passo 5 succede un passo 6 identico allo 0 e poi un altro identico al passo 1, cioè il diagramma viene
percorso ciclicamente. Immaginate di ritagliarlo ed avvolgerlo a cilindro, facendo combaciare i lembi opposti
del passo 0 e del 5, esso sarebbe simile al tamburo di un carillon: terminato il motivetto, comincia
nuovamente.
Continuando con il parallelo sonoro, perché un carillon funzioni abbiamo bisogno di un cilindro con delle
camme disposte in modo opportuno sulla sua superficie laterale e di un meccanismo che lo faccia girare.
Cominciamo proprio a costruire quest’ultimo. Il meccanismo di avanzamento del nostro sequenziatore sarà
un treno di impulsi con periodo di 0.2 secondi, cioè una base tempi con periodo scelto in modo da portare ad
avere una velocità di spostamento della fonte luminosa ritenuta idonea. Le istruzioni
UN –TIMER
L KT20.0
SA –TIMER
costruiscono un treno di impulsi, così come abbiamo imparato a fare in precedenza. Il cilindro invece sarà
costituito da un contatore che, partendo da 0, viene incrementato ad ogni impulso.
UN –TIMER
ZV –COUNTER
Arrivato a 6, cioè dopo l’ultimo passo, esso dovrà essere reimpostato al valore 0 di partenza, essendo il
passo 6 identico al passo 0 per l’appunto.
L –COUNTER
L KF+6
!=F
R –COUNTER
Prima di sistemare le camme sul cilindro identifichiamo gli spicchi del cilindro che corrispondono ad ogni
specifico passo. Le istruzioni
L –COUNTER
L KF+0
!=F
= -PASSO0
impostano ad 1 il merker PASSO0 quando il contatore vale 0, identificando tra i possibili valori del contatore
quello corrispondente a tale passo. I successivi gruppi di istruzioni impostano i merker corrispondenti a
ciascuno degli altri passi. Così, alla fine, ogni 0.2s sarà attivo un merker diverso, in successione da PASSO0
a PASSO5 e, quindi, riprendendo da PASSO0.
Ora che abbiamo identificato le posizioni possiamo inserire le camme. Cominciamo dal canale 0, osserviamo
nuovamente la griglia di Figura 56, il canale 0 è attivo solo durante il passo 0, quindi:
O -PASSO0
= -CH0
Il canale 1 deve essere attivo sia durante il passo 1 che durante il passo 5:
O -PASSO1
O -PASSO5
= CH1
Proseguendo così, per gli altri due canali, fino a terminare la costruzione del carillon o, abbandonando il
parallelo didattico, del sequenziatore.
AWL
: UN -TIMER 'avanzamento passo
: ZV -COUNTER
: BE
In questo esempio è possibile aumentare o diminuire la durata dei passi semplicemente cambiando la
costante con cui viene caricato il temporizzatore, producendo l’effetto di variare la velocità dello spostamento
apparente della fonte luminosa. E’ possibile modificare il numero dei passi, cambiando la costante con cui
viene confrontato il valore di conteggio per l’azzeramento del contatore ed aggiungendo altri confronti per
discriminare i nuovi passi. E’ possibile, ancora, cambiare la sequenza di accensione delle lampade,
modificando le condizioni nei gruppi di OR che costituiscono l’ultima parte del programma.
Sicuramente quella presentata non è l’unica soluzione al problema e, in genere, man mano che questo
diventa più complesso, le soluzioni possibili aumentano. Probabilmente non è neppure la migliore in termini di
versatilità, semplicità di manutenzione o di eleganza di programmazione, anche se nel prossimo esempio
proporremo una soluzione che meglio risponde a questi requisiti. Ma è l’approccio più semplice, che utilizza
cioè le istruzioni più comuni, che siamo riusciti a produrre e questo è un requisito fondamentale per il compito
che questo capitolo del manuale si propone: accompagnarvi nei primi passi nel mondo della
programmazione dei PLC.
L’effetto ottico, se le lampade sono disposte in linea verticale, così come i LED del modulo del PLC, è quello
di un progressivo riempimento della barra dovuto a fonti luminose che compaiono in alto e man mano
scendono fino ad occupare l’ultima posizione libera, cioè spenta. Una volta illuminata tutta la barra il ciclo
riparte spegnendo le lampade e ricominciando il riempimento.
La sequenza è sufficientemente più complicata della precedente da spingerci a trovare una soluzione
diversa, più funzionale e, magari, più versatile. Quella prevista utilizza un blocco dati per memorizzare le
combinazioni di accensione della sequenza. Ogni data word contiene nel byte basso il codice di accensione
delle lampade. L’ultima word contiene il dato (FFFF)16 che funge da terminatore di sequenza con le modalità
che vedremo tra poco.
Il cuore del programma è costituito dal blocco FB10 che viene richiamato ogni 2 decimi di secondo e che
provvedere a leggere i dati ed inviarli al modulo di uscita. Vediamo come.
MW100 costituisce il puntatore alla data word attuale. Il suo valore iniziale è 0. Il gruppo di istruzioni
all’etichetta READ, successivo all’apertura del DB20, carica dapprima il valore (FFFF)16 in accumulatore,
quindi il valore della data word corrente utilizzando un’istruzione indicizzata, e confronta i due valori: se
diversi l’elaborazione continua trasferendo il contenuto di ACCU1, il dato della sequenza, al modulo 2 di
uscita. In seguito, dopo l’incrementato del valore del puntatore, si ritorna al blocco chiamante cosicché,
quando nuovamente richiamato FB4, la data word caricata sarà quella successiva.
Se il valore letto è invece uguale a (FFFF)16, l’elaborazione continua dapprima all’etichetta INIT dove si
provvede all’azzeramento dell’indice per il ritorno all’inizio sequenza, quindi all’etichetta READ per la nuova
lettura della prima combinazione della sequenza, DW0.
AWL
OB1 (Principale)
: BE
: L KF +0 'reinizializzazione indice
: T MW100
: BE
: L KF +0 'reinizializzazione indice
: T MW100
: BE
AWL
FB10 (Accensione luci)
: BEA
: BE
AWL
33 KM 00000000 11111100
34 KM 00000000 11111101
35 KM 00000000 11111110
36 KM 00000000 11111111
37 KH FFFF Terminatore di ciclo
Premessa
Le note fornite in questa sezione si riferiscono unicamente al PLC simulato, cioè a PC-Sim per S7 300. Molto
spesso comunque, esse trovano riscontro anche nel PLC reale, poiché in tutte le simulazioni di AW-SYS si è
cercato di avvicinare quanto più possibile la realtà. Comunque, si consiglia vivamente l’utilizzo dei manuali
originali Siemens del PLC reale e dell’apparecchiatura di programmazione per tutte le informazioni
necessarie alla programmazione del dispositivo reale.
Per loro natura, alcuni degli argomenti trattati, sono comuni ai diversi PLC simulati. Si è preferito però
ripetere le stesse descrizioni per tutti al fine di far diventare ognuno di questi capitoli un’entità autonoma: un
comodo ed indispensabile manuale da tenere a portata di mano durante la programmazione del PLC
simulato.
Indirizzamento
Sotto il nome di indirizzamento va la serie di regole sintattiche che il programmatore deve osservare nel far
riferimento a variabili o costanti durante la scrittura di un programma utente per PLC. L’indirizzamento, nella
simulazione del PLC S7 300, si effettua in accordo alle regole esposte di seguito e riassunte nella Tabella 19.
Ingressi–Uscite digitali
La sigla per l’indirizzamento degli ingressi e delle uscite digitali in questo modello di PLC è composta da:
• lettera che individua gli ingressi (E) o le uscite (A)
• indirizzo di byte
• punto di separazione
• indirizzo di bit
Ad ogni posto connettore vengono riservati 4 byte consecutivi. Al posto connettore 4, dove è installato il primo
modulo di I/O del PLC simulato, sono ad esempio riservati i byte 0, 1, 2 e 3. Al posto connettore 5 i byte 4, 5,
6 e 7, e così via. La tabella seguente riassume la corrispondenza tra posto connettore e indirizzi iniziali di
byte riservati per i primi otto moduli.
Il primo modulo del PLC simulato, essendo dotato di solo 16 canali di ingresso digitale, occupa allora gli
indirizzi di byte 0 e 1, il secondo modulo occupa invece gli indirizzi 4 e 5. Rimangono quindi inutilizzati gli
indirizzi di byte 2, 3, 6 e 7.
I 16 canali disponibili su ognuno dei moduli assumono un indirizzo di bit compreso tra 0 e 7 in corrispondenza
del primo byte e del secondo byte, secondo quando riportato nella Tabella 32.
Il PLC simulato è composto, oltre che dalla CPU, da due moduli digitali di periferia: nell’ordine uno di ingresso
ed uno di uscita. Quindi gli indirizzi per i canali di questi moduli sono:
• da E0.0 a E1.7 per gli ingressi digitali
• da A4.0 a A5.7 per le uscite digitali.
Vedremo in seguito che questa modalità di indirizzamento non fa riferimento diretto agli ingressi ed alle uscite
fisiche del PLC, cioè alla periferia, ma alla immagine che di essi il sistema operativo costruisce all’interno
della memoria della CPU. Le immagini della periferia sono state riproposte interamente nella CPU simulata;
così all’interno del vostro programma potrete indirizzare, senza generare alcun errore, tutta l’immagine degli
ingressi da E0.0 a E255.7 e tutta l’immagine delle uscite da A0.0 a A255.7. L’indirizzamento di variabili
nelle immagini di processo, non corrispondenti a moduli di I/O, porta semplicemente a test o impostazioni di
bit, byte o word di memoria senza condurre ad attivazione di uscite o valutazione di stato degli ingressi.
Ingressi e uscite (da intendersi sempre come immagine di processo degli ingressi ed immagine di processo
delle uscite) sono indirizzabili anche a byte, a word ed a doppia word.
EB0 rappresenta il byte 0 dell’immagine degli ingressi e nel caso del PLC simulato il byte basso del modulo di
ingressi digitali al posto connettore 4; EB1 rappresenta il byte successivo, quello corrispondente al byte alto
dello stesso modulo e così via fino a EB255. Con l’ovvia limitazione che solo i byte a cui corrispondono
effettivamente canali di ingresso su moduli assumono significato pratico.
AB4 e AB5 rappresentano invece i byte di uscita, rispettivamente alto e basso, per il modulo di uscite digitali
nel posto connettore 5 anche se, ancora una volta, il campo ammesso per questo tipo di operando va da AB0
ad AB255.
Tabella 32: Indirizzi di bit per moduli nei posti connettore 4 e 5 per S7 300
Posto connettore 4 Posto connettore 5
Byte Bit Byte Bit
0 0
1 1
2 2
3 3
0 4
4 4
5 5
6 6
7 7
0 0
1 1
2 2
3 3
1 5
4 4
5 5
6 6
7 7
EW0 rappresenta la word di ingresso 0, composta dai byte EB0 ed EB1 che contiene l’intera informazione dei
canali del modulo di ingresso. Il campo indirizzabile in questo PLC arriva fino ad EW254.
AW4 rappresenta la parola di uscita 4, composta dai byte AB4 ed AB5, che quindi rappresenta l’intera
informazione per il modulo di uscita digitale. Il campo indirizzabile in questo PLC va da AW0 ad AW254.
Le doppie word di ingresso e di uscita contengono ognuna quattro byte a partire da quello con indirizzo
uguale a quello della doppia word. Così, ad esempio, la doppia word ED0 sarà composta dai byte EB0, EB1,
EB2 ed EB3. Il campo dei valori indirizzabili va da ED0 ad ED252, per gli ingressi, e da AD0 ad AD252, per le
uscite.
Ingressi–Uscite analogici
Il modulo al posto connettore 6 possiede quattro canali analogici di ingresso che vengono mappati nella
immagine degli ingressi in corrispondenza delle word EW288, EW290, EW292 ed EW294, vedi Tabella 31. La
codifica del valore utilizza 12 dei 16 bit disponibili. Come indicato in figura, il bit meno significativo della
codifica (B0) occupa il bit 3 della word, B1 occupa il bit 4 e così via fino a B11 che occupa il bit 14. I bit 15, 2,
1 e 0 sono sempre a zero nella simulazione.
Tabella 33: Codifica valori dei canali analogici di ingresso per S7 300
Bit di EW 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Al valore minimo dell’ingresso (es. 0V) corrisponde una codifica B11-B0 pari a 0; al valore massimo
corrisponde una codifica di (2048)10. Quindi, concludendo, il valore di una delle word dell’immagine può
variare da 0 a 2048x8=16384. Dove la moltiplicazione per 8 deriva dallo scorrimento di 3 posti a sinistra
3
(2 =8) che prevede la codifica.
Il modulo al posto connettore 7 possiede quattro canali analogici di uscita che vengono mappati nella
immagine delle uscite in corrispondenza delle word AW304, AW306, AW308 ed AW310. La codifica del valore
utilizza 11 dei 16 bit disponibili. Come indicato nello schema seguente, il bit meno significativo della codifica
(B0) occupa il bit 4 della word, B1 occupa il bit 5 e così via fino a B10 che occupa il bit 14. I bit 15, 3, 2, 1 e 0
sono ininfluenti al fine dell’emissione di un certo valore di tensione.
Codifica X B10 B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 X X X X
Per ottenere il valore minimo in uscita (es. 0V) occorre una codifica B10-B0 pari a 0; il valore massimo si
ottiene invece con una codifica di 1024. Quindi, concludendo, il valore che è possibile scrivere in una delle
word dell’immagine può variare da 0 a 1024x16=16384. Dove la moltiplicazione per 16 deriva dallo
4
scorrimento di 4 posti a sinistra (2 =16) che prevede la codifica.
Merker
I merker costituiscono una parte della memoria RAM della CPU. Essa è direttamente accessibile da
programma utente e da questo viene utilizzata per memorizzazioni temporanee di dati, o intermedie di
risultati di calcoli. La memoria merker di questo PLC è composta da 256 byte (merker byte). Ogni byte di
questa memoria è indirizzabile attraverso la sigla MBx, dove x è il numero progressivo di byte. Ad esempio,
MB100 identifica il byte 100 della memoria merker. Gli indirizzi possibili vanno quindi da MB0 a MB255.
Ogni bit della stessa memoria è indirizzabile singolarmente con la sigla Mx.y, dove x è ancora il numero di
byte e y è il numero del bit all’interno del byte. Quindi sono possibili gli indirizzi da M0.0 a M255.7.
Inoltre, la memoria merker può essere indirizzata a word utilizzando la sigla MWx dove x è il numero di word.
La MW0 (merker word numero 0) è composta dai merker byte MB0 e MB1, la MW1 da MB1 e MB2, e così via. Il
campo operandi possibile va da MW0 a MW254. Infatti la MW254, che raggruppa MB254 e MB255, è l’ultima
merker word disponibile, essendo MB255 l’ultimo byte indirizzabile.
Infine tale memoria è indirizzabile a doppia word: da MD0, che raggruppa MB0, MB1, MB2 e MB3, a MD252,
ultima doppia word indirizzabile.
I merker byte da MB0 a MB63 sono ritentivi, cioè conservano il loro valore dopo una mancanza di
alimentazione con batteria inserita, e così pure lo sono i merker bit che contengono e le merker word o le
doppie merker word che compongono.
I merker byte da MB64 a MB127 sono non ritentivi, perdono quindi il loro valore dopo una mancanza di
alimentazione alla CPU, cioè vengono azzerati. Lo stesso dicasi per i merker bit contenuti in essi e le merker
word o le doppie merker word da essi composte.
Temporizzatori
All’interno del programma utente è possibile l’utilizzo di 64 temporizzatori con indirizzi da T0 a T63. Tutti i
temporizzatori sono non ritentivi.
Contatori
Sono disponibili al programmatore 64 contatori, indirizzabili con le sigle da Z0 a Z63. I primi 8 (da Z0 a Z7)
sono ritentivi i restanti (da Z8 a Z63) sono non ritentivi.
Costanti
E’ data la possibilità di utilizzare nel programma delle costanti, per assegnare valori a merker, per caricare
temporizzatori e contatori, per operazioni di confronto, ecc. Le costanti definite per questo PLC sono di vario
genere per adattarsi alle diverse esigenze che si riscontrano in fase di programmazione. Eccone di seguito
un elenco.
Costanti di tempo
Esprimono costanti per il caricamento dei temporizzatori. Esse sono composte dalla sigla S5TIME# seguita
da una stringa alfanumerica che identifica il numero di ore, minuti, secondi e millesimi di secondo. I valori
Costanti di conteggio
Esprimono costanti a 16 bit codificate in BCD per l’impostazione dei contatori. Valori da Z#000 a Z#999.
Vedere più avanti Operazioni di conteggio.
Tabella 35: riepilogo indirizzamento variabili PC-Sim per Siemens S7 300
Tipo Min Max
Bit di ingresso E0.0 E127.7
Byte di ingresso EB0 EB127
Word di ingresso EW0 EW126
Doppia word di ingresso ED0 ED124
Bit di uscita A0.0 A127.7
Byte di uscita AB0 AB127
Word di uscita AW0 AW126
Doppia word di uscita AD0 AD124
Bit di merker (ritentivi) M0.0 M15.7
Bit di merker (non ritentivi) M64.0 M255.7
Byte di merker (ritentivi) MB0 MB15
Byte di merker (non ritentivi) MB16 MB255
Word di merker (ritentive) MW0 MW14
Word di merker (non ritentive) MW16 MW254
Doppia word di merker (ritentive) MW0 MW12
Doppia word di merker (non ritentive) MD16 MD252
Data bit DBX0.0 DBX255.7
Data byte DBB0 DBB255
Data word DBW0 DBW254
Doppia data word DBD0 DBD252
Temporizzatori T0 T63
Contatori (ritentivi) Z0 Z7
Contatori (non ritentivi) Z8 Z63
Costante decimale a 16 bit -32768 32767
Costante decimale a 32 bit L#-2147483648 L#2147483647
Costante esadecimale a 8 bit B#16#00 B#16#FF
Costante esadecimale a 16 bit W#16#0000 W#16#FFFF
Costante esadecimale a 32 bit DW#16#0000_0000 DW#16#FFFF_FFFF
Costante binaria a 16 bit 2#0000_0000_0000_0000 2#1111_1111_1111_1111
Costante binaria a 32 bit 2#0000_0000_0000_0000 2#1111_1111_1111_1111
_0000_0000_0000_0000 _1111_1111_1111_1111
Costante di conteggio Z#000 Z#999
Costante di tempo S5TIME#0H_0M_0S_0MS S5TIME#2H_46M_30S_0MS
Blocchi organizzativi OB 0 OB 127
Funzioni FC 0 FC 127
Indirizzamento dati
I dati sono variabili a uno o più bit memorizzate in appositi blocchi. L'accesso ad essi, in lettura o scrittura,
può essere effettuato con due modalità.
La prima modalità consiste nell'indirizzamento dei dati previa apertura del blocco di appartenenza con
l'operazione AUF DBn, dove n rappresenta il numero del blocco. Una volta aperto un blocco dati, ogni
istruzione di accesso a dati farà riferimento a quelli in esso contenuti. E' possibile tenere aperto un solo
blocco dati per volta. Una successiva operazione di apertura di blocco dati farà in modo che le seguenti
operazioni di accesso a dati saranno riferite solo all'ultimo blocco aperto.
L'accesso ai dati in un blocco dati aperto può essere effettuato a bit, byte, word e doppia word.
I blocchi dati sono composti, al massimo, da 256 byte (data byte). Ogni byte è indirizzabile attraverso la sigla
DBBx, dove x è il numero progressivo di byte. Ad esempio, DBB10 identifica il byte 10 del blocco. Gli indirizzi
possibili vanno quindi da DBB0 a DBB255.
Ogni data bit è indirizzabile singolarmente con la sigla DBXx.y, dove x è il numero di data byte e y è il
numero del bit all’interno di tale byte. Quindi sono possibili gli indirizzi da DBX0.0 a DBX255.7.
Inoltre, i dati possono essere indirizzati a word utilizzando la sigla DBWx dove x è il numero di word. La DBW0
(data word numero 0) è composta dai data byte DBB0 e DBB1, la DBW1 da DBB1 e DBB2, e così via. Il campo
operandi possibile va da DBW0 a DBW254. Infatti la DBW254, che raggruppa DBB254 e DBB255, è l’ultima
data word disponibile, essendo DBB255 l’ultimo byte indirizzabile.
Infine i dati sono indirizzabili a doppia word: da DBD0, che raggruppa DBB0, DBB1, DBB2 e DBB3, a DBD252,
ultima doppia word indirizzabile.
La seconda modalità consiste nell'accesso diretto ai dati di un blocco, anche non aperto. Nella scrittura
dell'operando, occorre far precedere la sigla del dato, da leggere o da scrivere, dalla sigla del blocco di
appartenenza. E così, ad esempio, la sigla DB25.DBW20 indirizza la data word 20 del blocco dati 25, e la
sigla DB42.DBX3.6 indirizza il bit 6 del data byte 3 del blocco dati 42.
Occorre infine sottolineare che i succitati limiti di indirizzamento dei dati sono altresì limitati dalla effettiva
lunghezza del blocco programmato. Cioè ad esempio, in un blocco contenente 12 data byte, sarà possibile
indirizzare solo da DBB0 a DBB11, e ogni accesso a data byte di numero superiore provocherà uno specifico
errore nell'esecuzione del programma utente. Analoghe considerazioni possono essere svolte i dati a 1, 16 o
32 bit.
Indirizzamento indiretto
le prime due istruzioni assegnano alla MW100 il valore 6; la terza istruzione carica in accumulatore il valore
della merker word puntata dalla MW100, cioè la MW6. Variando il contenuto della MW100 è possibile
caricare in accumulatore il contenuto di merker word diverse, ogni volta quella puntata dalla MW100.
Se nell’indirizzamento indiretto di variabili a più bit è sufficiente utilizzare un puntatore a 16 bit, per
l’indirizzamento indiretto di variabili a singolo bit è invece necessario utilizzare puntatori a 32 bit. I 3 bit meno
significativi costituiranno l’indirizzo di bit, mentre i bit dalla posizione 3 alla 18 verranno interpretati come
indirizzo di byte.
Per esempio il programma:
L 2#0000_0000_0000_0000_0000_0000_0000_1011
T MD44
U E[MD44]
consente di testare il valore del bit 3 (011 come bit meno significativi) del modulo di ingressi digitali 1 (valore
dei bit dal 3 al 18 dell’accumulatore 1).
Sistema operativo
Il cuore del funzionamento del PLC è il suo Sistema Operativo: un programma che gestisce il funzionamento
di base dell’apparecchiatura, registrato nella ROM dalla casa costruttrice.
Una disamina puntale delle funzioni del Sistema Operativo non rientra nei compiti di questo manuale, ed
anche nei manuali dei PLC reali è difficile trovare molti chiarimenti a riguardo; tra l’altro, il fatto che questo
programma venga eseguito è completamente trasparente al programmatore che, per certi versi, può
addirittura ignorarne l’esistenza.
Elenchiamo comunque, per completezza, alcune delle funzioni da esso svolte, quelle che riteniamo più
importanti ai fini della trattazione seguente:
Immagini di processo
Una parte della RAM della CPU è destinata al compito di fungere da memoria intermedia per l’accesso alla
periferia. Questa memoria prende il nome di immagine di processo e si divide in due parti: immagine di
processo degli ingressi ed immagine di processo delle uscite (nel seguito denominate solo immagine degli
ingressi ed immagine delle uscite).
Prima dell’elaborazione del programma utente, tutti gli ingressi del PLC vengono letti ed il loro stato viene
copiato nell’immagine degli ingressi. Al termine dell’elaborazione del programma utente, la memoria
immagine delle uscite è ricopiata nelle uscite del PLC.
Durante l’elaborazione del programma, ogni acceso agli ingressi o alle uscite non viene riferito all’effettivo
canale fisico ma ad un bit, corrispondente a quel canale, nella memoria immagine di processo. Quando si
richiede la lettura di un ingresso, quello che si legge è in realtà un bit di memoria che, in precedenza, è stato
copiato dall’ingresso effettivo. Quando si scrive su un’uscita, in realtà non si scrive direttamente sul canale di
uscita, ma viene scritto un bit di memoria che solo successivamente verrà ricopiato sul canale fisico di uscita.
Vedremo come si possa anche scrivere un ingresso e leggere un’uscita, ma questo non cambia i termini
della questione.
Il microprocessore all’interno del PLC dovrà pertanto dividere il suo tempo tra diversi compiti: eseguire il
Sistema operativo, aggiornare l’immagine degli ingressi, eseguire il programma applicativo e trasferire
l’immagine delle uscite. Il diagramma a torta della Figura 57 illustra queste attività. Il senso di percorrenza del
diagramma è quello illustrato dalla freccia. Le rispettive percentuali di tempo sono del tutto casuali ed, in
particolare, quella dedicata all’esecuzione del programma utente è variabile con le dimensioni dello stesso
cioè, in generale, quanto più lungo è il programma tanto più tempo occorrerà alla CPU per eseguirlo
(escludendo da questa considerazione i programmi che contengono operazioni di salto).
Il sistema operativo, subito prima di effettuare il richiamo del programma utente, avvia un monostabile che ha
in genere una durata che va da qualche decina fino a pochissime centinaia di millisecondi. Supponiamo che il
programma utente richieda per la sua esecuzione un tempo inferiore a quello del monostabile. In questa
situazione, prima di ogni suo successivo richiamo il monostabile verrebbe avviato nuovamente e, come
risultato, l’uscita di quest’ultimo rimarrebbe continuamente alta.
Se, invece, il programma utente richiedesse per la sua esecuzione più tempo della durata del monostabile,
allora l’uscita di questo si porterebbe allo stato basso, provocando l’immediato passaggio in Stop del PLC.
Un programma realizzato male potrebbe portare la CPU ad eseguire indefinitamente, o per un tempo
eccessivo ai fini della rapidità del controllo dell’impianto, un ciclo chiuso di istruzioni senza tornare
all’elaborazione del sistema operativo. Questa condizione potrebbe portare danni all’impianto e grave
pericolo per il personale che vi opera. Il controllo del tempo di ciclo, che nella letteratura tecnica specializzata
trovate anche col nome di watch-dog, evita proprio questo problema.
Anche PC-Sim controlla che il vostro programma non generi un ciclo chiuso ma, in questo caso, i molteplici e
mutabili compiti di un PC, impongono tempi più lunghi per la rilevazione del problema, dell’ordine di qualche
secondo.
Programmazione strutturata
Il programma per questo PLC può essere redatto dividendone il contenuto in più parti. Ognuna di queste
prende il nome di blocco. Esistono blocchi organizzativi (OB), funzioni (FC) e blocchi dati (DB). I diversi
blocchi possono essere richiamati l’uno dall’altro utilizzando le operazioni di chiamata o di apertura che
saranno trattate nel paragrafo dedicato alla descrizione delle operazioni. Un programma scritto secondo
questo criterio prende il nome di programma strutturato.
L’operazione di divisione del programma in blocchi, cioè la sua strutturazione, non è indispensabile: il
programma può essere tranquillamente redatto in un unico blocco e funzionare perfettamente. Questo è
quanto faremo all’inizio della nostra pratica con il PLC. Nel capitolo seguente sono riportati una serie di
programmi la maggioranza dei quali, i più semplici, sono scritti in un unico blocco. Ma, quando i programmi
diventano lunghi, la suddivisione può assumere diversi vantaggi:
• Accorpamento di parti identiche di codice in un blocco e richiamo di questo da dove necessario. Del tutto
simile alla scrittura di sottoprogrammi in linguaggi di programmazione evoluti per PC.
• Trasportabilità di blocchi con funzioni specifiche da un progetto all’altro.
• Aumento della leggibilità del programma e, quindi, della semplicità di manutenzione successiva.
In questa sezione verranno descritti i diversi tipi di blocchi, le loro peculiarità e le loro funzioni. La Tabella 36
riassume le caratteristiche principali dei diversi tipi di blocco.
I blocchi organizzativi rappresentano l’interfaccia tra il sistema operativo ed il programma utente. Sono cioè
blocchi che l’utente può programmare ma che normalmente vengono chiamati da sistema operativo
ciclicamente o a seguito del verificarsi di specifiche condizioni. Essi possono essere programmati in ladder o
in AWL. Di seguito elenchiamo i blocchi organizzativi che il sistema operativo del PLC simulato chiama e le
condizioni per cui tale chiamata si verifica.
Funzioni (FC)
Sono blocchi che rappresentano parti compiute di programma. Affinché siano eseguiti essi dovranno essere
richiamati da altri blocchi con operazioni UC, CC o CALL.
Le funzioni sono parametrizzabili, ossia ad esse possono essere passati dei parametri dal blocco chiamante.
Per le istruzioni che ne fanno uso, i parametri verranno sostituiti nel blocco chiamato agli operandi formali. Il
massimo numero di parametri per blocco è di 40. Ogni parametro deve essere dichiarato nell’apposita griglia
dell’editor AWL specificandone il nome, la dichiarazione ed il tipo. I parametri nelle operazioni CALL FC
devono corrispondere per tipo e numero a quelli attesi.
La Tabella 37 riassume i possibili parametri e gli operandi attuali corrispondenti.
Tabella 37: Dichiarazione e tipo dei parametri per funzione e operandi attuali ammessi
Dichiarazione Tipo Operandi attuali
BOOL Costanti, E, A, M, DBX, T, Z
BYTE EB, AB, MB, DBB
In
WORD EW, AW, MW, DBW
DWORD ED, AD, MD, DBD
BOOL E, A, M, DBX
BYTE EB, AB, MB, DBB
Out
WORD EW, AW, MW, DBW
DWORD ED, AD, MD, DBD
BOOL E, A, M, DBX
BYTE EB, AB, MB, DBB
In_out
WORD EW, AW, MW, DBW
DWORD ED, AD, MD, DBD
In questi blocchi possono essere immagazzinati dati che serviranno nell’elaborazione del programma utente.
I blocchi dati sono strutturati in byte, a partire dal numero 0 fino al numero 255, al massimo. L’accesso ai dati
può essere effettuato con operazioni di lettura e scrittura a byte (DBB), a word (DBW) ed a doppia word
(DBD) oppure di test e memorizzazione di bit (DBX).
E' necessaria l'apertura del blocco mediante l'istruzione AUF (es. AUF DB20), prima di accedere ai dati in
esso contenuti in modo diretto (es. L DBB6). Altrimenti è possibile accedere ai dati di un blocco non aperto
specificando prima del dato il blocco di appartenenza (es. L DB20.DBB6).
Operazioni di accesso a dati oltre la lunghezza del blocco provocano errore di esecuzione e portano la CPU
in Stop.
Programmazione in AWL
La modalità di programmazione AWL o Lista istruzioni costituisce una delle due metodologie di
implementazione di programmi utente in questo PLC. Essa consiste nella scrittura consecutiva di istruzioni;
ognuna di queste costituisce la più piccola unità di programma e rappresenta un compito elementare per la
CPU nella elaborazione del programma utente.
Istruzioni
Ogni istruzione AWL è composta da una operazione e, dove necessario, da un operando. Di questi ultimi
abbiamo già parlato nel paragrafo dedicato all’indirizzamento. Nei paragrafi seguenti forniamo, invece, una
descrizione dettagliata delle operazioni, raggruppate per tipologia. Viene inoltre fornita, per comodità di
consultazione da parte del programmatore, una tabelle riepilogativa delle operazioni.
Registri
Per l’esecuzione del programma utente la CPU utilizza diversi registri allo scopo di memorizzare risultati
intermedi di calcolo e/o valutare se eseguire o meno certe operazioni. Forniamo di seguito l’elenco e la
descrizione di questi registri.
RLC
E’ un registro ad 1 bit che viene utilizzato come memoria di lavoro nell’elaborazione del programma utente. In
esso vengono depositati i risultati delle operazioni logiche su bit o delle operazioni di test sullo stato e da
esso vengono prelevati i valori per le operazioni di memorizzazione.
Accumulatori
Sono due registri a 32 bit denotati con le sigle ACCU1 ed ACCU2. In ACCU1 vengono depositati i valori letti
con operazioni di caricamento, ottenuti da operazioni logiche su word, matematiche e di conversione, e da
esso viene prelevato il valore da ricopiare nelle operazioni di trasferimento e di impostazione di temporizzatori
e contatori. ACCU2 serve come registro ausiliario ad ACCU1 nelle operazioni logiche su parola, di confronto
e matematiche.
Indicatori
• OV
Essi vengono influenzati da operazioni di confronto, calcolo, scorrimento e conversione e vengono testati
dalle operazioni di salto. In particolare il bit OV viene portato a 1 i presenza di overflow.
Vedere la Tabella 43 per informazioni sull’influenza delle operazioni sugli indicatori A0 ed A1.
INC (Incremento)
Il contenuto del byte basso della parola bassa di ACCU1 viene incrementato della quantità specificata
dall’operando. I restanti byte non subiscono modifiche, viene trascurato anche l’eventuale riporto.
Operandi ammessi: numero da 0 a 255
DEC (Decremento)
Il contenuto del byte basso della parola bassa di ACCU1 viene decrementato della quantità specificata
dall’operando. I restanti byte non subiscono modifiche, viene trascurato anche l’eventuale prestito.
Operandi ammessi: numero da 0 a 255
Se l’istruzione non è la prima di una sequenza, cioè se l’istruzione precedente non è RLC limitante, esegue la
AND tra il contenuto di RLC e lo stato dell’operando specificato e pone il risultato in RLC.
Se l’istruzione è la prima di una sequenza, cioè se l’istruzione precedente è RLC limitante, lo stato
dell’operando viene copiato in RLC.
Consultare la Tabella 42 per conoscere quali operazioni sono RLC limitanti.
Operandi ammessi: E, A, M, DBX, T, Z.
Se l’istruzione non è la prima di una sequenza, cioè se l’istruzione precedente non è RLC limitante, esegue la
AND tra il contenuto di RLC e il complemento dello stato dell’operando specificato e pone il risultato in RLC.
Se l’istruzione è la prima di una sequenza, cioè se l’istruzione precedente è RLC limitante, il complemento
dello stato dell’operando viene copiato in RLC.
Consultare la Tabella 42 per conoscere quali operazioni sono RLC limitanti.
Operandi ammessi: E, A, M, DBX, T, Z.
Se l’istruzione non è la prima di una sequenza, cioè se l’istruzione precedente non è RLC limitante, esegue la
OR tra il contenuto di RLC e lo stato dell’operando specificato e pone il risultato in RLC.
Se l’istruzione è la prima di una sequenza, cioè se l’istruzione precedente è RLC limitante, lo stato
dell’operando viene copiato in RLC.
Consultare la Tabella 42 per conoscere quali operazioni sono RLC limitanti.
Operandi ammessi: E, A, M, DBX, T, Z.
Se l’istruzione non è la prima di una sequenza, cioè se l’istruzione precedente non è RLC limitante, esegue la
OR tra il contenuto di RLC e il complemento dello stato dell’operando specificato e pone il risultato in RLC.
Se l’istruzione è la prima di una sequenza, cioè se l’istruzione precedente è RLC limitante, il complemento
dello stato dell’operando viene copiato in RLC.
Consultare la Tabella 42 per conoscere quali operazioni sono RLC limitanti.
Operandi ammessi: E, A, M, DBX, T, Z.
Se l’istruzione non è la prima di una sequenza, cioè se l’istruzione precedente non è RLC limitante, esegue
l’OR esclusivo tra il contenuto di RLC e lo stato dell’operando specificato e pone il risultato in RLC.
Se l’istruzione è la prima di una sequenza, cioè se l’istruzione precedente è RLC limitante, lo stato
dell’operando viene copiato in RLC.
Consultare la Tabella 42 per conoscere quali operazioni sono RLC limitanti.
Operandi ammessi: E, A, M, DBX, T, Z.
Se l’istruzione non è la prima di una sequenza, cioè se l’istruzione precedente non è RLC limitante, esegue
l’OR esclusivo tra il contenuto di RLC e il complemento dello stato dell’operando specificato e pone il risultato
in RLC.
Se l’istruzione è la prima di una sequenza, cioè se l’istruzione precedente è RLC limitante, il complemento
dello stato dell’operando viene copiato in RLC.
Consultare la Tabella 42 per conoscere quali operazioni sono RLC limitanti.
Operandi ammessi: E, A, M, DBX, T, Z.
O (Or di AND)
Il risultato logico combinatorio RLC attuale viene accantonato per essere messo in OR con l’RLC corrente
alla prima operazione RLC limitante. Il risultato viene depositato in RLC.
Operandi ammessi: nessuno
L’RLC corrente viene accantonato per essere ripreso alla chiusura della parentesi e messo in AND con l’RLC
risultante dal calcolo dell’espressione entro parentesi.
Operandi ammessi: nessuno
L’RLC corrente viene accantonato per essere ripreso alla chiusura della parentesi e messo in AND con il
complemento dell’RLC risultante dal calcolo dell’espressione entro parentesi.
Operandi ammessi: nessuno
L’RLC corrente viene accantonato per essere ripreso alla chiusura della parentesi e messo in OR con l’RLC
risultante dal calcolo dell’espressione entro parentesi.
Operandi ammessi: nessuno
L’RLC corrente viene accantonato per essere ripreso alla chiusura della parentesi e messo in OR con il
complemento dell’RLC risultante dal calcolo dell’espressione entro parentesi.
Operandi ammessi: nessuno
L’RLC corrente viene accantonato per essere ripreso alla chiusura della parentesi e messo in OR esclusivo
con l’RLC risultante dal calcolo dell’espressione entro parentesi.
Operandi ammessi: nessuno
L’RLC corrente viene accantonato per essere ripreso alla chiusura della parentesi e messo in XOR con il
complemento dell’RLC risultante dal calcolo dell’espressione entro parentesi.
Operandi ammessi: nessuno
) (Chiusura di parentesi)
Indica la fine di un’espressione entro parentesi. L’RLC accantonato con un’operazione di apertura parentesi
viene recuperato e messo in AND, OR o in XOR con l’RLC attuale, a seconda che l’operazione che ha dato
inizio all’espressione entro parentesi sia una U(, una O( oppure una XO(. Il risultato viene depositato in RLC.
Operandi ammessi: nessuno
FP (Fronte di salita)
Confronta lo stato di RLC prima dell’esecuzione dell’operazione con lo stato dell’operando. Attiva RLC se il
primo è 1 ed il secondo è 0, quindi memorizza RLC nell’operando. In questo modo l’operazione consente di
rilevare il fronte di salita di un segnale. Per dettagli vedere l’esempio “Rilevazione fronti” proposto nel capitolo
successivo.
Operandi ammessi: M, DBX
FN (Fronte di discesa)
Confronta lo stato di RLC prima dell’esecuzione dell’operazione con lo stato dell’operando. Attiva RLC se il
primo è 0 ed il secondo è 1, quindi memorizza RLC nell’operando. In questo modo l’operazione consente di
rilevare il fronte di discesa di un segnale. Per dettagli vedere l’esempio “Rilevazione fronti” proposto nel
capitolo successivo.
Operandi ammessi: M, DBX
NOT
SET
CLR
S (Set)
Se RLC=1, l’operando viene impostato ad 1. Se RLC=0, l’operando non viene modificato. L’operazione limita
l’RLC, cioè costituisce un’operazione di chiusura di sequenza e la successiva operazione logica U, O, XO,
UN, ON o XON verrà interpretata come un test sullo stato dell’operando.
Operandi ammessi: E, A, M, DBX
R (Reset)
Se RLC=1, l’operando viene resettato ad 0. Se RLC=0 l’operando non viene modificato. L’operazione limita
l’RLC, cioè costituisce un’operazione di chiusura di sequenza e la successiva operazione logica U, O, XO,
UN, ON o XON verrà interpretata come un test sullo stato dell’operando.
Operandi ammessi: E, A, M, DBX
= (Assegnazione)
Il valore di RLC viene copiato nell’operando. L’operazione limita l’RLC, cioè costituisce un’operazione di
chiusura di sequenza e la successiva operazione logica U, O, XO, UN, ON o XON verrà interpretata come un
test sullo stato dell’operando.
Operandi ammessi: E, A, M, DBX
L (Caricamento)
Con le operazioni di caricamento è possibile ricopiare nel registro ACCU1 il valore di operandi a byte, a word
ed a doppia word. Prima di ogni caricamento, il contenuto di ACCU1 viene trasferito in ACCU2.
Per operazioni di caricamento di byte, il valore dell’operando viene ricopiato nel byte basso della parola bassa
di ACCU1; gli altri byte di ACCU1 vengono azzerati.
Per operazioni di caricamento di word, il valore dell’operando viene ricopiato nella parola bassa di ACCU1; la
parola alta viene azzerata.
Per operazioni di caricamento di temporizzatori o contatori, il valore di tempo o di conteggio attuale viene
caricato nella parte bassa di ACCU1 in codifica naturale.
Operandi ammessi: Costanti, EB, EW, ED, AB, AW, AD, MB, MW, MD, DBB, DBW, DBD, T, Z
LC (Caricamento BCD)
Con questa operazione, il valore di tempo o di conteggio, codificato BCD, dell’operando specificato viene
caricato nella parola bassa di ACCU1. Prima del caricamento il contenuto di ACCU1 viene trasferito in
ACCU2.
Operandi ammessi: T, Z
T (Trasferimento)
Con le operazioni di trasferimento è possibile ricopiare in operandi a byte, a word ed a doppia word il
contenuto del registro ACCU1. L’esecuzione dell'operazione non modifica i contenuti di ACCU1 e ACCU2.
Per operazioni di trasferimento di byte, viene ricopiato solo il byte basso della parola bassa di ACCU1.
Per operazioni di trasferimento di word, viene ricopiato solo la parola bassa di ACCU1.
Operandi ammessi: EB, EW, ED, AB, AW, AD, MB, MW, MD, DBB, DBW, DBD
Operazioni di temporizzazione
Premettiamo alla descrizione delle operazioni di temporizzazione alcuni chiarimenti riguardo alla codifica dei
tempi.
Quando si avvia un temporizzatore con una delle operazioni illustrate più avanti, il valore della parola bassa di
ACCU1 verrà utilizzato per l’impostazione del tempo come mostrato nel seguente schema.
I bit 13 e 12 determinano la base tempi; i bit da 0 ad 11, in codifica BCD, determinano il numero di intervalli di
detta base che costituiscono la durata della temporizzazione. I bit 14 e 15 vengono trascurati.
La base è codificata nel modo specificato nella tabella seguente.
Quindi, il più piccolo tempo rappresentabile è 1 centesimo di secondo, un intervallo con base da un
centesimo di secondo; il più grande è 9990 secondi, 999 intervalli da 10 secondi: quasi 3 ore.
Se, ad esempio, si desidera avviare un temporizzatore da 350s occorrerà caricare in ACCU1 il valore
(0010_0011_0101_0000)2, o l’equivalente esadecimale (2350)16, con un’istruzione L W#16#2350.
L’errore massimo che si commette in una temporizzazione è pari ad un intervallo della base tempi utilizzata;
quindi, quando possibile, è sempre conveniente utilizzare la rappresentazione con la base più piccola.
Dovendo avviare un temporizzatore da 9 secondi, è quindi preferibile il caricamento di una costante che
esprima detto tempo come 900 intervalli da un centesimo (W#16#0900), piuttosto che 90 da un decimo
(W#16#1090) o, peggio ancora, 9 intervalli da un secondo (W#16#2009).
Una seconda possibilità di impostazione di tempo, più comoda, è offerta con il caricamento di costante tipo
S5TIME. Tale costante ha il formato S5TIME#aH_bbM_ccS_dddMS; dove ‘a’ rappresenta il numero delle ore
(H), ‘bb’ il numero dei minuti (M), ‘cc’ il numero dei secondi (S) e ‘ddd’ il numero dei millisecondi (MS) del
tempo da impostare. La base tempo ed il numero degli intervalli in detta base che approssimano il tempo
impostato, vengono calcolati automaticamente dal compilatore del linguaggio.
Nell’esempio precedente, l’istruzione da utilizzare per il caricamento di una costante di tempo da 350s
sarebbe L S5TIME#5M_50S; dopo l’operazione di caricamento il contenuto della parola bassa
dell’accumulatore 1 sarà ancora una volta (2350)16.
SI (Impulso)
Attivazione di un temporizzatore ad impulso. La temporizzazione viene attivata sul fronte di salita di RLC con
il tempo codificato specificato nella parola bassa di ACCU1. Il tempo continua a scorrere fintanto che RLC=1.
Se RLC diventa 0, il tempo viene impostato su 0.
Lo stato del temporizzatore è alto per tutto lo scorrere del tempo.
Operandi ammessi: T
SV (Impulso prolungato)
Attivazione di un temporizzatore ad impulso prolungato. La temporizzazione viene attivata sul fronte di salita
di RLC con il tempo codificato specificato nella parola bassa di ACCU1. Lo stato di RLC non influenza
ulteriormente la temporizzazione.
Lo stato del temporizzatore è alto per tutto lo scorrere del tempo.
Operandi ammessi: T
SE (Ritardo all’eccitazione)
Attivazione di un temporizzatore con ritardo all’eccitazione con memoria. La temporizzazione viene attivata in
corrispondenza del fronte di salita di RLC con il tempo codificato specificato nella parola bassa di ACCU1. Se
RLC diventa 0, il tempo non viene influenzato.
Lo stato del temporizzatore è alto quando il tempo è trascorso. Esso ritorna allo stato basso solo dopo un
reset del temporizzatore con operazione R.
Operandi ammessi: T
R (Reset di un temporizzatore)
Operazioni di conteggio
Premettiamo alla descrizione delle operazioni alcuni chiarimenti riguardo alla codifica dei valori per
l’impostazione dei contatori.
Quando si imposta un contatore, occorre specificarne il valore preset in ACCU1 come mostrato nel seguente
schema.
I bit da 0 ad 11, in codifica BCD, rappresentano il valore iniziale del conteggio che potrà quindi essere
compreso tra 0 e 999. I bit da 12 a 15 non sono significativi.
Il valore potrà essere caricato in ACCU1 con una istruzione di caricamento di costante esadecimale, binaria o
di conteggio. Ad esempio, le istruzioni L W#16#0050, L 2#0000_0000_0101_0000 e L Z#50 caricano tutte in
ACCU1 il valore 50 codificato BCD.
S (Set di un contatore)
Il conteggio viene impostato al valore in ACCU1 in corrispondenza del fronte di salita di RLC.
Lo stato del contatore va alto se il valore di conteggio impostato è diverso da 0.
Operandi ammessi: Z
R (Reset di un contatore)
Fintanto che RLC = 1, il valore di conteggio viene impostato a 0 e lo stato del contatore va basso.
Operandi ammessi: Z
ZV (Conteggio in avanti)
ZR (Conteggio indietro)
+ (Addizione di intero)
Con operando a 16 bit, somma il contenuto della parola bassa di ACCU1 con la costante specificata. Il
contenuto di ACCU2 e la parola alta di ACCU1 rimangono inalterati. La parola alta di ACCU1 non subisce
modifiche.
Con operando a 32 bit, somma il contenuto di ACCU1 con la costante specificata e deposita il risultato in
ACCU1.
In entrambe i casi, il contenuto di ACCU2 rimane inalterato. Vengono influenzati i bit di stato A1, A0 e OV.
Operandi ammessi: costanti a 16 o 32 bit
+I (Addizione a 16 bit)
Le parole basse di ACCU2 ed ACCU1 vengono sommate come numeri a 16 bit con segno. Il risultato viene
memorizzato nella parola bassa di ACCU1. Il contenuto di ACCU2 e la parola alta di ACCU1 rimangono
inalterati. Vengono influenzati i bit di stato A1, A0 e OV.
Operandi ammessi: nessuno
-I (Sottrazione a 16 bit)
La parola bassa di ACCU1 viene sottratta dalla parola bassa ACCU2. I valori vengono interpretati come
numeri a 16 bit con segno. Il risultato viene memorizzato nella parola bassa ACCU1. Il contenuto di ACCU2 e
la parola alta di ACCU1 rimangono inalterati. Vengono influenzati i bit di stato A1, A0 e OV.
Operandi ammessi: nessuno
*I (Moltiplicazione a 16 bit)
La parola bassa di ACCU1 viene moltiplicata per la parola bassa ACCU2. I valori vengono interpretati come
numeri a 16 bit con segno. Il risultato viene memorizzato in ACCU1 su 32 bit. Il contenuto di ACCU2 rimane
inalterato. Vengono influenzati i bit di stato A1, A0 e OV.
Operandi ammessi: nessuno
/I (Divisione a 16 bit)
La parola bassa di ACCU2 viene divisa per la parola bassa ACCU1. I valori vengono interpretati come numeri
a 16 bit con segno. Il quoziente viene memorizzato nella parola bassa di ACCU1; il resto viene memorizzato
nella parola alta di ACCU1. Il contenuto di ACCU2 rimane inalterato. Vengono influenzati i bit di stato A1, A0
e OV.
Operandi ammessi: nessuno
+D (Addizione a 32 bit)
I contenuti di ACCU2 ed ACCU1 vengono sommati come numeri a 32 bit con segno. Il risultato viene
memorizzato nella parola bassa in ACCU1. Il contenuto di ACCU2 rimane inalterato. Vengono influenzati i bit
di stato A1, A0 e OV.
Operandi ammessi: nessuno
-D (Sottrazione a 32 bit)
Il contenuto di ACCU1 viene sottratto dal contenuto di ACCU2. I valori vengono interpretati come numeri a 32
bit con segno. Il risultato viene memorizzato in ACCU1. Il contenuto di ACCU2 rimane inalterato. Vengono
influenzati i bit di stato A1, A0 e OV.
Operandi ammessi: nessuno
*D (Moltiplicazione a 32 bit)
Il contenuto di ACCU1 viene moltiplicato per il contenuto di ACCU2. I valori vengono interpretati come numeri
a 32 bit con segno. Il risultato viene memorizzato in ACCU1 su 32 bit. Il contenuto di ACCU2 rimane
inalterato. Vengono influenzati i bit di stato A1, A0 e OV.
Operandi ammessi: nessuno
/D (Divisione a 32 bit)
Il contenuto di ACCU2 viene diviso per il contenuto di ACCU1. I valori vengono interpretati come numeri a 32
bit con segno. Il risultato viene memorizzato in ACCU1. Il contenuto di ACCU2 rimane inalterato. Vengono
influenzati i bit di stato A1, A0 e OV.
Operandi ammessi: nessuno
MOD (Modulo)
Il contenuto di ACCU2 viene diviso per il contenuto di ACCU1. I valori vengono interpretati come numeri a 32
bit con segno. Il resto viene memorizzato in ACCU1. Il contenuto di ACCU2 rimane inalterato. Vengono
influenzati i bit di stato A1, A0 e OV.
Operandi ammessi: nessuno
Operazioni di confronto
Se la parola bassa di ACCU2 è uguale alla parola bassa di ACCU1, l’RLC viene impostato ad 1, altrimenti
viene portato a 0. I bit di stato A1 e A0 vengono influenzati.
Operandi ammessi: nessuno
Se la parola bassa di ACCU2 è diversa dalla parola bassa di ACCU1, l’RLC viene impostato ad 1, altrimenti
viene portato a 0. I bit di stato A1 e A0 vengono influenzati.
Operandi ammessi: nessuno
Se la parola bassa di ACCU2 è maggiore della parola bassa di ACCU1, l’RLC viene impostato ad 1,
altrimenti viene portato a 0. I bit di stato A1 e A0 vengono influenzati.
Operandi ammessi: nessuno
Se la parola bassa di ACCU2 è maggiore o uguale alla parola bassa di ACCU1, l’RLC viene impostato ad 1,
altrimenti viene portato a 0. I bit di stato A1 e A0 vengono influenzati.
Operandi ammessi: nessuno
Se la parola bassa di ACCU2 è minore della parola bassa di ACCU1, l’RLC viene impostato ad 1, altrimenti
viene portato a 0. I bit di stato A1 e A0 vengono influenzati.
Operandi ammessi: nessuno
Se la parola bassa di ACCU2 è minore o uguale alla parola bassa di ACCU1, l’RLC viene impostato ad 1,
altrimenti viene portato a 0. I bit di stato A1 e A0 vengono influenzati.
Operandi ammessi: nessuno
Se il contenuto di ACCU2 è uguale al contenuto di ACCU1, l’RLC viene impostato ad 1, altrimenti viene
portato a 0. I bit di stato A1 e A0 vengono influenzati.
Operandi ammessi: nessuno
Se il contenuto di ACCU2 è diverso dal contenuto di ACCU1, l’RLC viene impostato ad 1, altrimenti viene
portato a 0. I bit di stato A1 e A0 vengono influenzati.
Operandi ammessi: nessuno
Se il contenuto di ACCU2 è maggiore del contenuto di ACCU1, l’RLC viene impostato ad 1, altrimenti viene
portato a 0. I bit di stato A1 e A0 vengono influenzati.
Operandi ammessi: nessuno
Se il contenuto di ACCU2 è maggiore o uguale al contenuto di ACCU1, l’RLC viene impostato ad 1, altrimenti
viene portato a 0. I bit di stato A1 e A0 vengono influenzati.
Operandi ammessi: nessuno
Se il contenuto di ACCU2 è minore del contenuto di ACCU1, l’RLC viene impostato ad 1, altrimenti viene
portato a 0. I bit di stato A1 e A0 vengono influenzati.
Operandi ammessi: nessuno
Se il contenuto di ACCU2 è minore o uguale al contenuto di ACCU1, l’RLC viene impostato ad 1, altrimenti
viene portato a 0. I bit di stato A1 e A0 vengono influenzati.
Operandi ammessi: nessuno
Operazioni di conversione
Il contenuto della parola bassa di ACCU1 viene trasformato nel suo complemento ad 1, cioè ogni bit viene
invertito. La parola alta non viene modificata.
Operandi ammessi: nessuno
Il contenuto della parola bassa di ACCU1 viene trasformato nel suo complemento ad 2, cioè prima viene
invertito ogni bit e successivamente all’insieme viene sommato +1. La parola alta non viene modificata.
I bit di stato A1 e A0 vengono influenzati. Il bit di overflow viene impostato solo nel caso in cui la parola bassa
di ACCU1 prima dell’esecuzione dell’operazione vale (-32768)10, cioè (8000)16.
Operandi ammessi: nessuno
Il contenuto di ACCU1 viene trasformato nel suo complemento ad 1, cioè ogni bit viene invertito.
Operandi ammessi: nessuno
Il contenuto di ACCU1 viene trasformato nel suo complemento ad 2, cioè prima viene invertito ogni bit e
successivamente all’insieme viene sommato +1.
Il bit di overflow viene impostato solo nel caso in cui la parola bassa di ACCU1 prima dell’esecuzione
dell’operazione vale (-2147483648)10, cioè (80000000)16.
Operandi ammessi: nessuno
UW (And su word)
Esegue la combinazione logica AND bit a bit tra la parola bassa di ACCU1 e la parola bassa di ACCU2. Il
risultato viene depositato nella parola bassa di ACCU1. Il contenuto di ACCU2 e la parola alta di ACCU1
rimangono inalterati.
Operandi ammessi: nessuno
OW (Or su word)
Esegue la combinazione logica OR bit a bit tra la parola bassa di ACCU1 e la parola bassa di ACCU2. Il
risultato viene depositato nella parola bassa di ACCU1. Il contenuto di ACCU2 e la parola alta di ACCU1
rimangono inalterati.
Operandi ammessi: nessuno
Esegue la combinazione logica OR esclusivo bit a bit tra la parola bassa di ACCU1 e la parola bassa di
ACCU2. Il risultato viene depositato nella parola bassa di ACCU1. Il contenuto di ACCU2 e la parola alta di
ACCU1 rimangono inalterati.
Operandi ammessi: nessuno
Esegue la combinazione logica AND bit a bit tra il contenuto di ACCU1 ed il contenuto di ACCU2. Il risultato
viene depositato in ACCU1. Il contenuto di ACCU2 non viene modificato.
Operandi ammessi: nessuno
Esegue la combinazione logica OR bit a bit tra il contenuto di ACCU1 ed il contenuto di ACCU2. Il risultato
viene depositato in ACCU1. Il contenuto di ACCU2 non viene modificato.
Operandi ammessi: nessuno
Esegue la combinazione logica OR esclusivo bit a bit tra il contenuto di ACCU1 ed il contenuto di ACCU2. Il
risultato viene depositato in ACCU1. Il contenuto di ACCU2 non viene modificato.
Scorrimento a sinistra dei bit della parola bassa di ACCU1 del numero di posizioni espresse nell’operando
come numero da 0 a 15.
I bit fuoriusciti da sinistra vengono persi, mentre le posizioni liberate a destra vengono riempite con zeri. Il bit
fuoriuscito per ultimo viene memorizzato in A1, mentre i bit A0 e OV vengono resettati. Le operazioni di salto
che verificano lo stato di A1 possono essere efficacemente utilizzate subito dopo un’operazione di
scorrimento.
In caso di operando uguale a 0, nessuno scorrimento viene compiuto e l’istruzione viene sostanzialmente
ignorata. In assenza di operando, il numero di posizioni dello scorrimento viene letto nel byte basso della
parola bassa di ACCU2. In questo caso, il campo dei valori di scorrimento possibile diviene 0-255 ma, per
tutti i valori superiori a 16, l’operazione di scorrimento dà come risultato (0000)16.
Operandi ammessi: numero da 0 a 15 / nessuno
Scorrimento a destra dei bit della parola bassa di ACCU1 del numero di posizioni espresse nell’operando
come numero da 0 a 15.
I bit fuoriusciti da destra vengono persi, mentre le posizioni liberate a sinistra vengono riempite con zeri. Il bit
fuoriuscito per ultimo viene memorizzato in A1, mentre i bit A0 e OV vengono resettati. Le operazioni di salto
che verificano lo stato di A1 possono essere efficacemente utilizzate subito dopo un’operazione di
scorrimento.
In caso di operando uguale a 0, nessuno scorrimento viene compiuto e l’istruzione viene sostanzialmente
ignorata. In assenza di operando, il numero di posizioni dello scorrimento viene letto nel byte basso della
parola bassa di ACCU2. In questo caso, il campo dei valori di scorrimento possibile diviene 0-255 ma, per
tutti i valori superiori a 16, l’operazione di scorrimento dà come risultato (0000)16.
Operandi ammessi: numero da 0 a 15 / nessuno
Scorrimento a sinistra dei bit di ACCU1 del numero di posizioni espresse nell’operando come numero da 0 a
32.
I bit fuoriusciti da sinistra vengono persi, mentre le posizioni liberate a destra vengono riempite con zeri. Il bit
fuoriuscito per ultimo viene memorizzato in A1, mentre i bit A0 e OV vengono resettati a 0. Le operazioni di
salto che verificano lo stato di A1 potranno essere utilmente utilizzate subito dopo un’operazione di
scorrimento.
In caso di operando uguale a 0, nessuno scorrimento viene compiuto e l’istruzione viene sostanzialmente
ignorata. In assenza di operando, il numero di posizioni dello scorrimento viene letto nel byte basso della
parola bassa di ACCU2. In questo caso, il campo dei valori di scorrimento possibile diviene 0-255 ma, per
tutti i valori superiori a 32, l’operazione di scorrimento dà come risultato (00000000)16.
Operandi ammessi: numero da 0 a 32 / nessuno
Scorrimento a destra dei bit di ACCU1 del numero di posizioni espresse nell’operando come numero da 0 a
32.
I bit fuoriusciti da destra vengono persi, mentre le posizioni liberate a sinistra vengono riempite con zeri. Il bit
fuoriuscito per ultimo viene memorizzato in A1, mentre i bit A0 e OV vengono resettati. Le operazioni di salto
che verificano lo stato di A1 possono essere efficacemente utilizzate subito dopo un’operazione di
scorrimento.
In caso di operando uguale a 0, nessuno scorrimento viene compiuto e l’istruzione viene sostanzialmente
ignorata. In assenza di operando, il numero di posizioni dello scorrimento viene letto nel byte basso della
parola bassa di ACCU2. In questo caso, il campo dei valori di scorrimento possibile diviene 0-255 ma, per
tutti i valori superiori a 32, l’operazione di scorrimento dà come risultato (00000000)16.
Operandi ammessi: numero da 0 a 32 / nessuno
Rotazione a sinistra dei bit di ACCU1 del numero di posizioni espresse nell’operando come numero da 0 a
32.
I bit fuoriusciti da sinistra vengono reinseriti nelle posizioni liberate a destra. Il bit fuoriuscito per ultimo viene
anche memorizzato in A1, mentre i bit A0 e OV vengono resettati. Le operazioni di salto che verificano lo
stato di A1 possono essere efficacemente utilizzate subito dopo un’operazione di rotazione.
In caso di operando uguale a 0, nessuno scorrimento viene compiuto e l’istruzione viene sostanzialmente
ignorata. In assenza di operando, il numero di posizioni dello scorrimento viene letto nel byte basso della
parola bassa di ACCU2. In questo caso, il campo dei valori di scorrimento possibile diviene 0-255.
Operandi ammessi: numero da 0 a 32 / nessuno
Rotazione a destra dei bit di ACCU1 del numero di posizioni espresse nell’operando come numero da 0 a 32.
I bit fuoriusciti da destra vengono reinseriti nelle posizioni liberate a sinistra. Il bit fuoriuscito per ultimo viene
anche memorizzato in A1, mentre i bit A0 e OV vengono resettati. Le operazioni di salto che verificano lo
stato di A1 possono essere efficacemente utilizzate subito dopo un’operazione di rotazione.
In caso di operando uguale a 0, nessuno scorrimento viene compiuto e l’istruzione viene sostanzialmente
ignorata. In assenza di operando, il numero di posizioni dello scorrimento viene letto nel byte basso della
parola bassa di ACCU2. In questo caso, il campo dei valori di scorrimento possibile diviene 0-255.
Operandi ammessi: numero da 0 a 32 / nessuno
Indipendentemente da RLC, il blocco dati specificato come operando diviene il blocco dati attuale, cioè il
blocco a cui faranno riferimento tutte le operazioni di lettura e scrittura dati a bit, byte, word e doppia word. Il
blocco aperto rimane attivo fino all’apertura di un nuovo blocco. In caso di successivo richiamo di blocco con
operazioni UC, CC o CALL il blocco dati eventualmente aperto rimane attivo anche nel blocco richiamato.
Operandi ammessi: DB
Operazioni di salto
Se A1=0 e A0=0 l’elaborazione del programma continua dall’istruzione identificata dall’etichetta specificata
come operando; altrimenti l’elaborazione prosegue con l’istruzione successiva. RLC non viene modificato.
La condizione A1=0 e A0=0 indica che il risultato di un’operazione matematica o di conversione è uguale a 0,
oppure che ACCU2=ACCU1 per una operazione di confronto, oppure che l’ultimo bit spostato in
un’operazione di scorrimento o rotazione è 0, oppure ancora che il risultato di un’operazione logica su parola
è uguale a 0. Vedere Tabella 43.
Operandi ammessi: etichetta
Se A1=1 e A0=0 l’elaborazione del programma continua dall’istruzione identificata dall’etichetta specificata
come operando; altrimenti l’elaborazione prosegue con l’istruzione successiva. RLC non viene modificato.
La condizione A1=1 e A0=0 indica che il risultato di un’operazione matematica o di conversione è maggiore
di 0, oppure che ACCU2>ACCU1 per una operazione di confronto, oppure che l’ultimo bit spostato in
un’operazione di scorrimento o rotazione è 1, oppure ancora che il risultato di un’operazione logica su parola
è diverso da 0. Vedere Tabella 43.
Operandi ammessi: etichetta
Se si è verificato un overflow, bit OV=1, l’elaborazione del programma continua dall’istruzione identificata
dall’etichetta specificata come operando; in caso contrario l’elaborazione prosegue con l’istruzione
successiva. RLC non viene modificato.
Operandi ammessi: etichetta
Se A1=0 l’elaborazione del programma continua dall’istruzione identificata dall’etichetta specificata come
operando; altrimenti l’elaborazione prosegue con l’istruzione successiva. RLC non viene modificato.
A1=0 indica che il risultato di un’operazione matematica o di conversione è minore o uguale a 0, oppure che
ACCU2≤ACCU1 per una operazione di confronto, oppure che l’ultimo bit spostato in un’operazione di
scorrimento o rotazione è 0. Vedere Tabella 43.
Operandi ammessi: etichetta
Se A0=0 l’elaborazione del programma continua dall’istruzione identificata dall’etichetta specificata come
operando; altrimenti l’elaborazione prosegue con l’istruzione successiva. RLC non viene modificato.
A0=0 indica che il risultato di un’operazione matematica o di conversione è maggiore o uguale a 0, oppure
che ACCU2≥ACCU1 per una operazione di confronto. Vedere Tabella 43.
Operandi ammessi: etichetta
Indipendentemente da RLC, l’elaborazione del programma viene fatta proseguire dalla prima istruzione del
blocco specificato come operando. A seguito dell’elaborazione di un’istruzione BE, BEB o BEA in
quest’ultimo, l’elaborazione torna al blocco chiamante in corrispondenza dell’istruzione successiva. Non è
possibile la parametrizzazione.
Operandi ammessi: FC
Se RLC=1, l’elaborazione del programma viene fatta proseguire dalla prima istruzione del blocco specificato
come operando. A seguito dell’elaborazione di un’istruzione BE, BEB o BEA in quest’ultimo, l’elaborazione
torna al blocco chiamante in corrispondenza dell’istruzione successiva.
Se RLC=0, l’operazione viene ignorata, RLC viene impostato ad 1 e l’elaborazione continua con l’istruzione
successiva.
Non è possibile la parametrizzazione.
Operandi ammessi: FC
Indipendentemente dallo stato di RLC, viene richiamata la funzione specificata come operando.
L’elaborazione del programma viene fatta proseguire dalla prima istruzione della funzione. A seguito
dell’elaborazione di un’istruzione BE, BEB o BEA in quest’ultima, l’elaborazione torna al blocco chiamante in
corrispondenza dell’istruzione successiva.
Racchiusi tra parentesi e separati da punto e virgola, devono essere specificati gli operandi attuali da passare
alla funzione che verranno utilizzati all’interno di essa al posto degli operandi formali, secondo la
corrispondenza specificata nella tabella parametri della funzione.
Prima del richiamo, lo stato o il valore degli operandi attuali corrispondenti a parametri di “in” e “in_out” viene
ricopiato nei corrispondenti operandi formali. Al ritorno dalla funzione, lo stato o il valore degli operandi
formali corrispondenti a parametri di “out” e “in_out” viene ricopiato nei corrispondenti operandi attuali.
BE (Fine blocco)
Indipendentemente da RLC, viene terminata l’elaborazione del blocco attuale con conseguente ritorno al
blocco chiamante. Il valore di RLC, non modificato, viene riportato nel blocco chiamante. Nel caso dell’OB1,
dopo l'elaborazione di questa istruzione, il controllo ritorna al Sistema Operativo del PLC simulato.
L'operazione BEA, a differenza dell’operazione BE, può essere utilizzata anche all’interno di un blocco.
Operandi ammessi: nessuno
Se RLC=1, viene terminata l’elaborazione del blocco attuale con conseguente ritorno al blocco chiamante. Il
valore di RLC (1 in questo caso), non modificato, viene riportato nel blocco chiamante. Nel caso dell’OB1,
dopo l'elaborazione di questa istruzione, il controllo ritorna al Sistema Operativo del PLC simulato.
Se RLC=0, l’operazione non viene eseguita, RLC viene impostato ad 1 e l’elaborazione continua con
l’istruzione successiva.
Operandi ammessi: nessuno
Set di operazioni
Le operazioni AWL implementate nel PLC simulato, cioè quelle che il compilatore interno di PC-Sim
riconosce e compila correttamente, costituiscono, come abbiamo appena visto, un ampia parte del set di
operazioni del corrispondente PLC reale.
La Tabella 42 riporta sinteticamente l’elenco delle operazioni implementate nel PLC simulato In essa, le
colonne relative al risultato logico combinatorio (RLC) hanno il significato espresso in Tabella 41.
Le differenze di scrittura tra la notazione tedesca e quella inglese per la stessa operazione sono evidenziate
nelle colonne T ed I.
Operazione RLC
Operandi ammessi Descrizione
T I D I L
S E, A, M, DBX S N S Attivazione dell’operando su RLC=1
R E, A, M, DBX S N S Disattivazione dell’operando su RLC=1
= E, A, M, DBX N N S Assegnazione dell’operando al valore di RLC
Operazioni di caricamento e trasferimento
L ±n N N N Caricamento di una costante a 16 bit in ACCU1
L L#±n N N N Caricamento di una costante a 32 bit in ACCU1
L B#16#hh N N N Caricamento di una costante esadecimale a 8 bit in
ACCU1
L W#16#hhhh N N N Caricamento di una costante esadecimale a 16 bit in
ACCU1
L DW#16#hhhh_hhhh N N N Caricamento di una costante esadecimale a 32 bit in
ACCU1
L 2#bbbb_bbbb_bbbb_ N N N Caricamento di una costante binaria a 16 bit in ACCU1
bbbb
L 2#bbbb_bbbb_bbbb_ N N N Caricamento di una costante binaria a 32 bit in ACCU1
bbbb_bbbb_bbbb_bb
bb_bbbb
L S5TIME#aH_bbM_cc N N N Caricamento di una costante di tempo in ACCU1
S_dddMS espressa in ore, minuti, secondi e millesimi di secondo
L Z#n N N N Caricamento di una costante di conteggio in ACCU1
L EB N N N Caricamento di un byte dell’IPI in ACCU1
L EW N N N Caricamento di una word dell’IPI in ACCU1
L ED N N N Caricamento di una doppia word dell’IPI in ACCU1
L AB N N N Caricamento di un byte dell’IPU in ACCU1
L AW N N N Caricamento di una word dell’IPU in ACCU1
L AD N N N Caricamento di una doppia word dell’IPU in ACCU1
L MB N N N Caricamento di un merker byte in ACCU1
L MW N N N Caricamento di una merker word in ACCU1
L MD N N N Caricamento di una doppia merker word in ACCU1
L DBB N N N Caricamento di un byte di dati in ACCU1
L DBW N N N Caricamento di una data word in ACCU1
L DBD N N N Caricamento di una doppia data word in ACCU1
L T,Z N N N Caricamento di un valore di tempo o di conteggio in
ACCU1
LC T,Z N N N Caricamento di un valore di tempo o di conteggio,
codificato BCD, in ACCU1
T EB N N N Trasferimento del contenuto di ACCU1 in un byte dell’IPI
T EW N N N Trasferimento del contenuto di ACCU1 in una word
dell’IPI
T ED N N N Trasferimento del contenuto di ACCU1 in una doppia
word dell’IPI
T AB N N N Trasferimento del contenuto di ACCU1 in un byte
dell’IPU
Operazione RLC
Operandi ammessi Descrizione
T I D I L
T AW N N N Trasferimento del contenuto di ACCU1 in una word
dell’IPU
T AD N N N Trasferimento del contenuto di ACCU1 in una doppia
word dell’IPU
T MB N N N Trasferimento del contenuto di ACCU1 in un merker
byte
T MW N N N Trasferimento del contenuto di ACCU1 in una merker
word
T MD N N N Trasferimento del contenuto di ACCU1 in una doppia
merker word
T DBB N N N Trasferimento del contenuto di ACCU1 in un byte di dati
T DBW N N N Trasferimento del contenuto di ACCU1 in una data word
T DBD N N N Trasferimento del contenuto di ACCU1 in una doppia
data word
Operazioni di temporizzazione
SI SP T S↑ N S Attivazione di un temporizzatore ad impulso
SV SE T S↑ N S Attivazione di un temporizzatore ad impulso prolungato
SE SD T S↑ N S Attivazione di un temporizzatore con ritardo
all’eccitazione
SS T S↑ N S Attivazione di un temporizzatore con ritardo
all’eccitazione con memoria
SA SF T S↓ N S Attivazione di un temporizzatore con ritardo alla
diseccitazione
R T S N S Reset di un temporizzatore
Operazioni di conteggio
ZV CU Z S↑ N S Incrementa il contatore
ZR CD Z S↑ N S Decrementa il contatore
S Z S↑ N S Impostazione del contatore
R Z S N S Reset del contatore
Operazioni matematiche con numeri interi
+I N N N Somma la parola bassa di ACCU1 alla parola bassa di
ACCU2 con risultato nella parola bassa di ACCU1
-I N N N Sottrae la parola bassa di ACCU1 dalla parola bassa di
ACCU2 con risultato nella parola bassa di ACCU1
*I N N N Moltiplica la parola bassa di ACCU1 per la parola bassa
di ACCU2 con risultato in ACCU1 (32 bit)
/I N N N Divide la parola bassa di ACCU2 per la parola bassa di
ACCU1, il risultato viene memorizzato nella parola
bassa di ACCU1, il resto nella parola alta di ACCU1.
+D N N N Somma il contenuto di ACCU1 a quello di ACCU2 con
risultato in ACCU1
-D N N N Sottrae il contenuto di ACCU1 da quello di ACCU2 con
risultato in ACCU1
Operazione RLC
Operandi ammessi Descrizione
T I D I L
*D N N N Moltiplica il contenuto di ACCU1 quello di ACCU2 con
risultato in ACCU1
/D N N N Divide il contenuto di ACCU2 per quello di ACCU1 con
risultato in ACCU1
MOD N N N Divide il contenuto di ACCU2 per quello di ACCU1 e
memorizza il resto in ACCU1
+ ±n N N N Somma la costante a 16 bit alla parola bassa di ACCU1
e memorizza il risultato in ACCU1
+ L#±n N N N Somma la costante a 32 bit al contenuto di ACCU1 e
memorizza il risultato in ACCU1
Operazioni di confronto
==I N S N Verifica se la parola bassa di ACCU2 è uguale alla
parola bassa di ACCU2
<>I N S N Verifica se la parola bassa di ACCU2 è diversa dalla
parola bassa di ACCU2
>I N S N Verifica se la parola bassa di ACCU2 è maggiore della
parola bassa di ACCU2
<I N S N Verifica se la parola bassa di ACCU2 è minore della
parola bassa di ACCU2
>=I N S N Verifica se la parola bassa di ACCU2 è maggiore o
uguale alla parola bassa di ACCU2
<=I N S N Verifica se la parola bassa di ACCU2 è minore o uguale
alla parola bassa di ACCU2
==D N S N Verifica se il contenuto di ACCU2 è uguale al contenuto
di ACCU2
<>D N S N Verifica se il contenuto di ACCU2 è diverso dal
contenuto di ACCU2
>D N S N Verifica se il contenuto di ACCU2 è maggiore del
contenuto di ACCU2
<D N S N Verifica se il contenuto di ACCU2 è minore del
contenuto di ACCU2
>=D N S N Verifica se il contenuto di ACCU2 è maggiore o uguale
del contenuto di ACCU2
<=D N S N Verifica se il contenuto di ACCU2 è minore o uguale del
contenuto di ACCU2
Operazioni di conversione
INVI N N N Esegue il complemento a 1 la parola bassa ACCU1
NEGI N N N Esegue il complemento a 2 la parola bassa di ACCU1
INVD N N N Esegue il complemento a 1 il contenuto di ACCU1
NEGD N N N Esegue il complemento a 2 il contenuto di ACCU1
Operazioni logiche su parola
UW AW N N N Combinazione AND (bit a bit) tra la parola bassa di
ACCU1 e quella di ACCU2 con risultato in ACCU1
OW N N N Combinazione OR (bit a bit) tra la parola bassa di
ACCU1 e quella di ACCU2 con risultato in ACCU1
Operazione RLC
Operandi ammessi Descrizione
T I D I L
XOW N N N Combinazione XOR (bit a bit) tra la parola bassa
ACCU1 e quella di ACCU2 con risultato in ACCU1
UD AD N N N Combinazione AND (bit a bit) tra ACCU1 e ACCU2 con
risultato in ACCU1
OD N N N Combinazione OR (bit a bit) tra ACCU1 e ACCU2 con
risultato in ACCU1
XOD N N N Combinazione XOR (bit a bit) tra ACCU1 e ACCU2 con
risultato in ACCU1
Operazioni di scorrimento e rotazione
SLW n = 0…15 N N N Scorrimento verso sinistra della parola bassa di ACCU1
per il numero di bit indicato nell’operando. Le posizioni
liberate vengono riempite con 0.
SLW N N N Scorrimento verso sinistra della parola bassa di ACCU1
per il numero di bit indicato nel byte basso della parola
bassa di ACCU2. Le posizioni liberate vengono riempite
con 0.
SRW n = 0…15 N N N Scorrimento verso destra della parola bassa di ACCU1
per il numero di bit indicato nell’operando. Le posizioni
liberate vengono riempite con 0.
SRW N N N Scorrimento verso destra della parola bassa di ACCU1
per il numero di bit indicato nel byte basso della parola
bassa di ACCU2. Le posizioni liberate vengono riempite
con 0.
SLD n = 0…32 N N N Scorrimento verso sinistra del contenuto di ACCU1 per il
numero di bit indicato nell’operando. Le posizioni
liberate vengono riempite con 0.
SLD N N N Scorrimento verso sinistra del contenuto di ACCU1 per il
numero di bit indicato nel byte basso della parola bassa
di ACCU2. Le posizioni liberate vengono riempite con 0.
SRD n = 0…15 N N N Scorrimento verso destra del contenuto di ACCU1 per il
numero di bit indicato nell’operando. Le posizioni
liberate vengono riempite con 0.
SRD N N N Scorrimento verso destra del contenuto di ACCU1 per il
numero di bit indicato nel byte basso della parola bassa
di ACCU2. Le posizioni liberate vengono riempite con 0.
RLD n = 0…32 N N N Rotazione verso sinistra del contenuto di ACCU1 per il
numero di bit indicato nell’operando. Le posizioni
liberate vengono riempite con i bit traslati fuori
dall’accumulatore.
RLD N N N Rotazione verso sinistra del contenuto di ACCU1 per il
numero di bit indicato nel byte basso della parola bassa
di ACCU2. Le posizioni liberate vengono riempite con i
bit traslati fuori dall’accumulatore.
RRD n = 0…32 N N N Rotazione verso destra del contenuto di ACCU1 per il
numero di bit indicato nell’operando. Le posizioni
liberate vengono riempite con i bit traslati fuori
dall’accumulatore.
Operazione RLC
Operandi ammessi Descrizione
T I D I L
RRD N N N Rotazione verso destra del contenuto di ACCU1 per il
numero di bit indicato nel byte basso della parola bassa
di ACCU2. Le posizioni liberate vengono riempite con i
bit traslati fuori dall’accumulatore.
Operazioni per blocchi dati
AUF OPN DB N N N Apre il blocco dati specificato come operando
Operazioni di salto
SPA JU Etichetta N N N Salto assoluto all’etichetta
SPB JC Etichetta S 1 S Salto condizionato all’etichetta (se RLC=1)
SPBN JCN Etichetta S 1 S Salto condizionato all’etichetta (se RLC=0)
SPO JO Etichetta N N N Salto per overflow
SPZ JZ Etichetta N N N Salto se risultato nullo
SPN JN Etichetta N N N Salto se risultato non nullo
SPP JP Etichetta N N N Salto se risultato positivo
SPM JM Etichetta N N N Salto se risultato negativo
SPMZ JMZ Etichetta N N N Salto se risultato negativo o nullo
SPPZ JPZ Etichetta N N N Salto se risultato positivo o nullo
Operazioni di controllo del programma
CC FC N N N Richiamo condizionato di un blocco (se RLC=1)
UC FC N N N Richiamo incondizionato di un blocco
CALL FC N N N Richiamo incondizionato di un blocco
BE N N S Fine blocco
BEB BEC S 1 S Fine blocco condizionata
BEA BEU N N S Fine blocco assoluta
Programmazione in Ladder
La scrittura di un programma per PLC in Ladder diagram o Schema a contatti avviene in maniera simile al
disegno di un circuito elettrico a relè. Tra due linee verticali, poste ai margini dello schema e che
rappresentano l’alimentazione del circuito, possono prendere posto gli elementi del circuito elettrico disposti
su linee orizzontali (che d’ora in avanti chiameremo rami) collegati tra loro da linee orizzontali e verticali.
Ogni ramo può contenere al massimo 6 elementi circuitali in precise posizioni. Nelle prime 5 posizioni si
possono disegnare soltanto contatti, nell’ultima solamente bobine.
Ogni ramo può quindi essere suddiviso in due zone: la zona condizionale, formata dalle prime 5 posizioni,
che contiene le condizioni che devono essere verificate per compiere una determinata azione; la zona
esecutiva, ultima posizione, che contiene le azioni da compiere quando le condizione sono verificate.
Questo è simile a quanto accade in un circuito elettrico: un carico elettrico rappresenta la parte esecutiva di
un ramo; i contatti in serie o in parallelo, di tipo normalmente chiusi o aperti, rappresentano la parte
condizionale.
Ogni contatto può essere parallelato da solo o a gruppi, disegnando contatti sul ramo successivo che
saranno collegati al ramo base, o al ramo parallelo precedente, attraverso linee verticali. Il massimo numero
di rami paralleli consentiti è 4. L’insieme di ramo base e di tutti i rami paralleli collegati ad essi verrà denotato
nel seguito come percorso di corrente. Ogni percorso di corrente viene numerato automaticamente e
progressivamente dall’editor.
Anche le bobine possono essere collegate in parallelo, ma esse devono avere l’ingresso in comune. Cioè, un
percorso di corrente può inviare un singolo segnale logico a tutte le bobine.
All’interno dello schema a contatti possono prendere posto gli elementi descritti nella Tabella 44.
Tabella 44: Elementi del ladder per S7 300
Elemento Descrizione
Zona condizionale
Contatto normalmente aperto, test sullo stato 1 dell’operando.
Il contatto sullo schema si chiude quando l’operando corrispondente si trova allo
stato logico alto. Per esempio, se l’operando è un ingresso digitale del PLC, il
contatto è chiuso quando l’ingresso è chiuso e viceversa.
Contatto normalmente chiuso, test sullo stato 0 dell’operando.
Il contatto sullo schema si chiude quando l’operando corrispondente si trova allo
stato logico basso. Per esempio, se l’operando è un ingresso digitale del PLC, il
contatto è chiuso quando l’ingresso è aperto e viceversa.
Zona esecutiva
Bobina diretta
Se la bobina è attiva, cioè se esiste una catena di contatti chiusi verso la linea
sinistra di alimentazione, viene assegnato all’operando il valore logico alto. Se la
bobina non è attiva, all’operando viene assegnato il valore logico basso.
Elemento Descrizione
Temporizzatori e contatori
Temporizzatore SI (impulso)
Ingressi/uscite:
ingresso di avviamento del temporizzatore
TW ingresso per costante di tempo
R ingresso di reset
Q uscita del temporizzatore
La temporizzazione viene attivata sul fronte di chiusura verso l’alimentazione
dell’ingresso (vedere Figura 58) con il tempo specificato all’ingresso TW, se
l’ingresso viene riaperto il tempo viene azzerato. Lo stato del temporizzatore è alto
quando il tempo sta scorrendo e l’ingresso è a potenziale alto. Lo stato è
prelevabile direttamente dall’uscita Q o tramite un qualsiasi contatto con lo stesso
operando. Quando l’ingresso di reset viene collegato alla linea di alimentazione il
tempo viene azzerato e l’uscita si porta a potenziale basso.
Temporizzatore SV (impulso prolungato)
Ingressi/uscite:
ingresso di avviamento del temporizzatore
TW ingresso per costante di tempo
R ingresso di reset
Q uscita del temporizzatore
La temporizzazione viene avviata sul fronte di chiusura verso l’alimentazione
dell’ingresso (vedere Figura 59) con il tempo specificato all’ingresso TW. Lo
stato del temporizzatore è alto quando il tempo sta scorrendo. Lo stato è
prelevabile direttamente dall’uscita Q o tramite un qualsiasi contatto con lo stesso
operando. Quando l’ingresso di reset viene collegato alla linea di alimentazione il
tempo viene azzerato e l’uscita si porta a potenziale basso.
Temporizzatore SE (ritardo all’eccitazione)
Ingressi/uscite:
ingresso di avviamento del temporizzatore
TW ingresso per costante di tempo
R ingresso di reset
Q uscita del temporizzatore
La temporizzazione viene avviata sul fronte di chiusura verso l’alimentazione
dell’ingresso (vedere Figura 60) con il tempo specificato all’ingresso TW. Lo
stato del temporizzatore è alto quando il tempo è trascorso e quando l’ingresso è
a potenziale alto. Lo stato è prelevabile direttamente dall’uscita Q o tramite un
qualsiasi contatto con lo stesso operando. Quando l’ingresso di reset viene
collegato alla linea di alimentazione il tempo viene azzerato e l’uscita si porta a
potenziale basso.
Elemento Descrizione
Temporizzatore SS (ritardo all’eccitazione con memoria)
Ingressi/uscite:
ingresso di avviamento del temporizzatore
TW ingresso per costante di tempo
R ingresso di reset
Q uscita del temporizzatore
La temporizzazione viene avviata sul fronte di chiusura verso l’alimentazione
dell’ingresso (vedere Figura 61) con il tempo specificato all’ingresso TW. Lo
stato del temporizzatore è alto quando il tempo è trascorso e rimane in questo
stato fino all’attivazione dell’ingresso reset. Lo stato è prelevabile direttamente
dall’uscita Q o tramite un qualsiasi contatto con lo stesso operando.
Temporizzatore SA (ritardo alla diseccitazione)
Ingressi/uscite:
ingresso di avviamento del temporizzatore
TW ingresso per costante di tempo
R ingresso di reset
Q uscita del temporizzatore
La temporizzazione viene avviata sul fronte di apertura verso l’alimentazione
dell’ingresso (vedere Figura 62) con il tempo specificato all’ingresso TW. Lo
stato del temporizzatore è alto quando l’ingresso è a potenziale alto o quando il
tempo sta scorrendo. Lo stato è prelevabile direttamente dall’uscita Q o tramite un
qualsiasi contatto con lo stesso operando. Quando l’ingresso di reset viene
collegato alla linea di alimentazione il tempo viene azzerato e l’uscita si porta a
potenziale basso.
Contatore
Ingressi/uscite:
ZR ingresso conteggio indietro
ZV ingresso conteggio avanti
S ingresso di impostazione
ZW ingresso per costante di conteggio
R ingresso di reset
Q uscita del contatore
Sul fronte di chiusura verso l’alimentazione dell’ingresso ZR il conteggio viene
decrementato di 1, sul fronte di chiusura verso l’alimentazione dell’ingresso ZV il
conteggio viene incrementato di 1. Sul fronte di chiusura verso l’alimentazione
dell’ingresso S il conteggio viene impostato al valore specificato all’ingresso ZW.
Sulla chiusura dell’ingresso R il conteggio viene azzerato. L’uscita è a potenziale
alto se il valore di conteggio è diverso da 0.
Lo stato è prelevabile direttamente dall’uscita Q o tramite un qualsiasi contatto
con lo stesso operando.
L’uscita A4.2 deve essere attivata se e solo se entrambi gli interruttori collegati agli ingressi E0.0 e E0.1
sono chiusi.
La soluzione ladder si ottiene pilotando la bobina A4.2 attraverso la serie di due contatti con operandi E0.0
e E0.1. Infatti la combinazione logica AND, tradotta in linguaggio ladder, equivale alla serie di due contatti: ai
capi della serie 'si legge’ la chiusura del circuito solo quando entrambi i contatti sono chiusi; questa è quindi
l’unica condizione che attiva la bobina.
LADDER AWL
U E0.0
U E0.1
= A4.2
BE
La soluzione AWL si ottiene caricando dapprima lo stato di E0.0 nel registro RLC (U E0.0). In effetti
l’operazione, in senso stretto, è una AND ma qui, essendo la prima di una sequenza, viene interpretata come
un’operazione di caricamento di bit e quindi lo stato dell’operando viene copiato in RLC. Successivamente
viene effettuata una AND tra quest’ultimo e lo stato dell’ingresso E0.1 (U E0.1) ed il risultato viene ancora
depositato in RLC. Questa istruzione non è la prima di una sequenza e quindi l’operazione viene interpretata
effettivamente come una AND. L’ultima istruzione (= A4.2) provvede a trasferire il contenuto di RLC, che a
questo punto rappresenta la combinazione logica E0.0 · E0.1, all’uscita A4.2.
Esempio 2: combinazione OR
L’uscita A4.2 deve essere attivata se almeno uno degli interruttori collegati agli ingressi E0.0 o E0.1 è
chiuso.
La soluzione ladder si ottiene pilotando la bobina A4.2 attraverso il parallelo di due contatti con operandi
E0.0 ed E0.1. Infatti la combinazione logica OR, tradotta in schema a contatti, equivale al parallelo di due
contatti: ai capi del parallelo 'si legge’ la chiusura del circuito quando almeno uno dei contatti è chiuso; questa
è quindi la condizione che porta all’eccitazione della bobina.
LADDER AWL
O E0.0
O E0.1
= A4.2
BE
La soluzione AWL si ottiene caricando dapprima lo stato di E0.0 nel registro RLC (O E0.0). In effetti
l’operazione in senso stretto è una OR ma qui, essendo la prima di una sequenza, viene interpretata come
una operazione di caricamento di bit e quindi lo stato dell’operando viene copiato in RLC. In questo caso
l’istruzione è perfettamente equivalente alla U E0.0, che potrebbe essere sostituita ad essa ottenendo un
programma dall’identico funzionamento. Quindi viene effettuata una OR tra l'RLC e l’ingresso E0.1 (O
E0.1), che deposita ancora il risultato in RLC. Questa istruzione non è la prima di una sequenza e
l’operazione quindi viene interpretata effettivamente come una OR. L’ultima istruzione (= A4.2) provvede a
trasferire il contenuto di RLC, che a questo punto rappresenta la combinazione logica E0.0 + E0.1, all’uscita
A4.2.
La soluzione ladder dovrebbe essere intuitiva dopo aver realizzato gli esercizi precedenti: la bobina A4.0
viene pilotata dalla serie (AND) di due paralleli (OR) di contatti, in corrispondenza dei quali sono stati
opportunamente riportati gli operandi.
LADDER AWL
O E0.0
O E0.1
U(
O E0.2
O E0.3
)
= A4.0
BE
La soluzione AWL richiede invece qualche chiarimento poiché sono state introdotte due nuove operazioni.
Notiamo anzitutto che, dopo l’esecuzione della seconda istruzione, RLC contiene il risultato della
combinazione logica OR tra E0.0 ed E0.1 (vedi Esempio 2). La successiva operazione è un’apertura di
parentesi, l’RLC attuale viene accantonato momentaneamente per essere successivamente combinato in
AND con il risultato dell’espressione entro parentesi. L’operazione U( è RLC limitante (vedi Tabella 42) e
quindi l’istruzione successiva sarà la prima di una nuova sequenza, così la quarta istruzione (O E0.2) verrà
interpretata come un caricamento in RLC dello stato di E0.2 e, dopo l’esecuzione dell’istruzione seguente,
RLC conterrà il risultato della combinazione logica E0.2 + E0.3. La seguente istruzione di chiusura di
parentesi farà eseguire al PLC la combinazione AND (la terza era U() tra l’RLC attuale, cioè il risultato della
OR in parentesi, con l’RLC accantonato in precedenza, cioè il risultato della prima OR. L’ultima istruzione (=
A4.0) provvede a trasferire il contenuto di RLC, che a questo punto rappresenta la combinazione logica
(E0.0 + E0.1) · (E0.2 + E0.3), all’uscita A4.0.
Realizzare A4.0 = (E0.0 AND E0.1) OR (E0.2 AND E0.3). Dove le parentesi, sebbene non necessarie in
quanto l’operazione AND ha precedenza sulla OR, sono state aggiunte per chiarezza.
Nella soluzione ladder la bobina A4.0 viene pilotata dal parallelo (OR) di due serie (AND) di contatti, in
corrispondenza dei quali sono stati opportunamente riportati gli operandi.
LADDER AWL
U E0.0
U E0.1
O(
U E0.2
U E0.3
)
= A4.0
BE
Per quanto riguarda la soluzione AWL, notiamo anzitutto che, dopo l’esecuzione della seconda istruzione,
RLC contiene il risultato della combinazione logica AND tra E0.0 ed E0.1 (vedi Esempio 1). La successiva
operazione è un’apertura di parentesi, l’RLC attuale viene accantonato momentaneamente per essere
successivamente combinato in OR con il risultato dell’espressione entro parentesi. L’operazione O( è RLC
limitante (vedi Tabella 42) e quindi l’istruzione successiva sarà la prima di una nuova sequenza, così la
quarta istruzione (U E0.2) verrà interpretata come un caricamento in RLC dello stato di E0.2 e, dopo
l’esecuzione dell’istruzione successiva, RLC conterrà il risultato della combinazione logica E0.2 · E0.3. La
seguente istruzione di chiusura di parentesi farà eseguire al PLC la combinazione OR (la terza era O() tra
l’RLC attuale, cioè il risultato della AND in parentesi, con l’RLC accantonato in precedenza, cioè il risultato
della prima AND. L’ultima istruzione (= A4.0) provvede a trasferire il contenuto di RLC, che a questo punto
rappresenta la combinazione logica (E0.0 · E0.1) + (E0.2 · E0.3), all’uscita A4.0.
L’operazione logica XOR applicata a due variabili booleane dà risultato vero solo quando solo una delle due
variabili è vera.
La prima serie di contatti del programma ladder è chiusa solo quando E0.1 è chiuso ed E0.2 è aperto; la
seconda serie è chiusa solo quando, al contrario, E0.1 è aperto e E0.2 è chiuso. Realizzando il parallelo
delle due si ottiene la funzione desiderata: la bobina viene eccitata solo quando un ingresso è chiuso e l’altro
è aperto.
LADDER AWL
X E0.1
X E0.2
BE
La soluzione AWL si ottiene caricando dapprima lo stato di E0.1 nel registro RLC (X E0.1). In effetti
l’operazione in senso stretto è una XOR ma qui, essendo la prima di una sequenza, viene interpretata come
una operazione di caricamento di bit e quindi lo stato dell’operando viene copiato in RLC. In questo caso
l’istruzione è perfettamente equivalente alla U E0.1 o alla O E0.1, che potrebbero essere sostituite ad essa
ottenendo un programma dall’identico funzionamento. Quindi viene effettuata una XOR tra l'RLC e l’ingresso
E0.2 (X E0.2), che deposita ancora il risultato in RLC. Questa istruzione non è la prima di una sequenza e
l’operazione quindi viene interpretata effettivamente come una XOR. L’ultima istruzione (= A4.2) provvede a
trasferire il contenuto di RLC, che a questo punto rappresenta la combinazione logica E0.0 XOR E0.1,
all’uscita A4.2.
Esempio 6: autoritenuta
Un pulsante collegato all’ingresso E0.0 deve attivare l’uscita A5.7; un secondo pulsante collegato
all’ingresso E0.1 deve disattivarla.
Nel programma ladder proposto come soluzione viene realizzato un circuito con autoritenuta. Premendo il
pulsante collegato a E0.0 la bobina A5.7 viene attivata, quindi il contatto con lo stesso operando sul
secondo rigo si chiude (immaginate che il contatto e la bobina siano parti dello stesso relè A5.7)
continuando a mantenere eccitata la bobina anche dopo l’apertura di E0.0. La chiusura del pulsante
all’ingresso E0.1 provoca l’apertura del contatto normalmente chiuso sullo schema, diseccitando la bobina e
facendo cadere l’autoritenuta.
LADDER AWL
U E0.0
O A5.7
UN E0.1
= A5.7
BE
Il programma AWL propone la conversione di quanto appena descritto. Il valore dell’uscita A3.7 nell’ultima
istruzione viene calcolato caricando lo stato di E0.0, quindi valutandone la OR con A3.7 e successivamente
ponendo in AND il risultato con il complemento di E0.1.
Un pulsante collegato all’ingresso E0.0 deve attivare l’uscita A5.7; un secondo pulsante collegato
all’ingresso E0.1 deve disattivarla
L’esercizio è identico al precedente ma, questa volta, nella soluzione vengono usate bobine di set e reset
della stessa uscita A5.7 pilotate separatamente da contatti di E0.0 e E0.1.
LADDER AWL
U E0.0
S A5.7
U E0.1
R A5.7
BE
Facendo girare il programma, notiamo come la pressione contemporanea sui due pulsanti comporti
l’azzeramento dell’uscita. In effetti, in entrambi i linguaggi ed essendo valide le condizioni di test, l’operando
A5.7 viene dapprima attivato, nel percorso 1 o con le prime due istruzioni, quindi disattivato, nel percorso 2 o
con la terza e quarta istruzione. Ma ricordiamo che A5.7 non rappresenta effettivamente l’uscita fisica del
PLC, ma il corrispondente bit all’interno della memoria delle immagini di processo. Tale bit di memoria viene
effettivamente portato a 1 e poi a 0 ma, solo alla fine dell’elaborazione del programma utente, il valore
elaborato per esso viene trasferito al canale fisico di uscita corrispondente, che rimane quindi costantemente
al valore basso quando entrambi gli ingressi sono chiusi.
Con questa scrittura di programmi si è realizzato quindi una prevalenza del reset rispetto al set. Se
desiderate ottenere il contrario, basterà invertire la posizione dei percorsi nello schema a contatti o il primo
gruppo di due istruzioni con il secondo nel programma AWL.
Attivare le uscite A4.0 e A4.1 in corrispondenza rispettivamente del fronte di salita e di quello di discesa
dell’ingresso E0.0.
Notiamo che l’ultimo percorso dello schema ladder impone, al termine dell’esecuzione del programma,
l’eguaglianza del merker bit M0.0 allo stato dell’ingresso E0.0. Ma, in corrispondenza dei fronti, per i
percorsi precedenti, accade che lo stato delle due variabili sia opposto e, solo alla fine dell’elaborazione del
programma utente, diventi uguali. Ciò viene rappresentato nelle prime due righe del diagramma di Figura 63
con un ritardo temporale di M0.0 rispetto ad E0.0 che vale un ciclo di esecuzione.
Il primo percorso attiva la bobina A4.0, per un ciclo di esecuzione, quando E0.0 è a 1 ed M0.0 è a 0, cioè in
corrispondenza del fronte di salita di E0.0.
LADDER
AWL
U E0.0 'rilevazione fronte
FP M0.0 'di salita
= A4.0
BE
Invece, la bobina A4.1 sarà attivata, sempre per un ciclo di esecuzione, quando E0.0 è a 0 ed M0.0 è a 1,
cioè in corrispondenza del fronte di discesa di E0.0, come programmato nel percorso 2.
Nel programma AWL si è fatto uso delle istruzioni per la rilevazione fronti FP (salita) e FN (discesa).
L’uscita A4.5 viene attivata alla chiusura dell’ingresso E0.0 e disattivata 5 secondi dopo. Se l’ingresso viene
riaperto in questo periodo, l’uscita viene disattivata immediatamente.
Il funzionamento del temporizzatore è illustrato nel diagramma temporale di Figura 64. Nel primo rigo è
rappresentato il segnale di ingresso, nel secondo la sua uscita.
Il programma ladder è stato realizzato utilizzando un temporizzatore SI (impulso) attivato dal contatto NA di
E0.0, con una costante di tempo pari a 500 centesimi di secondo e uscita collegata alla bobina di A4.5.
LADDER AWL
U E0.0
L W#16#0500
SI T2
U T2
= A4.5
BE
Il primo gruppo di istruzioni del programma AWL costituisce l’attivazione del temporizzatore T2 come impulso
(SI T2) a seguito di un fronte di salita dell’ingresso (U E0.0), con la costante di tempo di 5 secondi caricata
nell’accumulatore 1 (L W#16#0500). Il secondo gruppo di istruzioni copia lo stato del temporizzatore (U T2)
nell’uscita del PLC (= A4.5).
L’uscita A4.5 viene attivata alla chiusura dell’ingresso E0.0 e disattivata 5 secondi dopo indipendentemente
dal fatto che l’ingresso venga riaperto o meno in questo periodo.
Il funzionamento del temporizzatore è illustrato nel diagramma temporale di Figura 65. Nel primo rigo è
rappresentato il segnale di ingresso, nel secondo la sua uscita
Il programma ladder è stato realizzato utilizzando un temporizzatore SV (impulso prolungato) attivato dal
contatto NA di E0.0, con una costante di tempo pari a 500 centesimi di secondo e uscita collegata alla
bobina di A4.5.
LADDER AWL
U E0.0
L W#16#0500
SV T2
U T2
= A4.5
BE
Il primo gruppo di istruzioni del programma AWL costituisce l’attivazione del temporizzatore T2 come impulso
prolungato (SV T2) a seguito di un fronte di salita dell’ingresso (U E0.0), con la costante di tempo di 5
secondi caricata nell’accumulatore 1 (L W#16#0500). Il secondo gruppo di istruzioni copia lo stato del
temporizzatore (U T2) nell’uscita del PLC (= A4.5).
L’uscita A4.5 viene attivata 5 secondi dopo la chiusura dell’ingresso E0.0. Quando l’ingresso viene riaperto
l’uscita viene disattivata.
Il funzionamento del temporizzatore è illustrato nel diagramma temporale di Figura 66. Nel primo rigo è
rappresentato il segnale di ingresso, nel secondo l’uscita che se ne ricava.
Il programma ladder è stato realizzato utilizzando un temporizzatore SE (ritardo all’eccitazione) attivato dal
contatto NA di E0.0, con una costante di tempo pari a 500 centesimi di secondo e uscita collegata alla
bobina di A4.5.
LADDER AWL
U E0.0
L W#16#0500
SE T2
U T2
= A4.5
BE
Il primo gruppo di istruzioni del programma AWL costituisce l’attivazione del temporizzatore T2 come ritardo
all’eccitazione (SE T2) a seguito di un fronte di salita dell’ingresso (U E0.0), con la costante di tempo di 5
secondi caricata nell’accumulatore 1 (L W#16#0500). Il secondo gruppo di istruzioni copia lo stato del
temporizzatore (U T2) nell’uscita del PLC (= A4.5).
L’uscita A4.5 viene attivata 5 secondi la chiusura dell’ingresso E0.0 (anche se quest’ultimo nel frattempo
viene riaperto) e disattivata in corrispondenza della chiusura dell’ingresso E0.1.
Figura 67: Diagramma temporale per temporizzatore con ritardo all'eccitazione con memoria e reset
Il funzionamento del temporizzatore con ritardo all’eccitazione con memoria e reset si ricava dal confronto dei
primi due righi del diagramma temporale di Figura 67 con l’ultimo. Nei primi sono rappresentati i segnali di
ingresso, nell’ultimo la corrispondente uscita.
Il programma ladder è stato realizzato utilizzando un temporizzatore SS (ritardo all’eccitazione con memoria)
attivato dal contatto NA di E0.0, con una costante di tempo pari a 500 centesimi di secondo, l'ingresso di
reset collegato ad un contatto NA di E0.1 e l’uscita collegata alla bobina di A4.5.
LADDER AWL
U E0.0
L W#16#0500
SS T2
U E0.1
R T2
U T2
= A4.5
BE
Il primo gruppo di istruzioni del programma AWL costituisce l’attivazione del temporizzatore T2 come ritardo
alla eccitazione con memoria (SS T2) a seguito di un fronte di salita dell’ingresso E0.0 (U E0.0), con la
costante di tempo di 5 secondi caricata nell’accumulatore 1 (L W#16#0500). Il secondo gruppo di istruzioni
provvede al reset del temporizzatore (R T2) in corrispondenza dello stato alto di E0.1 (U E0.1). L’ultimo
gruppo copia lo stato del temporizzatore (U T2) nell’uscita del PLC (= A4.5).
L’uscita A4.5 deve essere attivata alla chiusura dell’ingresso E0.0 e disattivata 5 secondi dopo la sua
riapertura.
Il funzionamento del temporizzatore è illustrato nel diagramma temporale di Figura 68. Nel primo rigo è
rappresentato il segnale di ingresso, nel secondo la corrispondente uscita.
Il programma ladder è stato realizzato utilizzando un temporizzatore SA (ritardo alla diseccitazione) attivato
dal contatto NA di E0.0, con una costante di tempo pari a 500 centesimi di secondo e uscita collegata alla
bobina di A4.5.
LADDER AWL
U E0.0
L W#16#0500
SA T2
U T2
= A4.5
BE
Il primo gruppo di istruzioni del programma AWL costituisce l’attivazione del temporizzatore T2 come ritardo
alla diseccitazione (SA T2) a seguito di un fronte di discesa dell’ingresso (U E0.0), con la costante di tempo
di 5 secondi caricata nell’accumulatore 1 (L W#16#0500). Il secondo gruppo di istruzioni copia lo stato del
temporizzatore (U T2) nell’uscita del PLC (= A4.5).
L’uscita A5.3 viene attivata 3 secondi dopo la chiusura dell’ingresso E0.1 e disattivata 7 secondi dopo la
sua riapertura.
Figura 69: Diagramma temporale temporizzatore con ritardo all'eccitazione ed alla diseccitazione
La Figura 69 illustra, al primo ed ultimo rigo del diagramma, l’andamento dei due segnali descritti nella
traccia. Nel rigo intermedio è stato disegnato l’andamento di un temporizzatore con ritardo all’eccitazione
avente come ingresso proprio E0.1. Notiamo come l’andamento dell’uscita A5.3, rispetto all’andamento di
T0, rappresenti un ritardo alla diseccitazione. Il gioco è fatto! Si tratta quindi di scrivere un programma
contenente due temporizzatori: il primo, un ritardo all’eccitazione da 3s, ha come ingresso E0.1; il secondo,
un ritardo alla diseccitazione da 7s, ha come ingresso lo stato del primo temporizzatore e come uscita A5.3.
I programmi ladder ed AWL riportati di seguito implementano questa soluzione.
LADDER AWL
U E0.1
L W#16#0300
SE T0
U T0
L W#16#0700
SA T1
U T1
= A5.3
BE
L’uscita A4.7 viene attivata 2 secondi dopo l'apertura dell’ingresso E1.5 per una durata di 1 secondo.
Il diagramma in Figura 70 illustra al primo rigo l’andamento dell’ingresso ed all’ultimo quello della uscita che
si desidera ottenere. Il secondo e terzo rigo rappresentano l’andamento di due temporizzatori con ritardo alla
diseccitazione T10 e T11, da 2 e 3 secondi rispettivamente, che hanno come segnale d’ingresso proprio
E1.5.
Notiamo allora che l’uscita deve essere vera quando accadono contemporaneamente le condizioni: T11 vero
e T10 falso. Quindi, in termini di espressione booleana:
LADDER AWL
U E1.5
L W#16#0200
SA T10
L W#16#0300
SA T11
U T11
UN T10
= A5.7
BE
Nel programma ladder i primi due percorsi sono dedicati all’attivazione dei temporizzatori, entrambi hanno
per ingresso il segnale E1.5. Nel terzo percorso viene implementata l'espressione logica appena ricavata: i
due contatti posti in serie svolgono la funzione dell'operazione AND; in particolare, per il secondo è stato
usato il tipo NC al fine di eseguire il complemento del suo operando
Analogamente, per il programma AWL, il primo gruppo di istruzioni attiva i due temporizzatori sul segnale di
ingresso. Il secondo gruppo calcola il valore dell’espressione booleana e lo assegna all’uscita.
LADDER AWL
UN T3
= A4.4
UN T3
L W#16#0100
SA T3
BE
Rimane da chiarire che il percorso di assegnazione di A4.4 deve precedere necessariamente quello per
l’attivazione del temporizzatore. Infatti, se così non fosse, il tempo verrebbe riavviato prima che A4.4 possa
essere impostato a 1. A4.4 rimarrebbe perennemente allo stato basso poiché lo stato di T3, visto a questo
punto dell’elaborazione del programma, apparirebbe sempre alto. Lo stesso dicasi per il programma AWL,
nel quale il gruppo di istruzioni di assegnazione di A4.4 deve precedere, per le stesse ragioni, quello per
l’avviamento di T3. Queste considerazioni saranno da ricordare ogni volta che utilizzeremo negli esempi
successivi un treno di impulsi.
Il contatore Z4 viene impostato sul valore 10 in corrispondenza della chiusura dell’ingresso E1.3 e viene
decrementato ad ogni chiusura dell’ingresso E1.2. L’uscita A4.7 viene disattivata alla fine del conteggio
(valore 0).
Il programma ladder è molto semplice. La costante Z#10, assegnata all’ingresso ZW, fornirà il valore di
preset 10 al contatore. Il suo ingresso di set (S) è stato collegato ad un contatto di E1.3, mentre quello di
decremento (ZR) ad un contatto di E1.2. Sul fronte di chiusura di E1.3 avviene l’impostazione del valore di
conteggio a 10, ad ogni fronte di chiusura di E1.2 il conteggio viene decrementato di 1. L’uscita del contatore
(Q) è alta quando il valore di conteggio è diverso da 0. Sarà quindi sufficiente pilotare con essa l’uscita A4.7
del PLC.
LADDER AWL
U E1.2
ZR Z4
U E1.3
L Z#10
S Z4
U Z4
= A4.7
BE
Il primo gruppo di istruzioni del programma AWL provvede ad incrementare di 1 il valore di conteggio del
contatore Z4 ad ogni fronte di salita di E1.2. Il secondo effettua l’impostazione del conteggio al valore
caricato in Accumulatore 1 (10) in corrispondenza del fronte di salita di E1.3. L’ultimo gruppo provvede a
trasferire lo stato del contatore all’uscita A4.7.
Il contatore Z12 viene incrementato ad ogni chiusura dell’ingresso E0.0 e riportato a zero in corrispondenza
della chiusura dell’ingresso E0.1. L’uscita A4.0 è attiva quando il valore di conteggio è zero.
L’ingresso di reset (R) del contatore Z12 è stato collegato ad un contatto di E0.1, mentre quello di
incremento (ZV) ad un contatto di E0.0. Sul fronte di chiusura di E0.1 avviene il reset del contatore, cioè
l’impostazione del valore di conteggio a 0, ad ogni fronte di chiusura di E0.0 il conteggio viene incrementato
di 1. L’uscita del contatore (Q) è a alta quando il valore di conteggio è diverso da 0. Sarà quindi sufficiente
invertirla per pilotare l’uscita A4.0 del PLC, come fatto nel percorso 2.
LADDER AWL
U E0.0
ZV Z12
U E0.1
R Z12
UN Z12
= A4.0
BE
Il primo gruppo di istruzioni del programma AWL provvede ad incrementare di 1 il valore di conteggio del
contatore Z12 ad ogni fronte di salita di E0.0. Il secondo effettua il reset del conteggio in corrispondenza
dello stato alto di E0.1. L’ultimo gruppo provvede a trasferire il complemento dello stato del contatore
all’uscita A4.0.
Determinare per quanti secondi l’ingresso E0.5 rimane chiuso ed utilizzare l’ingresso E0.6 per azzerare il
conteggio del tempo.
Occorre realizzare innanzitutto una base tempi da un secondo, cioè un treno di impulsi che abbia questo
periodo. Quindi sarà sufficiente contare quanti impulsi di base tempi vengono generati durante la chiusura
dell’ingresso, cioè gli istanti in cui sono contemporaneamente veri l’ingresso e l’impulso (vedere Figura 72).
Il percorso 2 dello schema a contatti implementa il treno di impulsi da 1 secondo di periodo, così come visto
nell’esempio 16. Al percorso 1 notiamo che l’ingresso ZV del contatore viene pilotato dalla combinazione
logica AND (serie di contatti nel diagramma) tra l’ingresso E0.5 ed il treno d’impulsi, cioè viene pilotato
proprio dagli impulsi da contare. Un contatto di E0.6 comanda invece l’ingresso reset del contatore per
l’azzeramento del conteggio, così come richiesto dalla traccia.
LADDER AWL
U E0.5
UN T3
ZV Z5
UN T3
L W#16#0100
SA T3
U E0.6
R Z5
BE
Nel programma AWL, il primo gruppo di istruzioni si occupa dell’incremento del contatore in corrispondenza
del fronte di salita della AND tra E0.5 ed il treno di impulsi generato da T3 nel secondo gruppo di istruzioni.
L’ultimo gruppo opera il reset del conteggio sullo stato alto dell’ingresso E0.6.
Il valore di conteggio di Z5 rappresenta il numero dei secondi per cui l’ingresso è rimasto chiuso, con il limite
proprio dei contatori di questo PLC di 999.
Esempio 20: conteggio tempo di chiusura di un ingresso (in ore, minuti e secondi)
Determinare per quante ore, minuti e secondi l’ingresso E0.5 rimane chiuso ed utilizzare l’ingresso E0.6 per
azzerare il conteggio del tempo.
Nel programmare la soluzione di questo problema si è fatto uso di simboli. La loro corrispondenza con gli
operandi assoluti è stata stabilita secondo la seguente tabella.
Il programma proposto termina con la costruzione di un treno di impulsi col temporizzatore CLOCK, che
fungerà da base tempi con periodo di 1 secondo. All’inizio dello stesso, invece, le prime tre istruzioni fanno
avanzare il conteggio del contatore SEC quando un impulso di CLOCK viene rilevato durante la chiusura di
INGRESSO. SEC, ovvero Z5, è quindi il contattore dei secondi.
Il secondo gruppo di istruzioni provvede al caricamento del valore dei secondi in ACCU2 e della costante 60
in ACCU1, quindi i due valori vengono comparati per l’uguaglianza e, in caso di test affermativo, il contatore
MIN viene incrementato e quello SEC riazzerato. Il contatore MIN viene incrementato quindi ogni 60 secondi e
costituisce così il contatore dei minuti.
Il terzo gruppo di istruzioni provvede al caricamento del valore dei minuti in ACCU2 e della costante 60 in
ACCU1, quindi i due valori vengono comparati per l’uguaglianza e, in caso di test affermativo, il contatore
ORE viene incrementato e quello MIN riazzerato. Il contatore ORE viene incrementato quindi ogni 60 minuti e
costituisce così il contatore delle ore.
Concludendo, quindi, il contatempo software costruito consente di contare fino a 999 ore, 59 minuti e 59
secondi (per la precisione!). Ammesso che si possa considerare un valore così preciso, su un tempo tanto
lungo, tenendo presenti gli inevitabili errori dell’orologio interno sia dell'eventuale PLC reale che del PC su cui
gira quello simulato.
Per esercizio, potreste provare a modificare il programma aggiungendo un contatore GIORNI che viene
incrementato di 1 ogni 24 ore.
Per testare il programma, senza dover attendere tempi lunghissimi, è possibile diminuire la costante di tempo
nel caricamento di CLOCK, aumentando così la frequenza del treno di impulsi, oppure forzare manualmente
valori di conteggio prossimi a quelli di comparazione.
AWL
U E0.5 'se ingresso chiuso
UN T3 'ogni secondo
ZV Z5 'incrementa il contatore dei secondi
BE
L’uscita A4.7 deve essere comandata da un segnale ad onda quadra con Toff =1.5s e Ton =0.5s.
Nella soluzione proposta vengono utilizzati due temporizzatori che si ‘rimpallano’ l’eccitazione.
Alla prima elaborazione del programma ladder il contatto NC di T2 è chiuso, pertanto l’uscita del
temporizzatore T1 (ritardo alla diseccitazione) viene attivata. Ora anche il contatto NA di T1 sul percorso 2 è
chiuso ed anche l’uscita di T2 viene attivata.
Al ciclo successivo, il contatto NC di T1 questa volta è aperto e quindi il tempo di T1 inizia a scorrere, la sua
uscita continua a rimanere alta lasciando T2 nello stesso stato.
Terminato il tempo di T1 (1.5s) l’uscita dello stesso va bassa ed il contatto NA sul percorso 2 si apre, il
temporizzatore T2 viene avviato ed il suo tempo inizia a scorrere mentre la sua uscita continua a rimanere
alta.
Trascorso il tempo T2, l’uscita del temporizzatore va bassa. Siamo tornati così nella condizione iniziale ed il
ciclo si ripete come già descritto, indefinitamente.
L’andamento temporale dei segnali T1 e T2 è mostrato ai primi due righi della Figura 73; mentre il terzo rigo
mostra l’andamento che dovrebbe avere l’uscita A4.7. Notiamo come questa uscita sia il complemento del
segnale T1, a meno della piccola differenza di tempo pari ad un ciclo di esecuzione che, per motivi di
chiarezza, è stata volutamente esagerata nel diagramma. Concludiamo il programma implementando al terzo
percorso l'assegnazione dell’uscita del PLC secondo questo criterio.
Il programma AWL è la semplice conversione di quello ladder e riteniamo che, a questo punto, non dovrebbe
essere di difficile comprensione.
Impostando opportunamente il valore delle due costanti di tempo è possibile variare Ton e Toff realizzando
un’onda quadra con diversi duty cycle e frequenza.
LADDER
AWL
UN T2 'attivazione tempo OFF
L W#16#0150
SA T1
U T1 'attivazione tempo ON
L W#16#0050
SA T2
UN T1
= A4.7 'impostazione uscita
BE
L’uscita A4.7 deve essere comandata da un segnale ad onda quadra con Toff =1.5s e Ton =0.5s.
La soluzione qui presentata si differenzia da quella proposta nell’esempio precedente avente la medesima
traccia. In effetti, qui è utilizzato un unico temporizzatore ad autoavviamento che viene impostato, nel primo
gruppo di istruzioni, con un tempo pari al periodo del segnale richiesto (2s). Nel suo scorrere quindi, il tempo
varia quindi tra 200 e 0 centesimi di secondo. Tra i valori 200 e 50 l’uscita A4.7 deve essere impostata allo
stato basso, mentre per valori minori di 50 la medesima dovrà assumere lo stato alto.
Il secondo gruppo di istruzioni provvede al confronto del valore di tempo attuale con la costante 50 e se
minore attiva l’uscita.
Anche in questo caso è possibile cambiare sia il periodo del segnale, variando la costante di tempo di T3,
che il tempo allo stato alto, variando la costante decimale di confronto.
AWL
UN T3 'avvio temporizzatore
L W#16#0200 'periodo onda quadra
SA T3
BE
Un pulsante collegato all’ingresso E0.0 attiva per tre minuti un gruppo di lampade collegate all’uscita A4.1.
Insieme a queste viene attivata una spia collegata all’uscita A4.2 che, 15 secondi prima dello spegnimento
delle lampade, inizia a lampeggiare per avvisare dell’imminente scadere del tempo. La spia si spegne
definitivamente insieme con le lampade.
I temporizzatori T2 e T3 vengono utilizzati per generare un’onda quadra con periodo di 1s e duty cycle del
50%. Entrambi sono caricati con una costante di tempo da 50 centesimi di secondo. Vedere in merito il primo
esempio sulla generazione di un’onda quadra.
Vengono utilizzati inoltre altri due temporizzatori ad impulso prolungato. T1, caricato con un tempo di 3 minuti
(W#16#2180 cioè 180 secondi), comanda direttamente l’uscita del gruppo di lampade. T0, caricato con un
tempo inferiore di 15 secondi (W#16#2165), sarà utilizzato per discriminare l’istante di inizio lampeggio della
spia.
Gli andamenti temporali di T0 e T1 a seguito dell’impulso su E0.0 sono riportati rispettivamente nel secondo
e terzo rigo del diagramma di Figura 74. Il quarto rigo riporta l’andamento, non in scala, del temporizzatore
T2.
Osservando l’ultimo rigo si nota che la lampada spia deve essere accesa o quando è attivo T0 o, ancora,
quando sono attivi A4.1 e T2 e contemporaneamente T0 è disattivo. Cioè in termini di espressione
booleana:
A4.2 = T0 + ( A4.1 ⋅ T0 ⋅ T2 )
Le soluzioni proposte implementano precisamente quanto descritto.
Nella prima, realizzata in ladder, vengono utilizzati i primi due percorsi per la costruzione del segnale ad onda
quadra. I successivi due attivano i temporizzatori delle lampade e della spia. L’ultimo costituisce
l’implementazione della espressione logica che determina lo stato di accensione di quest’ultima.
Nel programma AWL, il primo gruppo di istruzioni genera il segnale ad onda quadra. Il secondo avvia i
temporizzatori per le lampade e la spia. Il terzo accende le lampade e, infine, il quarto accende la spia
secondo le modalità determinate dall’espressione trovata in precedenza.
LADDER
AWL
UN T3 'oscillatore 1Hz
L W#16#0050
SA T2
U T2
L W#16#0050
SA T3
U T1 'accensione luci
= A4.1
U T1 'accensione e
UN T0 'lampeggio spia
U T2
O T0
= A4.2
BE
Realizzare un divisore di frequenza per 4: ogni quattro impulsi in ingresso viene attivato un impulso sull’uscita
A4.1.
La prima parte delle soluzioni proposte realizza un treno d’impulsi, così come abbiamo imparato a fare negli
esempi precedenti, e ne mostra il segnale sull’uscita A4.0. La seconda parte implementa effettivamente il
divisore. Esso è costituito da un contatore che viene decrementato ad ogni impulso del generatore (ingresso
ZR pilotato da A4.0) e, al raggiungimento dello zero, si autopresetta al valore 4 (uscita Q riportata su
ingresso S attraverso M0.0).
Ogni quattro impulsi di A4.0, per un solo ciclo di esecuzione, il conteggio si azzera. In questo ciclo l’uscita
del contatore si disattiva e così il merker M0.0 ad essa collegato. Al contrario, l’uscita A4.1 del PLC si attiva,
a causa della negazione del contatto di M0.0 che la comanda.
LADDER
AWL
UN T1 'conteggio impulsi
ZR Z3
= A4.0 'attivazione uscita 0.5 secondi
UN Z3
= A4.1 'attivazione uscita ogni 2 secondi
L Z#4 'ripristino contatore a 4
S Z3
BE
Depositeremo in MB80 il numero degli ingressi chiusi ed utilizzeremo MD12 come puntatore all’ingresso
correntemente in esame. La prima parte del programma consiste nell’inizializzazione a 0 di queste due
variabili.
L’ istruzione successiva permette di caricare in RLC il complemento dell’ingresso puntato da MD12, con
indirizzo di canale nei tre bit meno significativi e indirizzo di modulo nei bit da 3 a 18. Al primo passaggio,
essendo MD12 a 0, verrà caricato il complemento dello stato di E0.0.
AWL
L L#0 'impostazioni iniziali
T MB80
T MD12
BE
In questo esercizio, allo scopo di utilizzare un’operazione di scorrimento, affrontiamo una soluzione differente
rispetto a quella programmata nell’esempio precedente.
Il contatore di ingressi chiusi è ancora MB80 ed il suo valore viene ancora inizializzato a 0 all’inizio dell’OB1.
MW10 rappresenta invece una maschera a 16 bit, uno solo dei quali per volta sarà ad 1. Il suo valore iniziale è
1 cioè (0000_0000_0000_0001)2, dove solo il bit 0 è vero.
Le prime tre istruzione del blocco FC4 caricano negli accumulatori i valori della maschera e della word di
ingresso relativa al modulo e ne eseguono la AND bit a bit. Al primo passaggio, col valore della maschera
appena visto, la AND dà risultato diverso da 0 solo se E0.0 è chiuso. Quindi il salto su zero previsto
dall’istruzione successiva viene effettuato solo per ingresso aperto.
Se l’ingresso è chiuso, come fatto per l’esempio precedente, incrementiamo il byte di conteggio MB80.
In un caso o nell’altro i due percorsi di elaborazione si ricongiungono all’etichetta INC dove, dopo aver
caricato la maschera in ACCU1, si provvede allo scorrimento a sinistra di una posizione. Il risultato dello
scorrimento viene ritrasferito in MW10.
Il bit di maschera, dopo 16 scorrimenti, fuoriesce dall’accumulatore e viene memorizzato in A1. L’operazione
successiva con bit A1=0 rimanda l’elaborazione alla prima istruzione del blocco per il test sull’ingresso
successivo mentre, con A1=1 nessun salto viene eseguito e l’elaborazione del blocco termina.
AWL
OB1
L L#0 'inizializzazione merker byte
T MB80 'di conteggio
L L#1 'inizializzazione maschera
T MW10
UC FC4
BE
FC4
TEST: L MW10 'controllo dell'ingresso
L EW0 'non mascherato
UW
SPZ INC
BE
Alla attivazione del pulsante collegato all’ingresso E0.0 le cinque lampade di un semaforo devono
accendersi in progressione, una ogni secondo. Un secondo dopo la completa accensione, le lampade
dovranno spegnersi.
Nel programmare la soluzione di questo problema si è fatto uso di simboli. La loro corrispondenza con gli
operandi assoluti è stata stabilita secondo la seguente tabella.
Il diagramma temporale di Figura 76 mostra, nelle righe intermedie, l’andamento delle uscite del PLC che
comandano le lampade del semaforo in funzione dell’ingresso START riportato al primo rigo.
La chiusura di questo ingresso, oltre a settare l’uscita che comanda la prima lampada, determinandone
l'immediata accensione, attiva cinque temporizzatori con ritardo all’eccitazione con memoria, impostati con
tempi da 1 a 5 secondi. L’uscita di ognuno di essi, T1 escluso, trascorso il tempo programmato, si porterà
allo stato alto attivando la rispettiva lampada e ottenendo così facilmente la sequenza di accensione. Il
temporizzatore T1, invece, provvede allo spegnimento di tutte le lampade resettando L1 e tutti i
temporizzatori, ivi compreso se stesso.
Portate in Run il PLC, trasformate l’interruttore 0.1 in un pulsante, premete il pulsante e …vinca il migliore!
LADDER
AWL
U E0.1 'impostazione temporizzatori per sequenza
L W#16#0100
SS T2
L W#16#0200
SS T3
L W#16#0300
SS T4
L W#16#0400
SS T5
L W#16#0500
SS T1
U T1 'reset temporizzatori
R A4.0
R T1
R T2
R T3
R T4
R T5
BE
Lo schema stabilisce la sequenza di accensione delle lampade collegate ai quattro canali: i cerchi pieni
segnalano l’attivazione del canale durante lo specifico passo. Così durante il passo 0 sarà attivo il canale 0,
durante il passo 1 il canale 1 e così via. Se le lampade vengono posizionate in linea, l’effetto sarà quello di
uno spostamento della fonte luminosa dalla prima all’ultima posizione e poi al contrario.
Al passo 5 succede un passo 6 identico allo 0 e poi un altro identico al passo 1, cioè il diagramma viene
percorso ciclicamente. Immaginate di ritagliarlo ed avvolgerlo a cilindro, facendo combaciare i lembi opposti
del passo 0 e del 5, esso sarebbe simile al tamburo di un carillon: terminato il motivetto, comincia
nuovamente.
Continuando con il parallelo sonoro, perché un carillon funzioni abbiamo bisogno di un cilindro con delle
camme disposte in modo opportuno sulla sua superficie laterale e di un meccanismo che lo faccia girare.
Cominciamo proprio a costruire quest’ultimo. Il meccanismo di avanzamento del nostro sequenziatore sarà
un treno di impulsi con periodo di 0.2 secondi, cioè una base tempi con periodo scelto in modo da portare ad
avere una velocità di spostamento della fonte luminosa ritenuta idonea. Le istruzioni
UN "TIMER"
L W#16#0010
SA "TIMER"
costruiscono un treno di impulsi, così come abbiamo imparato a fare in precedenza. Il cilindro invece sarà
costituito da un contatore che, partendo da 0, viene incrementato ad ogni impulso.
UN "TIMER"
ZV "COUNTER"
Arrivato a 6, cioè dopo l’ultimo passo, esso dovrà essere reimpostato al valore 0 di partenza, essendo il
passo 6 identico al passo 0 per l’appunto.
L "COUNTER"
L 6
==I
R "COUNTER"
Prima di sistemare le camme sul cilindro identifichiamo gli spicchi del cilindro che corrispondono ad ogni
specifico passo. Le istruzioni
L "COUNTER"
L 0
==I
= "PASSO0"
impostano ad 1 il merker PASSO0 quando il contatore vale 0, identificando tra i possibili valori del contatore
quello corrispondente a tale passo. I successivi gruppi di istruzioni impostano i merker corrispondenti a
ciascuno degli altri passi. Così, alla fine, ogni 0.2s sarà attivo un merker diverso, in successione da PASSO0
a PASSO5 e, quindi, riprendendo da PASSO0.
Ora che abbiamo identificato le posizioni possiamo inserire le camme. Cominciamo dal canale 0, osserviamo
nuovamente la griglia di Figura 77, il canale 0 è attivo solo durante il passo 0, quindi:
O "PASSO0"
= "CH0"
Il canale 1 deve essere attivo sia durante il passo 1 che durante il passo 5:
O "PASSO1"
O "PASSO5"
= "CH1"
Proseguendo così, per gli altri due canali, fino a terminare la costruzione del carillon o, abbandonando il
parallelo didattico, del sequenziatore.
AWL
UN "TIMER" 'costruzione base tempi
L W#16#0010
SA "TIMER"
BE
In questo esempio è possibile aumentare o diminuire la durata dei passi semplicemente cambiando la
costante con cui viene caricato il temporizzatore, producendo l’effetto di variare la velocità dello spostamento
apparente della fonte luminosa. E’ possibile modificare il numero dei passi, cambiando la costante con cui
viene confrontato il valore di conteggio per l’azzeramento del contatore ed aggiungendo altri confronti per
discriminare i nuovi passi. E’ possibile, ancora, cambiare la sequenza di accensione delle lampade,
modificando le condizioni nei gruppi di OR che costituiscono l’ultima parte del programma.
Sicuramente quella presentata non è l’unica soluzione al problema e, in genere, man mano che questo
diventa più complesso, le soluzioni possibili aumentano. Probabilmente non è neppure la migliore in termini di
versatilità, semplicità di manutenzione o di eleganza di programmazione, anche se nel prossimo esempio
proporremo una soluzione che meglio risponde a questi requisiti. Ma è l’approccio più semplice, che utilizza
cioè le istruzioni più comuni, che siamo riusciti a produrre e questo è un requisito fondamentale per il compito
che questo capitolo del manuale si propone: accompagnarvi nei primi passi nel mondo della
programmazione dei PLC.
L’effetto ottico, se le lampade sono disposte in linea verticale, così come i LED del modulo del PLC, è quello
di un progressivo riempimento della barra dovuto a fonti luminose che compaiono in alto e man mano
scendono fino ad occupare l’ultima posizione libera, cioè spenta. Una volta illuminata tutta la barra il ciclo
riparte spegnendo le lampade e ricominciando il riempimento.
La sequenza è sufficientemente più complicata della precedente da spingerci a trovare una soluzione
diversa, più funzionale e, magari, più versatile. Quella prevista utilizza un blocco dati per memorizzare le
combinazioni di accensione della sequenza. Ogni data word contiene nel byte basso il codice di accensione
delle lampade. L’ultima word contiene il dato (FFFF)16 che funge da terminatore di sequenza con le modalità
che vedremo tra poco.
Il cuore del programma è costituito dal blocco FB10 che viene richiamato ogni 2 decimi di secondo e che
provvedere a leggere i dati ed inviarli al modulo di uscita. Vediamo come.
MW100 costituisce il puntatore alla data word attuale. Il suo valore iniziale è 0. Il gruppo di istruzioni
all’etichetta READ, successivo all’apertura del DB20, carica dapprima il valore (FFFF)16 in accumulatore,
quindi il valore della data word corrente utilizzando un’istruzione indicizzata, e confronta i due valori: se
diversi l’elaborazione continua trasferendo il contenuto di ACCU1, il dato della sequenza, al modulo 2 di
uscita. In seguito, dopo l’incrementato del valore del puntatore, si ritorna al blocco chiamante cosicché,
quando nuovamente richiamato FB4, la data word caricata sarà quella successiva.
Se il valore letto è invece uguale a (FFFF)16, l’elaborazione continua dapprima all’etichetta INIT dove si
provvede all’azzeramento dell’indice per il ritorno all’inizio sequenza, quindi all’etichetta READ per la nuova
lettura della prima combinazione della sequenza, DW0.
AWL
OB1 (Principale)
BE
OB100 (Inizializzazione)
L 0 'reinizializzazione indice
T MW100
BE
BEA
AWL
T MW100
SPA READ
BE
Generalità
L'interfaccia EasyPort D16 permette la trasmissione bidirezionale di segnali ON/OFF tra un dispositivo o un
impianto reale ed il PC, usando segnali a bassa tensione (24VCC).
La connessione tra la EasyPort D16 ed il PC viene realizzata mediante una connessione seriale. Altre
EasyPort D16, fino a sette, possono essere collegate alla prima mediante interconnessione ad anello in fibra
ottica. L'indirizzo di modulo viene assegnato automaticamente in dipendenza della sua posizione nell'anello. Il
modulo collegato al PC mediante connessione RS232 avrà l'indirizzo 1, il successivo, cioè quello il cui
connettore IN è collegato con il connettore OUT del primo, assumerà indirizzo 2 e così via fino all'ultimo
modulo che assumerà indirizzo pari al numero complessivo di EasyPort D16 interconnesse.
Il connettore bianco deve essere collegato al connettore nero del modulo successivo. Il connettore bianco
dell'ultimo modulo dovrà essere collegato al connettore nero del primo, al fine di chiudere l'anello.
Per effettuare la connessione, inserite senza forzare l'estremità della fibra nel connettore e quindi serrate
quest'ultimo avvitandolo. Eseguite inversamente le operazioni per rimuovere il collegamento.
La lunghezza di ogni tratto di fibra deve essere compresa tra 0.3 e 5 metri.
LED SHORT
L'accensione del LED rosso SHORT indica che l'elettronica ha rilevato un cortocircuito su una delle uscite. In
questa condizione tutte le uscite vengono spente. Durante la fase di accensione dell'interfaccia questo LED
viene accesso per breve tempo.
LED STATUS
Il LED verde denominato STATUS riporta due tipi di informazioni a seconda della modalità di accensione:
• Lampeggiante a 1 Hz Stato seguente l'accensione, il modulo non sta ancora comunicando
• Pulsante Il modulo è stato indirizzato. Il numero progressivo dell'indirizzo è visualizzato
ogni due secondi mediante lo spegnimento per brevi istanti del LED. Per
esempio se il modulo ha indirizzo tre, ogni due secondi il LED STATUS si
spegnerà brevemente per tre volte.
LED INPUT
Gli ingressi della EasyPort sono organizzati in due gruppi di otto. Il primo gruppo fa parte dei segnali di PORT
1, il secondo fa parte dei segnali di PORT2. Gli ingressi di PORT 1 sono numerati da 0 a 7, quelli di PORT 2
da 8 a 15.
Lo stato di ciascun ingresso è visualizzato dal LED corrispondente: spento per stato 0 cioè tensione 0V
sull'ingresso, acceso per stato 1 cioè tensione 24V sull'ingresso.
LED OUTPUT
Lo stato dello stato delle 16 uscite digitali è visualizzato dai LED gialli denominati OUTPUT. Il
raggruppamento e la numerazione delle uscite sono analoghi a quelli degli ingressi.
Lo stato di ciascuna uscita è visualizzato dal LED corrispondente: spento per stato 0 cioè tensione 0V
sull'uscita, acceso per stato 1 cioè tensione 24V sull'uscita.
Raccomandazioni
Prestate molta attenzione al fatto che né la tensione di alimentazione né la tensione agli ingressi possono
superare il valore di 30V.
Effettuate o rimuovete le connessioni solo in assenza di tensione di alimentazione.
Configurazione
Selezionare la configurazione per le comunicazioni con il DIP switch a 3 pin secondo quanto illustrato nella
tabella che segue. Un solo switch può essere in ON (posizione in basso), gli altri due devono essere in OFF
(posizione in alto).
Tabella 45: Configurazione dei DIP switch
ON Interfaccia attiva Configurazione
1 Solo interfaccia RS232 Solo un modulo è connesso al PC attraverso la porta
seriale RS232
2 Interfaccia RS232 e fibra ottica Il modulo è connesso al PC attraverso la porta seriale
RS232, altri moduli sono connessi ad esso attraverso la
fibra ottica.
3 Solo fibra ottica Il modulo è un modulo di espansione nell'anello in fibra
ottica.
La prima configurazione è quella da utilizzare se desiderate collegare una sola EasyPort D16 al vostro PC.
La seconda, invece, è la configurazione da impostare per la EasyPort D16 da collegare al PC nel caso di
connessione di più moduli in ring di fibra ottica. I restanti moduli andranno impostati secondo la terza
configurazione.
Dati tecnici
La seguente tabella illustra i dati tecnici della interfaccia EasyPort D16.
Tabella 47: Dati tecnici della EasyPort D16
Tensione di alimentazione 24 VCC ±10%
Assorbimento 3 VA
Numero di uscite 16 digitali
Corrente max 0.3 A per uscita, anche contemporanee
Protezione cortocircuito si
Numero di ingressi 16 digitali
Soglia 12 VCC
Isteresi 3V
Filtraggio 10 ms
Interfaccia di comunicazione V.24 isolata galvanicamente
Lunghezza collegamenti in fibra ottica 0.3 – 5 m ognuno
Protocollo ASCII, 19.2 KBaud
Protezione IP20
Resistenza ai disturbi DIN/IEC 801/4 Classe 4
Temperatura di funzionamento/stoccaggio 0-55 °C / 0-70 °C
Dimensioni (LxPxH) 162x148x36 mm
Peso 0.65 Kg
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________
_______________________________________________________________________________________