NASA/TM-2003-212377 

A Programmable System for Motion Control 

Brent C. Nowlin 

Glenn Research Center, Cleveland, Ohio 

April 2003 

https://ntrs.nasa.gov/search.jsp?R=20030055620 2018-05-15T16:37:26+00:00Z
The NASA STI Program Office . .. in Profile 

Since its founding, NASA has been dedicated to 

the advancement of aeronautics and space 

science. The NASA Scientific and Technical 

Information (STI) Program Office plays a key part 

in helping NASA maintain this important role. 

The NASA STI Program Office is operated by 

Langley Research Center, the Lead Center for 

NASA's scientific and technical information. The 

NASA STI Program Office provides access to the 

NASA STI Database, the largest collection of 

aeronautical and space science STI in the world. 

The Program Office is also NASA's institutional 

mechanism for disseminating the results of its 

research and development activities. These results 

are published by NASA in the NASA STI Report 

Series, which includes the following report types: 

• TECHNICAL PUBLICATION. Reports of 

completed research or a major significant 

phase of research that present the results of 

NASA programs and include extensive data 

or theoretical analysis. Includes compilations 

of significant scientific and technical data and 

information deemed to be of continuing 

reference value. NASA's counterpart of peerreviewed formal professional papers but 

has less stringent limitations on manuscript 

length and extent of graphic presentations. 

• TECHNICAL MEMORANDUM. Scientific 

and technical findings that are preliminary or 

of speCialized interest, e.g., quick release 

reports, working papers, and bibliographies 

that contain minimal annotation. Does not 

contain extensive analysis. 

• CONTRACTOR REPORT. Scientific and 

technical findings by NASA-sponsored 

contractors and grantees. 

• CONFERENCE PUBLICATION. Collected 

papers from scientific and technical 

conferences, symposia, seminars, or other 

meetings sponsored or cosponsored by 

NASA. 

• SPECIAL PUBLICATION. Scientific, 

technical, or historical information from 

NASA programs, projects, and missions, 

often concerned with subjects having 

substantial public interest. 

• TECHNICAL TRANSLATION. Englishlanguage translations of foreign scientific 

and technical material pertinent to NASA's 

mission. 

Specialized services that complement the STI 

Program Office's diverse offerings include 

creating custom thesauri, building customized 

databases, organizing and publishing research 

results ... even providing videos. 

For more information about the NASA STI 

Program Office, see the following: 

• Access the NASA STI Program Home Page 

at http://www.sti.nasa.gov 

• E-mail your question via the Internet to 

help@sti.nasa.gov 

• Fax your question to the NASA Access 

Help Desk at 301-621-0134 

• Telephone the NASA Access Help Desk at 

301-621-0390 

• Write to: 

NASA Access Help Desk 

NASA Center for AeroSpace Information 

7121 Standard Drive 

Hanover, MD 21076 
NASA/TM-2003-212377 

A Programmable System for Motion Control 

Brent C. Nowlin 

Glenn Research Center, Cleveland, Ohio 

Prepared for the 

49th International Instrumentation Symposium 

cosponsored by the Aerospace Industries and Test Measurement Divisions 

of the Instrumentation, Systems, and Automation Society 

Orlando, Florida, May 4-8, 2003 

National Aeronautics and 

Space Administration 

Glenn Research Center 

April 2003 
The Propulsion and Power Program at 

NASA Glenn Research Center sponsored this work. 

Trade names or manufacturers' names are used in this report for 

identification only. This usage does not constitute an official 

endorsement, either expressed or implied, by the National 

Aeronautics and Space Administration. 

Available from 

NASA Center for Aerospace Information 

7121 Standard Drive 

National Technical Information Service 

5285 Port Royal Road 

Hanover, MD 21076 Springfield, VA 22100 

Available electronically at http: //glh·s.grc.nasa.gov 

J 
----.. 

A Programmable System for Motion Control 

Brent C. Nowlin 

National Aeronautics and Space Administration 

Glenn Research Center 

Cleveland, Ohio 44135 

KEYWORDS 

Motion control, Programmable, Motion profile, Programmable logic controller 

ABSTRACT 

The need for improved flow measurements in the flow path of aeronautics testing facilities has 

led the NASA Glenn Research Center to develop a new motion control system. The new system 

is programmable, offering a flexibility unheard of in previous systems. The motion control 

system is PLC-based, which leads to highly accurate positioning ability, as well as reliability. 

The user interface is a software-based HMI package, which also adds flexibility to the overall 

system. The system also has the ability to create and execute motion profiles. This paper 

discusses the system's operation, control implementation, and experiences. 

INTRODUCTION 

Applications requiring precise motion control have become more and more common 

over the last decade. These applications include control of equipment used in assembly 

processes, movement of products, robotics, and countless others. These applications frequentl y 

require a motion control system that is versatile, user friendly, and able to be adapted to 

individual uses and applications. Moreover, many of these motion control applications demand 

more stringent control of the axes to a degree unheard of ten years ago. A good example of 

these more stringent requirements includes the movement of measurement probes in aeronautic 

applications. These measurement probes are used to map various physical aspects of a flow 

path. A strong driver for these highly precise motion control requirements is the validation of 

numerical tools used for the design and analysis of turbomachinery, which has required 

increasingly more detailed surveys of the flow path. To meet these demands, a Programmable 

Motion System has been developed to be user-friendly and versatile, giving the user many 

features not available in previous systems. Although originally developed to control probe 

actuators, the Programmable Motion System can be used to control action of movable stator 

vanes, laser tables, or any other device that accepts a ±I 0 VDC signal. 

NASAffM-2003-212377 
One of the best features is the minimal communications overhead for probe actuation 

systems, resulting in a measured speed of 5 seconds per data point. In addition to reducing the 

time required to take research data, real-time editing of axis parameters, integrated profile 

programming, and point and click operation all serve to simplify operation. The system's 

ability to incorporate auxiliary positioning devices on the actuator at a point closer to the 

position of interest (as opposed to the motor), and its continuous communication with external 

data, control or other systems also help to obtain accurate and repeatable results. Additional 

features include the ability to program test-specific functions in the field, the system's 

independence of specific motor drives or motors, ease of troubleshooting, and its ability to be 

upgraded or expanded. Recognizing the benefits of a motion control system using hardware 

and software that was familiar to other engineers in the field, the system was designed to 

accommodate 18 axes of motion. A detailed description of all of the system features will be 

presented in this report, as well as an overview of the system's operation and design. 

MOTION SYSTEM OPERATION 

The programmable motion system is a design conslstmg of three mam parts: a 

programmable logic controller (PLC) running the motion system control program, a PC 

running a human-machine interface application, and a motor/drive system (along with its 

associated gears, baIIscrews, and other external components). The motion system was designed 

with the goal of providing a system that was flexible and easily modified by engineers in the 

field. To this end, the system's two main control portions, the PLC and the HM!, are 

programmed in a modular fashion, in programming languages that are widely accepted and 

understood by engineers. In addition to the basic programming structure lending itself to the 

system flexibility, the third portion of the system, the motor/drive system, can be any system of 

devices that accept a standard ±10 VDC velocity signal. The motors and drives could be large 

machines or small machines, or stepping motors or brushless servos. 

The types of movement that are available to the user are given in Table 1. Both the 

incremental move amount and the commanded absolute position can be entered for each 

individual axis, or for a group of axes simultaneously. Jogging an axis refers to the movement 

of selected axes at the jog speed only while the jog button is activated (clicked). An example of 

positioning based on an external parameter will be discussed later. The speeds at which all the 

motion occurs is the positioning speed for each axis, with the exception of jogging. Jogging 

occurs at the jog speed for each axis. 

One of the most crucial features of the system is the ability to execute motion profiles 

that are written in Microsoft Excel. The profiles incorporate a set of intuitive commands, 

which are executed sequentially. Most of the motion commands that are available to the user 

under direct control are also available as profile commands. Due to the asynchronous nature of 

the motion system components (PLC and the PC running the HM! software and Excel), 

extensive handshaking is used to ensure that the profiles are always executed correctly, 

regardless of timing or other issues. The handshaking ensures determinism of the entire 

system. The motion system's profile software is written in a modular approach, to allow the 

easy addition of any command not currently available. 

NASAITM-2003-212377 2 
 .~ .. _. 

Another feature is giving the user the ability to change positioning speed, jog speed, inposition band, following error for selected axes in real time, regardless of whether an axis is 

enabled or disabled, at rest or in motion. These parameters, as well as the commanded position 

(absolute positioning) and the incremental move amount, can all be set in either engineering 

units or base units. Base units for an axis are generally units that are easy to measure, and can 

remain unchanged once the axis is set up. Typical examples may be units of inches or 

millimeters for a linear axis, or revolutions or degrees for a rotational axis. Engineering units are 

dependant upon an application, and may be percent span or some other appJication-dependant 

units. The standard conversion between base units and engineering units is a simple slope and 

offset. Other conversions can be easily programmed to suit individual application needs. 

Every parameter required for standard motion control is available to the user. These 

parameters are given in Table 2. In the unlikely event that a particular application requires the 

user to have the ability to set a parameter not already available, the motion system can easily 

be programmed in the field to provide it. 

Another feature that the motion system offers are the ability to display and reset fault 

conditions. The system also incorporates on-line help screens, which aid in the set up, 

debugging, and operation of the motion system. The help feature includes examples of profiles, 

as well as descriptions of all profile commands and their operation. 

One highly critical feature that is incorporated is the ability to communicate to other 

separate systems or devices in real time. These devices or systems may be closely linked to the 

motion system, or they could be completely autonomous and independent of the system. 

Examples include other PLCs controlling other systems, data acquisition systems, data archival 

and logging systems, or the Internet or an intranet. The performance and speed of the 

communication with these other systems is generally a function of the type of data being 

transmitted and the type of communication protocol. 

CONTROL SYSTEM DESCRIPTION 

The components of the motion system (the PLC, HMI, and the motor drive system) 

operate together to control the speed and position of the specified axes, as shown in the block 

diagram in Figure 1. The position control loop is accomplished in the PLC. The velocity 

control loop is performed in the motor drive system. Commands from the user are sent to the 

PLC via the HMI. The interface to the data acquisition system is performed through the PLC. 

The interface to user motion profiles is performed in the PC running the HMI application. This 

section will present system requirements and an overview of the PLC, motor drive system, and 

HMI, as well as profiles. 

The motion system requires a PLC using a Modicon Quantum 424 (or better) processor for 

proper operation, as well as one Quantwn motion control module per axis to be controlled. The 

HMI application is written using WonderWare's InTouch software. The link between the PLC and 

the HMI can either be performed through the high-speed serial data link or Ethernet protocol. 

The motion system will control the speed (and hence position) of any motor/drive that 

accepts a ±10 VDC velocity signal. The axis feedback device may be either the motor encoder 

or an auxiliary encoder. The selection of the type of encoder is used is set in the axis 

parameters. The typical control block diagram for one axis is shown in Figure 2. 

NASAffM-2003-212377 3 
PLC OVERVIEW 

The PLC uses a single axis motion control module to control the position loop of each 

axis. Motion commands are downloaded into the PLC's central processing unit (CPU), 

processed, and sent to the appropriate motion module. The motion control modules are 

intelligent modules that communicate to the CPU through the PLC backplane or through remote 

I/O communications. The communication between the CPU and the motion modules is bidirectional, with different CPU words being used for transmitted and received data from each 

module. For data being transmitted to the motion modules, a control word, a command word, and 

four data words are used for each axis. Similarly, for data being received from the motion 

modules by the CPU, a status word, a command echo word, and four data words are used for 

each axis. The motion system's PLC program uses handshaking to verify that all commands are 

