Vai al contenuto
PLC Forum


Realizzare in AWL un contatore di un fronte di Salita


Messaggi consigliati

Inserito:

Salve, sono un novellino riguardo il linguaggio AWL, poiché sto cercando piano piano di impararlo;

volevo realizzare in AWL un contatore che mi contasse la variazione di stato logico (0,1) di un RLC sul fronte di salita;

chiunque abbia consigli su come realizzarlo scriva qua; grazie in anticipo a tutti.


Inserita:

U E 0.0 // ingresso da testare

FP M 0.0// aux fronte di salita

= M 0.1 // fronte di salita

 

a questo punto dove vuoi tu nel programma .......

UN M 0.1

SPZ END

L MW100

I 1

T MW100

END:NOP 0

Inserita:

Ti ringrazio già per la risposta, ma potresti spiegarmi passo passo le funzioni che hai applicato nel programma?

Essendo alle prime armi non e' tutto comprensibile per me... 

Inserita:

Spero che non intendi per S5 che è un po'diverso...

Inserita:
1 ora fa, pigroplc scrisse:

UN M 0.1

SPZ END

L MW100

I 1

T MW100

END:NOP 0

Premetto che uso il mnemonico tedesco, ma " I 1 " esiste?

Intendevi forse " + 1 " ?

 

Un alternativa potrebbe essere @nicco5858

U E0.0			// Controllo l'ingresso E0.0
FP M0.0			// Fronte di salita quando E0.0 = 1
SPBN END		// Se non ho il fronte, salto all'etichetta END
L MW10			// Carico la mword 10
+ 1			// Sommo 1 al contenuto di MW10
T MW10			// Trasferisco il risultato in MW10
END: NOP 0		// Etichetta di salto

 

Inserita:
14 ore fa, DesmoGiec scrisse:

Intendevi forse " + 1 " ?

eh si,

ho l'AWL arruginito ultimamente e non avevo tempo di provare......

Inserita:

Buongiorno, attualmente si' sto utilizzando un S5; c'e' molta differenza

fra quanto avete scritto fino ad ora ed un programma per S5?

Grazie a tutti!

Inserita:

Non sollecitare, specialmente dopo 5 ore!

Inserita:

La differenza è che in S5 non esiste l'istruzione per rilevare il fronte di salita, e dovrai quindi fartela tu, usando un merker di appoggio.
Il resto rimane uguale.

Inserita:

In S5 non esiste neanche l'istruzione SPBN, ma solo SPB (salti se la condizione è vera).

Ciao.

Inserita:

@batta Potresti darmi maggiori delucidazioni? 

Nel senso, se hai tempo, potresti postare il programma o anche solamente un pezzetto, dove mi commenti le funzioni?

Grazie già' per le risposte. Buona giornata a tutti!

Inserita:

Mi piacerebbe avere qualche altro intervento;

Grazie,

buona serata.

Inserita:
U "Segnale"			// Questo è il merker del quale vuoi rilevare il fronte di salita
U "AuxFronteSalita"		// Questo è un merker di appoggio per rilevare il fronte di salita.
				// In pratica, è ON se nella precedente scansione "Segnale" era OFF
= "FronteSalita"		// Questo merker rimane alto per una scansione quando "Segnale" passa da OFF a ON

UN "Segnale"			// In queste due righe imposto lo stato del merker di appoggio per
= "AuxFronteSalita"		// il rilevamento del fronte di salita

UN "FronteSalita"		// Se NON ho il fronte di salita, salto all'etichetta _000
SPB _000			// Le istruzioni seguenti vengono elaborate solo se "FronteSalita" è ON (non ho fatto il salto)
L "MiaVar"			// Carico il valore attuale della variabile da incrementare
L 1				// Carico il valore dell'incremento
+I				// Sommo i due valori
T "MiaVar"			// Scrivo il risultato dell'operazione nella variabile da incrementare, che aasume così il nuovo valore
_000: NOP 0

 

Inserita:

Ciao, buongiorno,

Volevo chiederti una cosa riguardo al programma sul fronte di salita che hai postato;

volevo sapere se il merker di cui voglio rilevare il fronte di salita, deve esser indicato come Input(E) oppure no;

se hai altri consigli per me scrivimi pure.

Grazie

 

Inserita:

È indifferente, vale per qualsiasi variabile booleana.
Può essere un ingresso, una uscita, un merker, un bit di un DB.

Inserita:

Ultima cosa... Potresti farmi un esempio

con degli indirizzi applicati al programma che hai postato?

 

Ti ringrazio molto per la tua disponibilità.

Inserita:

Scusami, un'altra domanda...Cosa ci va inserito in "FronteSalita"?

Inserita:

Se posso essere utile... questo riporta il manuale Siemens

Ciao

 

Siemens.jpg

Inserita:

Se posso permettermi..

Non sei un novellino in awl, ti mancano proprio le basi in generale.

Fossi in te cercherei prima di studiare gli elementi che compongono un programma, per poi capire come strutturare un programma.

 

2 ore fa, nicco5858 scrisse:

Scusami, un'altra domanda...Cosa ci va inserito in "FronteSalita"?

 

Questo che sia awl fup kop è indifferente, devi usare un bit di un merker (o se proprio vuoi, il bit di una db)

Inserita:

@DesmoGiec Gli elementi che compongono un programma, come dici te, me li sono un po' visti,

ma il problema e' che trovando pochissimi esempi ed avendo un' esperienza in AWL pari a zero risulta difficile

per me interpretare tali programmi.

@pt1957Ti ringrazio

Inserita:

Quello che intendo dire..

Chiedi cosa bisogna mettere in "frontesalita", ma non è una cosa che riguarda l'awl, è una nozione generale di programmazione.

Devi prima capire cosa sono merker, db e simili prima di poter capire come/dove/quando usarli.

Ciao! :)

 

Inserita:

Ok grazie, comunque @batta se puoi postare quello che ti ho chiesto sopra mi faresti

un gran piacere.

Inserita:

U  E 0.0        // Questo è il merker del quale vuoi rilevare il fronte di salita
U  M 0.0"        // Questo è un merker di appoggio per rilevare il fronte di salita.
                    // In pratica, è ON se nella precedente scansione "Segnale" era OFF
=  M 0.1        // Questo merker rimane alto per una scansione quando "Segnale" passa da OFF a ON

UN E 0.0        // In queste due righe imposto lo stato del merker di appoggio per
=  M 0.0        // il rilevamento del fronte di salita

UN M 0.1        // Se NON ho il fronte di salita, salto all'etichetta _000
SPB _000        // Le istruzioni seguenti vengono elaborate solo se "FronteSalita" è ON (non ho fatto il salto)
L MW 50            // Carico il valore attuale della variabile da incrementare
L 1                 // Carico il valore dell'incremento
+I                   // Sommo i due valori
T MW 50           // Scrivo il risultato dell'operazione nella variabile da incrementare, che aasume così il nuovo valore
_000: NOP 0

Inserita:

Scusate se faccio il pignolo ma, visto che le basi di nicco5858 mi sembrano praticamente nulle, volevo fare una piccola correzione: nell'AWL di S5 la somma di due interi non è +I ma +F.

Ciao.

 

Massimo

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