Перейти к содержанию
jnllll

Помогите разобраться с настройкой LinuxCNC

Рекомендуемые сообщения

Дата: (изменено)

В интернете нашёл конфиг файлы для простейшего плазменного ЧПУ с THC (схемой которого поделился пользователь Sergey в теме www.chipmaker.ru/topic/189305/)

Отредактировал конфиги в соответствии со своим станком. Установил скорость осей такие какие нужно. Разобрался и отредактировал в конфигах выводы LPT порта куда подаются сигналы step и dir. В общем всё нормально.

А проблема следующая: когда в оболочке EMC управляю осями вручную с клавиатуры или кнопками в пользовательском интерфейсе, оси ведут себя нормально, ездят без заеданий и пропусков шагов.

Но когда начинает выполняться программа, то ось х с резаком не движется. По звуку от мотора понятно, что на него подаётся намного большая скорость (посредством сигнала step, естественно). Он гудит, но скорость или ускорение для него большие, поэтому он не может стронуть ось. Корректировка ползунков подачи, максимальной скорости и скорости перемещений в интерфейсе никак не влияют.

Где-то в конфиге, по всей видимости прописана намного большая скорость при операции поиска металла.

Отредактированные под мой станок файлы в приложении.

 

 

###################### Torch Height Control ##########################
# Load realtime hal components for THC
loadrt and2 count=9
loadrt comp count=3
loadrt updown
loadrt flipflop count=3
loadrt hypot
loadrt logic personality=0x203
loadrt minmax
loadrt mult2 count=2
loadrt mux2 count=7
loadrt not count=3
loadrt oneshot count=4
loadrt or2 count=9
loadrt scale
loadrt sum2 count=5
loadrt xor2 count=4
loadrt conv_s32_float
loadrt edge count=2
# Attach realtime hal components to a realtime thread
addf and2.0 servo-thread
addf and2.1 servo-thread
addf and2.2 servo-thread
addf and2.3 servo-thread
addf and2.4 servo-thread
addf and2.5 servo-thread
addf and2.6 servo-thread
addf and2.7 servo-thread
addf and2.8 servo-thread
addf comp.0 servo-thread
addf comp.1 servo-thread
addf comp.2 servo-thread
addf conv-s32-float.0 servo-thread
addf edge.0 servo-thread
addf edge.1 servo-thread
addf flipflop.0 servo-thread
addf flipflop.1 servo-thread
addf flipflop.2 servo-thread
addf hypot.0 servo-thread
addf logic.0 servo-thread
addf minmax.0 servo-thread
addf mult2.0 servo-thread
addf mult2.1 servo-thread
addf mux2.0 servo-thread
addf mux2.1 servo-thread
addf mux2.2 servo-thread
addf mux2.3 servo-thread
addf mux2.4 servo-thread
addf mux2.5 servo-thread
addf mux2.6 servo-thread
addf not.0 servo-thread
addf not.1 servo-thread
addf not.2 servo-thread
addf oneshot.0 servo-thread
addf oneshot.1 servo-thread
addf oneshot.2 servo-thread
addf oneshot.3 servo-thread
addf or2.0 servo-thread
addf or2.1 servo-thread
addf or2.2 servo-thread
addf or2.3 servo-thread
addf or2.4 servo-thread
addf or2.5 servo-thread
addf or2.6 servo-thread
addf or2.7 servo-thread
addf or2.8 servo-thread
addf updown.0 servo-thread
addf scale.0 servo-thread
addf sum2.0 servo-thread
addf sum2.1 servo-thread
addf sum2.2 servo-thread
addf sum2.3 servo-thread
addf sum2.4 servo-thread
addf xor2.0 servo-thread
addf xor2.1 servo-thread
addf xor2.2 servo-thread
# Set static values and default values
setp oneshot.1.width [PLASMA]IGNITION_TIMEOUT
setp oneshot.2.width [PLASMA]ARC_OK_FILTER_TIME
setp oneshot.3.width [PLASMA]EXTINGUISH_TIMEOUT
setp oneshot.3.falling 1
setp oneshot.3.rising 0
setp comp.2.in0 [PLASMA]MAX_FAILED_IGNITIONS
setp mux2.1.in0 -1
setp mux2.1.in1 1
setp mux2.3.in0 0
# Set the lowest value the THC will try to move the torch
setp sum2.4.in0 [AXIS_2]MIN_LIMIT
# Set default gains for sum, positive for addition and negative for subtraction
# Setting positive gains will become implicit and those can be removed safely in a later version
setp sum2.0.gain0 1
setp sum2.0.gain1 1
setp sum2.1.gain0 1
setp sum2.1.gain1 1
setp sum2.2.gain0 1
setp sum2.2.gain1 -1
setp sum2.3.gain0 1
setp sum2.3.gain1 -1
setp sum2.4.gain0 1
setp sum2.4.gain1 -1
# Set Hysterisis for float comp
setp comp.1.hyst 0.001
# Set percentage multiplier for scale
setp scale.0.gain 0.01
# Set edge detectors to work on falling edges to detect Ignition Timeouts
setp edge.0.in-edge 1
setp edge.1.in-edge 1

# Hook up parallel port pins
# Change the pins to corespond to inputs from THC or BOB for UP and DOWN signals
# For negative inputs use the omited part, use lower ones and omit upper ones
#net MoveDown parport.0.pin-10-in => or2.0.in0
#net MoveUp parport.0.pin-11-in => or2.0.in1 mux2.1.sel
net MoveDown parport.0.pin-10-in-not => or2.0.in0
net MoveUp parport.0.pin-11-in-not => or2.0.in1 mux2.1.sel
# Hook up component pins using the net command
# Change the pins to corespond to Z-Home limit swith and ARCOK input from THC or BOB
# For negative inputs use the omited part, use lower ones and omit upper ones
#net FloatSwitch parport.0.pin-13-in => or2.1.in1 and2.4.in0 and2.5.in1 and2.6.in1
#net ArcOK parport.0.pin-12-in => or2.4.in1 xor2.1.in1 oneshot.2.in
net FloatSwitch parport.0.pin-13-in-not => or2.1.in1 and2.4.in0 and2.5.in1 and2.6.in1
net ArcOK parport.0.pin-12-in-not => or2.4.in1 xor2.1.in1 oneshot.2.in
net FilteredArcOK xor2.1.out => or2.1.in0 or2.6.in0 not.1.in and2.4.in1 flipflop.1.set oneshot.3.in flipflop.2.set and2.2.in0
net TimersOrArcOK or2.4.out => or2.5.in0 or2.3.in0
net LockHeight and2.0.out => xor2.2.in0
net EnabledAdjustHeight and2.1.out => mux2.3.sel
net ReleaseFeedHold and2.2.out => xor2.0.in1
# Change the pin number to corespond to where your "spindle on" or relay is connected for starting the torch.
net TorchOn => and2.3.out parport.0.pin-08-out oneshot.1.in not.2.in


