Vai al contenuto
PLC Forum


Variabili temporanee


Crystal1995

Messaggi consigliati

Buongiorno a tutti, avrei qualche dubbio sul comportamento delle variabili temporanee.

image.png.34d683665a46e34de193344d46b069b4.png

 

La variabile #tmpMassimoRilevatoAltezza è scritta dall'FC "24 calcolo massimo", subito dopo entro in un altro FC che esegue altri calcoli. Dopodichè vado a rileggere la variabile temp #tmpMassimoRilevatoAltezza. La mia domanda è, la variabile #tmpMassimoRilevatoAltezza dopo l'uscita dal blocco "24 calcolo min-max soglie" sarà uguale a quando è stata scritta dal blocco "24 calcolo massimo" oppure viene sporcata dal blocco  "24 calcolo min-max soglie"?

 

Grazie

Link al commento
Condividi su altri siti


Perché dovrebbe venire sporcata dal richiamo dell'altra funzione?
#tmpMassimoRilevatoAltezza è una variabile locale della funzione che richiama le altre due funzioni. Fino a quando non esci da questo blocco, le variabili locali non vengono alterate da altri blocchi. Le funzioni "24 Calcolo Massimo" e "24 Calcolo min-max soglie" hanno le loro variabili locali, che sono completamente indipendenti dalle variabili locali della funzione dalla quale vengono richiamate.

 

Domanda: perché l'AWL?
Per quanto io sia affezionato a questo linguaggio, e per quanto, in alcuni casi, offra ancora vantaggi, è un linguaggio che, oggi, viene trascurato dalla stessa Siemens.
Usare AWL con il TIA ha senso solo se stai lavorando su un programma migrato da una precedente versione, e scritto in AWL.
Ma fare cose nuove in AWL, è anacronistico.

Link al commento
Condividi su altri siti

Pensavo che entrando in un altro blocco venissero sovrascritte. Ti ringrazio

Per quanto riguarda AWL, la mia azienda come standard attualmente ha come linguaggio di programmazione AWL.

 

Cordiali saluti

Link al commento
Condividi su altri siti

3 ore fa, Crystal1995 scrisse:

Per quanto riguarda AWL, la mia azienda come standard attualmente ha come linguaggio di programmazione AWL.

Dì loro che è ora di guardare avanti, se non si vuole rimanere indietro.
Purtroppo, molte aziende sono restie ai cambiamenti. Vedono i cambiamenti come un costo. E, in parte, lo sono, ma permettono anche di migliorare la produttività quindi, più che costi, sarebbe corretto chiamarli investimenti. Tra l'altro, il conto da pagare, in futuro, se non ci si evolve, sarà più salato.
Il linguaggio testuale che, oggi, tutti i brand stanno spingendo, è il "testo strutturato".
A mio avviso, oggi, i programmi devono essere un mix bilanciato tra ladder e testo strutturato.
Con il TIA c'è anche la grande comodità di poter inserire segmenti in testo strutturato all'interno di blocchi in ladder.

Link al commento
Condividi su altri siti

le variabili temporanee hanno senso solo all'interno di un blocco e non sono nè statiche e men che meno ritentive.

Vengono aggiornate ad ogni richiamo del blocco che le usa. 

AWL come linguaggio standard è una fissa da dementi e ci sonotante aziende che ancora credono in questa porcheria

AWL si usa per scrivere librerie sui device driver, ossia librerie a diretto contatto con inverter, drives , encoder etc finchè questo ha un senso.

Con le ultime versioni di TIA ha ancora meno senso.

Poi voglio vederti quando lavori su tabelle indicizzate o far di calcolo .......la tua azienda avrà sicuramente un grande turn over di gente che arriva e che se ne va entro 2 mesi con un grande costo fisso, scarsa manutenibilità ed impianti fermi.

Poi magari quelli che pretendono AWL non mettono nemmeno le mani al software....solita situazione fallimentare all'italiana....poveracci ..... 

 

Link al commento
Condividi su altri siti

Personalmento AWL va bene solo per le istruzioni  CALL, perchè quando i parametri di I/O sono molti si vedono tutti, per il resto bisogna cambiare modo di programmare, iniziare a utilizzare array e strutture nei DB.

Link al commento
Condividi su altri siti

1 ora fa, STEU scrisse:

Personalmento AWL va bene solo per le istruzioni  CALL

AWL, in realtà, andrebbe ancora bene anche in altri casi. Se volete, vi posso fare parecchi esempi dove l'AWL si presta molto bene.
Ma la tendenza è quella di un futuro abbandono, o di un uso sempre più limitato.
Io, nei miei programmi nuovi, non lo uso più.

 

Link al commento
Condividi su altri siti

5 ore fa, STEU scrisse:

