ASCII Group Inserito: 25 luglio 2023 Segnala Share Inserito: 25 luglio 2023 Sto cercando di creare, in STEP7, una funzione in linguaggio SCL per scomporre una variabile word (INT) in 16 bit booleani. Tempo addietro lo feci in TIA14 utilizzando la seguente istruzione: #WORD.%X0 := #BIT_0; #WORD.%X1 := #BIT_1; #WORD.%X2 := #BIT_2; eccetera....... La mia esigenza ora è di crearla in STEP7, come si fa? P.S. allego immagine con la dichiarazione degli IN ed OUT Saluti e ringraziamenti anticipati Link al commento Condividi su altri siti More sharing options...
Mattia Spoldi Inserita: 25 luglio 2023 Segnala Share Inserita: 25 luglio 2023 è un po' che non uso il 300 quindi non mi ricordo proprio benissimo le istruzioni, ma ti dovrebbe bastare scrivere out_bit_01 := in_word and w#16#01; out_bit_02 := in_word and w#16#02; out_bit_03 := in_word and w#16#04; e vai avanti così Link al commento Condividi su altri siti More sharing options...
drn5 Inserita: 25 luglio 2023 Segnala Share Inserita: 25 luglio 2023 IF (IN_WORD AND 4) = 4 THEN OUT_BIT_3 := 1; ELSE OUT_BIT_3 := 0; END_IF; Link al commento Condividi su altri siti More sharing options...
Mattia Spoldi Inserita: 25 luglio 2023 Segnala Share Inserita: 25 luglio 2023 correggo la mia risposta out_bit_01 := in_word and w#16#01 <> 0; ..... Link al commento Condividi su altri siti More sharing options...
ASCII Group Inserita: 25 luglio 2023 Autore Segnala Share Inserita: 25 luglio 2023 Grazie ragazzi Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 26 luglio 2023 Segnala Share Inserita: 26 luglio 2023 la funzione più semplice è quella dell'overlay cioè usando AT. qui sotto trovi un esempio: https://support.industry.siemens.com/forum/it/en/posts/how-to-convert-at-overlay-from-step7-v5-x-to-v1x/161775 Link al commento Condividi su altri siti More sharing options...
batta Inserita: 26 luglio 2023 Segnala Share Inserita: 26 luglio 2023 4 ore fa, pigroplc ha scritto: la funzione più semplice è quella dell'overlay cioè usando AT. Assolutamente sì. Attenzione però allo scambio dei byte. Link al commento Condividi su altri siti More sharing options...
Mattia Spoldi Inserita: 27 luglio 2023 Segnala Share Inserita: 27 luglio 2023 23 ore fa, pigroplc ha scritto: la funzione più semplice è quella dell'overlay cioè usando AT. qui sotto trovi un esempio: https://support.industry.siemens.com/forum/it/en/posts/how-to-convert-at-overlay-from-step7-v5-x-to-v1x/161775 Ma per curiosità, la sovrapposizione AT, funziona anche sui 300? Link al commento Condividi su altri siti More sharing options...
batta Inserita: 27 luglio 2023 Segnala Share Inserita: 27 luglio 2023 (modificato) Credo si possa fare solo in SCL. Un esempio di dichiarazione di variabili sovrapposte con AT in SCL con Simatic Manager: VAR_TEMP // Variabili temporanee tmpWord: WORD; structBit AT tmpWord: STRUCT bit_00: BOOL; bit_01: BOOL; bit_02: BOOL; bit_03: BOOL; bit_04: BOOL; bit_05: BOOL; bit_06: BOOL; bit_07: BOOL; bit_08: BOOL; bit_09: BOOL; bit_10: BOOL; bit_11: BOOL; bit_12: BOOL; bit_13: BOOL; bit_14: BOOL; bit_15: BOOL; END_STRUCT; END_VAR Come dicevo nel precedente post, si deve fare attenzione all'ordine dei byte. Con la dichiarazione dell'esempio, il primo bit della variabile "tmpWord" (quello a destra) sarà "structBit.bit_08". Per fare in modo che il bit a destra sia bit_00, basta aggiustare la dichiarazione come segue: VAR_TEMP // Variabili temporanee tmpWord: WORD; structBit AT tmpWord: STRUCT bit_08: BOOL; bit_09: BOOL; bit_10: BOOL; bit_11: BOOL; bit_12: BOOL; bit_13: BOOL; bit_14: BOOL; bit_15: BOOL; bit_00: BOOL; bit_01: BOOL; bit_02: BOOL; bit_03: BOOL; bit_04: BOOL; bit_05: BOOL; bit_06: BOOL; bit_07: BOOL; END_STRUCT; END_VAR Modificato: 27 luglio 2023 da batta 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