marchinoktm Inserito: 7 dicembre 2020 Segnala Share Inserito: 7 dicembre 2020 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 : Sul Fronte di salita dell'evento Set a true il primo Bit della mia word 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 More sharing options...
leleviola Inserita: 7 dicembre 2020 Segnala Share Inserita: 7 dicembre 2020 scusa ma perchè parli di un di shift register e poi fai un Set? Scusa la mia dura cervice ma non capisco Link al commento Condividi su altri siti More sharing options...
Mattia Spoldi Inserita: 7 dicembre 2020 Segnala Share Inserita: 7 dicembre 2020 (modificato) 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: 7 dicembre 2020 da il toby Link al commento Condividi su altri siti More sharing options...
acquaman Inserita: 8 dicembre 2020 Segnala Share Inserita: 8 dicembre 2020 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 More sharing options...
acquaman Inserita: 8 dicembre 2020 Segnala Share Inserita: 8 dicembre 2020 (modificato) SHL non lavora solo in word, ma con qualunque formato, anche la DWORD. Modificato: 8 dicembre 2020 da acquaman Link al commento Condividi su altri siti More sharing options...
marchinoktm Inserita: 8 dicembre 2020 Autore Segnala Share Inserita: 8 dicembre 2020 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 More sharing options...
marchinoktm Inserita: 8 dicembre 2020 Autore Segnala Share Inserita: 8 dicembre 2020 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. 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 More sharing options...
leleviola Inserita: 8 dicembre 2020 Segnala Share Inserita: 8 dicembre 2020 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 More sharing options...
batta Inserita: 8 dicembre 2020 Segnala Share Inserita: 8 dicembre 2020 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 More sharing options...
marchinoktm Inserita: 9 dicembre 2020 Autore Segnala Share Inserita: 9 dicembre 2020 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 More sharing options...
marchinoktm Inserita: 9 dicembre 2020 Autore Segnala Share Inserita: 9 dicembre 2020 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 More sharing options...
leleviola Inserita: 9 dicembre 2020 Segnala Share Inserita: 9 dicembre 2020 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 More sharing options...
marchinoktm Inserita: 10 dicembre 2020 Autore Segnala Share Inserita: 10 dicembre 2020 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 More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora