Vai al contenuto
PLC Forum


Linguaggi S7 E Modelli Di Plc


pomat

Messaggi consigliati

Salve a tutti, sono nuovo sia del forum che del mondo SIMATIC.
Avrei alcuni quesiti probabilmente banali ma fatico a trovare risposte precise sul web.
1) I PLC S7-1200 sono programmabili solo in KOP e FUP?
2) Vi sono differenze (significative) tra l'AWL per S7-1500 e quello per S7-300/400?
3) I PLC S7-200 sono ancora usati per nuovi impianti? Ha senso dedicare tempo all'AWL per S7-200? (mi pare di capire che l'AWL per S7-300/400 ha delle differenze, per esempio non ha l'istruzione LD per il load di "bit")
4) In italia è importante imparare le sigle mnemoniche tedesche oltre a quelle "internazionali"?
5) Oltre che per poter modificare programmi esistenti, conoscere l'AWL è ancora importante per l'ottimizzazione del codice, considerando ormai l'ampia diffusione di CPU dalle caratteristiche avanzate?
6) Esistono linguaggi S7 che aderiscano strettamente alle direttive IEC 61131-3? (so che sono considerati "in linea" con lo standard IEC ma non vi aderiscono in modo ferreo)
Vi ringrazio anticipatamente.
Link al commento
Condividi su altri siti


Ciao,

comincio a rispondere ai quesiti di cui conosco la risposta:

I PLC S7-1200 sono programmabili solo in KOP e FUP: c'è anche SCL (structured control language), che è un simil-Pascal; non l'ho mai usato, solo sbirciato.

I PLC S7-200 sono ancora usati per nuovi impianti? Ha senso dedicare tempo all'AWL per S7-200 ...: Il 200 è ormai venduto come ricambio a prezzi veramente alti, quindi, a meno di non dover forzatamente utilizzarlo (= ordine costrittivo del cliente), non ha senso dedicarvi del tempo, tanto più che le differenze fra l'AWL del 200 e del 300 sono notevoli; il consiglio è, se proprio devi, utilizza il 200 con il suo ladder.

In italia è importante imparare le sigle mnemoniche tedesche oltre a quelle "internazionali": Onestamente non mi è chiara la domanda; con lo Step 7 classico (non TIA) esiste la possibilità di selezionare il mnemonico fra tedesco ed internazionale; con il TIA il problema non si pone: è già internazionale, almeno che io sappia ...

Link al commento
Condividi su altri siti

@drugo66 Grazie! Mi hai confermato alcuni "sospetti".

Per il mnemonico, la mia intenzione era di imparare solo le sigle internazionali, ma ero un po' perplesso dal fatto che in Italia, probabilmente per motivi storici, vengono caldeggiati (anche nei manuali) i termini tedeschi.

PS: Come direbbe il Drugo Lebowski, il PLC S7 è un caso molto complicato... "Un mucchio di input e output"...

Link al commento
Condividi su altri siti

5) Oltre che per poter modificare programmi esistenti, conoscere l'AWL è ancora importante per l'ottimizzazione del codice, considerando ormai l'ampia diffusione di CPU dalle caratteristiche avanzate?

Se non usi SCL (per esempio perchè come me non hai il pacchetto) può essere una alternativa perchè di sicuro in KOP non puoi fare tutto.

Sono stato in una ditta che ha più di 10 programmatori e tutti si ostinano a programmare esclusivamente in AWL !!! :blink: Abitudine? boh?

Io per la logica boolena mi trovo meglio in KOP (per essere più veloce scrivo lo stesso il segmento in AWL ma faccio sì che sia traducibile) soprattutto per andare in stato risulta molto più immediato controllare consensi, finecorsa e quant'atro in KOP che non in AWL.

Mnemonico tedesco? probabilmente anche qui c'entra l'abitudine, chi è partito con S5 è abituato ad E/A/M...

Modificato: da JumpMan
Link al commento
Condividi su altri siti

Anche in Step7 classico si può scegliere tra mnemonico tedesco e inglese.

Non importa con quale mnemonico sia stato scritto il codice: si cambia a piacere.

