ASCII Group Inserito: 25 luglio 2023 Segnala 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
Mattia Spoldi Inserita: 25 luglio 2023 Segnala 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ì
drn5 Inserita: 25 luglio 2023 Segnala Inserita: 25 luglio 2023 IF (IN_WORD AND 4) = 4 THEN OUT_BIT_3 := 1; ELSE OUT_BIT_3 := 0; END_IF;
Mattia Spoldi Inserita: 25 luglio 2023 Segnala Inserita: 25 luglio 2023 correggo la mia risposta out_bit_01 := in_word and w#16#01 <> 0; .....
pigroplc Inserita: 26 luglio 2023 Segnala 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
batta Inserita: 26 luglio 2023 Segnala 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.
Mattia Spoldi Inserita: 27 luglio 2023 Segnala 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?
batta Inserita: 27 luglio 2023 Segnala 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
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