qwertyu

Autor Tema: LinuxCNC comentado en castellano  (Leído 3848 veces)

Desconectado alberttoy

  • Gurú
  • ******
  • Join Date: Dic 2012
  • Mensajes: 1217
  • Ubicación: Barcelona - Barcelona
Re:LinuxCNC comentado en castellano
« Respuesta #30 en: 03 Marzo 2017, 17:52 »
Te voy siguiendo.
Gracias por el curro que te estas pegando.
Torno Optimum 240x500G, Fresadora Vertical/Horizontal ZAY7550, fresadora ceneceada SIEG Super X2P HiTorque Mill,  soldadora mig/mag/tig

Desconectado josemanuel-gar

  • Oficial de 1ª
  • ****
  • Join Date: Nov 2016
  • Mensajes: 266
  • Ubicación: Gijon
Re:LinuxCNC comentado en castellano
« Respuesta #31 en: 04 Marzo 2017, 23:17 »
Otro mas que se apunta.

Enhorabuena por el trabajo.

Desconectado s118

  • Ayudante
  • **
  • Join Date: Jun 2016
  • Mensajes: 76
  • Ubicación: españa
Re:LinuxCNC comentado en castellano
« Respuesta #32 en: 13 Marzo 2017, 17:47 »
Algún problema. Hace tiempo que no aparecen nuevos capítulos.

abu

  • Visitante
Re:LinuxCNC comentado en castellano
« Respuesta #33 en: 13 Marzo 2017, 20:40 »
¿Problemas?..............todo lo contrario. Aqui lo explico.

https://youtu.be/jyPIOoEUnrc

Desconectado angelnu

  • Aprendiz
  • *
  • Join Date: Mar 2016
  • Mensajes: 15
  • Ubicación: Toledo
Re:LinuxCNC comentado en castellano
« Respuesta #34 en: 25 Marzo 2017, 21:20 »
Hola a todos
Muy bueno el aporte gracias por el esfuerzo. Si pudieras mejorar el audio, con los altavoces a tope se oye bajo.

Estoy intentando traducir el manual de linuxcnc al castellano (LinuxCNC_Documentation.pdf) para poder entender el hal y demás, pero mi ingles es muy deficiente, gracias al traductor de google y el bing, hay bastante hecho pero me hace falta que alguien con un buen dominio del ingles lo corrigiera, ya que hay innumerables errores, pero aun así se entiende bastante.

Si hay alguien interesado en la tarea tengo el LinuxCNC_Documentation.pdf en .odt para modificar, ya que los conversores de pdf a odt no hacen bien la conversión.

Un saludo

Desconectado LEOO

  • Oficial de 2ª
  • ***
  • Join Date: Nov 2009
  • Mensajes: 218
  • Ubicación: Ciudad Real
Re:LinuxCNC comentado en castellano
« Respuesta #35 en: 25 Marzo 2017, 23:14 »
cumbre 022

abu

  • Visitante
Re:LinuxCNC comentado en castellano
« Respuesta #36 en: 26 Marzo 2017, 23:06 »
Para que veais que no estoy parado. Ando trabajando en el programa xemc; una interfaz grafica, aunque no lo parezca, tal que asi:



Al ser tan simple, se puede uno concentrar en lo importante.........los mecanismos internos.
Los siguiente es un mero avance del tema. No esta terminado ni de lejos y, tal como lo pongo, no vale para nada de nada............pero todo se andara.
Insisto............paciencia

*******************************************************************************************************************

XEMC como ejemplo de una GUI para EMC/LinuxCNC.

La GUI xemc fue originariamente escrita por "los padres fundadores" Proctor y Shackleford y adaptada a emc2 por Alex Joni. Contrariamente a la GUI's mas "modernas", esta escrita en C++ y utiliza las API's de X11 (X Toolkit), tambien en C/C++, para el interface grafico. Con ello, se evita tener que "lidiar" con mas de un lenguaje a la hora de "descifrar matrix"..aaaahhhhggg....

