setecastronomy Inserito: 19 ottobre 2009 Segnala Share Inserito: 19 ottobre 2009 In un slc 500 ultima generazione non riesco a trovare una soluzione soddisfacente per realizzare quello che sostanzialmente è un demultiplexer.Semplificando la descrizione ho 19 lampade collegate alle uscite del plc e due variabili (supponiamo N7:1 e N7:2) contenenti gli indici delle lampade che devono essere accese.Un modo perfettamente funzionante di realizzare la cosa è il seguente:equ(N7:1, 1) oppure equ (N7:2, 1) allora attiva la lampadada 1...equ(N7:1, 19) oppure equ (N7:2, 19) allora attiva la lampadada 19Questa soluzione è però troppo prolissa per i miei gusti per cui avevo pensato di utilizzare l'indirizzamento indiretto sull'istruzione di attivazione dell'uscita. Il bit da attivare sulla parola di uscita sarebbe scelto in base a [N7:1] ovvero al valore di quella variabile.Mi basterebbero due sole righe, ma ci sono i seguenti problemi:- il valore delle variabili N7 può cambiare, utilizzando l'indirizzamento indiretto non mi andrebbero a zero le uscite che sono state precedentemente eccitate. Avrei perciò bisogno di un azzeramento preventivo di tutte le uscite e successiva abilitazione solo delle due attualmente selezionate.- nelle condizioni iniziali nessuna lampada deve essere accesa. E' l'operatore che seleziona prima l'una e poi l'altra. Con l'indirizzamento indiretto si gestisce molto male la condizione in cui è stata effettuata una sola selezione in quanto, se il valore di default di N7:2 è pari al valore attuale di N7:1, c'è un conflitto sullo stato dell'uscita.Esiste una soluzione elegante al problema oppure devo arrendermi a scrivere quelle 19 brutte righe dell'inizio ?Aggiungo un altro piccolo rompicapo. Le lampade sono disposte in cerchio con la 1 e la 19 che sono quindi vicine.Le lampade da selezionare sono adesso 3 e non c'è alcuna restrizione sull'ordine in cui le selezioni sono effettuate Mi serve della logica per stabilire se le tre lampade sono adiacenti (5 4 6 va bene perchè l'ordine non conta).Non ho trovato nulla di meglio che elencare tutte le soluzioni corrette1 e 2 e 3oppure2 e 3 e 4oppure3 e 4 e 5...19 e 1 e 2Lavorando solo sui contenuti di N7:1, N7:2 ed N7:3 senza imporre che siano ordinate in senso crescente mi sembra che la soluzione sia oltremodo complicata.GrazieFilippo 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