Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Prime Prove Di Awl


Messaggi consigliati

Inserito:

ciao rddiego

scusa se ti faccio domandi banali ma sono proprio alle prime armi ..anzi mi ritrovo solo con una fionda in mano e con l'elastico strappato :unsure:

dunque sono riuscito a vedere il valore di acc1 da me scritto...volevo chiederti se chiamo un registro pippo questo nome lo devo prima dichiarare sulla tabella dei simboli? quale indirizzo gli devo dare ? cioe` finche` erano bit usavo per esempio i0.0 ma visto che si tratta di un numero intero credo dovro` dargli l`indirizzo di un registro solo che non ho la piu` pallida idea di cosa scrivere nel campo degli indirizzi ...provo ...andrebbe bene bm 1 ...cioe` un byte memorizzato nell`area di merker e 1 a indicare il primo registro?

lo so sono piu` di una domanda .....

ti ringrazio anticipatamissimamente :D

il rovo


Inserita:

non c'è bisogno di didchiararlo nella tabella dei simboli almeno che, appunto non gli voglia dare un simbolico

l'area di memoria Merker è quella accessibile immediatamente

e puoi leggerla e scriverla liberamente a bit a byte a word a doubleword o floating point (virgola mobile)

in base alla cpu hai una differente estensione di questa memoria

M 0.0

MB 0

MW 0

MD 0

il primo indirizzo di memoria è sempre 0 (questo numero indica sempre il numero del byte tienilo bene a mente........mi raccomando conserva questo che ti dico che è fondamentale.... è il numero del byte)

siccome questa area di memoria non è molto estesa e te ne servisse ancora esiste tutta l'area definita dall'utente (da te ) e suddivisa in Data Block DB. Questa area va definita e caricata nel PLC prima di utilizzarla ed è praticamente identica all'area Merker e sarà richiamata così

DBxx.DBX 0.0

DBxx.DBB 0

DBxx.DBW 0

DBxx.DBD 0

xx sta per il numero del DB che hai scelto a partire da 1 in poi

per definire un DB fai aggiungi blocchi -> blocco dati -> dagli un numero poi apri il blocco ed all'interno scriverai tutti i simbolici delle tue nuove variabili dichiarandone anche il tipo (bool, byte etc. etc.)

Inserita:

ciao rddiego

grazie per le informazioni...provo a fare qualche prova (semplice) e a simulare

per ora grazie ancora

rovo

Inserita:

ciao rddiego

sono il tu0 incubo :ph34r:

ho un po` smanettato con gli accumulatori...mi sono letto e riletto quello che mi hai scritto ...volevo chiederti e` possibile per esempio mettere in uscita quello scritto sull` acc1?

ciao e grazie per la tua pazienza

ilrovo

Inserita:

se in uscita intendi su una A certo che puoi farlo

L xxxx

T AW yy

altrimenti spiegami meglio che vuoi fare, magari prova a dirmi cosa e come hai smanettato..

Inserita:

grazie rddiego

stavo provando a fare un piccolo programma dove premuto un tasto partiva un temporizzatore e dopo il tempo impostato si abilitasse un' uscita...ma cavolo non riesco a fare un ca[at][at]o!!!!!

ho una confusione nella zucca che non immagini o almeno ci provi ad immaginarlo visto gli strafalcioni che ho scritto nel forum fino ad ora.... :blink:

ho provato a scrivere cosi`

A I 0.0

L S5T#5S

Sd T 1

= Q 4.0

non funziona perche` l`uscita va a 1 quando metto l`ing a 1 e il temporizzatore parte ma come se fosse un`altra cosa...non capisco come interpreta le istruzioni il plc...pensavo che prima caricasse il temporizzatore poi una volta passato il tempo l`uscita q 4.0 andasse a 1 e se poi scrivendo sotto queste altre istruzioni ....

ls5t#5

sf t1

r q 0.4

= q 4.0

mi riportasse la mia uscita a 0 ma forse c`e` qualcosa di ben piu` complicato che mi sfugge o he ho letto ma non ho capito...molto piu` probabile

ciao rddiego.....grazie ancora

il rovo

Inserita:

//Il timer T1 conta con l'ingresso A0.0 ad ON

A I 0.0

L S5T#5S

Sd T 1

//Finito di contare il timer T1 attiva l'uscita Q4.0

A T 1

= Q 4.0

Inserita:

GRAZIEE DREI

funziona !!!! belin un mese che cerco di fare qualcosa ma solo ora ho capito che non ci ho capito ancora niente!!!

adesso provero` a vedere se riesco a fare abilitare l`uscita e dopo un po` di tempo a resettarla nuovamente

