batta Inserita: 13 agosto 2012 Segnala Share Inserita: 13 agosto 2012 Non capisco come mai nel 2012 si voglia ancora ostinarsi a programmare i puntatori in awl E chi si ostina a programmare in AWL? Se devo fare delle cose che in SCL risultano più facili, utilizzo SCL senza pensarci un attimo. Ma se, in una funzione dove va bene l'AWL, devo usare un puntatore, non mi spavento di certo. C'è anche da dire che l'editor SCL di Step7 non è il migliore in assoluto. In questo senso, sono stati fatti dei buoni passi avanti nel TIA Portal (che detesto per quasi tutto il resto). Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 13 agosto 2012 Segnala Share Inserita: 13 agosto 2012 l'editor non e' il massimo , ma col simulatore plc fai presto a debuggare . Si certo se devi usare puntatori awl usali mica ti sto dicendo che non puoi usarli ahahahah ciao walter Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 13 agosto 2012 Segnala Share Inserita: 13 agosto 2012 Devo ammettere che la gestione puntatori in s7-200 e' molto piu veloce di step7 , in s7-200 e' come in C , "&" e " * " ... E' ancora frutto dell'eredità TI..... Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 14 agosto 2012 Segnala Share Inserita: 14 agosto 2012 si infatti e' Texas Instruments , s7-200 e microwin non sono produzione tedesca , erano diversi anche i processori che li componevano . ciao Walter Link al commento Condividi su altri siti More sharing options...
Brancaleone_2000 Inserita: 7 aprile 2013 Segnala Share Inserita: 7 aprile 2013 Salve a tutti, sono nuovo nel forum. Ho iniziato di recente ad usare l'indiirzzamento dinamico in Step7, dopo aver letto le parti della guida online al riguardo e qualche esmpio di programmazione trovato fra programmi precedenti. Girando per i vari forum sull'argomento mi sono imbattuto in questa istruzione del post 18 di questa discussione : L P##P_Buffer non l'ho mai trovata, né in programmi esistenti né nella documentazione online. Significa per caso che #P_Buffer è un dato locale a doppia parola e che può quindi essere interpretata come puntatore ? Inoltre, nell'FB di una mia applicazione ho bisogno di caricare in AR1 l'indiirzzo della prima variabile di un array dichiarato nel relativo blocco di istanza (quindi in STAT). Posso per caso usare allo scopo l'indirizzo che la variabile occupa nel realtivo blocco dati (che poi è quello che si vede nella stessa tabella di dichiarazione delle variabili dell'FB) ? O c'è un modo idverso per farlo ? Qualcuno può darmi qualche delucidazione ? Grazie Link al commento Condividi su altri siti More sharing options...
batta Inserita: 8 aprile 2013 Segnala Share Inserita: 8 aprile 2013 #P_Buffer è una qualsiasi variabile dichiarata nell'interfaccia delle variabili della funzione, e potrebbe essere una variabile di qualsiasi tipo. Con l'istruzione L P##P_Buffer carichi nell'accumulatore l'indirizzo della variabile #P_Buffer. Inoltre, nell'FB di una mia applicazione ho bisogno di caricare in AR1 l'indiirzzo della prima variabile di un array dichiarato nel relativo blocco di istanza (quindi in STAT). Posso per caso usare allo scopo l'indirizzo che la variabile occupa nel realtivo blocco dati (che poi è quello che si vede nella stessa tabella di dichiarazione delle variabili dell'FB) ? O c'è un modo idverso per farlo ? Per caricare nel registro indirizzi l'indirizzo di una variabile dichiarata nell'interfaccia delle variabili della tua funzione (che sia o meno la prima di un array non ha alcuna importanza), ti basta scrivere: L P##NomeVariabile LAR1 Oppure: LAR1 P##NomeVariabile Link al commento Condividi su altri siti More sharing options...
Brancaleone_2000 Inserita: 17 aprile 2013 Segnala Share Inserita: 17 aprile 2013 Grazie Batta, mi sono state utili le tue indicazioni. La mia applicazione, nella quale uso un array di word, funziona. Ho comunque un dubbio: Attualmente accedo dinamicamente agli elementi dell' array di word mediante l'indicizzazione dei rispettivi indirizzi occupati dagli elementi dell'array nel relativo blocco dati di istanza DI della mia FB, con istruzioni del tippo L DIW [AR1,P#0.0] e T DIW [AR1,P#2.0]. C'è in Step7 per caso modo di fare la stessa cosa indicizzando lo stesso indice fra parentesi quadra dell'array ? Inaltre parole, se il mio array di word dichiarato in STAT è FIFO Array [0..32] Of Word, cè modo di indicare dinamicamente gli indici [0..32] ? Chiedo questo perché leggendo la guida online sulle variabili array sembra che l'unico modo in cui poter accedere ad un elemento di array sia del tipo L FIFO [x] con x di volta in volta costante, o mi sfugge qualcosa .? Grazie e saluti Link al commento Condividi su altri siti More sharing options...
batta Inserita: 17 aprile 2013 Segnala Share Inserita: 17 aprile 2013 In AWL puoi scrivere: L DIW[adr] dove "adr" è una doppia word che contiene l'indirizzo della variabile. Per puntare ad una variabile dell'array indicando l'indice della variabile, potresti fare come segue: L #id //Indice variabile dell'array SLD 4 //Shift a sx di 4 bit per variabili a 16 bit L P##DIWxxx //Carica indirizzo inizio array +D //Somma l'indirizzo relativo T #Adr //Il risultato è l'indirizzo della variabile L DIW [#Adr] ... ... Per fare quello che vorresti fare come lo vorresti fare, devi usare l'SCL. Link al commento Condividi su altri siti More sharing options...
marki90 Inserita: 12 gennaio 2016 Segnala Share Inserita: 12 gennaio 2016 Ciao a tutti!Sono un nuovo "programmatore PLC" e con gli indirizzi di memoria faccio ancora confusione, nonostante sto cercando di informarmi il più possibile.Io volevo creare una funzione che dato un DB in ingresso (INDB) mi ritorna l'indirizzo del massimo valore presente nella DB. Nella mia DB sono presenti solo valori DWORD MD80 = Merker utilizzato per muoversi nel DBMD84 = Merker che utilizzo per salvarmi il massimo valore AUF #INDB L DBD [MD 80] L MD 84 <D //Se TMAX è minore di DB salta SPB jump L DBD [MD 80] T MD 84 //Trasferisci TMAX in OUT// non so cosa scriverejump: L MD 80 L 32 +D T MD 80 Spero che qualcuno mi possa aiutare. Grazie in anticipo Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 12 gennaio 2016 Segnala Share Inserita: 12 gennaio 2016 iscriviti alla Sitrain , Siemens Training , li insegnano le porcherie dei puntatori ai bit e ti regalano anche i libri rilegati Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 12 gennaio 2016 Segnala Share Inserita: 12 gennaio 2016 Accodarsi a discussioni, specialmente quando son ferme da anni, non è ammesso dal regolamento: si crea confusione nelle eventuali risposte.Se vuoi apri una nuova discussione sull'argomento. Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati