Vai al contenuto
PLC Forum


Cosa Può Servire 'shiftare' Di Un Bit A Destra O A Sinistra


Messaggi consigliati

Inserito: (modificato)

Ragazzi mi scuso con l'autore del la mia intromissione ma volevo chiedere da perfetto ignorante cosa può servire 'shiftare' di un bit a destra o a sinistra.

Nelle mie semplici applicazioni non ho mai dovuto utilizzarlo ma mi sono sempre chiesto cosa possa servire.

Se qualche anima pia volesse perdere dieci minuti gliene sarei enormemente grato :smile:

Grazie

Matteo

Modificato: da Livio Migliaresi

Livio Migliaresi
Inserita:

Separato il tuo messaggio dalla discussione in cui l'avevi inserito, conservandone il link.

Il regolamento prima, e la logica poi, vietano gli accodamenti.

Inserita: (modificato)

La ringrazio e mi scuso per l'errore.

***

releghiamo il 'lei' ai rapporti formali, informalmente nel Forum ci diamo tutti del 'tu'.

;)

Modificato: da Livio Migliaresi
Inserita:

ciao

esempio per tener conto della posizione di una pezzo si scarto su un tavola rotante

Inserita:

Grazie Lelos, ma purtroppo causa mia immensa ignoranza ed inesperienza non capisco cosa tu intenda.

Urgerebbe esempio pratico..

Inserita: (modificato)

Credo che quello che intenda lelos sia un utilizzo del genere.

Supponi di avere una tavola rotante a 10 stazioni, dove alla stazione 2 (numero a caso) viene effettuato un controllo sulla validità del pezzo. La stazione 8 invece si occupa dell'espulsione dei pezzi che non hanno passato il "controllo qualità". Questa macchina usa un registro tra la postazione 2 e 8, dove la postazione 2 va a mettere un "1" se il controllo è passato o uno "0" se il controllo ha avuto esito negativo. Quando la postazione 8, trova un bit 0, scarta il pezzo.

Qui entra in gioco lo shift, a ogni rotazione della tavola, il bit appena registrato nella postazione 2 viene spostato di un bit, "seguendo", di fatto, il pezzo nella stazione 3, 4, 5, ecc... fino a portare il bit corretto (test passato, o meno) alla stazione 8, insieme al pezzo corrispondente.

Spero di essermi spiegato :thumb_yello:

Comunque questo credo sia solo uno dei tanti possibili utilizzi di questa funzione, ma anche la più usata nel mio settore

Modificato: da Stef U.
Inserita:

Credo di aver capito. Almeno l'esempio riportato. In effetti mi sono sempre chiesto come fosse possibile rilevare uno scarto su una ' catena' e poi scartarlo fisicamente n pezzi dopo.

Praticamente è come se il bit che memorizza lo stato "corresse" lungo il registro.. Sino ad arrivare al punto dove voglio verificarne lo stato. Sbaglio?

Grazie Stefano e Lelos...

Qualche altro esempio?

Inserita:

Esatto! Il bit associato alla validità o meno del pezzo nella posizione X della tavola rotante, viene traslato di N bit, posizione per posizione, fino a quando il pezzo arriva in posizione Y, dove a seconda del bit scritto in posizione X, avviene un azione particolare.

Guarda tutti i miei esempi sarebbero riconducibili a quello sopra, cambierebbe solo l'azione del sistema. Al posto di uno scarto, potrebbe essere regolare un dosaggio in base a determinate misurazioni. Purtroppo altre idee non mi vengono :(

Figurati, è un piacere :thumb_yello:

Inserita:

Grazie 1000 Stefano sei stato chiarissimo!

Spero di poter ricambiare

Inserita:

Dato che ci siamo.. Io ho una macchina con una tavola rotante a 10 posizioni. Nella stazione N1 il pezzo viene caricato, nel passaggio tra la 1 e la 2 vi è un sensore che rileva la presenza o meno del pezzo per effettuare o meno il riempimento.