vi faccio saPERE

ANCORA GRAZIE

IL ROVO

Inserita:

ciao drei

volevo chiederti come si fa a far partire un temporizzatore senza dover abilitare nessun ingresso?

per eesmpioricevere dei dati su un`uscita dopo un po` di tempo

ciao e grazie ancora

il rovo

Inserita:

Il timer in questione viene attivato quando lo stato dell'RLC è a 1.

Quindi ti serve mettere a 1 l'RLC, senza usare un bit puoi usare la funzione SET, tipo:

SET

L S5T#5S

Sd T 1

oppure mettere davanti al timer un bit negato (che naturalmente non deve mai andare ad ON):

AN M100.0 //Bit sempre ad OFF

L S5T#5S

Sd T 1

Inserita:

ciao a tutti

prima che me ne dimentichi volevo fare gli auguri a tutti di buon natale e felice anno nuovo.....e ringraziarvi per avermi aiutato ad imparare qualcosa sui plc...io saro` in ferie fino all`otto cosi` per un po` non vi scoccero` con i miei strafalcioni :D

ciao e auguroni ancora

il rovo

Inserita:

cioa a tutti

mi potreste dire perche` non funziona niente di quello che scrivo...ho provato questo

SET

L S5T#5S

SD T 1

A T 1

= Q 0.1

R T 1

SET

L S5T#10S

SD T 1

A T 1

= q 0.0

cosi` non mi dovrebbe settare dopo il tempo t1 la porta 1 poi resettare t1 caricare l`altro tempo quindi settarmi

la porta 0?

invece mi abilita subito le due uscite e intanto parte il tempo

pensavo che il plc eseguisse le istruzioni sequenzialmente ma credo che non sia proprio cosi` e credo che forse non ho ancora capito bene come gestisce le uscite con gli ingressi

ciao e grazie ancora il rovo

Inserita:

mai e poi mai utilizzare lo stesso timer T più di una volta nello stesso programma.. mai!!!

poi non usare l'istruzione SET che ha ben poco senso usato così visto che un timer serve a ritardare qualcosa, questo qualcosa se non c'è che senso ha ritardare cosa?????

non ho capito cosa ho detto, ma il succo è che non ha senso usare l'istruzione SET per vviare un temporizzatore

un timer parte quando vede il passaggio del RLC da 0 a 1 non semplicemente con RLC =1 quindi per avviare un timer più volte devi sempre fare in modo che la condizione che lo ha avviato cada almeno per un ciclo di scansione.

Quindi per esempio se olessi generare un impulso ogni x tempo scriveresti

AN T1

L S5T#1S

SD T1

ogni secondo T1 è =1 ed al momento dell'istruzione AN T1 l'RLC =0 quindi T1 trona =0 l'RLC ripassa =1 e così il timer si riattiva all'infinito

tu hai scritto R T1 pensando di azzerare T1 e farlo ripartire? ma con quela istruzione l'RLC è sempre =1 e quindi non ottieni il risultato

per concludere nel tuo esempio devi usare sicuramente due timer T1 e T2 e come condizione di avvio dei timer metti qualsiasi cosa (in realtà non so che vuoi fare con le uscite)

per esempio vuoi accendere una lampada e poi l'altra e poi spegnerle e ricominciare?

AN T2

L S5T#5S

SD T1

A T1

= Q0.0

A T1

L S5T#10S

SD T2

oppure prima una lampada poi spegni e accendi l'altra e via così?

AN T2

L S5T#5S

SD T1

AN T1

= Q0.0

A T1

L S5T#10S

SD T2

A T1

= Q0.1

questi esmpi solo per riprendere i tuoi esempi

  • 3 weeks later...
Inserita:

ciao

intanto buon anno a tutti ...finito le ferie e da oggi si ricomincia

grazie rddiego per la tua risposta al mio ultimo mail....volevo chiederti io mi sono fatto spedire dalla siemens il software per simulare il plc solo che era free per 15 giorni...e siccome ormaI NE SONO PASSATI ANCHE TRENTA DALL`INSTALLAZIONE nel provare a lanciarlo mi chiede in continuazione che non riesce a trovare la chiave di licenza.....ma questa chiave e` possibile averla ancora per un po` di tempo o bisogna per forza comprae tutto il pacchetto software?