received and executed properly. The motion system's PLC program also converts the data from 

the user inputs (at the HMI) to the format required by the motion modules. 

The typical operation of sending a command from the CPU to a motion module for a 

given axis is to load the axis' data words with any required data in the axis' four command 

data words, then to load the command's opcode in the axis' command word. Then, the CPU 

must wait for the contents of the command echo word to be the same as the command opcode. 

After that, the CPU saves any necessary returned information from the motion module and 

proceeds to the next command opcode for the axis. The PLC program uses a module status 

register to keep track of which opcode is currently being sent to the motion module, and hence 

which operation the axis is currently performing. A simple "idle" cycle, or routine, is 

performed under normal operation. If a parameter is changed or motion is to be executed, the 

CPU interrupts this cycle, performs the operation, and then resumes the cycle. 

The data registers to and from the motion module are used to send or receive desired 

information to or from the motion module. The high end of the range of numbers used in the 

data registers corresponds to (2A31/position encoder counts per base unit), or (2147483648/ 

position encoder counts per base unit). 

The PLC CPU uses battery-backed RAM to store the user program, as well as the 

contents of the registers used. The PLC motion modules, on the other hand, use volatile 

memory to store the settings for each axis. PLC software, along with the HMI software, allows 

the user to download the parameters for all defined axes at once, or for a particular individual 

axis. The ability to download the parameters for all the axes is especially useful in the event of 

a power loss to the system, as the motion control modules lose their settings on power loss. 

MOTOR DRIVE OVERVIEW 

The motion system is capable of controlling the speed (and thus position) of any 

motor/drive that accepts a ± 1 0 VDC velocity signal, allowing a wide variety of manufacturers to 

be used. The applicable parameters are easily set in the motion system parameters. Many 

manufacturers also feature software-based tools for motor drive setup, tuning, configuration, 

monitoring, etc. 

Most motor drives make the motor encoder signal available to any other device. The 

motion system allows for the drive's motor encoder output signals to be wired into the PLC 

motion control modules. The feedback configuration for each axis is set up to use the motor 

NASAfTM-2003-212377 4 
encoder or an auxiliary encoder for velocity control, posltlon loop control, and motor 

commutation. In the first system, the encoders on the DC brushless servo motors were used 

simply for velocity control (and commutation) within the motor drive, while the motion 

modules performed the position control for each axis, based on the auxiliary encoder. In this 

configuration, the drives perform the velocity loop control, and the motion modules in the PLC 

perform the position loop control. The motion modules have the ability to perform velocity 

loop control, if desired. 

HMI OVERVIEW 

The HMI software consists of two main menus that are used to configure and run the 

axes. The Main Menu is used to set the system name, axis names and parameters, and system 

parameter file name. The Run Menu is used to actually command the axes to perform motion 

commands, set some axis parameters, and execute motion profiles. Each menu will be 

discussed separately. 

MAIN MENU 

The user can also download axis parameters to defined axes all at once, or only for a 

selected axis. The HMI stores the parameters for each axis in a specified system parameter file 

in comma separated value (.CSV) format, and can be printed viewed, printed, or edited from 

Microsoft Exce1. If the parameters for a specific axis are changed, the changes also are written 

to the specified system parameter file. Multiple system parameter files may be defined, and the 

system allows the user to select a desired system parameter file, edit it, and download it to the 

PLC CPU and the motion control modules. A view of the Main Menu is shown in Figure 3. 

The system also allows the user to edit parameters on a specific axis of motion. 

Clicking on the specific axis's parameter edit button will cause the system to read the 

parameters for the axis from the PLC CPU (stored in the CPU's battery-backed memory), 

display them, and allow the user to edit them. The parameters are displayed and edited in base 

unit format. The parameters can be downloaded with the fault bit either enabled or disabled. 

The parameters that are read from the PLC are read from the PLC CPU, not the motion control 

module for the specified axis. Allowing the user to manipulate individual parameters is 

especially useful for setting up an axis for a specific application, or for making minor changes 

to an axis' settings. A view of the main menu, with an axis open for parameter editing, is 

shown in Figure 4. 

Other parameters that may be set are the system application's title, the system parameter 

.CSV file name, the name for each axis, and a window for system parameters. These parameters, 

as well as all axis parameters mentioned above, can be edited from the main menu. The HMI 

saves the title, system parameter .CSV file name, and axis names. The commonly changed 

parameters of axis positioning and jog speed commanded position, incremental move amount, 

following error, in-position band, and nulling deadband can also be set from the run menu. 

NASAffM-2003-212377 5 
RUN MENU 

Controlling the actual movement of the axes is performed from the Run Menu. The Run 

Menu is entered from the Main Menu. The Run Menu consists of an Axis Table, an Axis 

Control Panel, and an area for user defmed functions. A view of the Run Menu is shown in 

Figure S. A view of the Run Menu, along with the Axis Parameters and the Profile Parameters 

windows, is shown in Figure 6. The Axis Parameters and Profile Parameters windows will be 

discussed later. For the purposes of clarity, button labels are referred to in italicized, 

underlined print. 

On the run menu, the user can change the parameters of in-position band, following 

error, positioning speed, and jog speed. Parameter changes only affect the axes that are 

selected by the user, who selects or de-selects an axis by clicking on the axis' name (selected 

axes appear in a yellow box, while unselected axes appear in a gray box). The user can input 

axis parameters in either easily measured base units, which are generally invariant from one 

application to another, or engineering units, which are dependent upon a particular test. The 

default conversion from base units (BU) to engineering units (EU) is simply a linear slope and 

offset conversion. Other types of conversions may be easily programmed. If Axis 1 is in base 

units and Axis 2 is in engineering units, the value entered for any parameter will be in base 

units for Axis 1, and engineering units for Axis 2. It is recommended that, after the axes have 

been set up, the axes should be left in engineering units mode for most operations. 

Axis motion follows a similar operation as setting axis parameters. All motion 

