Import LinuxCNC source tree

This commit is contained in:
Wang Dequan
2026-08-20 06:17:39 +08:00
commit 2c814634c3
9429 changed files with 10556013 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
Demo_mazak is a complex set of HAL drivers. These include the Motenc-Lite motion card, a PMDX parport card, and a general purpose ISA slot IO card. This setup is used for the Mazak V5 at Cardinal Engineering and is included here as an example of a way to spread HAL abilities across a number of devices.
This demo includes an example of using a parallel port to read a handwheel encoder. It brings in ClassicLadder to handle most of the machine logic for gear and tool change.
Don't expect to be able to run this as is unless you have a matching set of hardware. Without the exact set of devices you can still study the hal files to see how many of these things are accomplished.

View File

@@ -0,0 +1,527 @@
_FILES_CLASSICLADDER
_FILE-timers.csv
; Timers :
; Base(see classicladder.h),Preset
2,20
2,15
2,2
2,1
2,5
2,5
2,2
2,3
2,3
2,3
2,20
2,5
1,0
1,0
1,0
1,0
1,0
1,0
1,0
1,0
_/FILE-timers.csv
_FILE-monostables.csv
; Monostables :
; Base(see classicladder.h),Preset
1,5
1,0
1,0
1,0
1,0
1,0
1,0
1,0
1,0
1,0
_/FILE-monostables.csv
_FILE-counters.csv
; Counters :
; Preset
0
0
0
0
0
0
0
0
0
0
_/FILE-counters.csv
_FILE-arithmetic_expressions.csv
; Arithmetic expressions :
; Compare or Operate ones
_/FILE-arithmetic_expressions.csv
_FILE-rung_0.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=
#PREVRUNG=0
#NEXTRUNG=1
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_0.csv
_FILE-rung_1.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=Estop off
#COMMENT=Axis/Hydraulic Power
#PREVRUNG=8
#NEXTRUNG=14
1-0-60/22 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 99-0-0/0 , 10-0-0/0 , 9-0-0/0 , 50-0-60/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 99-0-0/0 , 99-0-0/0 , 0-0-0/0 , 0-0-60/1
1-0-60/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 99-0-0/0 , 10-0-0/1 , 9-0-0/0 , 50-0-60/1
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 99-0-0/0 , 99-0-0/0 , 0-0-0/0 , 0-0-0/0
1-0-60/1 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-60/9
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_1.csv
_FILE-rung_2.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=Estop off
#COMMENT=Initialize Motion
#PREVRUNG=14
#NEXTRUNG=3
1-0-60/1 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 99-0-0/0 , 10-0-0/3 , 9-0-0/0 , 50-0-60/5
0-0-60/1 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 99-0-0/0 , 99-0-0/0 , 0-0-0/0 , 0-0-0/0
1-0-60/5 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 99-0-0/0 , 11-0-0/0 , 9-0-0/0 , 50-0-0/1
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 99-0-0/0 , 99-0-0/0 , 0-0-0/0 , 99-0-0/0
1-0-0/1 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-0/10
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_2.csv
_FILE-rung_3.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=Mach On
#COMMENT=Amp Fault Mask
#PREVRUNG=2
#NEXTRUNG=9
1-0-50/1 , 9-0-50/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 99-0-0/0 , 10-0-0/2 , 9-0-0/0 , 50-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 99-0-0/0 , 99-0-0/0 , 0-0-0/0 , 0-0-0/0
1-0-0/0 , 9-0-0/0 , 2-0-50/2 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-60/2
0-0-0/0 , 9-1-0/0 , 2-0-50/3 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-60/3
0-0-0/0 , 9-1-0/0 , 2-0-50/4 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-60/4
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_3.csv
_FILE-rung_4.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=Magazine Forward
#PREVRUNG=17
#NEXTRUNG=7
1-0-50/10 , 9-0-0/0 , 9-0-0/0 , 1-0-60/10 , 2-0-50/11 , 9-0-0/0 , 9-0-0/0 , 2-0-60/11 , 9-0-0/0 , 50-0-60/10
0-0-0/0 , 1-1-50/26 , 1-0-50/27 , 9-0-50/0 , 1-0-50/16 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 9-1-0/0 , 1-0-50/18 , 9-0-0/0 , 1-0-50/14 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 2-1-50/26 , 9-0-0/0 , 1-0-50/12 , 1-0-50/16 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_4.csv
_FILE-rung_5.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=Tool Push Buttons
#PREVRUNG=6
#NEXTRUNG=-1
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
1-0-50/10 , 9-0-50/0 , 1-0-50/13 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-0/7
0-0-0/0 , 1-1-0/7 , 9-0-0/0 , 2-0-50/14 , 9-0-0/0 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-60/13
0-0-0/0 , 9-1-0/0 , 1-0-50/15 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-0/8
0-0-0/0 , 1-1-0/8 , 9-0-0/0 , 2-0-50/16 , 9-0-0/0 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_5.csv
_FILE-rung_6.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=
#PREVRUNG=22
#NEXTRUNG=5
9-0-0/0 , 1-0-50/31 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 1-0-0/16 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-0/15
0-0-0/0 , 1-1-0/15 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_6.csv
_FILE-rung_7.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=FIXME Prox
#PREVRUNG=4
#NEXTRUNG=23
2-0-60/17 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 99-0-0/0 , 10-0-0/10 , 9-0-0/0 , 50-0-60/27
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 99-0-0/0 , 99-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_7.csv
_FILE-rung_8.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=Main Estop
#PREVRUNG=-1
#NEXTRUNG=1
1-0-50/0 , 1-0-50/20 , 9-0-0/0 , 9-0-0/0 , 1-0-50/21 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-60/22
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 1-1-60/22 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_8.csv
_FILE-rung_9.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=gear shift in progress
#PREVRUNG=3
#NEXTRUNG=10
1-0-50/5 , 2-0-50/6 , 1-0-50/23 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-60/8
2-0-50/5 , 2-0-50/7 , 1-1-60/28 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-60/8 , 0-0-50/9 , 0-0-50/25 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/7 , 0-0-0/0 , 0-0-60/24
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_9.csv
_FILE-rung_10.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=ok to disengage
#PREVRUNG=9
#NEXTRUNG=11
1-0-60/8 , 1-0-50/9 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 99-0-0/0 , 10-0-0/4 , 9-0-0/0 , 50-0-0/3
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 99-0-0/0 , 99-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_10.csv
_FILE-rung_11.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=ok to engage
#PREVRUNG=10
#NEXTRUNG=12
1-0-50/8 , 1-0-0/3 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 99-0-0/0 , 10-0-0/5 , 9-0-0/0 , 50-0-0/4
1-0-0/4 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 99-0-0/0 , 99-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_11.csv
_FILE-rung_12.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=engage low
#PREVRUNG=11
#NEXTRUNG=16
1-0-60/6 , 2-0-0/3 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 2-0-60/7 , 9-0-0/0 , 50-0-60/6
1-0-50/5 , 1-0-0/4 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_12.csv
_FILE-rung_13.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=Feed Hold
#PREVRUNG=15
#NEXTRUNG=24
1-0-50/22 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-60/26
1-1-50/23 , 2-0-60/24 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_13.csv
_FILE-rung_14.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=Spindle Drive RUN
#PREVRUNG=1
#NEXTRUNG=2
1-0-60/22 , 1-0-50/23 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-60/23
103-1-60/28 , 1-1-60/28 , 103-1-0/0 , 103-0-0/0 , 103-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
103-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 103-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_14.csv
_FILE-rung_15.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=Spindle Status Out
#PREVRUNG=16
#NEXTRUNG=13
1-0-50/9 , 2-0-60/28 , 2-0-60/8 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 99-0-0/0 , 10-0-0/8 , 9-0-0/0 , 50-0-60/24
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 99-0-0/0 , 99-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
1-0-50/9 , 1-0-50/24 , 1-0-60/28 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 99-0-0/0 , 10-0-0/9 , 9-0-0/0 , 50-0-60/25
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 99-0-0/0 , 99-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_15.csv
_FILE-rung_16.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=engage high
#PREVRUNG=12
#NEXTRUNG=15
1-0-60/7 , 2-0-0/3 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 2-0-60/6 , 9-0-0/0 , 50-0-60/7
2-1-50/5 , 1-0-0/4 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_16.csv
_FILE-rung_17.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=Magazine Reverse
#PREVRUNG=24
#NEXTRUNG=4
1-0-50/10 , 9-0-0/0 , 9-0-0/0 , 1-0-60/11 , 2-0-50/11 , 9-0-0/0 , 9-0-0/0 , 2-0-60/10 , 9-0-0/0 , 50-0-60/11
0-0-0/0 , 1-1-50/26 , 1-0-50/28 , 9-0-50/0 , 1-0-50/16 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 9-1-0/0 , 1-0-50/19 , 9-0-0/0 , 1-0-50/14 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_17.csv
_FILE-rung_18.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=Load/Unload
#PREVRUNG=25
#NEXTRUNG=19
1-0-50/10 , 1-0-0/16 , 1-0-50/30 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 2-0-0/15 , 50-0-60/12
0-0-0/0 , 0-1-60/12 , 1-1-50/14 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-1-0/0
0-0-0/0 , 2-1-50/30 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 1-0-0/15 , 0-1-0/0
0-0-0/0 , 2-1-50/38 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 2-1-60/12 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-60/13
_/FILE-rung_18.csv
_FILE-rung_19.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=60 deg rotate
#PREVRUNG=18
#NEXTRUNG=20
1-0-50/10 , 1-0-0/16 , 1-0-60/25 , 1-0-50/14 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 2-0-0/15 , 50-0-60/16
0-0-0/0 , 0-1-0/0 , 1-1-60/16 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-1-0/0
0-0-0/0 , 2-1-50/36 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 1-0-0/15 , 0-1-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_19.csv
_FILE-rung_20.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=Unclamp
#PREVRUNG=19
#NEXTRUNG=21
1-0-50/10 , 1-0-0/16 , 1-0-50/32 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 2-0-0/15 , 50-0-60/18
0-0-0/0 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-1-0/0
0-0-0/0 , 2-1-50/34 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 1-0-0/15 , 0-1-0/0
0-0-0/0 , 0-1-50/17 , 0-0-50/23 , 0-0-0/16 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-1-0/0
0-0-0/0 , 1-1-50/17 , 2-0-50/23 , 2-0-0/16 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 0-1-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_20.csv
_FILE-rung_21.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=Extend/Retract
#PREVRUNG=20
#NEXTRUNG=22
1-0-50/10 , 1-0-0/16 , 1-0-50/37 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 2-0-0/15 , 50-0-60/14
0-0-0/0 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-1-0/0
0-0-0/0 , 2-1-50/31 , 9-0-0/0 , 2-0-60/25 , 1-0-60/14 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 1-0-0/15 , 0-1-0/0
0-0-0/0 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 2-1-60/14 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-60/15
_/FILE-rung_21.csv
_FILE-rung_22.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=Rotate 180
#PREVRUNG=21
#NEXTRUNG=6
1-0-50/10 , 1-0-0/16 , 1-0-50/33 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 2-0-0/15 , 50-0-60/17
0-0-0/0 , 0-1-50/34 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-1-0/0
0-0-0/0 , 1-1-0/16 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 1-0-0/15 , 0-1-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_22.csv
_FILE-rung_23.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=
#PREVRUNG=7
#NEXTRUNG=26
1-0-50/10 , 3-0-50/35 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 2-0-0/15 , 50-0-0/16
0-0-0/0 , 1-1-0/16 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-1-0/0
0-0-0/0 , 2-1-50/16 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 1-0-0/15 , 0-1-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_23.csv
_FILE-rung_24.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=
#PREVRUNG=13
#NEXTRUNG=17
1-0-50/10 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 99-0-0/0 , 10-0-0/11 , 9-0-0/0 , 50-0-0/17
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 99-0-0/0 , 99-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_24.csv
_FILE-rung_25.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=Spindle-do-orient
#PREVRUNG=27
#NEXTRUNG=18
1-0-50/10 , 1-0-0/16 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 2-0-0/15 , 50-0-60/28
0-0-0/0 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-1-0/0
0-0-0/0 , 2-1-50/30 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 1-0-0/15 , 0-1-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_25.csv
_FILE-rung_26.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=Tool Changed
#PREVRUNG=23
#NEXTRUNG=27
1-0-50/35 , 4-0-0/16 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-60/21
0-0-0/0 , 1-1-60/21 , 0-1-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_26.csv
_FILE-rung_27.csv
; Rung :
; all the blocks with the following format :
; type (see classicladder.h) - ConnectedWithTop - VarType (see classicladder.h) / VarOffset
#VER=2.0
#LABEL=
#COMMENT=Tool Prepared
#PREVRUNG=26
#NEXTRUNG=25
1-0-50/26 , 1-0-50/25 , 1-0-50/16 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 9-0-0/0 , 50-0-60/20
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0 , 0-0-0/0
_/FILE-rung_27.csv
_FILE-sections.csv
; Sections
#VER=1.0
#NAME000=Prog1
000,0,-1,8,5,0
_/FILE-sections.csv
_FILE-sequential.csv
; Sequential
#VER=1.0
_/FILE-sequential.csv
_FILE-ioconf.csv
; I/O Configuration
_/FILE-ioconf.csv
_FILE-symbols.csv
; Symbols
#VER=1.0
_/FILE-symbols.csv
_/FILES_CLASSICLADDER

View File

@@ -0,0 +1,758 @@
# this file contains the HAL configuration for Roland's Mazak
#
# kinematics
loadrt [KINS]KINEMATICS
# first load the 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
# next load I/O drivers. This retrofit uses three different I/O devices
#
# 1) MOTENC-Lite card, for analog outs to drives, encoder feedback, and
# some digital I/O.
#
loadrt hal_motenc
# 2) AXIOM AX5214H card, for 48 digital I/O
# we are using 32 inputs and 16 outputs, with the outputs on port
# C, which can be converted to inputs 4 bits at a time.
#
loadrt hal_ax5214h cfg="0x220_iiooiioo"
# 3) Parallel Port, driving PMDX-122 card. This provides a charge pump
# type watchdog, and also provides a small number of inputs that
# can be sampled at a higher rate. The jogwheel comes in thru this
# card and is counted in software.
#
loadrt hal_parport cfg="0x0378_in"
# 4) Weighted summer, driven by toolchanger slot position inputs
# This adds together the 5 bits (with bit 4 being equal to 13)
# and outputs the sum as an S32
#
loadrt weighted_sum wsum_sizes=5
# I/O Mapping - Physical I/O points to driver pins
# --------------------------------------------------------
# OPTO-22 board IO-1 input module 0 is ax5214h.0.in-24
# OPTO-22 board IO-1 input module 1 is ax5214h.0.in-25
# " " "
# OPTO-22 board IO-1 input module 14 is ax5214h.0.in-38
# OPTO-22 board IO-1 input module 15 is ax5214h.0.in-39
# OPTO-22 board IO-1 output module 16 is ax5214h.0.out-40
# OPTO-22 board IO-1 output module 17 is ax5214h.0.out-41
# " " "
# OPTO-22 board IO-1 output module 22 is ax5214h.0.out-46
# OPTO-22 board IO-1 output module 23 is ax5214h.0.out-47
# --------------------------------------------------------
# OPTO-22 board IO-2 input module 0 is ax5214h.0.in-00
# OPTO-22 board IO-2 input module 1 is ax5214h.0.in-01
# " " "
# OPTO-22 board IO-2 input module 14 is ax5214h.0.in-14
# OPTO-22 board IO-2 input module 15 is ax5214h.0.in-15
# OPTO-22 board IO-2 output module 16 is ax5214h.0.out-16
# OPTO-22 board IO-2 output module 17 is ax5214h.0.out-17
# " " "
# OPTO-22 board IO-2 output module 22 is ax5214h.0.out-22
# OPTO-22 board IO-2 output module 23 is ax5214h.0.out-23
# --------------------------------------------------------
# OPTO-22 board IO-3 output module 0 is motenc.3.out-15
# OPTO-22 board IO-3 output module 1 is motenc.3.out-14
# " " "
# OPTO-22 board IO-3 output module 6 is motenc.3.out-01
# OPTO-22 board IO-3 output module 7 is motenc.3.out-00
# OPTO-22 board IO-3 input module 8 is motenc.3.in-16
# OPTO-22 board IO-3 input module 9 is motenc.3.in-17
# " " "
# OPTO-22 board IO-3 input module 22 is motenc.3.in-30
# OPTO-22 board IO-3 input module 23 is motenc.3.in-31
# --------------------------------------------------------
# Breakout board IO-4 output chan 0 is motenc.3.out-00
# Breakout board IO-4 output chan 1 is motenc.3.out-01
# " " "
# Breakout board IO-4 output chan 6 is motenc.3.out-06
# Breakout board IO-4 output chan 7 is motenc.3.out-07
# Breakout board IO-4 input chan 0 is motenc.3.in-00
# Breakout board IO-4 input chan 1 is motenc.3.in-01
# " " "
# Breakout board IO-4 input chan 14 is motenc.3.in-14
# Breakout board IO-4 input chan 15 is motenc.3.in-15
# --------------------------------------------------------
# Now we load some more HAL components:
#
# the rest of these components implement spindle speed
# scaling (for high/low shifting) and spindle orient
loadrt mux2 count=2
loadrt mux4 count=1
loadrt wcomp count=2
loadrt scale count=3
loadrt modmath mod_dir=2
loadrt charge_pump
loadrt tristate_bit
loadrt tristate_float count=3
loadrt conv_s32_float
# Software encoder counter, for the jogwheel, and possibly a future
# small manual encoder for a feedrate override knob.
#
loadrt encoder num_chan=1
# PID loops: 3 for axis control and one for spindle orient
#
loadrt pid num_chan=4
# classicladder for machine logic
# (load the realtime portion)
loadrt classicladder_rt numRungs=50 numBits=50 numWords=8 numTimers=20 numMonostables=10 numPhysInputs=50 numPhysOutputs=40 numArithmExpr=4 numSections=4
# invoke the user part of CL to silently load the program
loadusr -w classicladder --nogui demo_mazak.clp
# load debounce to handle the pushbuttons on the operator panels
loadrt debounce cfg="8"
setp debounce.0.delay 3
# -----------------------------------------------
# connect I/O driver functions to thread(s)
#
addf motenc.3.encoder-read servo-thread
addf motenc.3.digital-in-read servo-thread
addf ax5214h.0.read servo-thread
addf encoder.capture-position servo-thread
addf motenc.3.adc-read servo-thread
# convert IO to internally useful representations
addf scale.2 servo-thread
# converter for tool magazine position
addf process_wsums servo-thread
addf mod-dir.0 servo-thread
addf mod-dir.1 servo-thread
# ladder logic is executed once all the inputs are read
#addf classicladder.0.refresh servo-thread
# adaptive feedrate mux
addf mux2.1 servo-thread
# now we run the motion controller
addf motion-command-handler servo-thread
addf motion-controller servo-thread
# ladder logic is executed once all the inputs are read
addf classicladder.0.refresh servo-thread
# charge pump can run just about any time
addf charge-pump servo-thread
# pid calculations are done after the motion module
# has determined new position commands.
addf pid.0.do-pid-calcs servo-thread
addf pid.1.do-pid-calcs servo-thread
addf pid.2.do-pid-calcs servo-thread
# spindle signal handling is done next
addf pid.3.do-pid-calcs servo-thread
addf mux2.0 servo-thread
addf scale.0 servo-thread
addf scale.1 servo-thread
addf mux4.0 servo-thread
addf wcomp.0 servo-thread
addf wcomp.1 servo-thread
addf tristate-bit.0 servo-thread
# misc stuff (jogwheel scale, tool number display)
addf tristate-float.0 servo-thread
addf tristate-float.1 servo-thread
addf tristate-float.2 servo-thread
addf conv-s32-float.0 servo-thread
# output drivers are loaded last
addf motenc.3.dac-write servo-thread
addf motenc.3.digital-out-write servo-thread
addf ax5214h.0.write servo-thread
addf parport.0.write servo-thread
# the base thread (fast thread) isn't needed for step pulse
# generation since this is a servo machine. However we use
# it to sample the jogwheel signals and count them in software
addf parport.0.read base-thread
addf encoder.update-counters base-thread
# -------------------------------------------------
# Next, create signals with meaningful names, and attach them to the
# physical pins. There are a lot of these, so they are broken up
# ---------------------------------------------------
# ESTOP and related signals
net external-estop-ok ax5214h.0.in-24
net gui-estop-ok iocontrol.0.user-enable-out
net main-estop-ok parport.0.pin-01-out
net main-estop-ok iocontrol.0.emc-enable-in
net main-estop-ok charge-pump.enable
net estop-reset iocontrol.0.user-request-enable
net charge-pump parport.0.pin-17-out
net charge-pump charge-pump.out
# servo power supply control
net AP1 motenc.3.out-00
net AP2 motenc.3.out-01
# motion enable - this signal prevents the motion controller
# from starting unless everything is OK (comes from ladder)
net motion-enable motion.enable
# servo amp enable (only one, driven by axis 0)
net servo-enable motenc.3.out-02
net servo-enable joint.0.amp-enable-out
# servo amp fault signals
# the signals from the amps are actually "not running"
# they are asserted when the amp is faulted, OR just
# disabled. So we use the inverse and call them "running"
net X-amp-running motenc.3.in-12-not
net Y-amp-running motenc.3.in-13-not
net Z-amp-running motenc.3.in-14-not
# need to release the Z-axis brake when running
net Z-amp-running motenc.3.out-15
# these are the real fault signals, and go to the motion
# controller, they are derived from the ones above by
# ladder logic
net X-amp-fault joint.0.amp-fault-in
net Y-amp-fault joint.1.amp-fault-in
net Z-amp-fault joint.2.amp-fault-in
# Limit switches
# (the switches are NC, and open when hit, so
# we invert the signals by using the -not input
# pin - the result is limit signals that are
# TRUE when the machine is on the limit.)
net X-lim-plus motenc.3.in-00-not => joint.0.pos-lim-sw-in
net X-lim-minus motenc.3.in-01-not => joint.0.neg-lim-sw-in
net Y-lim-plus motenc.3.in-02-not => joint.1.pos-lim-sw-in
net Y-lim-minus motenc.3.in-03-not => joint.1.neg-lim-sw-in
net Z-lim-plus motenc.3.in-04-not => joint.2.pos-lim-sw-in
net Z-lim-minus motenc.3.in-05-not => joint.2.neg-lim-sw-in
# Home switches
# (the switches are NC, see note above)
net X-home motenc.3.in-08-not => joint.0.home-sw-in
net Y-home motenc.3.in-09-not => joint.1.home-sw-in
net Z-home motenc.3.in-10-not => joint.2.home-sw-in
# spindle related signals: "high level" signals
# ready (from drive to PC)
# run (from motion)
# run (to drive)
# at speed (from drive to PC)
# orient command (to spindle control)
# oriented status (from spindle control)
# commanded speed (from EMC to control)
# spindle current feedback (from drive to PC)
# spindle related signals: "internal" signal
# get spindle position from encoder
net sp-enc-pos motenc.3.enc-03-position
# scale spindle position to degrees
# 1440 cnts/rev = 4 cnts/degree
setp motenc.3.enc-03-scale -4.0
# get desired orient position from ini file
sets sp-orient-pos-cmd [SPINDLE]ORIENT_POSITION
# connect commanded and feedback positions to PID loop
net sp-orient-pos-cmd pid.3.command
net sp-enc-pos pid.3.feedback
# enable PID loop when in orient mode
net spindle-do-orient pid.3.enable
# tuning params for PID loop
setp pid.3.Pgain 1.0
setp pid.3.Igain 0.6
setp pid.3.Dgain 0.2
setp pid.3.deadband 0.4
# prevent integrator windup at the beginning of an orient
# after running the spindle for a long time. The error is
# very high before the first index happens.
setp pid.3.maxerrorI 200.0
# limit outputs, we don't want to go fast during orient
setp pid.3.maxoutput 100
# check position error with window comparator
net sp-orient-pos-err pid.3.error
net sp-orient-pos-err wcomp.0.in
net sp-orient-pos-ok wcomp.0.out
# set a +/- 1 degree window
setp wcomp.0.min -1.0
setp wcomp.0.max 1.0
# output of loop is velocity for orientation
net sp-orient-rpm-cmd pid.3.output
# select between normal speed and orient speed
# based on do-orient command
net sp-orient-rpm-cmd mux2.0.in1
net spindle-rpm-cmd mux2.0.in0
net spindle-do-orient mux2.0.sel
# output of mux is desired spindle RPM
net sp-rpm-cmd mux2.0.out
# use scale blocks to calculate required motor RPM for
# both gears based on desired spindle RPM
net sp-rpm-cmd scale.0.in
net sp-mtr-high-rpm-cmd scale.0.out
setp scale.0.gain [SPINDLE]HIGH_GEAR_RATIO
net sp-rpm-cmd scale.1.in
net sp-mtr-low-rpm-cmd scale.1.out
setp scale.1.gain [SPINDLE]LOW_GEAR_RATIO
# select either high or low speed based on current gear ratio,
# unless shifting, then select a low speed for meshing the gears
net sp-mtr-high-rpm-cmd mux4.0.in0
net sp-mtr-low-rpm-cmd mux4.0.in1
net sp-mtr-mesh-rpm-cmd mux4.0.in2
net sp-mtr-mesh-rpm-cmd mux4.0.in3
net sp-in-low-gear mux4.0.sel0
net sp-shifting mux4.0.sel1
# output of mux is desired motor RPM
net sp-mtr-rpm-cmd mux4.0.out
# set meshing speed
sets sp-mtr-mesh-rpm-cmd 15
# link the final motor command to the DAC
net sp-mtr-rpm-cmd motenc.3.dac-03-value
# set scaling - 10V = 4500RPM at the motor
setp motenc.3.dac-03-gain -0.002222
# correct for offset, it causes drift and hunting
setp motenc.3.dac-03-offset -8
# connect other signals to drive
net spindle-ready motenc.3.in-15
net spindle-drive-run motenc.3.out-03
net sp-at-speed motenc.3.in-11
net spindle-amps motenc.3.adc-03-value
# connect signals to gearbox controls
# need to add a spindle run command
# and a rotating speed I think
net sp-engage-high-gear ax5214h.0.out-21
net sp-engage-low-gear ax5214h.0.out-20
net sp-in-high-gear ax5214h.0.in-34
net sp-in-neutral ax5214h.0.in-35
net sp-in-low-gear ax5214h.0.in-36
# use scale block to convert spindle position in degrees
# to revolutions for rigid tapping
net sp-enc-pos scale.2.in
net sp-pos-revs scale.2.out
setp scale.2.gain 0.002777777777777
net sp-pos-revs spindle.0.revs
# rayh begins to screw it up with help from his friends
# connect iocontrol signals for spindle run and speed
# these work as long as a spindle command is being output.
net spindle-run-request spindle.0.on
net spindle-rpm-cmd spindle.0.speed-out
# end of spindle control
# ioControl exports some tool pins
# iocontrol.0.tool-prepare
# iocontrol.0.tool-prep-number
# and expects iocontrol.0.tool-prepared (when the tool prep. is done)
# iocontrol.0.tool-change (output)
# and expects iocontrol.0.tool-changed (when tool changed)
# it also exports iocontrol.0.tool-number, which is the current tool
# in the spindle and is used when its time to return that tool to
# the tool magazine
net tool-prepare iocontrol.0.tool-prepare
net tool-prepared iocontrol.0.tool-prepared
net tool-change iocontrol.0.tool-change
net tool-changed iocontrol.0.tool-changed
net tool-requested-number iocontrol.0.tool-prep-number
net tool-current-number iocontrol.0.tool-number
# misc control
# tool change location push button operators
net magazine-index-pbs ax5214h.0.in-07
net worklight-pbs ax5214h.0.in-08
net tool-load-pbs ax5214h.0.in-09
net tool-unload-pbs ax5214h.0.in-10
# add front panel buttons here
net tool-unclamp-pbs ax5214h.0.in-39
net feed-hold-pbs ax5214h.0.in-14
net cycle-start-pbs ax5214h.0.in-25
# hydraulic pump
net hydraulic-pump-run motenc.3.out-14
net hydraulic-pump-running ax5214h.0.in-05
# hydraulic actuator prox switches
# tool load-unload arm
net tool-unloaded ax5214h.0.in-38
net tool-loaded ax5214h.0.in-15
# double or intermediate arm
net arm-retracted ax5214h.0.in-29
net arm-extended ax5214h.0.in-30
# FIXME!! This sensor is broken, so we are using a delay
# instead - 2 seconds after the cylinder is actuated, we
# assume that we have reached the desired position and
# set the signal true. The commented out line below is
# the proper source for the signal. But for now, it is
# driven by classicladder output number 27 (see ladder
# section near end of file).
#linksp arm-at-0/180 ax5214h.0.in-26
net arm-at-0/60 ax5214h.0.in-27
net arm-at-60 ax5214h.0.in-28
net arm-at-180 ax5214h.0.in-31
# tool drawbar
net tool-clamped ax5214h.0.in-33
net tool-unclamped ax5214h.0.in-32
# tool magazine or carousel with 0-24 positions
net magazine-in-position ax5214h.0.in-37
net magazine-not-in-position ax5214h.0.in-37-not
net magazine-not-in-position wsum.0.hold
net magazine-position-0 ax5214h.0.in-00
net magazine-position-0 wsum.0.bit.0.in
net magazine-position-1 ax5214h.0.in-01
net magazine-position-1 wsum.0.bit.1.in
net magazine-position-2 ax5214h.0.in-02
net magazine-position-2 wsum.0.bit.2.in
net magazine-position-3 ax5214h.0.in-03
net magazine-position-3 wsum.0.bit.3.in
net magazine-position-4 ax5214h.0.in-04
net magazine-position-4 wsum.0.bit.4.in
# set the bit weight for bit 4 to 13 instead of the default 16
setp wsum.0.bit.4.weight 13
# add a signal for magazine position
net magazine-position wsum.0.sum
# add a temporary signal to rotate by one.
# hydraulic valves
net arm-extend ax5214h.0.out-47
net arm-retract ax5214h.0.out-46
net arm-60cw ax5214h.0.out-45
net arm-180ccw ax5214h.0.out-44
net tool-load ax5214h.0.out-43
net tool-unload ax5214h.0.out-42
net magazine-forward ax5214h.0.out-41
net magazine-reverse ax5214h.0.out-40
net tool-unclamp ax5214h.0.out-23
net head-unclamp ax5214h.0.out-22
# other solenoids and such
net spindle-air-blast ax5214h.0.out-19
net work-air-blast ax5214h.0.out-18
net mist-coolant ax5214h.0.out-17
net coolant-flood iocontrol.0.coolant-flood ax5214h.0.out-16
# magazine indexing
net magazine-position mod-dir.0.actual
net tool-requested-number mod-dir.0.desired
net tool-requested-match mod-dir.0.on-target
net magazine-position mod-dir.1.actual
net tool-current-number mod-dir.1.desired
net tool-current-match mod-dir.1.on-target
setp mod-dir.0.max-num [EMCIO]TOOL_TURRET_MAX
setp mod-dir.0.wrap [EMCIO]TOOL_TURRET_WRAP
setp mod-dir.1.max-num [EMCIO]TOOL_TURRET_MAX
setp mod-dir.1.wrap [EMCIO]TOOL_TURRET_WRAP
# direction to move to fetch new tool
net magazine-fwd-req-fetch mod-dir.0.up
net magazine-rev-req-fetch mod-dir.0.down
# direction to move to store previous tool
net magazine-fwd-req-store mod-dir.1.up
net magazine-rev-req-store mod-dir.1.down
# set encoder latch enable TRUE so encoder count "wraps" during toolchanges
# and resets under motion controller command for rigid tapping
net sp-index-enable motenc.3.enc-03-index-enable
net sp-index-enable tristate-bit.0.out
setp tristate-bit.0.in 1
net tool-change tristate-bit.0.enable
net sp-index-enable spindle.0.index-enable
# jogwheel signals
setp encoder.0.x4-mode 0
net jogwheel-phA parport.0.pin-12-in
net jogwheel-phB parport.0.pin-11-in
# route signals to software encoder counter
net jogwheel-phA encoder.0.phase-A
net jogwheel-phB encoder.0.phase-B
# jogwheel output
net jogwheel-counts encoder.0.counts
# need to release the Z-axis brake when running
net Z-amp-running motenc.3.out-15
# feedhold, uses G50 adaptive feed input
sets zero 0.0
sets one 1.0
net adaptive-feed mux2.1.out
net adaptive-feed motion.adaptive-feed
net zero mux2.1.in1
net one mux2.1.in0
net feed-hold mux2.1.sel
# -----------------------------------------------------
# encoders - signals and scaling
#
# position in counts
net X-enc-counts motenc.3.enc-00-count
net Y-enc-counts motenc.3.enc-01-count
net Z-enc-counts motenc.3.enc-02-count
# scaling to get inches (scale comes from ini file)
setp motenc.3.enc-00-scale [JOINT_0]INPUT_SCALE
setp motenc.3.enc-01-scale [JOINT_1]INPUT_SCALE
setp motenc.3.enc-02-scale [JOINT_2]INPUT_SCALE
# position in inches
net X-enc-pos motenc.3.enc-00-position
net Y-enc-pos motenc.3.enc-01-position
net Z-enc-pos motenc.3.enc-02-position
# index pulses
net X-index-enable motenc.3.enc-00-index-enable joint.0.index-enable
net Y-index-enable motenc.3.enc-01-index-enable joint.1.index-enable
net Z-index-enable motenc.3.enc-02-index-enable joint.2.index-enable
# -----------------------------------------------------
# DACs - output to servo amps
#
net X-volts motenc.3.dac-00-value
net Y-volts motenc.3.dac-01-value
net Z-volts motenc.3.dac-02-value
# get scale and offset from the ini file
setp motenc.3.dac-00-gain [JOINT_0]OUTPUT_SCALE
setp motenc.3.dac-01-gain [JOINT_1]OUTPUT_SCALE
setp motenc.3.dac-02-gain [JOINT_2]OUTPUT_SCALE
setp motenc.3.dac-00-offset [JOINT_0]OUTPUT_OFFSET
setp motenc.3.dac-01-offset [JOINT_1]OUTPUT_OFFSET
setp motenc.3.dac-02-offset [JOINT_2]OUTPUT_OFFSET
# -----------------------------------------------------
# ADCs - servo amp current feedback
#
net X-amps motenc.3.adc-00-value
net Y-amps motenc.3.adc-01-value
net Z-amps motenc.3.adc-02-value
# set scale and offset (need to calibrate this)
setp motenc.3.adc-00-gain 1.0
setp motenc.3.adc-01-gain 1.0
setp motenc.3.adc-02-gain 1.0
setp motenc.3.adc-00-offset 0.0
setp motenc.3.adc-01-offset 0.0
setp motenc.3.adc-02-offset 0.0
# -----------------------------------------------------
# PIDs - position control
#
# signals for position command
# hook the motion controller outputs to the position command
net X-pos-cmd joint.0.motor-pos-cmd
net Y-pos-cmd joint.1.motor-pos-cmd
net Z-pos-cmd joint.2.motor-pos-cmd
# and to the PID inputs
net X-pos-cmd pid.0.command
net Y-pos-cmd pid.1.command
net Z-pos-cmd pid.2.command
# hook encoders to PID feedback
net X-enc-pos pid.0.feedback
net Y-enc-pos pid.1.feedback
net Z-enc-pos pid.2.feedback
# and to motion controller
net X-enc-pos joint.0.motor-pos-fb
net Y-enc-pos joint.1.motor-pos-fb
net Z-enc-pos joint.2.motor-pos-fb
# hook PID outputs to DACs
net X-volts pid.0.output
net Y-volts pid.1.output
net Z-volts pid.2.output
# use 'servo-enable' to enable PID blocks
# need to release the Z-axis brake when running
net Z-amp-running motenc.3.out-15
net servo-enable pid.0.enable
net servo-enable pid.1.enable
net servo-enable pid.2.enable
# get tuning params from ini file
setp pid.0.deadband [JOINT_0]DEADBAND
setp pid.0.Pgain [JOINT_0]PGAIN
setp pid.0.Igain [JOINT_0]IGAIN
setp pid.0.Dgain [JOINT_0]DGAIN
setp pid.0.FF0 [JOINT_0]FF0
setp pid.0.FF1 [JOINT_0]FF1
setp pid.0.FF2 [JOINT_0]FF2
setp pid.0.bias [JOINT_0]BIAS
setp pid.1.deadband [JOINT_1]DEADBAND
setp pid.1.Pgain [JOINT_1]PGAIN
setp pid.1.Igain [JOINT_1]IGAIN
setp pid.1.Dgain [JOINT_1]DGAIN
setp pid.1.FF0 [JOINT_1]FF0
setp pid.1.FF1 [JOINT_1]FF1
setp pid.1.FF2 [JOINT_1]FF2
setp pid.1.bias [JOINT_1]BIAS
setp pid.2.deadband [JOINT_2]DEADBAND
setp pid.2.Pgain [JOINT_2]PGAIN
setp pid.2.Igain [JOINT_2]IGAIN
setp pid.2.Dgain [JOINT_2]DGAIN
setp pid.2.FF0 [JOINT_2]FF0
setp pid.2.FF1 [JOINT_2]FF1
setp pid.2.FF2 [JOINT_2]FF2
setp pid.2.bias [JOINT_2]BIAS
# get maximum (and minimum) output volts from ini file
setp pid.0.maxoutput [JOINT_0]MAX_OUTPUT
setp pid.1.maxoutput [JOINT_1]MAX_OUTPUT
setp pid.2.maxoutput [JOINT_2]MAX_OUTPUT
# LADDER LOGIC!!!
#
# Classic ladder doesn't let you use meaningful names, so this
# will be the magic decoder ring
# INPUTS to CL
# I0 = the GUI estop "button" isn't pressed
net gui-estop-ok classicladder.0.in-00
# I1 = servo-enable, used to mask amp faults when not enabled
net servo-enable classicladder.0.in-01
# I2 thru I4, amp running signal (FALSE when faulted OR disabled)
net X-amp-running classicladder.0.in-02
net Y-amp-running classicladder.0.in-03
net Z-amp-running classicladder.0.in-04
net spindle-use-low-gear classicladder.0.in-05
net sp-in-low-gear classicladder.0.in-06
net sp-in-high-gear classicladder.0.in-07
net sp-in-neutral classicladder.0.in-08
net sp-at-speed classicladder.0.in-09
net hydraulic-pump-running classicladder.0.in-10
net magazine-in-position classicladder.0.in-11
net magazine-index-pbs classicladder.0.in-12
net tool-load-pbs classicladder.0.in-13
net tool-loaded classicladder.0.in-14
net tool-unload-pbs classicladder.0.in-15
net tool-unloaded classicladder.0.in-16
net tool-unclamp-pbs classicladder.0.in-17
# based on difference between current position and
# the slot for the tool currently in the spindle
net magazine-fwd-req-store classicladder.0.in-18
net magazine-rev-req-store classicladder.0.in-19
# I20 = means the external estop chain is OK
net external-estop-ok classicladder.0.in-20
# I21 = estop-reset, pulsed to reset the estop relay
net estop-reset classicladder.0.in-21
net feed-hold-pbs classicladder.0.in-22
net spindle-run-request classicladder.0.in-23
net sp-orient-pos-ok classicladder.0.in-24
net tool-requested-match classicladder.0.in-25
net tool-prepare classicladder.0.in-26
# based on difference between current position and EMC
# requested position (from a T block)
net magazine-fwd-req-fetch classicladder.0.in-27
net magazine-rev-req-fetch classicladder.0.in-28
# tool changer proxes
net arm-at-0/180 classicladder.0.in-29
net arm-at-0/60 classicladder.0.in-30
net arm-at-180 classicladder.0.in-31
net arm-at-60 classicladder.0.in-32
net arm-extended classicladder.0.in-33
net arm-retracted classicladder.0.in-34
net tool-change classicladder.0.in-35
net tool-clamped classicladder.0.in-36
net tool-unclamped classicladder.0.in-37
net tool-current-match classicladder.0.in-38
# OUTPUTS from CL
# Q0 = AP1, first stage power up (applies power thru resistors)
net AP1 classicladder.0.out-00
# Q1 = AP2, second stage (bypasses resistors)
net AP2 classicladder.0.out-01
# Q2 thru Q4, amp faulted signal (ENABLED and NOT RUNNING)
net X-amp-fault classicladder.0.out-02
net Y-amp-fault classicladder.0.out-03
net Z-amp-fault classicladder.0.out-04
# Q5 is motion enable (after chain)
net motion-enable classicladder.0.out-05
# Q6 and 7 are the gear shift outputs
net sp-engage-low-gear classicladder.0.out-06
net sp-engage-high-gear classicladder.0.out-07
# Q8 indicates that a shift is in progress
net sp-shifting classicladder.0.out-08
net hydraulic-pump-run classicladder.0.out-09
net magazine-forward classicladder.0.out-10
net magazine-reverse classicladder.0.out-11
net tool-load classicladder.0.out-12
net tool-unload classicladder.0.out-13
net arm-extend classicladder.0.out-14
net arm-retract classicladder.0.out-15
net arm-60cw classicladder.0.out-16
net arm-180ccw classicladder.0.out-17
net tool-unclamp classicladder.0.out-18
net head-unclamp classicladder.0.out-19
net tool-prepared classicladder.0.out-20
net tool-changed classicladder.0.out-21
# Q22 indicates that the estop ladder rung (latch) is ok
net main-estop-ok classicladder.0.out-22
net spindle-drive-run classicladder.0.out-23
net spindle-at-speed classicladder.0.out-24
net spindle-oriented classicladder.0.out-25
net feed-hold classicladder.0.out-26
# FIXME! this is a temporary replacement for a bad sensor
net arm-at-0/180 classicladder.0.out-27
net spindle-do-orient classicladder.0.out-28
# CL internals (not HAL data, just here for documentation
#
# T0 = delay from estop OK to AP1
# T1 = delay from AP1 to AP2
# T2 = delay to allow servo amps to respond to enable
# T3 = delay between AP2 close and motion enable
# T4 = delay before shifting out of gear
# T5 = delay before shifting into gear
# T6 = oneshot for tool magazine advance
# T7 = hydraulic pump delay
# T8 = at-speed delay
# T9 = oriented delay
# T10 = bad prox delay
# B0 = delayed servo-enable, for fault masking
# B1 = five second initialization signal
# B2 = gear shifting in progress
# B3 = ok to shift into neutral
# B4 = ok to shift into gear
# B5 = magazine-index delay
# B6 = magazine stop delay
# B7 = tool load virtual
# B8 = tool unload virtual
# B9 = arm extend virtual
# B10 = arm retract virtual
# B11 = arm arm-60cw virtual
# B12 = arm arm 180ccw virtual
# B13 = arm tool unclamp virtual
# B14 = tool change preconditions ready
# B15 = cycle midpoint
# B16 = tool cycle start

View File

@@ -0,0 +1,248 @@
# mazak_rf.ini EMC controller parameters for Roland Friestad's Mazak mill.
# General note: Comments can either be preceded with a # or ; - either is
# acceptable, although # is in keeping with most linux config files.
# General section -------------------------------------------------------------
[EMC]
# Version of this INI file
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = LinuxCNC-MAZAK-RF
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
# DEBUG = 0x00000003
# DEBUG = 0x00000007
DEBUG = 0
# enable adaptive feed input, we use it for feedhold button and to
# prevent motion during spindle accel, gear changes, etc
RS274NGC_STARTUP_CODE = M52 P1
# Sections for display options ------------------------------------------------
[DISPLAY]
# Name of display program, e.g., xlinuxcnc
DISPLAY = axis
# DISPLAY = tklinuxcnc
# DISPLAY = mini
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.100
# Path to help file
HELP_FILE = tklinuxcnc.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 = ../../nc_files/
# side panel with some extra controls
PYVCP=panel.xml
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 1
#EDITOR = geany
INCREMENTS = 0.010 0.001 0.0001
# Task controller section -----------------------------------------------------
[FILTER]
#No Content
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = demo_mazak.var
# Motion control section ------------------------------------------------------
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Base task period, in nanoseconds - this is the fastest thread in the machine
BASE_PERIOD = 100000
# Servo task period, in nanoseconds - will be rounded to an integer multiple
# of BASE_PERIOD
SERVO_PERIOD = 500000
# Hardware Abstraction Layer section --------------------------------------------------
[TASK]
# Name of task controller program, e.g., milltask
TASK = milltask
# Cycle time, in seconds, that task controller will sleep between polls
CYCLE_TIME = 0.010
# Part program interpreter section --------------------------------------------
[HAL]
# The run script first uses halcmd to execute any HALFILE
# files, and then to execute any individual HALCMD commands.
# list of hal config files to run through halcmd
# files are executed in the order in which they appear
HALFILE = demo_mazak.hal
HALFILE = tester.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
# Single file that is executed after the GUI has started.
# used for "control panel" stuff, since the panel widgets
# don't exist until the GUI starts
POSTGUI_HALFILE = panel.hal
# Spindle Controller Section --------------------------------------------------
[HALUI]
#No Content
[TRAJ]
# COORDINATES = X Y Z A B C
COORDINATES = X Y Z
HOME = 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 1.0
MAX_LINEAR_VELOCITY = 5.0
DEFAULT_LINEAR_ACCELERATION = 20.0
MAX_LINEAR_ACCELERATION = 20.0
# Axes sections ---------------------------------------------------------------
# First axis
[EMCIO]
# change tools in the upper left corner of the table
# to avoid hitting the vice or workpiece with the tool
TOOL_CHANGE_POSITION = -13.75 7.5 -0.022
# tool table file
TOOL_TABLE = demo_mazak.tbl
# tool turret info
TOOL_TURRET_MAX = 24
TOOL_TURRET_WRAP = 1
# wait times in seconds for spindle brake, release
SPINDLE_OFF_WAIT = 1.0
SPINDLE_ON_WAIT = 1.5
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -14.0
MAX_LIMIT = 14.0
MAX_VELOCITY = 5.0
MAX_ACCELERATION = 20.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 5.0
MAX_ACCELERATION = 20.0
# Yes really, this .0024 backlash is right, workshop 2007
BACKLASH = 0.0024
# 2000 cycles/rev * 4 counts/cycle * 1.6 gear ratio *
# 1.0 cm pitch * 2.54 cm/in = 32512 (tweaked later)
INPUT_SCALE = 33865
OUTPUT_SCALE = 1.000
OUTPUT_OFFSET = -0.032
MAX_OUTPUT = 10.0
MIN_LIMIT = -14.0
MAX_LIMIT = 14.0
FERROR = 0.050
MIN_FERROR = 0.010
HOME_OFFSET = 14.3
HOME_SEARCH_VEL = 2.5
HOME_LATCH_VEL = -0.25
HOME_USE_INDEX = YES
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000035
PGAIN = 4000.0
IGAIN = 6400.0
DGAIN = 15.0
FF0 = 0.000
FF1 = 0.000
FF2 = 0.0
BIAS = 0.000
# Second axis
[AXIS_Y]
MIN_LIMIT = -7.7
MAX_LIMIT = 7.7
MAX_VELOCITY = 5.0
MAX_ACCELERATION = 20.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 5.0
MAX_ACCELERATION = 20.0
BACKLASH = 0.000
# 2000 cycles/rev * 4 counts/cycle * 1.6 gear ratio *
# 1.0 cm pitch * 2.54 cm/in = 32512 (tweaked later)
INPUT_SCALE = 33865
OUTPUT_SCALE = 1.000
OUTPUT_OFFSET = 0.006
MAX_OUTPUT = 10.0
MIN_LIMIT = -7.7
MAX_LIMIT = 7.7
FERROR = 0.050
MIN_FERROR = 0.010
HOME_OFFSET = 7.37
HOME_SEARCH_VEL = 2.5
HOME_LATCH_VEL = -0.25
HOME_USE_INDEX = YES
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000035
PGAIN = 4000.0
IGAIN = 6400.0
DGAIN = 15.0
FF0 = 0.000
FF1 = 0.000
FF2 = 0.0
BIAS = 0.000
# Third axis
[AXIS_Z]
MIN_LIMIT = -7.75
MAX_LIMIT = 0.025
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
[JOINT_2]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 3.0
MAX_ACCELERATION = 20.0
BACKLASH = 0.000
# 2000 cycles/rev * 4 counts/cycle * 2.0 gear ratio *
# 1.0 cm pitch * 2.54 cm/in = 40640
# 2007 workshop: we found that the scale was 20% low
# and has apparently been that way for a couple years
# dunno whether the gear ratio is actually 2.5, or the
# screw is actually 8mm instead of 10mm, or something
# else, but the number below gives correct results
INPUT_SCALE = 50800
OUTPUT_SCALE = 1.000
OUTPUT_OFFSET = -0.014
MAX_OUTPUT = 10.0
MIN_LIMIT = -7.75
MAX_LIMIT = 0.025
FERROR = 0.050
MIN_FERROR = 0.010
HOME_OFFSET = -0.2
HOME_SEARCH_VEL = 1.0
HOME_LATCH_VEL = -0.25
HOME_USE_INDEX = YES
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 0
# PID tuning params
DEADBAND = 0.00003
PGAIN = 4000.0
IGAIN = 6400.0
DGAIN = 15.0
FF0 = 0.000
FF1 = 0.000
FF2 = 0.0
BIAS = 0.000
# section for main IO controller parameters -----------------------------------
[SPINDLE]
ORIENT_POSITION = -75.0
LOW_GEAR_RATIO = 4.133
HIGH_GEAR_RATIO = 1.100
# Trajectory planner section --------------------------------------------------

View File

@@ -0,0 +1,4 @@
T1 P1 D0.125000 Z+0.511000 ;1/8 end mill
T2 P2 D0.062500 Z+0.100000 ;1/16 end mill
T3 P3 D0.201000 Z+1.273000 ;#7 tap drill
T99999 P99999 Z+0.100000 ;big tool number

View File

@@ -0,0 +1,119 @@
# this file contains a Virtual Control Panel for testing on Roland's Mazak
#
loadusr -W halvcp tester.vcp
net external-estop-ok led.ext-estop
net gui-estop-ok led.gui-estop
net main-estop-ok led.main-estop
net AP1 led.charging
net AP2 led.powered
net motion-enable led.motion-enable
net spindle-ready led.sp-ready
net spindle-drive-run led.sp-run
net spindle-at-speed led.sp-at-speed
net spindle-use-low-gear led.sp-low-gear
net spindle-use-low-gear button.sp-low-gear
net spindle-do-orient led.sp-do-orient
net spindle-oriented led.sp-oriented
net X-amp-running led.x-amp-on
net X-amp-fault led.x-amp-flt
net X-lim-plus led.x-pos-lim
net X-lim-minus led.x-neg-lim
net X-lim-plus led.x-home
net Y-amp-running led.y-amp-on
net Y-amp-fault led.y-amp-flt
net Y-lim-plus led.y-pos-lim
net Y-lim-minus led.y-neg-lim
net Y-lim-plus led.y-home
net Z-amp-running led.z-amp-on
net Z-amp-fault led.z-amp-flt
net Z-lim-plus led.z-pos-lim
net Z-lim-minus led.z-neg-lim
net Z-lim-plus led.z-home
net tool-prepare led.tool-prep
net tool-prepared led.tool-prepped
net tool-change led.tool-change
net tool-changed led.tool-changed
net magazine-index-pbs led.tool-index-pb
net tool-load-pbs led.tool-load-pb
net tool-unload-pbs led.tool-unload-pb
net magazine-in-position led.mag-in-pos
net magazine-position-0 led.mag-pos-0
net magazine-position-1 led.mag-pos-1
net magazine-position-2 led.mag-pos-2
net magazine-position-3 led.mag-pos-3
net magazine-position-4 led.mag-pos-4
net tool-loaded led.arm1-loaded
net tool-unloaded led.arm1-unloaded
net arm-retracted led.arm2-retracted
net arm-extended led.arm2-extended
net arm-at-0/180 led.arm2-0/180
net arm-at-0/60 led.arm2-0/60
net arm-at-60 led.arm2-60
net arm-at-180 led.arm2-180
net tool-clamped led.tool-clamped
net tool-unclamped led.tool-unclamped
#loadusr halmeter -s sig magazine-position
quit
# the following are signals that we might later want to hook
# LEDs and/or switches to, included here for reference only
# spindle related signals: "internal" signal
#newsig sp-index-enable bit
#newsig sp-orient-pos-ok bit
#newsig sp-engage-high-gear bit
#newsig sp-engage-low-gear bit
#newsig sp-in-high-gear bit
#newsig sp-in-low-gear bit
#newsig sp-in-neutral bit
#newsig sp-shifting bit
#newsig sp-at-speed bit
# misc control
# tool change location push button operators
#newsig worklight-pbs bit
# add front panel buttons here
# hydraulic pump
#newsig hydraulic-pump-run bit
#newsig hydraulic-pump-running bit
# add a temporary signal to rotate by one.
#newsig forward-one bit
# hydraulic valves
#newsig arm-extend bit
#newsig arm-retract bit
#newsig arm-60cw bit
#newsig arm-180ccw bit
#newsig tool-load bit
#newsig tool-unload bit
#newsig magazine-forward bit
#newsig magazine-reverse bit
#newsig tool-unclamp bit
#newsig head-unclamp bit
# other solenoids and such
#newsig spindle-air-blast bit
#newsig work-air-blast bit
#newsig mist-coolant bit
#newsig flood-coolant bit

View File

@@ -0,0 +1,488 @@
vcp {
main-window {
title = "Mazak Test"
# width = 300
# height = 300
# top level box
box {
# this box holds generic stuff
layout = horizontal
box {
layout = vertical
box {
layout = vertical
title = "ESTOP Chain"
box {
layout = horizontal
LED {
halpin = led.ext-estop
on-color = green
off-color = "#060"
}
label { text = " External" }
}
box {
layout = horizontal
LED {
halpin = led.gui-estop
on-color = green
off-color = "#060"
}
label { text = " GUI" }
}
box {
layout = horizontal
LED {
halpin = led.main-estop
on-color = green
off-color = "#060"
}
label { text = " Master" }
}
box {
layout = horizontal
LED {
halpin = led.charging
on-color = yellow
off-color = yellow4
}
label { text = " Charging" }
}
box {
layout = horizontal
LED {
halpin = led.powered
on-color = green
off-color = "#060"
}
label { text = " Amp Power" }
}
box {
layout = horizontal
LED {
halpin = led.motion-enable
on-color = green
off-color = "#060"
}
label { text = " Enabled" }
}
}
box {
layout = vertical
title = "Spindle"
box {
layout = horizontal
LED {
halpin = led.sp-ready
on-color = green
off-color = "#060"
}
label { text = " Ready" }
}
box {
layout = horizontal
LED {
halpin = led.sp-run
on-color = yellow
off-color = yellow4
}
label { text = " Run" }
}
box {
layout = horizontal
LED {
halpin = led.sp-low-gear
on-color = yellow
off-color = yellow4
}
label { text = " Use Low Gear" }
}
box {
layout = horizontal
LED {
halpin = led.sp-at-speed
on-color = green
off-color = "#060"
}
label { text = " At Speed" }
}
box {
layout = horizontal
LED {
halpin = led.sp-do-orient
on-color = yellow
off-color = yellow4
}
label { text = " Do Orient" }
}
box {
layout = horizontal
LED {
halpin = led.sp-oriented
on-color = green
off-color = "#060"
}
label { text = " Oriented" }
}
button {
halpin = button.sp-low-gear
label { text = "LowGear" }
}
}
}
# this box holds stuff for the axes
box {
layout = vertical
#title = "Axis Amps"
box {
layout = vertical
title = "X"
box {
layout = horizontal
LED {
halpin = led.x-amp-on
on-color = green
off-color = "#060"
}
label { text = " Running" }
}
box {
layout = horizontal
LED { halpin = led.x-amp-flt }
label { text = " Faulted" }
}
box {
layout = horizontal
LED { halpin = led.x-pos-lim }
label { text = " Max Limit" }
}
box {
layout = horizontal
LED { halpin = led.x-neg-lim }
label { text = " Min Limit" }
}
box {
layout = horizontal
LED {
halpin = led.x-home
on-color = yellow
off-color = yellow4
}
label { text = " Home" }
}
}
box {
layout = vertical
title = "Y"
box {
layout = horizontal
LED {
halpin = led.y-amp-on
on-color = green
off-color = "#060"
}
label { text = " Running" }
}
box {
layout = horizontal
LED { halpin = led.y-amp-flt }
label { text = " Faulted" }
}
box {
layout = horizontal
LED { halpin = led.y-pos-lim }
label { text = " Max Limit" }
}
box {
layout = horizontal
LED { halpin = led.y-neg-lim }
label { text = " Min Limit" }
}
box {
layout = horizontal
LED {
halpin = led.y-home
on-color = yellow
off-color = yellow4
}
label { text = " HomeSw" }
}
}
box {
layout = vertical
title = "Z"
box {
layout = horizontal
LED {
halpin = led.z-amp-on
on-color = green
off-color = "#060"
}
label { text = " Running" }
}
box {
layout = horizontal
LED { halpin = led.z-amp-flt }
label { text = " Faulted" }
}
box {
layout = horizontal
LED { halpin = led.z-pos-lim }
label { text = " Max Limit" }
}
box {
layout = horizontal
LED { halpin = led.z-neg-lim }
label { text = " Min Limit" }
}
box {
layout = horizontal
LED {
halpin = led.z-home
on-color = yellow
off-color = yellow4
}
label { text = " Home" }
}
}
}
# this box holds stuff for the toolchanger
box {
layout = vertical
title = "Tools"
box {
layout = vertical
title = "Control"
box {
layout = horizontal
LED {
halpin = led.tool-prep
on-color = yellow
off-color = yellow4
}
label { text = " Prepare" }
}
box {
layout = horizontal
LED {
halpin = led.tool-prepped
on-color = green
off-color = "#060"
}
label { text = " Prepared" }
}
box {
layout = horizontal
LED {
halpin = led.tool-change
on-color = yellow
off-color = yellow4
}
label { text = " Change" }
}
box {
layout = horizontal
LED {
halpin = led.tool-changed
on-color = green
off-color = "#060"
}
label { text = " Changed" }
}
box {
layout = horizontal
LED {
halpin = led.tool-index-pb
on-color = yellow
off-color = yellow4
}
label { text = " PB Index" }
}
box {
layout = horizontal
LED {
halpin = led.tool-load-pb
on-color = yellow
off-color = yellow4
}
label { text = " PB Load" }
}
box {
layout = horizontal
LED {
halpin = led.tool-unload-pb
on-color = yellow
off-color = yellow4
}
label { text = " PB Unload" }
}
}
box {
layout = vertical
title = "Magazine"
box {
layout = horizontal
LED {
halpin = led.mag-in-pos
on-color = green
off-color = red
}
label { text = " In Pos" }
}
box {
layout = horizontal
LED {
halpin = led.mag-pos-0
on-color = yellow
off-color = yellow4
}
label { text = " Bit0" }
}
box {
layout = horizontal
LED {
halpin = led.mag-pos-1
on-color = yellow
off-color = yellow4
}
label { text = " Bit1" }
}
box {
layout = horizontal
LED {
halpin = led.mag-pos-2
on-color = yellow
off-color = yellow4
}
label { text = " Bit2" }
}
box {
layout = horizontal
LED {
halpin = led.mag-pos-3
on-color = yellow
off-color = yellow4
}
label { text = " Bit3" }
}
box {
layout = horizontal
LED {
halpin = led.mag-pos-4
on-color = yellow
off-color = yellow4
}
label { text = " Bit4" }
}
}
}
# this box holds the prox switches
box {
layout = vertical
title = "Proxen"
box {
layout = vertical
title = "Mag Arm"
box {
layout = horizontal
LED {
halpin = led.arm1-loaded
on-color = yellow
off-color = yellow4
}
label { text = " Load" }
}
box {
layout = horizontal
LED {
halpin = led.arm1-unloaded
on-color = yellow
off-color = yellow4
}
label { text = " Unload" }
}
}
box {
layout = vertical
title = "Double Arm"
box {
layout = horizontal
LED {
halpin = led.arm2-retracted
on-color = yellow
off-color = yellow4
}
label { text = " Retracted" }
}
box {
layout = horizontal
LED {
halpin = led.arm2-extended
on-color = yellow
off-color = yellow4
}
label { text = " Extended" }
}
box {
layout = horizontal
LED {
halpin = led.arm2-0/180
on-color = yellow
off-color = yellow4
}
label { text = " 0/180" }
}
box {
layout = horizontal
LED {
halpin = led.arm2-0/60
on-color = yellow
off-color = yellow4
}
label { text = " 0/60" }
}
box {
layout = horizontal
LED {
halpin = led.arm2-180
on-color = yellow
off-color = yellow4
}
label { text = " 180" }
}
box {
layout = horizontal
LED {
halpin = led.arm2-60
on-color = yellow
off-color = yellow4
}
label { text = " 60" }
}
}
box {
layout = vertical
title = "Drawbar"
box {
layout = horizontal
LED {
halpin = led.tool-clamped
on-color = green
off-color = "#060"
}
label { text = " Clamped" }
}
box {
layout = horizontal
LED {
halpin = led.tool-unclamped
on-color = red
off-color = red4
}
label { text = " Unclamped" }
}
}
}
}
} # main-window
}