in questo momento mi ritrovo col programma non funzionante e non saprei proprio come fare per poterlo imparare ancora un po`

ti ringrazio anticipatamente

ciao

il rovo

Inserita:

ciao rddiego

non mi insultare ma non capiso una cosa nei tuoi esempi

il primo dice

AN T1

L S5T#1S

SD T1

quindi fai il negato di t1 carichi il tempo e con sd un tipo di impulso ....an t1 serve negarlo per cambiare il valore dell`rlc un po` come mi hai spiegato nei tuoi esempi?

AN T2

L S5T#5S

SD T1

A T1

= Q0.0

A T1

L S5T#10S

SD T2

in quest`altro esempio credo tu faccia la stessa cosa pero` non capisco perche` neghi t2 poi abiliti il tipo di impulso con t1 quindi and di t1 e porti l`uscita di t1 in q0.0 ma non dovresti portarci quello di t2 o comunque perche` qua usi due tipi di timer? sparo...per caso al posto di t2 volevi scrivere t1? nemmeno la parte del timer 10 sec mi e` molto chiara

AN T2

L S5T#5S

SD T1

AN T1

= Q0.0

A T1

L S5T#10S

SD T2

A T1

= Q0.1

stessa cosa per questo esempio....neghi t2 credo per cambiare quel famoso valore di rlc quindi carichi il valore 5 secondi ...sd tipo di impulso ...and di t1 quindi uscita du q0.0...il pezzo ancora sotto quello dei dieci secondi farebbe l`and di t1 ...poi non capisco perche` il ritaro dell`inserzione finisca su t2 e non su t1 e quindi uscita t1 su q0.1 ....sono una zucca vuota che per capire le cose mi ci vuole piu` tempo del normale ma spero che tu mi possa dare un aiutino

ti ringrazio anticipatamente

rovo

Inserita:

ciao a tutti

ho provato e riprovato a fare qualcosa con sto benedetto plc ma niente ...nemmeno una lampadina accesa e poi spenta dopo un po` di tempo...solo con gli esempi che mi ha gentilmante dato rddiego tutto funziona a meraviglia....non ho proprio idea di come funzioni questo arnese della malora...non ho nemmeno capito l`rlc...mi sa che non riusciro` a fare il lavoro che mi hanno dato in tempo...sono una zucca vuota....mi sono riletto e riletto alcune tesine sulla programmazione in awl ma non e` servito a niente...bo` io pero`continuo sperando che mi venga l`illuminazoione

ciao a tutti

il rovo

Inserita:

calma calma....

AN T1

L S5T#1S

SD T1

tradotto in parole: se il temporizzatore T1 non ha finito di contare , allora carica il tempo di 1 secondo al temporizzatore T1 e fallo partire.

cosa succede :

primo ciclo di scansione

((RLC =0))

- il temporizzatore T1 non ha finito di contare (non è neanche mai partito)

(( RLC = 1))

- carica 1 secondo a T1

- avvia T1

secondo ciclo di scansione

Gli altri due esempi sono identici solo che sono usati due temporizzatori T1 e T2 e sono legati tra loro in quel modo solo perchè vogliamo creare una sequenza tra di loro:

1- parte T1 (solo se non ha finito T2)

2- finisce T1 e quindi parte T2

3- finisce T2 e riparte il ciclo

