Vai al contenuto
PLC Forum


trasferimento dati tra DB


Mello Marco

Messaggi consigliati

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 !!!

blocco non ottimizzato bool.PNG

blocco array bool.PNG

Link al commento
Condividi su altri siti


Simone.Salarsi

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

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

Simone.Salarsi

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

 

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

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

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...