Vai al contenuto
PLC Forum


Linguaggio Awl, Area Memoria E Parola Di Stato ?


kamastep

Messaggi consigliati


Area di memoria è...l'area di memoria. Non esiste altra definizione. Se tu dedichi, ad esempio, la memoria che va dall'indirizzo 100 all'indirizzo 120 ad un a specifica funzione, avrai definito un'area di memoria.

la parola di stato è la parola del processore che contiene i vari flags di stato.

Vediamo di chiarire, se possibile, con alcuni esempi.

Solitamente nella parola di stato c'è il bit che indica "<" o ">", il bit che indica "=", il bit che indica se l'operazione di confronto precedente ha dato risultato vero, etc.

Le operazioni logiche danno come risultato anche unsegno di vero o falso.

Nel caso in oggetto è spèesso utile sapere se il risultato è "0" o >0.

Io non conosco quali siano le tue conoscenze, ma le domande che hai fatto sono relative a nozioni fondamentali della logica booleana e della programmzione; indipendentemente dal dispositivo e dal linguaggio che si usa.

E' fondamentale, prima di passare a programmare qaulche cosa, avere fondamentali solidi. Purtroppo la scien za non ammette salti, se le cose non si sanno vanno studiate e se si cercano scorciatoie prima o poi si pagano, ed anche piuttosto salato. Credi di risparmiare tempo subito, ma allla fine ne sprechi molto di più.

Link al commento
Condividi su altri siti

io come linguaggio AWL sono a 0. Il KOP so usare a livello scolastico (sempre usato a scuola per 2 anni interi). A un posto di lavoro mi hanno chiesto di imparare AWL e poi mi assumono. Visto che non c'è tanto lavoro perchè non studiare AWL. Avevo trovato un manuale della siemens intitolato SIMATIC AWL PER S7-300/400. E che spiega AWL dall'inizio penso. E' grosso ma voglio studiarlo. Nelle prime pagine spiega i simboli (U, OR, X, U(, FN, NOT, etc...) e poi uno alla volta se vedi link spiega ogni cosa e c'erano queste due voci che non ho comprese.
Quindi dalle tue definizioni guardando immagini quello che ho capito è che AREA DI MEMORIA con cui posso assegnare U sono EAMLDTZ... altre lettere non posso usare. giusto?

PAROLA DI STATO non ho ancora capito.

Link al commento
Condividi su altri siti

Per la specifica area di memoria non mi pronuncio, perchè sono anni che non uso più PLC ed i ricordi son nebulosi; non vorrei darti informazioni errate. Però i manuali Hw, anche quelli Siemens in italiano, son o abbastanza chiari e precisi al riguardo.

Per la parola di stato.

E' quello che ho cercato di spiegarti con la chiosa finale.

Non c'entra nulla con il linguaggio AWL, o KOP, o "C".

La parola di stato è un registor del processore che contiene i bits di stato del processore stesso.

Questi bits sono influenzati dall'esito della precedente operazione.

Se fai una comparazione e decidi di eseguire una determinata operazione in funzione dell'esito della com parazione, che tu lo veda o meno il processore eseguirà un salto condizionato ad un certo in dirizzo. La condizione del salto è determinata dai bits di stato.

Vediamo di esemplificare.

Hai due dat A e B.

Effettui una comparazione tra A e B.

Se A > B esegui una certa funzione.

Se A = B esegui un'altra funzione.

Ae A < B continui con il programma corrente.

Dopo aver eseguito l'operazione di confronto nel regstro di stato (Parola di Stato) i bits di stato "<", "=" e ">" avranno valore zero o valore uno. Avrà valore unio quello corrispondente alla verità e zero gli altri due. Il codice macchina, che tu non vedi perchè programmi a livello più alto, eseguirà u salto, o una chiamata a sub, condizionato nel caso in cui A>b o A=B e nessun salto se A>B.

Se esegui un'operazione AND tra due variabili il bit di stato che indica 0, sarà alto (1), se l'operazione di and da come risultato zero, altrimenti sarà alto il bit che indica maggiore di zero.

Se, ad esempio, tu hai i,l dato A e il dato B e vuoi conoscere se ci sono almeno 2 bits uguali che contegono un "1" . Esegui l'operazione di And e verifichi il bits di stato ">0", se è a "1" la condizione è verificata.

Ad esempio. Due bytes: 00011000 e 10000001, non soddisfano la condizione, mentre 10000000 e 10000001 soddisfano la condizione.

Come ti scriveo prima, queste cose sono i fondamentali della logica bolleana. Qualunque sia il linguaggio usato, KOP, AWL o altro non si può non conoscere queste informazioni. E' come voler studiare trigonometria senza avere le nozioni della geometria piana fondamentale.

Link al commento
Condividi su altri siti

Quindi dalle tue definizioni guardando immagini quello che ho capito è che AREA DI MEMORIA con cui posso assegnare U sono EAMLDTZ... altre lettere non posso usare. giusto?

Le lettere EAMLDTZ indicano le seguenti aree di memoria:

E: area di memoria degli ingressi

A: area di memoria delle uscite

M: area di memoria dei merker

L: area di memoria dei dati locali

D: area di memoria dei blocchi dati

T: area di memoria dei timer

Z: area di memoria dei contatori

PAROLA DI STATO non ho ancora capito.

La risposta di Livio è perfetta.

Solo per entrare nello specifico del PLC S7-300 e relativamente all'istruzione "U" (AND tra variabili booleane), quello che interessa di più della parola di stato è il bit 1 RLC.

RLC è il risultato logico delle operazioni booleane. Ma per interrogare lo stato di RLC non devi fare nulla.

Nel caso dell'esempio del manuale, scrivendo

U E1.0

U E1.1

= A4.0

Subito prima dell'istruzione = A4.0, RLC sarà il risultato logico dell' AND tra E1.0 ed E1.1.

Con l'istruzione = A4.0 lo stato di RLC viene assegnato ad A4.0

Alcuni bit della parola di stato si possono interrogare direttamente (per esempio scrivendo U BIE, U OV, U OS), mentre altri, come RLC, si utilizzano come sopra.

Per esempio, una comparazione influenza i bit di stato A1 ed A0.

I bit A1 ed A0 assumono valore diverso secondo il contenuto dei due accumulatori messi a confronto.

Ma per controllare l'esito di una comparazione non devi interrogare A1 ed A0, ma solo RLC.

Se il risultato della comparazione è vero, RLC assume valore 1; se è falso, RLC assume valore 0.

Se devo confrontare due numeri scrivo:

L DB1.DBW0

L DB1.DBW2

>I

= M10.0

Se DB1.DBW0 è maggiore di DB1.DBW2 M10.0 assume valore TRUE, altrimenti M10.0 assume valore FALSE.

Ogni operazione influenza alcuni bit di stato. Per sapere quali e come, basta posizionare il cursore sull'operazione e premere F1.

Quando si fanno calcoli per esempio, a meno che non si sia assolutamente certi della validità del risultato, è bene interrogare i bit di stato OV oppure OS.

Per esempio, se divido un numero per zero il bit OV viene posto = 1.

Interrogando il bit OV posso sapere se il risultato della divisione è valido oppure no.

Link al commento
Condividi su altri siti

Non ho ancora capito del tutto ma poco alla volta una parola alla volta sto capendo qualcosa. E cosa sono BIE, A1, A0, OV, OS, OR , STA, /ER . RLC è il risultato logico combinatorio ottenuto dalle operazioni a bit. . E perchè quelle X sotto OR STA RLC ?
Non c'è online qualcosa che spieghi queste cose partendo zero se possibile ?

Modificato: da kamastep
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...