-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathanalizador_com.js
120 lines (115 loc) · 3.33 KB
/
analizador_com.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/**
* @author Gonzalo
*/
function analizarComando(linea) {
if (linea.startsWith("(", 0) == 1 || linea == "" || linea.startsWith(";", 0) == 1) {
return;
}
var elemento = linea.split(" ");
var numeroComando = parseFloat(elemento[0].substring(1));
var letraComando = elemento[0].charAt(0);
switch(letraComando) {
case "G":
switch(numeroComando) {
case 21:
console.log("Comandos en mm");
break;
case 90:
console.log("Posicionamiento Absoluto");
break;
case 94:
console.log("F en mm/min");
break;
case 0:
//movimeinto rapido
// console.log("Comando G0");
var comando = descArgs(elemento);
var vectorMov = vectorPuntos(estadoMaquina.Pos, comando.Pos);
var distancia = modulo(vectorMov);
estadoMaquina = comando;
if (distancia != 0) {
var unitarioMov = vectorUnitario(vectorMov);
var velocidad = limitarVector(unitarioMov, VelMax);
var aceleracion = limitarVector(unitarioMov, AcelMax);
rutaMov.push(movimiento(unitarioMov, distancia, velocidad, aceleracion, elemento[0]));
resultados.DistanciaTotal = resultados.DistanciaTotal + distancia;
resultados.DistanciaG0 = resultados.DistanciaG0 + distancia;
}
break;
case 1:
//movimiento controlado por Feed
var comando = descArgs(elemento);
var vectorMov = vectorPuntos(estadoMaquina.Pos, comando.Pos);
var distancia = modulo(vectorMov);
estadoMaquina = comando;
if (distancia != 0) {
var unitarioMov = vectorUnitario(vectorMov);
var velocidad = limitarVector(unitarioMov, VelMax);
if (velocidad > comando.Feed) {
velocidad = comando.Feed;
}
var aceleracion = limitarVector(unitarioMov, AcelMax);
rutaMov.push(movimiento(unitarioMov, distancia, velocidad, aceleracion, elemento[0]));
resultados.DistanciaTotal = resultados.DistanciaTotal + distancia;
resultados.DistanciaG1 = resultados.DistanciaG1 + distancia;
}
break;
case undefined:
console.log("Comando undefined");
break;
default:
console.log("Numero comando G desconocido: " + linea);
}
break;
case "M":
switch(numeroComando) {
case 0:
console.log("Pausa, se asume que no se dejo pasar tiempo");
break;
case 3:
var comando = descArgs(elemento);
console.log("Encender Spindle Sentido Directo a " + comando.Speed + "RPM");
break;
case 4:
var comando = descArgs(elemento);
console.log("Encender Spindle Sentido Inverso a " + comando.Speed + "RPM");
break;
case 5:
console.log("Apagar Spindle");
break;
default:
console.log("Numero comando M desconocido: " + linea);
}
break;
default:
console.log("Comando desconocido: " + linea);
}
}
function descArg(datoProceso, arg) {
var numero = parseFloat(arg.substring(1));
switch(arg.charAt(0)) {
case "X":
datoProceso.Pos.X = numero;
break;
case "Y":
datoProceso.Pos.Y = numero;
break;
case "Z":
datoProceso.Pos.Z = numero;
break;
case "F":
datoProceso.Feed = numero;
break;
case "S":
datoProceso.Speed = numero;
break;
}
return datoProceso;
}
function descArgs(args) {
var destino = puntoFeed(estadoMaquina.Pos.X, estadoMaquina.Pos.Y, estadoMaquina.Pos.Z, estadoMaquina.Feed, estadoMaquina.Speed);
for (var i = 1; i < args.length; i++) {
destino = descArg(destino, args[i]);
}
return destino;
}