Vai al contenuto
PLC Forum


Incremento Di Memorie Db In Blocco


ultimo 07

Messaggi consigliati

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.

Link al commento
Condividi su altri siti


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.

Link al commento
Condividi su altri siti

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 :toobad: . Vorrei capire perchè con il 1200 siemens non ha continuato ad implementare i puntatori cosi come era nel s7 200 , ma..

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...