Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Puntamento indiretto DB su TIA


Messaggi consigliati

Inserito:

Buongiorno a tutti, innazi tutto un augurio di buon anno !

Vi espongo il mio problema...

Sto terminando una macchina che deve utilizzare dei profili cam , utilizzo le libreie standard LCam_HDL... nella versione più semplice con 1000 punti X/Y e tutto funziona regolarmente.

Ora il bello viene nella gestione del numero di profili che si attestano a circa 500 e di conseguenza 500 ricette, il pannello operatore non risce a gestire un numero così grande di dati nella gestione delle ricette per cui pensavo di appoggiare tutto quanto sul PLC ma non riesco a puntare al numero assoluto del DB come si faceva con il vecchio S7-300.

Sostanzialmente contavo di creare un DB per ogni ricetta, tramite la gestione appropriata vado a cercare il DB che mi serve e lo carico in un DB di lavoro che passo al profilo CAM, spero di essere stato abbastanza chiaro.


Simone.Salarsi
Inserita:

perchè vuoi lavorare ancora in assoluto ? sicuramente starai utilizzando un 1500 vista la gestione di Cam e profili, quindi secondo me la soluzione migliore è usare il simbolico ed un array di ricette.

 

Non so se e come hai già strutturato il programma, ma se ho interpretato bene la tua necessità  io procederei come segue :

 

1) creo un tipo di dati UDT_Ricetta con tutto ciò che ti serve.

2) creo un DB_Lavoro basato su UDT_Ricetta

3) Creo un DB_Archivio con al suo interno un array Ricette[0..500] di UDT_Ricetta

 

Dopo di che lato software hai praticamente quasi finito, ti basterà definire un indice ( con sorgente HMI, dato esterno, ecc) e poi copiare array corrispondente all'indice nel DB_Lavoro

 

Semplificando una cosa del genere :

 

DB_Lavoro := DB_Archivio.Ricette[indice];

 

in un attimo hai già i tuoi dati appoggiati sull'area di lavoro, l'indice è chiaro e sai sempre dove vai a puntare e non avrai 500+ DB sparsi in giro per il PLC.

 

Inserita:

Hai ragione Simone, il problema è che il DB cam utilizza 1000 coppie di dati Lreal che moltiplicato per le 500 ricette diventa un DB importante e non penso che la CPU 1511T riesca a gestire questa mole di dati, la mia idea (probabilmente sbagliata) era quella di gestire i dati utilizzando il puntamento assoluto e se esiste la funzione che esisteva le 300 adrei ad allocare i DB non nella memria di lavoro per non riempirla. Ora comunque provo con il simulatore e vedo, tendenzialmente odio tornare ad utilizzare l'indirizzamento assoluto....ma mi è venuta così...

🤪

Simone.Salarsi
Inserita:

 

ok, capito. Quindi il problema seguendo l'esempio che avevo pensato potrebbe essere che la DB_Archivio ecceda le dimensioni massime consentite per la DB. Ci sarebbe da guardare il datasheet della cpu in questione per verificare questa cosa, oppure provare a crearla e vedere se la compilazione segnala qualche errore.

 

Comunque da quel che so, usando l'AWL tutte le possibilità presenti su S7 300 dovrebbero essere gestibili anche sul 1500. Però cerco di evitarlo il più possibile quindi non ci metto la mano sul fuoco 

 

 

 

 

Inserita:

Allora, lavorandi un pò il discorso di scansione e puntamento vario e gestione dei dati dovrebbe essere ok, ora essendo passato un pò di tempo da quando avevo immaginato come gestire la cosa inizo a ricordare gli intoppi incontrati.

Creando un DB come archivio delle mie ricette funzionere il problema che dovrei renderlo retentivo ma supera la dimensione massima gestita dalla CPU, per questo motivo immaginavo di gestire un singolo DB per ricetta, con un secondo DB tenevo traccia a quale DB puntare in base al codice o comunque a dei miei parametri di ricerca, indiduato il DB allocato nella memoria non di lavorlo caricavo e lo trasferivo nel mio DB ricetta attiva che ovviamente risulta essere retentivo...

 

Inserita:

Non le ho mai usate, ma potresti vedere se ti possono essere utili le istruzioni RecipeExport e RecipeImport.
Scrivono e leggono file .csv nella memoria di caricamento.

Inserita:
5 minuti fa, batta ha scritto:

Non le ho mai usate, ma potresti vedere se ti possono essere utili le istruzioni RecipeExport e RecipeImport.
Scrivono e leggono file .csv nella memoria di caricamento.

Ci guarderò, nel 300 avevo impostato i DB come unlinked, in questo modo non occupavano memoria di lavoro del PLC, risiedevano sulla SD nella meriori di caricamento e con le SFC 20 e 83 leggevi il contenuto o andavi a scrivere le DB contenute nella sola memrio di caricamento.

Inserita:
3 minuti fa, lupoalberto ha scritto:

Ci guarderò, nel 300 avevo impostato i DB come unlinked, in questo modo non occupavano memoria di lavoro del PLC, risiedevano sulla SD nella meriori di caricamento e con le SFC 20 e 83 leggevi il contenuto o andavi a scrivere le DB contenute nella sola memrio di caricamento.

Potresti usare le istruzioni CREATE_DB, READ_DBL e WRIT_DBL, ma anche queste le ho usate pochissimo, e non ti so dare indicazioni su come indicizzare il numero del DB.

Inserita:
1 minuto fa, batta ha scritto:

Potresti usare le istruzioni CREATE_DB, READ_DBL e WRIT_DBL, ma anche queste le ho usate pochissimo, e non ti so dare indicazioni su come indicizzare il numero del DB.

Stavo guardado proprio quelle e penso siano l'evolusione delle SFC che utilizzavo sul 300, faccio due prove e mi ingegno, dovrei aver trovato la soluzione.

vi aggiorno....

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...