
Telemetria (si fa per dire) per KFlop
- Pedro
- God
- Messaggi: 7084
- Iscritto il: domenica 6 aprile 2008, 18:44
- Località: Roma
Re: Telemetria (si fa per dire) per KFlop

"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."
- walgri
- God
- Messaggi: 4735
- Iscritto il: giovedì 13 gennaio 2011, 18:37
- Località: Cagliari
Re: Telemetria (si fa per dire) per KFlop
Tutto "quadra" 
Voglio rifinire la questione degli fprintf e poi si passa sulla macchina.

Voglio rifinire la questione degli fprintf e poi si passa sulla macchina.
Non hai i permessi necessari per visualizzare i file e le foto allegati in questo messaggio. Per visualizzare tali file devi registrarti ed effettuare il Login
...stop chasing shadows, just enjoy the ride.
Aìna pantografo ▪ Telemetria per KFlop ▪ BlenderCAM STL + DXF
Aìna pantografo ▪ Telemetria per KFlop ▪ BlenderCAM STL + DXF
- walgri
- God
- Messaggi: 4735
- Iscritto il: giovedì 13 gennaio 2011, 18:37
- Località: Cagliari
Re: Telemetria (si fa per dire) per KFlop
Questo in pratica chiude questa parte del progetto che partiva dalla necessità di avere dei diagrammi dello Step Response anche durante una lavorazione (in cui tra l'altro non viene utilizzato il Jerk), monitorare gli errori di più assi contemporanemente, avere uno strumento più comodo nel caso di sistemi con asse slave. Infatti se l'init.c che definisce il legame master-slave non viene caricato, il dialogo dello step response muoverà solo il master, con risultati poco piacevoli.
Da domani verrà applicato sulla mia macchina.
...stop chasing shadows, just enjoy the ride.
Aìna pantografo ▪ Telemetria per KFlop ▪ BlenderCAM STL + DXF
Aìna pantografo ▪ Telemetria per KFlop ▪ BlenderCAM STL + DXF
- walgri
- God
- Messaggi: 4735
- Iscritto il: giovedì 13 gennaio 2011, 18:37
- Località: Cagliari
Re: Telemetria (si fa per dire) per KFlop
Una prova fatta al volo, con tutti i parametri PID da rivedere perchè ho cambiato la risoluzione dell'encoder a 500 fronti/giro, il driver è impostato a 5000 step/giro. Il gain sull'input è impostato a 1, la vite ha passo 5, quindi sull'ordinata si leggono i centesimi di mm.
Questo è il Gcode relativo, la possibilità di inserire delle pause G4 è in effetti molto comoda e consente di monitorare a lungo le "code":
E' uno strumento che comincia a piacermi !
Questo è il Gcode relativo, la possibilità di inserire delle pause G4 è in effetti molto comoda e consente di monitorare a lungo le "code":
Codice: Seleziona tutto
G21
M118
G4 P0.5
G1 X30 F5000
G4 P0.5
G1 X0
G4 P3
M119
M2
Non hai i permessi necessari per visualizzare i file e le foto allegati in questo messaggio. Per visualizzare tali file devi registrarti ed effettuare il Login
...stop chasing shadows, just enjoy the ride.
Aìna pantografo ▪ Telemetria per KFlop ▪ BlenderCAM STL + DXF
Aìna pantografo ▪ Telemetria per KFlop ▪ BlenderCAM STL + DXF
- Pedro
- God
- Messaggi: 7084
- Iscritto il: domenica 6 aprile 2008, 18:44
- Località: Roma
Re: Telemetria (si fa per dire) per KFlop

bello, bravo, complimenti sia per l'utility che per i risultati di "precisione"
"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."
- walgri
- God
- Messaggi: 4735
- Iscritto il: giovedì 13 gennaio 2011, 18:37
- Località: Cagliari
Re: Telemetria (si fa per dire) per KFlop

Non appena il bit di controllo torna basso oppure uno degli assi si disabilita (riga 50, in questo caso vengono monitorati solo il ch1 e il ch3), i dati vengono scritti sul file di testo.
Codice: Seleziona tutto
#include "KMotionDef.h"
#define CONTROL_BIT 2000 // Input bit that triggers data gather
#define TOTALSAMPLES 10000 // Maximum flattened array (of doubles) size
#define FIELDSPERSAMPLE 9 // Number of fields per row
#define SAMPLEINTERVAL 5 // Gather data every SAMPLEINTERVAL time slices
void stringcat(char*, char*);
main(){
int i, j, k, l, N;
double T0,*p=gather_buffer, *limit, *c;
char line[500];
BOOL rewinded = FALSE;
printf("Data gathering thread started\n");
//Setup an output bit to control data gather
SetBitDirection(CONTROL_BIT,1);
ClearBit(CONTROL_BIT);
if (FIELDSPERSAMPLE * TOTALSAMPLES < MAX_GATHER_DATA) {
N = FIELDSPERSAMPLE * TOTALSAMPLES;
} else {
N = ((int)MAX_GATHER_DATA / FIELDSPERSAMPLE) * FIELDSPERSAMPLE;
}
limit = &gather_buffer[N];
while(1){
while(!ReadBit(CONTROL_BIT)); // wait for control bit to be high
printf("Gathering started\n");
T0 = Time_sec();
// Capture Data
i = 0;
while (1) {
*p++ = Time_sec() - T0;
*p++ = ch0->Dest;
*p++ = ch0->Position;
*p++ = ch1->Dest;
*p++ = ch1->Position;
*p++ = ch2->Dest;
*p++ = ch2->Position;
*p++ = ch3->Dest;
*p++ = ch3->Position;
if(!ReadBit(CONTROL_BIT) || !ch1->Enable || !ch3->Enable) {
break;
}
for (k=0; k<SAMPLEINTERVAL; k++) WaitNextTimeSlice();
if (p == limit) {
p=gather_buffer; // "rewind" the pointer
rewinded = TRUE;
}
}
ClearBit(CONTROL_BIT);
printf("Gathering stopped, transmitting %d rows of %d doubles\n", i, i*FIELDSPERSAMPLE);
FILE *f=fopen("C:\\temp\\kflopdata.txt","wt");
if (rewinded) {
c = p;
} else {
c = gather_buffer;
}
while(1) {
for (k=0; k<5; k++) WaitNextTimeSlice();
// round times to nearest servo tick
c[0] = ((int)(c[0]/TIMEBASE + 0.5))*TIMEBASE;
sprintf(line, "%12.5f,%12.5f,%12.5f,%12.5f,%12.5f,",c[0],c[1],c[2],c[3],c[4]);
stringcat(line, "%12.5f,%12.5f,%12.5f,%12.5f\n");
fprintf(f, line, c[5], c[6], c[7], c[8]);
c += FIELDSPERSAMPLE;
if (c == limit){
c = gather_buffer; //Riavvolgo il puntatore
}
if (c == p){
break;
}
}
p=gather_buffer; // "rewind" the pointer
fclose(f);
printf("Data file ready\n");
ClearBit(46);
Delay_sec(0.5);
SetBit(46);
}
}
void stringcat(char *original, char *add){
while(*original)
original++;
while(*add){
*original = *add;
add++;
original++;
}
*original = '\0';
}
Inoltre il messaggio di diagnostica alla riga 62, quella printf, si può sostituire con
Codice: Seleziona tutto
printf("Gathering stopped\n");
...stop chasing shadows, just enjoy the ride.
Aìna pantografo ▪ Telemetria per KFlop ▪ BlenderCAM STL + DXF
Aìna pantografo ▪ Telemetria per KFlop ▪ BlenderCAM STL + DXF