anche per costruirsi puntatori any indicizzati

Non solo per i puntatori che, con quanto messo a disposizione nelle CPU 1200/1500, il loro uso è necessario solo in casi molto rari.
Ma ci sono altri casi nei quali il codice AWL è molto efficiente. Per esempio, in un calcolo, usando gli accumulatori, in AWL si possono risparmiare parecchi passaggi.
Ma anche un semplice set/reset, in AWL è più comodo che in testo strutturato:
 

// Testo strutturato
IF bool_1 THEN
	bool_2 := TRUE;
END_IF;

// AWL
A bool_1
S bool_2

Per non parlare di un fronte di salita:

// Testo strutturato
os := bool_1 AND xos;
xos := NOT bool_1;

// AWL
A bool_1
FP xos
= os

 

Poi, nella maggior parte dei casi, il testo strutturato è più comodo, più flessibile e più leggibile, quindi, se devo scegliere tra i due, non c'è storia.

Link al commento
Condividi su altri siti

io la maggior parte delle logiche le scrivo in ladder. Poi per tabelle, calcoli  , missioni etc uso SCL. I merker uso solo quelli obbligatori di clock .Il resto sono DB divise in cartelle insieme ai loro FC per ogni singola macchina o parti di essa.

AWL lo uso per le librerie su inverter e drives Sew per esempio, o calcoli per encoder etc. Una volta testati non li guardo più.

Fare tutto in SCL no, non lo farò mai, durante il debug e ilcollaudo mi piace entrare e vedere subito quello che manca, cosa ci vuole ,velocemente con ladder. 

 

Link al commento
Condividi su altri siti

in TIA posso anche scrivere 10 segmenti in ladder  e l'undicesimo in SCL o AWL a seconda di quello che devo fare. Soprattutto per contenere il codice quando hai tanti move, calcoli o aggiornamenti da fare 

 

Link al commento
Condividi su altri siti

Ragazzi io non ho detto che utilizzo soltanto AWL. Per le macchine a stati e stazioni macchina utilizziamo AWL e sinceramente ci troviamo molto bene tutti anche come diagnostica.

 

Per quanto riguarda la necessità di utilizzare tabelle array puntatori ecc, faccio tutto il SCL perchè ovviamente più comodo e veloce.

Link al commento
Condividi su altri siti

1 ora fa, Crystal1995 scrisse:

Ragazzi io non ho detto che utilizzo soltanto AWL

Sì, ma il problema è che, bene o male che sia, prima o poi AWL verrà accantonato dalla stessa Siemens. E, dato che ciò che si fa in AWL si può fare anche in testo strutturato, preferisco non usare AWL. I miei programmi sono un misto di ladder e strutturato.
E considera che con AWL mi sono sempre trovato a mio agio. C'è chi sostiene che sia difficile. Io sostengo che, almeno sotto certi aspetti, sia il più facile di tuttI: esegui, riga per riga, le istruzioni che ci sono scritte.

 

Link al commento
Condividi su altri siti

Personalmente con AWL mi trovo benissimo,sarà perché ho iniziato a programmare con questo.

se però devo pensare di scrivere macchine a stati in KOP mi viene da piangere, ci si mette il triplo secondo il mio parere.

con SCL si può fare in maniera migliore rispetto a AWL probabilmente e ho avuto anche modo di provare ma la diagnostica di AWL a parer mio è migliore. Tra l’altro SCL non mi piace il fatto che teoricamente non prevede i segmenti che poi si possa ovviare alla cosa creando blocchi KOP ok però non hai a disposizione tutte le funzioni che si hanno creando il blocco in SCL

Link al commento
Condividi su altri siti

1 ora fa, Crystal1995 scrisse:

Tra l’altro SCL non mi piace il fatto che teoricamente non prevede i segmenti

Puoi usare REGION.

Link al commento
Condividi su altri siti

SCL lo uso dal 2001, era un pacchetto a parte per Step7. Uso Ladder ed SCL da anni. Qualche libreria o driver in AWL lo faccio ancora.

Ho lavorato anche con aziende che usano solo awl per qualsiasi cosa,macchine a stati etc. dove ci sono 8000 salti in ogni segmento.

Poi quando non va nulla allora sistemo a modo mio. Molti programmatori sostengono che awl sia il principe dei linguaggi siemens, stupidate. E' gente vecchia nello spirito che non ha voglia di capire, cambiare e migliorarsi e soprattutto concedere. Sono malati mentali con la fissa. Quando poi se vogliamo dirla tutta essendo il plc di derivazione elettromeccanica dovrebbe essere il ladder a predominare.Inserimenti, estrazioni, calcoli su tabelle ormai non ha più nessun senso farli in awl.e perdere giornate con puntatori e vaccate varie.

 

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