Ficheros de cabecera incluidos:
Estandar:
ctype.h      // tipos caracter
fcntl.h      // file control options. O_CREAT(Create file if it does not exist.)
inttypes.h      // fixed size integer types.
limits.h      // DBL_MAX, maybe
stdarg.h      // handle variable argument list
stdint.h      // integer types
stdio.h      // standard buffered input/output
stdlib.h      // standard library definitions
string.h      // string operations
sys/stat.h      // data returned by the stat() function struct stat, stat()
unistd.h      // standard symbolic constants and types
values.h      // Old compatibility names for <limits.h> and <float.h>                constants. DBL_MAX, maybe.

Especificos:
rcs.hh      // should be included with NML, CMS, libnml function.etime()
emc.hh      // Declarations for EMC NML vocabulary
emc_nml.hh   // Declarations for EMC NML vocabulary
emcglb.h    // EMC_NMLFILE, TRAJ_MAX_VELOCITY, TOOL_TABLE_FILE. Declarations for EMC NML vocabulary
emccfg.h    // DEFAULT_TRAJ_MAX_VELOCITY Declarations for globals found in emcglb.c
inifile.hh  // INIFILE Declarations for INI file format functions
rcs_print.hh
nml_oi.hh   // Defines Generic NML Message structures used to log errors and
interact with an Operator Interface from within an NML_MODULE.
timer.hh   // A TIMER object lets you wait on the expiration of a cyclic
period, to the resolution of the system clock.

Cabeceras para X Toolkit:
Include <X11/Intrinsic.h> in your application programs. This header file automatically includes <X11/Xlib.h>, so all Xlib functions also are defined. It may also be necessary to include <X11/StringDefs.h > when setting up argument lists, as many of the XtNsome-thing definitions are only defined in this file.
X11/Intrinsic.h      /* Intrinsics Definitions */
X11/StringDefs.h     /* Standard Name-String definitions */


Widget: Objeto que proporciona una abstracción de interfaz de usuario (por ejemplo, un widget de barra de desplazamiento).
https://www.x.org/releases/X11R7.5/doc/libXaw/widgets.pdf
Cabeceras para widgets, todas en X11/Xaw/ (X Athena widgets):
Form.h      //widget can contain an arbitrary number of children or                subwidgets
Box.h         // geometry management of arbitrary widgets in a box of a               specified dimension.
Command.h      // ‘‘push buttons.’’
Label.h      // graphic displayed within a rectangular region of the screen
AsciiText.h      // Text widget

MenuButton.h   // pop up the menu named in the menuName resource

SimpleMenu.h   // container for the menu entries
SmeBSB.h      // reate a menu entry that contains a string, and optional bitmaps
SmeLine.h      // add a horizontal line or menu separator to a menu.
Dialog.h      // prompt for auxiliary input from a user.

Canales NML:

static *emcCommandBuffer,    Clase RCS_CMD_CHANNEL
static *emcStatusBuffer,    Clase RCS_STAT_CHANNEL
       *emcStatus,       Clase EMC_STAT
static *emcErrorBuffer,    Clase NML
static char error_string[NML_ERROR_LEN] = "" (macro, 256)

static int emcCommandSerialNumber = 0;
the current command numbers, set up updateStatus(), used in main()

// forward decls for error popup
static void errorReturnAction(Widget w, XEvent *event, String *params, Cardinal *num_params);
static void errorDoneCB(Widget w, XtPointer client_data, XtPointer call_data);

static int createErrorShell();
creates a fresh error dialog widget

static int destroyErrorShell();
destruye un  error dialog widget.

static void popupError(const char *fmt, …)__attribute__((format(printf,1,2)));
¿¿ widget Dialogo de error?

// forward decl for quit() function
static void quit();
// clean up NML buffers.  // get rid of program file window string.




…..............Para continuar.......




