Voce Inserito: 8 novembre 2002 Segnala Inserito: 8 novembre 2002 Aiuto Sono venuti alla luce tutti i miei limiti di programmatore.Devo ricercare tra 14 DW le due o tre che hanno il valore maggiore per poi poterle ulteriormente elaborare, qualcuno mi può consigliare un algoritmo adatto a questa situazione?Vi ringrazio anticipatamente.Voce
Dario Valeri Inserita: 8 novembre 2002 Segnala Inserita: 8 novembre 2002 ciaoin passato ho gia' fatto questo per i plc siemens (s7) per ordinaledelle quote che poi un posizionatore doveva seguire.dovevo mettere i valori scritti in un certo numero di word in ordine crescente. questa funzione , tra l'altro e' gia' presente nei plc omron!!io ho immaginato di confrontare fra di loro 2 word e di tenere la piu' alta , una volta giunto alla fine delle 14 word mettevo la rimanente in un altra area e la eliminavo da buffer originale. oripetevo cio' mettendo le word in successione nella nuova area di memoria.per rendere piu' semplice la realizzazione di cio' io ho fatto il programmino in visual basic , poi l'ho tradotto in algebra di boolciao da dario
rguaresc Inserita: 9 novembre 2002 Segnala Inserita: 9 novembre 2002 Quello sotto è un ordinamento per selezione. Si prende una posizione nel DB e si confronta il numero con tutti quelli sotto. Se il numero in posizione è maggiore o uguale lo si lascia, se è minore lo si scambia. Alla fine della prima passata nella posizione DW0 ci sarà il valore più grande, poi si incrementa la posizione.(Corretto sabato 9, ore 22:00).MW0 Puntatore della posizioneMW2 Puntatore per l’esame della lista sottostanteMW 6 temporaneo :A DB 10 ; apri il blocco dati :LKF +0 :T MW0 ; carica 0 nel puntatore della posizione ZERO :L MW 0 :I 1 :T MW2 ; confronterà con il successivo INIZ :B MW0 :L DW0 ; posizione in ACCU1 :B MW 2 :L DW0 ; posizione in ACCU2 e l’altro in ACCU1 :>F :SPB=UNO ; vanno bene così :B MW0 :L DW0 ; prepara lo scambio usando anche MW6 :T MW6 ;posizione in MW6 :B MW2 :L DW0 ;B MW0 :T DW0 ; maggiore in posizione :L MW6 :B MW2 :T DW0 ;e valore di posizione al suo postoUNO :L MW2 :I 1 :T MW2 ;incrementa il puntatore dell’altro :L KF+13 ; 0…13, 14 DW :<=F :SPB =INIZ ;e rifai fino alla fine della lista :L MW0 :I 1 :T MW0 ; incrementa posizione :L KF +11 :<=F :SPB =ZERO :BEAlla fine nel blocco DB10 i valori dovrebbero essere ordinati dal maggiore al minoreSalutiR.G.
Voce Inserita: 12 novembre 2002 Autore Segnala Inserita: 12 novembre 2002 Vi ringrazio per l'aiuto e per la disponibilità, grazie soprattutto per le righe di codice mi sono state utilissime.saluti Voce
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