Ora, tralasciando le stazioni intermedie, alla stazione n7 ho una cesoia che avrei piacere NON funzionasse se il pezzo non è presente. Mi sono sempre chiesto come potevo fare per discriminare la presenza senza mettere un sensore anche li...

Grazie a voi credo di esserci arrivato mediante l'uso dello shift. Dunque, per prima cosa che variabile è meglio dichiarare? Word? Int? Array?

Come dicevo le stazioni sono 10.

Supponendo una word, al rilevamento del pezzo metto ad"1" il primo bit. Ad ogni fronte del finecorsa della tavola rotante, effettuo uno shift a sx di un posto, e controllo lo stato del 7* bit.

Ho detto una stupidata?

Inserita:

Grazie 1000 Stefano sei stato chiarissimo!

Spero di poter ricambiare

Figurati, per così poco! Quando posso, data la mia inesperienza, aiuto volentieri gli altri :thumb_yello:

Supponendo una word, al rilevamento del pezzo metto ad"1" il primo bit. Ad ogni fronte del finecorsa della tavola rotante, effettuo uno shift a sx di un posto, e controllo lo stato del 7* bit.

Comunque il tuo ragionamento è esatto, però mi sfugge un dettaglio. Non dovresti shiftare a destra, quando la tavola ruota? così dopo 7 rotazioni il bit del primo pezzo è arrivato alla settima posizione e la cesoia taglia o meno!

Adesso apro il tia e faccio una prova :thumb_yello:

Inserita:

Ignorantemente intendevo il primo bit quello meno significativo,cioè quello a dx.

'Shiftando' a sx ho inteso si andasse verso i bit più significativi. Forse c' è un altro errore. Al rilevamento del pezzo dovrei scrivere '1' sul 2° bit,e non sul primo,per poter leggere lo stato corrispondente alla stazione cesoia al 7° bit. Sbaglio?

Se lo scrivo sul primo,dovrei andare a leggere sul 6°,secondo la mia mente da premio No-bel :superlol:

Inserita:

Ignorantemente intendevo il primo bit quello meno significativo,cioè quello a dx.

Aaaaaaaah ok, allora dovresti shiftare a sinistra! Adesso è chiaro :thumb_yello:

Se lo scrivo sul primo,dovrei andare a leggere sul 6°,secondo la mia mente da premio No-bel :superlol:

Ahahahahahahah battute a parte, hai ragione: se il rilevamento (e quindi la scrittura del bit) avviene tra la stazione 1 e 2, il bit da leggere alla postazione 7 è il numero 6! Ma io comunque scriverei in posizione 1 e leggerei in posizione 6

Inserita:

Ribadisco la domanda di qualche post fa: che variabile è consigliabile dichiarare? O meglio: che variabile posso dichiarare per eseguire uno shift?

Inserita:

Non avendone mai creato uno l'unico aiuto che posso darti è questo link.

Si tratta di quello che intendi fare? Parla di variabile Word

Giuseppe Signorella
Inserita: (modificato)

Ribadisco la domanda di qualche post fa: che variabile è consigliabile dichiarare? O meglio: che variabile posso dichiarare per eseguire uno shift?

Ma che domanda è?

Dipende da ciò che vuoi realizzare.

Tanto per farti un esempio, se vuoi realizzare delle luci tipo supercar, la domanda da porsi sarebbe:

Quante lampadine voglio inserire?

8? dichiaro un byte

16? dichiaro una word

32? dichiaro un double

Modificato: da Giuseppe Signorella
Inserita:

Da perfetto ignorante pensavo che la funzione shift non funzionasse con tutte le variabili ma solo con alcune.

Grazie per la delucidazione

Inserita:

Lo shift, in piu'

a sinistra moltiplica per 2

a destra con un po' di gestione del resto divide per 2.

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