Vai al contenuto
PLC Forum


Sfc20 Blk Move


Messaggi consigliati

Inserito:

qualcuno mi puo' spiegare il funzionamento della sfc20 block move con s7 300 ?

leggendo le tre righe del manuale in linea ( poco chiaro ) capisco che c'e' un parametro che definisce la sorgente dei dati , un altro che definisce la destinazione , non riesco a capire dove inserire la quantita' dei dati da spostare.

ciao e grazie


Inserita:

la SFC20 rimane decisamente indigesta anche a me! :(

per ovviare generalmente ripiego sulla + umana FC94 o FC95 della libreria di conversione S5->S7 ;)

Andrea

Inserita:

Ti invio un esempio di trasferimento dati.

Il numero di byte da trasferire lo definisci nel formato puntatore (P#DB100.DBX 0.0 BYTE 10) es. 10 byte.

CALL SFC 20 // SFC20 DATA BLOCK_MOVE

SRCBLK :=P#DB100.DBX 0.0 BYTE 10

RET_VAL:=MW10

DSTBLK :=P#DB101.DBX 0.0 BYTE 10

Ciao

Sandro De Paoli

Inserita:

grazie , adesso mi è piu' chiaro.certo che alla siemens riescono sempre a rendere complesse delle cose semplici , ad esempio con omron od allen bradley esistono delle funzioni di move semplicissime da usare.

un altro quesito sempre realativo alla block move : nel caso in cui il blocco dati sorgente ed il blocco dati destinazione non siano statici ma variano durante l'esecuzione del programma e' possibile eseguire il puntamento

alle aree dati ?

Inserita:

Contrariamente ad altri ritengo che la funzione sia di una facilità totale:

l'esempio x indicizzarlo lo puoi leggere in allegato e può essere utile x trasferire tutto ciò che vuoi:

nell'intestazione metti 2 parametri temp:

Sorgente ANY (occupa 10 byte)

Destinatario ANY (occupa 10 byte)

nel segmento metti

LAR1 P##Sorgente

L W#16#1002 // identificatore dell'area dai e struttura in byte

T LW[AR1,P#0.0]

L 1000 // Numero dei byte da trasferire

T LW[AR1,P#2.0]

L 100 // numero DB sorgente

T LW[AR1,P#4.0]

L 0 // dal byte 0

SLD 3

OD DW#16#84000000

T LD[AR1,P#6.0]

e cosi hai fatto il puntatore della sorgente, ovviamente alle costanti puoi sostituire variabili

LAR1 P##Destinatario

L W#16#1002 // identificatore dell'area dai e struttura in byte

T LW[AR1,P#0.0]

L 1000 // Numero dei byte da trasferire

T LW[AR1,P#2.0]

L 101 // numero DB sorgente

T LW[AR1,P#4.0]

L 0 // dal byte 0

SLD 3

OD DW#16#84000000

T LD[AR1,P#6.0]

e cosi hai fatto il puntatore del destinatario, ovviamente alle costanti puoi sostituire variabili

CALL SFC20

SRBLK:=#Sorgente

RET_VAL:=MW100

DSTBLK:=#Destinatario

ma provalo prima così,

ovviamente devi creare DB100 e DB101 da 1000 bytes .....

comunque non lamentatevi, una volta dovevi trovare la mappatura della memoria nel plc S5 a tentativi, ora c'è la documentazione!!!!!!

se vuoi saperne di + consulta il file di documentazione "STEP 7 Programmazione con S7" percorso

START-SIMATIC-DOCUMENTAZIONE-ITALIANO

NOME FILE: s7prv51e.pdf

pagina A-56

buon lavoro

ciao

Inserita:

ciao , pigroplc , l'esempio è esattamente quello di cui ho' bisogno (documentazione compresa) .

tenchiu.

Inserita:

l'sfc20 e' una funzione che copia un buffer di memoria in un altro

generalmente l'sfc20 o altri tipo fifo lifo fofo e fufo non li uso mai

appesantiscono il sistema

nemmeno in s7 200 li uso

nei plc siemens , come in altri , c'e' la possibilita di accedere idirettamente alle aree di memoria

tramite puntatori che sono variabili che invece di caricare un valore intero o altro caricano l'indirizzo

di una variabile

conseguentemente quando si effettuano operazioni matematiche usando il puntatore

non si fa altro che agire sulla variabile da esso puntata.

ci sono delle istruzioni che permettono di eseguire operazioni matematiche ed altre che permettono di eseguire incrementi , decrementi o inizializzazioni sugli stessi

una volta progettati bene si puo ottenere una potenzialita non indifferente

ovviamente il tutto in un ambiente di variabili definite come array o matrici anche tridimensionali

quindi sta di fatto che sfc20 o quant'altro se ne possono creare a iosa usando i puntatori

e crendo dei blocchi funzione parametrizzati

ciao

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