Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Correzioni Dinamiche - correzioni in base AI GRADI DI POSIZIONAMENTO


Messaggi consigliati

Inserito:

HO UNA MORSA ROTANTE CON 360 POSIZIONI, AD OGNI POSIZIONE CORRISPONDE UNA CORREZIONE CHE DEVO CARICARE. HO CREATO UNA DB CON 360 VALORI RALI . IN BASE A DOVE DEVO ANDARE DEVO CARICARE UNO SPECIFICO VALORE (LA MECCANICA è IMPRECISA). POSSO RISOLVERE LA COSA DINAMICAMENTE??? IN QUANTO IO SO CHE A ALLA POSIZIONE 4GRADI CORRISPONDE LA DBnnn.DBD16. QUINDI PER SAPERE A DOVE DEVO PUNTARE NELLA DB BASTA CHE MOLTIPLICO PER 4 LA POSIZIONE A CUI DEVO ARRIVARE. POSSO USARE I PUNTATORI?? PREMETTO MAI USATO I PUNTATORI.

OSSIA DBnn.DBDO------>0GRADI

DBnn.DBD4------>1GRADI

DBnn.DBD8------>2GRADI

DBnn.DBD12------>3GRADI

DBnn.DBD16------>4GRADI ECC.

L "POSIZIONE A CUI DEVO ANDARE" (W) ESEMPIO 4

L 4

*I

ITD

T #APPOGGIO // VARIABILE LOCALE DI APPOGGIO, 16

//quindi la mia correzione risiede nella DBnn.DBD16 CHE POI è IL NUMERO CONTENUTO IN APPOGGIO..COME FACCIO AD "ESTRAPOLARLO E ASSOCIARLO ALLA DB???

P ##APPOGGIO

LAR1 //

//ORA POSSO SCRIVERE

L DBnnn.DBD[AR1, P 0.0] //S7 MI DICE CHE è SBAGLIATO COME POSSO RISOLVERE LA COSA????

GRAZIE Emanuele.


Luca Bettinelli
Inserita:
Regolamento PLCForum+-->
CITAZIONE(Regolamento PLCForum)

Grazie

Inserita:

Nel tuo caso i puntatori potrebbero anche servire,ma comunque devi crearti un codice necessario per limitare le impresisioni dovute alla dinamica della ruota..ed in relazione ad esempio a dei confronti di posizioni decidi di puntare ad uno o quello che segue nella db...

ciao

Inserita:

Ma la posizione target è espressa in gradi? Immagino di sì altrimenti, se fosse in decimi di grado avresti una tabella con 3600 valori!

L'inerzia non è costante...secondo te dipende dalla quota target?

Comunque quello che dici si può fare, e si può fare anche di più volendo:

Alla fine di ogni posizionamento potresti misurare l'errore, invertirlo di segno, fare la media col fattore di correzione della tabella e sovrascrivere il valore in tabella, dopo un paio di giri dovrebbe aver "autoappreso" i valori ottimali di correzione. Premesso che gli errori siano abbastanza costanti...

Per quanto riguarda i puntatori puoi operare in 2 modi:

Puntatori "semplici":

Codice:

AUF DBnn                    //Apre DB
L "POSIZIONE A CUI DEVO ANDARE" (W) ESEMPIO 4
L 4
*I
ITD
T #APPOGGIO // VARIABILE LOCALE DI APPOGGIO, 16

L     DBD [#Appoggio]  // Legge DBD indicizzata
Puntatori AR1/AR2:
     L     #Target
      SLD   5
      LAR1  
      L     DBW [AR1,P#0.0]
Se non ti è chiaro il codice qui sopra puoi fare anche così, è esattamente la stessa cosa:
         
      L     #Target
      L     4
      *D    
      T     #Appoggio
      L     #Appoggio
      SLD   3
      LAR1  
      L     DBW [AR1,P#0.0]

Inserita:

grazie mille ha funzionato....è davvero una cosa spettacolare. Alla fine ho dovuto usare i puntatori altrimenti non vi era verso di farla andare. con il puntatore ok.

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...