net FloatSwitchEstop and2.4.out => logic.0.in-02
net FloatAndTorchOn and2.5.out => or2.2.in1
net TorchAndFloat and2.6.out => flipflop.0.set
net PosAndFloat and2.7.out => or2.5.in1
net IgnitionEstop comp.2.out => logic.0.in-01
net StartTorchOn and2.8.out => and2.3.in0
net OriginalPosZ-cmd axis.2.motor-pos-cmd => mux2.5.in0 sum2.2.in1
net JointPoz-cmd axis.2.joint-pos-cmd => sum2.2.in0
net CHLTriggered comp.0.out => and2.0.in0
net AtPosition comp.1.equal => and2.7.in0
net VelX ddt.0.out => hypot.0.in0
net VelY ddt.1.out => hypot.0.in1
net FloatSwitchSet flipflop.0.out => or2.3.in1 and2.7.in1
net ModeIsAuto halui.mode.is-auto => mux2.5.sel
net VelXY hypot.0.out => minmax.0.in comp.0.in0
net TriggerEStop logic.0.or => estop-latch.0.fault-in
net MaximumVelocity minmax.0.max => mult2.1.in0
net TurnTorchOn motion.spindle-forward => xor2.0.in0 and2.8.in0 and2.6.in0 mux2.4.sel not.0.in
net HeightAdjustment mult2.0.out => mux2.3.in1
net VelocityThreshold mult2.1.out => comp.0.in1
net HeightOffset mux2.0.out => sum2.1.in1
net AdjustmentDirection mux2.1.out => mult2.0.in1
net PositionSnapshot mux2.2.out => sum2.1.in0 mux2.2.in0
net SelectedAdjustment mux2.3.out => mux2.0.in1
net PosZ-cmd mux2.4.out => stepgen.2.position-cmd comp.1.in1
net PosSelectB mux2.5.out => mux2.4.in0
net PosSelectC mux2.6.out => mux2.4.in1
net TurnTorchOff not.0.out => and2.5.in0 or2.7.in0 updown.0.reset
net ReversedArcOK not.1.out => minmax.0.reset
net PierceDelayElapsed oneshot.0.out-not => and2.2.in1
net IgnitionTimer oneshot.1.out => edge.0.in or2.8.in0
net AdjustHeight or2.0.out => xor2.2.in1 and2.1.in0
net TakeSnapshot or2.1.out => mux2.2.sel
net TriggerLimit or2.2.out => axis.2.neg-lim-sw-in axis.2.pos-lim-sw-in axis.2.home-sw-in
net ProbeOrArcOK or2.3.out => mux2.6.sel
net PAFOrArcOK or2.5.out => and2.3.in1
net EstopOrArcOK or2.6.out => flipflop.0.reset
#net ExtEStop parport.0.pin-15-in => logic.0.in-00
net ExtEStop  => logic.0.in-00
#net LimitZ parport.0.pin-15-in => or2.2.in0
net ThresholdPercentage scale.0.out => mult2.1.in1
net PosZ-fb stepgen.2.position-fb => axis.2.motor-pos-fb mux2.2.in1 comp.1.in0
net PierceOffset sum2.0.out => mux2.0.in0
net DestinationHeight sum2.1.out => mux2.6.in1
net JointAxisDiff sum2.2.out => sum2.3.in1 sum2.4.in1
net StepCordsTH sum2.3.out => mux2.5.in1
net StepCordsML sum2.4.out => mux2.6.in0
net FeedHold xor2.0.out => motion.feed-hold
net CHLSwitched xor2.2.out => and2.1.in1
net ArcOKTimer oneshot.2.out => xor2.1.in0
net PierceLatch flipflop.1.out => mux2.0.sel oneshot.0.in
net IgnitionCounterS32 updown.0.count => conv-s32-float.0.in
net IgnitionCounterFloat conv-s32-float.0.out => comp.2.in1
net IgnitionTimerOff oneshot.1.out-not => updown.0.countup
net TorchOff not.2.out => flipflop.1.reset
net TorchTurnedOffOrTimeout or2.7.out => or2.6.in1
net IgnitionTimeout edge.0.out => or2.7.in1
net ExtinguishTimer oneshot.3.out edge.1.in
net ExtinguishLatch flipflop.2.out or2.8.in1
net ExtinguishTimeout edge.1.out flipflop.2.reset
net Timers or2.8.out => or2.4.in0

 

# EMC controller parameters for a plasma controller. Make these what you need
# for your system.
# General note: Comments can either be preceded with a # or ; - either is
# acceptable, although # is in keeping with most linux config files.
# Settings with a + at the front of the comment are likely needed to get
# changed by the user.
# Settings with a - at the front are highly unneeded to be changed
###############################################################################
# General section
###############################################################################
[EMC]
#- Version of this INI file
VERSION = $Revision$
#+ Name of machine, for use with display, etc.
MACHINE = --CNC--PLASMA-THC--by--TOM BERISHA--Pej-Kosov--Copyright@TOMA--
#+ Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
DEBUG =  0
#DEBUG = 0x00000007
#DEBUG = 0x7FFFFFFF
# Enable Adaptive Feedrate for THC
# Used to pause execution of gcode for setup,
# pierce delay and manual verification of pierce height
# Set spindle speed to 1
# Set up to use metric mm
RS274NGC_STARTUP_CODE = M52 P1 G21 S1
###############################################################################
# Sections for display options
###############################################################################
[DISPLAY]
#Plasma Control Panel
PYVCP =   thc_vcp.xml
#+ Name of display program, e.g., xemc
DISPLAY =  axis
#DISPLAY =   tkemc
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME =  0.200
#- Path to help file
HELP_FILE =   doc/help.txt
#HELP_FILE =  tklinucnc.txt

#- Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
#- Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
#+ Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.2
#- Prefix to be used
PROGRAM_PREFIX = /home/me/Documents
#- Text Editor
EDITOR =   gedit
#- Introductory graphic
INTRO_GRAPHIC =  linuxcnc.gif
INTRO_TIME =  3
#Increments for the JOB Section
INCREMENTS = 1000 10 1 0.1 0.01
OPEN_FILE = /home/me/linuxcnc/configs/thc-toma/cncbytoma.ngc
###############################################################################
# Task controller section
###############################################################################
[TASK]
#- Name of task controller program, e.g., bridgeporttask
TASK =   milltask
#- Cycle time, in seconds, that task controller will sleep between polls
CYCLE_TIME =  0.010
###############################################################################
# Part program interpreter section
###############################################################################
[RS274NGC]
#- File containing interpreter variables
PARAMETER_FILE = plasma.var
###############################################################################
# Motion control section
###############################################################################
[EMCMOT]
#- Name of the motion controller to use (only one exists for nontrivkins)
EMCMOT =  motmod
#- Timeout for comm to emcmot, in seconds
COMM_TIMEOUT =  1.0
#- Interval between tries to emcmot, in seconds
COMM_WAIT =  0.010
#+ Base task period, in nanosecs - this is the fastest thread in the machine
#BASE_PERIOD =  15000
#BASE_PERIOD =  18000
#BASE_PERIOD =  20000
#BASE_PERIOD =  35000
BASE_PERIOD =  100000
#- Servo task period, in nanosecs - will be rounded to an int multiple of BASE_PERIOD
#SERVO_PERIOD =  10000
SERVO_PERIOD =  1000000
#SERVO_PERIOD =  100000
#- Trajectory Planner task period, in nanosecs - will be rounded to an
#   integer multiple of SERVO_PERIOD
#TRAJ_PERIOD =  1000000
#TRAJ_PERIOD =  200000
###############################################################################
# Hardware Abstraction Layer section
###############################################################################
[HAL]
# The run script first uses halcmd to execute any HALFILE
# files, and then to execute any individual HALCMD commands.
#
# HALUI to interact with NML
# Run before any other HALFILE
HALUI =   halui
# list of hal config files to run through halcmd
#+ files are executed in the order in which they appear
HALFILE =  kinematics.hal
HALFILE =  stepper.hal
HALFILE =  thc_parport.hal
HALFILE =  estop.hal
HALFILE =  thc.hal
HALFILE =  axis_manualtoolchange.hal
# A file to hook pyvcp to hal signals
POSTGUI_HALFILE = thc_vcp.hal
#- list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD =  save neta
###############################################################################
# Trajectory planner section
###############################################################################
[TRAJ]
#+ machine specific settings
#AXES =   3
#COORDINATES =  X Y Z
#LINEAR_UNITS =  mm
#ANGULAR_UNITS =		 degree
#DEFAULT_VELOCITY = 2.20
#MAX_VELOCITY =  22
#DEFAULT_ACCELERATION = 300
#MAX_ACCELERATION = 400
#POSITION_FILE = last_position.txt
#-------------------
AXES = 3
COORDINATES = X Y Z
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 2.20
MAX_LINEAR_VELOCITY = 22.00




