pyiocontrol.ini.notworking
1 # EMC controller parameters for a simulated machine. 2 # General note: Comments can either be preceded with a # or ; - either is 3 # acceptable, although # is in keeping with most linux config files. 4 # General section ------------------------------------------------------------- 5 6 [EMC] 7 # make emcsrv not create tool rcs channels if not using iocontrol 8 TOOL_CHANNELS = 0 9 # Name of NML file to use, default is emc.nml 10 NML_FILE = no-iotask.nml 11 # Version of this INI file 12 VERSION = 1.0 13 # Name of machine, for use with display, etc. 14 MACHINE = pyiocontrol.ini 15 # Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others 16 #DEBUG = 0x7FFFFFFF 17 #DEBUG = 0x7FFFDEFF #no interp,oword 18 #DEBUG = 0x00008000 # py only 19 #DEBUG = 0x0000E000 # py + remap + Oword 20 #DEBUG = 0x0000C000 # py + remap 21 #DEBUG = 0x0000C100 # py + remap + Interpreter 22 #DEBUG = 0x0000C140 # py + remap + Interpreter + NML msgs 23 DEBUG = 0x0004C140 # py + remap + Interpreter + NML msgs + PythonTask 24 #DEBUG = 0x0000C040 # py + remap + NML 25 #DEBUG = 0x0004C040 # py + remap + NML + PythonTask 26 #DEBUG = 0x0003E100 # py + remap + Interpreter + oword + signals + namedparams 27 #DEBUG = 0x00008000 28 #DEBUG = 0 # 0x00000100 29 # 0x00000001 Ausgabe ungültige Meldungen 30 # 0x00000002 Ausgabe Konfigurations-Settings 31 # 0x00000004 Ausgabe Defaults 32 # 0x00000008 Ausgabe Version 33 # 0x00000010 Ausgabe Task Meldungen 34 # 0x00000020 Ausgabe IO-Points 35 # 0x00000040 Ausgabe NML-Messages 36 # 0x00000080 Ausgabe Zeit zur Beendigung einer Motorbewegung 37 # 0x00000100 Ausgabe Intepreter Debugging 38 # 0x00000200 Ausgabe RCS-Debugging 39 # 0x00000400 Ausgabe Roh-Bahn-Daten 40 # 0x00000800 Ausgabe Interpreter List 41 #define EMC_DEBUG_IOCONTROL 0x00001000 42 #define EMC_DEBUG_OWORD 0x00002000 43 #define EMC_DEBUG_REMAP 0x00004000 44 #define EMC_DEBUG_PYTHON 0x00008000 45 #define EMC_DEBUG_NAMEDPARAM 0x00010000 46 #define EMC_DEBUG_GDBONSIGNAL 0x00020000 47 #define EMC_DEBUG_PYTHON_TASK 0x00040000 48 # 0x7FFFFFFF Ausgabe alle Debugging Messages 49 # Sections for display options ------------------------------------------------ 50 51 [DISPLAY] 52 # how to use the Firefox SQlite manager plugin as tooltable editor: 53 # 54 # 0: read http://code.google.com/p/sqlite-manager/wiki/XulrunnerApplication#More_details 55 # 56 # 1. download the zip file 'SQLiteManager 0.7.6 as XULRunner App ' 57 # or whatever is the latest from http://code.google.com/p/sqlite-manager/downloads/list 58 # 59 # 2. Install like so: 60 # sudo xulrunner --install-app /path/to/zipfile 61 # This will install an app in /usr/local/lib/lazierthanthou/sqlite-manager/sqlite-manager . 62 # (note this path recently change - please verify) 63 # 64 # 3. try the following command line with an appropriate path to the tooltable database: 65 # 66 TOOL_EDITOR= firefox -app /usr/lib/lazierthanthou/sqlite-manager/application.ini -f /home/mah/emc2-tc/configs/sim/tooltable.sqlite 67 #GLADEVCP=osubdemo-ns.ui 68 # Name of display program, e.g., xemc 69 DISPLAY = axis 70 #OPEN_FILE=../../nc_files/m66test.ngc 71 #OPEN_FILE=/home/mah/emc2-tc/nc_files/arcspiral.ngc 72 #OPEN_FILE=/home/mah/emc2-tc/nc_files/taskcall.ngc 73 OPEN_FILE=./taskcall.ngc 74 # Cycle time, in seconds, that display will sleep between polls 75 CYCLE_TIME = 0.100 76 # Path to help file 77 HELP_FILE = doc/help.txt 78 # Initial display setting for position, RELATIVE or MACHINE 79 POSITION_OFFSET = RELATIVE 80 # Initial display setting for position, COMMANDED or ACTUAL 81 POSITION_FEEDBACK = ACTUAL 82 # Highest value that will be allowed for feed override, 1.0 = 100% 83 MAX_FEED_OVERRIDE = 1.2 84 MAX_SPINDLE_OVERRIDE = 1.0 85 # Prefix to be used 86 #PROGRAM_PREFIX = /home/mah/emc2-tc/nc_files/ 87 PROGRAM_PREFIX = ../../nc_files/ 88 # Introductory graphic 89 #INTRO_GRAPHIC = emc2.gif 90 INTRO_TIME = 0 91 #EDITOR = gedit 92 INCREMENTS = 1 mm, .01 in, .1mm, 1 mil, .1 mil, 1/8000 in 93 94 [FILTER] 95 PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image 96 PROGRAM_EXTENSION = .py Python Script 97 png = image-to-gcode 98 gif = image-to-gcode 99 jpg = image-to-gcode 100 py = python 101 # Task controller section ----------------------------------------------------- 102 103 [RS274NGC] 104 #PRINT_CODES = 1 105 SUBROUTINE_PATH = ../../nc_files/remap_lib/common_nc_subs 106 #RS274NGC_STARTUP_CODE = G21 107 # this bombs - machine not on yet so no 'I/O' possible 108 #RS274NGC_STARTUP_CODE = M61Q3 109 # handler procedure called on aborts - to cleanup HAL pins etc 110 #ON_ABORT_COMMAND=o<on_abort>call 111 #LOG_FILE= py.log 112 LOG_LEVEL = 9 113 # File containing interpreter variables 114 PARAMETER_FILE = sim_mm.var 115 # generalized remapping 116 #------------------------ 117 # currently only unused M- and G-codes may be activated as per below, except for the 118 # T,M6,M61,S and F codes. 119 # G: currently supported modal group: 1 120 # M:currently supported modal groups: 5,6,7,8,9,10 121 # for T,S,F remaps the modal group is fixed and any modalgroup= option is ignored 122 # An argument specification (keyword 'argspec') describes required and permitted words, 123 # and precondtions for that code to execute. 124 # 125 126 # It consists of 0-n characters of the class [@A-KMNP-Za-kmnp-z^>] . 127 # 128 # parameter words: 129 # an uppercase letter for each required parameter 'word' 130 # a lowercase letter for each optional parameter 'word' 131 # 132 # Preconditions: 133 # an '^' means: speed must be > 0 134 # an '>' means: feed must be > 0 135 # 136 # if calling an NGC oword function (ngc=<funcname>), the parameters are passed 137 # as local named parameters which are already set when the function starts 138 # optional words are passed if set in the block, and may be tested for existence 139 # by # EXISTS(#<..>) . 140 # 141 # example: 142 # REMAP=M400 modalgroup=10 argspec=Px ngc=demosub 143 # 144 # executing 'M400 P2 X3' will result in the call 145 # o<demosub> call 146 # 147 # the demosub.ngc body might look as follows: 148 #------------------------- 149 # o<demosub> sub 150 # 151 # (debug, P=#<x>) (note: P is required since it's uppercase in the argspec) 152 # 153 # (the x argspec is optional since its lowercase in the argspec. Use as follows:) 154 # 155 156 # o100 if [EXISTS[#<x>]] 157 # (debug, X param set: #<x>) 158 # o100 endif 159 # 160 # o<demosub> endsub 161 # M2 162 #------------------------- 163 # 164 # Calling with traditional positioal parameter lists: 165 # 166 # To do so, add the '@' character to the argspec. 167 # In this case, the arguments (required or optional) will be passed tradional-style 168 # ini example: 169 # REMAP=M400 modalgroup=10 argspec=@XYp ngc=demosub 170 # 171 # executing 'M400 X2 Y3' will result in the call 172 173 # o<demosub> call [2] [3] 174 # 175 # executing 'M400 X2 Y3 P4' will result in the call 176 177 # o<demosub> call [2] [3] [4] 178 # 179 # NB: you lose the capability to distinguish more than one optional parameter word! 180 # 181 # if calling a Python function, the actual words present in the block as 182 # required or optional are passed in the words dictionary; no positional 183 # parameters are passed in this case. 184 #REMAP=F python=blah deppert -aanix 185 REMAP=G88.1 modalgroup=1 argspec=xyzpqr ngc=g881min 186 REMAP=G88.2 modalgroup=1 argspec=xyzpqr ngc=g882min prolog=addlocals 187 #prolog=fooprolog epilog=fooepilog 188 #REMAP=G88.6 modalgroup=1 argspec=@XYZ ngc=g886 189 #REMAP=G88.8 modalgroup=1 argspec=XYZ python=m315 190 # cone cycle 191 # abcdefhijklpqrstuvwxyz 192 REMAP=G88.9 modalgroup=1 argspec=@XZIJKLPQRABC ngc=rcone 193 194 # ( o<cone> call [X1][Z1][X2][Z2][step][feed][EngageZ][ClearAxial][ClearRadial][feedF][outflag]) 195 # O<cone> sub 196 # (Startpoint) 197 198 # #<X1> = [#1] X 199 200 # #<Z1> = [#2] Z 201 # (Endpoint) 202 203 # #<X2> = [#3] I 204 205 # #<Z2> = [#4] J 206 207 # #<step> = [#5] (Radial stepdown) K 208 209 # #<feed> = [#6] (Roughing feed rate) L 210 211 # #<EngageZ> = [#7] (Clearance to stock) P 212 213 # #<ClearAxial> = [#8] (Axial rest material for finishing) Q 214 215 # #<ClearRadial> = [#9] (Radial rest material for finishing) R 216 217 # #<feedF> = [#10] (Finishing feed rate) A 218 219 # #<outflag> = [#11] (Lead out move) B 220 221 # #<actX> = [#3] (Start position in X) C 222 #REMAP=M75 modalgroup=10 python=m250 223 #REMAP=M250 modalgroup=10 argspec=xyzpqr python=whoami prolog=fooprolog epilog=fooepilog 224 #REMAP=M251 modalgroup=6 argspec=xyzpqr python=whoami 225 #REMAP=M315 modalgroup=10 python=m315 226 REMAP=M400 modalgroup=10 prolog=introspect ngc=nestremap 227 REMAP=M401 modalgroup=10 prolog=introspect ngc=null_sub 228 REMAP=M402 modalgroup=10 argspec=p python=test_reschedule 229 REMAP=M403 modalgroup=10 argspec=p python=print_tool 230 REMAP=M404 modalgroup=10 argspec=PQ python=set_tool_zoffset 231 #REMAP=S ngc=sdemo prolog=sprolog 232 #REMAP=F ngc=null_sub # python=null_remap 233 #REMAP=S python=null_remap 234 # see pythonsubs.py and nc_files/remap-subroutines 235 #REMAP=T argspec=T prolog=prepare_prolog epilog=prepare_epilog ngc=prepare 236 #REMAP=M61 modalgroup=6 argspec=Q python=set_tool_number 237 #REMAP=M6 modalgroup=6 prolog=change_prolog ngc=change epilog=change_epilog 238 # for a 239 #REMAP=T argspec=T prolog=prepare_prolog ngc=rtdemo epilog=prepare_epilog 240 #REMAP=M6 modalgroup=6 prolog=change_prolog ngc=rm6demo epilog=change_epilog 241 #REMAP=M61 modalgroup=6 prolog=change_prolog ngc=rm6demo.ngc epilog=change_epilog 242 #REMAP=M61 modalgroup=6 argspec=Q python=set_tool_number 243 # this needs work.. 244 #RETAIN_G43=1 245 REMAP=M900 python=gen_backtrace modalgroup=10 246 REMAP=M901 python=gdb_window modalgroup=10 247 REMAP=M950 argspec=p python=symbols modalgroup=10 248 # a plain .ngc sub call by M42: 249 # 250 #REMAP=M42 modalgroup=9 prolog=setup_m42 ngc=m42.ngc epilog=finish_m42 251 # 252 # semantics: 253 # if M42 is encountered, execute it in modal group 9. 254 # Fail if other group 9 codes are present in the current block. 255 # the setup_m42 prolog Python function will be called before executing 'o<m42> call' 256 # Then the O-word sub m42.ngc is executed. 257 # The finish_m42 epilog Python function will be executed after m42.ngc finishes. 258 # 259 260 [EMCMOT] 261 EMCMOT = motmod 262 # Timeout for comm to emcmot, in seconds 263 COMM_TIMEOUT = 1.0 264 # BASE_PERIOD is unused in this configuration but specified in core_sim.hal 265 BASE_PERIOD = 0 266 # Servo task period, in nano-seconds 267 SERVO_PERIOD = 1000000 268 # Hardware Abstraction Layer section -------------------------------------------------- 269 270 [TASK] 271 # Name of task controller program, e.g., milltask 272 TASK = milltask 273 # Cycle time, in seconds, that task controller will sleep between polls 274 CYCLE_TIME = 0.001 275 # the Python plugins serves the interpreter as well as task 276 277 [HAL] 278 # The run script first uses halcmd to execute any HALFILE 279 # files, and then to execute any individual HALCMD commands. 280 # 281 # list of hal config files to run through halcmd 282 # files are executed in the order in which they appear 283 #HALFILE = core_sim_noio.hal 284 #HALFILE = core_sim.hal 285 POSTTASK_HALFILE = core_sim_test.hal 286 POSTTASK_HALFILE = axis_manualtoolchange.hal 287 POSTTASK_HALFILE = iov2.hal 288 #HALFILE = axis_owordsub_manualtoolchange.hal 289 #HALFILE = simulated_home.hal 290 POSTTASK_HALFILE = simulated_home.hal 291 #HALFILE = gamepad.hal 292 # list of halcmd commands to execute 293 # commands are executed in the order in which they appear 294 #HALCMD = save neta 295 # Single file that is executed after the GUI has started. Only supported by 296 # AXIS at this time (only AXIS creates a HAL component of its own) 297 #POSTGUI_HALFILE = test_postgui.hal 298 #POSTGUI_HALFILE = v2_oword_gladevcp_postgui_noio.hal 299 HALUI = halui 300 # Trajectory planner section -------------------------------------------------- 301 302 [HALUI] 303 #No Content 304 305 [TRAJ] 306 COORDINATES = X Y Z 307 HOME = 0 0 0 308 LINEAR_UNITS = mm 309 ANGULAR_UNITS = degree 310 DEFAULT_VELOCITY = 30.48 311 MAX_VELOCITY = 53.34 312 DEFAULT_ACCELERATION = 508 313 MAX_ACCELERATION = 508 314 POSITION_FILE = position_mm.txt 315 NO_FORCE_HOMING = 1 316 # Axes sections --------------------------------------------------------------- 317 # First axis 318 319 [EMCIO] 320 # Name of IO controller program, e.g., io 321 # explicitly support the start-change protocol. 322 # needs to be explicitly enabled for backwards compatibility. 323 # NB: if the start-change pin isnt used it needs to be looped like below to 324 # start-change-ack or an M6 will hang waiting for start-change-ack: 325 # net start-change iocontrol.0.start-change iocontrol.0.start-change-ack 326 #EMCIO = iov2 -support-start-change 327 # starting iov2 like so will create the start-change and start-change-ack pins 328 # but the start-change protocol remains disabled - start-change remains low and 329 # start-change-ack is ignored: 330 #EMCIO = iov2 331 # cycle time, in seconds 332 CYCLE_TIME = 0.100 333 # tool table file 334 #TOOL_TABLE = sim_mm_test.tbl 335 TOOL_TABLE = nstools.tbl 336 TOOL_CHANGE_POSITION = 0 0 50.8 337 RANDOM_TOOLCHANGER = 0 338 339 [KINS] 340 KINEMATICS = trivkins 341 JOINTS = 3 342 343 [AXIS_X] 344 MIN_LIMIT = -254 345 MAX_LIMIT = 254 346 MAX_VELOCITY = 30.48 347 MAX_ACCELERATION = 508 348 349 [JOINT_0] 350 TYPE = LINEAR 351 HOME = 0.000 352 MAX_VELOCITY = 30.48 353 MAX_ACCELERATION = 508 354 BACKLASH = 0.000 355 INPUT_SCALE = 157.48 356 OUTPUT_SCALE = 1.000 357 MIN_LIMIT = -254 358 MAX_LIMIT = 254 359 FERROR = 1.27 360 MIN_FERROR = .254 361 HOME_OFFSET = 0.0 362 HOME_SEARCH_VEL = 127 363 HOME_LATCH_VEL = 25.4 364 HOME_USE_INDEX = NO 365 HOME_IGNORE_LIMITS = NO 366 HOME_SEQUENCE = 1 367 HOME_IS_SHARED = 1 368 # Second axis 369 370 [AXIS_Y] 371 MIN_LIMIT = -254 372 MAX_LIMIT = 254 373 MAX_VELOCITY = 30.48 374 MAX_ACCELERATION = 508 375 376 [JOINT_1] 377 TYPE = LINEAR 378 HOME = 0.000 379 MAX_VELOCITY = 30.48 380 MAX_ACCELERATION = 508 381 BACKLASH = 0.000 382 INPUT_SCALE = 157.48 383 OUTPUT_SCALE = 1.000 384 MIN_LIMIT = -254 385 MAX_LIMIT = 254 386 FERROR = 1.27 387 MIN_FERROR = .254 388 HOME_OFFSET = 0.0 389 HOME_SEARCH_VEL = 127 390 HOME_LATCH_VEL = 25.4 391 HOME_USE_INDEX = NO 392 HOME_IGNORE_LIMITS = NO 393 HOME_SEQUENCE = 1 394 # Third axis 395 396 [AXIS_Z] 397 MIN_LIMIT = -50.8 398 MAX_LIMIT = 101.6 399 MAX_VELOCITY = 30.48 400 MAX_ACCELERATION = 508 401 402 [JOINT_2] 403 TYPE = LINEAR 404 HOME = 0.0 405 MAX_VELOCITY = 30.48 406 MAX_ACCELERATION = 508 407 BACKLASH = 0.000 408 INPUT_SCALE = 157.48 409 OUTPUT_SCALE = 1.000 410 MIN_LIMIT = -50.8 411 MAX_LIMIT = 101.6 412 FERROR = 1.27 413 MIN_FERROR = .254 414 HOME_OFFSET = 25.4 415 HOME_SEARCH_VEL = 127 416 HOME_LATCH_VEL = 25.4 417 HOME_USE_INDEX = NO 418 HOME_IGNORE_LIMITS = NO 419 HOME_SEQUENCE = 0 420 HOME_IS_SHARED = 1 421 # section for main IO controller parameters ----------------------------------- 422 423 [PYTHON] 424 #PLUGIN_DIR=/home/mah/emc2-tc/configs/sim/pysubs 425 PLUGIN_DIR=./pysubs 426 # import the following Python modules 427 MODULE_BASENAME=plugins 428 # if this is set: 429 RELOAD_ON_CHANGE=1 430 # and the file specified in MODULE_BASENAME was changed, it will be reloaded before 431 # executing any Python calls 432 # This is handy for debugging because you dont need to restart EMC 433 # BUT it incurs a bit of overhead per call so you might want to turn 434 # it off in production mode 435 # the Python reload_on_change variable may be used to toggle this 436 # at runtime 437 #LOG_FILE= py.log 438 LOG_LEVEL = 2 439 # start a Python (really IO) Task class 440 # see end of $PLUGIN_DIR/$MODULE_BASENAME/task.py to see how it's instantiated 441 PYTHON_TASK=1 442 # section for everything tool related 443 # relevant only if NOT using iocontrol - see EMCIO in that case 444 445 [TOOL] 446 # how to connect to a toolstore in an SQL database 447 ODBC_CONNECT= Driver=SQLite3;Database=tooltable.sqlite 448 # legacy tool table filename 449 TOOL_TABLE = foo.tbl 450 # if nonzero, save tool-in-spindle and pocket-prepped on exit, and restore on startup 451 SAVE_TOOLSTATE=1 452 # manual, random, any other 453 CHANGER_TYPE= manual 454 # if TASK_TOOLCHANGE_PINS=1, the task Python plugin will emulate the 455 # following iocontrol.0 pins: 456 # tool-change 457 # tool-changed 458 # tool-number 459 # tool-prep-number 460 # tool-prep-pocket 461 # tool-prepare 462 # tool-prepared 463 # 464 TASK_TOOLCHANGE_PINS=1 465 # if TASK_START_CHANGE_PINS=1, the task Python plugin will emulate the 466 # start-change/start-change-ack pins and their protocol as per iocontrolv2: 467 TASK_START_CHANGE_PINS=1 468 # if TASK_TOOLCHANGE_FAULT_PINS=1 the task Python plugin will emulate the iocontrolv2 pins: 469 # emc-abort 470 # emc-abort-ack 471 # emc-reason 472 # toolchanger-fault 473 # toolchanger-fault-ack 474 # toolchanger-reason 475 # toolchanger-faulted 476 # toolchanger-clear-fault 477 TASK_TOOLCHANGE_FAULT_PINS=1 478 # Part program interpreter section -------------------------------------------- 479 480 [VARS] 481 482 # accessible in interp as #<_[section]name> 483 FOO = 47.11 484 X=3 485 Y=4 486 Z=5 487 TOOL_CHANGE_POSITION_X = 1 488 TOOL_CHANGE_POSITION_Y = 2 489 TOOL_CHANGE_POSITION_Z = 3 490 # Motion control section ------------------------------------------------------