Skip to content

Instantly share code, notes, and snippets.

@ednisley
Last active May 3, 2022 01:20
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ednisley/be04e815f28d46e40e366395477f64d6 to your computer and use it in GitHub Desktop.
Save ednisley/be04e815f28d46e40e366395477f64d6 to your computer and use it in GitHub Desktop.
Python and Kicad library: Convert Kicad schematic netlist to LinuxCNC HAL machine configuration
# Parse Kicad schematic netlist into a LinuxCNC HAL configuration file
#
# Ed Nisley - KE4ZNU
# 2021-03
import argparse
from pathlib import Path
from lxml import etree
# ----------
# remove Kicad annotation from reference as needed
# kref = Kicad annotated reference
# component has field entries for anything other than and value
def cleanHALref(kref):
comp = etree.XPath('comp[@ref="' + kref + '"]')(components)[0]
fields = etree.XPath('fields/field[@name="StripAnno"]')(comp)
if len(fields) and (fields[0].text).startswith("1"):
retval = kref.rpartition(".")[0]
else:
retval = kref
# print('strip: {} -> {}'.format(kref,retval))
return retval
# ----------
# do the whole thing
parser = argparse.ArgumentParser(
description="Process Kicad schematic netlist into LinuxCNC HAL configuration file"
)
parser.add_argument("netlist", help="input: Kicad XML netlist file describing HAL configuration")
parser.add_argument("hal", help="output: LinuxCNC HAL configuration file")
args = parser.parse_args()
xmlfn = Path(args.netlist)
if not xmlfn.exists():
print("** No such file: {!s}".format(xmlfn))
exit()
print("Opening XML file: {!s}".format(xmlfn))
Netlist = etree.parse(xmlfn.name)
halfn = Path(args.hal)
if halfn is None:
halfn = xmlfn.with_name(xmlfn.stem + ".hal")
print("Writing HAL file: {!s}".format(halfn))
halfile = open(halfn, "w")
design = etree.XPath("//design")(Netlist)[0]
print("XML date: {}".format(etree.XPath("date")(design)[0].text))
libraries = etree.XPath("//libraries")(Netlist)[0]
print("Libraries:")
for l in libraries:
print(" {}".format(etree.XPath("uri")(l)[0].text))
components = etree.XPath("//components")(Netlist)[0]
print("Components: {:.0f}".format(etree.XPath("count(comp)")(components)))
libparts = etree.XPath("//libparts")(Netlist)[0]
print("Library parts: {:.0f}".format(etree.XPath("count(libpart)")(libparts)))
nets = etree.XPath("//nets")(Netlist)[0]
print("Nets: {:.0f}".format(etree.XPath("count(net)")(nets)))
halfile.write("# LinuxCNC HAL file\n\n# Kicad netlist: {}\n".format(xmlfn))
halfile.write("# {}\n\n".format(etree.XPath("date")(design)[0].text))
# -----
# load realtime modules
# LOADRT components
comps = etree.XPath('comp[value="LOADRT"]')(components)
comps.sort(key=lambda r: r.attrib["ref"])
# print('LRT sort: {}'.format(comps))
llist = []
for comp in comps:
ref = comp.attrib["ref"]
fld = etree.XPath('fields/field[@name="LoadRT"]')(comp)[0]
# print(' cfg: {} -> {}'.format(ref,fld.text))
llist += ["loadrt {}\t\t# {}".format(fld.text, ref)]
if len(llist):
llist += [" "]
# collect all other components with a LoadRT field
# a leading + indicates a component using Kicad reference counting
# concatenate rest of field in order of ref sequence
rtfs = etree.XPath('comp[value!="LOADRT"]/fields/field[@name="LoadRT"]')(components)
# print('Flds: {}'.format(rtfs))
rtfs.sort(key=lambda f: f.xpath("ancestor::comp")[0].attrib["ref"])
modules = {}
for f in rtfs:
comp = etree.XPath("ancestor::comp")(f)[0]
ref = comp.attrib["ref"]
mod = (etree.XPath("libsource")(comp)[0]).attrib["part"]
# print(' ref: {} mod: {}'.format(ref,mod))
if f.text.startswith("+"):
if mod in modules:
modules[mod][0] += 1
modules[mod][1] += f.text.lstrip("+ ")
else:
modules.update({mod: [1, f.text.lstrip("+ ")]})
# print(" added {} {}".format(mod,modules[mod]))
else:
llist += ["loadrt {}\t{}\t\t# {}".format(mod, f.text, ref)]
if len(modules):
# print('modules: {}'.format(modules))
for mod, v in sorted(modules.items(), key=lambda kv: kv[0]):
llist += ["loadrt {}\t\tcount={} {}".format(mod.lower(), v[0], v[1])]
if len(llist):
halfile.write("\n#------\n# LoadRT modules\n\n")
halfile.write("\n".join(llist) + "\n")
# -----
# collect LoadUsr fields from components
llist = []
ufs = etree.XPath('comp/fields/field[@name="LoadUsr"]')(components)
# print('Flds: {}'.format(ufs))
for f in ufs:
comp = etree.XPath("ancestor::comp")(f)[0]
ref = comp.attrib["ref"]
if len(f.text):
llist += ["loadusr {}\t\t# {}".format(f.text, ref)]
if len(llist):
halfile.write("\n#------\n# LoadUsr modules\n\n")
halfile.write("\n".join(llist) + "\n")
# -----
# collect power-input pins into addf statements
halfile.write("\n#------\n# Function hookups\n\n")
addflist = []
# find library THREAD part to get pins for addf sequencing
tpart = etree.XPath('libpart[@part="THREAD"]')(libparts)[0]
tpins = etree.XPath("pins/pin")(tpart)
# print('tpart: {}'.format(tpart))
# print('tpins: {}'.format(tpins))
# step through all THREAD components
tcomps = etree.XPath('comp[value="THREAD"]')(components)
# print('tcomps: {}'.format(tcomps))
for tcomp in tcomps:
tcref = tcomp.attrib["ref"]
# print('tcomp: {} tref: {}'.format(tcomp,tcref))
for tpin in tpins:
pnum = tpin.attrib["num"]
pname = tpin.attrib["name"]
# use pin number to find other nodes in net
pnode = etree.XPath('net/node[@ref="' + tcref + '" and @pin="' + pnum + '"]')(nets)[0]
nodes = etree.XPath("preceding-sibling::node")(pnode)
nodes += etree.XPath("following-sibling::node")(pnode)
# print('nodes: {}'.format(nodes))
if len(nodes) == 0:
continue
nlist = ["# Position: " + pname + "\n"]
# print(' thread position: {}'.format(pname))
for node in nodes:
ref = node.attrib["ref"]
cleanref = cleanHALref(ref)
pin = node.attrib["pin"]
# print(' node: {} ref: {} = {} pin: {}'.format(node,ref,cleanref,pin))
# look up destination pin name to weed out "_" defaults
# and find "/" prefix indicating no ref prefix
dval = etree.XPath('comp[@ref="' + ref + '"]/value')(components)[0]
# print(' dval: {} {}'.format(dval,dval.text))
dsrc = etree.XPath('comp[@ref="' + ref + '"]/libsource')(components)[0]
dpart = dsrc.attrib["part"]
# print(' dsrc: {} {}'.format(dsrc,dpart))
ldparts = etree.XPath('libpart[@part="' + dpart + '"]')(libparts)
# print(' ldparts: {}'.format(ldparts))
if len(ldparts):
ldpart = ldparts[0]
ldpin = etree.XPath('pins/pin[@num="' + pin + '"]')(ldpart)[0]
ldpname = ldpin.attrib["name"]
# print(' ldpin: {} name: {} part: {}'.format(ldpin,ldpname,dpart))
if ldpname == "_":
nlist += ["addf {}\t\t{}".format(cleanref, cleanHALref(tcref))]
else:
if ldpname.startswith("/"):
nlist += [
"addf {}\t\t{}".format(ldpname.removeprefix("/"), cleanHALref(tcref))
]
else:
nlist += ["addf {}.{}\t\t{}".format(cleanref, ldpname, cleanHALref(tcref))]
if pname == "_":
nlist.sort()
addflist += nlist + [" "]
if len(addflist):
halfile.write("\n".join(addflist) + "\n")
# -----
# set parameter values
# trace through nets to find other nodes to set
params = 0
parlist = []
for comp in components:
ref = comp.attrib["ref"]
# ignore non-parameter components
if not ref.startswith("parameter."):
continue
params += 1
value = etree.XPath("value")(comp)[0].text
# print('param: {} = {}'.format(ref,value))
pnode = etree.XPath('net/node[@ref="' + ref + '"]')(nets)[0]
nodes = etree.XPath("preceding-sibling::node")(pnode) + etree.XPath("following-sibling::node")(
pnode
)
for node in nodes:
nref = node.attrib["ref"]
npin = node.attrib["pin"]
ncomp = etree.XPath('comp[@ref="' + nref + '"]')(components)[0]
nls = etree.XPath("libsource")(ncomp)[0]
nname = nls.attrib["part"]
lpart = etree.XPath('libpart[@part="' + nname + '"]')(libparts)[0]
lpin = etree.XPath('pins/pin[@num="' + npin + '"]')(lpart)[0]
# print('ref: {} nref: {} npin: {} lpin: {}'.format(ref,cleanHALref(nref),npin,lpin))
parlist += [
"setp {}.{} {}\t\t# {}".format(cleanHALref(nref), lpin.attrib["name"], value, ref)
]
if len(parlist):
halfile.write("\n#------\n# Parameters\n\n")
parlist.sort()
halfile.write("\n".join(parlist) + "\n")
print("Parameters: {}".format(params))
# -----
# set constant parameters
# the .value pin is hardcoded here to keep the schematic part tidy
consts = 0
conlist = []
for comp in components:
ref = comp.attrib["ref"]
# ignore non-constant components
if not ref.startswith("constant."):
continue
consts += 1
value = etree.XPath("value")(comp)[0].text
# print('const: {} = {}'.format(ref,value))
pval = ref + ".value"
conlist += ["setp {} {}".format(pval, value)]
if len(conlist):
halfile.write("\n#------\n# Constants\n\n")
conlist.sort()
halfile.write("\n".join(conlist) + "\n")
print("Constants: {}".format(consts))
# -----
# generate HAL net connections
halfile.write("\n#------\n# Nets\n\n")
hallist = []
single = 0
multi = 0
netID = 1
for net in nets:
name = net.attrib["name"]
# skip special net for unconnected addf functions
if name == "_":
multi += 1
continue
# print('net {}'.format(net.attrib))
nodes = etree.XPath("node")(net)
# skip single-pin nets
# suppress error for pin names starting with *
if len(nodes) < 2:
if not (name.startswith("Net-") or name.startswith("*")):
hallist += [
"#* Named net with single pin: {} {}\n".format(nodes[0].attrib["ref"], name)
]
single += 1
continue
nameclean = name.translate(name.maketrans("/ ", "__", "()"))
# print('name: {} -> {}'.format(name,nameclean))
multi += 1
halstr = "net "
halsinks = []
outputs = 0
for node in nodes:
ref = node.attrib["ref"]
pnum = node.attrib["pin"]
# print('node: {}'.format(node.attrib))
comp = etree.XPath('comp[@ref="' + ref + '"]')(components)[0]
ls = etree.XPath("libsource")(comp)[0]
# print('libsource: {}'.format(ls.attrib))
lpart = etree.XPath('libpart[@part="' + ls.attrib["part"] + '"]')(libparts)[0]
# print('libpart: {}'.format(lpart.attrib))
lpin = etree.XPath('pins/pin[@num="' + pnum + '"]')(lpart)[0]
pname = lpin.attrib["name"]
cleanname = pname.lstrip("*")
ptype = lpin.attrib["type"]
# print('pin: {} {}'.format(ptype,pname))
if ptype == "output":
if name.startswith("Net-"):
halstr += "N_{:0>3d} <= {}.{} => ".format(netID, cleanHALref(ref), cleanname)
netID += 1
else:
halstr += "{} <= {}.{} => ".format(nameclean, cleanHALref(ref), cleanname)
outputs += 1
else:
halsinks += [cleanHALref(ref) + "." + cleanname]
halstr += " ".join(sorted(halsinks))
if "parameter" in halstr or "-thread" in halstr: # discard parameters and threads
# print('discard: {}'.format(halstr))
multi -= 1
continue
elif outputs == 0:
halstr = "#* No output pins: {}\n".format(halstr)
elif outputs > 1:
halstr = "#* Multiple output pins: {}\n".format(halstr)
# print('result {}'.format(halstr))
hallist += [halstr]
if len(hallist):
hallist.sort()
halfile.write("\n".join(hallist) + "\n")
halfile.write("\n#------\n# Done!\n")
halfile.close()
# print(' = 1 : {:d}'.format(single))
# print(' > 1 : {:d}'.format(multi))
EESchema-LIBRARY Version 2.4
#encoding utf-8
#
# AND2
#
DEF AND2 and2. 0 0 N Y 1 F N
F0 "and2." 0 200 50 H V C CNN
F1 "AND2" 0 0 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
F4 "+" 0 0 50 H I C CNN "LoadRT"
DRAW
A 0 0 150 0 900 0 1 0 f 150 0 0 150
A 0 0 150 0 -900 0 1 0 f 150 0 0 -150
P 4 0 1 0 0 150 -150 150 -150 -150 0 -150 f
X in0 1 -300 100 150 R 50 50 1 1 I
X in1 2 -300 -100 150 R 50 50 1 1 I
X out 3 300 0 150 L 50 50 1 1 O
X _ 4 -250 0 100 R 50 50 1 1 W NC
ENDDRAW
ENDDEF
#
# COMP
#
DEF COMP comp. 0 20 N Y 1 F N
F0 "comp." -50 300 50 H V C CNN
F1 "COMP" -50 200 50 H V C CNN
F2 "" 300 -50 50 H I C CNN
F3 "" 300 -50 50 H I C CNN
F4 "+" 0 0 50 H I C CNN "LoadRT"
DRAW
T 0 -100 -50 50 0 0 0 + Normal 0 C C
T 0 -100 50 50 0 0 0 - Normal 0 C C
S 200 150 -300 250 0 1 0 f
S -300 150 200 -350 1 1 0 N
X in0 1 -400 50 100 R 50 50 1 1 I
X out 2 300 50 100 L 50 50 1 1 O
X in1 3 -400 -50 100 R 50 50 1 1 I
X hyst 4 -400 -250 154 R 50 50 1 1 I I
X _ 5 -400 -150 100 R 50 50 1 1 W NC
X equal 6 300 -50 100 L 50 50 1 1 O
ENDDRAW
ENDDEF
#
# CONSTANT
#
DEF CONSTANT constant. 0 0 N N 1 F N
F0 "constant." 0 100 50 H I C CNN
F1 "CONSTANT" 150 0 50 H V R CNN
F2 "" 250 -250 50 H I C CNN
F3 "" 250 -250 50 H I C CNN
F4 "+" 0 0 50 H I C CNN "LoadRT"
DRAW
P 4 0 1 0 -250 50 200 50 200 -50 -250 -50 N
X out 1 400 0 200 L 50 50 1 1 O
X _ 2 -350 0 100 R 50 50 1 1 W NC
ENDDRAW
ENDDEF
#
# CONV_FLOAT_S32
#
DEF CONV_FLOAT_S32 conv-float-s32. 0 20 N Y 1 F N
F0 "conv-float-s32." 0 300 50 H V C CNN
F1 "CONV_FLOAT_S32" 0 200 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
F4 "+" 0 100 50 H I C CNN "LoadRT"
DRAW
S 400 150 -400 250 0 1 0 f
S -400 150 400 -150 1 1 0 N
X in 1 -500 100 100 R 50 50 1 1 I
X clamp 2 -500 -100 157 R 50 50 1 1 I I
X out-of-range 3 500 0 100 L 50 50 1 1 O
X out 4 500 100 100 L 50 50 1 1 O
X _ 5 -500 0 100 R 50 50 1 1 W NC
ENDDRAW
ENDDEF
#
# CONV_FLOAT_U32
#
DEF CONV_FLOAT_U32 conv-float-u32. 0 40 N Y 1 F N
F0 "conv-float-u32." 0 300 50 H V C CNN
F1 "CONV_FLOAT_U32" 0 200 50 H V C CNN
F2 "" 0 50 50 H I C CNN
F3 "" 0 50 50 H I C CNN
F4 "+" 0 100 50 H I C CNN "LoadRT"
DRAW
S -400 150 400 -150 1 1 0 N
S 400 150 -400 250 1 1 0 f
X in 1 -500 100 100 R 50 50 1 1 I
X clamp 2 -500 -100 157 R 50 50 1 1 I I
X out-of-range 3 500 0 100 L 50 50 1 1 O
X out 4 500 100 100 L 50 50 1 1 O
X _ 5 -500 0 100 R 50 50 1 1 W NC
ENDDRAW
ENDDEF
#
# DBOUNCE
#
DEF DBOUNCE dbounce. 0 20 N Y 1 F N
F0 "dbounce." 0 300 50 H V C CNN
F1 "DBOUNCE" 0 200 50 H V C CNN
F2 "" 600 -350 50 H I C CNN
F3 "" 600 -350 50 H I C CNN
F4 "+" 0 0 50 H I C CNN "LoadRT"
DRAW
S 200 150 -200 250 0 1 0 f
S -200 150 200 -150 1 1 0 N
X in 1 -300 100 100 R 50 50 1 1 I
X out 2 300 100 100 L 50 50 1 1 O
X delay 3 -300 -100 100 R 50 50 1 1 I
X _ 4 -300 0 100 R 50 50 1 1 W NC
ENDDRAW
ENDDEF
#
# FLIPFLOP
#
DEF FLIPFLOP flipflop. 0 20 N Y 1 F N
F0 "flipflop." 0 450 50 H V C CNN
F1 "FLIPFLOP" 0 350 50 H V C CNN
F2 "" 400 -150 50 H I C CNN
F3 "" 400 -150 50 H I C CNN
F4 "+" 0 0 50 H I C CNN "LoadRT"
DRAW
S 200 300 -200 400 0 1 0 f
S -200 300 200 -300 1 1 0 N
X data 2 -300 200 100 R 50 50 1 0 I
X out 5 300 0 100 L 50 50 1 0 O
X reset 1 -300 -200 100 R 50 50 1 1 I
X clk 3 -300 100 100 R 50 50 1 1 I
X set 4 -300 -100 100 R 50 50 1 1 I
X _ 6 -300 0 100 R 50 50 1 1 W NC
ENDDRAW
ENDDEF
#
# HALUI
#
DEF HALUI halui. 0 40 N Y 1 F N
F0 "halui." 0 500 59 H V C CNN
F1 "HALUI" 0 400 50 H V C CNN
F2 "" -150 300 50 H I C CNN
F3 "" -150 300 50 H I C CNN
F4 "1" 350 400 50 H V C CNN "StripAnno"
DRAW
S -400 -300 400 350 0 1 0 N
S -400 450 400 350 0 1 0 f
X abort 1 -500 250 100 R 0 50 1 0 I
X home-all 2 -500 100 100 R 50 50 1 1 I
X mdi-command-00 ~ -500 -100 100 R 50 50 1 1 I
X mdi-command-01 ~ -500 -200 100 R 50 50 1 1 I
ENDDRAW
ENDDEF
#
# HALUI_AXIS
#
DEF HALUI_AXIS halui.axis. 0 40 N Y 1 F N
F0 "halui.axis." 0 400 50 H V C CNN
F1 "HALUI_AXIS" 0 300 50 H V C CNN
F2 "" 450 400 50 H I C CNN
F3 "" 450 400 50 H I C CNN
F4 "1" 500 300 50 H V C CNN "StripAnno"
DRAW
S -550 -50 550 250 0 1 0 N
S 550 350 -550 250 0 1 0 f
X jog-deadband 1 -650 50 100 R 50 50 1 1 I
X jog-speed 2 -650 150 100 R 50 50 1 1 I
X selected 3 650 150 100 L 50 50 1 1 O
ENDDRAW
ENDDEF
#
# HALUI_AXIS_L
#
DEF HALUI_AXIS_L halui.axis.x. 0 40 N Y 1 F N
F0 "halui.axis.x." 0 400 50 H V C CNN
F1 "HALUI_AXIS_L" 0 300 50 H V C CNN
F2 "" -100 350 50 H I C CNN
F3 "" -100 350 50 H I C CNN
F4 "1" 600 300 50 H V C CNN "StripAnno"
DRAW
S -650 350 650 250 0 1 0 f
S 650 250 -650 -600 0 1 0 N
X analog 1 -750 50 100 R 50 50 1 1 I
X pos-relative 10 750 -150 100 L 50 50 1 1 O
X select 11 -750 200 100 R 50 50 1 1 I
X increment 2 -750 -100 100 R 50 50 1 1 I
X increment-minus 3 -750 -200 100 R 50 50 1 1 I
X increment-plus 4 -750 -300 100 R 50 50 1 1 I
X is-selected 5 750 200 100 L 50 50 1 1 O
X minus 6 -750 -450 100 R 50 50 1 1 I
X plus 7 -750 -550 100 R 50 50 1 1 I
X pos-commanded 8 750 50 100 L 50 50 1 1 O
X pos-feedback 9 750 -50 100 L 50 50 1 1 O
ENDDRAW
ENDDEF
#
# HALUI_AXIS_SELECTED
#
DEF HALUI_AXIS_SELECTED halui.axis.selected. 0 40 N Y 1 F N
F0 "halui.axis.selected." 50 400 50 H V C CNN
F1 "HALUI_AXIS_SELECTED" 50 300 50 H V C CNN
F2 "" 1200 850 50 H I C CNN
F3 "" 1200 850 50 H I C CNN
F4 "1" 550 300 50 H V C CNN "StripAnno"
DRAW
S -500 -500 600 250 1 1 0 N
S 600 350 -500 250 1 1 0 f
X increment 1 -600 150 100 R 50 50 1 1 I
X increment-minus 2 -600 0 100 R 50 50 1 1 I
X increment-plus 3 -600 -100 100 R 50 50 1 1 I
X minus 4 -600 -300 100 R 50 50 1 1 I
X plus 5 -600 -400 100 R 50 50 1 1 I
ENDDRAW
ENDDEF
#
# HALUI_ESTOP
#
DEF HALUI_ESTOP halui.estop. 0 40 N Y 1 F N
F0 "halui.estop." 0 300 50 H V C CNN
F1 "HALUI_ESTOP" 0 200 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
F4 "1" 300 200 50 H V C CNN "StripAnno"
DRAW
S -350 -150 350 150 0 1 0 N
S 350 150 -350 250 0 1 0 f
X activate 1 -450 100 100 R 0 50 1 1 I
X is-activated 2 450 0 100 L 0 50 1 1 O
X reset 3 -450 -100 100 R 0 50 1 1 I
ENDDRAW
ENDDEF
#
# HALUI_FEED_OVERRIDE
#
DEF HALUI_FEED_OVERRIDE halui.feed-override. 0 40 N Y 1 F N
F0 "halui.feed-override." 0 450 50 H V C CNN
F1 "HALUI_FEED_OVERRIDE" 0 350 50 H V C CNN
F2 "" 200 50 50 H I C CNN
F3 "" 200 50 50 H I C CNN
F4 "1" 500 350 50 H V C CNN "StripAnno"
DRAW
S -450 -400 450 300 0 1 0 N
S 450 300 -450 400 0 1 0 f
X count-enable 1 -550 250 100 R 0 50 1 1 I
X counts 2 -550 150 100 R 0 50 1 1 I
X decrease 3 -550 -100 100 R 0 50 1 1 I
X direct-value 4 -550 -250 100 R 0 50 1 1 I
X increase 5 -550 0 100 R 0 50 1 1 I
X scale 6 -550 -350 100 R 0 50 1 1 I
X value 7 550 250 100 L 0 50 1 1 O
ENDDRAW
ENDDEF
#
# HALUI_FLOOD
#
DEF HALUI_FLOOD halui.flood. 0 40 N Y 1 F N
F0 "halui.flood." 0 250 50 H V C CNN
F1 "HALUI_FLOOD" 0 150 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
F4 "1" 350 150 50 H V C CNN "StripAnno"
DRAW
S -300 100 300 -100 1 1 0 N
S -300 200 300 100 1 1 0 f
X is-on 1 400 0 100 L 0 50 1 1 O
X off 2 -400 -50 100 R 0 50 1 1 I
X on 3 -400 50 100 R 0 50 1 1 I
ENDDRAW
ENDDEF
#
# HALUI_JOINT
#
DEF HALUI_JOINT halui.joint. 0 40 N Y 1 F N
F0 "halui.joint." 0 200 50 H V C CNN
F1 "HALUI_JOINT" 0 100 50 H V C CNN
F2 "" 750 150 50 H I C CNN
F3 "" 750 150 50 H I C CNN
F4 "1" 400 100 50 H V C CNN "StripAnno"
DRAW
S 450 50 -450 -250 1 1 0 N
S 450 50 -450 150 1 1 0 f
X jog-deadband 1 -550 -150 100 R 50 50 1 1 I
X selected 2 550 -50 100 L 50 50 1 1 O
X jog-speed 3 -550 -50 100 R 50 50 1 1 I
ENDDRAW
ENDDEF
#
# HALUI_JOINT_N
#
DEF HALUI_JOINT_N halui.joint.0. 0 40 N Y 1 F N
F0 "halui.joint.0." 0 300 50 H V C CNN
F1 "HALUI_JOINT_N" 0 200 50 H V C CNN
F2 "" 400 300 50 H I C CNN
F3 "" 400 300 50 H I C CNN
F4 "1" 700 200 50 H V C CNN "StripAnno"
DRAW
S -800 -1050 750 150 0 1 0 N
S 750 150 -800 250 0 1 0 f
X minus 1 -900 -850 100 R 50 50 1 1 I
X analog 10 -900 -350 100 R 50 50 1 1 I
X is-selected 11 850 50 100 L 50 50 1 1 O
X is-homed 12 850 -100 100 L 50 50 1 1 O
X increment-plus 13 -900 -700 100 R 50 50 1 1 I
X increment-minus 14 -900 -600 100 R 50 50 1 1 I
X increment 15 -900 -500 100 R 50 50 1 1 I
X home 16 -900 -100 100 R 50 50 1 1 I
X has-fault 17 850 -950 100 L 50 50 1 1 O
X unhome 2 -900 -200 100 R 50 50 1 1 I
X select 3 -900 50 100 R 50 50 1 1 I
X plus 4 -900 -950 100 R 50 50 1 1 I
X override-limits 5 850 -850 100 L 50 50 1 1 O
X on-soft-min-limit 6 850 -700 100 L 50 50 1 1 O
X on-soft-max-limit 7 850 -600 100 L 50 50 1 1 O
X on-hard-min-limit 8 850 -450 100 L 50 50 1 1 O
X on-hard-max-limit 9 850 -350 100 L 50 50 1 1 O
ENDDRAW
ENDDEF
#
# HALUI_JOINT_SELECTED
#
DEF HALUI_JOINT_SELECTED halui.joint.selected. 0 40 N Y 1 F N
F0 "halui.joint.selected." 0 500 50 H V C CNN
F1 "HALUI_JOINT_SELECTED" 0 400 50 H V C CNN
F2 "" 150 450 50 H I C CNN
F3 "" 150 450 50 H I C CNN
F4 "1" 700 400 50 H V C CNN "StripAnno"
DRAW
S 750 350 -800 -550 0 1 0 N
S 750 350 -800 450 0 1 0 f
X is-homed 1 850 250 100 L 50 50 1 1 O
X increment-plus 10 -900 -200 100 R 50 50 1 1 I
X increment-minus 11 -900 -100 100 R 50 50 1 1 I
X increment 12 -900 0 100 R 50 50 1 1 I
X home 13 -900 250 100 R 50 50 1 1 I
X has-fault 14 850 150 100 L 50 50 1 1 O
X unhome 2 -900 150 100 R 50 50 1 1 I
X plus 3 -900 -450 100 R 50 50 1 1 I
X override-limits 4 850 -450 100 L 50 50 1 1 O
X on-soft-min-limit 5 850 -350 100 L 50 50 1 1 O
X on-soft-max-limit 6 850 -250 100 L 50 50 1 1 O
X on-hard-min-limit 7 850 -100 100 L 50 50 1 1 O
X on-hard-max-limit 8 850 0 100 L 50 50 1 1 O
X minus 9 -900 -350 100 R 50 50 1 1 I
ENDDRAW
ENDDEF
#
# HALUI_LUBE
#
DEF HALUI_LUBE halui.lube. 0 40 N Y 1 F N
F0 "halui.lube." 0 250 50 H V C CNN
F1 "HALUI_LUBE" -50 150 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
F4 "1" 250 150 50 H V C CNN "StripAnno"
DRAW
S -300 100 300 -100 1 1 0 N
S -300 200 300 100 1 1 0 f
X is-on 1 400 0 100 L 0 50 1 1 O
X off 2 -400 -50 100 R 0 50 1 1 I
X on 3 -400 50 100 R 0 50 1 1 I
ENDDRAW
ENDDEF
#
# HALUI_MACHINE
#
DEF HALUI_MACHINE halui.machine. 0 40 N Y 1 F N
F0 "halui.machine." 0 300 50 H V C CNN
F1 "HALUI_MACHINE" 0 200 50 H V C CNN
F2 "" 2450 1450 50 H I C CNN
F3 "" 2450 1450 50 H I C CNN
F4 "1" 400 200 50 H V C CNN "StripAnno"
DRAW
S -400 -250 450 150 0 1 0 N
S 450 150 -400 250 0 1 0 f
X is-on 1 550 50 100 L 0 50 1 1 O
X off 2 -500 -50 100 R 0 50 1 1 I
X on 3 -500 50 100 R 0 50 1 1 I
X units-per-mm 4 550 -150 100 L 50 50 1 1 O
ENDDRAW
ENDDEF
#
# HALUI_MAX_VELOCITY
#
DEF HALUI_MAX_VELOCITY halui.max-velocity. 0 40 N Y 1 F N
F0 "halui.max-velocity." 0 550 50 H V C CNN
F1 "HALUI_MAX_VELOCITY" -50 450 50 H V C CNN
F2 "" 1350 900 50 H I C CNN
F3 "" 1350 900 50 H I C CNN
F4 "1" 450 450 50 H V C CNN "StripAnno"
DRAW
S -500 -400 500 400 0 1 0 N
S 500 400 -500 500 0 1 0 f
X direct-value 1 -600 -200 100 R 50 50 0 0 I
X count 2 -600 200 100 R 0 50 1 1 I
X count-enable 3 -600 300 100 R 0 50 1 1 I
X decrease 4 -600 50 100 R 0 50 1 1 I
X increase 5 -600 -50 100 R 0 50 1 1 I
X scale 6 -600 -300 100 R 0 50 1 1 I
X value 7 600 200 100 L 0 50 1 1 O
ENDDRAW
ENDDEF
#
# HALUI_MIST
#
DEF HALUI_MIST halui.mist. 0 40 N Y 1 F N
F0 "halui.mist." 0 250 50 H V C CNN
F1 "HALUI_MIST" 0 150 50 H V C CNN
F2 "" 0 -50 50 H I C CNN
F3 "" 0 -50 50 H I C CNN
F4 "1" 300 150 50 H V C CNN "StripAnno"
DRAW
S -300 100 350 -100 0 1 0 N
S -300 200 350 100 0 1 0 f
X is-on 1 450 0 100 L 0 50 1 1 O
X off 2 -400 -50 100 R 0 50 1 1 I
X on 3 -400 50 100 R 0 50 1 1 I
ENDDRAW
ENDDEF
#
# HALUI_MODE
#
DEF HALUI_MODE halui.mode. 0 40 N Y 1 F N
F0 "halui.mode." 0 500 50 H V C CNN
F1 "HALUI_MODE" 0 400 50 H V C CNN
F2 "" 900 750 50 H I C CNN
F3 "" 900 750 50 H I C CNN
F4 "1" 350 400 50 H V C CNN "StripAnno"
DRAW
S -400 -650 400 350 0 1 0 N
S 400 350 -400 450 0 1 0 f
X auto 1 -500 250 100 R 0 50 1 1 I
X teleop 10 -500 -550 100 R 0 50 1 1 I
X is-auto 2 500 250 100 L 0 50 1 1 O
X is-joint 3 500 50 100 L 0 50 1 1 O
X is-manual 4 500 -150 100 L 0 50 1 1 O
X is-mdi 5 500 -350 100 L 0 50 1 1 O
X is-teleop 6 500 -550 100 L 0 50 1 1 O
X joint 7 -500 50 100 R 0 50 1 1 I
X manual 8 -500 -150 100 R 0 50 1 1 I
X mdi 9 -500 -350 100 R 0 50 1 1 I
ENDDRAW
ENDDEF
#
# HALUI_PROGRAM
#
DEF HALUI_PROGRAM halui.program. 0 40 N Y 1 F N
F0 "halui.program." -50 550 50 H V C CNN
F1 "HALUI_PROGRAM" -50 450 50 H V C CNN
F2 "" 50 300 50 H I C CNN
F3 "" 50 300 50 H I C CNN
F4 "1" 400 450 50 H V C CNN "StripAnno"
DRAW
S -500 400 450 -950 0 1 0 N
S 450 400 -500 500 0 1 0 f
X block-delete.is-on 1 550 -750 100 L 0 50 1 1 O
X pause 10 -600 -50 100 R 0 50 1 1 I
X resume 11 -600 -150 100 R 0 50 1 1 I
X run 12 -600 300 100 R 0 50 1 1 I
X step 13 -600 200 100 R 0 50 1 1 I
X stop 14 -600 100 100 R 0 50 1 1 I
X block-delete.off 2 -600 -850 100 R 0 50 1 1 I
X block-delete.on 3 -600 -650 100 R 0 50 1 1 I
X is-idle 4 550 200 100 L 0 50 1 1 O
X is-paused 5 550 -50 100 L 0 50 1 1 O
X is-running 6 550 300 100 L 0 50 1 1 O
X optional-stop.is-on 7 550 -400 100 L 0 50 1 1 O
X optional-stop.off 8 -600 -500 100 R 0 50 1 1 I
X optional-stop.on 9 -600 -300 100 R 0 50 1 1 I
ENDDRAW
ENDDEF
#
# HALUI_RAPID_OVERRIDE
#
DEF HALUI_RAPID_OVERRIDE halui.rapid-override. 0 40 N Y 1 F N
F0 "halui.rapid-override." 0 450 50 H V C CNN
F1 "HALUI_RAPID_OVERRIDE" -50 350 50 H V C CNN
F2 "" 1050 750 50 H I C CNN
F3 "" 1050 750 50 H I C CNN
F4 "1" 500 350 50 H V C CNN "StripAnno"
DRAW
S -550 -500 550 300 1 1 0 N
S 550 300 -550 400 1 1 0 f
X count-enable 1 -650 200 100 R 0 50 1 1 I
X counts 2 -650 100 100 R 0 50 1 1 I
X decrease 3 -650 -150 100 R 0 50 1 1 I
X direct-value 4 -650 -300 100 R 0 50 1 1 I
X increase 5 -650 -50 100 R 0 50 1 1 I
X scale 6 -650 -400 100 R 0 50 1 1 I
X value 7 650 200 100 L 0 50 1 1 O
ENDDRAW
ENDDEF
#
# HALUI_SPINDLE_N
#
DEF HALUI_SPINDLE_N halui.spindle.0. 0 40 N Y 1 F N
F0 "halui.spindle.0." 0 900 50 H V C CNN
F1 "HALUI_SPINDLE_N" 0 800 50 H V C CNN
F2 "" -50 1450 50 H I C CNN
F3 "" -50 1450 50 H I C CNN
F4 "1" 550 800 50 H V C CNN "StripAnno"
DRAW
S -650 -950 600 750 0 1 0 N
S 600 750 -650 850 0 1 0 f
X override.direct-value 11 -750 -850 100 R 50 50 0 0 I
X override.counts 1 -750 -550 100 R 0 50 1 1 I
X override.decrease 10 -750 -650 100 R 0 50 1 1 I
X override.count-enable 12 -750 -450 100 R 0 50 1 1 I
X is-on 13 700 -100 100 L 0 50 1 1 O
X increase 14 -750 150 100 R 0 50 1 1 I
X forward 15 -750 400 100 R 0 50 1 1 I
X decrease 16 -750 50 100 R 0 50 1 1 I
X brake.off 17 -750 550 100 R 0 50 1 1 I
X brake-on 18 -750 650 100 R 0 50 1 1 I
X brake-is-on 19 700 650 100 L 0 50 1 1 O
X stop 2 -750 -200 100 R 0 50 1 1 I
X start 3 -750 -100 100 R 0 50 1 1 I
X runs-forward 4 700 400 100 L 0 50 1 1 O
X runs-backwards 5 700 300 100 L 0 50 1 1 O
X reverse 6 -750 300 100 R 0 50 1 1 I
X override.value 7 700 -350 100 L 0 50 1 1 O
X override.scale 8 -750 -350 100 R 0 50 1 1 I
X override.increase 9 -750 -750 100 R 0 50 1 1 I
ENDDRAW
ENDDEF
#
# HALUI_TOOL
#
DEF HALUI_TOOL halui.tool. 0 40 N Y 1 F N
F0 "halui.tool." -50 750 50 H V C CNN
F1 "HALUI_TOOL" -50 650 50 H V C CNN
F2 "" -50 300 50 H I C CNN
F3 "" -50 300 50 H I C CNN
F4 "1" 250 650 50 H V C CNN "StripAnno"
DRAW
S -400 600 300 700 0 1 0 f
S 300 600 -400 -800 0 1 0 N
X diameter 1 400 400 100 L 0 50 1 1 O
X length-offset.z 10 400 -700 100 L 0 50 1 1 O
X number 11 400 500 100 L 0 50 1 1 O
X length-offset.a 2 400 250 100 L 0 50 1 1 O
X length-offset.b 3 400 150 100 L 0 50 1 1 O
X length-offset.c 4 400 50 100 L 0 50 1 1 O
X length-offset.u 5 400 -150 100 L 0 50 1 1 O
X length-offset.v 6 400 -250 100 L 0 50 1 1 O
X length-offset.w 7 400 -350 100 L 0 50 1 1 O
X length-offset.x 8 400 -500 100 L 0 50 1 1 O
X length-offset.y 9 400 -600 100 L 0 50 1 1 O
ENDDRAW
ENDDEF
#
# HAL_MANUALTOOLCHANGE
#
DEF HAL_MANUALTOOLCHANGE hal_manualtoolchange. 0 40 Y Y 1 F N
F0 "hal_manualtoolchange." -50 300 59 H V C CNN
F1 "HAL_MANUALTOOLCHANGE" -100 200 50 H V C CNN
F2 "" 0 -100 50 H I C CNN
F3 "" 0 -100 50 H I C CNN
F4 "1" 450 200 50 H V C CNN "StripAnno"
F5 "-W hal_manualtoolchange" -50 100 50 H V C CNN "LoadUsr"
DRAW
S -600 -450 500 50 1 1 0 N
S 500 50 -600 250 1 1 0 f
X change 1 -700 -50 100 R 0 50 1 0 I
X change_button 2 -700 -200 100 R 0 50 1 0 I
X changed 3 600 -50 100 L 0 50 1 0 O
X number 4 -700 -350 100 R 0 50 1 0 I
ENDDRAW
ENDDEF
#
# HM2_5I25
#
DEF HM2_5I25 hm2_5i25.0. 0 20 N Y 1 F N
F0 "hm2_5i25.0." 0 500 50 H V C CNN
F1 "HM2_5I25" 0 400 50 H V C CNN
F2 "" 550 -200 50 H I C CNN
F3 "" 550 -200 50 H I C CNN
F4 "1" 400 400 50 H V C CNN "StripAnno"
DRAW
S -450 350 450 -550 0 1 0 N
S 450 350 -450 450 0 1 0 f
X watchdog.timeout_ns 8 -550 50 157 R 50 50 1 0 I I
X watchdog.has_bit 1 550 -50 100 L 50 50 1 1 O
X led.CR01 2 -550 300 100 R 50 50 1 1 I
X led.CR02 3 -550 200 100 R 50 50 1 1 I
X read 4 -550 -150 100 R 50 50 1 1 W C
X *read_gpio 5 -550 -350 100 R 50 50 1 1 W NC
X write 6 -550 -250 100 R 50 50 1 1 W C
X *write_gpio 7 -550 -450 100 R 50 50 1 1 W NC
ENDDRAW
ENDDEF
#
# HM2_5I25_GPIO
#
DEF HM2_5I25_GPIO hm2_5i25.0.gpio.000. 0 40 N Y 1 F N
F0 "hm2_5i25.0.gpio.000." 0 300 50 H V C CNN
F1 "HM2_5I25_GPIO" -50 200 50 H V C CNN
F2 "" 150 -250 50 H I C CNN
F3 "" 150 -250 50 H I C CNN
F4 "1" 350 200 50 H V C CNN "StripAnno"
DRAW
S -400 150 400 250 0 1 0 f
S 400 150 -400 -350 0 1 0 N
X in 1 500 100 100 L 50 50 1 1 O
X in_not 2 500 0 100 L 50 50 1 1 O
X invert_output 3 -500 -200 157 R 50 50 1 1 I I
X is_opendrain 4 -500 -300 157 R 50 50 1 1 I I
X is_output 5 -500 -100 157 R 50 50 1 1 I I
X out 6 -500 100 100 R 50 50 1 1 I
ENDDRAW
ENDDEF
#
# HM2_5I25_STEPGEN
#
DEF HM2_5I25_STEPGEN hm2_5i25.0.stepgen.00. 0 20 N Y 1 F N
F0 "hm2_5i25.0.stepgen.00." -50 900 50 H V C CNN
F1 "HM2_5I25_STEPGEN" -50 800 50 H V C CNN
F2 "" 0 500 50 H I C CNN
F3 "" 0 500 50 H I C CNN
F4 "1" 400 800 50 H V C CNN "StripAnno"
DRAW
S -500 750 450 -1250 0 1 0 N
S -500 850 450 750 0 1 0 f
X control-type 1 -600 500 100 R 50 50 1 1 I
X position-scale 10 -600 -50 157 R 50 50 1 1 I I
X step_type 11 -600 -1150 157 R 50 50 1 1 I I
X steplen 12 -600 -200 157 R 50 50 1 1 I I
X stepspace 13 -600 -300 157 R 50 50 1 1 I I
X step.invert_output 14 -600 -400 157 R 50 50 1 1 I I
X direction.invert_output 15 -600 -750 157 R 50 50 1 1 I I
X velocity-cmd 16 -600 200 100 R 50 50 1 1 I
X velocity-fb 17 550 100 100 L 50 50 1 1 O
X counts 2 550 650 100 L 50 50 1 1 O
X dirhold 3 -600 -650 157 R 50 50 1 1 I I
X dirsetup 4 -600 -550 157 R 50 50 1 1 I I
X enable 5 -600 650 100 R 50 50 1 1 I
X maxaccel 6 -600 -1000 157 R 50 50 1 1 I I
X maxvel 7 -600 -900 157 R 50 50 1 1 I I
X position-cmd 8 -600 400 100 R 50 50 1 1 I
X position-fb 9 550 300 100 L 50 50 1 1 O
ENDDRAW
ENDDEF
#
# IOCONTROL
#
DEF IOCONTROL iocontrol.0. 0 40 N Y 1 F N
F0 "iocontrol.0." 0 700 59 H V C CNN
F1 "IOCONTROL" 0 600 50 H V C CNN
F2 "" -100 200 50 H I C CNN
F3 "" -100 200 50 H I C CNN
F4 "1" 650 600 50 H V C CNN "StripAnno"
DRAW
S -750 550 700 650 1 1 0 f
S 700 550 -750 -950 1 1 0 N
X coolant-flood 1 800 -50 100 L 0 50 1 0 O
X tool-prep-pocket 10 800 -750 100 L 0 50 1 0 O
X tool-prepare 11 800 -550 100 L 0 50 1 0 O
X tool-prepared 12 -850 -550 100 R 0 50 1 0 I
X user-enable-out 13 800 450 100 L 0 50 1 0 O
X user-request-enable 14 800 350 100 L 0 50 1 0 O
X coolant-mist 2 800 -150 100 L 0 50 1 0 O
X emc-enable-in 3 -850 450 100 R 0 50 1 0 I
X lube 4 800 150 100 L 0 50 1 0 O
X lube-level 5 -850 150 100 R 0 50 1 0 I
X tool-change 6 800 -850 100 L 0 50 1 0 O
X tool-changed 7 -850 -850 100 R 0 50 1 0 I
X tool-number 8 800 -350 100 L 0 50 1 0 O
X tool-prep-number 9 800 -650 100 L 0 50 1 0 O
X tool-prep-index 15 800 -450 157 L 50 50 1 1 O I
ENDDRAW
ENDDEF
#
# JOINT_N
#
DEF JOINT_N joint.0. 0 40 N Y 1 F N
F0 "joint.0." 0 800 50 H V C CNN
F1 "JOINT_N" 0 700 50 H V C CNN
F2 "" 1050 150 50 H I C CNN
F3 "" 1050 150 50 H I C CNN
F4 "1" 700 700 50 H V C CNN "StripAnno"
DRAW
S -700 650 750 -1500 0 1 0 N
S -700 650 750 750 0 1 0 f
X jog-enable 1 -800 -950 100 R 50 50 1 1 I
X motor-pos-cmd 10 850 550 100 L 50 50 1 1 O
X jog-vel-mode 11 -800 -1150 100 R 50 50 1 1 I
X jog-scale 12 -800 -1050 100 R 50 50 1 1 I
X active 13 850 50 100 L 50 50 1 1 O
X jog-counts 14 -800 -850 100 R 50 50 1 1 I
X jog-accel-fraction 15 -800 -750 100 R 50 50 1 1 I
X is-unlocked 16 -800 -600 100 R 50 50 1 1 I
X index-enable 17 -800 -450 100 R 50 50 1 1 B
X homing 18 850 -450 100 L 50 50 1 1 O
X homed 19 850 -350 100 L 50 50 1 1 O
X unlock 2 850 -600 100 L 50 50 1 1 O
X home-sw-in 20 -800 -350 100 R 50 50 1 1 I
X faulted 21 850 -150 100 L 50 50 1 1 O
X error 22 850 -50 100 L 50 50 1 1 O
X amp-fault-in 23 -800 -150 100 R 50 50 1 1 I
X amp-enable-out 24 850 450 100 L 50 50 1 1 O
X pos-lim-sw-in 3 -800 -1400 100 R 50 50 1 1 I
X pos-hard-limit 4 850 -1400 100 L 50 50 1 1 O
X pos-fb 5 850 200 100 L 50 50 1 1 O
X pos-cmd 6 850 300 100 L 50 50 1 1 O
X neg-lim-sw-in 7 -800 -1300 100 R 50 50 1 1 I
X neg-hard-limit 8 850 -1300 100 L 50 50 1 1 O
X motor-pos-fb 9 -800 550 100 R 50 50 1 1 I
ENDDRAW
ENDDEF
#
# LOADRT
#
DEF LOADRT loadrt.0. 0 0 N N 1 F N
F0 "loadrt.0." 0 250 50 H V C CNN
F1 "LOADRT" -50 150 50 H V C CNN
F2 "" 800 -500 50 H I C CNN
F3 "" 800 -500 50 H I C CNN
F4 "Component + options go here" -250 50 50 H V L CNN "LoadRT"
F5 "1" 250 150 50 H V C CNN "StripAnno"
DRAW
P 2 0 0 0 300 100 950 100 N
P 2 0 0 0 300 200 300 100 N
P 3 0 0 0 -300 100 -300 0 950 0 N
P 4 0 1 0 300 200 -300 200 -300 100 300 100 f
ENDDRAW
ENDDEF
#
# LOADUSR
#
DEF LOADUSR loadusr.0. 0 0 N N 1 F N
F0 "loadusr.0." 0 250 50 H V C CNN
F1 "LOADUSR" -50 150 50 H V C CNN
F2 "" 850 -500 50 H I C CNN
F3 "" 850 -500 50 H I C CNN
F4 "Module + options go here" -250 50 50 H V L CNN "LoadUsr"
F5 "1" 250 150 50 H V C CNN "StripAnno"
DRAW
P 2 1 1 0 300 100 850 100 N
P 2 1 1 0 300 200 300 100 N
P 3 1 1 0 -300 100 -300 0 850 0 N
P 4 1 1 0 300 200 -300 200 -300 100 300 100 f
ENDDRAW
ENDDEF
#
# LOGIC
#
DEF LOGIC logic.0. 0 20 N Y 1 F N
F0 "logic.0." 0 650 50 H V C CNN
F1 "LOGIC" 0 550 50 H V C CNN
F2 "" 350 -200 50 H I C CNN
F3 "" 350 -200 50 H I C CNN
F4 "1" 300 550 50 H V C CNN "StripAnno"
F5 "+ personality=0x108" -50 -550 50 H V C CNN "LoadRT"
DRAW
T 0 -50 400 50 0 0 0 " 100" Normal 0 L C
T 0 -50 300 50 0 0 0 " 200" Normal 0 L C
T 0 -50 200 50 0 0 0 " 400" Normal 0 L C
T 0 -50 100 50 0 0 0 " 800" Normal 0 L C
T 0 -50 0 50 0 0 0 1000 Normal 0 L C
S 350 500 -400 600 0 1 0 f
S -400 500 350 -500 1 1 0 N
X in-00 1 -500 400 100 R 50 50 1 1 I
X or 10 450 300 100 L 50 50 1 1 O
X xor 11 450 200 100 L 50 50 1 1 O
X nand 12 450 100 100 L 50 50 1 1 O
X nor 13 450 0 100 L 50 50 1 1 O
X _ 14 -500 -400 100 R 50 50 1 1 W NC
X in-01 2 -500 300 100 R 50 50 1 1 I
X in-02 3 -500 200 100 R 50 50 1 1 I
X in-03 4 -500 100 100 R 50 50 1 1 I
X in-04 5 -500 0 100 R 50 50 1 1 I
X in-05 6 -500 -100 100 R 50 50 1 1 I
X in-06 7 -500 -200 100 R 50 50 1 1 I
X in-07 8 -500 -300 100 R 50 50 1 1 I
X and 9 450 400 100 L 50 50 1 1 O
ENDDRAW
ENDDEF
#
# LOGITECH_GAMEPAD_GUF13A
#
DEF LOGITECH_GAMEPAD_GUF13A input.0. 0 40 N Y 2 L N
F0 "input.0." 0 1850 50 H V C CNN
F1 "LOGITECH_GAMEPAD_GUF13A" -50 1750 50 H V C CNN
F2 "" 5500 3600 50 H I C CNN
F3 "" 5500 3600 50 H I C CNN
F4 "1" 550 1750 50 H V C CNN "StripAnno"
F5 "-W hal_input -KA Dual" -50 1650 50 H V C CNN "LoadUsr"
DRAW
T 0 -350 1400 59 0 2 1 1 Normal 0 L B
T 0 -400 -1300 59 0 2 1 10 Normal 0 L B
T 0 -350 1100 59 0 2 1 2 Normal 0 L B
T 0 -350 800 59 0 2 1 3 Normal 0 L B
T 0 -350 500 59 0 2 1 4 Normal 0 L B
T 0 -350 200 59 0 2 1 5 Normal 0 L B
T 0 -350 -100 59 0 2 1 6 Normal 0 L B
T 0 -350 -400 59 0 2 1 7 Normal 0 L B
T 0 -350 -700 59 0 2 1 8 Normal 0 L B
T 0 -350 -1000 59 0 2 1 9 Normal 0 L B
T 0 -550 -1600 59 0 2 1 "L Push" Normal 0 L B
T 0 -550 -1900 59 0 2 1 "R Push" Normal 0 L B
S -850 -1400 750 1600 1 1 0 N
S 750 1600 -850 1800 1 1 0 f
S -650 1600 600 1800 2 1 0 f
S 600 -1950 -650 1600 2 1 0 N
X abs-z-offset 1 -950 -500 100 R 0 50 1 1 I
X abs-z-is-pos 11 850 -700 100 L 0 50 1 1 O
X abs-z-is-neg 12 850 -800 100 L 0 50 1 1 O
X abs-z-fuzz 13 -950 -800 100 R 0 50 1 1 I
X abs-z-flat 14 -950 -700 100 R 0 50 1 1 I
X abs-z-counts 15 850 -500 100 L 0 50 1 1 O
X abs-y-scale 16 -950 -100 100 R 0 50 1 1 I
X abs-y-position 17 850 -100 100 L 0 50 1 1 O
X abs-y-offset 18 -950 0 100 R 0 50 1 1 I
X abs-y-is-pos 28 850 -200 100 L 0 50 1 1 O
X abs-hat0y-flat 37 -950 800 100 R 0 50 1 1 I
X abs-rz-flat 38 -950 -1200 100 R 0 50 1 1 I
X abs-rz-counts 39 850 -1000 100 L 0 50 1 1 O
X abs-hat0y-scale 40 -950 900 100 R 0 50 1 1 I
X abs-hat0y-position 41 850 900 100 L 0 50 1 1 O
X abs-hat0y-offset 42 -950 1000 100 R 0 50 1 1 I
X abs-hat0y-is-pos 43 850 800 100 L 0 50 1 1 O
X abs-hat0y-is-neg 44 850 700 100 L 0 50 1 1 O
X abs-hat0y-fuzz 45 -950 700 100 R 0 50 1 1 I
X abs-rz-fuzz 46 -950 -1300 100 R 0 50 1 1 I
X abs-hat0y-counts 47 850 1000 100 L 0 50 1 1 O
X abs-hat0x-scale 48 -950 1400 100 R 0 50 1 1 I
X abs-hat0x-position 49 850 1400 100 L 0 50 1 1 O
X abs-hat0x-offset 50 -950 1500 100 R 0 50 1 1 I
X abs-hat0x-is-pos 51 850 1300 100 L 0 50 1 1 O
X abs-hat0x-is-neg 52 850 1200 100 L 0 50 1 1 O
X abs-hat0x-fuzz 53 -950 1200 100 R 0 50 1 1 I
X abs-hat0x-flat 54 -950 1300 100 R 0 50 1 1 I
X abs-x-is-neg 55 850 200 100 L 0 50 1 1 O
X abs-y-is-neg 56 850 -300 100 L 0 50 1 1 O
X abs-y-fuzz 57 -950 -300 100 R 0 50 1 1 I
X abs-y-flat 58 -950 -200 100 R 0 50 1 1 I
X abs-y-counts 59 850 0 100 L 0 50 1 1 O
X abs-x-scale 60 -950 400 100 R 0 50 1 1 I
X abs-x-position 61 850 400 100 L 0 50 1 1 O
X abs-x-offset 62 -950 500 100 R 0 50 1 1 I
X abs-x-is-pos 63 850 300 100 L 0 50 1 1 O
X abs-hat0x-counts 64 850 1500 100 L 0 50 1 1 O
X abs-x-fuzz 65 -950 200 100 R 0 50 1 1 I
X abs-x-flat 66 -950 300 100 R 0 50 1 1 I
X abs-x-counts 67 850 500 100 L 0 50 1 1 O
X abs-rz-scale 68 -950 -1100 100 R 0 50 1 1 I
X abs-rz-position 69 850 -1100 100 L 0 50 1 1 O
X abs-rz-offset 70 -950 -1000 100 R 0 50 1 1 I
X abs-rz-is-pos 71 850 -1200 100 L 0 50 1 1 O
X abs-rz-is-neg 72 850 -1300 100 L 0 50 1 1 O
X abs-z-scale 8 -950 -600 100 R 0 50 1 1 I
X abs-z-position 9 850 -600 100 L 0 50 1 1 O
X btn-base4 10 700 -1200 100 L 0 50 2 1 O
X btn-pinkie-not 19 700 -100 100 L 0 50 2 1 O
X btn-base3-not 2 700 -1000 100 L 0 50 2 1 O
X btn-top2-not 20 700 200 100 L 0 50 2 1 O
X btn-top2 21 700 300 100 L 0 50 2 1 O
X btn-top-not 22 700 500 100 L 0 50 2 1 O
X btn-top 23 700 600 100 L 0 50 2 1 O
X btn-thumb2-not 24 700 800 100 L 0 50 2 1 O
X btn-thumb2 25 700 900 100 L 0 50 2 1 O
X btn-thumb-not 26 700 1100 100 L 0 50 2 1 O
X btn-thumb 27 700 1200 100 L 0 50 2 1 O
X btn-pinkie 29 700 0 100 L 0 50 2 1 O
X btn-base3 3 700 -900 100 L 0 50 2 1 O
X btn-joystick-not 30 700 1400 100 L 0 50 2 1 O
X btn-joystick 31 700 1500 100 L 0 50 2 1 O
X btn-base6-not 32 700 -1900 100 L 0 50 2 1 O
X btn-base6 33 700 -1800 100 L 0 50 2 1 O
X btn-base5-not 34 700 -1600 100 L 0 50 2 1 O
X btn-base5 35 700 -1500 100 L 0 50 2 1 O
X btn-base4-not 36 700 -1300 100 L 0 50 2 1 O
X btn-base2-not 4 700 -700 100 L 0 50 2 1 O
X btn-base2 5 700 -600 100 L 0 50 2 1 O
X btn-base-not 6 700 -400 100 L 0 50 2 1 O
X btn-base 7 700 -300 100 L 0 50 2 1 O
ENDDRAW
ENDDEF
#
# MOTION
#
DEF MOTION motion. 0 40 N Y 1 F N
F0 "motion." 0 1550 59 H V C CNN
F1 "MOTION" 0 1450 50 H V C CNN
F2 "" 0 350 50 H I C CNN
F3 "" 0 350 50 H I C CNN
F4 "1" 600 1450 50 H V C CNN "StripAnno"
DRAW
S -600 1400 650 -1100 1 1 0 N
S 650 1400 -600 1500 1 1 0 f
X feed-hold 1 -700 1000 100 R 0 50 1 0 I
X coord-mode 10 750 950 100 L 0 50 1 0 O
X distance-to-go 11 750 350 100 L 0 50 1 0 O
X probe-input 12 -700 600 100 R 0 50 1 0 I
X in-position 13 750 1300 100 L 0 50 1 0 O
X adaptive-feed 14 -700 800 100 R 0 50 1 0 I
X enable 15 -700 1300 100 R 0 50 1 0 I
X digital-out-03 16 750 -750 100 L 0 50 1 0 O
X digital-out-02 17 750 -650 100 L 0 50 1 0 O
X digital-out-01 18 750 -550 100 L 0 50 1 0 O
X digital-out-00 19 750 -450 100 L 0 50 1 0 O
X homing-inhibit 2 -700 450 100 R 0 50 1 0 I
X analog-out-00 20 750 -200 100 L 0 50 1 0 O
X analog-out-01 21 750 -300 100 L 0 50 1 0 O
X digital-in-03 22 -700 -750 100 R 0 50 1 0 I
X digital-in-02 23 -700 -650 100 R 0 50 1 0 I
X digital-in-01 24 -700 -550 100 R 0 50 1 0 I
X analog-in-00 25 -700 -200 100 R 0 50 1 0 I
X analog-in-01 26 -700 -300 100 R 0 50 1 0 I
X digital-in-00 27 -700 -450 100 R 0 50 1 0 I
X feed-inhibit 3 -700 900 100 R 0 50 1 0 I
X on-soft-limit 30 750 -50 100 L 0 50 1 0 O
X requested-vel 31 750 500 100 L 0 50 1 0 O
X teleop-mode 32 750 750 100 L 0 50 1 0 O
X motion-type 4 750 1100 100 L 0 50 1 0 O
X motion-enabled 5 750 1200 100 L 0 50 1 0 O
X offset-limited 6 750 100 100 L 0 50 1 0 O
X current-vel 7 750 600 100 L 0 50 1 0 O
X coord-error 8 750 850 100 L 0 50 1 0 O
X offset-active 9 750 200 100 L 0 50 1 0 O
X /motion-controller 28 -700 -1000 100 R 50 50 1 1 W C
X /motion-command-handler 29 -700 -900 100 R 50 50 1 1 W C
ENDDRAW
ENDDEF
#
# MUX2
#
DEF MUX2 mux2. 0 20 N Y 1 F N
F0 "mux2." 0 300 50 H V C CNN
F1 "MUX2" 0 200 50 H V C CNN
F2 "" 350 -150 50 H I C CNN
F3 "" 350 -150 50 H I C CNN
F4 "+" 0 0 50 H I C CNN "LoadRT"
DRAW
S -150 150 150 -250 0 1 0 N
S 150 150 -150 250 0 1 0 f
X in0 1 -250 100 100 R 50 50 1 1 I
X in1 2 -250 0 100 R 50 50 1 1 I
X sel 3 -250 -200 100 R 50 50 1 1 I
X out 4 250 100 100 L 50 50 1 1 O
X _ 5 -250 -100 100 R 50 50 1 1 W NC
ENDDRAW
ENDDEF
#
# MUX4
#
DEF MUX4 mux4. 0 20 N Y 1 F N
F0 "mux4." 0 450 50 H V C CNN
F1 "MUX4" 0 350 50 H V C CNN
F2 "" 400 -100 50 H I C CNN
F3 "" 400 -100 50 H I C CNN
F4 "+" 0 0 50 H I C CNN "LoadRT"
DRAW
S 150 300 -150 400 0 1 0 f
S -150 300 150 -400 1 1 0 N
X in0 1 -250 250 100 R 50 50 1 1 I
X in1 2 -250 150 100 R 50 50 1 1 I
X in2 3 -250 50 100 R 50 50 1 1 I
X in3 4 -250 -50 100 R 50 50 1 1 I
X sel0 5 -250 -250 100 R 50 50 1 1 I
X sel1 6 -250 -350 100 R 50 50 1 1 I
X out 7 250 250 100 L 50 50 1 1 O
X _ 8 -250 -150 100 R 50 50 1 1 W NC
ENDDRAW
ENDDEF
#
# MUX8
#
DEF MUX8 mux8. 0 20 N Y 1 F N
F0 "mux8." 0 750 50 H V C CNN
F1 "MUX8" 0 650 50 H V C CNN
F2 "" 350 -100 50 H I C CNN
F3 "" 350 -100 50 H I C CNN
F4 "+" 0 0 50 H I C CNN "LoadRT"
DRAW
S 150 600 -150 700 0 1 0 f
S -150 600 150 -600 1 1 0 N
X in0 1 -250 550 100 R 50 50 1 1 I
X sel1 10 -250 -450 100 R 50 50 1 1 I
X sel2 11 -250 -550 100 R 50 50 1 1 I
X _ 12 -250 -250 100 R 50 50 1 1 W NC
X in1 2 -250 450 100 R 50 50 1 1 I
X in2 3 -250 350 100 R 50 50 1 1 I
X in3 4 -250 250 100 R 50 50 1 1 I
X in4 5 -250 150 100 R 50 50 1 1 I
X in5 6 -250 50 100 R 50 50 1 1 I
X in6 7 -250 -50 100 R 50 50 1 1 I
X out 7 250 550 100 L 50 50 1 1 O
X in7 8 -250 -150 100 R 50 50 1 1 I
X sel0 9 -250 -350 100 R 50 50 1 1 I
ENDDRAW
ENDDEF
#
# NOT
#
DEF NOT not. 0 0 N N 1 F N
F0 "not." 100 150 50 H V C CNN
F1 "NOT" 0 0 50 H V C CNN
F2 "" 350 -250 50 H I C CNN
F3 "" 350 -250 50 H I C CNN
F4 "+" 0 0 50 H I C CNN "LoadRT"
DRAW
C 225 0 25 0 1 0 f
P 4 1 0 10 -100 150 -100 -150 200 0 -100 150 f
X in 1 -250 0 150 R 50 50 1 1 I
X out 2 450 0 197 L 50 50 1 1 O
X _ 3 -200 -100 100 R 50 50 1 1 W NC
ENDDRAW
ENDDEF
#
# OR2
#
DEF OR2 or2. 0 0 N N 1 F N
F0 "or2." 0 200 50 H V C CNN
F1 "OR2" 0 0 50 H V C CNN
F2 "" 50 0 50 H I C CNN
F3 "" 50 0 50 H I C CNN
F4 "+" 0 0 50 H I C CNN "LoadRT"
DRAW
A -360 0 258 354 -354 1 1 10 N -150 150 -150 -150
A -47 -52 204 150 837 1 1 10 f 150 0 -24 150
A -47 52 204 -150 -837 1 1 10 f 150 0 -24 -150
P 2 1 1 10 -150 -150 -25 -150 f
P 2 1 1 10 -150 150 -25 150 f
P 12 1 1 -1000 -25 150 -150 150 -150 150 -140 134 -119 89 -106 41 -103 -10 -109 -59 -125 -107 -150 -150 -150 -150 -25 -150 f
X in0 1 -300 100 177 R 50 50 1 1 I
X in1 2 -300 -100 177 R 50 50 1 1 I
X out 3 300 0 150 L 50 50 1 1 O
X _ 4 -200 0 100 R 50 50 1 1 W NC
ENDDRAW
ENDDEF
#
# PARAMETER
#
DEF PARAMETER parameter. 0 0 N N 1 F N
F0 "parameter." 0 100 50 H I C CNN
F1 "PARAMETER" 200 0 50 H V R CNN
F2 "" 300 0 50 H I C CNN
F3 "" 300 0 50 H I C CNN
DRAW
P 4 1 1 0 -350 50 300 50 300 -50 -350 -50 N
X out 1 400 0 154 L 50 50 1 0 O I
ENDDRAW
ENDDEF
#
# PID
#
DEF PID pid.0. 0 40 N Y 1 F N
F0 "pid.0." 0 1400 50 H V C CNN
F1 "PID" 0 1300 50 H V C CNN
F2 "" 750 600 50 H I C CNN
F3 "" 750 600 50 H I C CNN
F4 "1" 600 1300 50 H V C CNN "StripAnno"
DRAW
S -550 1250 650 -1750 0 0 0 N
S 650 1250 -550 1350 0 0 0 f
X do-pid-calcs 1 -650 -1650 100 R 0 50 1 0 I C
X maxerrorD 10 -650 -1000 100 R 0 50 1 0 I
X maxerror 11 -650 -900 100 R 0 50 1 0 I
X maxcmdDDD 12 -650 -1450 100 R 0 50 1 0 I
X maxcmdDD 13 -650 -1350 100 R 0 50 1 0 I
X maxcmdD 14 -650 -1250 100 R 0 50 1 0 I
X index-enable 15 -650 600 100 R 0 50 1 0 I
X Igain 16 -650 100 100 R 0 50 1 0 I
X FF3 17 -650 -450 100 R 0 50 1 0 I
X FF2 18 -650 -350 100 R 0 50 1 0 I
X FF1 19 -650 -250 100 R 0 50 1 0 I
X command 2 -650 950 100 R 0 50 1 0 I
X FF0 20 -650 -150 100 R 0 50 1 0 I
X feedback-deriv 21 -650 1100 100 R 0 50 1 0 I
X feedback 22 -650 1200 100 R 0 50 1 0 I
X error-previous-target 23 -650 -650 100 R 0 50 1 0 I
X error 24 750 850 100 L 0 50 1 0 O
X enable 25 -650 700 100 R 0 50 1 0 I
X Dgain 26 -650 0 100 R 0 50 1 0 I
X deadband 27 -650 350 100 R 0 50 1 0 I
X command-deriv 28 -650 850 100 R 0 50 1 0 I
X bias 29 -650 450 100 R 0 50 1 0 I
X saturated-s 3 750 600 100 L 0 50 1 0 O
X saturated-count 4 750 500 100 L 0 50 1 0 O
X saturated 5 750 700 100 L 0 50 1 0 O
X Pgain 6 -650 200 100 R 0 50 1 0 I
X output 7 750 950 100 L 0 50 1 0 O
X maxoutput 8 -650 -750 100 R 0 50 1 0 I
X maxerrorI 9 -650 -1100 100 R 0 50 1 0 I
ENDDRAW
ENDDEF
#
# SCALE
#
DEF SCALE scale. 0 20 N Y 1 F N
F0 "scale." 0 300 50 H V C CNN
F1 "SCALE" 0 200 50 H V C CNN
F2 "" 550 -350 50 H I C CNN
F3 "" 550 -350 50 H I C CNN
F4 "+" 0 0 50 H I C CNN "LoadRT"
DRAW
S 150 150 -150 250 0 1 0 f
S -150 150 150 -250 1 1 0 N
X in 1 -250 100 100 R 50 50 1 1 I
X gain 2 -250 -100 100 R 50 50 1 1 I
X offset 3 -250 -200 100 R 50 50 1 1 I
X out 4 250 100 100 L 50 50 1 1 O
X _ 5 -250 0 100 R 50 50 1 1 W NC
ENDDRAW
ENDDEF
#
# SPINDLE
#
DEF SPINDLE spindle.0. 0 40 N Y 1 F N
F0 "spindle.0." -50 900 50 H V C CNN
F1 "SPINDLE" -50 800 50 H V C CNN
F2 "" -50 100 50 H I C CNN
F3 "" -50 100 50 H I C CNN
F4 "1" 550 800 50 H V C CNN "StripAnno"
DRAW
S -650 750 600 -1000 1 1 0 N
S 600 750 -650 850 1 1 0 f
X at-speed 1 -750 -650 100 R 0 50 1 1 I
X index-enable 10 -750 200 100 R 0 50 1 1 B
X amp-fault-in 11 -750 -200 100 R 0 50 1 1 I
X speed-out-abs 12 700 -700 100 L 0 50 1 1 O
X speed-out-rps-abs 13 700 -900 100 L 0 50 1 1 O
X speed-out-rps 14 700 -800 100 L 0 50 1 1 O
X speed-cmd-rps 15 700 -450 100 L 0 50 1 1 O
X orient-mode 16 700 -200 100 L 0 50 1 1 O
X orient-angle 17 700 -100 100 L 0 50 1 1 O
X speed-in 18 -750 -550 100 R 0 50 1 1 I
X revs 19 -750 -300 100 R 0 50 1 1 I
X speed-out 2 700 -550 100 L 0 50 1 1 O
X orient-fault 20 -750 -50 100 R 0 50 1 1 I
X is-oriented 21 -750 50 100 R 0 50 1 1 I
X orient 3 700 0 100 L 0 50 1 1 O
X locked 4 700 200 100 L 0 50 1 1 O
X reverse 5 700 450 100 L 0 50 1 1 O
X on 6 700 650 100 L 0 50 1 1 O
X forward 7 700 550 100 L 0 50 1 1 O
X brake 8 700 350 100 L 0 50 1 1 O
X inhibit 9 -750 650 100 R 0 50 1 1 I
ENDDRAW
ENDDEF
#
# THREAD
#
DEF THREAD name-thread. 0 40 N Y 1 F N
F0 "name-thread." 0 550 59 H V C CNN
F1 "THREAD" 0 450 50 H V C CNN
F2 "" 100 100 50 H I C CNN
F3 "" 100 100 50 H I C CNN
F4 "1" 400 450 50 H V C CNN "StripAnno"
DRAW
T 0 300 0 50 0 0 0 "Add in order found" Normal 0 R C
T 0 300 350 50 0 0 0 "First in thread" Normal 0 R C
T 0 250 -350 50 0 0 0 "Last in thread" Normal 0 R C
S -450 400 450 500 0 1 0 f
S 450 -450 -450 400 0 1 0 N
X 1 1 550 350 100 L 0 50 1 0 w C
X 2 2 550 250 100 L 0 50 1 0 w C
X 3 3 550 150 100 L 0 50 1 0 w C
X _ 4 550 0 100 L 0 50 1 0 w C
X -3 5 550 -150 100 L 0 50 1 0 w C
X -2 6 550 -250 100 L 0 50 1 0 w C
X -1 7 550 -350 100 L 0 50 1 0 w C
ENDDRAW
ENDDEF
#
# THREAD_FLAG
#
DEF THREAD_FLAG thread-flag. 0 0 N N 1 F N
F0 "thread-flag." 0 250 50 H V C CNN
F1 "THREAD_FLAG" 0 150 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
F4 "1" 100 50 50 H V C CNN "StripAnno"
DRAW
P 6 0 1 0 0 0 0 50 -40 75 0 100 40 75 0 50 N
X thread 1 0 0 0 U 50 50 0 0 B C
ENDDRAW
ENDDEF
#
# TIMEDELAY
#
DEF TIMEDELAY timedelay. 0 20 N Y 1 F N
F0 "timedelay." 0 350 50 H V C CNN
F1 "TIMEDELAY" 0 250 50 H V C CNN
F2 "" 0 150 50 H I C CNN
F3 "" 0 150 50 H I C CNN
F4 "+" 0 0 50 H I C CNN "LoadRT"
DRAW
S 250 200 -250 300 0 1 0 f
S -250 200 250 -200 1 1 0 N
X in 1 -350 150 100 R 50 50 1 1 I
X on-delay 2 -350 -50 100 R 50 50 1 1 I
X off-delay 3 -350 -150 100 R 50 50 1 1 I
X out 4 350 150 100 L 50 50 1 1 O
X elapsed 5 350 50 100 L 50 50 1 1 O
X _ 6 -350 50 100 R 50 50 1 1 W NC
ENDDRAW
ENDDEF
#
# TOGGLE
#
DEF TOGGLE toggle. 0 20 N Y 1 F N
F0 "toggle." 0 300 50 H V C CNN
F1 "TOGGLE" 0 200 50 H V C CNN
F2 "" 300 -50 50 H I C CNN
F3 "" 300 -50 50 H I C CNN
F4 "+" 0 0 50 H I C CNN "LoadRT"
DRAW
S 250 150 -200 250 0 1 0 f
S -200 150 250 -150 1 1 0 N
X in 1 -300 100 100 R 50 50 1 1 I
X out 2 350 100 100 L 50 50 1 1 O
X debounce 4 -250 -100 100 R 50 50 1 1 I I
X _ 5 -300 0 100 R 50 50 1 1 W NC
ENDDRAW
ENDDEF
#
# XOR2
#
DEF XOR2 xor2. 0 0 N N 1 F N
F0 "xor2." -50 200 50 H V C CNN
F1 "XOR2" 25 0 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
F4 "+" 0 0 50 H I C CNN "LoadRT"
DRAW
A -385 0 258 354 -354 1 1 10 N -175 150 -175 -150
A -360 0 258 354 -354 1 1 10 N -150 150 -150 -150
A -47 -52 204 150 837 1 1 10 f 150 0 -24 150
A -47 52 204 -150 -837 1 1 10 f 150 0 -24 -150
P 2 1 1 10 -150 -150 -25 -150 f
P 2 1 1 10 -150 150 -25 150 f
P 12 1 1 -1000 -25 150 -150 150 -150 150 -140 134 -119 89 -106 41 -103 -10 -109 -59 -125 -107 -150 -150 -150 -150 -25 -150 f
X in0 1 -350 100 228 R 50 50 1 1 I
X in1 2 -350 -100 228 R 50 50 1 1 I
X out 3 300 0 150 L 50 50 1 1 O
X _ 4 -250 0 150 R 50 50 1 1 W NC
ENDDRAW
ENDDEF
#
#End Library
@ednisley
Copy link
Author

More details on my blog at https://wp.me/poZKh-9TP

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment