jisba Inserito: 30 marzo 2023 Segnala Share Inserito: 30 marzo 2023 Salve tutti, sto cercando il sistema per ottimizzare e velocizzare il confronto di una variabile esterna (word) , con i valori contenuti nel primo rigo delle db( ne ho 200), senza dover fare il confronto punto punto. grazie Link al commento Condividi su altri siti More sharing options...
84paolo Inserita: 30 marzo 2023 Segnala Share Inserita: 30 marzo 2023 se hai una db solo con array puoi fare un ciclo for con indice. se hai più db consecutive e la word da cercare è sempre nella stessa posizione puoi dichiarare le db non ottimizzate e usare un ciclo for in cui carichi il numero db come puntatore. ma se non dai maggiori aiuti non possiamo sapere come hai il programma Link al commento Condividi su altri siti More sharing options...
batta Inserita: 30 marzo 2023 Segnala Share Inserita: 30 marzo 2023 Scusa, per mia curiosità, a cosa ti serve? Io programmo PLC da oltre trent'anni, e non ho mai sentito questa necessità. Link al commento Condividi su altri siti More sharing options...
jisba Inserita: 4 aprile 2023 Autore Segnala Share Inserita: 4 aprile 2023 buongiorno e grazie per l'interessamento Betta: vorrei creare un sistema di ricette, ma con uno scanner (bar code), che interroghi le mie db, e se riconosce la prima stringa nella db, carica quella ricetta direttamente. 84paolo: non ho ben capito come, mi spiego meglio: creo una ricetta con il nome definito da un codice a barre, questo nome sarà sempre la prima stringa di ogni db creata per i prodotti. ogni qual volta scannerizzo un codice a barre, devo scansionare tutte le db e vedere a quale rivetta appartiene. avrei fatto anche un confronto uno ad uno, ma l'ipotesi è che siano più di 100 ricette. Link al commento Condividi su altri siti More sharing options...
batta Inserita: 4 aprile 2023 Segnala Share Inserita: 4 aprile 2023 7 minuti fa, jisba ha scritto: vorrei creare un sistema di ricette, ma con uno scanner (bar code), che interroghi le mie db, e se riconosce la prima stringa nella db, carica quella ricetta direttamente. Premetto che non mi piace gestire le ricette nel PLC (questo è un compito da HMI/SCADA), ma hai un DB per ogni ricetta? Link al commento Condividi su altri siti More sharing options...
drn5 Inserita: 4 aprile 2023 Segnala Share Inserita: 4 aprile 2023 Ma quanto sono grandi questi DB? Non è possibile farne uno solo costruito a vettori che punti con degli indici? Comunque le ricette come dice @batta sono un lavoro del pannello.... Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 4 aprile 2023 Segnala Share Inserita: 4 aprile 2023 Se proprio vuoi usare le DB del PLC fai una struttura dati che comprende tutta la ricetta a partire dal nome per finire con tutti i tag. Una volta fatta la struttura crei la DB con un array di struttura-ricetta per poi far la ricerca con un for-next. Nel caso di progetti in cui le ricette sono poche con pochi tag (tipo 10-20) la cosa può aver senso, ma se per tipologia di macchina potrebbe avere millemila ricette con millemila tag allora il senso logico impone lo stesso lavoro fatto sul pannello. Link al commento Condividi su altri siti More sharing options...
jisba Inserita: 4 aprile 2023 Autore Segnala Share Inserita: 4 aprile 2023 il primo problema è che non c'è un hmi ed ogni db ha circa 100 dati. sicuramente li gestirei con degli arrey, ma la struttura che dice @pigroplc e @84paolo non la conosco Link al commento Condividi su altri siti More sharing options...
drn5 Inserita: 4 aprile 2023 Segnala Share Inserita: 4 aprile 2023 (modificato) Scusami... ma 100 dati come li chiami tu, ipotizzo 100 word, quindi 200 ricette * 100 word * 2 bytes = 40.000 bytes . Ci stanno in un solo DB del 1200 , che ne permette 64KB (nella 1215) Quindi il problema non esiste. Modificato: 4 aprile 2023 da drn5 Link al commento Condividi su altri siti More sharing options...
batta Inserita: 4 aprile 2023 Segnala Share Inserita: 4 aprile 2023 (modificato) 1 ora fa, jisba ha scritto: sicuramente li gestirei con degli arrey, ma la struttura che dice @pigroplc e @84paolo non la conosco Ti crei un "Tipo di dati" con le variabili della ricetta. Poi, in un solo DB, crei un array con il tipo di dati della ricetta. Fatto questo, con un semplice ciclo FOR cerchi il nome della ricetta. Esempio sorgente: TYPE "UDT_Ricetta" VERSION : 0.1 STRUCT Nome : WString[32]; Farina : Real; Zucchero : Real; Acqua : Real; TempoMescolazione : Time; TempoCottura : Time; TemperaturaCottura : Real; END_STRUCT; END_TYPE DATA_BLOCK "DB_Ricetta" { S7_Optimized_Access := 'TRUE' } VERSION : 0.1 NON_RETAIN VAR RETAIN Ricetta { S7_SetPoint := 'False'} : Array[0..15] of "UDT_Ricetta"; END_VAR BEGIN END_DATA_BLOCK Crea un file di testo "DB_Ricetta.db" e mettici dentro il codice di esempio. Importa il file nella cartella "Sorgenti esterne" dell'albero del progetto. Tasto destro --> Genera blocchi dalla sorgente. ATTENZIONE!!! Eventuali blocchi con lo stesso numero/nome verranno sovrascritti. Modificato: 4 aprile 2023 da batta Link al commento Condividi su altri siti More sharing options...
jisba Inserita: 7 aprile 2023 Autore Segnala Share Inserita: 7 aprile 2023 grazie proverò nel weekand 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