commands are performed on selected axes only. The standard motions are jog positive or 

negative, incremental move positive or negative, move to commanded position, and home 

axes. The commanded position or incremental move amount for a selected axis or axes can be 

input in base units or engineering units (depending on which mode the axis is in). Motion for 

any axis need not be complete before another move command is entered for any axis, including 

the axis currently in motion. This feature is due to the fact that motion commands are 

downloaded to the axis MSB modules almost instantaneously, and the PLC CPU can then 

download additional motion commands (or any other command, such as change a parameter) 

subsequently. If a new move command is issued before the axis has completed the completed 

the current motion, the axis simply immediately starts executing the new motion command; the 

old command is overwritten. 

If the user desires, additional features may be programmed. The Run Menu window is 

set up such that adequate room is left near the bottom of the menu to program any desires 

features or functions. Buttons, HMI variable values, and PLC register values are some 

examples of items that may be programmed. The motion system lends itself well to user 

programming of the system. 

Axis Table 

The axis table lists, for each axis, axis number, axis name, axis mode, axis current 

position (in base units or engineering units), negative and positive limit switch status, homing 

and 'homed since last enable' indications, moving indication, in-position bit indication, and 

drive enable indication. Axes are selected by clicking on the desired axis name(s). Any or all 

axes may be selected at any time. If an axis is selected, the box that the axis name appears in is 

yellow; otherwise the box is gray. All axis operations are performed on the selected axes only; 

the other axes are left unchanged. 

NASAffM- 2003-212377 6 
There are several buttons associated with the axis table. The Show/Hide Axis 

Parameters is a toggle button that opens (or hides) a window that gives the parameters that are 

of interest to the user while operating the axes, such as speeds and commanded move amounts, 

in either base units (BU) or engineering units (EU), depending on the selected units for each 

axis. The Show/Hide Axis Move Parameters is opens (or hides) a window giving only the 

incremental move amount and commanded position for each axis, either in base units (BU) or 

engineering units (EU), depending on the selected units for each axis. The Show/Hide Axis 

Errors button and Reset All Axes buttons are available for fault detecting and recovery, if 

needed. The Select All Axes button simply selects all axes that have been named on the System 

Configuration Table on the Main Menu, while the Un-Select All Axes button un-selects all axes, 

regardless of whether any individual axis was selected or not. The Disable all Motion and 

Profiles button disables all axes immediately and stops the profile execution, immediately 

stopping all motion and resetting motion system control variables. The Main Menu button 

sends the user back to the Main Menu, not affecting any motion or profile currently underway. 

Axis Control Panel 

As mentioned above, the axis positioning and jog speed, commanded posltlon, 

incremental move amount, following error, in-position band, and nulling deadband for any or 

all axes can be set from the run menu. Toggling selected axes from one units mode (base units 

or engineering units) to the other is also accomplished from the Run Menu, as well as other 

functions that will be described below. 

The Enable Axis button will enable all selected axes, shown by the "enbl" symbol in the 

axis mode space on the axis table. Selected axes must be enabled before any motion is executed. 

The Home Axis button commands the axis to enter its homing routine and the word "home" will 

appear in the axis mode space on the axis table. The Qffbutton will disable the motor drives for 

the selected axes, and "off' will appear in the axis mode space on the axis table. 

The Increment button opens a windows allowing the user to set the incremental move 

amount for selected axes, in either base units or engineering units (depending on the mode of 

each selected axis). The user can move the selected axes incrementally in the positive or 

negative direction, at the selected positioning speed, by clicking the up or down arrow buttons 

next to the Increment button, and the axis mode is set to either increment positive (symbol 

"incr+") or increment negative ("incr-"), as displayed in the axis mode space on the axis table. 

As mentioned previously, the axes need not complete their current motion before another 

motion command is issued to any axis, including the selected axes. 

On the run menu, the jog speed can be set for the selected axes, in either base units or 

engineering units (depending on the mode of each selected axis), by clicking the Jog button. As 

long as either up or down arrow next to the Jog button is clicked, the selected axes will move 

in the specified direction at the specified jog speed. If the axis is jogging, it is considered in 

either jog positive (symbol "jog+") or jog negative (symbol "jog-"), and once jog motion has 

completed, the axis is returned to the mode it was in prior to the jog command being issued. 

The Command Posn button allows an axis to set the commanded position for the 

selected axes, in either base units or engineering units (depending on the mode of each selected 

axis). To move in positioning mode, selected axes must be placed in position mode by clicking 

on the Mode button next to Command Posn button, causing "posn" to appear in the axis status 

space on the axis table. Movement to the commanded position starts when the Go To button is 

NASAffM-2003-212377 7 
clicked. The axes need not complete their current motion before another motion command is 

issued to any axis, including the selected axes. 

A good example of the motion system's flexibility is the nulling mode. As mentioned 

previously, the motion control system was originally developed to control the movement of 

flow measurement probes. Nulling mode allows the axis to follow a signal that is external to 

the axis motion control module, usually a pressure transducer signal measuring the pressure 

differential across a yaw probe. An axis is placed in null mode when the null mode button next 

to the Nulling Deadband select button is clicked, and the word "null" appears in the axis status 

space on the axis table. The axis motion is then controlled by a true proportional-integralderivative loop around the positioning loop for the axis. The PID loop takes the actual 

differential pressure transducer signal (converted to engineering units of pressure) and 

calculates a desired command position based on the PID loop setpoint. The system allows the 

user to set the PID parameters of proportional gain, integral time constant, and derivative time 

constant for any axis by clicking the Edit button next to the Nulling Deadband button. Clicking 

the Nulling Deadband button itself allows the user to change the delta-pressure deadband over 

which the motion control system considers the selected axes to be in positioning (when those 

axes are in nulling mode). 

Clicking the Pos Speed button allows the user to change the positioning speed for the 

selected axes, in either base units or engineering units (depending on the mode of each selected 

axis). The positioning speed for any axis may be changed at any time. Positioning speed is the 