###############################################################################
# Axes sections
###############################################################################
#+ First axis (X)
[AXIS_0]
TYPE =	LINEAR
HOME =	0.000
MAX_VELOCITY =   22
MAX_ACCELERATION =  500
STEPGEN_MAXACCEL =  625
BACKLASH =   0.000
SCALE =	228.571428571
OUTPUT_SCALE =   1.000
MIN_LIMIT =					 -1000
MAX_LIMIT =   1000
FERROR =   1.270
MIN_FERROR =   0.254
HOME_OFFSET =   0.0
#HOME_SEARCH_VEL =  -50.0
#HOME_LATCH_VEL =  1.0
#HOME_USE_INDEX =  NO
#HOME_IGNORE_LIMITS =  YES
#HOME_SEQUENCE =   1
#+ Second axis (Y)
[AXIS_1]
TYPE =	LINEAR
HOME =	0.000
MAX_VELOCITY =   15
MAX_ACCELERATION =  500
STEPGEN_MAXACCEL =  625
BACKLASH =   0.000
SCALE =	200
OUTPUT_SCALE =   1.000
MIN_LIMIT =   -1000
MAX_LIMIT =   1000
FERROR =   1.270
MIN_FERROR =   0.254
HOME_OFFSET =   0.0
#HOME_SEARCH_VEL =  -50.0
#HOME_LATCH_VEL =  1.0
#HOME_USE_INDEX =  NO
#HOME_IGNORE_LIMITS =  YES
#HOME_SEQUENCE =   1
#+ Third axis (Z)
[AXIS_2]
TYPE =	LINEAR
HOME =	0.000
MAX_VELOCITY =   6
MAX_ACCELERATION =  10000
STEPGEN_MAXACCEL =  12500
#STEPGEN_MAXVEL =  90
#STEPGEN_MAXACCEL =  2960
##BACKLASH =   0.000
SCALE =	320
OUTPUT_SCALE =   1.000
MIN_LIMIT =   -100
MAX_LIMIT =   100.0
FERROR =   1.270
#MIN_FERROR =   .25
# This is done so Z axis can be operated with a HAL closed loop (plasma THC)
MIN_FERROR =   500
HOME_OFFSET =   15.0
#HOME_SEARCH_VEL =  10.0
#HOME_LATCH_VEL =  -2.0
#HOME_USE_INDEX =  NO
#HOME_IGNORE_LIMITS =  YES
#HOME_SEQUENCE =   0
###############################################################################
# section for main IO controller parameters
###############################################################################
[EMCIO]
#- Name of IO controller program, e.g., io
EMCIO =   io
#- Cycle time, in seconds
CYCLE_TIME =			0.100
#- Tool table file, torches and consumables
TOOL_TABLE =			torches.tbl
#+ Tool Change Position, if this is set the torch will move the the specified position before requesting a tool change
#TOOL_CHANGE_POSITION = 0 0 50
[PLASMA]
#- Ignition fault timeout, the allowed time from TorchON untill ArcOK, in seconds
IGNITION_TIMEOUT = 3
#- ArcOK timeout, a filter, for a signal to be valid it needs to exceed the specified time period, in seconds
ARC_OK_FILTER_TIME = 0.2
#- Ignition Retries before abort, the number of attempts to re-probe and start the torch before estop
MAX_FAILED_IGNITIONS = 5
#- Extinguish Timeout, a grace period after loosing ArcOK before shutting off the torch and re-probing, in seconds
EXTINGUISH_TIMEOUT = 0.2

Изменено пользователем jnllll

Поделиться сообщением


Ссылка на сообщение

по целому конфигу легче понять всю работу станка...

Поделиться сообщением


Ссылка на сообщение
Дата: (изменено)

К сожалению не могу загрузить ни один тип файла. Ни TXT ни HAL ни RAR.

Это я привёл два файла. ini и один из файлов hal

Там hal разбит на несколько файлов, видимо в целях структурирования и некоторые файлы довольно тривиальны. Но сейчас приведу.

 

thc_vcp.xml

<?xml version='1.0' encoding='UTF-8'?>
<pyvcp>
<labelframe text="Signals">
 <hbox>
  <vbox>
<led>
 <halpin>"Led-FloatSwitch"</halpin>
 <size>20</size>
 <on_color>"blue"</on_color>
 <off_color>"grey"</off_color>
</led>
<led>
 <halpin>"Led-TorchOn"</halpin>
 <size>20</size>
 <on_color>"yellow"</on_color>
 <off_color>"grey"</off_color>
</led>
<led>
 <halpin>"Led-ArcOK"</halpin>
 <size>20</size>
 <on_color>"green"</on_color>
 <off_color>"grey"</off_color>
</led>
<led>
 <halpin>"Led-ExtEStop"</halpin>
 <size>20</size>
 <on_color>"red"</on_color>
 <off_color>"grey"</off_color>
</led>
  </vbox>
  <vbox>
<label text="Float Switch"/>
<label text="Torch On"/>
<label text="Arc OK"/>
<label text="External EStop"/>
  </vbox>
 </hbox>
</labelframe>
<labelframe text="Adjustments">
 <vbox>
  <hbox>
<vbox>
 <led>
  <halpin>"Led-MoveUp"</halpin>
  <size>20</size>
  <on_color>"green"</on_color>
  <off_color>"grey"</off_color>
 </led>
 <led>
  <halpin>"Led-MoveDown"</halpin>
  <size>20</size>
  <on_color>"green"</on_color>
  <off_color>"grey"</off_color>
 </led>
</vbox>

<vbox>
 <label text="Move UP"/>
 <label text="Move Down"/>
</vbox>
  </hbox>
  <hbox>
<relief>RIDGE</relief>
<bd>1</bd>
<label text="Step Size"/>
<spinbox>
 <halpin>"Spin-THCStepSize"</halpin>
 <min_>0.0001</min_>
 <max_>1</max_>
 <initval>0.0015</initval>
 <width>"6"</width>
 <resolution>.0001</resolution>
 <format>"5.4f"</format>
 <justify>RIGHT</justify>
