Guia CNC Brasil - Tudo sobre CNC, Router, Laser, Torno e 3D Print

SOFTWARES => Controle => EMC-Linux => Tópico iniciado por: jeff_pimenta em 25 de Junho de 2011, 02:43

Título: EMC2 usando Phase Drive
Enviado por: jeff_pimenta em 25 de Junho de 2011, 02:43
Olá,

Sou estudante de engenharia elétrica e a pouco tempo iniciei a construção de uma pequena fresadora para ajudar em meus projetos.

Por motivação de um professor, estou usando o ubuntu em conjunto com o emc2, porém não sei muita coisa sobre esse sistema, já que passei minha vida toda usando o windows.

A eletrõnica já está completíssima (inclusive testada no windows por um programinha que controla a porta paralela, sensores também foram testados), na mecânica só resta o eixo z, mas o que está complicando mesmo é a configuração dos pinos no emc2. Vi algo no orkut sobre como modificar, mas não adiantou muita coisa, pois no diretório que ele pede pra modificar os arquivos eu não consigo encontrá-los.

Estou usando a versão do ubuntu 10.10 e a última versão do emc2.

Peço ajuda aos senhores para que eu possa resolver meu problema.

Abraços.
Título: Re:EMC2 usando Phase Drive
Enviado por: C N C N o w ! em 25 de Junho de 2011, 07:40

Procure no menu Aplicativos / CNC / StepConf Wizard ... é bem intuitivo, creio que não encontrará muitas dificuldades para configurar.
Título: Re:EMC2 usando Phase Drive
Enviado por: minilathe em 25 de Junho de 2011, 07:54

O gerador de passos do EMC (módulo "stepgen") pode ser ajustado em varios modos (passo+dir, phase drive, ...). No "Integrator Manual" do EMC, na página 74 voce encontra essa informação que precisa. A configuração deve ser feita no arquivo "*.hal".
Título: Re:EMC2 usando Phase Drive
Enviado por: minilathe em 25 de Junho de 2011, 09:42
Acho que tem muita coisa já explicada no seguinte tópico:

http://www.guiacnc.com.br/index.php/topic,6140.msg111916.html#msg111916 (http://www.guiacnc.com.br/index.php/topic,6140.msg111916.html#msg111916)
Título: Re:EMC2 usando Phase Drive
Enviado por: jeff_pimenta em 25 de Junho de 2011, 12:23
Olá,

Aparentemente eu estava usando as palavras chaves erradas...

Porém, continuo sem muito avanço, não consigo localizar os arquivos. Pelo que vejo a cada nova versão muitos arquivos mudam de nome e de diretório.

Segue em anexo o desenho da placa e o esquemático que estou usando.

O motor de passo que uso é este do link: http://produto.mercadolivre.com.br/MLB-184487203-motor-de-passo-astrosyn-17ps-mo18-g1v-para-automacao-ou-cnc-_JM (http://produto.mercadolivre.com.br/MLB-184487203-motor-de-passo-astrosyn-17ps-mo18-g1v-para-automacao-ou-cnc-_JM)

Só uma pequena correção, nos resistores dos sensores, inicialmente eram de 1K, mas esse valor se mostrou um pouco alto. Substitua os resistores por um valor abaixo disso (470R) e tudo funciona perfeito.

Abraços.

Editado:

Fiz mais alguns avanços para configurar o emc,vi no manual dele os modos de passos. Escolhi o modo 9, passo cheio para motor unipolar mas de acordo com o post do cientista13 neste post http://www.guiacnc.com.br/index.php/topic,6140.msg111916.html#msg111916 (http://www.guiacnc.com.br/index.php/topic,6140.msg111916.html#msg111916)

Preciso redefinir os pinos que controlam os motores  os pinos dos sensores. Se estou certo o modo de passo é configurado no arquivo CNC.hal(provavelmente esse "CNC" é do nome da maquina) Mas teoricamente os pinos seriam onfigurados pelo arquivo "stander_pinout.hal", porém este arquivo não existe na minha versão do emc.

Estou prontamente para responder qualquer dúvida.
Abraços.
Título: Re:EMC2 usando Phase Drive
Enviado por: gimbabf em 26 de Junho de 2011, 17:57

   Jeff,
   na sua primeira menssagem diz que está usando o Ubuntú 10.10
  confira a versão do ubntú, pois a versão correta para usar com o EMC2 é a 10.04, a 10.10 não serve e com certeza vai dar erro
Título: Re:EMC2 usando Phase Drive
Enviado por: jeff_pimenta em 26 de Junho de 2011, 23:25
Olá,

A versão que possuo do ubuntu é mesmo a 10.10, porém tenho um disco de boot já com o emc e o ubuntu.

Já consegui executar esse disco e também o emc, porém não consigo configurar os pinos para controlar os motores.

hoje terminei o eixo y da máquina, o que sobe e desce a micro retífica. Amanhã eu irei fazer o acoplamento deste com o resto da máquina. Terminando isto só resta configurar o emc.

Abraços.
Título: Re:EMC2 usando Phase Drive
Enviado por: minilathe em 26 de Junho de 2011, 23:33

Voce já leu o "Integrator Manual" do EMC? A configuração do "stepgen" está explicada nas páginas 74 a 76:

www.linuxcnc.org/docs/EMC2_Integrator_Manual.pdf (http://www.linuxcnc.org/docs/EMC2_Integrator_Manual.pdf)
Título: Re:EMC2 usando Phase Drive
Enviado por: minilathe em 27 de Junho de 2011, 00:23
O "stepgen" deverá ser configurado para acionar 4 fases em "half-step" (acionamento tipo 9) ou em "full-step" (acionamento tipo 5). Mais informações:

http://www.guiacnc.com.br/index.php?action=post;topic=8920.0;last_msg=142828 (http://www.guiacnc.com.br/index.php?action=post;topic=8920.0;last_msg=142828)

Exemplo, no seu arquivo "*.hal", as linhas de carregamento do stepgen e de definição dos sinais e bits da porta paralela deverão ser conforme a seguir. Atente que no arquivo "hal" há outras linhas, essas a seguir são as que devem ser incluidas e modificadas. Não verifquei se os pinos da paralela que eu defini abaixo batem com o esquema de sua controladora. Que tal voce fazer isso??



#Instanciar 3 acionadores (eixos) de motor de passo usando phase drive e half-step:

loadrt stepgen step_type=9,9,9

#Criando pinos para acionar as fases dos motores:

net XA <= stepgen.0.phase-A
net XB <= stepgen.0.phase-B
net XC <= stepgen.0.phase-C
net XD <= stepgen.0.phase-D

net YA <= stepgen.1.phase-A
net YB <= stepgen.1.phase-B
net YC <= stepgen.1.phase-C
net YD <= stepgen.1.phase-D

net ZA <= stepgen.2.phase-A
net ZB <= stepgen.2.phase-B
net ZC <= stepgen.2.phase-C
net ZD <= stepgen.2.phase-D

# Associando os pinos aos sinais da porta paralela:

net XA => parport.0.pin-02-out
net XB => parport.0.pin-03-out
net XC => parport.0.pin-04-out
net XD => parport.0.pin-05-out

net YA => parport.0.pin-06-out
net YB => parport.0.pin-07-out
net YC => parport.0.pin-08-out
net YD => parport.0.pin-09-out

net ZA => parport.0.pin-01-out
net ZB => parport.0.pin-14-out
net ZC => parport.0.pin-16-out
net ZD => parport.0.pin-17-out

Título: Re:EMC2 usando Phase Drive
Enviado por: jeff_pimenta em 27 de Junho de 2011, 09:03
Olá minilathe,

Eu li sim o manual do emc, mas ainda estava obscuro o modo de como eu iria fazer os links no programa. Não estava conseguindo associar os comandos da teoria para a prática.

No caso como eu estou usando o modo phase driver, não há como usar o wizard para testar os eixos correto?

Se eu entendi o manual corretamente, eu substituo os campos que o senhor colocou no exemplo como 1, 2, 3  e 4, sendo os pinos da porta de minha controladora.

Quais as configurações que os senhores usam em seus sensores? Os senhores costumam usar a função debounce do emc?

Verifique o link que o senhor mandou, pois acho que o copipaste não deu certo ;)

Hoje pela tarde estarei testando a máquina, assim que obter algo eu posto!

Abraços
Título: Re:EMC2 usando Phase Drive
Enviado por: minilathe em 27 de Junho de 2011, 11:27
Jeff,

Use o stepconf para configurar seu CNC no modo step/dir. Realmente, o stepconf não configura o controle phase drive. Mas use a configuração como ponto de partida e as informações que eu passei. Ok??
Título: Re:EMC2 usando Phase Drive
Enviado por: jeff_pimenta em 27 de Junho de 2011, 13:53
Olá,

Fiz de acordo com o código fornecido anteriormente, pinos da controladora configurados corretamente para cada eixo, porém ao iniciar o emc ele retorna uma janela de erro. Entre as várias linhas, esta me chamou a atenção:

(http://i54.tinypic.com/sl6v7n.png)

Estou lendo com toda atenção o arquivo de configuração do emc, mas sem ajuda a coisa não anda...

Abraços
Título: Re:EMC2 usando Phase Drive
Enviado por: minilathe em 27 de Junho de 2011, 14:17
Jeff,

Conforme lhe falei, o arquivo de configuração contêm mais coisa, por isso esta travando. Esqueça a phase drive e configure uma interface usando L297/L298. Carregue via EMC e verique se roda sem travar.

Em seguida, envie seu arquivo hal para as devidas modificações.


Título: Re:EMC2 usando Phase Drive
Enviado por: jeff_pimenta em 27 de Junho de 2011, 14:59
Olá,

Eu consegui rodar legal o EMC com as configurações do wizard, mas como estava configurado para step dir, obviamente a máquina não funcionou.

Esta mensagem foi exibida após a inserção dos comandos que me foram sugeridos.

Estou estudando o "protocolo" de comandos e está ficando mais fácil entender o conjunto.

Editado:

O emc diz que o "stepgen.0.phase-A" não existe. Achei estranho, pois vi no manual exatamente deste jeito...

Se eu entendi bem ele "linka" o sinal à uma variável e depois linka a variável ao pino.

Abraços.
Título: Re:EMC2 usando Phase Drive
Enviado por: minilathe em 27 de Junho de 2011, 15:36
Não funcionou pois sua placa é phase drive.

Vou repetjr pela 3a. vez, envie seu arquivo hal. Ok?
Título: Re:EMC2 usando Phase Drive
Enviado por: jeff_pimenta em 27 de Junho de 2011, 15:39
Olá,

Eu já estava prevendo que não funcionaria. Só testei pra ver se o programa roda legal no PC

Veja a edição da minha última mensagem, há atualizações.

Abraços
Título: Re:EMC2 usando Phase Drive
Enviado por: minilathe em 27 de Junho de 2011, 20:20
Gerei um arquivo pelo Stepconf e editei à mão, agora não dá mais erros com o EMC2.

# Generated by stepconf at Mon Jun 27 19:49:33 2011
# If you make changes to this file, they will be
# overwritten when you run stepconf again

# 27/06/2011 - Modificado por minilathe - edite manualmente apenas!!
# Implementação de phase drive no EMC2
# Não use Stepconf!! Ou irá danificar este arquivo.

loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt probe_parport
loadrt hal_parport cfg="0x378 out  "
setp parport.0.reset-time 500
loadrt stepgen step_type=9,9,9

addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread

addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
net spindle-cmd <= motion.spindle-speed-out

#Criando pinos para acionar as fases dos motores:

net XA <= stepgen.0.phase-A
net XB <= stepgen.0.phase-B
net XC <= stepgen.0.phase-C
net XD <= stepgen.0.phase-D

net YA <= stepgen.1.phase-A
net YB <= stepgen.1.phase-B
net YC <= stepgen.1.phase-C
net YD <= stepgen.1.phase-D

net ZA <= stepgen.2.phase-A
net ZB <= stepgen.2.phase-B
net ZC <= stepgen.2.phase-C
net ZD <= stepgen.2.phase-D

# Associando os pinos aos sinais da porta paralela:

net XA => parport.0.pin-02-out
net XB => parport.0.pin-03-out
net XC => parport.0.pin-04-out
net XD => parport.0.pin-05-out

net YA => parport.0.pin-06-out
net YB => parport.0.pin-07-out
net YC => parport.0.pin-08-out
net YD => parport.0.pin-09-out

net ZA => parport.0.pin-01-out
net ZB => parport.0.pin-14-out
net ZC => parport.0.pin-16-out
net ZD => parport.0.pin-17-out

# Parametrização de cada gerador de passo (x,y,z) - módulos stepgen

setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
net xpos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb => axis.0.motor-pos-fb
net xenable axis.0.amp-enable-out => stepgen.0.enable

setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
net ypos-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb => axis.1.motor-pos-fb
net yenable axis.1.amp-enable-out => stepgen.1.enable

setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb => axis.2.motor-pos-fb
net zenable axis.2.amp-enable-out => stepgen.2.enable

net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in

loadusr -W hal_manualtoolchang e
net tool-change iocontrol.0.tool-change => hal_manualtoolchang e.change
net tool-changed iocontrol.0.tool-changed <= hal_manualtoolchang e.changed
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchang e.number
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
Título: Re:EMC2 usando Phase Drive
Enviado por: cientista13 em 27 de Junho de 2011, 21:04
Jef só por curiosidade, tentou usar os arquivos que eu postei no outro tópico? http://www.guiacnc.com.br/index.php/topic,6140.msg111916.html#msg111916 (http://www.guiacnc.com.br/index.php/topic,6140.msg111916.html#msg111916)

Usou? nao funcionou? Porque? que erro deu?

Pergunto pois está usando versão mais recente do ubuntu e EMC2, a configuração que fiz foi para a versão do Ubuntu 8.04 + EMC2, versão V2.2.5. A principio deveria funcionar, mas se náo funciona, eu também fico curioso em saber e tentar resolver.

PS aconselho usar meio passo
 loadrt stepgen step_type=9,9,9
no arquivo *.hal
Título: Re:EMC2 usando Phase Drive
Enviado por: jeff_pimenta em 27 de Junho de 2011, 23:36
Olá,

Acabei de fazer o primeiro teste, rodou legal!!

Amanhã eu posto detalhes da construção e mais algumas dúvidas.

Obrigado a todos que tornaram meu projeto possível!

Editado:

minilathe,

O código que o senhor postou inicialmente estava faltando o "in" depois de "enable-", com esta correção o programa funcionou legal.

Na segunda versão (foram adicionadas as 4 útimas linhas) o programa não funcionou, então eu simplesmente ignorei estas e rodei o emc. Atualmente estou usando um programa com as últimas quatro linhas que faltara.

Queria saber como funciona a troca de ferramenta, quais os movimentos que a máquina faz ao ser executados os comandos suprimidos.

cientista13,

Seu arquivo não funciona na minha versão, o que uso tem todas as configurações em um único arquivo, mas a sua versão serve para ter como base e configurar as versões mais novas.

Existe algum "hello word" para máquinas cnc? Fiquei curioso se existe algum projetinho interessante de se fazer.

Vou tentar conseguir uma câmera para postar um vídeo de minha máquina aqui no fórum.

Segue em anexo as minhas configurações da CNC.

Abraços.
Título: Re:EMC2 usando Phase Drive
Enviado por: minilathe em 20 de Julho de 2011, 22:28
Jeff,

As 4 ou 5 últimas linhas são dispensáveis, referem-se ao aplicativo de troca de ferramenta manual do EMC.

Eu nunca usei a troca de ferramenta (manual), mas acho que a idéia é definir uma posição (coordenadas x,y,z), onde ocorrerá a troca de ferramenta, quando houver um comando de troca de ferramenta em seu programa em G-code.
Título: Re:EMC2 usando Phase Drive
Enviado por: jeff_pimenta em 01 de Setembro de 2011, 13:41
Segue um pequeno vídeo de teste:

CNC caseira + EMC2 (http://www.youtube.com/watch?v=HHMImKO5Nag#)
Título: Re:EMC2 usando Phase Drive
Enviado por: minilathe em 01 de Setembro de 2011, 16:49
Jefferson,

Parabéns pela máquina!!
Título: Re:EMC2 usando Phase Drive
Enviado por: pic-cnc em 06 de Novembro de 2011, 22:39
Olá pessoal, meu nome é Leonardo, venho acompanhando fórum há alguns meses, sou novato em CNC, estou montando uma de madeira, gostaria de uma ajuda para configurar o EMC2 versão: 2.4.6 >> Ubuntu 10.04.

Configuração do PC:

PC Chips A15G - V1.0, memória 1gb, HD 500gb

Placas CNC: N-Labs Phase-drive-5-i + R-1.0

(http://i44.tinypic.com/11splhx.jpg)





Instalei o Ubuntu CNC e não consegui fazer o motor girar, o máximo que consigo é um passo somente, depois de alguns dias pesquisando consegui 1 passo para direita e outro para esquerda.
Lendo as dicas aqui do fórum, percebi que precisava de configurar o EMC2 para Phase-drive. Segui os passos descritos para configurar a Phase-drive, muito bem explanado pelo Cientista13 no tópico:
http://www.guiacnc.com.br/index.php/topic,6140.msg111916.html#msg111916 (http://www.guiacnc.com.br/index.php/topic,6140.msg111916.html#msg111916)

No meu caso apresentou o erro:

Print file information:
RUN_IN_PLACE=no
EMC2_DIR=
EMC2_BIN_DIR=/usr/bin
EMC2_TCL_DIR=/usr/share/emc/tcl
EMC2_SCRIPT_DIR=
EMC2_RTLIB_DIR=/usr/realtime-2.6.32-122-rtai/modules/emc2
EMC2_CONFIG_DIR=
EMC2_LANG_DIR=/usr/share/emc/tcl/msgs
INIVAR=inivar
HALCMD=halcmd
EMC2_EMCSH=/usr/bin/wish8.5
EMC2 - 2.4.6
Machine configuration directory is '/home/leo/emc2/configs/Phase_drive'
Machine configuration file is 'phase_drive.ini'
INIFILE=/home/leo/emc2/configs/Phase_drive/phase_drive.ini
PARAMETER_FILE=stepper.var
EMCMOT=motmod
EMCIO=io
TASK=milltask
HALUI=
DISPLAY=axis
NML_FILE=emc.nml
Starting EMC2...
Starting EMC2 server program: emcsvr
Loading Real Time OS, RTAPI, and HAL_LIB modules
Starting EMC2 IO program: io
Starting EMC2 TASK program: milltask
Starting EMC2 DISPLAY program: axis
libnml/buffer/physmem.cc 143: PHYSMEM_HANDLE: Can't write 10748 bytes at offset 60 from buffer of size 10208.
libnml/cms/cms_in.cc 1383: CMS:(emcStatus) Error writing 10748 bytes to global memory at offset 855DCB8
 (See  libnml/cms/cms_in.cc line 1386.)

**********************************************************
* Current Directory = /home/leo/emc2/configs/Phase_drive
*
**********************************************************
* BufferName = emcStatus
* BufferType = 0
* ProcessName = emc
* Configuration File = emc.nml
* CMS Status = -3 (CMS_INTERNAL_ACCESS _ERROR: An error occured during an internal access function. )
* Recent errors repeated:

PHYSMEM_HANDLE: Can't write 10748 bytes at offset 60 from buffer of size 10208.

CMS:(emcStatus) Error writing 10748 bytes to global memory at offset 855DCB8
 (See  libnml/cms/cms_

* BufferLine: B emcStatus             SHMEM   localhost       10240   0       0       2       16 1002 TCP=5005 xdr
* ProcessLine: P emc           emcStatus       LOCAL   localhost       W       0       1.0     0       0
* error_type = 5 (NML_INTERNAL_CMS_ER ROR)
************************************************************

libnml/buffer/physmem.cc 143: PHYSMEM_HANDLE: Can't write 10748 bytes at offset 60 from buffer of size 10208.
libnml/cms/cms_in.cc 1383: CMS:(emcStatus) Error writing 10748 bytes to global memory at offset 855DCB8
 (See  libnml/cms/cms_in.cc line 1386.)
libnml/buffer/physmem.cc 143: PHYSMEM_HANDLE: Can't write 10748 bytes at offset 60 from buffer of size 10208.
libnml/cms/cms_in.cc 1383: CMS:(emcStatus) Error writing 10748 bytes to global memory at offset 855DCB8
 (See  libnml/cms/cms_in.cc line 1386.)
libnml/buffer/physmem.cc 143: PHYSMEM_HANDLE: Can't write 10748 bytes at offset 60 from buffer of size 10208.
libnml/cms/cms_in.cc 1383: CMS:(emcStatus) Error writing 10748 bytes to global memory at offset 855DCB8
 (See  libnml/cms/cms_in.cc line 1386.)
libnml/buffer/physmem.cc 143: PHYSMEM_HANDLE: Can't write 10748 bytes at offset 60 from buffer of size 10208.
libnml/cms/cms_in.cc 1383: CMS:(emcStatus) Error writing 10748 bytes to global memory at offset 855DCB8
 (See  libnml/cms/cms_in.cc line 1386.)
libnml/buffer/physmem.cc 143: PHYSMEM_HANDLE: Can't write 10748 bytes at offset 60 from buffer of size 10208.
libnml/cms/cms_in.cc 1383: CMS:(emcStatus) Error writing 10748 bytes to global memory at offset 855DCB8
 (See  libnml/cms/cms_in.cc line 1386.)
libnml/buffer/physmem.cc 143: PHYSMEM_HANDLE: Can't write 10748 bytes at offset 60 from buffer of size 10208.
libnml/cms/cms_in.cc 1383: CMS:(emcStatus) Error writing 10748 bytes to global memory at offset 855DCB8
 (See  libnml/cms/cms_in.cc line 1386.)
libnml/buffer/physmem.cc 143: PHYSMEM_HANDLE: Can't write 10748 bytes at offset 60 from buffer of size 10208.
libnml/cms/cms_in.cc 1383: CMS:(emcStatus) Error writing 10748 bytes to global memory at offset 855DCB8
 (See  libnml/cms/cms_in.cc line 1386.)
libnml/buffer/physmem.cc 143: PHYSMEM_HANDLE: Can't write 10748 bytes at offset 60 from buffer of size 10208.
libnml/cms/cms_in.cc 1383: CMS:(emcStatus) Error writing 10748 bytes to global memory at offset 855DCB8
 (See  libnml/cms/cms_in.cc line 1386.)
libnml/buffer/physmem.cc 143: PHYSMEM_HANDLE: Can't write 10748 bytes at offset 60 from buffer of size 10208.
libnml/cms/cms_in.cc 1383: CMS:(emcStatus) Error writing 10748 bytes to global memory at offset 855DCB8
 (See  libnml/cms/cms_in.cc line 1386.)
libnml/buffer/physmem.cc 143: PHYSMEM_HANDLE: Can't write 10748 bytes at offset 60 from buffer of size 10208.
libnml/cms/cms_in.cc 1383: CMS:(emcStatus) Error writing 10748 bytes to global memory at offset 855DCB8
 (See  libnml/cms/cms_in.cc line 1386.)
libnml/buffer/physmem.cc 143: PHYSMEM_HANDLE: Can't write 10748 bytes at offset 60 from buffer of size 10208.
libnml/cms/cms_in.cc 1383: CMS:(emcStatus) Error writing 10748 bytes to global memory at offset 855DCB8
 (See  libnml/cms/cms_in.cc line 1386.)
libnml/buffer/physmem.cc 143: PHYSMEM_HANDLE: Can't write 10748 bytes at offset 60 from buffer of size 10208.
libnml/cms/cms_in.cc 1383: CMS:(emcStatus) Error writing 10748 bytes to global memory at offset 855DCB8
 (See  libnml/cms/cms_in.cc line 1386.)
libnml/buffer/physmem.cc 143: PHYSMEM_HANDLE: Can't write 10748 bytes at offset 60 from buffer of size 10208.
libnml/cms/cms_in.cc 1383: CMS:(emcStatus) Error writing 10748 bytes to global memory at offset 855DCB8
 (See  libnml/cms/cms_in.cc line 1386.)
libnml/buffer/physmem.cc 143: PHYSMEM_HANDLE: Can't write 10748 bytes at offset 60 from buffer of size 10208.
libnml/cms/cms_in.cc 1383: CMS:(emcStatus) Error writing 10748 bytes to global memory at offset 855DCB8
 (See  libnml/cms/cms_in.cc line 1386.)
libnml/buffer/physmem.cc 143: PHYSMEM_HANDLE: Can't write 10748 bytes at offset 60 from buffer of size 10208.

Maximum number of errors to print exceeded!
waiting for s.axes
waiting for s.axes
waiting for s.axes
waiting for s.axes
waiting for s.axes
waiting for s.axes
waiting for s.axes
waiting for s.axes
waiting for s.axes
Shutting down and cleaning up EMC2...
Killing task emcsvr, PID=2522
Killing task milltask, PID=2570
Removing HAL_LIB, RTAPI, and Real Time OS modules
Removing NML shared memory segments
Cleanup done

Debug file information:
Unrecognized line skipped: POC     FMS     LEN     DIAM    COMMENT
A configuration error is preventing emc2 from starting.
More information may be available when running from a terminal.
2522
  PID TTY      STAT   TIME COMMAND
2570
  PID TTY      STAT   TIME COMMAND
Stopping realtime threads
Unloading hal components

Kernel message information:
[ 3879.386374] I-pipe: Domain RTAI registered.
[ 3879.386385] RTAI[hal]: <3.8.1> mounted over IPIPE-NOTHREADS 2.6-03.
[ 3879.386387] RTAI[hal]: compiled with gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) .
[ 3879.386393] RTAI[hal]: mounted (IPIPE-NOTHREADS, IMMEDIATE (INTERNAL IRQs DISPATCHED), ISOL_CPUS_MASK: 0).
[ 3879.386395] PIPELINE layers:
[ 3879.386398] fafcce20 9ac15d93 RTAI 200
[ 3879.386400] c085cb20 0 Linux 100
[ 3879.411695] RTAI[malloc]: global heap size = 2097152 bytes, <BSD>.
[ 3879.411864] RTAI[sched]: IMMEDIATE, MP, USER/KERNEL SPACE: <with RTAI OWN KTASKs>, kstacks pool size = 524288 bytes.
[ 3879.411869] RTAI[sched]: hard timer type/freq = APIC/12557835(Hz); default timing: periodic; linear timed lists.
[ 3879.411872] RTAI[sched]: Linux timer freq = 250 (Hz), TimeBase freq = 2109725000 hz.
[ 3879.411875] RTAI[sched]: timer setup = 999 ns, resched latency = 2943 ns.
[ 3879.412052] RTAI[usi]: enabled.
[ 3879.519850] RTAI[math]: loaded.
[ 3879.614638] config string '0x0378'
[ 3886.197812] RTAI[math]: unloaded.
[ 3886.273660] SCHED releases registered named ALIEN RTGLBH
[ 3886.289656] RTAI[malloc]: unloaded.
[ 3886.388025] RTAI[sched]: unloaded (forced hard/soft/hard transitions: traps 0, syscalls 0).
[ 3886.393694] I-pipe: Domain RTAI unregistered.
[ 3886.393703] RTAI[hal]: unmounted.





Estou na dúvida se o problema encontra-se na versão do EMC2 ou na configuração dos pinos da porta paralela.

Toda e qualquer ajuda será bem vinda!

Título: Re:EMC2 usando Phase Drive
Enviado por: minilathe em 07 de Novembro de 2011, 00:03

Dê uma olhada no código que eu envie neste tópico, que se você ler, verá que foi recentemente testado e funcionou. O código que o cientista enviou é para uma versão antiga do EMC.
Título: Re:EMC2 usando Phase Drive
Enviado por: pic-cnc em 07 de Novembro de 2011, 12:13

Dê uma olhada no código que eu envie neste tópico, que se você ler, verá que foi recentemente testado e funcionou. O código que o cientista enviou é para uma versão antiga do EMC.

Caro Minilathe, eu li sim, ontem tentei por duas vezes sem sucesso.
Com a cabeça mais fresca hoje, percebi que misturei as alterações do Cientista com as suas, nem percebi isso!
Retornarei as congurações do EMC2 ao estado original para aplicar "somente" as suas.
Obrigado pela atenção!
Título: Re:EMC2 usando Phase Drive
Enviado por: pic-cnc em 07 de Novembro de 2011, 14:42
Minilathe, estou perdido com os passos que devo seguir, porém configurei uma interface L297 (como descrito em post anterior), carreguei via EMC ao rodar apresentou o erro informando que o eixo Z excede o limite do programa, depois de pesquisar aqui no fórum, finalmente consegui alterar o limite do eixo Z no arquivo ".ini", rodou perfeitamente.
Em seguida fiz as alterações manualmente no aquivo ".hal" e ao tentar abrir o EMC gerou o seguinte erro:

Print file information:
RUN_IN_PLACE=no
EMC2_DIR=
EMC2_BIN_DIR=/usr/bin
EMC2_TCL_DIR=/usr/share/emc/tcl
EMC2_SCRIPT_DIR=
EMC2_RTLIB_DIR=/usr/realtime-2.6.32-122-rtai/modules/emc2
EMC2_CONFIG_DIR=
EMC2_LANG_DIR=/usr/share/emc/tcl/msgs
INIVAR=inivar
HALCMD=halcmd
EMC2_EMCSH=/usr/bin/wish8.5
EMC2 - 2.4.6
Machine configuration directory is '/home/leo/emc2/configs/teste-18'
Machine configuration file is 'teste-18.ini'
INIFILE=/home/leo/emc2/configs/teste-18/teste-18.ini
PARAMETER_FILE=emc.var
EMCMOT=motmod
EMCIO=io
TASK=milltask
HALUI=
DISPLAY=axis
NML_FILE=
Starting EMC2...
Starting EMC2 server program: emcsvr
Loading Real Time OS, RTAPI, and HAL_LIB modules
Starting EMC2 IO program: io
Shutting down and cleaning up EMC2...
Killing task emcsvr, PID=6134
Removing HAL_LIB, RTAPI, and Real Time OS modules
Removing NML shared memory segments
Cleanup done

Debug file information:
teste-18.hal:79: execv(hal_manualtoolchang): No such file or directory
teste-18.hal:79: hal_manualtoolchang exited without becoming ready
6134
  PID TTY      STAT   TIME COMMAND
Stopping realtime threads
Unloading hal components

Kernel message information:
[10111.624914] I-pipe: Domain RTAI registered.
[10111.624924] RTAI[hal]: <3.8.1> mounted over IPIPE-NOTHREADS 2.6-03.
[10111.624927] RTAI[hal]: compiled with gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) .
[10111.624932] RTAI[hal]: mounted (IPIPE-NOTHREADS, IMMEDIATE (INTERNAL IRQs DISPATCHED), ISOL_CPUS_MASK: 0).
[10111.624935] PIPELINE layers:
[10111.624938] fbf7ce20 9ac15d93 RTAI 200
[10111.624940] c085cb20 0 Linux 100
[10111.653032] RTAI[malloc]: global heap size = 2097152 bytes, <BSD>.
[10111.653220] RTAI[sched]: IMMEDIATE, MP, USER/KERNEL SPACE: <with RTAI OWN KTASKs>, kstacks pool size = 524288 bytes.
[10111.653225] RTAI[sched]: hard timer type/freq = APIC/12557744(Hz); default timing: periodic; linear timed lists.
[10111.653228] RTAI[sched]: Linux timer freq = 250 (Hz), TimeBase freq = 2109884000 hz.
[10111.653231] RTAI[sched]: timer setup = 999 ns, resched latency = 2944 ns.
[10111.653375] RTAI[usi]: enabled.
[10111.807756] RTAI[math]: loaded.
[10111.910498] config string '0x378 out  '
[10112.522097] RTAI[math]: unloaded.
[10112.604646] SCHED releases registered named ALIEN RTGLBH
[10112.621771] RTAI[malloc]: unloaded.
[10112.720028] RTAI[sched]: unloaded (forced hard/soft/hard transitions: traps 0, syscalls 0).
[10112.726457] I-pipe: Domain RTAI unregistered.
[10112.726466] RTAI[hal]: unmounted.


Não estranhe se eu cometi uma(s) gafe(s), sou leigo "total" em Linux, sinto-me como uma criança tentando andar.

Abraço,

Leonardo.

Título: Re:EMC2 usando Phase Drive
Enviado por: F.Gilii em 07 de Novembro de 2011, 14:58
Leonardo,

Não lí o tópico todo, pórtanto não sei o que lhe foi dito nem sugerido para proceder à algum ajuste, mas vai uma dica:
Tente ler e entender o que o sistema lhe diz...

Separei umas linhas que apontam para o problema - tente ler, entender e resolver: (grifei em vermelho a dica que o EMC te dá)

Debug file information:
teste-18.hal:79: execv(hal_manualtoolchang): No such file or directory
teste-18.hal:79: hal_manualtoolchang exited without becoming ready

Na linha 79 do arquivo teste-18.hal há um erro... corrija e rode de novo o programa e veja se dá algum erro.

Outra Dica:
O perfil do EMC com L279 não tem nada de aproveitável caso sua placa seja uma "phase drive"... atenha-se ao problema e aos arquivos pertinentes... não procure soluções em outros arquivos
Título: Re:EMC2 usando Phase Drive
Enviado por: minilathe em 07 de Novembro de 2011, 15:10
Leonardo,

Tente o seguinte:

(1) Para verificar se a sua instalação do ECM2 está ok, gere uma configuração de CNC (com motores de passo e 3 eixos) usando Stepconf. Se os arquivos ini, hal, ... forem gerados e o EMC2 rodar sem erros, então sua instalação provavelmente está ok.

(2) Substitua o conteúdo do arquivo hal gerado no passo 1 (salve o arquivo original com outro nome) pelo seu arquivo hal da placa phase drive. Que você pegou aqui no Forum. Nessa etapa poderá testar o seu arquivo hal.
Título: Re:EMC2 usando Phase Drive
Enviado por: pic-cnc em 07 de Novembro de 2011, 17:32
Ok Gilii, seguirei as suas dicas, obrigado!

Minilathe, já havia feito o procedimento (1) anteriormente ontem, rodou sem problemas, farei-o novamente com intuito de seguir o passo (2).

Minha cabeça tá pegando fogo, é que trabalho com desenvolvimento de sistemas microcontrolados.

Obrigado!

Leonardo
Título: Re:EMC2 usando Phase Drive
Enviado por: minilathe em 07 de Novembro de 2011, 17:55
Pela mensagem de erro, parece algo relacionado com a troca manual de ferramenta. No arquivo que eu enviei, basta retirar as últimas linhas, referentes a essa funcionalidade, conforme a seguir. Coloque este trecho no lugar do arquivo .hal gerado pelo Stepconf:


# 27/06/2011 - Modificado por minilathe - edite manualmente apenas!!
# Implementação de phase drive no EMC2
# Não use Stepconf!! Ou irá danificar este arquivo.

loadrt trivkins
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt probe_parport
loadrt hal_parport cfg="0x378 out  "
setp parport.0.reset-time 500
loadrt stepgen step_type=9,9,9

addf parport.0.read base-thread
addf stepgen.make-pulses base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread

addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
net spindle-cmd <= motion.spindle-speed-out

#Criando pinos para acionar as fases dos motores:

net XA <= stepgen.0.phase-A
net XB <= stepgen.0.phase-B
net XC <= stepgen.0.phase-C
net XD <= stepgen.0.phase-D

net YA <= stepgen.1.phase-A
net YB <= stepgen.1.phase-B
net YC <= stepgen.1.phase-C
net YD <= stepgen.1.phase-D

net ZA <= stepgen.2.phase-A
net ZB <= stepgen.2.phase-B
net ZC <= stepgen.2.phase-C
net ZD <= stepgen.2.phase-D

# Associando os pinos aos sinais da porta paralela:

net XA => parport.0.pin-02-out
net XB => parport.0.pin-03-out
net XC => parport.0.pin-04-out
net XD => parport.0.pin-05-out

net YA => parport.0.pin-06-out
net YB => parport.0.pin-07-out
net YC => parport.0.pin-08-out
net YD => parport.0.pin-09-out

net ZA => parport.0.pin-01-out
net ZB => parport.0.pin-14-out
net ZC => parport.0.pin-16-out
net ZD => parport.0.pin-17-out

# Parametrização de cada gerador de passo (x,y,z) - módulos stepgen

setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
net xpos-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb => axis.0.motor-pos-fb
net xenable axis.0.amp-enable-out => stepgen.0.enable

setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
net ypos-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd
net ypos-fb stepgen.1.position-fb => axis.1.motor-pos-fb
net yenable axis.1.amp-enable-out => stepgen.1.enable

setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
net zpos-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd
net zpos-fb stepgen.2.position-fb => axis.2.motor-pos-fb
net zenable axis.2.amp-enable-out => stepgen.2.enable

net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in
Título: Re:EMC2 usando Phase Drive
Enviado por: pic-cnc em 07 de Novembro de 2011, 18:52
Ok pessoal, segui os passos (1) e (2) do Minilathe, pela "minha lógica" geraria o mesmo erro do teste-18, já que o EMC independente da configuração buscaria o arquivo ".hal" apresentaria o mesmo erro, foi o que aconteu. Diante do exposto, segui a dica do Gilii, fiz a correção e rodou certinho.

O motor do eixo X trabalhou corretamente como na simulação do EMC, agora é só terminar a máquina e colocar para funcionar!

Muito obrigado Gilii, Minilathe e aos demais colaboradores do fórum.

Leonardo
Título: Re:EMC2 usando Phase Drive
Enviado por: pic-cnc em 07 de Novembro de 2011, 19:08
Complementando...

Minilathe, o erro está na troca de ferramenta nas linhas 79 a 82, gerado pelo espaço entre o "g" e o "e":

manualtoolchang e

Abraço