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




Due Tabelle X 1 Codice


Messaggi consigliati

Inserito:

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 Tab3

W0=xxx W0=aaa W0=bba

W2=xxx W2=aab W2=bbb

W4=xxx W4=aac W4=bbc

W6=xxy W6=aaa W6=bbd

W8=xxy W8=aac W8=bbe

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


Inserita:

Sinceramente la spiegazione la trova un po' confusa. Prova a spiegarti meglio...

Ciao

B)

Inserita:

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.

Inserita:

Ciao Ferrero, è esatammente quello che ho fatto, volevo sapere se qualcuno mi consiglia qualcosa di diverso.

Inserita:

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 univoci

il 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 possibile

ciao

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