s7200 Inserito: 31 luglio 2009 Segnala Share Inserito: 31 luglio 2009 Scusate ma è un pò di tempo che "sbatto la testa" sui puntatori, credo di aver capito ma mi servirebbe una conferma, su questo blocco di codice per esempio:U I0.0FP M10.0L 2L MD0 ( INCREMENTO MD0 - PUNTATORE - )+DT MD0AUF DB1L DBW[MD0]T MW100In questo modo apro in successione la db1.dbw......., se md0 vale 2 aprirò db1.dbw2, se md0 vale 4 aprirò la db1.dbw4, se md0 vale 6 aprirò la db1.dbw6......E' giusto ciò che affermo o mi sfuggito qualcosa?Grazie a tutti per l' aiutoAndrea Link al commento Condividi su altri siti More sharing options...
Renzo R. Inserita: 31 luglio 2009 Segnala Share Inserita: 31 luglio 2009 Le operazioni di caricamento e trasferimento sono RLC indipendenti, quindi il tuo incremento di MD0 avverrebbe ogni ciclo del PLC.Condiziona con un salto ad etichetta (SPBN) l'incremento e funziona. Ciao. Link al commento Condividi su altri siti More sharing options...
Vince73PLC Inserita: 31 luglio 2009 Segnala Share Inserita: 31 luglio 2009 Ciao,aggiungo, oltre a confermare ciò che dice Renzo,che se sommi 2 sommi 2 bit, non due byte.devi moltiplicare 2*8, oppure, per facilitare anche la lettura, caricare il puntatore direttamente.u(U I0.0FP M10.0)u ...u ... (condizioni di incremento puntatore)spbn _001L p#2.0L MD0 ( INCREMENTO MD0 - PUNTATORE - )+DT MD0_001: nop 0Ciaoooo Link al commento Condividi su altri siti More sharing options...
Renzo R. Inserita: 31 luglio 2009 Segnala Share Inserita: 31 luglio 2009 X Vince73PLC:Si, hai ragione deve shiftare a sinistra di 3 bit per mettelo in formato puntatore (= a moltiplicare per 8), oppure scomodare il registro puntatori AR1 o AR2 e appoggiarlo su MD0 per il ciclo successivo. Link al commento Condividi su altri siti More sharing options...
s7200 Inserita: 1 agosto 2009 Autore Segnala Share Inserita: 1 agosto 2009 Grazie a tutti e due per le risposte ma non basta il fronte in salita per non far incrementare il puntatore ad ogni ciclo di scansione?E per moltiplicare * 8 quindi shiftare qual'è il blocco di codice corrispondente? per caso tipo questo?:U E0.0 ( CONDIZIONI DI INCREMENTO PUNTATORE)FP M0.0L 2SLR 3T MD100AUF DB1L DBW[MD100] ( Punto la dbw2)E invece con il formato P#....... come diventa? Grazie.Ammetto che affrontare da solo per la prima volta questo argomento mi crea un po' di confusione anche se ho letto un po' di manuali.Il mio fine e' quello di aprire in successione delle dbw con delle semplici operazioni matematiche; forse ero abituato fin troppo bene con il 200.Grazie a tutti per l' aiuto ( ma vedrete, chi l'ha dura la vince!!)Andrea Link al commento Condividi su altri siti More sharing options...
84paolo Inserita: 1 agosto 2009 Segnala Share Inserita: 1 agosto 2009 questo è l'esempio che hai postato all'inizio rivisto e correttoU I0.0FP M10.0spbnb _001L 2L MD0 ( INCREMENTO MD0 - PUNTATORE - )+DT MD0001: nop 0AUF DB1L MD0SLD 3 // Shifto a sinistra di 3 il puntatore, oppure moltiplico per 8LAR1L DBW[AR1,p#0.0]T MW100// Ogni fronte di salita Di I0.0 incrementa il puntatore e poi apre la word corrispondente Link al commento Condividi su altri siti More sharing options...
s7200 Inserita: 2 agosto 2009 Autore Segnala Share Inserita: 2 agosto 2009 (modificato) Per 84PaoloGrazie 1000, ma non è la stessa cosa scrivere:AUF DB1L MD0SLD 3 // Shifto a sinistra di 3 il puntatore, oppure moltiplico per 8T MD0L DBW[MD0]T MW100ANZICHE':AUF DB1L MD0SLD 3 // Shifto a sinistra di 3 il puntatore, oppure moltiplico per 8LAR1L DBW[AR1,p#0.0]T MW100// Ogni fronte di salita Di I0.0 incrementa il puntatore e poi apre la word corrispondente E poi visto che l'operazione di incremento puntatore é sotto la condizione del fronte in salita di I0.0 e' propio necessaria la condizione di salto? Modificato: 2 agosto 2009 da s7200 Link al commento Condividi su altri siti More sharing options...
Renzo R. Inserita: 3 agosto 2009 Segnala Share Inserita: 3 agosto 2009 Non puo' funzionare perche' tu fai lo shift di MD0 e lo spalmi ancora su MD0 con il risultato che ogni volta che entri nello shift (ogni ciclo da come lo hai scritto) ti shifta di 3 posizioni, quindi lo fa giusto la prima volta, poi ti trovi shiftato di 3 posizioni quello che avevi gia' shiftato prima e sei a 6 posizioni e cosi' via.Il salto a etichetta, ripeto, e' stato messo in quanto le operazioni di carica e trasferisci non dipendono dal RLC, quindi se c'e' il fronte carica esegue la somma e trasferisce, ma lo fa comunque anche se non c'e' nessun fronte,Il salto ad etichetta condizionato invece (SPBN) ti condiziona l'entrata all'istruzione successiva solo se c'e' il fronte (RLC alto) altrimenti va al rientro del salto.Ciao. Link al commento Condividi su altri siti More sharing options...
s7200 Inserita: 3 agosto 2009 Autore Segnala Share Inserita: 3 agosto 2009 Ho omesso qualosa di importante pensando di condizionare il carica e trasferisci con l' RLC di fronte di I0.0 ( mentalità di chi usa S7 200 ); quanto al continuo SHIFTARE di MD0 è stata una svista piuttosto grave .........l' ansia del novellino!Grazie delle osservazioni e comunque credo di aver capito il meccanismo.Ciao Andrea 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