</spinbox>
  </hbox>
  <hbox>
<relief>RIDGE</relief>
<bd>1</bd>
<label text="Travel Height"/>
<spinbox>
 <halpin>"Spin-TravelHeight"</halpin>
 <min_>1</min_>
 <max_>99</max_>
 <initval>54</initval>
 <width>"3"</width>
 <resolution>1</resolution>
 <format>"3.0f"</format>
 <justify>RIGHT</justify>
</spinbox>
  </hbox>
  <hbox>
<relief>RIDGE</relief>
<bd>1</bd>
<label text="Sw. Travel"/>
<spinbox>
 <halpin>"Spin-SwitchTravel"</halpin>
 <min_>-50</min_>
 <max_>50</max_>
 <initval>7</initval>
 <width>"5"</width>
 <resolution>.01</resolution>
 <format>"5.2f"</format>
 <justify>RIGHT</justify>
</spinbox>
  </hbox>
 </vbox>
</labelframe>
<labelframe text="Piercing">
 <vbox>
  <vbox>
<hbox>
 <relief>RIDGE</relief>
 <bd>1</bd>
 <label text="Delay Timer"/>
 <number>
  <halpin>"Num-PierceDelayTimer"</halpin>
  <format>"+4.2f"</format>
 </number>
</hbox>
<hbox>
 <vbox>
  <label text="Delay"/>
  <label text="Gap"/>
  <label text="AutoStart"/>
 </vbox>
 <vbox>
  <spinbox>
   <halpin>"Spin-PierceDelay"</halpin>
   <min_>0.00</min_>
   <max_>10</max_>
   <initval>0.01</initval>
   <width>"6"</width>
   <resolution>.01</resolution>
   <format>"5.2f"</format>
   <justify>RIGHT</justify>
  </spinbox>
  <spinbox>
   <halpin>"Spin-PierceGap"</halpin>
   <min_>0.01</min_>
   <max_>10</max_>
   <initval>2</initval>
   <width>"6"</width>
   <resolution>.01</resolution>
   <format>"5.2f"</format>
   <justify>RIGHT</justify>
  </spinbox>
  <checkbutton>
   <halpin>"Check-AutoStart"</halpin>
   <initval>1</initval>
   <bd>1</bd>
  </checkbutton>
 </vbox>
</hbox>
  </vbox>
 </vbox>
</labelframe>
<labelframe text="Corner Height Lock">
 <vbox>
  <hbox>
<vbox>
 <led>
  <halpin>"Led-HeightLocked"</halpin>
  <size>20</size>
  <on_color>"green"</on_color>
  <off_color>"grey"</off_color>
 </led>
 <checkbutton>
  <halpin>"Check-CHLEnable"</halpin>
  <bd>1</bd>
 </checkbutton>
</vbox>
<vbox>
 <label text="Locked"/>
 <label text="Enable"/>
</vbox>
  </hbox>
  <vbox>
  <relief>RIDGE</relief>
  <bd>1</bd>
  <label text="Threshold %"/>
  <scale>
<halpin>"Scale-CHLThreshold"</halpin>
<min_>10</min_>
<max_>99</max_>
<initval>60</initval>
<resolution>1</resolution>
<orient>HORIZONTAL</orient>
  </scale>
  </vbox>
 </vbox>
</labelframe>
</pyvcp>

 

 

 

thc_vcp.hal

############### Torch Height Control Python Widgets ####################
# Hook up PyVCP pins using the net command
net CHLThreshold pyvcp.Scale-CHLThreshold-f => scale.0.in
net CHLEnable pyvcp.Check-CHLEnable => and2.0.in1
net TravelHeight pyvcp.Spin-TravelHeight => sum2.3.in0
net PierceDelay pyvcp.Spin-PierceDelay => oneshot.0.width
net THCStepSize pyvcp.Spin-THCStepSize => mult2.0.in0
net PierceGap pyvcp.Spin-PierceGap => sum2.0.in1
net SwitchTravel pyvcp.Spin-SwitchTravel => sum2.0.in0
net Autostart pyvcp.Check-AutoStart => and2.8.in1
# Hook up pins connecting to PyVCP objects
net MoveUp => pyvcp.Led-MoveUp
net MoveDown => pyvcp.Led-MoveDown
net FloatSwitch => pyvcp.Led-FloatSwitch
net ArcOK => pyvcp.Led-ArcOK
net LockHeight => pyvcp.Led-HeightLocked
net TorchOn => pyvcp.Led-TorchOn
net ExtEStop => pyvcp.Led-ExtEStop
net PierceDelayTimer oneshot.0.time-left =>  pyvcp.Num-PierceDelayTimer

 

thc_parport.hal

 

############################# Parallel Ports ##############################################
# Load Driver for Two Parallel Ports, one for Breakout Board, other for Plasma Torch Height Control
# If you have an add-on card, open a terminal and type "sudo lspci -v" and find the part where it
# says "parport" then use one of the addresses above ( in most cases you have "00ddb" or similar )
loadrt hal_parport cfg="0x378 out"
# Connect both Paralell Ports to Threads for Read / Write
addf parport.0.read base-thread 1
addf parport.0.write base-thread -1
# Invert pins to make motors move in right direction
#setp parport.0.pin-06-out-invert 1
#setp parport.0.pin-07-out-invert 1
#setp parport.0.pin-08-out-invert 1
#setp parport.0.pin-09-out-invert 1
# Hook up the step and dir signals to the parport pins
net StepX stepgen.0.step => parport.0.pin-03-out
net StepY stepgen.1.step => parport.0.pin-05-out
net StepZ stepgen.2.step => parport.0.pin-07-out
#net StepA stepgen.2.step => parport.0.pin-05-out
net DirX stepgen.0.dir => parport.0.pin-02-out
net DirY stepgen.1.dir => parport.0.pin-04-out
net DirZ stepgen.2.dir => parport.0.pin-06-out
#net DirA stepgen.2.dir => parport.0.pin-09-out

 

 

 

stepper.hal

 

############################ Step Generators #########################################
# Stepper module, four step generators, all using step/dir
loadrt stepgen step_type=0,0,0
# Load realtime ddt for velocity calculations used for CHL
loadrt ddt count=2
# Hook functions to base thread (high speed thread for step generation)
addf stepgen.make-pulses base-thread
# Hook functions to servo thread
addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
addf ddt.0 servo-thread
addf ddt.1 servo-thread
# Configure signals for Z axis to be twice the size of the signals for other axis because
# Z axis has a slo-syn driver which can't handle smaller step sizes
setp stepgen.2.steplen 5200
setp stepgen.2.stepspace 5200
setp stepgen.2.dirsetup 5200
setp stepgen.2.dirhold 5200
# Set stepgen module scaling - get values from ini file
setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.2.position-scale [AXIS_2]SCALE
#setp stepgen.3.position-scale [AXIS_3]SCALE
# Set stepgen module accel limits - get values from ini file
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
#setp stepgen.3.maxaccel [AXIS_3]STEPGEN_MAXACCEL
#setp stepgen.2.maxvel [AXIS_3]MAX_ACCELERATION
#setp stepgen.2.maxvel [AXIS_2]MAX_VELOCITY