Pseudo código.
Un pseudocodigo es una especie de “programa del programa” escrito en lenguaje 100% humano. Algo así como el plano del futuro programa, independiente del lenguaje de programacion escogido

Aqui va el pseudocodigo para la interfase de usuario xemc. Es una interfase limitada (solo 3 ejes), antigua y con acceso a librerias hoy obsoletas (aunque aun soportadas y funcionales) en Linux. El tabulado es MUY IMPORTANTE. Da el nivel de profundidad de ejecucion de cada uno de los pasos. Por ejemplo:

Si llueve
   decidir si paraguas o impermeable
      Si paraguas, terminar el proceso de decisión. Ir a listo:
      En caso contrario (impermeable)
         ¿esta en el perchero?
            No esta en el perchero
            se fuerza paraguas. Ir a listo:
         Si, esta en el perchero
         Cogerlo
         ir a listo:
listo:
   Hala, a la calle a mojarse





La verdadera fiesta en xemc, como en todo programa C/C++, esta en la función main():

int main(int argc, char **argv)
   Varias definiciones de variables locales, a saber:
      t; contador en bucles
      start; hora en el arranque ???
      good; bandera (0/1)
      string[80];
      Varias de tipo Dimension (def. en intrinsic.h)
      De tipo Font (tipo XID) (en X.h), posfont
****** PROCESADO DE LA LINEA DE COMANDOS
   Procesar la linea de comandos con emcGetArgs()
      Si error en linea de comandos
         mensaje con rcs_print_error()
         salida al sistema con status 1. Fin de la fiesta
******  PROCESADO DEL INI
   Cargar y procesar fichero ini con iniLoad()
      Varias definiciones de variables:   
      machine: nombre de la maquina cnc
      version: version linuxcnc
      displayString: cadena generica
      Crear instancia inifile de clase IniFile (en inifile.hh)
      Definicion de variables locales
      Abrir ini con metodo inifile.Open() (en inifile.cc) . Si falla →
         retornar -1
      Buscar entrada MACHINE en seccion EMC (ver ini) con inifile.Find()
         Si existe, copiar nombre en “machine”
      Buscar entrada VERSION en seccion EMC (ver ini) con inifile.Find()
         Si existe, mostrar maquina cnc y version linuxcnc
      Buscar entrada DEBUG en seccion EMC (ver ini) con inifile.Find()
         Si DEBUG, copiar valor en emc_debug (definida en emcglb.c)
         Si no DEBUG, emc_debug = 0
      Buscar entrada NML_FILE en seccion EMC (ver ini) con inifile.Find()
         Si NML_FILE, copiarlo en emc_nmlfile (definida en emcglb.c)
         Si no NML_FILE, emc_nmlfile por defecto (linuxcnc.nml)
      Buscar entrada TOOL_TABLE en seccion EMCIO con    inifile.Find()
         Si TOOL_TABLE, copiarlo en tool_table_file
         Si no TOOL_TABLE, tool_table_file=tool.tbl, por defecto
       Buscar entrada PARAMETER_FILE en seccion RS274NGC con inifile.Find()
         Si PARAMETER_FILE, copiarlo en  PARAMETER_FILE
         Si no PARAMETER_FILE, PARAMETER_FILE = rs274ngc.var
      .
      .
      .
      Asi con....(“entrada”, “seccion”)
      "DEFAULT_VELOCITY", "TRAJ"
      hacer jogSpeed = (traj_default_velocity * 60.0) + 0.5
      "MAX_VELOCITY", "TRAJ"
      hacer maxJogSpeed = (traj_max_velocity * 60.0) + 0.5;
      "HELP_FILE", "DISPLAY"
      "PROGRAM_PREFIX", "DISPLAY"
      "PROGRAM_PREFIX", "TASK" (???no se especifica en documentacion)
      "POSITION_OFFSET", "DISPLAY" (MACHINE, RELATIVE o ???ignorar)
      "POSITION_FEEDBACK", "DISPLAY" (ACTUAL, COMMANDED)
      "JOGGING_POLARITY”,”AXIS_0” ???? No se encuentra JOGGING_POLARITY en documentacion)      igual para AXIS_1 y AXIS_2. Xemc solo admite tres ejes.
      "MAX_FEED_OVERRIDE", "DISPLAY"
      "INPUT_SCALE", "AXIS_0"
      Cerrar fichero ini con metodo inifile.Close()
      Retornar 0