5) Oltre che per poter modificare programmi esistenti, conoscere l'AWL è ancora importante per l'ottimizzazione del codice, considerando ormai l'ampia diffusione di CPU dalle caratteristiche avanzate?

Secondo me, sì.

Ma non tanto per ottimizzare il codice. Diciamo che ti permette, molto spesso, di prendere scorciatoie molto comode, soprattutto quando devi fare dei calcoli.

Per quanto riguara i calcoli, è vero che si possono fare in SCL con una scrittura molto chiara, ma non possono coesistere nello stesso blocco di programma segmenti in KOP e in SCL, mentre possono coesistere i linguaggi KOP e AWL.

Inoltre bisogna fare sempre i conti col fatto che ci può essere la necessità di mettere le mani su programmi fatti da altri. E se sono scritti in AWL...

Link al commento
Condividi su altri siti

Grazie [at]JumpMan [at]batta, si potrebbe quindi dire che AWL offre la massima flessibilità, anche se SCL ha i vantaggi di un linguaggio a più alto livello d'astrazione...

Da subito ho immaginato che da parecchio tempo Step7 dovesse dare la possibilità di passare senza problemi da una notazione all'altra... La domanda nasce dal fatto che sono partito dal manuale ufficiale AWL del 2010, il quale usa ancora la notazione tedesca. Paradossalmente il TIA Portal in italiano, pur riportando ancora i termini tedeschi anziché LAD/FBD/STL, pare non permetta più l'immissione/visualizzazione delle istruzioni in formato non internazionale, il che la dice lunga... Come diceva anche @drugo66, il problema non si pone.

Modificato: da pomat
Link al commento
Condividi su altri siti

C'è da aggiungere una cosa, scrivilo come vuoi il programma ma la cpu del 300 lo leggerà sempre in AWL perchè, se non mi sbaglio, dalle rimembranze del primo corso (sono passati parecchi anni) l'interprete dei comandi integrato nella CPU lavora proprio in AWL.

Guarda-caso, chi come me non ha il pacchetto SCL è costretto a leggere programmi SCL scritti da altri visualizzati in AWL, e vi assicuro è un vero e proprio minestrone di istruzioni inutili, istruzioni che escono dal compilatore di S7 per rendere l'SCL traducibile dalla CPU. Quindi se sai bene l'AWL significa che sai bene anche come lavora la CPU e fai programmi più ottimizzati, magari meno leggibili, ma sicuramente più snelli nell'esecuzione.

Modificato: da JumpMan
Link al commento
Condividi su altri siti

Salve a tutti. Quindi se non ho capito male scl é un pacchetti apparte del tia!! Per quello non lo trovo. Uso v13 sp1 e per curiositá volevo vedere un pò com é scl. Ho girato per tutto il tia ma niente solo kop e fup. In ditta usiamo solo il 1200 perché é piú che sufficente. Quindi per me che volessi imparare awl, per il momento non mi servirebbe e inoltre non potrei usarlo....diciamo che ho sempre guardato con una virgola di rabbia quelli che programmavano in awl... Ma penso proprio sia per mia ignoranza, perché non ne sono capace.

Link al commento
Condividi su altri siti

Nicola Carlotto

in ogni plc s7 1200 che si acquisai c'e' un pdf che puo' aiutare ad orientarsi tra linguaggi di programmazione s71200_system_manual_it-IT.pdf

ciao

"..diciamo che ho sempre guardato con una virgola di rabbia quelli che programmavano in awl... Ma penso proprio sia per mia ignoranza, perché non ne sono capace."

guarda che e' abbastanza semplice l'awl.

ciao

Modificato: da Nicola Carlotto
Link al commento
Condividi su altri siti

Anche con Tia si può usare il mnemonico Tedesco.

@ken Hai perfettamente ragione, cercando meglio ho individuato il menù per la scelta: Strumenti > Impostazioni > Programmazione PLC > Generale > Ulteriori impostazioni > Mnemonico.

Mi pare si tratti di un'impostazione globale. Una volta cambiato mnemonico, le istruzioni in finestre già aperte non vengono sostituite automaticamente (bisogna chiudere e riaprire il blocco), tuttavia da subito le righe che vengono editate accettano solo la nuova notazione impostata, permettendo eventualmente una commistione (compilabile) che permane fino alla chiusura della finestra!