# Hook up stepgen to motion modules
net PosX-cmd axis.0.motor-pos-cmd => stepgen.0.position-cmd
net PosX-fb stepgen.0.position-fb => axis.0.motor-pos-fb ddt.0.in
net PosY-cmd axis.1.motor-pos-cmd => stepgen.1.position-cmd
net PosY-fb stepgen.1.position-fb => axis.1.motor-pos-fb ddt.1.in
# Z Axis Position and feedback signals handled by THC, see thc.hal
#net PosZ-cmd axis.2.motor-pos-cmd => stepgen.2.position-cmd
#net PosZ-fb stepgen.2.position-fb => axis.2.motor-pos-fb
#net PosA-cmd axis.3.motor-pos-cmd => stepgen.3.position-cmd
#net PosA-fb stepgen.3.position-fb => axis.3.motor-pos-fb
# Hook up enable signals for step generators
net EnableX axis.0.amp-enable-out => stepgen.0.enable
net EnableY axis.1.amp-enable-out => stepgen.1.enable
net EnableZ axis.2.amp-enable-out => stepgen.2.enable
#net EnableA axis.3.amp-enable-out => stepgen.3.enable

 

 

 

kinematics.hal

############################## Kinematics & Motion Controller ####################################
# Kinematics
loadrt gantrykins
# Settings for gantrykins
setp gantrykins.joint-0 0
setp gantrykins.joint-1 1
setp gantrykins.joint-2 2
#setp gantrykins.joint-3 1
# motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES

 

 

estop.hal

################################ Other ##########################################
#Connect Estop and ChargePump
loadrt estop_latch
addf estop-latch.0 base-thread
# External Estop Signal handled by THC
# External estop is now wired into a central latch in thc.hal
#net ExtEStop parport.0.pin-10-in => estop-latch.0.fault-in
#net EstopLatchWatchDog estop-latch.0.watchdog => parport.0.pin-17-out parport.1.pin-17-out
net EstopRequestEnable iocontrol.0.user-request-enable => estop-latch.0.reset
net EstopEnableOut iocontrol.0.user-enable-out => estop-latch.0.ok-in
net EstopOKOut estop-latch.0.ok-out => iocontrol.0.emc-enable-in

 

 

axis_manualtoolchange.hal

loadusr -W hal_manualtoolchange
net tool-change hal_manualtoolchange.change iocontrol.0.tool-change
net tool-changed hal_manualtoolchange.changed iocontrol.0.tool-changed
net tool-prep-number hal_manualtoolchange.number iocontrol.0.tool-prep-number
net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepared

 

 

thc.hal

###################### Torch Height Control ##########################
# Load realtime hal components for THC
loadrt and2 count=9
loadrt comp count=3
loadrt updown
loadrt flipflop count=3
loadrt hypot
loadrt logic personality=0x203
loadrt minmax
loadrt mult2 count=2
loadrt mux2 count=7
loadrt not count=3
loadrt oneshot count=4
loadrt or2 count=9
loadrt scale
loadrt sum2 count=5
loadrt xor2 count=4
loadrt conv_s32_float
loadrt edge count=2
# Attach realtime hal components to a realtime thread
addf and2.0 servo-thread
addf and2.1 servo-thread
addf and2.2 servo-thread
addf and2.3 servo-thread
addf and2.4 servo-thread
addf and2.5 servo-thread
addf and2.6 servo-thread
addf and2.7 servo-thread
addf and2.8 servo-thread
addf comp.0 servo-thread
addf comp.1 servo-thread
addf comp.2 servo-thread
addf conv-s32-float.0 servo-thread
addf edge.0 servo-thread
addf edge.1 servo-thread
addf flipflop.0 servo-thread
addf flipflop.1 servo-thread
addf flipflop.2 servo-thread
addf hypot.0 servo-thread
addf logic.0 servo-thread
addf minmax.0 servo-thread
addf mult2.0 servo-thread
addf mult2.1 servo-thread
addf mux2.0 servo-thread
addf mux2.1 servo-thread
addf mux2.2 servo-thread
addf mux2.3 servo-thread
addf mux2.4 servo-thread
addf mux2.5 servo-thread
addf mux2.6 servo-thread
addf not.0 servo-thread
addf not.1 servo-thread
addf not.2 servo-thread
addf oneshot.0 servo-thread
addf oneshot.1 servo-thread
addf oneshot.2 servo-thread
addf oneshot.3 servo-thread
addf or2.0 servo-thread
addf or2.1 servo-thread
addf or2.2 servo-thread
addf or2.3 servo-thread
addf or2.4 servo-thread
addf or2.5 servo-thread
addf or2.6 servo-thread
addf or2.7 servo-thread
addf or2.8 servo-thread
addf updown.0 servo-thread
addf scale.0 servo-thread
addf sum2.0 servo-thread
addf sum2.1 servo-thread
addf sum2.2 servo-thread
addf sum2.3 servo-thread
addf sum2.4 servo-thread
addf xor2.0 servo-thread
addf xor2.1 servo-thread
addf xor2.2 servo-thread
# Set static values and default values
setp oneshot.1.width [PLASMA]IGNITION_TIMEOUT
setp oneshot.2.width [PLASMA]ARC_OK_FILTER_TIME
setp oneshot.3.width [PLASMA]EXTINGUISH_TIMEOUT
setp oneshot.3.falling 1
setp oneshot.3.rising 0
setp comp.2.in0 [PLASMA]MAX_FAILED_IGNITIONS
setp mux2.1.in0 -1
setp mux2.1.in1 1
setp mux2.3.in0 0
# Set the lowest value the THC will try to move the torch
setp sum2.4.in0 [AXIS_2]MIN_LIMIT
# Set default gains for sum, positive for addition and negative for subtraction
# Setting positive gains will become implicit and those can be removed safely in a later version
setp sum2.0.gain0 1
setp sum2.0.gain1 1
setp sum2.1.gain0 1
setp sum2.1.gain1 1
setp sum2.2.gain0 1
setp sum2.2.gain1 -1
setp sum2.3.gain0 1
setp sum2.3.gain1 -1
setp sum2.4.gain0 1
setp sum2.4.gain1 -1
# Set Hysterisis for float comp
setp comp.1.hyst 0.001
# Set percentage multiplier for scale
setp scale.0.gain 0.01
# Set edge detectors to work on falling edges to detect Ignition Timeouts
setp edge.0.in-edge 1
setp edge.1.in-edge 1

