IlFincoITA Inserito: 21 dicembre 2017 Segnala Share 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? Link al commento Condividi su altri siti More sharing options...
one25 Inserita: 21 dicembre 2017 Segnala Share 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. Link al commento Condividi su altri siti More sharing options...
Water Inserita: 22 dicembre 2017 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
step-80 Inserita: 24 dicembre 2017 Segnala Share 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. 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