speed at which incremental moves, absolute positioning moves, and homing operations are 

performed. 

At any time, the difference between commanded position and actual position is defmed 

as the following error. Using the following error fault is useful if a binding problem is 

suspected, as the actual following error will exceed the allowable following error. The user can 

change the allowable following error for selected axes, in either base units or engineering units 

(depending on the mode of each selected axis), by clicking on the Following Err button. The 

new allowable following error is entered on the direct data entry keypad in either engineering 

units or base units, depending on the axis units selected. The allowable following error for any 

axis may be changed at any time. In the default fault mask configuration, the following error 

fault is disabled (masked out). 

When the actual position for an axis falls inside a range around the target position, the 

axis is considered to be in position, and the in-position bit is set for that axis. The in-position 

bit is used especially for profile operations. The user can change the in-position band, or range, 

for selected axes by clicking on the In-Posn band button. The new in-position band is entered 

on the direct data entry keypad in either engineering units or base units, depending on the axis 

mode selected. The in-position band for any axis may be changed at any time. 

As mentioned previously, parameters for selected axes may be entered in either base 

units or engineering units, depending on the units mode for the selected axes. The units are 

changed for selected axes by clicking on the EU/BU toggle button. If an axis was previously in 

EU mode, it will now be in BU mode, and vice versa. Parameters entered are in the units 

format of the selected axes. 

The PLC is capable of communicating with external systems, such as other PLCs or data 

acquisition systems. The original motion system was designed to communicate with the standard 

system used in aeronautics facilities at NASA GRC, known as ESCORT. There are several data 

system-related functions that are available directly from the run menu. The Escort OnlOffbutton 

NASAfTM- 2003-212377 8 
is used to toggle the motion system between attempting to communicate with the data system, 

and simulating communications with Escort. The Single Reading button initiates a single data 

system recording from the motion system. Other functions can be easily programmed to suit 

individual needs. 

The System Help button opens a series of windows that are used for displaying general 

system help screens. Buttons for the next or previous help page allow the user to access all of 

the help screens. The help screens can be opened or closed at any time without affecting axis 

movement. The help windows can be altered, or additional help windows can be created, to 

suit individual needs. 

MOTION PROFILES 

Motion profiles are written in Microsoft Excel, and folIow a specified format that 

allows the motion system to interpret the contents of the profile. Table 3 gives a sample motion 

profile. All data entered in the motion profile is considered case-insensitive. All of the 

commonly used manual commands, as well as many profile-based commands, are available to 

the user for any motion profile. To facilitate profile operations, a series of buttons to perform 

often used profile operations are provided. Those buttons are Select Profile, Start Profile, 

Show(profile) Params, and Profile Help. 

In the motion profile, the first column, column A, is used to hold the desired command 

for the motion system to execute. The operands for the command are contained in the second 

through the nineteenth columns, or columns B through S. The motion system will step through 

the motion profile, executing one row at a time. Profile execution will start at row 1, consisting 

of determining the command in row 1, and then executing the command entered at row 1. The 

HMI will then repeat this sequence for row 2, then row 3, etc, until either a blank row is 

encountered or the "end" command is found in column A. 

After reading the contents of a particular row, the HMI runs a script to determine the 

desired operation for that row, based on the contents of the first column. If the cell in the first 

column of the desired row contains a valid motion system profile command, the appropriate 

script is opened to execute the desired command. All valid commands have an associated HMI 

condition script to execute the command. Profile commands are discussed later. 

After the appropriate script is run to execute the desired command, another script is 

executed to read the next row. Once the contents of the next row have been read, the system 

executes a script that determines the desired operation. The process of reading the next line, 

determining the command, and executing ,it, continues until either a blank cell in the first 

column is found, or the command "end" or "end profile" is entered in the first column. At that 

point, the motion system performs any operations required to complete data-taking tasks (or 

other tasks related to external systems), resets all necessary profile parameters, and ends the 

profile. Table 3 shows an example profile. 

NASAffM-2003-212377 9 
PROFILE COMMANDS 

The profile command scripts may be broken down to six main groups. For purposes of 

clarity, profile commands are in italicized. underlined print. The first group is used to select 

various axes. The axes are selected by name with the Select command. The names of the 

desired selected axes are entered in columns B through S. All of the defined axes are selected 

by using the select command with "all " in column B. All subsequent axis motion and axis 

mode commands will take place only on the selected axes. In addition, for the motion 

commands, the data entered in columns B through S corresponds to the axes specified in the 

last select command issued. For example, if a select command selected axis 2 in column M, 

then all move commands entered after that would have to specify the positioning data for 

axis 2 in column M. The axes specified in a select command can be entered in any order, and 

any column may be left blank. The column match between axis name specified in the select 

command and axis positioning move data exists until another select command is entered. 

The second group is used to enable or disable the selected axes, or set the motion mode 

or the units mode for the selected axes. Selected axes are enabled or disabled by the enable and 

disable commands, respectively. The axis mode for the selected axes is set to increment 

positive or increment negative with the incrp and incrn respectively, while absolute 

positioning is set using the posn command. Selected axes are placed in nulling mode through 

the null command. The units mode for the selected axes is set by the use of the eu or bu 

commands. The units and positioning mode for the selected axes is important, as the 

subsequent commands to actually execute the motion will use the units mode and positioning 

mode to implement that motion. 

The third group is used to actually move the selected axes. Several move commands are 

available, but they are dependent upon the mode the axis is currently in. The home command 

simply homes the selected axes. The gQ command sends the selected axes to a position based 

on the axis mode and the data entered for the specified axes. The columns are matched with the 

axis names by the previous select command (see Table 3). For example, if Axis 5 was selected 

in column J of the previous select command, and if Axis 5 was put in absolute positioning 

mode, then the go command would send Axis 5 to the position specified by the contents of 

column J. The data in column J would be interpreted as either engineering units or base units, 