*******  VERIFICACION DE FUNCIONAMIENTO DE MENSAJES NML
   Definir RETRY_TIME=10.0   RETRY_INTERVAL=1.0 (segundos)
   Si no se ha activado debug, inhibir mensajes de diagnostico
   Inicializa variable start (posiblemente con la hora actual en arranque)
   Inicializa bandera good = 0
   Hacer en bucle do-while mientras no se alcance el valor RETY_TIME
      emcTaskNmlGet() (intenta conectar a canales command y status de nml)
         Si retorna 0, bandera good=1, ir a fin del bucle:
         Si no se ha consumido el tiempo RETY_TIME
            Detenerse durante RETY_INTERVAL segundos
         Repetir bucle
      RETY_TIME consumido
   Fin del bucle:
   Si good = 0
      imprimir error con rcs_print_error()
      salida al sistema con status 1. Fin de la fiesta
******* VENTANA DE TEXTO
   Crear una ventana de PROGRAM_FW_NUM_LINES(10) x PROGRAM_FW_LEN_LINES(80)
   Reservar memoria para 10x80 caracteres
   Inicializar ventana con fwInit()
      Si no éxito
         imprimir error
         salida al sistema con status 1. Fin de la fiesta
******* WIDGETS GRAFICOS (artilugios varios para ventanas)

   Comentario: Los widgets siguen una jerarquia padres-hijos. Los widgets de mayor nivel pueden    “albergan” a los de menor. Asi, el widget de mayor nivel, topLevel en este caso, albergara a    los demas.

   Asignar topLevel, tipo widget, con XtVaAppInitialize de Xt. El widget de mayor nivel.
   Asignar topForm,  XtVaCreateManagedWidget, llama a XtCreateWidget y XtManageChild.
   Asignar barMenuForm, XtVaCreateManagedWidget



…........................ para continuar


      
      
 
      

   



       


abu

  • Visitante
Re:LinuxCNC comentado en castellano
« Respuesta #37 en: 01 Abril 2017, 20:58 »
Otro video mas.
Va de latencia........y sus cosas, que las tiene :o :o ;D ;D

https://youtu.be/Z5cdnoayS7E

Desconectado varoniberico

  • Gurú
  • ******
  • Join Date: Mar 2011
  • Mensajes: 1551
  • Ubicación: Torrevieja (Alicante) España
Re:LinuxCNC comentado en castellano
« Respuesta #38 en: 01 Abril 2017, 21:30 »
abu al ordenador se le ha tenido que joder un cuarto de de la unica neurona que le queda ;D ;D ;D ;D , por que el sonido es fatal y la imagen en esta ultima entrega esta de pena.
Si necesitas un micro nuevo te mando uno, lo de la imagen es mas complicado. ;D ;D ;D
 Espero que lo puedas solucionar satisfactoriamente.
Un saludo . .brinda .brinda .brinda .brinda
"Si estas ausente durante mi lucha, no esperes estar presente durante mi éxito."

Desconectado revenido

  • Ayudante
  • **
  • Join Date: Oct 2011
  • Mensajes: 89
  • Ubicación: San Sebastian de los Reyes Madrid España
Re:LinuxCNC comentado en castellano
« Respuesta #39 en: 02 Abril 2017, 08:57 »
abu un excelente aporte.
He seguido tu ultimo video
pero me decia que el comando lshw no existia
para ello he tenido que instalarlo, entrando como superusuario y tecleando aptitude install lshw


