Vai al contenuto
PLC Forum


Bit Di Sistema ... Esistono ?


TRC

Messaggi consigliati

Buon giorno a tutti, esistono i bit di stato nei plc AB

Come faccio a fare una serie di blinker a

0,1 - 0,3 - 0,5 - 1 - 3 - 5 -10 secondi, devo sprecare una task a interrupt e costruire il programma o esiste qualcosa di già pronto ?

Esistono i bit SEMPRE ON - SEMPRE OFF - PRIMA SCANSIONE ecc. ecc. ? Grazie

Link al commento
Condividi su altri siti


Se ti riferisci ai controllori della famiglia Logix (ControlLogix, CompactLogix e FlexLogix),

Per i Blinker devi farli tu.

Non credo che ci sia bisogno di sprecare una task a interrupt di tempo, basta usare dei banalissimi Timer. (ovviamente dipende dall'uso che ne devi fare).

Per alcuni bit di sistema esistono i seguenti Flag: (Copiato dalla guida in linea di RSLOGIX5000)

----------------------------------------------------------------------

S:FS

First Scan flag

The first scan flag is set by the controller on the first scan of the routines in this program. This flag can only be used with the XIC and XIO instructions. You could use this flag to initialize data for use in later scans.

S:N

Negative flag

The controller sets the negative flag when the result of an arithmetic or logical operation is a negative value. This flag can only be used with the XIC, XIO, OTE, OTL and OTU instructions. You could use this flag as a quick test for a negative value. Using S:N is more efficient than using the CMP instruction.

S:Z

Zero flag

The zero flag is set by the controller when the result of an arithmetic or logical operation is zero. This flag can only be used with the XIC, XIO, OTE, OTL and OTU instructions. You could use this flag as a quick test for a zero value. Using S:Z is more efficient than using the CMP instruction.

S:V

Overflow flag

The controller sets the overflow flag when the result of an arithmetic operation resulted in an overflow. This flag can only be used with the XIC, XIO, OTE, OTL and OTU instructions. You could use this flag to check that the result of an operation is still in range. For example, adding 1 to a SINT will generate an overflow when the value goes from 127 to 128.

Note: Setting the overflow flag causes the controller to generate a minor fault.

S:C

Carry flag

The controller sets the carry flag when the result of an arithmetic operation resulted in the generation of a carry out of the most significant bit. This flag can only be used with the XIC, XIO, OTE and OTL instructions. You could use this flag for performing 64-bit integer math operations.

S:MINOR

Minor Fault flag

The controller sets the minor fault flag when there is at least one minor program fault. This flag can only be used with the XIC, XIO, OTE, OTL and OTU instructions. You could use this flag to test that a minor fault has occurred and take appropriate action.

--------------------------------------------------------

Per il resto per leggere altre informazioni di stato bisogna usare l'istruzione (GSV - GetSystemValue)

Il Bit di Sempre ON se vuoi puoi realizzarlo tu oppure potrebbe non servirti in quanto in Logix 5000 le Rung possono anche iniziare senza un contatto.

Il Bit di Sempre OFF se vuoi puoi realizzarlo tu oppure puoi usare ---[AFI]--- (Always False) da anteporre a un ramo per bloccarne l'esecuzione.

Ciao..

Link al commento
Condividi su altri siti

Grazie per la risposta, fare il blinker col timer, significa che prendo il tempo corrente, lo utilizzo in binario e dai bit del valore ricavo i blinker ?

Link al commento
Condividi su altri siti

mamic disse

Per i Blinker devi farli tu.

io risposi

Ma per il blink utilizzi due timer TON in cascata ed il gioco è fatto !

e tu replicasti

beh due timer in cascata per fare un blink, io vorrei farne 10 diversi con un timer

Se fossero con basi tempo multiple 0,1 - 0,2 - 0,4 - 0,8 - qualcosa mi viene in mente... con dei flag e 2 timer...

altrimenti se vuoi proprio quei tempi che hai indicato ( che mi sembra di ricordare di aver già visto <_< ) se trovi una soluzione furba fammi sapere che prendo spunto !

Link al commento
Condividi su altri siti

Per fare più blinker con un timer bisogna prendere il tempo corrente, ipotizziamo un timer da 0 a 1 secondo e con risoluzione 1 decimo, prendi i singoli bit del valore che cambiano stato in funzione del tempo, quindi il primo bit cambia ogni decimo da 0 a 1 (blinker 2 decimi) il secondo ogni 2 decimi ecc ecc

-----]time.0[------[ONS]-------- (L)blink 4 decimi e (U)blink 4 decimi

-----]time.0[---[time.1[------(L)blink 6 decimi e (U) blink 6 decimi

-----ecc eccc. più la divisione del tempo è piccola e più si potranno fare combinazioni

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