depending on the mode of Axis 5 when the go command was issued. Frequently, if the motion 

system is being used in conjunction with an external system, external commands must be 

executed once the selected axes have moved to their respective commanded positions. 

Handshaking ensures that motion is complete prior to advancing in the profile. 

The fourth group is used to jump to different rows inside the profile. Several commands 

are available to aid in debugging and looping inside profiles. The jump to row N: makes the 

motion system start executing the profile command at the row (N) specified in column B. The 

jump next N command makes the motion system jump (forward) the number of rows specified 

in column B, and start executing the profile at that row. The label and jump label commands 

are used together, allowing the profile to jump back to a predefmed label. 

The fifth group is a group of commands that control other, external system parameters. 

Due to the programmable nature of the motion system, these commands can be programmed to 

meet individual needs. In the original system, these commands included storing and ending 

cyclic recordings, storing single data point recordings, calibrating data system components, 

and kill (abort) a cyclic recording. The capability to simulate external system behavior is also 

programmed, to aid the user in troubleshooting and debugging. 

NASAffM-2003-212377 10 
• 

Finally, the sixth group consists of all other commands available to the user, to give the 

system more flexibility and making it easier to use. The message command opens up a 

message window, and displays the message given in columns Band C in the profile. The pause 

command pauses the profile; profile execution resumes upon clicking the continue button in 

the profile parameters window. The no-op command is simply a delay in the profile execution, 

with the delay time being specified by the user. 

The profile parameter window allows the user to intervene in the execution of a profile, 

as well as view the profile parameters and the profile's execution. The window consists of three 

main areas. At the top, the state of the condition scripts used in the motion system is displayed. 

If a particular script is executing, its name is shown in red; if not, its name is shown in bl ue. 

The middle of the window consists of eight buttons. The Pause Profile button halts the 

profile's execution until the Continue Profile button is clicked. The Kill Profile button 

discontinues the execution of the current motion profile altogether. The Show Excel Params 

button opens a windows that displays the contents of columns B through S of the current row, 

and these items will update as the profile is being executed from row to row. The 

Force In-Posn button forces the motion system's in-position bit, which is useful if an axis is at 

a point where it can't set its own in-position bit (such as trying to find the axis null point in an 

area of turbulence). The Hide Window button hides the profile parameters window; the window 

can be displayed again by clicking on the Show Profile Params button on the Axis Control 

