CLERSUD Inserito: 30 settembre 2006 Segnala 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.
CLERSUD Inserita: 30 settembre 2006 Autore Segnala 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.
rgdwld Inserita: 30 settembre 2006 Segnala 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
RickyM Inserita: 1 ottobre 2006 Segnala 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
CLERSUD Inserita: 4 ottobre 2006 Autore Segnala Inserita: 4 ottobre 2006 grazie a tutti per l'aiuto, sono a riuscito a realizzare il mio progetto egregiamente.Spinelli Nico.
TravelMen Inserita: 5 ottobre 2006 Segnala 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
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