CTRL-ALT-CANC

Per Odissey
Messaggio del 24-09-2002 alle ore 15:49:15
erco di rispondere in modo esaustivo alla tua domanda...

Nel campo dell'automazione, sebbene gli sforzi dei comitati di normalizzazione IEC ed ANSI, vige ancora un clima di profondo disordine! I linguaggi di programmazione usati sono molti e decisamente dedicati alle macchine su cui vanno a lavorare...
Il cuore di una macchina (termine che uso in sostituzione di Robot, Automa, Flex link, macchina utensile ecc) è il PLC (Programmable Logic Controller), cioè una MCU dotata di hardware capace di interfacciarsi direttamente con il processo, cioè con l'insieme di variabili che descrivono il compito d'automazine da assolvere.
Senza aprire ulteriori parentesi "sistemistiche", un PLC è in grado di rilevare lo stato di un finecorsa, di un interruttore, di un sensore, di una fotocellula ecc, associando a questo stato un valore binario (1=Interruttore chiuso, 0=interruttore aperto) ecc.
Inoltre, successivamente all'elaborazione dello stato degli INPUT secondo il programma memorizzato, è in grado di pilotare delle uscite fisiche in modo da far eccitare un Relay, accendere una lampada ecc.
Oltre ad aquisire e impostare ingressi ed uscite digitali, un PLC è capace di acquisire e impostare anche ingressi ed uscite analogiche. Ad esempio, posso rilevare la temperatura di una vasca mediante un sensore di temperatura che mi fornisce una tensione variabile fra 0 e 10 Volt proporzionalmente al valore della temperatura stessa ecc, oppure posso pilotare un motore mediante un'uscita analogica ( 0 Volt = 0 giri/min e 10 Volt = 1500 giri/min).
Aperta questa breve parentesi, secondo me necessaria, passo a descriverti i linguaggi di programmazone usati, ribadendo che ogni costruttore (Siemens, ABB, Allen Bradley ecc) ne ha uno diverso...
Ad esempio, la Siemens presenta sul mercato una famiglia di PLC chiamata S7 che è possibile programmare utilizzando un sistema di sviluppo IDE chiamato STEP 7. LO Step 7 permette di programmare i PLC della famiglia S7 potendo scegliere fra 3 tipologie di linguaggio:

LADDER (o KOP): Linguaggio a contatti. Il listato assomiglia ad uno schema elettrico con tanto di contatti, bobine di relè, contatori, temporizzatori ecc.

--||--||----( )-

--||--------(T)-

Questa tipologia di programmazione è particolarmente adatta ai manutentori, di solito elettrici, cioè a persone che hanno famigliarità con gli schemi elettrici ma che si dilettano poco con l'informatica!! In pratica, osservare un programma in Ladder è come sfogliare uno schema completamente elettromeccanico!!

FUP (Schema Logico): Questo linguaggio di programmazione usa, in modo grafico, i simboli delle porte logiche...è in sostanza uno schema elettronico digitale! Può essere utile in certi casi....ma ha delle limitazioni!

AWL (Lista di istruzioni): E' il linguaggio più potente! Si tratta di un linguaggio Assembly
Ti faccio un esempio...

U E0.0 //Se L'ingresso E0.0 è a livello logico 1 (True)
U E0.1 //e l'ingresso E0.1 è a livello logo 1
=A10.0 //allora, imposta a 1 l'uscita A10.0

O E0.0 //Se l'ingresso E0.0 è a 1
O E2.0 //oppure l'ingresso E2.0 è a 1 (Ho realizzato un OR fra gli ingressi)
S M10.0 //Setta un Flag chiamato M10.0 (una memoria intermedia)

U E10.0 //Se l'ingresso E10.0 è a 1
L S5t#10s //Carica nell'accumulatore la costante di temporizzazione pari a 10 secondi
SA T1 //Avvia il temporizzatore T1.
U T1 //Se il temporizzatore è attivo...
=A10.0 //Attiva l'uscita A10.0