Menu. The Escort OnlOf[button toggles the external system (ESCORT) communications on or 

off, and is used identically to the "Escort On/Off' button described in General System Buttons. 

Lastly, the Spare button can be used for user-defined functions. 

The items on the bottom of the window are used to display the status of the parameters 

used for the handshaking, and the general profile status parameters. The profile parameters are 

the current row number, current command, and the whether the profile has been paused or 

killed. If a particular parameter is active (on), the name for that parameter is shown in red ; 

otherwise the parameter is shown in blue. The handshaking parameters are set by either HMI 

or the PLC, and are reset by the HMI scripts. These parameters work together to ensure that the 

profile does not advance to the next row before the current row has completed execution, and 

also work to insure that the external system has performed all of its necessary operations 

before advancing. 

As mentioned before, the motion system is written in a modular form. This type of 

programming greatly enhances the user's ability to modify or add functionality in the field. 

The profile programming is especially modular, allowing the user to add profile commands 

with a minimal change to the software application (both the PLC and the HMI) as a whole . 

NASAffM-2003-212377 11 
RECENT EXPERIENCE 

In the first system, the motion control system was used to control the position and 

velocity of nine axes, consisting of three sets of three-axis actuators. The three axes of 

movement on each set are radial (linear) motion, circumferential motion, and yaw (rotary) 

motion. The axes use DC brushless servo motors, incorporate auxiliary positioning encoders 

for the axis position and velocity feedback, and use limit (proximity) switches for home and 

end of travel. On the yaw axes, the differential pressure transducer signal is also included to 

measure the differential pressure across the actuator. 

While a general-purpose actuator can usually accomplish the radial and yaw motion of 

a measurement probe, fitting an actuator to provide circumferential motion is more specific to 

the research hardware, as the casing diameters where the actuators mount will change. The 

radial and yaw actuator assembly, as well as the circumferential drive motor and encoder, all 

attach to the circumferential actuator's movable carriage. The only piece of the circumferential 

actuator that is somewhat generic is the carriage, as the other pieces are dependant upon the 

radius of the casing where the actuator will mount. Set up of an axis can be accomplished 

either on the bench or while installed in place. Set up includes setting the limit and home 

switches, the base unit offset, and the conversion between base units and engineering units. 

The programmable motion system has thus far been to be reliable and quite userfriendly. The speed of taking data has been measurably increased, and is independent of the 

addition of more axes. Since the motion system is based on software and hardware that is 

familiar to other engineers, the ability to program additional features should prove to be quite 

useful as well. The system has been used in six test facilities at NASA GRC, and is scheduled 

to be used in several others. Applications external to NASA GRC are also being considered, 

due to the highly flexible nature of the system. The HMI and PLC software portions can be 

licensed from NASA GRC. 

The motion system's flexibility has already been proven with its modification to 

provide the positioning of the servo motors used in a thrust measurement stand. The servo 

motors control the thrust loads placed on the stand during its calibration. The motion system's 

software was modified to provide automated calibrations, allowing the calibrations to be 

performed with minimal operator involvement and extreme accuracy in terms of desired loads 

placed on the stand. 

Lastly, since the system is written in a modular, exportable format, a newer HMI 

interface software package is being investigated. It is hoped that a more modern package will 

incorporate much of the handshaking that is currently accomplished in programming, as well 

as overcome some of the other drawbacks of the current HMI package. 

NASAlTM-2003-212377 12 

• 
TABLE 1 - TYPES OF MOTION A V AILABLE 

MODE DESCRIPTION 

Absolute positioning Allows the user to move an axis to a user-defined absolute position, with respect to 

the axis home position 

Incremental Allows the user to move an axis a user-defined incremental amount (positive or 

negative) from the axis current position 

Jog Allows the user to move an axis (positive or negative) as long as the respective 

button is clicked 

Home Homes the axis 

TABLE 2 - USER-ACCESSffiLE AXIS PARAMETERS 

PARAMETER DESCRIPTION 

Speed Limit User-entered positioning and jog speeds have to be below this limit 

Maximum Speed Speed corresponding to 10 VDC 

Accel/decel rates Acceleration / Deceleration rates (base units/time units)/sec (separate) 

Pos/neg limits Software positive / negative end of travel limits 

EUIBU slope Engineering unit / base unit slope 

EU offset Engineering unjt offset 

Motor Direction Sets motor direction for positive travel (0 or 1) 

Aux Encdr cnts / rev Auxiliary encoder counts/revolution (used for homing) 

Mtr encdr cnts/rev Motor encoder counts / revolution (used for homing) 

Pos encdr cntslBU Positioning encoder counts /base unit 

BU offset Base unit offset (sets position when homed) 

Pos encdr dist units Positioning encoder distance uruts (inches, mm, revs, etc) 

Pos en cdr time units Positioning encoder time units (minutes or sec) 

PARAMETERS NOT NORMALLY REQUIRING CHANGE 

Fdbk encoder config Feedback encoder configuration (motor encoder or auxiliary encoder) 

Fdbk loss counts Amount of lost counts required to generate a fault 

Current limit Current limit in percent of max current 

Fault mask Bits to disable certain fa ult conditions 

Homing direction Direction wruch axis will home (positive or negative) 

Digital inlout mask Digital input / output masks (separate parameters) 

Control wd mask Mask for axis control word 

NASAlTM-2003-212377 l3 
TABLE 3 - EXAMPLE PROFILE 

COLUMN A COLUMN B COLUMNC COLUMN D COLUMNE ... COMMENTS 

message Sample profile for tech paper Simple message 

select Radial 6 Angle 6 B = Radial 6, 

D = Angle 6 

enable 

posn 

bu 

go 2.0 .2 Position move in BU 

select Angle 6 

go .1 Move only angle 6 

ED 

incrp Angle 6 increment 

positive 

go 45 Angle 6 increment 

positive 45 ED 

label Here Profile will stay in 

go 55 this loop 

pause indefinitely 

go - 55 (would have to be 

jump to label Here stopped by user) 

End of profile 

NASAffM-2003-212377 14 
z 

;J> 

~ 

I 

o 

o 

W 

I 

tv 

-tv 

w 

-...l 

-...l 

...... 

lJo 

MM 

S S 

B B 

FIGURE 1- MOTION SYSTEM BLOCK DIAGRAM 

Programmable Logic Controller 

(System Controller) 

MM MM MM 

S S 0 0 0 S S S S 

B B B B B B 

--. 

Additional 

Other I/O Modules 

Modules (As Required) 

CPU 

Human-Machine 

~ Interface 

High Speed 

Optional 1/0 Communications bus 

Switchesl Term Aux encoder Strip 

~~ PLC programmer 

(optional) 

r--Switches --. 

r-Auxillary 

encoder 

Axis Connector ./' '-- r--Optionall/O 

J 1 Motor Data system 

Connector encoder (or other) Data System (or other) 

Interface via Ethernet or other 

Motor 

Connector Motor 

Motor Drive 

Axis 
~ r/l 

~ 

f 

o 

o 

W 

I 

tv 

...... 

tv 

W 

-.J 

-.J 

...... 

0\ 

FIGURE 2 - TYPICAL MOTION SYSTEM AXIS CONTROL DIAGRAM 

:.-.-----...... ---•• --.- .-.... -.---...... ----.-.-.-.-._ .... Mt 

i

l I ~~:ity 1"-- ·--···-·-·-·-·-·-·-·-·----····--··1 

Position Position ! (Desired) I i 

Motor 

Veolcity 

(Actual) I Control Control I i I i Transfer Output ! ! L l+---lf------, I Equation 

i 

i 

I 

I 

I 

Position ! 

Axis 

Position 

Error 

Command I 

from PC i (L 

-------+.( OR ; + 

I l Motion Control Module i i ........ _ .... =._._. __ ._. ______ . ______ . _____ ._. __ .. _._ .... ___ .1 

r---·--·-·-·-······· .. ··-·-· .. ·-·-------· ·_-_······· __ ··_· __ · __ · .. · .. · .. ·1 ! 1 , I 

I I i i . Nulling ! 

Transfer 1 

Equation ! 

Axis 

Position 

(Actual) 

i .. _. __ . ____ . __ . ___ .__... ____ ._._ .... _. __ . __ ._ .... _ ....... __ ....... __ .. --.--1 

Probe I 

Nulling I Delta . 

Setpoint Pressure __ _ 

I From GOI • G> Signal Transducer ~ , 

! ............ __ .......... __ .... _. __ .. ____ ... _. __ ......................... _ ........... __ ....... _ ..... __ ._ .......... _._. __ ............ ___ ....... __ ... _. ___ .. ___ .. ____ .... _ ..._._ .... _ ............... ____ .1 

i 

I 

I 

1 

i 

I 

i 

i 

! 

i 

! 

i 

: 

I ; 

! 

I 

t 

1 

i 

1 

+ 

Motor 

Velocity 

Error 

Motor 

Transfer 

Equation 

Motor 

Output 

i j !_ .. l!:12.~<?!..Q~iy~ ____ ._. __ .. .J 

Position 

Encoder 

Motor 

Encoder 

Motor 

Gearbox 

I I 

Probe 

Position 

Delta Pressure 

Across Probe 
InTouch -WondowViewer - C \INTOUCH 16\PMS. ll0 1!Ir.iil13 Sle Logic spacel Development! 

11 13 15 Main Menu 4/9/03 

Warm Core Turbine Facility - Programmable Motion System 

~~:S~~iddf~~~qn >· 

System CSV param file = c:\pms\param\v.6a. prm2.csv 

Axis recipe name = 

Axis unit name = 

Profile Name : c:\pms\profile\test-pro.xls 

Axis 

1 

2 

3 

4 

5 

6 

7 

8 

9 

10 

11 

12 

13 

14 

15 

16 

17 

18 

FIGURE 3 - MAIN MENU 

Click to Mit 

Name axis param file 

radial 6 EdIt aJ(JS 1 params 

anole 6 Edit exJS 2 caroms 

circum 6 Edtl coos 3D~ems 

radial 7 Edit axiS 4 carsms 

anole 7 Edit axiS 5 parems 

circum 7 Edit axis 6 DaJ'anlS 

radial 8 Edit eoos 7 paroms 

anole 8 EdIt QXlS 8 poroms 

circum 8 Edn!Ws 9 caroms 

Edit exJS 10" paroms 

Edit8XIs 1 1 oarams 

Edit mas 12 parems 

Edit axiS 1 3 params 

EdIt axiS 14 params 

Edit axis '5 params 

Edit ax'IS 16 pore.ms 

Edit CXlS 1 7 parems 

Edit exJS 18 pare.ms 

Run 

InTouch - WondowVlewer - C \INTOUCH 16\PMS. ll0 1!Ir.iil13 file Logic ,SpeaeJ 

System CSV param file = c:\pms\paralm\v.6a. I"'I!I-___ -.!lli..l!!!!l!!!.l..!!.!!~¥!!!L-~~~ 

Axis recipe name .: 

Axis unit name = 

ProIUes 

Profile N ame: 

FIGURE 4 - MAIN MENU WITH AXIS PARAMETER EDIT WINDOW OPEN 

NASN TM- 2003-2 12377 17 
InTouch - WmdowYiewer - C:\INTOUCH.16\PMS_1I 0 I!!!lri:lEI 

Curr Cmd= 

Escort Parameters 

prome_executmg ESP _In_cal 

Escort_smgle_readmg 

profiJe-posn_change 

ok_Ie_advance 

Cy'dlc_recorded 

forcs_InJlosn 

eydic_recording 

In posFbon 

FIGURE 5 - RUN MENU 

FIGURE 6 - RUN MENU WITH PROFILES 

NASNTM- 2003 -2 12377 18 
REPORT DOCUMENTATION PAGE Form Approved 

OMB No. 0704-0188 

Public reporting burden for this collection of information is estimated to average 1 hour per response, including the time for reviewing instructions, searching existing data sources, 

gathering and maintaining the data needed, and completing and reviewing the collection of information. Send comments regarding this burden estimate or any other aspect of this 

collection of information, including suggestions for reducing this burden, to Washington Headquarters Services, Directorate for Information Operations and Reports, 1215 Jefferson 

Davis Highway, Suite 1204, Arlington, VA 22202·4302, and to the Office of Management and Budget, Paperwork Reduction Project (0704·0188), Washington, DC 20503. 

1. AGENCY USE ONL Y (Leave blank) r' REPORT DATE 

1

3

. 

REPORT TYPE AND DATES COVERED 

April 2003 Technical Memorandum 

4. TITLE AND SUBTITLE 5. FUNDING NUMBERS 

A Programmable System for Motion Control 

Cost Center 2275000007 

6. AUTHOR(S) 

Brent C. Nowlin 

7. PERFORMING ORGANIZATION NAME(S) AND ADDRESS(ES) B. PERFORMING ORGANIZATION 

REPORT NUMBER 

National Aeronautics and Space Administration 

John H. Glenn Research Center at Lewis Field E-13954 

Cleveland, Ohio 44135-3191 

9. SPONSORINGIMONITORING AGENCY NAME(S) AND ADDRESS(ES) 10. SPONSORINGIMONITORING 

AGENCY REPORT NUMBER 

National Aeronautics and Space Adminjstration 

Washington, DC 20546-0001 NASA TM-2003-212377 

11. SUPPLEMENTARY NOTES 

Prepared for the 49th International Instrumentation Symposium cosponsored by the Aerospace Industries and Test 

Measurement Divisions of the Instrumentation, Systems, and Automation Society, Orlando, Florida, May 4-8, 2003. 

Responsible person, Brent C. Nowlin, organization code 7545, 216-433-2675. 

12a. DISTRIBUTION/AVAILABILITY STATEMENT 12b. DISTRIBUTION CODE 

Unclassified -Unlimited 

Subject Category: 09 Distribution: Nonstandard 

Available electronically at http://gltrs.grc.nasa.gov 

This publication is available from the NASA Center for AeroSpace lnfonnation, 30J-{i2 J-0390. 

13. ABSTRACT (Maximum 200 words) 

The need for improved flow measurements in the flow path of aeronautics testing facilities has led the NASA Glenn 

Research Center to develop a new motion control system. The new system is programmable, offering a flexibility 

unheard of in previous systems. The motion control system is PLC-based, which leads to highly accurate positioning 

ability, as well as reliability. The user interface is a software-based HMI package, which also adds flexibility to the 

overall system. The system also has the ability to create and execute motion profiles. This paper discusses the 

system's operation, control implementation, and experiences. 

14. SUBJECT TERMS 15. NUMBER OF PAGES 

Motion control; Programmable; Motion profile; Programmable logic controller; 24 

Servomotors; Digital command systems; Positioning; Automatic control 16. PRICE CODE 

17. SECURITY CLASSIFICATION 1B. SECURITY CLASSIFICATION 19. SECURITY CLASSIFICATION 20. LIMITATION OF ABSTRACT 

OF REPORT OFTHIS PAGE OF ABSTRACT 

Unclassified Unclassified Unclassified 

NSN 7540-01-280-5500 Sta nda rd Form 298 (R ev. 2-89) 

Prescribed by A NSI Std. Z39-18 

298-102