Ad ogni modo, l'impostazione predefinita del TIA è su mnemonico internazionale (penso che @drugo66 intendesse questo con "è già internazionale").

Quindi se sai bene l'AWL significa che sai bene anche come lavora la CPU e fai programmi più ottimizzati, magari meno leggibili, ma sicuramente più snelli nell'esecuzione.

@JumpMan Quello che dici è senz'altro vero, era proprio questo che intendevo per "ottimizzazione del codice".

Uso v13 sp1 e per curiositá volevo vedere un pò com é scl. Ho girato per tutto il tia ma niente solo kop e fup.

@fabiofz Non so se la cosa cambi per la versione Basic o per l'S7-1200, ma in STEP 7 Professional, almeno per i modelli di PLC che ho esaminato, sembra che l'unico blocco non programmabile in SCL sia l'OB1.

@Nicola Carlotto: Grazie per il riferimento al manuale.

guarda che e' abbastanza semplice l'awl.

Da quel che ho visto finora penso dipenda molto dal settore professionale da cui si proviene e da quanto si vada "a fondo" nell'uso delle caratteristiche del linguaggio.

Link al commento
Condividi su altri siti

Lasciatemi aggiungere ancora una cosa:

ho visto, troppo spesso devo dire, dei listati in AWL semplicemente illeggibili: nello stesso segmento una sequela di istruzioni senza alcuna divisione logica; l'impianto funziona, ma se si deve modificare qualcosa, anche chi l'ha scritto, secondo me, ha un moto di nausea ...

Ecco perchè, sempre secondo me, chi scrive applicativi per PLC dovrebbe anche studiarsi come si struttura un programma, per non parlare poi di un minimo di comprensione in automazione di base: l'impianto va sempre suddiviso in gruppi o stazioni, e da questi poi ancora suddiviso in funzioni.

Tutto ciò per ribadire quello che penso e cioè (lo so, sono noioso ...) che non basta conoscere un linguaggio per diventare automaticamente sviluppatori di software per automazione.

Questo senza nulla togliere all'AWL, che ritengo un linguaggio di tutto rispetto; e badate, meno "paletti" esistono in un linguaggio e più io li prediligo ...

Link al commento
Condividi su altri siti

Salve a tutti. Quindi se non ho capito male scl é un pacchetti apparte del tia!!

SCL è a parte solo in Step7 classico "Basic". È già compreso invece in Step7 classico "Professional" e in TIA Portal.

Per S7-1200, quando inserisci un nuovo blocco, c'è anche la finestra con la scelta del linguaggio: KOP, FUP, SCL.

Link al commento
Condividi su altri siti

@drugo66 Venendo dal settore dello sviluppo software, che posso assicurare soffre degli stessi problemi, comprendo e condivido pienamente il tuo discorso. Programmatori che, "costretti" a fornire/condividere il codice sorgente, lo offuscano senza troppo sforzo così da poterci metter mano solo loro (e un mese dopo neanche più loro). Oltre tutto, essendo una sorta di assembly, di sicuro il rischio di produrre spaghetti code in AWL è massimo.

@batta Appunto. Forse @fabiofz ha provato a programmare in SCL l'OB1.

Mi sembra inoltre che tra KOP, FUP e AWL vi sia un certo grado di interoperabilità, per cui ad esempio (almeno in OB1) una volta scritto un programma in KOP, è ancora possibile settare il linguaggio ad AWL, e il blocco viene tradotto automaticamente. Non so se sia possibile l'operazione inversa e quale sarebbe l'effetto, visto che l'AWL non è sempre direttamente traducibile in KOP.
Diversamente, una volta impostato un blocco in SCL, ho notato che il menù per la selezione del linguaggio (se uno volesse ad esempio passare ad AWL) è disabilitato.
Link al commento
Condividi su altri siti

Diversamente, una volta impostato un blocco in SCL, ho notato che il menù per la selezione del linguaggio (se uno volesse ad esempio passare ad AWL) è disabilitato

