Mello Marco Inserito: 14 maggio 2021 Segnala 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 !!!
Simone.Salarsi Inserita: 17 maggio 2021 Segnala 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
Cip77 Inserita: 18 maggio 2021 Segnala 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.
Simone.Salarsi Inserita: 18 maggio 2021 Segnala 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
fiorezzz Inserita: 18 maggio 2021 Segnala 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
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