luca80 Inserito: 12 aprile 2010 Segnala Share Inserito: 12 aprile 2010 Ciao a tutti, i devo usare un puntatore su db , i modo da passare valori di una db.dbdxx su un'altra db.Ho provato in questo modo ma in esecuzione il plc S7300 va in stop.L "Costanti".Trazione.Spare_1AUF "Costanti"T DBD [MD 20]Qualcuno ha un'idea???Grazie Link al commento Condividi su altri siti More sharing options...
FattoreDiPotenza Inserita: 12 aprile 2010 Segnala Share Inserita: 12 aprile 2010 (modificato) Se fosse solo un errore di testo , il compilatore se ne accorgerebbe prima.Per andare in stop , usando puntatori con DB la causa più plausibile é che vada a ascrivere o a leggere fuori dall'area consentita nelle DB.Quindi bisgna fare attenzione agli indirizzi , anche se indiretti.Quanto è lunga la DB "costanti"?Cosa rappresenta il simbolo ""Costanti".Trazione.Spare_1" , che tipo di dato è ?Vai anche nel registro errori , e ti dirà esattamente la causa dello stop ed il suo punto di interruzione oltre alla cronologia dell'errore avvenuto . Modificato: 12 aprile 2010 da FattoreDiPotenza Link al commento Condividi su altri siti More sharing options...
gaserma Inserita: 12 aprile 2010 Segnala Share Inserita: 12 aprile 2010 Devi mettere anche la dichiarazione variabili altrimenti come si fa a darti delle indicazioni. In ogni caso così com'è non dice nulla. Link al commento Condividi su altri siti More sharing options...
luca80 Inserita: 12 aprile 2010 Autore Segnala Share Inserita: 12 aprile 2010 Vorrei leggere il valore di db3.dbd 56 e trasferirlo alla db1.dbd 20md20 = 20 L DB3.DBD 56 AUF DB 1 T DBD [MD 20]cos'i forse è più chiaro... Link al commento Condividi su altri siti More sharing options...
STEU Inserita: 12 aprile 2010 Segnala Share Inserita: 12 aprile 2010 come scritto in molte discussionidopo aver caricato il valorebisogna scrivere slw 3 Link al commento Condividi su altri siti More sharing options...
cagliostro Inserita: 12 aprile 2010 Segnala Share Inserita: 12 aprile 2010 Salve,premesso che come postato da FattoreDiPotenza e gaserma le indicazioni da te fornite sono un pò scarse, vedo se riesco ad interpretare al meglio quello che vuoi fare.Quella che chiami db.dbdxx o L "Costanti".Trazione.Spare_1suppongo sia il valore in formato DINT che vuoi passare di volta in volta ad una Doppia word di indirizzo X che si trova nel DB il cui simbolico è "Costanti".Ora l'indirizzo della Doppia word sul quale scrivere il valore è contenuto nel puntatore MD20.Sè quello che ho pensato finora è esatto, allora l'errore nel codice che hai scritto si trova in MD20 perchè non è stato "preparato" in formato puntatore mediante l'istruzione SLD 3.A seguire ti allego il codice che dovrebbe realizzare quanto da te richiesto: L 4 SLD 3 T MD20 //contiene il puntatore all'indirizzo della word su cui scrivere, in questo caso la word sarà la DBD4 (MD20 è in formato DWORD)L DB2.DBD0 // contiene il dato da scrivere corrispondente alla tua L "Costanti".Trazione.Spare_1AUF DB 3T DBD [MD20]Ovviamente a seconda della word sul quale dovrai trasferire il dato, l'indirizzo al puntatore dovrà essere ricalcolato. Nell'esempio il valore è una costane nel tuo caso sarà un'altra variabile Link al commento Condividi su altri siti More sharing options...
cagliostro Inserita: 12 aprile 2010 Segnala Share Inserita: 12 aprile 2010 Vorrei leggere il valore di db3.dbd 56 e trasferirlo alla db1.dbd 20L 20SLD 3T MD20 //contiene il puntatore all'indirizzo della word su cui scrivere, in questo caso la word sarà la DBD4 (MD20 è in formato DWORD)L DB3.DBD56AUF DB 1T DBD [MD20] Link al commento Condividi su altri siti More sharing options...
cagliostro Inserita: 12 aprile 2010 Segnala Share Inserita: 12 aprile 2010 scusanel mio ultimo post non considerare il commento a fianco all'istruzione T MD20 era relativo all'esempio precedente. Link al commento Condividi su altri siti More sharing options...
TravelMen Inserita: 12 aprile 2010 Segnala Share Inserita: 12 aprile 2010 (modificato) Se poi dovessi avere ancora dei problemi, oppure comportamenti "strani", io in ogni caso ti consiglierei quanto segue, quando usi i puntatori di preparare il tuo puntatore in base a cio che devi puntare.Cerco di spiegarmi meglio, il semplice fatto di fare SLD 3 di una Dword, fa si di puntare ad una locazione, uguale al valore che vuoi puntare, cioèL 20 SLD 3 T MD20 in MD20 trovi il tuo punatore alla locazione 20, ma questa locazione potrebbe essere riferita ad una locazione di memoria o come al tuo caso ad una DB, pertanto io se devo usare i puntatori faccio così L DB3.DBD56 AUF DB 1 L P#DBX0.0 L 20 SLD 3 +D T MD20 T DBD [MD20] OPPURE L P#M0.0 L 20 SLD 3 +D T MD20Così in tutti e due gli esempi punto alla locazione 20, ma nel primo alla DBxx.DBD20, il secondo alla M20.0. Modificato: 12 aprile 2010 da TravelMen Link al commento Condividi su altri siti More sharing options...
luca80 Inserita: 13 aprile 2010 Autore Segnala Share Inserita: 13 aprile 2010 Siete stati più che soddisfacenti.Grazie!! 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