# Hook up parallel port pins
# Change the pins to corespond to inputs from THC or BOB for UP and DOWN signals
# For negative inputs use the omited part, use lower ones and omit upper ones
#net MoveDown parport.0.pin-10-in => or2.0.in0
#net MoveUp parport.0.pin-11-in => or2.0.in1 mux2.1.sel
net MoveDown parport.0.pin-10-in-not => or2.0.in0
net MoveUp parport.0.pin-11-in-not => or2.0.in1 mux2.1.sel
# Hook up component pins using the net command
# Change the pins to corespond to Z-Home limit swith and ARCOK input from THC or BOB
# For negative inputs use the omited part, use lower ones and omit upper ones
#net FloatSwitch parport.0.pin-13-in => or2.1.in1 and2.4.in0 and2.5.in1 and2.6.in1
#net ArcOK parport.0.pin-12-in => or2.4.in1 xor2.1.in1 oneshot.2.in
net FloatSwitch parport.0.pin-13-in-not => or2.1.in1 and2.4.in0 and2.5.in1 and2.6.in1
net ArcOK parport.0.pin-12-in-not => or2.4.in1 xor2.1.in1 oneshot.2.in
net FilteredArcOK xor2.1.out => or2.1.in0 or2.6.in0 not.1.in and2.4.in1 flipflop.1.set oneshot.3.in flipflop.2.set and2.2.in0
net TimersOrArcOK or2.4.out => or2.5.in0 or2.3.in0
net LockHeight and2.0.out => xor2.2.in0
net EnabledAdjustHeight and2.1.out => mux2.3.sel
net ReleaseFeedHold and2.2.out => xor2.0.in1
# Change the pin number to corespond to where your "spindle on" or relay is connected for starting the torch.
net TorchOn => and2.3.out parport.0.pin-08-out oneshot.1.in not.2.in


net FloatSwitchEstop and2.4.out => logic.0.in-02
net FloatAndTorchOn and2.5.out => or2.2.in1
net TorchAndFloat and2.6.out => flipflop.0.set
net PosAndFloat and2.7.out => or2.5.in1
net IgnitionEstop comp.2.out => logic.0.in-01
net StartTorchOn and2.8.out => and2.3.in0
net OriginalPosZ-cmd axis.2.motor-pos-cmd => mux2.5.in0 sum2.2.in1
net JointPoz-cmd axis.2.joint-pos-cmd => sum2.2.in0
net CHLTriggered comp.0.out => and2.0.in0
net AtPosition comp.1.equal => and2.7.in0
net VelX ddt.0.out => hypot.0.in0
net VelY ddt.1.out => hypot.0.in1
net FloatSwitchSet flipflop.0.out => or2.3.in1 and2.7.in1
net ModeIsAuto halui.mode.is-auto => mux2.5.sel
net VelXY hypot.0.out => minmax.0.in comp.0.in0
net TriggerEStop logic.0.or => estop-latch.0.fault-in
net MaximumVelocity minmax.0.max => mult2.1.in0
net TurnTorchOn motion.spindle-forward => xor2.0.in0 and2.8.in0 and2.6.in0 mux2.4.sel not.0.in
net HeightAdjustment mult2.0.out => mux2.3.in1
net VelocityThreshold mult2.1.out => comp.0.in1
net HeightOffset mux2.0.out => sum2.1.in1
net AdjustmentDirection mux2.1.out => mult2.0.in1
net PositionSnapshot mux2.2.out => sum2.1.in0 mux2.2.in0
net SelectedAdjustment mux2.3.out => mux2.0.in1
net PosZ-cmd mux2.4.out => stepgen.2.position-cmd comp.1.in1
net PosSelectB mux2.5.out => mux2.4.in0
net PosSelectC mux2.6.out => mux2.4.in1
net TurnTorchOff not.0.out => and2.5.in0 or2.7.in0 updown.0.reset
net ReversedArcOK not.1.out => minmax.0.reset
net PierceDelayElapsed oneshot.0.out-not => and2.2.in1
net IgnitionTimer oneshot.1.out => edge.0.in or2.8.in0
net AdjustHeight or2.0.out => xor2.2.in1 and2.1.in0
net TakeSnapshot or2.1.out => mux2.2.sel
net TriggerLimit or2.2.out => axis.2.neg-lim-sw-in axis.2.pos-lim-sw-in axis.2.home-sw-in
net ProbeOrArcOK or2.3.out => mux2.6.sel
net PAFOrArcOK or2.5.out => and2.3.in1
net EstopOrArcOK or2.6.out => flipflop.0.reset
#net ExtEStop parport.0.pin-15-in => logic.0.in-00
net ExtEStop  => logic.0.in-00
#net LimitZ parport.0.pin-15-in => or2.2.in0
net ThresholdPercentage scale.0.out => mult2.1.in1
net PosZ-fb stepgen.2.position-fb => axis.2.motor-pos-fb mux2.2.in1 comp.1.in0
net PierceOffset sum2.0.out => mux2.0.in0
net DestinationHeight sum2.1.out => mux2.6.in1
net JointAxisDiff sum2.2.out => sum2.3.in1 sum2.4.in1
net StepCordsTH sum2.3.out => mux2.5.in1
net StepCordsML sum2.4.out => mux2.6.in0
net FeedHold xor2.0.out => motion.feed-hold
net CHLSwitched xor2.2.out => and2.1.in1
net ArcOKTimer oneshot.2.out => xor2.1.in0
net PierceLatch flipflop.1.out => mux2.0.sel oneshot.0.in
net IgnitionCounterS32 updown.0.count => conv-s32-float.0.in
net IgnitionCounterFloat conv-s32-float.0.out => comp.2.in1
net IgnitionTimerOff oneshot.1.out-not => updown.0.countup
net TorchOff not.2.out => flipflop.1.reset
net TorchTurnedOffOrTimeout or2.7.out => or2.6.in1
net IgnitionTimeout edge.0.out => or2.7.in1
net ExtinguishTimer oneshot.3.out edge.1.in
net ExtinguishLatch flipflop.2.out or2.8.in1
net ExtinguishTimeout edge.1.out flipflop.2.reset
net Timers or2.8.out => or2.4.in0

 

 

 

thc_toma.ini

# EMC controller parameters for a plasma controller. Make these what you need
# for your system.
# General note: Comments can either be preceded with a # or ; - either is
# acceptable, although # is in keeping with most linux config files.
# Settings with a + at the front of the comment are likely needed to get
# changed by the user.
# Settings with a - at the front are highly unneeded to be changed
###############################################################################
# General section
###############################################################################
[EMC]
#- Version of this INI file
VERSION = $Revision$
#+ Name of machine, for use with display, etc.
MACHINE = --CNC--PLASMA-THC--by--TOM BERISHA--Pej-Kosov--Copyright@TOMA--
#+ Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
DEBUG =  0
#DEBUG = 0x00000007
#DEBUG = 0x7FFFFFFF
# Enable Adaptive Feedrate for THC
# Used to pause execution of gcode for setup,
# pierce delay and manual verification of pierce height
# Set spindle speed to 1
# Set up to use metric mm
RS274NGC_STARTUP_CODE = M52 P1 G21 S1
###############################################################################
# Sections for display options
###############################################################################
[DISPLAY]
#Plasma Control Panel
PYVCP =   thc_vcp.xml
#+ Name of display program, e.g., xemc
DISPLAY =  axis
#DISPLAY =   tkemc
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME =  0.200
#- Path to help file
HELP_FILE =   doc/help.txt
#HELP_FILE =  tklinucnc.txt

#- Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
#- Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
#+ Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.2
#- Prefix to be used
PROGRAM_PREFIX = /home/me/Documents
#- Text Editor
EDITOR =   gedit
#- Introductory graphic
INTRO_GRAPHIC =  linuxcnc.gif
INTRO_TIME =  3
#Increments for the JOB Section
INCREMENTS = 1000 10 1 0.1 0.01
OPEN_FILE = /home/me/linuxcnc/configs/thc-toma/cncbytoma.ngc
###############################################################################
# Task controller section
###############################################################################
[TASK]
#- Name of task controller program, e.g., bridgeporttask
TASK =   milltask
#- Cycle time, in seconds, that task controller will sleep between polls
CYCLE_TIME =  0.010
###############################################################################
# Part program interpreter section
###############################################################################
[RS274NGC]
#- File containing interpreter variables
PARAMETER_FILE = plasma.var
###############################################################################
# Motion control section
###############################################################################
[EMCMOT]
#- Name of the motion controller to use (only one exists for nontrivkins)
EMCMOT =  motmod
#- Timeout for comm to emcmot, in seconds
COMM_TIMEOUT =  1.0
#- Interval between tries to emcmot, in seconds
COMM_WAIT =  0.010
#+ Base task period, in nanosecs - this is the fastest thread in the machine
#BASE_PERIOD =  15000
#BASE_PERIOD =  18000
#BASE_PERIOD =  20000
#BASE_PERIOD =  35000
BASE_PERIOD =  100000
#- Servo task period, in nanosecs - will be rounded to an int multiple of BASE_PERIOD
#SERVO_PERIOD =  10000
SERVO_PERIOD =  1000000
#SERVO_PERIOD =  100000
#- Trajectory Planner task period, in nanosecs - will be rounded to an
#   integer multiple of SERVO_PERIOD
#TRAJ_PERIOD =  1000000
#TRAJ_PERIOD =  200000
###############################################################################
# Hardware Abstraction Layer section
###############################################################################
[HAL]
# The run script first uses halcmd to execute any HALFILE
# files, and then to execute any individual HALCMD commands.
#
# HALUI to interact with NML
# Run before any other HALFILE
HALUI =   halui
# list of hal config files to run through halcmd
#+ files are executed in the order in which they appear
HALFILE =  kinematics.hal
HALFILE =  stepper.hal
HALFILE =  thc_parport.hal
HALFILE =  estop.hal
HALFILE =  thc.hal
HALFILE =  axis_manualtoolchange.hal
# A file to hook pyvcp to hal signals
POSTGUI_HALFILE = thc_vcp.hal
#- list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD =  save neta
###############################################################################
# Trajectory planner section
###############################################################################
[TRAJ]
#+ machine specific settings
#AXES =   3
#COORDINATES =  X Y Z
#LINEAR_UNITS =  mm
#ANGULAR_UNITS =		 degree
#DEFAULT_VELOCITY = 2.20
#MAX_VELOCITY =  22
#DEFAULT_ACCELERATION = 300
#MAX_ACCELERATION = 400
#POSITION_FILE = last_position.txt
#-------------------
AXES = 3
COORDINATES = X Y Z
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 2.20
MAX_LINEAR_VELOCITY = 22.00




###############################################################################
# Axes sections
###############################################################################
#+ First axis (X)
[AXIS_0]
TYPE =    LINEAR
HOME =    0.000
MAX_VELOCITY =   22
MAX_ACCELERATION =  500
STEPGEN_MAXACCEL =  625
BACKLASH =   0.000
SCALE =    228.571428571
OUTPUT_SCALE =   1.000
MIN_LIMIT =					 -1000
MAX_LIMIT =   1000
FERROR =   1.270
MIN_FERROR =   0.254
HOME_OFFSET =   0.0
#HOME_SEARCH_VEL =  -50.0
#HOME_LATCH_VEL =  1.0
#HOME_USE_INDEX =  NO
#HOME_IGNORE_LIMITS =  YES
#HOME_SEQUENCE =   1
#+ Second axis (Y)
[AXIS_1]
TYPE =    LINEAR
HOME =    0.000
MAX_VELOCITY =   15
MAX_ACCELERATION =  500
STEPGEN_MAXACCEL =  625
BACKLASH =   0.000
SCALE =    200
OUTPUT_SCALE =   1.000
MIN_LIMIT =   -1000
MAX_LIMIT =   1000
FERROR =   1.270
MIN_FERROR =   0.254
HOME_OFFSET =   0.0
#HOME_SEARCH_VEL =  -50.0
#HOME_LATCH_VEL =  1.0
#HOME_USE_INDEX =  NO
#HOME_IGNORE_LIMITS =  YES
#HOME_SEQUENCE =   1
#+ Third axis (Z)
[AXIS_2]
TYPE =    LINEAR
HOME =    0.000
MAX_VELOCITY =   6
MAX_ACCELERATION =  10000
STEPGEN_MAXACCEL =  12500
#STEPGEN_MAXVEL =  90
#STEPGEN_MAXACCEL =  2960
##BACKLASH =   0.000
SCALE =    320
OUTPUT_SCALE =   1.000
MIN_LIMIT =   -100
MAX_LIMIT =   100.0
FERROR =   1.270
#MIN_FERROR =   .25
# This is done so Z axis can be operated with a HAL closed loop (plasma THC)
MIN_FERROR =   500
HOME_OFFSET =   15.0
#HOME_SEARCH_VEL =  10.0
#HOME_LATCH_VEL =  -2.0
#HOME_USE_INDEX =  NO
#HOME_IGNORE_LIMITS =  YES
#HOME_SEQUENCE =   0
###############################################################################
# section for main IO controller parameters
###############################################################################
[EMCIO]
#- Name of IO controller program, e.g., io
EMCIO =   io
#- Cycle time, in seconds
CYCLE_TIME =		    0.100
#- Tool table file, torches and consumables
TOOL_TABLE =		    torches.tbl
#+ Tool Change Position, if this is set the torch will move the the specified position before requesting a tool change
#TOOL_CHANGE_POSITION = 0 0 50
[PLASMA]
#- Ignition fault timeout, the allowed time from TorchON untill ArcOK, in seconds
IGNITION_TIMEOUT = 3
#- ArcOK timeout, a filter, for a signal to be valid it needs to exceed the specified time period, in seconds
ARC_OK_FILTER_TIME = 0.2
#- Ignition Retries before abort, the number of attempts to re-probe and start the torch before estop
MAX_FAILED_IGNITIONS = 5
#- Extinguish Timeout, a grace period after loosing ArcOK before shutting off the torch and re-probing, in seconds
EXTINGUISH_TIMEOUT = 0.2

Изменено пользователем jnllll

Поделиться сообщением


Ссылка на сообщение

MAX_ACCELERATION = 10000

STEPGEN_MAXACCEL = 12500

 

10000 mm/sek/sek? Не многовато?

Поделиться сообщением


Ссылка на сообщение
Дата: (изменено)

В описании ошибка вкралась. Не движется ось Z с резаком в тот момент, когда Должно происходить опускание оси Z для поиска металла.

 

desti

Нет, нормально. Я специально такую выбирал, чтобы скорость нарастала резко. Движок справляется. Тем более ведь при ручном управлении ось Z движется, хотя ускорение применяется такое же. Или я ошибаюсь?

Изменено пользователем jnllll

Поделиться сообщением


Ссылка на сообщение

Не движется ось Z с резаком в тот момент, когда Должно происходить опускание оси Z для поиска металла.

А просто по команде, например, G91 G01 Z1 F20 ось двигается?

