DOMI60 Inserito: 5 maggio 2006 Segnala Share Inserito: 5 maggio 2006 Premetto che ho usato la funzione cerca e non ho trovato nulla che mi fosse d'aiuto.Sto cercando di utilizzare la funzione SFC84 per salvare una DB (nel mio caso la DB15) nella MMC (DB150),Ho avuto difficoltà a interpretare i puntatori ANY in quanto il manuale non è chiarissimo.Prima domanda: Il manuale dice di inserire il tipo dei dati nel BYTE 1 e nel BYTE 6 ma cosa va messo nel Byte 1, il codice 16#04 (word) o il codice 16#19 (Numero DB) ? e nel byte 6 ?Seconda domanda:Il RET_VAL mi ritorna il codice 7000. Non mi è chiaro cosa significa.Attivando la funzione con REQ il codice è 7002 Qualcuno ha già fatto una applicazione del genere?Qualcuno possiede un piccolo esempio?grazie a chiunque voglia rispondere.Domi60 Link al commento Condividi su altri siti More sharing options...
STEU Inserita: 5 maggio 2006 Segnala Share Inserita: 5 maggio 2006 CALL "WRIT_DBL" REQ :=M0.0 SRCBLK :=P#DB15.DBX 0.0 BYTE 6 RET_VAL:=MW2 BUSY :=M0.1 DSTBLK :=P#DB150.DBX 0.0 BYTE 6Con il codice sopra leggi la DB15 a partire dal bit 0.0 per sei byte (5.7) e li scrivi nella db 150 (che DEVE risiedere nella mmc ) dal bit 0.0 fino al 5.7 Link al commento Condividi su altri siti More sharing options...
DOMI60 Inserita: 5 maggio 2006 Autore Segnala Share Inserita: 5 maggio 2006 Grazie mille per la pronta risposta.Se invece volessi "indicizzare" LA db di scrittura e scrivere su una DB diversa caso per caso, come verrebbe la parte DSTBLK :=P#DB150.DBX 0.0 BYTE 6 ?Cioè, come sostitiusco [ DB150.DBX 0.0 BYTE 6 ] con una variabile?Spero che questo possa venire utile anche a quache altro utente del forum.Grazie per l'attenzioneDomi60 Link al commento Condividi su altri siti More sharing options...
STEU Inserita: 6 maggio 2006 Segnala Share Inserita: 6 maggio 2006 Se devi indicizzare un parametro any devi sapere come è composto un parametro any.Per info è spiegato benissima (strano ma vero) sul manuale della SiemensProgrammazione con step7 a pagina A 56 nel capitolo dell'appendice , che puoi andare a vedere dal menuSimatic > documentazione > Italiano Comunque:prima cosa da fare devi crearti una variabile locale di tipo Any, vedrai che questa variabile avra' una lunghezza di 10 byte.ora nel richiamo del tuo sfc al posto del puntatore come parametro metti il nome della tua variabile, poi devi costruire la tua variabile locale andando a scrivere in modo opportuno nei 10 byte L B#16#10 // Codifica S7 T LB 0 // . L B#16#4 // Tipo di dati: WORD Parole (16 bit) T LB 1 // . L 117 // Fattore di ripetizione T LW 2 // . L 200 // Numero DB T LW 4 // . L 234 // Indirizzo byte L "MODEL_ARCHIVE".MODEL.MODEL // . *I // . T LD 6 // . SLD 3 // . T LW 8 // . L B#16#84 // Codifica delle aree di memoria: DB Blocco dati T LB 6 // . CALL "BLKMOV" SRCBLK :=#INDEX_MODEL RET_VAL:=MW30 DSTBLK :=P#DB200.DBX 0.0 WORD 117questo esempio è fatto con il block move ma è la stessa cosa per sfc84Tornando a noi così devono essere codificati i bytebyte 0 devi scrivere 10 in esadecimalebyte 1 devi scrivere il codice per il tipo di dati (vedi tabella pagina A57)b#16#00 NIL Puntatore nullob#16#01 BOOL Bitb#16#02 BYTE Byte (8 bit)b#16#03 CHAR Caratteri (8 bit)b#16#04 WORD Parole (16 bit)b#16#05 INT Numeri interi (16 bit)b#16#06 DWORD Parole (32 bit)b#16#07 DINT Numeri interi (32 bit)b#16#08 REAL Numeri in virgola mobile (32 bit)b#16#09 DATE Datab#16#0A TIME_OF_DAY (TOD) Orab#16#0B TIME Temporizzatoreb#16#0C S5TIME Tipo di dati S5TIMEb#16#0E DATE_AND_TIME (DT) Data e tempo (64 bit):b#16#13 STRING Stringa di caratteriWord 2 il numero di quante volte devi copiare la tua variabileword 4 numero della db del tuo parametro (se non usi le db metti 0)byte 6 Area di memoriab#16#81 E Area di memoria degli ingressib#16#82 A Area di memoria delle usciteb#16#83 M Area di memoria dei merkerb#16#84 DB Blocco datib#16#85 DI Blocco dati di istanzab#16#86 L Stack dei dati locali (L-Stack)b#16#87 V Dati locali precedentii bit 3,4,5,6,7 del byte 7 non sono utilizzatii bit 0,1,2 il byte 8 ed i bit 3,4,5,6,7 del byte nove indica il numero del byte della tua variabilementre gli ultime 3 bit del byte 9 indicano il numero del bit di partenza della tua variabile adesso capisci perchè nell'esempio e stato fatto uno shift di 3 bit si parte dal bit 0 Link al commento Condividi su altri siti More sharing options...
STEU Inserita: 6 maggio 2006 Segnala Share Inserita: 6 maggio 2006 se ti puo' essere d'aiuto guarda la foto allegata Link al commento Condividi su altri siti More sharing options...
DOMI60 Inserita: 6 maggio 2006 Autore Segnala Share Inserita: 6 maggio 2006 Grazie milleLunedi farò le prove del caso...Domi60 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