L L#100000 //Carica nell'accumulatore 1 il Long 100000
L +10 //Carica nell'accumulatore 2 l'intero 10
ADD //Somma ACCU1+ACCU2
T DB1.DBD10 //Trasferisci il risultato in u blocco dati

SPB // Salta se lo stato logico è 1 (Jump No zero)
SPBN //Salta se lo stato logico è 0

Come vedi, è un Assembly dedicato!

Lo Step 7 permette di suddivider l'intero programma in più blocchi logici, implementare funzioni e subroutine, di creare bibliotche di funzioni, gestire dati attraverso puntatori, Array, strutture ecc. (Questo solo in AWL però!)

La tendenza attuale, però, è quella di inserire pacchetti opzionali specifici dedicati alla risoluzione di determinati problemi. Ad esempio, in Assembly è molto difficile creare funzioni capaci di lavorare in modo chiaro e pulito con numeri ed elaborazioni matematiche...
La Siemens, come opzione a S7, fornisce il linguaggio SCL. L'SCL è molto simile al Pascal (se non uguale!) con l'aggiunta del necessario set di istruzioni specifico per il controllore..
Un altro linguaggio, utilizzato in particolar modo per la programmazione di azionamenti (Motion Control / Controllo di movimentazine) è il CFC.
Il CFC è molto simile ad un diagramma degli stati Grafcet, e quindi permete di elaborare la sequenza di operazioni da svolgere senza doversi preoccupare di aspetti legati alla particolarità dell'hardware!
I controllori della serie M7, invece, possono essere programmati con un sottoinsieme "non proprio" del C++.

Ovviamente, altri produttori forniranno altri tipi di linguaggi.....è una bolgia assoluta!!
Sebbene con le opportune differenze, i vari produttori forniscono sempre almeno un linguaggio di tipologia LADDER e AWL!

Come ti annunciavo all'inizio del post, i comitati di standardizzazione stanno lavorando affinché vengano commercializzati prodotti capaci di recepire lo standard IEC. Infatti, la Siemens fornisce anche un insieme di funzioni (Funzioni IEC) che possono essere usate in sostituzione delle funzioni Siemens!(così mantengono la compatibilità con lo standard!!)
Ma ti dirò di più....
Con tutto il male che gli posso dire, devo rendere atto alla Siemens che ha prodotto il primo ed unico ambiente di svilutto totalmente compatibile con lo standard IEC. Si chiama Microwin, ed è utilizzato per programmare i controllori della famiglia S7-200. Gli S7-300 e S7-400, invece, possono essere programmati con Step7.

In conclusione, la tendenza attuale è quella di produrre dispositivi e software di sviluppo che svincolino sempre di più il progettista dall' hardware della macchina!..Stiamo passando da una fase di "Automazione a basso livello" ad una fase ad "Alto livello"...
Un esempio concreto è il software di sviluppo SIMOTION. Con questo ambiente di sviluppo, il progettista non deve preoccuparsi di come interfacciare due dispositivi o di come implementare la comunicazione....deve solo preoccuparsi di strutturare le sequenze e le operazioni!!

Questa è la foto di una possibile configurazione PLC S7-300...come vedi è costituito da 5 moduli (Alimentatore, CPU, 2 schede da 32 ingressi digitali e 1 scheda da 32 uscite digitali). Ovviamente posso aggiungere altre schede di I/O sia analogiche che digitali, schede di controllo movimentazione, schede per motori passo-passo, schede di conteggio veloce ecc



Nei vari sistemi vengono presentati anche i pannelli Operatori, cioè dei pannelli grafici con cui l'operatore puo interagire, leggere valori, comandare operazioni ecc.



