CLERSUD Inserito: 30 settembre 2006 Segnala Share Inserito: 30 settembre 2006 Salve a tutti,sono ad affrontare un problema che di concezione è semplice ma nel plc non riesco a farlo funzionare, il plc è un S7300:devo salvare il valore della variabile db60.dbd0, quando m0.0 è attivo nella db1.dbd[x], dove [x] è una variabile (es. md20) che si incrementa con m0.1, il programma è realizzato nel seguente modo;--SEGMENTO 1u m0.1 \\ bit di incrementofp m10.0spbnb a001l l#1l md20 \\ variabile incrementatat md20a001: nop 0-- SERGMENTO 2u m0.0fp m10.1spbnb a002l db60.dbd0 \\ valore da memorizzareauf db1 \\ apro il DB1t dbd[md20] \\ trasferisco in dbd[valore di md20]a002: nop 0il compilatore non da nessun errore, ma quando lo eseguo mi và in stop la CPU, comunque anche utilizzando l'OB121 l'istruzione non viene eseguita correttamente.come posso realizzare questa funzione in modo corretto?grazie in anticipo per l'aiuto. Link al commento Condividi su altri siti More sharing options...
RickyM Inserita: 30 settembre 2006 Segnala Share Inserita: 30 settembre 2006 Questo è un caso analogo.Ciao Link al commento Condividi su altri siti More sharing options...
CLERSUD Inserita: 30 settembre 2006 Autore Segnala Share Inserita: 30 settembre 2006 Il link è valido per leggere dei valori precedentemente scritti all'interno delle variabili locali, ma non sono riuscito ad applicarlo nella mia funzione.io devo memorizzare il mio valore in un db indicizzato.ciao. Link al commento Condividi su altri siti More sharing options...
rgdwld Inserita: 30 settembre 2006 Segnala Share Inserita: 30 settembre 2006 L'indirizzo si deve incrementare di 4 byte 0 bit. Prova col primo segmento cambiato cosi' U M 0.1 // bit di incremento FP M 10.0 SPBNB a001 L P#4.0 L MD 20 // variabile incrementata +D T MD 20a001: NOP 0 Link al commento Condividi su altri siti More sharing options...
RickyM Inserita: 1 ottobre 2006 Segnala Share Inserita: 1 ottobre 2006 Oppure puoi fare così:Non ho con me un pezzo di codice già fatto e provo ad andare a memoria.MD20 lo devi trasformare in formato puntatore:Se vuoi scrivere in db1.dbd6, per esempioL L#6T MD20L MD20SLW 3LAR1 L DB60.DBD0AUF DB1T DBW [AR1,P#0.0]Così non sei obbligato a partire dal byte 0 di db1Ciao Link al commento Condividi su altri siti More sharing options...
CLERSUD Inserita: 4 ottobre 2006 Autore Segnala Share Inserita: 4 ottobre 2006 grazie a tutti per l'aiuto, sono a riuscito a realizzare il mio progetto egregiamente.Spinelli Nico. Link al commento Condividi su altri siti More sharing options...
TravelMen Inserita: 5 ottobre 2006 Segnala Share Inserita: 5 ottobre 2006 Vorrei fare solo una piccola precisazione, in una applicazione con uso pesante di puntatori ho avuto dei problemi con dati puntati a DB (sia di istanza che globali), allora rovistando nel ., alla ricerca di qualche suggerimento utile, sono venuto a sapere che è "meglio" +consigliato, penso, una volta caricato l'offset caricare anche la partenza della DB. ..................... ..................... LAR1 MD 72 //Carico il puntatore AUF DB 14 L P#DBX 0.0 //Carico il puntatore all'inizio della DB +AR1 //Aggiorno il mio puntatore ...................... ......................Dopo questo piccolo accoegimento non ho avuto +prob con il ciclo 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