setecastronomy Inserito: 19 ottobre 2009 Segnala 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
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