Files
MyOwnEtherCATDevice/linuxcnc/sim.gmoccapy.lathe_configs/hallib/basic_sim.tcl
2024-01-06 20:54:15 +01:00

72 lines
2.2 KiB
Tcl
Executable File

# basic_sim.tcl
#
# Provide common hal components and connections for a simulated machine.
# By default, the script makes and connects ddts, simulated_home,
# spindle, and hal_manualtoolchange components.
#
# Options are available to
# a) disable specific hal components and connections
# b) save a halfile equivalent to the hal commands executed by
# this script (and any prior executed hal commands)
#
# Coordinate letters and number_of_joints are determined from the usual
# INI file settings.
#
# INI file usage:
# [HAL]HALFILE = basic_sim.tcl [Options]
# Options:
# -no_make_ddts
# -no_simulated_home
# -no_use_hal_manualtoolchange
# -no_sim_spindle
#----------------------------------------------------------------------
# Notes:
# 1) ::env() is a global associative array of environmental variables
# as exported by the main LinuxCNC script (linuxcnc)
# 2) Settings from the INI file are available as global associative
# arrays named: ::SECTION(varname)
# example: ::EMCMOT(SERVO_PERIOD)
# 3) procs are from sim_lib.tcl
#begin-----------------------------------------------------------------
source [file join $::env(HALLIB_DIR) sim_lib.tcl]
set save_options {}
if [catch {check_ini_items} msg] {
puts "\nbasic_sim.tcl ERROR: $msg\n"
exit 1
}
set axes [get_traj_coordinates]
set number_of_joints $::KINS(JOINTS)
set base_period 0 ;# 0 means no thread
if [info exists ::EMCMOT(BASE_PERIOD)] {
set base_period $::EMCMOT(BASE_PERIOD)
}
core_sim $axes \
$number_of_joints \
$::EMCMOT(SERVO_PERIOD) \
$base_period \
$::EMCMOT(EMCMOT)
if {[lsearch -nocase $::argv -no_make_ddts] < 0} {
make_ddts $number_of_joints
}
if {[lsearch -nocase $::argv -no_simulated_home] < 0} {
simulated_home $number_of_joints
}
if {[lsearch -nocase $::argv -no_use_hal_manualtoolchange] < 0} {
use_hal_manualtoolchange
lappend save_options use_hal_manualtoolchange
}
if {[lsearch -nocase $::argv -no_sim_spindle] < 0} {
sim_spindle
}
# make a halfile (inifilename_cmds.hal) with equivalent hal commands
set savefilename \
./[file rootname [file tail $::env(INI_FILE_NAME)]]_cmds.hal
save_hal_cmds $savefilename $save_options