quiero portar un programa de cnc, escrito en turboc, para un 286, en msdos, modo consola,
portarlo a c#.
tendra las siguientes clases anidadas: (de abajo arriba).
clase texto: 5 funciones, mensajes de error, aviso, info, trace, y dump.
calse bios: esta es la parte que se la tiene que currar cada cual segun su hard, le llegan ordenes de arriba del tipo: motor x paso +o-, y lee finales de carrera, encoders, etc. unos usaran paso a paso, con un ULM2008, otros en puente H, unos usaran 1 bobina otros 2, otros 1,5, otros un controlador de micropasos, otros un piezoelectrico.
clase motor: una por motor, solo un paso +o-, lleva la cuenta de donde esta. unidades en pasos motor, cero en fin carrera bajo. El arranque paro de la fresa, o la taladrina, son auxiliares de esta capa. el retardo tambien es cosa de ella.
clase mesa: una por motor, unidades en pasos motor, el cero a una distancia de seguriidad del fin carrera. ya se pueden dar varios pasos , buscar el final carrera/s,
clase local, combina los 3 ejes, unidades y cero como en mesa, vigila que se mecanice en margenes, si soprepasa levanta cabezal, al volver a margenes, se posiciona, baja, y sigue. haciendo uso d las utilidades de mesa. solo sabe moverse en ortogonal, solo uno a uno ejes, no en diagonal,
clase virtual: hace lineas, de donde esta a l siguiente posicion, unidades y ero omo en mesa. sus calculos se los pasa a local.
clase matriz: dos matrices, una corrige el 0, de real a virtual, y otra corrige la escala y la orientacion. tendria la utilidad "esto es cero"
clase real: simplemente se entra con coordemnadas reales, y las envia a matriz.
clase interprete: interpreta el programa de codigos g, lo traduce a real, y los pasa a clase real.
-----------
esta es la idea, ¿que tal?, en su dia funciono,
cada clase es una capa que incluye la inferior. simplifica mucho la cosa.
pero se preveen 3 problemillas de soft:
1º neesito crear un objeto texto, otro bios, pero 3 o 4 de motor y mesa, despues otra vez solo uno de local, otro de virtual,,,, no se como se dice eso.
2º el tiempo minimo manejable es de 1ms, en motores de 200pasos vuelta, son 5 vueltas/seg. no esta mal, pero si se usan micropasos, pongamos 16, daria 3 seg/vuelta, muy lento, se necesita intervalos mas cortos.
3º mientras se lo este currando, no atiende mensajes de windous, se cuelga para el operador. ¿Como hacer que a la vez atienda a teclas de teclado?, el proces mensages parece que da problemas. ¿otro hilo solo para atender teclado.?
|