Lo hanno disabilitato altrimenti prenderesti paura :o:lol: come me quando li apro (non ho il pacchetto SCL) :huh:

Link al commento
Condividi su altri siti

Lo hanno disabilitato altrimenti prenderesti paura :o:lol: come me quando li apro (non ho il pacchetto SCL) :huh:

Non credo che sia solo questo.

Nel 1200 e nel 1500, almeno da quanto dicono in Siemens, non è più l'AWL l'unico linguaggio che la CPU riesce ad interpretare. Un programma scritto in SCL non viene quindi convertito in AWL.

Lo stesso discorso vale anche per il KOP, che non è più una rappresentazione grafica di quanto scritto in AWL.

Il comportamento quindi cambia a seconda se stiamo lavorando con S7-300/400 o S7-1500.

Con S7-300/400 praticamente rimane tutto come in Step7 classico: il KOP è sempre convertibile in AWL, mentre l'AWL non è tutto convertibile in KOP.

Se cambio linguaggio di programmazione da AWL a KOP in un S7-300, i segmenti che rispettano una sintassi che permette la conversione in KOP verranno visualizzati in KOP, mentre gli altri rimarranno visualizzati in AWL. Esattamente come con Step7-classico.

Con il 1500 invece la faccenda è diversa. Se creo un blocco scegliendo come linguaggio di programmazione il KOP, potrò in seguito cambiare solo tra KOP e FUP e viceversa, ma non in AWL.

Un blocco nato in AWL rimarrà sempre e solo in AWL, così come un blocco in SCL.

Visto che è molto comodo avere blocchi con linguaggio misto KOP-AWL (bello sarebbe avere anche la possibilità di avere blocchi misti KOP-AWL-SCL, ma sembra sia chiedere troppo), si può sempre scegliere per il nuovo blocco il linguaggio KOP e inserire segmenti in AWL.

Curiosità:

Ho provato a scrivere tre blocchi di programma, uno in AWL, uno in KOP e uno in SCL, contenenti le stesse identiche istruzioni (due semplici marcia/arresto con autoritenuta).

I tre blocchi occupano la stessa identica dimensione di memoria di lavoro.

Ho provato anche, nel blocco in AWL, ad aggiungere e togliere parentesi di solito usate per la visualizzazione in KOP. La memoria di lavoro non cambia.

Sembra quindi che il compilatore generi lo stesso identico codice indipendentemente dal linguaggio utilizzato (e questo direi che ha molto senso), e che sia più efficiente del suo predecessore.

Modificato: da batta
Link al commento
Condividi su altri siti

Concordo pienamente Batta. Sto iniziando ad affacciarmi al 1500. In ufficio è un periodo di transizione e sto quindi imbastendo le parti "campione" dei nostri progetti per il 1500.

Penso comunque che TIA sia ancora relativamente giovane. spero che nel futuro TIA migliori sempre più.

Link al commento
Condividi su altri siti

Penso comunque che TIA sia ancora relativamente giovane. spero che nel futuro TIA migliori sempre più.

Step7 classico è a fine carriera, mentre TIA ha ampi spazi di miglioramento.

Oramai mi sono abituato ad utilizzare il TIA (ma se lavoro con S7-300 preferisco ancora Step7 classico) e anche ad apprezzarne alcuni aspetti. Quello che continuo a chiedere a Siemens è che inseriscano la meravigliosa funzione "Vai a...", che risolvano qualche baco ancora presente nel cross reference, e che mi risolvano il problema del mancato funzionamento del simulatore S7-1200/1500 dopo l'installazione del SP1.

Link al commento
Condividi su altri siti

avevo già chiesto altrove. lavorare in rete sullo stesso progetto? con step7 classico alla grande. con Tia non mi sembra possibile e per me è una limitazione serie, specialmente in cantiere.

Link al commento
Condividi su altri siti

@batta Si direbbe che l'AWL non è "vicino al linguaggio macchina" (cit. manuale step7!) del 1500 come lo era per il 300/400. Mi confermeresti comunque che l'AWL nel 1500 è rimasto invariato?

[...] e che mi risolvano il problema del mancato funzionamento del simulatore S7-1200/1500 dopo l'installazione del SP1.

