С Новым Годом и подарок XHC HB04

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
dinkata
Мастер
Сообщения: 1025
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

С Новым Годом и подарок XHC HB04

Сообщение dinkata »

Всем здоровье ,счастье и успехи в работе :controller:
Я хочу похвастаться ,сделал себе подарок с AliЕxpres :
XHC-HB04 wireless MPG pendant (на фото).На первий взгляд и после успешной тест очень понравилось.
Я хотел бы с ваша помощь сделат руководство как подвключит ,как настроит ини ,хал и т.д.
думаю что это интересно для многих,которьйе не так сильно понимают LinuxCNC .
Продолжит тему : http://www.cnc-club.ru/forum/viewtopic. ... t=xhc+hb04
или сделат новая ?
Здесь ,к сожалению, в английском языке :roll:
http://www.linuxcnc.org/index.php/engli ... hal-module
Вложения
XHCHB04.jpg (8038 просмотров) <a class='original' href='./download/file.php?id=39488&sid=0c66ac0cbb98e240631afc9a61214ff9&mode=view' target=_blank>Загрузить оригинал (68.58 КБ)</a>
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6599
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: С Новым Годом и подарок XHC HB04

Сообщение NightV »

dinkata писал(а):Продолжит тему : http://www.cnc-club.ru/forum/viewtopic. ... t=xhc+hb04
или сделат новая ?
так ты уже создал новую :hehehe: вот и продолжай здесь :)
Всё просто! если знаешь КАК!
Аватара пользователя
dinkata
Мастер
Сообщения: 1025
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: С Новым Годом и подарок XHC HB04

Сообщение dinkata »

Установлен Debian Wheezy LinuxCNC 2.6.4 ,потом обновил на 2.6.5.
Установил
libc6-dev
libusb-1.0-0-dev
http://wiki.linuxcnc.org/cgi-bin/wiki.p ... PG_Pendant
...Then go to the directory where you have extracted the module files and use the two following commands:
make
make install
..ето не знаю как сделат :D
Конфигурация с Stepper Wizard ,после в ини наместо DISPLAY = axis ставлю DISPLAY = gmoccapy и добавил из sim.axis.xhc-b04
(в моем случае layout = 2) строки для XHC HB04 ,подправил для 3 осей и протестировал успешно почти всех кнопок .
Пошел на станок скопироват конфиг и вьйложу сейчас .
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
Аватара пользователя
dinkata
Мастер
Сообщения: 1025
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: С Новым Годом и подарок XHC HB04

Сообщение dinkata »

Так ,вот ини:

Код: Выделить всё

# Generated by stepconf 1.1 at Tue Dec 16 16:51:51 2014
# If you make changes to this file, they will be
# overwritten when you run stepconf again

[EMC]
MACHINE = my-mill_D
DEBUG = 0

[DISPLAY]
DISPLAY = gmoccapy
PREFERENCE_FILE_PATCH = my-mill_D.pref
EDITOR = gedit
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
ARCDIVISION = 64
GRIDS = 10mm 20mm 50mm 100mm 1in 2in 5in 10in
MAX_FEED_OVERRIDE = 1.2
MIN_SPINDLE_OVERRIDE = 0.5
MAX_SPINDLE_OVERRIDE = 1.2
DEFAULT_LINEAR_VELOCITY = 13.44
MIN_LINEAR_VELOCITY = 0
MAX_LINEAR_VELOCITY = 134.41
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PROGRAM_PREFIX = /home/ddd/linuxcnc/nc_files
INCREMENTS = 5mm 1mm .5mm .1mm .05mm .01mm .005mm