Spero di essere stato chiaro...
Messaggio del 25-09-2002 alle ore 12:13:17
Grande home... ma fammi capire, con questo generi di ambiente e hardware che cosa implementate? cioe' si fanno robot industriali, quindi crudi programmi si aggiornabili ma comunque altamente specializzati a fare solo quel genere di movimento o avete laboratori dove costruite dispositivi magari capaci di imparare da propri errori oppure dalla ricezione delle informazioni dei sensori?
Se la seconda opzione, questi linguaggi sono abbatsanza espressivi, cioe' come cacchio si fa a programmare con uno pseudo schema elettrico!
Messaggio del 25-09-2002 alle ore 13:14:59
Allora...
Uno schema elettrico o elettronico è sempre molto espressivo...se lo sai leggere!
In aggiunta, è sempre possibile inserire commenti, denominare gli I/O in modo simbolico, cioè con un nome "espressivo", e quindi evitando di denominarli in base all'indirizzo di memoria.
Io, in genere, uso l'AWL...è più potente e sintetico! Inoltre, i vari costrutti informatici sono ben evidenti...
Ti faccio un esempio: un costrutto IF THEN ELSE può essere programmato nel seguente modo:

U E10.0 //If E10.0=True
SPBN L001 // Then ..Non saltare alla label L001
SET
=A0.0 // Imposta a 1 l'uscita A0.0
SPA END // Salta alla label END
L001:
SET
=A10.1 // Imposta a 1 l'uscita A10.1
END: NOP 0 // Fine dell'IF Then Else

E' Assembly, con tutte le difficoltà del caso.

In genere, quando viene commissionata la progettazione di una macchina è sempre ben chiaro il lavoro che essa dovrà svolgere. Di conseguenza, sia l'hardware che il software vengono realizzati in modo da adattarsi a quella specifica macchina! Il SW, comunque, resta sempre modificabile e ottimizzabile in qualsiasi momento...

Per quanto riguarda l'uso di strutture SW intelligenti, molte applicazioni ne fanno già uso. Ad esempio, vengono utilizzati HW e SW in logica FUZZY per controllare determinati prodotti. Un esempio concreto è quello di una linea di imbottigliamento in cui deve essere controllata l'effettiva pulizia o presenza di imperfezioni della bottiglia! In tal caso, Quale sarà la soglia per cui una bottiglia dovrebbe essere ritenuta scartata o meno?
Difficile da dirsi, ci possono essere bottiglie pulitissime con molte imperfezioni, bottiglie pulite con poche imperfezioni...
Allora si ricorre a sistemi di visione artificiale con controllo di soglia in logica Fuzzy!

Macchine a reti neurali ne esistono, ma sono ancora troppo costose...e poi dipende da cosa devono fare!! Io, personalmente, non ancora ne vedo.....
Messaggio del 25-09-2002 alle ore 13:17:48
Se qualche volta capiti dalle parti di Chieti scalo, passa a trovarmi...
In ufficio abbiamo diversi rack di simulazione sia per PLC che Controlli Numerici...
Almeno ti rendi effettivamente conto di cosa stiamo parlando e magari ti ci appassioni pure!
Messaggio del 25-09-2002 alle ore 13:39:03
a chieti scalo ci passo spesso, quasi ogni due settimane... se veramete posso venire sarei veramente curioso vedere il pinaro nel suo ambiente di lavoro io sto incominciando ad avere una conoscenza accademica di questi argomenti e vederli sul posto di lavoro nn fa altro che aiutarmi (per di più sono molto curioso di natura! ) se nn do disturbo vorrei proprio venire a vedere... solo che nn so dovè se nn vuoi dirmelo qui su mandamelo per mail.... [[email protected]]
Messaggio del 25-09-2002 alle ore 17:00:52
fatto, ti ho inviato la mail!

Nuova reply all'argomento:

Per Odissey

Login




Registrati
Mi so scurdate la password
 
Hai problemi ad effettuare il login?
segui le istruzioni qui

© 2025 Lanciano.it network (Beta - Privacy & Cookies)