forked from epics_driver_modules/motorBase
Merge branch 'motor/master' into HEAD
Merge the master branch,
commit 891a66e680,
into torsten/181203_1217_add_ACCS_field
Conflicts:
motorApp/MotorSrc/motorRecord.dbd
This commit is contained in:
Submodule
+1
Submodule .ci added at 5764601630
@@ -0,0 +1,3 @@
|
||||
BASE=3.14
|
||||
|
||||
include modules
|
||||
@@ -0,0 +1,3 @@
|
||||
BASE=3.15
|
||||
|
||||
include modules
|
||||
@@ -0,0 +1,3 @@
|
||||
BASE=7.0
|
||||
|
||||
include modules
|
||||
Executable
+32
@@ -0,0 +1,32 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
|
||||
from util import *
|
||||
|
||||
def get_submodule_releases():
|
||||
#
|
||||
releases = []
|
||||
for root, dirs, files in os.walk('modules'):
|
||||
for submodule in dirs:
|
||||
if 'motor' in submodule:
|
||||
release_path = "modules/{}/configure/RELEASE".format(submodule)
|
||||
if os.path.exists(release_path):
|
||||
releases.append(release_path)
|
||||
return releases[:]
|
||||
|
||||
# Comment out SUPPORT from motor's RELEASE file
|
||||
motor_release = "configure/RELEASE"
|
||||
update_release_file(motor_release, "SUPPORT", '#')
|
||||
print("{}Updated {}{}".format(ANSI_BLUE, motor_release, ANSI_RESET))
|
||||
grep_release_file(motor_release, "#SUPPORT")
|
||||
|
||||
# Comment out SUPPORT from the driver module RELEASE files
|
||||
releases = get_submodule_releases()
|
||||
for release in releases:
|
||||
updated = update_release_file(release, "SUPPORT", '#')
|
||||
if updated:
|
||||
print("{}Updated {}{}".format(ANSI_BLUE, release, ANSI_RESET))
|
||||
grep_release_file(release, "#SUPPORT")
|
||||
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import os
|
||||
import pprint
|
||||
|
||||
pprint.pprint(dict(os.environ), width = 1)
|
||||
|
||||
#!print("{}", breakmehere)
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import logging
|
||||
import fileinput
|
||||
import os
|
||||
|
||||
# Setup ANSI Colors
|
||||
ANSI_RED = "\033[31;1m"
|
||||
ANSI_GREEN = "\033[32;1m"
|
||||
ANSI_YELLOW = "\033[33;1m"
|
||||
ANSI_BLUE = "\033[34;1m"
|
||||
ANSI_MAGENTA = "\033[35;1m"
|
||||
ANSI_CYAN = "\033[36;1m"
|
||||
ANSI_RESET = "\033[0m"
|
||||
ANSI_CLEAR = "\033[0K"
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
def create_file(filename):
|
||||
dirname = os.path.dirname(filename)
|
||||
print(dirname)
|
||||
if not os.path.exists(dirname):
|
||||
os.makedirs(dirname, 0o0755)
|
||||
if not os.path.exists(filename):
|
||||
fh = open(filename, 'w')
|
||||
fh.close()
|
||||
else:
|
||||
logger.debug("{} already exists".format(filename))
|
||||
|
||||
# Update a definition in a release file that already exists
|
||||
# Append a defintion to a release file that already exists
|
||||
# Commented out a definition in a release file (location='#')
|
||||
def update_release_file(filename, var, location):
|
||||
updated_line = '{0}={1}'.format(var, location.replace('\\', '/'))
|
||||
|
||||
found = False
|
||||
logger.debug("Opening '%s' for adding '%s'", filename, updated_line)
|
||||
for line in fileinput.input(filename, inplace=1):
|
||||
output_line = line.strip()
|
||||
if '{0}='.format(var) in line:
|
||||
logger.debug("Found '%s=' line, replacing", var)
|
||||
found = True
|
||||
if location != '#':
|
||||
output_line = updated_line
|
||||
else:
|
||||
if output_line[0] != '#':
|
||||
output_line = "#{}".format(output_line)
|
||||
logger.debug("Writing line to '%s': '%s'", filename, output_line)
|
||||
print(output_line)
|
||||
fileinput.close()
|
||||
|
||||
if not found and location != '#':
|
||||
fh = open(release_local, "a")
|
||||
logger.debug("Adding new definition: '%s'", updated_line)
|
||||
print(updated_line, file=fh)
|
||||
fh.close()
|
||||
|
||||
return found
|
||||
|
||||
def grep_release_file(filename, var):
|
||||
fh = open(filename, 'r')
|
||||
for line in fh:
|
||||
if '{0}='.format(var) in line:
|
||||
print(line)
|
||||
fh.close()
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
MODULES="sncseq ipac asyn autosave busy"
|
||||
|
||||
SNCSEQ=R2-2-9
|
||||
IPAC=master
|
||||
ASYN=R4-42
|
||||
AUTOSAVE=R5-10-2
|
||||
BUSY=R1-7-3
|
||||
Executable
+32
@@ -0,0 +1,32 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
|
||||
from util import *
|
||||
|
||||
def get_submodule_releases():
|
||||
#
|
||||
releases = []
|
||||
for root, dirs, files in os.walk('modules'):
|
||||
for submodule in dirs:
|
||||
if 'motor' in submodule:
|
||||
release_path = "modules/{}/configure/RELEASE".format(submodule)
|
||||
if os.path.exists(release_path):
|
||||
releases.append(release_path)
|
||||
return releases[:]
|
||||
|
||||
# Comment out SUPPORT from motor's RELEASE file
|
||||
motor_release = "configure/RELEASE"
|
||||
update_release_file(motor_release, "SUPPORT", '#')
|
||||
print("{}Updated {}{}".format(ANSI_BLUE, motor_release, ANSI_RESET))
|
||||
grep_release_file(motor_release, "#SUPPORT")
|
||||
|
||||
# Comment out SUPPORT from the driver module RELEASE files
|
||||
releases = get_submodule_releases()
|
||||
for release in releases:
|
||||
updated = update_release_file(release, "SUPPORT", '#')
|
||||
if updated:
|
||||
print("{}Updated {}{}".format(ANSI_BLUE, release, ANSI_RESET))
|
||||
grep_release_file(release, "#SUPPORT")
|
||||
@@ -0,0 +1,68 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
import logging
|
||||
import fileinput
|
||||
import os
|
||||
|
||||
# Setup ANSI Colors
|
||||
ANSI_RED = "\033[31;1m"
|
||||
ANSI_GREEN = "\033[32;1m"
|
||||
ANSI_YELLOW = "\033[33;1m"
|
||||
ANSI_BLUE = "\033[34;1m"
|
||||
ANSI_MAGENTA = "\033[35;1m"
|
||||
ANSI_CYAN = "\033[36;1m"
|
||||
ANSI_RESET = "\033[0m"
|
||||
ANSI_CLEAR = "\033[0K"
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
def create_file(filename):
|
||||
dirname = os.path.dirname(filename)
|
||||
print(dirname)
|
||||
if not os.path.exists(dirname):
|
||||
os.makedirs(dirname, 0755)
|
||||
if not os.path.exists(filename):
|
||||
fh = open(filename, 'w')
|
||||
fh.close()
|
||||
else:
|
||||
logger.debug("{} already exists".format(filename))
|
||||
|
||||
# Update a definition in a release file that already exists
|
||||
# Append a defintion to a release file that already exists
|
||||
# Commented out a definition in a release file (location='#')
|
||||
def update_release_file(filename, var, location):
|
||||
updated_line = '{0}={1}'.format(var, location.replace('\\', '/'))
|
||||
|
||||
found = False
|
||||
logger.debug("Opening '%s' for adding '%s'", filename, updated_line)
|
||||
for line in fileinput.input(filename, inplace=1):
|
||||
output_line = line.strip()
|
||||
if '{0}='.format(var) in line:
|
||||
logger.debug("Found '%s=' line, replacing", var)
|
||||
found = True
|
||||
if location != '#':
|
||||
output_line = updated_line
|
||||
else:
|
||||
if output_line[0] != '#':
|
||||
output_line = "#{}".format(output_line)
|
||||
logger.debug("Writing line to '%s': '%s'", filename, output_line)
|
||||
print(output_line)
|
||||
fileinput.close()
|
||||
|
||||
if not found and location != '#':
|
||||
fh = open(release_local, "a")
|
||||
logger.debug("Adding new definition: '%s'", updated_line)
|
||||
print(updated_line, file=fh)
|
||||
fh.close()
|
||||
|
||||
return found
|
||||
|
||||
def grep_release_file(filename, var):
|
||||
fh = open(filename, 'r')
|
||||
for line in fh:
|
||||
if '{0}='.format(var) in line:
|
||||
print(line)
|
||||
fh.close()
|
||||
|
||||
@@ -1,164 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e -x
|
||||
|
||||
SUPPORT=$HOME/.cache/support
|
||||
|
||||
install -d $SUPPORT
|
||||
|
||||
# Conditionally build IPAC
|
||||
if [ -n "$IPAC" ]; then
|
||||
IPAC_PATH=$SUPPORT/ipac
|
||||
else
|
||||
IPAC_PATH=
|
||||
fi
|
||||
|
||||
RELEASE_PATH=$TRAVIS_BUILD_DIR/configure/RELEASE
|
||||
EPICS_BASE=$SUPPORT/epics-base
|
||||
|
||||
cat << EOF > $RELEASE_PATH
|
||||
IPAC=$IPAC_PATH
|
||||
SNCSEQ=$SUPPORT/seq
|
||||
ASYN=$SUPPORT/asyn
|
||||
EPICS_BASE=$SUPPORT/epics-base
|
||||
EOF
|
||||
|
||||
# use default selection for MSI
|
||||
sed -i -e '/MSI/d' configure/CONFIG_SITE
|
||||
|
||||
if [ ! -e "$EPICS_BASE/built" ]
|
||||
then
|
||||
|
||||
git clone --depth 10 --branch $BASE https://github.com/epics-base/epics-base.git $EPICS_BASE
|
||||
|
||||
EPICS_HOST_ARCH=`sh $EPICS_BASE/startup/EpicsHostArch`
|
||||
|
||||
case "$STATIC" in
|
||||
static)
|
||||
cat << EOF >> "$EPICS_BASE/configure/CONFIG_SITE"
|
||||
SHARED_LIBRARIES=NO
|
||||
STATIC_BUILD=YES
|
||||
EOF
|
||||
;;
|
||||
*) ;;
|
||||
esac
|
||||
|
||||
case "$CMPLR" in
|
||||
clang)
|
||||
echo "Host compiler is clang"
|
||||
cat << EOF >> $EPICS_BASE/configure/os/CONFIG_SITE.Common.$EPICS_HOST_ARCH
|
||||
GNU = NO
|
||||
CMPLR_CLASS = clang
|
||||
CC = clang
|
||||
CCC = clang++
|
||||
EOF
|
||||
;;
|
||||
*) echo "Host compiler is default";;
|
||||
esac
|
||||
|
||||
# requires wine and g++-mingw-w64-i686
|
||||
if [ "$WINE" = "32" ]
|
||||
then
|
||||
echo "Cross mingw32"
|
||||
sed -i -e '/CMPLR_PREFIX/d' $EPICS_BASE/configure/os/CONFIG_SITE.linux-x86.win32-x86-mingw
|
||||
cat << EOF >> $EPICS_BASE/configure/os/CONFIG_SITE.linux-x86.win32-x86-mingw
|
||||
CMPLR_PREFIX=i686-w64-mingw32-
|
||||
EOF
|
||||
cat << EOF >> $EPICS_BASE/configure/CONFIG_SITE
|
||||
CROSS_COMPILER_TARGET_ARCHS+=win32-x86-mingw
|
||||
EOF
|
||||
fi
|
||||
|
||||
# set RTEMS to eg. "4.9" or "4.10"
|
||||
if [ -n "$RTEMS" ]
|
||||
then
|
||||
echo "Cross RTEMS${RTEMS} for pc386"
|
||||
install -d /home/travis/.cache
|
||||
curl -L "https://github.com/mdavidsaver/rsb/releases/download/travis-20160306-2/rtems${RTEMS}-i386-trusty-20190306-2.tar.gz" \
|
||||
| tar -C /home/travis/.cache -xj
|
||||
|
||||
sed -i -e '/^RTEMS_VERSION/d' -e '/^RTEMS_BASE/d' $EPICS_BASE/configure/os/CONFIG_SITE.Common.RTEMS
|
||||
cat << EOF >> $EPICS_BASE/configure/os/CONFIG_SITE.Common.RTEMS
|
||||
RTEMS_VERSION=$RTEMS
|
||||
RTEMS_BASE=/home/travis/.cache/rtems${RTEMS}-i386
|
||||
EOF
|
||||
cat << EOF >> $EPICS_BASE/configure/CONFIG_SITE
|
||||
CROSS_COMPILER_TARGET_ARCHS+=RTEMS-pc386
|
||||
EOF
|
||||
|
||||
fi
|
||||
|
||||
make -C "$EPICS_BASE" -j2
|
||||
# get MSI for 3.14
|
||||
case "$BASE" in
|
||||
3.14*)
|
||||
echo "Build MSI"
|
||||
install -d "$HOME/msi/extensions/src"
|
||||
curl https://epics.anl.gov/download/extensions/extensionsTop_20120904.tar.gz | tar -C "$HOME/msi" -xvz
|
||||
curl https://epics.anl.gov/download/extensions/msi1-7.tar.gz | tar -C "$HOME/msi/extensions/src" -xvz
|
||||
mv "$HOME/msi/extensions/src/msi1-7" "$HOME/msi/extensions/src/msi"
|
||||
|
||||
cat << EOF > "$HOME/msi/extensions/configure/RELEASE"
|
||||
EPICS_BASE=$EPICS_BASE
|
||||
EPICS_EXTENSIONS=\$(TOP)
|
||||
EOF
|
||||
make -C "$HOME/msi/extensions"
|
||||
cp "$HOME/msi/extensions/bin/$EPICS_HOST_ARCH/msi" "$EPICS_BASE/bin/$EPICS_HOST_ARCH/"
|
||||
echo 'MSI:=$(EPICS_BASE)/bin/$(EPICS_HOST_ARCH)/msi' >> "$EPICS_BASE/configure/CONFIG_SITE"
|
||||
|
||||
cat <<EOF >> configure/CONFIG_SITE
|
||||
MSI = \$(EPICS_BASE)/bin/\$(EPICS_HOST_ARCH)/msi
|
||||
EOF
|
||||
|
||||
;;
|
||||
*) echo "Use MSI from Base"
|
||||
;;
|
||||
esac
|
||||
|
||||
touch $EPICS_BASE/built
|
||||
else
|
||||
echo "Using cached epics-base!"
|
||||
fi
|
||||
|
||||
# IPAC
|
||||
if [ -n "$IPAC" ]; then
|
||||
if [ ! -e "$SUPPORT/ipac/built" ]; then
|
||||
echo "Build ipac"
|
||||
install -d $SUPPORT/ipac
|
||||
git clone --depth 10 --branch $IPAC https://github.com/epics-modules/ipac.git $SUPPORT/ipac
|
||||
cat << EOF > $SUPPORT/ipac/configure/RELEASE
|
||||
EPICS_BASE=$SUPPORT/epics-base
|
||||
EOF
|
||||
make -C $SUPPORT/ipac
|
||||
touch $SUPPORT/ipac/built
|
||||
else
|
||||
echo "Using cached ipac"
|
||||
fi
|
||||
else
|
||||
echo "Skipping ipac"
|
||||
fi
|
||||
|
||||
|
||||
# sequencer
|
||||
if [ ! -e "$SUPPORT/seq/built" ]; then
|
||||
echo "Build sequencer"
|
||||
install -d $SUPPORT/seq
|
||||
curl -L "http://www-csr.bessy.de/control/SoftDist/sequencer/releases/seq-${SEQ}.tar.gz" | tar -C $SUPPORT/seq -xvz --strip-components=1
|
||||
cp $RELEASE_PATH $SUPPORT/seq/configure/RELEASE
|
||||
make -C $SUPPORT/seq
|
||||
touch $SUPPORT/seq/built
|
||||
else
|
||||
echo "Using cached seq"
|
||||
fi
|
||||
|
||||
|
||||
# asyn
|
||||
if [ ! -e "$SUPPORT/asyn/built" ]; then
|
||||
echo "Build asyn"
|
||||
install -d $SUPPORT/asyn
|
||||
curl -L "https://epics.anl.gov/download/modules/asyn${ASYN}.tar.gz" | tar -C $SUPPORT/asyn -xvz --strip-components=1
|
||||
cp $RELEASE_PATH $SUPPORT/asyn/configure/RELEASE
|
||||
make -C "$SUPPORT/asyn" -j2
|
||||
touch $SUPPORT/asyn/built
|
||||
else
|
||||
echo "Using cached asyn"
|
||||
fi
|
||||
@@ -0,0 +1,211 @@
|
||||
# .github/workflows/ci-scripts-build.yml for use with EPICS Base ci-scripts
|
||||
# (see: https://github.com/epics-base/ci-scripts)
|
||||
|
||||
# This is YAML - indentation levels are crucial
|
||||
|
||||
# Set the 'name:' properties to values that work for you (MYMODULE)
|
||||
|
||||
name: "GHA full build"
|
||||
|
||||
# Only run manually
|
||||
on:
|
||||
workflow_dispatch
|
||||
|
||||
env:
|
||||
SETUP_PATH: .ci-local:.ci
|
||||
# For the sequencer on Linux/Windows/MacOS
|
||||
APT: re2c
|
||||
CHOCO: re2c
|
||||
BREW: re2c
|
||||
|
||||
jobs:
|
||||
build-base:
|
||||
name: ${{ matrix.name }}
|
||||
runs-on: ${{ matrix.os }}
|
||||
# Set environment variables from matrix parameters
|
||||
env:
|
||||
CMP: ${{ matrix.cmp }}
|
||||
BCFG: ${{ matrix.configuration }}
|
||||
BASE: ${{ matrix.base }}
|
||||
WINE: ${{ matrix.wine }}
|
||||
RTEMS: ${{ matrix.rtems }}
|
||||
RTEMS_TARGET: ${{ matrix.rtems_target }}
|
||||
EXTRA: ${{ matrix.extra }}
|
||||
TEST: ${{ matrix.test }}
|
||||
SET: ${{ matrix.set }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
# Job names also name artifacts, character limitations apply
|
||||
include:
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
wine: "64"
|
||||
base: "7.0"
|
||||
set: modules
|
||||
name: "Ub-20 gcc-9 + MinGW"
|
||||
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc
|
||||
configuration: static
|
||||
wine: "64"
|
||||
base: "7.0"
|
||||
set: modules
|
||||
name: "Ub-20 gcc-9 + MinGW, static"
|
||||
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc
|
||||
configuration: static
|
||||
extra: "CMD_CXXFLAGS=-std=c++11"
|
||||
base: "7.0"
|
||||
set: modules
|
||||
name: "Ub-20 gcc-9 C++11, static"
|
||||
|
||||
- os: ubuntu-20.04
|
||||
cmp: clang
|
||||
configuration: default
|
||||
extra: "CMD_CXXFLAGS=-std=c++11"
|
||||
base: "7.0"
|
||||
set: modules
|
||||
name: "Ub-20 clang-10 C++11"
|
||||
|
||||
### fails building autosave
|
||||
#!- os: ubuntu-20.04
|
||||
#! cmp: gcc
|
||||
#! configuration: default
|
||||
#! rtems: "4.10"
|
||||
#! base: "7.0"
|
||||
#! set: modules
|
||||
#! name: "Ub-20 gcc-9 + RT-4.10"
|
||||
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
rtems: "4.9"
|
||||
base: "7.0"
|
||||
set: modules
|
||||
name: "Ub-20 gcc-9 + RT-4.9"
|
||||
|
||||
### fails building asyn
|
||||
#!- os: ubuntu-20.04
|
||||
#! cmp: gcc
|
||||
#! configuration: default
|
||||
#! rtems: "5"
|
||||
#! rtems_target: RTEMS-pc686-qemu
|
||||
#! base: "7.0"
|
||||
#! set: modules
|
||||
#! name: "Ub-20 gcc-9 + RT-5.1 pc686"
|
||||
|
||||
### fails building autosave
|
||||
#!- os: ubuntu-20.04
|
||||
#! cmp: gcc
|
||||
#! configuration: default
|
||||
#! rtems: "5"
|
||||
#! rtems_target: RTEMS-beatnik
|
||||
#! test: NO
|
||||
#! base: "7.0"
|
||||
#! set: modules
|
||||
#! name: "Ub-20 gcc-9 + RT-5.1 beatnik"
|
||||
|
||||
- os: ubuntu-18.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
base: "7.0"
|
||||
set: modules
|
||||
name: "Ub-18 gcc-7"
|
||||
|
||||
### g++-8 not found
|
||||
#!- os: ubuntu-18.04
|
||||
#! cmp: gcc-8
|
||||
#! utoolchain: true
|
||||
#! configuration: default
|
||||
#! base: "7.0"
|
||||
#! set: modules
|
||||
#! name: "Ub-18 gcc-8"
|
||||
|
||||
#!- os: ubuntu-20.04
|
||||
#! cmp: gcc-8
|
||||
#! utoolchain: true
|
||||
#! configuration: default
|
||||
#! base: "7.0"
|
||||
#! set: modules
|
||||
#! name: "Ub-20 gcc-8"
|
||||
|
||||
- os: ubuntu-20.04
|
||||
cmp: clang
|
||||
configuration: default
|
||||
base: "7.0"
|
||||
set: modules
|
||||
name: "Ub-20 clang-10"
|
||||
|
||||
- os: macos-latest
|
||||
cmp: clang
|
||||
configuration: default
|
||||
base: "7.0"
|
||||
set: modules
|
||||
name: "MacOS clang-12"
|
||||
|
||||
- os: windows-2019
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
base: "7.0"
|
||||
set: modules
|
||||
name: "Win2019 MinGW"
|
||||
|
||||
- os: windows-2019
|
||||
cmp: gcc
|
||||
configuration: static
|
||||
base: "7.0"
|
||||
set: modules
|
||||
name: "Win2019 MinGW, static"
|
||||
|
||||
- os: windows-2019
|
||||
cmp: vs2019
|
||||
configuration: default
|
||||
base: "7.0"
|
||||
set: modules
|
||||
name: "Win2019 MSC-19"
|
||||
|
||||
- os: windows-2019
|
||||
cmp: vs2019
|
||||
configuration: static
|
||||
base: "7.0"
|
||||
set: modules
|
||||
name: "Win2019 MSC-19, static"
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: true
|
||||
- name: Automatic core dumper analysis
|
||||
uses: mdavidsaver/ci-core-dumper@master
|
||||
- name: "apt-get install"
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get -y install qemu-system-x86 g++-mingw-w64-x86-64 gdb
|
||||
if: runner.os == 'Linux'
|
||||
- name: "apt-get install ${{ matrix.cmp }}"
|
||||
run: |
|
||||
sudo apt-get -y install software-properties-common
|
||||
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
|
||||
sudo apt-get update
|
||||
sudo apt-get -y install ${{ matrix.cmp }}
|
||||
if: matrix.utoolchain
|
||||
- name: Sanity Check
|
||||
run: python .ci-local/github-actions/sanity-check.py
|
||||
- name: Prepare and compile dependencies
|
||||
run: python .ci/cue.py prepare
|
||||
- name: Patch main module
|
||||
run: python .ci-local/github-actions/post-prepare.py
|
||||
- name: Build main module
|
||||
run: python .ci/cue.py build
|
||||
- name: Run main module tests
|
||||
run: python .ci/cue.py test
|
||||
- name: Upload tapfiles Artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: tapfiles ${{ matrix.name }}
|
||||
path: '**/O.*/*.tap'
|
||||
- name: Collect and show test results
|
||||
run: python .ci/cue.py test-results
|
||||
@@ -0,0 +1,104 @@
|
||||
# .github/workflows/ci-scripts-build.yml for use with EPICS Base ci-scripts
|
||||
# (see: https://github.com/epics-base/ci-scripts)
|
||||
|
||||
# This is YAML - indentation levels are crucial
|
||||
|
||||
# Set the 'name:' properties to values that work for you (MYMODULE)
|
||||
|
||||
name: "GHA build"
|
||||
|
||||
# Trigger on pushes to the master branch and PRs
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- 'documentation/*'
|
||||
- '**/*.html'
|
||||
- '**/*.md'
|
||||
- '.github/workflows/ci-scripts-build-full.yml'
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
|
||||
env:
|
||||
SETUP_PATH: .ci-local:.ci
|
||||
# For the sequencer on Linux/Windows/MacOS
|
||||
APT: re2c
|
||||
CHOCO: re2c
|
||||
BREW: re2c
|
||||
|
||||
jobs:
|
||||
build-base:
|
||||
name: ${{ matrix.name }}
|
||||
runs-on: ${{ matrix.os }}
|
||||
# Set environment variables from matrix parameters
|
||||
env:
|
||||
CMP: ${{ matrix.cmp }}
|
||||
BCFG: ${{ matrix.configuration }}
|
||||
BASE: ${{ matrix.base }}
|
||||
WINE: ${{ matrix.wine }}
|
||||
RTEMS: ${{ matrix.rtems }}
|
||||
RTEMS_TARGET: ${{ matrix.rtems_target }}
|
||||
EXTRA: ${{ matrix.extra }}
|
||||
TEST: ${{ matrix.test }}
|
||||
SET: ${{ matrix.set }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
# Job names also name artifacts, character limitations apply
|
||||
include:
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
base: "7.0"
|
||||
set: modules
|
||||
name: "7.0 Ub-20 gcc-9"
|
||||
|
||||
- os: macos-latest
|
||||
cmp: clang
|
||||
configuration: default
|
||||
base: "3.15"
|
||||
set: modules
|
||||
name: "3.15 MacOS clang-12"
|
||||
|
||||
- os: windows-2019
|
||||
cmp: vs2019
|
||||
configuration: static
|
||||
base: "3.15"
|
||||
set: modules
|
||||
name: "3.15 Win VS2019, static"
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: true
|
||||
- name: Automatic core dumper analysis
|
||||
uses: mdavidsaver/ci-core-dumper@master
|
||||
- name: "apt-get install"
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get -y install qemu-system-x86 g++-mingw-w64-x86-64 gdb
|
||||
if: runner.os == 'Linux'
|
||||
- name: "apt-get install ${{ matrix.cmp }}"
|
||||
run: |
|
||||
sudo apt-get -y install software-properties-common
|
||||
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
|
||||
sudo apt-get update
|
||||
sudo apt-get -y install ${{ matrix.cmp }}
|
||||
if: matrix.utoolchain
|
||||
- name: Sanity Check
|
||||
run: python .ci-local/github-actions/sanity-check.py
|
||||
- name: Prepare and compile dependencies
|
||||
run: python .ci/cue.py prepare
|
||||
- name: Patch main module
|
||||
run: python .ci-local/github-actions/post-prepare.py
|
||||
- name: Build main module
|
||||
run: python .ci/cue.py build
|
||||
- name: Run main module tests
|
||||
run: python .ci/cue.py test
|
||||
- name: Upload tapfiles Artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: tapfiles ${{ matrix.name }}
|
||||
path: '**/O.*/*.tap'
|
||||
- name: Collect and show test results
|
||||
run: python .ci/cue.py test-results
|
||||
+2
-1
@@ -3,7 +3,7 @@ O.*
|
||||
*.swp
|
||||
*BAK.adl
|
||||
bin/
|
||||
db/
|
||||
/db/
|
||||
dbd/
|
||||
html/
|
||||
include/
|
||||
@@ -15,3 +15,4 @@ dllPath.bat
|
||||
auto_settings.sav*
|
||||
auto_positions.sav*
|
||||
.ccfxprepdir/
|
||||
*.local
|
||||
|
||||
+99
@@ -0,0 +1,99 @@
|
||||
[submodule "modules/motorNewport"]
|
||||
path = modules/motorNewport
|
||||
url = https://github.com/epics-motor/motorNewport.git
|
||||
[submodule "modules/motorOms"]
|
||||
path = modules/motorOms
|
||||
url = https://github.com/epics-motor/motorOms.git
|
||||
[submodule "modules/motorAcsTech80"]
|
||||
path = modules/motorAcsTech80
|
||||
url = https://github.com/epics-motor/motorAcsTech80.git
|
||||
[submodule "modules/motorAttocube"]
|
||||
path = modules/motorAttocube
|
||||
url = https://github.com/epics-motor/motorAttocube.git
|
||||
[submodule "modules/motorDeltaTau"]
|
||||
path = modules/motorDeltaTau
|
||||
url = https://github.com/epics-motor/motorDeltaTau.git
|
||||
[submodule "modules/motorFaulhaber"]
|
||||
path = modules/motorFaulhaber
|
||||
url = https://github.com/epics-motor/motorFaulhaber.git
|
||||
[submodule "modules/motorHytec"]
|
||||
path = modules/motorHytec
|
||||
url = https://github.com/epics-motor/motorHytec.git
|
||||
[submodule "modules/motorKohzu"]
|
||||
path = modules/motorKohzu
|
||||
url = https://github.com/epics-motor/motorKohzu.git
|
||||
[submodule "modules/motorMclennan"]
|
||||
path = modules/motorMclennan
|
||||
url = https://github.com/epics-motor/motorMclennan.git
|
||||
[submodule "modules/motorMicroMo"]
|
||||
path = modules/motorMicroMo
|
||||
url = https://github.com/epics-motor/motorMicroMo.git
|
||||
[submodule "modules/motorOriel"]
|
||||
path = modules/motorOriel
|
||||
url = https://github.com/epics-motor/motorOriel.git
|
||||
[submodule "modules/motorMicronix"]
|
||||
path = modules/motorMicronix
|
||||
url = https://github.com/epics-motor/motorMicronix.git
|
||||
[submodule "modules/motorPiJena"]
|
||||
path = modules/motorPiJena
|
||||
url = https://github.com/epics-motor/motorPiJena.git
|
||||
[submodule "modules/motorSmartMotor"]
|
||||
path = modules/motorSmartMotor
|
||||
url = https://github.com/epics-motor/motorSmartMotor.git
|
||||
[submodule "modules/motorThorLabs"]
|
||||
path = modules/motorThorLabs
|
||||
url = https://github.com/epics-motor/motorThorLabs.git
|
||||
[submodule "modules/motorAcs"]
|
||||
path = modules/motorAcs
|
||||
url = https://github.com/epics-motor/motorAcs.git
|
||||
[submodule "modules/motorMicos"]
|
||||
path = modules/motorMicos
|
||||
url = https://github.com/epics-motor/motorMicos.git
|
||||
[submodule "modules/motorNewFocus"]
|
||||
path = modules/motorNewFocus
|
||||
url = https://github.com/epics-motor/motorNewFocus.git
|
||||
[submodule "modules/motorIms"]
|
||||
path = modules/motorIms
|
||||
url = https://github.com/epics-motor/motorIms.git
|
||||
[submodule "modules/motorOmsAsyn"]
|
||||
path = modules/motorOmsAsyn
|
||||
url = https://github.com/epics-motor/motorOmsAsyn.git
|
||||
[submodule "modules/motorPhytron"]
|
||||
path = modules/motorPhytron
|
||||
url = https://github.com/epics-motor/motorPhytron.git
|
||||
[submodule "modules/motorAerotech"]
|
||||
path = modules/motorAerotech
|
||||
url = https://github.com/epics-motor/motorAerotech.git
|
||||
[submodule "modules/motorScriptMotor"]
|
||||
path = modules/motorScriptMotor
|
||||
url = https://github.com/epics-motor/motorScriptMotor.git
|
||||
[submodule "modules/motorNPoint"]
|
||||
path = modules/motorNPoint
|
||||
url = https://github.com/epics-motor/motorNPoint.git
|
||||
[submodule "modules/motorPI"]
|
||||
path = modules/motorPI
|
||||
url = https://github.com/epics-motor/motorPI.git
|
||||
[submodule "modules/motorAMCI"]
|
||||
path = modules/motorAMCI
|
||||
url = https://github.com/epics-motor/motorAMCI.git
|
||||
[submodule "modules/motorPIGCS2"]
|
||||
path = modules/motorPIGCS2
|
||||
url = https://github.com/epics-motor/motorPIGCS2.git
|
||||
[submodule "modules/motorSmarAct"]
|
||||
path = modules/motorSmarAct
|
||||
url = https://github.com/epics-motor/motorSmarAct.git
|
||||
[submodule "modules/motorMotorSim"]
|
||||
path = modules/motorMotorSim
|
||||
url = https://github.com/epics-motor/motorMotorSim.git
|
||||
[submodule "modules/motorMXmotor"]
|
||||
path = modules/motorMXmotor
|
||||
url = https://github.com/epics-motor/motorMXmotor.git
|
||||
[submodule "modules/motorParker"]
|
||||
path = modules/motorParker
|
||||
url = https://github.com/epics-motor/motorParker.git
|
||||
[submodule ".ci"]
|
||||
path = .ci
|
||||
url = https://github.com/epics-base/ci-scripts
|
||||
[submodule "modules/motorAcsMotion"]
|
||||
path = modules/motorAcsMotion
|
||||
url = https://github.com/epics-motor/motorAcsMotion.git
|
||||
+132
-16
@@ -1,27 +1,143 @@
|
||||
sudo: false
|
||||
dist: trusty
|
||||
language: c
|
||||
compiler:
|
||||
- gcc
|
||||
# .travis.xml for use with EPICS Base ci-scripts
|
||||
# (see: https://github.com/epics-base/ci-scripts)
|
||||
|
||||
language: cpp
|
||||
compiler: gcc
|
||||
dist: xenial
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/.cache
|
||||
- $HOME/.cache
|
||||
|
||||
env:
|
||||
global:
|
||||
- SETUP_PATH=.ci-local:.ci
|
||||
# for the sequencer on Windows
|
||||
- CHOCO=re2c
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
# for all EPICS builds
|
||||
- libreadline6-dev
|
||||
- libncurses5-dev
|
||||
- perl
|
||||
# for clang compiler
|
||||
- clang
|
||||
# for mingw builds (32bit and 64bit)
|
||||
- g++-mingw-w64-i686
|
||||
- g++-mingw-w64-x86-64
|
||||
# for RTEMS cross builds
|
||||
- qemu-system-x86
|
||||
homebrew:
|
||||
packages:
|
||||
# for the sequencer
|
||||
- re2c
|
||||
env:
|
||||
- BASE=3.14 STATIC=shared SEQ=2.2.4 ASYN=4-31 IPAC=2.14
|
||||
- BASE=3.14 STATIC=static SEQ=2.2.4 ASYN=4-31 IPAC=2.14
|
||||
- BASE=R3.15.5 STATIC=shared SEQ=2.2.4 ASYN=4-31 IPAC=2.14
|
||||
- BASE=R3.15.5 STATIC=static SEQ=2.2.4 ASYN=4-31 IPAC=2.14
|
||||
- BASE=3.16 STATIC=shared RTEMS=4.10 SEQ=2.2.4 ASYN=4-31 IPAC=2.14
|
||||
- BASE=3.16 STATIC=shared CMPLR=clang WINE=32 SEQ=2.2.4 ASYN=4-31 IPAC=
|
||||
- BASE=3.16 STATIC=static WINE=32 SEQ=2.2.4 ASYN=4-31 IPAC=
|
||||
install: ./.ci/travis-prepare.sh
|
||||
script: make
|
||||
update: true
|
||||
|
||||
install:
|
||||
- python .ci/cue.py prepare
|
||||
# ugly hacks go here:
|
||||
- python .ci-local/travis/post-prepare.py
|
||||
|
||||
script:
|
||||
- python .ci/cue.py build
|
||||
- python .ci/cue.py test
|
||||
- python .ci/cue.py test-results
|
||||
|
||||
# If you need to do more during install and build,
|
||||
# add a local directory to your module and do e.g.
|
||||
# - ./.ci-local/travis/install-extras.sh
|
||||
|
||||
# Define build jobs
|
||||
|
||||
# Well-known variables to use
|
||||
# SET source setup file
|
||||
# EXTRA content will be added to make command line
|
||||
# STATIC set to YES for static build (default: NO)
|
||||
# TEST set to NO to skip running the tests (default: YES)
|
||||
# VV set to make build scripts verbose (default: unset)
|
||||
|
||||
# Usually from setup files, but may be specified or overridden
|
||||
# on a job line
|
||||
# MODULES list of dependency modules
|
||||
# BASE branch or release tag name of the EPICS Base to use
|
||||
# <MODULE> branch or release tag for a specific module
|
||||
# ... see README for setup file syntax description
|
||||
|
||||
jobs:
|
||||
include:
|
||||
|
||||
# Older Base releases
|
||||
|
||||
- env: SET=base3-14
|
||||
|
||||
- env: SET=base3-14 BCFG=static
|
||||
|
||||
- env: SET=base3-15
|
||||
|
||||
- env: SET=base3-15 BCFG=static
|
||||
|
||||
# Default gcc, static build
|
||||
|
||||
- env: SET=base7-0
|
||||
|
||||
- env: SET=base7-0 BCFG=static
|
||||
|
||||
# Default clang build
|
||||
|
||||
- env: SET=base7-0
|
||||
compiler: clang
|
||||
|
||||
- env: SET=base7-0 EXTRA="CMD_CXXFLAGS=-std=c++11"
|
||||
compiler: clang
|
||||
|
||||
# Trusty: compiler versions very close to RHEL 7
|
||||
|
||||
- env: SET=base7-0
|
||||
dist: trusty
|
||||
|
||||
- env: SET=base7-0 BCFG=debug
|
||||
dist: trusty
|
||||
|
||||
# Other gcc versions (added as an extra package)
|
||||
|
||||
- env: SET=base7-0
|
||||
compiler: gcc-6
|
||||
addons: { apt: { packages: ["g++-6"], sources: ["ubuntu-toolchain-r-test"] } }
|
||||
|
||||
- env: SET=base7-0
|
||||
compiler: gcc-7
|
||||
addons: { apt: { packages: ["g++-7"], sources: ["ubuntu-toolchain-r-test"] } }
|
||||
|
||||
# Cross-compilations to Windows using MinGW and WINE
|
||||
|
||||
- env: SET=base7-0 WINE=32 TEST=NO BCFG=static
|
||||
|
||||
- env: SET=base7-0 WINE=64 TEST=NO
|
||||
|
||||
# Windows builds
|
||||
|
||||
- env: SET=base7-0
|
||||
os: windows
|
||||
compiler: vs2017
|
||||
|
||||
- env: SET=base7-0 BCFG=static
|
||||
os: windows
|
||||
compiler: vs2017
|
||||
|
||||
- env: SET=base7-0 BCFG=debug
|
||||
os: windows
|
||||
compiler: vs2017
|
||||
|
||||
# MacOS build
|
||||
|
||||
- env: SET=base7-0
|
||||
os: osx
|
||||
compiler: clang
|
||||
|
||||
# Cross-compilation to RTEMS
|
||||
|
||||
- env: SET=base7-0 RTEMS=4.9
|
||||
|
||||
- env: SET=base7-0 RTEMS=4.10
|
||||
|
||||
@@ -7,15 +7,7 @@ include $(TOP)/configure/CONFIG
|
||||
DIRS += configure motorApp
|
||||
motorApp_DEPEND_DIRS = configure
|
||||
|
||||
# To build motor examples;
|
||||
# 1st - uncomment lines below.
|
||||
# 2nd - uncomment required support module lines at the bottom of
|
||||
# <motor>/configure/RELEASE.
|
||||
# 3rd - make clean uninstall
|
||||
# 4th - make
|
||||
|
||||
#!DIRS += motorExApp iocBoot
|
||||
#!motorExApp_DEPEND_DIRS = motorApp
|
||||
#!iocBoot_DEPEND_DIRS = motorExApp
|
||||
DIRS += modules
|
||||
modules_DEPEND_DIRS = motorApp
|
||||
|
||||
include $(TOP)/configure/RULES_TOP
|
||||
|
||||
@@ -1,12 +1,48 @@
|
||||
# motor
|
||||
APS BCDA synApps module: motor
|
||||
[](https://github.com/epics-modules/motor/actions/workflows/ci-scripts-build.yml)
|
||||
<!--[](https://travis-ci.org/epics-modules/motor)-->
|
||||
|
||||
[](https://travis-ci.org/epics-modules/motor)
|
||||
This module contains motor support for the Experimental Physics and Industrial Control System (EPICS).
|
||||
|
||||
**Note**: Current discussion on future of the *motor* module repository: https://github.com/epics-modules/motor/issues/55
|
||||
The core motor functionality resides in this respository. Starting with R7-0 the drivers have been moved from motor to standalone github repositories, which have been added to motor as submodules. The driver repositories can be found here: https://github.com/epics-motor
|
||||
|
||||
## Getting started
|
||||
|
||||
### Updating clones created before 2019-04-02
|
||||
Use the following procedure to update clones that were created before the beginning of the motor split:
|
||||
```bash
|
||||
$ cd motor
|
||||
$ make distclean
|
||||
$ git fetch origin
|
||||
$ git status
|
||||
<behind by many commits and can be fast-forwarded>
|
||||
$ git stash
|
||||
$ git rebase origin/master
|
||||
$ git stash apply
|
||||
$ git submodule init
|
||||
$ git submodule update
|
||||
```
|
||||
Failure to 'make distclean' before rebasing will result in many driver source directories in motorApp with "O.*" directories that need to be removed manually.
|
||||
|
||||
### Cloning motor with support for all motor controllers
|
||||
The following command results in a motor directory that contains all of the driver submodules:
|
||||
```bash
|
||||
$ git clone --recursive https://github.com/epics-modules/motor.git
|
||||
```
|
||||
|
||||
### Cloning motor with support for a single motor controller
|
||||
The following procedure allows only required drivers to be built, which can significantly reduce build times:
|
||||
```bash
|
||||
$ git clone https://github.com/epics-modules/motor.git
|
||||
$ cd motor
|
||||
$ git submodule init
|
||||
$ git submodule update modules/motorMotorSim
|
||||
```
|
||||
|
||||
## Additional Info
|
||||
For more information, see:
|
||||
* [main page](https://epics-modules.github.io/motor)
|
||||
* [release notes](https://github.com/epics-modules/motor/blob/master/docs/RELEASE.md)
|
||||
* [motor wiki](https://github.com/epics-modules/motor/wiki)
|
||||
* http://www.aps.anl.gov/bcda/synApps
|
||||
* [HTML documentation](https://github.com/epics-modules/motor/blob/master/docs/README.md)
|
||||
@@ -14,4 +50,3 @@ For more information, see:
|
||||
[Report an issue with Motor](https://github.com/epics-modules/motor/issues/new?title=%20ISSUE%20NAME%20HERE&body=**Describe%20the%20issue**%0A%0A**Steps%20to%20reproduce**%0A1.%20Step%20one%0A2.%20Step%20two%0A3.%20Step%20three%0A%0A**Expected%20behaivour**%0A%0A**Actual%20behaviour**%0A%0A**Build%20Environment**%0AArchitecture:%0AEpics%20Base%20Version:%0ADependent%20Module%20Versions:&labels=bug)
|
||||
[Request a feature](https://github.com/epics-modules/motor/issues/new?title=%20FEATURE%20SHORT%20DESCRIPTION&body=**Feature%20Long%20Description**%0A%0A**Why%20should%20this%20be%20added?**%0A&labels=enhancement)
|
||||
|
||||
converted from APS SVN repository: Fri Oct 16 12:31:41 CDT 2015
|
||||
|
||||
+21
-9
@@ -13,21 +13,33 @@
|
||||
# Normally CHECK_RELEASE should be set to YES.
|
||||
# Set CHECK_RELEASE to NO to disable checking completely.
|
||||
# Set CHECK_RELEASE to WARN to perform consistency checking but
|
||||
# continue building anyway if conflicts are found.
|
||||
# continue building even if conflicts are found.
|
||||
CHECK_RELEASE = YES
|
||||
|
||||
# Set this when you only want to compile this application
|
||||
# for a subset of the cross-compiled target architectures
|
||||
# that Base is built for.
|
||||
#CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040
|
||||
#CROSS_COMPILER_TARGET_ARCHS = vxWorks-ppc32
|
||||
|
||||
# To install files into a location other than $(TOP) define
|
||||
# INSTALL_LOCATION here.
|
||||
#INSTALL_LOCATION=</path/name/to/install/top>
|
||||
#INSTALL_LOCATION=</absolute/path/to/install/top>
|
||||
|
||||
# Set this when the IOC and build host use different paths
|
||||
# to the install location. This may be needed to boot from
|
||||
# a Microsoft FTP server say, or on some NFS configurations.
|
||||
#IOCS_APPL_TOP = </IOC's/absolute/path/to/install/top>
|
||||
|
||||
# For application debugging purposes, override the HOST_OPT and/
|
||||
# or CROSS_OPT settings from base/configure/CONFIG_SITE
|
||||
#HOST_OPT = NO
|
||||
#CROSS_OPT = NO
|
||||
|
||||
# Don't build iocs in motor/modules/motorVendor/iocs by default
|
||||
BUILD_IOCS = NO
|
||||
|
||||
# Overrides for the settings above may appear in a CONFIG_SITE.local file
|
||||
-include $(or $(MOTOR),$(TOP))/configure/CONFIG_SITE.local
|
||||
|
||||
-include $(SUPPORT)/configure/CONFIG_SITE
|
||||
|
||||
# Set this when your IOC and the host use different paths
|
||||
# to access the application. This will be needed to boot
|
||||
# from a Microsoft FTP server or with some NFS mounts.
|
||||
# You must rebuild in the iocBoot directory for this to
|
||||
# take effect.
|
||||
#IOCS_APPL_TOP = </IOC/path/to/application/top>
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
# Uncomment the following line to build iocs in motor/modules/motorVendor/iocs
|
||||
BUILD_IOCS = YES
|
||||
+26
-22
@@ -9,37 +9,41 @@
|
||||
#
|
||||
# Add your declarations here
|
||||
|
||||
SUPPORT=
|
||||
-include $(TOP)/../configure/SUPPORT.$(EPICS_HOST_ARCH)
|
||||
SUPPORT=/path/to/support
|
||||
|
||||
# If any motor controller communication mechanism besides the VME backplane is
|
||||
# required, then ASYN must be defined.
|
||||
# Recommended ASYN release: R4-23
|
||||
ASYN=$(SUPPORT)/asyn/R4-23
|
||||
# If any motor controller communication mechanism besides
|
||||
# the VME backplane is required, then ASYN must be defined.
|
||||
# Recommended ASYN release: R4-35
|
||||
ASYN=$(SUPPORT)/asyn-R4-35
|
||||
|
||||
# Need the sequencer and the busy record for the MM4005 and XPS trajectory scanning
|
||||
# Recommended SNCSEQ release: R2.1.16
|
||||
SNCSEQ=$(SUPPORT)/seq/seq-2-1-16
|
||||
# Recommended BUSY release: R1-6
|
||||
BUSY=$(SUPPORT)/busy/R1-6
|
||||
# Need the sequencer and the busy record for trajectory scanning
|
||||
# Recommended SNCSEQ release: R2.2.6
|
||||
SNCSEQ=$(SUPPORT)/seq-2-2-6
|
||||
# Recommended BUSY release: R1-7-1
|
||||
BUSY=$(SUPPORT)/busy-R1-7-1
|
||||
|
||||
# Recommended EPICS release: R3.14.12.4
|
||||
EPICS_BASE=
|
||||
-include $(TOP)/../configure/EPICS_BASE.$(EPICS_HOST_ARCH)
|
||||
# Recommended EPICS release: R3.15.6
|
||||
EPICS_BASE=/path/to/base
|
||||
|
||||
# The following must be defined for the MXmotor device driver.
|
||||
# The following must be defined for motorMXmotor
|
||||
#!MX=$(SUPPORT)/mx/mx
|
||||
|
||||
# The following support modules are required for the Hytec driver and for the examples in
|
||||
# <motor>/motorExApp. To build examples, the top Makefile,
|
||||
# <motor>/Makefile must also be edited.
|
||||
# IPAC is required to build motorHytec
|
||||
# Recommended IPAC release: R2-15
|
||||
IPAC=$(SUPPORT)/ipac-R2-15
|
||||
|
||||
# Recommended IPAC release: R2-12
|
||||
IPAC=$(SUPPORT)/ipac/R2-12
|
||||
# Script module needed to build motorScriptMotor
|
||||
#!LUA=$(SUPPORT)/lua-R1-3
|
||||
|
||||
# Script module needed to build ScriptMotorController
|
||||
#!LUA=$(SUPPORT)/lua
|
||||
# Modbus module needed to build motorAMCI's example IOC
|
||||
# Required MODBUS release: R2-11 or later
|
||||
#!MODBUS=$(SUPPORT)/modbus-R2-11
|
||||
|
||||
# The following is only needed for the motor examples in iocBoot.
|
||||
#!MOTOR=$(TOP)
|
||||
|
||||
# These lines allow developers to override these RELEASE settings
|
||||
# without having to modify this file directly.
|
||||
-include $(TOP)/../RELEASE.local
|
||||
-include $(TOP)/../RELEASE.$(EPICS_HOST_ARCH).local
|
||||
-include $(TOP)/configure/RELEASE.local
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
#RULES_TOP
|
||||
ifeq ($(INSTALL_LOCATION),$(MOTOR))
|
||||
INSTALL_CONFIG =
|
||||
endif
|
||||
include $(CONFIG)/RULES_TOP
|
||||
|
||||
|
||||
@@ -1,97 +0,0 @@
|
||||
EnsemblePSOFly.db supports fly scans of a single motor controlled by an Aerotech
|
||||
Ensemble controller. It uses the motor record to move the motor, and read
|
||||
position, and to read control fields such as offset and direction. It uses an
|
||||
asyn port to talk to the controller about capabilities that the motor record
|
||||
doesn't support, such as the control of PSO (position synchronized output)
|
||||
pulses.
|
||||
|
||||
Commands to tell the Aerotech Ensemble to output pulses every scanDelta units,
|
||||
beginning at startPos and ending at scan_end. Note that the Ensemble fires
|
||||
pulses at positions n*delta from the position at which the PSOCONTROL X ARM
|
||||
command was invoked. Thus, the pre-fly ("taxi") position of the motor must be
|
||||
an integer multiple of scanDelta.
|
||||
|
||||
{start} = startPos - scanDelta
|
||||
{end} = scan_end + scanDelta/2
|
||||
|
||||
|
||||
PSOCONTROL X RESET ' Reset PSO.
|
||||
PSOPULSE X TIME 50,25 ' Define a pulse of width
|
||||
' 50 usec, with 25 usec
|
||||
' on time.
|
||||
|
||||
PSOOUTPUT X PULSE WINDOW MASK ' Set PSO output type to PULSE.
|
||||
' PSO pulses are masked by
|
||||
' the window.
|
||||
|
||||
PSOTRACK X INPUT 1 ' Track primary encoder for
|
||||
' axis.
|
||||
|
||||
PSODISTANCE X FIXED scanDelta UNITS ' Set the incremental firing
|
||||
' distance ((units).
|
||||
|
||||
PSOWINDOW X 1 INPUT 1 ' Track primary encoder for
|
||||
' Window 1.
|
||||
|
||||
PSOWINDOW X 1 RANGE {start},{end} UNITS ' Set the fixed range (in units) for
|
||||
' the window.
|
||||
|
||||
' Note that the following command establishes the origin for
|
||||
' distance-based output pulses as the motor's current position.
|
||||
' (i.e., it simply clears a counter that will be clocked by encoder pulses.)
|
||||
PSOCONTROL X ARM ' Enable PSO and start tracking.
|
||||
|
||||
<user moves the motor from start to end>
|
||||
|
||||
PSOWINDOW X 1 OFF ' Turn off window.
|
||||
PSOCONTROL X OFF ' Stop PSO tracking.
|
||||
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
Start, end positions, etc.
|
||||
|
||||
Before the motor's fly motion begins, the motor is moved to the "taxi" position,
|
||||
which is chosen so that the motor can accelerate to constant speed before data
|
||||
acquisition begins. For constant acceleration from a possibly nonzero base
|
||||
speed, the acceleration distance is given by
|
||||
|
||||
accelDist = accelTime * (baseSpeed + slewSpeed)/2
|
||||
|
||||
In EPICS motorRecord PVs, this is
|
||||
|
||||
accelDist = motor.ACCL * (motor.VBAS + M.VELO)/2
|
||||
|
||||
Data acquisition occurs at N locations during the motor motion, where
|
||||
N = (endPos - startPos) / scanDelta
|
||||
The locations are given by
|
||||
dataStart + i*scanDelta*dir
|
||||
where i is an integer in the range [0, N-1], and
|
||||
dir = (endPos-startPos)>0 ? 1 : -1
|
||||
|
||||
Because of the way the Ensemble motor controller's position-synchronized output
|
||||
is implemented, dataStart is determined by the taxi position and the
|
||||
pulse-window open and close positions, such that the taxi position must be an
|
||||
integer multiple, M, of scanDelta away from dataStart.
|
||||
|
||||
The taxi position must also be at least accelDist away from dataStart, giving a
|
||||
lower limit on M:
|
||||
|
||||
taxi = dataStart - M*scanDelta*dir <= dataStart - accelDist*dir
|
||||
M >= accelDist/scanDelta
|
||||
M = ceil(accelDist/scanDelta)
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
The Ensemble PSO output is RS422, via an interface cable that ends with a female
|
||||
DB9 connector with an entirely custom pinout that includes 5V power. If
|
||||
conversion to TTL is needed, the following chips and boards seem useful:
|
||||
|
||||
Analog Devices ADM483E chip
|
||||
|
||||
Linear Technology LTC485 chip
|
||||
|
||||
Microbotics SLC10422-TTL board
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
+323
@@ -0,0 +1,323 @@
|
||||
# Motor Releases
|
||||
|
||||
## __R7-3 (2023-05-XX)__
|
||||
R7-3 is a release based on the master branch.
|
||||
|
||||
### Changes since R7-2-2
|
||||
|
||||
#### New features
|
||||
* Added motorAcsMotion as a submodule
|
||||
* TBD
|
||||
|
||||
#### Modifications to existing features
|
||||
* TBD
|
||||
|
||||
#### Bug fixes
|
||||
* TBD
|
||||
|
||||
#### Driver submodules (and noteworthy changes)
|
||||
|
||||
All driver modules now use Github Actions for CI builds.
|
||||
|
||||
| Module | Release | Changes |
|
||||
| ---------------- | ------- | ------- |
|
||||
| **motorAcs** | [R1-1-1](https://github.com/epics-motor/motorAcs/releases/tag/R1-1-1) | |
|
||||
| **motorAcsMotion** | [R2-1](https://github.com/epics-motor/motorAcsMotion/releases/tag/R2-1) | Added as a motor submodule |
|
||||
| **motorAcsTech80** | [R1-0-2](https://github.com/epics-motor/motorAcsTech80/releases/tag/R1-0-2) | |
|
||||
| **motorAerotech** | [R1-1-1](https://github.com/epics-motor/motorAerotech/releases/tag/R1-1-1) | Ensemble driver and doCommand.ab bug fixes |
|
||||
| **motorAMCI** | [R1-0-2](https://github.com/epics-motor/motorAMCI/releases/tag/R1-0-2) | Replaced printf calls with asynPrint calls in ANG1Driver.cpp |
|
||||
| **motorAttocube** | [R1-0-2](https://github.com/epics-motor/motorAttocube/releases/tag/R1-0-2) | |
|
||||
| **motorDeltaTau** | [R1-0-2](https://github.com/epics-motor/motorDeltaTau/releases/tag/R1-0-2) | |
|
||||
| **motorFaulhaber** | [R1-0-2](https://github.com/epics-motor/motorFaulhaber/releases/tag/R1-0-2) | |
|
||||
| **motorHytec** | [R1-0-3](https://github.com/epics-motor/motorHytec/releases/tag/R1-0-3) | |
|
||||
| **motorIms** | [R1-0-2](https://github.com/epics-motor/motorIms/releases/tag/R1-0-2) | |
|
||||
| **motorKohzu** | [R1-0-2](https://github.com/epics-motor/motorKohzu/releases/tag/R1-0-2) | |
|
||||
| **motorMclennan** | [R1-1-1](https://github.com/epics-motor/motorMclennan/releases/tag/R1-1-1) | |
|
||||
| **motorMicos** | [R2-1](https://github.com/epics-motor/motorMicos/releases/tag/R2-1) | Added support for the SMC Taurus |
|
||||
| **motorMicroMo** | [R1-0-2](https://github.com/epics-motor/motorMicroMo/releases/tag/R1-0-2) | |
|
||||
| **motorMicronix** | [R1-1](https://github.com/epics-motor/motorMicronix/releases/tag/R1-1) | |
|
||||
| **motorMotorSim** | [R1-2](https://github.com/epics-motor/motorMotorSim/releases/tag/R1-2) | Added motorSim8x.iocsh. Multiple improvements to example IOC. |
|
||||
| **motorMXmotor** | [R1-0-2](https://github.com/epics-motor/motorMXmotor/releases/tag/R1-0-2) | |
|
||||
| **motorNewFocus** | [R1-2](https://github.com/epics-motor/motorNewFocus/releases/tag/R1-2) | Improved example newfocus8742 configuration |
|
||||
| **motorNewport** | [R1-2](https://github.com/epics-motor/motorNewport/releases/tag/R1-2) | Added support for the FCL200. ESP300 driver now supports UEIP=Yes. |
|
||||
| **motorNPoint** | [R1-1](https://github.com/epics-motor/motorNPoint/releases/tag/R1-1) | |
|
||||
| **motorOms** | [R1-2](https://github.com/epics-motor/motorOms/releases/tag/R1-2) | Enabled non-VxWorks IOCs & epicsMutexTryLock bug fix |
|
||||
| **motorOmsAsyn** | [R1-0-3](https://github.com/epics-motor/motorOmsAsyn/releases/tag/R1-0-3) | Type fixes |
|
||||
| **motorOriel** | [R1-0-2](https://github.com/epics-motor/motorOriel/releases/tag/R1-0-2) | |
|
||||
| **motorParker** | [R1-1-1](https://github.com/epics-motor/motorParker/releases/tag/R1-1-1) | |
|
||||
| **motorPhytron** | [R1-2](https://github.com/epics-motor/motorPhytron/releases/tag/R1-2) | Added encoder options. Bug fixes for deceleration and homing to limts. |
|
||||
| **motorPI** | [R1-1](https://github.com/epics-motor/motorPI/releases/tag/R1-1) | Added E-816 example configuration |
|
||||
| **motorPIGCS2** | [R1-2](https://github.com/epics-motor/motorPIGCS2/releases/tag/R1-2) | Added support for E-518 & E-873.3QTU controllers. Added closed loop commands for the E-727. Bug fixes. |
|
||||
| **motorPiJena** | [R1-0-2](https://github.com/epics-motor/motorPiJena/releases/tag/R1-0-2) | |
|
||||
| **motorScriptMotor** | [R1-2](https://github.com/epics-motor/motorScriptMotor/releases/tag/R1-2) | Added Attocube AMC support |
|
||||
| **motorSmarAct** | [R2-0](https://github.com/epics-motor/motorSmarAct/releases/tag/R2-0) | Too many new features to list here; see [motorSmarAct release notes](https://github.com/epics-motor/motorSmarAct/releases/tag/R2-0) |
|
||||
| **motorSmartMotor** | [R1-0-2](https://github.com/epics-motor/motorSmartMotor/releases/tag/R1-0-2) | |
|
||||
| **motorThorLabs** | [R1-0-2](https://github.com/epics-motor/motorThorLabs/releases/tag/R1-0-2) | Added support for Kinesis KDC101 and KST101 |
|
||||
|
||||
## __R7-2-2 (2021-02-02)__
|
||||
R7-2-2 is a release based on the R7-2-1-bugfix branch.
|
||||
|
||||
### Changes since R7-2-1
|
||||
|
||||
#### Bug fixes
|
||||
* Added shareLib.h to asynMotorController.h and asynMotorAxis.h to allow building against asyn R4-41
|
||||
|
||||
#### Driver submodules (and noteworthy changes)
|
||||
| Module | Release | Changes |
|
||||
| ---------------- | ------- | ------- |
|
||||
| **motorNewport** | [070c93e](https://github.com/epics-motor/motorNewport/commits/070c93e1aa1a4dea39829f7dcb21489cfde582a1) | Added epicsExport.h to testSFTPUpload.cpp |
|
||||
| **motorOms** | [5219f8c](https://github.com/epics-motor/motorOms/commit/5219f8ceee352ec2a459f1bde316621af9c293a4) | Fixed epicsMutexTryLock problem described [here](https://github.com/epics-modules/motor/issues/172#issuecomment-758139901) |
|
||||
|
||||
## __R7-2-1 (2020-05-14)__
|
||||
R7-2-1 is a release based on the master branch.
|
||||
|
||||
### Changes since R7-2
|
||||
|
||||
#### Bug fixes
|
||||
* Motor drivers have been updated to resolve build problems for Windows and VxWorks
|
||||
|
||||
#### Driver submodules (and noteworthy changes)
|
||||
| Module | Release | Changes |
|
||||
| ---------------- | ------- | ------- |
|
||||
| motorAcs | [R1-1](https://github.com/epics-motor/motorAcs/releases/tag/R1-1) | |
|
||||
| motorAcsTech80 | [R1-0-1](https://github.com/epics-motor/motorAcsTech80/releases/tag/R1-0-1) | |
|
||||
| motorAerotech | [R1-1](https://github.com/epics-motor/motorAerotech/releases/tag/R1-1) | |
|
||||
| motorAMCI | [R1-0-1](https://github.com/epics-motor/motorAMCI/releases/tag/R1-0-1) | |
|
||||
| motorAttocube | [R1-0-1](https://github.com/epics-motor/motorAttocube/releases/tag/R1-0-1) | |
|
||||
| motorDeltaTau | [R1-0-1](https://github.com/epics-motor/motorDeltaTau/releases/tag/R1-0-1) | |
|
||||
| motorFaulhaber | [R1-0-1](https://github.com/epics-motor/motorFaulhaber/releases/tag/R1-0-1) | |
|
||||
| **motorHytec** | [R1-0-2](https://github.com/epics-motor/motorHytec/releases/tag/R1-0-2) | Only build the example IOC on Linux and VxWorks |
|
||||
| motorIms | [R1-0-1](https://github.com/epics-motor/motorIms/releases/tag/R1-0-1) | |
|
||||
| motorKohzu | [R1-0-1](https://github.com/epics-motor/motorKohzu/releases/tag/R1-0-1) | |
|
||||
| motorMclennan | [R1-1](https://github.com/epics-motor/motorMclennan/releases/tag/R1-1) | |
|
||||
| motorMicos | [R2-0](https://github.com/epics-motor/motorMicos/releases/tag/R2-0) | |
|
||||
| motorMicroMo | [R1-0-1](https://github.com/epics-motor/motorMicroMo/releases/tag/R1-0-1) | |
|
||||
| motorMicronix | [R1-0-1](https://github.com/epics-motor/motorMicronix/releases/tag/R1-0-1) | |
|
||||
| motorMotorSim | [R1-1](https://github.com/epics-motor/motorMotorSim/releases/tag/R1-1) | |
|
||||
| motorMXmotor | [R1-0-1](https://github.com/epics-motor/motorMXmotor/releases/tag/R1-0-1) | |
|
||||
| motorNewFocus | [R1-1-1](https://github.com/epics-motor/motorNewFocus/releases/tag/R1-1-1) | |
|
||||
| motorNewport | [R1-1](https://github.com/epics-motor/motorNewport/releases/tag/R1-1) | |
|
||||
| motorNPoint | [R1-0-1](https://github.com/epics-motor/motorNPoint/releases/tag/R1-0-1) | |
|
||||
| motorOms | [R1-1](https://github.com/epics-motor/motorOms/releases/tag/R1-1) | |
|
||||
| **motorOmsAsyn** | [R1-0-2](https://github.com/epics-motor/motorOmsAsyn/releases/tag/R1-0-2) | Exclude MAXv support when building example IOC on Windows |
|
||||
| motorOriel | [R1-0-1](https://github.com/epics-motor/motorOriel/releases/tag/R1-0-1) | |
|
||||
| motorParker | [R1-1](https://github.com/epics-motor/motorParker/releases/tag/R1-1) | |
|
||||
| motorPhytron | [R1-1](https://github.com/epics-motor/motorPhytron/releases/tag/R1-1) | |
|
||||
| motorPI | [R1-0-1](https://github.com/epics-motor/motorPI/releases/tag/R1-0-1) | |
|
||||
| motorPIGCS2 | [R1-1](https://github.com/epics-motor/motorPIGCS2/releases/tag/R1-1) | |
|
||||
| motorPiJena | [R1-0-1](https://github.com/epics-motor/motorPiJena/releases/tag/R1-0-1) | |
|
||||
| motorScriptMotor | [R1-1](https://github.com/epics-motor/motorScriptMotor/releases/tag/R1-1) | |
|
||||
| **motorSmarAct** | [R1-2-1](https://github.com/epics-motor/motorSmarAct/releases/tag/R1-2-1) | Include a local definition of rint on fewer platforms |
|
||||
| motorSmartMotor | [R1-0-1](https://github.com/epics-motor/motorSmartMotor/releases/tag/R1-0-1) | |
|
||||
| motorThorLabs | [R1-0-1](https://github.com/epics-motor/motorThorLabs/releases/tag/R1-0-1) | |
|
||||
|
||||
## __R7-2 (2020-05-13)__
|
||||
R7-2 is a release based on the master branch.
|
||||
|
||||
### Changes since R7-1
|
||||
|
||||
#### Modifications to existing features
|
||||
* ``CONFIG_SITE`` now includes ``$(SUPPORT)/configure/CONFIG_SITE``, which overrides ``CONFIG_SITE.local``
|
||||
* ``modules/RELEASE.$(EPICS_HOST_ARCH).local`` is now rebuilt every time the build get into the ``modules`` directory
|
||||
* User displays have been autoconverted
|
||||
|
||||
#### Bug fixes
|
||||
* asynMotorAxis parameters (``motorPowerAutoOnOff_``, ``motorPowerOffDelay_``, ``motorPowerOnDelay_``) are now initialized to avoid errors
|
||||
* The layout of ``motorxU.adl`` has been improved
|
||||
|
||||
#### Driver submodules (and noteworthy changes)
|
||||
| Module | Release | Changes |
|
||||
| ---------------- | ------- | ------- |
|
||||
| **motorAcs** | [R1-1](https://github.com/epics-motor/motorAcs/releases/tag/R1-1) | iocsh files are now installed at build time |
|
||||
| **motorAcsTech80** | [R1-0-1](https://github.com/epics-motor/motorAcsTech80/releases/tag/R1-0-1) | |
|
||||
| **motorAerotech** | [R1-1](https://github.com/epics-motor/motorAerotech/releases/tag/R1-1) | motorAxisHomed bit is now set in the Ensemble poller |
|
||||
| **motorAMCI** | [R1-0-1](https://github.com/epics-motor/motorAMCI/releases/tag/R1-0-1) | |
|
||||
| **motorAttocube** | [R1-0-1](https://github.com/epics-motor/motorAttocube/releases/tag/R1-0-1) | |
|
||||
| **motorDeltaTau** | [R1-0-1](https://github.com/epics-motor/motorDeltaTau/releases/tag/R1-0-1) | |
|
||||
| **motorFaulhaber** | [R1-0-1](https://github.com/epics-motor/motorFaulhaber/releases/tag/R1-0-1) | |
|
||||
| **motorHytec** | [R1-0-1](https://github.com/epics-motor/motorHytec/releases/tag/R1-0-1) | |
|
||||
| **motorIms** | [R1-0-1](https://github.com/epics-motor/motorIms/releases/tag/R1-0-1) | |
|
||||
| **motorKohzu** | [R1-0-1](https://github.com/epics-motor/motorKohzu/releases/tag/R1-0-1) | |
|
||||
| **motorMclennan** | [R1-1](https://github.com/epics-motor/motorMclennan/releases/tag/R1-1) | iocsh files are now installed at build time |
|
||||
| **motorMicos** | [R2-0](https://github.com/epics-motor/motorMicos/releases/tag/R2-0) | Added support for the SMC Corvus Eco |
|
||||
| **motorMicroMo** | [R1-0-1](https://github.com/epics-motor/motorMicroMo/releases/tag/R1-0-1) | |
|
||||
| **motorMicronix** | [R1-0-1](https://github.com/epics-motor/motorMicronix/releases/tag/R1-0-1) | |
|
||||
| **motorMotorSim** | [R1-1](https://github.com/epics-motor/motorMotorSim/releases/tag/R1-1) | iocsh files are now installed at build time |
|
||||
| **motorMXmotor** | [R1-0-1](https://github.com/epics-motor/motorMXmotor/releases/tag/R1-0-1) | |
|
||||
| **motorNewFocus** | [R1-1-1](https://github.com/epics-motor/motorNewFocus/releases/tag/R1-1-1) | |
|
||||
| **motorNewport** | [R1-1](https://github.com/epics-motor/motorNewport/releases/tag/R1-1) | Added support for the XPS-D |
|
||||
| **motorNPoint** | [R1-0-1](https://github.com/epics-motor/motorNPoint/releases/tag/R1-0-1) | |
|
||||
| **motorOms** | [R1-1](https://github.com/epics-motor/motorOms/releases/tag/R1-1) | User displays can now be autoconverted at build time |
|
||||
| **motorOmsAsyn** | [R1-0-1](https://github.com/epics-motor/motorOmsAsyn/releases/tag/R1-0-1) | |
|
||||
| **motorOriel** | [R1-0-1](https://github.com/epics-motor/motorOriel/releases/tag/R1-0-1) | |
|
||||
| **motorParker** | [R1-1](https://github.com/epics-motor/motorParker/releases/tag/R1-1) | User displays can now be autoconverted at build time |
|
||||
| **motorPhytron** | [R1-1](https://github.com/epics-motor/motorPhytron/releases/tag/R1-1) | Error messages are now only printed on status changes |
|
||||
| **motorPI** | [R1-0-1](https://github.com/epics-motor/motorPI/releases/tag/R1-0-1) | |
|
||||
| **motorPIGCS2** | [R1-1](https://github.com/epics-motor/motorPIGCS2/releases/tag/R1-1) | Added support for the E-754 and C-885 controllers |
|
||||
| **motorPiJena** | [R1-0-1](https://github.com/epics-motor/motorPiJena/releases/tag/R1-0-1) | |
|
||||
| **motorScriptMotor** | [R1-1](https://github.com/epics-motor/motorScriptMotor/releases/tag/R1-1) | User displays can now be autoconverted at build time |
|
||||
| **motorSmarAct** | [R1-2](https://github.com/epics-motor/motorSmarAct/releases/tag/R1-2) | Added support for the SCU controllers |
|
||||
| **motorSmartMotor** | [R1-0-1](https://github.com/epics-motor/motorSmartMotor/releases/tag/R1-0-1) | |
|
||||
| **motorThorLabs** | [R1-0-1](https://github.com/epics-motor/motorThorLabs/releases/tag/R1-0-1) | |
|
||||
|
||||
## __R7-1 (2019-08-13)__
|
||||
R7-1 is a release based on the master branch.
|
||||
|
||||
### Changes since R7-0
|
||||
|
||||
#### Bug fixes
|
||||
* Req files are now installed to motor's top-level db directory when building against EPICS base 3.14
|
||||
* RELEASE now allows RELEASE.local files to override settings
|
||||
|
||||
#### Driver submodules (and noteworthy changes)
|
||||
| Module | Release | Changes |
|
||||
| ---------------- | ------- | ------- |
|
||||
| motorAcs | R1-0 | |
|
||||
| motorAcsTech80 | R1-0 | |
|
||||
| **motorAerotech** | **R1-0-1** | [Improvements to EnsembleTrajectoryScan](https://github.com/epics-motor/motorAerotech/releases/tag/R1-0-1) |
|
||||
| motorAMCI | R1-0 | |
|
||||
| motorAttocube | R1-0 | |
|
||||
| motorDeltaTau | R1-0 | |
|
||||
| motorFaulhaber | R1-0 | |
|
||||
| motorHytec | R1-0 | |
|
||||
| motorIms | R1-0 | |
|
||||
| motorKohzu | R1-0 | |
|
||||
| motorMclennan | R1-0 | |
|
||||
| **motorMicos** | **R1-1** | [Improvements to SMC Hydra driver](https://github.com/epics-motor/motorMicos/releases/tag/R1-1) |
|
||||
| motorMicroMo | R1-0 | |
|
||||
| motorMicronix | R1-0 | |
|
||||
| motorMotorSim | R1-0 | |
|
||||
| motorMXmotor | R1-0 | |
|
||||
| **motorNewFocus** | **R1-1** | [Improvements to 874xMotorDriver](https://github.com/epics-motor/motorNewFocus/releases/tag/R1-1) |
|
||||
| **motorNewport** | **R1-0-1** | [Corrected typo that prevented template installation](https://github.com/epics-motor/motorNewport/releases/tag/R1-0-1) |
|
||||
| motorNPoint | R1-0 | |
|
||||
| motorOms | R1-0 | |
|
||||
| motorOmsAsyn | R1-0 | |
|
||||
| motorOriel | R1-0 | |
|
||||
| motorParker | R1-0 | |
|
||||
| motorPhytron | R1-0 | |
|
||||
| motorPI | R1-0 | |
|
||||
| motorPIGCS2 | R1-0 | |
|
||||
| motorPiJena | R1-0 | |
|
||||
| motorScriptMotor | R1-0 | |
|
||||
| **motorSmarAct** | **R1-1** | [Added support for MCS2 controller](https://github.com/epics-motor/motorSmarAct/releases/tag/R1-1) |
|
||||
| motorSmartMotor | R1-0 | |
|
||||
| motorThorLabs | R1-0 | |
|
||||
|
||||
## __R7-0 (2019-04-19)__
|
||||
R7-0 is a release based on the master branch.
|
||||
|
||||
### Changes since R6-11
|
||||
|
||||
Stand-alone repositories have been created for most of the support that previously resided in ``motorApp``. These new respositories can be found in [epics-motor](https://github.com/epics-motor). The core motor functionality remains in this module.
|
||||
|
||||
The new driver repositories have been added to motor as submodules, which reside in the ``modules`` subdirectory. When the driver modules are built as submodules, their build products are installed into motor's top-level directories: ``db``, ``dbd``, ``lib``. **The locations of vendor-specific files that aren't installed (iocsh scripts, user displays) will differ from previous versions of motor.** These files will remain in the vendor's submodule.
|
||||
|
||||
The new driver modules can be built outside of the motor module, which results in the installation of the build products into the top-level directory of the driver module.
|
||||
|
||||
The recommended EPICS base version is 3.15.6 or later. Submodules that install template files will fail to build against EPICS base 3.14.
|
||||
|
||||
#### Bug fixes
|
||||
* Multiple fixes for motor displays
|
||||
|
||||
#### Driver submodules (and noteworthy changes)
|
||||
| Module | Release | Changes |
|
||||
| ---------------- | ------- | ------- |
|
||||
| motorAcs | R1-0 | |
|
||||
| motorAcsTech80 | R1-0 | |
|
||||
| motorAerotech | R1-0 | |
|
||||
| motorAMCI | R1-0 | |
|
||||
| motorAttocube | R1-0 | |
|
||||
| motorDeltaTau | R1-0 | |
|
||||
| motorFaulhaber | R1-0 | |
|
||||
| motorHytec | R1-0 | |
|
||||
| motorIms | R1-0 | |
|
||||
| motorKohzu | R1-0 | |
|
||||
| motorMclennan | R1-0 | |
|
||||
| motorMicos | R1-0 | |
|
||||
| motorMicroMo | R1-0 | |
|
||||
| motorMicronix | R1-0 | |
|
||||
| motorMotorSim | R1-0 | |
|
||||
| motorMXmotor | R1-0 | |
|
||||
| motorNewFocus | R1-0 | |
|
||||
| motorNewport | R1-0 | [HXP driver updated](https://github.com/epics-motor/motorNewport/releases/tag/R1-0) |
|
||||
| motorNPoint | R1-0 | |
|
||||
| motorOms | R1-0 | |
|
||||
| motorOmsAsyn | R1-0 | |
|
||||
| motorOriel | R1-0 | |
|
||||
| motorParker | R1-0 | |
|
||||
| motorPhytron | R1-0 | [phytron.dbd renamed](https://github.com/epics-motor/motorPhytron/releases/tag/R1-0) |
|
||||
| motorPI | R1-0 | |
|
||||
| motorPIGCS2 | R1-0 | |
|
||||
| motorPiJena | R1-0 | |
|
||||
| motorScriptMotor | R1-0 | |
|
||||
| motorSmarAct | R1-0 | |
|
||||
| motorSmartMotor | R1-0 | |
|
||||
| motorThorLabs | R1-0 | |
|
||||
|
||||
## __R6-11 (2018-12-12)__
|
||||
R6-11 is a release based on the master branch.
|
||||
|
||||
### Changes since R6-10-1
|
||||
|
||||
#### Modifications to existing features
|
||||
* Pull request [#109](https://github.com/epics-modules/motor/pull/109) motorRecord: Don't stop motor if driver sets RA_PROBLEM true
|
||||
* Pull request [#108](https://github.com/epics-modules/motor/pull/108) motorRecord: Set LVIO=1 if DLLM > DHLM
|
||||
* Pull request [#36](https://github.com/epics-modules/motor/pull/36) motorRecord: Update status of limit switches regardless of movement direction
|
||||
* Pull request [#99](https://github.com/epics-modules/motor/pull/99) motorRecord: Reset the JOGF/JOGR fields when a limit violation occurs
|
||||
* Pull request [#56](https://github.com/epics-modules/motor/pull/56) motorRecord: Recognize stopped motor while jogging
|
||||
* Pull request [#84](https://github.com/epics-modules/motor/pull/84) motorRecord: Keep the sign information of the components of the encoder ratio (MRES and ERES). Drivers made consistent in pull request #98
|
||||
* Pull request [#93](https://github.com/epics-modules/motor/pull/93) OmsAsyn: Synchronize motor position with encoder position before every move
|
||||
* Pull request [#103](https://github.com/epics-modules/motor/pull/103) Aerotech Ensemble: If disabling torque due to a fault, clear motorAxisProblem so that user can jog off limit switch
|
||||
* Commit [74a8ced](https://github.com/epics-modules/motor/commit/74a8cedc283c6f53042dea867b4e6a1363c74479) Aerotech Ensemble: update CountsPerUnit every time torque is enabled to reduce the need for a reboot after parameter file change
|
||||
* Commit [c0c5b5b](https://github.com/epics-modules/motor/commit/c0c5b5b351c33549437cffbd4233edb15a9361c2) Multiple changes to Aerotech A3200 driver:
|
||||
* restored "task number" argument
|
||||
* don't check limit switches of virtual axes
|
||||
* added single/multi axis move argument
|
||||
|
||||
#### New features
|
||||
* Pull request [#114](https://github.com/epics-modules/motor/pull/114) motorRecord: Added Set Point Deadband field (SPDB) enabling deadbands greater than the MRES
|
||||
* Pull request [#95](https://github.com/epics-modules/motor/pull/95) Added support for AMCI ANF-series controllers (depends on the modbus module: https://github.com/epics-modules/modbus, R2-11 or later)
|
||||
* Pull request [#79](https://github.com/epics-modules/motor/pull/79) Added support for Scriptable Motor Controller (depends on the lua module: https://github.com/epics-modules/lua)
|
||||
|
||||
#### Bug fixes
|
||||
* Pull request [#105](https://github.com/epics-modules/motor/pull/105) Fix for segfault when XPSConfigAxis isn't called before using a motor
|
||||
* Commit [df11f3e](https://github.com/epics-modules/motor/commit/df11f3e153e2aa6c6cb605cbc1392e0a9e663d93) Corrected a typo in motorSim.iocsh that prevented any motion by setting the DLLM and DHLM to the same value
|
||||
|
||||
#### Documentation updates
|
||||
* Pull request [#101](https://github.com/epics-modules/motor/pull/101), commit [58976fa](https://github.com/epics-modules/motor/commit/58976fa2885660b753ab84003667638934fdd557) Made motor documentation compatible with github pages
|
||||
|
||||
## __R6-10-1 (2018-06-07)__
|
||||
R6-10-1 is a bugfix release based on the R6-10-bugfix branch.
|
||||
|
||||
### Changes since R6-10
|
||||
The following commits to the master branch have been cherry-picked for this release.
|
||||
|
||||
#### Bug fixes
|
||||
* pull request [#60](https://github.com/epics-modules/motor/pull/60) motor record DLY and STOP fix
|
||||
* pull request [#83](https://github.com/epics-modules/motor/pull/83) asynMotor autoPower fix
|
||||
* pull request [#94](https://github.com/epics-modules/motor/pull/94) Micronix MMC-x00 I/O flush
|
||||
* commit [7493d50](https://github.com/epics-modules/motor/commit/7493d50bc818bb56440525f71a4ca31c9a28ee29) Don't start a new move if URIP=Yes & RDBL link error
|
||||
|
||||
#### Code fixes
|
||||
* commit [4938a51](https://github.com/epics-modules/motor/commit/4938a51ce459e6b213ac3e157112892c86e629a8) Fixed casts
|
||||
* commit [23b8c5f](https://github.com/epics-modules/motor/commit/23b8c5f528416def6ee8329caf4f0fe8331e434c) Fix for URLS in travis script
|
||||
* commit [75162d1](https://github.com/epics-modules/motor/commit/75162d1fefc2aa1c3009a3bbbde7fac69345213b) Fix for example substitutions file
|
||||
* commit [6998c37](https://github.com/epics-modules/motor/commit/6998c3716317e725d123c77844dfb3da84ed9768) Fix typos
|
||||
* commit [c1c4407](https://github.com/epics-modules/motor/commit/c1c440764414627237580c2642bf5542aee623b2) Corrected EPICS version test
|
||||
* commit [60aa414](https://github.com/epics-modules/motor/commit/60aa414b373b48e96db2bd010492ae6b29577f35) Added header files for EPICS 7.0 compatiblity
|
||||
* commit [8409249](https://github.com/epics-modules/motor/commit/840924984945a3454cd114ef8391952158151308) Added header files for EPICS 7.0 compatiblity
|
||||
|
||||
#### Documentation updates
|
||||
|
||||
* commit [6529abb](https://github.com/epics-modules/motor/commit/6529abb0cfccc08a1c4ea6f0c7a3d326b48bd81b) Added R6-10-1 links
|
||||
* commit [acf0d00](https://github.com/epics-modules/motor/commit/acf0d00496ce7b4edf953991ecc3037b236e37ea) Added home-search documentation to Aerotech README
|
||||
* commit [4bbba98](https://github.com/epics-modules/motor/commit/4bbba98bd51f65a5efea30fa647e9d914c99d50b) Minor improvements to documentation
|
||||
* commit [2cfd494](https://github.com/epics-modules/motor/commit/2cfd494c1631c9af287fde3d93de650b0de2a3b2) Added R6-10 documentation
|
||||
|
||||
## __R6-10 and older__
|
||||
|
||||
Release notes can be found here: https://epics-modules.github.io/motor/motor_release.html
|
||||
|
||||
Details relevant to developers can be found here: https://github.com/epics-modules/motor/blob/master/docs/RELEASE.txt
|
||||
|
||||
@@ -3,8 +3,7 @@ Notice
|
||||
|
||||
This file was historically used to document changes to the motor module that
|
||||
were relevant to developers. It is largely obsolete now that the motor module
|
||||
has moved github. It will not be updated in the future and is likely to move
|
||||
to the documentation directory.
|
||||
has moved github. It will not be updated in the future.
|
||||
|
||||
|
||||
Motor Module R6-10 Release Notes
|
||||
@@ -220,6 +219,19 @@ Modification Log for R6-10
|
||||
|
||||
File modified: OmsSrc/drvMAXv.cc
|
||||
|
||||
8) Changed axis names from 'char *' to 'const char*' to avoid compiler warnings.
|
||||
(Assigning literal string to char* is deprecated).
|
||||
This affects driver_table.axis_names and driver_table.sendmsg used in
|
||||
every motor driver.
|
||||
*** THIS CHANGE BREAKS BACKWARD COMPATIBILITY! ***
|
||||
All external motor drivers need to change their send_mess() function
|
||||
to use 'const char*' as the last argument:
|
||||
RTN_STATUS send_mess(int, const char *, const char *);
|
||||
|
||||
Files modified: motorApp/MotorSrc/motordrvCom.h
|
||||
motorApp/MotorSrc/motordrvCom.cc
|
||||
motorApp/*Src/drv*.cc
|
||||
|
||||
|
||||
Modification Log for R6-9
|
||||
=========================
|
||||
+119
-36
@@ -14,23 +14,21 @@
|
||||
<dl>
|
||||
<dt>Module Owners: <a href="mailto:kmpeters@anl.gov">Kevin Peterson</a></i></dt>
|
||||
</dl>
|
||||
|
||||
<p>
|
||||
<br />
|
||||
This is the home page for both the motor record and various motor controllers
|
||||
supported by motor record device/drivers.
|
||||
</p>
|
||||
<p>
|
||||
GitHub repository: <a href="https://github.com/epics-modules/motor">https://github.com/epics-modules/motor</a>
|
||||
</p>
|
||||
<p>
|
||||
This is the home page for the motor record. The device/driver support for various motor controllers
|
||||
reside in submodules, starting in R7-0, and can be found here: <a href="https://github.com/epics-motor">epics-motor</a>
|
||||
</p>
|
||||
<p>
|
||||
Please email any comments to <i><a href="mailto:kmpeters@anl.gov">Kevin Peterson</a></i> who
|
||||
is responsible for coordinating development and releases. Bug reports can be created on
|
||||
<a href="https://github.com/epics-modules/motor/issues">github</a>.
|
||||
</p>
|
||||
|
||||
<h2>Where to Find it</h2> You can download the software by anonymous ftp from
|
||||
the links in the table below: <br />
|
||||
<h2>Where to Find it</h2> You can download the software using
|
||||
the links in the table below: <br />
|
||||
|
||||
<table border="1">
|
||||
<tbody>
|
||||
@@ -45,21 +43,57 @@ the links in the table below: <br />
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Latest</td>
|
||||
<td>R3.15.5-3.14.12.5</td>
|
||||
<td>R3.15.7 or later</td>
|
||||
<td><a href="https://github.com/epics-modules/motor/archive/master.zip">master.zip</a></td>
|
||||
<td><a href="motorRecord.html">motorRecord.html</a></td>
|
||||
<td><a href="motor_release.html">motor_release.html</a></td>
|
||||
<td><a href="Problems.html">Problems</a></td>
|
||||
<td><a href="https://github.com/epics-modules/motor/blob/master/docs/RELEASE.md">RELEASE.md</a></td>
|
||||
<td><a href="https://github.com/epics-modules/motor/issues">github issues</a></td>
|
||||
<td>n/a</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R7-2</td>
|
||||
<td>R3.15.7 or later</td>
|
||||
<td><a href="https://github.com/epics-modules/motor/archive/R7-2-1.tar.gz">motorR7-2-1.tar.gz</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R7-2-1/motorRecord.html">motorRecord.html</a></td>
|
||||
<td><a href="https://github.com/epics-modules/motor/releases/tag/R7-2-1">release notes</a></td>
|
||||
<td><a href="https://github.com/epics-modules/motor/issues?utf8=%E2%9C%93&q=milestone%3AR7-2-1">github issues</a></td>
|
||||
<td>2020-05-13</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R7-1</td>
|
||||
<td>R3.15.6 or later</td>
|
||||
<td><a href="https://github.com/epics-modules/motor/archive/R7-1.tar.gz">motorR7-1.tar.gz</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R7-1/motorRecord.html">motorRecord.html</a></td>
|
||||
<td><a href="https://github.com/epics-modules/motor/releases/tag/R7-1">release notes</a></td>
|
||||
<td><a href="https://github.com/epics-modules/motor/issues?utf8=%E2%9C%93&q=milestone%3AR7-1">github issues</a></td>
|
||||
<td>2019-08-13</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R7-0</td>
|
||||
<td>R3.15.6 or later</td>
|
||||
<td><a href="https://github.com/epics-modules/motor/archive/R7-0.tar.gz">motorR7-0.tar.gz</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R7-0/motorRecord.html">motorRecord.html</a></td>
|
||||
<td><a href="https://github.com/epics-modules/motor/releases/tag/R7-0">release notes</a></td>
|
||||
<td><a href="https://github.com/epics-modules/motor/issues?utf8=%E2%9C%93&q=milestone%3AR7-0">github issues</a></td>
|
||||
<td>2019-04-19</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R6-11</td>
|
||||
<td>R3.15.5-3.14.12.5</td>
|
||||
<td><a href="https://github.com/epics-modules/motor/archive/R6-11.tar.gz">motorR6-11.tar.gz</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-11/motorRecord.html">motorRecord.html</a></td>
|
||||
<td><a href="https://github.com/epics-modules/motor/releases/tag/R6-11">release notes</a></td>
|
||||
<td><a href="https://github.com/epics-modules/motor/issues?utf8=%E2%9C%93&q=milestone%3AR6-11">github issues</a></td>
|
||||
<td>2018-12-12</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R6-10</td>
|
||||
<td>R3.15.5-3.14.12.5</td>
|
||||
<td><a href="https://github.com/epics-modules/motor/archive/R6-10-1.tar.gz">motorR6-10-1.tar.gz</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-10/motorRecord.html">motorRecord.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-10/motor_release.html">motor_release.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-10/Problems.html">Problems</a></td>
|
||||
<td>11/30/2017</td>
|
||||
<td><a href="https://github.com/epics-modules/motor/issues?utf8=%E2%9C%93&q=milestone%3AR6-10-1">github issues</a></td>
|
||||
<td>2017-11-30</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R6-9</td>
|
||||
@@ -68,7 +102,7 @@ the links in the table below: <br />
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-9/motorRecord.html">motorRecord.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-9/motor_release.html">motor_release.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-9/Problems.html">Problems</a></td>
|
||||
<td>01/07/2015</td>
|
||||
<td>2015-01-07</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R6-8</td>
|
||||
@@ -77,7 +111,7 @@ the links in the table below: <br />
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-8/motorRecord.html">motorRecord.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-8/motor_release.html">motor_release.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-8/Problems.html">Problems</a></td>
|
||||
<td>06/16/2014</td>
|
||||
<td>2014-06-16</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R6-7</td>
|
||||
@@ -86,7 +120,7 @@ the links in the table below: <br />
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-7/motorRecord.html">motorRecord.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-7/motor_release.html">motor_release.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-7/Problems.html">Problems</a></td>
|
||||
<td>03/06/2012</td>
|
||||
<td>2012-03-06</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R6-5</td>
|
||||
@@ -95,7 +129,7 @@ the links in the table below: <br />
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-5/motorRecord.html">motorRecord.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-5/motor_release.html">motor_release.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-5/Problems.html">Problems</a></td>
|
||||
<td>10/14/2010</td>
|
||||
<td>2010-10-14</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R6-4</td>
|
||||
@@ -104,7 +138,7 @@ the links in the table below: <br />
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-4/motorRecord.html">motorRecord.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-4/motor_release.html">motor_release.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-4/Problems.html">Problems</a></td>
|
||||
<td>06/22/2009</td>
|
||||
<td>2009-06-22</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R6-3</td>
|
||||
@@ -113,7 +147,7 @@ the links in the table below: <br />
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-3/motorRecord.html">motorRecord.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-3/motor_release.html">motor_release.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-3/Problems.html">Problems</a></td>
|
||||
<td>12/10/2008</td>
|
||||
<td>2008-12-10</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R6-2</td>
|
||||
@@ -122,7 +156,7 @@ the links in the table below: <br />
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-2/motorRecord.html">motorRecord.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-2/motor_release.html">motor_release.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-2/Problems.html">Problems</a></td>
|
||||
<td>04/04/2007</td>
|
||||
<td>2007-04-04</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R6-1</td>
|
||||
@@ -131,7 +165,7 @@ the links in the table below: <br />
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-1/motorRecord.html">motorRecord.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-1/motor_release.html">motor_release.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-1/Problems.html">Problems</a></td>
|
||||
<td>12/18/2006</td>
|
||||
<td>2006-12-18</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R6-0</td>
|
||||
@@ -140,7 +174,7 @@ the links in the table below: <br />
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-0/motorRecord.html">motorRecord.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-0/motor_release.html">motor_release.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R6-0/Problems.html">Problems</a></td>
|
||||
<td>09/22/2006</td>
|
||||
<td>2006-09-22</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R5-9</td>
|
||||
@@ -149,7 +183,7 @@ the links in the table below: <br />
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R5-9/motorRecord.html">motorRecord.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R5-9/motor_release.html">motor_release.html</a></td>
|
||||
<td><a href="https://epics.anl.gov/bcda/synApps/motor/R5-9/Problems.html">Problems</a></td>
|
||||
<td>08/21/2006</td>
|
||||
<td>2006-08-21</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R5-8</td>
|
||||
@@ -290,6 +324,59 @@ the links in the table below: <br />
|
||||
<td><b>Required modules</b></td>
|
||||
<td><b>Release needed</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R7-2</td>
|
||||
<td><a href="https://epics.anl.gov/modules/soft/asyn/">ASYN</a> <br />
|
||||
<a href="https://github.com/epics-modules/ipac/wiki">IPAC</a> (for motorHytec & VME-based serial and GPIB examples) <br />
|
||||
<a href="https://github.com/epics-modules/lua">LUA</a> (for motorScriptMotor) <br />
|
||||
<a href="https://github.com/epics-modules/modbus">MODBUS</a> (for motorAMCI IOCs)
|
||||
</td>
|
||||
<td>R4-37<br />
|
||||
R2-15<br />
|
||||
R2-0<br />
|
||||
R3-0
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R7-1</td>
|
||||
<td><a href="https://epics.anl.gov/modules/soft/asyn/">ASYN</a> <br />
|
||||
<a href="https://github.com/epics-modules/ipac/wiki">IPAC</a> (for motorHytec & VME-based serial and GPIB examples) <br />
|
||||
<a href="https://github.com/epics-modules/lua">LUA</a> (for motorScriptMotor) <br />
|
||||
<a href="https://github.com/epics-modules/modbus">MODBUS</a> (for motorAMCI IOCs)
|
||||
</td>
|
||||
<td>R4-35<br />
|
||||
R2-15<br />
|
||||
R1-3<br />
|
||||
R2-11
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R7-0</td>
|
||||
<td><a href="https://epics.anl.gov/modules/soft/asyn/">ASYN</a> <br />
|
||||
<a href="https://github.com/epics-modules/ipac/wiki">IPAC</a> (for motorHytec & VME-based serial and GPIB examples) <br />
|
||||
<a href="https://github.com/epics-modules/lua">LUA</a> (for motorScriptMotor) <br />
|
||||
<a href="https://github.com/epics-modules/modbus">MODBUS</a> (for motorAMCI IOCs)
|
||||
</td>
|
||||
<td>R4-35<br />
|
||||
R2-15<br />
|
||||
R1-3<br />
|
||||
R2-11
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R6-11</td>
|
||||
<td><a href="https://epics.anl.gov/modules/soft/asyn/">ASYN</a> <br />
|
||||
<a href="https://github.com/epics-modules/ipac/wiki">IPAC</a> (for serial
|
||||
or GPIB communication and Hytec support) <br />
|
||||
<a href="https://github.com/epics-modules/lua">LUA</a> (for ScriptMotor support) <br />
|
||||
<a href="https://github.com/epics-modules/modbus">MODBUS</a> (for IOCs using AMCI support)
|
||||
</td>
|
||||
<td>R4-33<br />
|
||||
R2-15<br />
|
||||
R1-3<br />
|
||||
R2-11
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R6-10</td>
|
||||
<td><a href="https://epics.anl.gov/modules/soft/asyn/">ASYN</a> <br />
|
||||
@@ -371,7 +458,7 @@ the links in the table below: <br />
|
||||
R2-8</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>R5-9-1</td>
|
||||
<td>R5-9</td>
|
||||
<td><a href="https://epics.anl.gov/modules/soft/asyn/">ASYN</a> <br />
|
||||
<a href="https://github.com/epics-modules/ipac/wiki">IPAC</a> (for serial
|
||||
or GPIB communication only)</td>
|
||||
@@ -559,28 +646,27 @@ different releases of EPICS and/or the other required modules are needed).
|
||||
Create an installation directory for the module, usually this will end with
|
||||
</li>
|
||||
|
||||
<pre><tt>.../support/motor/</tt></pre>
|
||||
<pre><tt>.../support</tt></pre>
|
||||
<li>
|
||||
Place the distribution file in this directory. Then issue the commands (Unix
|
||||
style)
|
||||
</li>
|
||||
|
||||
<pre>gunzip motor<rel>.tar.gz<br />tar xvf motor<rel>.tar</pre>
|
||||
<pre>tar xzvf motor<rel>.tar.gz</pre>
|
||||
where <rel> is the release. For example.
|
||||
|
||||
<pre>motor4-1.tar.gz</pre>
|
||||
<pre>motor-7-2-1.tar.gz</pre>
|
||||
<li>
|
||||
This creates a <top> application.
|
||||
</li>
|
||||
|
||||
<pre>.../support/motor/motor<rel></pre>
|
||||
<pre>.../support/motor<rel></pre>
|
||||
<li>
|
||||
Edit the <tt>config/RELEASE</tt> file and set the paths to your installation of
|
||||
EPICS base (i.e., define SUPPORT and EPICS_BASE).
|
||||
</li>
|
||||
<li>
|
||||
Edit .../support/motor/motor<rel>/motorApp/Makefile. Define
|
||||
which device/driver modules to build.
|
||||
Edit .../support/motor<rel>/modules/Makefile to comment out submodules that aren't needed.
|
||||
</li>
|
||||
<li>
|
||||
Run <tt>gnumake</tt> in the top level directory and check for any compilation
|
||||
@@ -589,21 +675,18 @@ different releases of EPICS and/or the other required modules are needed).
|
||||
|
||||
</ol>
|
||||
|
||||
<h2>Documentation</h2> The following documentation is available:
|
||||
<!--h2>Documentation</h2> The following documentation is available:
|
||||
<ul>
|
||||
<li>
|
||||
Consult the README file in the motor distribution for configuration
|
||||
details.
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</ul-->
|
||||
|
||||
<hr width="100%" />
|
||||
<br />
|
||||
Page Last Modified: 05/01/2018 <br />
|
||||
Page Last Modified: 2020-05-14 <br />
|
||||
<i><a href="mailto:kmpeters@anl.gov">Kevin Peterson</a></i> <br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+147
-434
@@ -21,7 +21,7 @@
|
||||
<a href="#Fields">Field Descriptions</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#Files">Files, device-support</a>
|
||||
<a href="#Files">Files</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#Restrictions">Restrictions</a>
|
||||
@@ -35,92 +35,113 @@
|
||||
</ul>
|
||||
<a name="Overview"></a>
|
||||
|
||||
<h2>Overview</h2> This documentation describes version R6-10 of the EPICS motor
|
||||
<h2>Overview</h2> This documentation describes version R7-2-1 of the EPICS motor
|
||||
record, and related EPICS software required to build and use it. Version
|
||||
R6-10 of the motor record is compatible with EPICS base R3.14.12.2 and above.
|
||||
R7-2-1 of the motor record is compatible with EPICS base R3.15.7 and above.
|
||||
<p>
|
||||
The motor record is intended to support positioning motors of all kinds, but currently
|
||||
supports only the following variety of motor controllers (in addition to Soft
|
||||
supports motor controllers from the following manufacturers:
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
ACS Motion Control: <a href="https://github.com/epics-motor/motorAcsTech80">motorAcsTech80</a>
|
||||
</li>
|
||||
<li>
|
||||
Advanced Control Systems, Corp: <a href="https://github.com/epics-motor/motorAcs">motorAcs</a>
|
||||
</li>
|
||||
<li>
|
||||
Aerotech: <a href="https://github.com/epics-motor/motorAerotech">motorAerotech</a>
|
||||
</li>
|
||||
<li>
|
||||
AMCI: <a href="https://github.com/epics-motor/motorAMCI">motorAMCI</a>
|
||||
</li>
|
||||
<li>
|
||||
Animatics Corporation: <a href="https://github.com/epics-motor/motorSmartMotor">motorSmartMotor</a>
|
||||
</li>
|
||||
<li>
|
||||
attocube systems: <a href="https://github.com/epics-motor/motorAttocube">motorAttocube</a>
|
||||
</li>
|
||||
<li>
|
||||
Delta Tau: <a href="https://github.com/epics-motor/motorDeltaTau">motorDeltaTau</a>
|
||||
</li>
|
||||
<li>
|
||||
Faulhaber: <a href="https://github.com/epics-motor/motorFaulhaber">motorFaulhaber</a>
|
||||
</li>
|
||||
<li>
|
||||
Hytec: <a href="https://github.com/epics-motor/motorHytec">motorHytec</a>
|
||||
</li>
|
||||
<li>
|
||||
Kohzu: <a href="https://github.com/epics-motor/motorKohzu">motorKohzu</a>
|
||||
</li>
|
||||
<li>
|
||||
Mclennan: <a href="https://github.com/epics-motor/motorMclennan">motorMclennan</a>
|
||||
</li>
|
||||
<li>
|
||||
Micos: <a href="https://github.com/epics-motor/motorMicos">motorMicos</a>
|
||||
</li>
|
||||
<li>
|
||||
MicroMo: <a href="https://github.com/epics-motor/motorMicroMo">motorMicroMo</a>
|
||||
</li>
|
||||
<li>
|
||||
New Focus: <a href="https://github.com/epics-motor/motorNewFocus">motorNewFocus</a>
|
||||
</li>
|
||||
<li>
|
||||
Newport: <a href="https://github.com/epics-motor/motorNewport">motorNewport</a>
|
||||
</li>
|
||||
<li>
|
||||
Micronix: <a href="https://github.com/epics-motor/motorMicronix">motorMicronix</a>
|
||||
</li>
|
||||
<li>
|
||||
nPoint: <a href="https://github.com/epics-motor/motorNPoint">motorNPoint</a>
|
||||
</li>
|
||||
<li>
|
||||
Oregon Micro Systems: <a href="https://github.com/epics-motor/motorOms">motorOms</a> & <a href="https://github.com/epics-motor/motorOmsAsyn">motorOmsAsyn</a>
|
||||
</li>
|
||||
<li>
|
||||
Parker Hannifin: <a href="https://github.com/epics-motor/motorParker">motorParker</a>
|
||||
</li>
|
||||
<LI>
|
||||
Physik Instrumente (PI) GmbH & Co. models: <a href="https://github.com/epics-motor/motorPI">motorPI</a> & <a href="https://github.com/epics-motor/motorPIGCS2">motorPIGCS2</a>
|
||||
</LI>
|
||||
<li>
|
||||
Phytron: <a href="https://github.com/epics-motor/motorPhytron">motorPhytron</a>
|
||||
</li>
|
||||
<li>
|
||||
piezosystem jena GmbH: <a href="https://github.com/epics-motor/motorPiJena">motorPiJena</a>
|
||||
</li>
|
||||
<li>
|
||||
Schneider Electric (formally IMS): <a href="https://github.com/epics-motor/motorIms">motorIms</a>
|
||||
</li>
|
||||
<li>
|
||||
SmarAct GmbH: <a href="https://github.com/epics-motor/motorSmarAct">motorSmarAct</a>
|
||||
</li>
|
||||
<li>
|
||||
Spectra-Physics: <a href="https://github.com/epics-motor/motorOriel">motorOriel</a>
|
||||
</li>
|
||||
<li>
|
||||
Thorlabs: <a href="https://github.com/epics-motor/motorThorLabs">motorThorLabs</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
The motor record also supports the following software-based motor drivers (in addition to Soft
|
||||
Channel support):
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
Pro-Dex, Inc. (Oregon Micro Systems) models; VME8/44/58, VS4, VX2, PC68/78, MAXv and MAXnet.
|
||||
Simulated: <a href="https://github.com/epics-motor/motorMotorSim">motorMotorSim</a>
|
||||
</li>
|
||||
<li>
|
||||
Newport models MM3000, MM4000/5/6, PM500, ESP300/301/100, XPSC8, HXP100-ELEC, AG_CONEX and AG_UC.
|
||||
Lua Script: <a href="https://github.com/epics-motor/motorScriptMotor">motorScriptMotor</a>
|
||||
</li>
|
||||
<li>
|
||||
Schneider Electric (formally IMS) models IM483, MDrive and MForce.
|
||||
</li>
|
||||
<li>
|
||||
Advanced Control Systems, Corp. model MCB-4B.
|
||||
</li>
|
||||
<li>
|
||||
Mclennan models PM304 and PM600.
|
||||
</li>
|
||||
<LI>
|
||||
Physik Instrumente (PI) GmbH & Co. models; C-630/662/663/844/848/862/863, E-516/517/710/816, micos SMC hydra and all GCS2 (General Command Set) compatible controllers.
|
||||
</LI>
|
||||
<li>
|
||||
MicroMo model MVP 2001 B02.
|
||||
</li>
|
||||
<li>
|
||||
Micos model MoCo dc controller, SMC hydra controller.
|
||||
</li>
|
||||
<li>
|
||||
Faulhaber MCDC2805 servo controller.
|
||||
</li>
|
||||
<li>
|
||||
Parker Hannifin, Compumotor Division, 6K Series controllers.
|
||||
</li>
|
||||
<li>
|
||||
New Focus, models; 8750, 8752, & 874x.
|
||||
</li>
|
||||
<li>
|
||||
ACS Motion Control, SPiiPlus model.
|
||||
</li>
|
||||
<li>
|
||||
Spectra-Physics, Encoder Mike Controller, Model 18011.
|
||||
</li>
|
||||
<li>
|
||||
Thorlabs, Piezo Controller, Model MDT695.
|
||||
</li>
|
||||
<li>
|
||||
Animatics Corporation SmartMotor.
|
||||
</li>
|
||||
<li>
|
||||
piezosystem jena GmbH EDS data interface module.
|
||||
</li>
|
||||
<li>
|
||||
Kohzu SC-200, SC-400, SC-800 stepper motor controllers.
|
||||
</li>
|
||||
<li>
|
||||
attocube systems AG ANC150 Piezo Step Controller.
|
||||
</li>
|
||||
<li>
|
||||
Aerotech A3200, Ensemble and Soloist controllers.
|
||||
</li>
|
||||
<li>
|
||||
Hytec 8601 Industry Pack based 4-channel Stepper Motor Controller.
|
||||
</li>
|
||||
<li>
|
||||
nPoint C300 piezo controller
|
||||
</li>
|
||||
<li>
|
||||
Micronix MMC-100 and MMC-200
|
||||
</li>
|
||||
<li>
|
||||
SmarAct GmbH Modular Control System (MCS) Controller.
|
||||
</li>
|
||||
<li>
|
||||
Phytron I1AM01 Stepper Motor Controller.
|
||||
</li>
|
||||
<li>
|
||||
AMCI ANG1 Stepper Motor Controller/Driver, ANF1E/ANF1/ANF2E/ANF2 Stepper Motor Controllers.
|
||||
MX: <a href="https://github.com/epics-motor/motorMXmotor">motorMXmotor</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
The record maintains two coordinate systems for motor position ("user" and "dial
|
||||
" coordinates); displays drive and readback values; enforces limits to motor
|
||||
motion and maintains those limits in both coordinate systems; displays the
|
||||
@@ -131,6 +152,7 @@ system. The record also supports "tweak", "jog", and "home" motions, and
|
||||
supports both absolute and relative motions in user coordinates. Two "stop"
|
||||
switches are provided: a simple one for use by other records and by channel-access
|
||||
clients, and a more versatile one for interactive use.
|
||||
</p>
|
||||
<p>
|
||||
Except where specified otherwise, fields associated with the motor position and
|
||||
its derivatives take values in user-specified "engineering units", such as
|
||||
@@ -441,7 +463,7 @@ below.
|
||||
<td><a href="#Fields_motion">FRAC</a></td>
|
||||
<td>R/W</td>
|
||||
<td>Move Fraction</td>
|
||||
<td>DOUBLE</td>
|
||||
<td>FLOAT</td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -662,7 +684,7 @@ below.
|
||||
<td><a href="#Fields_private">LRVL</a></td>
|
||||
<td>R</td>
|
||||
<td>Last Raw Des Val</td>
|
||||
<td>DOUBLE</td>
|
||||
<td>LONG</td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -875,6 +897,22 @@ below.
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="#Fields_res">RSTM</a></td>
|
||||
<td>R/W</td>
|
||||
<td>Restore Mode</td>
|
||||
<td>RECCHOICE</td>
|
||||
<td>(0:"Never", 1:"Always", 2:"NearZero", 3:"Conditional")<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="#Fields_motion">SPDB</a></td>
|
||||
<td>R/W</td>
|
||||
<td>Set Point Deadband (EGU)</td>
|
||||
<td>DOUBLE</td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="#Fields_link">RDBL</a></td>
|
||||
<td>R</td>
|
||||
@@ -895,7 +933,7 @@ below.
|
||||
<td><a href="#Fields_status">REP</a></td>
|
||||
<td>R</td>
|
||||
<td>Raw Encoder Position</td>
|
||||
<td>DOUBLE</td>
|
||||
<td>LONG</td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -951,7 +989,7 @@ below.
|
||||
<td><a href="#Fields_status">RMP</a></td>
|
||||
<td>R</td>
|
||||
<td>Raw Motor Position</td>
|
||||
<td>DOUBLE</td>
|
||||
<td>LONG</td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -959,7 +997,7 @@ below.
|
||||
<td><a href="#Fields_status">RRBV</a></td>
|
||||
<td>R</td>
|
||||
<td>Raw Readback Value</td>
|
||||
<td>DOUBLE</td>
|
||||
<td>LONG</td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -983,7 +1021,7 @@ below.
|
||||
<td><a href="#Fields_drive">RVAL</a></td>
|
||||
<td>R/W*</td>
|
||||
<td>Raw Desired Value</td>
|
||||
<td>DOUBLE</td>
|
||||
<td>LONG</td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -1179,7 +1217,7 @@ below.
|
||||
<td><a href="#Fields_misc">VERS</a></td>
|
||||
<td>R</td>
|
||||
<td>Code Version</td>
|
||||
<td>DOUBLE</td>
|
||||
<td>FLOAT</td>
|
||||
<td>e.g., "1.95"</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -1798,7 +1836,7 @@ below.
|
||||
<td>FRAC</td>
|
||||
<td>R/W</td>
|
||||
<td>Move Fraction</td>
|
||||
<td>DOUBLE</td>
|
||||
<td>FLOAT</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="5">This field supports closed-loop control of pathological devices
|
||||
@@ -1839,6 +1877,16 @@ below.
|
||||
performed (see RTRY). </td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>SPDB</td>
|
||||
<td>R/W</td>
|
||||
<td>Set Point Deadband (EGU)</td>
|
||||
<td>DOUBLE</td>
|
||||
<td>Before the motor is commanded a move, a check is done if the move is to small.
|
||||
It is to small when the distance is less the the step size defined in MRES.
|
||||
When a bigger deadband is wanted than MRES, set the value into SPDB.
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>RTRY</td>
|
||||
<td>R/W</td>
|
||||
<td>Max retry count</td>
|
||||
@@ -2387,7 +2435,7 @@ below.
|
||||
<td>RVAL</td>
|
||||
<td>R/W*</td>
|
||||
<td>Raw Desired Value</td>
|
||||
<td>DOUBLE</td>
|
||||
<td>LONG</td>
|
||||
<td>This is the desired position in raw coordinates. When this field is written
|
||||
to, VAL and DVAL will be changed correspondingly, and the motor will move (with
|
||||
backlash takeout if BDST is nonzero) to the newly written position. </td>
|
||||
@@ -2494,7 +2542,7 @@ below.
|
||||
<td>RRBV</td>
|
||||
<td>R</td>
|
||||
<td>Raw Readback Value</td>
|
||||
<td>DOUBLE</td>
|
||||
<td>LONG</td>
|
||||
<td>The current position of the motor, encoder, or readback link, as received
|
||||
from whatever source has been selected to provide position information. The
|
||||
units associated with this field depend on the source. </td>
|
||||
@@ -2503,7 +2551,7 @@ below.
|
||||
<td>RMP</td>
|
||||
<td>R</td>
|
||||
<td>Raw Motor Position</td>
|
||||
<td>DOUBLE</td>
|
||||
<td>LONG</td>
|
||||
<td>The contents of the hardware's step-count register. This field contains the
|
||||
same information as the dial value, but in steps, rather than in engineering
|
||||
units. </td>
|
||||
@@ -2512,7 +2560,7 @@ below.
|
||||
<td>REP</td>
|
||||
<td>R</td>
|
||||
<td>Raw Encoder Position</td>
|
||||
<td>DOUBLE</td>
|
||||
<td>LONG</td>
|
||||
<td>The contents of the hardware's encoder-count register. Ideally, this field
|
||||
contains the same information as the dial value, but in encoder counts, rather
|
||||
than in engineering units. </td>
|
||||
@@ -2913,7 +2961,7 @@ below.
|
||||
<td>VERS</td>
|
||||
<td>R</td>
|
||||
<td>Code Version</td>
|
||||
<td>DOUBLE</td>
|
||||
<td>FLOAT</td>
|
||||
<td>Version number of the recMotor.c code.</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
@@ -3147,7 +3195,7 @@ below.
|
||||
<td>LRVL</td>
|
||||
<td>R</td>
|
||||
<td>Last Raw Des Val</td>
|
||||
<td>DOUBLE</td>
|
||||
<td>LONG</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>LRLV</td>
|
||||
@@ -3204,20 +3252,14 @@ below.
|
||||
<a name="Files"></a>
|
||||
</p>
|
||||
|
||||
<h2>Files, device support</h2> The following table briefly describes all of the
|
||||
files required to implement and use the motor record. The reader is assumed to
|
||||
be familiar with the <a href="http://www.aps.anl.gov/asd/controls/epics/EpicsDocumentation/WWWPages/EpicsDocs/AppDevManuals/AppSrcRelControl/AppSRControl.html">EPICS
|
||||
Application Source/Release Control document</a> which describes how to build an
|
||||
EPICS application tree into which these files are to be placed, and how to run
|
||||
"makesdr" and "gnumake" to build the record support. These files can all be
|
||||
obtained from the <a href="http://www.aps.anl.gov/xfd/WWW/xfd/SoftDist/Welcome.html">EPICS
|
||||
Software Distribution</a> (in the <a href="http://www.aps.anl.gov/xfd/WWW/xfd/SoftDist/Welcome.html#Custom_EPICS">custom-software
|
||||
section</a> ).
|
||||
<h2>Files</h2>
|
||||
<p>
|
||||
The following tables briefly describe some of the files in the motor module.<br>
|
||||
</p>
|
||||
<table border="1" cellpadding="5">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th colspan="2">SOURCE CODE <br>
|
||||
files to be placed in <tt>&lttop>/&ltapp&gtApp/src/</tt></th>
|
||||
<th colspan="2">SOURCE CODE</th>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>motorRecord.dbd</td>
|
||||
@@ -3269,134 +3311,6 @@ section</a> ).
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>devOmsCom.c</td>
|
||||
<td>Device support common to all Oregon Micro Systems device drivers.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>devOmsCom.h</td>
|
||||
<td>Device support header file common to all Oregon Micro Systems device drivers.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>drvOmsCom.h</td>
|
||||
<td>Driver support header file common to all Oregon Micro Systems device drivers.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td>NOTE: The above files are required for any and all Oregon Micro Systems
|
||||
device drivers.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>devOms.c</td>
|
||||
<td>Device support for Oregon Micro Systems VME8 and VME44 series boards</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>drvOms.c</td>
|
||||
<td>Driver for Oregon Micro Systems VME8 and VME44 series boards</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>drvOms.h</td>
|
||||
<td>Header included by devOms.c and drvOms.c</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>devOms58.c</td>
|
||||
<td>Device support for Oregon Micro Systems VME58 series boards</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>drvOms58.c</td>
|
||||
<td>Driver for Oregon Micro Systems VME58 series boards</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>drvOms58.h</td>
|
||||
<td>Header included by devOms58.c and drvOms58.c</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>devV544.c</td>
|
||||
<td>Device support for Highland Technology boards.</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>drvV544.c</td>
|
||||
<td>Driver for Highland Technology boards.</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>drvV544.h</td>
|
||||
<td>Header included by devV544.c and drvV544.c</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>drvMMCom.h</td>
|
||||
<td>Common header included by all Newport Motion Master device drivers.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td>NOTE: The above files are required for any and all Newport Motion Master
|
||||
device drivers.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>devMM3000.c</td>
|
||||
<td>Device support for Newport MM3000.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>drvMM3000.c</td>
|
||||
<td>Driver for Newport MM3000.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>devMM4000.c</td>
|
||||
<td>Device support for Newport MM4000/40005.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>drvMM4000.c</td>
|
||||
<td>Driver for Newport MM4000/40005.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>devPM500.c</td>
|
||||
<td>Device support for Newport PM500.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>drvPM500.c</td>
|
||||
<td>Driver for Newport PM500.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>devESP300.c<br>
|
||||
</td>
|
||||
<td>Device support for Newport ESP300.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">drvESP300.c<br>
|
||||
</td>
|
||||
<td>Driver for Newport ESP300.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>devSoft.c</td>
|
||||
<td>Soft Channel device support.</td>
|
||||
@@ -3412,68 +3326,13 @@ section</a> ).
|
||||
<td>devSoft.h</td>
|
||||
<td>Header included by devSoft.c and devSoftAux.c</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>gpibIO.h</td>
|
||||
<td>GPIB communication include file.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>gpibIO.c</td>
|
||||
<td>GPIB interface via Hideos.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>serialIO.h</td>
|
||||
<td>Serial communication include file.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>serialIOMPF.cc</td>
|
||||
<td>Serial communication interface via MPF.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>drvIM483.h</td>
|
||||
<td>Common header included by all IMS device drivers.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>devIM483PL.c</td>
|
||||
<td>Device support for IM483 in <i>party line</i> communication mode.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>devIM483SM.c</td>
|
||||
<td>Device support for IM483 in <i>single mode</i> communication mode.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>drvIM483PL.c</td>
|
||||
<td>Driver for IM483 in <i>party line</i> communication mode.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>drvIM483SM.c</td>
|
||||
<td>Driver for IM483 in <i>single mode </i>communication mode.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><br>
|
||||
</td>
|
||||
<td><br>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table border="1" cellpadding="5">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th colspan="2">MEDM DISPLAY SCREENS <br>
|
||||
files to be placed in <tt>&lttop>/&ltapp&gtApp/op/adl/</tt></th>
|
||||
<th colspan="2">MEDM DISPLAY SCREENS</th>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>motorx.adl</td>
|
||||
@@ -3516,151 +3375,10 @@ section</a> ).
|
||||
<tbody>
|
||||
<tr>
|
||||
<th colspan="2"><br>
|
||||
EPICS STARTUP FILES <br>
|
||||
files to be placed in <tt>&lttop>/ioc/ioc&ltname>/</tt></th>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>st.cmdmv167 </td>
|
||||
<td>Startup script</td>
|
||||
EPICS STARTUP FILES</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">A sample startup script, containing excerpts relevant to motors,
|
||||
is included in the distribution. Here is an annotated copy:
|
||||
|
||||
<pre>#######################################################################<br>
|
||||
# vxWorks startup script to load and execute system (iocCore) software.</pre>
|
||||
<b><font color="#ffffff">Load standard EPICS software</font></b>
|
||||
|
||||
<pre># the following should be loaded first - BEGIN<br>ld < targetmv167/
|
||||
iocCore<br>ld < targetmv167/drvSup<br>ld < targetmv167/devSup<br>ld <
|
||||
targetmv167/recSup<br># the following should be loaded first - END</pre>
|
||||
<b><font color="#ffffff">Load custom EPICS software (including motor support)</font></b>
|
||||
|
||||
<pre>ld < ../../stdApp/src/O.mv167/stdlib.o</pre>
|
||||
<b><font color="#ffffff">Motor-related debug switches </font></b>
|
||||
|
||||
<pre>recMotordebug = 0<br><br>#OMS vme8/vme44 debug switches<br>devOMSdebug = 0<br>
|
||||
drvOMSdebug = 0<br><br>#OMS vme58 debug switches<br>devOms58debug = 0<br>
|
||||
drvOms58debug = 0<br><br>#Highland Technology V544 debug switches<br>devV544ebug
|
||||
= 0<br>drvV544debug = 0</pre>
|
||||
<b><font color="#ffffff">Motor-related databases </font></b>
|
||||
|
||||
<pre># load this before loading any databases<br>dbLoad "../../default.dctsdr"<br><br>
|
||||
#allstop<br>dbLoadRecords("../../stdApp/gDb/allstop.db","P=tmm:")<br>#motors<br>
|
||||
dbLoadRecords("../../stdApp/gDb/m16.db","P=tmm:")</pre>
|
||||
<b><font color="#ffffff">Specify motor-controller board address, interrupt
|
||||
vector, etc.</font></b>
|
||||
<table border="1" cellpadding="5">
|
||||
<tbody>
|
||||
<TR>
|
||||
<TD colspan="2"><TT> omsSetup(nCards, baseAddress, intVectBase,
|
||||
intLevel, pollRate)</TT> <BR>
|
||||
<TT>oms58Setup(nCards, baseAddress, intVectBase, intLevel, pollRate)</TT> <BR>
|
||||
<P>
|
||||
<TT>MM3000Setup(nCards, pollRate)</TT> <BR>
|
||||
<TT>MM3000Config(card#, portName, GPIB#)</TT>
|
||||
</P>
|
||||
|
||||
<P>
|
||||
<TT>MM4000Setup(nCards, pollRate)</TT> <BR>
|
||||
<TT>MM4000Config(card#, portName, GPIB#)</TT>
|
||||
</P>
|
||||
|
||||
<P>
|
||||
<TT>IM483SMSetup(nCards, pollRate) </TT> <BR>
|
||||
<TT>IM483SMConfig(card#, portName) </TT>
|
||||
|
||||
</P>
|
||||
|
||||
<P>
|
||||
<TT>IM483PLSetup(nCommNet, pollRate) </TT> <BR>
|
||||
<TT>IM483PLConfig(CommNet#, portName) </TT> <BR>
|
||||
</P>
|
||||
|
||||
<P>
|
||||
ESP300Setup(<TT>nCards, pollRate</TT>)<BR>
|
||||
ESP300Config(<TT>card#, portName, GPIB#</TT>)<BR>
|
||||
<BR>
|
||||
<BR>
|
||||
</P>
|
||||
</TD>
|
||||
</TR>
|
||||
<tr valign="top">
|
||||
<td>nCards</td>
|
||||
<td>the number of cards or controllers; may be less, but not greater than this
|
||||
value.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>nCommNet</td>
|
||||
<td>the number of Communication networks (e.g., the number of RS-422
|
||||
networks for a IM483PL device).</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>baseAddress</td>
|
||||
<td>the base address of the first card of a series. This must agree with address
|
||||
jumpers on the actual card(s).
|
||||
|
||||
<p>
|
||||
OMS VME8, VME44, and VMEX cards are all of one series, with a base address in
|
||||
the short address space, on a 16-byte (0x10) boundary. (I.e., these cards
|
||||
require 16 bytes each, and must all be addressed contiguously as, e.g., 0xFC00,
|
||||
0xFC10).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
OMS VME58-x cards are in their own series, also in the short address space, on
|
||||
a 4k-byte (0x1000) boundary.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Highland Technology V544 cards are in their own series, in the short address
|
||||
space, on a 128-byte (0x80) boundary.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>intVectBase</td>
|
||||
<td>the interrupt vector that will be loaded into the first card of a series.
|
||||
Succeeding cards will be loaded with intVectBase+1, intVectBase+2, etc. Set to "0
|
||||
" to disable interrupt generation; otherwise, stay in the range [64..255].</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>intLevel</td>
|
||||
<td>the VME-interrupt level (in [1..6]) the cards will use. This must agree
|
||||
with jumper settings on the cards.</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>pollRate</td>
|
||||
<td>the rate (in Hz.) at which the driver will interrogate a card when one of
|
||||
its motors is moving. This is also the rate at which channel-access monitors
|
||||
will be posted; to avoid saturating the network with motor-readback information,
|
||||
don't set pollRate much higher than 10 Hz. pollRate must be in the range [1..60].</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>portName</td>
|
||||
<td>ASYN port name.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">link<br>
|
||||
</td>
|
||||
<td valign="top">GPIB link or MPF server CPU location<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">GPIB#<br>
|
||||
</td>
|
||||
<td valign="top">GPIB address.<br>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<P>
|
||||
# OMS VME8, VME44, VMEX driver setup parameters:<BR>omsSetup(5, 0xFC00, 180, 5,
|
||||
10)<BR><BR># OMS VME58 driver setup parameters:<BR>oms58Setup(5, 0x2000, 190, 5,
|
||||
10)
|
||||
</P>
|
||||
<P>#Start EPICS<BR>iocInit</P>
|
||||
<td colspan="2">Example startup scripts can be found in the example IOCs in the <a href="https://github.com/epics-motor">driver modules</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -3670,15 +3388,11 @@ section</a> ).
|
||||
<table border="1" cellpadding="5">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th colspan="2">BACKUP/RESTORE (BURT) REQUEST FILES <br>
|
||||
files to be placed in <tt>&lttop>/&ltapp&gtApp/op/burt/</tt></th>
|
||||
<th colspan="2">BACKUP/RESTORE (BURT) REQUEST FILES</th>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>settings.req</td>
|
||||
<td>sample request file to save settings of all motors. Edit this file,
|
||||
supplying names of the motor records whose settings you want saved. (The sample
|
||||
file also saves the states of other records in the sample database, m16.db, that
|
||||
enable or disable the motor records.)</td>
|
||||
<td>A file that could be created to save settings from multiple motors.</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>yyMotorSettings.req </td>
|
||||
@@ -3687,8 +3401,7 @@ section</a> ).
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>positions.req </td>
|
||||
<td>sample request file to save positions of all motors. Edit this file,
|
||||
supplying names of the motor records whose positions you want saved.</td>
|
||||
<td>A file that could be created to save positions from multiple motors.</td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<td>yyMotorPositions.req </td>
|
||||
@@ -3927,6 +3640,6 @@ specific value (e.g., kV) that is not supported by the motor controller. <br>
|
||||
<hr>
|
||||
<address>Suggestions and comments to:</address> <br>
|
||||
<a href="mailto:kmpeters@anl.gov">Kevin Peterson</a> : (kmpeters@anl.gov) <br>
|
||||
Last modified: May 1, 2018
|
||||
Last modified: 2020-05-14
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -12,12 +12,18 @@
|
||||
<body>
|
||||
<div style="text-align: center">
|
||||
<h1>
|
||||
<b>Motor Record Version 6-10-1 Release Notice</b></h1>
|
||||
<b>Motor Record Version 6-11 Release Notice</b></h1>
|
||||
</div>
|
||||
|
||||
<div style="text-align: left">
|
||||
<p>
|
||||
See release notes on github: <a href="https://github.com/epics-modules/motor/releases/tag/R6-11">https://github.com/epics-modules/motor/releases/tag/R6-11</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div style="text-align: center">
|
||||
<h4>
|
||||
Modifications to Existing Features</h4>
|
||||
<h1>
|
||||
<b>Motor Record Version 6-10-1 Release Notice</b></h1>
|
||||
</div>
|
||||
|
||||
<div style="text-align: left">
|
||||
|
||||
Executable
BIN
Binary file not shown.
@@ -1,6 +0,0 @@
|
||||
TOP = ..
|
||||
include $(TOP)/configure/CONFIG
|
||||
DIRS += $(wildcard *ioc*)
|
||||
DIRS += $(wildcard as*)
|
||||
include $(CONFIG)/RULES_DIRS
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
TOP = ../..
|
||||
include $(TOP)/configure/CONFIG
|
||||
ARCH = vxWorks-ppc32-debug
|
||||
#!ARCH = linux-x86_64
|
||||
TARGETS = cdCommands
|
||||
TARGETS += envPaths
|
||||
include $(TOP)/configure/RULES.ioc
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
file "$(MOTOR)/db/basic_asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, DTYP, PORT, ADDR, C, S, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
|
||||
{IOC:, 1, "X", "asynMotor", L1, 0, 0, 0, "X", mm, Pos, 100, 25, 1, 0, 0, 50, 0.0004, 5, 380, -10, ""}
|
||||
{IOC:, 2, "Y", "asynMotor", L1, 1, 0, 0, "Y", mm, Pos, 100, 25, 1, 0, 0, 50, 0.0004, 5, 380, -10, ""}
|
||||
}
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
# The is the ASYN example for communication to an Aerotech A3200
|
||||
# "#!" marks lines that can be uncommented.
|
||||
|
||||
< envPaths
|
||||
|
||||
dbLoadDatabase("$(TOP)/dbd/WithAsyn.dbd")
|
||||
WithAsyn_registerRecordDeviceDriver(pdbbase)
|
||||
dbLoadTemplate("a3.asyn.motor.substitutions")
|
||||
|
||||
# Configure to use Ethernet
|
||||
#############################################################################################
|
||||
# #
|
||||
# Replace the IP Address and Port on the next line with the IP/Port of your A3200 #
|
||||
# #
|
||||
#############################################################################################
|
||||
drvAsynIPPortConfigure("L0","10.101.2.221:8001",0,0,0)
|
||||
|
||||
A3200AsynSetup(1) /* number of A3200 controllers in system. */
|
||||
|
||||
# Aerotech A3200 asyn motor driver configure parameters.
|
||||
# (1) Controller number being configured
|
||||
# (2) ASYN port name
|
||||
# (3) ASYN address (GPIB only)
|
||||
# (4) Number of axes to control
|
||||
# (5) Task number to use for motion commands
|
||||
# (6) Time to poll (msec) when an axis is in motion
|
||||
# (7) Time to poll (msec) when an axis is idle. 0 for no polling
|
||||
A3200AsynConfig(0, "L0", 0, 2, 1, 1000, 2500)
|
||||
|
||||
# Asyn-based Motor Record support
|
||||
# (1) Asyn port
|
||||
# (2) Driver name
|
||||
# (3) Controller index
|
||||
# (4) Max. number of axes
|
||||
#!drvAsynMotorConfigure("MM4", "motorMM4000", 0, 4)
|
||||
#!drvAsynMotorConfigure("ANC150","motorANC150", 0, 1)
|
||||
drvAsynMotorConfigure("L1","motorA3200", 0, 2)
|
||||
|
||||
iocInit
|
||||
|
||||
# motorUtil (allstop & alldone)
|
||||
motorUtilInit("IOC:")
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
TOP = ../..
|
||||
include $(TOP)/configure/CONFIG
|
||||
ARCH = linux-x86_64
|
||||
TARGETS += envPaths
|
||||
include $(TOP)/configure/RULES.ioc
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
file "$(MOTOR)/db/basic_asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, DTYP, PORT, ADDR, C, S, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
|
||||
{IOC:, 1, "X", "asynMotor", M0, 1, 0, 0, "X", counts, Pos, 100, 25, 1, 0, 0, 50, 1, 0, 0, 0, ""}
|
||||
{IOC:, 2, "Y", "asynMotor", M0, 2, 0, 0, "Y", counts, Pos, 100, 25, 1, 0, 0, 50, 1, 0, 0, 0, ""}
|
||||
}
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
#!../../bin/linux-x86_64/picoctl
|
||||
|
||||
## You may have to change picoctl to something else
|
||||
## everywhere it appears in this file
|
||||
|
||||
< envPaths
|
||||
|
||||
epicsEnvSet("EPICS_CA_AUTO_ADDR_LIST", "NO")
|
||||
epicsEnvSet("EPICS_CA_ADDR_LIST", "10.28.0.255")
|
||||
|
||||
epicsEnvSet("Sys", "Sys")
|
||||
epicsEnvSet("Port", "P0")
|
||||
epicsEnvSet("ControllerPort", "M0")
|
||||
epicsEnvSet("MC", "MC:10")
|
||||
epicsEnvSet("CT", "CT")
|
||||
epicsEnvSet("IOC_PREFIX", "$(CT){IOC:MC10}")
|
||||
epicsEnvSet("MC_PREFIX", "$(CT){$(MC)}")
|
||||
|
||||
cd ${TOP}
|
||||
|
||||
## Register all support components
|
||||
dbLoadDatabase "dbd/picoctl.dbd"
|
||||
picoctl_registerRecordDeviceDriver pdbbase
|
||||
|
||||
# Setup IP port for 8742
|
||||
drvAsynIPPortConfigure("$(Port)", "10.28.2.111:23")
|
||||
asynOctetSetInputEos("$(Port)",0,"\r\n")
|
||||
asynOctetSetOutputEos("$(Port)",0,"\r")
|
||||
|
||||
#db asyn debug traces
|
||||
asynSetTraceMask("$(Port)",-1,0x1)
|
||||
asynSetTraceIOMask("$(Port)",-1,0x1)
|
||||
|
||||
|
||||
# New Focus Picomotor Network Controller (model 87xx) configuration parameters:
|
||||
# (1) IP asyn port name (string)
|
||||
# (2) Controller asyn port name (string)
|
||||
# (3) Number of axes
|
||||
# (4) Moving poll period (ms)
|
||||
# (5) Idle poll period (ms)
|
||||
nf874xCreateController("$(ControllerPort)", "$(Port)", 4, 200, 1000)
|
||||
|
||||
## Load record instances
|
||||
dbLoadTemplate("iocBoot/iocNewFocus874x/newfocus8742.asyn.motor.substitutions")
|
||||
|
||||
dbLoadRecords("${ASYN}/db/asynRecord.db", "P=$(MC_PREFIX),R=Asyn,PORT=$(Port),ADDR=,OMAX=80,IMAX=80")
|
||||
|
||||
## autosave/restore machinery
|
||||
save_restoreSet_Debug(0)
|
||||
save_restoreSet_IncompleteSetsOk(1)
|
||||
save_restoreSet_DatedBackupFiles(1)
|
||||
|
||||
set_savefile_path("${TOP}/as","/save")
|
||||
set_requestfile_path("${TOP}/as","/req")
|
||||
|
||||
set_pass0_restoreFile("info_positions.sav")
|
||||
set_pass0_restoreFile("info_settings.sav")
|
||||
set_pass1_restoreFile("info_settings.sav")
|
||||
|
||||
iocInit()
|
||||
|
||||
## more autosave/restore machinery
|
||||
cd ${TOP}/as/req
|
||||
makeAutosaveFiles()
|
||||
create_monitor_set("info_positions.req", 5 , "")
|
||||
create_monitor_set("info_settings.req", 15 , "")
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
d_spacing variable inline double "" "" 1 1 3.13555
|
||||
Io device scaler soft_scaler "" "" 0 0 0 timer1 energy 101 ./i0.dat 0
|
||||
It device scaler soft_scaler "" "" 0 0 0 timer1 energy 101 ./it.dat 0
|
||||
#rls:m2 device motor soft_motor "" "" 250000 0 -20000000 20000000 0 -1 -1 5e-05 0 deg 10000 0 2000
|
||||
energy device motor energy_motor "" "" 0 0 0 1e+08 0 -1 -1 1 0 eV rls:m1 d_spacing 0.017453
|
||||
timer1 device timer soft_timer "" ""
|
||||
#
|
||||
# Newport test records
|
||||
#
|
||||
newport_rs232 interface rs232 tty "" "" 9600 8 N 1 N 0x0d 0x0d /dev/ttyb
|
||||
newport interface generic mm4000 "" "" newport_rs232
|
||||
rls:m1 device motor mm4000_motor "" "" 0 0 -1.0e38 1.0e38 0 -1 -1 1 0 deg newport 1
|
||||
#
|
||||
# IMS test records
|
||||
#
|
||||
#ims_rs232 interface rs232 tty "" "" 9600 8 N 1 N 0x0d0a 0x0d0a /dev/ttyS0
|
||||
#rls:m3 device motor panther_hi "" "" 0 0 -10000000 10000000 0 -1 -1 1 0 steps ims_rs232 0 18340 2001 5 5 8 F 1 6 50 -1
|
||||
@@ -1,8 +0,0 @@
|
||||
TOP = ../..
|
||||
include $(TOP)/configure/CONFIG
|
||||
ARCH = vxWorks-68040
|
||||
#!ARCH = vxWorks-ppc604_long
|
||||
TARGETS = cdCommands
|
||||
TARGETS += envPaths
|
||||
include $(TOP)/configure/RULES.ioc
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
To build any examples;
|
||||
|
||||
- in <motor>/configure/RELEASE: EPICS_BASE must be defined and,
|
||||
#!MOTOR=$(TOP) must be uncommented.
|
||||
|
||||
- in <motor>/Makefile: the following two lines must be uncommented;
|
||||
#!DIRS := $(DIRS) $(filter-out $(DIRS), motorExApp)
|
||||
#!DIRS := $(DIRS) $(filter-out $(DIRS), iocBoot)
|
||||
|
||||
To build the OMS example in this directory;
|
||||
- in <motor>/motorApp/Makefile: #!DIRS += OmsSrc must be uncommented.
|
||||
|
||||
- in <motor>/motorExApp/Makefile: #!DIRS += NoAsyn must be uncommented.
|
||||
|
||||
- in <motor>/motorExApp/NoAsyn/Makefile: #!NoAsynVx_LIBS += oms must be
|
||||
uncommented.
|
||||
|
||||
Finally, cd <motor>; gnumake clean uninstall; gnumake
|
||||
|
||||
|
||||
To run the MX example, uncomment the following;
|
||||
in <motor>/motorExApp/NoAsyn/Makefile: #NoAsyn_LIBS += MXmotor
|
||||
in <motor>/motorExApp/NoAsyn/NoAsynInclude.dbd: #include "devMXmotor.dbd"
|
||||
and rebuild.
|
||||
|
||||
Assuming the EPICS_HOST_ARCH environment variable is set correctly,
|
||||
start the ioc from this directory by executing the following command.
|
||||
|
||||
../../bin/${EPICS_HOST_ARCH}/NoAsyn st.cmd.mx
|
||||
@@ -1,101 +0,0 @@
|
||||
8950 157555
|
||||
8951 157823
|
||||
8952 158170
|
||||
8953 158333
|
||||
8954 158463
|
||||
8955 158458
|
||||
8956 158788
|
||||
8957 159070
|
||||
8958 159189
|
||||
8959 159292
|
||||
8960 159053
|
||||
8961 159275
|
||||
8962 159347
|
||||
8963 159396
|
||||
8964 159627
|
||||
8965 159326
|
||||
8966 159460
|
||||
8967 159690
|
||||
8968 159627
|
||||
8969 159682
|
||||
8970 159745
|
||||
8971 159840
|
||||
8972 160053
|
||||
8973 160313
|
||||
8974 160410
|
||||
8975 160762
|
||||
8976 160887
|
||||
8977 160988
|
||||
8978 161028
|
||||
8979 161064
|
||||
8980 160984
|
||||
8981 161161
|
||||
8982 161015
|
||||
8983 161069
|
||||
8984 161088
|
||||
8985 161018
|
||||
8986 161200
|
||||
8987 161327
|
||||
8988 161337
|
||||
8989 161322
|
||||
8990 161497
|
||||
8991 161496
|
||||
8992 161410
|
||||
8993 161410
|
||||
8994 161614
|
||||
8995 161683
|
||||
8996 161831
|
||||
8997 161831
|
||||
8998 161877
|
||||
8999 161999
|
||||
9000 162046
|
||||
9001 162095
|
||||
9002 161911
|
||||
9003 162190
|
||||
9004 162038
|
||||
9005 162164
|
||||
9006 162293
|
||||
9007 162129
|
||||
9008 162230
|
||||
9009 162170
|
||||
9010 161890
|
||||
9011 162286
|
||||
9012 162331
|
||||
9013 162317
|
||||
9014 162374
|
||||
9015 162483
|
||||
9016 162509
|
||||
9017 162320
|
||||
9018 162310
|
||||
9019 162430
|
||||
9020 162345
|
||||
9021 162376
|
||||
9022 162439
|
||||
9023 162552
|
||||
9024 162582
|
||||
9025 162625
|
||||
9026 162761
|
||||
9027 162845
|
||||
9028 162663
|
||||
9029 162692
|
||||
9030 162701
|
||||
9031 162561
|
||||
9032 162617
|
||||
9033 162586
|
||||
9034 162531
|
||||
9035 162564
|
||||
9036 162557
|
||||
9037 162583
|
||||
9038 162535
|
||||
9039 162504
|
||||
9040 162304
|
||||
9041 161609
|
||||
9042 159694
|
||||
9043 160016
|
||||
9044 162222
|
||||
9045 162759
|
||||
9046 162825
|
||||
9047 162820
|
||||
9048 162698
|
||||
9049 162699
|
||||
9050 162860
|
||||
@@ -1,101 +0,0 @@
|
||||
8950 395527
|
||||
8951 397385
|
||||
8952 399842
|
||||
8953 400917
|
||||
8954 401645
|
||||
8955 401494
|
||||
8956 403659
|
||||
8957 405675
|
||||
8958 406268
|
||||
8959 406722
|
||||
8960 404554
|
||||
8961 405881
|
||||
8962 405794
|
||||
8963 405550
|
||||
8964 406522
|
||||
8965 403507
|
||||
8966 403562
|
||||
8967 404049
|
||||
8968 402105
|
||||
8969 400442
|
||||
8970 398177
|
||||
8971 394713
|
||||
8972 389458
|
||||
8973 377355
|
||||
8974 345928
|
||||
8975 280021
|
||||
8976 213430
|
||||
8977 187933
|
||||
8978 188234
|
||||
8979 193119
|
||||
8980 188754
|
||||
8981 178281
|
||||
8982 166890
|
||||
8983 156640
|
||||
8984 143264
|
||||
8985 127337
|
||||
8986 112287
|
||||
8987 99609
|
||||
8988 89420
|
||||
8989 83563
|
||||
8990 82755
|
||||
8991 85219
|
||||
8992 88971
|
||||
8993 92543
|
||||
8994 95141
|
||||
8995 95149
|
||||
8996 92518
|
||||
8997 87593
|
||||
8998 83236
|
||||
8999 81763
|
||||
9000 83340
|
||||
9001 86828
|
||||
9002 89978
|
||||
9003 93541
|
||||
9004 95689
|
||||
9005 98596
|
||||
9006 101057
|
||||
9007 101874
|
||||
9008 102134
|
||||
9009 101552
|
||||
9010 100100
|
||||
9011 99666
|
||||
9012 98004
|
||||
9013 95900
|
||||
9014 93743
|
||||
9015 91861
|
||||
9016 89868
|
||||
9017 87733
|
||||
9018 85903
|
||||
9019 84462
|
||||
9020 82911
|
||||
9021 82220
|
||||
9022 82327
|
||||
9023 83211
|
||||
9024 84657
|
||||
9025 86522
|
||||
9026 88822
|
||||
9027 91046
|
||||
9028 92728
|
||||
9029 94292
|
||||
9030 95520
|
||||
9031 96048
|
||||
9032 96604
|
||||
9033 96630
|
||||
9034 96310
|
||||
9035 95917
|
||||
9036 95300
|
||||
9037 94749
|
||||
9038 94274
|
||||
9039 94140
|
||||
9040 93972
|
||||
9041 93150
|
||||
9042 89742
|
||||
9043 89947
|
||||
9044 93355
|
||||
9045 93570
|
||||
9046 92953
|
||||
9047 92474
|
||||
9048 92023
|
||||
9049 91978
|
||||
9050 92163
|
||||
@@ -1,14 +0,0 @@
|
||||
file "$(MOTOR)/db/basic_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, DTYP, C, S, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
|
||||
{IOC:, 1, "m$(N)", "PMAC", 0, 0, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
{IOC:, 2, "m$(N)", "PMAC", 0, 1, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
{IOC:, 3, "m$(N)", "PMAC", 0, 2, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
{IOC:, 4, "m$(N)", "PMAC", 0, 3, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
{IOC:, 5, "m$(N)", "PMAC", 0, 4, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
{IOC:, 6, "m$(N)", "PMAC", 0, 5, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
{IOC:, 7, "m$(N)", "PMAC", 0, 6, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
{IOC:, 8, "m$(N)", "PMAC", 0, 7, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
{IOC:, 9, "m$(N)", "PMAC", 0, 8, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
}
|
||||
@@ -1,85 +0,0 @@
|
||||
# This example if for OMS VME8/44 controllers. Since OMS controllers
|
||||
# communicate across the VME backplane, this example does not require
|
||||
# ASYN.
|
||||
|
||||
# "#!" marks lines that can be uncommented.
|
||||
|
||||
#The following must be added for many board support packages
|
||||
#!cd "... IOC st.cmd complete directory path ... "
|
||||
|
||||
< cdCommands
|
||||
#!< ../nfsCommands
|
||||
|
||||
cd topbin
|
||||
|
||||
ld < NoAsynVx.munch
|
||||
|
||||
cd startup
|
||||
dbLoadDatabase("$(TOP)/dbd/NoAsynVx.dbd")
|
||||
NoAsynVx_registerRecordDeviceDriver(pdbbase)
|
||||
|
||||
dbLoadTemplate("motor.substitutions")
|
||||
dbLoadRecords("$(MOTOR)/db/motorUtil.db", "P=IOC:")
|
||||
|
||||
#!dbLoadRecords("$(TOP)/motorApp/Db/SoftMotorEx.db","user=IOC,motor=m1", startup)
|
||||
|
||||
# OMS VME driver setup parameters:
|
||||
# (1)cards, (2)base address(short, 16-byte boundary),
|
||||
# (3)interrupt vector (0=disable or 64 - 255), (4)interrupt level (1 - 6),
|
||||
# (5)motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!omsSetup(1, 0xFC00, 180, 5, 10)
|
||||
#!drvOMSdebug = 4
|
||||
|
||||
# OMS VME58 driver setup parameters:
|
||||
# (1)cards, (2)base address(short, 4k boundary),
|
||||
# (3)interrupt vector (0=disable or 64 - 255), (4)interrupt level (1 - 6),
|
||||
# (5)motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!oms58Setup(1, 0x1000, 190, 5, 10)
|
||||
#!drvOms58debug = 4
|
||||
|
||||
# OMS MAXv driver setup parameters:
|
||||
# (1)number of cards in array.
|
||||
# (2)VME Address Space - A(16,24,32).
|
||||
# (3)Base Address (see README file).
|
||||
# (4)interrupt vector (0=disable or 64 - 255).
|
||||
# (5)interrupt level (2 - 6).
|
||||
# (6)motor task polling rate (min=1Hz,max=60Hz).
|
||||
#!MAXvSetup(1, 16, 0xF000, 200, 5, 10)
|
||||
#!MAXvSetup(1, 24, 0xFF0000, 200, 5, 10)
|
||||
#!MAXvSetup(1, 32, 0xFF000000, 200, 5, 10)
|
||||
#!drvMAXvdebug=4
|
||||
|
||||
# OMS MAXv configuration string:
|
||||
# (1) number of card being configured (0-14).
|
||||
# (2) configuration string; axis type (PSO/PSE/PSM) MUST be set here.
|
||||
# For example, set which TTL signal level defines
|
||||
# an active limit switch. Set X,Y,Z,T to active low and set U,V,R,S
|
||||
# to active high. Set all axes to open-loop stepper (PSO). See MAXv
|
||||
# User's Manual for LTL/LTH and PSO/PSE/PSM commands.
|
||||
# (3) SSI based absolute encoder bit flag. Bit #0 for Axis X, bit #1 for
|
||||
# Axis Y, etc.. Set a bit flag to '1' for absolute encoder values; '0'
|
||||
# for the standard incremental encoder values.
|
||||
# (4) SSI based absolute encoder grey code flags (0/1 - yes/no, 0x12 -> UY)
|
||||
|
||||
#!str = malloc(200);
|
||||
#!strcpy str, "AA; LMH,H,H,H,H,H,H,H;"
|
||||
#!strcat str, "AX LTH PSO; AY LTH PSO; AZ LTL PSO; AT LTL PSO; AU LTL PSO; AV LTL PSO; AR LTL PSO; AS LTL PSO;"
|
||||
#!MAXvConfig(0, str, 0, 0)
|
||||
#!free(str)
|
||||
|
||||
|
||||
# PMAC VME driver setup parameters:
|
||||
# (1)cards, (2) VME Address Type (24,32)
|
||||
# (3)Mailbox base address, (4)DPRAM base address,
|
||||
# (5)interrupt vector (0=disable or 64 - 255),
|
||||
# (6)interrupt level (1 - 6),
|
||||
# (7)motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!PmacSetup(1, 32, 0xB07FA000, 0xB0700000, 0, 5, 2)
|
||||
#!PmacSetup(1, 24, 0x7FA000, 0x700000, 0, 5, 2)
|
||||
#!drvPmacdebug = 4
|
||||
|
||||
iocInit
|
||||
|
||||
# motorUtil (allstop & alldone)
|
||||
motorUtilInit("IOC:")
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
# This example if for running a motor record that uses the MX device
|
||||
# driver support on a Unix host. This example does not require Asyn.
|
||||
|
||||
# Start errlog Task before any possible error messsage to prevent
|
||||
# erroneous "Interrupted system call" message on Linux OS host.
|
||||
errlogInit(0)
|
||||
|
||||
dbLoadDatabase("../../dbd/NoAsyn.dbd",0,0)
|
||||
registerRecordDeviceDriver(pdbbase)
|
||||
dbLoadRecords("../../db/NoAsyn_MX.db","user=rls")
|
||||
MXmotorSetup(1, "MXexample.dat", 10)
|
||||
|
||||
iocInit()
|
||||
@@ -1,9 +0,0 @@
|
||||
TOP = ../..
|
||||
include $(TOP)/configure/CONFIG
|
||||
ARCH = linux-x86
|
||||
#ARCH = linux-x86_64
|
||||
#ARCH = vxWorks-ppc604
|
||||
TARGETS = cdCommands
|
||||
TARGETS += envPaths
|
||||
include $(TOP)/configure/RULES.ioc
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
To build any examples;
|
||||
|
||||
- in <motor>/configure/RELEASE: EPICS_BASE and MOTOR must be defined.
|
||||
|
||||
- in <motor>/Makefile: the following three lines must be uncommented;
|
||||
#!DIRS += motorExApp iocBoot
|
||||
#!motorExApp_DEPEND_DIRS = motorApp
|
||||
#!iocBoot_DEPEND_DIRS = motorExApp
|
||||
|
||||
To build this simulation example;
|
||||
|
||||
- in <motor>/configure/RELEASE: ASYN must be defined.
|
||||
|
||||
- in <motor>/iocBoot/iocSim/Makefile set the target architecture
|
||||
|
||||
Finally, cd <motor>; gnumake clean uninstall; gnumake
|
||||
|
||||
To run this simulation example on a Unix OS;
|
||||
- Set the EPICS_HOST_ARCH environment variable correctly.
|
||||
- Edit the st.cmd.unix file for either sun or linux.
|
||||
- Start the ioc from this directory by executing the following command.
|
||||
|
||||
../../bin/${EPICS_HOST_ARCH}/WithAsyn st.cmd.unix
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
file "../../db/basic_asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
|
||||
{IOC:, 1, "m$(N)", "asynMotor", motorSim1, 0, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
{IOC:, 2, "m$(N)", "asynMotor", motorSim1, 1, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
{IOC:, 3, "m$(N)", "asynMotor", motorSim1, 2, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
{IOC:, 4, "m$(N)", "asynMotor", motorSim1, 3, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
|
||||
{IOC:, 5, "m$(N)", "asynMotor", motorSim2, 0, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
{IOC:, 6, "m$(N)", "asynMotor", motorSim2, 1, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
{IOC:, 7, "m$(N)", "asynMotor", motorSim2, 2, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
{IOC:, 8, "m$(N)", "asynMotor", motorSim2, 3, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
# The is the ASYN example for communication to 4 simulated motors
|
||||
# "#!" marks lines that can be uncommented.
|
||||
|
||||
# The following must be added for many board support packages
|
||||
#!cd "... IOC st.cmd complete directory path ... "
|
||||
|
||||
< cdCommands
|
||||
#!< ../nfsCommands
|
||||
|
||||
cd topbin
|
||||
|
||||
# If the VxWorks kernel was built using the project facility, the following must
|
||||
# be added before any C++ code is loaded (see SPR #28980).
|
||||
sysCplusEnable=1
|
||||
|
||||
ld(0,0,"WithAsynVx.munch")
|
||||
|
||||
cd startup
|
||||
dbLoadDatabase("$(TOP)/dbd/WithAsynVx.dbd")
|
||||
WithAsynVx_registerRecordDeviceDriver(pdbbase)
|
||||
dbLoadTemplate("motor.substitutions")
|
||||
|
||||
# Create simulated motors: ( start card , start axis , low limit, high limit, home posn, # cards, # axes to setup)
|
||||
motorSimCreate( 0, 0, -32000, 32000, 0, 1, 4 )
|
||||
# Setup the Asyn layer (portname, low-level driver drvet name, card, number of axes on card)
|
||||
drvAsynMotorConfigure("motorSim1", "motorSim", 0, 4)
|
||||
iocInit
|
||||
@@ -1,24 +0,0 @@
|
||||
# The is the ASYN example for communication to 4 simulated motors
|
||||
# "#!" marks lines that can be uncommented.
|
||||
|
||||
< envPaths
|
||||
|
||||
dbLoadDatabase("$(TOP)/dbd/WithAsyn.dbd")
|
||||
WithAsyn_registerRecordDeviceDriver(pdbbase)
|
||||
dbLoadTemplate("motor.substitutions")
|
||||
|
||||
# Create simulated motors: ( start card , start axis , low limit, high limit, home posn, # cards, # axes to setup)
|
||||
motorSimCreate( 0, 0, -32000, 32000, 0, 1, 4 )
|
||||
# Setup the Asyn layer (portname, low-level driver drvet name, card, number of axes on card)
|
||||
drvAsynMotorConfigure("motorSim1", "motorSim", 0, 4)
|
||||
|
||||
motorSimCreateController("motorSim2", 8)
|
||||
#asynSetTraceIOMask("motorSim2", 0, 4)
|
||||
#asynSetTraceMask("motorSim2", 0, 255)
|
||||
|
||||
# motorSimConfigAxis(port, axis, lowLimit, highLimit, home, start)
|
||||
motorSimConfigAxis("motorSim2", 0, 20000, -20000, 500, 0)
|
||||
motorSimConfigAxis("motorSim2", 1, 20000, -20000, 1500, 0)
|
||||
motorSimConfigAxis("motorSim2", 2, 20000, -20000, 2500, 0)
|
||||
motorSimConfigAxis("motorSim2", 3, 20000, -20000, 3000, 0)
|
||||
iocInit
|
||||
@@ -1,14 +0,0 @@
|
||||
# The is the ASYN example for communication to 4 simulated motors
|
||||
# "#!" marks lines that can be uncommented.
|
||||
|
||||
< envPaths
|
||||
|
||||
dbLoadDatabase("$(TOP)/dbd/WithMPFWin32.dbd")
|
||||
WithMPFWin32_registerRecordDeviceDriver(pdbbase)
|
||||
dbLoadTemplate("motor.substitutions")
|
||||
|
||||
# Create simulated motors: ( start card , start axis , low limit, high limit, home posn, # cards, # axes to setup)
|
||||
motorSimCreate( 0, 0, -32000, 32000, 0, 1, 4 )
|
||||
# Setup the Asyn layer (portname, low-level driver drvet name, card, number of axes on card)
|
||||
drvAsynMotorConfigure("motorSim1", "motorSim", 0, 4)
|
||||
iocInit
|
||||
@@ -1 +0,0 @@
|
||||
medm -x -macro "P=IOC:, M1=m1, M2=m2, M3=m3, M4=m4, M5=m5, M6=m6, M7=m7, M8=m8" motor8x.adl &
|
||||
@@ -1,11 +0,0 @@
|
||||
TOP = ../..
|
||||
include $(TOP)/configure/CONFIG
|
||||
ARCH = linux-x86
|
||||
#ARCH = win32-x86
|
||||
#ARCH = vxWorks-ppc604
|
||||
#ARCH = windows-x64
|
||||
TARGETS = cdCommands
|
||||
TARGETS += envPaths
|
||||
TARGETS += dllPath.bat
|
||||
include $(TOP)/configure/RULES.ioc
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
To build any examples;
|
||||
|
||||
- in <motor>/configure/RELEASE: EPICS_BASE and MOTOR must be defined.
|
||||
|
||||
- in <motor>/Makefile: the following two lines must be uncommented;
|
||||
#DIRS := $(DIRS) $(filter-out $(DIRS), motorExApp)
|
||||
#DIRS := $(DIRS) $(filter-out $(DIRS), iocBoot)
|
||||
|
||||
To build the iocWithAsyn example;
|
||||
|
||||
- in <motor>/configure/RELEASE: IPAC and ASYN must be defined.
|
||||
|
||||
|
||||
Finally, cd <motor>; gnumake clean uninstall; gnumake
|
||||
|
||||
To run this Newport MM4000/5, "asyn" example on a Unix OS;
|
||||
- Set the EPICS_HOST_ARCH environment variable correctly.
|
||||
- Edit the st.cmd.unix file for either sun or linux.
|
||||
- Start the ioc from this directory by executing the following command.
|
||||
|
||||
../../bin/${EPICS_HOST_ARCH}/WithAsyn st.cmd.unix
|
||||
|
||||
@@ -1,118 +0,0 @@
|
||||
file "$(TOP)/db/XPSAuxLi.db"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, CHAN, SCAN}
|
||||
{IOC:, XPSAux1Li, XPS_AUX1, 0, "I/O Intr"}
|
||||
{IOC:, XPSAux2Li, XPS_AUX1, 1, "I/O Intr"}
|
||||
{IOC:, XPSAux3Li, XPS_AUX1, 2, "I/O Intr"}
|
||||
{IOC:, XPSAux4Li, XPS_AUX1, 3, "I/O Intr"}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/XPSAuxBi.db"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, CHAN, MASK, SCAN}
|
||||
{IOC:, XPSAux1Bi0, XPS_AUX1, 0, 0x000001, "I/O Intr"}
|
||||
{IOC:, XPSAux1Bi1, XPS_AUX1, 0, 0x000002, "I/O Intr"}
|
||||
{IOC:, XPSAux1Bi2, XPS_AUX1, 0, 0x000004, "I/O Intr"}
|
||||
{IOC:, XPSAux1Bi3, XPS_AUX1, 0, 0x000008, "I/O Intr"}
|
||||
{IOC:, XPSAux1Bi4, XPS_AUX1, 0, 0x000010, "I/O Intr"}
|
||||
{IOC:, XPSAux1Bi5, XPS_AUX1, 0, 0x000020, "I/O Intr"}
|
||||
{IOC:, XPSAux1Bi6, XPS_AUX1, 0, 0x000040, "I/O Intr"}
|
||||
{IOC:, XPSAux1Bi7, XPS_AUX1, 0, 0x000080, "I/O Intr"}
|
||||
{IOC:, XPSAux2Bi0, XPS_AUX1, 1, 0x000001, "I/O Intr"}
|
||||
{IOC:, XPSAux2Bi1, XPS_AUX1, 1, 0x000002, "I/O Intr"}
|
||||
{IOC:, XPSAux2Bi2, XPS_AUX1, 1, 0x000004, "I/O Intr"}
|
||||
{IOC:, XPSAux2Bi3, XPS_AUX1, 1, 0x000008, "I/O Intr"}
|
||||
{IOC:, XPSAux2Bi4, XPS_AUX1, 1, 0x000010, "I/O Intr"}
|
||||
{IOC:, XPSAux2Bi5, XPS_AUX1, 1, 0x000020, "I/O Intr"}
|
||||
{IOC:, XPSAux3Bi0, XPS_AUX1, 2, 0x000001, "I/O Intr"}
|
||||
{IOC:, XPSAux3Bi1, XPS_AUX1, 2, 0x000002, "I/O Intr"}
|
||||
{IOC:, XPSAux3Bi2, XPS_AUX1, 2, 0x000004, "I/O Intr"}
|
||||
{IOC:, XPSAux3Bi3, XPS_AUX1, 2, 0x000008, "I/O Intr"}
|
||||
{IOC:, XPSAux3Bi4, XPS_AUX1, 2, 0x000010, "I/O Intr"}
|
||||
{IOC:, XPSAux3Bi5, XPS_AUX1, 2, 0x000020, "I/O Intr"}
|
||||
{IOC:, XPSAux4Bi0, XPS_AUX1, 3, 0x000001, "I/O Intr"}
|
||||
{IOC:, XPSAux4Bi1, XPS_AUX1, 3, 0x000002, "I/O Intr"}
|
||||
{IOC:, XPSAux4Bi2, XPS_AUX1, 3, 0x000004, "I/O Intr"}
|
||||
{IOC:, XPSAux4Bi3, XPS_AUX1, 3, 0x000008, "I/O Intr"}
|
||||
{IOC:, XPSAux4Bi4, XPS_AUX1, 3, 0x000010, "I/O Intr"}
|
||||
{IOC:, XPSAux4Bi5, XPS_AUX1, 3, 0x000020, "I/O Intr"}
|
||||
{IOC:, XPSAux4Bi6, XPS_AUX1, 3, 0x000040, "I/O Intr"}
|
||||
{IOC:, XPSAux4Bi7, XPS_AUX1, 3, 0x000080, "I/O Intr"}
|
||||
{IOC:, XPSAux4Bi8, XPS_AUX1, 3, 0x000100, "I/O Intr"}
|
||||
{IOC:, XPSAux4Bi9, XPS_AUX1, 3, 0x000200, "I/O Intr"}
|
||||
{IOC:, XPSAux4Bi10, XPS_AUX1, 3, 0x000400, "I/O Intr"}
|
||||
{IOC:, XPSAux4Bi11, XPS_AUX1, 3, 0x000800, "I/O Intr"}
|
||||
{IOC:, XPSAux4Bi12, XPS_AUX1, 3, 0x001000, "I/O Intr"}
|
||||
{IOC:, XPSAux4Bi13, XPS_AUX1, 3, 0x002000, "I/O Intr"}
|
||||
{IOC:, XPSAux4Bi14, XPS_AUX1, 3, 0x004000, "I/O Intr"}
|
||||
{IOC:, XPSAux4Bi15, XPS_AUX1, 3, 0x008000, "I/O Intr"}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/XPSAuxBo.db"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, CHAN, MASK}
|
||||
{IOC:, XPSAux1Bo0, XPS_AUX1, 0, 0x000001}
|
||||
{IOC:, XPSAux1Bo1, XPS_AUX1, 0, 0x000002}
|
||||
{IOC:, XPSAux1Bo2, XPS_AUX1, 0, 0x000004}
|
||||
{IOC:, XPSAux1Bo3, XPS_AUX1, 0, 0x000008}
|
||||
{IOC:, XPSAux1Bo4, XPS_AUX1, 0, 0x000010}
|
||||
{IOC:, XPSAux1Bo5, XPS_AUX1, 0, 0x000020}
|
||||
{IOC:, XPSAux1Bo6, XPS_AUX1, 0, 0x000040}
|
||||
{IOC:, XPSAux1Bo7, XPS_AUX1, 0, 0x000080}
|
||||
{IOC:, XPSAux3Bo0, XPS_AUX1, 1, 0x000001}
|
||||
{IOC:, XPSAux3Bo1, XPS_AUX1, 1, 0x000002}
|
||||
{IOC:, XPSAux3Bo2, XPS_AUX1, 1, 0x000004}
|
||||
{IOC:, XPSAux3Bo3, XPS_AUX1, 1, 0x000008}
|
||||
{IOC:, XPSAux3Bo4, XPS_AUX1, 1, 0x000010}
|
||||
{IOC:, XPSAux3Bo5, XPS_AUX1, 1, 0x000020}
|
||||
{IOC:, XPSAux4Bo0, XPS_AUX1, 2, 0x000001}
|
||||
{IOC:, XPSAux4Bo1, XPS_AUX1, 2, 0x000002}
|
||||
{IOC:, XPSAux4Bo2, XPS_AUX1, 2, 0x000004}
|
||||
{IOC:, XPSAux4Bo3, XPS_AUX1, 2, 0x000008}
|
||||
{IOC:, XPSAux4Bo4, XPS_AUX1, 2, 0x000010}
|
||||
{IOC:, XPSAux4Bo5, XPS_AUX1, 2, 0x000020}
|
||||
{IOC:, XPSAux4Bo6, XPS_AUX1, 2, 0x000040}
|
||||
{IOC:, XPSAux4Bo7, XPS_AUX1, 2, 0x000080}
|
||||
{IOC:, XPSAux4Bo8, XPS_AUX1, 2, 0x000100}
|
||||
{IOC:, XPSAux4Bo9, XPS_AUX1, 2, 0x000200}
|
||||
{IOC:, XPSAux4Bo10, XPS_AUX1, 2, 0x000400}
|
||||
{IOC:, XPSAux4Bo11, XPS_AUX1, 2, 0x000800}
|
||||
{IOC:, XPSAux4Bo12, XPS_AUX1, 2, 0x001000}
|
||||
{IOC:, XPSAux4Bo13, XPS_AUX1, 2, 0x002000}
|
||||
{IOC:, XPSAux4Bo14, XPS_AUX1, 2, 0x004000}
|
||||
{IOC:, XPSAux4Bo15, XPS_AUX1, 2, 0x008000}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/XPSAuxLo.db"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, CHAN}
|
||||
{IOC:, XPSAux1Lo, XPS_AUX1, 0}
|
||||
{IOC:, XPSAux3Lo, XPS_AUX1, 1}
|
||||
{IOC:, XPSAux4Lo, XPS_AUX1, 2}
|
||||
}
|
||||
|
||||
|
||||
file "$(TOP)/db/XPSAuxAi.db"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, CHAN, LOPR, HOPR, PREC, SCAN}
|
||||
{IOC:, XPSAuxAi0, XPS_AUX1, 0, -10.0, 10.0, 4, "1 second"}
|
||||
{IOC:, XPSAuxAi1, XPS_AUX1, 1, -10.0, 10.0, 4, "1 second"}
|
||||
{IOC:, XPSAuxAi2, XPS_AUX1, 2, -10.0, 10.0, 4, "1 second"}
|
||||
{IOC:, XPSAuxAi3, XPS_AUX1, 3, -10.0, 10.0, 4, "1 second"}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/XPSAuxAo.db"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, CHAN, DRVL, LOPR, DRVH, HOPR, PREC}
|
||||
{IOC:, XPSAuxAo0, XPS_AUX1, 0, -10.0, -10.0, 10.0, 10.0, 4}
|
||||
{IOC:, XPSAuxAo1, XPS_AUX1, 1, -10.0, -10.0, 10.0, 10.0, 4}
|
||||
{IOC:, XPSAuxAo2, XPS_AUX1, 2, -10.0, -10.0, 10.0, 10.0, 4}
|
||||
{IOC:, XPSAuxAo3, XPS_AUX1, 3, -10.0, -10.0, 10.0, 10.0 4}
|
||||
}
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
sudo modprobe -v ftdi_sio vendor=0x104d product=0x3006
|
||||
sudo chmod o+rw /dev/ttyUSB*
|
||||
@@ -1,2 +0,0 @@
|
||||
sudo modprobe -v ftdi_sio vendor=0x104d product=0x3000
|
||||
sudo chmod o+rw /dev/ttyUSB*
|
||||
@@ -1,107 +0,0 @@
|
||||
# ANF2 motors command file example (run in iocsh)
|
||||
#
|
||||
### Note: Modbus support (the EPICS modbus module) is required to be included in the
|
||||
### EPICS application where the ANF2 support will be loaded. This file is an
|
||||
### example of how to load the ANF2 support, in an ioc that is built with the
|
||||
### EPICS modbus module.
|
||||
|
||||
epicsEnvSet("PORT1", "ANF2_C1")
|
||||
epicsEnvSet("PORT2", "ANF2_C2")
|
||||
|
||||
# drvAsynIPPortConfigure("portName", "hostInfo", priority, noAutoConnect, noProcessEos);
|
||||
drvAsynIPPortConfigure("$(PORT1)_IP","192.168.0.50:502",0,0,1)
|
||||
drvAsynIPPortConfigure("$(PORT2)_IP","192.168.0.51:502",0,0,1)
|
||||
|
||||
# modbusInterposeConfig("portName", linkType, timeoutMsec, writeDelayMsec)
|
||||
modbusInterposeConfig("$(PORT1)_IP",0,2000,0)
|
||||
modbusInterposeConfig("$(PORT2)_IP",0,2000,0)
|
||||
|
||||
# NOTE: modbusLength = 10 * number of axes
|
||||
# drvModbusAsynConfigure("portName", "tcpPortName", slaveAddress, modbusFunction,
|
||||
# modbusStartAddress, modbusLength, dataType, pollMsec, "plcType")
|
||||
drvModbusAsynConfigure("$(PORT1)_In", "$(PORT1)_IP", 0, 4, 0, 120, 0, 100, "ANF2_stepper")
|
||||
drvModbusAsynConfigure("$(PORT2)_In", "$(PORT2)_IP", 0, 4, 0, 60, 0, 100, "ANF2_stepper")
|
||||
|
||||
# NOTE: modbusLength = 10 * number of axes
|
||||
# drvModbusAsynConfigure("portName", "tcpPortName", slaveAddress, modbusFunction,
|
||||
# modbusStartAddress, modbusLength, dataType, pollMsec, "plcType")
|
||||
drvModbusAsynConfigure("$(PORT1)_Out", "$(PORT1)_IP", 0, 16, 1024, 120, 6, 1, "ANF2_stepper")
|
||||
drvModbusAsynConfigure("$(PORT2)_Out", "$(PORT2)_IP", 0, 16, 1024, 60, 6, 1, "ANF2_stepper")
|
||||
|
||||
# Asyn traces for debugging
|
||||
#!asynSetTraceIOMask "$(PORT1)_In",0,4
|
||||
#!asynSetTraceMask "$(PORT1)_In",0,9
|
||||
#!asynSetTraceIOMask "$(PORT1)_Out",0,4
|
||||
#!asynSetTraceMask "$(PORT1)_Out",0,9
|
||||
#!asynSetTraceInfoMask "$(PORT1)_Out",0,15
|
||||
|
||||
# Asyn records for debugging
|
||||
#!dbLoadRecords("$(ASYN)/db/asynRecord.db","P=IOC:,R=asyn:c1ip,PORT=$(PORT1)_IP,ADDR=0,OMAX=256,IMAX=256")
|
||||
#!dbLoadRecords("$(ASYN)/db/asynRecord.db","P=IOC:,R=asyn:c1in,PORT=$(PORT1)_In,ADDR=0,OMAX=256,IMAX=256")
|
||||
#!dbLoadRecords("$(ASYN)/db/asynRecord.db","P=IOC:,R=asyn:c1out,PORT=$(PORT1)_Out,ADDR=0,OMAX=256,IMAX=256")
|
||||
#!dbLoadRecords("$(ASYN)/db/asynRecord.db","P=IOC:,R=asyn:c1,PORT=$(PORT1),ADDR=0,OMAX=256,IMAX=256")
|
||||
|
||||
# Load the motor records
|
||||
dbLoadTemplate("templates/motor.substitutions.ANF2")
|
||||
|
||||
# AMCI ANF2 stepper controller driver support
|
||||
#
|
||||
# ANF2CreateController(
|
||||
# portName, The name of the asyn port that will be created by this driver
|
||||
# ANF2InPortName, The name of the In drvAsynIPPPort to read from the ANF2 controller
|
||||
# ANF2OutPortName, The name of the Out drvAsynIPPPort to write to the ANF2 controller
|
||||
# numAxes) The number of axes in the stack (max=12)
|
||||
#
|
||||
# ANF2CreateAxis(
|
||||
# ANF2Name, The controller's asyn port
|
||||
# axis, The axis to be configured (zero-based numbering)
|
||||
# hexConfig, The desired hex configuration (see manual & AMCI Net Configurator for details)
|
||||
# baseSpeed, The base speed (steps/second; min=1, max=1,000,000)
|
||||
# homingTimeout) The homing timeout (integer number of seconds; min=0, max=300)
|
||||
#
|
||||
# Note: The base speed can't be changed using the VBAS field of the motor record, but the driver
|
||||
# does correct the acceleration sent by the motor record to give the desired acceleration time.
|
||||
|
||||
# Controller 1 (One ANF2E, Five ANF2's)
|
||||
ANF2CreateController("$(PORT1)", "$(PORT1)_In", "$(PORT1)_Out", 12)
|
||||
# Axes for Controller 1
|
||||
ANF2CreateAxis("$(PORT1)", 0, "0x86280000", 100, 0)
|
||||
ANF2CreateAxis("$(PORT1)", 1, "0x86000000", 100, 0)
|
||||
ANF2CreateAxis("$(PORT1)", 2, "0x84000000", 100, 0)
|
||||
ANF2CreateAxis("$(PORT1)", 3, "0x84000000", 100, 0)
|
||||
ANF2CreateAxis("$(PORT1)", 4, "0x84000000", 100, 0)
|
||||
ANF2CreateAxis("$(PORT1)", 5, "0x84000000", 100, 0)
|
||||
ANF2CreateAxis("$(PORT1)", 6, "0x84000000", 100, 0)
|
||||
ANF2CreateAxis("$(PORT1)", 7, "0x84000000", 100, 0)
|
||||
ANF2CreateAxis("$(PORT1)", 8, "0x84000000", 100, 0)
|
||||
ANF2CreateAxis("$(PORT1)", 9, "0x84000000", 100, 0)
|
||||
ANF2CreateAxis("$(PORT1)", 10, "0x84000000", 100, 0)
|
||||
ANF2CreateAxis("$(PORT1)", 11, "0x84000000", 100, 0)
|
||||
|
||||
# Controller 2 (One ANF1E, Five ANF1's)
|
||||
ANF2CreateController("$(PORT2)", "$(PORT2)_In", "$(PORT2)_Out", 6)
|
||||
# Axes for Controller 2
|
||||
ANF2CreateAxis("$(PORT2)", 0, "0x84000000", 100, 0)
|
||||
ANF2CreateAxis("$(PORT2)", 1, "0x84000000", 100, 0)
|
||||
ANF2CreateAxis("$(PORT2)", 2, "0x84000000", 100, 0)
|
||||
ANF2CreateAxis("$(PORT2)", 3, "0x84000000", 100, 0)
|
||||
ANF2CreateAxis("$(PORT2)", 4, "0x84000000", 100, 0)
|
||||
ANF2CreateAxis("$(PORT2)", 5, "0x84000000", 100, 0)
|
||||
|
||||
# NOTE: the poller needs to be started after iocInit
|
||||
|
||||
|
||||
|
||||
##########
|
||||
# iocInit
|
||||
##########
|
||||
|
||||
|
||||
|
||||
# ANF2StartPoller(
|
||||
# portName, The controller's asyn port
|
||||
# movingPollPeriod, The time in ms between polls when any axis is moving
|
||||
# idlePollPeriod) The time in ms between polls when no axis is moving
|
||||
#
|
||||
ANF2StartPoller("$(PORT1)", 200, 1000)
|
||||
ANF2StartPoller("$(PORT2)", 200, 1000)
|
||||
@@ -1,44 +0,0 @@
|
||||
### motor.cmd.SMChydra
|
||||
#
|
||||
# This file is designed to be sourced:
|
||||
# * after the communication port has been configured
|
||||
# * before iocInit
|
||||
#
|
||||
# Example ethernet port configuration:
|
||||
# drvAsynIPPortConfigure("hydraEth","192.168.1.17:400", 0, 0, 0)
|
||||
#
|
||||
|
||||
# Ethernet
|
||||
HydraPort = "hydraEth"
|
||||
# Serial
|
||||
#!HydraPort = "serial5"
|
||||
|
||||
# Show communication
|
||||
#asynSetTraceMask(HydraPort, 0, 3)
|
||||
# Only show errors
|
||||
asynSetTraceMask(HydraPort, 0, 1)
|
||||
# Leave ascii selected so traces can be turned on with a single click
|
||||
asynSetTraceIOMask(HydraPort, 0, 1)
|
||||
|
||||
# Set end-of-string terminators
|
||||
asynOctetSetInputEos(HydraPort,0,"\r\n")
|
||||
asynOctetSetOutputEos(HydraPort,0,"\r\n")
|
||||
|
||||
dbLoadTemplate("motor.substitutions.SMChydra")
|
||||
|
||||
# SMChydraCreateController(
|
||||
# port name,
|
||||
# asyn port name,
|
||||
# num axes,
|
||||
# moving poll period (ms),
|
||||
# idle poll period (ms) )
|
||||
SMChydraCreateController("Hydra1", HydraPort, 2, 100, 500)
|
||||
# Use the following line to disable idle polling
|
||||
#!SMChydraCreateController("Hydra1", HydraPort, 2, 100, 0)
|
||||
|
||||
# This sleep is useful when asyn traces are enabled
|
||||
#!epicsThreadSleep(3.0)
|
||||
|
||||
# Include an asyn record for each motor to make it easy to enable diagnostic messages
|
||||
dbLoadRecords("$(ASYN)/db/asynRecord.db","P=IOC:,R=hydraAsyn1,PORT=Hydra1,ADDR=0,OMAX=256,IMAX=256")
|
||||
dbLoadRecords("$(ASYN)/db/asynRecord.db","P=IOC:,R=hydraAsyn2,PORT=Hydra1,ADDR=1,OMAX=256,IMAX=256")
|
||||
@@ -1,11 +0,0 @@
|
||||
dbLoadTemplate("motor.substitutions.hxp")
|
||||
|
||||
HXPCreateController("HXP1", "192.168.1.42", 5001, 200, 1000)
|
||||
# A shorter, idle-poll period is desirable if the motors
|
||||
# are moved using HXP_moveAll.adl, since this period determines
|
||||
# how long it takes for the motor records to see that an
|
||||
# external move has been initiated.
|
||||
#!HXPCreateController("HXP1", "192.168.1.42", 5001, 200, 200)
|
||||
|
||||
#asynSetTraceIOMask("HXP1", 0, 2)
|
||||
#asynSetTraceMask("HXP1", 0, 255)
|
||||
@@ -1,30 +0,0 @@
|
||||
dbLoadTemplate("motor.substitutions.mmc200")
|
||||
|
||||
### RS-232 with RS-485 adpater (serial6)
|
||||
#!PORT="serial6"
|
||||
### RS-485 (rs485p1)
|
||||
PORT="rs485p1"
|
||||
|
||||
#!asynOctetSetInputEos(PORT,0,"\n\r")
|
||||
#!asynOctetSetOutputEos(PORT,0,"\r")
|
||||
|
||||
# Turn on asyn traces
|
||||
#!asynSetTraceIOMask(PORT,0,0x1)
|
||||
#!asynSetTraceMask(PORT,0,0x3)
|
||||
|
||||
###
|
||||
# MMC200CreateController(
|
||||
# motor port (will be created),
|
||||
# asyn port (must already exist),
|
||||
# num axes,
|
||||
# moving poll period (ms),
|
||||
# idle poll period (ms),
|
||||
# ignore limit flag)
|
||||
###
|
||||
#!MMC200CreateController("mmc200_1", PORT, 2, 500, 2000, 1)
|
||||
MMC200CreateController("mmc200_1", PORT, 2, 500, 0, 1)
|
||||
|
||||
# Turn off asyn traces
|
||||
#!asynSetTraceIOMask(PORT,0,0x0)
|
||||
#!asynSetTraceMask(PORT,0,0x1)
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
file "$(MOTOR)/db/basic_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, DTYP, C, S, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
|
||||
{IOC:, 1, "m$(N)", "MM4000", 0, 0, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
{IOC:, 2, "m$(N)", "MM4000", 0, 1, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
{IOC:, 3, "m$(N)", "MM4000", 0, 2, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
{IOC:, 4, "m$(N)", "MM4000", 0, 3, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
file "$(TOP)/db/basic_asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
|
||||
{IOC:, 1, "m$(N)", "asynMotor", Agilis1, 0, "Horizontal", mm, Pos, .5, 0.1, .25, 0, 1, .2, .0001, 4, 28, -1, ""}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
file "$(TOP)/db/basic_asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
|
||||
{IOC:, 1, "m$(N)", "asynMotor", Agilis1, 0, "Horizontal", mm, Pos, .5, 0.1, .25, 0, 1, .2, .001, 3, 3, -3, ""}
|
||||
{IOC:, 2, "m$(N)", "asynMotor", Agilis1, 1, "Vertical", mm, Pos, .5, 0.1, .25, 0, 1, .2, .001, 3, 3, -3, ""}
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
file "$(MOTOR)/motorApp/Db/asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT, RTRY}
|
||||
|
||||
{IOC:, "m1", "asynMotor", "ANF2_C1", 0, "ANF2 C1 M1", steps, Pos, 100, 0, .2, 0, 50, .2, 1, 5, 1e9, -1e9, ""}
|
||||
{IOC:, "m2", "asynMotor", "ANF2_C1", 1, "ANF2 C1 M2", steps, Pos, 100, 0, .2, 0, 50, .2, 1, 5, 1e9, -1e9, ""}
|
||||
{IOC:, "m3", "asynMotor", "ANF2_C1", 2, "ANF2 C1 M3", steps, Pos, 100, 0, .2, 0, 50, .2, 1, 5, 1e9, -1e9, ""}
|
||||
{IOC:, "m4", "asynMotor", "ANF2_C1", 3, "ANF2 C1 M4", steps, Pos, 100, 0, .2, 0, 50, .2, 1, 5, 1e9, -1e9, ""}
|
||||
{IOC:, "m5", "asynMotor", "ANF2_C1", 4, "ANF2 C1 M5", steps, Pos, 100, 0, .2, 0, 50, .2, 1, 5, 1e9, -1e9, ""}
|
||||
{IOC:, "m6", "asynMotor", "ANF2_C1", 5, "ANF2 C1 M6", steps, Pos, 100, 0, .2, 0, 50, .2, 1, 5, 1e9, -1e9, ""}
|
||||
{IOC:, "m7", "asynMotor", "ANF2_C1", 6, "ANF2 C1 M7", steps, Pos, 100, 0, .2, 0, 50, .2, 1, 5, 1e9, -1e9, ""}
|
||||
{IOC:, "m8", "asynMotor", "ANF2_C1", 7, "ANF2 C1 M8", steps, Pos, 100, 0, .2, 0, 50, .2, 1, 5, 1e9, -1e9, ""}
|
||||
{IOC:, "m9", "asynMotor", "ANF2_C1", 8, "ANF2 C1 M9", steps, Pos, 100, 0, .2, 0, 50, .2, 1, 5, 1e9, -1e9, ""}
|
||||
{IOC:, "m10", "asynMotor", "ANF2_C1", 9, "ANF2 C1 M10", steps, Pos, 100, 0, .2, 0, 50, .2, 1, 5, 1e9, -1e9, ""}
|
||||
{IOC:, "m11", "asynMotor", "ANF2_C1", 10, "ANF2 C1 M11", steps, Pos, 100, 0, .2, 0, 50, .2, 1, 5, 1e9, -1e9, ""}
|
||||
{IOC:, "m12", "asynMotor", "ANF2_C1", 11, "ANF2 C1 M12", steps, Pos, 100, 0, .2, 0, 50, .2, 1, 5, 1e9, -1e9, ""}
|
||||
|
||||
{IOC:, "m13", "asynMotor", "ANF2_C2", 0, "ANF2 C2 M1", steps, Pos, 100, 0, .2, 0, 50, .2, 1, 5, 1e9, -1e9, ""}
|
||||
{IOC:, "m14", "asynMotor", "ANF2_C2", 1, "ANF2 C2 M2", steps, Pos, 100, 0, .2, 0, 50, .2, 1, 5, 1e9, -1e9, ""}
|
||||
{IOC:, "m15", "asynMotor", "ANF2_C2", 2, "ANF2 C2 M3", steps, Pos, 100, 0, .2, 0, 50, .2, 1, 5, 1e9, -1e9, ""}
|
||||
{IOC:, "m16", "asynMotor", "ANF2_C2", 3, "ANF2 C2 M4", steps, Pos, 100, 0, .2, 0, 50, .2, 1, 5, 1e9, -1e9, ""}
|
||||
{IOC:, "m17", "asynMotor", "ANF2_C2", 4, "ANF2 C2 M5", steps, Pos, 100, 0, .2, 0, 50, .2, 1, 5, 1e9, -1e9, ""}
|
||||
{IOC:, "m18", "asynMotor", "ANF2_C2", 5, "ANF2 C2 M6", steps, Pos, 100, 0, .2, 0, 50, .2, 1, 5, 1e9, -1e9, ""}
|
||||
|
||||
}
|
||||
|
||||
file "$(MOTOR)/motorApp/Db/ANF2Aux.template"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, ADDR}
|
||||
|
||||
{IOC:, m1:, "ANF2_C1", 0}
|
||||
{IOC:, m2:, "ANF2_C1", 1}
|
||||
{IOC:, m3:, "ANF2_C1", 2}
|
||||
{IOC:, m4:, "ANF2_C1", 3}
|
||||
{IOC:, m5:, "ANF2_C1", 4}
|
||||
{IOC:, m6:, "ANF2_C1", 5}
|
||||
{IOC:, m7:, "ANF2_C1", 6}
|
||||
{IOC:, m8:, "ANF2_C1", 7}
|
||||
{IOC:, m9:, "ANF2_C1", 8}
|
||||
{IOC:, m10:, "ANF2_C1", 9}
|
||||
{IOC:, m11:, "ANF2_C1", 10}
|
||||
{IOC:, m12:, "ANF2_C1", 11}
|
||||
|
||||
{IOC:, m13:, "ANF2_C2", 0}
|
||||
{IOC:, m14:, "ANF2_C2", 1}
|
||||
{IOC:, m15:, "ANF2_C2", 2}
|
||||
{IOC:, m16:, "ANF2_C2", 3}
|
||||
{IOC:, m17:, "ANF2_C2", 4}
|
||||
{IOC:, m18:, "ANF2_C2", 5}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
file "$(MOTOR)/motorApp/Db/basic_asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT, RTRY}
|
||||
|
||||
{IOC:, 1, "m$(N)", "asynMotor", "ANG1_1_1", 0, "AMCI ANG1 1", steps, Pos, 100, 0, .2, 0, 50, .2, 1, 5, 1e9, -1e9, ""}
|
||||
{IOC:, 2, "m$(N)", "asynMotor", "ANG1_1_2", 0, "AMCI ANG1 2", steps, Pos, 100, 0, .2, 0, 50, .2, 1, 5, 1e9, -1e9, ""}
|
||||
}
|
||||
|
||||
file "$(MOTOR)/motorApp/Db/ANG1Aux.template"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, ADDR}
|
||||
{IOC:, m1:, ANG1_1_1, 0}
|
||||
{IOC:, m2:, ANG1_1_2, 0}
|
||||
}
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
file "$(TOP)/db/basic_asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
|
||||
# Newport NSA12 stage, 6.35 microns/full step, 128 micro-steps/s
|
||||
{IOC:, 1, "m$(N)", "asynMotor", CONEX1, 0, "X", mm, Pos, 1., 0.1, .25, 0, 1, .2, 4.9609375e-5, 4, 28, -1, ""}
|
||||
{IOC:, 2, "m$(N)", "asynMotor", CONEX2, 0, "Y", mm, Pos, 1., 0.1, .25, 0, 1, .2, 4.9609375e-5, 4, 28, -1, ""}
|
||||
{IOC:, 3, "m$(N)", "asynMotor", CONEX3, 0, "Z", mm, Pos, 1., 0.1, .25, 0, 1, .2, 4.9609375e-5, 4, 28, -1, ""}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
file "$(TOP)/db/basic_asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT, RTRY}
|
||||
{IOC:, 1, "m$(N)", "asynMotor", "SMC100_1", 0, "GTS30V", mm, Pos, 1, 0, .2, 0, .5, .2, 0.00001, 6, 25, -5, ""}
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
file "$(TOP)/db/basic_asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VMAX, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
|
||||
{IOC:, m1, "asynMotor", Hydra1, 0, "m1", degrees, Pos, 15., 3., .05, .5, 0, 1.0, 2, 0.01, 2, 175, -175, ""}
|
||||
{IOC:, m2, "asynMotor", Hydra1, 1, "m2", degrees, Pos, 15., 3., .05, .5, 0, 1.0, 2, 0.01, 2, 175, -175, ""}
|
||||
}
|
||||
|
||||
@@ -1,245 +0,0 @@
|
||||
file "$(TOP)/db/basic_asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
|
||||
{IOC:, 1, "m$(N)", "asynMotor", ACR1, 0, "motor $(N)", mm, Pos, .05, .01, .5, 0, 1, .2, 1.25e-7, 5, 200, -2, ""}
|
||||
{IOC:, 2, "m$(N)", "asynMotor", ACR2, 0, "motor $(N)", mm, Pos, .05, .01, .5, 0, 1, .2, 1.25e-7, 5, 200, -2, ""}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/ACRAux.template"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, ADDR}
|
||||
{IOC:, m1:, ACR1, 0}
|
||||
{IOC:, m2:, ACR2, 0}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/ACRAuxLi.template"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, SCAN}
|
||||
{IOC:ACR1:, li, ACR1, "I/O Intr"}
|
||||
{IOC:ACR2:, li, ACR2, "I/O Intr"}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/ACRAuxRead.template"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, SCAN}
|
||||
{IOC:ACR1:, Read, ACR1, "1 second"}
|
||||
{IOC:ACR2:, Read, ACR2, "1 second"}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/ACRAuxBi.template"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, MASK, SCAN}
|
||||
{IOC:ACR1:, bi0, ACR1, 0x00000001, "I/O Intr"}
|
||||
{IOC:ACR1:, bi1, ACR1, 0x00000002, "I/O Intr"}
|
||||
{IOC:ACR1:, bi2, ACR1, 0x00000004, "I/O Intr"}
|
||||
{IOC:ACR1:, bi3, ACR1, 0x00000008, "I/O Intr"}
|
||||
{IOC:ACR1:, bi4, ACR1, 0x00000010, "I/O Intr"}
|
||||
{IOC:ACR1:, bi5, ACR1, 0x00000020, "I/O Intr"}
|
||||
{IOC:ACR1:, bi6, ACR1, 0x00000040, "I/O Intr"}
|
||||
{IOC:ACR1:, bi7, ACR1, 0x00000080, "I/O Intr"}
|
||||
{IOC:ACR1:, bi8, ACR1, 0x00000100, "I/O Intr"}
|
||||
{IOC:ACR1:, bi9, ACR1, 0x00000200, "I/O Intr"}
|
||||
{IOC:ACR1:, bi10, ACR1, 0x00000400, "I/O Intr"}
|
||||
{IOC:ACR1:, bi11, ACR1, 0x00000800, "I/O Intr"}
|
||||
{IOC:ACR1:, bi12, ACR1, 0x00001000, "I/O Intr"}
|
||||
{IOC:ACR1:, bi13, ACR1, 0x00002000, "I/O Intr"}
|
||||
{IOC:ACR1:, bi14, ACR1, 0x00004000, "I/O Intr"}
|
||||
{IOC:ACR1:, bi15, ACR1, 0x00008000, "I/O Intr"}
|
||||
{IOC:ACR1:, bi16, ACR1, 0x00010000, "I/O Intr"}
|
||||
{IOC:ACR1:, bi17, ACR1, 0x00020000, "I/O Intr"}
|
||||
{IOC:ACR1:, bi18, ACR1, 0x00040000, "I/O Intr"}
|
||||
{IOC:ACR1:, bi19, ACR1, 0x00080000, "I/O Intr"}
|
||||
{IOC:ACR1:, bi20, ACR1, 0x00100000, "I/O Intr"}
|
||||
{IOC:ACR1:, bi21, ACR1, 0x00200000, "I/O Intr"}
|
||||
{IOC:ACR1:, bi22, ACR1, 0x00400000, "I/O Intr"}
|
||||
{IOC:ACR1:, bi23, ACR1, 0x00800000, "I/O Intr"}
|
||||
{IOC:ACR1:, bi24, ACR1, 0x01000000, "I/O Intr"}
|
||||
{IOC:ACR1:, bi25, ACR1, 0x02000000, "I/O Intr"}
|
||||
{IOC:ACR1:, bi26, ACR1, 0x04000000, "I/O Intr"}
|
||||
{IOC:ACR1:, bi27, ACR1, 0x08000000, "I/O Intr"}
|
||||
{IOC:ACR1:, bi28, ACR1, 0x10000000, "I/O Intr"}
|
||||
{IOC:ACR1:, bi29, ACR1, 0x20000000, "I/O Intr"}
|
||||
{IOC:ACR1:, bi30, ACR1, 0x40000000, "I/O Intr"}
|
||||
{IOC:ACR1:, bi31, ACR1, 0x80000000, "I/O Intr"}
|
||||
#
|
||||
{IOC:ACR2:, bi0, ACR2, 0x00000001, "I/O Intr"}
|
||||
{IOC:ACR2:, bi1, ACR2, 0x00000002, "I/O Intr"}
|
||||
{IOC:ACR2:, bi2, ACR2, 0x00000004, "I/O Intr"}
|
||||
{IOC:ACR2:, bi3, ACR2, 0x00000008, "I/O Intr"}
|
||||
{IOC:ACR2:, bi4, ACR2, 0x00000010, "I/O Intr"}
|
||||
{IOC:ACR2:, bi5, ACR2, 0x00000020, "I/O Intr"}
|
||||
{IOC:ACR2:, bi6, ACR2, 0x00000040, "I/O Intr"}
|
||||
{IOC:ACR2:, bi7, ACR2, 0x00000080, "I/O Intr"}
|
||||
{IOC:ACR2:, bi8, ACR2, 0x00000100, "I/O Intr"}
|
||||
{IOC:ACR2:, bi9, ACR2, 0x00000200, "I/O Intr"}
|
||||
{IOC:ACR2:, bi10, ACR2, 0x00000400, "I/O Intr"}
|
||||
{IOC:ACR2:, bi11, ACR2, 0x00000800, "I/O Intr"}
|
||||
{IOC:ACR2:, bi12, ACR2, 0x00001000, "I/O Intr"}
|
||||
{IOC:ACR2:, bi13, ACR2, 0x00002000, "I/O Intr"}
|
||||
{IOC:ACR2:, bi14, ACR2, 0x00004000, "I/O Intr"}
|
||||
{IOC:ACR2:, bi15, ACR2, 0x00008000, "I/O Intr"}
|
||||
{IOC:ACR2:, bi16, ACR2, 0x00010000, "I/O Intr"}
|
||||
{IOC:ACR2:, bi17, ACR2, 0x00020000, "I/O Intr"}
|
||||
{IOC:ACR2:, bi18, ACR2, 0x00040000, "I/O Intr"}
|
||||
{IOC:ACR2:, bi19, ACR2, 0x00080000, "I/O Intr"}
|
||||
{IOC:ACR2:, bi20, ACR2, 0x00100000, "I/O Intr"}
|
||||
{IOC:ACR2:, bi21, ACR2, 0x00200000, "I/O Intr"}
|
||||
{IOC:ACR2:, bi22, ACR2, 0x00400000, "I/O Intr"}
|
||||
{IOC:ACR2:, bi23, ACR2, 0x00800000, "I/O Intr"}
|
||||
{IOC:ACR2:, bi24, ACR2, 0x01000000, "I/O Intr"}
|
||||
{IOC:ACR2:, bi25, ACR2, 0x02000000, "I/O Intr"}
|
||||
{IOC:ACR2:, bi26, ACR2, 0x04000000, "I/O Intr"}
|
||||
{IOC:ACR2:, bi27, ACR2, 0x08000000, "I/O Intr"}
|
||||
{IOC:ACR2:, bi28, ACR2, 0x10000000, "I/O Intr"}
|
||||
{IOC:ACR2:, bi29, ACR2, 0x20000000, "I/O Intr"}
|
||||
{IOC:ACR2:, bi30, ACR2, 0x40000000, "I/O Intr"}
|
||||
{IOC:ACR2:, bi31, ACR2, 0x80000000, "I/O Intr"}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/ACRAuxBo.template"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, MASK}
|
||||
{IOC:ACR1:, bo0, ACR1, 0x00000001}
|
||||
{IOC:ACR1:, bo1, ACR1, 0x00000002}
|
||||
{IOC:ACR1:, bo2, ACR1, 0x00000004}
|
||||
{IOC:ACR1:, bo3, ACR1, 0x00000008}
|
||||
{IOC:ACR1:, bo4, ACR1, 0x00000010}
|
||||
{IOC:ACR1:, bo5, ACR1, 0x00000020}
|
||||
{IOC:ACR1:, bo6, ACR1, 0x00000040}
|
||||
{IOC:ACR1:, bo7, ACR1, 0x00000080}
|
||||
{IOC:ACR1:, bo8, ACR1, 0x00000100}
|
||||
{IOC:ACR1:, bo9, ACR1, 0x00000200}
|
||||
{IOC:ACR1:, bo10, ACR1, 0x00000400}
|
||||
{IOC:ACR1:, bo11, ACR1, 0x00000800}
|
||||
{IOC:ACR1:, bo12, ACR1, 0x00001000}
|
||||
{IOC:ACR1:, bo13, ACR1, 0x00002000}
|
||||
{IOC:ACR1:, bo14, ACR1, 0x00004000}
|
||||
{IOC:ACR1:, bo15, ACR1, 0x00008000}
|
||||
{IOC:ACR1:, bo16, ACR1, 0x00010000}
|
||||
{IOC:ACR1:, bo17, ACR1, 0x00020000}
|
||||
{IOC:ACR1:, bo18, ACR1, 0x00040000}
|
||||
{IOC:ACR1:, bo19, ACR1, 0x00080000}
|
||||
{IOC:ACR1:, bo20, ACR1, 0x00100000}
|
||||
{IOC:ACR1:, bo21, ACR1, 0x00200000}
|
||||
{IOC:ACR1:, bo22, ACR1, 0x00400000}
|
||||
{IOC:ACR1:, bo23, ACR1, 0x00800000}
|
||||
{IOC:ACR1:, bo24, ACR1, 0x01000000}
|
||||
{IOC:ACR1:, bo25, ACR1, 0x02000000}
|
||||
{IOC:ACR1:, bo26, ACR1, 0x04000000}
|
||||
{IOC:ACR1:, bo27, ACR1, 0x08000000}
|
||||
{IOC:ACR1:, bo28, ACR1, 0x10000000}
|
||||
{IOC:ACR1:, bo29, ACR1, 0x20000000}
|
||||
{IOC:ACR1:, bo30, ACR1, 0x40000000}
|
||||
{IOC:ACR1:, bo31, ACR1, 0x80000000}
|
||||
#
|
||||
{IOC:ACR2:, bo0, ACR2, 0x00000001}
|
||||
{IOC:ACR2:, bo1, ACR2, 0x00000002}
|
||||
{IOC:ACR2:, bo2, ACR2, 0x00000004}
|
||||
{IOC:ACR2:, bo3, ACR2, 0x00000008}
|
||||
{IOC:ACR2:, bo4, ACR2, 0x00000010}
|
||||
{IOC:ACR2:, bo5, ACR2, 0x00000020}
|
||||
{IOC:ACR2:, bo6, ACR2, 0x00000040}
|
||||
{IOC:ACR2:, bo7, ACR2, 0x00000080}
|
||||
{IOC:ACR2:, bo8, ACR2, 0x00000100}
|
||||
{IOC:ACR2:, bo9, ACR2, 0x00000200}
|
||||
{IOC:ACR2:, bo10, ACR2, 0x00000400}
|
||||
{IOC:ACR2:, bo11, ACR2, 0x00000800}
|
||||
{IOC:ACR2:, bo12, ACR2, 0x00001000}
|
||||
{IOC:ACR2:, bo13, ACR2, 0x00002000}
|
||||
{IOC:ACR2:, bo14, ACR2, 0x00004000}
|
||||
{IOC:ACR2:, bo15, ACR2, 0x00008000}
|
||||
{IOC:ACR2:, bo16, ACR2, 0x00010000}
|
||||
{IOC:ACR2:, bo17, ACR2, 0x00020000}
|
||||
{IOC:ACR2:, bo18, ACR2, 0x00040000}
|
||||
{IOC:ACR2:, bo19, ACR2, 0x00080000}
|
||||
{IOC:ACR2:, bo20, ACR2, 0x00100000}
|
||||
{IOC:ACR2:, bo21, ACR2, 0x00200000}
|
||||
{IOC:ACR2:, bo22, ACR2, 0x00400000}
|
||||
{IOC:ACR2:, bo23, ACR2, 0x00800000}
|
||||
{IOC:ACR2:, bo24, ACR2, 0x01000000}
|
||||
{IOC:ACR2:, bo25, ACR2, 0x02000000}
|
||||
{IOC:ACR2:, bo26, ACR2, 0x04000000}
|
||||
{IOC:ACR2:, bo27, ACR2, 0x08000000}
|
||||
{IOC:ACR2:, bo28, ACR2, 0x10000000}
|
||||
{IOC:ACR2:, bo29, ACR2, 0x20000000}
|
||||
{IOC:ACR2:, bo30, ACR2, 0x40000000}
|
||||
{IOC:ACR2:, bo31, ACR2, 0x80000000}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/ACRAuxBoRBV.template"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, MASK, SCAN}
|
||||
{IOC:ACR1:, boRBV0, ACR1, 0x00000001, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV1, ACR1, 0x00000002, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV2, ACR1, 0x00000004, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV3, ACR1, 0x00000008, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV4, ACR1, 0x00000010, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV5, ACR1, 0x00000020, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV6, ACR1, 0x00000040, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV7, ACR1, 0x00000080, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV8, ACR1, 0x00000100, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV9, ACR1, 0x00000200, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV10, ACR1, 0x00000400, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV11, ACR1, 0x00000800, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV12, ACR1, 0x00001000, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV13, ACR1, 0x00002000, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV14, ACR1, 0x00004000, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV15, ACR1, 0x00008000, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV16, ACR1, 0x00010000, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV17, ACR1, 0x00020000, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV18, ACR1, 0x00040000, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV19, ACR1, 0x00080000, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV20, ACR1, 0x00100000, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV21, ACR1, 0x00200000, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV22, ACR1, 0x00400000, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV23, ACR1, 0x00800000, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV24, ACR1, 0x01000000, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV25, ACR1, 0x02000000, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV26, ACR1, 0x04000000, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV27, ACR1, 0x08000000, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV28, ACR1, 0x10000000, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV29, ACR1, 0x20000000, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV30, ACR1, 0x40000000, "I/O Intr"}
|
||||
{IOC:ACR1:, boRBV31, ACR1, 0x80000000, "I/O Intr"}
|
||||
#
|
||||
{IOC:ACR2:, boRBV0, ACR2, 0x00000001, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV1, ACR2, 0x00000002, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV2, ACR2, 0x00000004, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV3, ACR2, 0x00000008, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV4, ACR2, 0x00000010, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV5, ACR2, 0x00000020, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV6, ACR2, 0x00000040, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV7, ACR2, 0x00000080, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV8, ACR2, 0x00000100, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV9, ACR2, 0x00000200, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV10, ACR2, 0x00000400, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV11, ACR2, 0x00000800, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV12, ACR2, 0x00001000, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV13, ACR2, 0x00002000, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV14, ACR2, 0x00004000, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV15, ACR2, 0x00008000, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV16, ACR2, 0x00010000, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV17, ACR2, 0x00020000, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV18, ACR2, 0x00040000, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV19, ACR2, 0x00080000, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV20, ACR2, 0x00100000, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV21, ACR2, 0x00200000, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV22, ACR2, 0x00400000, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV23, ACR2, 0x00800000, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV24, ACR2, 0x01000000, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV25, ACR2, 0x02000000, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV26, ACR2, 0x04000000, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV27, ACR2, 0x08000000, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV28, ACR2, 0x10000000, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV29, ACR2, 0x20000000, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV30, ACR2, 0x40000000, "I/O Intr"}
|
||||
{IOC:ACR2:, boRBV31, ACR2, 0x80000000, "I/O Intr"}
|
||||
}
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
file "$(MOTOR)/motorApp/Db/asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VMAX, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT, RTRY}
|
||||
{xxx:hxp:c0:, m1, "asynMotor", HXP1, 0, "X", mm, Pos, 15., 3., .05, .5, 0, 1.0, 2, 0.00001, 5, 0, 0, "", 0}
|
||||
{xxx:hxp:c0:, m2, "asynMotor", HXP1, 1, "Y", mm, Pos, 15., 3., .05, .5, 0, 1.0, 2, 0.00001, 5, 0, 0, "", 0}
|
||||
{xxx:hxp:c0:, m3, "asynMotor", HXP1, 2, "Z", mm, Pos, 15., 3., .05, .5, 0, 1.0, 2, 0.00001, 5, 0, 0, "", 0}
|
||||
{xxx:hxp:c0:, m4, "asynMotor", HXP1, 3, "U", degrees, Pos, 15., 3., .05, .5, 0, 1.0, 2, 0.00001, 5, 0, 0, "", 0}
|
||||
{xxx:hxp:c0:, m5, "asynMotor", HXP1, 4, "V", degrees, Pos, 15., 3., .05, .5, 0, 1.0, 2, 0.00001, 5, 0, 0, "", 0}
|
||||
{xxx:hxp:c0:, m6, "asynMotor", HXP1, 5, "W", degrees, Pos, 15., 3., .05, .5, 0, 1.0, 2, 0.00001, 5, 0, 0, "", 0}
|
||||
}
|
||||
|
||||
# Extra HXP controller support (moveAll, status and error PVs)
|
||||
file "$(MOTOR)/motorApp/Db/HXP_extra.db"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, CHAN}
|
||||
{xxx:, hxp:c0:, HXP1, 0}
|
||||
}
|
||||
|
||||
# HXP coordinate-system support (reading and redefining)
|
||||
file "$(MOTOR)/motorApp/Db/HXP_coords.db"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, CHAN, M1, M2, M3, M4, M5, M6}
|
||||
{xxx:, hxp:c0:, HXP1, 0, m1, m2, m3, m4, m5, m6}
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
# ImsMDrivePlus asyn model 3 substitutions file
|
||||
|
||||
# SREV (not shown) is the number of steps per revolution is 200 by
|
||||
# default
|
||||
#
|
||||
# There are three pivot points to which the six motors are attached.
|
||||
# Three provide vertical motion: M0Y, M1Y, and M2Y. One provides
|
||||
# horizontal motion in the Z direction (along beamline): M2Z. Two
|
||||
# provide horizontal motion in the X direction (perpendicular to
|
||||
# beamline): M0X, M2X.
|
||||
#
|
||||
|
||||
#
|
||||
|
||||
# For SREV:
|
||||
# 2048 = internal encoder (EQ)
|
||||
# 250 = external encoder, NUMERIK-JENA
|
||||
# 200 = external encoder, Renishaw
|
||||
# 51200 = no encoder
|
||||
|
||||
# CXI DG4 Support Motion Stand (DG4) Substitution file
|
||||
|
||||
|
||||
file "$(MOTOR)/db/basic_asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, DTYP, PORT, DESC, ADDR, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, DHLM, DLLM, MRES, PREC, INIT}
|
||||
{IMS:, 1, 1, "asynMotor", IMS1, "MDrive23", 0, mm, Pos, 3.0, 0.017, 2.0, 0, 0.017, 2.0, 100, -100, 0.000083, 4, ""}
|
||||
}
|
||||
|
||||
file "$(MOTOR)/db/IMS_extra.db"
|
||||
{
|
||||
pattern
|
||||
{DEV, AREA, LOC, PORT, ADDR, TIMEOUT}
|
||||
{IMS, IOC, 1, IMS1, 0, 1}
|
||||
}
|
||||
# field(DESC,"Y DG4 DS North Motor") # same
|
||||
# field(DTYP,"ImsMDrivePlus") # same
|
||||
# field(OUT, "#C0 S0 @") # same
|
||||
# field(DIR, "Pos") # same
|
||||
# field(SREV,"2048") # SREV [steps/rev], MRES = UREV/SREV
|
||||
# field(UREV,"0.017") # UREV [egu/rev], MRES = UREV/SREV
|
||||
# field(UEIP,"No")
|
||||
# field(S, "10") # no equivalent
|
||||
# field(SMAX,"20") # SMAX[rev/s], VELO = SMAX * UREV
|
||||
# field(SBAS,"1") # VBAS = SBAS * UREV
|
||||
# field(ACCL,"2.0") # same
|
||||
# field(BDST,"0") # same
|
||||
# field(RDBD,"0.0005")
|
||||
# field(RTRY,"1")
|
||||
# field(SBAK,"1") # BVEL = SBAK * UREV
|
||||
# field(BACC,"2.0") # same
|
||||
# field(DLY, "0")
|
||||
# field(PREC,"4") # same
|
||||
# field(EGU, "mm") # same
|
||||
# field(DHLM,"200.0") # same
|
||||
# field(DLLM,"-200.0") # same
|
||||
# field(INIT,"") # same
|
||||
# field(TWV, "1") # same
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
file "$(TOP)/db/basic_asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
|
||||
{IOC:, 1, "m$(N)", "asynMotor", MCB4B1, 0, "Bottom", mm, Pos, 2.0, 0.1, .2, 0, 1, .2, -.001, 3, 16, 0, ""}
|
||||
{IOC:, 2, "m$(N)", "asynMotor", MCB4B1, 1, "Top", mm, Pos, 2.0, 0.1, .2, 0, 1, .2, -.001, 3, 16, 0, ""}
|
||||
{IOC:, 3, "m$(N)", "asynMotor", MCB4B1, 2, "Inboard", mm, Pos, 2.0, 0.1, .2, 0, 1, .2, -.001, 3, 16, 0, ""}
|
||||
{IOC:, 4, "m$(N)", "asynMotor", MCB4B1, 3, "Outboard", mm, Pos, 2.0, 0.1, .2, 0, 1, .2, -.001, 3, 16, 0, ""}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
file "$(MOTOR)/motorApp/Db/asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VMAX, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
|
||||
{IOC:, m1, "asynMotor", mmc200_1, 0, "m1", mm, Pos, 15., 3., .05, .5, 0, 1.0, 2, 2.44140625e-6, 5, 0, 0, ""}
|
||||
{IOC:, m2, "asynMotor", mmc200_1, 1, "m2", mm, Pos, 15., 3., .05, .5, 0, 1.0, 2, 2.44140625e-6, 5, 0, 0, ""}
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
################################################################################
|
||||
# PORT - asynPort created for the Phytron controller
|
||||
# ADDR - Address of the axis - right digit represents the index of the axis
|
||||
# of a I1AM01 module, the remaining digit(s) on the lef represent the
|
||||
# index of the I1AM01 module
|
||||
################################################################################
|
||||
|
||||
file "../../db/Phytron_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VELO, VBAS, VMAX, ACCL, BDST, BVEL, BACC, MRES, ERES, PREC, DHLM, DLLM, INIT}
|
||||
{PHYIOC:, 1, "m$(N)", "asynMotor", phyMotionPort, 11, "motor $(N)", Deg, Pos, 360, 180, 720, .5, 0, 180, .2, 1.8, 0.18, 5, 1440, -1440, ""}
|
||||
{PHYIOC:, 2, "m$(N)", "asynMotor", phyMotionPort, 21, "motor $(N)", Deg, Pos, 360, 180, 720, .5, 0, 180, .2, 1.8, 0.18, 5, 1440, -1440, ""}
|
||||
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# P - MUST MATCH Controller specific name in Phytron_MCM01.db substitution
|
||||
# pattern (below)
|
||||
# PORT - asynPort created for the Phytron controller
|
||||
# ADDR - Address of the axis - right digit represents the index of the axis
|
||||
# of a I1AM01 module, the remaining digit(s) on the lef represent the
|
||||
# index of the I1AM01 module
|
||||
# TIMEOUT - asyn timeout
|
||||
# SCAN - Periodic scan rate of Power stage temperature and Motor temperature
|
||||
# records
|
||||
# INIT - If set to YES, ao records will be initialized with the values defined
|
||||
# in the macros that follow INIT. If set to NO, records will not be
|
||||
# initialized - this option is useful if auto save/restore is used
|
||||
################################################################################
|
||||
file "../../db/Phytron_I1AM01.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, PORT, ADDR, SCAN, TIMEOUT, INIT, HOMING, MODE, POS_OFFSET, NEG_OFFSET, INIT_TIME, POS_TIME, BOOST, SWITCH_TYP, PWR_STAGE, ENC_TYP, ENC_SFI, ENC_DIR, STOP_CURR, RUN_CURR, BOOST_CURR, CURRENT_DELAY, STEP_RES, PS_MON }
|
||||
{PHYIOC, 1, ":m$(N)", phyMotionPort, 11, "1 second", 3, YES, 0, 1, 0, 0, 20, 20, 0, 0, 1, 1, 0, 1 20, 400, 500, 20, 0, 1}
|
||||
{PHYIOC, 2, ":m$(N)", phyMotionPort, 21, "1 second", 3, YES, 0, 1, 0, 0, 20, 20, 0, 0, 1, 1, 0, 1 20, 400, 500, 20, 0, 1}
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# P - Controller specific name
|
||||
# PORT - asynPort created for the Phytron controller
|
||||
# ADDR - Arbitrary value between 0 and 255
|
||||
# TIMEOUT - asyn timeout
|
||||
################################################################################
|
||||
file "../../db/Phytron_MCM01.db"
|
||||
{
|
||||
pattern
|
||||
{P, DTYP, PORT, ADDR, TIMEOUT}
|
||||
{PHYIOC, "asynMotor", phyMotionPort, 0, 10 }
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
file "$(TOP)/db/asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VMAX, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
|
||||
{IOC:, m1, "asynMotor", VMC_MOTOR, 0, "VMCMotor", mm, Pos, 15., 3., .05, .5, 0, 1.0, 2, .025, 5, 0, 0, ""}
|
||||
{IOC:, m2, "asynMotor", SOFT_MOTOR, 0, "SoftMotor", mm, Pos, 15., 3., .05, .5, 0, 1.0, 2, .025, 5, 0, 0, ""}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/ScriptMotorReload.db"
|
||||
{
|
||||
pattern
|
||||
{P, PORT}
|
||||
{IOC:, SOFT_MOTOR}
|
||||
{IOC:, VMC_MOTOR}
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
file "../../db/basic_asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
|
||||
{IOC:, 1, "m$(N)", "asynMotor", motorSim1, 0, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
{IOC:, 2, "m$(N)", "asynMotor", motorSim1, 1, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
{IOC:, 3, "m$(N)", "asynMotor", motorSim1, 2, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
{IOC:, 4, "m$(N)", "asynMotor", motorSim1, 3, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 0.01, 5, 100, -100, ""}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
file "$(MOTOR)/db/basic_asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
|
||||
{MOTR:B034:, 1, 100, "asynMotor", "P0", 0, "channel1", mm, Pos, 1, 0, 0.2, 0, 1, 0.2, 1e-6, 2, 3, -3, ""}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
file "$(MOTOR)/db/basic_asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
|
||||
{IOC:, 1, "m$(N)", "asynMotor", XPS1, 0, "motor $(N)", mm, Pos, .3, .1, .2, 0, 1, .2, 0.000048828, 5, 62.5, 50, ""}
|
||||
{IOC:, 2, "m$(N)", "asynMotor", XPS1, 1, "motor $(N)", mm, Pos, .3, .1, .2, 0, 1, .2, 0.000147750, 5, 10, 0, ""}
|
||||
{IOC:, 3, "m$(N)", "asynMotor", XPS1, 2, "motor $(N)", mm, Pos, .3, .1, .2, 0, 1, .2, 0.000048828, 5, 62.5, 50, ""}
|
||||
}
|
||||
file "$(MOTOR)/db/XPS_extra.db"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, ADDR}
|
||||
{IOC:, m1, XPS1, 0}
|
||||
{IOC:, m2, XPS1 1}
|
||||
{IOC:, m3, XPS1 2}
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
file "$(TOP)/db/basic_asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
|
||||
{IOC:, 1, "m$(N)", "asynMotor", XPS1, 0, "scanX", mm, Neg, 5., 1, 0.5, 0, 1, .2, 0.000001, 5, 12.4, -12.4, ""}
|
||||
{IOC:, 2, "m$(N)", "asynMotor", XPS1, 1, "scanY", mm, Pos, 5., 1, 0.5, 0, 1, .2, 0.00002, 5, 2.4, -2.4, ""}
|
||||
{IOC:, 3, "m$(N)", "asynMotor", XPS1, 2, "theta", degrees, Pos, 20., 1, 0.5, 0, 1, .2, 0.0005, 4, 150.0, -150.0, ""}
|
||||
{IOC:, 4, "m$(N)", "asynMotor", XPS1, 3, "stageX", mm, Neg, 5., 1, 1.0, 0, 1, .5, 0.0005, 4, 100.0, -100.0, ""}
|
||||
{IOC:, 5, "m$(N)", "asynMotor", XPS1, 4, "stageZ", mm, Neg, 5., 1, 1.0, 0, 1, .5, 0.0005, 4, 100.0, -100.0, ""}
|
||||
{IOC:, 6, "m$(N)", "asynMotor", XPS1, 5, "stageY", mm, Pos, 5., 1, 1.0, 0, 2, .2, 0.0002, 4, 292.0, -8.0, ""}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/XPS_extra.db"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, ADDR}
|
||||
{IOC:, m1, XPS1, 0}
|
||||
{IOC:, m2, XPS1 1}
|
||||
{IOC:, m3, XPS1 2}
|
||||
{IOC:, m4, XPS1 3}
|
||||
{IOC:, m5, XPS1 4}
|
||||
{IOC:, m6, XPS1 5}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/profileMoveController.template"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, NAXES, NPOINTS, NPULSES, TIMEOUT}
|
||||
{IOC:, Prof1:, XPS1, 6, 2000, 2000, 1}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/profileMoveControllerXPS.template"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, NAXES, NPOINTS, NPULSES, TIMEOUT}
|
||||
{IOC:, Prof1:, XPS1, 6, 2000, 2000, 1}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/profileMoveAxis.template"
|
||||
{
|
||||
pattern
|
||||
{P, R, N, M, PORT, ADDR,NPOINTS, NREADBACK, DIR_LINK, OFF_LINK, RES_LINK, PREC, TIMEOUT}
|
||||
{IOC:, Prof1:, 1, "m$(N)", XPS1, 0, 2000, 2000, "IOC:$(M).DIR", "IOC:$(M).OFF", "IOC:$(M).MRES", 5, 1}
|
||||
{IOC:, Prof1:, 2, "m$(N)", XPS1, 1, 2000, 2000, "IOC:$(M).DIR", "IOC:$(M).OFF", "IOC:$(M).MRES", 5, 1}
|
||||
{IOC:, Prof1:, 3, "m$(N)", XPS1, 2, 2000, 2000, "IOC:$(M).DIR", "IOC:$(M).OFF", "IOC:$(M).MRES", 4, 1}
|
||||
{IOC:, Prof1:, 4, "m$(N)", XPS1, 3, 2000, 2000, "IOC:$(M).DIR", "IOC:$(M).OFF", "IOC:$(M).MRES", 4, 1}
|
||||
{IOC:, Prof1:, 5, "m$(N)", XPS1, 4, 2000, 2000, "IOC:$(M).DIR", "IOC:$(M).OFF", "IOC:$(M).MRES", 4, 1}
|
||||
{IOC:, Prof1:, 6, "m$(N)", XPS1, 5, 2000, 2000, "IOC:$(M).DIR", "IOC:$(M).OFF", "IOC:$(M).MRES", 4, 1}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/profileMoveAxisXPS.template"
|
||||
{
|
||||
pattern
|
||||
{P, R, N, M, PORT, ADDR,NPOINTS, NREADBACK, PREC, TIMEOUT}
|
||||
{IOC:, Prof1:, 1, "m$(N)", XPS1, 0, 2000, 2000, 5, 1}
|
||||
{IOC:, Prof1:, 2, "m$(N)", XPS1, 1, 2000, 2000, 5, 1}
|
||||
{IOC:, Prof1:, 3, "m$(N)", XPS1, 2, 2000, 2000, 4, 1}
|
||||
{IOC:, Prof1:, 4, "m$(N)", XPS1, 3, 2000, 2000, 4, 1}
|
||||
{IOC:, Prof1:, 5, "m$(N)", XPS1, 4, 2000, 2000, 4, 1}
|
||||
{IOC:, Prof1:, 6, "m$(N)", XPS1, 5, 2000, 2000, 4, 1}
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
file "$(TOP)/db/basic_asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
|
||||
{IOC:, 1, "m$(N)", "asynMotor", XPS1, 0, "Phi", degrees, Pos, 15.9, 0.1, 1, 0, 1, .2, .001, 5, 180, -180, ""}
|
||||
{IOC:, 2, "m$(N)", "asynMotor", XPS1, 1, "Kappa", degrees, Pos, 15.9, 0.1, 1, 0, 1, .2, .0002, 5, 180, -180, ""}
|
||||
{IOC:, 3, "m$(N)", "asynMotor", XPS1, 2, "Omega", degrees, Pos, 15.9, 0.1, 1, 0, 1, .2, .0002, 5, 360, -180, ""}
|
||||
{IOC:, 4, "m$(N)", "asynMotor", XPS1, 3, "Psi", degrees, Pos, 3.9, 0.1, .5, 0, 1, .2, .00025, 5, 230, -230, ""}
|
||||
{IOC:, 5, "m$(N)", "asynMotor", XPS1, 4, "2theta", degrees, Pos, 7.9, 0.1, 1, 0, 1, .2, .0001, 5, 190, -10, ""}
|
||||
{IOC:, 6, "m$(N)", "asynMotor", XPS1, 5, "Nu", degrees, Pos, 3.9, 0.1, .5, 0, 1, .2, .00025, 5, 230, -230, ""}
|
||||
}
|
||||
|
||||
|
||||
file "$(TOP)/db/XPS_extra.db"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, ADDR}
|
||||
{IOC:, m1, XPS1, 0}
|
||||
{IOC:, m2, XPS1 1}
|
||||
{IOC:, m3, XPS1 2}
|
||||
{IOC:, m4, XPS1 3}
|
||||
{IOC:, m5, XPS1 4}
|
||||
{IOC:, m6, XPS1 5}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/profileMoveController.template"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, NAXES, NPOINTS, NPULSES, TIMEOUT}
|
||||
{IOC:, Prof1:, XPS1, 6, 2000, 2000, 1}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/profileMoveControllerXPS.template"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, NAXES, NPOINTS, NPULSES, TIMEOUT}
|
||||
{IOC:, Prof1:, XPS1, 6, 2000, 2000, 1}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/profileMoveAxis.template"
|
||||
{
|
||||
pattern
|
||||
{P, R, M, PORT, ADDR,NPOINTS, NREADBACK, MOTOR, PREC, TIMEOUT}
|
||||
{IOC:, Prof1:, 1, XPS1, 0, 2000, 2000, IOC:m1, 5, 1}
|
||||
{IOC:, Prof1:, 2, XPS1, 1, 2000, 2000, IOC:m2, 5, 1}
|
||||
{IOC:, Prof1:, 3, XPS1, 2, 2000, 2000, IOC:m3, 4, 1}
|
||||
{IOC:, Prof1:, 4, XPS1, 3, 2000, 2000, IOC:m4, 4, 1}
|
||||
{IOC:, Prof1:, 5, XPS1, 4, 2000, 2000, IOC:m5, 4, 1}
|
||||
{IOC:, Prof1:, 6, XPS1, 5, 2000, 2000, IOC:m6, 4, 1}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/profileMoveAxisXPS.template"
|
||||
{
|
||||
pattern
|
||||
{P, R, M, PORT, ADDR,NPOINTS, NREADBACK, PREC, TIMEOUT}
|
||||
{IOC:, Prof1:, 1, XPS1, 0, 2000, 2000, 5, 1}
|
||||
{IOC:, Prof1:, 2, XPS1, 1, 2000, 2000, 5, 1}
|
||||
{IOC:, Prof1:, 3, XPS1, 2, 2000, 2000, 4, 1}
|
||||
{IOC:, Prof1:, 4, XPS1, 3, 2000, 2000, 4, 1}
|
||||
{IOC:, Prof1:, 5, XPS1, 4, 2000, 2000, 4, 1}
|
||||
{IOC:, Prof1:, 6, XPS1, 5, 2000, 2000, 4, 1}
|
||||
}
|
||||
@@ -1,68 +0,0 @@
|
||||
file "$(TOP)/db/basic_asyn_motor.db"
|
||||
{
|
||||
pattern
|
||||
{P, N, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
|
||||
{IOC:, 1, "m$(N)", "asynMotor", XPS1, 0, "Phi", degrees, Neg, 4.0, 0.1, .25, 0, 1, .2, .001, 3, 180, -180, ""}
|
||||
{IOC:, 2, "m$(N)", "asynMotor", XPS1, 1, "Kappa", degrees, Neg, 6.0, 0.1, .88, 0, 1, .2, .0001, 4, 180, -180, ""}
|
||||
{IOC:, 3, "m$(N)", "asynMotor", XPS1, 2, "Omega", degrees, Neg, 7.0, 0.1, 1.5, 0, 1, .2, .0001, 4, 360, -180, ""}
|
||||
{IOC:, 4, "m$(N)", "asynMotor", XPS1, 3, "Psi", degrees, Neg, 4.0, 0.1, .5, 0, 1, .2, .00025, 4, 190, -190, ""}
|
||||
{IOC:, 5, "m$(N)", "asynMotor", XPS1, 4, "2theta", degrees, Neg, 4.0, 0.1, 1.0, 0, 1, .2, .0001, 4, 196, -17, ""}
|
||||
{IOC:, 6, "m$(N)", "asynMotor", XPS1, 5, "Nu", degrees, Neg, 4.0, 0.1, .5, 0, 1, .2, .00025, 4, 190, -190, ""}
|
||||
{IOC:, 7, "m$(N)", "asynMotor", XPS1, 6, "Dummy1", degrees, Neg, 4.0, 0.1, .5, 0, 1, .2, .00025, 4, 190, -190, ""}
|
||||
{IOC:, 8, "m$(N)", "asynMotor", XPS1, 7, "Dummy2", degrees, Neg, 4.0, 0.1, .5, 0, 1, .2, .00025, 4, 190, -190, ""}
|
||||
}
|
||||
|
||||
|
||||
file "$(TOP)/db/XPS_extra.db"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, ADDR}
|
||||
{IOC:, m1, XPS1, 0}
|
||||
{IOC:, m2, XPS1 1}
|
||||
{IOC:, m3, XPS1 2}
|
||||
{IOC:, m4, XPS1 3}
|
||||
{IOC:, m5, XPS1 4}
|
||||
{IOC:, m6, XPS1 5}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/profileMoveController.template"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, NAXES, NPOINTS, NPULSES, TIMEOUT}
|
||||
{IOC:, Prof1:, XPS1, 6, 2000, 2000, 1}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/profileMoveControllerXPS.template"
|
||||
{
|
||||
pattern
|
||||
{P, R, PORT, NAXES, NPOINTS, NPULSES, TIMEOUT}
|
||||
{IOC:, Prof1:, XPS1, 6, 2000, 2000, 1}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/profileMoveAxis.template"
|
||||
{
|
||||
pattern
|
||||
{P, R, M, PORT, ADDR,NPOINTS, NREADBACK, MOTOR, PREC, TIMEOUT}
|
||||
{IOC:, Prof1:, 1, XPS1, 0, 2000, 2000, IOC:m1, 3, 1}
|
||||
{IOC:, Prof1:, 2, XPS1, 1, 2000, 2000, IOC:m2, 4, 1}
|
||||
{IOC:, Prof1:, 3, XPS1, 2, 2000, 2000, IOC:m3, 4, 1}
|
||||
{IOC:, Prof1:, 4, XPS1, 3, 2000, 2000, IOC:m4, 4, 1}
|
||||
{IOC:, Prof1:, 5, XPS1, 4, 2000, 2000, IOC:m5, 4, 1}
|
||||
{IOC:, Prof1:, 6, XPS1, 5, 2000, 2000, IOC:m6, 4, 1}
|
||||
{IOC:, Prof1:, 7, XPS1, 6, 2000, 2000, IOC:m6, 4, 1}
|
||||
{IOC:, Prof1:, 8, XPS1, 7, 2000, 2000, IOC:m6, 4, 1}
|
||||
}
|
||||
|
||||
file "$(TOP)/db/profileMoveAxisXPS.template"
|
||||
{
|
||||
pattern
|
||||
{P, R, M, PORT, ADDR,NPOINTS, NREADBACK, PREC, TIMEOUT}
|
||||
{IOC:, Prof1:, 1, XPS1, 0, 2000, 2000, 3, 1}
|
||||
{IOC:, Prof1:, 2, XPS1, 1, 2000, 2000, 4, 1}
|
||||
{IOC:, Prof1:, 3, XPS1, 2, 2000, 2000, 4, 1}
|
||||
{IOC:, Prof1:, 4, XPS1, 3, 2000, 2000, 4, 1}
|
||||
{IOC:, Prof1:, 5, XPS1, 4, 2000, 2000, 4, 1}
|
||||
{IOC:, Prof1:, 6, XPS1, 5, 2000, 2000, 4, 1}
|
||||
{IOC:, Prof1:, 7, XPS1, 6, 2000, 2000, 4, 1}
|
||||
{IOC:, Prof1:, 8, XPS1, 7, 2000, 2000, 4, 1}
|
||||
}
|
||||
@@ -1,67 +0,0 @@
|
||||
IdlePollPeriod = 1.00
|
||||
MovingPollPeriod = 0.25
|
||||
|
||||
lastPos = 0
|
||||
targetPos = 0
|
||||
|
||||
function move(position, relative, minVel, maxVel, accel)
|
||||
local MRES = asyn.getDoubleParam( DRIVER, AXIS, "MOTOR_REC_RESOLUTION")
|
||||
|
||||
if (relative) then
|
||||
local prev = asyn.getDoubleParam( DRIVER, AXIS, "MOTOR_POSITION")
|
||||
targetPos = prev + (position * MRES)
|
||||
else
|
||||
targetPos = (position * MRES)
|
||||
end
|
||||
|
||||
epics.put(DRIVE_PV, targetPos)
|
||||
|
||||
if (position > 0) then
|
||||
asyn.setIntegerParam( DRIVER, AXIS, "MOTOR_STATUS_DIRECTION", 1)
|
||||
else
|
||||
asyn.setIntegerParam( DRIVER, AXIS, "MOTOR_STATUS_DIRECTION", 0)
|
||||
end
|
||||
|
||||
asyn.callParamCallbacks(DRIVER, AXIS)
|
||||
end
|
||||
|
||||
|
||||
function poll()
|
||||
local MRES = asyn.getDoubleParam( DRIVER, AXIS, "MOTOR_REC_RESOLUTION")
|
||||
|
||||
if (MRES == 0.0) then
|
||||
return true
|
||||
end
|
||||
|
||||
local curr = epics.get(READBACK_PV)
|
||||
|
||||
asyn.setDoubleParam( DRIVER, AXIS, "MOTOR_POSITION", curr / MRES)
|
||||
|
||||
local done = 0
|
||||
local moving = 1
|
||||
|
||||
if (curr == targetPos) then
|
||||
done = 1
|
||||
moving = 0
|
||||
elseif (math.abs(curr - targetPos) <= MRES and lastPos == curr) then
|
||||
done = 1
|
||||
moving = 0
|
||||
end
|
||||
|
||||
lastPos = curr
|
||||
|
||||
asyn.setIntegerParam( DRIVER, AXIS, "MOTOR_STATUS_DONE", done)
|
||||
asyn.setIntegerParam( DRIVER, AXIS, "MOTOR_STATUS_MOVING", moving)
|
||||
|
||||
asyn.callParamCallbacks(DRIVER, AXIS)
|
||||
|
||||
return (done ~= 1)
|
||||
end
|
||||
|
||||
|
||||
function stop(acceleration)
|
||||
local curr = asyn.getDoubleParam( DRIVER, AXIS, "MOTOR_POSITION")
|
||||
|
||||
epics.put(DRIVE_PV, curr)
|
||||
targetPos = curr
|
||||
end
|
||||
@@ -1,66 +0,0 @@
|
||||
IdlePollPeriod = 1.0
|
||||
MovingPollPeriod = 0.25
|
||||
ForcedFastPolls = 2
|
||||
|
||||
InTerminator = "\r\n"
|
||||
OutTerminator = "\r\n"
|
||||
|
||||
function sendAccelAndVelocity(minVel, maxVel, accel)
|
||||
asyn.writeread( string.format( "%d BAS %f", AXIS + 1, minVel) , PORT);
|
||||
asyn.writeread( string.format( "%d VEL %f", AXIS + 1, maxVel) , PORT);
|
||||
asyn.writeread( string.format( "%d ACC %f", AXIS + 1, accel ) , PORT);
|
||||
end
|
||||
|
||||
|
||||
function move(position, relative, minVel, maxVel, accel)
|
||||
sendAccelAndVelocity( minVel, maxVel, accel)
|
||||
|
||||
if (relative) then
|
||||
asyn.writeread( string.format( "%d MR %d", AXIS + 1, math.floor(position) ) , PORT)
|
||||
else
|
||||
asyn.writeread( string.format( "%d MV %d", AXIS + 1, math.floor(position) ) , PORT)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function moveVelocity(minVel, maxVel, accel)
|
||||
sendAccelAndVelocity( minVel, maxVel, accel)
|
||||
|
||||
asyn.writeread( string.format( "%d JOG %f", AXIS + 1, maxVel) , PORT);
|
||||
end
|
||||
|
||||
|
||||
function poll()
|
||||
asyn.write( string.format( "%d POS?", AXIS + 1) , PORT)
|
||||
|
||||
asyn.setDoubleParam( DRIVER, AXIS, "MOTOR_POSITION", tonumber( asyn.read(PORT) ) )
|
||||
|
||||
asyn.write( string.format( "%d ST?", AXIS + 1) , PORT)
|
||||
|
||||
local status = tonumber( asyn.read(PORT) )
|
||||
|
||||
local direction = (status & 1)
|
||||
local done = (status & 2) >> 1
|
||||
local limit_high = (status & 8) >> 3
|
||||
local limit_low = (status & 16) >> 4
|
||||
|
||||
asyn.setIntegerParam( DRIVER, AXIS, "MOTOR_STATUS_DIRECTION", direction)
|
||||
asyn.setIntegerParam( DRIVER, AXIS, "MOTOR_STATUS_DONE", done)
|
||||
asyn.setIntegerParam( DRIVER, AXIS, "MOTOR_STATUS_MOVING", done ~ 1)
|
||||
asyn.setIntegerParam( DRIVER, AXIS, "MOTOR_STATUS_HIGH_LIMIT", limit_high)
|
||||
asyn.setIntegerParam( DRIVER, AXIS, "MOTOR_STATUS_LOW_LIMIT", limit_low)
|
||||
|
||||
asyn.callParamCallbacks(DRIVER, AXIS)
|
||||
|
||||
return (done ~= 1)
|
||||
end
|
||||
|
||||
|
||||
function stop(acceleration)
|
||||
asyn.writeread( string.format( "%d AB", AXIS + 1) , PORT);
|
||||
end
|
||||
|
||||
|
||||
function setPosition(position)
|
||||
asyn.writeread( string.format( "%d POS %d", AXIS + 1, math.floor(position) ) , PORT);
|
||||
end
|
||||
@@ -1,39 +0,0 @@
|
||||
#errlogInit(5000)
|
||||
< envPaths
|
||||
# Tell EPICS all about the record types, device-support modules, drivers,
|
||||
# etc.
|
||||
dbLoadDatabase("../../dbd/WithAsyn.dbd")
|
||||
WithAsyn_registerRecordDeviceDriver(pdbbase)
|
||||
|
||||
### Motors
|
||||
dbLoadTemplate "motor.substitutions.AG_CONEX"
|
||||
|
||||
# For Windows
|
||||
#drvAsynSerialPortConfigure("serial1", "COM3", 0, 0, 0)
|
||||
# For Linux
|
||||
drvAsynSerialPortConfigure("serial1", "/dev/ttyUSB0", 0, 0, 0)
|
||||
asynOctetSetInputEos("serial1",0,"\r\n")
|
||||
asynOctetSetOutputEos("serial1",0,"\r\n")
|
||||
asynSetOption("serial1",0,"baud","921600")
|
||||
asynSetOption("serial1",0,"bits","8")
|
||||
asynSetOption("serial1",0,"stop","1")
|
||||
asynSetOption("serial1",0,"parity","none")
|
||||
asynSetOption("serial1",0,"clocal","Y")
|
||||
asynSetOption("serial1",0,"crtscts","N")
|
||||
|
||||
asynSetTraceIOMask("serial1", 0, 2)
|
||||
#asynSetTraceMask("serial1", 0, 9)
|
||||
|
||||
# Load asyn record
|
||||
dbLoadRecords("$(ASYN)/db/asynRecord.db", "P=IOC:,R=serial1,PORT=serial1, ADDR=0,OMAX=256,IMAX=256")
|
||||
|
||||
# AG_CONEXCreateController(asyn port, serial port, controllerID,
|
||||
# active poll period (ms), idle poll period (ms))
|
||||
AG_CONEXCreateController("Agilis1", "serial1", 1, 50, 500)
|
||||
asynSetTraceIOMask("Agilis1", 0, 2)
|
||||
#asynSetTraceMask("Agilis1", 0, 255)
|
||||
|
||||
iocInit
|
||||
|
||||
dbpf IOC:m1.RTRY 0
|
||||
dbpf IOC:m1.NTM 0
|
||||
@@ -1,40 +0,0 @@
|
||||
#errlogInit(5000)
|
||||
< envPaths
|
||||
# Tell EPICS all about the record types, device-support modules, drivers,
|
||||
# etc.
|
||||
dbLoadDatabase("../../dbd/WithAsyn.dbd")
|
||||
WithAsyn_registerRecordDeviceDriver(pdbbase)
|
||||
|
||||
### Motors
|
||||
dbLoadTemplate "motor.substitutions.AG_UC"
|
||||
|
||||
# For Windows
|
||||
#drvAsynSerialPortConfigure("serial1", "COM3", 0, 0, 0)
|
||||
# For Linux
|
||||
drvAsynSerialPortConfigure("serial1", "/dev/ttyUSB0", 0, 0, 0)
|
||||
asynOctetSetInputEos("serial1",0,"\r\n")
|
||||
asynOctetSetOutputEos("serial1",0,"\r\n")
|
||||
asynSetOption("serial1",0,"baud","921600")
|
||||
asynSetOption("serial1",0,"bits","8")
|
||||
asynSetOption("serial1",0,"stop","1")
|
||||
asynSetOption("serial1",0,"parity","none")
|
||||
asynSetOption("serial1",0,"clocal","Y")
|
||||
asynSetOption("serial1",0,"crtscts","N")
|
||||
|
||||
asynSetTraceIOMask("serial1", 0, 2)
|
||||
#asynSetTraceMask("serial1", 0, 9)
|
||||
|
||||
# Load asynRecord records
|
||||
dbLoadRecords("$(ASYN)/db/asynRecord.db", "P=IOC:,R=serial1,PORT=serial1, ADDR=0,OMAX=256,IMAX=256")
|
||||
|
||||
# AG_UCCreateController(asyn port, serial port, number of axes,
|
||||
# active poll period (ms), idle poll period (ms))
|
||||
AG_UCCreateController("Agilis1", "serial1", 2, 50, 500)
|
||||
asynSetTraceIOMask("Agilis1", 0, 2)
|
||||
#asynSetTraceMask("Agilis1", 0, 255)
|
||||
|
||||
# AG_UCCreateAxis((AG_UC controller port, axis, hasLimits, forwardAmplitude, reverseAmplitude)
|
||||
AG_UCCreateAxis("Agilis1", 0, 0, 50, -30)
|
||||
AG_UCCreateAxis("Agilis1", 1, 0, 40, -50)
|
||||
|
||||
iocInit
|
||||
@@ -1,74 +0,0 @@
|
||||
# ANG1 motors Command file Example
|
||||
#
|
||||
### Note: Modbus support (the EPICS modbus module) is required to be included in the
|
||||
### EPICS application where the ANG1 support will be loaded. This file is an
|
||||
### example of how to load the ANG1 support, in an ioc that is built with the
|
||||
### EPICS modbus module.
|
||||
|
||||
|
||||
# Use the following commands for TCP/IP
|
||||
#drvAsynIPPortConfigure(const char *portName,
|
||||
# const char *hostInfo,
|
||||
# unsigned int priority,
|
||||
# int noAutoConnect,
|
||||
# int noProcessEos);
|
||||
# One per controller. One controller can support up to six drivers.
|
||||
drvAsynIPPortConfigure("ang1_1","164.54.53.107:502",0,0,1)
|
||||
#drvAsynIPPortConfigure("ang1_2","164.54.53.23:502",0,0,1)
|
||||
#drvAsynIPPortConfigure("ang1_3","164.54.xxx.xxx:502",0,0,1)
|
||||
|
||||
#modbusInterposeConfig(const char *portName,
|
||||
# modbusLinkType linkType,
|
||||
# int timeoutMsec,
|
||||
# int writeDelayMsec)
|
||||
# One per controller. One controller can support up to six drivers.
|
||||
modbusInterposeConfig("ang1_1",0,2000,0)
|
||||
#modbusInterposeConfig("ang1_2",0,2000,0)
|
||||
|
||||
# Word access at Modbus address 0
|
||||
# Access 1 words as inputs.
|
||||
# Function code=3
|
||||
# default data type unsigned integer.
|
||||
# drvModbusAsynConfigure("portName", "tcpPortName", slaveAddress, modbusFunction, modbusStartAddress, modbusLength, dataType, pollMsec, "plcType")
|
||||
# One per axis. Note: "ANG1" is the AMCI model. "ANG1_1" is the controller. "ANG1_1_1" is the axis.
|
||||
drvModbusAsynConfigure("ANG1_1_1_In_Word", "ang1_1", 0, 4, 0, 10, 0, 100, "ANG1_stepper")
|
||||
drvModbusAsynConfigure("ANG1_1_2_In_Word", "ang1_1", 0, 4, 10, 10, 0, 100, "ANG1_stepper")
|
||||
#drvModbusAsynConfigure("ANG1_1_3_In_Word", "ang1_1", 0, 3, 20, 10, 0, 100, "ANG1_stepper")
|
||||
#drvModbusAsynConfigure("ANG1_1_4_In_Word", "ang1_1", 0, 3, 30, 10, 0, 100, "ANG1_stepper")
|
||||
#drvModbusAsynConfigure("ANG1_1_5_In_Word", "ang1_1", 0, 3, 40, 10, 0, 100, "ANG1_stepper")
|
||||
#drvModbusAsynConfigure("ANG1_1_6_In_Word", "ang1_1", 0, 3, 50, 10, 0, 100, "ANG1_stepper")
|
||||
|
||||
# Access 1 words as outputs.
|
||||
# Either function code=6 (single register) or 16 (multiple registers) can be used, but 16
|
||||
# is better because it is "atomic" when writing values longer than 16-bits.
|
||||
# Default data type unsigned integer.
|
||||
# drvModbusAsynConfigure("portName", "tcpPortName", slaveAddress, modbusFunction, modbusStartAddress, modbusLength, dataType, pollMsec, "plcType")
|
||||
# Not sure why the outputs can't be configured for Modbus data type 4?
|
||||
drvModbusAsynConfigure("ANG1_1_1_Out_Word", "ang1_1", 0, 6, 1024, 10, 0, 1, "ANG1_stepper")
|
||||
drvModbusAsynConfigure("ANG1_1_2_Out_Word", "ang1_1", 0, 6, 1034, 10, 0, 1, "ANG1_stepper")
|
||||
#drvModbusAsynConfigure("ANG1_1_3_Out_Word", "ang1_1", 0, 6, 1044, 10, 0, 1, "ANG1_stepper")
|
||||
#drvModbusAsynConfigure("ANG1_1_4_Out_Word", "ang1_1", 0, 6, 1054, 10, 0, 1, "ANG1_stepper")
|
||||
#drvModbusAsynConfigure("ANG1_1_5_Out_Word", "ang1_1", 0, 6, 1064, 10, 0, 1, "ANG1_stepper")
|
||||
#drvModbusAsynConfigure("ANG1_1_6_Out_Word", "ang1_1", 0, 6, 1074, 10, 0, 1, "ANG1_stepper")
|
||||
|
||||
# Second ANG1 controller...
|
||||
#drvModbusAsynConfigure("ANG1_2_1_Out_Word_0", "ang1_2", 0, 6, 1024, 1, 0, 1, "ANG1_stepper")
|
||||
|
||||
dbLoadTemplate("ANG1_motors.substitutions")
|
||||
|
||||
# AMCI ANG1 stepper controller/driver support
|
||||
# portName The name of the asyn port that will be created for this driver
|
||||
# ANG1InPortName The name of the In drvAsynIPPPort that was created previously to connect to the ANG1 controller
|
||||
# ANG1OutPortName The name of the Out drvAsynIPPPort that was created previously to connect to the ANG1 controller
|
||||
# numAxes The number of axes that this controller supports
|
||||
# movingPollPeriod The time in ms between polls when any axis is moving
|
||||
# idlePollPeriod The time in ms between polls when no axis is moving
|
||||
#
|
||||
# One per axis. Note: "ANG1" is the AMCI model. "ANG1_1" is the controller. "ANG1_1_1" is the axis.
|
||||
# Also, ANG1_1_1 is the port name needed for motor.substitutions.
|
||||
ANG1CreateController(ANG1_1_1, ANG1_1_1_In_Word, ANG1_1_1_Out_Word, 1, 100, 0)
|
||||
ANG1CreateController(ANG1_1_2, ANG1_1_2_In_Word, ANG1_1_2_Out_Word, 1, 100, 0)
|
||||
#ANG1CreateController(ANG1_1, ANG1_1_3_In_Word, ANG1_1_3_Out_Word, 1, 100, 0)
|
||||
#ANG1CreateController(ANG1_1, ANG1_1_4_In_Word, ANG1_1_4_Out_Word, 1, 100, 0)
|
||||
#ANG1CreateController(ANG1_1, ANG1_1_5_In_Word, ANG1_1_5_Out_Word, 1, 100, 0)
|
||||
#ANG1CreateController(ANG1_1, ANG1_1_6_In_Word, ANG1_1_6_Out_Word, 1, 100, 0)
|
||||
@@ -1,45 +0,0 @@
|
||||
#errlogInit(5000)
|
||||
< envPaths
|
||||
# Tell EPICS all about the record types, device-support modules, drivers,
|
||||
# etc.
|
||||
dbLoadDatabase("../../dbd/WithAsyn.dbd")
|
||||
WithAsyn_registerRecordDeviceDriver(pdbbase)
|
||||
|
||||
### Motors
|
||||
dbLoadTemplate "motor.substitutions.CONEX-PP"
|
||||
|
||||
# For Windows
|
||||
drvAsynSerialPortConfigure("serial1", "COM8", 0, 0, 0)
|
||||
# For Linux
|
||||
#drvAsynSerialPortConfigure("serial1", "/dev/ttyUSB0", 0, 0, 0)
|
||||
asynOctetSetInputEos("serial1",0,"\r\n")
|
||||
asynOctetSetOutputEos("serial1",0,"\r\n")
|
||||
asynSetOption("serial1",0,"baud","115200")
|
||||
asynSetOption("serial1",0,"bits","8")
|
||||
asynSetOption("serial1",0,"stop","1")
|
||||
asynSetOption("serial1",0,"parity","none")
|
||||
asynSetOption("serial1",0,"clocal","Y")
|
||||
asynSetOption("serial1",0,"crtscts","N")
|
||||
|
||||
asynSetTraceIOMask("serial1", 0, 2)
|
||||
#asynSetTraceMask("serial1", 0, 9)
|
||||
|
||||
# Load asyn record
|
||||
dbLoadRecords("$(ASYN)/db/asynRecord.db", "P=IOC:,R=serial1,PORT=serial1, ADDR=0,OMAX=256,IMAX=256")
|
||||
|
||||
# AG_CONEXCreateController(asyn port, serial port, controllerID,
|
||||
# active poll period (ms), idle poll period (ms))
|
||||
AG_CONEXCreateController("CONEX1", "serial1", 1, 50, 500)
|
||||
asynSetTraceIOMask("CONEX1", 0, 2)
|
||||
#asynSetTraceMask("CONEX1", 0, 255)
|
||||
AG_CONEXCreateController("CONEX2", "serial1", 2, 50, 500)
|
||||
asynSetTraceIOMask("CONEX2", 0, 2)
|
||||
#asynSetTraceMask("CONEX2", 0, 255)
|
||||
AG_CONEXCreateController("CONEX3", "serial1", 3, 50, 500)
|
||||
asynSetTraceIOMask("CONEX3", 0, 2)
|
||||
#asynSetTraceMask("CONEX3", 0, 255)
|
||||
|
||||
iocInit
|
||||
|
||||
dbpf IOC:m1.RTRY 0
|
||||
dbpf IOC:m1.NTM 0
|
||||
@@ -1,15 +0,0 @@
|
||||
|
||||
### Motors
|
||||
dbLoadTemplate "motor.substitutions.SMC100"
|
||||
|
||||
### Serial port setup
|
||||
drvAsynSerialPortConfigure("serial1", "/dev/ttyS0", 0, 0, 0)
|
||||
asynSetOption(serial1,0,baud,57600)
|
||||
asynOctetSetInputEos("serial1",0,"\r\n")
|
||||
asynOctetSetOutputEos("serial1",0,"\r\n")
|
||||
|
||||
### Newport SMC100 support
|
||||
# (driver port, serial port, axis num, ms mov poll, ms idle poll, egu per step)
|
||||
SMC100CreateController("SMC100_1", "serial1",1, 100, 0, "0.00005")
|
||||
|
||||
iocInit
|
||||
@@ -1,349 +0,0 @@
|
||||
# The is the "ASYN" example for communication to either a Newport MM4000/5 or an
|
||||
# IMS483 controller. The examples must be configured by including or omitting
|
||||
# comment characters (i.e., #'s) from this file.
|
||||
|
||||
# "#!" marks lines that can be uncommented.
|
||||
|
||||
# The following must be added for many board support packages
|
||||
#!cd "... IOC st.cmd complete directory path ... "
|
||||
|
||||
< cdCommands
|
||||
#!< ../nfsCommands
|
||||
|
||||
cd topbin
|
||||
|
||||
# If the VxWorks kernel was built using the project facility, the following must
|
||||
# be added before any C++ code is loaded (see SPR #28980).
|
||||
sysCplusEnable=1
|
||||
|
||||
ld < WithAsynVx.munch
|
||||
|
||||
cd startup
|
||||
dbLoadDatabase("$(TOP)/dbd/WithAsynVx.dbd")
|
||||
WithAsynVx_registerRecordDeviceDriver(pdbbase)
|
||||
|
||||
dbLoadTemplate("motor.substitutions")
|
||||
dbLoadRecords("$(MOTOR)/db/motorUtil.db", "P=IOC:")
|
||||
|
||||
# Configure the ASYN server code. This MUST be configured too!
|
||||
< st_asynserver.cmd.Vx
|
||||
|
||||
# Newport MM3000 and MM4000/5/6 driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!MM3000Setup(1, 10)
|
||||
#!MM4000Setup(1, 10)
|
||||
|
||||
# Newport MM3000 and MM4000/5/6 driver configuration parameters:
|
||||
# (1) controller# being configured
|
||||
# (2) ASYN port name
|
||||
# (3) address (GPIB only)
|
||||
#!MM3000Config(0, "a-Serial[0]")
|
||||
#!drvMM3000debug=4
|
||||
#!MM4000Config(0, "a-Serial[0]")
|
||||
#!drvMM4000debug=4
|
||||
|
||||
# The MM4000 driver does not set end of string (EOS).
|
||||
# for RS232 serial,
|
||||
#!asynOctetSetInputEos( "a-Serial[0]",0,"\r")
|
||||
#!asynOctetSetOutputEos("a-Serial[0]",0,"\r")
|
||||
# for GPIB,
|
||||
#!asynInterposeEosConfig("L0", 10, 1, 1)
|
||||
#!asynOctetSetInputEos( "L0",10,"\r")
|
||||
#!asynOctetSetOutputEos("L0",10,"\r")
|
||||
|
||||
# Newport PM500 driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!PM500Setup(1, 10)
|
||||
|
||||
# Newport PM500 configuration parameters:
|
||||
# (1) controller# being configured
|
||||
# (2) ASYN port name
|
||||
# (3) address (GPIB only)
|
||||
#!PM500Config(0, "a-Serial[0]")
|
||||
#!drvPM500debug=4
|
||||
|
||||
# IMS IM483 driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
# SM - single mode PL - party mode
|
||||
#!IM483SMSetup(1, 10)
|
||||
#!IM483PLSetup(1, 10)
|
||||
|
||||
# IMS IM483 configuration parameters:
|
||||
# (1) controller# (chain#) being configured,
|
||||
# (2) ASYN port name
|
||||
# SM - single mode PL - party mode
|
||||
#!IM483SMConfig(0, "a-Serial[0]")
|
||||
#!drvIM483SMdebug=4
|
||||
#!IM483PLConfig(0, "a-Serial[0]")
|
||||
#!drvIM483PLdebug=4
|
||||
|
||||
# MCB-4B driver setup parameters:
|
||||
# (1) maximum # of controllers,
|
||||
# (2) motor task polling rate (min=1Hz, max=60Hz)
|
||||
#!MCB4BSetup(1, 10)
|
||||
|
||||
# MCB-4B driver configuration parameters:
|
||||
# (1) controller
|
||||
# (2) ASYN port name
|
||||
#!MCB4BConfig(0, "a-Serial[0]")
|
||||
#!asynOctetSetInputEos("a-Serial[0]",0,"\r")
|
||||
#!asynOctetSetOutputEos("a-Serial[0]",0,"\r")
|
||||
#!drvMCB4BDebug=4
|
||||
|
||||
# Newport ESP300 driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!ESP300Setup(1, 10)
|
||||
|
||||
# Newport ESP300 driver configuration parameters:
|
||||
# (1) controller# being configured
|
||||
# (2) ASYN port name
|
||||
# (3) address (GPIB only)
|
||||
#!ESP300Config(0, "a-Serial[0]")
|
||||
#!drvESP300debug = 4
|
||||
|
||||
# MicroMo MVP2001 driver setup parameters:
|
||||
#
|
||||
# NOTE: The 1st controller on each chain should have it's address = 1.
|
||||
# The rest of the controllers on a chain should follow sequentially.
|
||||
#
|
||||
#
|
||||
# int MVP2001Setup(int num_cards, /* number of CHAINS of controllers */
|
||||
# int scan_rate) /* polling rate (Min=1Hz, max=60Hz) */
|
||||
#!MVP2001Setup(1, 10)
|
||||
|
||||
# int MVP2001Config(int card, /* CHAIN being configured */
|
||||
# (2) ASYN port name
|
||||
#!MVP2001Config(0, "a-Serial[0]")
|
||||
#!drvMVP2001debug=4
|
||||
|
||||
# PI C-844 driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!PIC844Setup(1, 10)
|
||||
|
||||
# PI C-844 driver configuration parameters:
|
||||
# (1) controller# being configured
|
||||
# (2) ASYN port name
|
||||
# (3) address (GPIB only)
|
||||
#!PIC844Config(0, "a-Serial[0]")
|
||||
#!drvPIC844debug = 4
|
||||
|
||||
# PI C-848 driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!PIC848Setup(1, 2)
|
||||
|
||||
# PI C-848 driver configuration parameters:
|
||||
# (1) controller# being configured,
|
||||
# (2) ASYN port name
|
||||
#!PIC848Config(0, "a-Serial[0]")
|
||||
#!drvPIC848debug = 4
|
||||
|
||||
# PI E-662 Piezo driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz, max=60Hz)
|
||||
#!PIC662Setup(1, 60)
|
||||
|
||||
# PI E-662 Piezo driver configuration parameters:
|
||||
# (1) controller being configured
|
||||
# (2) asyn port name (string)
|
||||
#!PIC662Config(0, "serial1")
|
||||
#!drvPIC662debug = 4
|
||||
|
||||
# PI C-862 DC-motor driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz, max=60Hz)
|
||||
#!PIC862Setup(1, 60)
|
||||
|
||||
# PI C-862 DC-motor driver configuration parameters:
|
||||
# (1) controller being configured
|
||||
# (2) asyn port name (string)
|
||||
#!PIC862Config(0, "serial1")
|
||||
#!drvPIC862debug = 4
|
||||
|
||||
# New Focus Picomotor Network Controller (model 8750/2) (setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) maximum number of drivers per controller (1 - 3)
|
||||
# (3) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!PMNC87xxSetup(1, 2, 10)
|
||||
|
||||
# New Focuc Picomotor Network Controller (model 8750/2) configuration parameters:
|
||||
# (1) controller# being configured,
|
||||
# (2) asyn port name (string)
|
||||
#!PMNC87xxConfig(0, "serial2")
|
||||
#!drvPMNC87xxdebug=4
|
||||
|
||||
|
||||
# Micos MoCo driver setup parameters:
|
||||
# Load MicosSetup once.
|
||||
# (1) max # of controller groups. Controller groups are per serial
|
||||
# port.
|
||||
# (2) max # axes per controller group. Maximum 16. (addr 0-15)
|
||||
# (3) motor task polling rate (min=1Hz, max=60Hz, 10Hz works well)
|
||||
# Example:
|
||||
# MicosSetup(1, 2, 10) 1 group. 2 axes (controllers) in the group.
|
||||
# 10Hz poll.
|
||||
#!MicosSetup(1, 2, 10)
|
||||
|
||||
# Micos MoCo driver configuration parameters:
|
||||
# Load one MicosConfig for each group of Micos drivers.
|
||||
# (1) "Controller group" number
|
||||
# (2) ASYN port name
|
||||
#!MicosConfig(0, "a-Serial[0]")
|
||||
#!drvMicosDebug = 4
|
||||
|
||||
# Micos SMC hydra
|
||||
#!< motor.cmd.SMChydra
|
||||
|
||||
# IMS MDrive driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!MDriveSetup(1, 10)
|
||||
|
||||
# IMS MDrive driver configuration parameters:
|
||||
# (1) controller# being configured
|
||||
#!MDriveConfig(0, "a-Serial[0]")
|
||||
#!drvMDrivedebug = 4
|
||||
|
||||
# Newport XPS driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
#!XPSSetup(2)
|
||||
|
||||
# Newport XPS driver configuration parameters:
|
||||
# (1) Controller # being configured
|
||||
# (2) IP address or IP name
|
||||
# (3) IP port number that XPS is listening on
|
||||
# (4) Number of axes this controller supports
|
||||
# (5) Time to poll (msec) when an axis is in motion
|
||||
# (6) Time to poll (msec) when an axis is idle. 0 for no polling
|
||||
#!XPSConfig(0, "xxx.xx.xxx.1", 5001, 5, 100, 500)
|
||||
#!XPSConfig(1, "xxx.xx.xxx.2", 5001, 4, 100, 500)
|
||||
|
||||
# Newport XPS group and positioner name configuration:
|
||||
# (1) Controller # being configured
|
||||
# (2) axis number 0-7
|
||||
# (3) groupName.positionerName e.g. Diffractometer.Phi
|
||||
# (4) steps per user unit
|
||||
|
||||
#!XPSConfigAxis(0, 0, "GROUP1.PHI", 10000)
|
||||
#!XPSConfigAxis(0, 1, "GROUP1.KAPPA", 10000)
|
||||
|
||||
#!XPSConfigAxis(1, 0, "GROUP1.Y1_BASE", 1000)
|
||||
#!XPSConfigAxis(1, 1, "GROUP2.Y2_BASE", 1000)
|
||||
#!XPSConfigAxis(1, 2, "GROUP3.Y3_BASE", 1000)
|
||||
|
||||
|
||||
# OMS PC68/78 stand-alone serial driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!OmsPC68Setup(1, 10)
|
||||
|
||||
# OMS PC68/78 stand-alone serial driver configuration parameters:
|
||||
# (1) Card# being configured
|
||||
# (2) asyn port name
|
||||
#!OmsPC68Config(0, "L0")
|
||||
#!drvOmsPC68debug=4
|
||||
|
||||
# Kohzu SC-800 motor controller setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!SC800Setup(1, 5)
|
||||
|
||||
# Kohzu SC-800 motor controller configuration parameters:
|
||||
# (1) controller# being configured
|
||||
# (2) ASYN port name
|
||||
# (3) address (GPIB only)
|
||||
#!SC800Config(0, "L0", 0)
|
||||
#!drvSC800debug=4
|
||||
|
||||
# Faulhaber MCDC2805 driver setup parameters:
|
||||
# (1)Max. controller count
|
||||
# (2)Polling rate
|
||||
#!MCDC2805Setup(1, 10)
|
||||
|
||||
# Faulhaber MCDC2805 driver configuration parameters:
|
||||
# (1)Card being configured
|
||||
# (2)# modules on this serial port
|
||||
# (3)asyn port name
|
||||
#!MCDC2805Config(0, 1, "L0")
|
||||
#!drvMCDC2805debug=4
|
||||
|
||||
# The MCDC2805 driver does not set end of string (EOS).
|
||||
#!asynOctetSetInputEos("L0",0,"\r")
|
||||
#!asynOctetSetOutputEos("L0",0,"\r")
|
||||
|
||||
|
||||
# attocube ANC 150 asyn motor driver setup parameter.
|
||||
#!ANC150AsynSetup(1) /* number of ANC150 controllers in system. */
|
||||
|
||||
# attocube ANC 150 asyn motor driver configure parameters.
|
||||
# (1) Controller number being configured
|
||||
# (2) ASYN port name
|
||||
# (3) Number of axes this controller supports
|
||||
# (4) Time to poll (msec) when an axis is in motion
|
||||
# (5) Time to poll (msec) when an axis is idle. 0 for no polling
|
||||
#!ANC150AsynConfig(0, "a-Serial[1]", 3, 250, 2000)
|
||||
|
||||
|
||||
# Aerotech Ensemble digital servo controller Setup
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!EnsembleSetup(1, 10)
|
||||
|
||||
# Aerotech Ensemble digital servo controller Configure
|
||||
# (1) controller# being configured,
|
||||
# (2) asyn port name (string)
|
||||
#!EnsembleConfig(0, "a-Serial[0]")
|
||||
|
||||
|
||||
# Aerotech Ensemble digital servo controller asyn motor Setup
|
||||
# (1) maximum number of controllers in system
|
||||
#!EnsembleAsynSetup(1)
|
||||
|
||||
# The Ensemble driver does not set end of string (EOS).
|
||||
#!asynOctetSetInputEos(EnsemblePort,0,"\n")
|
||||
#!asynOctetSetOutputEos(EnsemblePort,0,"\n")
|
||||
|
||||
# Aerotech Ensemble digital servo controller asyn motor Config
|
||||
# (1) Controller number being configured
|
||||
# (2) ASYN port name
|
||||
# (3) ASYN address (GPIB only)
|
||||
# (4) Number of axes this controller supports
|
||||
# (5) Time to poll (msec) when an axis is in motion
|
||||
# (6) Time to poll (msec) when an axis is idle. 0 for no polling
|
||||
#!EnsembleAsynConfig(0, EnsemblePort, 0, 1, 100, 1000)
|
||||
|
||||
|
||||
# Newport MM4000/5/6 asyn motor driver setup parameter.
|
||||
#!MM4000AsynSetup(1) /* number of MM4000 controllers in system. */
|
||||
|
||||
# Newport MM4000/5/6 asyn motor driver configure parameters.
|
||||
# (1) Controller number being configured
|
||||
# (2) ASYN port name
|
||||
# (3) ASYN address (GPIB only)
|
||||
# (4) Number of axes this controller supports
|
||||
# (5) Time to poll (msec) when an axis is in motion
|
||||
# (6) Time to poll (msec) when an axis is idle. 0 for no polling
|
||||
#!MM4000AsynConfig(0, "a-Serial[1]", 0, 1, 100, 250)
|
||||
|
||||
# Asyn-based Motor Record support
|
||||
# (1) Asyn port
|
||||
# (2) Driver name
|
||||
# (3) Controller index
|
||||
# (4) Max. number of axes
|
||||
#!drvAsynMotorConfigure("MM4", "motorMM4000", 0, 4)
|
||||
#!drvAsynMotorConfigure("ANC150","motorANC150", 0, 2 )
|
||||
#!drvAsynMotorConfigure("XPS1", "motorXPS", 0, 5)
|
||||
#!drvAsynMotorConfigure("XPS2", "motorXPS", 1, 5)
|
||||
#!drvAsynMotorConfigure("AeroE1","motorEnsemble", 0, 1)
|
||||
#!drvAsynMotorConfigure("AeroE2","motorEnsemble", 1, 1)
|
||||
|
||||
iocInit
|
||||
|
||||
# motorUtil (allstop & alldone)
|
||||
motorUtilInit("IOC:")
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
#errlogInit(5000)
|
||||
< envPaths
|
||||
# Tell EPICS all about the record types, device-support modules, drivers,
|
||||
# etc. in this build from CARS
|
||||
dbLoadDatabase("../../dbd/WithAsyn.dbd")
|
||||
WithAsyn_registerRecordDeviceDriver(pdbbase)
|
||||
|
||||
### Motors
|
||||
dbLoadTemplate "motor.substitutions.acr"
|
||||
|
||||
drvAsynIPPortConfigure("ARIES1", "gse-aries1:5002", 0, 0, 0)
|
||||
#asynSetTraceMask("ARIES1", 0, 3)
|
||||
asynSetTraceIOMask("ARIES1", 0, 2)
|
||||
asynOctetSetInputEos("ARIES1",0,"\r")
|
||||
asynOctetSetOutputEos("ARIES1",0,"\r")
|
||||
|
||||
drvAsynIPPortConfigure("ARIES2", "gse-aries2:5002", 0, 0, 0)
|
||||
#asynSetTraceMask("ARIES2", 0, 3)
|
||||
asynSetTraceIOMask("ARIES2", 0, 2)
|
||||
asynOctetSetInputEos("ARIES2",0,"\r")
|
||||
asynOctetSetOutputEos("ARIES2",0,"\r")
|
||||
|
||||
dbLoadRecords("$(ASYN)/db/asynRecord.db", "P=IOC:, R=asyn1, PORT=ARIES1, ADDR=0, OMAX=256, IMAX=256")
|
||||
dbLoadRecords("$(ASYN)/db/asynRecord.db", "P=IOC:, R=asyn2, PORT=ARIES1, ADDR=0, OMAX=256, IMAX=256")
|
||||
|
||||
# PORT, ACR_PORT, number of axes, active poll period (ms), idle poll period (ms)
|
||||
ACRCreateController("ACR1", "ARIES1", 1, 20, 1000)
|
||||
ACRCreateController("ACR2", "ARIES2", 1, 20, 1000)
|
||||
|
||||
#asynSetTraceMask("ACR1", 0, 255)
|
||||
asynSetTraceIOMask("ACR1", 0, 2)
|
||||
#asynSetTraceMask("ACR2", 0, 255)
|
||||
asynSetTraceIOMask("ACR2", 0, 2)
|
||||
|
||||
iocInit
|
||||
|
||||
# This IOC does not use save/restore, so set values of some PVs
|
||||
dbpf("IOC:m1.RTRY", "0")
|
||||
dbpf("IOC:m1.TWV", "0.1")
|
||||
dbpf("IOC:m2.RTRY", "0")
|
||||
dbpf("IOC:m2.TWV", "0.1")
|
||||
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
< envPaths
|
||||
|
||||
# Tell EPICS all about the record types, device-support modules, drivers,
|
||||
# etc. in this build from CARS
|
||||
dbLoadDatabase("../../dbd/WithAsyn.dbd")
|
||||
WithAsyn_registerRecordDeviceDriver(pdbbase)
|
||||
|
||||
### Motors
|
||||
# Motors substitutions, customize this for your motor
|
||||
dbLoadTemplate "motor.substitutions.ims"
|
||||
|
||||
# Configure asyn communication port, first
|
||||
# drvAsynIPPortConfigure(IOPortName, port, priority, disable auto-connect, no process EOS)
|
||||
drvAsynIPPortConfigure("M06", "ts-b34-nw09:2101", 0, 0, 0 )
|
||||
|
||||
# Configure one controller per motor, each controller just has 1 axis
|
||||
# motorPortName, portName, deviceName, movingPollPeriod, idlePollPeriod
|
||||
ImsMDrivePlusCreateController("IMS1", "M06", "1", 200, 5000)
|
||||
|
||||
# Optional: Enable tracing
|
||||
#asynSetTraceIOMask("IMS1",0,0)
|
||||
asynSetTraceMask("IMS1",0,9)
|
||||
|
||||
# Initialize the IOC and start processing records
|
||||
iocInit()
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
#errlogInit(5000)
|
||||
< envPaths
|
||||
# Tell EPICS all about the record types, device-support modules, drivers,
|
||||
# etc. in this build from CARS
|
||||
dbLoadDatabase("../../dbd/WithAsyn.dbd")
|
||||
WithAsyn_registerRecordDeviceDriver(pdbbase)
|
||||
|
||||
drvAsynIPPortConfigure("serial1", "164.54.160.36:4002",0,0,0)
|
||||
asynOctetSetInputEos("serial1",0,"\r")
|
||||
asynOctetSetOutputEos("serial1",0,"\r")
|
||||
asynSetTraceIOMask("serial1", 0, 2)
|
||||
#asynSetTraceMask("serial1", 0, 255)
|
||||
|
||||
MCB4BCreateController("MCB4B1", "serial1", 4, 100, 5000)
|
||||
|
||||
### Motors
|
||||
dbLoadTemplate "motor.substitutions.mcb4b"
|
||||
|
||||
dbLoadRecords("$(ASYN)/db/asynRecord.db","P=IOC:,R=serial1,PORT=serial1,ADDR=0,OMAX=80,IMAX=80")
|
||||
|
||||
iocInit
|
||||
|
||||
# This IOC does not use save/restore, so set values of some PVs
|
||||
dbpf("IOC:m1.RTRY", "0")
|
||||
dbpf("IOC:m1.TWV", "0.1")
|
||||
dbpf("IOC:m2.RTRY", "0")
|
||||
dbpf("IOC:m2.TWV", "0.1")
|
||||
dbpf("IOC:m3.RTRY", "0")
|
||||
dbpf("IOC:m3.TWV", "0.1")
|
||||
dbpf("IOC:m4.RTRY", "0")
|
||||
dbpf("IOC:m4.TWV", "0.1")
|
||||
@@ -1,24 +0,0 @@
|
||||
#!../../bin/linux-x86_64/phytronAxis
|
||||
|
||||
## You may have to change phytronAxis to something else
|
||||
## everywhere it appears in this file
|
||||
|
||||
< envPaths
|
||||
|
||||
## Register all support components
|
||||
dbLoadDatabase("../../dbd/WithAsyn.dbd",0,0)
|
||||
WithAsyn_registerRecordDeviceDriver(pdbbase)
|
||||
|
||||
#drvAsynIPPortConfigure("testPort","localhost:8000",0,0,1)
|
||||
drvAsynIPPortConfigure("testRemote","10.5.1.181:22222",0,0,1)
|
||||
|
||||
#phytronCreateController (phytronPort, asynPort, movingPollPeriod, idlePollPeriod, timeout)
|
||||
phytronCreateController ("phyMotionPort", "testRemote", 100, 100, 1000)
|
||||
|
||||
#phytronCreateAxis(phytronPort, module, axis)
|
||||
phytronCreateAxis("phyMotionPort", 1, 1)
|
||||
phytronCreateAxis("phyMotionPort", 2, 1)
|
||||
|
||||
dbLoadTemplate "motor.substitutions.phytron"
|
||||
|
||||
iocInit()
|
||||
@@ -1,18 +0,0 @@
|
||||
< envPaths
|
||||
|
||||
dbLoadDatabase("$(TOP)/dbd/WithAsyn.dbd")
|
||||
WithAsyn_registerRecordDeviceDriver(pdbbase)
|
||||
|
||||
epicsEnvSet("LUA_SCRIPT_PATH", "./scripts")
|
||||
|
||||
# Connect to virtual motor controller server
|
||||
drvAsynIPPortConfigure("VMC","127.0.0.1:31337", 0, 0, 0)
|
||||
|
||||
#ScriptControllerConfig( "PORT_NAME", num_axes, "lua_script", "PARAMS=")
|
||||
ScriptControllerConfig("VMC_MOTOR", 1, "vmc.lua", "PORT=VMC")
|
||||
|
||||
ScriptControllerConfig("SOFT_MOTOR", 1, "softMotor.lua", "DRIVE_PV='IOC:m1.VAL', READBACK_PV='IOC:m1.RBV'")
|
||||
|
||||
dbLoadTemplate("motor.substitutions.script")
|
||||
|
||||
iocInit
|
||||
@@ -1,19 +0,0 @@
|
||||
# The is the ASYN example for communication to 4 simulated motors
|
||||
# "#!" marks lines that can be uncommented.
|
||||
|
||||
< envPaths
|
||||
|
||||
dbLoadDatabase("$(TOP)/dbd/WithAsyn.dbd")
|
||||
WithAsyn_registerRecordDeviceDriver(pdbbase)
|
||||
dbLoadTemplate("motor.substitutions.sim")
|
||||
|
||||
motorSimCreateController("motorSim1", 4)
|
||||
#asynSetTraceIOMask("motorSim1", 0, 4)
|
||||
#asynSetTraceMask("motorSim1", 0, 255)
|
||||
|
||||
# motorSimConfigAxis(port, axis, lowLimit, highLimit, home, start)
|
||||
motorSimConfigAxis("motorSim1", 0, 20000, -20000, 500, 0)
|
||||
motorSimConfigAxis("motorSim1", 1, 20000, -20000, 1500, 0)
|
||||
motorSimConfigAxis("motorSim1", 2, 20000, -20000, 2500, 0)
|
||||
motorSimConfigAxis("motorSim1", 3, 20000, -20000, 3000, 0)
|
||||
iocInit
|
||||
@@ -1,27 +0,0 @@
|
||||
< envPaths
|
||||
|
||||
# Tell EPICS all about the record types, device-support modules, drivers,
|
||||
# etc. in this build from CARS
|
||||
dbLoadDatabase("../../dbd/WithAsyn.dbd")
|
||||
WithAsyn_registerRecordDeviceDriver(pdbbase)
|
||||
|
||||
### Motors
|
||||
# Motors substitutions, customize this for your motor
|
||||
dbLoadTemplate "motor.substitutions.smaractmcs"
|
||||
|
||||
# Configure each controller
|
||||
drvAsynIPPortConfigure("TSP2","ts-b34-nw08:2102",0,0,0)
|
||||
|
||||
# Controller port, asyn port, number of axis, moving poll period, idle poll period
|
||||
# smarActMCSCreateController(const char *motorPortName, const char *ioPortName, int numAxes, double movingPollPeriod, double idlePollPeriod);
|
||||
smarActMCSCreateController("P0", "TSP2", 1, 0.020, 1.0)
|
||||
|
||||
# Controller port, axis number, controller channel
|
||||
# smarActMCSCreateAxis(const char *motorPortName, int axisNumber, int channel)
|
||||
smarActMCSCreateAxis("P0", 0, 1);
|
||||
smarActMCSCreateAxis("P0", 0, 0);
|
||||
|
||||
asynSetTraceIOMask("XPS1", 0, 2)
|
||||
|
||||
iocInit()
|
||||
|
||||
@@ -1,246 +0,0 @@
|
||||
# The is the ASYN example for communication to a Newport MM4000/5/6.
|
||||
# "#!" marks lines that can be uncommented.
|
||||
|
||||
< envPaths
|
||||
|
||||
dbLoadDatabase("$(TOP)/dbd/WithAsyn.dbd")
|
||||
WithAsyn_registerRecordDeviceDriver(pdbbase)
|
||||
dbLoadTemplate("motor.substitutions")
|
||||
dbLoadRecords("$(MOTOR)/db/motorUtil.db", "P=IOC:")
|
||||
|
||||
|
||||
# The following commands are for a local serial line
|
||||
# Configure the asyn server code for either sun or linux.
|
||||
#!Sun Solaris !drvAsynSerialPortConfigure("L0","/dev/ttya" ,0,0,0)
|
||||
#!Redhat Linux!drvAsynSerialPortConfigure("L0","/dev/ttyS0",0,0,0)
|
||||
|
||||
asynSetOption("L0", -1, "baud", "9600")
|
||||
asynSetOption("L0", -1, "bits", "8")
|
||||
asynSetOption("L0", -1, "parity", "none")
|
||||
asynSetOption("L0", -1, "stop", "1")
|
||||
asynSetOption("L0", -1, "clocal", "Y")
|
||||
asynSetOption("L0", -1, "crtscts", "N")
|
||||
|
||||
|
||||
# Newport MM3000 and MM4000/5/6 driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!MM3000Setup(1, 10)
|
||||
MM4000Setup(1, 10)
|
||||
|
||||
# Newport MM3000 and MM4000/5/6 driver configuration parameters:
|
||||
# (1) controller# being configured
|
||||
# (2) ASYN port name
|
||||
# (3) address (GPIB only)
|
||||
#!MM3000Config(0, "a-Serial[0]")
|
||||
#!drvMM3000debug=4
|
||||
MM4000Config(0, "L0")
|
||||
#!var drvMM4000debug 4
|
||||
|
||||
# The MM4000 driver does not set end of string (EOS).
|
||||
# for RS232 serial,
|
||||
#!asynOctetSetInputEos( "a-Serial[0]",0,"\r")
|
||||
#!asynOctetSetOutputEos("a-Serial[0]",0,"\r")
|
||||
# for GPIB,
|
||||
#!asynInterposeEosConfig("L0", 10, 1, 1)
|
||||
#!asynOctetSetInputEos( "L0",10,"\r")
|
||||
#!asynOctetSetOutputEos("L0",10,"\r")
|
||||
|
||||
# Newport PM500 driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!PM500Setup(1, 10)
|
||||
|
||||
# Newport PM500 configuration parameters:
|
||||
# (1) controller# being configured,
|
||||
# (2) ASYN port name
|
||||
# (3) address (GPIB only)
|
||||
#!PM500Config(0, "L0")
|
||||
#!var drvPM500debug 4
|
||||
|
||||
# IMS IM483 driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
# SM - single mode PL - party mode
|
||||
#!IM483SMSetup(1, 10)
|
||||
#!IM483PLSetup(1, 10)
|
||||
|
||||
# IMS IM483 configuration parameters:
|
||||
# (1) controller# (chain#) being configured,
|
||||
# (2) ASYN port name
|
||||
# SM - single mode PL - party mode
|
||||
#!IM483SMConfig(0, "L0")
|
||||
#!var drvIM483SMdebug 4
|
||||
#!IM483PLConfig(0, "L0")
|
||||
#!var drvIM483PLdebug 4
|
||||
|
||||
# MCB-4B driver setup parameters:
|
||||
# (1) maximum # of controllers,
|
||||
# (2) motor task polling rate (min=1Hz, max=60Hz)
|
||||
#!MCB4BSetup(1, 10)
|
||||
|
||||
# MCB-4B driver configuration parameters:
|
||||
# (1) controller
|
||||
# (2) ASYN port name
|
||||
#!MCB4BConfig(0, "L0")
|
||||
#!asynOctetSetInputEos("L0",0,"\r")
|
||||
#!asynOctetSetOutputEos("L0",0,"\r")
|
||||
#!var drvMCB4BDebug 4
|
||||
|
||||
# Newport ESP300 driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!ESP300Setup(1, 10)
|
||||
|
||||
# Newport ESP300 driver configuration parameters:
|
||||
# (1) controller# being configured,
|
||||
# (2) ASYN port name
|
||||
# (3) address (GPIB only)
|
||||
#!ESP300Config(0, "L0")
|
||||
#!var drvESP300debug 4
|
||||
|
||||
# MicroMo MVP2001 driver setup parameters:
|
||||
#
|
||||
# NOTE: The 1st controller on each chain should have it's address = 1.
|
||||
# The rest of the controllers on a chain should follow sequentially.
|
||||
#
|
||||
#
|
||||
# int MVP2001Setup(int num_cards, /* number of CHAINS of controllers */
|
||||
# int scan_rate) /* polling rate (Min=1Hz, max=60Hz) */
|
||||
#!MVP2001Setup(1, 10)
|
||||
|
||||
# int MVP2001Config(int card, /* CHAIN being configured */
|
||||
# (2) ASYN port name
|
||||
#!MVP2001Config(0, "L0")
|
||||
#!drvMVP2001debug=4
|
||||
|
||||
# PI C-844 driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!PIC844Setup(1, 10)
|
||||
|
||||
# PI C-844 driver configuration parameters:
|
||||
# (1) controller# being configured,
|
||||
# (2) ASYN port name
|
||||
# (3) address (GPIB only)
|
||||
#!PIC844Config(0, "L0")
|
||||
#!var drvPIC844debug 4
|
||||
|
||||
# PI C-848 driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!PIC848Setup(1, 2)
|
||||
|
||||
# PI C-848 driver configuration parameters:
|
||||
# (1) controller# being configured,
|
||||
# (2) ASYN port name
|
||||
#!PIC848Config(0, "L0")
|
||||
#!drvPIC848debug = 4
|
||||
|
||||
# Micos MoCo driver setup parameters:
|
||||
# Load MicosSetup once.
|
||||
# (1) max # of controller groups. Controller groups are per serial
|
||||
# port.
|
||||
# (2) max # axes per controller group. Maximum 16. (addr 0-15)
|
||||
# (3) motor task polling rate (min=1Hz, max=60Hz, 10Hz works well)
|
||||
# Example:
|
||||
# MicosSetup(1, 2, 10) 1 group. 2 axes (controllers) in the group.
|
||||
# 10Hz poll.
|
||||
#!MicosSetup(1, 2, 10)
|
||||
|
||||
# Micos MoCo driver configuration parameters:
|
||||
# Load one MicosConfig for each group of Micos drivers.
|
||||
# (1) "Controller group" number
|
||||
# (2) ASYN port name
|
||||
#!MicosConfig(0, "L0")
|
||||
#!var drvMicosDebug 4
|
||||
|
||||
# IMS MDrive driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!MDriveSetup(1, 10)
|
||||
|
||||
# IMS MDrive driver configuration parameters:
|
||||
# (1) controller# being configured,
|
||||
# (2) ASYN port name
|
||||
#!MDriveConfig(0, "L0")
|
||||
#!var drvMDrivedebug 4
|
||||
|
||||
# Kohzu SC-800 motor controller setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!SC800Setup(1, 5)
|
||||
|
||||
# Kohzu SC-800 motor controller configuration parameters:
|
||||
# (1) controller# being configured
|
||||
# (2) ASYN port name
|
||||
# (3) address (GPIB only)
|
||||
#!SC800Config(0, "L0", 0)
|
||||
#!var drvSC800debug 4
|
||||
|
||||
# Faulhaber MCDC2805 driver setup parameters:
|
||||
# (1)Max. controller count
|
||||
# (2)Polling rate
|
||||
#!MCDC2805Setup(1, 10)
|
||||
|
||||
# Faulhaber MCDC2805 driver configuration parameters:
|
||||
# (1)Card being configured
|
||||
# (2)# modules on this serial port
|
||||
# (3)asyn port name
|
||||
#!MCDC2805Config(0, 1, "L0")
|
||||
#!var drvMCDC2805debug 4
|
||||
|
||||
# The MCDC2805 driver does not set end of string (EOS).
|
||||
#!asynOctetSetInputEos("L0",0,"\r")
|
||||
#!asynOctetSetOutputEos("L0",0,"\r")
|
||||
|
||||
|
||||
# attocube ANC 150 asyn motor driver setup parameter.
|
||||
#!ANC150AsynSetup(1) /* number of ANC150 controllers in system. */
|
||||
|
||||
# attocube ANC 150 asyn motor driver configure parameters.
|
||||
# (1) Controller number being configured
|
||||
# (2) ASYN port name
|
||||
# (3) Number of axes this controller supports
|
||||
# (4) Time to poll (msec) when an axis is in motion
|
||||
# (5) Time to poll (msec) when an axis is idle. 0 for no polling
|
||||
#!ANC150AsynConfig(0, "a-Serial[1]", 3, 250, 2000)
|
||||
|
||||
|
||||
# Aerotech Ensemble digital servo controller Setup
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!EnsembleSetup(1, 10)
|
||||
|
||||
# Aerotech Ensemble digital servo controller Configure
|
||||
# (1) controller# being configured,
|
||||
# (2) asyn port name (string)
|
||||
#!EnsembleConfig(0, "a-Serial[0]")
|
||||
|
||||
|
||||
# Newport MM4000/5/6 asyn motor driver setup parameter.
|
||||
#!MM4000AsynSetup(1) /* number of MM4000 controllers in system. */
|
||||
|
||||
# Newport MM4000/5/6 asyn motor driver configure parameters.
|
||||
# (1) Controller number being configured
|
||||
# (2) ASYN port name
|
||||
# (3) ASYN address (GPIB only)
|
||||
# (4) Number of axes this controller supports
|
||||
# (5) Time to poll (msec) when an axis is in motion
|
||||
# (6) Time to poll (msec) when an axis is idle. 0 for no polling
|
||||
#!MM4000AsynConfig(0, "a-Serial[1]", 0, 1, 100, 250)
|
||||
|
||||
# Asyn-based Motor Record support
|
||||
# (1) Asyn port
|
||||
# (2) Driver name
|
||||
# (3) Controller index
|
||||
# (4) Max. number of axes
|
||||
#!drvAsynMotorConfigure("MM4", "motorMM4000", 0, 4)
|
||||
#!drvAsynMotorConfigure("ANC150","motorANC150", 0, 1)
|
||||
|
||||
|
||||
iocInit
|
||||
|
||||
# motorUtil (allstop & alldone)
|
||||
motorUtilInit("IOC:")
|
||||
|
||||
@@ -1,177 +0,0 @@
|
||||
# The is the ASYN example for communication to a Newport MM4000/5/6.
|
||||
# "#!" marks lines that can be uncommented.
|
||||
|
||||
< envPaths
|
||||
|
||||
dbLoadDatabase("$(TOP)/dbd/WithAsynWin32.dbd")
|
||||
WithAsynWin32_registerRecordDeviceDriver(pdbbase)
|
||||
dbLoadTemplate("motor.substitutions")
|
||||
dbLoadRecords("$(MOTOR)/db/motorUtil.db", "P=IOC:")
|
||||
|
||||
# This is for WIN32, local serial ports not supported. Must use IP terminal server.
|
||||
|
||||
# Newport MM3000 and MM4000/5/6 driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!MM3000Setup(1, 10)
|
||||
MM4000Setup(1, 10)
|
||||
|
||||
# Newport MM3000 and MM4000/5/6 driver configuration parameters:
|
||||
# (1) controller# being configured
|
||||
# (2) ASYN port name
|
||||
# (3) address (GPIB only)
|
||||
#!MM3000Config(0, "a-Serial[0]")
|
||||
#!drvMM3000debug=4
|
||||
MM4000Config(0, "L0")
|
||||
#!var drvMM4000debug 4
|
||||
|
||||
# Newport PM500 driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!PM500Setup(1, 10)
|
||||
|
||||
# Newport PM500 configuration parameters:
|
||||
# (1) controller# being configured,
|
||||
# (2) ASYN port name
|
||||
# (3) address (GPIB only)
|
||||
#!PM500Config(0, "L0")
|
||||
#!var drvPM500debug 4
|
||||
|
||||
# IMS IM483 driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
# SM - single mode PL - party mode
|
||||
#!IM483SMSetup(1, 10)
|
||||
#!IM483PLSetup(1, 10)
|
||||
|
||||
# IMS IM483 configuration parameters:
|
||||
# (1) controller# (chain#) being configured,
|
||||
# (2) ASYN port name
|
||||
# SM - single mode PL - party mode
|
||||
#!IM483SMConfig(0, "L0")
|
||||
#!var drvIM483SMdebug 4
|
||||
#!IM483PLConfig(0, "L0")
|
||||
#!var drvIM483PLdebug 4
|
||||
|
||||
# MCB-4B driver setup parameters:
|
||||
# (1) maximum # of controllers,
|
||||
# (2) motor task polling rate (min=1Hz, max=60Hz)
|
||||
#!MCB4BSetup(1, 10)
|
||||
|
||||
# MCB-4B driver configuration parameters:
|
||||
# (1) controller
|
||||
# (2) ASYN port name
|
||||
#!MCB4BConfig(0, "L0")
|
||||
#!asynOctetSetInputEos("L0",0,"\r")
|
||||
#!asynOctetSetOutputEos("L0",0,"\r")
|
||||
#!var drvMCB4BDebug 4
|
||||
|
||||
# Newport ESP300 driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!ESP300Setup(1, 10)
|
||||
|
||||
# Newport ESP300 driver configuration parameters:
|
||||
# (1) controller# being configured,
|
||||
# (2) ASYN port name
|
||||
# (3) address (GPIB only)
|
||||
#!ESP300Config(0, "L0")
|
||||
#!var drvESP300debug 4
|
||||
|
||||
# MicroMo MVP2001 driver setup parameters:
|
||||
#
|
||||
# NOTE: The 1st controller on each chain should have it's address = 1.
|
||||
# The rest of the controllers on a chain should follow sequentially.
|
||||
#
|
||||
#
|
||||
# int MVP2001Setup(int num_cards, /* number of CHAINS of controllers */
|
||||
# int scan_rate) /* polling rate (Min=1Hz, max=60Hz) */
|
||||
#!MVP2001Setup(1, 10)
|
||||
|
||||
# int MVP2001Config(int card, /* CHAIN being configured */
|
||||
# (2) ASYN port name
|
||||
#!MVP2001Config(0, "L0")
|
||||
#!drvMVP2001debug=4
|
||||
|
||||
# PI C-844 driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!PIC844Setup(1, 10)
|
||||
|
||||
# PI C-844 driver configuration parameters:
|
||||
# (1) controller# being configured,
|
||||
# (2) ASYN port name
|
||||
# (3) address (GPIB only)
|
||||
#!PIC844Config(0, "L0")
|
||||
#!var drvPIC844debug 4
|
||||
|
||||
# Micos MoCo driver setup parameters:
|
||||
# Load MicosSetup once.
|
||||
# (1) max # of controller groups. Controller groups are per serial
|
||||
# port.
|
||||
# (2) max # axes per controller group. Maximum 16. (addr 0-15)
|
||||
# (3) motor task polling rate (min=1Hz, max=60Hz, 10Hz works well)
|
||||
# Example:
|
||||
# MicosSetup(1, 2, 10) 1 group. 2 axes (controllers) in the group.
|
||||
# 10Hz poll.
|
||||
#!MicosSetup(1, 2, 10)
|
||||
|
||||
# Micos MoCo driver configuration parameters:
|
||||
# Load one MicosConfig for each group of Micos drivers.
|
||||
# (1) "Controller group" number
|
||||
# (2) ASYN port name
|
||||
#!MicosConfig(0, "L0")
|
||||
#!var drvMicosDebug 4
|
||||
|
||||
# IMS MDrive driver setup parameters:
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!MDriveSetup(1, 10)
|
||||
|
||||
# IMS MDrive driver configuration parameters:
|
||||
# (1) controller# being configured,
|
||||
# (2) ASYN port name
|
||||
#!MDriveConfig(0, "L0")
|
||||
#!var drvMDrivedebug 4
|
||||
|
||||
# Faulhaber MCDC2805 driver setup parameters:
|
||||
# (1)Max. controller count
|
||||
# (2)Polling rate
|
||||
#!MCDC2805Setup(1, 10)
|
||||
|
||||
# Faulhaber MCDC2805 driver configuration parameters:
|
||||
# (1)Card being configured
|
||||
# (2)# modules on this serial port
|
||||
# (3)asyn port name
|
||||
#!MCDC2805Config(0, 1, "L0")
|
||||
#!var drvMCDC2805debug 4
|
||||
|
||||
# The MCDC2805 driver does not set end of string (EOS).
|
||||
#!asynOctetSetInputEos("L0",0,"\r")
|
||||
#!asynOctetSetOutputEos("L0",0,"\r")
|
||||
|
||||
|
||||
# Aerotech Ensemble digital servo controller Setup
|
||||
# (1) maximum number of controllers in system
|
||||
# (2) motor task polling rate (min=1Hz,max=60Hz)
|
||||
#!EnsembleSetup(1, 10)
|
||||
|
||||
# Aerotech Ensemble digital servo controller Configure
|
||||
# (1) controller# being configured,
|
||||
# (2) asyn port name (string)
|
||||
#!EnsembleConfig(0, "a-Serial[0]")
|
||||
|
||||
|
||||
# Asyn-based Motor Record support
|
||||
# (1) Asyn port
|
||||
# (2) Driver name
|
||||
# (3) Controller index
|
||||
# (4) Max. number of axes
|
||||
#!drvAsynMotorConfigure("ANC150","motorANC150",0,1)
|
||||
|
||||
|
||||
iocInit
|
||||
|
||||
# motorUtil (allstop & alldone)
|
||||
motorUtilInit("IOC:")
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
errlogInit(5000)
|
||||
< envPaths
|
||||
# Tell EPICS all about the record types, device-support modules, drivers,
|
||||
# etc. in this build from CARS
|
||||
dbLoadDatabase("../../dbd/WithAsyn.dbd")
|
||||
WithAsyn_registerRecordDeviceDriver(pdbbase)
|
||||
|
||||
### Motors
|
||||
dbLoadTemplate "motor.substitutions.xps"
|
||||
|
||||
dbLoadTemplate "XPSAux.substitutions"
|
||||
|
||||
# cards (total controllers)
|
||||
XPSSetup(1)
|
||||
|
||||
# card, IP, PORT, number of axes, active poll period (ms), idle poll period (ms)
|
||||
XPSConfig(0, "newport-xps3", 5001, 3, 10, 5000)
|
||||
|
||||
# asynPort, IP address, IP port, poll period (ms)
|
||||
XPSAuxConfig("XPS_AUX1", "newport-xps3", 5001, 50)
|
||||
#asynSetTraceMask("XPS_AUX1", 0, 255)
|
||||
#asynSetTraceIOMask("XPS_AUX1", 0, 2)
|
||||
|
||||
# asyn port, driver name, controller index, max. axes)
|
||||
drvAsynMotorConfigure("XPS1", "motorXPS", 0, 3)
|
||||
XPSInterpose("XPS1")
|
||||
|
||||
# card, axis, groupName.positionerName
|
||||
XPSConfigAxis(0,0,"GROUP1.POSITIONER",20480)
|
||||
XPSConfigAxis(0,1,"GROUP2.POSITIONER1",6768)
|
||||
XPSConfigAxis(0,2,"GROUP2.POSITIONER2",20480)
|
||||
|
||||
#asynSetTraceMask newport-xps3:5001:0 0 255
|
||||
#asynSetTraceIOMask newport-xps3:5001:0 0 2
|
||||
#asynSetTraceMask newport-xps3:5001:1 0 255
|
||||
#asynSetTraceIOMask newport-xps3:5001:1 0 2
|
||||
#asynSetTraceMask XPS1 0 255
|
||||
#asynSetTraceIOMask XPS1 0 2
|
||||
#asynSetTraceMask XPS1 1 255
|
||||
#asynSetTraceIOMask XPS1 1 2
|
||||
#asynSetTraceMask XPS1 2 255
|
||||
#asynSetTraceIOMask XPS1 2 2
|
||||
#asynSetTraceMask newport-xps3:5001:3 0 255
|
||||
#asynSetTraceIOMask newport-xps3:5001:3 0 2
|
||||
|
||||
dbLoadRecords("$(MOTOR)/motorApp/Db/trajectoryScan.db", "P=IOC:,R=traj1,NAXES=2,NELM=2000,NPULSE=2000,DONPV=13LAB:str:EraseStart,DONV=1,DOFFPV=13LAB:str:StopAll,DOFFV=1")
|
||||
|
||||
iocInit
|
||||
|
||||
seq(XPS_trajectoryScan,"P=IOC:,R=traj1,M1=m2,M2=m3,IPADDR=164.54.160.34,PORT=5001,GROUP=GROUP2,P1=POSITIONER1,P2=POSITIONER2")
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
#errlogInit(5000)
|
||||
< envPaths
|
||||
# Tell EPICS all about the record types, device-support modules, drivers,
|
||||
# etc. in this build from CARS
|
||||
dbLoadDatabase("../../dbd/WithAsyn.dbd")
|
||||
WithAsyn_registerRecordDeviceDriver(pdbbase)
|
||||
|
||||
### Motors
|
||||
dbLoadTemplate "motor.substitutions.xps3"
|
||||
|
||||
dbLoadTemplate "XPSAux.substitutions"
|
||||
|
||||
# asyn port, IP address, IP port, number of axes, active poll period (ms), idle poll period (ms)
|
||||
XPSConfig("XPS1", "164.54.160.180", 5001, 6, 20, 500)
|
||||
|
||||
# asynPort, IP address, IP port, poll period (ms)
|
||||
XPSAuxConfig("XPS_AUX1", "164.54.160.180", 5001, 50)
|
||||
#asynSetTraceMask("XPS_AUX1", 0, 255)
|
||||
#asynSetTraceIOMask("XPS_AUX1", 0, 2)
|
||||
|
||||
# XPS asyn port, axis, groupName.positionerName, stepSize
|
||||
XPSConfigAxis("XPS1",0,"FINE.X", 100000) # VP-25XL
|
||||
XPSConfigAxis("XPS1",1,"FINE.Y", 50000) # VP-5ZA
|
||||
XPSConfigAxis("XPS1",2,"THETA.POSITIONER", 2000) # URS75CC
|
||||
XPSConfigAxis("XPS1",3,"COARSEX.POSITIONER", 2000) # ILS200CC
|
||||
XPSConfigAxis("XPS1",4,"COARSEY.POSITIONER", 2000) # ILS200CC
|
||||
XPSConfigAxis("XPS1",5,"COARSEZ.POSITIONER", 5000) # IMS300CC
|
||||
|
||||
XPSEnableSetPosition(XPS1, 0)
|
||||
XPSSetPositionSettlingTime(XPS1, 200)
|
||||
|
||||
iocInit
|
||||
|
||||
# This IOC does not use save/restore, so set values of some PVs
|
||||
dbpf("IOC:m1.RTRY", "0")
|
||||
dbpf("IOC:m1.TWV", "0.1")
|
||||
dbpf("IOC:m2.RTRY", "0")
|
||||
dbpf("IOC:m2.TWV", "0.1")
|
||||
dbpf("IOC:m3.RTRY", "0")
|
||||
dbpf("IOC:m3.TWV", "0.1")
|
||||
dbpf("IOC:m4.RTRY", "0")
|
||||
dbpf("IOC:m4.TWV", "0.1")
|
||||
dbpf("IOC:m5.RTRY", "0")
|
||||
dbpf("IOC:m5.TWV", "0.1")
|
||||
dbpf("IOC:m6.RTRY", "0")
|
||||
dbpf("IOC:m6.TWV", "0.1")
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user