ultimo 07 Inserito: 15 settembre 2014 Segnala Inserito: 15 settembre 2014 Buonasera. Esiste una soluzione per incrementare in blocco le memorie di un db ? Io avrei la necessità di incrementare in blocco 500 byte , con il vecchio s7 200 utlizzavo i puntatori e l'istruzione incrementa , con il TIA non riesco a trovare una soluzione pratica se non quella di incrementare una alla volta le memorie. Saluti Loris.
batta Inserita: 16 settembre 2014 Segnala Inserita: 16 settembre 2014 Vista la sezione in cui scrivi, anche se non lo specifichi, penso tu stia programmando un S7-1200. Se le variabili fanno parte di un array, ti basta creare un ciclo FOR NEXT in SCL.
ultimo 07 Inserita: 16 settembre 2014 Autore Segnala Inserita: 16 settembre 2014 Grazie per la risposta. Guardando in giro per forum e documentazione varia , avevo intuito che con scl qualcosa si poteva fare , purtroppo non sono ingrado di programmare in scl . Vorrei capire perchè con il 1200 siemens non ha continuato ad implementare i puntatori cosi come era nel s7 200 , ma..
batta Inserita: 17 settembre 2014 Segnala Inserita: 17 settembre 2014 Il 1200 è completamente diverso dal 200. Tanto per cominciare, se non ci sono motivi che ti obblighino a lavorare con indirizzi assoluti (DB "non ottimizzato"), ti conviene lavorare con indirizzamento simbolico. E il 1200 (come anche il 1500) è nato per lavorare prevalentemente con indirizzamento simbolico. Però lavorando con il simbolico, non puoi lavorare con i puntatori perché l'indirizzo assoluto delle variabili non è noto. Per fare quello che desideri però, dell'indirizzamento assoluto non te ne importa nulla. Ti basta creare un array di variabili e fare l'incremento usando l'indice dell'array come puntatore. Il programma è più facile da fare in SCL, ma lo puoi fare anche in KOP. Devi creare un DB contenente un array di variabili. Per esempio: "DB_Dati" con all'interno un array "VarInc" array [0..499] of INT. Poi ti serve una variabile (nel tuo caso va bene di tipo INT) da usare come puntatore, come facevi nel 200. A questo punto, dove fai l'incremento, nel nome della variabile all'interno delle parentesi quadre invece di un numero metti il nome della variabile puntatore. Ovviamente devi aggiungere le istruzioni per gestire il puntatore con valori, nell'esempio, da 0 a 499. In SCL diventa ancora più facile. Esempio: FOR #ID := 0 TO 499 DO "DB_Dati".VarInc[#ID] := "DB_Dati".VarInc[#ID] + 1; END_FOR; Dove #ID è una variabile temporanea di tipo INT.
ultimo 07 Inserita: 17 settembre 2014 Autore Segnala Inserita: 17 settembre 2014 Gentilissimo , faccio qualche prova per vedere se riesco , 1000 grazie , vi aggiorno .
ultimo 07 Inserita: 19 settembre 2014 Autore Segnala Inserita: 19 settembre 2014 Operazione riuscita.
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