Vai al contenuto
PLC Forum


Shift Register Singolo Bit


marchinoktm

Messaggi consigliati

Buona sera a tutti 

 

Vi chiedo un consiglio per fare un Shift register di un singolo bit in una variabile di tipo Word di una DB generale 

Ho provato ad utilizzare la funzione SHL , ma questa lavora solo in word .

 

Quello che vorrei fare io deve avere la seguente sequenza :

  1. Sul Fronte di salita dell'evento Set a true il primo Bit della mia word 
  2. sul un altro evento attivo lo spostamento a sinistra della mia Word 

 

Se ad esempio ho la seguente condizione di partenza 

  • Word = 0000,0000,0000,0011

al fronte di salita del punto 2 deve diventare 

  • Word = 0000,0000,0000,0110

al fronte di salita del punto 1 deve diventare 

  • Word = 0000,0000,0000,0111

 

Grazie mille 

 

 

Link al commento
Condividi su altri siti


26 minuti fa, leleviola ha scritto:

scusa ma perchè parli di un di shift register e poi fai un Set? Scusa la mia dura cervice ma non capisco

Starà facendo una qualche macchina a passi, ad ogni passo shifta, e quando un qualche dispositivo esterno posa un nuovo pezzo, setta il primo bit (credo).

 

Comunque il punto 1 lo risolvi usando l'istruzione SHL (non capisco cosa non ti funziona),

il punto 2 lo risolvi semplicemente usando un fronte e una bobina di -(S) sulla <word>.%X0

 

In ogni caso, se effettivamente lo shift register lo usi per fare una macchina a passi e in più su una 1500, io da informatico, ti direi di lasciar perdere lo shift register e provare a farlo con un array, ti viene più semplice spostare i dati in avanti e anche ad inserirne di nuovi.

 

Modificato: da il toby
Link al commento
Condividi su altri siti

Se il problema è che SHL lavora a word e tu devi shift are una doppia word devi fare l"operazione in 2 step, fai lo shift della seconda word, copi l 'ultimo bit della prima word nel primo della seconda word e shifti la prima word. 

 

Link al commento
Condividi su altri siti

14 ore fa, leleviola ha scritto:

scusa ma perchè parli di un di shift register e poi fai un Set? Scusa la mia dura cervice ma non capisco

Leleviola perche devo fare una macchina a passi e quando si attiva un passo deve tenere traccia del passo attivato 

Link al commento
Condividi su altri siti

14 ore fa, il toby ha scritto:

Starà facendo una qualche macchina a passi, ad ogni passo shifta, e quando un qualche dispositivo esterno posa un nuovo pezzo, setta il primo bit (credo).

 

Comunque il punto 1 lo risolvi usando l'istruzione SHL (non capisco cosa non ti funziona),

il punto 2 lo risolvi semplicemente usando un fronte e una bobina di -(S) sulla <word>.%X0

 

In ogni caso, se effettivamente lo shift register lo usi per fare una macchina a passi e in più su una 1500, io da informatico, ti direi di lasciar perdere lo shift register e provare a farlo con un array, ti viene più semplice spostare i dati in avanti e anche ad inserirne di nuovi.

 

Grazie Mille Toby non sapevo come fare il set della word in ingresso alla funzione SHL <word>.%x0, sai non conoscendo appieno il mondo Siemens a volte alcune istruzioni mi sono ignote.si comunque cmi ero gia messo avanti usando un array   

1 ora fa, acquaman ha scritto:

SHL non lavora solo in word, ma con qualunque formato, anche la DWORD.

Cattura.thumb.JPG.8e7bd0ddadf9d842316214aaf471231a.JPG

Grazie mille come sempre acquaman.... non sapevo come settare il primo bit della Word in ingresso, ma adesso ho capito  

Link al commento
Condividi su altri siti

2 ore fa, marchinoktm ha scritto:

Leleviola perche devo fare una macchina a passi e quando si attiva un passo deve tenere traccia del passo attivato 

che dovevi fare una macchina a passi l'avevo capito ma cosa centra la banale istruzione SET con uno shift register? Mi sembra siano due istruzioni ben distinte una la base elementare dell'algebra booleiana l'altra un po' più evoluta ma che svolge tutt altro quindi prima di porre domande banali forse meglio pensare un po' di più a cosa si scrive perchè spesso si leggono domande che per essere interpretate o capite non si capisce perchè vengono poste, tutto qua

Link al commento
Condividi su altri siti

3 ore fa, marchinoktm ha scritto:

Grazie Mille Toby non sapevo come fare il set della word in ingresso alla funzione SHL <word>.%x0