Saludos revenido.
Torno Optimum D240x500   Fresadora Helfer FV25

abu

  • Visitante
Re:LinuxCNC comentado en castellano
« Respuesta #40 en: 02 Abril 2017, 13:13 »
abu al ordenador se le ha tenido que joder un cuarto de de la unica neurona que le queda ;D ;D ;D ;D , por que el sonido es fatal y la imagen en esta ultima entrega esta de pena.
Si necesitas un micro nuevo te mando uno, lo de la imagen es mas complicado. ;D ;D ;D
 Espero que lo puedas solucionar satisfactoriamente.
Un saludo . .brinda .brinda .brinda .brinda
Estimado Sr. D. MachoteHispanico, se agradece enormemente su altruista oferta de un micro nuevo. ¿Puede ser un AMD Ryzen 7 1800X? ;D ;D ;D ;D ;D.
En cuanto a lo de la imagen, voy a proponerle a mi señora quitarme la barba y bigote o perder barriga. Lo mismo asi mejoramos........lo de la imagen, digo :P :P ;D ;D :P :P.

Bromas aparte...........si, ya se que el audio no es dolby-sensuround, pero yo lo escucho bien con los auriculales+microfono Logitech de los años 90 que tengo. Mirare el tema, a ver que puedo hacerle. Y sobre la imagen, poco que hacer. Youtube comprime el video con la consiguiente perdida y sobre eso nadie tiene control. Recomiendo poner youtube en pantalla completa.......se ve perfecto  .bien

Respecto a lo que comenta revenido..........pues es verdad. lshw no viene instalado por defecto. Se monta como bien el dice o, sin meterse en cuenta de superusuario, con:
> sudo apt-get install lshw

« última modificación: 02 Abril 2017, 13:20 por abu »

abu

  • Visitante
Re:LinuxCNC comentado en castellano
« Respuesta #41 en: 24 Abril 2017, 19:22 »
Movido todo a un blog

https://lnxcncfma.wordpress.com/

Queda todo mas "ordenadito".
De momento no hay alli ningun video, solo texto. Pero todo se andara.  .bien

abu

  • Visitante
Re:LinuxCNC comentado en castellano
« Respuesta #42 en: 15 Julio 2017, 20:17 »
No..........ni me he muerto ni he abandonado el tema............... :P
Lo que ocurre es que linuxcnc no tiene tripas................ES UNA CASQUERIA ENTERA ;D ;D ;D ;D