Поделиться сообщением


Ссылка на сообщение

Значит проблема в коде, а не в оси. Что-то не включается. Запустите HAL Configuration и в watch смотрите сигналы на оси при подаче команды, наверняка какой-нить "enable" отвалился.

Поделиться сообщением


Ссылка на сообщение

desti

Но ведь по звуку мотора понятно, что импульсы на него начинают идти. Просто с более высокой скоростью нежели он способен крутиться. Значит все enable проходят. И в окне оболочки видно, что координаты изменяются. Но с гораздо более высокой скоростью, нежели когда управление осуществляется в ручном режиме.

Поделиться сообщением


Ссылка на сообщение

Ну меня-то нет у вашего станка, может у вас там не степ идет, а enable зуммерит :)

Я бы сделал настройки этой оси максимально приближенными к осям, которые работают.

Поделиться сообщением


Ссылка на сообщение
Дата: (изменено)

Вот участок кода.

%
(Header)
(Generated by gcodetools from Inkscape.)
(Using default header. To add your own header create file "header" in the output dir.)
(Header end.)
G21 (All units in mm)
(Start cutting path id: path2831)
(Change tool to Plasma cutter)


G00 X370.739340 Y6.442176
M03 (turn on plasma)

G03 X376.648681 Y4.358001   I14.469284 J31.605725 F3400.000000

 

По команде M3 ось должна опускаться до срабатывания датчика металла, затем сигнал torchOn включается. Я вот не могу разобрать цепочку, где в HAL этот своеобразный макрос прописан.

 

 

desti

Я думал, что вы говорите об enable которые в hal упомянуты.

А так у меня никаких выводов enable с порта вообще не выходит. Просто степ и дир. Станок самодельный, всё предельно просто.

Изменено пользователем jnllll

Поделиться сообщением


Ссылка на сообщение

может M03 S100

Поделиться сообщением


Ссылка на сообщение
Дата: (изменено)

desti

 

Изменил параметры для третьей оси

MAX_ACCELERATION = 100

STEPGEN_MAXACCEL = 125

Теперь ось вначале начинает крутиться с таким медленным ускорением и затем когда скорость превышает допустимую для мотора, он стопорится, а звук как я и описал раньше свидетельствует что импульсы идут. Не понимаю, почему. Ведь в ini файле скорость ограничена. Почему он её превышает? Именно при операции поиска металла...

 

nkp

Интересно. Сейчас попробую

Изменено пользователем desti

Поделиться сообщением


Ссылка на сообщение

M3 вроде нельзя отремапить, как туда впихнули какой-то код?

Поделиться сообщением


Ссылка на сообщение
Дата: (изменено)

desti

Если бы я разбирался... Но факт есть факт.

Вот код из Hal

net TurnTorchOn motion.spindle-forward => xor2.0.in0 and2.8.in0 and2.6.in0 mux2.4.sel not.0.in

Сигнал идёт через цепочки этих функций и где-то выходит на parport

И где-то сигнал от stepgen по-видимому умножается при этом, если я правильно понимаю.

Пин motion.spindle-forward как раз активизируется при M3?

 

 

nkp

Безрезультатно...

Изменено пользователем jnllll

Поделиться сообщением


Ссылка на сообщение

тогдп открывать halshow и смотреть на пины по цепочке (с конца удобней)

Поделиться сообщением


Ссылка на сообщение

Да я даже зарисовывал граф.

post-175858-034525500_1528911121_thumb.png

Поделиться сообщением


Ссылка на сообщение

#net MoveDown parport.0.pin-10-in => or2.0.in0

#net MoveUp parport.0.pin-11-in => or2.0.in1 mux2.1.sel

 

#net FloatSwitch parport.0.pin-13-in => or2.1.in1 and2.4.in0 and2.5.in1 and2.6.in1

#net ArcOK parport.0.pin-12-in => or2.4.in1 xor2.1.in1 oneshot.2.in

 

с этим разобрались?

Поделиться сообщением


Ссылка на сообщение

Что-то вы ужасное нарисовали :)

 

AND2, к примеру, выглядит так (а по аналогии и все остальные элементы так выглядят, слева IN-ы и SEL-ы, справа OUT-ы).

 

and2.jpg

Поделиться сообщением


Ссылка на сообщение
Дата: (изменено)

nkp

Да. Это просто сигналы на порт от датчика наличия материала и сигналов THC

Я выбрал те, что надо. Инверсные пины закомментировал. С этим всё в порядке.

 

desti

Я знаю. Просто не нашёл логических элементов в DIA а так-то всё правильно. Квадратики - это компоненты. В них указаны их названия. Слева подходят сигналы, справа выходят. По стрелкам же видно. В ромбиках названия сигналов. Просто не нашёл как стрелочки подписывать. Это ж я для себя рисовал, а не на выставку. Чтобы разобраться.

Правда я не всё там конечно ещё нарисовал.

Изменено пользователем jnllll

Поделиться сообщением


Ссылка на сообщение
Дата: (изменено)

Нашёл вот такой код в hal файле

# Configure signals for Z axis to be twice the size of the signals for other axis because
# Z axis has a slo-syn driver which can't handle smaller step sizes
setp stepgen.2.steplen 5200
setp stepgen.2.stepspace 5200
setp stepgen.2.dirsetup 5200
setp stepgen.2.dirhold 5200

 

Почему-то эти параметры установлены только для генератора шагов оси Z.

Они могут как-то переопределять максимальную скорость для оси, указанную в ini файле?

Изменено пользователем jnllll

Поделиться сообщением


Ссылка на сообщение
Дата: (изменено)

И ещё почему-то вот эта строчка заккоментирована в файле stepper.hal.

#setp stepgen.2.maxvel [AXIS_2]MAX_VELOCITY

Получается, что ini файл всего лишь набор констант, которые никуда автоматом не устанавливаются и их нужно устанавливать вручную в hal файлах? Если это так, то видимо в этом и проблема? Ограничение скорости просто для оси z не установлено, хоть и задана константа в ini файле?

Изменено пользователем jnllll

Поделиться сообщением


Ссылка на сообщение

Получается, что ini файл всего лишь набор констант

Не, INI-шник еще и набор констант, к которым можно обращаться из других файлов по названию секции и имени.

 

А с steplen и stepspace разбирайтесь, параметры длительности импульса и паузы нужно брать из описания привода.

Поделиться сообщением


Ссылка на сообщение

посмотреть в halshow на пин cmd оси Z во время подачи команды М3,

и если задание приходит, то оставить в покое логику thc.hal и искать проблему в другом...

Поделиться сообщением


Ссылка на сообщение
Дата: (изменено)

desti

 

набор констант, к которым можно обращаться из других файлов по названию секции и имени.

Так я об этом и говорю, что параметры нужно назначать вручную, обращаясь к этим именам.

Знать бы изначально, какие константы подхватываются автоматически, а какие надо вручную устанавливать...

Всё, проблема решилась.

Раскомментировал строчку

#setp stepgen.2.maxvel [AXIS_2]MAX_VELOCITY

и теперь скорость не превышает заданной.

Всем спасибо, кто помогал

Изменено пользователем jnllll

Поделиться сообщением


Ссылка на сообщение

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу


×
×
  • Создать...

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.