Ti ricordo che l'istruzione di avvio di un temporizzatore è da fare una sola volta i tutto il programma cioè SD T1 può essere scritto solo una volta. Se hai bisogno di altri temporizzatori utilizzerai T2 - T3 .. Tn

- il temporizzatore T1 non ha finito di contare

(( RLC = 1))

- carica 1 secondo a T1

- NON avvia T1 perchè non c'è stato un passaggio da 0 a 1 dell'RLC (intanto sta contando)

n cicli di scansione uguali al secondo ciclo finchè non passa il tempo di un secondo caricato nel temporizzatore

- il temporizzatore T1 ha finito di contare (l'istruzione AN T1 è quindi falsa)

(( RLC = 0))

- carica 1 secondo a T1

- T1 viene arrestato e azzerato

successivo ciclo

- il temporizzatore T1 non ha finito di contare o non sta contando (l'istruzione AN T1 è quindi vera)

(( RLC = 1))

- carica 1 secondo a T1

- T1 viene avviato nuovamente

e così via all'infinito.............

Inserita:

scusa ho scritto delle frasi in mezzo....

calma calma....

AN T1

L S5T#1S

SD T1

tradotto in parole: se il temporizzatore T1 non ha finito di contare , allora carica il tempo di 1 secondo al temporizzatore T1 e fallo partire.

cosa succede :

primo ciclo di scansione

((RLC =0))

- il temporizzatore T1 non ha finito di contare (non è neanche mai partito)

(( RLC = 1))

- carica 1 secondo a T1

- avvia T1

secondo ciclo di scansione

- il temporizzatore T1 non ha finito di contare

(( RLC = 1))

- carica 1 secondo a T1

- NON avvia T1 perchè non c'è stato un passaggio da 0 a 1 dell'RLC (intanto sta contando)

n cicli di scansione uguali al secondo ciclo finchè non passa il tempo di un secondo caricato nel temporizzatore

- il temporizzatore T1 ha finito di contare (l'istruzione AN T1 è quindi falsa)

(( RLC = 0))

- carica 1 secondo a T1

- T1 viene arrestato e azzerato

successivo ciclo

- il temporizzatore T1 non ha finito di contare o non sta contando (l'istruzione AN T1 è quindi vera)

(( RLC = 1))

- carica 1 secondo a T1

- T1 viene avviato nuovamente

e così via all'infinito.............

Gli altri due esempi sono identici solo che sono usati due temporizzatori T1 e T2 e sono legati tra loro in quel modo solo perchè vogliamo creare una sequenza tra di loro:

1- parte T1 (solo se non ha finito T2)

2- finisce T1 e quindi parte T2

3- finisce T2 e riparte il ciclo

Ti ricordo che l'istruzione di avvio di un temporizzatore è da fare una sola volta i tutto il programma cioè SD T1 può essere scritto solo una volta. Se hai bisogno di altri temporizzatori utilizzerai T2 - T3 .. Tn

Inserita:

ciao rddiego

grazie mille mi sono stampato la tua risposta cosi` cerchero` di capire cosa mi sfugge

pensavo fosse un po` piu` semplice la cosa.... ma forse perche` sono ancora agli inizi... sperando in un futuro di riuscire a fare meglio

certo che sto rlc in questo caso ha una funzione importante ma scartabellando tra tutti i pdf scaricati anche quelli della siemens non viene quasi mai citato ...parlano di qualunque cosa tranne di sto bit...o forse dovrei cercarlo sotto qualche altro nome !!!!!

comunque grazie veramente non dico che ero disperato ma quasi

per ora ti riringrazio per la tua pazienza e disponibilita`]

ciao e grazie

il rovo

Inserita:

ma ascolta se tu vai nell'. e cerchi un temporizzatore qualunque per esempio S_EVERZ (TON) ti spiega molto chiaramente, anche con diagrammi temporali, come si comportano tutti i bit interessati, come si avvia, come si resetta eccetera.

Inserita:

ciao rddiego

non voglio farti perdere altro tempo...non mi e` molto chiaro la tua risposta ma provero` ancora...ho provato anche a cercare sull`halp quello che mi hai detto ma nessun temporizzatore con quel nome....non riesco proprio a capire il funzionamento del bit rlc...non ho per niente chiaro il concetto di istruzioni sequenziali ...avolte mi sembra che il programma faccia piu` cose in una volta sola ....bo` vedro` di trovare qualche altra documentazione in giro

ciao e grazie ancora

il rovo

ps quello che non riesco a capire tanto per cambiare e` che ho guardato sulle dispense scricate dalla siemens e del bit rlc ne parlano pochissimo si preoccupano di piu` sul cablaggio dell`hardware....forse danno per scontato che si abbia ben chiaro il suo funzionamento..ma a me e` piu` oscuro della notte =0)))

ri ciao

Inserita:

ciao rddiego

volevo chieerti una cosa ..l`ennesima

AN T2

L S5T#5S

SD T1

AN T1

= Q0.0

A T1

L S5T#10S

SD T2

A T1

= Q0.1

in questo esmpio quando io runno il programma la scansione del ciclo non si ferma per esempio al valore 5 secondi aspetta che passi questo tempo e poi prosegue con l`istruzione successiva ...cioe` quando fa la scansione la fa per tutto il programma...forse ora capisco perche` mi ritrovavo con due temporizzatori che andavano nello stesso momento...o con i bit uscita che si accendevo nello stesso istante

sono proprio dal principio...

ciao e grazie

Inserita:

non l'hai trovato??!!!

apri simatic manager

premi F1

visualizza il Sommario

la penultima voce (credo) è "Richiamo delle guide di riferimento .... "

scegli Descrizione del linguaggio AWL

ti si apre un'altra guida

visualizza Indice

cerca l'istruzione "SE"

et voilà.... tutto è spiegato benissimo

NB.

le istruzioni sono tutte in tedesco ma tu vedo che hai impostato la lingua di programmazione in inglese

Inserita:

AN T 2 negando t2 ottengo l`rlc che da 0 passa a 1

L S5T#5S quindi carica questo valore ...qui rlc sempre a1

SD T 1 tipo di ritardo in questo caso sull`accensione rlc sempre a1 e intanto il timer va avanti e anche la scansione che sel suo giro vede che non e` cambiato niente da prima ...giusto?

A T 1 and di t1 ma siccome il ritardo e` ancora a 0anche l`rlc lo sara`

= Q 0.0 uscita a zero come l`rlc

A T 1 con questa istruzione faccio l'and tra t1 e l`rlc ma tutti e due a zero quindi non carica ancora il valore e il t2 e` ancora fermo

L S5T#10S rlc ancora a zero

SD T 2 rlc ancora a zero

scansione dove accade qualcosa

AN T 2 rlc che da 0 passa a 1 come da prima istruzione

L S5T#5S rlc ancora a 1

SD T 1 finiti i cinque secondi fronte di salita quindi and tra il fronte di salita e t1 quindi 1 rlc sempre1

A T 1 anche qui rlc sempre a 1

= Q 0.0 idem come sopra

A T 1 and tra rlc che e` a 1 e t1 che e` a 1

L S5T#10S carica il valore in t2 rlc a 1

SD T 2 quindi qui impulso ritardato sull`accensione quindi avro` 0 prima che passino i 10 secondi e intanto le scansioni vanno avanti e rlc a 1 quindi negato sd t2 con negato di t2 ho in uscita 0 rlc va a 0 al momento del fronte di salita ho 1 su sd t2 e negato di an t2 che e` 1 quindi nuovamente rlc a 1 e il programma gira all`infinito

so che non e` totalmente giusto ma spero di aver capito qualcosa

ciao e grazie ancora

il rovo

Inserita:

ciao a tutti

niente ...credo che a sto punto mi rassegnero`...non riesco a fare proprio nulla con il plc ...nemmeno accendere e spegnere una lampadina....non riesco proprio a capire come ragiona sta scatoletta....il bit rlc mi fa le pernacchie ...i bit di uscita si abilitano quando non dovrebbero...be` non male e` circa un mese che ci sto studiando otto ore al giorno e i risultati praticamene nulli...

ciao a tutti

il rovo

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...