Compare commits

..

No commits in common. "iptables-path" and "2.7" have entirely different histories.

5201 changed files with 388677 additions and 1057269 deletions

View file

@ -1,74 +0,0 @@
name: Build CI
on:
push:
pull_request:
release:
types: [published]
check_suite:
types: [rerequested]
jobs:
rip-and-test:
runs-on: ubuntu-18.04
steps:
- name: Dump GitHub context
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: echo "$GITHUB_CONTEXT"
- uses: actions/checkout@v2
with:
submodules: true
fetch-depth: 0
- run: git fetch --recurse-submodules=no https://github.com/linuxcnc/linuxcnc refs/tags/*:refs/tags/*
- name: Build RIP & test
run: |
./scripts/travis-install-build-deps.sh
cd src
./autogen.sh
./configure --with-realtime=uspace --disable-check-runtime-deps
make -O -j$((1+$(nproc))) default pycheck V=1
# Note that the package build covers html docs
../scripts/rip-environment runtests -p
htmldocs:
runs-on: ubuntu-18.04
steps:
- name: Dump GitHub context
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: echo "$GITHUB_CONTEXT"
- uses: actions/checkout@v2
with:
submodules: true
fetch-depth: 0
- run: git fetch --recurse-submodules=no https://github.com/linuxcnc/linuxcnc refs/tags/*:refs/tags/*
- name: Build HTML docmentation
run: |
./scripts/travis-install-build-deps.sh
cd src
./autogen.sh
./configure --with-realtime=uspace --disable-check-runtime-deps --enable-build-documentation=html
make -O -j$((1+$(nproc))) docs
# Note that the package build covers html docs
package:
runs-on: ubuntu-18.04
steps:
- name: Dump GitHub context
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: echo "$GITHUB_CONTEXT"
- uses: actions/checkout@v2
with:
submodules: true
fetch-depth: 0
- name: Build Debian package
run: |
set -x
git fetch --recurse-submodules=no https://github.com/linuxcnc/linuxcnc refs/tags/*:refs/tags/*
./scripts/travis-install-build-deps.sh
debuild -uc -us -I -i -j$(nproc)
sudo apt-get install ../*.deb
./scripts/runtests -p tests/
lintian --info --display-info --pedantic --display-experimental ../*.deb

17
.gitignore vendored
View file

@ -13,24 +13,24 @@ build-stamp
.tmp*
# Ignore generated html files,
/docs/src/*/*.html
# docs/html/.gitignore is for the html directory
# Except Gcode quick-ref cards (en,de,sp,fr) which are maintained by hand
!docs/html/gcode*.html
# Ignore all LyX files, we're done with them now.
*.lyx
debian/*.debhelper.log
rtlib/Module.symvers
share/*/*.desktop
share/menus/CNC.menu
share/desktop-directories/linuxcnc-cnc.directory
share/desktop-directories/linuxcnc-ref.directory
share/desktop-directories/linuxcnc-doc.directory
share/desktop-directories/cnc.directory
src/modules.order
docs/html/drivers
/configs/*/emc.nml
!/configs/common/emc.nml
/docs/src/source-highlight/local
lib/python/gremlin.py
lib/python/qt5_graphics.py
lib/python/touchy
configs/sim/gmoccapy/*.pref
configs/sim/gmoccapy/gmoccapy_plasma/*.pref
configs/sim/gmoccapy/gmoccapy-JA/*.pref
# Miscellaneous generated files (Rob)
cscope
cscope.*
@ -38,8 +38,5 @@ cscope.*
oprofile*
*.log
position.txt
# *.9
*.9
*.glade.h
# Ignore test results
*.result

6
.travis.yml Normal file
View file

@ -0,0 +1,6 @@
sudo: required
language: c++
before_install: ./scripts/travis-install-build-deps.sh
script: ./scripts/travis-build-test.sh
notifications:
email: false

491
COPYING
View file

@ -1,12 +1,30 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
****************************************************************
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Notice: Most of LinuxCNC is covered by the GNU General Public
License. Some portions are covered by the GNU Lesser
General Public License (mostly interface definitions).
Both licenses are included in their entirety below.
Much of LinuxCNC is derived from the Enhanced Machine Controller, a
work of Fred Proctor, Tom Kramer, Will Shackleford, and others.
That work was originally released into the public domain. It was
used as the basis of LinuxCNC, but received extensive modifications.
LinuxCNC is NOT public domain. Anyone wishing to use the public
domain code in a way that is not compatible with the (L)GPL must
locate the original the Enhanced Machine Controller code - they may
NOT use LinuxCNC.
******************************************************************
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
@ -15,7 +33,7 @@ software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
@ -55,8 +73,8 @@ patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
@ -110,7 +128,7 @@ above, provided that you also meet all of these conditions:
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
@ -168,7 +186,7 @@ access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
@ -225,7 +243,7 @@ impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
@ -255,7 +273,7 @@ make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
@ -277,9 +295,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
@ -303,16 +321,17 @@ the "copyright" line and a pointer to where the full notice is found.
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
@ -335,5 +354,437 @@ necessary. Here is a sample; alter the names:
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
******************************************************************************
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your freedom to
share and change it. By contrast, the GNU General Public Licenses are
intended to guarantee your freedom to share and change free software--to
make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some specially
designated software packages--typically libraries--of the Free Software
Foundation and other authors who decide to use it. You can use it too, but
we suggest you first think carefully about whether this license or the
ordinary General Public License is the better strategy to use in any
particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish); that you receive source code or can get it
if you want it; that you can change the software and use pieces of it
in new free programs; and that you are informed that you can do these
things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis or
for a fee, you must give the recipients all the rights that we gave you.
You must make sure that they, too, receive or can get the source code.
If you link other code with the library, you must provide complete object
files to the recipients, so that they can relink them with the library
after making changes to the library and recompiling it. And you must show
them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that there is
no warranty for the free library. Also, if the library is modified by
someone else and passed on, the recipients should know that what they
have is not the original version, so that the original author's reputation
will not be affected by problems that might be introduced by others.
Finally, software patents pose a constant threat to the existence of any
free program. We wish to make sure that a company cannot effectively
restrict the users of a free program by obtaining a restrictive license
from a patent holder. Therefore, we insist that any patent license
obtained for a version of the library must be consistent with the full
freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the ordinary
GNU General Public License. This license, the GNU Lesser General Public
License, applies to certain designated libraries, and is quite different
from the ordinary General Public License. We use this license for certain
libraries in order to permit linking those libraries into non-free programs.
When a program is linked with a library, whether statically or using a
shared library, the combination of the two is legally speaking a combined
work, a derivative of the original library. The ordinary General Public
License therefore permits such linking only if the entire combination fits
its criteria of freedom. The Lesser General Public License permits more lax
criteria for linking other code with the library.
We call this license the "Lesser" General Public License because it does
Less to protect the user's freedom than the ordinary General Public License.
It also provides other free software developers Less of an advantage over
competing non-free programs. These disadvantages are the reason we use the
ordinary General Public License for many libraries. However, the Lesser
license provides advantages in certain special circumstances.
For example, on rare occasions, there may be a special need to encourage
the widest possible use of a certain library, so that it becomes a de-facto
standard. To achieve this, non-free programs must be allowed to use the
library. A more frequent case is that a free library does the same job as
widely used non-free libraries. In this case, there is little to gain by
limiting the free library to free software only, so we use the Lesser
General Public License.
In other cases, permission to use a particular library in non-free programs
enables a greater number of people to use a large body of free software.
For example, permission to use the GNU C Library in non-free programs
enables many more people to use the whole GNU operating system, as well
as its variant, the GNU/Linux operating system.
Although the Lesser General Public License is Less protective of the users'
freedom, it does ensure that the user of a program that is linked with the
Library has the freedom and the wherewithal to run that program using a
modified version of the Library.
The precise terms and conditions for copying, distribution and modification
follow. Pay close attention to the difference between a "work based on the
library" and a "work that uses the library". The former contains code derived
from the library, whereas the latter must be combined with the library in
order to run.
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other program
which contains a notice placed by the copyright holder or other authorized
party saying it may be distributed under the terms of this Lesser General
Public License (also called "this License"). Each licensee is addressed as
"you".
A "library" means a collection of software functions and/or data prepared
so as to be conveniently linked with application programs (which use some
of those functions and data) to form executables.
The "Library", below, refers to any such software library or work which
has been distributed under these terms. A "work based on the Library"
means either the Library or any derivative work under copyright law:
that is to say, a work containing the Library or a portion of it, either
verbatim or with modifications and/or translated straightforwardly into
another language. (Hereinafter, translation is included without limitation
in the term "modification".)
"Source code" for a work means the preferred form of the work for making
modifications to it. For a library, complete source code means all the
source code for all modules it contains, plus any associated interface
definition files, plus the scripts used to control compilation and
installation of the library.
Activities other than copying, distribution and modification are not covered
by this License; they are outside its scope. The act of running a program
using the Library is not restricted, and output from such a program is
covered only if its contents constitute a work based on the Library
(independent of the use of the Library in a tool for writing it). Whether
that is true depends on what the Library does and what the program that
uses the Library does.
1. You may copy and distribute verbatim copies of the Library's complete
source code as you receive it, in any medium, provided that you conspicuously
and appropriately publish on each copy an appropriate copyright notice and
disclaimer of warranty; keep intact all the notices that refer to this
License and to the absence of any warranty; and distribute a copy of this
License along with the Library.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Library or any portion of it,
thus forming a work based on the Library, and copy and distribute such
modifications or work under the terms of Section 1 above, provided that
you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices stating
that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no charge
to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses the
facility, other than as an argument passed when the facility is invoked,
then you must make a good faith effort to ensure that, in the event an
application does not supply such function or table, the facility still
operates, and performs whatever part of its purpose remains meaningful.
(For example, a function in a library to compute square roots has a
purpose that is entirely well-defined independent of the application.
Therefore, Subsection 2d requires that any application-supplied function
or table used by this function must be optional: if the application does
not supply it, the square root function must still compute square roots.)
These requirements apply to the modified work as a whole. If identifiable
sections of that work are not derived from the Library, and can be reasonably
considered independent and separate works in themselves, then this License,
and its terms, do not apply to those sections when you distribute them as
separate works. But when you distribute the same sections as part of a whole
which is a work based on the Library, the distribution of the whole must be
on the terms of this License, whose permissions for other licensees extend
to the entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest your
rights to work written entirely by you; rather, the intent is to exercise
the right to control the distribution of derivative or collective works
based on the Library.
In addition, mere aggregation of another work not based on the Library with
the Library (or with a work based on the Library) on a volume of a storage
or distribution medium does not bring the other work under the scope of
this License.
3. You may opt to apply the terms of the ordinary GNU General Public License
instead of this License to a given copy of the Library. To do this, you must
alter all the notices that refer to this License, so that they refer to the
ordinary GNU General Public License, version 2, instead of to this License.
(If a newer version than version 2 of the ordinary GNU General Public License
has appeared, then you can specify that version instead if you wish.) Do not
make any other change in these notices.
Once this change is made in a given copy, it is irreversible for that copy,
so the ordinary GNU General Public License applies to all subsequent copies
and derivative works made from that copy.
This option is useful when you wish to copy part of the code of the Library
into a program that is not a library.
4. You may copy and distribute the Library (or a portion or derivative of
it, under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you accompany it with the complete
corresponding machine-readable source code, which must be distributed under
the terms of Sections 1 and 2 above on a medium customarily used for software
interchange.
If distribution of object code is made by offering access to copy from a
designated place, then offering equivalent access to copy the source code
from the same place satisfies the requirement to distribute the source
code, even though third parties are not compelled to copy the source
along with the object code.
5. A program that contains no derivative of any portion of the Library,
but is designed to work with the Library by being compiled or linked with
it, is called a "work that uses the Library". Such a work, in isolation,
is not a derivative work of the Library, and therefore falls outside the
scope of this License.
However, linking a "work that uses the Library" with the Library creates
an executable that is a derivative of the Library (because it contains
portions of the Library), rather than a "work that uses the library".
The executable is therefore covered by this License. Section 6 states
terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library.
The threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data structure
layouts and accessors, and small macros and small inline functions
(ten lines or less in length), then the use of the object file is
unrestricted, regardless of whether it is legally a derivative work.
(Executables containing this object code plus portions of the Library
will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6, whether
or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or link
a "work that uses the Library" with the Library to produce a work
containing portions of the Library, and distribute that work under
terms of your choice, provided that the terms permit modification of
the work for the customer's own use and reverse engineering for
debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered
by this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do
one of these things:
a) Accompany the work with the complete corresponding machine-readable
source code for the Library including whatever changes were used in the
work (which must be distributed under Sections 1 and 2 above); and, if
the work is an executable linked with the Library, with the complete
machine-readable "work that uses the Library", as object code and/or
source code, so that the user can modify the Library and then relink
to produce a modified executable containing the modified Library. (It
is understood that the user who changes the contents of definitions
files in the Library will not necessarily be able to recompile the
application to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the Library.
A suitable mechanism is one that (1) uses at run time a copy of the
library already present on the user's computer system, rather than
copying library functions into the executable, and (2) will operate
properly with a modified version of the library, if the user installs
one, as long as the modified version is interface-compatible with the
version that the work was made with.
c) Accompany the work with a written offer, valid for at least three
years, to give the same user the materials specified in Subsection 6a,
above, for a charge no more than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy from a
designated place, offer equivalent access to copy the above specified
materials from the same place.
e) Verify that the user has already received a copy of these materials or
that you have already sent this user a copy.
For an executable, the required form of the "work that uses the Library"
must include any data and utility programs needed for reproducing the
executable from it. However, as a special exception, the materials to be
distributed need not include anything that is normally distributed (in
either source or binary form) with the major components (compiler, kernel,
and so on) of the operating system on which the executable runs, unless
that component itself accompanies the executable.
It may happen that this requirement contradicts the license restrictions of
other proprietary libraries that do not normally accompany the operating
system. Such a contradiction means you cannot use both them and the Library
together in an executable that you distribute.
7. You may place library facilities that are a work based on the Library
side-by-side in a single library together with other library facilities
not covered by this License, and distribute such a combined library, provided
that the separate distribution of the work based on the Library and of the
other library facilities is otherwise permitted, and provided that you do
these two things:
a) Accompany the combined library with a copy of the same work based on the
Library, uncombined with any other library facilities. This must be
distributed under the terms of the Sections above.
b) Give prominent notice with the combined library of the fact that part
of it is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute the Library
except as expressly provided under this License. Any attempt otherwise to
copy, modify, sublicense, link with, or distribute the Library is void, and
will automatically terminate your rights under this License. However, parties
who have received copies, or rights, from you under this License will not have
their licenses terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not signed
it. However, nothing else grants you permission to modify or distribute
the Library or its derivative works. These actions are prohibited by law
if you do not accept this License. Therefore, by modifying or distributing
the Library (or any work based on the Library), you indicate your acceptance
of this License to do so, and all its terms and conditions for copying,
distributing or modifying the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the Library),
the recipient automatically receives a license from the original licensor to
copy, distribute, link with or modify the Library subject to these terms and
conditions. You may not impose any further restrictions on the recipients'
exercise of the rights granted herein. You are not responsible for enforcing
compliance by third parties with this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot distribute
so as to satisfy simultaneously your obligations under this License and
any other pertinent obligations, then as a consequence you may not distribute
the Library at all. For example, if a patent license would not permit
royalty-free redistribution of the Library by all those who receive
copies directly or indirectly through you, then the only way you could
satisfy both it and this License would be to refrain entirely from
distribution of the Library.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply, and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is implemented
by public license practices. Many people have made generous contributions
to the wide range of software distributed through that system in reliance
on consistent application of that system; it is up to the author/donor
to decide if he or she is willing to distribute software through any
other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in certain
countries either by patents or by copyrighted interfaces, the original
copyright holder who places the Library under this License may add an
explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new versions
of the Lesser General Public License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in detail
to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Library does not specify a license version
number, you may choose any version ever published by the Free Software
Foundation.
14. If you wish to incorporate parts of the Library into other free programs
whose distribution conditions are incompatible with these, write to the author
to ask for permission. For software which is copyrighted by the Free Software
Foundation, write to the Free Software Foundation; we sometimes make exceptions
for this. Our decision will be guided by the two goals of preserving the free
status of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE,
YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE
OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA
OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES
OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS

View file

@ -1,790 +0,0 @@
****************************************************************
Notice: Most of LinuxCNC is covered by the GNU General Public
License. Some portions are covered by the GNU Lesser
General Public License (mostly interface definitions).
Both licenses are included in their entirety below.
Much of LinuxCNC is derived from the Enhanced Machine Controller, a
work of Fred Proctor, Tom Kramer, Will Shackleford, and others.
That work was originally released into the public domain. It was
used as the basis of LinuxCNC, but received extensive modifications.
LinuxCNC is NOT public domain. Anyone wishing to use the public
domain code in a way that is not compatible with the (L)GPL must
locate the original the Enhanced Machine Controller code - they may
NOT use LinuxCNC.
******************************************************************
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
******************************************************************************
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your freedom to
share and change it. By contrast, the GNU General Public Licenses are
intended to guarantee your freedom to share and change free software--to
make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some specially
designated software packages--typically libraries--of the Free Software
Foundation and other authors who decide to use it. You can use it too, but
we suggest you first think carefully about whether this license or the
ordinary General Public License is the better strategy to use in any
particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish); that you receive source code or can get it
if you want it; that you can change the software and use pieces of it
in new free programs; and that you are informed that you can do these
things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis or
for a fee, you must give the recipients all the rights that we gave you.
You must make sure that they, too, receive or can get the source code.
If you link other code with the library, you must provide complete object
files to the recipients, so that they can relink them with the library
after making changes to the library and recompiling it. And you must show
them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that there is
no warranty for the free library. Also, if the library is modified by
someone else and passed on, the recipients should know that what they
have is not the original version, so that the original author's reputation
will not be affected by problems that might be introduced by others.
Finally, software patents pose a constant threat to the existence of any
free program. We wish to make sure that a company cannot effectively
restrict the users of a free program by obtaining a restrictive license
from a patent holder. Therefore, we insist that any patent license
obtained for a version of the library must be consistent with the full
freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the ordinary
GNU General Public License. This license, the GNU Lesser General Public
License, applies to certain designated libraries, and is quite different
from the ordinary General Public License. We use this license for certain
libraries in order to permit linking those libraries into non-free programs.
When a program is linked with a library, whether statically or using a
shared library, the combination of the two is legally speaking a combined
work, a derivative of the original library. The ordinary General Public
License therefore permits such linking only if the entire combination fits
its criteria of freedom. The Lesser General Public License permits more lax
criteria for linking other code with the library.
We call this license the "Lesser" General Public License because it does
Less to protect the user's freedom than the ordinary General Public License.
It also provides other free software developers Less of an advantage over
competing non-free programs. These disadvantages are the reason we use the
ordinary General Public License for many libraries. However, the Lesser
license provides advantages in certain special circumstances.
For example, on rare occasions, there may be a special need to encourage
the widest possible use of a certain library, so that it becomes a de-facto
standard. To achieve this, non-free programs must be allowed to use the
library. A more frequent case is that a free library does the same job as
widely used non-free libraries. In this case, there is little to gain by
limiting the free library to free software only, so we use the Lesser
General Public License.
In other cases, permission to use a particular library in non-free programs
enables a greater number of people to use a large body of free software.
For example, permission to use the GNU C Library in non-free programs
enables many more people to use the whole GNU operating system, as well
as its variant, the GNU/Linux operating system.
Although the Lesser General Public License is Less protective of the users'
freedom, it does ensure that the user of a program that is linked with the
Library has the freedom and the wherewithal to run that program using a
modified version of the Library.
The precise terms and conditions for copying, distribution and modification
follow. Pay close attention to the difference between a "work based on the
library" and a "work that uses the library". The former contains code derived
from the library, whereas the latter must be combined with the library in
order to run.
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other program
which contains a notice placed by the copyright holder or other authorized
party saying it may be distributed under the terms of this Lesser General
Public License (also called "this License"). Each licensee is addressed as
"you".
A "library" means a collection of software functions and/or data prepared
so as to be conveniently linked with application programs (which use some
of those functions and data) to form executables.
The "Library", below, refers to any such software library or work which
has been distributed under these terms. A "work based on the Library"
means either the Library or any derivative work under copyright law:
that is to say, a work containing the Library or a portion of it, either
verbatim or with modifications and/or translated straightforwardly into
another language. (Hereinafter, translation is included without limitation
in the term "modification".)
"Source code" for a work means the preferred form of the work for making
modifications to it. For a library, complete source code means all the
source code for all modules it contains, plus any associated interface
definition files, plus the scripts used to control compilation and
installation of the library.
Activities other than copying, distribution and modification are not covered
by this License; they are outside its scope. The act of running a program
using the Library is not restricted, and output from such a program is
covered only if its contents constitute a work based on the Library
(independent of the use of the Library in a tool for writing it). Whether
that is true depends on what the Library does and what the program that
uses the Library does.
1. You may copy and distribute verbatim copies of the Library's complete
source code as you receive it, in any medium, provided that you conspicuously
and appropriately publish on each copy an appropriate copyright notice and
disclaimer of warranty; keep intact all the notices that refer to this
License and to the absence of any warranty; and distribute a copy of this
License along with the Library.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Library or any portion of it,
thus forming a work based on the Library, and copy and distribute such
modifications or work under the terms of Section 1 above, provided that
you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices stating
that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no charge
to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses the
facility, other than as an argument passed when the facility is invoked,
then you must make a good faith effort to ensure that, in the event an
application does not supply such function or table, the facility still
operates, and performs whatever part of its purpose remains meaningful.
(For example, a function in a library to compute square roots has a
purpose that is entirely well-defined independent of the application.
Therefore, Subsection 2d requires that any application-supplied function
or table used by this function must be optional: if the application does
not supply it, the square root function must still compute square roots.)
These requirements apply to the modified work as a whole. If identifiable
sections of that work are not derived from the Library, and can be reasonably
considered independent and separate works in themselves, then this License,
and its terms, do not apply to those sections when you distribute them as
separate works. But when you distribute the same sections as part of a whole
which is a work based on the Library, the distribution of the whole must be
on the terms of this License, whose permissions for other licensees extend
to the entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest your
rights to work written entirely by you; rather, the intent is to exercise
the right to control the distribution of derivative or collective works
based on the Library.
In addition, mere aggregation of another work not based on the Library with
the Library (or with a work based on the Library) on a volume of a storage
or distribution medium does not bring the other work under the scope of
this License.
3. You may opt to apply the terms of the ordinary GNU General Public License
instead of this License to a given copy of the Library. To do this, you must
alter all the notices that refer to this License, so that they refer to the
ordinary GNU General Public License, version 2, instead of to this License.
(If a newer version than version 2 of the ordinary GNU General Public License
has appeared, then you can specify that version instead if you wish.) Do not
make any other change in these notices.
Once this change is made in a given copy, it is irreversible for that copy,
so the ordinary GNU General Public License applies to all subsequent copies
and derivative works made from that copy.
This option is useful when you wish to copy part of the code of the Library
into a program that is not a library.
4. You may copy and distribute the Library (or a portion or derivative of
it, under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you accompany it with the complete
corresponding machine-readable source code, which must be distributed under
the terms of Sections 1 and 2 above on a medium customarily used for software
interchange.
If distribution of object code is made by offering access to copy from a
designated place, then offering equivalent access to copy the source code
from the same place satisfies the requirement to distribute the source
code, even though third parties are not compelled to copy the source
along with the object code.
5. A program that contains no derivative of any portion of the Library,
but is designed to work with the Library by being compiled or linked with
it, is called a "work that uses the Library". Such a work, in isolation,
is not a derivative work of the Library, and therefore falls outside the
scope of this License.
However, linking a "work that uses the Library" with the Library creates
an executable that is a derivative of the Library (because it contains
portions of the Library), rather than a "work that uses the library".
The executable is therefore covered by this License. Section 6 states
terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library.
The threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data structure
layouts and accessors, and small macros and small inline functions
(ten lines or less in length), then the use of the object file is
unrestricted, regardless of whether it is legally a derivative work.
(Executables containing this object code plus portions of the Library
will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6, whether
or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or link
a "work that uses the Library" with the Library to produce a work
containing portions of the Library, and distribute that work under
terms of your choice, provided that the terms permit modification of
the work for the customer's own use and reverse engineering for
debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered
by this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do
one of these things:
a) Accompany the work with the complete corresponding machine-readable
source code for the Library including whatever changes were used in the
work (which must be distributed under Sections 1 and 2 above); and, if
the work is an executable linked with the Library, with the complete
machine-readable "work that uses the Library", as object code and/or
source code, so that the user can modify the Library and then relink
to produce a modified executable containing the modified Library. (It
is understood that the user who changes the contents of definitions
files in the Library will not necessarily be able to recompile the
application to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the Library.
A suitable mechanism is one that (1) uses at run time a copy of the
library already present on the user's computer system, rather than
copying library functions into the executable, and (2) will operate
properly with a modified version of the library, if the user installs
one, as long as the modified version is interface-compatible with the
version that the work was made with.
c) Accompany the work with a written offer, valid for at least three
years, to give the same user the materials specified in Subsection 6a,
above, for a charge no more than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy from a
designated place, offer equivalent access to copy the above specified
materials from the same place.
e) Verify that the user has already received a copy of these materials or
that you have already sent this user a copy.
For an executable, the required form of the "work that uses the Library"
must include any data and utility programs needed for reproducing the
executable from it. However, as a special exception, the materials to be
distributed need not include anything that is normally distributed (in
either source or binary form) with the major components (compiler, kernel,
and so on) of the operating system on which the executable runs, unless
that component itself accompanies the executable.
It may happen that this requirement contradicts the license restrictions of
other proprietary libraries that do not normally accompany the operating
system. Such a contradiction means you cannot use both them and the Library
together in an executable that you distribute.
7. You may place library facilities that are a work based on the Library
side-by-side in a single library together with other library facilities
not covered by this License, and distribute such a combined library, provided
that the separate distribution of the work based on the Library and of the
other library facilities is otherwise permitted, and provided that you do
these two things:
a) Accompany the combined library with a copy of the same work based on the
Library, uncombined with any other library facilities. This must be
distributed under the terms of the Sections above.
b) Give prominent notice with the combined library of the fact that part
of it is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute the Library
except as expressly provided under this License. Any attempt otherwise to
copy, modify, sublicense, link with, or distribute the Library is void, and
will automatically terminate your rights under this License. However, parties
who have received copies, or rights, from you under this License will not have
their licenses terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not signed
it. However, nothing else grants you permission to modify or distribute
the Library or its derivative works. These actions are prohibited by law
if you do not accept this License. Therefore, by modifying or distributing
the Library (or any work based on the Library), you indicate your acceptance
of this License to do so, and all its terms and conditions for copying,
distributing or modifying the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the Library),
the recipient automatically receives a license from the original licensor to
copy, distribute, link with or modify the Library subject to these terms and
conditions. You may not impose any further restrictions on the recipients'
exercise of the rights granted herein. You are not responsible for enforcing
compliance by third parties with this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot distribute
so as to satisfy simultaneously your obligations under this License and
any other pertinent obligations, then as a consequence you may not distribute
the Library at all. For example, if a patent license would not permit
royalty-free redistribution of the Library by all those who receive
copies directly or indirectly through you, then the only way you could
satisfy both it and this License would be to refrain entirely from
distribution of the Library.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply, and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is implemented
by public license practices. Many people have made generous contributions
to the wide range of software distributed through that system in reliance
on consistent application of that system; it is up to the author/donor
to decide if he or she is willing to distribute software through any
other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in certain
countries either by patents or by copyrighted interfaces, the original
copyright holder who places the Library under this License may add an
explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new versions
of the Lesser General Public License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in detail
to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Library does not specify a license version
number, you may choose any version ever published by the Free Software
Foundation.
14. If you wish to incorporate parts of the Library into other free programs
whose distribution conditions are incompatible with these, write to the author
to ask for permission. For software which is copyrighted by the Free Software
Foundation, write to the Free Software Foundation; we sometimes make exceptions
for this. Our decision will be guided by the two goals of preserving the free
status of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE,
YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE
OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA
OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES
OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS

View file

@ -1,33 +0,0 @@
# The issue tracker is not a support forum
The LinuxCNC issue tracker is to report bugs in the software.
If you have a question about how to use the software, use one of the other methods detailed on our community support page: http://linuxcnc.org/community/
(delete this section before submitting your bug report)
## Here are the steps I follow to reproduce the issue:
1.
2.
3.
## This is what I expected to happen:
## This is what happened instead:
## It worked properly before this:
(If the behavior changed after making a particular change in hardware or
software, describe the change you think is responsible. E.g., "after upgrading
from LinuxCNC 2.7.3 to 2.7.4")
## Information about my hardware and software:
* I am using this Linux distribution and version (often, shown by `lsb_release -a`):
* I am using this kernel version (shown by `uname -a`):
* I am running ...
* [ ] A binary version from linuxcnc.org (including buildbot.linuxcnc.org)
* [ ] A binary I built myself
* [ ] A binary version from some other source besides linuxcnc.org
* I am using this LinuxCNC version (shown in package manager or, for git versions, `scripts/get-version-from-git`):
* I am using this user interface (GUI) (e.g., AXIS, Touchy, gmoccapy, etc):
* I am using this interface hardware vendor and chipset (e.g., parallel port, ethernet port, FPGA card):

48
README Normal file
View file

@ -0,0 +1,48 @@
DISCLAIMER
----------
THE AUTHORS OF THIS SOFTWARE ACCEPT ABSOLUTELY NO LIABILITY FOR
ANY HARM OR LOSS RESULTING FROM ITS USE. IT IS _EXTREMELY_ UNWISE
TO RELY ON SOFTWARE ALONE FOR SAFETY. Any machinery capable of
harming persons must have provisions for completely removing power
from all motors, etc, before persons enter any danger area. All
machinery must be designed to comply with local and national safety
codes, and the authors of this software can not, and do not, take
any responsibility for such compliance.
This software is released under the GPLv2, with some parts under the LGPL.
See the file COPYING for more details.
The Build Process
-----------------
Refer to the file 'docs/INSTALL' for information about building and
running the software.
Quickstart
----------
From the top level directory, switch to the source directory:
cd src
In the source directory, build LinuxCNC:
[for rtai]
./autogen.sh
./configure
[or, for PREEMPT-rt or vanilla kernels:]
./autogen.sh
./configure --with-realtime=uspace
make clean
make
sudo make setuid
to run the software go back to the top level directory, and issue:
. scripts/rip-environment
linuxcnc

View file

@ -1,30 +0,0 @@
# LinuxCNC
LinuxCNC controls CNC machines. It can drive milling machines, lathes, 3D printers, laser cutters, plasma cutters, robot arms, hexapods, and more. https://linuxcnc.org/
# DISCLAIMER
**THE AUTHORS OF THIS SOFTWARE ACCEPT ABSOLUTELY NO LIABILITY FOR ANY
HARM OR LOSS RESULTING FROM ITS USE.**
**IT IS _EXTREMELY_ UNWISE TO RELY ON SOFTWARE ALONE FOR SAFETY.**
**Any machinery capable of harming persons must have provisions for
completely removing power from all motors, etc, before persons enter
any danger area.**
**All machinery must be designed to comply with local and national
safety codes, and the authors of this software can not, and do not,
take any responsibility for such compliance.**
This software is released under the GPLv2, with some parts under the LGPL.
See the file COPYING for more details.
# The Build Process
Refer to the file 'docs/src/code/building-linuxcnc.txt' for information
about building and running the software, or look here:
http://linuxcnc.org/docs/devel/html/code/building-linuxcnc.html

View file

@ -1,25 +0,0 @@
# LinuxCNC
LinuxCNC controla máquinas CNC. Puede manejar fresadoras, tornos, impresoras 3D, cortadores láser, cortadores de plasma, brazos de robot, hexápodos y otras. http://linuxcnc.org/
# DESCARGO DE RESPONSABILIDAD
** LOS AUTORES DE ESTE SOFTWARE NO ACEPTAN ABSOLUTAMENTE NINGUNA RESPONSABILIDAD POR NINGÚN DAÑO O PÉRDIDA RESULTANTE DE SU USO. **
** ES _EXTREMADAMENTE_ IMPRUDENTE CONFIAR LA SEGURIDAD SOLO AL SOFTWARE. **
** Cualquier maquinaria capaz de dañar a las personas debe tener prevista la desconexion completa de energía de todos los motores, etc., antes de que las personas entren en cualquier área peligrosa.
** Toda la maquinaria debe estar diseñada para cumplir con las normas y códigos de seguridad locales y nacionales, y los autores de este software no pueden, y no lo hacen, asumir cualquier responsabilidad derivada de dicho cumplimiento. **
Este software se lanza bajo licencia GPLv2, con algunas partes bajo LGPL. Vea el archivo COPYING para más detalles.
La traduccion al español de este software queda adherida a este descargo y a las licencias GPLv2 y partes LGPL.
# El proceso de construcción
Consulte el archivo 'docs/src/code/building-linuxcnc.txt' para obtener información sobre cómo construir y ejecutar el software, o vea:
http://linuxcnc.org/docs/devel/html/code/building-linuxcnc.html

7
TODO
View file

@ -1,10 +1,3 @@
TODO for the joints_axes branch
* clean up joints/axes throughout the whole code (lots of parts already done)
* define a unified jogging way (both for joints and axes)
* implement joint-limits for carthesian moves (requires simulating the speed in userspace)
* update configs
(and many other probably..)
TODO sort out axis/joints issues:
* limits need to be imposed on joints (tricky with kins)

View file

@ -1 +1 @@
2.9.0~pre0
2.7.14

894
app-defaults/XEmc Normal file
View file

@ -0,0 +1,894 @@
*borderColor: blue
*font: -adobe-helvetica-bold-r-normal--12-*-*-*-*-*-*-1
*translations: #augment\
<Message>WM_PROTOCOLS:topLevelProtocols()
*topForm.background: blue
*topForm.defaultDistance: 0
! with no modifiers, e.g., Shift<KeyPress>a, means any occurrence
! of key gets through. With modifier, only that modification does
! see files in /usr/lib/X11/app-defaults/ for examples, and run
! 'xev' and see the output for key names
*topForm.translations: #augment\
<Key>Escape: keyAction() \n\
<Key>F1: keyAction() \n\
<Key>F2: keyAction() \n\
<Key>F3: keyAction() \n\
<Key>F4: keyAction() \n\
<Key>F5: keyAction() \n\
<Key>F6: keyAction() \n\
<Key>F7: keyAction() \n\
<Key>F8: keyAction() \n\
<Key>F9: keyAction() \n\
<Key>F10: keyAction() \n\
<KeyPress>F11: keyAction() \n\
<KeyRelease>F11: keyAction() \n\
<KeyPress>F12: keyAction() \n\
<KeyRelease>F12: keyAction() \n\
<KeyPress>Prior: keyAction() \n\
<KeyRelease>Prior: keyAction() \n\
<KeyPress>Next: keyAction() \n\
<KeyRelease>Next: keyAction() \n\
<KeyPress>Up: keyAction() \n\
<KeyRelease>Up: keyAction() \n\
<KeyPress>Down: keyAction() \n\
<KeyRelease>Down: keyAction() \n\
<KeyPress>Right: keyAction() \n\
<KeyRelease>Right: keyAction() \n\
<KeyPress>Left: keyAction() \n\
<KeyRelease>Left: keyAction() \n\
<Key>0: keyAction() \n\
<Key>1: keyAction() \n\
<Key>2: keyAction() \n\
<Key>3: keyAction() \n\
<Key>4: keyAction() \n\
<Key>5: keyAction() \n\
<Key>6: keyAction() \n\
<Key>7: keyAction() \n\
<Key>8: keyAction() \n\
<Key>9: keyAction() \n\
<Key>x: keyAction() \n\
<Key>y: keyAction() \n\
<Key>z: keyAction() \n\
Alt<Key>t: keyAction() \n\
Alt<Key>x: keyAction() \n\
Alt<Key>y: keyAction() \n\
Alt<Key>z: keyAction() \n\
<Key>l: keyAction() \n\
<Key>o: keyAction() \n\
<Key>e: keyAction() \n\
<Key>r: keyAction() \n\
<Key>p: keyAction() \n\
<Key>s: keyAction() \n\
<Key>v: keyAction() \n\
<Key>a: keyAction() \n\
<Key>b: keyAction() \n\
Shift<Key>B: keyAction() \n\
<Key>i: keyAction() \n\
<Key>c: keyAction() \n\
<KeyPress>comma: keyAction() \n\
<KeyRelease>comma: keyAction() \n\
<KeyPress>period: keyAction() \n\
<KeyRelease>period: keyAction() \n\
<Key>Home: keyAction() \n\
<Key>End: keyAction() \n\
Alt<Key>s: keyAction() \n\
Alt<Key>p: keyAction() \n\
Ctrl<Key>p: keyAction() \n\
Alt<Key>f: keyAction() \n\
<Key>F1: keyAction() \n\
<Key>F2: keyAction() \n\
<Key>F3: keyAction() \n\
<Key>F4: keyAction() \n\
<Key>F5: keyAction() \n\
<Key>F6: keyAction() \n\
<Key>F7: keyAction() \n\
<Key>F8: keyAction() \n\
<Key>F9: keyAction() \n\
<Key>F10: keyAction() \n\
<KeyPress>F11: keyAction() \n\
<KeyRelease>F11: keyAction() \n\
<KeyPress>F12: keyAction() \n\
<KeyRelease>F12: keyAction()
*barMenuForm.background: blue
! *barMenuForm.borderColor: red
*barMenuForm.defaultDistance: 0
*menu*font: -adobe-helvetica-medium-r-normal--12-*-*-*-*-*-*-1
*fileMenu.label: File
*viewMenu.label: View
*settingsMenu.label: Settings
*helpMenu.label: Help
*fileOpenShell*title: Open Program
*fileOpenShell*translations:#override\
<Message>WM_PROTOCOLS:fileOpenShellProtocols() \n\
<Key>Return: fileOpenReturnAction() \n\
<Key>Tab: fileOpenTabAction() \n\
<Key>Escape: keyAction() \n\
<Key>F1: keyAction() \n\
<Key>F2: keyAction() \n\
<Key>F3: keyAction() \n\
<Key>F4: keyAction() \n\
<Key>F5: keyAction() \n\
<Key>F6: keyAction() \n\
<Key>F7: keyAction() \n\
<Key>F8: keyAction() \n\
<Key>F9: keyAction() \n\
<Key>F10: keyAction() \n\
<KeyPress>F11: keyAction() \n\
<KeyRelease>F11: keyAction() \n\
<KeyPress>F12: keyAction() \n\
<KeyRelease>F12: keyAction()
*fileOpenDialog*label: Program Name:
*fileOpenDialog*fileOpenDone*label: Open It
*fileOpenDialog*fileOpenCancel*label: Don't Open It
*fileEditShell.title: Edit Program
*fileEditDialog.label: Program Name:
*fileEditDialog*fileEditDone*label: Done
*fileEditDialog*fileEditCancel*label: Cancel
*fileEditShell*translations:#override\
<Message>WM_PROTOCOLS:fileEditShellProtocols() \n\
<Key>Return: fileEditReturnAction() \n\
<Key>Tab: fileEditTabAction() \n\
<Key>Escape: keyAction() \n\
<Key>F1: keyAction() \n\
<Key>F2: keyAction() \n\
<Key>F3: keyAction() \n\
<Key>F4: keyAction() \n\
<Key>F5: keyAction() \n\
<Key>F6: keyAction() \n\
<Key>F7: keyAction() \n\
<Key>F8: keyAction() \n\
<Key>F9: keyAction() \n\
<Key>F10: keyAction() \n\
<KeyPress>F11: keyAction() \n\
<KeyRelease>F11: keyAction() \n\
<KeyPress>F12: keyAction() \n\
<KeyRelease>F12: keyAction()
*fileQuitShell*title: Quit
*fileQuitDialog*label: Quit Xemc?
*fileQuitShell*translations:#override\
<Message>WM_PROTOCOLS:fileQuitShellProtocols() \n\
<Key>Return: fileQuitReturnAction() \n\
<Key>Tab: fileQuitTabAction() \n\
<Key>Escape: keyAction() \n\
<Key>F1: keyAction() \n\
<Key>F2: keyAction() \n\
<Key>F3: keyAction() \n\
<Key>F4: keyAction() \n\
<Key>F5: keyAction() \n\
<Key>F6: keyAction() \n\
<Key>F7: keyAction() \n\
<Key>F8: keyAction() \n\
<Key>F9: keyAction() \n\
<Key>F10: keyAction() \n\
<KeyPress>F11: keyAction() \n\
<KeyRelease>F11: keyAction() \n\
<KeyPress>F12: keyAction() \n\
<KeyRelease>F12: keyAction()
*fileQuitDialog*fileQuitDone*label: Quit
*fileQuitDialog*fileQuitCancel*label: Don't Quit
*fileEditorShell*title: File Editor
*fileEditorShell*translations:#override\
<Message>WM_PROTOCOLS:fileEditorShellProtocols() \n\
<Key>Escape: keyAction() \n\
<Key>F1: keyAction() \n\
<Key>F2: keyAction() \n\
<Key>F3: keyAction() \n\
<Key>F4: keyAction() \n\
<Key>F5: keyAction() \n\
<Key>F6: keyAction() \n\
<Key>F7: keyAction() \n\
<Key>F8: keyAction() \n\
<Key>F9: keyAction() \n\
<Key>F10: keyAction() \n\
<KeyPress>F11: keyAction() \n\
<KeyRelease>F11: keyAction() \n\
<KeyPress>F12: keyAction() \n\
<KeyRelease>F12: keyAction()
*fileEditorLabel*label: (none)
*fileEditorLabel*borderWidth: 0
*fileEditorText.height: 200
*fileEditorText.width: 600
*fileEditorText*font: -adobe-helvetica-medium-r-normal--12-*-*-*-*-*-*-1
*fileEditorDone*label: Save
*fileEditorCancel*label: Close
*fileEditorMark*label: Set Run Mark
*toolTableShell*title: Tool Table
*toolTableShell*translations:#override\
<Message>WM_PROTOCOLS:toolTableShellProtocols() \n\
<Key>Escape: keyAction() \n\
<Key>F1: keyAction() \n\
<Key>F2: keyAction() \n\
<Key>F3: keyAction() \n\
<Key>F4: keyAction() \n\
<Key>F5: keyAction() \n\
<Key>F6: keyAction() \n\
<Key>F7: keyAction() \n\
<Key>F8: keyAction() \n\
<Key>F9: keyAction() \n\
<Key>F10: keyAction() \n\
<KeyPress>F11: keyAction() \n\
<KeyRelease>F11: keyAction() \n\
<KeyPress>F12: keyAction() \n\
<KeyRelease>F12: keyAction()
*toolTableLabel*label: (none)
*toolTableLabel*borderWidth: 0
*toolTableText.height: 200
*toolTableText.width: 600
*toolTableText*font: -adobe-helvetica-medium-r-normal--12-*-*-*-*-*-*-1
*toolTableDone*label: Save and Load Them
*toolTableCancel*label: Don't Save and Load Them
*varFileShell*title: Variables
*varFileShell*translations:#override\
<Message>WM_PROTOCOLS:varFileShellProtocols() \n\
<Key>Escape: keyAction() \n\
<Key>F1: keyAction() \n\
<Key>F2: keyAction() \n\
<Key>F3: keyAction() \n\
<Key>F4: keyAction() \n\
<Key>F5: keyAction() \n\
<Key>F6: keyAction() \n\
<Key>F7: keyAction() \n\
<Key>F8: keyAction() \n\
<Key>F9: keyAction() \n\
<Key>F10: keyAction() \n\
<KeyPress>F11: keyAction() \n\
<KeyRelease>F11: keyAction() \n\
<KeyPress>F12: keyAction() \n\
<KeyRelease>F12: keyAction()
*varFileLabel*label: (none)
*varFileLabel*borderWidth: 0
*varFileText.height: 200
*varFileText.width: 600
*varFileText*font: -adobe-helvetica-medium-r-normal--12-*-*-*-*-*-*-1
*varFileDone*label: Save and Load Them
*varFileCancel*label: Don't Save and Load Them
*diagnosticsShell*title: Diagnostics
*diagnosticsLabel*label: Axis ? Diagnostics
*diagnosticsShell*translations:#override\
<Message>WM_PROTOCOLS:diagnosticsShellProtocols() \n\
<Key>Return: diagnosticsReturnAction() \n\
<Key>Escape: keyAction() \n\
<Key>F1: keyAction() \n\
<Key>F2: keyAction() \n\
<Key>F3: keyAction() \n\
<Key>F4: keyAction() \n\
<Key>F5: keyAction() \n\
<Key>F6: keyAction() \n\
<Key>F7: keyAction() \n\
<Key>F8: keyAction() \n\
<Key>F9: keyAction() \n\
<Key>F10: keyAction() \n\
<KeyPress>F11: keyAction() \n\
<KeyRelease>F11: keyAction() \n\
<KeyPress>F12: keyAction() \n\
<KeyRelease>F12: keyAction()
*diagnosticsTaskHBLabel*label: Task Heartbeat:
*diagnosticsTaskHBLabel*width: 150
*diagnosticsTaskHBLabel*justify: left
*diagnosticsTaskHB*width: 150
*diagnosticsTaskHB*justify: left
*diagnosticsIoHBLabel*label: IO Heartbeat:
*diagnosticsIoHBLabel*width: 150
*diagnosticsIoHBLabel*justify: left
*diagnosticsIoHB*width: 150
*diagnosticsIoHB*justify: left
*diagnosticsMotionHBLabel*label: Motion Heartbeat:
*diagnosticsMotionHBLabel*width: 150
*diagnosticsMotionHBLabel*justify: left
*diagnosticsMotionHB*width: 150
*diagnosticsMotionHB*justify: left
*diagnosticsFerrorLabel*label: Max Following Error:
*diagnosticsFerrorLabel*width: 150
*diagnosticsFerrorLabel*justify: left
*diagnosticsFerror*width: 80
*diagnosticsDone*label: Done
*calibShell*title: Calibration
*calibShell*translations:#override\
<Message>WM_PROTOCOLS:calibShellProtocols() \n\
<Key>Return: calibReturnAction() \n\
<Key>Tab: calibTabAction() \n\
<Key>Escape: keyAction() \n\
<Key>F1: keyAction() \n\
<Key>F2: keyAction() \n\
<Key>F3: keyAction() \n\
<Key>F4: keyAction() \n\
<Key>F5: keyAction() \n\
<Key>F6: keyAction() \n\
<Key>F7: keyAction() \n\
<Key>F8: keyAction() \n\
<Key>F9: keyAction() \n\
<Key>F10: keyAction() \n\
<KeyPress>F11: keyAction() \n\
<KeyRelease>F11: keyAction() \n\
<KeyPress>F12: keyAction() \n\
<KeyRelease>F12: keyAction()
*calibCycleTimeLabel*label: Cycle Time:
*calibCycleTimeLabel*width: 120
*calibCycleTimeLabel*justify: left
*calibCycleTime*width: 80
*calibPGainLabel*label: P Gain:
*calibPGainLabel*width: 120
*calibPGainLabel*justify: left
*calibPGain*width: 80
*calibIGainLabel*label: I Gain:
*calibIGainLabel*width: 120
*calibIGainLabel*justify: left
*calibIGain*width: 80
*calibDGainLabel*label: D Gain:
*calibDGainLabel*width: 120
*calibDGainLabel*justify: left
*calibDGain*width: 80
*calibFF0GainLabel*label: FF0 Gain:
*calibFF0GainLabel*width: 120
*calibFF0GainLabel*justify: left
*calibFF0Gain*width: 80
*calibFF1GainLabel*label: FF1 Gain:
*calibFF1GainLabel*width: 120
*calibFF1GainLabel*justify: left
*calibFF1Gain*width: 80
*calibFF2GainLabel*label: FF2 Gain:
*calibFF2GainLabel*width: 120
*calibFF2GainLabel*justify: left
*calibFF2Gain*width: 80
*calibBacklashLabel*label: Backlash:
*calibBacklashLabel*width: 120
*calibBacklashLabel*justify: left
*calibBacklash*width: 80
*calibBiasLabel*label: Bias:
*calibBiasLabel*width: 120
*calibBiasLabel*justify: left
*calibBias*width: 80
*calibMaxErrorLabel*label: Max Cum Error:
*calibMaxErrorLabel*width: 120
*calibMaxErrorLabel*justify: left
*calibMaxError*width: 80
*calibOutputScaleLabel*label: Output Scale:
*calibOutputScaleLabel*width: 120
*calibOutputScaleLabel*justify: left
*calibOutputScale*width: 80
*calibOutputOffsetLabel*label: Output Offset:
*calibOutputOffsetLabel*width: 120
*calibOutputOffsetLabel*justify: left
*calibOutputOffset*width: 80
*calibFerrorLabel*label: Following Error:
*calibFerrorLabel*width: 120
*calibFerrorLabel*justify: left
*calibFerror*width: 80
*calibDone*label: Done
*calibCancel*label: Cancel
*loggingShell*title: Logging
*loggingShell*translations:#override\
<Message>WM_PROTOCOLS:loggingShellProtocols() \n\
<Key>Return: loggingReturnAction() \n\
<Key>Tab: loggingTabAction() \n\
<Key>Escape: keyAction() \n\
<Key>F1: keyAction() \n\
<Key>F2: keyAction() \n\
<Key>F3: keyAction() \n\
<Key>F4: keyAction() \n\
<Key>F5: keyAction() \n\
<Key>F6: keyAction() \n\
<Key>F7: keyAction() \n\
<Key>F8: keyAction() \n\
<Key>F9: keyAction() \n\
<Key>F10: keyAction() \n\
<KeyPress>F11: keyAction() \n\
<KeyRelease>F11: keyAction() \n\
<KeyPress>F12: keyAction() \n\
<KeyRelease>F12: keyAction()
*loggingLabel*label: Logging
*loggingFileLabel*label: File:
*loggingFileLabel.width: 50
*loggingFile.width: 100
*loggingFileLabel*justify: left
*loggingTypeLabel*label: Type:
*loggingTypeLabel.width: 50
*loggingTypeMenu.width: 100
*loggingTypeLabel*justify: left
*loggingSizeLabel*label: Size:
*loggingSizeLabel.width: 50
*loggingSize.width: 100
*loggingSizeLabel*justify: left
*loggingSkipLabel*label: Skip:
*loggingSkipLabel.width: 50
*loggingSkip.width: 100
*loggingSkipLabel*justify: left
*loggingStart*label: Start
*loggingStop*label: Stop
*loggingSave*label: Save
*loggingPlot*label: Plot
*loggingDone*label: Done
*loggingCancel*label: Cancel
*helpXemcShell*title: Xemc Help
*helpXemcShell*translations:#override\
<Message>WM_PROTOCOLS:helpXemcProtocols() \n\
<Key>Return: helpXemcReturnAction() \n\
<Key>Escape: keyAction() \n\
<Key>F1: keyAction() \n\
<Key>F2: keyAction() \n\
<Key>F3: keyAction() \n\
<Key>F4: keyAction() \n\
<Key>F5: keyAction() \n\
<Key>F6: keyAction() \n\
<Key>F7: keyAction() \n\
<Key>F8: keyAction() \n\
<Key>F9: keyAction() \n\
<Key>F10: keyAction() \n\
<KeyPress>F11: keyAction() \n\
<KeyRelease>F11: keyAction() \n\
<KeyPress>F12: keyAction() \n\
<KeyRelease>F12: keyAction()
*helpXemcLabel*label: Xemc Help
*helpXemcLabel*borderWidth: 0
*helpXemcText.height: 200
*helpXemcText.width: 600
*helpXemcText*font: -adobe-helvetica-medium-r-normal--12-*-*-*-*-*-*-1
*helpXemcDone*label: Done
*helpAboutShell*title: About XEMC
*helpAboutShell*translations:#override\
<Message>WM_PROTOCOLS:helpAboutProtocols() \n\
<Key>Return: helpAboutReturnAction() \n\
<Key>Escape: keyAction() \n\
<Key>F1: keyAction() \n\
<Key>F2: keyAction() \n\
<Key>F3: keyAction() \n\
<Key>F4: keyAction() \n\
<Key>F5: keyAction() \n\
<Key>F6: keyAction() \n\
<Key>F7: keyAction() \n\
<Key>F8: keyAction() \n\
<Key>F9: keyAction() \n\
<Key>F10: keyAction() \n\
<KeyPress>F11: keyAction() \n\
<KeyRelease>F11: keyAction() \n\
<KeyPress>F12: keyAction() \n\
<KeyRelease>F12: keyAction()
*helpAboutDialog*label: XEMC\n\
Public Domain (1999)\n\
National Institute of\n\
Standards and Technology
*helpAboutDialog*helpAboutDone*label: Done
*errorShell*title: EMC
*errorShell*translations:#override\
<Message>WM_PROTOCOLS:errorShellProtocols() \n\
<Key>Return: errorReturnAction() \n\
<Key>Escape: keyAction() \n\
<Key>F1: keyAction() \n\
<Key>F2: keyAction() \n\
<Key>F3: keyAction() \n\
<Key>F4: keyAction() \n\
<Key>F5: keyAction() \n\
<Key>F6: keyAction() \n\
<Key>F7: keyAction() \n\
<Key>F8: keyAction() \n\
<Key>F9: keyAction() \n\
<Key>F10: keyAction() \n\
<KeyPress>F11: keyAction() \n\
<KeyRelease>F11: keyAction() \n\
<KeyPress>F12: keyAction() \n\
<KeyRelease>F12: keyAction()
*errorDialog*errorDone*label: OK
*commandMenuForm.background: blue
! *commandMenuForm.borderColor: red
*commandMenuForm.defaultDistance: 0
! dynamically labeled labels need a width
*stateMenu.width: 120
! *modeMenu.width is made the same
*mistMenu.width: 120
! floodMenu.width is made the same
*spindleDecLabel.label: <
*spindleDecLabel.width: 20
*spindleMenu.width: 120
*spindleIncLabel.label: >
*spindleIncLabel.width: 20
! *brakeMenu.width is made the total
*abortCommand.label: ABORT
! *abortCommand.width is calculated
! *abortCommand.height is calculated
*limCommand.label: Limit Override
*toolNumberForm.background: blue
! *toolNumberForm.borderColor: red
*toolNumberForm.defaultDistance: 0
*toolNumberFormTitle.label: Tool:
*toolNumberFormTitle.justify: left
*toolNumberFormTitle.foreground: white
*toolNumberFormTitle.background: blue
*toolNumberFormTitle.width: 80
*toolNumberFormName.label: (none)
*toolNumberFormName.justify: left
*toolNumberFormName.foreground: white
*toolNumberFormName.background: blue
*toolNumberFormName.width: 100
! *toolNumberFormName.borderColor: white
*toolOffsetForm.background: blue
! *toolOffsetForm.borderColor: red
*toolOffsetForm.defaultDistance: 0
*toolOffsetForm.translations:#augment\
<Btn3Up>: toolSetOffsetUpAction()
*toolOffsetFormTitle.label: Offset:
*toolOffsetFormTitle.justify: left
*toolOffsetFormTitle.foreground: white
*toolOffsetFormTitle.background: blue
*toolOffsetFormTitle.width: 80
*toolOffsetFormName.label: (none)
*toolOffsetFormName.justify: left
*toolOffsetFormName.foreground: white
*toolOffsetFormName.background: blue
*toolOffsetFormName.width: 100
! *toolOffsetFormName.borderColor: white
*toolSetOffsetShell*title: Set Tool Offset
*toolSetOffsetToolLabel*label: Tool:
*toolSetOffsetLengthLabel*label: Length:
*toolSetOffsetDiameterLabel*label: Diameter:
*toolSetOffsetDone*label: Done
*toolSetOffsetCancel*label: Cancel
*toolSetOffsetShell*translations:#override\
<Message>WM_PROTOCOLS:toolSetOffsetShellProtocols() \n\
<Key>Return: toolSetOffsetReturnAction() \n\
<Key>Tab: toolSetOffsetTabAction() \n\
<Key>Escape: keyAction() \n\
<Key>F1: keyAction() \n\
<Key>F2: keyAction() \n\
<Key>F3: keyAction() \n\
<Key>F4: keyAction() \n\
<Key>F5: keyAction() \n\
<Key>F6: keyAction() \n\
<Key>F7: keyAction() \n\
<Key>F8: keyAction() \n\
<Key>F9: keyAction() \n\
<Key>F10: keyAction() \n\
<KeyPress>F11: keyAction() \n\
<KeyRelease>F11: keyAction() \n\
<KeyPress>F12: keyAction() \n\
<KeyRelease>F12: keyAction()
*positionTypeForm.background: blue
! *positionTypeForm.borderColor: red
*positionTypeForm.defaultDistance: 0
*positionTypeFormTitle.label: Position:
*positionTypeFormTitle.justify: left
*positionTypeFormTitle.foreground: white
*positionTypeFormTitle.background: blue
*positionTypeFormTitle.width: 130
*positionTypeFormName.label: (none)
*positionTypeFormName.justify: left
*positionTypeFormName.foreground: white
*positionTypeFormName.background: blue
*positionTypeFormName.width: 280
! *positionTypeFormName.borderColor: white
*workOffsetForm.background: blue
! *workOffsetForm.borderColor: red
*workOffsetForm.defaultDistance: 0
*workOffsetFormTitle.label: Work Offsets:
*workOffsetFormTitle.justify: left
*workOffsetFormTitle.foreground: white
*workOffsetFormTitle.background: blue
*workOffsetFormTitle.width: 130
*workOffsetFormName.label: (none)
*workOffsetFormName.justify: left
*workOffsetFormName.foreground: white
*workOffsetFormName.background: blue
*workOffsetFormName.width: 270
! *workOffsetFormName.borderColor: white
*posLabel0.width: 600
*posLabel0.font: -adobe-courier-bold-r-normal--64-*-*-*-*-*-*-1
! *posLabel0.foreground: white
*posLabel0.background: blue
*posLabel0.borderColor: white
! *posLabel1.width same as for X
! *posLabel1.font same as for X
! *posLabel1.foreground: white
*posLabel1.background: blue
*posLabel1.borderColor: white
! *posLabel2.width same as for X
! *posLabel2.font: same as for X
! *posLabel2.foreground: white
*posLabel2.background: blue
*posLabel2.borderColor: white
*posOffsetShell*title: Axis Offset
*posOffsetShell*translations:#override\
<Message>WM_PROTOCOLS:posOffsetShellProtocols() \n\
<Key>Return: posOffsetReturnAction()
*posOffsetDialog*label: Enter new axis value:
*jogIncrementForm.background: blue
*jogSpeedForm.background: blue
! *jogSpeedForm.borderColor: red
*jogSpeedForm.defaultDistance: 0
*jogSpeedTitleLabel.label: Axis Speed
*jogSpeedTitleLabel.foreground: white
*jogSpeedTitleLabel.background: blue
*jogSpeedDecLabel.label: <
*jogSpeedLabel.width: 40
*jogSpeedLabel.justify: center
*jogSpeedIncLabel.label: >
*jogSpeedShell*title: Jog Speed
*jogSpeedShell*translations:#override\
<Message>WM_PROTOCOLS:jogSpeedShellProtocols() \n\
<Key>Return: jogSpeedReturnAction()
*jogSpeedDialog*label: Enter jog speed:
*jogIncrementForm.background: blue
! *jogIncrementForm.borderColor: red
*jogIncrementForm.defaultDistance: 0
*jogIncrementTitleLabel.label: Increment
*jogIncrementTitleLabel.foreground: white
*jogIncrementTitleLabel.background: blue
*jogIncrementMenu.width: 100
*jogForm.background: blue
! *jogForm.borderColor: red
*jogForm.defaultDistance: 0
*jogTitleLabel.label: Axis Motion
*jogTitleLabel.foreground: white
*jogTitleLabel.background: blue
*jogMinusLabel.label: -
*homeCommand.label: home
*jogPlusLabel.label: +
*feedOverrideForm.background: blue
! *feedOverrideForm.borderColor: red
*feedOverrideForm.defaultDistance: 0
*feedOverrideTitleLabel.label: Feed Override
*feedOverrideTitleLabel.foreground: white
*feedOverrideTitleLabel.background: blue
*feedOverrideLabel.width: 40
*feedOverrideLabel.justify: center
*feedOverrideDecLabel.label: <
*feedOverrideIncLabel.label: >
*feedOverrideShell*title: Feed Override
*feedOverrideShell*translations:#override\
<Message>WM_PROTOCOLS:feedOverrideShellProtocols() \n\
<Key>Return: feedOverrideReturnAction()
*feedOverrideDialog*label: Enter feed %:
*loggingStatusForm.background: blue
! *loggingStatusForm.borderColor: red
*loggingStatusForm.defaultDistance: 0
*loggingStatusTitleLabel.label: Logging
*loggingStatusTitleLabel.foreground: white
*loggingStatusTitleLabel.background: blue
*loggingStatusOpenLabel.width: 60
*loggingStatusOpenLabel.justify: center
*loggingStatusStartedLabel.width: 80
*loggingStatusStartedLabel.justify: center
*loggingStatusPointsLabel.width: 40
*loggingStatusPointsLabel.justify: center
*spindleIncLabel.translations:#augment\
<Btn1Down>: downAction() \n\
<Btn1Up>: upAction()
*spindleDecLabel.translations:#augment\
<Btn1Down>: downAction() \n\
<Btn1Up>: upAction()
*posLabel0.translations:#augment\
<Btn1Down>: downAction() \n\
<Btn1Up>: upAction() \n\
<Btn3Up>: posOffsetUpAction() \n\
*posLabel1.translations:#augment\
<Btn1Down>: downAction() \n\
<Btn1Up>: upAction() \n\
<Btn3Up>: posOffsetUpAction()
*posLabel2.translations:#augment\
<Btn1Down>: downAction() \n\
<Btn1Up>: upAction() \n\
<Btn3Up>: posOffsetUpAction()
*jogSpeedLabel.translations:#augment\
<Btn1Down>: downAction()
*jogSpeedIncLabel.translations:#augment\
<Btn1Down>: downAction() \n\
<Btn1Up>: upAction()
*jogSpeedDecLabel.translations:#augment\
<Btn1Down>: downAction() \n\
<Btn1Up>: upAction()
*jogMinusLabel.translations:#augment\
<Btn1Down>: downAction() \n\
<Btn1Up>: upAction()
*jogPlusLabel.translations:#augment\
<Btn1Down>: downAction() \n\
<Btn1Up>: upAction()
*feedOverrideLabel.translations:#augment\
<Btn1Down>: downAction()
*feedOverrideIncLabel.translations:#augment\
<Btn1Down>: downAction() \n\
<Btn1Up>: upAction()
*feedOverrideDecLabel.translations:#augment\
<Btn1Down>: downAction() \n\
<Btn1Up>: upAction()
*mdiForm.background: blue
! *mdiForm.borderColor: red
*mdiForm.defaultDistance: 0
*mdiFormTitle.label: MDI:
! *mdiFormTitle.foreground: blue
*mdiFormTitle.background: white
! *mdiFormText*font: fixed
*mdiFormText*borderColor: white
*mdiFormText*foreground: white
*mdiFormText*background: blue
! *mdiFormText.height: 20
*mdiFormText.width: 400
*mdiFormText*translations:#override\
<Key>Return: mdiReturnAction() select-all() delete-selection() \n\
<Key>Escape: keyAction() \n\
<Key>End: keyAction() \n\
<Key>F1: keyAction() \n\
<Key>F2: keyAction() \n\
<Key>F3: keyAction() \n\
<Key>F4: keyAction() \n\
<Key>F5: keyAction() \n\
<Key>F6: keyAction() \n\
<Key>F7: keyAction() \n\
<Key>F8: keyAction() \n\
<Key>F9: keyAction() \n\
<Key>F10: keyAction() \n\
<KeyPress>F11: keyAction() \n\
<KeyRelease>F11: keyAction() \n\
<KeyPress>F12: keyAction() \n\
<KeyRelease>F12: keyAction() \n\
<KeyPress>F11: keyAction() \n\
<KeyRelease>F11: keyAction() \n\
<KeyPress>F12: keyAction() \n\
<KeyRelease>F12: keyAction()
*mdiCodesLabel*justify: left
*mdiCodesLabel*foreground: white
*mdiCodesLabel*background: blue
*mdiCodesLabel.width: 600
*programForm.background: blue
! *programForm.borderColor: red
*programForm.defaultDistance: 0
*programFormTitle.label: Program:
! *programFormTitle.foreground: blue
*programFormTitle.background: white
*programFormName.label: (none)
*programFormName.justify: left
*programFormName.foreground: white
*programFormName.background: blue
*programFormName.width: 300
*programFormStateTitle.label: Status:
! *programFormStateTitle.foreground: blue
*programFormStateTitle.background: white
*programFormState.label: (none)
*programFormState.justify: left
*programFormState.foreground: white
*programFormState.background: blue
*programFormState.width: 100
*programOpenCommand.label: Open...
*programRunCommand.label: Run
*programPauseCommand.label: Pause
*programResumeCommand.label: Resume
*programStepCommand.label: Step
*programVerifyCommand.label: Verify
*programText*font: fixed
*programText*borderColor: white
*programText*foreground: white
*programText*background: blue
*programText.height: 100
*programText.width: 600
*programText*translations: #override\
<Key>Escape: keyAction() \n\
<Key>F1: keyAction() \n\
<Key>F2: keyAction() \n\
<Key>F3: keyAction() \n\
<Key>F4: keyAction() \n\
<Key>F5: keyAction() \n\
<Key>F6: keyAction() \n\
<Key>F7: keyAction() \n\
<Key>F8: keyAction() \n\
<Key>F9: keyAction() \n\
<Key>F10: keyAction() \n\
<KeyPress>F11: keyAction() \n\
<KeyRelease>F11: keyAction() \n\
<KeyPress>F12: keyAction() \n\
<KeyRelease>F12: keyAction() \n\
<KeyPress>Prior: keyAction() \n\
<KeyRelease>Prior: keyAction() \n\
<KeyPress>Next: keyAction() \n\
<KeyRelease>Next: keyAction() \n\
<KeyPress>Up: keyAction() \n\
<KeyRelease>Up: keyAction() \n\
<KeyPress>Down: keyAction() \n\
<KeyRelease>Down: keyAction() \n\
<KeyPress>Right: keyAction() \n\
<KeyRelease>Right: keyAction() \n\
<KeyPress>Left: keyAction() \n\
<KeyRelease>Left: keyAction() \n\
<Key>0: keyAction() \n\
<Key>1: keyAction() \n\
<Key>2: keyAction() \n\
<Key>3: keyAction() \n\
<Key>4: keyAction() \n\
<Key>5: keyAction() \n\
<Key>6: keyAction() \n\
<Key>7: keyAction() \n\
<Key>8: keyAction() \n\
<Key>9: keyAction() \n\
<Key>x: keyAction() \n\
<Key>y: keyAction() \n\
<Key>z: keyAction() \n\
Alt<Key>t: keyAction() \n\
Alt<Key>x: keyAction() \n\
Alt<Key>y: keyAction() \n\
Alt<Key>z: keyAction() \n\
<Key>l: keyAction() \n\
<Key>o: keyAction() \n\
<Key>e: keyAction() \n\
<Key>r: keyAction() \n\
<Key>p: keyAction() \n\
<Key>s: keyAction() \n\
<Key>v: keyAction() \n\
<Key>a: keyAction() \n\
<Key>b: keyAction() \n\
Shift<Key>B: keyAction() \n\
<Key>i: keyAction() \n\
<Key>c: keyAction() \n\
<KeyPress>comma: keyAction() \n\
<KeyRelease>comma: keyAction() \n\
<KeyPress>period: keyAction() \n\
<KeyRelease>period: keyAction() \n\
<Key>Home: keyAction() \n\
<Key>End: keyAction()

2
configs/.gitignore vendored
View file

@ -11,5 +11,3 @@
position*.txt
!common/*.hal
*.ini.expanded
hallib
*_cmds.hal

View file

@ -1,11 +0,0 @@
info: crear archivo de información del sistema
Directorios:
gladevcp -- widgets de demostración
halrun ---- inicia halrun en xterm
latency --- aplicaciones para investigar latencia
parport --- pruebas de puerto paralelo
pyvcp ----- demostraciones
xhc-hbo4 -- prueba de colgante inalámbrico usb

View file

@ -26,7 +26,7 @@ For a named widget, use:
To retrieve a list of all widgets in the UI file, use:
wl = self.builder.get_objects()
This works regardless whether the UI is in libglade or GtkBuilder format.
This works regardless wether the UI is in libglade or GtkBuilder format.
persistence.py
==============

View file

@ -1,63 +0,0 @@
Nota sobre los cambios API de los manejadores de clase y persistence.py:
Handlers de clase:
=====================
El parámetro 'panel' se eliminó de get_handlers() ya que no es necesario.
En consecuencia, el handler del método __init__() no recibe este
parámetro:
class HandlerClass:
...
def __init__(self, halcomp,builder,useropts):
self.halcomp = halcomp
self.builder = builder
def get_handlers(halcomp,builder,useropts):
return [HandlerClass(halcomp,builder,useropts)]
Acceso a widgets en handlers de clases:
==========================================
Para un widget con nombre, use:
w = self.builder.get_object("widgetname")
Para recuperar una lista de todos los widgets en el archivo UI, use:
wl = self.builder.get_objects()
Esto funciona independientemente de si la interfaz de usuario está en formato libglade o GtkBuilder.
persistence.py
==============
El manejo del parámetro builder se ha simplificado. Se elimina
de los métodos save_state y restore_state, y se agrega en su lugar al método
IniFile.__init__(). Por lo tanto, utilicelo de la siguiente manera:
class HandlerClass:
...
def on_destroy(self,obj,data=None):
# note: save_state(<object to fetch attributes from>) only:
self.ini.save_state(self)
def __init__(self, halcomp,builder,useropts):
self.halcomp = halcomp
self.builder = builder
self.ini_filename = __name__ + '.ini'
self.defaults = { IniFile.vars: dict(),
IniFile.widgets : widget_defaults(select_widgets(self.builder.get_objects(), hal_only=False,output_only = True))
}
# notese parámetro extra self.builder
self.ini = IniFile(self.ini_filename, self.defaults, self.builder)
# nota: solo se pasa el objeto que obtiene el conjunto de atributos:
self.ini.restore_state(self)
Todos los ejemplos y plantillas se han adaptado en consecuencia.
Michael Haberler 19 de diciembre de 2010

View file

@ -1,16 +0,0 @@
Aplicaciones demo gladevcp:
Aplicaciones:
glade-manual
gladevcp-test
Directorios:
animated-backdrop
by-widget
class-callback
colored-label
complex
helloWorld
mdi-command-examples
simple-callback
templates

View file

@ -1,16 +0,0 @@
Este es un ejemplo de cómo configurar un fondo de mapa de bits para la ventana de
nivel superior gladevcp, y posicionamiento absoluto de los widgets HAL en ella.
Es posible que necesite 'apt-get install python-cairo'
------------------------------------------
Para ejecutar de forma independiente:
gladevcp -u cairodraw.py cairodraw.ui
-psha & mah

View file

@ -26,8 +26,8 @@ class HandlerClass:
x, y, w, h = widget.allocation
cr.scale(1.0 *w / self.width, 1.0*h/self.height)
cr.set_source_surface(self.img, 0, 0)
cr.paint()
cr.set_source_surface(self.img, 0, 0)
cr.paint()

View file

@ -1,6 +0,0 @@
by-widget
combobox
radiobutton
sourceview
spinbutton

View file

@ -1,17 +0,0 @@
ejemplos de combobox:
combobox
combobox_manual_list
Vea esto para aprender acerca de Glade y ComboBox: http://www.youtube.com/watch?v=Z5_F-rW2cL8
------------------------------------------
Para ejecutar de forma independiente:
$ gladevcp -u combobox.py combobox.ui
combobox_manual_list.* son archivos de ejemplo para construir listas desplegables sobre la marcha.
correr como:
$ gladevcp -u combobox_manual_list.py combobox_manual_list.ui
Michael Haberler 12/2010

View file

@ -1,9 +0,0 @@
Ejemplo gladevcp radiobutton
Tomado de http://old.nabble.com/glade-and-radio-buttons.-td28793060.html
------------------------------------------
Para correr independientemente:
$ gladevcp -u radio.py radio.ui
Michael Haberler 12/2010

View file

@ -1,9 +0,0 @@
Ejemplo para usar el widget sourceview
---------------------------------------
Cargando un archivo, y resaltando una línea
------------------------------------------
Para ejecutar de forma independiente:
$ gladevcp -u sourceview.py sourceview.ui

View file

@ -1,7 +0,0 @@
ejemplo de botón spin
------------------------------------------
Para ejecutar de forma independiente:
$ gladevcp -u spinbutton.py spinbutton.ui
Michael Haberler 06/2012

View file

@ -1,19 +0,0 @@
ejemplo con métodos de clase callback
-------------------------------------
Se muestra cómo utilizar los métodos de clases como devoluciones de llamada.
Nota:
Hay dos definiciones de clase en este ejemplo. Ambas están instanciadas. OtherClass, alrededor de la línea 84 durante
la importacion, y HandlerClass por la función get_handlers().
HandlerClass.__init__() muestra cómo definir un pin hal que no está asociado a ningún widget HAL.
Al pasar el builder se habilita la referencia a cualquier widget en el árbol (vea, por ejemplo, la línea 33).
Además, se muestra una devolución de llamada de temporizador lento (1 segundo) que actualiza 'value' del pin HAL.
Este pin esta vinculado al widget de barra horizontal hal_hbar a través de class_callback.hal.
------------------------------------------
Para ejecutar de forma independiente:
$ gladevcp -u class_callback.py -H class_callback.hal class_callback.ui

View file

@ -11,9 +11,9 @@ invisible - see the coloredlabel.ui file.
To help with this, the colorize() method tries to detect this
situation and give a warning if the widget is a GtkLabel and the
parent widget is not an GtkEventBox. It can be used to set the colors
of arbitrary widgets, not just GtkLabel.
of arbitray widgets, not just GtkLabel.
Also, this example shows how to set a custom text and color label
Also, this example shows how to set a custon text and color label
depending on the HAL pin's value.
------------------------------------------

View file

@ -1,22 +0,0 @@
Cómo colorear un widget HAL_Label dependiendo del valor del pin
-------------------------------------------------- ------------
Configurar el color de fondo de un widget GtkLabel (HAL_Label está
derivado de GtkLabel) es un poco complicado. Por razones de rendimiento
el widget GtkLabel no tiene objeto ventana propio, y solo los objetos ventana
pueden tener color de fondo. La solución es encerrar Labl en un contenedor
EventBox, que tiene una ventana pero invisible - ver el archivo coloredlabel.ui.
Para ayudar a esto, el método colorize() intenta detectar esta
situación y da una advertencia si el widget es un GtkLabel y
el widget principal no es un GtkEventBox. Se puede utilizar para configurar los colores
de widgets arbitrarios, no solo de GtkLabel.
Además, este ejemplo muestra cómo configurar un texto custom y una etiqueta de color
dependiendo del valor del pin HAL.
------------------------------------------
Para ejecutar de forma independiente:
$ gladevcp -u coloredlabel.py -H coloredlabel.hal coloredlabel.ui

View file

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.''''''
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA''''''
'''
gladevcp colored label example
Michael Haberler 2/2011
@ -46,7 +46,7 @@ class HandlerClass:
def colorize(self, w, state, color):
''' helper method: try to do the right thing when setting the color of a widget.
The GtkLabel, and hence HAL_Label widget doesn't take a color, so
The GtkLabel, and hence HAL_Label widget doesnt take a color, so
it needs an enclosing Eventbox which can be colorized.'''
if isinstance(w,gtk.Label):
parent = w.get_parent()

View file

@ -1,17 +0,0 @@
Ejemplo complex con widget y persistencia variable.
----------------------------------------------------
Se demuestra el uso del soporte gladevcp.util para persistencia,
y muestra cómo obtener una devolución de llamada cuando cambian los
pines hal o los widgets de entrada hal.
hal_togglebutton1 está vinculado a hal_led1 a través de complex.hal
------------------------------------------
Para ejecutar de forma independiente:
$ gladevcp -u complex.py -H complex.hal complex.ui
o para obtener gran cantidad de resultados de depuración sobre
que están haciendo gladevcp y complex.py:
$ gladevcp -d -d -u complex.py -U debug=3 -H complex.hal complex.ui

View file

@ -1,5 +1,5 @@
# a HAL table must be explicitly enabled from 'outside'
# a HAL table must be explicitely enabled from 'outside'
# by setting its hal pin to 1
# otherwise, all contained widgets are disabled ('greyed out')

View file

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.''''''
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA''''''
'''
gladevcp complex demo example
Michael Haberler 11/2010

View file

@ -1,20 +0,0 @@
Un ejemplo mínimo de gladevcp - tres widgets HAL
-----------------------------------------------
Para ejecutar de forma independiente:
$ gladevcp_demo hw.ui
Para conectar el pin HAL del botón al LED, ejecutar como:
$ gladevcp_demo -H hw.hal hw.ui
Para incrustar esta aplicación como una pestaña en Axis o Touchy, copie hw.ui y hw.hal a su directorio de configuración,
y edite su archivo ini Axis/Touchy de la siguiente manera:
[DISPLAY]
EMBED_TAB_NAME = HelloWorld
EMBED_TAB_COMMAND = gladevcp -H hw.hal -x {XID} hw.ui
Para editar la interfaz de usuario:
$ glade hw.ui

View file

@ -1,10 +0,0 @@
Ejemplo que demuestra una devolución de llamada simple definida por el usuario
------------------------------------------------------------------------------
callback.py define la función on_button_press() que está conectada al árbol de widgets como un handler de eventos.
Consulte la pestaña Signals de glade sobre cómo se hace referencia a hal_button1.
------------------------------------------
Para ejecutar de forma independiente:
$ gladevcp -u simplecallback.py simplecallback.ui

View file

@ -1,27 +0,0 @@
Estos son ejemplos de handler de clases de gladevcp para empezar con los suyos propios.
--------------------------------------------------------------------------------------
Para ejecutar de forma independiente:
$ gladevcp -u functionhandler.py button.ui
$ gladevcp -u classhandler.py button.ui
$ gladevcp -u classhandler_persistent.py -U debug=2 -U "print 'debug=%d' % debug" button.ui
NB: button.ui realmente no tiene un estado interesante de widget para restaurar.
dar un vistazo a classhandler_persistent.ini para obtener una
idea de cómo se guarda el estado persistente. Debería verse más o menos así:
# generated by gladevcp.util.create_default_ini() on Wed Dec 8 12:27:13 2010
[ini]
version = 1
signature = be44d45a0e07d57cfbe8915d668e8d3b399a4cdb
[vars]
abool = True
afloat = 1.67
anint = 42
astring = sometext
[widgets]
# última actualización realizada por gladevcp.util.save_state() el miércoles 8 de diciembre 12:31:20 2010
-Michael Haberler 12/2010

View file

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
'''
example gladevcp handler class to start your own
no persistence support

View file

@ -16,7 +16,7 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
'''
example gladevcp handler class with widget and attribute persistence support
'''

View file

@ -1,8 +0,0 @@
halrun:
Iniciar halrun en un terminal xterm
Primero ordene el comando 'help' para mostrar los comandos
Nota:
Linuxcnc no debe estar ejecutándose.
Se terminará cualquier otra instancia de halrun.

View file

@ -1,4 +1,2 @@
nodemocopy
.demo files in this dir will not be copied to user dir.
Los archivos .demo en este directorio no se copiaran al directorio de usuario.
.demo files in this dir will not be copied to user dir

View file

@ -1,9 +0,0 @@
info: crea un archivo con información sobre LinuxCNC y elementos importantes del sistema.
El archivo se crea en /tmp y es adecuado para su publicación como ayuda para diagnosticar problemas.
Nombre de archivo: /tmp/linuxcnc.info
El editor especificado por $VISUAL se utilizará para abrir el archivo.
Si $VISUAL no está establecido, se intentarán otros editores comunes.

View file

@ -1,15 +0,0 @@
Programas de evaluación de latencia
latency-test -- Prueba estándar para linuxcnc
latency-plot -- Plot de latencias para los hilos base y servo predeterminados
latency-histogram -- Histograma jitter para hilos base y servo predeterminados
latency-histogram-1 -- Histograma jitter para un hilo servo
Nota: Los programas latency-plot y latency-histogram se pueden ejecutar con más opciones desde una línea de comando de terminal.
Para ayuda sobre su uso:
latency-plot --help
latency-histogram --help

View file

@ -1,3 +1,2 @@
nodemocopy
.demo files in this dir will not be copied to user dir.
Los archivos .demo en este directorio no se copiaran al directorio de usuario.
.demo files in this dir will not be copied to user dir

View file

@ -1,4 +1,2 @@
nodemocopy
.demo files in this dir will not be copied to user dir.
Los archivos .demo en este directorio no se copiaran al directorio de usuario
.demo files in this dir will not be copied to user dir

View file

@ -1,19 +0,0 @@
Prueba de puerto paralelo usando pyvcp
parport_0x278 test port 0x278 < parallel port 1 (no típico)
parport_0x378 test port 0x378 < parallel port 0
Para encontrar la dirección del puerto paralelo, abra una terminal y escriba:
cat /proc/ioports | grep parport
normalmente sera parport0
0378-037a: parport0
Para averiguar la dirección de un puerto paralelo PCI:
lspci -v
Nota: Para el simulador, se puede mostrar un mensaje de 'acceso root requerido'.
No se recomienda usar root para ejecutar linuxcnc.

View file

@ -1,3 +1,2 @@
nodemocopy
.demo files in this dir will not be copied to user dir.
Los archivos .demo en este directorio no se copiaran al directorio de usuario.
.demo files in this dir will not be copied to user dir

View file

@ -1,245 +0,0 @@
<!-- Test panel for the parallel port cfg for out -->
<pyvcp>
<hbox>
<labelframe text="Salidas">
<font>("Helvetica",16)</font>
<hbox>
<relief>RIDGE</relief>
<bd>2</bd>
<button>
<halpin>"btn01"</halpin>
<text>"Pin 01"</text>
</button>
<led>
<halpin>"led-01"</halpin>
<size>25</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
<button>
<halpin>"btn02"</halpin>
<text>"Pin 02"</text>
</button>
<led>
<halpin>"led-02"</halpin>
<size>25</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
</hbox>
<hbox>
<relief>RIDGE</relief>
<bd>2</bd>
<button>
<halpin>"btn03"</halpin>
<text>"Pin 03"</text>
</button>
<led>
<halpin>"led-03"</halpin>
<size>25</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
<button>
<halpin>"btn04"</halpin>
<text>"Pin 04"</text>
</button>
<led>
<halpin>"led-04"</halpin>
<size>25</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
</hbox>
<hbox>
<relief>RIDGE</relief>
<bd>2</bd>
<button>
<halpin>"btn05"</halpin>
<text>"Pin 05"</text>
</button>
<led>
<halpin>"led-05"</halpin>
<size>25</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
<button>
<halpin>"btn06"</halpin>
<text>"Pin 06"</text>
</button>
<led>
<halpin>"led-06"</halpin>
<size>25</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
</hbox>
<hbox>
<relief>RIDGE</relief>
<bd>2</bd>
<button>
<halpin>"btn07"</halpin>
<text>"Pin 07"</text>
</button>
<led>
<halpin>"led-07"</halpin>
<size>25</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
<button>
<halpin>"btn08"</halpin>
<text>"Pin 08"</text>
</button>
<led>
<halpin>"led-08"</halpin>
<size>25</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
</hbox>
<hbox>
<relief>RIDGE</relief>
<bd>2</bd>
<button>
<halpin>"btn09"</halpin>
<text>"Pin 09"</text>
</button>
<led>
<halpin>"led-09"</halpin>
<size>25</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
<button>
<halpin>"btn14"</halpin>
<text>"Pin 14"</text>
</button>
<led>
<halpin>"led-14"</halpin>
<size>25</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
</hbox>
<hbox>
<relief>RIDGE</relief>
<bd>2</bd>
<button>
<halpin>"btn16"</halpin>
<text>"Pin 16"</text>
</button>
<led>
<halpin>"led-16"</halpin>
<size>25</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
<button>
<halpin>"btn17"</halpin>
<text>"Pin 17"</text>
</button>
<led>
<halpin>"led-17"</halpin>
<size>25</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
</hbox>
</labelframe>
<labelframe text="Entradas">
<font>("Helvetica",16)</font>
<hbox>
<relief>RIDGE</relief>
<bd>2</bd>
<label>
<text>"Pin 10"</text>
<font>("Helvetica",14)</font>
</label>
<led>
<halpin>"led-10"</halpin>
<size>25</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
</hbox>
<hbox>
<relief>RIDGE</relief>
<bd>2</bd>
<label>
<text>"Pin 11"</text>
<font>("Helvetica",14)</font>
</label>
<led>
<halpin>"led-11"</halpin>
<size>25</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
</hbox>
<hbox>
<relief>RIDGE</relief>
<bd>2</bd>
<label>
<text>"Pin 12"</text>
<font>("Helvetica",14)</font>
</label>
<led>
<halpin>"led-12"</halpin>
<size>25</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
</hbox>
<hbox>
<relief>RIDGE</relief>
<bd>2</bd>
<label>
<text>"Pin 13"</text>
<font>("Helvetica",14)</font>
</label>
<led>
<halpin>"led-13"</halpin>
<size>25</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
</hbox>
<hbox>
<relief>RIDGE</relief>
<bd>2</bd>
<label>
<text>"Pin 15"</text>
<font>("Helvetica",14)</font>
</label>
<led>
<halpin>"led-15"</halpin>
<size>25</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
</hbox>
</labelframe>
</hbox>
</pyvcp>

View file

@ -1,9 +0,0 @@
Demostración de algunos pyvcp_widgets
Notas:
El widget de barra cambia de color en ciertos rangos de valores.
El valor de las casillas de selección y los diales se puede cambiar utilizando señales HAL.
multilabel cambiará el texto dependiendo de la señal HAL.

View file

@ -1,467 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<pyvcp>
<labelframe text="Spinboxes enlazados a displays de escalas/numeros, muestran el uso de initval y param_pin">
<font>("Helvetica",10)</font>
<bd>3</bd>
<relief>SUNKEN</relief>
<hbox>
<!-- stack of 3 spinboxes -->
<vbox>
<hbox>
<spinbox>
<halpin>"spinbox0"</halpin>
<min_>-12</min_>
<max_>33</max_>
<initval>10</initval>
<resolution>0.1</resolution>
<format>"2.3f"</format>
<font>("Arial",16)</font>
<param_pin>1</param_pin>
</spinbox>
</hbox>
<hbox>
<spinbox>
<halpin>"spinbox1"</halpin>
<min_>-12</min_>
<max_>33</max_>
<initval>20</initval>
<resolution>0.1</resolution>
<format>"2.3f"</format>
<font>("Arial",16)</font>
<param_pin>1</param_pin>
</spinbox>
</hbox>
<hbox>
<spinbox>
<halpin>"spinbox2"</halpin>
<min_>-12</min_>
<max_>33</max_>
<initval>30</initval>
<resolution>0.1</resolution>
<format>"2.3f"</format>
<font>("Arial",16)</font>
<param_pin>1</param_pin>
</spinbox>
</hbox>
</vbox>
<!-- stack of 3 horizontal scales in same hbox -->
<vbox>
<hbox>
<scale>
<font>("Helvetica",16)</font>
<width>"30"</width>
<halpin>"scale0"</halpin>
<resolution>1</resolution>
<orient>HORIZONTAL</orient>
<initval>5</initval>
<min_>0</min_>
<max_>100</max_>
<param_pin>1</param_pin>
</scale>
</hbox>
<hbox>
<scale>
<font>("Helvetica",16)</font>
<width>"30"</width>
<halpin>"scale1"</halpin>
<resolution>1</resolution>
<orient>HORIZONTAL</orient>
<initval>15</initval>
<min_>0</min_>
<max_>100</max_>
<param_pin>1</param_pin>
</scale>
</hbox>
<hbox>
<scale>
<font>("Helvetica",16)</font>
<width>"30"</width>
<halpin>"scale2"</halpin>
<resolution>1</resolution>
<orient>HORIZONTAL</orient>
<initval>25</initval>
<min_>0</min_>
<max_>100</max_>
<param_pin>1</param_pin>
</scale>
</hbox>
</vbox>
<!-- stack of 3 number displays in same hbox -->
<vbox>
<hbox>
<number>
<halpin>"number0"</halpin>
<font>("Helvetica",16)</font>
<format>"+4.4f"</format>
</number>
</hbox>
<hbox>
<number>
<halpin>"number1"</halpin>
<font>("Helvetica",16)</font>
<format>"+4.4f"</format>
</number>
</hbox>
<hbox>
<number>
<halpin>"number2"</halpin>
<font>("Helvetica",16)</font>
<format>"+4.4f"</format>
</number>
</hbox>
</vbox>
</hbox>
</labelframe>
<!-- new hbox with 3 dials -->
<labelframe text="Diales enlazados a escalas, muestran el uso de initval y param_pin">
<font>("Helvetica",10)</font>
<bd>3</bd>
<relief>RAISED</relief>
<hbox>
<dial>
<size>150</size>
<cpr>100</cpr>
<min_>0</min_>
<max_>100</max_>
<text>"Dial-0"</text>
<initval>10</initval>
<resolution>0.01</resolution>
<halpin>"dial0"</halpin>
<dialcolor>"yellow"</dialcolor>
<edgecolor>"green"</edgecolor>
<dotcolor>"black"</dotcolor>
<param_pin>1</param_pin>
</dial>
<dial>
<size>150</size>
<cpr>100</cpr>
<min_>0</min_>
<max_>100</max_>
<text>"Dial-1"</text>
<initval>12</initval>
<resolution>0.1</resolution>
<halpin>"dial1"</halpin>
<dialcolor>"green"</dialcolor>
<edgecolor>"red"</edgecolor>
<dotcolor>"black"</dotcolor>
<param_pin>1</param_pin>
</dial>
<dial>
<size>150</size>
<cpr>100</cpr>
<min_>0</min_>
<max_>100</max_>
<text>"Dial-2"</text>
<initval>5</initval>
<resolution>1</resolution>
<halpin>"dial2"</halpin>
<dialcolor>"yellow"</dialcolor>
<edgecolor>"green"</edgecolor>
<dotcolor>"black"</dotcolor>
<param_pin>1</param_pin>
</dial>
</hbox>
<!-- new hbox with 3 scales, spaced to sit under dials -->
<hbox>
<scale>
<font>("Helvetica",16)</font>
<width>"25"</width>
<halpin>"scale3"</halpin>
<resolution>0.01</resolution>
<orient>VERTICAL</orient>
<initval>1</initval>
<min_>0</min_>
<max_>100</max_>
<param_pin>1</param_pin>
</scale>
<!-- label used as a spacer -->
<label>
<text>" "</text>
</label>
<scale>
<font>("Helvetica",16)</font>
<width>"25"</width>
<halpin>"scale4"</halpin>
<resolution>0.1</resolution>
<orient>VERTICAL</orient>
<initval>10</initval>
<min_>0</min_>
<max_>100</max_>
<param_pin>1</param_pin>
</scale>
<!-- label used as a spacer -->
<label>
<text>" "</text>
</label>
<scale>
<font>("Helvetica",16)</font>
<width>"25"</width>
<halpin>"scale5"</halpin>
<resolution>1</resolution>
<orient>VERTICAL</orient>
<initval>20</initval>
<min_>0</min_>
<max_>100</max_>
<param_pin>1</param_pin>
</scale>
</hbox>
</labelframe>
<!-- new hbox with 3 dials -->
<labelframe text="Botones Radio enlazados a multi_labels mostrando leyenda de selección">
<font>("Helvetica",10)</font>
<bd>3</bd>
<relief>FLAT</relief>
<hbox>
<hbox>
<vbox>
<radiobutton>
<choices>["uno","dos","tres"]</choices>
<halpin>"radio0"</halpin>
<initval>0</initval>
</radiobutton>
</vbox>
<vbox>
<radiobutton>
<choices>["cuatro","cinco","seis"]</choices>
<halpin>"radio1"</halpin>
<initval>1</initval>
</radiobutton>
</vbox>
</hbox>
<hbox>
<vbox>
<multilabel>
<legends>["Radio1-Seleccionado","Ahora Radio2-Seleccionado","Y ahora Radio3-Seleccionado"]</legends>
<font>("Helvetica", 10)</font>
<disable_pin>True</disable_pin>
<initval>0</initval>
</multilabel>
<multilabel>
<legends>["Radio4-Seleccionado","Ahora Radio5-Seleccionado","Y ahora Radio6-Seleccionado"]</legends>
<font>("Helvetica", 10)</font>
<disable_pin>True</disable_pin>
<initval>1</initval>
</multilabel>
</vbox>
</hbox>
</hbox>
</labelframe>
<labelframe text="Checkbuttons mostrando configuración initval / leds de operación y cambio de valor remoto">
<font>("Helvetica",10)</font>
<bd>3</bd>
<relief>GROOVE</relief>
<hbox>
<hbox>
<vbox>
<checkbutton>
<halpin>"checkbutton0"</halpin>
<text>"Boton 0"</text>
<initval>1</initval>
</checkbutton>
<checkbutton>
<halpin>"checkbutton1"</halpin>
<text>"Boton 1"</text>
<initval>0</initval>
</checkbutton>
<checkbutton>
<halpin>"checkbutton2"</halpin>
<text>"Boton 2"</text>
<initval>0</initval>
</checkbutton>
</vbox>
</hbox>
<hbox>
<vbox>
<checkbutton>
<halpin>"checkbutton3"</halpin>
<text>"Boton 3"</text>
<initval>0</initval>
</checkbutton>
<checkbutton>
<halpin>"checkbutton4"</halpin>
<text>"Boton 4"</text>
<initval>1</initval>
</checkbutton>
<checkbutton>
<halpin>"checkbutton5"</halpin>
<text>"Boton 5"</text>
<initval>0</initval>
</checkbutton>
</vbox>
</hbox>
<!-- hbox of labels used as a spacer -->
<hbox>
<vbox>
<label>
<text>" "</text>
</label>
<label>
<text>" "</text>
</label>
<label>
<text>" "</text>
</label>
</vbox>
</hbox>
<hbox>
<vbox>
<button>
<halpin>"toggle-button0"</halpin>
<text>"Cambiar Checkbox 0"</text>
</button>
<!-- label used as a spacer -->
<label>
<text>" "</text>
</label>
<button>
<halpin>"toggle-button1"</halpin>
<text>"Cambiar Checkbox 5"</text>
</button>
</vbox>
</hbox>
<!-- hbox of labels used as a spacer -->
<hbox>
<vbox>
<label>
<text>" "</text>
</label>
<label>
<text>" "</text>
</label>
<label>
<text>" "</text>
</label>
</vbox>
</hbox>
<hbox>
<vbox>
<led>
<halpin>"led0"</halpin>
<size>30</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
<led>
<halpin>"led1"</halpin>
<size>30</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
<led>
<halpin>"led2"</halpin>
<size>30</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
</vbox>
</hbox>
<hbox>
<vbox>
<led>
<halpin>"led3"</halpin>
<size>30</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
<led>
<halpin>"led4"</halpin>
<size>30</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
<led>
<halpin>"led5"</halpin>
<size>30</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
</vbox>
</hbox>
</hbox>
</labelframe>
<labelframe text="Barra con rangos de colores diferentes, activados por escala / etiquetas">
<font>("Helvetica",10)</font>
<bd>3</bd>
<relief>RIDGE</relief>
<hbox>
<hbox>
<bar>
<halpin>"my-bar"</halpin>
<min_>0</min_>
<max_>150</max_>
<bgcolor>"grey"</bgcolor>
<range1>(0,100,"green")</range1>
<range2>(101,129,"orange")</range2>
<range3>(130,150,"red")</range3>
<fillcolor>"green"</fillcolor>
</bar>
</hbox>
<hbox>
<scale>
<font>("Helvetica",16)</font>
<width>"25"</width>
<halpin>"my-hscale"</halpin>
<resolution>1</resolution>
<orient>HORIZONTAL</orient>
<initval>0</initval>
<min_>0</min_>
<max_>150</max_>
</scale>
</hbox>
<!-- hbox of labels used as a spacer -->
<hbox>
<vbox>
<label>
<text>" "</text>
</label>
<label>
<text>" "</text>
</label>
<label>
<text>" "</text>
</label>
</vbox>
</hbox>
<hbox>
<vbox>
<label>
<relief>FLAT</relief>
<text>"Soy una etiqueta sin borde"</text>
</label>
<label>
<bd>3</bd>
<relief>RAISED</relief>
<text>"Soy una etiqueta resaltada"</text>
</label>
<label>
<bd>3</bd>
<relief>SUNKEN</relief>
<text>"Soy una etiqueta en bajorelieve"</text>
</label>
</vbox>
</hbox>
</hbox>
</labelframe>
</pyvcp>

View file

@ -1,12 +0,0 @@
Pruebas independientes xhc-hb04
Usarlo para probar diseños de botones para un colgante xhc-hb04 inalámbrico USB.
xhc-hb04-layout1.demo - prueba con layout1 (16 botones)
xhc-hb04-layout2.demo - prueba con layout2 (18 botones)
xhc-hb04.demo: prueba sin diseño de botones predefinido
(Conecte un colgante xhc-hb04 y enciéndalo para usar estos programas)

View file

@ -1,3 +1,2 @@
nodemocopy
.demo files in this dir will not be copied to user dir.
Los archivos .demo en este directorio no se copiaran al directorio de usuario.
.demo files in this dir will not be copied to user dir

View file

@ -1,8 +0,0 @@
trastero.
Para cualquier cosa.
Colección de configuraciones que:
pueden ser obsoletas
pueden ser no compatibles
pueden ser útiles para estudio

View file

@ -1,8 +0,0 @@
Esta configuración es para una máquina de corte por plasma con control "paso a paso", junto con conexiones ClassicLadder a algunas de las IO de LinuxCNC.
Se basa en la configuración de muestra de classicladder, pero también incluye una bomba de carga y un sistema de control de altura de antorcha para los sistemas de Bob Cambells THC300 y CandCNC THC.
Los pinouts paso a paso son para tarjetas breakout/combo estándar provista por Bob Campbell.
Esta configuración está desactualizada y no se ejecutará sin actualización, ya que
utiliza freqgen, que se ha eliminado desde Linuxcnc 2.6.

View file

@ -69,7 +69,7 @@ net emc-enable-in iocontrol.0.emc-enable-in classicladder.0.out-00
# Spindle Signal, forward drives Torch ON
# Spindle reverse is not used (might be used for a Running Start later)
net turn_torch_on parport.1.pin-01-out
#net spindle-reverse spindle.0.reverse parport.0.pin-17-out
#net spindle-reverse motion.spindle-reverse parport.0.pin-17-out
#Create a limit switch signal for each axis
@ -80,14 +80,14 @@ net limit-reached-z parport.0.pin-13-in-not
net limit-reached-a parport.0.pin-15-in-not
#Connect all limit signals to relevant axes
net limit-reached-x joint.0.neg-lim-sw-in
net limit-reached-x joint.0.pos-lim-sw-in
net limit-reached-y joint.1.neg-lim-sw-in
net limit-reached-y joint.1.pos-lim-sw-in
net limit-reached-a joint.1.neg-lim-sw-in
net limit-reached-a joint.1.neg-lim-sw-in
net limit-reached-z joint.2.neg-lim-sw-in
net limit-reached-z joint.2.neg-lim-sw-in
net limit-reached-x axis.0.neg-lim-sw-in
net limit-reached-x axis.0.pos-lim-sw-in
net limit-reached-y axis.1.neg-lim-sw-in
net limit-reached-y axis.1.pos-lim-sw-in
net limit-reached-a axis.1.neg-lim-sw-in
net limit-reached-a axis.1.neg-lim-sw-in
net limit-reached-z axis.2.neg-lim-sw-in
net limit-reached-z axis.2.neg-lim-sw-in
########## Charge Pump #########
@ -214,7 +214,7 @@ net Zpos-cmd-muxed mux2.2.out
addf mux2.2 servo-thread
#Disconnect Machine/Manual Axis Z Control while ArcOK for safety and to eliminate jitter
net Zpos-instructed-cmd <= joint.2.motor-pos-cmd
net Zpos-instructed-cmd <= axis.2.motor-pos-cmd
net Zpos-instructed-cmd => mux2.3.in0
net Zpos-fb => mux2.3.in1
@ -252,7 +252,7 @@ net senseZFloatSwitch => classicladder.0.in-03
net moveZtoFloat classicladder.0.out-03
net moveZtoSafe classicladder.0.out-04
net senseArcOK classicladder.0.in-04
net spindle-forward classicladder.0.in-05 <= spindle.0.forward
net spindle-forward classicladder.0.in-05 <= motion.spindle-forward
net feed-hold classicladder.0.out-06
net turn_torch_on classicladder.0.out-05
net ui_mode_is_auto halui.mode.is-auto

View file

@ -1,61 +1,89 @@
# EMC controller parameters for generic controller. Make these what you need
# for your system.
# General note: Comments can either be preceded with a # or ; - either is
# acceptable, although # is in keeping with most linux config files.
# General section -------------------------------------------------------------
# General section -------------------------------------------------------------
[EMC]
# Version of this INI file
VERSION = 1.1
VERSION = $Revision$
# Name of machine, for use with display, etc.
MACHINE = LinuxCNC-DALLUR-ADVANCED
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
# DEBUG = 0x00000001
# DEBUG = 0x00000007
# DEBUG = 0x7FFFFFFF
DEBUG = 0
# Enable Adaptive Feedrate for THC
# Enable adaptive feed input, we use it for feedhold button and to
# prevent motion during inverse-homing of torch and for pierce delay
RS274NGC_STARTUP_CODE = M52 P1
# Sections for display options ------------------------------------------------
# Sections for display options ------------------------------------------------
[DISPLAY]
# Name of display program, e.g., xlinuxcnc
# Name of display program, e.g., xemc
# DISPLAY = axis
# DISPLAY = xlinuxcnc
DISPLAY = tklinuxcnc
# DISPLAY = xemc
# DISPLAY = usrmot
DISPLAY = tkemc
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.200
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.2
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 2
# Increments for the JOG section
INCREMENTS = 1000 10 1 0.1 0.01
# Task controller section -----------------------------------------------------
[TASK]
[FILTER]
#No Content
# 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 --------------------------------------------
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = dallur-advanced.var
# Motion control section ------------------------------------------------------
# Motion control section ------------------------------------------------------
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Base task period, in nanoseconds - this is the fastest thread in the machine
#BASE_PERIOD = 10000
#BASE_PERIOD = 14107
@ -66,22 +94,19 @@ BASE_PERIOD = 20000
# Servo task period, in nanoseconds - will be rounded to an integer multiple
# of BASE_PERIOD
SERVO_PERIOD = 1000000
# 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.
#
# HALUI to interact with NML
# Run before any other HALFILE
HALUI=halui
# list of hal config files to run through halcmd
# files are executed in the order in which they appear
HALFILE = dallur-core_stepper.hal
@ -90,46 +115,31 @@ HALFILE = dallur-halvcp.hal
#HALFILE = xylotex_pinout.hal
# HALFILE = standard_pinout.hal
# HALFILE = simulated_limits.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
# Trajectory planner section --------------------------------------------------
[HALUI]
#No Content
[TRAJ]
AXES = 3
COORDINATES = X Y Z
HOME = 0 0 0
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 180.00
MAX_LINEAR_VELOCITY = 260.00
DEFAULT_LINEAR_ACCELERATION = 500.0
MAX_LINEAR_ACCELERATION = 2400.0
CYCLE_TIME = 0.00001
DEFAULT_VELOCITY = 180.00
MAX_VELOCITY = 260.00
DEFAULT_ACCELERATION = 500.0
MAX_ACCELERATION = 2400.0
# Axes sections ---------------------------------------------------------------
# First axis
[AXIS_0]
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = dallur-advanced.tbl
# section for external NML server parameters ----------------------------------
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = 0
MAX_LIMIT = 2100
MAX_VELOCITY = 220
MAX_ACCELERATION = 2400
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 220
@ -147,15 +157,10 @@ HOME_SEARCH_VEL = 0.0
HOME_LATCH_VEL = 0.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
# Second axis
[AXIS_1]
[AXIS_Y]
MIN_LIMIT = 0.0
MAX_LIMIT = 6100
MAX_VELOCITY = 240
MAX_ACCELERATION = 2400
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 240
@ -173,15 +178,10 @@ HOME_SEARCH_VEL = 0.0
HOME_LATCH_VEL = 0.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
# Third axis
[AXIS_2]
[AXIS_Z]
MIN_LIMIT = 0.0
MAX_LIMIT = 4000.0
MAX_VELOCITY = 20
MAX_ACCELERATION = 250
[JOINT_2]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 20
@ -200,6 +200,7 @@ HOME_SEARCH_VEL = 0.0
HOME_LATCH_VEL = 0.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
# Settings for the Torch Height Control which does not use the stepgen but depends on a PID loop
P = 2500
I = 0.0
@ -209,8 +210,20 @@ FF0 = 0.0
FF1 = 0.0
FF2 = 0.0
DEADBAND= 0.000375
# section for main IO controller parameters -----------------------------------
# section for main IO controller parameters -----------------------------------
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = dallur-advanced.tbl
# section for external NML server parameters ----------------------------------
[EMCSERVER]
# Uncomment the following line if you need to run a remote GUI.
# EMCSERVER = emcsvr

View file

@ -2,9 +2,9 @@
# first load the core RT modules that will be needed
# kinematics
loadrt [KINS]KINEMATICS
loadrt trivkins
# motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
# stepper module, three step generators, all three using step/dir
loadrt stepgen step_type=0,0,0
@ -18,30 +18,30 @@ addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
# connect position commands from motion module to step generator
net Xpos-cmd <= joint.0.motor-pos-cmd
net Xpos-cmd <= axis.0.motor-pos-cmd
net Xpos-cmd => stepgen.0.position-cmd
net Ypos-cmd <= joint.1.motor-pos-cmd
net Ypos-cmd <= axis.1.motor-pos-cmd
net Ypos-cmd => stepgen.1.position-cmd
# Disabled to make THC work better
#linksp Zpos-cmd <= joint.2.motor-pos-cmd
#linksp Zpos-cmd <= axis.2.motor-pos-cmd
# Disabled for THC to work
#linksp Zpos-cmd => stepgen.2.position-cmd
# connect position feedback from step generators
# to motion module
net Xpos-fb <= stepgen.0.position-fb
net Xpos-fb => joint.0.motor-pos-fb
net Xpos-fb => axis.0.motor-pos-fb
net Ypos-fb <= stepgen.1.position-fb
net Ypos-fb => joint.1.motor-pos-fb
net Ypos-fb => axis.1.motor-pos-fb
net Zpos-fb <= stepgen.2.position-fb
net Zpos-fb => joint.2.motor-pos-fb
net Zpos-fb => axis.2.motor-pos-fb
# connect enable signals for step generators
net Xen <= joint.0.amp-enable-out
net Xen <= axis.0.amp-enable-out
net Xen => stepgen.0.enable
net Yen <= joint.1.amp-enable-out
net Yen <= axis.1.amp-enable-out
net Yen => stepgen.1.enable
net Zen <= joint.2.amp-enable-out
net Zen <= axis.2.amp-enable-out
net Zen => stepgen.2.enable
@ -54,12 +54,12 @@ net Zstep stepgen.2.step
net Zdir stepgen.2.dir
# set stepgen module scaling - get values from ini file
setp stepgen.0.position-scale [JOINT_0]SCALE
setp stepgen.1.position-scale [JOINT_1]SCALE
setp stepgen.2.position-scale [JOINT_2]SCALE
setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.2.position-scale [AXIS_2]SCALE
# set stepgen module accel limits - get values from ini file
setp stepgen.0.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp stepgen.1.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp stepgen.2.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL

View file

@ -1,8 +0,0 @@
Demo_mazak es un conjunto complejo de controladores HAL. Incluyen la tarjeta de movimiento Motenc-Lite, una tarjeta parport PMDX y una tarjeta IO ISA de propósito general.
Esta configuración se usa para la Mazak V5 de Cardinal Engineering y se incluye aquí como un ejemplo de una manera de distribuir las habilidades HAL en varios dispositivos.
Esta demostración incluye un ejemplo del uso de un puerto paralelo para leer un codificador de volante. Trae ClassicLadder para manejar la mayor parte de la lógica de la
máquina para el cambio de velocidades y herramientas.
No espere poder ejecutar esto tal como está a menos que tenga un conjunto de hardware coincidente. Sin el conjunto exacto de dispositivos, aún puede estudiar los archivos hal
para ver como se logran muchas de estas cosas.

View file

@ -1,7 +1,7 @@
# this file contains the HAL configuration for Roland's Mazak
#
# kinematics
loadrt [KINS]KINEMATICS
loadrt trivkins
# 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
@ -206,7 +206,7 @@ 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
net servo-enable axis.0.amp-enable-out
# servo amp fault signals
# the signals from the amps are actually "not running"
@ -221,27 +221,27 @@ 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
net X-amp-fault axis.0.amp-fault-in
net Y-amp-fault axis.1.amp-fault-in
net Z-amp-fault axis.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
net X-lim-plus motenc.3.in-00-not => axis.0.pos-lim-sw-in
net X-lim-minus motenc.3.in-01-not => axis.0.neg-lim-sw-in
net Y-lim-plus motenc.3.in-02-not => axis.1.pos-lim-sw-in
net Y-lim-minus motenc.3.in-03-not => axis.1.neg-lim-sw-in
net Z-lim-plus motenc.3.in-04-not => axis.2.pos-lim-sw-in
net Z-lim-minus motenc.3.in-05-not => axis.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
net X-home motenc.3.in-08-not => axis.0.home-sw-in
net Y-home motenc.3.in-09-not => axis.1.home-sw-in
net Z-home motenc.3.in-10-not => axis.2.home-sw-in
# spindle related signals: "high level" signals
# ready (from drive to PC)
@ -353,13 +353,13 @@ net sp-in-low-gear ax5214h.0.in-36
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
net sp-pos-revs motion.spindle-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
net spindle-run-request motion.spindle-on
net spindle-rpm-cmd motion.spindle-speed-out
# end of spindle control
@ -484,7 +484,7 @@ 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
net sp-index-enable motion.spindle-index-enable
# jogwheel signals
setp encoder.0.x4-mode 0
@ -518,9 +518,9 @@ 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
setp motenc.3.enc-00-scale [AXIS_0]INPUT_SCALE
setp motenc.3.enc-01-scale [AXIS_1]INPUT_SCALE
setp motenc.3.enc-02-scale [AXIS_2]INPUT_SCALE
# position in inches
net X-enc-pos motenc.3.enc-00-position
@ -528,9 +528,9 @@ 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
net X-index-enable motenc.3.enc-00-index-enable axis.0.index-enable
net Y-index-enable motenc.3.enc-01-index-enable axis.1.index-enable
net Z-index-enable motenc.3.enc-02-index-enable axis.2.index-enable
# -----------------------------------------------------
# DACs - output to servo amps
@ -539,12 +539,12 @@ 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
setp motenc.3.dac-00-gain [AXIS_0]OUTPUT_SCALE
setp motenc.3.dac-01-gain [AXIS_1]OUTPUT_SCALE
setp motenc.3.dac-02-gain [AXIS_2]OUTPUT_SCALE
setp motenc.3.dac-00-offset [AXIS_0]OUTPUT_OFFSET
setp motenc.3.dac-01-offset [AXIS_1]OUTPUT_OFFSET
setp motenc.3.dac-02-offset [AXIS_2]OUTPUT_OFFSET
# -----------------------------------------------------
# ADCs - servo amp current feedback
@ -566,9 +566,9 @@ setp motenc.3.adc-02-offset 0.0
# 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
net X-pos-cmd axis.0.motor-pos-cmd
net Y-pos-cmd axis.1.motor-pos-cmd
net Z-pos-cmd axis.2.motor-pos-cmd
# and to the PID inputs
net X-pos-cmd pid.0.command
net Y-pos-cmd pid.1.command
@ -579,9 +579,9 @@ 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
net X-enc-pos axis.0.motor-pos-fb
net Y-enc-pos axis.1.motor-pos-fb
net Z-enc-pos axis.2.motor-pos-fb
# hook PID outputs to DACs
net X-volts pid.0.output
@ -597,34 +597,34 @@ 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
setp pid.0.deadband [AXIS_0]DEADBAND
setp pid.0.Pgain [AXIS_0]PGAIN
setp pid.0.Igain [AXIS_0]IGAIN
setp pid.0.Dgain [AXIS_0]DGAIN
setp pid.0.FF0 [AXIS_0]FF0
setp pid.0.FF1 [AXIS_0]FF1
setp pid.0.FF2 [AXIS_0]FF2
setp pid.0.bias [AXIS_0]BIAS
setp pid.1.deadband [AXIS_1]DEADBAND
setp pid.1.Pgain [AXIS_1]PGAIN
setp pid.1.Igain [AXIS_1]IGAIN
setp pid.1.Dgain [AXIS_1]DGAIN
setp pid.1.FF0 [AXIS_1]FF0
setp pid.1.FF1 [AXIS_1]FF1
setp pid.1.FF2 [AXIS_1]FF2
setp pid.1.bias [AXIS_1]BIAS
setp pid.2.deadband [AXIS_2]DEADBAND
setp pid.2.Pgain [AXIS_2]PGAIN
setp pid.2.Igain [AXIS_2]IGAIN
setp pid.2.Dgain [AXIS_2]DGAIN
setp pid.2.FF0 [AXIS_2]FF0
setp pid.2.FF1 [AXIS_2]FF1
setp pid.2.FF2 [AXIS_2]FF2
setp pid.2.bias [AXIS_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
setp pid.0.maxoutput [AXIS_0]MAX_OUTPUT
setp pid.1.maxoutput [AXIS_1]MAX_OUTPUT
setp pid.2.maxoutput [AXIS_2]MAX_OUTPUT
# LADDER LOGIC!!!
#

View file

@ -1,134 +1,144 @@
# 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 -------------------------------------------------------------
# General section -------------------------------------------------------------
[EMC]
# Version of this INI file
VERSION = 1.1
VERSION = $Revision$
# 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 ------------------------------------------------
# Sections for display options ------------------------------------------------
[DISPLAY]
# Name of display program, e.g., xlinuxcnc
# Name of display program, e.g., xemc
DISPLAY = axis
# DISPLAY = tklinuxcnc
# DISPLAY = tkemc
# DISPLAY = mini
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.100
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.2
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# side panel with some extra controls
PYVCP=panel.xml
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 1
#EDITOR = gedit
EDITOR = gedit
INCREMENTS = 0.010 0.001 0.0001
# Task controller section -----------------------------------------------------
[TASK]
[FILTER]
#No Content
# 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 --------------------------------------------
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = demo_mazak.var
# Motion control section ------------------------------------------------------
# Motion control section ------------------------------------------------------
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Base task period, in 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 --------------------------------------------------
[SPINDLE]
[HALUI]
#No Content
ORIENT_POSITION = -75.0
LOW_GEAR_RATIO = 4.133
HIGH_GEAR_RATIO = 1.100
# Trajectory planner section --------------------------------------------------
[TRAJ]
AXES = 3
# 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
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 1.0
MAX_VELOCITY = 5.0
DEFAULT_ACCELERATION = 20.0
MAX_ACCELERATION = 20.0
# Axes sections ---------------------------------------------------------------
# First axis
[AXIS_0]
[EMCIO]
# change tools in the upper left corner of the table
# to avoid hitting the vise or workpiece with the tool
TOOL_CHANGE_POSITION = -13.75 7.5 -0.022
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# 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
@ -160,15 +170,10 @@ FF0 = 0.000
FF1 = 0.000
FF2 = 0.0
BIAS = 0.000
# Second axis
[AXIS_1]
[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
@ -199,15 +204,10 @@ FF0 = 0.000
FF1 = 0.000
FF2 = 0.0
BIAS = 0.000
# Third axis
[AXIS_2]
[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
@ -243,10 +243,28 @@ 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 --------------------------------------------------
# section for main IO controller parameters -----------------------------------
[EMCIO]
# change tools in the upper left corner of the table
# to avoid hitting the vise or workpiece with the tool
TOOL_CHANGE_POSITION = -13.75 7.5 -0.022
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# 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

View file

@ -1,15 +0,0 @@
net jogA parport.0.pin-10-in => encoder.1.phase-A
net jogB parport.0.pin-11-in => encoder.1.phase-B
net jogX axisui.jog.x => joint.0.jog-enable
net jogY axisui.jog.y => joint.1.jog-enable
net jogZ axisui.jog.z => joint.2.jog-enable
net jogcounts encoder.1.counts => joint.0.jog-counts joint.1.jog-counts joint.2.jog-counts
sets jogscale .00002
net jogscale joint.0.jog-scale
net jogscale joint.1.jog-scale
net jogscale joint.2.jog-scale

View file

@ -1,224 +0,0 @@
# HAL config file for MAX NC test machine
#######################################################
# first load all the HAL modules we're going to need
#######################################################
# kinematics
loadrt [KINS]KINEMATICS
# main motion controller module
loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
# using steppers....
loadrt stepgen step_type=0,0,0,0
# I/O thru the parport
loadrt hal_parport cfg="0x0378"
# counting the spindle encoder in software
loadrt encoder num_chan=2
# simulate the encoder
loadrt sim_encoder num_chan=1
# misc blocks needed to do fun things
loadrt ddt count=8
#######################################################
# add realtime functions to the threads
# first the high speed thread
#######################################################
# first we read parport inputs
addf parport.0.read base-thread
addf sim-encoder.make-pulses base-thread
# update encoder counter
addf encoder.update-counters base-thread
# generate step and dir signals
addf stepgen.make-pulses base-thread
# write to outputs
addf parport.0.write base-thread
# now the servo thread
########################################################
# capture axis and spindle positions
addf stepgen.capture-position servo-thread
addf encoder.capture-position servo-thread
# process motion commands coming from user space
addf motion-command-handler servo-thread
# run main motion controller
addf motion-controller servo-thread
# differentiators to make vel and acc signals
addf ddt.0 servo-thread
addf ddt.1 servo-thread
addf ddt.2 servo-thread
addf ddt.3 servo-thread
addf ddt.4 servo-thread
addf ddt.5 servo-thread
addf ddt.6 servo-thread
addf ddt.7 servo-thread
# update output info, axis and spindle
addf stepgen.update-freq servo-thread
addf sim-encoder.update-speed servo-thread
#######################################################
# interconnections
#
# first, the basic stepper machine connections
#######################################################
# connect position commands from motion module to step generator
net Xpos-cmd <= joint.0.motor-pos-cmd
net Xpos-cmd => stepgen.0.position-cmd
net Ypos-cmd <= joint.1.motor-pos-cmd
net Ypos-cmd => stepgen.1.position-cmd
net Zpos-cmd <= joint.2.motor-pos-cmd
net Zpos-cmd => stepgen.2.position-cmd
net Apos-cmd <= joint.3.motor-pos-cmd
net Apos-cmd => stepgen.3.position-cmd
# connect position feedback from step generators
# to motion module
net Xpos-fb <= stepgen.0.position-fb
net Xpos-fb => joint.0.motor-pos-fb
net Ypos-fb <= stepgen.1.position-fb
net Ypos-fb => joint.1.motor-pos-fb
net Zpos-fb <= stepgen.2.position-fb
net Zpos-fb => joint.2.motor-pos-fb
net Apos-fb <= stepgen.3.position-fb
net Apos-fb => joint.3.motor-pos-fb
# connect enable signals for step generators
net Xen <= joint.0.amp-enable-out
net Xen => stepgen.0.enable
net Yen <= joint.1.amp-enable-out
net Yen => stepgen.1.enable
net Zen <= joint.2.amp-enable-out
net Zen => stepgen.2.enable
net Aen <= joint.3.amp-enable-out
net Aen => stepgen.3.enable
# connect signals to step pulse generator outputs
net Xstep <= stepgen.0.step
net Xdir <= stepgen.0.dir
net Ystep <= stepgen.1.step
net Ydir <= stepgen.1.dir
net Zstep <= stepgen.2.step
net Zdir <= stepgen.2.dir
net Astep <= stepgen.3.step
net Adir <= stepgen.3.dir
# create a signal for the estop loopback
net estop-loop iocontrol.0.user-enable-out iocontrol.0.emc-enable-in
# create signals for tool loading loopback
net tool-prep-loop iocontrol.0.tool-prepare iocontrol.0.tool-prepared
net tool-change-loop iocontrol.0.tool-change iocontrol.0.tool-changed
# create a signal for "spindle on"
net spindle_on <= motion.spindle-on
# connect physical pins to the signals
net Xstep => parport.0.pin-03-out
net Xdir => parport.0.pin-02-out
net Ystep => parport.0.pin-05-out
net Ydir => parport.0.pin-04-out
net Zstep => parport.0.pin-07-out
net Zdir => parport.0.pin-06-out
net Astep => parport.0.pin-09-out
net Adir => parport.0.pin-08-out
# amp enable (active lo)
net Xen => parport.0.pin-01-out
setp parport.0.pin-01-out-invert 1
# spindle enable (active lo)
net spindle_on => parport.0.pin-14-out
setp parport.0.pin-14-out-invert 1
#######################################################
# set scaling and other parameters of the basic machine
# set stepgen module scaling - get values from ini file
setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.3.position-scale [AXIS_3]SCALE
# set stepgen module accel limits - get values from ini file
# jmk said to set these to ini value + 5% to avoid stepgen bug
setp stepgen.0.maxaccel [AXIS_0]HAL_MAXACCEL
setp stepgen.1.maxaccel [AXIS_1]HAL_MAXACCEL
setp stepgen.2.maxaccel [AXIS_2]HAL_MAXACCEL
setp stepgen.3.maxaccel [AXIS_3]HAL_MAXACCEL
# end of basic machine
#######################################################
# Beginning of threading related stuff
#######################################################
# spindle speed control
net spindle-speed-cmd <= motion.spindle-speed-out
net spindle-speed-cmd => sim-encoder.0.speed
# spindle encoder
# connect encoder signals to encoder counter
net spindle-phase-A => encoder.0.phase-A
net spindle-phase-B => encoder.0.phase-B
net spindle-phase-Z => encoder.0.phase-Z
net spindle-phase-A <= sim-encoder.0.phase-A
net spindle-phase-B <= sim-encoder.0.phase-B
net spindle-phase-Z <= sim-encoder.0.phase-Z
# assume 120 ppr = 480 counts/rev for the spindle
setp sim-encoder.0.ppr 120
# iocontrol output is in rpm, but sim-encoder speed is rps
setp sim-encoder.0.scale 60
# scale encoder output to read in revolutions
# (that way thread pitches can be straightforward,
# a 20 tpi thread would multiply the encoder output
# by 1/20, etc)
setp encoder.0.position-scale 480
# encoder reset control
net spindle-index-enable <= motion.spindle-index-enable
net spindle-index-enable <=> encoder.0.index-enable
# report our revolution count to the motion controller
net spindle-pos <= encoder.0.position
net spindle-pos => motion.spindle-revs
#######################################################
# make vel and accel sigs for testing
#######################################################
# send the position commands thru differentiators to
# generate velocity and accel signals (for testing)
# define the signals, and hook them up
net Xpos-cmd => ddt.0.in
net Xvel <= ddt.0.out
net Xvel => ddt.1.in
net Xacc <= ddt.1.out
net Ypos-cmd => ddt.2.in
net Yvel <= ddt.2.out
net Yvel => ddt.3.in
net Yacc <= ddt.3.out
net Zpos-cmd => ddt.4.in
net Zvel <= ddt.4.out
net Zvel => ddt.5.in
net Zacc <= ddt.5.out
net Apos-cmd => ddt.6.in
net Avel <= ddt.6.out
net Avel => ddt.7.in
net Aacc <= ddt.7.out
# for spindle velocity estimate
loadrt lowpass count=1
net spindle-rpm-raw encoder.0.velocity
net spindle-rpm-raw lowpass.0.in
net spindle-rpm-filtered lowpass.0.out
setp lowpass.0.gain .03
addf lowpass.0 servo-thread

View file

@ -1,190 +0,0 @@
###################### Torch Height Control ##########################
# Load realtime hal components for THC
loadrt and2 count=9
loadrt comp count=3
loadrt updown
loadrt flipflop count=3
loadrt hypot
loadrt logic personality=0x203
loadrt minmax
loadrt mult2 count=2
loadrt mux2 count=7
loadrt not count=3
loadrt oneshot count=4
loadrt or2 count=9
loadrt scale
loadrt sum2 count=5
loadrt xor2 count=4
loadrt conv_s32_float
loadrt edge count=2
# Attach realtime hal components to a realtime thread
addf and2.0 servo-thread
addf and2.1 servo-thread
addf and2.2 servo-thread
addf and2.3 servo-thread
addf and2.4 servo-thread
addf and2.5 servo-thread
addf and2.6 servo-thread
addf and2.7 servo-thread
addf and2.8 servo-thread
addf comp.0 servo-thread
addf comp.1 servo-thread
addf comp.2 servo-thread
addf conv-s32-float.0 servo-thread
addf edge.0 servo-thread
addf edge.1 servo-thread
addf flipflop.0 servo-thread
addf flipflop.1 servo-thread
addf flipflop.2 servo-thread
addf hypot.0 servo-thread
addf logic.0 servo-thread
addf minmax.0 servo-thread
addf mult2.0 servo-thread
addf mult2.1 servo-thread
addf mux2.0 servo-thread
addf mux2.1 servo-thread
addf mux2.2 servo-thread
addf mux2.3 servo-thread
addf mux2.4 servo-thread
addf mux2.5 servo-thread
addf mux2.6 servo-thread
addf not.0 servo-thread
addf not.1 servo-thread
addf not.2 servo-thread
addf oneshot.0 servo-thread
addf oneshot.1 servo-thread
addf oneshot.2 servo-thread
addf oneshot.3 servo-thread
addf or2.0 servo-thread
addf or2.1 servo-thread
addf or2.2 servo-thread
addf or2.3 servo-thread
addf or2.4 servo-thread
addf or2.5 servo-thread
addf or2.6 servo-thread
addf or2.7 servo-thread
addf or2.8 servo-thread
addf updown.0 servo-thread
addf scale.0 servo-thread
addf sum2.0 servo-thread
addf sum2.1 servo-thread
addf sum2.2 servo-thread
addf sum2.3 servo-thread
addf sum2.4 servo-thread
addf xor2.0 servo-thread
addf xor2.1 servo-thread
addf xor2.2 servo-thread
# Set static values and default values
setp oneshot.1.width [PLASMA]IGNITION_TIMEOUT
setp oneshot.2.width [PLASMA]ARC_OK_FILTER_TIME
setp oneshot.3.width [PLASMA]EXTINGUISH_TIMEOUT
setp oneshot.3.falling 1
setp oneshot.3.rising 0
setp comp.2.in0 [PLASMA]MAX_FAILED_IGNITIONS
setp mux2.1.in0 -1
setp mux2.1.in1 1
setp mux2.3.in0 0
# Set the lowest value the THC will try to move the torch
setp sum2.4.in0 [AXIS_2]MIN_LIMIT
# Set default gains for sum, positive for addition and negative for subtraction
# Setting positive gains will become implicit and those can be removed safely in a later version
setp sum2.0.gain0 1
setp sum2.0.gain1 1
setp sum2.1.gain0 1
setp sum2.1.gain1 1
setp sum2.2.gain0 1
setp sum2.2.gain1 -1
setp sum2.3.gain0 1
setp sum2.3.gain1 -1
setp sum2.4.gain0 1
setp sum2.4.gain1 -1
# Set Hysterisis for float comp
setp comp.1.hyst 0.001
# Set percentage multiplier for scale
setp scale.0.gain 0.01
# Set edge detectors to work on falling edges to detect Ignition Timeouts
setp edge.0.in-edge 1
setp edge.1.in-edge 1
# Hook up parallel port pins
net MoveDown parport.1.pin-11-in-not => or2.0.in0
net MoveUp parport.1.pin-12-in-not => or2.0.in1 mux2.1.sel
# Hook up component pins using the net command
net FloatSwitch parport.1.pin-03-in => or2.1.in1 and2.4.in0 and2.5.in1 and2.6.in1
net ArcOK parport.1.pin-15-in-not => or2.4.in1 xor2.1.in1 oneshot.2.in
net FilteredArcOK xor2.1.out => or2.1.in0 or2.6.in0 not.1.in and2.4.in1 flipflop.1.set oneshot.3.in flipflop.2.set and2.2.in0
net TimersOrArcOK or2.4.out => or2.5.in0 or2.3.in0
net LockHeight and2.0.out => xor2.2.in0
net EnabledAdjustHeight and2.1.out => mux2.3.sel
net ReleaseFeedHold and2.2.out => xor2.0.in1
net TorchOn => and2.3.out parport.1.pin-01-out oneshot.1.in not.2.in
net FloatSwitchEstop and2.4.out => logic.0.in-02
net FloatAndTorchOn and2.5.out => or2.2.in1
net TorchAndFloat and2.6.out => flipflop.0.set
net PosAndFloat and2.7.out => or2.5.in1
net IgnitionEstop comp.2.out => logic.0.in-01
net StartTorchOn and2.8.out => and2.3.in0
net OriginalPosZ-cmd joint.2.motor-pos-cmd => mux2.5.in0 sum2.2.in1
net JointPoz-cmd joint.2.pos-cmd => sum2.2.in0
net CHLTriggered comp.0.out => and2.0.in0
net AtPosition comp.1.equal => and2.7.in0
net VelX ddt.0.out => hypot.0.in0
net VelY ddt.1.out => hypot.0.in1
net FloatSwitchSet flipflop.0.out => or2.3.in1 and2.7.in1
net ModeIsAuto halui.mode.is-auto => mux2.5.sel
net VelXY hypot.0.out => minmax.0.in comp.0.in0
net TriggerEStop logic.0.or => estop-latch.0.fault-in
net MaximumVelocity minmax.0.max => mult2.1.in0
net TurnTorchOn motion.spindle-forward => xor2.0.in0 and2.8.in0 and2.6.in0 mux2.4.sel not.0.in
net HeightAdjustment mult2.0.out => mux2.3.in1
net VelocityThreshold mult2.1.out => comp.0.in1
net HeightOffset mux2.0.out => sum2.1.in1
net AdjustmentDirection mux2.1.out => mult2.0.in1
net PositionSnapshot mux2.2.out => sum2.1.in0 mux2.2.in0
net SelectedAdjustment mux2.3.out => mux2.0.in1
net PosZ-cmd mux2.4.out => stepgen.2.position-cmd comp.1.in1
net PosSelectB mux2.5.out => mux2.4.in0
net PosSelectC mux2.6.out => mux2.4.in1
net TurnTorchOff not.0.out => and2.5.in0 or2.7.in0 updown.0.reset
net ReversedArcOK not.1.out => minmax.0.reset
net PierceDelayElapsed oneshot.0.out-not => and2.2.in1
net IgnitionTimer oneshot.1.out => edge.0.in or2.8.in0
net AdjustHeight or2.0.out => xor2.2.in1 and2.1.in0
net TakeSnapshot or2.1.out => mux2.2.sel
net TriggerLimit or2.2.out => joint.2.neg-lim-sw-in joint.2.pos-lim-sw-in joint.2.home-sw-in
net ProbeOrArcOK or2.3.out => mux2.6.sel
net PAFOrArcOK or2.5.out => and2.3.in1
net EstopOrArcOK or2.6.out => flipflop.0.reset
net ExtEStop parport.0.pin-10-in => logic.0.in-00
net ExtEStop => logic.0.in-00
net LimitZ parport.0.pin-13-in => or2.2.in0
net ThresholdPercentage scale.0.out => mult2.1.in1
net PosZ-fb stepgen.2.position-fb => joint.2.motor-pos-fb mux2.2.in1 comp.1.in0
net PierceOffset sum2.0.out => mux2.0.in0
net DestinationHeight sum2.1.out => mux2.6.in1
net JointAxisDiff sum2.2.out => sum2.3.in1 sum2.4.in1
net StepCordsTH sum2.3.out => mux2.5.in1
net StepCordsML sum2.4.out => mux2.6.in0
net FeedHold xor2.0.out => motion.feed-hold
net CHLSwitched xor2.2.out => and2.1.in1
net ArcOKTimer oneshot.2.out => xor2.1.in0
net PierceLatch flipflop.1.out => mux2.0.sel oneshot.0.in
net IgnitionCounterS32 updown.0.count => conv-s32-float.0.in
net IgnitionCounterFloat conv-s32-float.0.out => comp.2.in1
net IgnitionTimerOff oneshot.1.out-not => updown.0.countup
net TorchOff not.2.out => flipflop.1.reset
net TorchTurnedOffOrTimeout or2.7.out => or2.6.in1
net IgnitionTimeout edge.0.out => or2.7.in1
net ExtinguishTimer oneshot.3.out edge.1.in
net ExtinguishLatch flipflop.2.out or2.8.in1
net ExtinguishTimeout edge.1.out flipflop.2.reset
net Timers or2.8.out => or2.4.in0

View file

@ -1,32 +0,0 @@
############################# Parallel Ports ##############################################
# Load Driver for Two Parallel Ports, one for Breakout Board, other for Plasma Torch Height Control
loadrt hal_parport cfg="0xa400 0xac00 in"
# Connect both Paralell Ports to Threads for Read / Write
addf parport.0.read base-thread 1
addf parport.0.write base-thread -1
addf parport.1.read base-thread 1
addf parport.1.write base-thread -1
# Invert pins to make motors move in right direction
setp parport.0.pin-03-out-invert 1
setp parport.0.pin-05-out-invert 1
# Hook up the step and dir signals to the parport pins
# Axis A and Y are the same axis but different motors
net StepX stepgen.0.step => parport.0.pin-02-out
net DirX stepgen.0.dir => parport.0.pin-03-out
net StepY stepgen.1.step => parport.0.pin-04-out
net DirY stepgen.1.dir => parport.0.pin-05-out
net StepZ stepgen.2.step => parport.0.pin-06-out
net DirZ stepgen.2.dir => parport.0.pin-07-out
net StepA stepgen.3.step => parport.0.pin-08-out
net DirA stepgen.3.dir => parport.0.pin-09-out
# Hook up limit and home switches, each axis shares a common pin for homing, limit min and limit max
net LimitX parport.1.pin-06-in-not => joint.0.neg-lim-sw-in joint.0.pos-lim-sw-in joint.0.home-sw-in
net LimitY parport.1.pin-07-in-not => joint.1.neg-lim-sw-in joint.1.pos-lim-sw-in joint.1.home-sw-in
# Z axis Limit switch handled by THC, see thc.hal
#net LimitZ parport.1.pin-13-in => joint.2.neg-lim-sw-in joint.2.pos-lim-sw-in joint.2.home-sw-in
net LimitA parport.1.pin-09-in-not => joint.3.neg-lim-sw-in joint.3.pos-lim-sw-in joint.3.home-sw-in

View file

@ -1,190 +0,0 @@
###################### Torch Height Control ##########################
# Load realtime hal components for THC
loadrt and2 count=9
loadrt comp count=3
loadrt updown
loadrt flipflop count=3
loadrt hypot
loadrt logic personality=0x203
loadrt minmax
loadrt mult2 count=2
loadrt mux2 count=7
loadrt not count=3
loadrt oneshot count=4
loadrt or2 count=9
loadrt scale
loadrt sum2 count=5
loadrt xor2 count=4
loadrt conv_s32_float
loadrt edge count=2
# Attach realtime hal components to a realtime thread
addf and2.0 servo-thread
addf and2.1 servo-thread
addf and2.2 servo-thread
addf and2.3 servo-thread
addf and2.4 servo-thread
addf and2.5 servo-thread
addf and2.6 servo-thread
addf and2.7 servo-thread
addf and2.8 servo-thread
addf comp.0 servo-thread
addf comp.1 servo-thread
addf comp.2 servo-thread
addf conv-s32-float.0 servo-thread
addf edge.0 servo-thread
addf edge.1 servo-thread
addf flipflop.0 servo-thread
addf flipflop.1 servo-thread
addf flipflop.2 servo-thread
addf hypot.0 servo-thread
addf logic.0 servo-thread
addf minmax.0 servo-thread
addf mult2.0 servo-thread
addf mult2.1 servo-thread
addf mux2.0 servo-thread
addf mux2.1 servo-thread
addf mux2.2 servo-thread
addf mux2.3 servo-thread
addf mux2.4 servo-thread
addf mux2.5 servo-thread
addf mux2.6 servo-thread
addf not.0 servo-thread
addf not.1 servo-thread
addf not.2 servo-thread
addf oneshot.0 servo-thread
addf oneshot.1 servo-thread
addf oneshot.2 servo-thread
addf oneshot.3 servo-thread
addf or2.0 servo-thread
addf or2.1 servo-thread
addf or2.2 servo-thread
addf or2.3 servo-thread
addf or2.4 servo-thread
addf or2.5 servo-thread
addf or2.6 servo-thread
addf or2.7 servo-thread
addf or2.8 servo-thread
addf updown.0 servo-thread
addf scale.0 servo-thread
addf sum2.0 servo-thread
addf sum2.1 servo-thread
addf sum2.2 servo-thread
addf sum2.3 servo-thread
addf sum2.4 servo-thread
addf xor2.0 servo-thread
addf xor2.1 servo-thread
addf xor2.2 servo-thread
# Set static values and default values
setp oneshot.1.width [PLASMA]IGNITION_TIMEOUT
setp oneshot.2.width [PLASMA]ARC_OK_FILTER_TIME
setp oneshot.3.width [PLASMA]EXTINGUISH_TIMEOUT
setp oneshot.3.falling 1
setp oneshot.3.rising 0
setp comp.2.in0 [PLASMA]MAX_FAILED_IGNITIONS
setp mux2.1.in0 -1
setp mux2.1.in1 1
setp mux2.3.in0 0
# Set the lowest value the THC will try to move the torch
setp sum2.4.in0 [AXIS_2]MIN_LIMIT
# Set default gains for sum, positive for addition and negative for subtraction
# Setting positive gains will become implicit and those can be removed safely in a later version
setp sum2.0.gain0 1
setp sum2.0.gain1 1
setp sum2.1.gain0 1
setp sum2.1.gain1 1
setp sum2.2.gain0 1
setp sum2.2.gain1 -1
setp sum2.3.gain0 1
setp sum2.3.gain1 -1
setp sum2.4.gain0 1
setp sum2.4.gain1 -1
# Set Hysterisis for float comp
setp comp.1.hyst 0.001
# Set percentage multiplier for scale
setp scale.0.gain 0.01
# Set edge detectors to work on falling edges to detect Ignition Timeouts
setp edge.0.in-edge 1
setp edge.1.in-edge 1
# Hook up parallel port pins
net MoveDown parport.1.pin-06-in-not => or2.0.in0
net MoveUp parport.1.pin-07-in-not => or2.0.in1 mux2.1.sel
# Hook up component pins using the net command
net FloatSwitch parport.1.pin-03-in => or2.1.in1 and2.4.in0 and2.5.in1 and2.6.in1
net ArcOK parport.1.pin-08-in-not => or2.4.in1 xor2.1.in1 oneshot.2.in
net FilteredArcOK xor2.1.out => or2.1.in0 or2.6.in0 not.1.in and2.4.in1 flipflop.1.set oneshot.3.in flipflop.2.set and2.2.in0
net TimersOrArcOK or2.4.out => or2.5.in0 or2.3.in0
net LockHeight and2.0.out => xor2.2.in0
net EnabledAdjustHeight and2.1.out => mux2.3.sel
net ReleaseFeedHold and2.2.out => xor2.0.in1
net TorchOn => and2.3.out parport.1.pin-01-out oneshot.1.in not.2.in
net FloatSwitchEstop and2.4.out => logic.0.in-02
net FloatAndTorchOn and2.5.out => or2.2.in1
net TorchAndFloat and2.6.out => flipflop.0.set
net PosAndFloat and2.7.out => or2.5.in1
net IgnitionEstop comp.2.out => logic.0.in-01
net StartTorchOn and2.8.out => and2.3.in0
net OriginalPosZ-cmd joint.2.motor-pos-cmd => mux2.5.in0 sum2.2.in1
net JointPoz-cmd joint.2.pos-cmd => sum2.2.in0
net CHLTriggered comp.0.out => and2.0.in0
net AtPosition comp.1.equal => and2.7.in0
net VelX ddt.0.out => hypot.0.in0
net VelY ddt.1.out => hypot.0.in1
net FloatSwitchSet flipflop.0.out => or2.3.in1 and2.7.in1
net ModeIsAuto halui.mode.is-auto => mux2.5.sel
net VelXY hypot.0.out => minmax.0.in comp.0.in0
net TriggerEStop logic.0.or => estop-latch.0.fault-in
net MaximumVelocity minmax.0.max => mult2.1.in0
net TurnTorchOn motion.spindle-forward => xor2.0.in0 and2.8.in0 and2.6.in0 mux2.4.sel not.0.in
net HeightAdjustment mult2.0.out => mux2.3.in1
net VelocityThreshold mult2.1.out => comp.0.in1
net HeightOffset mux2.0.out => sum2.1.in1
net AdjustmentDirection mux2.1.out => mult2.0.in1
net PositionSnapshot mux2.2.out => sum2.1.in0 mux2.2.in0
net SelectedAdjustment mux2.3.out => mux2.0.in1
net PosZ-cmd mux2.4.out => stepgen.2.position-cmd comp.1.in1
net PosSelectB mux2.5.out => mux2.4.in0
net PosSelectC mux2.6.out => mux2.4.in1
net TurnTorchOff not.0.out => and2.5.in0 or2.7.in0 updown.0.reset
net ReversedArcOK not.1.out => minmax.0.reset
net PierceDelayElapsed oneshot.0.out-not => and2.2.in1
net IgnitionTimer oneshot.1.out => edge.0.in or2.8.in0
net AdjustHeight or2.0.out => xor2.2.in1 and2.1.in0
net TakeSnapshot or2.1.out => mux2.2.sel
net TriggerLimit or2.2.out => joint.2.neg-lim-sw-in joint.2.pos-lim-sw-in joint.2.home-sw-in
net ProbeOrArcOK or2.3.out => mux2.6.sel
net PAFOrArcOK or2.5.out => and2.3.in1
net EstopOrArcOK or2.6.out => flipflop.0.reset
net ExtEStop parport.0.pin-10-in => logic.0.in-00
net ExtEStop => logic.0.in-00
net LimitZ parport.0.pin-13-in => or2.2.in0
net ThresholdPercentage scale.0.out => mult2.1.in1
net PosZ-fb stepgen.2.position-fb => joint.2.motor-pos-fb mux2.2.in1 comp.1.in0
net PierceOffset sum2.0.out => mux2.0.in0
net DestinationHeight sum2.1.out => mux2.6.in1
net JointAxisDiff sum2.2.out => sum2.3.in1 sum2.4.in1
net StepCordsTH sum2.3.out => mux2.5.in1
net StepCordsML sum2.4.out => mux2.6.in0
net FeedHold xor2.0.out => motion.feed-hold
net CHLSwitched xor2.2.out => and2.1.in1
net ArcOKTimer oneshot.2.out => xor2.1.in0
net PierceLatch flipflop.1.out => mux2.0.sel oneshot.0.in
net IgnitionCounterS32 updown.0.count => conv-s32-float.0.in
net IgnitionCounterFloat conv-s32-float.0.out => comp.2.in1
net IgnitionTimerOff oneshot.1.out-not => updown.0.countup
net TorchOff not.2.out => flipflop.1.reset
net TorchTurnedOffOrTimeout or2.7.out => or2.6.in1
net IgnitionTimeout edge.0.out => or2.7.in1
net ExtinguishTimer oneshot.3.out edge.1.in
net ExtinguishLatch flipflop.2.out or2.8.in1
net ExtinguishTimeout edge.1.out flipflop.2.reset
net Timers or2.8.out => or2.4.in0

View file

@ -1,32 +0,0 @@
############################# Parallel Ports ##############################################
# Load Driver for Two Parallel Ports, one for Breakout Board, other for Plasma Torch Height Control
loadrt hal_parport cfg="0xa400 0xac00 in"
# Connect both Paralell Ports to Threads for Read / Write
addf parport.0.read base-thread 1
addf parport.0.write base-thread -1
addf parport.1.read base-thread 1
addf parport.1.write base-thread -1
# Invert pins to make motors move in right direction
setp parport.0.pin-03-out-invert 1
setp parport.0.pin-05-out-invert 1
# Hook up the step and dir signals to the parport pins
# Axis A and Y are the same axis but different motors
net StepX stepgen.0.step => parport.0.pin-02-out
net DirX stepgen.0.dir => parport.0.pin-03-out
net StepY stepgen.1.step => parport.0.pin-04-out
net DirY stepgen.1.dir => parport.0.pin-05-out
net StepZ stepgen.2.step => parport.0.pin-06-out
net DirZ stepgen.2.dir => parport.0.pin-07-out
net StepA stepgen.3.step => parport.0.pin-08-out
net DirA stepgen.3.dir => parport.0.pin-09-out
# Hook up limit and home switches, each axis shares a common pin for homing, limit min and limit max
net LimitX parport.0.pin-11-in => joint.0.neg-lim-sw-in joint.0.pos-lim-sw-in joint.0.home-sw-in
net LimitY parport.0.pin-12-in => joint.1.neg-lim-sw-in joint.1.pos-lim-sw-in joint.1.home-sw-in
# Z axis Limit switch handled by THC, see thc.hal
#net LimitZ parport.1.pin-13-in => joint.2.neg-lim-sw-in joint.2.pos-lim-sw-in joint.2.home-sw-in
net LimitA parport.0.pin-15-in => joint.3.neg-lim-sw-in joint.3.pos-lim-sw-in joint.3.home-sw-in

View file

@ -1,54 +0,0 @@
############################ Step Generators #########################################
# Stepper module, four step generators, all using step/dir
loadrt stepgen step_type=0,0,0,0
# Load realtime ddt for velocity calculations used for CHL
loadrt ddt count=2
# Hook functions to base thread (high speed thread for step generation)
addf stepgen.make-pulses base-thread
# Hook functions to servo thread
addf stepgen.capture-position servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf stepgen.update-freq servo-thread
addf ddt.0 servo-thread
addf ddt.1 servo-thread
# Configure signals for Z axis to be twice the size of the signals for other axis because
# Z axis has a slo-syn driver which can't handle smaller step sizes
setp stepgen.2.steplen 35200
setp stepgen.2.stepspace 35200
setp stepgen.2.dirsetup 35200
setp stepgen.2.dirhold 35200
# Set stepgen module scaling - get values from ini file
setp stepgen.0.position-scale [AXIS_0]SCALE
setp stepgen.1.position-scale [AXIS_1]SCALE
setp stepgen.2.position-scale [AXIS_2]SCALE
setp stepgen.3.position-scale [AXIS_3]SCALE
# Set stepgen module accel limits - get values from ini file
setp stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
setp stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
setp stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
setp stepgen.3.maxaccel [AXIS_3]STEPGEN_MAXACCEL
# Hook up stepgen to motion modules
net PosX-cmd joint.0.motor-pos-cmd => stepgen.0.position-cmd
net PosX-fb stepgen.0.position-fb => joint.0.motor-pos-fb ddt.0.in
net PosY-cmd joint.1.motor-pos-cmd => stepgen.1.position-cmd
net PosY-fb stepgen.1.position-fb => joint.1.motor-pos-fb ddt.1.in
# Z Axis Position and feedback signals handled by THC, see thc.hal
#net PosZ-cmd joint.2.motor-pos-cmd => stepgen.2.position-cmd
#net PosZ-fb stepgen.2.position-fb => joint.2.motor-pos-fb
net PosA-cmd joint.3.motor-pos-cmd => stepgen.3.position-cmd
net PosA-fb stepgen.3.position-fb => joint.3.motor-pos-fb
# Hook up enable signals for step generators
net EnableX joint.0.amp-enable-out => stepgen.0.enable
net EnableY joint.1.amp-enable-out => stepgen.1.enable
net EnableZ joint.2.amp-enable-out => stepgen.2.enable
net EnableA joint.3.amp-enable-out => stepgen.3.enable

View file

@ -1,190 +0,0 @@
###################### Torch Height Control ##########################
# Load realtime hal components for THC
loadrt and2 count=9
loadrt comp count=3
loadrt updown
loadrt flipflop count=3
loadrt hypot
loadrt logic personality=0x203
loadrt minmax
loadrt mult2 count=2
loadrt mux2 count=7
loadrt not count=3
loadrt oneshot count=4
loadrt or2 count=9
loadrt scale
loadrt sum2 count=5
loadrt xor2 count=4
loadrt conv_s32_float
loadrt edge count=2
# Attach realtime hal components to a realtime thread
addf and2.0 servo-thread
addf and2.1 servo-thread
addf and2.2 servo-thread
addf and2.3 servo-thread
addf and2.4 servo-thread
addf and2.5 servo-thread
addf and2.6 servo-thread
addf and2.7 servo-thread
addf and2.8 servo-thread
addf comp.0 servo-thread
addf comp.1 servo-thread
addf comp.2 servo-thread
addf conv-s32-float.0 servo-thread
addf edge.0 servo-thread
addf edge.1 servo-thread
addf flipflop.0 servo-thread
addf flipflop.1 servo-thread
addf flipflop.2 servo-thread
addf hypot.0 servo-thread
addf logic.0 servo-thread
addf minmax.0 servo-thread
addf mult2.0 servo-thread
addf mult2.1 servo-thread
addf mux2.0 servo-thread
addf mux2.1 servo-thread
addf mux2.2 servo-thread
addf mux2.3 servo-thread
addf mux2.4 servo-thread
addf mux2.5 servo-thread
addf mux2.6 servo-thread
addf not.0 servo-thread
addf not.1 servo-thread
addf not.2 servo-thread
addf oneshot.0 servo-thread
addf oneshot.1 servo-thread
addf oneshot.2 servo-thread
addf oneshot.3 servo-thread
addf or2.0 servo-thread
addf or2.1 servo-thread
addf or2.2 servo-thread
addf or2.3 servo-thread
addf or2.4 servo-thread
addf or2.5 servo-thread
addf or2.6 servo-thread
addf or2.7 servo-thread
addf or2.8 servo-thread
addf updown.0 servo-thread
addf scale.0 servo-thread
addf sum2.0 servo-thread
addf sum2.1 servo-thread
addf sum2.2 servo-thread
addf sum2.3 servo-thread
addf sum2.4 servo-thread
addf xor2.0 servo-thread
addf xor2.1 servo-thread
addf xor2.2 servo-thread
# Set static values and default values
setp oneshot.1.width [PLASMA]IGNITION_TIMEOUT
setp oneshot.2.width [PLASMA]ARC_OK_FILTER_TIME
setp oneshot.3.width [PLASMA]EXTINGUISH_TIMEOUT
setp oneshot.3.falling 1
setp oneshot.3.rising 0
setp comp.2.in0 [PLASMA]MAX_FAILED_IGNITIONS
setp mux2.1.in0 -1
setp mux2.1.in1 1
setp mux2.3.in0 0
# Set the lowest value the THC will try to move the torch
setp sum2.4.in0 [AXIS_2]MIN_LIMIT
# Set default gains for sum, positive for addition and negative for subtraction
# Setting positive gains will become implicit and those can be removed safely in a later version
setp sum2.0.gain0 1
setp sum2.0.gain1 1
setp sum2.1.gain0 1
setp sum2.1.gain1 1
setp sum2.2.gain0 1
setp sum2.2.gain1 -1
setp sum2.3.gain0 1
setp sum2.3.gain1 -1
setp sum2.4.gain0 1
setp sum2.4.gain1 -1
# Set Hysterisis for float comp
setp comp.1.hyst 0.001
# Set percentage multiplier for scale
setp scale.0.gain 0.01
# Set edge detectors to work on falling edges to detect Ignition Timeouts
setp edge.0.in-edge 1
setp edge.1.in-edge 1
# Hook up parallel port pins
net MoveDown parport.1.pin-06-in-not => or2.0.in0
net MoveUp parport.1.pin-07-in-not => or2.0.in1 mux2.1.sel
# Hook up component pins using the net command
net FloatSwitch parport.1.pin-13-in => or2.1.in1 and2.4.in0 and2.5.in1 and2.6.in1
net ArcOK parport.1.pin-08-in-not => or2.4.in1 xor2.1.in1 oneshot.2.in
net FilteredArcOK xor2.1.out => or2.1.in0 or2.6.in0 not.1.in and2.4.in1 flipflop.1.set oneshot.3.in flipflop.2.set and2.2.in0
net TimersOrArcOK or2.4.out => or2.5.in0 or2.3.in0
net LockHeight and2.0.out => xor2.2.in0
net EnabledAdjustHeight and2.1.out => mux2.3.sel
net ReleaseFeedHold and2.2.out => xor2.0.in1
net TorchOn => and2.3.out parport.1.pin-01-out oneshot.1.in not.2.in
net FloatSwitchEstop and2.4.out => logic.0.in-02
net FloatAndTorchOn and2.5.out => or2.2.in1
net TorchAndFloat and2.6.out => flipflop.0.set
net PosAndFloat and2.7.out => or2.5.in1
net IgnitionEstop comp.2.out => logic.0.in-01
net StartTorchOn and2.8.out => and2.3.in0
net OriginalPosZ-cmd joint.2.motor-pos-cmd => mux2.5.in0 sum2.2.in1
net JointPoz-cmd joint.2.pos-cmd => sum2.2.in0
net CHLTriggered comp.0.out => and2.0.in0
net AtPosition comp.1.equal => and2.7.in0
net VelX ddt.0.out => hypot.0.in0
net VelY ddt.1.out => hypot.0.in1
net FloatSwitchSet flipflop.0.out => or2.3.in1 and2.7.in1
net ModeIsAuto halui.mode.is-auto => mux2.5.sel
net VelXY hypot.0.out => minmax.0.in comp.0.in0
net TriggerEStop logic.0.or => estop-latch.0.fault-in
net MaximumVelocity minmax.0.max => mult2.1.in0
net TurnTorchOn motion.spindle-forward => xor2.0.in0 and2.8.in0 and2.6.in0 mux2.4.sel not.0.in
net HeightAdjustment mult2.0.out => mux2.3.in1
net VelocityThreshold mult2.1.out => comp.0.in1
net HeightOffset mux2.0.out => sum2.1.in1
net AdjustmentDirection mux2.1.out => mult2.0.in1
net PositionSnapshot mux2.2.out => sum2.1.in0 mux2.2.in0
net SelectedAdjustment mux2.3.out => mux2.0.in1
net PosZ-cmd mux2.4.out => stepgen.2.position-cmd comp.1.in1
net PosSelectB mux2.5.out => mux2.4.in0
net PosSelectC mux2.6.out => mux2.4.in1
net TurnTorchOff not.0.out => and2.5.in0 or2.7.in0 updown.0.reset
net ReversedArcOK not.1.out => minmax.0.reset
net PierceDelayElapsed oneshot.0.out-not => and2.2.in1
net IgnitionTimer oneshot.1.out => edge.0.in or2.8.in0
net AdjustHeight or2.0.out => xor2.2.in1 and2.1.in0
net TakeSnapshot or2.1.out => mux2.2.sel
net TriggerLimit or2.2.out => joint.2.neg-lim-sw-in joint.2.pos-lim-sw-in joint.2.home-sw-in
net ProbeOrArcOK or2.3.out => mux2.6.sel
net PAFOrArcOK or2.5.out => and2.3.in1
net EstopOrArcOK or2.6.out => flipflop.0.reset
net ExtEStop parport.0.pin-10-in => logic.0.in-00
net ExtEStop => logic.0.in-00
net LimitZ parport.0.pin-13-in => or2.2.in0
net ThresholdPercentage scale.0.out => mult2.1.in1
net PosZ-fb stepgen.2.position-fb => joint.2.motor-pos-fb mux2.2.in1 comp.1.in0
net PierceOffset sum2.0.out => mux2.0.in0
net DestinationHeight sum2.1.out => mux2.6.in1
net JointAxisDiff sum2.2.out => sum2.3.in1 sum2.4.in1
net StepCordsTH sum2.3.out => mux2.5.in1
net StepCordsML sum2.4.out => mux2.6.in0
net FeedHold xor2.0.out => motion.feed-hold
net CHLSwitched xor2.2.out => and2.1.in1
net ArcOKTimer oneshot.2.out => xor2.1.in0
net PierceLatch flipflop.1.out => mux2.0.sel oneshot.0.in
net IgnitionCounterS32 updown.0.count => conv-s32-float.0.in
net IgnitionCounterFloat conv-s32-float.0.out => comp.2.in1
net IgnitionTimerOff oneshot.1.out-not => updown.0.countup
net TorchOff not.2.out => flipflop.1.reset
net TorchTurnedOffOrTimeout or2.7.out => or2.6.in1
net IgnitionTimeout edge.0.out => or2.7.in1
net ExtinguishTimer oneshot.3.out edge.1.in
net ExtinguishLatch flipflop.2.out or2.8.in1
net ExtinguishTimeout edge.1.out flipflop.2.reset
net Timers or2.8.out => or2.4.in0

View file

@ -1,3 +0,0 @@
by_interface
Configuraciones demostrando el uso de hardware especifico.

View file

@ -3,9 +3,9 @@
# Loading real-time modules #
#########################################################################
loadrt [KINS]KINEMATICS
loadrt trivkins
loadrt hal_gm
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt pid num_chan=3
loadrt not
@ -42,11 +42,11 @@ net hw_fault gm.0.power-fault => not.0.in
net estop not.0.out => iocontrol.0.emc-enable-in
# connect enable signals for DAC and PID
net Xen joint.0.amp-enable-out => gm.0.dac.0.enable
net Xen axis.0.amp-enable-out => gm.0.dac.0.enable
net Xen => pid.0.enable
net Yen joint.1.amp-enable-out => gm.0.dac.1.enable
net Yen axis.1.amp-enable-out => gm.0.dac.1.enable
net Yen => pid.1.enable
net Zen joint.2.amp-enable-out => gm.0.dac.2.enable
net Zen axis.2.amp-enable-out => gm.0.dac.2.enable
net Zen => pid.2.enable
#########################################################################
@ -62,7 +62,7 @@ setp gm.0.encoder.0.counter-mode 0 #0:quad, 1:stepDir
setp gm.0.encoder.0.index-enable 0 #0:disable, 1:enable
setp gm.0.encoder.0.index-mode 1 #0:reset counter at index, 1:round position at index
setp gm.0.encoder.0.counts-per-rev 2000
setp gm.0.encoder.0.position-scale [JOINT_0]INPUT_SCALE
setp gm.0.encoder.0.position-scale [AXIS_0]INPUT_SCALE
setp gm.0.encoder.0.min-speed-estimate 0.1
# ################
@ -74,7 +74,7 @@ setp gm.0.encoder.1.counter-mode 0 #0:quad, 1:stepDir
setp gm.0.encoder.1.index-enable 0 #0:disable, 1:enable
setp gm.0.encoder.1.index-mode 1 #0:reset counter at index, 1:round position at index
setp gm.0.encoder.1.counts-per-rev 2000
setp gm.0.encoder.1.position-scale [JOINT_2]INPUT_SCALE
setp gm.0.encoder.1.position-scale [AXIS_2]INPUT_SCALE
setp gm.0.encoder.1.min-speed-estimate 0.1
# ################
@ -86,7 +86,7 @@ setp gm.0.encoder.2.counter-mode 0 #0:quad, 1:stepDir
setp gm.0.encoder.2.index-enable 0 #0:disable, 1:enable
setp gm.0.encoder.2.index-mode 1 #0:reset counter at index, 1:round position at index
setp gm.0.encoder.2.counts-per-rev 2000
setp gm.0.encoder.2.position-scale [JOINT_2]INPUT_SCALE
setp gm.0.encoder.2.position-scale [AXIS_2]INPUT_SCALE
setp gm.0.encoder.2.min-speed-estimate 0.1
#########################################################################
@ -98,45 +98,45 @@ setp gm.0.encoder.2.min-speed-estimate 0.1
# ################
# set PID loop gains from inifile
setp pid.0.Pgain [JOINT_0]P
setp pid.0.Igain [JOINT_0]I
setp pid.0.Dgain [JOINT_0]D
setp pid.0.bias [JOINT_0]BIAS
setp pid.0.FF0 [JOINT_0]FF0
setp pid.0.FF1 [JOINT_0]FF1
setp pid.0.FF2 [JOINT_0]FF2
setp pid.0.deadband [JOINT_0]DEADBAND
setp pid.0.maxoutput [JOINT_0]MAX_OUTPUT
setp pid.0.Pgain [AXIS_0]P
setp pid.0.Igain [AXIS_0]I
setp pid.0.Dgain [AXIS_0]D
setp pid.0.bias [AXIS_0]BIAS
setp pid.0.FF0 [AXIS_0]FF0
setp pid.0.FF1 [AXIS_0]FF1
setp pid.0.FF2 [AXIS_0]FF2
setp pid.0.deadband [AXIS_0]DEADBAND
setp pid.0.maxoutput [AXIS_0]MAX_OUTPUT
# ################
# Y [1] Axis
# ################
# set PID loop gains from inifile
setp pid.1.Pgain [JOINT_1]P
setp pid.1.Igain [JOINT_1]I
setp pid.1.Dgain [JOINT_1]D
setp pid.1.bias [JOINT_1]BIAS
setp pid.1.FF0 [JOINT_1]FF0
setp pid.1.FF1 [JOINT_1]FF1
setp pid.1.FF2 [JOINT_1]FF2
setp pid.1.deadband [JOINT_1]DEADBAND
setp pid.1.maxoutput [JOINT_1]MAX_OUTPUT
setp pid.1.Pgain [AXIS_1]P
setp pid.1.Igain [AXIS_1]I
setp pid.1.Dgain [AXIS_1]D
setp pid.1.bias [AXIS_1]BIAS
setp pid.1.FF0 [AXIS_1]FF0
setp pid.1.FF1 [AXIS_1]FF1
setp pid.1.FF2 [AXIS_1]FF2
setp pid.1.deadband [AXIS_1]DEADBAND
setp pid.1.maxoutput [AXIS_1]MAX_OUTPUT
# ################
# Z [2] Axis
# ################
# set PID loop gains from inifile
setp pid.2.Pgain [JOINT_2]P
setp pid.2.Igain [JOINT_2]I
setp pid.2.Dgain [JOINT_2]D
setp pid.2.bias [JOINT_2]BIAS
setp pid.2.FF0 [JOINT_2]FF0
setp pid.2.FF1 [JOINT_2]FF1
setp pid.2.FF2 [JOINT_2]FF2
setp pid.2.deadband [JOINT_2]DEADBAND
setp pid.2.maxoutput [JOINT_2]MAX_OUTPUT
setp pid.2.Pgain [AXIS_2]P
setp pid.2.Igain [AXIS_2]I
setp pid.2.Dgain [AXIS_2]D
setp pid.2.bias [AXIS_2]BIAS
setp pid.2.FF0 [AXIS_2]FF0
setp pid.2.FF1 [AXIS_2]FF1
setp pid.2.FF2 [AXIS_2]FF2
setp pid.2.deadband [AXIS_2]DEADBAND
setp pid.2.maxoutput [AXIS_2]MAX_OUTPUT
#########################################################################
# position reference and feedback connection #
@ -148,9 +148,9 @@ net Ypos-fb gm.0.encoder.1.position => pid.1.feedback
net Zpos-fb gm.0.encoder.2.position => pid.2.feedback
# connect position commands from motion module to PID
net Xpos-cmd joint.0.motor-pos-cmd => pid.0.command
net Ypos-cmd joint.1.motor-pos-cmd => pid.1.command
net Zpos-cmd joint.2.motor-pos-cmd => pid.2.command
net Xpos-cmd axis.0.motor-pos-cmd => pid.0.command
net Ypos-cmd axis.1.motor-pos-cmd => pid.1.command
net Zpos-cmd axis.2.motor-pos-cmd => pid.2.command
# connect PID output to DAC
net Xdac-cmd pid.0.output => gm.0.dac.0.value
@ -158,22 +158,22 @@ net Ydac-cmd pid.1.output => gm.0.dac.1.value
net Zdac-cmd pid.2.output => gm.0.dac.2.value
# connect position feedback
net Xpos-cmd => joint.0.motor-pos-fb
net Ypos-cmd => joint.1.motor-pos-fb
net Zpos-cmd => joint.2.motor-pos-fb
net Xpos-cmd => axis.0.motor-pos-fb
net Ypos-cmd => axis.1.motor-pos-fb
net Zpos-cmd => axis.2.motor-pos-fb
#########################################################################
# homing and limit switches #
#########################################################################
net lim-sw-x-pos gm.0.joint.0.pos-lim-sw-in-not => joint.0.pos-lim-sw-in
net lim-sw-x-neg gm.0.joint.0.neg-lim-sw-in-not => joint.0.neg-lim-sw-in
net lim-sw-x-home gm.0.joint.0.home-sw-in-not => joint.0.home-sw-in
net lim-sw-x-pos gm.0.axis.0.pos-lim-sw-in-not => axis.0.pos-lim-sw-in
net lim-sw-x-neg gm.0.axis.0.neg-lim-sw-in-not => axis.0.neg-lim-sw-in
net lim-sw-x-home gm.0.axis.0.home-sw-in-not => axis.0.home-sw-in
net lim-sw-y-pos gm.0.joint.1.pos-lim-sw-in-not => joint.1.pos-lim-sw-in
net lim-sw-y-neg gm.0.joint.1.neg-lim-sw-in-not => joint.1.neg-lim-sw-in
net lim-sw-y-home gm.0.joint.1.home-sw-in-not => joint.1.home-sw-in
net lim-sw-y-pos gm.0.axis.1.pos-lim-sw-in-not => axis.1.pos-lim-sw-in
net lim-sw-y-neg gm.0.axis.1.neg-lim-sw-in-not => axis.1.neg-lim-sw-in
net lim-sw-y-home gm.0.axis.1.home-sw-in-not => axis.1.home-sw-in
net lim-sw-z-pos gm.0.joint.2.pos-lim-sw-in-not => joint.2.pos-lim-sw-in
net lim-sw-z-neg gm.0.joint.2.neg-lim-sw-in-not => joint.2.neg-lim-sw-in
net lim-sw-z-home gm.0.joint.2.home-sw-in-not => joint.2.home-sw-in
net lim-sw-z-pos gm.0.axis.2.pos-lim-sw-in-not => axis.2.pos-lim-sw-in
net lim-sw-z-neg gm.0.axis.2.neg-lim-sw-in-not => axis.2.neg-lim-sw-in
net lim-sw-z-home gm.0.axis.2.home-sw-in-not => axis.2.home-sw-in

View file

@ -1,113 +1,117 @@
###############################################################################
# General section
###############################################################################
[EMC]
#- Version of this INI file
VERSION = 1.1
VERSION = $Revision$
#+ Name of machine, for use with display, etc.
MACHINE = GM6-PCI-3-axis-servo
#+ Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
DEBUG = 0
###############################################################################
# Sections for display options
###############################################################################
[DISPLAY]
#+ Name of display program, e.g., axis
#+ Name of display program, e.g., xemc
DISPLAY = axis
# DISPLAY = tklinuxcnc
# DISPLAY = usrmot
# DISPLAY = mini
# DISPLAY = tkemc
# DISPLAY = touchy
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.200
#- Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tkemc.txt
#- Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
#- Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
#+ Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.2
#- Prefix to be used
#PROGRAM_PREFIX = /home/gm/emc2/nc_files
PROGRAM_PREFIX = ../../nc_files/
#- Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_GRAPHIC = emc2.gif
INTRO_TIME = 1
###############################################################################
# Task controller section
###############################################################################
[FILTER]
#No Content
[RS274NGC]
#- File containing interpreter variables
PARAMETER_FILE = gm.var
###############################################################################
# Motion control section
###############################################################################
[EMCMOT]
#- Name of the motion controller to use (only one exists for nontrivkins)
EMCMOT = motmod
#- Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
#- Servo task period, in nanosecs - will be rounded to an int multiple of BASE_PERIOD
SERVO_PERIOD = 1000000
###############################################################################
# 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
[RS274NGC]
#- File containing interpreter variables
PARAMETER_FILE = gm.var
###############################################################################
# Motion control section
###############################################################################
[EMCMOT]
#- Name of the motion controller to use (only one exists for nontrivkins)
EMCMOT = motmod
#- Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
#- Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
#- Servo task period, in nanosecs - will be rounded to an int multiple of BASE_PERIOD
SERVO_PERIOD = 1000000
###############################################################################
# Hardware Abstraction Layer section
###############################################################################
[HAL]
# list of hal config files to run through halcmd
#+ files are executed in the order in which they appear
HALFILE = 3-axis-servo.hal
###############################################################################
# Trajectory planner section
###############################################################################
[HALUI]
#No Content
[TRAJ]
#+ machine specific settings
AXES = 3
COORDINATES = X Y Z
HOME = 0 0 0
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 0.424
MAX_LINEAR_VELOCITY = 30.48
DEFAULT_LINEAR_ACCELERATION = 300.0
MAX_LINEAR_ACCELERATION = 500.0
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 0.424
MAX_VELOCITY = 30.48
DEFAULT_ACCELERATION = 300.0
MAX_ACCELERATION = 500.0
###############################################################################
# Axes sections
###############################################################################
#+ First axis
[AXIS_0]
[EMCIO]
#- Name of IO controller program, e.g., io
EMCIO = io
#- cycle time, in seconds
CYCLE_TIME = 0.100
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -191.0
MAX_LIMIT = 0.0
MAX_VELOCITY = 30.48
MAX_ACCELERATION = 50.0
[JOINT_0]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 30.48
@ -127,6 +131,7 @@ HOME_LATCH_VEL = -2.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.0000
P = 10.0
@ -136,15 +141,10 @@ FF0 = 0.000
FF1 = 0.000
FF2 = 0.0
BIAS = 0.000
#+ Second axis
[AXIS_1]
[AXIS_Y]
MIN_LIMIT = 0.0
MAX_LIMIT = 270.0
MAX_VELOCITY = 30.48
MAX_ACCELERATION = 50.0
[JOINT_1]
TYPE = LINEAR
HOME = 0.000
MAX_VELOCITY = 30.48
@ -164,6 +164,7 @@ HOME_LATCH_VEL = 3.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.0000
P = 10.0
@ -173,15 +174,10 @@ FF0 = 0.000
FF1 = 0.000
FF2 = 0.0
BIAS = 0.000
#+ Third axis
[AXIS_2]
[AXIS_Z]
MIN_LIMIT = -985.0
MAX_LIMIT = 0.00
MAX_VELOCITY = 30.48
MAX_ACCELERATION = 50.0
[JOINT_2]
TYPE = LINEAR
HOME = 0.0
MAX_VELOCITY = 30.48
@ -201,6 +197,7 @@ HOME_LATCH_VEL = 3.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 0
# PID tuning params
DEADBAND = 0.0000
P = 10.0
@ -210,6 +207,14 @@ FF0 = 0.000
FF1 = 0.000
FF2 = 0.0
BIAS = 0.000
###############################################################################
# section for main IO controller parameters
###############################################################################
[EMCIO]
#- Name of IO controller program, e.g., io
EMCIO = io
#- cycle time, in seconds
CYCLE_TIME = 0.100

View file

@ -3,9 +3,9 @@
# Loading real-time modules setup #
#########################################################################
loadrt [KINS]KINEMATICS
loadrt trivkins
loadrt hal_gm
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
loadrt not
loadusr halmeter
#loadusr halscope -f
@ -36,9 +36,9 @@ net hw_fault gm.0.power-fault => not.0.in
net estop not.0.out => iocontrol.0.emc-enable-in
# connect enable signals for step generators
net Xen joint.0.amp-enable-out => gm.0.stepgen.0.enable
net Yen joint.1.amp-enable-out => gm.0.stepgen.1.enable
net Zen joint.2.amp-enable-out => gm.0.stepgen.2.enable
net Xen axis.0.amp-enable-out => gm.0.stepgen.0.enable
net Yen axis.1.amp-enable-out => gm.0.stepgen.1.enable
net Zen axis.2.amp-enable-out => gm.0.stepgen.2.enable
#########################################################################
# stepgen setup #
@ -52,9 +52,9 @@ setp gm.0.stepgen.0.invert-step2 0
setp gm.0.stepgen.0.step-type 0 #0:StepDir, 1: UpDown, 2: Quad
setp gm.0.stepgen.0.control-type 0 #0:position control, 1:velocity control
setp gm.0.stepgen.0.maxvel 0 #do not use the maxvel parameter, let interpolator interpolate
setp gm.0.stepgen.0.position-scale [JOINT_0]SCALE
setp gm.0.stepgen.0.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp gm.0.stepgen.0.maxvel [JOINT_0]STEPGEN_MAXVEL
setp gm.0.stepgen.0.position-scale [AXIS_0]SCALE
setp gm.0.stepgen.0.maxaccel [AXIS_0]STEPGEN_MAXACCEL
setp gm.0.stepgen.0.maxvel [AXIS_0]STEPGEN_MAXVEL
setp gm.0.stepgen.1.steplen 5000 #5000 ns = 5 us
setp gm.0.stepgen.1.stepspace 5000 #5000 ns = 5 us
@ -64,9 +64,9 @@ setp gm.0.stepgen.1.invert-step2 0
setp gm.0.stepgen.1.step-type 0 #0:StepDir, 1: UpDown, 2: Quad
setp gm.0.stepgen.1.control-type 0 #0:position control, 1:velocity control
setp gm.0.stepgen.1.maxvel 0 #do not use the maxvel parameter, let interpolator interpolate
setp gm.0.stepgen.1.position-scale [JOINT_1]SCALE
setp gm.0.stepgen.1.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp gm.0.stepgen.1.maxvel [JOINT_1]STEPGEN_MAXVEL
setp gm.0.stepgen.1.position-scale [AXIS_1]SCALE
setp gm.0.stepgen.1.maxaccel [AXIS_1]STEPGEN_MAXACCEL
setp gm.0.stepgen.1.maxvel [AXIS_1]STEPGEN_MAXVEL
setp gm.0.stepgen.2.steplen 5000 #5000 ns = 5 us
setp gm.0.stepgen.2.stepspace 5000 #5000 ns = 5 us
@ -76,36 +76,36 @@ setp gm.0.stepgen.2.invert-step2 0
setp gm.0.stepgen.2.step-type 0 #0:StepDir, 1: UpDown, 2: Quad
setp gm.0.stepgen.2.control-type 0 #0:position control, 1:velocity control
setp gm.0.stepgen.2.maxvel 0 #do not use the maxvel parameter, let interpolator interpolate
setp gm.0.stepgen.2.position-scale [JOINT_2]SCALE
setp gm.0.stepgen.2.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp gm.0.stepgen.2.maxvel [JOINT_2]STEPGEN_MAXVEL
setp gm.0.stepgen.2.position-scale [AXIS_2]SCALE
setp gm.0.stepgen.2.maxaccel [AXIS_2]STEPGEN_MAXACCEL
setp gm.0.stepgen.2.maxvel [AXIS_2]STEPGEN_MAXVEL
#########################################################################
# position reference and feedback #
#########################################################################
# connect position commands from motion module to step generator
net Xpos-cmd joint.0.motor-pos-cmd => gm.0.stepgen.0.position-cmd
net Ypos-cmd joint.1.motor-pos-cmd => gm.0.stepgen.1.position-cmd
net Zpos-cmd joint.2.motor-pos-cmd => gm.0.stepgen.2.position-cmd
net Xpos-cmd axis.0.motor-pos-cmd => gm.0.stepgen.0.position-cmd
net Ypos-cmd axis.1.motor-pos-cmd => gm.0.stepgen.1.position-cmd
net Zpos-cmd axis.2.motor-pos-cmd => gm.0.stepgen.2.position-cmd
# connect position feedback
net Xpos-fb gm.0.stepgen.0.position-fb => joint.0.motor-pos-fb
net Ypos-fb gm.0.stepgen.1.position-fb => joint.1.motor-pos-fb
net Zpos-fb gm.0.stepgen.2.position-fb => joint.2.motor-pos-fb
net Xpos-fb gm.0.stepgen.0.position-fb => axis.0.motor-pos-fb
net Ypos-fb gm.0.stepgen.1.position-fb => axis.1.motor-pos-fb
net Zpos-fb gm.0.stepgen.2.position-fb => axis.2.motor-pos-fb
#########################################################################
# homing and limit switches #
#########################################################################
net lim-sw-x-pos gm.0.joint.0.pos-lim-sw-in-not => joint.0.pos-lim-sw-in
net lim-sw-x-neg gm.0.joint.0.neg-lim-sw-in-not => joint.0.neg-lim-sw-in
net lim-sw-x-home gm.0.joint.0.home-sw-in-not => joint.0.home-sw-in
net lim-sw-x-pos gm.0.axis.0.pos-lim-sw-in-not => axis.0.pos-lim-sw-in
net lim-sw-x-neg gm.0.axis.0.neg-lim-sw-in-not => axis.0.neg-lim-sw-in
net lim-sw-x-home gm.0.axis.0.home-sw-in-not => axis.0.home-sw-in
net lim-sw-y-pos gm.0.joint.1.pos-lim-sw-in-not => joint.1.pos-lim-sw-in
net lim-sw-y-neg gm.0.joint.1.neg-lim-sw-in-not => joint.1.neg-lim-sw-in
net lim-sw-y-home gm.0.joint.1.home-sw-in-not => joint.1.home-sw-in
net lim-sw-y-pos gm.0.axis.1.pos-lim-sw-in-not => axis.1.pos-lim-sw-in
net lim-sw-y-neg gm.0.axis.1.neg-lim-sw-in-not => axis.1.neg-lim-sw-in
net lim-sw-y-home gm.0.axis.1.home-sw-in-not => axis.1.home-sw-in
net lim-sw-z-pos gm.0.joint.2.pos-lim-sw-in-not => joint.2.pos-lim-sw-in
net lim-sw-z-neg gm.0.joint.2.neg-lim-sw-in-not => joint.2.neg-lim-sw-in
net lim-sw-z-home gm.0.joint.2.home-sw-in-not => joint.2.home-sw-in
net lim-sw-z-pos gm.0.axis.2.pos-lim-sw-in-not => axis.2.pos-lim-sw-in
net lim-sw-z-neg gm.0.axis.2.neg-lim-sw-in-not => axis.2.neg-lim-sw-in
net lim-sw-z-home gm.0.axis.2.home-sw-in-not => axis.2.home-sw-in

View file

@ -1,113 +1,117 @@
###############################################################################
# General section
###############################################################################
[EMC]
#- Version of this INI file
VERSION = 1.1
VERSION = $Revision$
#+ Name of machine, for use with display, etc.
MACHINE = GM6-PCI-3-axis-stepper
#+ Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
DEBUG = 0
###############################################################################
# Sections for display options
###############################################################################
[DISPLAY]
#+ Name of display program, e.g., axis
#+ Name of display program, e.g., xemc
DISPLAY = axis
# DISPLAY = tklinuxcnc
# DISPLAY = usrmot
# DISPLAY = mini
# DISPLAY = tkemc
# DISPLAY = touchy
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.200
#- Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tkemc.txt
#- Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
#- Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
#+ Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.2
#- Prefix to be used
#PROGRAM_PREFIX = /home/gm/emc2/nc_files
PROGRAM_PREFIX = ../../nc_files/
#- Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_GRAPHIC = emc2.gif
INTRO_TIME = 1
###############################################################################
# Task controller section
###############################################################################
[FILTER]
#No Content
[RS274NGC]
#- File containing interpreter variables
PARAMETER_FILE = gm.var
###############################################################################
# Motion control section
###############################################################################
[EMCMOT]
#- Name of the motion controller to use (only one exists for nontrivkins)
EMCMOT = motmod
#- Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
#- Servo task period, in nanosecs - will be rounded to an int multiple of BASE_PERIOD
SERVO_PERIOD = 1000000
###############################################################################
# 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
[RS274NGC]
#- File containing interpreter variables
PARAMETER_FILE = gm.var
###############################################################################
# Motion control section
###############################################################################
[EMCMOT]
#- Name of the motion controller to use (only one exists for nontrivkins)
EMCMOT = motmod
#- Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
#- Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
#- Servo task period, in nanosecs - will be rounded to an int multiple of BASE_PERIOD
SERVO_PERIOD = 1000000
###############################################################################
# Hardware Abstraction Layer section
###############################################################################
[HAL]
# list of hal config files to run through halcmd
#+ files are executed in the order in which they appear
HALFILE = 3-axis-stepper.hal
###############################################################################
# Trajectory planner section
###############################################################################
[HALUI]
#No Content
[TRAJ]
#+ machine specific settings
AXES = 3
COORDINATES = X Y Z
HOME = 0 0 0
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 0.424
MAX_LINEAR_VELOCITY = 30.48
DEFAULT_LINEAR_ACCELERATION = 300.0
MAX_LINEAR_ACCELERATION = 500.0
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 0.424
MAX_VELOCITY = 30.48
DEFAULT_ACCELERATION = 300.0
MAX_ACCELERATION = 500.0
###############################################################################
# Axes sections
###############################################################################
#+ First axis
[AXIS_0]
[EMCIO]
#- Name of IO controller program, e.g., io
EMCIO = io
#- cycle time, in seconds
CYCLE_TIME = 0.100
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -191.0
MAX_LIMIT = 0.0
MAX_VELOCITY = 30.48
MAX_ACCELERATION = 50.0
[JOINT_0]
TYPE = LINEAR
HOME = -50.000
MAX_VELOCITY = 30.48
@ -127,15 +131,10 @@ HOME_LATCH_VEL = -2.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 1
#+ Second axis
[AXIS_1]
[AXIS_Y]
MIN_LIMIT = -250.0
MAX_LIMIT = 0.0
MAX_VELOCITY = 30.48
MAX_ACCELERATION = 50.0
[JOINT_1]
TYPE = LINEAR
HOME = -40.000
MAX_VELOCITY = 30.48
@ -155,15 +154,10 @@ HOME_LATCH_VEL = -3.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 1
#+ Third axis
[AXIS_2]
[AXIS_Z]
MIN_LIMIT = -985.0
MAX_LIMIT = 0.00
MAX_VELOCITY = 30.48
MAX_ACCELERATION = 50.0
[JOINT_2]
TYPE = LINEAR
HOME = -30.0
MAX_VELOCITY = 30.48
@ -183,6 +177,14 @@ HOME_LATCH_VEL = -3.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
HOME_SEQUENCE = 0
###############################################################################
# section for main IO controller parameters
###############################################################################
[EMCIO]
#- Name of IO controller program, e.g., io
EMCIO = io
#- cycle time, in seconds
CYCLE_TIME = 0.100

View file

@ -1,12 +0,0 @@
Esta configuración utiliza la placa GM6-PCI de General Mechatronics, que puede controlar máquinas de hasta 6 ejes. Tiene una amplia capacidad de expansión de E/S: interruptores home aislados y finales para cada eje, E/S digital 4x8, módulos de E/S analógica y digital aislados para el bus de campo RS485.
Para más información, lea la sección del driver GM6-PCI del Manual del integrador o visite:
www.generalmechatronics.com
Descripción de las configuraciones de muestra:
Servo de 3 ejes:
Esta configuración muestra cómo configurar el DAC del codificador y del eje, y cómo conectarlos al módulo PID hal. Los 3 ejes utilizan un interruptor home y dos interruptores de límite. La entrada de fallo de alimentación está conectada al pin hal E-stop.
3 ejes, de pasos:
Esta configuración muestra cómo configurar el módulo stepgen. Los 3 ejes utilizan un interruptor home y dos interruptores de límite. La entrada de fallo de alimentación está conectada al pin hal E-stop.

View file

@ -1,3 +0,0 @@
General Mechatronics
www.generalmechatronics.com

View file

@ -1,3 +0,0 @@
Mesa Electronics
www.mesanet.com

View file

@ -1,32 +1,53 @@
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=3x20
CONFIG="firmware=hm2/3x20-1/SV24.BIT num_encoders=3 num_pwmgens=3 num_stepgens=0"
[EMC]
# The version string for this INI file.
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = HM2-Servo
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG = 0x00000003
#DEBUG = 0x00000007
DEBUG = 0
[DISPLAY]
# Name of display program, e.g., tklinuxcnc
# Name of display program, e.g., tkemc
DISPLAY = axis
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.0500
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.5
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
@ -35,76 +56,91 @@ gif = image-to-gcode
jpg = image-to-gcode
py = python
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-servo.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-servo.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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 = hm2-servo.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
[HALUI]
#No Content
[TRAJ]
AXES = 3
# COORDINATES = X Y Z R P W
COORDINATES = X Y Z
HOME = 0 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 3.0
MAX_LINEAR_VELOCITY = 4.0
DEFAULT_LINEAR_ACCELERATION = 6.0
MAX_LINEAR_ACCELERATION = 7.0
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 3.0
MAX_VELOCITY = 4.0
DEFAULT_ACCELERATION = 6.0
MAX_ACCELERATION = 7.0
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_0]
[AXIS_0]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = 81920
OUTPUT_SCALE = -1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
HOME = 0.000
@ -115,6 +151,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -125,23 +162,24 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[AXIS_Y]
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_1]
[AXIS_1]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = -81920
OUTPUT_SCALE = 1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
HOME = 0.000
@ -152,6 +190,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = YES
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -162,23 +201,24 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[AXIS_Z]
MIN_LIMIT = -3.0
MAX_LIMIT = 3.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_2]
[AXIS_2]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = 81920
OUTPUT_SCALE = -1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 3.0
HOME = 0.0
@ -189,6 +229,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -199,7 +240,17 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=3x20
CONFIG="firmware=hm2/3x20-1/SV24.BIT num_encoders=3 num_pwmgens=3 num_stepgens=0"
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl

View file

@ -1,32 +1,53 @@
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=4i65
CONFIG="firmware=hm2/4i65/SVST8_4.BIT num_encoders=3 num_pwmgens=3 num_stepgens=0"
[EMC]
# The version string for this INI file.
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = HM2-Servo
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG = 0x00000003
#DEBUG = 0x00000007
DEBUG = 0
[DISPLAY]
# Name of display program, e.g., tklinuxcnc
# Name of display program, e.g., tkemc
DISPLAY = axis
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.0500
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.5
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
@ -35,76 +56,91 @@ gif = image-to-gcode
jpg = image-to-gcode
py = python
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-servo.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-servo.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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 = hm2-servo.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
[HALUI]
#No Content
[TRAJ]
AXES = 3
# COORDINATES = X Y Z R P W
COORDINATES = X Y Z
HOME = 0 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 3.0
MAX_LINEAR_VELOCITY = 4.0
DEFAULT_LINEAR_ACCELERATION = 6.0
MAX_LINEAR_ACCELERATION = 7.0
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 3.0
MAX_VELOCITY = 4.0
DEFAULT_ACCELERATION = 6.0
MAX_ACCELERATION = 7.0
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_0]
[AXIS_0]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = 81920
OUTPUT_SCALE = -1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
HOME = 0.000
@ -115,6 +151,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -125,23 +162,24 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[AXIS_Y]
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_1]
[AXIS_1]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = -81920
OUTPUT_SCALE = 1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
HOME = 0.000
@ -152,6 +190,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = YES
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -162,23 +201,24 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[AXIS_Z]
MIN_LIMIT = -3.0
MAX_LIMIT = 3.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_2]
[AXIS_2]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = 81920
OUTPUT_SCALE = -1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 3.0
HOME = 0.0
@ -189,6 +229,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -199,7 +240,17 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=4i65
CONFIG="firmware=hm2/4i65/SVST8_4.BIT num_encoders=3 num_pwmgens=3 num_stepgens=0"
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl

View file

@ -1,32 +1,53 @@
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=4i68
CONFIG="firmware=hm2/4i68/SVST8_4.BIT num_encoders=3 num_pwmgens=3 num_stepgens=0"
[EMC]
# The version string for this INI file.
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = HM2-Servo
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG = 0x00000003
#DEBUG = 0x00000007
DEBUG = 0
[DISPLAY]
# Name of display program, e.g., tklinuxcnc
# Name of display program, e.g., tkemc
DISPLAY = axis
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.0500
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.5
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
@ -35,76 +56,91 @@ gif = image-to-gcode
jpg = image-to-gcode
py = python
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-servo.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-servo.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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 = hm2-servo.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
[HALUI]
#No Content
[TRAJ]
AXES = 3
# COORDINATES = X Y Z R P W
COORDINATES = X Y Z
HOME = 0 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 3.0
MAX_LINEAR_VELOCITY = 4.0
DEFAULT_LINEAR_ACCELERATION = 6.0
MAX_LINEAR_ACCELERATION = 7.0
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 3.0
MAX_VELOCITY = 4.0
DEFAULT_ACCELERATION = 6.0
MAX_ACCELERATION = 7.0
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_0]
[AXIS_0]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = 81920
OUTPUT_SCALE = -1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
HOME = 0.000
@ -115,6 +151,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -125,23 +162,24 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[AXIS_Y]
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_1]
[AXIS_1]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = -81920
OUTPUT_SCALE = 1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
HOME = 0.000
@ -152,6 +190,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = YES
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -162,23 +201,24 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[AXIS_Z]
MIN_LIMIT = -3.0
MAX_LIMIT = 3.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_2]
[AXIS_2]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = 81920
OUTPUT_SCALE = -1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 3.0
HOME = 0.0
@ -189,6 +229,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -199,7 +240,17 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=4i68
CONFIG="firmware=hm2/4i68/SVST8_4.BIT num_encoders=3 num_pwmgens=3 num_stepgens=0"
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl

View file

@ -1,32 +1,53 @@
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=5i20
CONFIG="firmware=hm2/5i20/SVST8_4.BIT num_encoders=3 num_pwmgens=3 num_stepgens=0"
[EMC]
# The version string for this INI file.
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = HM2-Servo
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG = 0x00000003
#DEBUG = 0x00000007
DEBUG = 0
[DISPLAY]
# Name of display program, e.g., tklinuxcnc
# Name of display program, e.g., tkemc
DISPLAY = axis
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.0500
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.5
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
@ -35,76 +56,91 @@ gif = image-to-gcode
jpg = image-to-gcode
py = python
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-servo.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-servo.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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 = hm2-servo.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
[HALUI]
#No Content
[TRAJ]
AXES = 3
# COORDINATES = X Y Z R P W
COORDINATES = X Y Z
HOME = 0 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 3.0
MAX_LINEAR_VELOCITY = 4.0
DEFAULT_LINEAR_ACCELERATION = 6.0
MAX_LINEAR_ACCELERATION = 7.0
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 3.0
MAX_VELOCITY = 4.0
DEFAULT_ACCELERATION = 6.0
MAX_ACCELERATION = 7.0
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_0]
[AXIS_0]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = 81920
OUTPUT_SCALE = -1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
HOME = 0.000
@ -115,6 +151,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -125,23 +162,24 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[AXIS_Y]
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_1]
[AXIS_1]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = -81920
OUTPUT_SCALE = 1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
HOME = 0.000
@ -152,6 +190,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = YES
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -162,23 +201,24 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[AXIS_Z]
MIN_LIMIT = -3.0
MAX_LIMIT = 3.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_2]
[AXIS_2]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = 81920
OUTPUT_SCALE = -1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 3.0
HOME = 0.0
@ -189,6 +229,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -199,7 +240,17 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=5i20
CONFIG="firmware=hm2/5i20/SVST8_4.BIT num_encoders=3 num_pwmgens=3 num_stepgens=0"
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl

View file

@ -1,32 +1,53 @@
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=5i22
CONFIG="firmware=hm2/5i22-1.5/SVST8_8.BIT num_encoders=3 num_pwmgens=3 num_stepgens=0"
[EMC]
# The version string for this INI file.
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = HM2-Servo
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG = 0x00000003
#DEBUG = 0x00000007
DEBUG = 0
[DISPLAY]
# Name of display program, e.g., tklinuxcnc
# Name of display program, e.g., tkemc
DISPLAY = axis
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.0500
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.5
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
@ -35,76 +56,91 @@ gif = image-to-gcode
jpg = image-to-gcode
py = python
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-servo.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-servo.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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 = hm2-servo.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
[HALUI]
#No Content
[TRAJ]
AXES = 3
# COORDINATES = X Y Z R P W
COORDINATES = X Y Z
HOME = 0 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 3.0
MAX_LINEAR_VELOCITY = 4.0
DEFAULT_LINEAR_ACCELERATION = 6.0
MAX_LINEAR_ACCELERATION = 7.0
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 3.0
MAX_VELOCITY = 4.0
DEFAULT_ACCELERATION = 6.0
MAX_ACCELERATION = 7.0
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_0]
[AXIS_0]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = 81920
OUTPUT_SCALE = -1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
HOME = 0.000
@ -115,6 +151,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -125,23 +162,24 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[AXIS_Y]
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_1]
[AXIS_1]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = -81920
OUTPUT_SCALE = 1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
HOME = 0.000
@ -152,6 +190,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = YES
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -162,23 +201,24 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[AXIS_Z]
MIN_LIMIT = -3.0
MAX_LIMIT = 3.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_2]
[AXIS_2]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = 81920
OUTPUT_SCALE = -1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 3.0
HOME = 0.0
@ -189,6 +229,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -199,7 +240,17 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=5i22
CONFIG="firmware=hm2/5i22-1.5/SVST8_8.BIT num_encoders=3 num_pwmgens=3 num_stepgens=0"
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl

View file

@ -1,32 +1,53 @@
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=5i22
CONFIG="firmware=hm2/5i22-1/SVST8_8.BIT num_encoders=3 num_pwmgens=3 num_stepgens=0"
[EMC]
# The version string for this INI file.
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = HM2-Servo
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG = 0x00000003
#DEBUG = 0x00000007
DEBUG = 0
[DISPLAY]
# Name of display program, e.g., tklinuxcnc
# Name of display program, e.g., tkemc
DISPLAY = axis
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.0500
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.5
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
@ -35,76 +56,91 @@ gif = image-to-gcode
jpg = image-to-gcode
py = python
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-servo.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-servo.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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 = hm2-servo.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
[HALUI]
#No Content
[TRAJ]
AXES = 3
# COORDINATES = X Y Z R P W
COORDINATES = X Y Z
HOME = 0 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 3.0
MAX_LINEAR_VELOCITY = 4.0
DEFAULT_LINEAR_ACCELERATION = 6.0
MAX_LINEAR_ACCELERATION = 7.0
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 3.0
MAX_VELOCITY = 4.0
DEFAULT_ACCELERATION = 6.0
MAX_ACCELERATION = 7.0
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_0]
[AXIS_0]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = 81920
OUTPUT_SCALE = -1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
HOME = 0.000
@ -115,6 +151,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -125,23 +162,24 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[AXIS_Y]
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_1]
[AXIS_1]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = -81920
OUTPUT_SCALE = 1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
HOME = 0.000
@ -152,6 +190,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = YES
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -162,23 +201,24 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[AXIS_Z]
MIN_LIMIT = -3.0
MAX_LIMIT = 3.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_2]
[AXIS_2]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = 81920
OUTPUT_SCALE = -1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 3.0
HOME = 0.0
@ -189,6 +229,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -199,7 +240,17 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=5i22
CONFIG="firmware=hm2/5i22-1/SVST8_8.BIT num_encoders=3 num_pwmgens=3 num_stepgens=0"
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl

View file

@ -1,32 +1,53 @@
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=5i23
CONFIG="firmware=hm2/5i23/SVST8_4.BIT num_encoders=3 num_pwmgens=3 num_stepgens=0"
[EMC]
# The version string for this INI file.
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = HM2-Servo
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG = 0x00000003
#DEBUG = 0x00000007
DEBUG = 0
[DISPLAY]
# Name of display program, e.g., tklinuxcnc
# Name of display program, e.g., tkemc
DISPLAY = axis
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.0500
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.5
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
@ -35,76 +56,91 @@ gif = image-to-gcode
jpg = image-to-gcode
py = python
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-servo.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-servo.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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 = hm2-servo.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
[HALUI]
#No Content
[TRAJ]
AXES = 3
# COORDINATES = X Y Z R P W
COORDINATES = X Y Z
HOME = 0 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 3.0
MAX_LINEAR_VELOCITY = 4.0
DEFAULT_LINEAR_ACCELERATION = 6.0
MAX_LINEAR_ACCELERATION = 7.0
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 3.0
MAX_VELOCITY = 4.0
DEFAULT_ACCELERATION = 6.0
MAX_ACCELERATION = 7.0
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_0]
[AXIS_0]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = 81920
OUTPUT_SCALE = -1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
HOME = 0.000
@ -115,6 +151,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -125,23 +162,24 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[AXIS_Y]
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_1]
[AXIS_1]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = -81920
OUTPUT_SCALE = 1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
HOME = 0.000
@ -152,6 +190,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = YES
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -162,23 +201,24 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[AXIS_Z]
MIN_LIMIT = -3.0
MAX_LIMIT = 3.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_2]
[AXIS_2]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = 81920
OUTPUT_SCALE = -1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 3.0
HOME = 0.0
@ -189,6 +229,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -199,7 +240,17 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=5i23
CONFIG="firmware=hm2/5i23/SVST8_4.BIT num_encoders=3 num_pwmgens=3 num_stepgens=0"
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl

View file

@ -1,32 +1,53 @@
[HOSTMOT2]
DRIVER=hm2_7i43
BOARD=7i43
CONFIG="firmware=hm2/7i43-4/SVST4_4.BIT num_encoders=3 num_pwmgens=3 num_stepgens=0"
[EMC]
# The version string for this INI file.
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = HM2-Servo
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG = 0x00000003
#DEBUG = 0x00000007
DEBUG = 0
[DISPLAY]
# Name of display program, e.g., tklinuxcnc
# Name of display program, e.g., tkemc
DISPLAY = axis
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.0500
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.5
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
@ -35,76 +56,91 @@ gif = image-to-gcode
jpg = image-to-gcode
py = python
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-servo.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-servo.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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 = hm2-servo.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
[HALUI]
#No Content
[TRAJ]
AXES = 3
# COORDINATES = X Y Z R P W
COORDINATES = X Y Z
HOME = 0 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 3.0
MAX_LINEAR_VELOCITY = 4.0
DEFAULT_LINEAR_ACCELERATION = 6.0
MAX_LINEAR_ACCELERATION = 7.0
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 3.0
MAX_VELOCITY = 4.0
DEFAULT_ACCELERATION = 6.0
MAX_ACCELERATION = 7.0
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_0]
[AXIS_0]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = 81920
OUTPUT_SCALE = -1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
HOME = 0.000
@ -115,6 +151,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -125,23 +162,24 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[AXIS_Y]
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_1]
[AXIS_1]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = -81920
OUTPUT_SCALE = 1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
HOME = 0.000
@ -152,6 +190,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = YES
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -162,23 +201,24 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[AXIS_Z]
MIN_LIMIT = -3.0
MAX_LIMIT = 3.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_2]
[AXIS_2]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = 81920
OUTPUT_SCALE = -1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 3.0
HOME = 0.0
@ -189,6 +229,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -199,7 +240,17 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[HOSTMOT2]
DRIVER=hm2_7i43
BOARD=7i43
CONFIG="firmware=hm2/7i43-4/SVST4_4.BIT num_encoders=3 num_pwmgens=3 num_stepgens=0"
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl

View file

@ -1,32 +1,53 @@
[HOSTMOT2]
DRIVER=hm2_7i43
BOARD=7i43
CONFIG="firmware=hm2/7i43-2/SVST4_4.BIT num_encoders=3 num_pwmgens=3 num_stepgens=0"
[EMC]
# The version string for this INI file.
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = HM2-Servo
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG = 0x00000003
#DEBUG = 0x00000007
DEBUG = 0
[DISPLAY]
# Name of display program, e.g., tklinuxcnc
# Name of display program, e.g., tkemc
DISPLAY = axis
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.0500
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.5
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
@ -35,76 +56,91 @@ gif = image-to-gcode
jpg = image-to-gcode
py = python
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-servo.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-servo.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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 = hm2-servo.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
[HALUI]
#No Content
[TRAJ]
AXES = 3
# COORDINATES = X Y Z R P W
COORDINATES = X Y Z
HOME = 0 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 3.0
MAX_LINEAR_VELOCITY = 4.0
DEFAULT_LINEAR_ACCELERATION = 6.0
MAX_LINEAR_ACCELERATION = 7.0
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 3.0
MAX_VELOCITY = 4.0
DEFAULT_ACCELERATION = 6.0
MAX_ACCELERATION = 7.0
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_0]
[AXIS_0]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = 81920
OUTPUT_SCALE = -1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
HOME = 0.000
@ -115,6 +151,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -125,23 +162,24 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[AXIS_Y]
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_1]
[AXIS_1]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = -81920
OUTPUT_SCALE = 1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
HOME = 0.000
@ -152,6 +190,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = YES
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -162,23 +201,24 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[AXIS_Z]
MIN_LIMIT = -3.0
MAX_LIMIT = 3.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_2]
[AXIS_2]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = 81920
OUTPUT_SCALE = -1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 3.0
HOME = 0.0
@ -189,6 +229,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -199,7 +240,17 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[HOSTMOT2]
DRIVER=hm2_7i43
BOARD=7i43
CONFIG="firmware=hm2/7i43-2/SVST4_4.BIT num_encoders=3 num_pwmgens=3 num_stepgens=0"
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl

View file

@ -1,32 +1,53 @@
[HOSTMOT2]
DRIVER=hm2_7i90
BOARD=7i90
CONFIG=""
[EMC]
# The version string for this INI file.
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = HM2-Servo
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG = 0x00000003
#DEBUG = 0x00000007
DEBUG = 0
[DISPLAY]
# Name of display program, e.g., tklinuxcnc
# Name of display program, e.g., tkemc
DISPLAY = axis
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.0500
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.5
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
@ -35,76 +56,91 @@ gif = image-to-gcode
jpg = image-to-gcode
py = python
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-servo.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-servo.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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 = hm2-servo.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
[HALUI]
#No Content
[TRAJ]
AXES = 3
# COORDINATES = X Y Z R P W
COORDINATES = X Y Z
HOME = 0 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 3.0
MAX_LINEAR_VELOCITY = 4.0
DEFAULT_LINEAR_ACCELERATION = 6.0
MAX_LINEAR_ACCELERATION = 7.0
CYCLE_TIME = 0.010
DEFAULT_VELOCITY = 3.0
MAX_VELOCITY = 4.0
DEFAULT_ACCELERATION = 6.0
MAX_ACCELERATION = 7.0
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_0]
[AXIS_0]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = 81920
OUTPUT_SCALE = -1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
HOME = 0.000
@ -115,6 +151,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -125,23 +162,24 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[AXIS_Y]
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_1]
[AXIS_1]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = -81920
OUTPUT_SCALE = 1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 10.0
HOME = 0.000
@ -152,6 +190,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = YES
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -162,23 +201,24 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[AXIS_Z]
MIN_LIMIT = -3.0
MAX_LIMIT = 3.0
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
[JOINT_2]
[AXIS_2]
TYPE = LINEAR
MAX_VELOCITY = 1.0
MAX_ACCELERATION = 4.0
BACKLASH = 0.000
FERROR = 0.010
MIN_FERROR = 0.002
INPUT_SCALE = 81920
OUTPUT_SCALE = -1.000
OUTPUT_OFFSET = 0.0
MAX_OUTPUT = 1.0
MIN_LIMIT = -3.0
MAX_LIMIT = 3.0
HOME = 0.0
@ -189,6 +229,7 @@ HOME_LATCH_VEL = 0.10
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
# PID tuning params
DEADBAND = 0.000015
P = 100.0
@ -199,7 +240,17 @@ FF1 = 1.000
FF2 = 0.0
BIAS = 0.000
[HOSTMOT2]
DRIVER=hm2_7i90
BOARD=7i90
CONFIG=""
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl

View file

@ -1,6 +1,6 @@
This configuration drives a 3-axis servo machine using a Mesa AnythingIO board with the HostMot2 firmware. The config will only run if you have the card installed and have installed the firmware.
See LinuxCNC_Documentation.pdf - 11.4 Mesa HostMot2 Driver section for more information.
See the HostMot2 section of the Integrators manual for more information.
All 3 axes use a home switch. All home switches are connected to a single shared input pin. X and Z home without encoder index, Y homes with encoder index.

View file

@ -1,20 +0,0 @@
Esta configuración controla 3 servomotores en 3 ejes utilizando una placa Mesa AnythingIO con el firmware HostMot2.
La configuración solo se ejecutará si tiene la tarjeta y el firmware instalados.
Vea la sección LinuxCNC_Documentación.pdf - 11.4 Driver Mesa HostMot2 para más información.
Los 3 ejes utilizan interruptor home. Todos los interruptores home están conectados a un solo pin de entrada compartido. home X e Z sin índice en codificador, home Y con índice en codificador.
No se utilizan interruptores de límite.
Estas configuraciones tienen 3 codificadores, 3 PWM y 0 StepGens
5i22-big Para la versión de 1.5M puertas
5i22-small Para la versión de 1.0M puertas
7i43-big Para la versión de 400k puertas
7i43-small Para la versión de 200k puertas
3x20-small para la versión de 1.0M puertas

View file

@ -26,10 +26,10 @@
# ###################################
# kinematics
loadrt [KINS]KINEMATICS
loadrt trivkins
# motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
# standard components
loadrt pid num_chan=3
@ -75,7 +75,7 @@ newsig emcmot.00.enable bit
sets emcmot.00.enable FALSE
net emcmot.00.enable => pid.0.enable
net emcmot.00.enable => hm2_[HOSTMOT2](BOARD).0.pwmgen.00.enable
net emcmot.00.enable <= joint.0.amp-enable-out
net emcmot.00.enable <= axis.0.amp-enable-out
# encoder feedback
setp hm2_[HOSTMOT2](BOARD).0.encoder.00.counter-mode 0
@ -84,26 +84,26 @@ setp hm2_[HOSTMOT2](BOARD).0.encoder.00.index-invert 0
setp hm2_[HOSTMOT2](BOARD).0.encoder.00.index-mask 0
setp hm2_[HOSTMOT2](BOARD).0.encoder.00.index-mask-invert 0
setp hm2_[HOSTMOT2](BOARD).0.encoder.00.scale [JOINT_0]INPUT_SCALE
setp hm2_[HOSTMOT2](BOARD).0.encoder.00.scale [AXIS_0]INPUT_SCALE
net motor.00.pos-fb hm2_[HOSTMOT2](BOARD).0.encoder.00.position => pid.0.feedback
net motor.00.pos-fb => joint.0.motor-pos-fb #push copy back to Axis GUI
net motor.00.pos-fb => axis.0.motor-pos-fb #push copy back to Axis GUI
# set PID loop gains from inifile
setp pid.0.Pgain [JOINT_0]P
setp pid.0.Igain [JOINT_0]I
setp pid.0.Dgain [JOINT_0]D
setp pid.0.bias [JOINT_0]BIAS
setp pid.0.FF0 [JOINT_0]FF0
setp pid.0.FF1 [JOINT_0]FF1
setp pid.0.FF2 [JOINT_0]FF2
setp pid.0.deadband [JOINT_0]DEADBAND
setp pid.0.maxoutput [JOINT_0]MAX_OUTPUT
setp pid.0.Pgain [AXIS_0]P
setp pid.0.Igain [AXIS_0]I
setp pid.0.Dgain [AXIS_0]D
setp pid.0.bias [AXIS_0]BIAS
setp pid.0.FF0 [AXIS_0]FF0
setp pid.0.FF1 [AXIS_0]FF1
setp pid.0.FF2 [AXIS_0]FF2
setp pid.0.deadband [AXIS_0]DEADBAND
setp pid.0.maxoutput [AXIS_0]MAX_OUTPUT
# position command signals
setp hm2_[HOSTMOT2](BOARD).0.pwmgen.00.output-type 1 #pwm on pin1, dir on pin2
setp hm2_[HOSTMOT2](BOARD).0.pwmgen.00.scale [JOINT_0]OUTPUT_SCALE
setp hm2_[HOSTMOT2](BOARD).0.pwmgen.00.scale [AXIS_0]OUTPUT_SCALE
net emcmot.00.pos-cmd joint.0.motor-pos-cmd => pid.0.command
net emcmot.00.pos-cmd axis.0.motor-pos-cmd => pid.0.command
net motor.00.command pid.0.output => hm2_[HOSTMOT2](BOARD).0.pwmgen.00.value
@ -116,7 +116,7 @@ newsig emcmot.01.enable bit
sets emcmot.01.enable FALSE
net emcmot.01.enable => pid.1.enable
net emcmot.01.enable => hm2_[HOSTMOT2](BOARD).0.pwmgen.01.enable
net emcmot.01.enable <= joint.1.amp-enable-out
net emcmot.01.enable <= axis.1.amp-enable-out
# encoder feedback
setp hm2_[HOSTMOT2](BOARD).0.encoder.01.counter-mode 0
@ -125,26 +125,26 @@ setp hm2_[HOSTMOT2](BOARD).0.encoder.01.index-invert 0
setp hm2_[HOSTMOT2](BOARD).0.encoder.01.index-mask 0
setp hm2_[HOSTMOT2](BOARD).0.encoder.01.index-mask-invert 0
setp hm2_[HOSTMOT2](BOARD).0.encoder.01.scale [JOINT_1]INPUT_SCALE
setp hm2_[HOSTMOT2](BOARD).0.encoder.01.scale [AXIS_1]INPUT_SCALE
net motor.01.pos-fb hm2_[HOSTMOT2](BOARD).0.encoder.01.position => pid.1.feedback
net motor.01.pos-fb => joint.1.motor-pos-fb #push copy back to Axis GUI
net motor.01.pos-fb => axis.1.motor-pos-fb #push copy back to Axis GUI
# set PID loop gains from inifile
setp pid.1.Pgain [JOINT_1]P
setp pid.1.Igain [JOINT_1]I
setp pid.1.Dgain [JOINT_1]D
setp pid.1.bias [JOINT_1]BIAS
setp pid.1.FF0 [JOINT_1]FF0
setp pid.1.FF1 [JOINT_1]FF1
setp pid.1.FF2 [JOINT_1]FF2
setp pid.1.deadband [JOINT_1]DEADBAND
setp pid.1.maxoutput [JOINT_1]MAX_OUTPUT
setp pid.1.Pgain [AXIS_1]P
setp pid.1.Igain [AXIS_1]I
setp pid.1.Dgain [AXIS_1]D
setp pid.1.bias [AXIS_1]BIAS
setp pid.1.FF0 [AXIS_1]FF0
setp pid.1.FF1 [AXIS_1]FF1
setp pid.1.FF2 [AXIS_1]FF2
setp pid.1.deadband [AXIS_1]DEADBAND
setp pid.1.maxoutput [AXIS_1]MAX_OUTPUT
# position command signals
setp hm2_[HOSTMOT2](BOARD).0.pwmgen.01.output-type 1 #pwm on pin1, dir on pin2
setp hm2_[HOSTMOT2](BOARD).0.pwmgen.01.scale [JOINT_1]OUTPUT_SCALE
setp hm2_[HOSTMOT2](BOARD).0.pwmgen.01.scale [AXIS_1]OUTPUT_SCALE
net emcmot.01.pos-cmd joint.1.motor-pos-cmd => pid.1.command
net emcmot.01.pos-cmd axis.1.motor-pos-cmd => pid.1.command
net motor.01.command pid.1.output => hm2_[HOSTMOT2](BOARD).0.pwmgen.01.value
@ -157,7 +157,7 @@ newsig emcmot.02.enable bit
sets emcmot.02.enable FALSE
net emcmot.02.enable => pid.2.enable
net emcmot.02.enable => hm2_[HOSTMOT2](BOARD).0.pwmgen.02.enable
net emcmot.02.enable <= joint.2.amp-enable-out
net emcmot.02.enable <= axis.2.amp-enable-out
# encoder feedback
setp hm2_[HOSTMOT2](BOARD).0.encoder.02.counter-mode 0
@ -166,26 +166,26 @@ setp hm2_[HOSTMOT2](BOARD).0.encoder.02.index-invert 0
setp hm2_[HOSTMOT2](BOARD).0.encoder.02.index-mask 0
setp hm2_[HOSTMOT2](BOARD).0.encoder.02.index-mask-invert 0
setp hm2_[HOSTMOT2](BOARD).0.encoder.02.scale [JOINT_2]INPUT_SCALE
setp hm2_[HOSTMOT2](BOARD).0.encoder.02.scale [AXIS_2]INPUT_SCALE
net motor.02.pos-fb hm2_[HOSTMOT2](BOARD).0.encoder.02.position => pid.2.feedback
net motor.02.pos-fb => joint.2.motor-pos-fb #push copy back to Axis GUI
net motor.02.pos-fb => axis.2.motor-pos-fb #push copy back to Axis GUI
# set PID loop gains from inifile
setp pid.2.Pgain [JOINT_2]P
setp pid.2.Igain [JOINT_2]I
setp pid.2.Dgain [JOINT_2]D
setp pid.2.bias [JOINT_2]BIAS
setp pid.2.FF0 [JOINT_2]FF0
setp pid.2.FF1 [JOINT_2]FF1
setp pid.2.FF2 [JOINT_2]FF2
setp pid.2.deadband [JOINT_2]DEADBAND
setp pid.2.maxoutput [JOINT_2]MAX_OUTPUT
setp pid.2.Pgain [AXIS_2]P
setp pid.2.Igain [AXIS_2]I
setp pid.2.Dgain [AXIS_2]D
setp pid.2.bias [AXIS_2]BIAS
setp pid.2.FF0 [AXIS_2]FF0
setp pid.2.FF1 [AXIS_2]FF1
setp pid.2.FF2 [AXIS_2]FF2
setp pid.2.deadband [AXIS_2]DEADBAND
setp pid.2.maxoutput [AXIS_2]MAX_OUTPUT
# position command signals
setp hm2_[HOSTMOT2](BOARD).0.pwmgen.02.output-type 1 #pwm on pin1, dir on pin2
setp hm2_[HOSTMOT2](BOARD).0.pwmgen.02.scale [JOINT_2]OUTPUT_SCALE
setp hm2_[HOSTMOT2](BOARD).0.pwmgen.02.scale [AXIS_2]OUTPUT_SCALE
net emcmot.02.pos-cmd joint.2.motor-pos-cmd => pid.2.command
net emcmot.02.pos-cmd axis.2.motor-pos-cmd => pid.2.command
net motor.02.command pid.2.output => hm2_[HOSTMOT2](BOARD).0.pwmgen.02.value
@ -221,10 +221,10 @@ net tool-change-loop iocontrol.0.tool-change => iocontrol.0.tool-changed
#
net home-switch <= hm2_[HOSTMOT2](BOARD).0.gpio.025.in_not
net home-switch => joint.0.home-sw-in
net home-switch => joint.1.home-sw-in
net home-switch => joint.2.home-sw-in
net home-switch => axis.0.home-sw-in
net home-switch => axis.1.home-sw-in
net home-switch => axis.2.home-sw-in
# only the Y servo has an index, X and Z home without using the index
net y-index-enable hm2_[HOSTMOT2](BOARD).0.encoder.01.index-enable <=> joint.1.index-enable
net y-index-enable hm2_[HOSTMOT2](BOARD).0.encoder.01.index-enable <=> axis.1.index-enable

View file

@ -1,33 +1,54 @@
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=3x20
CONFIG="firmware=hm2/3x20-1/SVST16_24.BIT num_encoders=0 num_pwmgens=0 num_stepgens=3"
[EMC]
# The version string for this INI file.
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = HM2-Stepper
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG = 0x00000003
#DEBUG = 0x00000007
DEBUG = 0
[DISPLAY]
# Name of display program, e.g., tklinuxcnc
#DISPLAY = tklinuxcnc
# Name of display program, e.g., tkemc
#DISPLAY = tkemc
DISPLAY = axis
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.0500
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.5
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
@ -36,85 +57,104 @@ gif = image-to-gcode
jpg = image-to-gcode
py = python
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-stepper.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-stepper.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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 = hm2-stepper.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
[HALUI]
#No Content
[TRAJ]
AXES = 3
COORDINATES = X Y Z
#HOME = 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_0]
[AXIS_0]
#
# Step timing is 40 us steplen + 40 us stepspace
# That gives 80 us step period = 12.5 KHz step freq
#
# Bah, even software stepping can handle that, hm2 doesn't buy you much with
# Bah, even software stepping can handle that, hm2 doesnt buy you much with
# such slow steppers.
#
# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch
#
# This gives a maxvel of 12.5/1 = 12.5 ips
#
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
# scale is 200 steps/rev * 5 revs/inch
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -122,31 +162,35 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[AXIS_Y]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_1]
[AXIS_1]
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -154,31 +198,35 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[AXIS_Z]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_2]
[AXIS_2]
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -186,13 +234,24 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=3x20
CONFIG="firmware=hm2/3x20-1/SVST16_24.BIT num_encoders=0 num_pwmgens=0 num_stepgens=3"
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl

View file

@ -1,33 +1,54 @@
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=4i65
CONFIG="firmware=hm2/4i65/SVST8_4.BIT num_encoders=0 num_pwmgens=0 num_stepgens=3"
[EMC]
# The version string for this INI file.
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = HM2-Stepper
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG = 0x00000003
#DEBUG = 0x00000007
DEBUG = 0
[DISPLAY]
# Name of display program, e.g., tklinuxcnc
#DISPLAY = tklinuxcnc
# Name of display program, e.g., tkemc
#DISPLAY = tkemc
DISPLAY = axis
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.0500
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.5
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
@ -36,85 +57,104 @@ gif = image-to-gcode
jpg = image-to-gcode
py = python
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-stepper.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-stepper.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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 = hm2-stepper.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
[HALUI]
#No Content
[TRAJ]
AXES = 3
COORDINATES = X Y Z
#HOME = 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_0]
[AXIS_0]
#
# Step timing is 40 us steplen + 40 us stepspace
# That gives 80 us step period = 12.5 KHz step freq
#
# Bah, even software stepping can handle that, hm2 doesn't buy you much with
# Bah, even software stepping can handle that, hm2 doesnt buy you much with
# such slow steppers.
#
# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch
#
# This gives a maxvel of 12.5/1 = 12.5 ips
#
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
# scale is 200 steps/rev * 5 revs/inch
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -122,31 +162,35 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[AXIS_Y]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_1]
[AXIS_1]
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -154,31 +198,35 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[AXIS_Z]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_2]
[AXIS_2]
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -186,13 +234,24 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=4i65
CONFIG="firmware=hm2/4i65/SVST8_4.BIT num_encoders=0 num_pwmgens=0 num_stepgens=3"
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl

View file

@ -1,33 +1,54 @@
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=4i68
CONFIG="firmware=hm2/4i68/SVST8_4.BIT num_encoders=0 num_pwmgens=0 num_stepgens=3"
[EMC]
# The version string for this INI file.
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = HM2-Stepper
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG = 0x00000003
#DEBUG = 0x00000007
DEBUG = 0
[DISPLAY]
# Name of display program, e.g., tklinuxcnc
#DISPLAY = tklinuxcnc
# Name of display program, e.g., tkemc
#DISPLAY = tkemc
DISPLAY = axis
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.0500
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.5
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
@ -36,85 +57,104 @@ gif = image-to-gcode
jpg = image-to-gcode
py = python
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-stepper.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-stepper.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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 = hm2-stepper.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
[HALUI]
#No Content
[TRAJ]
AXES = 3
COORDINATES = X Y Z
#HOME = 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_0]
[AXIS_0]
#
# Step timing is 40 us steplen + 40 us stepspace
# That gives 80 us step period = 12.5 KHz step freq
#
# Bah, even software stepping can handle that, hm2 doesn't buy you much with
# Bah, even software stepping can handle that, hm2 doesnt buy you much with
# such slow steppers.
#
# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch
#
# This gives a maxvel of 12.5/1 = 12.5 ips
#
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
# scale is 200 steps/rev * 5 revs/inch
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -122,31 +162,35 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[AXIS_Y]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_1]
[AXIS_1]
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -154,31 +198,35 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[AXIS_Z]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_2]
[AXIS_2]
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -186,13 +234,24 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=4i68
CONFIG="firmware=hm2/4i68/SVST8_4.BIT num_encoders=0 num_pwmgens=0 num_stepgens=3"
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl

View file

@ -1,33 +1,54 @@
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=5i20
CONFIG="firmware=hm2/5i20/SVST8_4.BIT num_encoders=0 num_pwmgens=0 num_stepgens=3"
[EMC]
# The version string for this INI file.
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = HM2-Stepper
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG = 0x00000003
#DEBUG = 0x00000007
DEBUG = 0
[DISPLAY]
# Name of display program, e.g., tklinuxcnc
#DISPLAY = tklinuxcnc
# Name of display program, e.g., tkemc
#DISPLAY = tkemc
DISPLAY = axis
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.0500
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.5
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
@ -36,85 +57,104 @@ gif = image-to-gcode
jpg = image-to-gcode
py = python
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-stepper.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-stepper.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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 = hm2-stepper.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
[HALUI]
#No Content
[TRAJ]
AXES = 3
COORDINATES = X Y Z
#HOME = 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_0]
[AXIS_0]
#
# Step timing is 40 us steplen + 40 us stepspace
# That gives 80 us step period = 12.5 KHz step freq
#
# Bah, even software stepping can handle that, hm2 doesn't buy you much with
# Bah, even software stepping can handle that, hm2 doesnt buy you much with
# such slow steppers.
#
# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch
#
# This gives a maxvel of 12.5/1 = 12.5 ips
#
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
# scale is 200 steps/rev * 5 revs/inch
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -122,31 +162,35 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[AXIS_Y]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_1]
[AXIS_1]
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -154,31 +198,35 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[AXIS_Z]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_2]
[AXIS_2]
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -186,13 +234,24 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=5i20
CONFIG="firmware=hm2/5i20/SVST8_4.BIT num_encoders=0 num_pwmgens=0 num_stepgens=3"
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl

View file

@ -1,33 +1,54 @@
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=5i22
CONFIG="firmware=hm2/5i22-1.5/SVST8_8.BIT num_encoders=0 num_pwmgens=0 num_stepgens=3"
[EMC]
# The version string for this INI file.
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = HM2-Stepper
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG = 0x00000003
#DEBUG = 0x00000007
DEBUG = 0
[DISPLAY]
# Name of display program, e.g., tklinuxcnc
#DISPLAY = tklinuxcnc
# Name of display program, e.g., tkemc
#DISPLAY = tkemc
DISPLAY = axis
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.0500
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.5
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
@ -36,85 +57,104 @@ gif = image-to-gcode
jpg = image-to-gcode
py = python
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-stepper.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-stepper.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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 = hm2-stepper.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
[HALUI]
#No Content
[TRAJ]
AXES = 3
COORDINATES = X Y Z
#HOME = 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_0]
[AXIS_0]
#
# Step timing is 40 us steplen + 40 us stepspace
# That gives 80 us step period = 12.5 KHz step freq
#
# Bah, even software stepping can handle that, hm2 doesn't buy you much with
# Bah, even software stepping can handle that, hm2 doesnt buy you much with
# such slow steppers.
#
# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch
#
# This gives a maxvel of 12.5/1 = 12.5 ips
#
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
# scale is 200 steps/rev * 5 revs/inch
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -122,31 +162,35 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[AXIS_Y]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_1]
[AXIS_1]
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -154,31 +198,35 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[AXIS_Z]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_2]
[AXIS_2]
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -186,13 +234,24 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=5i22
CONFIG="firmware=hm2/5i22-1.5/SVST8_8.BIT num_encoders=0 num_pwmgens=0 num_stepgens=3"
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl

View file

@ -1,33 +1,54 @@
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=5i22
CONFIG="firmware=hm2/5i22-1/SVST8_8.BIT num_encoders=0 num_pwmgens=0 num_stepgens=3"
[EMC]
# The version string for this INI file.
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = HM2-Stepper
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG = 0x00000003
#DEBUG = 0x00000007
DEBUG = 0
[DISPLAY]
# Name of display program, e.g., tklinuxcnc
#DISPLAY = tklinuxcnc
# Name of display program, e.g., tkemc
#DISPLAY = tkemc
DISPLAY = axis
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.0500
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.5
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
@ -36,85 +57,104 @@ gif = image-to-gcode
jpg = image-to-gcode
py = python
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-stepper.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-stepper.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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 = hm2-stepper.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
[HALUI]
#No Content
[TRAJ]
AXES = 3
COORDINATES = X Y Z
#HOME = 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_0]
[AXIS_0]
#
# Step timing is 40 us steplen + 40 us stepspace
# That gives 80 us step period = 12.5 KHz step freq
#
# Bah, even software stepping can handle that, hm2 doesn't buy you much with
# Bah, even software stepping can handle that, hm2 doesnt buy you much with
# such slow steppers.
#
# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch
#
# This gives a maxvel of 12.5/1 = 12.5 ips
#
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
# scale is 200 steps/rev * 5 revs/inch
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -122,31 +162,35 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[AXIS_Y]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_1]
[AXIS_1]
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -154,31 +198,35 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[AXIS_Z]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_2]
[AXIS_2]
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -186,13 +234,24 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=5i22
CONFIG="firmware=hm2/5i22-1/SVST8_8.BIT num_encoders=0 num_pwmgens=0 num_stepgens=3"
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl

View file

@ -1,33 +1,54 @@
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=5i23
CONFIG="firmware=hm2/5i23/SVST8_4.BIT num_encoders=0 num_pwmgens=0 num_stepgens=3"
[EMC]
# The version string for this INI file.
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = HM2-Stepper
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG = 0x00000003
#DEBUG = 0x00000007
DEBUG = 0
[DISPLAY]
# Name of display program, e.g., tklinuxcnc
#DISPLAY = tklinuxcnc
# Name of display program, e.g., tkemc
#DISPLAY = tkemc
DISPLAY = axis
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.0500
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.5
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
@ -36,85 +57,104 @@ gif = image-to-gcode
jpg = image-to-gcode
py = python
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-stepper.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-stepper.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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 = hm2-stepper.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
[HALUI]
#No Content
[TRAJ]
AXES = 3
COORDINATES = X Y Z
#HOME = 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_0]
[AXIS_0]
#
# Step timing is 40 us steplen + 40 us stepspace
# That gives 80 us step period = 12.5 KHz step freq
#
# Bah, even software stepping can handle that, hm2 doesn't buy you much with
# Bah, even software stepping can handle that, hm2 doesnt buy you much with
# such slow steppers.
#
# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch
#
# This gives a maxvel of 12.5/1 = 12.5 ips
#
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
# scale is 200 steps/rev * 5 revs/inch
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -122,31 +162,35 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[AXIS_Y]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_1]
[AXIS_1]
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -154,31 +198,35 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[AXIS_Z]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_2]
[AXIS_2]
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -186,13 +234,24 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[HOSTMOT2]
DRIVER=hm2_pci
BOARD=5i23
CONFIG="firmware=hm2/5i23/SVST8_4.BIT num_encoders=0 num_pwmgens=0 num_stepgens=3"
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl

View file

@ -1,33 +1,54 @@
[HOSTMOT2]
DRIVER=hm2_7i43
BOARD=7i43
CONFIG="firmware=hm2/7i43-4/SVST4_4.BIT num_encoders=0 num_pwmgens=0 num_stepgens=3"
[EMC]
# The version string for this INI file.
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = HM2-Stepper
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG = 0x00000003
#DEBUG = 0x00000007
DEBUG = 0
[DISPLAY]
# Name of display program, e.g., tklinuxcnc
#DISPLAY = tklinuxcnc
# Name of display program, e.g., tkemc
#DISPLAY = tkemc
DISPLAY = axis
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.0500
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.5
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
@ -36,85 +57,104 @@ gif = image-to-gcode
jpg = image-to-gcode
py = python
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-stepper.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-stepper.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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 = hm2-stepper.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
[HALUI]
#No Content
[TRAJ]
AXES = 3
COORDINATES = X Y Z
#HOME = 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_0]
[AXIS_0]
#
# Step timing is 40 us steplen + 40 us stepspace
# That gives 80 us step period = 12.5 KHz step freq
#
# Bah, even software stepping can handle that, hm2 doesn't buy you much with
# Bah, even software stepping can handle that, hm2 doesnt buy you much with
# such slow steppers.
#
# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch
#
# This gives a maxvel of 12.5/1 = 12.5 ips
#
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
# scale is 200 steps/rev * 5 revs/inch
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -122,31 +162,35 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[AXIS_Y]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_1]
[AXIS_1]
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -154,31 +198,35 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[AXIS_Z]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_2]
[AXIS_2]
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -186,13 +234,24 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[HOSTMOT2]
DRIVER=hm2_7i43
BOARD=7i43
CONFIG="firmware=hm2/7i43-4/SVST4_4.BIT num_encoders=0 num_pwmgens=0 num_stepgens=3"
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl

View file

@ -1,33 +1,54 @@
[HOSTMOT2]
DRIVER=hm2_7i43
BOARD=7i43
CONFIG="firmware=hm2/7i43-2/SVST4_4.BIT num_encoders=0 num_pwmgens=0 num_stepgens=3"
[EMC]
# The version string for this INI file.
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = HM2-Stepper
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG = 0x00000003
#DEBUG = 0x00000007
DEBUG = 0
[DISPLAY]
# Name of display program, e.g., tklinuxcnc
#DISPLAY = tklinuxcnc
# Name of display program, e.g., tkemc
#DISPLAY = tkemc
DISPLAY = axis
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.0500
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.5
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
@ -36,85 +57,104 @@ gif = image-to-gcode
jpg = image-to-gcode
py = python
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-stepper.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-stepper.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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 = hm2-stepper.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
[HALUI]
#No Content
[TRAJ]
AXES = 3
COORDINATES = X Y Z
#HOME = 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_0]
[AXIS_0]
#
# Step timing is 40 us steplen + 40 us stepspace
# That gives 80 us step period = 12.5 KHz step freq
#
# Bah, even software stepping can handle that, hm2 doesn't buy you much with
# Bah, even software stepping can handle that, hm2 doesnt buy you much with
# such slow steppers.
#
# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch
#
# This gives a maxvel of 12.5/1 = 12.5 ips
#
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
# scale is 200 steps/rev * 5 revs/inch
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -122,31 +162,35 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[AXIS_Y]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_1]
[AXIS_1]
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -154,31 +198,35 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[AXIS_Z]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_2]
[AXIS_2]
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -186,13 +234,24 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[HOSTMOT2]
DRIVER=hm2_7i43
BOARD=7i43
CONFIG="firmware=hm2/7i43-2/SVST4_4.BIT num_encoders=0 num_pwmgens=0 num_stepgens=3"
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl

View file

@ -1,33 +1,55 @@
[HOSTMOT2]
DRIVER=hm2_7i90
BOARD=7i90
CONFIG=""
[EMC]
# The version string for this INI file.
VERSION = 1.1
# Name of machine, for use with display, etc.
MACHINE = HM2-Stepper
# Debug level, 0 means no messages. See src/emc/nml_int/emcglb.h for others
#DEBUG = 0x00000003
#DEBUG = 0x00000007
DEBUG = 0
[DISPLAY]
# Name of display program, e.g., tklinuxcnc
# Name of display program, e.g., tkemc
#DISPLAY = tklinuxcnc
DISPLAY = axis
#DISPLAY = axis
DISPLAY = keystick
# Cycle time, in seconds, that display will sleep between polls
CYCLE_TIME = 0.0500
# Path to help file
HELP_FILE = tklinuxcnc.txt
HELP_FILE = tklinucnc.txt
# Initial display setting for position, RELATIVE or MACHINE
POSITION_OFFSET = RELATIVE
# Initial display setting for position, COMMANDED or ACTUAL
POSITION_FEEDBACK = ACTUAL
# Highest value that will be allowed for feed override, 1.0 = 100%
MAX_FEED_OVERRIDE = 1.5
# Prefix to be used
PROGRAM_PREFIX = ../../nc_files/
# Introductory graphic
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
[FILTER]
PROGRAM_EXTENSION = .png,.gif,.jpg Grayscale Depth Image
PROGRAM_EXTENSION = .py Python Script
@ -36,85 +58,104 @@ gif = image-to-gcode
jpg = image-to-gcode
py = python
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-stepper.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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
[RS274NGC]
# File containing interpreter variables
PARAMETER_FILE = hm2-stepper.var
[EMCMOT]
EMCMOT = motmod
# Timeout for comm to emcmot, in seconds
COMM_TIMEOUT = 1.0
# Interval between tries to emcmot, in seconds
COMM_WAIT = 0.010
# Servo task period, in nanoseconds
SERVO_PERIOD = 1000000
[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 = hm2-stepper.hal
# list of halcmd commands to execute
# commands are executed in the order in which they appear
#HALCMD = save neta
[HALUI]
#No Content
[TRAJ]
AXES = 3
COORDINATES = X Y Z
#HOME = 0 0 0
LINEAR_UNITS = inch
ANGULAR_UNITS = degree
CYCLE_TIME = 0.010
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl
[KINS]
KINEMATICS = trivkins
JOINTS = 3
[AXIS_X]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_0]
[AXIS_0]
#
# Step timing is 40 us steplen + 40 us stepspace
# That gives 80 us step period = 12.5 KHz step freq
#
# Bah, even software stepping can handle that, hm2 doesn't buy you much with
# Bah, even software stepping can handle that, hm2 doesnt buy you much with
# such slow steppers.
#
# Scale is 200 steps/rev * 5 revs/inch = 1000 steps/inch
#
# This gives a maxvel of 12.5/1 = 12.5 ips
#
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
# scale is 200 steps/rev * 5 revs/inch
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -122,31 +163,35 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[AXIS_Y]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_1]
[AXIS_1]
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -154,31 +199,35 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[AXIS_Z]
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
[JOINT_2]
[AXIS_2]
TYPE = LINEAR
MAX_VELOCITY = 10
MAX_ACCELERATION = 20
# Set Stepgen max 20% higher than the axis
STEPGEN_MAX_VEL = 12
STEPGEN_MAX_ACC = 24
BACKLASH = 0.000
SCALE = 1000
MIN_LIMIT = -10.0
MAX_LIMIT = 10.0
FERROR = 0.050
MIN_FERROR = 0.005
#HOME = 0.000
#HOME_OFFSET = 0.10
#HOME_SEARCH_VEL = 0.10
@ -186,13 +235,24 @@ MIN_FERROR = 0.005
#HOME_USE_INDEX = YES
#HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 0
# these are in nanoseconds
DIRSETUP = 200
DIRHOLD = 200
STEPLEN = 40000
STEPSPACE = 40000
[HOSTMOT2]
DRIVER=hm2_7i90
BOARD=7i90
CONFIG=""
[EMCIO]
# Name of IO controller program, e.g., io
EMCIO = io
# cycle time, in seconds
CYCLE_TIME = 0.100
# tool table file
TOOL_TABLE = tool.tbl

View file

@ -1,6 +1,6 @@
This configuration drives a 3-axis stepper machine using a Mesa Anything IO board with the HostMot2 firmware. No limit switches are used, so this should work with very basic hardware. The config will only run if you have the card installed and have installed the firmware.
See LinuxCNC_Documentation.pdf - 11.4 Mesa HostMot2 Driver section for more information.
See the HostMot2 section of the Integrators manual for more information.
These configs have 0 Encoders, 0 PWMs, and 3 StepGens

View file

@ -1,17 +0,0 @@
Esta configuración controla una máquina de 3 ejes con motores de pasos, utilizando una placa Mesa Anything IO con el firmware HostMot2.
No se utilizan interruptores de límite, por lo que esto debería funcionar con hardware muy básico.
La configuración solo se ejecutará si tiene la tarjeta y el firmware instalados.
Vea la sección LinuxCNC_Documentación.pdf - 11.4 Driver Mesa HostMot2 para más información.
Estas configuraciones tienen 0 codificadores, 0 PWM y 3 StepGens
5i22-big Para la versión de 1.5M puertas
5i22-small Para la versión de 1.0M puertas
7i43-big Para la versión de 400k puertas
7i43-small Para la versión de 200k puertas
3x20-small Para la versión de 1.0M puertas

View file

@ -26,10 +26,10 @@
# ###################################
# kinematics
loadrt [KINS]KINEMATICS
loadrt trivkins
# motion controller, get name and thread periods from ini file
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[TRAJ]AXES
# hostmot2 driver
loadrt hostmot2
@ -65,29 +65,29 @@ addf estop-latch.0 servo-thread
newsig emcmot.00.enable bit
sets emcmot.00.enable FALSE
net emcmot.00.enable <= joint.0.amp-enable-out
net emcmot.00.enable <= axis.0.amp-enable-out
net emcmot.00.enable => hm2_[HOSTMOT2](BOARD).0.stepgen.00.enable
# position command and feedback
net emcmot.00.pos-cmd <= joint.0.motor-pos-cmd
net emcmot.00.pos-cmd <= axis.0.motor-pos-cmd
net emcmot.00.pos-cmd => hm2_[HOSTMOT2](BOARD).0.stepgen.00.position-cmd
net motor.00.pos-fb <= hm2_[HOSTMOT2](BOARD).0.stepgen.00.position-fb
net motor.00.pos-fb => joint.0.motor-pos-fb
net motor.00.pos-fb => axis.0.motor-pos-fb
# timing parameters
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.dirsetup [JOINT_0]DIRSETUP
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.dirhold [JOINT_0]DIRHOLD
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.dirsetup [AXIS_0]DIRSETUP
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.dirhold [AXIS_0]DIRHOLD
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.steplen [JOINT_0]STEPLEN
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.stepspace [JOINT_0]STEPSPACE
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.steplen [AXIS_0]STEPLEN
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.stepspace [AXIS_0]STEPSPACE
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.position-scale [JOINT_0]SCALE
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.position-scale [AXIS_0]SCALE
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.maxvel [JOINT_0]STEPGEN_MAX_VEL
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.maxaccel [JOINT_0]STEPGEN_MAX_ACC
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.maxvel [AXIS_0]STEPGEN_MAX_VEL
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.maxaccel [AXIS_0]STEPGEN_MAX_ACC
setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.step_type 0
@ -100,29 +100,29 @@ setp hm2_[HOSTMOT2](BOARD).0.stepgen.00.step_type 0
newsig emcmot.01.enable bit
sets emcmot.01.enable FALSE
net emcmot.01.enable <= joint.1.amp-enable-out
net emcmot.01.enable <= axis.1.amp-enable-out
net emcmot.01.enable => hm2_[HOSTMOT2](BOARD).0.stepgen.01.enable
# position command and feedback
net emcmot.01.pos-cmd <= joint.1.motor-pos-cmd
net emcmot.01.pos-cmd <= axis.1.motor-pos-cmd
net emcmot.01.pos-cmd => hm2_[HOSTMOT2](BOARD).0.stepgen.01.position-cmd
net motor.01.pos-fb <= hm2_[HOSTMOT2](BOARD).0.stepgen.01.position-fb
net motor.01.pos-fb => joint.1.motor-pos-fb
net motor.01.pos-fb => axis.1.motor-pos-fb
# timing parameters
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.dirsetup [JOINT_1]DIRSETUP
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.dirhold [JOINT_1]DIRHOLD
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.dirsetup [AXIS_1]DIRSETUP
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.dirhold [AXIS_1]DIRHOLD
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.steplen [JOINT_1]STEPLEN
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.stepspace [JOINT_1]STEPSPACE
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.steplen [AXIS_1]STEPLEN
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.stepspace [AXIS_1]STEPSPACE
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.position-scale [JOINT_1]SCALE
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.position-scale [AXIS_1]SCALE
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.maxvel [JOINT_1]STEPGEN_MAX_VEL
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.maxaccel [JOINT_1]STEPGEN_MAX_ACC
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.maxvel [AXIS_1]STEPGEN_MAX_VEL
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.maxaccel [AXIS_1]STEPGEN_MAX_ACC
setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.step_type 0
@ -135,29 +135,29 @@ setp hm2_[HOSTMOT2](BOARD).0.stepgen.01.step_type 0
newsig emcmot.02.enable bit
sets emcmot.02.enable FALSE
net emcmot.02.enable <= joint.2.amp-enable-out
net emcmot.02.enable <= axis.2.amp-enable-out
net emcmot.02.enable => hm2_[HOSTMOT2](BOARD).0.stepgen.02.enable
# position command and feedback
net emcmot.02.pos-cmd <= joint.2.motor-pos-cmd
net emcmot.02.pos-cmd <= axis.2.motor-pos-cmd
net emcmot.02.pos-cmd => hm2_[HOSTMOT2](BOARD).0.stepgen.02.position-cmd
net motor.02.pos-fb <= hm2_[HOSTMOT2](BOARD).0.stepgen.02.position-fb
net motor.02.pos-fb => joint.2.motor-pos-fb
net motor.02.pos-fb => axis.2.motor-pos-fb
# timing parameters
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.dirsetup [JOINT_2]DIRSETUP
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.dirhold [JOINT_2]DIRHOLD
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.dirsetup [AXIS_2]DIRSETUP
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.dirhold [AXIS_2]DIRHOLD
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.steplen [JOINT_2]STEPLEN
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.stepspace [JOINT_2]STEPSPACE
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.steplen [AXIS_2]STEPLEN
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.stepspace [AXIS_2]STEPSPACE
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.position-scale [JOINT_2]SCALE
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.position-scale [AXIS_2]SCALE
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAX_VEL
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAX_ACC
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.maxvel [AXIS_2]STEPGEN_MAX_VEL
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.maxaccel [AXIS_2]STEPGEN_MAX_ACC
setp hm2_[HOSTMOT2](BOARD).0.stepgen.02.step_type 0

View file

@ -2,4 +2,4 @@ This configuration is to show how to connect the Mesa THCAD card with LinuxCNC o
There are two configurations, the plasma-5i20 that requires you to have a Mesa 5i20 installed and the plasma-demo using parallel port. The plasma-demo version is just to show how this config looks and is not a good candidate for the THCAD card due to the slow update speed when using a software encoder with the parallel port.
The subroutine touchoff.ngc is used with a floating head and the probe input to set the torch to the initial height of the cut. The example files x-trim.ngc and touchtest.ngc demonstrate the use of touchoff.ngc. The usage of touchoff.ngc requires you to have the probe input and Arc Ok input. It uses M66 to wait for the Arc Ok input after lighting off the torch. Three parameters are passed to touchoff pierce height, pierce delay, and cut height. In actual use you will need to adjust the height to raise the torch after touch off to Z0 to match your actual setup.
The subroutine touchoff.ngc is used with a floating head and the probe input to set the torch to the initial height of the cut. The example files x-trim.ngc and touchtest.ngc demonstrate the use of touchoff.ngc. The usage of touchoff.ngc requires you to have the probe input and and Arc Ok input. It uses M66 to wait for the Arc Ok input after lighting off the torch. Three parameters are passed to touchoff pierce height, pierce delay, and cut height. In actual use you will need to adjust the height to raise the torch after touch off to Z0 to match your actual setup.

Some files were not shown because too many files have changed in this diff Show more