[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Greyscale Depth Image
PROGRAM_EXTENSION = .py Python Script
png = image-to-gcode
gif = image-to-gcode
jpg = image-to-gcode
py = python

[TASK]
TASK = milltask
CYCLE_TIME = 0.010

[RS274NGC]
PARAMETER_FILE = linuxcnc.var

[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
COMM_WAIT = 0.010
BASE_PERIOD = 31000
SERVO_PERIOD = 1000000

[HAL]
HALUI = halui
HALFILE = my-mill_D.hal
HALFILE = xhc-hb04.tcl
HALFILE = monitor_xhc-hb04.tcl
POSTGUI_HALFILE = custom_postgui.hal

[XHC_HB04_CONFIG]
# specify layout = n for xhc-hb04-layout{n}.cfg files
layout = 2
# coords: specify 4 letters
# coords: switch labels are xyza but any unique 4 letters
#         from the set {xyxabcuvw) can be used (if the coord exists)
coords = x y z 
# lowpass settings:
# coef: slows rate of change of output,  range: 0 < coef < 1
coefs = 1 1 1 1
scales = 1 1 1 1
jogmode = normal
sequence = 1
require_pendant = yes

[XHC_HB04_BUTTONS]
# use button names according to layout file xhc-hb04-layout{n}.cfg
# note: "start-pause" is connected for standard behavior
#        controlling halui.pause/halui.resume/halui.run
# these are examples, edit as required:

goto-zero   = halui.mdi-command-00
# syntheized per-axis buttons for goto-zero button:
goto-zero-x = ""
goto-zero-y = ""
goto-zero-z = ""
goto-zero-a = ""

start-pause = std_start_pause
rewind      = halui.program.step
# probe-input for simulating a probe:
probe-z     = motion.probe-input
macro-3     = halui.mdi-command-03

half        = halui.spindle.stop
# synthesized per-axis buttons for half button:
half-x      = ""
half-y      = ""
half-z      = ""
half-a      = ""

zero        = ""
# synthesized per-axis buttons for zero button:
zero-x      = halui.mdi-command-12
zero-y      = halui.mdi-command-13
zero-z      = halui.mdi-command-14
zero-a      = halui.mdi-command-15

safe-z      = halui.mdi-command-10
# in this sim, home-all only works first time, hold down till finished:
home        = halui.home-all
macro-1     = halui.mdi-command-01
macro-2     = halui.mdi-command-02
spindle     = halui.spindle.start
step        = xhc-hb04.stepsize-up
mode        = ""
macro-6     = halui.mdi-command-06
macro-7     = halui.mdi-command-07
stop        = halui.program.stop
reset       = halui.estop.activate

[HALUI]
# these are examples, edit as required:
# a halui hal pin is created for each MDI_COMMAND below
# halui.mdi-command-00, halui.mdi-command-01,... etc
MDI_COMMAND=G0 X0 Y0 Z0
MDI_COMMAND=(debug, example: mdi-01)
MDI_COMMAND=(debug, example: mdi-02)
#03 M110: clears notifications
MDI_COMMAND=M110
MDI_COMMAND=(debug, example: mdi-04)
MDI_COMMAND=(debug, example: mdi-05)
MDI_COMMAND=(debug, example: mdi-06)
#07 M101: example print to stdout
MDI_COMMAND=M101
MDI_COMMAND=(debug, example: mdi-08)
MDI_COMMAND=(debug, example: mdi-09)
MDI_COMMAND=(debug, example: mdi-10)
MDI_COMMAND=(debug, example: mdi-11)
#12
MDI_COMMAND= G10 L20 P0 X0
#13
MDI_COMMAND= G10 L20 P0 Y0
#14
MDI_COMMAND= G10 L20 P0 Z0
#15
MDI_COMMAND= G10 L20 P0 C0


[TRAJ]
AXES = 3
COORDINATES = X Y Z
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 13.44
MAX_VELOCITY = 134.41

[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl

[AXIS_0]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 127.688172043
MAX_ACCELERATION = 250.0
STEPGEN_MAXACCEL = 312.5
SCALE = 240.0
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = -0.001
MAX_LIMIT = 410.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = -10.000000
HOME_LATCH_VEL = 2.083333
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1

[AXIS_1]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 127.688172043
MAX_ACCELERATION = 350.0
STEPGEN_MAXACCEL = 437.5
SCALE = 240.0
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = -0.001
MAX_LIMIT = 500.0
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = -15.000000
HOME_LATCH_VEL = 2.083333
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 2

[AXIS_2]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 100.0
MAX_ACCELERATION = 200.0
STEPGEN_MAXACCEL = 250.0
SCALE = 200.0
FERROR = 1
MIN_FERROR = .25
MIN_LIMIT = -150.0
MAX_LIMIT = 0.001
HOME_OFFSET = 0.000000
HOME_SEARCH_VEL = 10.000000
HOME_LATCH_VEL = -2.500000
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
файл монитор :

Код: Выделить всё

#!/usr/bin/tclsh

#-----------------------------------------------------------------------
# Copyright: 2014
# Author:    Dewey Garrett <dgarrett@panix.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#-----------------------------------------------------------------------

# pass 1: set environmental variable as flag
#         then restart this script in background
#         exit
# pass 2: detect environmental variable and continuously monitor
#         the xhc-hb04.connected pin

set ::progname [file tail $::argv0]
set ::startup_delay_ms 5000
set ::periodic_delay_ms 2000
set ::popup_hold_ms 0 ;# use 0 for forever
set ::debug 0

proc bool_from_string {v} {
  # hal getp returns TRUE,FALSE
  switch [string tolower $v] {
    true  {set v 1}
    false {set v 0}
  }
  return $v
} ;# bool_from_string

proc dputs {msg} {
  if $::debug {
    puts stderr $::progname:debug:$msg
  }
} ;# dputs

proc start_monitor {} {
  package require Hal
  package require Tk

  wm withdraw .
  set ::popupw  [toplevel .p]
  wm withdraw $::popupw
  wm title $::popupw $::progname
  wm protocol $::popupw WM_DELETE_WINDOW hide
  pack [label ${::popupw}.t -text [now] -font bold]
  pack [label ${::popupw}.l -text "startup" -font bold]
  pack [button ${::popupw}.b -text "OK" -command dismiss] -anchor e

  if [catch {set value [hal getp xhc-hb04.connected]} msg ] {
    # this can occur if loadusr xhc-hb04 fails, 
    puts "$::progname: xhc-hb04 comp not loaded" 
    puts "$::progname: <$msg>"
    puts "$::progname: exiting"
    return
  }
  set ::connected false
  if [catch { set ::connected [hal getp xhc-hb04.connected]
            } msg] {
    puts "$::progname: connected? <$msg>"
  }
  set ::connected [bool_from_string $::connected]

  set ::require_pendant false
  if [catch { set ::require_pendant [hal getp xhc-hb04.require_pendant]
            } msg] {
    puts "$::progname: require_pendant? <$msg>"
    puts "$::progname: pendant connection not required, Continuing"
  }
  set ::require_pendant [bool_from_string $::require_pendant]
  dputs "startup:connected=$::connected required=$::require_pendant"

  if {!$::require_pendant && !$::connected} {
    popup "\nrequire_pendant==0\nPendant not connected at startup"
  }

  after $::periodic_delay_ms check
} ;# start_monitor

proc now {} {
  return [clock format [clock seconds]]
} ;# now

proc popup {msg} {
  dputs $msg
  $::popupw.l configure -text [now]
  $::popupw.l configure -text $msg
  center $::popupw

  if {$::popup_hold_ms != 0} {
    after $::popup_hold_ms [list wm iconify $::popupw]
  }
} ;# popup

proc center {w} {
    update idletasks
    set x [expr [winfo screenwidth $w]/2 \
              - [winfo reqwidth $w]/2  - [winfo vrootx [winfo parent $w]]]
    set y [expr [winfo screenheight $w]/2 \
              - [winfo reqheight $w]/2  - [winfo vrooty [winfo parent $w]]]
    wm geom $w +$x+$y
    wm deiconify $w
} ;# center

proc hide {} {
  wm withdraw $::popupw
} ;# hide

proc dismiss {} {
  wm withdraw $::popupw
} ;# dismiss

proc check {} {
  if [catch { set ::connected_new [hal getp xhc-hb04.connected]
            } msg] {
    puts "$::progname <$msg>"
  }
  set ::connected_new [bool_from_string $::connected_new]
  dputs "check:connected_new=$::connected_new required=$::require_pendant"

  set allow_recheck 1
  if {$::connected_new != $::connected} {
    if $::connected_new {
      set msg "\nConnected to pendant"
    } else {
      set msg "\nLost connection to pendant"
    }
    if $::require_pendant {
      if {$::connected_new} {
        set msg "$msg\nUnexpected"
      } else {
        # xhc-hb04 will timeout and exit so no more checks
        set msg "$msg\nReconnect not supported for require_pendant==1"
        set allow_recheck 0
      }
    }
    dputs "$::progname: $msg"
    popup $msg
  }

  set ::connected $::connected_new
  if $allow_recheck {after $::periodic_delay_ms check}
} ;# check

# begin -----------------------------------------------------
if ![info exists ::env(monitor_xhc-hb04)] {
  set ::env(monitor_xhc-hb04) $::argv0
  exec ./monitor_xhc-hb04.tcl & ;# restart this with env(monitor_xhc-hb04) set
  exit 0
} else {
  after $::startup_delay_ms
  start_monitor
}
файл xhc hb04 :

Код: Выделить всё

proc is_uniq {list_name} {
  set tmp(xxxxxxxx) "" ;# make an array first
  foreach item $list_name {
    if {[array names tmp $item] == $item} {
      return 0 ;# not unique
    }
    set tmp($item) $item
  }
  return 1 ;# unique
} ;# is_uniq

proc pin_exists {name} {
  set line [lindex [split [show pin $name] \n] 2]
  if {"$line" == ""} {
    return 0 ;# fail
  }
  if [catch {scan $line "%d %s %s %s%s" owner type dir value pinname} msg] {
     return 0 ;# fail
  } else {
     #puts stderr "OK:$owner $type $dir $value $pinname"
     return 1 ;# ok
  }
} ;# pin_exists

proc connect_pins {} {
  foreach bname [lsort [array names ::XHC_HB04_BUTTONS]] {
    set thepin $::XHC_HB04_BUTTONS($bname)
    set thepin [lindex $thepin 0]

    if {"$thepin" == "\"\""} {
      #puts stderr "$::progname: no pin defined for <$bname>"
      continue
    }
    # this pin is can specify std behavior
    if {   ([string tolower $bname] == "start-pause")
        && ([string tolower $thepin] == "std_start_pause")
       } {
      std_start_pause_button
      puts stderr "$::progname: using std_start_pause_button"
      continue
    }
    # these are warnings in the ini file examples but aren't real pins
    if {[string tolower "$thepin"] == "caution"} {
      puts stderr "$::progname: skipping button $bname marked <$thepin>"
      continue
    }
    set fullbname xhc-hb04.button-$bname
    if ![pin_exists $fullbname] {
      puts stderr "$::progname: !!! <$fullbname> pin does not exist, continuing"
      continue
    }
    if ![pin_exists $thepin] {
      puts stderr "$::progname: !!! <$thepin> target pin does not exist, continuing"
      continue
    }

    net pendant:$bname $fullbname => $thepin
  }
} ;# connect_pins

proc wheel_setup {jogmode} {
  # defaults if not in inifile:
  set ::XHC_HB04_CONFIG(coef,0) 1.0
  set ::XHC_HB04_CONFIG(coef,1) 1.0
  set ::XHC_HB04_CONFIG(coef,2) 1.0
  set ::XHC_HB04_CONFIG(coef,3) 1.0
  if [info exists ::XHC_HB04_CONFIG(coefs)] {
    set idx 0
    foreach g $::XHC_HB04_CONFIG(coefs) {
      set g1 $g
      if {$g < 0} {
         set g [expr -1 * $g]
         puts stderr "$::progname: coef #$idx must be positive was:$g1, is:$g"
      }
      if {$g > 1} {
         set g .5
         puts stderr "$::progname: coef #$idx must < 1 coef was:$g1, is:$g"
      }
      set ::XHC_HB04_CONFIG(coef,$idx) $g
      incr idx
    }
  }
  # defaults if not in inifile:
  set ::XHC_HB04_CONFIG(scale,0) 1.0
  set ::XHC_HB04_CONFIG(scale,1) 1.0
  set ::XHC_HB04_CONFIG(scale,2) 1.0
  set ::XHC_HB04_CONFIG(scale,3) 1.0
  if [info exists ::XHC_HB04_CONFIG(scales)] {
    set idx 0
    foreach g $::XHC_HB04_CONFIG(scales) {
      set ::XHC_HB04_CONFIG(scale,$idx) $g
      incr idx
    }
  }

  net pendant:jog-scale      <= xhc-hb04.jog.scale
  net pendant:jog-counts     <= xhc-hb04.jog.counts
  net pendant:jog-counts-neg <= xhc-hb04.jog.counts-neg

  set anames {x y z }
  # xhc-hb04.cc hardcodes pin names as: x y z 
  # herein: Use names in order of the [XHC_HB04_CONFIG]coords
  #         specification in the inifile.
  #         These pin names will be a little confusing when
  #         using alternate axis sequences but the signal
  #         names will align correctly.
  #         With this method, any coord (xyzabcuvw) can be
  #         controlled by the wheel (providing it exists)
  #
  set idx 0
  foreach coord $::XHC_HB04_CONFIG(coords) {
    set axno $::XHC_HB04_CONFIG($coord,axno)

    setp pendant_util.coef$idx  $::XHC_HB04_CONFIG(coef,$idx)
    setp pendant_util.scale$idx $::XHC_HB04_CONFIG(scale,$idx)

    set acoord [lindex $anames $idx]
    net pendant:pos-$coord    halui.axis.$axno.pos-feedback \
                           => xhc-hb04.$acoord.pos-absolute
    net pendant:pos-rel-$coord    halui.axis.$axno.pos-relative \
                               => xhc-hb04.$acoord.pos-relative

    net pendant:jog-scale => axis.$axno.jog-scale

    net pendant:jog-counts                 => pendant_util.in$idx
    net pendant:jog-counts-$coord-filtered <= pendant_util.out$idx \
                                           => axis.$axno.jog-counts

    switch $jogmode {
      normal - vnormal {
        net pendant:jog-$coord    xhc-hb04.jog.enable-$acoord \
                               => axis.$axno.jog-enable
      }
      plus-minus {
        # connect halui plus,minus pins
        net pendant:jog-plus-$coord     xhc-hb04.jog.plus-$acoord  \
                                     => halui.jog.$axno.plus
        net pendant:jog-minus-$coord    xhc-hb04.jog.minus-$acoord \
                                     => halui.jog.$axno.minus
      }
    }
    switch $jogmode {
      vnormal {
        setp axis.$axno.jog-vel-mode 1
      }
    }

    incr idx
  }

  switch $jogmode {
    normal - vnormal {
      net pendant:jog-speed <= halui.max-velocity.value
      # not used: xhc-hb04.jog.velocity
      # not used: xhc-hb04.jog.max-velocity
    }
    plus-minus {
      # Note: the xhc-hb04 driver manages xhc-hb04.jog.velocity
      net pendant:jog-max-velocity <= halui.max-velocity.value
      net pendant:jog-max-velocity => xhc-hb04.jog.max-velocity
      net pendant:jog-speed        <= xhc-hb04.jog.velocity
      net pendant:jog-speed        => halui.jog-speed
    }
  }

  setp halui.feed-override.scale 0.01
  net pendant:jog-counts  => halui.feed-override.counts

  setp halui.spindle-override.scale 0.01
  net pendant:jog-counts  => halui.spindle-override.counts


  net pendant:jog-feed      halui.feed-override.count-enable \
                         <= xhc-hb04.jog.enable-feed-override
  net pendant:jog-feed2     halui.feed-override.value \
                         => xhc-hb04.feed-override

  net pendant:jog-spindle   halui.spindle-override.count-enable
  net pendant:jog-spindle   <= xhc-hb04.jog.enable-spindle-override
  net pendant:jog-spindle2  halui.spindle-override.value \
                         => xhc-hb04.spindle-override
  net pendant:spindle-rps   motion.spindle-speed-cmd-rps \
                         => xhc-hb04.spindle-rps
} ;# wheel_setup

proc std_start_pause_button {} {
  # hardcoded setup for button-start-pause
  net    pendant:start-or-pause <= xhc-hb04.button-start-pause \
                                => pendant_util.start-or-pause

  net    pendant:is-idle    <= halui.program.is-idle \
                            => pendant_util.is-idle
  net    pendant:is-paused  <= halui.program.is-paused \
                            => pendant_util.is-paused
  net    pendant:is-running <= halui.program.is-running \
                            => pendant_util.is-running

  net    pendant:program-resume pendant_util.resume => halui.program.resume
  net    pendant:program-pause  pendant_util.pause => halui.program.pause
  net    pendant:program-run    pendant_util.run => halui.program.run
  net    pendant:program-run                     => halui.mode.auto
} ;# std_start_pause_button

proc popup_msg {msg} {
  puts stderr "$msg"
  if [catch {package require Tk
             wm withdraw .
             tk_messageBox \
                 -title "$::progname: loadusr" \
                 -type ok \
                 -message "$msg"
             destroy .
            } msg] {
     puts stderr "$msg"
  }
} ;# popup_msg

proc err_exit {msg} {
  puts stderr "\n$::progname: $msg\n"
  exit 1
} ;# err_exit

# begin------------------------------------------------------------------------
set ::progname "xhc-hb04.tcl"
set cfg xhc-hb04-layout2.cfg ;# default

foreach name [array names ::XHC_HB04_CONFIG] {
  set ::XHC_HB04_CONFIG($name) [string trim $::XHC_HB04_CONFIG($name) "{}"]
}

if [info exists ::XHC_HB04_CONFIG(layout)] {
  switch ${::XHC_HB04_CONFIG(layout)} {
    1 {set cfg xhc-hb04-layout1.cfg}
    2 {set cfg xhc-hb04-layout2.cfg}
    default {
      set msg "Unknown layout:<$::XHC_HB04_CONFIG(layout)>"
      set msg "$msg\ntrying: $cfg"
      popup_msg "$msg"
      # keep going
    }
  }
}

if ![file exists $cfg] {
  set msg "Cannot find file: <$cfg>\nCannot configure pendant\n"
  set msg "$msg\nContinuing without xhc-hb04"
  popup_msg "$msg"
  return ;# not an exit
}

# require_pendant==yes: use -x, dont create pins unless connected
# require_pendant==no:          create pins if not connected
if ![info exists ::XHC_HB04_CONFIG(require_pendant)] {
  set ::XHC_HB04_CONFIG(require_pendant) yes ;# default
}
set dashx -x
switch $::XHC_HB04_CONFIG(require_pendant) {
  no      {set dashx ""}
}

if [info exists ::XHC_HB04_CONFIG(sequence)] {
  set dashs "-s $::XHC_HB04_CONFIG(sequence)"
} else {
  set dashs ""
}

set cmd "loadusr -W xhc-hb04 $dashx $dashs -I $cfg -H"
if [catch {eval $cmd} msg] {
  set msg "\n$::progname: loadusr xhc-hb04:\n<$msg>\n\n"
  set msg "$msg Is it plugged in?\n\n"
  set msg "$msg Are permissions correct?\n\n"
  set msg "$msg Continuing without xhc-hb04\n"
  set msg "$msg \nFailing cmd:\n$cmd"
  popup_msg "$msg"
  return ;# not an exit
}

# jogmodes:
#   normal: use motion pins:
#               axis.N.jog-counts
#               axis.N.jog-enable
#               axis.N.jog-scale  (machine units per count)

#   plus-minus: use halui pins:
#               halui.jog.N.plus  (jog in + dir at jog-speed)
#               halui.jog.N.minus (jog in - dir at jog-speed)
#               halui.jog-speed   (applies to plus-minus jogging only)
#
if ![info exists ::XHC_HB04_CONFIG(jogmode)] {
  set ::XHC_HB04_CONFIG(jogmode) normal ;# default
}

set jogmode $::XHC_HB04_CONFIG(jogmode)
switch $jogmode {
  normal {}
  vnormal {}
  plus-minus {}
  default {
    set ::XHC_HB04_CONFIG(jogmode) normal
    set msg "Unkknown jogmode <$jogmode>"
    set msg "$msg  Using $::XHC_HB04_CONFIG(jogmode)"
    popup_msg "$msg"
  }
}

set ct 0; foreach coord {x y z } {
  set ::XHC_HB04_CONFIG($coord,axno) $ct;  incr ct
}

if [info exists ::XHC_HB04_CONFIG(coords)] {
  if ![is_uniq $::XHC_HB04_CONFIG(coords)] {
    err_exit "coords must be unique, not: <$::XHC_HB04_CONFIG(coords)>"
  }
} else {
  set ::XHC_HB04_CONFIG(coords) {x y z } ;# default
}

if ![info exists ::XHC_HB04_CONFIG(threadname)] {
  set ::XHC_HB04_CONFIG(threadname) "servo-thread" ;# default
}
loadrt xhc_hb04_util names=pendant_util
addf   pendant_util $::XHC_HB04_CONFIG(threadname)

connect_pins    ;# per ini file items: [XHC_HB04_BUTTONS]buttonname=pin
wheel_setup  $::XHC_HB04_CONFIG(jogmode)
                 # jog wheel per ini file items:
                 #     [XHC_HB04_CONFIG]coords,coefs,scales
#parray ::XHC_HB04_CONFIG
и файл имена кнопок:

Код: Выделить всё

[XHC-HB04]
BUTTON=01:button-goto-zero
BUTTON=02:button-start-pause
BUTTON=03:button-rewind
BUTTON=04:button-probe-z
BUTTON=05:button-macro-3
BUTTON=06:button-half
BUTTON=07:button-zero
BUTTON=08:button-safe-z
BUTTON=09:button-home
BUTTON=0A:button-macro-1
BUTTON=0B:button-macro-2
BUTTON=0C:button-spindle
BUTTON=0D:button-step
BUTTON=0E:button-mode
BUTTON=0F:button-macro-6
BUTTON=10:button-macro-7
BUTTON=16:button-stop
BUTTON=17:button-reset
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
Аватара пользователя
dinkata
Мастер
Сообщения: 1025
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: С Новым Годом и подарок XHC HB04

Сообщение dinkata »

Для тестирование ,да ,получилос .Хочется связат пинами в хал для других функции .Например button-macro-7 включал СОЖ ,
т.е.надо сгенерироват файл с пинами XHC HB04 и пользоват их в свой хал .И где лучше ставит своя логика и свой хал ,наверно в
postgui ? Пока ето не в мои возможности ,понадобится времени и английской изучат ,поетому предлагаю вместе здесь сделат руководство,
надеюсь поможите .Предлагайте ,я буду тестироват на станок.
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: С Новым Годом и подарок XHC HB04

Сообщение nkp »

dinkata писал(а):ето не знаю как сделат
vs
dinkata писал(а):и протестировал успешно почти всех кнопок
dinkata писал(а):Для тестирование ,да ,получилос
так всё работает?
емс с пультом запускается?
если да - то открыть halshow и смотреть пины пульта...
Аватара пользователя
dinkata
Мастер
Сообщения: 1025
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: С Новым Годом и подарок XHC HB04

Сообщение dinkata »

nkp писал(а):так всё работает?
да
nkp писал(а):емс с пультом запускается?
да
nkp писал(а):открыть halshow и смотреть пины пульта...
хочу пиньй в свой хал файле имет и работат без - xhc hb04.tcl
а файл monitor xhc hb04.tcl можно не трогат.
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: С Новым Годом и подарок XHC HB04

Сообщение nkp »

модуль XHC-HB04 должен установиться в /usr/local/bin
после этого достаточно в обычный твой конфиг добавить в хал строку вида:
loadusr -W xhc-hb04 -I xhc-hb04-layout1.ini -H
и в папку с конфигом положить xhc-hb04-layout1.ini
запустить - смотреть появившиеся пины :
Выделение_004.png (7989 просмотров) <a class='original' href='./download/file.php?id=39490&sid=0c66ac0cbb98e240631afc9a61214ff9&mode=view' target=_blank>Загрузить оригинал (64.42 КБ)</a>
и коммутируй нужные как хочешь
========
Аватара пользователя
dinkata
Мастер
Сообщения: 1025
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: С Новым Годом и подарок XHC HB04

Сообщение dinkata »

nkp писал(а):модуль XHC-HB04 должен установиться в /usr/local/bin
Спасибо ,он и там лежит ,протестировал кнопки и в classicladder ,работают :D
custom_posgui.hal

Код: Выделить всё

net cncrdy motion.motion-enabled => classicladder.0.in-00
net btnrst xhc-hb04.button-reset => classicladder.0.in-01
net chmode xhc-hb04.button-mode => classicladder.0.in-04
net macr1 xhc-hb04.button-macro-1 => classicladder.0.in-05
net macr2 xhc-hb04.button-macro-2 => classicladder.0.in-06
net macr3 xhc-hb04.button-macro-3 => classicladder.0.in-07
net sot xhc-hb04.button-macro-6 => halui.flood.on
net sotstop xhc-hb04.button-macro-7 => halui.flood.off
net aumod1 halui.mode.is-auto => classicladder.0.in-08
net mamod1 halui.mode.is-manual => classicladder.0.in-09
net mdmod1 halui.mode.is-mdi => classicladder.0.in-10
net homx axis.0.homed  => classicladder.0.in-11
net homy axis.1.homed  => classicladder.0.in-12
net homz axis.2.homed  => classicladder.0.in-13
net stpav halui.estop.is-activated => classicladder.0.in-14
# net aumod2 halui.mode.auto <= classicladder.0.out-00
# net mamod2 halui.mode.manual <= classicladder.0.out-01
# net mdmod2 halui.mode.mdi <= classicladder.0.out-02
net avstp halui.estop.activate <= classicladder.0.out-03
net stprst halui.estop.reset <= classicladder.0.out-04
Те которьйе пользую в classicladder ,убрал в ини.
Насколько правильно я все ето делаю не знаю :wik:
Пока смотрю работает/не работает.
В итогге до сих пор :
1.После установки батареи и нажатие бутон включение ,XHC HB04 не включится если флешка не подвключена в USB .
1.1.Посмотрите : http://wiki.linuxcnc.org/cgi-bin/wiki.p ... PG_Pendant
1.2.Посмотрите: http://git.linuxcnc.org/gitweb?p=linuxc ... e5a61e495b
2.Первоначалное тестирование с запуск Linuxcnc/axis/sim.axis.xhc-hb04
Бутон Reset както странно работал ,поетому вставил и его в classicladder
Вложения
CL.jpg (7928 просмотров) <a class='original' href='./download/file.php?id=39510&sid=0c66ac0cbb98e240631afc9a61214ff9&mode=view' target=_blank>Загрузить оригинал (43.04 КБ)</a>
Последний раз редактировалось dinkata 02 янв 2015, 06:12, всего редактировалось 1 раз.
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
Аватара пользователя
dinkata
Мастер
Сообщения: 1025
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: С Новым Годом и подарок XHC HB04

Сообщение dinkata »

nkp писал(а):может что подсмотришь:
http://blog.f1oat.org/linuxcnc/
да ,и здесь бьйл ,взял кое что :hehehe:
а если сериозно - здес отлично ,кто знает английского :
http://www.linuxcnc.org/index.php/engli ... hal-module
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
Аватара пользователя
dinkata
Мастер
Сообщения: 1025
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: С Новым Годом и подарок XHC HB04

Сообщение dinkata »

dinkata писал(а):Бутон Reset както странно работал ,поетому вставил и его в classicladder
Бутончики :BUTTON=17:button-reset ,в начале тестирование - нажал ,авост сработал ,потом не
успел сделат ресет на авост ,понадобилос закрьйт LCNC и снова запустит .Поетому решил вставит пока в classicladder,
сделал с его включение (удерживат нажатие на 1 сек ) и вьйключение станка (сразу с нажатие ).
Вложения
CL01.jpg (7864 просмотра) <a class='original' href='./download/file.php?id=39516&sid=0c66ac0cbb98e240631afc9a61214ff9&mode=view' target=_blank>Загрузить оригинал (41.86 КБ)</a>
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
Аватара пользователя
dinkata
Мастер
Сообщения: 1025
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: С Новым Годом и подарок XHC HB04

Сообщение dinkata »

dinkata писал(а): включение (удерживат нажатие на 1 сек ) и вьйключение станка (сразу с нажатие ).
да,работало на Linuxcnc 2.6.5 ,потом я перешел на http://www.cnc-club.ru/forum/viewtopic.php?f=15&t=4575
установил и features .Сейчас запускается Linuxcnc 2.7.0 pre2...
-вьйключение станка из XHC HB04 работает ,но включение (удерживат нажатие на 1 сек ) нет, вьйдает такое сообщение:
ERROR:Could not switch the machine on ,is limit switch activated ?
с концевики все в порядке..
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: С Новым Годом и подарок XHC HB04

Сообщение Nick »

dinkata писал(а):ERROR:Could not switch the machine on ,is limit switch activated ?
точно ни один не нажат? Посмотри по пинам motion
axis.N.motor-pos-fb
axis.N.motor-neg-fb
Аватара пользователя
dinkata
Мастер
Сообщения: 1025
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: С Новым Годом и подарок XHC HB04

Сообщение dinkata »

Nick писал(а):точно ни один не нажат?
да,я еще не подвключил машина .На рабочем столе тестирую и изучаю.
dinkata писал(а):,работало на Linuxcnc 2.6.5
Очень хотелос запустит features в gmoccapy поетому перешел на http://www.cnc-club.ru/forum/viewtopic.php?f=15&t=4575
но не успеваю пока запустит features ,скорее она запускается но нет preview
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: С Новым Годом и подарок XHC HB04

Сообщение Nick »

dinkata писал(а):да,я еще не подвключил машина
это еще не значит, что они не нажаты. ;)
Посмотри, что на этих пинах
axis.N.motor-pos-fb
axis.N.motor-neg-fb
Аватара пользователя
dinkata
Мастер
Сообщения: 1025
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: С Новым Годом и подарок XHC HB04

Сообщение dinkata »

Nick писал(а):Посмотри, что на этих пинах
да,позже ,Nicк подскажите что нибуд об features ,смотри пост 558 (ето на рабочий станок ):
http://www.cnc-club.ru/forum/viewtopic. ... 92#p162692
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
Аватара пользователя
dinkata
Мастер
Сообщения: 1025
Зарегистрирован: 05 сен 2014, 09:07
Репутация: 389
Настоящее имя: Диньо
Откуда: Болгария
Контактная информация:

Re: С Новым Годом и подарок XHC HB04

Сообщение dinkata »

Имел времени снова поработат над XHC HB04 ,назначил кнопочки под мои нужд ,
reset -аварийной останов
macro-1 включение станок
macro-2 вьйключение станок
macro-3 сброс авост
macro-6 включение СОЖ
macro-7 вьйключение СОЖ
остальньйе как по дефольт ,ест еще для переделка ,пожалуйста коментируйте,критикуйте .
до переделка >>>>>>> после переделка

Код: Выделить всё

[XHC_HB04_BUTTONS]
# use button names according to layout file xhc-hb04-layout{n}.cfg
# note: "start-pause" is connected for standard behavior
#        controlling halui.pause/halui.resume/halui.run
# these are examples, edit as required:

goto-zero   = halui.mdi-command-00     >>>>>>>  goto-zero   = ""
# synthesized per-axis buttons for goto-zero button:
goto-zero-x = ""                       >>>>>>>  halui.mdi-command-00
goto-zero-y = ""                       >>>>>>>  halui.mdi-command-01
goto-zero-z = ""                       >>>>>>>  halui.mdi-command-02
goto-zero-a = ""                       >>>>>>>  halui.mdi-command-03

start-pause = std_start_pause          >>>>>>> # так работает
rewind      = halui.program.step       >>>>>>> # так работает
# probe-input for simulating a probe:  >>>>>>> # еще не готово 
probe-z     = motion.probe-input       >>>>>>> # probe-z     = motion.probe-inputю

half        = halui.spindle.stop       >>>>>>> half  = halui.mdi-command-09 
 # в gmoccapy дает ошибка если half = halui.spindle.stop ,поетому назначил на mdi-command-09 = М5
# synthesized per-axis buttons for half button:
half-x      = ""
half-y      = ""
half-z      = ""
half-a      = ""

zero        = ""
# synthesized per-axis buttons for zero button:
zero-x      = halui.mdi-command-12       >>>>>>> halui.mdi-command-04  
zero-y      = halui.mdi-command-13       >>>>>>> halui.mdi-command-05
zero-z      = halui.mdi-command-14       >>>>>>> halui.mdi-command-06
zero-a      = halui.mdi-command-15       >>>>>>> halui.mdi-command-07

safe-z      = halui.mdi-command-10       >>>>>>> halui.mdi-command-04   # еще не готово 
# in this sim, home-all only works first time, hold down till finished:
home        = halui.home-all              >>>>>>> # так работает      
macro-1     = halui.mdi-command-01        >>>>>>> macro-1     = halui.machine.on
macro-2     = halui.mdi-command-02        >>>>>>> macro-2     = halui.machine.off
                                          >>>>>>> macro-3     = halui.estop.reset

spindle     = halui.spindle.start         >>>>>>> # так работает
step        = xhc-hb04.stepsize-up        >>>>>>> # так работает  
mode        = ""                          >>>>>>> # еще не готово
macro-6     = halui.mdi-command-06        >>>>>>> macro-6     = halui.flood.on
macro-7     = halui.mdi-command-07        >>>>>>> macro-7     = halui.flood.off
stop        = halui.program.stop          >>>>>>> # так работает
reset       = halui.estop.activate        >>>>>>> # так работает  

[HALUI]
# these are examples, edit as required:
# a halui hal pin is created for each MDI_COMMAND below
# halui.mdi-command-00, halui.mdi-command-01,... etc
MDI_COMMAND=G0 X0 
MDI_COMMAND=G0 Y0 
MDI_COMMAND=G0 Z0
MDI_COMMAND=G0 A0
MDI_COMMAND= G10 L20 P0 X0
MDI_COMMAND= G10 L20 P0 Y0
MDI_COMMAND= G10 L20 P0 Z0
MDI_COMMAND= G10 L20 P0 A0
MDI_COMMAND=(debug, example: mdi-08)
MDI_COMMAND= M5
Простите ошибки, я иностранец.У моя клавиатура нету "э" и "ы"
pkasy
Мастер
Сообщения: 1139
Зарегистрирован: 15 мар 2013, 09:39
Репутация: 45
Откуда: Владивосток

Re: С Новым Годом и подарок XHC HB04

Сообщение pkasy »

слушайте, а может кто-нибудь обхяснить такому, как я, как эта железяка работает?
у меня она не перемешает X Y Z B, а только FEED Override & Spindel Override
показывает координаты только X Y Z и не показывает B

halmeter показывает, что все кнопки работают, импульсы приходят, но перемещания станка нет.
подозреваю, что где-то немного протупил, но подскажите, где?
pkasy
Мастер
Сообщения: 1139
Зарегистрирован: 15 мар 2013, 09:39
Репутация: 45
Откуда: Владивосток

Re: С Новым Годом и подарок XHC HB04

Сообщение pkasy »

точнее, в режиме сочлинений перемещения работают, но медленно, а в режиме координат - нет.
в режиме сочлениний вращение маховичка вызывает изменение
halui.axis.0.pos-commanded
а после переключения в режим координат - нет.

посоветуйте, как исправить. у меня стоит gantrykins, может в ней дело?
Ответить

Вернуться в «LinuxCNC»