ayudita a portar programa

Todo cuanto tiene que ver con la obtención, almacenamiento y proceso de la información digital, sus aplicaciones y el software y hardware utilizado.
Responder
Mensaje
Autor
Avatar de Usuario
baldo
Mensajes: 1514
Registrado: Vie Dic 23, 2005 7:54 pm
País: españa
Ciudad: coruña y madrid
Ubicación: Galicia
Contactar:

ayudita a portar programa

#1 Mensaje por baldo »

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.?

alberttoy
Mensajes: 1090
Registrado: Mar Sep 16, 2014 12:55 am
País: españa
Ciudad: barcelona

Re: ayudita a portar programa

#2 Mensaje por alberttoy »

Sobre
1 Las clases primero se definen y luego invocas tantas instancias como necesites. Es algo obvio que no creo que responda tu duda. Lo digo para fijar el lenguaje.

2 Como hablas de Windows supongo que correrá en un pc moderno. 1ms es una eternidad

3 Puede atender otro hilo y si es necesario un paro de emergencia, se puede comprobar un flag en el bucle del motor. Se puede probar así por no entrar en el tema de las interrupciones.

Lo que me intriga: ¿que es una clase bios?

Otra linea de trabajo es enviar comandos gcode a un linux corriendo en tiempo real.

Avatar de Usuario
baldo
Mensajes: 1514
Registrado: Vie Dic 23, 2005 7:54 pm
País: españa
Ciudad: coruña y madrid
Ubicación: Galicia
Contactar:

Re: ayudita a portar programa

#3 Mensaje por baldo »

llamo clase bios a la que enlaza con el hard especifico de cada cual.
a ella llegan ordenes del tipo "motor 2 da paso -1". y preguntas como ¿se llego a fin carrera?.
unos usaran la salida de impresora para controlar los PAPs, (si es que aun queda de eso),
otros usaran un arduino via pseudo RS232, en este caso, o le manda el mensaje literal y lo interpreta el arduino, o ya le manda el codico de motor y las bobinas activas.
otros incluso via wifi.
unos atacaran las bobinas directamente, otros a traves de de un controlador de micropasos, otros podrian usar la posicion para darle caña a un piezoelectrico en un microscopio de efecto tunel. y otros para simplemente regular la velocidad del motor.

encender o apagar la fresa, la taladrina, el laser de quemar,,,, todo lo que sea 0o1, el programa lo ve como una bobina de un supuesto motor.

si 1ms es una eternidad, pero es lo que da el timer estandar de C#

me parecio que habria un problema, porque siempre se necesita la creacion de un unico objeto de cada clase, excepto en motor y mesa, que necesitaria 2 o 3 o 4 , + auxiliar. no se como decirle esto.
pero hay una forma de evitarlo, sera mas lento, pero elegante. Como la rutina de gestionar motores, es identica para todos, y solo se gestiona uno cada vez, con una llega, solo hay que ponerle la estructura del motor en cuestion, despues de guardar el del anterior actualizada.

si, hay el problema de la parada de emergencia, y del aviso de cambio de pieza o herramienta, supongo que eso se hace como dices, con banderas controladas desde otro hilo, nunca lo hice.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados