Relazione finale del progetto Sudoku Solver

Transcript

Relazione finale del progetto Sudoku Solver
9
5
7
2
1
¢
re
5
p Å° 9 8
3 64
845
3
26
2 7 2
3917
87 98
34 6
5 1
?
4
automazione
Il tuo impianto di
è un vero e proprio
o
| Þ
...risolvilo
con un
PLC Siemens
1 6
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Concorso SIEMENS S.p.A. − A&D SCE.
3a edizione "Olimpiadi dell'automazione 2011".
Sudoku Solver 2
Referenti:
Siemens S.p.A.
Segreteria concorso "Olimpiadi dell'automazione 2011"
Viale Piero e Alberto Pirelli, 10
20126 − Milano (MI)
Referente: Roberto Guidi
I.T.I. Aldini Valeriani − Bologna
Classe 5A elettrotecnica industriale e automazione:
Mirko Bondi,
Manuel Candini,
Gabriele De Pandis,
Yassir El Hirich,
Gabriele Lucchiari,
Federico Pagano,
Elisa Romagnoli,
Antonio Urso.
Docente Tutor:
Alberto Benda.
5A elettrotecnica e automazione
Pag. 1/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Presentazione progetto "Sudoku Solver"
Abbiamo deciso di affrontare il concorso nazionale Siemens "Olimpiadi dell'automazione 2011" presentando un lavoro
apparentemente "fuori tema". L'idea è quella di sviluppare una campagna pubblicitaria per i prodotti Simatic Siemens,
in modo particolare per il sistema PLC S7 serie 300−400.
Come verrebbe richiesto ad una agenzia pubblicitaria (vera!!), è stata sviluppata un'azione di marketing mix
coordinata dalla Prof.ssa Maddalena Petroni (vedi apposita sezione). La parte tecnica del progetto, comunque la più
consistente, appare quindi come un'appendice di tale studio.
La genesi del progetto ha origine il giorno stesso della premiazione del concorso 2010. In modo particolare, essa parte
dallo slogan che sarà il filo conduttore della campagna pubblicitaria. Il messaggio pubblicitario pensato è:
"Il tuo impianto di automazione è un vero e proprio rompicapo?...
...risolvilo con un PLC Siemens"
...che richiama, a nostro parere, le campagne pubblicitaria degli anni '60.
A questo punto occorreva individuare il rompicapo. L'idea originale (che qui non viene esposta perché ci piacerebbe
presentarla al prossimo concorso del 2012) è stata abbandonata in quanto non compatibile al bando 2011.
Più precisamente, il regolamento 2011, esclude lo sviluppo "dell'impianto fisico" limitando il lavoro alla sola parte di
programmazione (da verificare comunque tramite l'utilizzo di PLCSIM e della parte Run Time di WinCC Flexible).
Dopo un piccolo momento di disorientamento iniziale (un po' di lavoro era già stato fatto), abbiamo avuto modo di
apprezzare tale scelta che consente la partecipazione al concorso anche a quegli Istituti, Professionali e Tecnici, che
dispongono di risorse finanziarie ridotte.
Dopo attenta analisi abbiamo scelto, come rompicapo, il Sudoku, gioco molto conosciuto che spopola su giornali e
riviste da qualche anno. I motivi di tale scelta sono principalmente tre:
•
•
•
Non esiste, ad oggi, una rigorosa formalizzazione matematica completa di tale gioco (vedi apposita sezione),
Conseguenza del punto precedente: non esiste un algoritmo rigoroso (matematico) per la soluzione di tale
gioco,
Il Sudoku (gioco bidimensionale) è compatibile alla rappresentazione virtuale, "senza inganno" tramite un
pannello operatore simulato con WinCC Flexible.
Vi auguriamo una piacevole lettura consigliandovi l'assunzione, in itinere, di diversi caffè...
Alberto BENDA
5A elettrotecnica e automazione
Pag. 2/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Struttura della relazione
L'elaborato cartaceo si presenta diviso in sezioni divise da un cartoncino colorato oltre che dalla copertina che
rappresenta il poster della campagna pubblicitaria pensata per il prodotto PLC della Siemens. Le sezioni contengono:
•
Poster campagna pubblicitaria:
Tutto l'elaborato tecnico sviluppato diviso in Capitoli, Sotto capitoli, Paragrafi e Sezioni. I quattro livelli di
titolo sono disponibili nel sommario posto in fondo alla relazione.
I capitoli sviluppati sono:
• Presentazione progetto "Sudoku Solver",
• La campagna pubblicitaria,
• Quadrati: Latini, Magici, ecc...,
• Il Sudoku,
• Il progetto completo per SIMATIC Siemens S7−300,
• Il nostro Istituto,
• Ringraziamenti,
• Sommari.
•
Copertina Blu:
Appendice A − Pag. pannello operatore + sorgente completo programma SS2 (Versione S03) per PLC.
•
Copertina Verde:
Appendice B − Sorgente completo programma Sudoku_PLC per personal computer.
•
Copertina Arancione:
Appendice C − Sorgente completo programma SudokuSolver2 per personal computer,
5A elettrotecnica e automazione
Pag. 3/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Contenuto del DVD−ROM
Il DVD allegato all'elaborato cartaceo contiene il seguente materiale:
.\VIDEO Tutorial
Contiene tre video tutorial pensati per snellire le fasi di collaudo del lavoro presentato:
01_PLC_Avvio di SS2.avi
Come simulare l'applicazione SS2 con STEP 7.
02_PLC_Test_Medium_1.avi
Utilizzo del programma SS2.
PC_SS2_Ver.1_RUN.avi
Presentazione ed utilizzo del simulatore per PC (SS2_PLC) sviluppato con Delphi.
.\Studio Algoritmo\Ver.2.2
La cartella contiene i due diagrammi di flusso che sintetizzano il funzionamento dell'algoritmo "Try & Error" ideato.
.\ProgrammaPLC\S03
Contiene l'ultima versione del Sudoku Solver 2 sviluppata e testata sul PLC (virtuale).
Il software utilizzato nei nostri PG è:
Sistema Operativo
: Windows XP SP3
STEP 7
Versione
: 5.5
Release
: 5.5.0.0
PLCSIM
Versione
: 5.4 + SP4
N. revisione: K5.4.4.0
SCL
Versione
: 5.3 + SP5 + HF1
Release
: K5.3.5.1
WINCC Flexible 2008
Versione
: 2008 SP2
Build
: K1.3.2.0_1.58.0.1
Tabella 1 − Software utilizzato per lo sviluppo di SS2.
.\Programmi PC\Ver.1 SS2
Contiene il software per PC sviluppato con Delphi realizzato per la simulazione dell'algoritmo SS2 (il programma non
richiede alcuna installazione ed è già corredato di files di esempio).
.\Programmi PC\Ver.2 SS2_PLC
Contiene il software per PC sviluppato con Delphi realizzato per la simulazione dell'algoritmo SS2 nella versione
finale effettivamente portata sul PLC (il programma non richiede alcuna installazione ed è già corredato di files di
esempio).
.\Relazione
La cartella contiene l'elaborato cartaceo in formato PDF.
.\Poster Campagna Pubblicitaria
Contiene l'elaborato pensato a sostegno della campagna pubblicitaria in vari formati (A4, A3, A2, ecc...).
5A elettrotecnica e automazione
Pag. 4/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
La campagna pubblicitaria
Come abbiamo già detto, il concorso Olimpiadi 2011 è stato affrontato in modo anomalo partendo dall'ipotesi di dover
organizzare, per conto di Siemens, la campagna pubblicitaria del "prodotto" PLC. Lo sviluppo di tale campagna è
partito dallo slogan "Il tuo impianto di automazione è un vero e proprio rompicapo?...risolvilo con un PLC Siemens"
ma ha portato comunque alla progettazione di un sistema reale che possa effettivamente dimostrare la straordinaria
potenza elaborativa di un PLC moderno programmato per mezzo di un linguaggio ad alto livello come il Pascal (SCL).
La sezione che segue, curata dalla Prof.ssa Maddalena Petroni (insegnante di diritto ed economia della classe 5A
elettrotecnica industriale) sintetizza una tecnica economica (marketing mix) utilizzata per la promozione di un qualsiasi
prodotto.
La parte di ricerca di mercato (analisi dei PLC concorrenti non Siemens, confronto delle loro prestazione in base alla
classe di prezzo, analisi delle strutture di assistenza, diffusione, nel mondo, dei magazzini ricambi e dei distributori,
ecc...) è stata volutamente omessa in quanto fuori contesto per ciò che, comunque, dovrà essere un elaborato di tipo
tecnico.
5A elettrotecnica e automazione
Pag. 5/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Marketing mix (a cura della Prof.ssa Maddalena Petroni)
Prefazione
Oggi le aziende moderne devono essere “marketing oriented” ossia tutto il management aziendale deve essere teso alla
conoscenza dell’ambiente e delle sue evoluzioni per stabilire tutti gli obiettivi aziendali e programmarne la
realizzazione.
Mentre nel passato erano “production oriented”, ossia indirizzate solo sui problemi della produzione materiale dei
beni e delle caratteristiche specifiche dei propri impianti, oggi l’attenzione è concentrata sul comportamento del
consumatore e sulle sue reazioni ai diversi messaggi che gli vengono indirizzati.
Si cerca, quindi, di comprendere i gusti e le tendenze del pubblico e di individuare i motivi che spingono la clientela a
privilegiare certi consumi e a preferire determinati prodotti. Il consumatore non deve più essere considerato una
variabile passiva dell’attività economica, ma una variabile attiva, perché le sue decisioni condizionano l’intera attività
produttiva e distributiva.
In funzione del consumatore, l’impresa deve stabilire quali prodotti progettare e produrre, come e quando distribuirli,
come propagandarli e a quale prezzo offrirli sul mercato.
Nasce la necessità di formulare un “ marketing mix”, cioè un piano di marketing che consenta la perfetta combinazione
delle quattro variabili del marketing (dette le quattro "P"), esse sono:
1. Product
(prodotto),
2. Price
(prezzo),
3. Place
(distribuzione),
4. Promotion
(attività promozionale).
Punto di partenza per una corretta formulazione del marketing mix è sicuramente la conoscenza approfondita del
mercato che consenta di conoscere:
• il profilo, ossia la distribuzione per sesso, età, gradi di istruzione, composizione famigliare, condizione
economica e sociale del consumatore destinatario del prodotto.
• l’ampiezza, ossia la dimensione della clientela reale potenziale e le sue possibilità di spesa,
• le abitudini al consumo e all’acquisto, ossia gli scopi per i quali sono usati i prodotti, le frequenze nell’uso, le
occasioni di uso.
• le motivazione, ossia le esigenze che guidano l’acquisto del prodotto o che, al contrario, rendono il prodotto
stesso poco appetibile.
Le tecniche più seguite per svolgere le ricerche di mercato sono:
• la tecnica del campione o campionamento: si basa sulla regolarità statistica in base alla quale un ampio
gruppo di soggetti, scelti a caso, tende a possedere le caratteristiche dell’intero universo che si vuole studiare,
• la tecnica della segmentazione: si basa sulla suddivisione dell’universo in parti, ciascuna delle quali è
caratterizzata da soggetti dotati di caratteri identici.
5A elettrotecnica e automazione
Pag. 6/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Dopo avere stabilito, attraverso una delle suddette tecniche, quali soggetti devono essere raggiunti dalla ricerca,
occorre raccogliere le loro opinioni. Ciò può essere compiuto applicando metodi diversi:
• il metodo delle interviste individuali: richiede un gruppo di intervistatori appositamente addestrati a porre
una serie di domande a ciascun soggetto prescelto. Le risposte date agli intervistati vengono immediatamente
segnate sul questionario dagli intervistatori, la cui abilità consiste nel condurre le interviste con semplicità e
chiarezza, senza influenzare gli intervistati stessi,
• il metodo del sondaggio postale: consiste nell’inviare al domicilio dei soggetti prescelti un questionario da
restituire compilato,
• il metodo della indagine telefonica: si basa anch’esso sulla formulazione di alcune domande ai soggetti
prescelti questa volta raggiunti tramite telefono,
• metodo del panel: consiste nel ricevere rapporti periodici da un gruppo aziende che compone un campione
permanente rappresentativo dell’intera popolazione.
Strategie di marketing
Abbiamo già detto come un’impresa marketing oriented debba attuare una corretta strategia di marketing, ossia
predisporre il marketing mix, che consiste nella corretta combinazione delle quattro "P" che, ora, analizzeremo
singolarmente.
Product
Consiste nella descrizione dettagliata di ogni prodotto messo in commercio, compreso gli eventuali servizi di
assistenza ad esso connessi.
Il prodotto Siemens:
Nel nostro caso il prodotto a cui è rivolta la campagna di marketing mix è il PLC Siemens, o meglio, il sistema per
l'automazione industriale Simatic/Siemens. Tale sistema è composto da: ambiente di sviluppo Step 7, PLC della serie
S7−300, sistema HMI, ecc....
Il PLC viene utilizzato nelle automazioni elettriche e meccaniche delle industrie, ma con l’avanzare della tecnologia e
con il bisogno sempre più esigente di sicurezza e risparmio energetico, oggi lo ritroviamo anche negli impianti ad uso
domestico poiché, a valle degli interruttori magnetotermici e differenziali, permette una gestione automatica di
molteplici sistemi e impianti installati in casa come: l’impianto di riscaldamento, l’impianto di irrigazione del giardino
o l’impianto luci.
La serie S7−300 è un prodotto modulare facilmente espandibile. La sua caratteristica principale è quella di essere
molto robusto (sia come hardware sia come stabilità software). La robustezza hardware gli consente di essere posto in
quadri elettrici, situati in ambienti rumorosi, aventi interferenze elettriche o temperature elevate o che presentano
molta umidità.
Nel caso delle applicazioni industriali, a volte il PLC deve rimanere in funzione, 24 ore su 24, 365 giorni all’anno
come, ad esempio, per le macchine dell’industria cartiera.
5A elettrotecnica e automazione
Pag. 7/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Place
Consiste nella scelta di come e dove distribuire il prodotto.
Generalmente esistono due canali distributivi: breve e lungo.
Il canale breve è quello che mette in relazione diretta produttore e consumatore, come potrebbe essere per le vendite
per corrispondenza o via internet direttamente dalla casa produttrice.
Il canale lungo prevede , oltre al produttore ed al consumatore, altre figure intermedie, quali il grossista ed il
dettagliante, oltre ad altri eventuali intermediari, come gli agenti ed i rappresentanti di commercio.
A sua volta il dettaglio potrà assumere la forma di piccolo dettaglio (dettaglio specializzato), o di grande dettaglio (ed
in questo caso, a seconda della dimensione dell’ambiente distributivo e dell’ampiezza merceologica proposta, avremo i
super o ipermercati).
Il prodotto Siemens:
Il prodotto pubblicizzato è un sistema, tecnologicamente avanzato, rivolto a professionisti, studi ed aziende che
operano nel settore dell'automazione industriale. Il canale breve non può essere quindi utilizzato per questa categoria
di prodotti.
E' invece utilizzato il canale distributivo lungo che prevede una struttura piramidale che vede coinvolti:
• l'azienda Siemens,
• i distributori internazionali affiliati alla casa madre,
• il grande dettaglio inteso come grossisti/negozi che vendono materiale elettrico per applicazioni industriali.
Certamente molto utilizzata è la figura del rappresentante di commercio. Si tratta di personale tecnico qualificato in
grado di presentare ad altri tecnici il prodotto ma anche di saperne discutere con i responsabili economici dell'azienda
gli aspetti commerciali legati alla fornitura del prodotto stesso.
Sempre più importante è la rete internet che, da questo punto di vista, assume il doppio ruolo di "Place" nel quale
distribuire il prodotto tramite l'e−commerce e di "Promotion" nel quale presentare e promuovere il prodotto stesso.
5A elettrotecnica e automazione
Pag. 8/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Price
Consiste nel processo che porta alla determinazione del prezzo del prodotto.
La determinazione del prezzo può essere effettuata seguendo due modi, entrambi ottenuti dall’applicazione del Full
Costing. Il F.C. è quella metodologia che divide i costi in costi diretti ed indiretti.
Sono costi diretti quelli di diretta imputazione all’oggetto di riferimento (prodotto o commessa) tipo: materie prime e
manodopera diretta; sono costi indiretti quelli di indiretta imputazione all’oggetto di riferimento, tipo: manodopera
indiretta, gli ammortamenti e le spese per servizi.
Mentre per i costi diretti basta una semplice somma algebrica, i costi indiretti vengono imputati all’oggetto di
riferimento mediante quote, che si ottengono dalla divisione del costo indiretto attraverso un criterio di riparto, detto
base aziendale.
La base aziendale può essere unica o multipla. Si parla di base aziendale unica quando tutti i costi indiretti vengono
suddivisi in base ad un solo criterio.
Si parla di base aziendale multipla quando per ogni costo indiretto vengono scelti criterio di riparto diversi, seguendo
un criterio di causa−effetto che lega il costo indiretto alla sua base, che sarebbe l’origine del costo indiretto stesso,
tipo il riparto della manodopera indiretta in base a quella diretta.
Il costo del prodotto nascerebbe dalla somma tra costi diretti industriali, commerciali ed amministrativi e le quote dei
costi indiretti industriali, commerciali ed amministrativi. Il prezzo dovrebbe essere poi superiore al costo
economico−tecnico che risulta essere comprensivo anche degli oneri figurativi (salario direzionale, interesse di
computo, fitti figurativi), garantendo così il profitto all’imprenditore.
Somma costi diretti industriali:
= COSTO PRIMO INDUSTRIALE
+ quota costi indiretti industriali.
= COSTO PIENO INDUSTRIALE
+ costi diretti commerciali ed amministrativi,
+ quote costi indiretti commerciali ed amministrativi.
= COSTO COMPLESSIVO
+ quote oneri figurativi.
= COSTO ECONOMICO TECNICO
Il secondo metodo per la determinazione del prezzo, derivato da quello già illustrato, consiste nello stimare delle
percentuali che corrisponderebbero alle quote dei costi indiretti che con il primo metodo sono state calcolate
matematicamente.
Il prezzo nascerebbe quindi da una serie di ricariche successive. Si adotta questa seconda metodologia, che risulta
quella largamente più utilizzata.
5A elettrotecnica e automazione
Pag. 9/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Il prodotto Siemens:
Nel nostro caso in esame si stima che le quote dei costi indiretti industriali siano circa il 40% del costo primo
industriale, in virtù del fatto che l'azienda ha una dimensione rilevante (multinazionale) e quindi presenta una notevole
quantità di costi indiretti industriali quali: gli ammortamenti inerenti agli impianti e ai macchinari utilizzati per la
produzione, le varie spese di manutenzione dei macchinari e di pulizia degli ambienti di lavoro, i costi inerenti alla
retribuzione del personale tecnico addetto alla fase industriale e alla ricerca e allo sviluppo di nuovi prodotti (essendo
un'azienda che punta molto sull'innovazione tecnologica).
Le quote dei costi indiretti commerciali ed amministrativi siano pari al 100 % del costo pieno industriale.
All'apparenza questa ricarica può sembrare eccessiva ma, in realtà, è ampiamente giustificata dal mantenimento della
poderosa rete di assistenza a livello mondiale che permette, anche nelle località più remote del terzo mondo, di fornire
un servizio di ottima qualità.
Si segnala inoltre che questa quota di costi è comprensiva del mantenimento con aggiornamento continuo dell'enorme
portale Simatic/Siemens dedicato al settore dell'automazione industriale. Il portale ha, oltre ad un'efficiente funzione di
assistenza e supporto, ha anche la importantissima funzione di essere strumento di marketing e di vendita dei prodotti
Siemens.
Le quote degli oneri figurativi siano pari al 120% del costo complessivo. Questa ricarica consente un margine di
profitto adeguato in considerazione del fatto che la Siemens è una multinazionale leader del settore.
Il prezzo di listino (che varierà a seconda del quantitativo ordinato e della classe di sconto applicata alla singola
utenza) è comunque superiore al costo economico tecnico.
Una volta individuato il prezzo è possibile per l’azienda effettuare alcuni calcoli di convenienza economica, come
calcolare il Break Even Point.
5A elettrotecnica e automazione
Pag. 10/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Il B.E.P., rappresentato graficamente dal Diagramma Di Redditività, è la quantità di prodotti che un’azienda deve
produrre e vendere per realizzare il pareggio economico tra ricavi totali e costi totali. Per risolvere il problema del
B.E.P. è necessario applicare l’altra metodologia di costo, cioè il Direct Costing.
Il D.C. classifica i costi in variabili e fissi. Sono costi variabili quelli che, nel breve periodo, variano al variare della
quantità prodotta come le materie prime e la manodopera diretta; sono invece costi fissi quei costi che, nel breve
periodo, non variano al variare della quantità prodotta, detti, per questo, anche costi di periodo.
Rientrano in questa categoria, per esempio, gli ammortamenti, gli affitti, ecc....
Essendo i Ricavi Totali (RT) dati dal prodotto del prezzo unitario (p) per la quantità (Q) ed essendo i Costi Totali (CT)
dati dalla somma dei Costi Variabili (CV) a loro volta ottenuti dal prodotto dei costi variabili unitari, (CVu), per la
quantità (Q) e dei Costi Fissi (CF) è possibile procedere al calcolo del B.E.P..
In formule:
RT = p ⋅ Q
Equazione 1 − Ricavi Totali.
CT = CF + CV
Equazione 2 − Costi Totali.
CV = Q ⋅ CVu
Equazione 3 − Costi Variabili.
Il punto di pareggio che si desidera raggiungere è espresso dalla:
RT = CT
Equazione 4 − Punto di pareggio.
5A elettrotecnica e automazione
Pag. 11/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Determinazione del B.E.P.:
p ⋅ Q = CF + CV
p ⋅ Q = CF + Q ⋅ CVu
( p − CVu ) ⋅ Q = CF
Q=
CF
( p − CVu )
Equazione 5 − B.E.P..
Figura 1 − Determinazione, per via grafica, del B.E.P..
5A elettrotecnica e automazione
Pag. 12/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Promotion
La concorrenza tra imprese non si manifesta soltanto attraverso l’arma del prezzo, ma si svolge in misura
preponderante mediante altri strumenti che costituiscono la “promotion”.
In questo ampio concetto rientrano:
• la pubblicità,
• le attività promozionali in senso diretto (direttamente ai consumatori, agli intermediari dei canali distributivi,
alla forza di vendita),
• la sponsorizzazione,
• le pubbliche relazioni.
La promozione delle vendite rappresenta oggi il fondamentale strumento di marketing rivolto a realizzare la funzione di
vendita.
Si può persino affermare che, in molti casi, il successo ottenuto da certi prodotti è da attribuire molto di più
all’efficacia delle tecniche promozionali che alle effettive qualità intrinseche dei prodotti stessi.
Fra le tecniche promozionali un posto di assoluto rilievo è oggi occupato dalla pubblicità. Questa, tuttavia,
rappresenta solo una delle numerose forme di promotion quali le aziende ricorrono per spingere le proprie vendite.
Rientrano infatti nell’ampio settore della promozione delle vendite anche numerose altre iniziative commerciali
realizzare per stimolare il mercato e per creare un favorevole clima nei rapporti col pubblico.
In origine la pubblicità era soprattutto uno strumento di informazione, gli industriali se ne servivano per mettere al
corrente i consumatori sulle caratteristiche dei loro prodotti, sul loro prezzo e sulle modalità di vendita.
Col passare del tempo essa ha perfezionato le sue tecniche ed è andata assumendo il carattere di forza suggestionante
atta ad agire sul subcosciente dei consumatori per creare in essi nuovi bisogni e per condizionarli nelle loro scelte.
È sorta, così, la persuasione occulta, in base alla quale gli imprenditori si servono delle tecniche pubblicitarie di
penetrazione psicologica per convincere i consumatori della necessità e dell’urgenza di certi acquisti.
Un tempo le teorie di Freud, il creatore della psicanalisi, erano utilizzate solo dai medici per studiare e per curare i
complessi psichici, gli stati di inferiorità, le insoddisfazioni umane e così via. Ora esse sono impiegate anche
nell’attività commerciale, tanto è vero quando vengono scelti i colori o le immagini per un avviso pubblicitario, quando
si gira un cortometraggio o quando si conia un nuovo slogan, si tende a suscitare nell’intimo del consumatore un certo
stato d’animo che dovrà poi spingerlo ad acquistare un certo prodotto.
Tutto quello che viene utilizzato nel campo pubblicitario è oggetto di ricerche scientifiche rivolte a creare nel pubblico
determinate reazioni, ecco perché si afferma che la pubblicità è psicologia applicata all’attività commerciale.
La leva psicologica della pubblicità è pure basata sulla cosiddetta tecnica della reiterazione, ossia sulla continua e
quasi ossessiva ripetizione di comunicati pubblicitari scritti, parlati o musicali, riguardanti uno stesso prodotto.
Per raggiungere i desiderati obbiettivi psicologici, i messaggi pubblicitari devono perciò assumere un’alta frequenza e
incalzare continuamente i consumatori in molte occasioni della loro attività quotidiana.
5A elettrotecnica e automazione
Pag. 13/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
La pubblicità si attua tramite gli advertising media che sono gli strumenti per le comunicazioni pubblicitarie, ossia i
veicoli che consentono al messaggio di raggiungere il pubblico al fine di influenzarne le scelte. Essi sono:
•
Pubblicità sulla stampa:
• Quotidiani: nazionali, sportivi, provinciali, indipendenti, di partito, regionali, economici, ecc...,
• Settimanali e periodici: di partito, cattolici, femminili, per bambini, a fumetti, di attualità, sportivi, ecc...,
• Pubblicazioni varie: riviste di categoria, riviste tecniche, bollettini, annuari, libri, ecc....
•
Pubblicità sulla stampa:
• Cinema,
• Teatro,
• Radio (reti nazionali e private),
• Televisione (reti nazionali e private),
• Competizioni sportive.
•
Pubblicità diretta:
• Cataloghi,
• Circolari,
• Volantini,
• Lettere, cartoline,
• Buoni sconto,
• Calendari, regali, ricordi,
• Campioni.
•
Pubblicità esterna e sui mezzi di trasporto:
• Cartelli stradali,
• Manifesti,
• Avvisi su tram, autobus, filovie, treni, aerei,
• Avvisi nelle stazioni ferroviarie, tranviarie ecc...,
• Pubblicità aerea,
• Pubblicità negli stadi.
•
Pubblicità sul punto di vendita:
• Cartelli,
• Insegne,
• Vetrine,
• Addobbi,
• Dimostrazioni,
• Proiezioni,
• Mostre, fiere, saloni di esposizione,
• Buste, sacchetti propaganda,
• Decalcomanie.
La scelta tra i diversi strumenti pubblicitari è in funzione del tipo di prodotto da propagandare e dei destinatari del
messaggio pubblicitario. I diversi strumenti hanno infatti una capacità di penetrazione, di diffusione, di suggestione
differenziata che spesso li fa tra loro complementari.
I quotidiani in Italia sono meno diffusi che non in altri paesi esteri; hanno inoltre, salvo alcune eccezioni, una
diffusione provinciale o regionale; un messaggio pubblicitario affidato ai quotidiani deve quindi apparire in più testate.
In compenso i giornali hanno un pubblico di lettori molto differenziate giungono quindi a larghi strati sociali.
È evidente che il carattere dell’annuncio condizionerà la scelta del quotidiano; per esempio sarebbe assurdo fare la
pubblicità di prodotti femminili su giornali sportivi che poche donne leggono.
Viceversa prodotti costosi, legati a un certo prestigio sociale,possono essere reclamizzati su giornali di informazione
economica che hanno un pubblico di ceto medio−superiore.
5A elettrotecnica e automazione
Pag. 14/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
I periodici hanno un grado di diffusione nazionale e si rivolgono a lettori con caratteristiche note; possono quindi
accogliere ottimamente le pubblicità che si rivolgono a destinatari ben individuati. Le pubblicazioni femminili sono
perciò ricche di annunci pubblicitari di prodotti per la casa, per la bellezza o per l’ abbigliamento; quelle sportive
reclamizzano prodotti connessi all’esercizio dei vari sport e così via.
La radio e la televisione sono veicoli pubblicitari largamente utilizzati; la pubblicità radiofonica è un ottimo strumento
di appoggio e di completamento per altre forme di propaganda, quella televisiva è efficacissima poiché possiede doti di
grande convincimento. In passato la radio e la televisione erano utilizzate solo dalle aziende di importanza nazionale;
il diffondersi delle emittenti private a carattere locale ha messo questi strumenti pubblicitari alla portata di aziende di
modesta dimensione.
L’affissione di manifesti si presta ad annunci che richiamano l’attenzione su prodotti distribuiti anche solo localmente;
come altre forme di pubblicità esterna, i manifesti e i cartelloni sono strumenti di pubblicità di ricordo che si basano
sulle facoltà inconsce degli individui.
Le attività promozionali si aggiungono alle altre leve del marketing mix e consistono in un insieme di attività e di
iniziative che, utilizzando tecniche proprie, conferiscono un valore addizionale o aggiuntivo al prodotto o al servizio
allo scopo di facilitarne la vendita e stimolarne l’acquisto. Sono da ritenersi attività promozionali: i concorsi a premio,
i buoni sconto e le offerte speciali.
La sponsorizzazione è una tecnica sviluppatasi nell’ambito del marketing con la quale un’impresa (chiamata sponsor),
pagando un determinato compenso, ottiene che il proprio marchio venga evidenziato da un personaggio, da una
squadra o da un’organizzazione che svolgono attività culturali, sportive o di spettacolo seguite dal pubblico.
Le pubbliche relazioni (public relations) rappresentano una funzione direttiva, a carattere continuativo e organizzato,
con la quale gli enti pubblici e le aziende private cercano di acquistare la comprensione, la simpatia e l’appoggio di
coloro con i quali hanno rapporti o dovranno in seguito avere rapporti commerciali.
Il prodotto Siemens:
Essendo un prodotto di natura professionale, il lotto dei canali promozionali utilizzabili si restringe (di molto) rispetto
a quelli presentati poco sopra.
Il professionista che opera nel settore dell'automazione industriale, in possesso di un titolo di studio tecnico nel settore:
elettronico, elettrotecnico od informatico, dipendente o libero professionista che sia accede a canali informativi
specializzato che potremmo così riassumere:
• riviste specializzate dei settori: elettronico, elettrotecnico od informatico,
• punti vendita specializzati in prodotti per l'automazione industriale,
• aziende che producono macchine automatiche e che utilizzano PLC,
• fiere e manifestazioni specializzate,
• internet, quale fonte insostituibile per coloro che si occupano di progettazione e sviluppo.
Per quanto riguarda internet occorre anche prendere in considerazione:
• i news group ai quali i progettisti si iscrivono per scambiare idee e ricevere/dare aiuto da/a colleghi di ogni
nazione del mondo,
• la e−mail tramite la quale le aziende (previo consenso dell'interessato) possono inviare materiale
promozionale/informativo.
Le "Olimpiadi dell'automazione" di Siemens sono da considerare, a tutti gli effetti, una "Promotion" molto
interessante sia per Siemens, sia per gli Istituti di formazione che vi partecipano.
Da questo punto di vista è d'obbligo citare il poderoso portale WEB della Siemens divisione automazione industriale. Si
tratta di un portale multilingua presso il quale è possibile trovare qualsiasi informazione riguardante tutti i prodotti
Simatic, tutti gli aggiornamenti software e...molto altro.
Il portale è raggiungibile presso:
http://support.automation.siemens.com/WW/llisapi.dll?func=cslib.csinfo2&aktprim=99&lang=it
5A elettrotecnica e automazione
Pag. 15/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Elaborati per la "Promotion" (a cura del Prof. Palmiro Pedrini)
Per lo sviluppo della Promotion si è pensato alla creazione di un elaborato da stampare nei formati: A2 (poster
pubblicitario da esporre, ad esempio, nei punti vendita di materiale industriale / forniture elettriche), A3 e A4 per la
stampa di documentazione e brochure informative.
Premessa
La parte grafica è stata ideata dal Prof. Palmiro Pedrini, nostro docente della sezione Grafica e Comunicazione.
L’indirizzo grafica e comunicazione sviluppa competenze nel campo della comunicazione interpersonale e di massa con
specifico riferimento all`uso delle tecnologie per produrla. Il percorso integra le conoscenze di informatica di base con
quelle tecniche relative agli strumenti hardware e software, grafici e multimediali, che consentono di operare in diversi
settori produttivi:
• industria della stampa;
• comunicazioni multimediali;
• realizzazioni fotografiche e audiovisive;
• sistemi di comunicazione in rete.
A conclusione del percorso quinquennale il diplomato consegue i risultati di apprendimento di seguito specificati in
termini di competenze:
• • elaborare gli elementi di comunicazione grafica e multimediale;
• • programmare ed eseguire le operazioni di prestampa, gestire e organizzare le
operazioni di stampa e post-stampa;
• • progettare, realizzare e pubblicare contenuti per il web.
5A elettrotecnica e automazione
Pag. 16/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Stampati
L'idea che sta alla base della costruzione dell'elaborato cartaceo è quella di rappresentare il termine "rompicapo"
utilizzando font diversi per ciascuna lettera disallineando, nel contempo, il testo stesso. L'idea è quella di "dare forma"
alla parola che si desidera rappresentare.
L'immagine del pannello operatore visualizza l'applicazione SS2 in esecuzione.
Figura 2 − Promozione "cartacea" PLC.
5A elettrotecnica e automazione
Pag. 17/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Quadrati: Latini, Magici, ecc...
Il fascino dei quadrati numerici ha origini antiche.
Il primo quadrato magico della storia è cinese e risale a
più di tremila anni fa, ai tempi della dinastia Shang.
Era un quadrato numerico inciso sul dorso di una
tartaruga che un pescatore aveva trovato nelle acque del
fiume Giallo e che aveva voluto offrire all’imperatore.
Gli scienziati di corte analizzarono le sue caratteristiche
e scoprirono una struttura straordinaria: un quadrato di
numeri con somma costante 15 su ogni riga, colonna o
diagonale.
Lo Shu, come venne battezzato questo quadrato numerico,
arrivato dal grande fiume, diventò uno dei simboli sacri
dell’Antica Cina, rappresentazione, per i cinesi, dei più
arcani misteri della Matematica e dell’Universo.
Figura 3 − Il primo quadrato magico.
Figura 4 − I segni sul guscio della tartaruga e la loro traduzione in numeri.
5A elettrotecnica e automazione
Pag. 18/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Premessa
Da almeno tre millenni i matematici (e non solo) appartenenti a civiltà molte diverse e distanti tra loro (Cina, Grecia,
Roma, ecc...) hanno creato strutture di forma quadrata riempite di simboli più o meno esoterici.
Dal punto di vista matematico si tratta di matrici bidimensionali aventi lo stesso numero di righe e di colonne.
Formalmente si definiscono i seguenti parametri:
E' l'ordine della matrice quadrata.
Rappresenta il numero di righe e il numero di colonne costituenti la matrice.
Rappresenta il singolo elemento della matrice (cella) individuato dall'incrocio della
riga r con la colonna c; r e c vengono detti indici della matrice M.
Rappresenta l'intera matrice
E', come ovvio, il numero degli elementi costituenti la matrice M.
n∈ N
M r ,c
con:
r , c ∈ [1..n]
M
n2
Tabella 2 − Parametri relativi alle matrici quadrate.
Indice r
indice c
1
2
3
4
5
1
M1,1
M1,2
M1,3
M1,4
M1,5
2
M2,1
M2,2
M2,3
M2,4
M2,5
3
M3,1
M3,2
M3,3
M3,4
M3,5
4
M4,1
M4,2
M4,3
M4,4
M4,5
5
M5,1
M5,2
M5,3
M5,4
M5,5
Figura 2 − Matrice quadrata M di ordine cinque (n=5)..
5A elettrotecnica e automazione
Pag. 19/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
La distinzione tra i vari tipi di quadrati che vengono presentati in questa sezione riguardano:
•
•
La scelta dei simboli da utilizzare per riempire le singole celle: numeri (naturali), lettere latine o greche,
simboli grafici, ecc...
Le regole con cui tali simboli devono essere disposti.
In base a tali premesse possiamo definire cosa siano i seguenti oggetti (tutti di ordine n):
Quadrato magico
Quadrato latino
Il Latercolo pompeiano
Il Sudoku
Simboli:
numeri naturali.
Regole:
funzioni matematiche riguardanti le righe, le colonne e le due diagonali principali.
Simboli:
numeri, lettere, altro.
Regole:
funzioni matematiche riguardanti le righe e le colonne.
Simboli:
lettere latine.
Regole:
creazione di una frase palindromica.
Simboli:
numeri, lettere, altro.
Regole:
funzioni matematiche riguardanti le righe, le colonne e sottomatrici sempre quadrate
costituenti la matrice principale.
Tabella 3 − Classificazione di vari tipi di "quadrati".
5A elettrotecnica e automazione
Pag. 20/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Quadrato magico (perfetto o normale)
Per saperne di più: http://en.wikipedia.org/wiki/Magic_square
Definizione
Approfondiamo gli aspetti "simboli" e "regole" dei Quadrati magici.
Simboli:
Nei quadrati magici i simboli sono numeri naturali. In modo particolare si utilizzano i primi n2 numeri naturali [1..n2],
ciascuno dei quali, deve essere utilizzato una ed una sola volta.
Esempio: Quadrato magico di ordine 3 (n=3).
Le nove celle costituenti il quadrato dovranno ospitare i numeri naturali da 1 a 9.
Nei quadrati magici si definisce il "numero magico" o "costante del quadrato" o "soluzione del quadrato"; tale numero
(naturale) verrà indicato con K ed è così definito:
K=
1
⋅ n ⋅ (n 2 + 1)
2
Equazione 6 − Numero magico.
Regole:
• La somma degli elementi di ogni riga deve essere pari a K, in formule:
n
∑
M r ,c = K ; ∀r ∈ [1..n]
c =1
•
La somma degli elementi di ogni colonna deve essere pari a K, in formule:
n
∑
r =1
•
M r ,c = K ; ∀c ∈ [1..n]
Equazione 2 − Quadrato magico, regola per le colonne.
La somma degli elementi della prima diagonale principale deve essere pari a K, in formule:
n
∑
i =1
•
Equazione 2 − Quadrato magico, regola per le righe.
M i ,i = K
Equazione 2 − Quadrato magico, regola per la prima diagonale.
La somma degli elementi della seconda diagonale principale deve essere pari a K, in formule:
n
∑
i =1
M i ,n−i+1 = K
Equazione 2 − Quadrato magico, regola per la seconda diagonale.
I quadrati magici rimangono tali anche operando alcune trasformazioni; ad esempio:
•
•
•
simmetria rispetto alla mediana (orizzontale o verticale),
simmetria rispetto a una diagonale,
sostituzione di ogni numero col suo complementare rispetto a n2+1.
NOTA: le operazioni di rotazione e riflessione non conducono ad un altro quadrato magico.
5A elettrotecnica e automazione
Pag. 21/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Caratteristiche dei Quadrati magici perfetti
La costante magica K in funzione di n
La costante magica assume, in funzione di n, i seguenti valori:
n
K
1
2
3
4
5
6
7
8
9
10
1
5
15
34
65
111
175
260
369
505
Tabella 4 − Il numero magico K in funzione di n.
Numero dei possibili Quadrati magici NQM perfetti, diversi l'uno dall'altro, in funzione di n
Il quadrato magico di ordine 1 è banale. E’ facile verificare che quello di ordine 2 non è possibile, mentre per tutti gli
altri ordini vi sono quadrati magici in un numero che cresce al crescere di n, diventando ben presto esorbitante.
E’ stato calcolato, infatti, che, senza contare rotazioni1 e riflessioni2, esistono:
Ordine n
1
2
3
4
5
6
7
ecc
Costante K
1
5
15
34
65
111
175
−−−
N° di quadrati magici perfetti possibili
1
nessuno
1
880
275.305.224
1.7754·1019
sconosciuto
sconosciuto
Tabella 3 − Numero massimo di quadrati magici perfetti in funzione di n.
Resta da risolvere il problema più generale: quale è la regola per determinare il numero di quadrati magici per un
dato ordine n?
1
Si immagini di osservare lo stesso quadrato da ciascuno dei quattro lati, apparentemente si "vedono" quattro oggetti
diversi, in realtà si sta osservando lo stesso oggetto.
2
Si immagini di osservare lo stesso quadrato allo specchio, apparentemente si "vedono" due oggetti diversi, in realtà si
sta osservando lo stesso oggetto.
5A elettrotecnica e automazione
Pag. 22/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Storia
I quadrati magici erano noti già in Cina nei primi secoli dopo Cristo, e forse addirittura nel IV secolo a.C. Il quadrato
3×3 era chiamato Lo Shu; nel X secolo i cinesi conoscevano quadrati fino all'ordine 10, oltre a catene di cerchi e cubi
magici non perfetti. Queste strutture giunsero in Europa relativamente tardi: il bizantino Manuel Moschopulos (circa
1265–1316) fu tra i primi a scrivere su di essi. Uno dei primi matematici ad approfondire l'argomento fu Cornelio
Agrippa (1486–1535), il quale li definì "tavole sacre dei pianeti e dotate di grandi virtù, poiché rappresentano la
ragione divina, o forma dei numeri celesti".
Molti quadrati magici si supponevano dotati di particolari virtù magiche e venivano utilizzati per costruire dei
talismani: ad es. le loro incisioni su placche d'oro o d'argento venivano impiegate come rimedi, dalla peste al mal
d'amore. Uno tra più noti quadrati magici è sicuramente quello che compare nell'incisione di Albrecht Dürer intitolata
Melancholia I.
Frenicle de Bessy (1605–1665), matematico francese amico di Cartesio e di Pierre de Fermat, nel 1663 calcolò il
numero dei quadrati magici perfetti del quarto ordine: 880, con somma costante 34, su righe, colonne e diagonali. Solo
grazie al computer si riuscì ad estendere il risultato, nel 1973, agli ordini superiori: i quadrati magici di ordine 5 sono
275305224. Non è noto il numero preciso dei quadrati magici di ordine 6, anche se molti sono impegnati nella sua
determinazione. Secondo alcune indagini, il loro numero è nell'ordine di 1.7754·1019.
Resta comunque insoluto il problema più generale di trovare la regola che permetta di determinare il numero di
quadrati magici possibili di ordine n.
Parente stretto del quadrato è il cubo magico, costruito in Europa per la prima volta solo nel 1866. Il primo cubo
perfetto, di ordine 7 e quindi contenente i primi 73 = 343 interi positivi fu ottenuto da un missionario appassionato di
matematica. In seguito si estese la ricerca a ipercubi di dimensione m ed ordine n, ognuno composto da nm numeri
interi.
5A elettrotecnica e automazione
Pag. 23/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Esempi
n
K
esempio
1
1
1
2
5
non possibile
3
4
5
15
4
9
2
3
5
7
8
1
6
16
3
2
13
5
10
11
8
9
6
7
12
4
15
14
1
34
65
17
24
1
8
15
23
5
7
14
16
4
6
13
20
22
10
12
19
21
3
11
18
25
2
9
Tabella 3 − Esempi di Quadrati magici.
5A elettrotecnica e automazione
Pag. 24/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Quadrato latino
Per saperne di più: http://en.wikipedia.org/wiki/Latin_square
Definizione
Approfondiamo gli aspetti "simboli" e "regole" dei Quadrati latini.
Simboli:
Nei quadrati latini i simboli sono del tutto generici (numeri, lettere, simboli grafici, ecc...); di conseguenza non appare
una limitazione utilizzare, per praticità, i primi n numeri naturali [1..n].
Esempio: Quadrato latino di ordine 3 (n=3).
Le nove celle costituenti il quadrato dovranno ospitare i numeri naturali da 1 a 3.
Regole:
• Ciascuna riga deve contenere, una e una sola volta, ciascuno degli n simboli utilizzati.
• Ciascuna colonna deve contenere, una e una sola volta, ciascuno degli n simboli utilizzati.
I quadrati latini rimangono tali anche operando alcune trasformazioni; ad esempio:
•
•
•
scambio due righe,
scambio due colonne,
permutazione di coppie di simboli.
NOTA: le operazioni di rotazione e riflessione non conducono ad un altro quadrato latino.
5A elettrotecnica e automazione
Pag. 25/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Caratteristiche dei Quadrati latini
Numero dei possibili Quadrati latini NQL, diversi l'uno dall'altro, in funzione di n
Il quadrato latino di ordine 1 è banale. E’ facile verificare che per quello di ordine 2 esistono 2 quadrati latini diversi.
Anche in questo caso non è nota la formula che lega il numero di quadrati latini possibili all'ordine del quadrato.
Figura 5 − I due possibili quadrati latini di ordine due, cioè 2×2.
Si stima che questo numero appartenga all'intervallo:
(n!) 2 n
nn
2
n
n
≤ N QL ≤ ∏ (k!) k
Equazione 2 − Numero di Quadrati latini possibili.
k =1
E’ stato calcolato, infatti, che, senza contare rotazioni3 e riflessioni4, esistono:
Ordine n
1
2
3
4
5
6
7
8
9
10
11
−−−
15
N° di quadrati latini possibili
1
2
12
576
161280
812851200
61479419904000
108776032459082956800
5524751496156892842531225600
9982437658213039871725064756920320000
776966836171770144107444346734230682311065600000
−−−
≈ 1.5·1086 (il numero degli atomi costituenti l'universo conosciuto è stimato in ≈ 4·1078 atomi)
Tabella 3 − Numero massimo di quadrati latini in funzione di n.
Resta da risolvere il problema più generale: quale è la regola per determinare il numero di quadrati latini per un dato
ordine n?
3
Si immagini di osservare lo stesso quadrato da ciascuno dei quattro lati, apparentemente si "vedono" quattro oggetti
diversi, in realtà si sta osservando lo stesso oggetto.
4
Si immagini di osservare lo stesso quadrato allo specchio, apparentemente si "vedono" due oggetti diversi, in realtà si
sta osservando lo stesso oggetto.
5A elettrotecnica e automazione
Pag. 26/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Storia
Tali entità matematiche, introdotte da Eulero nel XVIII
secolo, sono legati in modo diretto a vari problemi
inerenti a campi molto lontani da quello della geometria
combinatoria, cui i quadrati latini appartengono.
La problematica principale è l’esistenza e la
classificazione di quadrati latini ortogonali tra loro e
nasce con il cosiddetto 'problema dei 36 ufficiali',
formulato da Eulero stesso e che si enuncia come segue:
Il problema dei 36 ufficiali:
"sistemare 36 ufficiali, 6 da ognuno dei 6 reggimenti, di 6
gradi differenti in un quadrato 6×6, in modo tale che ogni
riga e ogni colonna contenga un ufficiale di ogni rango
ed uno di ogni reggimento".
Come spiegheremo in seguito, tale problema si può
generalizzare a quadrati latini di ogni ordine e solo
all’inizio del XX secolo ha trovato completa soluzione.
Si conoscono, cioè tutti e i soli n per cui vale l’asserto.
Un primo contesto fertile alle applicazioni della teoria
dei quadrati latini è quello algebrico. Essi sono, infatti,
legati a strutture algebriche più deboli di quelle
classiche, come semigruppi e loop; un quadrato latino
risulta essere la tavola delle moltiplicazioni di un
semigruppo ed in tale contesto che si riformula la
congettura di Eulero.
Un secondo ambito di applicazioni è quello geometrico,
in cui per geometria si intende lo studio delle proprietà di
piani proiettivi finiti. In particolare, l’esistenza di siffatti
piani di ordine n è intimamente legata all’esistenza di
quadrati latini ortogonali e dunque la congettura di
Eulero ha ricadute immediate in questo campo.
Un ulteriore e più recente applicazione dei quadrati latini
risiede nella teoria dei codici: essi intervengono, infatti,
nello sviluppo di codici di correzione nella trasmissione
attraverso un canale rumoroso.
Figura 6 − Leonhard Euler, 1707 − 1783.
Figura 7 − In figura, a sinistra un quadrato latino di ordine 4, a destra un quadrato latino di ordine 5.
5A elettrotecnica e automazione
Pag. 27/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Applicazioni dei quadrati greco − latini
Naturalmente, le lettere possono rappresentare qualsiasi cosa. Ad esempio, provi il lettore, dopo aver estratto da un
mazzo di carte i quattro re, le quattro regine, i quattro fanti e i quattro assi, a sistemarli in un quadrato quattro per
quattro, in modo che su ogni riga e su ogni colonna si trovino i quattro tipi di carte e i quattro semi, senza ripetizioni.
Come secondo esempio, proponiamo al lettore di costruire una scacchiera cinque per cinque, con le caselle di cinque
colori diversi, tale che ogni riga e ogni colonna contenga tutti e cinque i colori senza ripetizioni e ogni casella abbia un
colore diverso dalle caselle che la circondano.
I quadrati latini e greco − latini hanno diverse
applicazioni. Ad esempio, possono tornare utili in
statistica per organizzare test e indagini dandone inoltre
la migliore rappresentazione grafica, come scrivono Tony
Phillips e Stony Brook in una accurata presentazione di
questi quadrati sul sito della AMS, American
Mathematics Society.
Test Fertilizzanti:
Supponiamo, ad esempio, di voler testare l’efficacia di
cinque diversi fertilizzanti per una coltivazione di
cereali. Possiamo spargere il fertilizzante su un campo,
procedere poi Al raccolto, e misurare infine la
produzione per unità di area. In questo modo saremmo
obbligati ad eseguire i cinque esperimenti su cinque
campi diversi, le cui caratteristiche potrebbero anche
essere diverse.
Dividiamo invece un unico appezzamento in 5×5 parti più
piccole, alle quali applichiamo i fertilizzanti secondo lo
schema del quadrato latino, e ne ricaveremo un test più
preciso.
Questa idea semplice, ma geniale, è di un grande esperto
di statistica, W. S. Gosset che era impiegato alla birreria
Guiness di Dublino. La birreria era ovviamente una gran
consumatrice di orzo e Gosset sfruttò le sue conoscenze
per suggerire il modo di incrementarne la produzione,
realizzando schemi, quale quello che abbiamo appena
visto, che avevano proprio le caratteristiche dei quadrati
latini.
Figura 8 − William Sealey Gosset (1876 − 1935).
Figura 9 − Un campo con una coltivazione che usa cinque diversi trattamenti, secondo una sistemazione a quadrato
latino 5 per 5.
5A elettrotecnica e automazione
Pag. 28/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
ESERCIZIO:
Dobbiamo collaudare 5 modelli diversi di aspirapolvere per scoprire qual è il migliore.
Identifichiamo gli aspirapolvere con i numeri 1, 2, 3, 4, 5.
Vogliamo che tutti gli aspirapolvere sia provati da 5 casalinghe, le quali daranno il loro giudizio su ciascuno di essi.
Identifichiamo le collaudatrici con le lettere A, B, C, D, E.
Ciascun aspirapolvere sarà utilizzato da ciascuna casalinga per una settimana.
E' possibile organizzare le prove in modo da avere i risultati nel giro di 5 settimane?
Il Latercolo pompeiano
Per saperne di più: http://it.wikipedia.org/wiki/Quadrato_del_Sator
Un misterioso quadrato magico, ritrovato a Pompei e
riportato in figura, è noto come il Latercolo pompeiano.
Risale al primo secolo d. C. e venne costruito utilizzando
delle lettere latine collocate in modo da formare la frase
"SATOR AREPO TENET OPERA ROTAS".
E' una frase che si può leggere in diverse direzioni, su
righe o colonne, da sinistra a destra o viceversa. Significa
letteralmente “Il seminatore, col suo aratro, tiene con
cura le ruote”, una frase che potrebbe essere interpretata
come "Dio, dal suo trono, regola con saggezza le sfere
(dell'Universo)".
Il Latercolo pompeiano non è un quadrato latino in
quanto, pur essendo di ordine 5, utilizza più di cinque
simboli diversi.
Figura 10 − Il Latercolo pompeiano.
5A elettrotecnica e automazione
Pag. 29/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Il Sudoku
Generalità
Il gioco "classico" consiste in una matrice 9×9 (schema) i cui devono essere posti i numeri da 1 a 9 in modo da non
avere ripetizioni in una stessa riga, colonna o sottomatrice 3×3 (quadro). All’inizio vengono fissati dei numeri che
definiscono quel particolare problema.
Affinché lo schema possa essere definito "sudoku" occorre che la soluzione sia unica.
Purtroppo, causa errori, alcuni schemi pubblicati ammettono più di una soluzione. Il programma proposto fornirà
comunque "la prima" delle soluzioni possibili.
In generale una combinazione iniziale di numeri su uno schema sudoku può:
•
•
•
non avere soluzione,
avere una sola soluzione; questo è il caso degli schemi proposti sui giornali,
avere più soluzioni; in questo caso il programma SUDOKUPT propone la prima che individua.
Alcuni schemi possono essere risolti senza che sia necessario visualizzare e aggiornare i candidati (chiamiamo questo
modo "a colpo d’occhio"). Molto spesso però, dopo una prima serie di mosse, è indispensabile evidenziare i candidati
sullo schema per ragionarci sopra. Il programma SUDOKUPT consente di lavorare nei due modi e, volendo, di
passare da uno all’altro modo in qualunque momento, infatti una mossa ragionata sui candidati può riportare nello
schema la possibilità di successive semplici mosse "a colpo d’occhio".
Esiste una serie di "metodi logici", ragionamenti o tecniche per giocare le mosse. Queste valutazioni razionali sono
sufficienti per risolvere gli schemi che trovate nelle pagine di passatempo dei quotidiani e dei periodici non
specializzati. Nelle riviste e nei siti specialistici di sudoku potete però trovare anche schemi nei quali, una volta
esauriti i metodi razionali, occorre procedere "per tentativi". Il programma SUDOKUPT offre anche l’ambiente
specifico che aiuta in questa situazione.
5A elettrotecnica e automazione
Pag. 30/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Un esempio
Osserviamo i 7 collocati nei tre quadrati del blocco
verticale di sinistra. Un 7 è collocato nel quadrato in alto
e un altro nel quadrato in basso, ma non ci sono 7 nel
quadrato di mezzo.
Osserviamo ancora che il 7 del quadrato in alto e anche
il 7 della prima colonna.
Inoltre, il 7 del quadrato in basso è anche il 7 della
seconda colonna.
Ne consegue che il 7 del quadrato di mezzo non può
essere sulla prima colonna, né sulla seconda. Sarà
obbligatoriamente sulla terza colonna. Ora, sul quadrato
di mezzo ci sono già due cifre collocate sulla terza
colonna. Non rimane quindi se un'unica casella vuota e
questa, segnata con A, è l'unica possibilità per il 7.
Figura 11 − Esempio 1.
Passiamo ora ai 7 del blocco orizzontale superiore. Abbiamo un 7 nel quadrato di sinistra e un altro nel quadrato di
destra, ma nessun 7 nel quadrato di mezzo. Il 7 del quadrato di destra vale per tutta la prima riga, mentre il 7 del
quadrato di sinistra vale per tutta la seconda riga (senza tener conto che la seconda riga del quadrato di mezzo è già
completa). Possiamo quindi dedurre che il 7 del quadrato di mezzo può andare soltanto nella casella B o nella casella
C. Osserviamo ancora la tabella in senso verticale. Nel quadrato al di sotto del quadrato centrale c'è un 7 nella quarta
colonna e quindi non ci può essere un altro 7 sulla stessa colonna. Questo esclude la posizione B e il 7 deve essere
quindi collocato nella casella C.
Ogni cifra che scriviamo nella tabella ci fornisce altre indicazioni per proseguire. Osserviamo, ad esempio, il 7 che
abbiamo inserito nella casella A. A questo punto siamo in grado di trovare la posizione del 7 nel quadrato a destra di
quello centrale. La casella D sembra, a prima vista, una possibilità.
5A elettrotecnica e automazione
Pag. 31/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
I gemelli
Osserviamo di quello centrale e tenta di collocare il 9 nel primo quadrato in alto a sinistra. Sembra un'impresa
impossibile avendo soltanto un 9 sulla prima riga in alto e un altro sulla seconda colonna come riferimento per il
primo quadrato. Ma se osserviamo con più attenzione notiamo che il 9 dell'ottava riga blocca il 9 sulla riga 8 del
quadrato in basso a sinistra. Inoltre il 9 della seconda colonna blocca la casella a destra del 4. Il 9 non può che
trovarsi in una delle due caselle sopra o sotto il 2 del quadrato in basso a sinistra. Possiamo anche scrivere questi due
9. Non sappiamo ancora quale delle due caselle sia quella giusta, ma sappiamo che entrambi sono sulla terza colonna.
Di conseguenza non potremo scrivere un altro 9 nella terza colonna del primo quadrato in alto a sinistra. L'unica
casella possibile rimane quindi quella della prima colonna.
Figura 12 − I gemelli.
Triplette
Osserviamo la sequenza 2 − 8 − 1 dell'ottava linea. Vi può servire per trovare il 7 del quadrato sotto quello centrale. I
7 della quinta e sesta colonna ci lasciano come posizioni libere soltanto le due della quarta colonna. Ora è il 7 della
settima riga che ci aiuta nella scelta definitiva. Infatti nel quadrato in basso a sinistra le uniche posizioni in cui
possiamo collocare il 7 sono quelle della nona riga. Non sappiamo in quale posizione si troverà il 7 in questo quadrato,
ma esclude la nona riga per il quadrato che stavamo studiando, quello sotto il quadrato centrale. Non ci rimane quindi
che la posizione dell'ottava riga.
Queste annotazioni sono di Michael Mepham, grande esperto del Sudoku.
Figura 13 − Tripletta.
5A elettrotecnica e automazione
Pag. 32/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Intervista a Wayne Gould, l’australiano che ha reinventato il rompicapo matematico
«In vacanza in Giappone ho preso un libro con numeri e
griglie, l'unico che capivo. Ho cominciato a giocare e non
ho smesso più. Mi sono detto: se piace a me, può
conquistare anche altri»
Figura 14 − Wayne Gould.
Come ve lo immaginate Wayne Gould, il guru mondiale del Sudoku, il "padre" di quelle terribili griglie di numeri in
grado di mettere in crisi anche i più presuntuosi cervelloni? Uno scienziato pazzo, oppure un matematico solitario che
passa la vita chiuso in casa a sfidare equazioni impossibili? Niente di tutto questo. L’inventore del rompicapo più
popolare del pianeta è un giudice neozelandese che, raggiunta la pensione dopo una lunga e onorata carriera al
tribunale di Hong Kong, si è potuto dedicare a tempo pieno alle sue passioni: libri, viaggi, computer ed enigmistica. Il
Sudoku di Wayne Gould ha contagiato 24 Paesi, dalla Spagna alla Finlandia, dagli Stati Uniti al Sud Africa. Il primo a
pubblicarlo è stato il Times di Londra. In Italia è arrivato il 25 giugno 2005, in esclusiva con il Corriere della Sera, ed
è diventato subito un appuntamento seguitissimo dai lettori. In quotidiani, riviste e siti Internet le imitazioni si
moltiplicano ogni giorno. «Ma delle imitazioni conviene sempre diffidare». Se a dirlo è lo stesso Gould, vale la pena di
credergli.
Perché il suo Sudoku è diverso dagli altri?
«Per una ragione molto semplice: le mie griglie hanno sempre una e una sola soluzione, le altre spesso possono essere
risolte in modi diversi. Sembra un particolare di poco conto, ma è decisivo. Ogni gioco enigmistico, dai cruciverba ai
romanzi di Agatha Christie, è una sfida al giocatore. Magari quasi impossibile, ma mai veramente impossibile. E la
risposta giusta deve essere unica. Ve lo immaginate Hercule Poirot che dice: chi pensava che l’assassino fosse il
maggiordomo ha ragione, ma anche chi sospettava il vicino di casa ci ha azzeccato?».
Come è nato il Sudoku?
«Le sue origini sono “avvolte nel mistero”, e in fondo è divertente che sia così. C’è chi lo fa risalire al matematico
svizzero Eulero, chi ad antichi saggi orientali. Io l’ho scoperto nel 1997. Ero in vacanza a Tokyo. Visto che sono un
appassionato bibliofilo, un giorno sono entrato in una libreria. Ma non sapendo una parola di giapponese, ho
comprato l’unico libro che aveva stampati solo dei numeri».
Ed è stato subito contagiato?
«A dire il vero quel libro l’ho aperto solo tre mesi dopo. Ma quando ho cominciato a giocare non ho più smesso. E a un
certo punto mi sono detto: se piace a me, che non ho mai avuto a che fare con i numeri in vita mia, forse divertirà
anche altri. Allora ho acceso il computer e ho provato a costruire un software in grado di creare nuove griglie».
Quanto tempo ha impiegato?
«Più o meno sei anni».
5A elettrotecnica e automazione
Pag. 33/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
A inventare Google ci hanno messo molto di meno.
«Ma io sono solo un programmatore dilettante, e non mi sono impegnato a tempo pieno. Nel frattempo ho continuato a
girare il mondo, a leggere, a stare con mia moglie e i miei figli».
E alla fine cosa ha fatto?
«Ho preso un aereo per Londra, ho bussato alle porte del Times e ho detto: mi chiamo Wayne Gould, e forse ho
qualcosa che vi può interessare».
Cosa le hanno risposto?
«Ero nell’atrio d’ingresso del giornale. Dopo un po’ è arrivato un dirigente e mi ha detto: “Hai 60 secondi di tempo
per spiegarmi di cosa si tratta”. Ho aperto il portatile e in un attimo gli ho mostrato tutto. Poi sono tornato in albergo,
e nel giro di un’ora mi è arrivata la risposta via mail: “Si comincia tra due settimane”».
Troppo semplice per sembrare vero.
«Ha ragione, ma in fondo il segreto del Sudoku è proprio questo. Per spiegare come si gioca basta un attimo, ma
trovare la soluzione può essere molto, molto difficile. Davanti al Sudoku non servono giri di parole, non si bara e non
si bluffa. Contano soltanto la logica e l’intuito. E’ questo che piace alla gente».
Si calcola che almeno 100 milioni di persone nel mondo abbiano fatto almeno una partita a Sudoku. E per molti è
diventato un rito quotidiano. Non teme che la sudokumania possa durare il tempo di un’estate?
«Era successa la stessa cosa quando furono inventate le parole crociate, all’inizio del Novecento. Per un po’ la gente
non andava nemmeno più al cinema pur di giocare, poi la situazione si è “normalizzata”. Ma anche oggi, cent’anni
dopo, che estate sarebbe senza i cruciverba? Secondo me il Sudoku avrà lo stesso, fortunato destino. In fondo se lo
merita, è un gioco intelligente».
C’è una domanda che tutti i «sudokudipendenti» vorrebbero farle: ma lei riesce sempre trovare la soluzione?
«Beh, proprio sempre no. Diciamo che nella maggioranza dei casi ce la faccio. Comunque non sono un campione, per
risolvere una griglia diabolica mi servono almeno venti minuti. Mia moglie è molto più veloce di me».
Paolo Beltramin
CORRIERE DELLA SERA, 9 agosto 2005
5A elettrotecnica e automazione
Pag. 34/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Quale intelligenza mette in gioco il gioco del sudoku?
Un articolo di Franca D'Agostini, pubblicato sul Manifesto del 2 settembre 2005.
Il rompicapo dell'estate non implica alcuna informazione specifica, ma soltanto una agilità mentale senza contenuti.
Inoltre il calcolo che porta alla soluzione non è di tipo matematico, bensì squisitamente logico. C'è di che alimentare la
vecchia ruggine tra i sostenitori di due tipi di intelligenza, un tema che ha fatto sprecare molto inchiostro e altrettante
lamentele sulla separazione tra cultura scientifica e umanistica
Paradossi della contemporaneità Un gioco che si adatta alle ossessioni del cittadino globale e a quel misto di
solitudine e ipercomunicazione, proprio dei frequentatori di Internet. Il gioco è solitario infatti, ma in molti ne parlano
e lo praticano. D'altronde, la condivisione della non condivisione è, come suggeriva Heidegger, il miglior fattore
coesivo per l'umanità
La novità di questa estate è che l'umanità si divide in due grandi famiglie: gli appassionati del sudoku, e quelli che lo
ignorano, o lo considerano con indifferenza e fastidio. Il sudoku, anche detto Su Doku, è come ormai sappiamo un
diagramma di 81 caselle, nove per lato (ma ne esistono anche di più grandi), in cui si trovano sparsamente inseriti
alcuni numeri dall'1 al 9. Il compito del giocatore consiste nel completare il diagramma, inserendo in tutte le caselle gli
altri numeri dall'1 al 9, in modo tale che in tutte le colonne, in tutte le righe e nei quadrati interni (3×3) del diagramma
figurino tutti i numeri: dunque nessuno più di una volta. Il nome «sudoku» infatti è una abbreviazione di «Suji wa
dojushin nikagiru», più o meno traducibile con «Il numero deve essere solo». Soli e irripetibili sono i numeri e soli
sono in linea di principio i giocatori. Il sudoku è infatti un gioco solitario, che ben si adatta al lieve stato ossessivo del
cittadino globale nei paesi economicamente avanzati, e si inserisce facilmente in quel tipico stile di vita, misto di
solitudine e ipercomunicazione, proprio dei frequentatori di internet e di altri strumenti affini. Il gioco è solitario
infatti, ma il popolo che ne parla e lo pratica e dice di praticarlo, ne discute e ne teorizza, comincia a essere piuttosto
vasto (la condivisione della non condivisione è d'altronde, come suggeriva Heidegger, il miglior fattore coesivo per
l'umanità).
Fin qui tutto bene, e tutto abbastanza prevedibile: un nuovo gioco, una nuova passione. C'è però un punto che suscita
le perplessità di qualsiasi osservatore: il sudoku è stato definito dal Times «utterly addictive», ossia: «che dà
dipendenza totale», ed è effettivamente così. Il giocatore di sudoku è maniacale, tende a vivere nel diagramma,
trascurando qualsiasi altra cosa. Non è del tutto chiaro il perché debba essere così. Lasciamo da parte la sfida dei
numeri che compaiono, l'ebbrezza trionfante del diagramma completato, lo sforzo iniziale e poi l'entusiasmo per
l'abilità conquistata: qualsiasi (video)gioco offre altrettanto, e forse di meglio. Ci deve essere qualcosa d'altro,
qualcosa di più, che non si spiega in termini di psicologia spicciola. Considerato che il Sudoku è anche, per universale
ammissione, «the fastest growing puzzle in the world» (il rompicapo la cui notorietà è cresciuta più velocemente nel
mondo), è probabile che al volgere dell'estate l'onda sudoku, così come è arrivata, così se ne vada. Ma nel frattempo, è
inevitabile concedersi qualche riflessione, nella prospettiva di ciò che Foucault chiamava una «ontologia
dell'attualità» (nome nobile per indicare un genere di riflessioni a metà tra filosofia e sociologia della cultura): in che
cosa consiste l'attrattiva «epocale» del sudoku? La sua fortuna è forse il sintomo di qualcosa che è avvenuto-sta
avvenendo nella vita e nella mente di un numero considerevole di persone? c'è una «mutazione antropologica» che si
annuncia o si prepara nella passione per questo diagramma nove per nove? O forse c'è un tipo di intelligenza che sta
ora diffondendosi e che nel sudoku trova la sua facile e felice espressione?
Le congetture si moltiplicano: alcune decisamente lambiccate e fantastiche, altre meno, nessuna sembra a tutta prima
convincente, e non è facile avere le idee chiare. La storia del sudoku, con i suoi spostamenti planetari, getta una prima
luce sulla sua sociologia. Il precursore è il carré latin di Eulero, anche detto quadrato magico. Il grande matematico
svizzero Eulero, si noti, soffriva dal 1735 di una grave forma di cecità progressiva, e concepì questo gioco nel 1783,
dunque in una fase avanzata della malattia, in cui vedeva al più ombre vaghe. Il quadrato latino è più semplice del
sudoku, perché non prevede i quadrati interni, ma consente perciò un numero più alto di soluzioni
(6.670.903.752.021.072.936.960 si è calcolato che siano le soluzioni possibili del sudoku: un numero finito, ma certo
inquietante, più o meno la distanza della Terra dalla stella più vicina, espressa in micrometri).
Il primo diagramma nella forma attuale si deve al newyorkese Howard Garnes, è degli anni `70, e viene pubblicato dal
Dell Pencil Puzzles and Word Games con il titolo non attraente di Number Place.
5A elettrotecnica e automazione
Pag. 35/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Nell'aprile del 1984 viene introdotto in Giappone, dalla società di giochi Nikoli, con il nome che conosciamo, e
conquista lentamente ma inesorabilmente l'operosa popolazione nipponica. Negli anni successivi, l'avanzare del
sudoku su scala mondiale non è avvertibile.
La prima svolta si ha nel 1997, quando il giudice neozelandese in pensione Wayne Gould in visita in Giappone lo
scopre. Nei sei anni successivi Gould mette a punto un programma per computer che produce diagrammi. Arriviamo
così all'autunno scorso (novembre 2004), quando il quotidiano Times - su suggerimento di Gould - pubblica nelle sue
pagine la prima griglia sudoku. Subito dopo, altri giornali seguono l'esempio: ma è solo a partire dal gennaio 2005 che
il nuovo rompicapo conquista i lettori occidentali. Tra aprile e maggio di quest'anno, quasi tutti i giornali britannici
sfoggiano sudoku facili e di media e avanzata difficoltà. In maggio le platee di lingua inglese si possono considerare
conquistate. In Italia arriva sui quotidiani più o meno a luglio, e ottiene rapidamente un suo diritto di esistenza, se non
altro, perché è in assoluto il passatempo più economico che si possa concepire: l'unico davvero consentito alle magre
risorse della povera estate italiana.
Si sa quasi tutto del sudoku, di come funziona, di come viene creato, della matematica e della logica che lo riguardano.
La migliore sintesi si trova su Wikipedia, la libera enciclopedia multilingue di Internet, all'indirizzo web
http://en.wikipedia.org/wiki/sudoku. Si sa meno per ora della psicologia sudokiana, ma non mancheranno autorevoli
ricerche. Qualche dato sulla epistemologia relativa (il tipo di conoscenza che il sudoku mette in questione) si può trarre
dalle informazioni sulle strategie di gioco, esigue ma abbastanza esaustive: quelle ufficiali, e quelle che i giocatori si
scambiano informalmente. Molti materiali si trovano nei diversi forum dedicati all'argomento, pubblicati sul sito della
Pappocom (la società di Gould). Il sito italiano è creato dalla Fandango libri (www.fandangosudku.it), che in Italia ha
pubblicato i volumetti di sudoku del Times. Un'analisi approfondita del meccanismo, del tipo di intelligenza che mette
in gioco, della differenza rispetto ad altri rompicapo, non è ancora stata compiuta, che io sappia, in modo sistematico.
Ecco dunque qualche riflessione preliminare.
Consideriamo come è fatto il diagramma, e la terminologia che lo riguarda: i nove piccoli quadrati 3×3 (sottogriglie)
sono detti «regioni», i numeri già presenti (la quantità massima per rendere il gioco minimamente divertente è stata
fissata in 30 cifre) sono detti significativamente «dati» (givens). Ora la prima considerazione interessante è che si
tratta di trovare numeri che già ci sono, virtualmente: abbiamo di fronte a noi una griglia con un certo numero di
«dati», quel che bisogna fare è semplicemente, utilizzando vari tipi di inferenze, fare affiorare i dati virtuali, ossia quei
numeri che sono presenti ma nascosti.
Le strategie di gioco sono, sostanzialmente, tre: scanning, marking up, analisi logica. Lo scanning consiste
semplicemente nel percorrere il diagramma con lo sguardo per esaminare i luoghi in cui figurano i numeri, e in cui
sono assenti, per esempio se nella prima colonna a sinistra figura un 3 alla terza riga, gli altri 3 non saranno in quella
stessa colonna, né sulla terza riga, né nella prima «regione»; inversamente, se nella prima colonna non figura un 3, da
qualche parte in quella stessa colonna dovrà esserci un 3. Lo sguardo coglie queste presenze e assenze in modo molto
più rapido di quanto non faccia la nostra competenza linguistica nell'afferrare il significato di queste parole che sto
scrivendo.
Lo scanning, anche il più sensibile ed esercitato, non riesce a cogliere situazioni più complicate, in cui per capire dove
stia un numero occorre tenere conto simultaneamente di righe, colonne, regioni, e in cui non si può fare affidamento su
«dati» presenti. Normalmente il solo scanning è sufficiente a risolvere puzzle definiti «facili», mentre i livelli medio e
avanzato, «insidioso», «difficile», e «diabolico» (fiendish) richiedono l'impiego del marking up, ossia la consuetudine
di segnare in alto in una casella le «contingenze multiple», i diversi numeri che potrebbero essere lì collocati, ma non è
ancora sicuro che lo siano. La strategia del marking up offre molte opportunità. Per esempio, se due caselle in una riga
hanno come «contingenze» solo due numeri, poniamo il 6 e il 5, sappiamo che in tutta la riga non figureranno più né il
6 né il 5. Il ragionamento si spinge di solito fino a tenere conto di tre contingenze collegate. L'analisi logica in senso
lato percorre tutte le fasi della ricerca, i due procedimenti principali sono l'esclusione di possibilità, e il «what if?»,
ossia, poniamo: se il 4 fosse nella casella «prima colonna, seconda riga che cosa succederebbe? L'esclusione di
possibilità opera sulla base di quel che sappiamo sui numeri presenti, o possibilmente presenti, e quel che sappiamo sui
numeri assenti.
5A elettrotecnica e automazione
Pag. 36/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Al primo apparire del sudoku sulle pagine dei giornali italiani, Stefano Bartezzaghi ha giustamente ricordato la
differenza tra i cruciverba e il rompicapo lanciato dalla Nikoli: i primi mettono in gioco il significato delle parole, e le
informazioni relative, il secondo coinvolge solo il posto, la collocazione dei numeri. Invece dei numeri, tra l'altro,
possono esserci simboli di qualsiasi natura (il Grande libro del sudoku, pubblicato da Fandangolibri, una specie di
summa progressiva, comprende anche diagrammi di lato 16, con cifre da 0 a 9, e lettere da A a F). Una considerazione
utile è dunque che il sudoku non coinvolge alcun tipo di «intelligenza culturale», nessuna informazione specifica, ma
soltanto quel che gli americani chiamano «pure brain», intelligenza pura, pura agilità mentale senza contenuti.
C'è una vecchia ruggine tra i sostenitori dei due tipi di intelligenza, soprattutto perché si ritiene che la prima crei
resistenze per la seconda, e viceversa, come dire: per essere davvero quick−in−the−head, ossia veloci di pensiero,
occorre essere di mentalità ristretta e scarsa cultura, ossia closed−in−mind. Così il buon conoscitore di romanzi e
storie, vicende del mondo e varietà di prospettive, viene messo in scacco da chi calcola rapidamente e agilmente, ma
non vede al di là dei suoi criteri e parametri; inversamente, il genio matematico viene ridotto alla confusione e al
silenzio, avvolto dalla rete di inutili parole messe in campo dall'intelligenza culturale. Il tema ha fornito ragioni per il
molto inchiostro sprecato sull'autoriflessione degli intellettuali, negli ultimi due secoli: fino ad alimentare le noiose e
ritornanti lamentele sulle «due culture».
Il punto è però che in realtà sia l'intelligenza pura che l'intelligenza culturale oggi sono messe in scacco dalla vittoria
planetaria della stupidità. O meglio, di una stupidità che non è tale, ma è piuttosto una certa agilità mentale, spesa
nella chiacchiera e nella relazione sociale, e in una serie di pratiche che l'intelletto comune di media entità e livello
considererebbe sciocche o riprovevoli, e che invece garantiscono alla stupidità di acquisire meriti e collocazioni un
tempo prerogativa dell'intelligenza (pura o culturale che dir si voglia).
Dunque, prima considerazione: l'antagonismo tra le culture e le intelligenze dovrebbe cessare a favore di una strategia
comune. I disprezzatori del sudoku, o di altri rompicapo logici, sulla base del presunto formalismo vuoto che li
contraddistingue, dovrebbero cominciare a pensare che c'è dell'altro da disprezzare, e da cui guardarsi.
In secondo luogo, è probabile che la diffusione del sudoku, ma in generale dei giochi logici e matematici, in epoca
recente sia indizio dell'affiorare di una intelligenza di tipo nuovo, che non è segnata dal dualismo di calcolo e cultura,
rapidità mentale ed erudizione, ma è in qualche misura preliminare all'uno e all'altra, e combina in vario modo l'uno e
l'altra. Il genere di competenza stimolata da Internet (alle migliori condizioni) dovrebbe essere di questo tipo. Gilles
Deleuze, pochi anni prima di morire, parlò di un «pensiero diagrammatico» che va sostituendosi - o dovrebbe
sostituirsi - al pensiero progettuale o strategico, ponendosi anche come trasversale alla distinzione tra «formale» e
«materiale». È un'idea che a quanto pare ha preso piede soprattutto tra gli architetti, i quali amano ormai parlare di
«diagrammi» invece che di progetti. E forse non si tratta di una moda (come spesso sono state usate e recepite le idee
di Deleuze): forse si tratta di una tendenza più vasta, che suggerisce qualche nuovo orientamento nel modo di recepire
l'ambiente, di concepire lo spazio, e il modo in cui operiamo su di esso.
Un diagramma è una figurazione di possibilità, che differisce dalla struttura perché mentre la struttura è vuota e
formale, ottenuta per astrazione (anche se dinamica), il diagramma contiene la realtà di cui è ordine: esattamente
come il nostro rompicapo dal nome giapponese, nella definizione di Deleuze il diagramma sarebbe l'intersecarsi di
linee di possibilità. Infatti, e in terzo luogo, va notato che il calcolo che si richiede nella soluzione del rompicapo non è
di tipo matematico, ma è squisitamente logico: si tratta di inferenze di tipo ordinativo. L'intelligenza in questione fa
affiorare un ordine latente a partire da dati (givens). È un'intelligenza spaziale, ordinatrice appunto, che combina
visione e inferenza allo stesso tempo, ed è perciò simile, credo, all'abilità logico-inferenziale necessaria per riordinare
con un certo genio il contenuto di un armadio. Si scoprirà, con qualche tecnica di imaging, che la soluzione dei sudoku
impiega uno scavalcamento degli emisferi cerebrali, e mette in gioco tipi diversi di prestazioni neurologiche? Si
scoprirà che l'intelligenza femminile è diagrammatica, o tendenzialmente tale? Non ne ho la minima idea, e ho qualche
dubbio anche sull'espressione «intelligenza femminile».
In ogni caso, l'esistenza di un popolo di sudoku−addicted, persi nel numero di combinazioni pari alla distanza tra la
Terra e le stelle, chiusi nell'universo senza luce in cui balenò per la prima volta il quadrato di Eulero, dà da pensare.
Certo, se di patologia si tratta, è preferibile ad altre, specie in un paese di patologie televisive. Ma forse sarebbe
augurabile che questa grande forza-lavoro logica (diagrammatica) trovi presto applicazione (se mai alleandosi
all'intelligenza culturale) per scalzare la stupidità (o la furbizia?) dominante.
5A elettrotecnica e automazione
Pag. 37/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
I sudokulisti
Uno degli ultimi quadrati proposti da Eulero, a 76 anni, pochi mesi prima di morire, nel 1783, fu un diabolico
quadrato di 81 caselle che potevano essere riempite in un’infinità di modi diversi, con l’inserimento dei numeri da uno
a nove, su ogni riga e su ogni colonna, senza ripetizioni. Questo è praticamente il Sudoku, il "nuovo" gioco che dal
Giappone si è diffuso rapidamente in tutto il mondo. Come il “Gioco del quindici”, il “Cubo di Rubick”, il “Punto e
croce” e di tutti gli altri puzzle che periodicamente ritornano di moda, anche il Sudoku è diventato una vera mania, con
milioni di “sudokulisti” appassionati.
Le regole sono molto semplici e occorre soltanto una
matita e un foglio di carta. Si gioca su una tabella di nove
per nove caselle (9×9) in ognuna delle quali si deve
inserire una cifra, da uno a nove.
Ogni riga e ogni colonna deve contenere tutte le cifre da
uno a nove, senza ripetizioni. Condizione ulteriore, e
questa è la novità, anche ogni blocco di caselle tre per tre
(3×3), contrassegnato da linee più marcate, deve
contenere le nove cifre, senza ripetizioni. Il Sudoku si
presenta con una parte delle cifre già inserite nelle
caselle.
Per essere un vero Sudoku, deve inoltre avere un’unica
soluzione.
Richiede normalmente dai dieci minuti alla mezz’ora per
essere risolto. Il nome originale del gioco, lanciato
vent’anni fa dalla Nikoli, una casa editrice giapponese
specializzata in giochi, era "Suji wa dokushin ni kagiru"
ovvero "Numeri limitati ad una sola persona", un nome
sintetizzato in Sudoku, "Numeri unici". Nikoli confessa
però di averlo scoperto per caso su una rivista americana
nel 1984, la Dell Puzzle Magazines, specializzata in
parole crociate e altri puzzle. L’editore di questa rivista,
Abby Taylor, precisa: "Nessuno sa di preciso quando
abbiamo incominciato a produrre questo tipo di giochi,
ma la copia più vecchia che ho trovato in archivio è del
1979".
Il gioco, che pubblichiamo ancora oggi, era stato
battezzato "Number Place". La rivista americana
presentava però puzzle di un’ingenuità sconcertante,
dicono i giapponesi. Alcuni dei quadrati 9×9 avevano
già, su una riga o su una colonna, otto delle nove cifre
richieste. Nikoli ha ridotto il numero delle cifre presenti
nel quadrato, introducendo alcune simmetrie nella
posizione delle cifre, con l’intenzione di offrire "81 celle,
afferma, di crudele bellezza".
Figura 15 − Il Sudoku del Daily Telegraph.
La condizione ulteriore del quadrato 9×9 diviso in blocchi 3×3, nei quali non ci siano ripetizioni dei nove numeri,
riduce notevolmente il numero dei quadrati latini possibili che passano da:
5.524.751.496.156.892.842.531.225.600 a 6.670.903.752.021.072.936.960.
Quest’ultimo valore, che rappresenta il numero di soluzioni uniche del Sudoku è stato calcolato da Bertram
Felgenhauer di Dresda, e il suo calcolo si trova a questa pagina:
http://www.sudoku.com/forums/viewtopic.php?t=44&start=138
Tenendo conto che per risolvere un Sudoku ci vuole mediamente mezz’ora, riviste e giornali hanno quindi un
rifornimento di Sudoku sufficiente per migliaia di anni: un mare di Sudoku in cui si rischia di affogare.
5A elettrotecnica e automazione
Pag. 38/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Soltanto in questi ultimi anni è arrivato il successo, dapprima in Giappone e in seguito, dalla Gran Bretagna, dov’è
sbarcato nel novembre dello scorso anno, in tutto il mondo. E’ stato Wayne Gould, un giudice neozelandese in
pensione, che vive a Hong Kong, ad introdurre il gioco in Europa. Dopo aver acquistato in Giappone un libro dedicato
al gioco, decise di scrivere un programma per generare le tabelle del Sudoku al computer. Ed è lui che oggi trasmette i
Sudoku a decine di giornali in tutto il mondo, a cominciare dal Times, il primo giornale inglese che ha aperto una
rubrica per il nuovo gioco, nel novembre dello scorso anno. "I puzzle di Gould, afferma il Times, vengono costruiti con
una serie di indizi che portano, logicamente, alla soluzione. Osservate attentamente uno dei suoi puzzle e scoprirete
sempre un certo grado di simmetria". Gould li paragona alla pittura giapponese: "Sono come un fiore, dice, o una casa
dipinta con un numero di tratti minimo".
Il Sudoku è arrivato sul cellulare. In Italia lo propongono
le maggiori aziende del settore:
Per richiedere e scaricare il gioco è sufficiente inviare un
SMS ad una delle aziende che forniscono questo servizio.
Si riceverà un link WAP da cui si potrà scaricare il gioco.
Al costo di 5 Euro si ricevono 75 griglie diverse, divise in
"facili", "medie" e "difficili". Ognuna ovviamente con una
sola possibile soluzione, come nel classico Sudoku
cartaceo. Per inserire i numeri nella griglia basta
spostarsi sulle caselle vuote e digitare la cifra: se è
corretta diventa nera, se è errata si colora di rosso. In
questo modo però si rischia di banalizzare il gioco.
L’abilità necessaria per risolvere il gioco rischia di
ridursi semplicemente al saper distinguere una cifra nera
da una rossa.
Figura 16 − Il Sudoku per cellulare Symbian.
Segno del successo del gioco è l’aumento della tiratura dei giornali che hanno adottato il Sudoku, i diversi libri di
Sudoku diventati immediatamente bestseller, inoltre i tornei di Sudoku e soprattutto le pagine web in continuo aumento
a confermare il successo del gioco. Se nelle città si misura il calo del consumo d’acqua, per valutare quanti sono
andati in vacanza, per il Sudoku si può valutare l’interesse e il successo dal numero di pagine dedicate a tale
argomento presenti su Internet. Ebbene, per il Sudoku, le pagine erano 135 mila a giugno, salite a 300 mila ai primi di
luglio e oggi sono quasi tre milioni.
Il Sudoku è arrivato anche in televisione, protagonista di
molte trasmissioni con servizi, interviste e gare in diretta.
Sovente viene presentato come un gioco che non ha nulla
a che fare con la matematica, ma che richiede soltanto
logica e intuizione... che sono invece le vere abilità
richieste al matematico.
Wayne Gould, giustamente, ritiene che debba essere
portato in classe, come prezioso esercizio per le giovani
menti degli studenti. "Può essere molto utile per portare
lo studente al ragionamento logico, afferma, per
acquistare una maggior confidenza con i numeri e per
sviluppare le sue abilità organizzative".
Figura 17 − Il Sudoku in televisione.
5A elettrotecnica e automazione
Pag. 39/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Definizioni e terminologia
Il gioco, così come appare, è formato da una griglia al cui interno vengono disegnati dei simboli viene detto schema.
Lo schema più diffuso consiste in una matrice quadrata di 9×9 (81) caselle (o celle) suddivise su 9 righe (numerate da
1 a 9) e 9 colonne (numerate da 1 a 9).
Lo schema mostra poi, con bordi più marcati, 9 quadri di 3×3 Caselle contigue ciascuno (detti anche blocchi o
regioni).
Si definisce:
n
n2
sqrt(n)
[1..n] oppure [A..H]
[1..n] oppure [a..h]
n
→
→
→
→
→
→
la dimensione del lato dello schema (deve essere un quadrato perfetto).
il numero complessivo di celle costituenti lo schema.
il numero complessivo di blocchi.
Indice delle righe.
Indice delle colonne.
numero di simboli diversi con i quali completare lo schema secondo le
regole note.
Normalmente come simboli vengono utilizzato i primi n numeri da 1 a n.
Per il gioco (n = 9) lo schema mostra i numeri solo in alcune caselle, il giocatore deve riempire le caselle restanti con i
simboli da 1 a 9, rispettando la regola base (unica regola) che “ogni riga, colonna e quadro contenga tutte le cifre da
1 a 9, senza ripetizioni”.
Le figure e gli esempi che seguono sono stati ottenuti col programma SUDOKUPT (Sudoku Personal Trainer v 2.2) che
offre un ambiente che facilita la soluzione dei Sudoku di 81 caselle e che su richiesta può suggerire la singola mossa,
motivarla logicamente, favorendo così l’apprendimento delle tecniche e dei trucchi più tipici.
Per il download: http://www.passatempi.brianzaest.it/contiene/SUDOKUI01.htm. Riassunto delle definizioni:
schema
riga
colonna
quadro
casella
zona
valore
candidati
esclusioni
doppietta
terna
quaterna
mossa del giocatore
già definito
già definita
già definita
già definito
già definita
indica indifferentemente una riga, una colonna o un quadro
è il numero (1..9) già presente in una casella, fin dall’inizio, o giocato durante la partita (il
programma SUDOKUPT mostra i valori iniziali in nero, quelli giocati in blu)
sono i possibili valori assegnabili a una casella in un certo momento del gioco, nel rispetto
della regola base. In certi momenti è inutile visualizzarli, in altri sono indispensabili per
poter proseguire. Il programma rappresenta i candidati con dei numeri più piccoli
all’interno delle caselle non ancora risolte (i candidati calcolati automaticamente appaiono
in rosso, quelli corretti manualmente sono in blu)
sono i valori che una casella non può accettare, perché violerebbero la regola base
se in un certo momento del gioco un candidato compare (da solo o con altri) soltanto in una
casella di una certa zona (ad esempio una colonna), esso è certamente vero ed è il valore da
dare a quella casella. Se invece compare solo in due caselle di uno stesso blocco, costituisce
una doppietta che gode della proprietà che il candidato sarà vero in una casella e falso
nell’altra o viceversa
idem per tre caselle di uno stesso blocco aventi lo stesso candidato
idem per quattro caselle di uno stesso blocco aventi lo stesso candidato
può essere di due tipi:
• scrive il valore in una casella
• sfoltire i candidati rimasti in una casella
Tabella 5 − Definizioni e terminologia del sudoku.
5A elettrotecnica e automazione
Pag. 40/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Esempio di problema:
Figura 18 − Schema e soluzione (unica) relativa.
Il gioco in realtà non è difficile (una sola regola da rispettare) ma solo lungo e, per certi versi, noioso.
Questa caratteristicha lo rende estremamente semplice da risolvere tramite un sistema programmabile (computer),
molto più semplice del Gioco del 15, per non parlare di giochi quasi intelligenti come gli Scacchi o il Go.
Semplice non significa che il programma per risolvere il Sudoku sia banale, ma solo che un volta scritto bene anche i
problemi più diabolici vengono risolti in poche decimi di secondo (su personal computer).
Un’altra cosa da puntualizzare è che sostenere che “il Sudoku è difficile perché NP−completo” è errato! Il problema
9×9 non dipende da alcun parametro e quindi si risolve in un tempo COSTANTE.
Si può parlare di complessità asintotica SOLO per problemi che dipendono da un parametro (per esempio una
generalizzazione di un Sudoku a matrici n2 ×n2 con blocchi n×n).
5A elettrotecnica e automazione
Pag. 41/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Matematica del Sudoku
Quanti sono i Sudoku possibili di ordine n?
Un problema matematicamente non banale è determinare quanti sono esattamente i possibili schemi del Sudoku.
I matematici Bertram Felgenhauer e Frazer Jarvis si chiesero innanzitutto, quante griglie diverse si possono realizzare.
Tale numero è stato ricavato tramite computer insieme alle soluzioni valide (tutte diverse), esse risultano molte
migliaia di miliardi di miliardi (6.02·1023) e vanno confrontate con le (5.525·1027) che sono le soluzioni dei Quadrati
Latini per cui viene richiesta la sola condizione di non ripetizione dei simboli su righe e colonne (Eulero).
Un altro problema affrontato da matematici esperti è quello di individuare il numero di cifre che un creatore di sudoku
deve inserire nella griglia iniziale, garantendo una soluzione unica.
Al momento sembra che i numeri da dover inserire siano 17 poiché è stato provato che inserendone 16, le soluzioni
possibili risulterebbero già 2 e il numero aumenterebbe esponenzialmente diminuendo tale cifra . Normalmente i
numeri inseriti nello schema sono da 20 a 35: naturalmente più basso è il numero delle cifre già inserite più la
soluzione del gioco è difficile.
I matematici hanno risolto anche il problema opposto e cioè quello di stabilire quale è il numero massimo di cifre che
non garantisce una soluzione unica: la risposta è 77. E’ facile verificare che con 80, 79, o 78 cifre se c’è una soluzione
essa è unica mentre non è detto che lo sia con 77.
Un altro problema che affascina matematici ed informatici è quello di stabilire che cosa il computer sia in grado di
fare per la soluzione e la programmazione del gioco. Grazie al computer è relativamente semplice elaborare
programmi in grado di risolvere tutte le griglie di partenza valide.
I programmi per trovare soluzioni possono essere di vario genere il più comune dei quali è l’approccio sistematico con
simulazioni per tentativi ed errori (algoritmo Try & Error). Esso prevede soluzioni parziali che vengono sempre più
affinate appena si riscontra la loro inesattezza. Il programma, se accurato, esplora tutte le possibili ipotesi fino ad
individuare la soluzione giusta, se questa esiste.
La tecnica di soluzione applicata al computer non è praticabile dalle persone fisiche perché richiederebbe, da parte
degli operatori, la così detta "pazienza di Giobbe". Quindi gli esseri umani usano metodi risolutivi più raffinati ed
efficienti rispetto a quelli analizzati dal computer.
Del gioco esistono numerose varianti: alcune sovrappongono diversi schemi, altre usano strutture diverse al posto
delle sottogriglie quadrate ed altre ancora usano vincoli aggiuntivi. Esistono anche esempi di sudoku con schemi
superiori a quello classico di 9×9 e gli informatici sono impegnati nello sviluppo di programmi in grado di risolvere e
quindi di creare sudoku di complessità sempre maggiore. Ovviamente il tempo necessario al computer per trovare una
soluzione al gioco aumenta enormemente al crescere del numero di celle di partenza.
Come tutti i giochi logici, il sudoku può essere descritto completamente mediante nozioni di logica; in questo caso si
applica la combinatoria.
Il gioco si svolge in matrici, che chiamiamo matrici sudoku di aspetto 9×9 (le griglie) le cui caselle possono contenere
un elemento di un insieme di 9 oggetti distinguibili, oppure un ulteriore oggetto diverso dai precedenti. Per descriverle
conveniamo che le righe e le colonne delle matrici siano individuate dagli interi da 1 a 9, che i nove oggetti siano gli
interi dell'insieme 9 := {1, 2, 3, 4, 5, 6, 7, 8, 9}, che l'oggetto ulteriore sia denotato con la lettera b e che una casella
contenente b sia detta casella bianca o vuota. Una matrice sudoku M viene considerata suddivisa in 9 blocchi di
aspetto 3×3 che denotiamo Bh,k con h, k = 1, 2,3; il blocco Bh,k riguarda, per la matrice M, le righe relative agli indici
3h-2, 3h-1 e 3h e le colonne relative agli indici 3k-2, 3k-1 e 3k. In ogni riga, colonna e regione di una matrice sudoku i
valori interi non possono essere ripetuti.
5A elettrotecnica e automazione
Pag. 42/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Una istanza di sudoku, detta anche griglia proposta o matrice incompleta, è una matrice sudoku che presenta alcune
celle bianche. Scopo del gioco è la trasformazione della griglia proposta in una matrice completa, cioè in una matrice
priva di celle bianche e quindi tale che in ogni sua riga, colonna e regione compaiano tutti gli elementi di 9 (ciascuno
una sola volta). Si osserva che una matrice sudoku completa è un quadrato latino di ordine 9 avente per blocchi matrici
3×3 con i nove numeri da 1 a 9.
Affinché una matrice incompleta sia considerata valida, ai fini del gioco, è necessario che la soluzione sia univoca,
ovvero non devono sussistere due o più soluzioni differenti, nei quali casi il gioco viene considerato non valido.
Nei casi di varianti di sudoku (per esempio killer, jigsaw, x, toroidale, ecc.) ulteriori condizioni devono essere verificate
affinché la matrice risulti valida.
La difficoltà di un sudoku non è data dalla quantità di numeri iniziali, bensì dalla loro disposizione.
Le soluzioni di una qualsiasi altra matrice incompleta sono un sottoinsieme delle soluzioni della matrice vuota.
Storicamente questo gioco è un caso ben più facile da risolvere di un antico e famoso gioco di logica−matematica a cui
si è dedicato anche Eulero; si tratta dei quadrati greco−latini. In questo caso, a differenza del sudoku, non vi sono
griglie interne e l'unica condizione da rispettare è che in ogni riga ed in ogni colonna compaiano tutti i numeri da 1 a
n2 una ed una sola volta, dove n è la dimensione del quadrato (nel caso del sudoku n = 9).
Inoltre occorre sovrapporre n soluzioni di questo tipo (dette quadrati latini) in modo che ciascuna casella abbia una
n−upla distinta.
Al contrario di quanto spesso si afferma, il sudoku è un gioco di logica e non di matematica, né ha a che fare con i
numeri. Le proprietà dei numeri non vengono mai utilizzate e neppure viene mai utilizzato il fatto che siano dei numeri.
Per rendersi conto della cosa basta pensare che il gioco sarebbe esattamente identico se anziché i primi nove numeri si
usassero le prime nove lettere dell'alfabeto oppure nove simboli diversi tra loro (non c'è nemmeno bisogno che tra i
simboli sussista un ordine).
Come si determina quando un Sudoku ha una soluzione univoca?
Una pubblicazione scientifica chiamata "Sudoku Squares and Chromatic Polynomials" si "limita" a dimostrare che per
garantire una soluzione univoca un Sudoku deve avere, tra le sue celle esposte, almeno 8 delle 9 cifre a disposizione
per il riempimento della matrice.
E’ stato inoltre dimostrato che per avere una soluzione univoca deve necessariamente esporre almeno un valore
all’interno dell’area illustrata in questa immagine.
Figura 19 − Regole per la costruzione di un sudoku.
Chiaramente queste due dimostrazioni ci aiutano soltanto ad escludere a priori alcuni sudoku ma non danno garanzie
né in un senso né nell’altro nel caso che il puzzle superi le richieste espresse; in questo caso sembra che un buon modo
per valutare l’unicità delle soluzioni di un sudoku sia il DLX ovvero il metodo dei Dancing Links.
5A elettrotecnica e automazione
Pag. 43/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
I Dancing Links:
La tecnica dei Dancing Links è stata inventata da Donald Knuth come metodo risolutivo per l’Algoritimo X da lui
stesso inventato. Secondo questa interpretazione il problema posto dai sudoku viene visto come una serie di vincoli che
legano gruppi di possibili valori.
Per ogni sudoku esistono 81 caselle, ognuna delle quali può ospitare 9 cifre (nel senso che sono virtualmente nove le
cifre che concorrono ad insediare una casella), quindi possiamo dire che:
R1C1 = {R1C1#1 R1C1#2 R1C1#3 R1C1#4 R1C1#5 R1C1#6 R1C1#7 R1C1#8 R1C1#9 }
R1C2 = {R1C2#1 R1C2#2 R1C2#3 R1C2#4 R1C2#5 R1C2#6 R1C2#7 R1C2#8 R1C2#9 }
···
R9C9 = {R9C9#1 R9C9#2 R9C9#3 R9C9#4 R9C9#5 R9C9#6 R9C9#7 R9C9#8 R9C9#9 }
cioè che per la prima casella in alto a sx (R1C1: Riga 1 Colonna 1) ci sono 9 potenziali valori (marcati come
R1C1#1..R1C1#9), lo stesso discorso si può fare per tutte le altre 80 celle ottenendo un numero complessivo di
81(celle) · 9(potenziali valori per cella) = 729 elementi del tipo “RxCy#z.
Definito questo primo set di vincoli (sono vincoli a tutti gli effetti; poiché è stato assegnato ad ogni cella un particolare
sottoinsieme di valori potenziali) possiamo prendere in considerazione le altre regole sancite da questo gioco:
Per ogni colonna ogni cifra può comparire una sola volta:
Utilizziamo un modello di questa regola usando la sintassi precedente ed associando ad ogni coppia (colonna/valore) i
valori potenziali che la soddisfano:
C1#1 = {R1C1#1, R2C1#1, R3C1#1, R4C1#1, R5C1#1, R6C1#1, R7C1#1, R8C1#1, R9C1#1}
C1#2 = {R1C1#2, R2C1#2, R3C1#2, R4C1#2, R5C1#2, R6C1#2, R7C1#2, R8C1#2, R9C1#2}
···
C9#9 = {R1C9#9, R2C9#9, R3C9#9, R4C9#9, R5C9#9, R6C9#9, R7C9#9, R8C9#9, R9C9#9}
Anche qui, come nel caso precedente definiamo i valori potenziali che si candidano a soddisfare le coppie
colonna/valore.
Per ogni riga una cifra può comparire una sola volta:
Ripetiamo lo stesso ragionamento fatto per le colonne stavolta per le righe:
R1#1 = {R1C1#1, R1C2#1, R1C3#1, R1C4#1, R1C5#1, R1C6#1, R1C7#1, R1C8#1, R1C9#1}
R1#2 = {R1C1#2, R1C2#2, R1C3#2, R1C4#2, R1C5#2, R1C6#2, R1C7#2, R1C8#2, R1C9#2}
···
R9#9 = {R9C1#9, R9C2#9, R9C3#9, R9C4#9, R9C5#9, R9C6#9, R9C7#9, R9C8#9, R9C9#9}
In ognuno dei 9 box 3×3 ogni cifra può comparire una sola volta:
Il ragionamento è di nuovo lo stesso ma questa volta elenchiamo i valori potenziali per ogni coppia (box/valore);
chiamiamo il box con la sintassi B1..B9:
B1#1 = {R1C1#1, R1C2#1, R1C3#1, R2C1#1, R2C2#1, R2C3#1, R3C1#1, R3C2#1, R3C3#1}
B1#2 = {R1C1#2, R1C2#2, R1C3#2, R2C1#2, R2C2#2, R2C3#2, R3C1#2, R3C2#2, R3C3#2}
···
B9#9 = {R7C7#9, R7C8#9, R7C9#9, R8C7#9, R8C8#9, R8C9#9, R9C7#9, R9C8#9, R9C9#9}
Conclusioni:
Se proviamo a fare due conti scopriremo che abbiamo definito 81(cella/valori) + 81(colonna/valore) + 81(riga/valore)
+ 81(box/valore) = 81 · 4 = 324 vincoli. Ognuno di questi vincoli coinvolge 9 valori potenziali quindi per ogni valore
potenziale esistono sempre 4 vincoli.
E’ possibile rappresentare tutti questi vincoli in una matrice che riporti sulle colonne i suddetti vincoli (quindi
R1C1..R9C9, C1#1..C9#9, R1#1..R9#9, B1#1..B9#9) e sulle righe tutti i valori potenziali (R1C1#1..R9C9#9).
Ad ogni cella di questa matrice si andrà poi ad inserire un 1 nel caso che il vincolo specificato incida sul valore
potenziale ed uno zero altrimenti.
5A elettrotecnica e automazione
Pag. 44/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
I principali metodi risolutivi
Vengono di seguito elencati alcuni metodi che consentono la soluzione manuale di uno schema. Ovviamente tali metodi
potranno essere utilizzati anche per definire un algoritmo (da fare eseguire ad una macchina) per la soluzione di
questo rompicapo.
Metodo 1 − "A colpo d’occhio"
Esempio 1a:
incrociando righe e colonne col valore '5', rimane nel
quadro mostrato in grigio solo la casella azzurra che lo
può accettare (notare che questo metodo non utilizza la
visualizzazione dei candidati e che è molto conveniente
per sgrossare lo schema, prima di ragionare sui
candidati).
Figura 20 − Esempio 1a.
Esempio 1b:
è lo stesso consiglio nel caso in cui la zona che riceve gli
incroci sia una riga. Il quadro centrale grigio, col suo
valore '4' rosa, rende escluse al '4' le due caselle della
riga grigia ai lati del '5'; la colonna grigia, col suo '4'
rosa, esclude la casella sottostante in cui incrocia la riga
grigia: se la riga grigia (qui non mostrata per intero) non
ha altre caselle libere, l’unica che può ricevere il '4' è
quella azzurra.
Figura 21 − Esempio 1b.
5A elettrotecnica e automazione
Pag. 45/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Metodo 2 − "single cell"
Definizione:
manca una sola casella per completare una zona.
Esempio 2:
nella riga evidenziata in grigio manca solo la casella
azzurra e lì si può confermare il candidato '2' che è
proprio il valore mancante alla zona.
Tale metodo può essere ovviamente utilizzato per
risolvere: la riga, la colonna o la cella.
Figura 22 − Esempio 2.
Metodo 3 − "single number"
Definizione:
una casella mostra un solo candidato.
Esempio 3:
si può confermare il valore '7' nella casella azzurra che
ha solo un candidato, appunto il '7'.
Figura 23 − Esempio 3.
Metodo 4 − "hidden loner o hidden single"
Definizione:
una zona mostra un certo candidato in una sola casella, ma altri candidati lo nascondono.
Esempio 4:
nella riga H il candidato '9' è presente solo nella casella
azzurra (pur se mescolato con 1 4 7 8) perciò lo si può
confermare come suo valore.
Figura 24 − Esempio 4.
5A elettrotecnica e automazione
Pag. 46/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Metodo 5 − "pure pairs o naked pairs"
Definizione:
una zona ha due caselle con la stessa coppia di candidati che però appaiono in altre sue caselle.
Esempio 5:
nella zona (cella) evidenziata ci sono due caselle 'Hb' e
'Hc' con la coppia pura 1 2 (grigio chiaro). L''1' e il '2 li
devo giocare per forza lì anche se ancora non so
esattamente come.
Comunque, non posso soddisfare anche la casella 'Gb'
azzurra della stessa Zona, perciò da quella azzurra va
tolto il candidato '1'.
Figura 25 − Esempio 5.
Metodo 6 − "hidden pairs"
Definizione:
una zona ha due caselle con la stessa coppia di candidati, ma altri candidati l’accompagnano in una
o in entrambe le caselle.
Esempio 6:
la riga A ha le caselle 'd' e 'e' con la Coppia nascosta 1 2,
nascosta dai candidati 3 e 4 che l’accompagnano. L''1' e
il '2' compaiono solo in 'd' e 'e', mentre il '3' e il '4' sono
accettati anche in altre caselle della riga. Poichè in 'd' e
'e' non si possono giocare più di due candidati, possiamo
liberarle dal '3' e dal '4'. Nelle caselle 'd' e 'e' lasciamo
solo la coppia pura 1 2.
Figura 26 − Esempio 6.
Metodo 7 − "locked candidates 1"
Definizione:
un quadro imprigiona un candidato su una sua riga o colonna, ma il candidato appare sulla stessa
riga o colonna al di fuori di quel quadro.
Esempio 7:
il quadro 'ABCabc' prevede il candidato '4' (caselle
grigio chiaro) solo in corrispondenza della riga 'A'; lì il
'4' vi andrà di sicuro, ma sulla stessa riga 'A' il '4' appare
anche (casella azzurra) al di fuori di quel quadro, perciò
da lì deve essere rimosso.
Figura 27 − Esempio 7.
5A elettrotecnica e automazione
Pag. 47/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Metodo 8 − "locked candidates 2"
Definizione:
una riga o una colonna imprigiona un candidato in un solo quadro, ma il candidato appare anche in
altre caselle di quel quadro.
Esempio 8:
la riga 'F' prevede il candidato '1' solo dentro al quadro
evidenziato in grigio; l''1' andrà di certo in una delle sue
due caselle in grigio chiaro, perciò non potrà esserci in
altre caselle dello stesso quadro (non in quella azzurra
con 1 2 6 9 e neppure nell’altra con 1 2 6).
Figura 28 − Esempio 8.
Metodi 9 e 10 − "number sharing"
Definizione:
quella Zona.
solo 3 (o 4) candidati soddisfano 3 (o 4) caselle di una zona, però appaiono anche in altre caselle di
Esempi 9 e 10:
coi tre candidati '4', '7' e '9' nelle caselle in grigio chiaro
non posso soddisfare più di quelle tre caselle dello stessa
zona (il quadro), perciò devo togliere '4' dalla casella
azzurra con 4 5 6 e poi togliere 4 7 da quella con 3 4 6 7
e poi levare '7' da quella con 3 5 7.
Figura 29 − Esempio 9.
Figura 30 − Esempio 10.
Metodo 11 − "pure triples o naked triples"
Definizione:
una zona ha 3 caselle con la stessa terna di candidati, che però appaiono in altre sue caselle.
Esempio 11:
coi quattro candidati '2', '3', '8' e '9' non posso soddisfare
altre caselle della stessa zona (riga 'B') oltre alle quattro
in grigio chiaro, perciò devo togliere '8' e '9' dalla casella
azzurra.
Figura 31 − Esempio 11.
5A elettrotecnica e automazione
Pag. 48/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Metodo 12 − "hidden triples"
Definizione:
una zona ha 3 caselle con la stessa terna di candidati, ma altri candidati li nascondono.
Esempio 12:
nel quadro evidenziato ci sono tre caselle (grigio chiaro)
con la terna nuda 6 7 9.
Tali candidati non possono valere in altre caselle della
stessa zona e devo togliere il '7' dalla casella azzurra.
Figura 32 − Esempio 12.
Metodo 13 − "Rettangolo X−Wing"
Definizione:
se due righe hanno lo stesso candidato in doppietta e tali caselle stanno sulle stesse Colonne (si forma
appunto un rettangolo), allora sono certamente false tutte le altre presenze di quel candidato su quelle Colonne.
Lo stesso si può dire invertendo righe e colonne se le doppiette appartengono a quest’ultime (altri esempi più avanti il
paragrafo dei reticoli).
Esempio 13:
il candidato '8' si presenta ai vertici (grigio chiaro) del
rettangolo X-Wing appoggiato sulle righe 'D' e 'G' che
hanno le doppiette di '8'.
Secondo la teoria l''8' va ammesso solo ai vertici di tale
rettangolo, perciò va tolto dalla casella azzurra della
colonna di sinistra e da qualunque altra casella delle
colonne sui lati (inclusi i loro prolungamenti).
Figura 33 − Esempio 13.
Metodo 14 − "Farfalla SwordFish"
Definizione:
Se 3 righe mostrano 2 o 3 caselle con lo stesso candidato e tali caselle stanno sulle stesse 3 colonne
(si formano due rettangoli parzialmente sovrapposti, quasi come le ali di una farfalla), allora sono certamente false
tutte le altre presenze di quel candidato su quelle colonne.
Lo stesso si può dire invertendo righe e colonne (altri esempi più avanti il paragrafo dei reticoli).
Esempio 14:
il candidato '5' configura una farfalla Swordfish
appoggiata su tre righe (i lati orizzontali dei due
rettangoli col vertice sovrapposto dove c’è 7 9, centro
della farfalla); secondo la teoria si può togliere il
candidato '5' se appare sulle tre colonne al di fuori dai
sei vertici liberi ed è il caso della casella in azzurro.
Figura 34 − Esempio 14.
5A elettrotecnica e automazione
Pag. 49/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Metodo 15 − "pure quads o naked quads"
Definizione:
una zona ha 4 caselle con la stessa quaterna di candidati, che però appaiono in altre sue caselle.
Esempio 15:
nella riga 'D' la quaterna 2 6 8 9 si ripete quattro volte
nelle caselle in grigio chiaro. La casella azzurra però
propone anche i candidati 8 9 che già sono impegnati a
soddisfare la quaterna, perciò vanno tolti dalla casella
azzurra.
Figura 35 − Esempio 15.
Metodo 16 − "hidden quads"
Definizione:
una zona ha 4 caselle con la stessa quaterna di candidati, ma altri candidati li nascondono.
Esempio 16:
nella riga 'D' ci sono quattro caselle (grigio chiaro e
azzurra) con la quaterna 2 7 8 9 nascosta però in alcune
delle quattro.
Occorre ripulirle, cominciando ad esempio da quella
azzurra da cui va tolto il candidato '1', ecc....
Figura 36 − Esempio 16.
Metodo 17 − "try and error"
Definizione:
Se nessuno dei metodi precedenti è utilizzabile si deve procedere per tentativi (Try and error): cioè
ipotizzare che un candidato sia "vero" e vedere le conseguenze della sua propagazione.
Questa, per ora, è l'unica strategia implementata nell'algoitmo Sudoku Solver 2.
5A elettrotecnica e automazione
Pag. 50/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Il progetto completo per SIMATIC Siemens S7−300
Il bando di concorso 2011 è molto chiaro in questo, il tema è la "virtualità", non è stato richiesto lo sviluppo di alcun
tipo di hardware. Ciò nonostante, l'applicazione Sudoku Solver 2 è in grado di "girare" su un PLC reale, se non altro,
a scopo dimostrativo della validità dello slogan pubblicitario precedentemente esposto.
Sviluppo del progetto hardware
Generalità
Il sistema hardware scelto è decisamente sovradimensionato rispetto alle esigenze reali dell'applicazione sviluppata.
In realtà sarebbe stato sufficiente l'utilizzo di tre soli componenti hardware: un alimentatore, una CPU "pura" (non
IFM) e un pannello operatore dotato di risoluzione adeguata all'applicazione stessa.
La scelta dell'ardware effettuata (vedi configurazione hardware) è stata "abbondante" sostanzialmente per due motivi:
eventuali espansioni future dell'algoritmo e, come secondo motivo, essendo tutto simulato...non ci costava nulla
abbondare...
Lista degli I/O, lista di attribuzione (simboli)
Sudoku Solver 2 è una applicazione del tutto anomale per quanto riguarda un PLC. Di fatto essa non ha bisogno di
nessun I/O da e verso il campo, ma solo dell'I/O da e verso il pannello operatore.
La lista è pertanto estremamente ridotta limitandosi ad assegnare i simboli agli OB, DB ed FC utilizzati.
Tabella 6 − Lista dei simboli.
5A elettrotecnica e automazione
Pag. 51/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
La macchina (reale) "Sudoku Solver 2"
La macchina ideata e simulata può essere effettivamente realizzata. Purtroppo non disponevamo di un pannello
operatore adeguato essendo, il nostro laboratorio di automazione industriale, dotato di pannelli TP170B
monocromatici insufficienti (per risoluzione) a rappresentare lo schema sudoku proposto.
Nel caso in cui Siemens decida di sfruttare effettivamente la campagna pubblicitaria proposta (ovviamente senza
obbligo alcuno nei nostri confronti) si potrebbe realizzare la macchina che esegue SS2 da usare, per esempio, nelle
fiere di settore, quale macchina demo che non mancherà di suscitare la curiosità dei visitatori.
Schema elettrico complessivo
Lo schema elettrico (vista complessiva) prevede l'utilizzo dei due blocchi: PLC + pannello TP270, essi vengono "uniti"
tramite il cavo MPI mostrato in figura.
Nel caso in cui si desideri procedere ad una sessione di debug occorrerà collegare alla rete MPI un dispositivo di
programmazione (PC o PG) dotato di interfaccia MPI e di software Step 7 + WinCC 2008 flexible o TIA Portal 11.
Figura 37 − Schema elettrico (complessivo) della macchina SS2.
5A elettrotecnica e automazione
Pag. 52/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
PLC, configurazione hardware
La struttura hardware scelta è la seguente:
Componente
Alimentatore PS 307 5A
Num. ordinazione
6ES7 307−1EA00−0AA0
CPU 314
6ES7 314−1AE04−0AB0/V1.2
Digital Input DI32xDC24V
6ES7 321−1BL00−0AA0
Digital Output DO32xDC24V/0.5A
6ES7 322−1BL00−0AA0
Analog Input AI2x12Bit
6ES7 331−1KB00−0AB0
Analog Output AO2x12Bit
6ES7 322−5HB01−0AB0
Pannello Operatore
OP 270 10'' 7.2.3.0
NOTE
Alimentatore carico 120/230V AC:24VDC/5A
Memoria di lavoro 24KB; 0,3ms/1000 istr.;
connettore MPI; con configurazione a più file,
fino a 32 unità; comunicazione S7 (FB/FC
caricabili); firmware V1.2
Unità ingressi digitali DI32 24V, a gruppi di 32;
disponibile anche come unità SIPLUS con
numero di ordinazione 6AG1 321-1BL00-2AA0
Unità uscite digitali DO32 24V/0.5A, a gruppi di
8; disponibile anche come unità SIPLUS con
numero di ordinazione 6AG1 322-1BL00-2AA0
Unità ingressi analogici AI2/12...14bit, non per la
configurazione con moduli di bus attivi
Unità uscite analogiche AO2/12bit,
riparametrizzabile in modo online; disponibile
anche come unità SIPLUS con numero di
ordinazione 6AG1 332-5HB01-2AB0
Tabella 7 − Scelta della configurazione hardware.
5A elettrotecnica e automazione
Pag. 53/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Sviluppo del progetto software Sudoku Solver 2
Generalità
La premessa è d'obbligo, è evidente a chiunque che il PLC non è il sistema programmabile più adatto per eseguire
l'applicazione Sudoku Solver 2. Essa, infatti, non è classificabile come una applicazione di controllo in catena chiusa
tradizionale (che esegue quindi un loop di controllo virtualmente infinito) ma, piuttosto, come un tradizionale
programma che: richiede dei dati in ingresso, effettua una (ed una sola) elaborazione ed, infine, produce i dati di
uscita. Vediamo la figura sottostante che illustra, sottoforma di diagramma di flusso, le due tipologie di software
(profondamente diverse tra loro).
Figura 38 − Schema e soluzione (unica) relativa.
5A elettrotecnica e automazione
Pag. 54/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
L'adattamento dell'algoritmo SS2 (per sua natura rappresentato dal diagramma di flusso di sinistra) alla struttura di
flusso rappresentata a destra poteva essere effettuato in due modi:
• Trasformazione formale in macchina a stati da implementare in OB1 (blocco ad esecuzione ciclica).
La trasformazione in macchina a stati avrebbe previsto la riformulazione parziale dell'algoritmo stesso. Si era
pensato di effettuare una scansione intera dell'algoritmo (fino al punto di avanzamento o arretramento del
puntatore linearizzato P) per ogni scansione di OB1.
Questa tecnica però presentava due svantaggi:
• Avrebbe reso lentissima l'esecuzione dell'algoritmo stesso (per ogni modifica di P il tempo di
elaborazione sarebbe stato di circa 100[ms]),
• Nel caso in cui ci fossero stati "percorsi lunghi" dovuti alla combinazione sfavorevole dei salti
condizionati presenti nel programma, avremmo corso il rischio di andare in Stop per superamento del tempo
di ciclo.
Tale modalità è stata scartata.
•
Utilizzo del solo OB100 (blocco di avvio).
E' la tecnica scelta per l'implementazione dell'algoritmo SS2. Evidentemente non mostra gli svantaggi elencati
ai punti precedenti ma, al contrario, consente tempi di elaborazione rapidi perchè non vincolati alla tempo di
ciclo costante a cui è costretto OB1.
L'unico appunto a tale tecnica è il non utilizzare OB1 (cosa immaginiamo mai vista su un PLC Siemens) che
potrebbe rendere l'elaborato dell'Aldini−Valeriani eccessivamente "originale" anche per la commissione
giudicatrice.
5A elettrotecnica e automazione
Pag. 55/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Elenco del software utilizzato per lo sviluppo del progetto
Nell'aula Lab.072 dell'Aldini−Valeriani disponiamo del software sotto elencato per ben 15 postazioni PC. In attesa del
nuovo prodotto TIA Porta 11, l'utilizzo di Step 7 era d'obbligo.
Tutto il software menzionato è stato aggiornato all'ultima versione disponibile (inizio 2011) come Service Pack e come
Hot Fix.
Componente software
Sistema Operativo
STEP 7
PLCSIM
SCL
WINCC Flexible 2008
Versione
Windows XP Professional SP3
5.5
Release: 5.5.0.0
5.4 + SP4
N. revisione: K5.4.4.0
5.3 + SP5 + HF1
Release: K5.3.5.1
2008 SP2
Tabella 8 − Elenco software utilizzato.
5A elettrotecnica e automazione
Pag. 56/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Storia del Pascal (cenni)
In campo informatico, il Pascal è un linguaggio di programmazione strutturato e di tipo imperativo creato da Niklaus
Wirth. La sua nascita e diffusione si può far risalire alla prima metà degli anni ’70. Il Pascal è sostanzialmente
derivato dal linguaggio ALGOL ideato precedentemente come contrapposizione al Fortran e la scelta del nome fu in
omaggio al matematico e filosofo francese Blaise Pascal, inventore della prima macchina calcolatrice automatica
(Pascalina).
In base alle idee del suo inventore, il Pascal doveva essere un linguaggio di programmazione adatto alla didattica, ma
anche dotato di strutture dati avanzate.
Il BASIC, creato nel 1964, era facile da imparare ma non aveva strutture dati avanzate e soprattutto non incoraggiava
affatto ad analizzare il problema da risolvere prima di scrivere il codice.
Wirth creò da zero il Pascal, inserendo nel linguaggio il concetto di programmazione strutturata. Raggiunse una
discreta diffusione nel campo industriale nel 1973 con la pubblicazione del testo: "Pascal user manual and Report".
Questo rimase il testo di riferimento standard per il linguaggio.
Il risultato fu un linguaggio completo e potente, e soprattutto che educa fin dall'inizio ad adottare un buono stile di
programmazione e ad analizzare a fondo il problema prima di cominciare a scrivere il codice, cosa che rende i
programmi Pascal più chiari e più facili da leggere rispetto all’utilizzo di altri linguaggi come C e BASIC.
Queste ultime caratteristiche lo rendono più amichevole nei confronti dei neofiti e rendono meno difficile la stesura dei
primi programmi; per contro, i programmatori esperti soffrono dell’eccessiva rigidezza e prolissità della sua sintassi.
Dal Pascal originario sono state derivate anche versioni successive comprendenti il paradigma di programmazione ad
oggetti (detti anche object−Pascal) tra i quali possiamo citare Delphi di Borland/Embarcadero.
S7−SCL
L’S7−SCL (Structure Control Language) é un linguaggio avanzato messo a punto da Siemens per la programmazione
dei suoi PLC. Rispetto alle soluzioni più tradizionali come KOP, FUP e AWL presenta tutta la potenzialità di un
linguaggio strutturato di alto livello. Risulta perciò molto adatto in tutte le situazioni nelle quali sono necessari calcoli
o gestioni complesse dei dati.
L’ S7−SCL contiene gli elementi base tipici del Pascal (e di tutti i linguaggi ad alto livello) come la gestione delle
strutture dati complesse, le strutture condizionali, i cicli, le funzioni, ma anche gli elementi tipici necessari alla
programmazione dei PLC come contatori e temporizzatori.
Il punto di forza rimane comunque quello della programmazione strutturata che viene a facilitare di molto il lavoro del
progettista in caso di sistemi complessi.
Siemens propone un ambiente di sviluppo completo che contiene tutti i tools necessari per lo sviluppo di S7−SCL.
I blocchi fondamentali che lo compongono sono: un editor dedicato e molto evoluto per la scrittura del programma, un
compilatore che traduce quanto scritto nel linguaggio interno del PLC ed un modulo di debugger per la ricerca degli
errori.
L’S7-SCL consente la creazione dei blocchi nativi utilizzati dal PLC (organizzativi, funzionali e dati) utilizzando
direttamente un linguaggio ad alto livello. Ciò significa che la struttura runtime tipica dei PLC industriali non può
essere comunque compromessa dalla scrittura di codice contenente errori, in quanto sussiste la presenza, ad esempio,
sia del blocco di inizializzazione del sistema (OB100, OB101, OB102) sia del blocco ad elaborazione ciclica (OB1).
Tutto questo è possibile rimanendo all’interno di un unico ambiente di programmazione (Step7) che consente anche
tramite diversi “plugin” di estendere le funzionalità di base.
L’ambiente integrato permette di utilizzare contemporaneamente tutti i linguaggi (ognuno con il suo editor) disponibili:
KOP, FUP, AWL, GRAPH, HI−GRAPH e SCL anche all’interno dello stesso progetto. Qualunque sia la sorgente
utilizzata, viene comunque prodotto il codice adatto alla CPU scelta.
5A elettrotecnica e automazione
Pag. 57/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
L'algoritmo
L'algoritmo "Sudoku Solver Ver.2.0" è diviso in due parti rappresentate dai due diagrammi di flusso allegati.
La prima parte dell'algoritmo, denominata "Fase di input dati", consente all'operatore di inserire lo schema Sudoku
desiderato (inserimento dei valori).
La seconda parte dell'algoritmo denominata "Fase risolutiva", agisce sullo schema precedentemente inserito in modo
del tutto automatico. Tale fase continua fino a che non viene trovata una soluzione allo schema (nel caso in cui si sia
inserito uno schema "non Sudoku" avente più di una soluzione, il programma determina la prima soluzione. In modo
particolare quella soluzione in cui i numeri proposti tendono a salire leggendo lo schema in ordine di lettura).
Fase di input dati
La prima parte del programma si occupa dell'inserimento dei dati (manuale) da parte dell'utente finalizzato a costruire
lo schema Sudoku desiderato. Si definisce Sudoku:
•
•
•
Semplice
Medio
Diabolico
uno schema dotato di almeno 30 valori.
uno schema dotato di almeno 24 valori.
uno schema dotato di almeno 17 valori.
come già scritto precedentemente in questo testo, non sono noti schemi Sudoku con meno di 17 valori.
L'algoritmo espresso nel diagramma di flusso allegato prevede l'azzeramento iniziale della matrice S.
Successivamente si passa all'inserimento del primo dato (riga r, colonna c) che deve soddisfare alcuni requisiti:
• il valore deve essere un numero compreso tra 1 e 9 (estremi inclusi),
• il valore non deve essere in conflitto (ripetizione) degli altri valori inseriti nella riga di appartenenza, nella
colonna di appartenenza e nel blocco di appartenenza.
L'operatore può scegliere se inserire un altro dato. Al termine dell'inserimento dei valori l'utente può scegliere se
procedere al calcolo automatico della soluzione o se annullare tutto ripetendo la fase di input di un nuovo schema.
Nel caso in cui si scelga di procedere con la soluzione, il programma pone, per ciascun valore inserito, un segnalatore
(S[r,c,2] = 100) che indicherà, all'algoritmo "Fase risolutiva", che quella cella contiene un valore, ovvero un numero
immutabile.
5A elettrotecnica e automazione
Pag. 58/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Fase risolutiva
L'elemento primario riguardante la fase risolutiva è il puntatore P. Tale puntatore può assumere i valori da 1 a 81
(anche se viene inizializzato a 0), esso indica la cella sulla quale l'algoritmo sta agendo.
Il puntatore P "linearizza" la matrice quadrata 9x9 (S[1,1,1] ÷ S[9,9,1]) consentendo un accesso alle singole celle più
agevole ed efficiente. Per esso sussistono le relazioni:
P = 8 ⋅ (r − 1) + c
∀r , c ∈ [1, 9]
r = {(P − 1) div 9}+ 1
c = {(P − 1) mod 9}+ 1
∀P ∈ [1, 81]
∀P ∈ [1, 81]
L'algoritmo fa sostanzialmente due cose:
• Incrementa P
nel caso in cui tutte le celle abbiano almeno un candidato.
Nel caso in cui P=81 il Sudoku è risolto!!
• Decrementa P nel caso in cui almeno una cella non abbia più nessun candidato.
Nel caso in cui l'arretramento non sia possibile lo schema (evidentemente sbagliato) non ammette soluzione.
L'incremento e l'arretramento di P avvengono "al netto" delle celle aventi un valore (ovvero scartando le celle che
hanno ricevuto un valore durante la fase di inizializzazione dello schema Sudoku.
5A elettrotecnica e automazione
Pag. 59/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
La prima simulazione dell'algoritmo (a cura del Prof. Fabio Pedretti)
Una volta definito l'algoritmo di soluzione e dopo aver tracciato il relativo diagramma di flusso, si è deciso di
procedere ad una simulazione utilizzando un personal computer. Questo per abbreviare (anche notevolmente) i tempi
di sviluppo e per poter sfruttare le possibilità di debugging di un sistema ad alto livello.
In seguito, quando il programma è risultato perfettamente funzionante, si è passato alla stesura in SCL su PLC.
L'ambiente di sviluppo scelto è Delphi (di Embarcadero/Borland), un compilatore object−Pascal per l'ambiente
Windows. Questa scelta permette di scrivere un programma abbastanza simile a quello che verrà tradotto in SCL in
quanto entrambi i sistemi hanno come base il linguaggio Pascal.
Questo sistema di sviluppo ci ha dato la possibilità di scrivere molto rapidamente il programma e contemporaneamente
di curarne il debug in modo comodo e rapido. Il risultato sono due eseguibili totalmente autonomi e funzionali su
personal computer dotato di sistema operativo Windows.
Nella scrittura del primo programma (SudokuSolver2.exe) che è stato prodotto in ordine di tempo, ci si è preoccupati
solamente della verifica della funzionalità dell'algoritmo e si sono sfruttate più a fondo le caratteristiche dell'ambiente
ad oggetti e della programmazione ad eventi disponibili in ambiente Windows, mentre nella seconda versione
(Sudoku_PLC.exe) si è tentato di simulare al massimo le disponibilità dell'SCL. Questa seconda versione risulta perciò
decisamente “minimale” rispetto alla prima, anche a causa dello scopo molto diverso delle due applicazioni
sviluppate.
Nonostante siano reperibili tramite internet diverse applicazioni per la risoluzione dei Sudoku, si è scelto di scrivere un
programma "ad hoc" per poter testare la corretta funzionalità dell'algoritmo ideato.
Delphi: SudokuSolver2.exe (a cura del Prof. Fabio Pedretti)
Installazione
L'installazione non è necessaria in quanto l'eseguibile
risulta perfettamente autonomo. Si consiglia di creare una
cartella con nome a piacere e copiare l'eseguibile (ed
eventualmente gli schemi di esempio: tutti i files con
estensione .txt) in questa stessa cartella.
Il programma si presenta, vuoto dei dati, come illustrato
in figura
Figura 39 − SudokuSolver2.exe, StartUp.
5A elettrotecnica e automazione
Pag. 60/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Immissione dati
Prima di iniziare il calcolo della soluzione è necessario
immettere i valori fissi che dovranno apparire sullo
schema. Per ottenere questo, bisogna scrivere un file di
testo composto da 9 righe di 9 caratteri ciascuna. Ogni
carattere rappresenta una cella del Sudoku e avrà valore
'0' se la cella deve rimanere vuota oppure un numero da
'1' a '9' nel caso in cui si desideri inserire un valore fisso.
Il file potrà avere un nome a piacere, ma estensione '.txt'
per poter essere immediatamente riconosciuto dal
programma.
600000000
800000040
040519000
205600700
007000900
004007302
000342080
010000005
000000007
Figura 40 − SudokuSolver2.exe, file dati sudoku.
Avviato il programma, premendo il tasto “Load game” si
può scegliere un file contenente lo schema Sudoku da
risolvere. Se il file risulta corretto, verrà visualizzato
immediatamente sullo schema: appariranno in grigio
chiaro i valori inseriti che risulteranno quindi inalterabili
durante la ricerca della soluzione. Premendo il tasto
“Solve!” si avvia la ricerca della soluzione.
Figura 41 − SudokuSolver2.exe, Load Game.
5A elettrotecnica e automazione
Pag. 61/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Elaborazione dati
Durante questa fase, il programma mostrerà
dinamicamente:
• i candidati per ciascuna cella (numerini blu in
piccolo),
• la cella attualmente presa come riferimento per il
calcolo dei candidati (cella con sfondo verde),
• la presenza di celle prive di candidati (cella con
sfondo rosso).
Ogni volta che all'interno di una cella viene “eletto” un
candidato in corrispondenza del passaggio al tentativo
successivo, lo si vedrà apparire come un numero in nero
su sfondo grigio.
Vengono anche indicate alcune informazioni che sono
risultate utili durante la fase di debug:
• la posizione della cella utilizzata ogni volta come
riferimento ed indicata sia nel range 1..81 che
come coordinate riga/colonna,
• il numero di iterazioni eseguite, ovvero il numero
di tentativi eseguiti durante la ricerca della
soluzione.
E' presente anche un'etichetta che indica la fase
dell'algoritmo che risulta attualmente in esecuzione.
Dato che la ricerca della soluzione può durare diverse
ore, la pressione del tasto “Stop” interrompe l'esecuzione
in qualsiasi istante.
Per migliorare la sessione di debug è stata aggiunta la
possibilità di procedere “passo−passo” tra le varie fasi
della ricerca: per ottenere ciò, applicare la spunta alla
casella denominata “Step”. Fatto questo premere il
pulsante “Solve!” per avviare il calcolo: l'algoritmo si
fermerà dopo il primo step e sarà possibile procedere al
passo successivo premendo il pulsante “>>”. Togliendo
la spunta dalla casella “Step” e premendo il pulsante
“>>” si riavvia la ricerca della soluzione a velocità
piena.
Figura 42 − SudokuSolver2.exe, Run.
5A elettrotecnica e automazione
Pag. 62/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Presentazione risoluzione
Questo programma può impiegare parecchio tempo per la
ricerca della soluzione in quanto viene notevolmente
rallentato dalla continua visualizzazione dei candidati e
dello stato delle singole celle,. Di conseguenza, anche un
sudoku relativamente semplice può richiedere parecchi
minuti se non ore di calcolo.
Nella figura di destra viene mostrata la fase finale
dell'elaborazione in cui viene visualizzato lo schema
sudoku immesso risolto.
Figura 43 − Algoritmo 1PC, End.
5A elettrotecnica e automazione
Pag. 63/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Delphi: Sudoku_PLC.exe (a cura del Prof. Fabio Pedretti)
Installazione
L'installazione non è necessaria in quanto l'eseguibile risulta perfettamente autonomo. Si consiglia di creare una
cartella con nome a piacere e copiare l'eseguibile (ed eventualmente gli schemi di esempio: tutti i files con estensione
.txt) in questa stessa cartella.
Immissione dati
Prima di iniziare il calcolo della soluzione è necessario
immettere i valori fissi che dovranno apparire sullo
schema. Per ottenere questo, bisogna scrivere un file di
testo composto da 9 righe di 9 caratteri ciascuna. Ogni
carattere rappresenta una cella del Sudoku e avrà valore
'0' se la cella deve rimanere vuota oppure un numero da
'1' a '9' nel caso in cui si desideri inserire un valore fisso.
Il file potrà avere un nome a piacere, ma estensione '.txt'
per poter essere immediatamente riconosciuto dal
programma.
045000010
000002003
000400000
000000500
401600000
007100000
050000200
000080040
030910000
Figura 44 − Sudoku_PLC.exe, file dati sudoku.
Una volta caricato uno schema (pulsante LOAD), questo
viene immediatamente visualizzato. Le caselle disponibili
(vuote) vengono rappresentate con degli '0'.
Figura 45 − Sudoku_PLC, Load Game.
5A elettrotecnica e automazione
Pag. 64/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Elaborazione e presentazione risoluzione
Una volta caricato uno schema, questo viene
immediatamente visualizzato. Le caselle disponibili
(vuote) vengono rappresentate con degli '0'.
La pressione del pulsante 'START' lancia la ricerca della
soluzione alla massima velocità possibile. Al contrario
dell'altro programma, non viene visualizzato nessun
risultato intermedio, ma solo la soluzione quando trovata.
Al termine dell'esecuzione viene visualizzato lo schema
completo, il tempo impiegato per l'esecuzione
(ore.minuti.secondi.millisecondi) ed il numero di
iterazioni eseguite.
La casella denominata “ABS on Exit” ha il mero scopo di
rendere col segno positivo i numeri presenti sullo schema
una volta trovata la soluzione: l'algoritmo utilizzato lascia
infatti molti numeri col segno negativo; quest'ultimo viene
utilizzato come riferimento per la “rotazione” dei
candidati (vedi descrizione generale dell'algoritmo SS2).
Per poter raggiungere un'elevata velocità di elaborazione,
non è stato inserito alcun pulsante di interruzione ed il
programma terminerà solo ad algoritmo completato: la
scelta di questo piccolo compromesso è dovuta al fatto
che si voleva verificare un algoritmo il più possibile simile
a quello implementato su PLC in SCL e
contemporaneamente verificare i tempi necessari alla
ricerca della soluzione. La finestra del programma
apparirà perciò come “congelata” durante tutta la fase di
calcolo; il controllo dell'applicazione verrà ripreso a
soluzione trovata.
Figura 46 − Algoritmo 2PC, End.
5A elettrotecnica e automazione
Pag. 65/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Strutture dati
Come noto, i PLC Siemens dispongono di due aree dati: l'area dati globale e statica allocata normalmente nell'area
merker o in un blocco dati (DB) o l'area dati temporanea allocata nell'L−Stack.
nel programma Sudoku Solver 2 vengono utilizzate entrambe le aree, in modo particolare, la parte di variabile globali
e statiche è stata allocata nel DB20 (nome simbolico: VG). In questo blocco dati sono stati allocati:
• matrice S
è una matrice tridimensionale contenente sia i valori mostrati sul pannello
operatore (schema sudoku) sia, nel senso della profondità, gli eventuali candidati di
ciascuna cella.
• matrice Pulsanti
è una matrice bidimensionale che conserva lo stato di tutti i pulsanti presentati sul
pannello operatore.
• matrice Stringhe
è una matrice monodimensionale che contiene lo stato visibile/invisibile di tutte le
stringhe mostrate sul pannello operatore.
• matrice Led
è una matrice bidimensionale che conserva sia lo stato dei led (on/off) sia il loro
stato visibile/invisibile.
• variabile CICLI
è la variabile che memorizza il numero progressivo di cicli svolti dall'algoritmo
Sudoku Solver 2.
La matrice S
Si tratta di una matrice tridimensionale così definita:
S : ARRAY[1..9, 1..9, 1..11] OF INT
Essa è istanziata nel blocco dati DB20, il significato degli indici è il seguente:
•
•
•
Indice 1 [valore da 1 a 9]:
Indice 2 [valore da 1 a 9]:
Indice 3:
• [valore 1]:
• [valori da 2 a 9]:
• [valore 10]:
•
[valore 11]:
Riga dello schema sudoku,
Colonna dello schema sudoku,
Elemento visualizzato o "cima dei candidati",
gli altri candidati,
Enable della cella r,c
0 → input da pannello operatore disabilitato,
1 → input da pannello operatore abilitato.
Colore del testo della cella r,c
0 → nero,
1 → rosso,
2 → verde,
3 → blu,
4 → viola.
PS.: Step7 organizza gli array nei DB nel seguente modo:
S[1, 1, 01]
S[1, 1, 10]
S[1, 1, 11]
E' il primo
elemento (INT), ha offset 00: DB20.DBB000
E' il decimo
elemento (INT), ha offset 09: DB20.DBB020
E' l'undicesimo elemento (INT), ha offset 10: DB20.DBB022
in pratica, varia più rapidamente l'indice di destra...
S[1, 2, 01]
...ha offset 11: DB20.DBB024
ecc...
5A elettrotecnica e automazione
Pag. 66/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
La matrice Pulsanti
Si tratta di una matrice bidimensionale così definita:
Pulsanti: ARRAY[1..32, 1..2] OF BOOL
Essa è istanziata nel blocco dati DB20, il significato degli indici è il seguente:
•
Indice 1 [valore da 1 a 32]:
Codice pulsante,
1
→ Pulsante "Azzera Valori",
2
→ Pulsante "RISOLVI",
3
→ Pulsante "STOP",
4
→ Pulsante "RIAVVIA",
5
→ Pulsante "SE_1",
6
→ Pulsante "SE_2",
7
→ Pulsante "SE_3",
8
→ Pulsante "SM_1",
9
→ Pulsante "SM_2",
10
→ Pulsante "SM_3",
11
→ Pulsante "SH_1",
12
→ Pulsante "SH_2",
13
→ Pulsante "SH_3".
•
Indice 2 [valore da 1 a 2]:
Pulsante[n,1]:
Pulsante[n,2]:
azionabilità pulsante (0 → non azionabile),
stato pulsante (1 → premuto).
La matrice Stringhe
Si tratta di una matrice monodimensionale così definita:
Stringhe: ARRAY[1..32] OF BOOL
Essa è istanziata nel blocco dati DB20, il significato degli indici è il seguente:
•
Indice 1 [valore da 1 a 32]:
5A elettrotecnica e automazione
Codice stringa, attributo visibilità,
1
→ Testo "Fase 1...",
2
→ Testo "Fase 2...",
3
→ Testo "Riavvia sudoku...",
4
→ Testo "Led valori ok",
5
→ Testo "Led valori errati",
6
→ Testo "Easy",
7
→ Testo "Medium",
8
→ Testo "Hard",
10
→ Testo "Titolo_txt1",
11
→ Testo "Titolo_txt2".
Pag. 67/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
La matrice Led
Si tratta di una matrice bidimensionale così definita:
Led: ARRAY[1..32, 1..2] OF BOOL
Essa è istanziata nel blocco dati DB20, il significato degli indici è il seguente:
•
Indice 1 [valore da 1 a 32]:
Codice Led,
1
→ Led verde valori ok,
2
→ Led rosso valori errati.
•
Indice 2 [valore da 1 a 2]:
Led[n,1]:
Led[n,2]:
5A elettrotecnica e automazione
azionabilità Led (0 → non visibile),
stato Led (1 → acceso).
Pag. 68/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Il programma completo per PLC per l'applicazione SS2
Nelle pagine seguenti sono riportati tutti i moduli di programma sviluppati per l'applicazione SS2. Alcuni sono solo
descritti verbalmente (elenco dei parametri formali, funzionalità, ecc...) in quanto il codice sorgente completo è
presente in appendice; altri sono riportati come esempio e per intero all'interno della presente relazione.
Blocco OB1
Nei PLC Simens della classe 300/400 il blocco OB1 è quello che rappresenta "l'elaborazione ciclica". Il blocco OB1
viene richiamato dal firmware del sistema ogni tot millisecondi. Questo tempo rappresenta il tempo di ciclo del PLC
che, in una CPU della classe 300, è di circa 100[ms].
Come già specificato, l'applicazione SS2, è un'applicazione del tutto anomala nell'ambito di un normale programma
d'automazione industriale. Essa non ha bisogno del blocco ad elaborazione ciclica, in quanto, come un convenzionale
programma per personal computer, richiederà un avvio, realizzerà una elaborazione ed infine, presenterà i dati di
uscita. Si pensi ad esempio all'utilizzo di Word. Il blocco OB1 è, pertanto, vuoto.
Blocco OB100
Tutta l'applicazione SS2 è sviluppata in OB100. Come noto l'OB100 è il blocco di avvio del PLC, esso viene richiamato
dal firmware del sistema una ed una sola volta nel caso di "avvio a freddo" (la CPU da disalimentata passa allo stato
on con l'interruttore a chiave nella posizione RUN o RUNP) o nel caso di "avvio a caldo" (la CPU già alimentata passa
dallo stato di STOP allo stato di RUN).
La scelta del tutto anomala di utilizzare solo l'OB100 e non l'OB1 è anche dettata dal fatto che, mentre l'OB1 ha un
tempo di ciclo fisso (i 100[ms] come ordine di grandezza di cui abbiamo parlato prima), l'OB100 esegue il codice alla
massima velocità consentita dalla CPU del PLC. Avendo inserito la macchina stati all'interno di OB1, l'algoritmo SS2
avrebbe processato solo 10 valori ogni secondo, portando il tempo di risoluzione di un sudoku di media difficoltà (circa
qualche milione di cicli) a tempi di decine di ore.
Possiamo pensare al blocco OB100 come l'elemento che cicla le seguenti tre fasi:
• fase di inizializzazione delle variabili (funzioni:InizializzaMatS(), InizializzaVariabili()),
• fase di inserimento dei valori (funzione: InserisciValori()),
• fase di risoluzione dello schema (funzione: Risolvi()).
abbiamo utilizzato nelle righe precedenti il termine "cicla" in quanto, qualunque sia l'uscita dalla funzione Risolvi,
premendo il pulsante RIAVVIA, il programma viene rinizializzato dalla fase 1.
Per riassumere, l'OB100 è stato strutturato come un blocco ad elaborazione ciclica veloce.
Funzione InizializzaMatS (FC100)
La funzione, dal nome autoesplicativo, prepara la matrice S inizializzandola come segue:
• tutte le celle con indici: 1 ≤ r ≤ 9, 1 ≤ c ≤ 9, 1 ≤ z ≤ 9 vengono azzerate.
In questo modo, sia le celle frontali (quelle visualizzate dal pannello operatore) che le celle sviluppate lungo
l'asse z della matrice (profondità) contenenti i candidati vengono portate a zero.
• tutte le celle dello strato z=10 rappresentanti l'editabilità delle celle frontali (z=1) vengono impostate a 1.
Questo significa che, all'avvio, tutte le celle frontali sono modificabili.
• tutte le celle dello strato z=11 rappresentanti il colore delle celle frontali (z=1) vengono impostate a 0.
Questo significa che, all'avvio, tutte le celle frontali presentano un testo nero su fondo grigio chiaro.
La funzione IniziallizaMatS esce sempre con un Ret Code uguale a zero.
5A elettrotecnica e automazione
Pag. 69/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Funzione InizializzaVariabili (FC120)
La funzione InizializzaVariabili si occupa principalmente di preparare la pagina di start up del pannello operatore
all'avvio del sistema. In modo particolare vengono resi invisibili tutti i pulsanti, tutte le stringhe e tutti i Leds.
I blocchi di codice successivi si occuperanno di accendere e/o spegnere in modo selettivo la visualizzazione degli
oggetti precedentemente descritti.
Il blocco FC120 si occupa anche dell'azzeramento del contatore dei cicli globale.
La funzione IizializzaVariabili esce sempre con un Ret Code uguale a zero.
Funzione InserisciValori (FC110)
La funzione InserisciValori permette la compilazione dello schema sudoku. Le possibilità sono due:
• inserimento manuale dei valori:
i valori devono essere immessi dall'operatore,
• inserimento di uno schema precompilato: l'operatore sceglie uno dei nove schemi proposti.
Inizialmente l'FC110 pone a uno i flag di visibilità degli oggetti pulsanti, stringhe e Leds che devono essere visualizzati
durante la Fase 1.
Successivamente un ciclo WHILE−END_WHILE sospende l'elaborazione nell'attesa che venga premuto un pulsante. I
pulsanti abilitati in questa fase dell'elaborazione sono:
• i nove pulsanti per il richiamo rapido di uno schema sudoku precompilato,
• il pulsante AZZERA per mezzo del quale posso annullare la precedente fase di inserimento dei valori,
• il pulsante RISOLVI che avvia la soluzione del sudoku.
In uscita dal ciclo WHILE segue una fase di test IF−END_IF finalizzata alla determinazione del pulsante che è stato
premuto e alla eventuale successiva deviazione del flusso di programma GOTO.
Nel caso di pressione del pulsante AZZERA, il puntatore del programma viene riportato all'inizio della funzione
InserisciValori.
Se viene premuto il pulsante AVANTI il sistema esegue i seguenti test:
• viene controllato se i valori immessi sono compresi nel range[1..9],
• viene controllato se i valori immessi rispettano le regole del sudoku,
• viene controllato che il numero di valori immessi sia ≥ di 17.
Il controllo del flag ValOK provoca: o la ripetizione della fase di inserimento/modifica dei valori oppure porta alla fase
successiva di elaborazione dello schema inserito.
in ogni caso, prima dell'uscita dalla funzione, viene:
• impostato il colore viola per il testo dei valori inseriti,
• disabilitata l'editabilità delle 81 celle costituenti lo schema sudoku.
La funzione InserisciValori esce sempre con un Ret Code uguale a zero.
5A elettrotecnica e automazione
Pag. 70/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Funzione Risolvi (FC500)
Il cuore dell'algoritmo SS2 è scritto nella funzione Risolvi. In modo particolare, in essa, è stato tradotto il diagramma
di flusso relativo alla Fase 2 precedentemente descritto.
Si inizia abilitando la visualizzazione dei pulsanti e stringhe relative alla Fase 2.
Il puntatore P (puntatore linearizzato alla parte frontale della matrice S) viene inizializzato a zero (puntando, di fatto,
fuori dalla matrice S).
Vengono calcolati tutti i candidati delle celle aventi p > P (funzione CalcoloCandidati).
Viene ora stabilito se sussistono le condizioni per poter avanzare P. Viene cercata la prima cella, davanti a P (ordine
di lettura) che non contenga un valore (numero inserito in fase di input). Viene ovviamente controllato che P non esca
dalla matrice S (P ≤ 81). Nel caso sussistano le condizioni di avanzamento il puntatore p verrà assegnato alla nuova
posizione. Un caso particolare dell'avanzamento si verifica quando l'algoritmo di avanzamento raggiunge la fine della
matrice (P=82), in tal caso il sudoku è risolto.
Alla nuova posizione di P viene eletto il primo candidato (z=1) come candidato eletto. Essendo anche tale numero il
primo dei candidati, esso viene marcato sostituendolo, come valore, con il suo opposto.
Il contatore dei cicli viene incrementato di uno.
Vengono calcolati tutti i candidati delle celle aventi p > P (funzione CalcoloCandidati).
Il sistema controlla se la funzione CalcoloCandidati segnala o meno la presenza di celle senza candidati. Il flusso di
programma qui si dirama verso le seguenti destinazioni:
• se la funzione CalcoloCandidati non segnala errori si torna nella fase di programma che tenta di fare
avanzare P,
• se la funzione CalcoloCandidati segnala una cella priva di candidati il programma passa alla fase successiva
descritta di seguito.
Si arriva in questa fase quando la funzione CalcoloCandidati segnala una cella priva di candidati.
Viene eseguita la rotazione dei candidati (funzione RuotaCandidati) della cella puntata da P. In questo caso possono
verificarsi due situazioni:
• il nuovo candidato che affiora dopo la rotazione è positivo. Ciò significa che tale candidato non è ancora stato
testato, di conseguenza il programma torna al punto precedente nel quale vengono, di nuovo, calcolati i
candidati.
• il candidato che affiora dopo la rotazione è negativo. Ciò significa che tale candidato è già stato provato in
quanto esso era il primo candidato della lista. Non rimane che fare arretrare il puntatore P. Tale operazione
viene descritta di seguito.
La funzione di arretramento del puntatore P cerca una cella che abbia p < P, che sia, comunque, dentro la matrice
sudoku (p > 0) e che non contenga un valore inserito in fase di input. Si possono verificare due casi:
• esiste una posizione che consente l'arretramento di P, P verrà arretrato a tale posizione e si torna al punto del
programma che determina i nuovi candidati tramite l'apposita funzione,
• non esiste una posizione libera da vincoli, lo schema sudoku non ha soluzione.
La funzione Risolvi esce sempre con un:
• Ret Code uguale a 0
se è stata trovata una soluzione allo schema sudoku proposto,
• Ret Code uguale a −10 se lo schema sudoku risulta irrisolvibile.
5A elettrotecnica e automazione
Pag. 71/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Funzione CalcoloCandidati (FC170)
La funzione CalcoloCandidaiti prende come parametro d'ingresso il puntatore P linearizzato alla matrice S. Come già
accennato nella pagine precedente, lo scopo della funzione è di calcolare e di memorizzare nella matrice S tutti i
candidati di tutte le celle aventi p > P. Per fare questo viene instanziata ed assegnata la variabile t=P+1.
Tale variabile viene fatta avanzare fino al valore t=81 saltando le celle contenenti un valore inserito durante la fase di
input.
Per ogni cella trovata "libera" viene:
• scansionata la riga di appartenenza al fine di eliminare i candidati non accettabili secondo le note regole del
sudoku,
• scansionata la colonna di appartenenza al fine di eliminare i candidati non accettabili secondo le note regole
del sudoku,
• scansionato il quadrato (sotto matrice 3x3) di appartenenza al fine di eliminare i candidati non accettabili
secondo le note regole del sudoku.
La funzione CalcoloCandidati restituisce i seguenti codici:
• Ret Code uguale a 0
tutte le celle elaborate hanno almeno un candidato,
• Ret Code nell'intervallo [1..81]
la cella RetCode non ha candidati,
• Ret Code uguale a −123
il sudoku è terminato.
5A elettrotecnica e automazione
Pag. 72/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Procedures e Functions (primitive)
Quel che segue è un elenco di massima delle function e delle procedure necessarie all'implementazione dei due
algoritmi già presentati sottoforma di diagrammi di flusso. Sono da ritenersi delle "primitive" in quanto esse vengono a
trovarsi coinvolte nei livelli più profondi dell'annidamento delle funzioni.
Procedure: AzzeraS
Parametri formali di input:
Parametri formali di output:
nessuno.
nessuno.
La procedure azzera tutti gli elementi (9x9x11) della matrice S.
Procedure: BloccoValoriDiS
Parametri formali di input:
Parametri formali di output:
nessuno.
nessuno.
La procedure viene richiamata alla fine della fase di input. Essa analizza gli 81 elementi della matrice quadrata
"frontale" (quella visualizzata dal Pannello Operatore). La sua funzione può essere riassunta dalle seguenti righe di
codice:
for r:=1 to 9 do
begin
for c:=1 to 9 do
begin
if S[r,c,1]<>0 then S[r,c,2] := 100;
end;
end;
Function: rcToP
Parametri formali di input:
Parametri formali di output:
r,c : integer.
P : integer.
La funzione calcola P dati r e c:
P := 8*(r-1)+c;
Function: PTor
Parametri formali di input:
Parametri formali di output:
P : integer.
r : integer.
La funzione calcola r dato P:
r := ((P-1) div 9)+1;
5A elettrotecnica e automazione
Pag. 73/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Function: PToc
Parametri formali di input:
Parametri formali di output:
P : integer.
c : integer.
La funzione calcola c dato P:
c := ((P-1) mod 9)+1;
Function: Search0Candidate
Parametri formali di input:
Parametri formali di output:
nessuno.
Found0Candidate. (true, trovata almeno una cella con nessun candidato).
La funzione analizza gli 81 elementi della matrice quadrata "frontale" (quella visualizzata dal Pannello Operatore)
alla ricerca di una cella con nessun candidato.
Found0Candidate:=false
for r:=1 to 9 do
begin
for c:=1 to 9 do
begin
if S[r,c,1]=0 then Found0Candidate:=true;
end;
end;
5A elettrotecnica e automazione
Pag. 74/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
HMI, i pannelli operatori ed il loro utilizzo (un breve tutorial).
Introduzione
Per lavorare con i pannelli operatore Siemens (detti anche dispositivi HMI − Human Machine Interface) occorre
installare, oltre al software Step7, il programma WinCC. Esso si presenterà come un "plug−in" nel manager di Step7
integrandosi completamente con esso.
La configurazione hardware/software tramite la quale saranno condotte le esercitazioni a seguire è descritta nella
sottostante tabella:
Hardware
Software
Barra PLC Aldini−Valeriani aula 072.
Pannello operatore TP170B 6" monocromatico (touch screen) con aggiornamento firmware.
Workstation con processore di comunicazione CP5611 (interfaccia PCI / MPI).
Cavo MPI diretto e/o cavo MPI passante (per il collegamento contemporaneo di CPU e OpPan al
dispositivo di programmazione).
Step7 Ver.5.4 SP4 (completo di vari plug−in tra i quali PLCSim).
WinCC 2008 Flexible SP1 HF3 (richiede Win XP Pro o Vista business (almeno!!)).
Tabella 9 − Hardware Lab. 072 Aldini − Valeriani.
Filosofia progettuale dei pannelli operatore Siemens
Il pannello operatore Siemens è un dispositivo "intelligente" ovvero dotato di un proprio microprocessore con relativo
programma di gestione (firmware o Sistema Operativo nella letteratura Siemens). L'OpPan si "affaccia" sul bus MPI e
forma, con la CPU, una rete composta di due nodi: CPU (con indirizzo MPI solitamente uguale a 2), OpPan (con
indirizzo MPI solitamente uguale a 1). Come noto, se il dispositivo di programmazione fosse collegato al sistema (come
durante la fase di debug del programma di automazione), esso rappresenterà un terzo nodo di rete con indirizzo MPI
normalmente assegnato a 1. Riassumendo, la configurazione tipica della rete utilizzata durante il corso è:
Nodo rete MPI
0
1
2
Assegnato a:
Dispositivo di programmazione / debug (PG / PC).
Pannello operatore.
Prima (e normalmente unica) CPU del sistema.
Tabella 10 − Indirizzi MPI di default.
Il pannello operatore NON esegue in alcun modo il programma di automazione, esso è "confinato", per ragioni di
sicurezza e stabilità, sulla CPU del PLC. Il pannello operatore, relegato normalmente a supervisore di processo, può
però scambiare dati con la CPU del PLC influenzando (ovviamente) il ciclo di controllo del sistema.
In modo particolare l'OpPan condivide con la CPU delle aree di memoria (dati) nelle quali sono già state allocate
delle variabili (area merker ritentiva / non ritentiva; blocchi dati DB ritentivi / non ritentivi). Con tali aree di memoria
il pannello operatore scambia dati in entrambe le direzioni.
La variabile condivisa potrà essere definita in WinCC:
• di uscita, se desidero che venga esposta sul pannello operatore.
• di ingresso, se desidero poterla modificare dal pannello operatore.
• di ingresso / uscita, se desidero entrambi i tipi di accesso.
5A elettrotecnica e automazione
Pag. 75/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Aggiornamento del firmware del pannello operatore
A volte può succedere che il firmware con il quale è stato venduto il pannello operatore non sia più compatibile alle
nuove versioni del software di programmazione lato PC. Ad esempio, per i nostri TP170B, il firmware originale
(compatibile con il vecchio tool ProTool Pro RT) non è adeguato all'utilizzo dell'OpPan con WinCC 2008 Flexible.
L'aggiornamento del firmware avviene tramite il connettore RS−232 marcato IF 2 − Printer/Download. Occorre
collegare direttamente (tramite un cavo null modem (codice: 6ES7 901−1BF00−0XA0) in grado di trasportare anche
i segnali di handshake) il pannello operatore al PG/PC (porta seriale RS−232) come mostrato in figura.
Figura 47 − Aggiornamento del firmware del pannello operatore tramite RS−232.
Il trasferimento del firmware avviene utilizzando l'utility ProSave:
start → Tutti i programmi → SIMATIC → ProSave → ProSave
Esempio: nel caso in cui si desideri aggiornare il firmware di un pannello TP170B 6" mono, collegato al PC tramite la
porta seriale COM3 impostare la scheda "Generale" come in figura:
Figura 48 − ProSave, trasferitore firmware, selezione dell'interfaccia.
5A elettrotecnica e automazione
Pag. 76/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Avviare l'aggiornamento premendo il bottone Aggiornamento OS nella scheda "Aggiornamento OS". A questo punto
viene chiesto il boot del pannello operatore (spegnere il pannello, contare fino a 10, accendere il pannello operatore).
Se tutto ok, ProSave cancella la flash del pannello e trasferisce l'ultimo firmware disponibile che è stato memorizzato
su disco durante l'installazione di WinCC o l'aggiornamento di WinCC (installazione SP e/o HF).
Al termine del trasferimento si viene invitati a effettuare di nuovo il boot del pannello.
Figura 49 − ProSave, trasferitore firmware, selezione del file.
Al nuovo boot il pannello visualizza brevemente la versione del firmware installata.
Al momento della scrittura di questa dispensa, l'ultima versione di firmware disponibile per il pannello TP170B 6"
mono è la: 7.2.2.0 perfettamente compatibile a WinCC 2008 Flexible.
5A elettrotecnica e automazione
Pag. 77/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Configurazione sistema di trasferimento / cavi
Figura 50 − Rete MPI per lo sviluppo del sistema d'automazione.
Nella figura è illustrata la configurazione di debug durante la quale il progettista mette a punto il programma di
automazione e il programma di gestione del pannello operatore. In questa configurazione, tramite il cavo MPI
passante, sarà possibile tenere collegati contemporaneamente i tre nodi della nostra rete MPI di esempio.
Nel caso in cui sia terminata la fase di sviluppo, il PLC verrà consegnato collegato al pannello operatore tramite un
tradizionale cavo MPI diretto intestato con due DB9 Maschi.
L'inserimento del pannello operatore all'interno del nostro software di automazione avviene, come si poteva facilmente
intuire, tramite l'utilizzo del manager di Step7.
Nel diagramma ad albero si nota:
• Il livello più alto: la macchina da controllare (ES00).
• Il primo PLC (PLC_ES00).
• Il primo pannello operatore (HMI_ES00).
Nella vista di destra si nota come sia la rete MPI
(MPI_ES00) a collegare tutti i nodi di rete.
Figura 51 − Step 7, il manager.
5A elettrotecnica e automazione
Pag. 78/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Configurazione della rete MPI e test dei nodi raggiungibili
La rete MPI si configura in modo "abbastanza" automatico cercando, per quanto possibile, di evitare collisioni tra
nodi di rete ai quali è stato assegnato lo stesso indirizzo di rete. A volte si rende però necessaria la configurazione
manuale.
Imposizione dell'indirizzo MPI per il dispositivo di programmazione PG/PC:
Eseguire dal manager di Step7: Strumenti → Imposta interfaccia PG/PC..., appare la form:
Figura 52 − Step 7, impostazione dell'interfaccia MPI.
Nel caso illustrato si tratta della configurazione dell'adattatore PC Adapter (convertitore RS−232 → MPI optoisolato;
codice 6ES7 972−0CA22−0XA0).
Tramite il bottone Proprietà... verificare che l'indirizzo del dispositivo di programmazione sia 0.
5A elettrotecnica e automazione
Pag. 79/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Imposizione dell'indirizzo MPI della CPU:
Eseguire il tool "Configurazione HW", eseguire un doppio click sulla CPU per avviare la finestra proprietà della CPU.
Nella scheda "Generale", premere il pulsante Proprietà... e selezionare l'indirizzo MPI 2 come illustrato in figura.
Figura 53 − Modifica dell'indirizzo dell'MPI della CPU.
5A elettrotecnica e automazione
Pag. 80/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Imposizione dell'indirizzo MPI del pannello operatore:
Dal manager di Step7, individuare la voce "Collegamenti" all'interno del pannello operatore HMI_ES00. Eseguire un
doppio click sul collegamento di default (finestra di dx).
Figura 54 − Modifica dell'indirizzo dell'MPI del pannello operatore.
si avvia WinCC che visualizzerà la finestra relativa:
Figura 55 − WinCC, verifica del collegamento CPU ↔ pannello operatore.
Nella zona "Pannello operatore" selezionare l'indirizzo MPI 1.
L'integrità del filo nero che collega il "Pannello operatore" al "Controllore" ci segnala che la rete MPI è logicamente
integra e correttamente parametrizzata. Attenzione: l'integrità dello stesso filo NON segnala che la rete MPI è
fisicamente disponibile, i test fisici della rete vanno condotti con un altro strumento (Step7 − NetPro).
5A elettrotecnica e automazione
Pag. 81/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Step7 − NetPro
Lo strumento offerto di serie con il manager Step7 per la configurazione e diagnostica di rete (MPI, Profibus DP,
Ethernet) è "NetPro". Per avviarlo: Strumenti → Configura rete..., appare NetPro:
Nella quale sono visibili i nodi di rete già citati.
Figura 56 − NetPro 1.
Occorre ora collegare i due nodi (1 e 2) alla rete MPI simboleggiata dal montante orizzontale rosso subito sotto la
scritta MPI_ES00. Per fare ciò occorre trascinare il quadratino rosso di ciascuna unità verso il suddetto bus.
I nodi di rete sono ora collegati.
Figura 57 − NetPro 2.
La verifica finale della coerenza della rete la si esegue con Rete → Salva e compila....
5A elettrotecnica e automazione
Pag. 82/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Step7 − Nodi accessibili
Un altro strumento per verificare i nodi fisicamente raggiungibili sul bus MPI è l'utility "Nodi accessibili" attivabile dal
manager di Step7 tramite:
Sistema di destinazione → Visualizza nodi accessibili, viene viasualizzata la relativa form che mostra, Online, lo stato
del bus.
Figura 58 − NetPro 3.
La differenza tra nodo diretto e nodo passivo è la seguente:
• nodo diretto. Si affaccia fisicamente sul bus MPI (es.: pannello operatore e CPU),
• nodo passivo. Si affaccia logicamente sul bus tramite un nodo diretto. E' il caso delle unità funzionali "FM353
Stepper" ed "FM354 Servo" che non sono fisicamente collegate al bus MPI ma accedono ad esso tramite la
CPU314 (nodo diretto 2).
5A elettrotecnica e automazione
Pag. 83/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Predisposizione del pannello operatore alla comunicazione su bus MPI
Prima di procedere al trasferimento del programma e/o all'aggiornamento delle DLL di sistema (questa ultima
eventualità si presente raramente a fronte di un aggiornamento del firmware del pannello e/o un aggiornamento di
WinCC) occorre configurare l'OpPan. Per fare ciò:
• Avviare il pannello e premere Control Panel, appare una form in stile Windows (in realtà si tratta proprio di
Windows CE).
Figura 59 − Pannello di controllo del pannello operatore.
•
Eseguire un doppio click sull'icona Transfer, settare come in figura.
Figura 60 − Configurazione dell'interfaccia sul pannello operatore 1.
5A elettrotecnica e automazione
Pag. 84/109
I.T.I. Aldini − Valeriani (Bologna)
•
Sudoku Solver
Premere il bottone Advanced, poi il bottone , Properties..., settare come in figura.
Figura 61 − Configurazione dell'interfaccia sul pannello operatore 2.
5A elettrotecnica e automazione
Pag. 85/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Impostazione / verifica del collegamento tra WinCC e il pannello operatore da WinCC
Dopo avere avviato WinCC selezionare, nella vista ad albero di sx la scheda collegamenti (doppio click), verrà
visualizzata la relativa finestra.
In questa rappresentazione iconografica viene mostrato il collegamento tra il "Pannello operatore" (a sx) con il
"Controllore" (a dx) tramite la "Rete" (in centro).
Se tutto ok, il filo nero di collegamento non deve essere interrotto.
I dati visualizzati sono quelli impostati in precedenza.
Figura 62 − WinCC, verifica del collegamento MPI.
5A elettrotecnica e automazione
Pag. 86/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Accesso in lettura (OpPan legge dalla CPU)
Supponiamo che sul PLC sia stata allocata la variabile VarWORD di tipo word (16 bit senza segno) nella quale viene
memorizzata (tramite il programma scritto sul PLC) la word EW 0.
La programmazione del pannello consisterà nel:
• Preparare (dal punto di vista grafico) una pagina (che sarà anche la Home Page, ovvero la prima pagina
presentata dal pannello allo start up) nella quale si presenterà il valore di VarWORD. Utilizzre la "Finestra
degli strumenti".
OGGETTO: Casella di testo
OGGETTO: Linea
OGGETTO: Campo I/O
OGGETTO: Casella di testo
Figura 63 − OpPan, lettura di una variabile 1.
5A elettrotecnica e automazione
Pag. 87/109
I.T.I. Aldini − Valeriani (Bologna)
•
Sudoku Solver
Collegare (come uscita) il campo del pannello operatore alla variabile VarWORD.
doppio click sull'oggetto, si
apre la finestra proprietà (vedi
sotto).
Nome dell'oggetto.
Campo in uscita.
Variabile del PLC.
Estensione del campo.
Formato di visualizzazione.
Figura 64 − OpPan, lettura di una variabile 2.
La selezione della Variabile di processo avviene tramite l'utilizzo di un menù a discesa tramite il quale ci si collega al
file dei simboli della CPU per selezionare la variabile da collegare desiderata.
Attivare menù a discesa.
Collegarsi ai simboli della
CPU314.
Scegliere, dalla lista,
variabile desiderata.
la
Figura 65 − WinCC, collegamento di una variabile per la lettura.
5A elettrotecnica e automazione
Pag. 88/109
I.T.I. Aldini − Valeriani (Bologna)
•
Sudoku Solver
Trasferire (via MPI) il programma al pannello operatore.
Per trasferire la programmazione al pannello operatore eseguire da WinCC:
Progetto → Trasferisci → Trasferisci...
si presenta la form "Seleziona pannello operatore per il trasferimento", impostare come rappresentato in
figura e premere il bottone Trasferisci.
Figura 66 − WinCC, trasferimento della programma nel pannello operatore.
Rispondere Sì alla conferma di sovrascrittura dei dati.
Al termine del trasferimento il pannello operatore si riavvia automaticamente, carica la HomePage ed inizia a
rinfrescare il campo di I/O.
Non occorre fare altro. Il firmware del pannello operatore interrogherà ciclicamente l'area di memoria condivisa
(variabile VarWORD), trasformerà questa informazione binaria in una opportuna successione di caratteri ASCII (es.:
12FE) e la inserirà nel campo di output precedentemente definito. Vedi esercitazione ES00.
5A elettrotecnica e automazione
Pag. 89/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Accesso in scrittura (OpPan scrive nella CPU)
Supponiamo che sia stata allocata la variabile DI di tipo booleano che permetterà (o meno) l'avvio di un certo ciclo di
controllo quando essa vale "1". Vediamo ora i singoli passi per poter modificare il contenuto di tale variabile dal
pannello operatore.
La programmazione del pannello consisterà nel:
• Preparare (dal punto di vista grafico) una pagina (che sarà anche la Home Page, ovvero la prima pagina
presentata dal pannello allo start up) nella quale si presenterà il valore di default di DI. Utilizzre la "Finestra
degli strumenti".
OGGETTO: Casella di testo
OGGETTO: Linea
OGGETTO: Interruttore
Consente il rapido pilotaggio
di una variabile di tipo
booleano.
Figura 67 − OpPan, scrittura di una variabile 1.
5A elettrotecnica e automazione
Pag. 90/109
I.T.I. Aldini − Valeriani (Bologna)
•
Sudoku Solver
parametrizzare l'oggetto Interruttore come da figura sottostante.
doppio click sull'oggetto, si
apre la finestra proprietà (vedi
sotto).
Nome dell'oggetto.
Variabile del PLC.
Figura 68 − OpPan, scrittura di una variabile 2.
La selezione della Variabile di processo avviene tramite l'utilizzo di un menù a discesa tramite il quale ci si
collega al file dei simboli della CPU per selezionare la variabile da collegare desiderata.
Attivare menù a discesa.
Collegarsi ai simboli della
CPU314.
Scegliere, dalla lista,
variabile desiderata.
la
Figura 69 − WinCC, collegamento di una variabile per la scrittura.
•
Trasferire (via MPI) il programma al pannello operatore (vedi esercizio precedente).
NON occorre fare altro. Il firmware del pannello operatore gestirà questo campo in modo totalmente automatico.
Quando l'operatore modificherà il valore di questo bit il pannello operatore provvederà a trasferirne il valore nell'area
di memoria condivisa (variabile DI). Vedi esercitazione ES01.
5A elettrotecnica e automazione
Pag. 91/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Parametrizzazione del pannello operatore per l'applicazione SS2
Il pannello operatore utilizzato mostra un'unica pagina chiamata Home_1. In essa si sviluppa tutta l'applicazione SS2.
Come già detto, tale applicazione, per sua natura, non necessita degli I/O verso il campo pertanto tutto l'I/O da e verso
la CPU del PLC proviene dal pannello operatore.
In esso sono stati utilizzati gli oggetti:
Oggetto
Casella di testo
Cerchio
Linea
Pulsante
Campo I/O
Funzionalità assegnata
• Presenta stringhe costanti (es. titolo della pagina),
• Presenta stringhe costanti nelle quali l'attributo Visibilità può essere impostato dal
PLC tramite l'utilizzo di una variabile binaria di uscita (Es. stringa "Fase 1...").
• Viene utilizzato per simulare la presenza di un Led che si accende e si spegne. Per
esso può essere impostato dal PLC (tramite l'emissione di un bit) sia l'attributo
Visibilità che l'attributo Conformazione (colori di primo piano e di sfondo). Es. Led
Valori ERRATI.
• Viene utilizzata come elemento di separazione di diverse zone costituenti Home_1.
• Utilizzato per fornire un bit al PLC.
• Utilizzato (come sola emissione) per visualizzare i tentativi effettuati dall'algoritmo
nella ricerca della soluzione.
• Utilizzato per costruire le 81 celle dello schema sudoku. In questo caso è possibile
cambiare dal PLC (tramite una variabile booleana emessa dal PLC stesso) il colore
del testo rappresentato. Inoltre è possibile cambiarne lo stato di Attivabilità. Infatti,
durante la "Fase 1" le 81 celle risultano modificabili, durante la "Fase 2" le celle
vengono "bloccate" e non sono più editabili.
Tabella 11 − Lista degli oggetti utilizzati per comporre la pagina Home_1.
Cerchio
Campo di I/O
***************************
collegato a:
Campo di I/O
VG.S[r, c, 1]
per l'emissione del numero.
Pulsante
VG.S[r, c, 10]
per l'attributo Attivabilità
VG.S[r, c, 11]
per l'attributo Colore del testo
Figura 70 − Didascalia figura.
5A elettrotecnica e automazione
Pag. 92/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Preparazione del simulatore PLCSIM
L'avvio dell'applicazione SS2 e del simulatore S7−PLCSIM è illustrata dal primo video tutorial disponibile nel DVD
allegato all'elaborato. Vediamo alcune caratteristiche di S7−PLCSIM tratte dal relativo manuale di servizio Siemens.
PLCSIM −generalità
Il software S7−PLCSIM consente di eseguire e testare i programmi utente in un controllore programmabile (PLC)
simulato nel proprio PC o PG. Poiché la simulazione viene effettuata interamente al livello del software STEP 7, non è
necessario essere collegati ad alcun componente hardware S7 (CPU o unità I/O).
Utilizzando il PLC S7 simulato, l'utente può controllare e testare i programmi per le CPU S7−300 e S7−400 e per
WinLC. Nonostante S7−PLCSIM non supporti la configurazione hardware per i controllori WinAC 4.x, è possibile
testare la logica di un programma di controllo WinAC 4.x modificando la propria configurazione hardware in modo
che utilizzi le CPU S7−300, S7−400 o WinAC 3.x.
Funzioni di S7−PLCSIM
S7−PLCSIM mette a disposizione un'interfaccia molto semplice in cui controllare e modificare vari parametri del
programma (ad esempio attivare e disattivare gli ingressi). Inoltre consente di utilizzare le diverse applicazioni di
STEP 7 mentre si esegue il programma utente nel PLC simulato. Si potranno quindi utilizzare tool quali la tabella delle
variabili (VAT) per controllare e modificare le variabili.
S7−PLCSIM presenta inoltre le seguenti caratteristiche:
La simulazione viene attivata e disattivata da un pulsante collocato sulla barra degli strumenti del SIMATIC Manager.
Attivando il pulsante di simulazione si avvia il software S7−PLCSIM con la CPU simulata.
Se viene eseguito S7−PLCSIM tutta la comunicazione passa automaticamente da STEP 7 alla CPU simulata.
Il PLC simulato esegue i programmi per la CPU S7−300 o S7−400 compresa la CPU 317−T. Si possono creare
sottofinestre che permettono di accedere alle aree di memoria di ingressi e uscite, agli accumulatori e ai registri del
PLC simulato. Si può accedere alla memoria anche mediante indirizzamento simbolico.
Si può decidere che i temporizzatori vengano eseguiti automaticamente oppure li si può impostare e resettare
manualmente. Si possono inoltre resettare i temporizzatori individualmente o globalmente.
Come per le CPU reali, il modo di funzionamento CPU (RUN, RUN−P, STOP) può essere commutato. Inoltre,
S7−PLCSIM prevede il modo Interrompi che permette di arrestare temporaneamente la CPU senza modificare lo stato
del programma.
Si possono utilizzare OB di allarme nel PLC simulato per verificare le reazioni del programma.
È possibile registrare una serie di eventi (manipolare le aree di memoria degli ingressi e delle uscite, merker,
temporizzatori e contatori) e riprodurre la registrazione effettuata per automatizzare i test di programma.
S7−PLCSIM consente di utilizzare tutte le applicazioni di STEP 7 per controllare e modificare le attività del PLC
simulato e per testare il programma. Nonostante il PLC simulato sia costituito unicamente da un software (e non
richieda alcun hardware speciale), STEP 7 funziona come se il PLC simulato fosse un vero componente hardware, fatta
eccezione per poche differenze.
5A elettrotecnica e automazione
Pag. 93/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Simulazione complessiva (PLCSIM + WinCC Flexible RT)
L'avvio dell'applicazione SS2, simulatore S7−PLCSIM e della parte Run Time di WinCC Flexible 2008 è illustrata dal
secondo video tutorial disponibile nel DVD allegato all'elaborato.
Anche la parte Run Time di WinCC non si accorge della presenza di S7−PLCSIM ma "pensa" di essere collegata ad un
PLC reale (tranne poche eccezioni) ed inizia, con esso, a scambiare dati.
Come noto, il programma (sarebbe meglio definirlo: la parametrizzazione) del pannello operatore è tale per cui,
essendo esso solitamente il master della comunicazione, lo rende in grado di leggere e scrivere le variabili (statiche
ritentive e non ritentive) allocate nella memoria del PLC.
Quella che segue è una immagine complessiva del sistema simulato su PC.
Figura 71 − Vista complessiva dell'applicazione SS2 simulata su PC.
La permanenza del Led SF rosso acceso non indica un errore del programma ma, semplicemente, che il PLC si sta
avviando (esecuzione di OB100).
Come già detto, essendo il nostro programma confinato in OB100, tale Led resterà sempre acceso finché la CPU resta
in RUN o RUN−P.
5A elettrotecnica e automazione
Pag. 94/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Screenshots
StartUp
Inizializzazione
Sistema
Inserimento
Valori
IA
VV
RIA
PR
EP
SC AR
HE AZ
M IO N
A
E
Algoritmo Sudoku Solver 2. Flusso generale del programma.
Presentazione
soluzione
Verifica
compatibilità
regole
Risolvi
RISOLVI
Screen Shot SS2
Cosa fa...
Allo Start Up viene presentata la Fase 1 per l'inserimento dei valori. I valori possono essere inseriti
manualmente o, in alternativa, sono stati memorizzati 9 schemi sudoku a "richiamo rapido". Vengono
proposti tre schemi "Easy", tre schemi "Medium" e tre schemi "Hard".
In ogni momento è possibile azzerare la matrice ed inserire nuovi valori.
Alla pressione del pulsante RISOLVI il sistema controlla l'integrità dei valori immessi. Nel caso in cui non
siano rispettate le regole per l'inserimento dei valori si rimane in "Fase 1".
Nel caso in cui i valori immessi siano validi si passa alla Fase 2 di risoluzione dello schema.
Appare il pulsante di STOP ed un campo che mostra il numero di cicli eseguiti dal programma.
Il programma termina l'elaborazione in due modi:
1) Risolvendo il Sudoku. In questo caso vengono mostrati (in colore verde) i numeri che soddisfano lo
schema proposto,
2) Il Sudoku risulta privo di soluzione. In questo caso vengono mostrati (in colore rosso) gli ultimi numeri
testati dall'algoritmo SS2.
Premedo RIAVVIA si torna alla Fase 1 di inserimento dei valori.
Figura 72 − ScreenShot.
5A elettrotecnica e automazione
Pag. 95/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Filmati
Sono stati preparati tre filmati (video tutorial) che spiegano come utilizzare il programma S03 su PLC (2 filmati) e un
filmato che spiega come utilizzare il programma per PC SudokuSolver2.exe.
Video tutorial − 01_PLC_Avvio di SS2.avi
Attraverso questo video vediamo come avviare e simulare l'applicazione Sudoku Solver 2 tramite PLCSIM e WinCC
Flexible 2008 Run Time.
Avviamo SIMATIC manager e carichiamo l'applicazione Sudoku Solver 2 (versione S03).
Il progetto caricato si compone sia dalla parte PLC che dalla parte pannello operatore.
Una volta avviato il simulatore PLCSIM, trasferiamo il livello più alto del nostro progetto d'automazione e avviamo la
CPU virtuale ponendo l'apposito Check Box su Run o RunP.
Quando il programma è avviato su PLCSIM, avviamo WinCC Flexible 2008 e avviamo la simulazione del pannello
tramite il sistema Run Time.
A questo punto, la fase che si presenta sul pannello operatore è la "Fase 1", quella di inserimento dei valori. Dopo di
che, si passa alla fase di risoluzione dello schema. Questa fase è descritta nel prossimo video tutorial.
Video tutorial − 02_PLC_Test_Medium_1.avi
Attraverso questo video vediamo come utilizzare l'applicazione Sudoku Solver 2.
Nella prima fase, si è invitati a inserire i valori: tali valori possono essere inseriti manualmente, oppure attraverso
schemi già fatti.
Nel programma sono stati inseriti tre schemi facili, tre schemi medi e tre schemi complessi; ciascuna categoria ha
tempi di risoluzione diversi.
Selezionando uno schema a piacere, ad esempio uno schema di tipo medio, viene caricato sulla tabella, mostrando un
determinato numero di valori fissi.
In questa fase, mi sono concesse due opzioni: "Azzera" e "RISOLVI". Scegliendo "Azzera", lo schema viene ripulito,
portando la matrice a zero. Scegliendo "RISOLVI", il programma procederà con la risoluzione automatica del Sudoku.
Posso anche scegliere di non utilizzare nessuna delle due funzioni e decidere di caricare un altro schema.
Possiamo anche decidere di non selezionare uno schema precaricato ma di inserire i valori manualmente.
I valori inseriti, devono sempre essere minimo 17. Se i valori sono inferiori a 17, una volta avviata la risoluzione
(cliccando su "RISOLVI"), il sistema genera un segnale di errore (visibile sullo schermo attraverso una Led rosso) che
segnala la presenza di valori errati.
Se i valori inseriti sono corretti e si procede con la risoluzione, il Sudoku Solver 2 riuscirà a completare il Sudoku in un
determinato tempo (a seconda del tipo di difficoltà dello schema).
Video tutorial − PC_SS2_Ver.1_RUN.avi
In questo video possiamo vedere il programma sviluppato per il PC tramite il compilatore Delphi.
Carichiamo il sudoku selezionando uno schema precaricato (per mezzo dell'apposito file di testo) e avviamo la
risoluzione.
Una volta risolto il sudoku, il sistema presenta una finestra informativa. Sullo schermo appaiono il numero di tentativi
svolti dal sistema per arrivare alla risoluzione completa.
Nel caso la difficoltà dello schema sia elevata, si può vedere come l'algoritmo testi i numeri e corregga gli errori.
Sullo schermo appaiono i test delle indicazioni delle funzioni elaborate man mano dal sistema.
Sulla matrice, inoltre, possiamo vedere le informazioni sul ricalcolo dei candidati.
Una volta completata la risoluzione, il sistema segnala che ha finito e si possono verificare il numero di passaggi
complessivamente effettuati.
5A elettrotecnica e automazione
Pag. 96/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Il nostro Istituto
L'Istituto Tecnico Industriale Aldini Valeriani è attualmente ubicato in Bologna in Via Bassanelli 9/11. E' una struttura
"poderosa" edificata nei primi anni sessanta sotto la spinta del "boom economico" e di un numero di iscritti, allora, in
grande crescita.
Nell'epoca dell'oro per la Cultura Tecnica (anni settanta) l'Istituto raggiunse i 3500 studenti (attualmente ne annovera
1500). Per l'iscrizione era necessario passare 24 ore in fila fuori dalla struttura e all'addiaccio (il periodo di iscrizione
era, ed è tuttora, febbraio) per potere accedere a uno dei moduli di iscrizione disponibili...per questo l'Istituto era
scherzosamente chiamato "la scuola dei nonni" in quanto era assolutamente necessario un parente in pensione (e in
buona salute!!) per affrontare, a turni, la sfiancante fila di cui sopra.
Laboratori di Elettronica e Telecomunicazioni
Laboratori di elettrotecnica e automazione
Figura 73 − L'Istituto Tecnico Industriale Aldini − Valeriani (foto da satellite − Google Maps).
Purtroppo viviamo un periodo difficile, nel quale l'istruzione tecnica è poco gradita a studenti e genitori e, soprattutto,
non viene incentivata dallo Stato (qualunque sia il colore del Governo). La motivazione è semplice...un corso liceale
costa poco allo Stato (qualche laboratorio di informatica e qualche laboratorio di lingue sono più che sufficienti per
questo tipo di corso), al contrario, i laboratori necessari al buon funzionamento di un Istituto Tecnico sono vari e
costosissimi (sia come impianto che come gestione / manutenzione). Per inciso, il nostro principale laboratorio di
automazione industriale (Lab. 072) è costato, nell'ultimo aggiornamento, circa 250.000 €.
Abbiamo visto tutti cosa accade alle "economie virtuali" formate prevalentemente da imprese che propongono solo
servizi (magari di tipo speculativo...), si dovrebbe tornare (e si tornerà senz'altro) ad un giusto equilibrio tra imprese di
servizi ed imprese manifatturiere.
Noi vogliamo rappresentare la "Cultura del Saper Fare" indispensabile al Mondo intero per uscire dalla recente crisi
economica.
Sono certo che gli Istituti Tecnici torneranno "di moda" contribuendo, come avvenne, per Bologna, a metà
dell'ottocento e nell'immediato dopoguerra, ad un nuovo boom economico.
Alberto BENDA
5A elettrotecnica e automazione
Pag. 97/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Storia "Per sapere chi siamo dobbiamo conoscere la nostra storia..."
L'attuale Istituto "Aldini−Valeriani" deriva, attraverso modificazioni successive, dalle Scuole Tecniche Bolognesi,
istituite nel 1844 dal Comune di Bologna a seguito dei lasciti testamentari di Giovanni Aldini e di Luigi Valeriani.
Nella prima metà dell’ottocento, mentre in Europa si stava consolidando la Rivoluzione Industriale, Bologna stava
attraversando una grave crisi e registrava un progressivo impoverimento della popolazione per il crollo della
tradizionale economia legata alla produzione e alla lavorazione della seta.
Si rendeva quindi necessario rilanciare, su nuove basi, lo sviluppo produttivo della città.
La ricerca di adeguati modelli didattici di istruzione tecnica parve ad alcuni spiriti illuminati la migliore strategia per
perseguire questo obiettivo.
Giovanni Aldini era un valente fisico sperimentale,
nipote di Luigi Galvani di cui continuò gli studi, collegato
agli ambienti accademici di Bologna e di Milano.
Morì nel 1834 lasciando al Comune di Bologna parte del
suo cospicuo patrimonio e tutto il suo gabinetto
scientifico. In cambio il Comune si sarebbe impegnato a
fondare una scuola per l'insegnamento delle scienze e
delle tecniche.
Figura 74 − Giovanni Aldini (1762 − 1834).
Luigi Valeriani, professore di Economia all'Università di
Bologna, morì nel 1828 lasciando al Comune di Bologna
una parte del suo patrimonio per la fondazione di una
scuola per l'insegnamento del disegno.
Figura 75 − Luigi Valeriani (1758 − 1828).
Le scuole istituite nel 1844, prevalentemente rivolte agli artigiani, sopravvissero fino al 1869. Alla loro chiusura il
notevole patrimonio di attrezzature andò a costituire un museo che funzionò anche come centro di consulenza tecnica
per l'economia del territorio.
Nel 1878 fu istituito l'“Istituto Aldini−Valeriani per Arti e Mestieri”.
5A elettrotecnica e automazione
Pag. 98/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
La buona preparazione tecnica era favorita dalle
caratteristiche stesse della scuola in grado di associare
alle lezioni teoriche le lezioni pratiche nell’annessa
“scuola−officina”.
A partire da questo periodo ebbe inizio la forte
intersezione fra le Scuole e il tessuto economico
bolognese.
Figura 76 − Reparto tornitori (1881).
L’Istituto era collocato nei locali dell’ex Convento di S.
Lucia in Via Castiglione (attuale sede dell’Aula Magna
dell’Università di Bologna) e lì rimase fino al
trasferimento, nel 1971, nell’attuale sede di via
Bassanelli.
Figura 77 − Convento di S. Lucia.
5A elettrotecnica e automazione
Pag. 99/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
I tecnici formati dall'Istituto supportarono lo sviluppo
della città e andarono a costituire, almeno in parte, la
componente imprenditoriale di una industria, centrata
sulla piccola e media impresa, che registrò, a partire
dalla fine dell’ottocento, una continua crescita.
Particolare rilevanza assunse fin da allora il settore
meccanico (ancora oggi l'industria bolognese è leader
mondiale nel settore delle macchine automatiche).
Figura 78 − Reparto Meccanica (1898).
Nel 1912 la vecchia Scuola per Arti e Mestieri si incanalò nelle forme nazionali della formazione tecnica nel settore
industriale. La riorganizzazione del 1936 (Avviamento, Istituto Industriale, Scuola Tecnica) portò al riconoscimento
legale, da parte dello Stato, nel 1939. Nel 1959 è istituito l'Istituto Tecnico Industriale Serale. Dal 1962 l'Istituto
Professionale sostituisce la Scuola Tecnica. Seguono alcune immagini risalenti al decennio 1950−1960.
Figura 79 − Navata sx (1950 − chiesa di S. Lucia).
Figura 80 − Freseria (1950 − chiesa di S. Lucia).
Figura 81 − Reparto aggiustaggio (1950 − chiesa di S.
Lucia).
Figura 82 − Lab. chimica (1950 − convento di S. Lucia).
5A elettrotecnica e automazione
Pag. 100/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Lab. 072 − Laboratorio di automazione industriale
Il laboratorio 072 è attrezzato per effettuare esercitazioni didattiche relative all’automazione industriale. In un locale
di 150[m2] sono presenti diverse apparecchiature in parte acquistate, in parte progettate e costruite dai nostri
insegnanti.
Il laboratorio viene utilizzato per i corsi diurni di elettrotecnica ed automazione e nei corsi della Fondazione Aldini
Valeriani rivolti, in fascia diurna e preserale, ad aziende e a professionisti dell'automazione.
Figura 18 − Laboratorio di automazione 072.
Figura 18 − Barra PLC Siemens Serie 300.
Figura 18 − Garage automatico.
Figura 18 − PLC garage automatico.
Il laboratorio è dotato di:
•
15 postazioni di lavoro costituite da PC HP su cui sono installati i SW che permettono agli allievi di operare,
per esercitazioni di automazione vengono utilizzati ETS2 e Step7.
•
15 barre PLC S7−300, realizzate con CPU 314 e vari moduli di interfaccia tra i quali: I/O digitali e analogici,
controllo assi, ingressi veloci, ecc….
I PLC sono inoltre dotati di una board realizzata all’interno dell’Istituto che permette la simulazione degli
ingressi digitali e analogici e la lettura delle uscite digitali e analogiche del sistema da controllare.
5A elettrotecnica e automazione
Pag. 101/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
•
Numerosi pannelli sperimentali interfacciabili con i PLC che permettono di eseguire il controllo di sistemi
pneumatici, controllo assi con motori in cc e motori passo−passo.
•
Sono inoltre presenti pannelli domotici Konnex realizzati con moduli Siemens con cui è possibile controllare
vari dispositivi (automazione tapparelle, plafoniere con EVG Dynamic, ecc…).
Il laboratorio, inizialmente specializzato nelle esercitazioni di automazione di cicli puramente pneumatici, si è
recentemente dotato di pannelli (realizzati sempre all’interno dell’Istituto) che utilizzano PLC S7−300 con CPU−312
che permettono la gestione dei cicli pneumatici in logica programmabile.
Figura 18 − Pannello pneumatica.
Figura 18 − PLC pannello pneumatica.
Marco FANFONI
5A elettrotecnica e automazione
Pag. 102/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Ringraziamenti
5A elettrotecnica e automazione. (in ordine alfabetico).
Mirko Bondi,
Manuel Candini,
Gabriele De Pandis,
Yassir El Hirich,
Gabriele Lucchiari,
Federico Pagano,
Elisa Romagnoli,
Antonio Urso.
Sviluppo della documentazione.
Progetto e sviluppo software PLC e pannello HMI.
Produzione materiale fotografico e audio / video.
Gli studenti elencati sono i referenti del progetto
all'interno della propria classe. In realtà tutta la classe a
fattivamente contribuito allo sviluppo del progetto stesso.
Figura 83 − 5A elettrotecnica e automazione.
(in piedi, da sx a dx: El Hirich, Bondi, Pagano, Candini e
Romagnoli.
in basso, da sx a dx: Urso e Lucchiari)
I Professori. (in ordine alfabetico).
Hanno coordinato il gruppo di studenti nelle attività
elencate.
Alberto Benda (elettronica e telecomunicazioni).
Coordinazione del gruppo.
Sviluppo della documentazione.
Progetto e sviluppo software PLC e pannello HMI.
Fabio Pedretti (elettronica e telecomunicazioni).
Sviluppo della documentazione.
Simulazione dell'algoritmo tramite il compilatore Pascal
Delphi (embarcadero).
Produzione materiale fotografico e audio / video.
Palmiro Pedrini (tipografia).
Creazione dei poster pubblicitari per la campagna
marketing mix.
Figura 84 − Professori.
(nell'ordine di lettura dell'elenco, in foto da sx a dx.)
Maddalena Petroni (diritto ed economia).
Sviluppo del capitolo relativo al marketing mix.
5A elettrotecnica e automazione
Pag. 103/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
La Dirigenza. (in ordine alfabetico).
Si ringrazia tutta la presidenza che ha consentito e
promosso con entusiasmo la realizzazione del progetto
"Sudoku Solver 2" sostenendo, anche economicamente, i
costi di realizzazione.
Salvatore Grillo (Preside).
Carlo Dall'Omo (ex vice−Preside).
Licia Marcheselli (vice−Preside).
DA FARE...
AGGIORNARE FOTO
Figura 85 − Dirigenza.
(nell'ordine di lettura dell'elenco, in foto da sx a dx.)
Donatella Molinari (vice−Preside).
Michele Monti (vice−Preside).
Un particolare ringraziamento lo rivolgiamo al Dott. Roberto Guidi responsabile
della divisione P.M. SIMATIC Didactic Industry Sector IA AS della Siemens /
Simatic automazione di Milano.
Alberto BENDA
5A elettrotecnica e automazione
Pag. 104/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Sommari
Sommario
Presentazione progetto "Sudoku Solver" .............................................................................................2
Struttura della relazione ...................................................................................................................3
Contenuto del DVD−ROM ..............................................................................................................4
La campagna pubblicitaria..................................................................................................................5
Marketing mix (a cura della Prof.ssa Maddalena Petroni)...............................................................6
Prefazione.....................................................................................................................................6
Strategie di marketing ..................................................................................................................7
Elaborati per la "Promotion" (a cura del Prof. Palmiro Pedrini) ...................................................16
Premessa.....................................................................................................................................16
Stampati .....................................................................................................................................17
Quadrati: Latini, Magici, ecc... .........................................................................................................18
Premessa.........................................................................................................................................19
Quadrato magico (perfetto o normale)...........................................................................................21
Definizione.................................................................................................................................21
Caratteristiche dei Quadrati magici perfetti ...............................................................................22
Storia ..........................................................................................................................................23
Esempi........................................................................................................................................24
Quadrato latino...............................................................................................................................25
Definizione.................................................................................................................................25
Caratteristiche dei Quadrati latini ..............................................................................................26
Storia ..........................................................................................................................................27
Applicazioni dei quadrati greco − latini.....................................................................................28
Il Latercolo pompeiano ..................................................................................................................29
Il Sudoku ............................................................................................................................................30
Generalità .......................................................................................................................................30
Un esempio ................................................................................................................................31
I gemelli .....................................................................................................................................32
Triplette......................................................................................................................................32
Intervista a Wayne Gould, l’australiano che ha reinventato il rompicapo matematico .............33
Quale intelligenza mette in gioco il gioco del sudoku? .............................................................35
I sudokulisti................................................................................................................................38
Definizioni e terminologia .............................................................................................................40
Matematica del Sudoku..................................................................................................................42
I principali metodi risolutivi ..........................................................................................................45
Metodo 1 − "A colpo d’occhio" .................................................................................................45
Metodo 2 − "single cell" ............................................................................................................46
Metodo 3 − "single number"......................................................................................................46
Metodo 4 − "hidden loner o hidden single" ...............................................................................46
Metodo 5 − "pure pairs o naked pairs" ......................................................................................47
Metodo 6 − "hidden pairs" .........................................................................................................47
Metodo 7 − "locked candidates 1" .............................................................................................47
5A elettrotecnica e automazione
Pag. 105/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Metodo 8 − "locked candidates 2" .............................................................................................48
Metodi 9 e 10 − "number sharing".............................................................................................48
Metodo 11 − "pure triples o naked triples" ................................................................................48
Metodo 12 − "hidden triples".....................................................................................................49
Metodo 13 − "Rettangolo X−Wing" ..........................................................................................49
Metodo 14 − "Farfalla SwordFish"............................................................................................49
Metodo 15 − "pure quads o naked quads" .................................................................................50
Metodo 16 − "hidden quads" .....................................................................................................50
Metodo 17 − "try and error".......................................................................................................50
Il progetto completo per SIMATIC Siemens S7−300 ........................................................................51
Sviluppo del progetto hardware .....................................................................................................51
Generalità ...................................................................................................................................51
Lista degli I/O, lista di attribuzione (simboli)............................................................................51
La macchina (reale) "Sudoku Solver 2".....................................................................................52
Sviluppo del progetto software Sudoku Solver 2...........................................................................54
Generalità ...................................................................................................................................54
Elenco del software utilizzato per lo sviluppo del progetto.......................................................56
Storia del Pascal (cenni).............................................................................................................57
S7−SCL......................................................................................................................................57
L'algoritmo .................................................................................................................................58
La prima simulazione dell'algoritmo (a cura del Prof. Fabio Pedretti)......................................60
Delphi: SudokuSolver2.exe (a cura del Prof. Fabio Pedretti)....................................................60
Delphi: Sudoku_PLC.exe (a cura del Prof. Fabio Pedretti).......................................................64
Strutture dati...............................................................................................................................66
Il programma completo per PLC per l'applicazione SS2...........................................................69
Procedures e Functions (primitive) ............................................................................................73
HMI, i pannelli operatori ed il loro utilizzo (un breve tutorial). ................................................75
Parametrizzazione del pannello operatore per l'applicazione SS2.............................................92
Preparazione del simulatore PLCSIM........................................................................................93
Simulazione complessiva (PLCSIM + WinCC Flexible RT) ....................................................94
Screenshots.................................................................................................................................95
Filmati ........................................................................................................................................96
Il nostro Istituto..................................................................................................................................97
Storia "Per sapere chi siamo dobbiamo conoscere la nostra storia..." ...........................................98
Lab. 072 − Laboratorio di automazione industriale.....................................................................101
Ringraziamenti .................................................................................................................................103
Sommari ...........................................................................................................................................105
Sommario .....................................................................................................................................105
Indice delle Figure .......................................................................................................................107
Indice delle Tabelle......................................................................................................................109
Indice delle Equazioni..................................................................................................................109
5A elettrotecnica e automazione
Pag. 106/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Indice delle Figure
Figura 1 − Determinazione, per via grafica, del B.E.P.. ..................................................................12
Figura 2 − Promozione "cartacea" PLC...........................................................................................17
Figura 3 − Il primo quadrato magico. ..............................................................................................18
Figura 4 − I segni sul guscio della tartaruga e la loro traduzione in numeri...................................18
Figura 5 − I due possibili quadrati latini di ordine due, cioè 2×2. ..................................................26
Figura 6 − Leonhard Euler, 1707 − 1783.........................................................................................27
Figura 7 − In figura, a sinistra un quadrato latino di ordine 4, a destra un quadrato latino di
ordine 5. .............................................................................................................................................27
Figura 8 − William Sealey Gosset (1876 − 1935). ...........................................................................28
Figura 9 − Un campo con una coltivazione che usa cinque diversi trattamenti, secondo una
sistemazione a quadrato latino 5 per 5..............................................................................................28
Figura 10 − Il Latercolo pompeiano. ................................................................................................29
Figura 11 − Esempio 1. .....................................................................................................................31
Figura 12 − I gemelli.........................................................................................................................32
Figura 13 − Tripletta.........................................................................................................................32
Figura 14 − Wayne Gould. ................................................................................................................33
Figura 15 − Il Sudoku del Daily Telegraph. .....................................................................................38
Figura 16 − Il Sudoku per cellulare Symbian. ..................................................................................39
Figura 17 − Il Sudoku in televisione. ................................................................................................39
Figura 18 − Schema e soluzione (unica) relativa. ............................................................................41
Figura 19 − Regole per la costruzione di un sudoku. .......................................................................43
Figura 20 − Esempio 1a. ...................................................................................................................45
Figura 21 − Esempio 1b. ...................................................................................................................45
Figura 22 − Esempio 2. .....................................................................................................................46
Figura 23 − Esempio 3. .....................................................................................................................46
Figura 24 − Esempio 4. .....................................................................................................................46
Figura 25 − Esempio 5. .....................................................................................................................47
Figura 26 − Esempio 6. .....................................................................................................................47
Figura 27 − Esempio 7. .....................................................................................................................47
Figura 28 − Esempio 8. .....................................................................................................................48
Figura 29 − Esempio 9. .....................................................................................................................48
Figura 30 − Esempio 10. ...................................................................................................................48
Figura 31 − Esempio 11. ...................................................................................................................48
Figura 32 − Esempio 12. ...................................................................................................................49
Figura 33 − Esempio 13. ...................................................................................................................49
Figura 34 − Esempio 14. ...................................................................................................................49
Figura 35 − Esempio 15. ...................................................................................................................50
Figura 36 − Esempio 16. ...................................................................................................................50
Figura 37 − Schema elettrico (complessivo) della macchina SS2. ...................................................52
Figura 38 − Schema e soluzione (unica) relativa. ............................................................................54
Figura 39 − SudokuSolver2.exe, StartUp..........................................................................................60
Figura 40 − SudokuSolver2.exe, file dati sudoku..............................................................................61
Figura 41 − SudokuSolver2.exe, Load Game....................................................................................61
Figura 42 − SudokuSolver2.exe, Run. ...............................................................................................62
Figura 43 − Algoritmo 1PC, End. .....................................................................................................63
5A elettrotecnica e automazione
Pag. 107/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Figura 44 − Sudoku_PLC.exe, file dati sudoku.................................................................................64
Figura 45 − Sudoku_PLC, Load Game. ............................................................................................64
Figura 46 − Algoritmo 2PC, End. .....................................................................................................65
Figura 47 − Aggiornamento del firmware del pannello operatore tramite RS−232. .......................76
Figura 48 − ProSave, trasferitore firmware, selezione dell'interfaccia............................................76
Figura 49 − ProSave, trasferitore firmware, selezione del file.........................................................77
Figura 50 − Rete MPI per lo sviluppo del sistema d'automazione. ..................................................78
Figura 51 − Step 7, il manager..........................................................................................................78
Figura 52 − Step 7, impostazione dell'interfaccia MPI.....................................................................79
Figura 53 − Modifica dell'indirizzo dell'MPI della CPU..................................................................80
Figura 54 − Modifica dell'indirizzo dell'MPI del pannello operatore. .............................................81
Figura 55 − WinCC, verifica del collegamento CPU ↔ pannello operatore...................................81
Figura 56 − NetPro 1. .......................................................................................................................82
Figura 57 − NetPro 2. .......................................................................................................................82
Figura 58 − NetPro 3. .......................................................................................................................83
Figura 59 − Pannello di controllo del pannello operatore. ..............................................................84
Figura 60 − Configurazione dell'interfaccia sul pannello operatore 1. ...........................................84
Figura 61 − Configurazione dell'interfaccia sul pannello operatore 2. ...........................................85
Figura 62 − WinCC, verifica del collegamento MPI. .......................................................................86
Figura 63 − OpPan, lettura di una variabile 1. ................................................................................87
Figura 64 − OpPan, lettura di una variabile 2. ................................................................................88
Figura 65 − WinCC, collegamento di una variabile per la lettura...................................................88
Figura 66 − WinCC, trasferimento della programma nel pannello operatore. ................................89
Figura 67 − OpPan, scrittura di una variabile 1. .............................................................................90
Figura 68 − OpPan, scrittura di una variabile 2. .............................................................................91
Figura 69 − WinCC, collegamento di una variabile per la scrittura................................................91
Figura 70 − Didascalia figura. .........................................................................................................92
Figura 71 − Vista complessiva dell'applicazione SS2 simulata su PC. ............................................94
Figura 72 − ScreenShot.....................................................................................................................95
Figura 73 − L'Istituto Tecnico Industriale Aldini − Valeriani (foto da satellite − Google Maps)...97
Figura 74 − Giovanni Aldini (1762 − 1834).....................................................................................98
Figura 75 − Luigi Valeriani (1758 − 1828). .....................................................................................98
Figura 76 − Reparto tornitori (1881)................................................................................................99
Figura 77 − Convento di S. Lucia. ....................................................................................................99
Figura 78 − Reparto Meccanica (1898)..........................................................................................100
Figura 79 − Navata sx (1950 − chiesa di S. Lucia). .......................................................................100
Figura 80 − Freseria (1950 − chiesa di S. Lucia). .........................................................................100
Figura 81 − Reparto aggiustaggio (1950 − chiesa di S. Lucia). ....................................................100
Figura 82 − Lab. chimica (1950 − convento di S. Lucia). ..............................................................100
Figura 83 − 5A elettrotecnica e automazione. ................................................................................103
Figura 84 − Professori. ...................................................................................................................103
Figura 85 − Dirigenza.....................................................................................................................104
5A elettrotecnica e automazione
Pag. 108/109
I.T.I. Aldini − Valeriani (Bologna)
Sudoku Solver
Indice delle Tabelle
Tabella 1 − Software utilizzato per lo sviluppo di SS2........................................................................4
Tabella 2 − Parametri relativi alle matrici quadrate........................................................................19
Tabella 3 − Classificazione di vari tipi di "quadrati". ......................................................................20
Tabella 4 − Il numero magico K in funzione di n..............................................................................22
Tabella 5 − Definizioni e terminologia del sudoku. ..........................................................................40
Tabella 6 − Lista dei simboli. ............................................................................................................51
Tabella 7 − Scelta della configurazione hardware. ..........................................................................53
Tabella 8 − Elenco software utilizzato. .............................................................................................56
Tabella 9 − Hardware Lab. 072 Aldini − Valeriani. ........................................................................75
Tabella 10 − Indirizzi MPI di default. ...............................................................................................75
Tabella 11 − Lista degli oggetti utilizzati per comporre la pagina Home_1. ...................................92
Indice delle Equazioni
Equazione 1 − Ricavi Totali. .............................................................................................................11
Equazione 2 − Costi Totali. ...............................................................................................................11
Equazione 3 − Costi Variabili. ..........................................................................................................11
Equazione 4 − Punto di pareggio. .....................................................................................................11
Equazione 5 − B.E.P..........................................................................................................................12
Equazione 6 − Numero magico. ........................................................................................................21
5A elettrotecnica e automazione
Pag. 109/109
Algoritmo Sudoku 2. Fase di input dati (valori).
START
Azzero la matrice S
Inserisco valore in S[r,c,1]
Il BackUp delle coordinate della cella sulla quale si sta
operando è necessario per l’eventuale opzione di undo.
BackUp delle coordinate della cella:
Lastr = r
Lastc = c
Valore valido?
F
...ovvero… controllo se il valore immesso è compreso tra 1 e 9
(estremi inclusi) e se è compatibile alla riga, alla colonna e al
blocco di appartenenza.
S[Lastr,Lastc,1] = 0
V
STRUTTURA DELLA MATRICE S[r,c,d]
V
Colore cella
Altro valore?
Editabilità cella
F
c
Azzero
ati
did
an
9
10
11
2
1
Soluzione o
Azzeramento?
1
2
3
Risolvo
Blocco i valori inseriti
ponendo, per ciascuno di essi,
il segnalatore “100” in S[r,c,2]
riga
4
5
6
7
8
9
1
S
2
3
4
5
6
7
8
9
colonna
La matrice quadrata S[r,c,1] è quella visualizzata sull'OpPan.
Matrice 9x9x9 dei candidati
Elenco marker matrice S
1)
S[r,c,2] = 100
2)
Se tra S[r,c,1] e S[r,c,9] è presente un numero negativo, tale numero è il “primo candidato” testato
per quella cella.
Esso determina la fine della rotazione dei candidati per tale cella.
Significa che in S[r,c,1] è presente un valore inserito durante la fase di
input e, di conseguenza, immutabile.
Algoritmo Sudoku 2.1. Fase risolutiva.
S
I candidati della cella r,c vengono salvati, in ordine crescente,
da S[r,c,1] in avanti... fino, al limite, a S[r,c,9].
P=0
Calcolo e salvo in S i candidati di tutte le celle tranne:
*) per le celle contenenti i valori inseriti in fase di input.
ESEMPIO:
La cella 3,7 mostra 2 candidati: il 4 e il 7... avremo:
S[3,7,1] = 4; S[3,7,2] = 7.
le celle da S[3,7,3] a S[3,7,9] vengono azzerate .
F
Avanzamento
di P possibile?
V
SUDOKU
RISOLTO !!
ESEMPIO:
Il puntatore P è in POld, esso si muove in avanti di tre
posizioni, in quanto, le celle intermedie non soddisfano i criteri
di movimento.
AVANZO P
Avanzo il puntatore P alla prima cella (in ordine di
lettura) priva di:
*) valore inserito in fase di input.
Valore
Cand. Cand.
Valore Valore
Neg. Neg.
Nella cella puntata da P marco il primo candidato (in
posizione S[r,c,1]) come “capo lista”:
S[r,c,1] = −S[r,c,1]
POld
7
PNew
In pratica aggiorno tutti i candidati "davanti" a P, escludendo le
celle aventi un valore immesso durante la fase di input.
Calcolo e salvo in S i candidati di tutte le celle tranne:
*) per le celle contenenti i valori inseriti in fase di input,
*) per le celle ≤ P.
Cella con
nessun
candidato?
F
ESEMPIO per una cella avente quattro candidati:
prima:
4, 7, 9, −1
dopo:
7, 9, −1, 4
V
Calcolo e salvo in S i candidati di tutte le celle tranne:
*) per le celle contenenti i valori inseriti in fase di input,
*) per le celle ≤ P.
RUOTA CANDIDATI
Ruota i candidati della cella puntata da P
F
S[r,c,1] < 0?
V
Arretramento
di P possibile?
V
ARRETRO P
Arretro il puntatore P alla prima cella (in ordine di
lettura) priva di:
*) valore inserito in fase di input.
F
ESEMPIO:
Il puntatore P è in POld, esso si muove all'indietro di tre
posizioni, in quanto, le celle intermedie non soddisfano i criteri
di movimento.
NESSUNA
SOLUZIONE
Valore
Cand. Cand.
Cand.
Valore Valore
Neg. Neg.
Neg.
PNEw
Relazioni algebriche P ↔ r, c
P = 8 · (r − 1) + c
r = {(P − 1) div 9} +1
c = {(P − 1) mod 9} +1
1 ≤ r, c ≤ 9
1 ≤ P ≤ 81
1 ≤ P ≤ 81
POld