Non ha nulla a che fare con l'istruzione SHL.
La sintassi "NomeVariabile.%Xnnn serve per accedere ai singoli bit di una variabile, sia in lettura, sia in scrittura.
È una sintassi che non fa parte solo del mondo Siemens.
E vale anche per l'accesso ai byte (.%Bnnn) o, per variabili a 32 o 64 bit, .%Wnnn, .%Dnnn.

 

SHL, inoltre, lavora anche con variabili a 64 bit (LWord, LInt, ULInt), quindi, meccanismi per passare il bit in uscita da una variabile in ingresso alla variabile successiva, serve solo se si va oltre i 64 bit.

Si può usare in ladder e in testo strutturato.

 

Questo per quanto riguarda, in linea generale, la manipolazione delle variabili.

 

Se lo shift lo usi per l'avanzamento dei passi di un ciclo, come già detto da Toby, ci sono metodi migliori, e che ti permettono di commentare ogni singolo bit del ciclo, con grande vantaggio per la leggibilità del programma.

Sul forum se ne è discusso più volte.

 

 

 

Link al commento
Condividi su altri siti

23 ore fa, leleviola ha scritto:

che dovevi fare una macchina a passi l'avevo capito ma cosa centra la banale istruzione SET con uno shift register? Mi sembra siano due istruzioni ben distinte una la base elementare dell'algebra booleiana l'altra un po' più evoluta ma che svolge tutt altro quindi prima di porre domande banali forse meglio pensare un po' di più a cosa si scrive perchè spesso si leggono domande che per essere interpretate o capite non si capisce perchè vengono poste, tutto qua

Leleviola :

1) io prima di scrivere penso

2) sarà anche banale per te ma nel mio caso no ; il mio livello di programmazione  è molto basico. 

3)se reputi che la mia domanda fosse fuori luogo o espressa male potevi semplicemente bypassare il mio messaggio 

 

Avendo sempre utilizzato PLC italiani(elco elettronica) e non grandi marche blasonate (siemens , rockwell ecc,ecc,) ho semplicemente cercato di adattare il mio sapere e le mie abitudini , su un mondo nuovo cioè quello della programmazione con Tia Portal. 

Per come era abituato io, per fare un shift register dovevo sempre passare dal settaggio del primo bit (della Word) e poi attivare lo shift register che muoveva fisicamente i bit nella Word . tutto qua 

Link al commento
Condividi su altri siti

21 ore fa, batta ha scritto:

Non ha nulla a che fare con l'istruzione SHL.
La sintassi "NomeVariabile.%Xnnn serve per accedere ai singoli bit di una variabile, sia in lettura, sia in scrittura.
È una sintassi che non fa parte solo del mondo Siemens.
E vale anche per l'accesso ai byte (.%Bnnn) o, per variabili a 32 o 64 bit, .%Wnnn, .%Dnnn.

 

SHL, inoltre, lavora anche con variabili a 64 bit (LWord, LInt, ULInt), quindi, meccanismi per passare il bit in uscita da una variabile in ingresso alla variabile successiva, serve solo se si va oltre i 64 bit.

Si può usare in ladder e in testo strutturato.

 

Questo per quanto riguarda, in linea generale, la manipolazione delle variabili.

 

Se lo shift lo usi per l'avanzamento dei passi di un ciclo, come già detto da Toby, ci sono metodi migliori, e che ti permettono di commentare ogni singolo bit del ciclo, con grande vantaggio per la leggibilità del programma.

Sul forum se ne è discusso più volte.

 

 

 

Grazie mille Batta della spiegazione .... con questo messaggio ho capito come trattare i dati nelle diverse configurazioni 

Link al commento
Condividi su altri siti

6 ore fa, marchinoktm ha scritto:

Leleviola :

1) io prima di scrivere penso

2) sarà anche banale per te ma nel mio caso no ; il mio livello di programmazione  è molto basico. 

3)se reputi che la mia domanda fosse fuori luogo o espressa male potevi semplicemente bypassare il mio messaggio 

 

Avendo sempre utilizzato PLC italiani(elco elettronica) e non grandi marche blasonate (siemens , rockwell ecc,ecc,) ho semplicemente cercato di adattare il mio sapere e le mie abitudini , su un mondo nuovo cioè quello della programmazione con Tia Portal. 

Per come era abituato io, per fare un shift register dovevo sempre passare dal settaggio del primo bit (della Word) e poi attivare lo shift register che muoveva fisicamente i bit nella Word . tutto qua 

va beh dai si impara sempre qualcosa di nuovo, scusami se sono stato drastico, non era nelle mie intenzioni urtarti, scusami di nuovo

Link al commento
Condividi su altri siti

16 ore fa, leleviola ha scritto:

va beh dai si impara sempre qualcosa di nuovo, scusami se sono stato drastico, non era nelle mie intenzioni urtarti, scusami di nuovo

ci mancherebbe nessun problema....era per spiegarti il motivo del mio post 

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