En serio........es un trabajo de narices, pero apasionantisimo. Y claro, es lo que tiene eso de aprovechar los ratos perdidos..........que la cosa corre poco :(

Me vais a permitir colgar un copy-paste de la ultima entrada del blog (siempre en "edicion" ,hasta nueva orden.....) porque en el ultimo enlace hay un "especimen arqueologico" de los que nos gustan a los frikis de mi calaña  ;D


Sitios, sitios y…..sitios
15 julio, 2017 ~ jgardeto   ~ Editar "Sitios, sitios y…..sitios"   

Sitios de interés relacionados con el contenido de este blog. No necesariamente en orden de visita.

Completísimo, maravillosamente escrito y mejor estructurado curso de C++. Ingles.

http://www.learncpp.com/

Biblioteca Real-time Control System (RCS) del NIST (National Institute of Standards and Technology, entidad dependiente del Departamento de Comercio del gobierno estadounidense). Las comunicaciones entre los procesos de linuxCNC estan basadas en esta biblioteca.

https://www.nist.gov/el/intelligent-systems-division-73500/networked-control-systems-group/real-time-control-systems

La maquina del tiempo de las paginas web.

https://archive.org

La biblioteca RCS contine documentacion  sobre las matematicas precisas para el tratamiento de posiciones, rotaciones, and translaciones en diferentes tipos de sistemas de coordenadas, asi como las funciones para operaciones y conversiones entre ello. Es una parte de enorme importancia en linuxCNC. La documentacion referida se encuentra en:

https://www.nist.gov/el/intelligent-systems-division-73500/networked-control-systems-group/pose-mathematics-path-planning

Existe una referencia a una serie de ejemplos de esta parte de la biblioteca RCS; Karl Murphy’s Posemath Examples, pero el enlace no funciona. Debido al interes que deberia tener el tema, he buscado esos ejemplos en archive.org………y alli estaban, como era de esperar.

http://web.archive.org/web/20120412201014/http://www.isd.mel.nist.gov:80/projects/rcslib/posemath_examples.html

Año 1991……Ahhhhhhhh…….que tiempos aquellos………o no.

Queda nada para que este documento tenga……… TREINTA AÑOS……..

Aun asi, su importancia historica (para el entonces EMC y hoy linuxCNC) es de destacar y merecedora de un enlace propio. Ni mas ni menos que el reporte final sobre el recien nacido…, que digo…..sobre el parto del Next Generation Controller. A ver de donde si no sale lo de RS232NGC 🙂

https://ia601600.us.archive.org/26/items/nistsupporttonex4888albu/nistsupporttonex4888albu.pdf
[/i]

abu

  • Visitante
Re:LinuxCNC comentado en castellano
« Respuesta #43 en: 08 Noviembre 2017, 13:52 »
Que no........
Que sigo con el "tema"
Que no abandono  ;D ;D

Cambio de tercio. Abandono la idea del blog. Es difícil de organizar, y mas de leer en cierto orden.
Así que voy a escribir un libro  :o :o :o :o  por amor al arte  8) 8) 8) 8)

Suena a coña, pero ya llevo mas de 100 paginas. Aqui el indice de lo que llevo hecho.

Indice

PROGRAMACION; CONCEPTOS PREVIOS

El C++
Punteros
      Declaración de punteros
Enumeraciones
Estructuras
Clases


CAPITULO I. LOS CIMIENTOS DE LINUXCNC.

XDR: Estándar de Representación de Datos Externos
      Los mensajes
Real-Time Control System (RCS)
      Documentos de referencia
      xxx
      Metodología
xxxx
Listas enlazadas; la clase LinkedList
CMS
NML. El lenguaje de mensajes neutros.
      Introducción
      Clases y ficheros de cabecera
La librería Pose Mathematics


CAPITULO II. LA INFRAESTRUCTURA

Directorios de fuentes
Librerías
      La librería libnml.so.0

CAPITULO III. EL ARRANQUE.
El script linuxcnc
El servidor linuxcncsvr
      El archivo fuente  emc/task/emcsvr.cc
      Ficheros de cabecera
      Definiciones
      main
      Super server
.
.
.
y seguira....

Como muestra de esta locura, unas paginillas de la librería Pose Mathematics. Como vereis, se necesita una base teorica de matematicas y programacion
bastante "solida". Lo siento por los forofos de lo "practico".......pero esto es lo que hay   :( :(

https://www.dropbox.com/preview/foro_ma/preview.doc?role=personal

Ni puñetera idea de cuando estará disponible una "versión beta", asi que no pregunteis  ;D ;D

Y por supuesto, si alguien esta especialmente interesado y se ve con ganas y conocimientos para colaborar........que no dude en mandarme un mensaje .bien

Desconectado TEAM RURAL

  • Gurú
  • ******
  • Join Date: Ene 2017
  • Mensajes: 12865
  • Ubicación: principado asturias-Territorio Rural.
Re:LinuxCNC comentado en castellano
« Respuesta #44 en: 08 Noviembre 2017, 14:25 »
Lo del libro me parece genial..ese curro que te estas pegando muchos miles te lo agradeceremos eternamente

gracias .bien

Foro MetalAficion

Re:LinuxCNC comentado en castellano
« Respuesta #44 en: 08 Noviembre 2017, 14:25 »

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20