Vai al contenuto

copiare blocco Byte


Messaggi consigliati

southofsanity
Inserito: (modificato)

Salve a tutti , 

 

ho una periferica che mi ha 40 byte in ingresso e 40 in uscita, indirizzati nella configurazione hardware. in questi byte ci sono molti booleani di segnalazione.

Dato che non posso prendere i singoli bit dagli indirizzi devo spostarli su una DB per poterli elaborare singolarmente. 

esiste una funzione per spostare tutto il blocco indirizzi in nella db? non vorrei spostare byte per byte o word dword che sia.

 

grazie spero di essermi spiegato..

 

 

Modificato: da southofsanity
southofsanity
Inserita:

Yes , è quello che cercavo.... Grazie mille

  • 1 month later...
Inserita:

Ciao, ho provato con sfc 14/15 e anche con sfc20 ma mi da errore,  i dati li ho confrontati sono lunghi uguale, quanlcuno ha qualche idea ? , allego foto hardware (  sono 36 non 40 per varie prove eseguite ).

 

Grazie a tuttiimage.png.5ccd637e28d8660f2f50ecaf7d49088d.png 

Inserita:
2 ore fa, southofsanity ha scritto:

mi da errore

Quale? Sembrerebbe un errore di area di destinazione non abbastanza grande.

 

Comunque guarda qui la BLKMOV dove trovi tutte le info che ti servono e anche il link per tracciare eventuali errori.

southofsanity
Inserita:

L'SFC 14 mi da 

80B1  La lunghezza dell'area di destinazione indicata non è uguale alla lunghezza dei dati utili progettata con STEP 7.

L'SFC 20 mi da

8x22 Errore di dimensione nella lettura di un parametro.

 

Ma le aree di lettura e scrittura erano entrambe di  36, nelle varie prove ho anche fatto una DB dedicata di 36 byte ma nulla , l'errore sparisce solo se leggo 1 solo byte 

mi e venuto il dubbio che nell' hardware lo step 7 voglia la periferia con i byte in sequenza 1350....1385

 

  

Inserita:
1 ora fa, southofsanity ha scritto:

con i byte in sequenza

Non capisco cosa intendi nella configurazione hw in sequenza... vuoi dire che sono sparsi un po' qui e un po' là?

Comunque si, le funzioni di copia leggono e scrivono locazioni di memoria consecutive. Se devi leggere/scrivere 36 bytes, gli stessi devono essere "uno dietro l'altro". Se non lo sono, copia quelli consecutivi con i BLKMOV e gli "sparsi" con dei semplici MOVE.

Inserita:

ma uno screen di come hai impostato la funzione? 

southofsanity
Inserita:

Si attualmente lavora tutto con il move, ho trasferito Di DW in DW, ma non mi piace, per byte in sequenza intendevo questo ( vedi immagine )

image.png.ae354106f84aa150e4a5e8b29af45514.png

 

La funzione SFC20 e impostata P#E1350.0 byte 36  in ingresso e P#DB250.DBX0.0 Byte 36 in scruttura Nella SFC14 ho messo l'indirizzo IN 16# in ingresso uguale alla sfc20 in uscita, non c'è molto da scrivere penso , la db e comopsta nei primi 36 byte da una Struttura di booleani interi e byte in base alle esigenze, comunuqe on funziona nemmeno con una DB di 36 byte puliti

 

con le periferie configurate come nell'immagine funziona bene... forse e un limite di step7 e volevo capire, se c'era un'alternativa ai move

 

boh.. grazie.

 

  

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