MotionBASIC provides both language enhancements and elegant development tools for machine developers ready to incorporate servomotor technology a next design project.
MotionBASIC Language Features
- Motion generation statements that provide a full featured programming interface to the ServoWire Axis Modules and Drives --- along with associated high-speed, on-board hardware
- Multi-tasking operating system and multi-threaded user program execution with priority event thread processing and error reporting
- I/O control statements for processing discrete points, analog conversions, serial line data control, PC-card file access, and TCP/IP sockets
- Language extensions for connectivity to popular factory networks provide consistent register mapping methods to link MotionBASIC information to numbered PLC registers on the network
MOVE, GEAR, BLEND, CAM and, PROFILE motion statements allow the user to create custom motion profiles ranging from simple trapezoidal to complex trajectories. One of the central features of MotionBASIC statements is the ability to express servo controlled motion profiles in plain English, with the motion definition based on either time, speed, or distance traveled by either a pacer axis or the axis under control.
MotionBASIC statements are sent to the appropriate axes through a FIFO queue in each Axis Module’s dual-port RAM. They can be executed unconditionally or conditionally based on the state of a DSP sensor input. They can be repeated indefinitely by prefixing the motion statement with the REPEAT keyword. By using the REPEAT prefix on a sequence of motion statements multiple statements can be executed in a loop without intervention by the main processor.
MOVE statements create common trapezoidal motion profiles and can be based on time, speed or distance.
GEAR statements synchronize motion to an electronic lineshaft. Gearing can be done at a constant ratio or engaged over a distance traveled of the lineshaft or other axis under control. Gearing can be engaged for a programmable distance, with a variety of ways to express acceleration requirements. Gearing is ideal for creating motion sequences needed in traverse wind, reciprocating and rotary flying shear applications, and for phase adjustments on continuous web applications.
BLEND statements dynamically extend a motor’s target position --- allowing speed and acceleration to change on a motion in progress. This capability is useful for creating Cartesian path trajectories in X-Y-Z system designs or for changing speed to utilize the STOP condition when searching for a registration mark.
CAM motion statements produce follower axis motion in response to pacer movement based on a table of follower distances. The table data can be indexed with regular motion increments from the pacer axis or be expanded to use pairs of pacer and follower distances for irregularly defined cam profiles. CAM tables can be defined as either opened or closed. If closed, pacer movement beyond the ends of the table results in follower motion defined by wrapping around the table, like a mechanical cam.
PROFILE statements are similar to CAM statements, except that the axis follower’s incremental distance is defined as a function of time.
When gearing a servo to an electronic lineshaft at a constant ratio, motions defined by both MOVE FOR and GEAR FOR can be superimposed onto that constant ratio for phase adjustments.
Program Access to Drive I/O
MotionBASIC coordinates the high speed interaction between the logic state of the inputs and servo motor actions needed to complete the tough application requirements encountered in today’s factory automation. MotionBASIC provides the programmer access into the Axis Module’s servo functions and tightly coupled, high speed ServoWire drive I/O hardware.
Inputs for High Speed Sensors
ServoWire drive sensor inputs are used by any of the MOVE, GEAR, CAM, COUNT and BLEND statements to start, continue, and/or stop motion commands loaded in the DSP command queue in the ServoWire Axis Module. Commands in the command queue will respond to sensor inputs within one position update cycle (125 to 333 microseconds). Sensor inputs are individually programmable to react to the rising or falling edge of their change in state.
Position Capture Registers
High speed shaft position measurements are made with 32 bit position capture registers that are linked directly to the sensor inputs on the ServoWire Drive insuring microsecond response. MotionBASIC variables provide direct access to the capture status and captured data allowing sophisticated software solutions to applications such as registration control.
Programmable Limit Switches
Independent optically isolated electronic programmable limit switches (PLS) are accessible from the front panel of the ServoWire drive. Each switch is programmed by using MotionBASIC variables to set the ‘turn-on’ and ‘turn-off’ points at defined positions using user units. Each PLS is configured with its own driving source, and cycle distance.
With internal connections built into sensor logic on the ServoWire drive, a PLS can also be configured to control how sensor inputs are used during certain portions of the machine cycle.
Position Delay Counters
A ServoWire drive provides optional dual high-speed counter circuits that are driven by encoder feedback and can be programmed by the user to:
- detect the presence of a sensor within a specified encoder count. Counter can be set to down-count and the input sensor can re-trigger the counter.
- measure distance between two sensors. Sensor inputs can start, stop, or reload the counter register.
- link counter’s output signal to trigger a motion statement loaded into the ServoWire axis module command queue delaying action until some distance has passed.
Axis Module Performance
The Axis Module DSP firmware included with MotionBASIC provides selectable servo loop update rates, feedforward gain adjustments for both velocity and acceleration, access to all servo loop parameters, plus automatic parameter adjustments based on load inertia. These performance features provide tighter servo loop position control resulting in higher accuracy and fast response time.
Client/Server Sockets using TCP/IP
Serial PPP or Ethernet LAN connections to the ORION are established in MotionBASIC using OPEN SOCKET statements for client and/or server port communications that utilize internet TCP/IP protocols. A PPP connection uses either a direct cable or a remote modem dial-up link through the development port. An Ethernet link to the ORION and MotionBASIC is provided by either a PC-card installed into the second slot of the system module or a ISA based board installed in the ORION backplane.
Project Management Structure
The MotionBASIC system card contains all files relevant to your motion control project. All source modules, support files, and ORION system software, which includes the operating and Axis Module DSP firmware, are on one convenient Flash memory PC-card format.
Integrated Development Tools
MotionDesk is an integrated development and maintenance environment which is interfaced to the ORION using a TCP/IP connection to each window providing:
- software project navigation,
- source file editing,
- source module debugging,
- real-time program execution capture with trace mode,
- direct execution of statements from the Direct Mode window,
- system software update wizard providing on-line access for all software enhancements.
MotionBASIC multi-threaded programming statements provide concurrency
MotionBASIC offers concurrent programming which allows the user to create modern multi-threaded software modules where,
- multiple processes run simultaneously as separate threads of execution.
- thread priority can be modified by the executing program.
- event and/or error threads interrupt process threads to respond to critical machine operations.
- several axes can be defined as a machine group and allocated their own E-stop circuit. Up to four different machine groups can be handled by each ORION controller.
Using the modern technique of multi-threaded processing, the software designer has better control over all sections of the motion control program. Dynamic control over the priority of each process allows re-tuning for performance when real-time situations demand a temporary change in the process’ primary emphasis. Any process can be independently started, stopped, and continued. Process synchronization is available when multiple processes are accessing a global resource such as a memory area or external device.