Felice_Boccia Inserito: 21 febbraio 2007 Segnala Inserito: 21 febbraio 2007 Salve a tutti, vorrei discutere sul modo di affrontare la seguente funzione:Il mio plc dovrà ricevere da uno scada tre tabelle, predispongo 3 DB dove mi scriverà l'associazione in questo modo,Tab 1 Tab2 Tab3W0=xxx W0=aaa W0=bbaW2=xxx W2=aab W2=bbbW4=xxx W4=aac W4=bbcW6=xxy W6=aaa W6=bbdW8=xxy W8=aac W8=bbeLa tabella 3 avrà un dato univoco, mentre nelle prime due tabelle potranno esserci dei dati uguali.Il plc memorizzato le tabelle in DB tramite un lettore codici riceverà il dato di tab1 e tab2 mediante le oppotune istruzione dovràricercare la 1°word con dato letto tab 1, controllare la relativa word di tab2 se corrisponde a quella letta tirare fuori come dato di uscita il valore della stessa word di tab3,altrimenti ricercare la word seguente in tab1 e rifare i confronti con tab2. Spero di essere stato chiaro e ricevere qualche consiglio da qualcuno che magari ha già fatto qualcosa di simile.
OB1-Roby Inserita: 21 febbraio 2007 Segnala Inserita: 21 febbraio 2007 Sinceramente la spiegazione la trova un po' confusa. Prova a spiegarti meglio...Ciao
g_ferrero Inserita: 21 febbraio 2007 Segnala Inserita: 21 febbraio 2007 Spero di aver inteso correttamente quanto hai descritto..Crea una variabile sulla quale appoggiare l'indice di ricerca, partendo da 0 e incrementandola di 2 ogni loop, leggi la dbw del primo blocco dati, (utilizzando l'indice), solo se vi è corrispondenza con il primo dato di ricerca, puoi passare al secondo blocco dati utilizzando sempre lo stesso indice. Nel caso vi sia corrispondenza anche per il secondo valore, puoi leggere e memorizzare il dato del terzo blocco dati...Se invece non vi è corrispondenza sul primo valore o sul secondo valore incrementi l'indice e riprovi con i nuovi indirizzi...Sui loop, ovviamente devi porre dei limiti, che riguardano il tempo ciclo e le dimensioni dei blocchi dati, se il tuo indice supera la dimensione di uno dei tre blocchi dati, la cpu va in stop... ciao.
Felice_Boccia Inserita: 21 febbraio 2007 Autore Segnala Inserita: 21 febbraio 2007 Ciao Ferrero, è esatammente quello che ho fatto, volevo sapere se qualcuno mi consiglia qualcosa di diverso.
Ecup Inserita: 23 febbraio 2007 Segnala Inserita: 23 febbraio 2007 Io non sono sicuro di aver capito... Dunque ci sono queste tre tabelle scritte dallo scada:-tab1 con dati non univoci-tab2 con dati non unicovi-tab3 con dati univociil PLC riceve un codice composto da due valori, e deve cercare una word Wn tale per cui "valore1=Wn_di_tab1" e "valore2=Wn_di_tab2", restituendo il valore contenuto in Wn di tab3.Per esempio, se i codici letti sono xxx-aac, Wn sarà W4, per cui (da tab3) restituiamo "bbc".Voglio sperare che i dati in tab1 e tab2, pur non essendo univoci in ogni singola tabella, siano "univoci a coppia", e che non ci siano più Wn che soddisfino la condizione cercata.A parte quest'ultima considerazione, il metodo di Ferrero mi sembra l'unico possibile... l'algoritmo è per forza quello... al limite si possono valutare delle differenze nell'implementazione (sei pratico con i puntatori?), ma la sostanza non cambia, perlomeno nei limiti di come hai descritto il problema... Forse avendo più informazioni sull'applicazione reale si possono trovare strade diverse. Per esempio, essendo tab3 univoca, non capisco il motivo per cui debbano esserci tab1 e tab2: potrebbe esserci un'unica tabella che contiene i dati di tab1 e tab2 "uniti", così avresti un solo confronto da effettuare, ma forse ci sono limiti sui codici che arrivano o sulla grandezza dei dati memorizzati in tab1 e tab2... non so, senza ulteriori info, il metodo descritto è corretto e probabilmente, salvo picoole sfumature, l'unico possibileciao
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