Intendi V13? Io ho eseguito l'aggiornamento al SP1 (in realtà due aggiornamenti: step7 v13 e plcsim v13) e il plcsim v13 pare funzionare correttamente. So che c'è un bug che non fa funzionare l'integrazione tra step7 e plcsim (icona "avvia simulazione") almeno nel caso del 1200 (v4) su sistemi a 32 bit (ma per fortuna il mio è x64).

lavorare in rete sullo stesso progetto?

@ken Intendi il Team Engineering?

Link al commento
Condividi su altri siti

Per gli interessati condivido la risposta che mi sono dato alla domanda

2) Vi sono differenze (significative) tra l'AWL per S7-1500 e quello per S7-300/400?

Sì! Le informazioni più importanti si trovano ovviamente nella guida in linea (sistema di informazione) del TIA, in particolare nella sezione:

Migrazione di progetti e programmi
> Migrazione dei programmi dei PLC in una CPU S7-1500 / ET200SP
> > Particolarità della migrazione dei programmi dei PLC (S7-1500)

Vi sono alcune differenze anche negli altri linguaggi, ma in AWL sono prevedibilmente più marcate. In realtà riguardano principalmente le istruzioni avanzate, di cui oltre un centinaio non ha un rimpiazzo compatibile e neppure simile (e per una quindicina di queste la guida non da consigli per la migrazione se non quello di rivolgersi al supporto tecnico). Tuttavia vi sono anche differenze nella programmazione di base (in particolare limitazioni introdotte per evitare pratiche che possono generare errori o rallentare l'elaborazione). Ne elenco sommariamente alcune:

- Il bit RLC è separato dalla status word e in questa i primi 4 bit sono perennemente a 0.
- Il bit MCR non esiste più.
- Le istruzioni ENT/LEAVE sono state eliminate (non sono previste CPU con 4 accumulatori).
- Non si può introdurre istruzioni o etichette di salto nelle catene logiche.
- In presenza di segmenti misti, nel passaggio tra KOP/FUP e AWL non c'è memoria delle operazioni su registri.
- I registri vanno a 0 al cambio di blocco (ma è possibile usare le istruzioni CC e UC con limitazioni).
- L'uso di indirizzi parziali di variabili DB è stato ristretto ed è stato corretto un comportamento errato negli accessi al DB d'istanza.

Penso possa essere utile tenere a mente i cambiamenti per lungimiranza anche nella programmazione degli S7-300/400.

L'importanza di AWL a livello architetturale è comunque diminuita. Per la serie S7-1500, KOP e FUP non vengono più tradotti in AWL prima della compilazione in linguaggio macchina (come per gli S7-1200, vengono compilati direttamente).

Modificato: da pomat
Link al commento
Condividi su altri siti

@JumpMan Sulla prima ti riporto direttamente il link ad una pagina del supporto che è praticamente uguale alla guida in linea.

Per la seconda copio qui sotto parte dell'argomento della guida:

Per gli indirizzi parziali in S7-1500 valgono le seguenti limitazioni:

- In S7-1500 gli indirizzi parziali sono ammessi solo se il registro del DB è stato prima impostato esplicitamente nel blocco attuale. Il registro del DB si imposta ad es. con l'istruzione "OPN". Si possono indirizzare con indirizzo parziale solo le variabili nei blocchi dati con accesso standard.

- Al richiamo del blocco in S7-1500 i registri dei blocchi dati vengono impostati a "0". Non è possibile quindi aprire un blocco dati in un blocco e indirizzare in modo parziale elementi dati del blocco dati in un blocco subordinato. Prima di indirizzare una variabile DB con indirizzo parziale, impostare il registro del DB nel blocco dati attuale.

- Il registro del blocco dati DB viene impostato a "0" anche a ogni accesso con indicazione completa dell'indirizzo (ad es. %DB10.DBW10). Prima di indirizzare una variabile DB con indirizzo parziale, reimpostare il registro del DB dopo un accesso con indirizzo completo.

- Se si utilizzano indirizzi parziali l'elaborazione del programma rallenta in runtime.

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...