IlFincoITA Inserito: 21 dicembre 2017 Segnala Inserito: 21 dicembre 2017 Ciao a tutti! mi piacerebbe realizzare una funzione per la rotazione di una serie di numeri. In pratica ho il disco di una tavola a 8 posizioni. Verrei che l'operatore mi indicasse il numero della formina che vede davanti alla sua postazione da 1 a 8. Il disco girerà in senso orario. Supponiamo che veda davanti a se la formina 3. Quando preme un pulsante vorrei che in automatico si formi l'ordine dei numeri seguenti: 3, 4, 5, 6, 7, 8, 1, 2 Potreste suggerirmi una strada per il raggiungimento di questo scopo. In SCL porebbe essere comodo fare questo tipo di funzioni?
one25 Inserita: 21 dicembre 2017 Segnala Inserita: 21 dicembre 2017 Risposta generica e spero di essere d'aiuto: con un shift register da 8 bit con ricircolo (ring counter) che va incrementato ogni volta che si preme il tasto. con una funzione rilevi la posizione del bit (divizioni fino a zero per es.) quindi il primo elemento della lista. Con un altro o lo stesso fai il ciclo ed ottieni le altre posizioni.
Water Inserita: 22 dicembre 2017 Segnala Inserita: 22 dicembre 2017 altra risposta generica sulla scia di one25 (contatore), usi un contatore settato da 1 a 8 e rilevi costantemente il valore di uscita, una volta scelta la posizione dall'operatore, usi la funzione While incrementando il contatore fino al valore voluto, poi usi "normalmente" il contatore per un ciclo intero ... non lo so fare in SCL perchè non conosco il programma, la funzione While ma anche For penso ci sia ciao
step-80 Inserita: 24 dicembre 2017 Segnala Inserita: 24 dicembre 2017 IF VarPosizioniTavola<>0 THEN //attesa inserimento numero IF VarPosizioniTavola>=1 AND VarPosizioniTavola<=8 THEN //verifica inserimento valido *INIZIO IF PulsanteStart THEN //usare il fronte di salita Contatore:=Contatore+1; IF Contatore<8 THEN JMP *INIZIO; ELSE Contatore:=1; JMP *INIZIO; END_IF; END_IF; END_IF; END_IF; Non so se funzioni, non l'ho testato. Io solitamente faccio tutto con i CASE.
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