Mello Marco Inserito: 14 maggio 2021 Segnala Share Inserito: 14 maggio 2021 Buongiorno a tutti, ho una domanda, con quale funzione traferisco dati da un blocco non ottimizzato di bool ad un blocco di array , senza partire per forza dal bit 0 e i dati non sono multipli di 8 ? immagini come esempio , ma vorrei trasferire per esempio anche 100 bool grazie !!! Link al commento Condividi su altri siti More sharing options...
Simone.Salarsi Inserita: 17 maggio 2021 Segnala Share Inserita: 17 maggio 2021 che io sappia non esiste ( o perlomeno non ho trovato) una funzione specifica già pronta per fare quello che chiedi. Credo che dovrai scriverti tu una funzione specifica Link al commento Condividi su altri siti More sharing options...
fiorezzz Inserita: 17 maggio 2021 Segnala Share Inserita: 17 maggio 2021 Usa la BLKMOVE . Link al commento Condividi su altri siti More sharing options...
Cip77 Inserita: 18 maggio 2021 Segnala Share Inserita: 18 maggio 2021 Concordo con Fiorezzz. Ora non ho modo di provarlo, ma in AWL dovrebbe essere tipo così: DB1 = blocco_bool DB2 = blocco array AWL: CALL BLKMOV SRCBLK := P#DB1.DBX0.3 BOOL 20 RET_VAL := "Tag_ErrorCode" DSTBLK := P#DB2.DBX0.0 BOOL 20 Ciao, Claudio. Link al commento Condividi su altri siti More sharing options...
Simone.Salarsi Inserita: 18 maggio 2021 Segnala Share Inserita: 18 maggio 2021 l'istruzione BLKMOV non fa esattamente quello che viene richiesto dal @Mello Marco Innanzitutto entrambe le DB devono essere non ottimizzate ( potrebbe anche non essere un problema questo) Il problema è che per lavorare con i bool la guida in linea dice Quote Se viene copiata un'area con tipo di dati BOOL si deve indirizzare la variabile in modo assoluto e la lunghezza indicata per l'area deve essere divisibile per 8, in caso contrario l'istruzione non viene eseguita. Non è quindi possibile inserire la sintassi scritta da @Cip77 , il segmento rimane in errore con la segnalazione "invalid parameter assignment" Anche cercando di spostare bool a multipli di 8, ma partendo da un bit che non sia lo x.0 il PLC va in errore Link al commento Condividi su altri siti More sharing options...
fiorezzz Inserita: 18 maggio 2021 Segnala Share Inserita: 18 maggio 2021 si concordo con Salarsi ..in effetti la uso per copiare blocchi di byte Quindi rimane la gestione puntatori (trasformo indirizzo iniziale e finale in puntatori e faccio un loop per non volte che mi serve ..in AWL una decina di righe di codice ) o in scl + semplice ma occorre cambiare la prima db utilizzando un array come la seconda db e fare un for per non bool da trasferire 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