CA1203869A - Pc with intelligent positioning i/o modules - Google Patents

Pc with intelligent positioning i/o modules

Info

Publication number
CA1203869A
CA1203869A CA000434974A CA434974A CA1203869A CA 1203869 A CA1203869 A CA 1203869A CA 000434974 A CA000434974 A CA 000434974A CA 434974 A CA434974 A CA 434974A CA 1203869 A CA1203869 A CA 1203869A
Authority
CA
Canada
Prior art keywords
data
move
coupled
block
satellite
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired
Application number
CA000434974A
Other languages
French (fr)
Inventor
Ernst Dummermuth
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Allen Bradley Co LLC
Original Assignee
Allen Bradley Co LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Allen Bradley Co LLC filed Critical Allen Bradley Co LLC
Application granted granted Critical
Publication of CA1203869A publication Critical patent/CA1203869A/en
Expired legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/414Structure of the control system, e.g. common controller or multiprocessor systems, interface to servo, programmable interface controller
    • G05B19/4147Structure of the control system, e.g. common controller or multiprocessor systems, interface to servo, programmable interface controller characterised by using a programmable interface controller [PIC]
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/33Director till display
    • G05B2219/33129Group spindles, axis into motion groups, nc channel structure
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34208Motion controller
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34286Intelligent positioning I-O
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34396Control different groups of functions, commands simultaneously, synchronized
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/34Director, elements to supervisory
    • G05B2219/34448Integrated servo control circuit fixed to housing, remote from cpu
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/41Servomotor, servo controller till figures
    • G05B2219/41275Two axis, x y motors controlled simultaneous, no contouring, quick move at 45-degrees
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/43Speed, acceleration, deceleration control ADC
    • G05B2219/43009Acceleration deceleration for each block of data, segment
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/43Speed, acceleration, deceleration control ADC
    • G05B2219/43041Prediction, look ahead deceleration control, calculate start deceleration

Abstract

PROGRAMMABLE CONTROLLER WITH
INTELLIGENT POSITIONING I/O MODULES
Abstract of the Disclosure A programmable controller for closed-loop positioning control has a main processor unit, and an I/O interface rack in which a master I/O positioning module and three satellite I/O modules are mounted and connected to servomechanisms to control motion along three axes of a controlled machine.
Move data is transmitted from the main processor unit to the master I/O positioning module in data blocks, with the number of transmissions varying, depending upon a mode of axis coupling that is used in controlling the particular machine. The master I/O positioning module converts move data from a user program format to a binary format and transfers it to the satellite I/O modules, each of which performs closed-loop positioning control of a respective axis of motion. The processor on each satellite I/O module also determines a position prior to the end of each move to apply a user-programmed deceleration when needed to blend moves having different velocities.

Description

6~

The field of the invention is digital controllers of the type for controlling the motion of a power tool and a workpiece support along selected axes of motion.
Positioning control has been associated primarily with numerical controls for metal-cutting machine tools. State of-the-art computer-based numerical controls (CNCs) are shown and described in Dummermuth et al, U.S. Patent No.
4,038,533, issued July 26, 1977, and Bernhard et al, U.S.
Patent No. 4,228,495, issued October 14, 1980. These con-trols provide full contouring control for a cutting tool as it moves along a complex path determined by a "part program."
Numerical controls of the prior art can also be used for point-to-point positioning--drilling operations are one example o this type of positioning control.
Earlier numerical controls consisted primarily of a general purpose digital computer with collections of elec-tronic hardware that interfaced the computer to the servo-mechanisms on the controlled system. Performance has been improved and real costs reduced for numerical controls by using large scale integrated ~LSI) processor components.
These LSI processors, however, re~ire their own machine language programs. As programming development costs increase and hardware technology advances, one approach to improving positioning controls is to employ improved hardware circuits in the axis modules interfacing a central numerical control processor to the servomechanisms governing motion along the respective axes.
With the microelectronics revolution of the late 1960's and early 1970's, a new type of digital controller, known as the programmable controller (PC), was developed for simpler control tasks. The programmable controller had a central ~`

~2~g processing unit (CPU) and an I/O interface. The I/O inter-face was connected to electromechanical I/O devices on a machine or assembly line. While the I/O devices on machines retained their electromechanical character after the intro-duction of the PC's, the CPU of the PC replaced other elec-tromechanical devices with its electronic hardware and programming. PC programming had its roots in the ladder diagrams which plant engineers had used prior to PC's to organi7e collections of electromechanical devices into control systems. It was thus different than the part pro-grams of numerical controls which had to be developed in the applicable part program language by NC specialists.
As industry moves toward still a higher level of auto-mation, there appears to be a number of tasks, including positioning tasks that can be advantageously performed by programmable controllers. PC's are less expensive than CNC's or other numerical controls. PC's use smaller central processing units and are adaptable to distributed processing.
Programmable controllers can be programmed in the familiar ladder diagram format rather than in the part programminy languages of numerical controls. And in the case o point-to-point positioning tasks, PC's can be more efficiently matched with control tasks than CNC's, which must be much more sophisticated and more expensive to provide contouring functions.
The inven~ion is provided by a programmable controller which is responsive to a programmed mode of axis coupling to alter the amount and the organization of data that is trans-ferred between a PC processor and a plurality of intelligent I/O positioning modules. The invention minimizes the amount of data exchanged between the PC processor unit and the I/O

~Q3~

positioning modules, which maximizes the speed of the PC
processor unit in responding to changed conditions in the controlled system. The invention also conserves main memory space, as well as processing time for several I/O processors.
In an NC system for controlling the path of tool motion in three dimensions, the three axes of motion are said to be coupled. Where a positioning control is used to control motion of three separate tools such as three grinding wheels, the axes of motion are said to be independent. The program-mable controller of the present invention operates in both of these modes, and as described in the detailed description herein, also provides positioning control where two axes of motion are coupled and a third axis of motion is independent of the first two. In addition, this programmable controller can be operated in still other modes of axis coupling or machines with a different number of axes.
According to the invention, motion is controlled through the transmission of "move data" structures from a PC process-ing unit to the I/O positioning modules. The PC processing unit has a main processor which is responsive to main proces-sor instructions that are stored in a main memory to sense the mode of axis coupling and to transmlt move data in a number of data structures determined b~ the mode of axis coupling. Thus, if the mode of axis coupling provides for three coupled axes, move data is transmitted via a single data structure containing move data for all three axes. If the mode of axis coupling provides for three independent axes, three data structures are transmitted, each containing move data for a respective axis. And, if two axes are coupled, while the third is independent, two data structures ~203~

are transmitted, one containing move data for the two coupled axes, while the third contains move data for the independent axis.
Each data structure requires processor time for trans-mission and a space in the main memory for storage. The invention therefore matches the programmable controller with a number of control tasks while building in the flexibility that prevents excessive use of memory or an unnecessary increase in the interval between transmissions of move data.
The CPU transmits move data structures to the I/O
modules only when requested by the I/O modules. At other times it transmits a motion control data structure, which is also requested by the I/O modules, and which contains com-mand data for operator commands such as start, stop, jog forward, jog reverse and feedrate override. By repeatedly transmitting this data structure between times that move data is requested, the programmable controller provides the necessary response to those commands which must be executed quickly in "real time." It also overcomes a problem that required overwriting of move data to execute a feedrate override.
The use of the motion control data structure with the I/O image table structure in a PC central processor unit provides a flexibility not seen in prior controllers.
Rather than buying a system with a hardwired control panel, a user of the controller described herein can provide his own operator controls. From a user programming viewpoint these controls can be assigned many different addresses whereas a hardwired control panel will always be accessed at the same address. Using remote I/O equipment available for ~2~

programmable controllers these controls can be located vir-tually anywhere in a plant. Command data can be coupled over transmission lines to the I/O image table in the main memory and then transferred to the motion control data structure, which is then transmitted to the I/O positioning modules.
In addition to move data and motion control data struc-tures, the main processor also transmits a parameter data structure to the I/O positioning modules, and receives status data structures in response to all data structures transmitted to such I/O modules. The parameter data struc-ture contains pointers to the motion control data structure and to the move data structures, and by selecting these pointers for inclusion in the status data structure, a master I/O positioning module selects the data structure that will be transmitted next by the main processor. The size and content of these data structures is variable accord-ing to the mode of axis coupling, however, the parameter and motion control structures remain integrated and do not in-crease in number in the manner of the move data structures.
Each data structure, whether it is of the parameter, motion control or move data type, is transmitted by executing a block transfer or high density transfer of tha type described in Struger et al, U.S. Patent No. 4,293,924, issued October 6, 1981. More recently, this type of transfer had been ex-tended to systems with remotely located I/O interface racks, so that the present invention provides the capability for remotely controlled positioning systems.
Another aspect of the invention is a satellite ~/O
module which functions as a closed-loop servomechanism controller. This module generates analog output signals to ~2~3~;~

the servomechanism and reads position feedback on a 2.0 millisecond time base. The module operates on commands that have been generated from a ladder diagram program and pre-processed to a binary data format. The satellite I/O module is responsive to a user programmed deceleration to look ahead and calculate the correct point to apply the decelera-tion factor. In prior NC systems acceleration/deceleration was calculated by CPU and implemented in increments by axis modules. The present invention transfers all acceleration/
deceleration control functions to the I/O modules for greater efficiency at lower cost.
The general object of the invention is to provide a low cost system for positioning control that is flexible and easily adapted to a wide variety o positioning control tasks. For example, the invention provides a positioning control that is suited for operation of several sections of a transfer line. An NC system operable in a single mode, with motion coupled along three a~es, would not be suited for this task.
Another object of the invention is to provide a program-mable controller with positioning control modules that can be mounted in an I/O interface rack in the general locality of a central processing unit, or if desired, at a location that is remote from the central processing unit. Another object of the invention is to provide the first intelligent I/O modules for positioning control. The advantages of intelligent or processor-based I/O modules are discussed in Jurgen, Ronald K., "Industry's Workhorse Gets Smarter," IEEE
Spectrum~ Volume 19, Number 2 (February, 1982j pp. 34-38.

~a3B~

Another object of the invention is to provide a controller for closed-loop positioning control that can be programmed with ladder diagram user programs.
In summary, according to a first broad aspect, the present invention provides an electrical controller for con-trolling machine motion through a plurality of electromechan-ical I/O positioning devices, the controller comprising: a plurality of I/O circuits each connectable to a respective I/O positioning device to generate output drive signals thereto in response to move data, and to transmit a move request signal when move data is needed; main processing means for storing and transmitting i) user-selectable parameter data, including a user-selected mode of a~is coupling desig-nating coupled I/O circuits and independent I/O circuits and ii) user-selectable move data, including coupled move data applicable to coupled I/O circuits and independent move data applicable to independent I/O circuits; and master I/O pro-cessing means coupled to the main processing means for re-ceiving the parameter data and the move data, and coupled to the I/O circuits for receiving move request signals, the master I/O processing means being responsive to the parameter data from the main processing means and to move request signals from any coupled I/O circuits to receive coupled move data in a single transmission from the main processing means and to distribute portions of the coupled move data to each of the coupled I/O circuits, the master I/O processing means also being responsive to the parameter data from the main processing means and to move request signals from any indepen dent I/O circuits to receive independent move data in a sep-arate transmission from the main processing means and to ~ -7-~;~03~

couple the independent move data to the independent I/O cir-cuit associated with that separate transmission.
According to another broad aspect, the present invention provides a programmable controller for closed-loop positioning control of machine motion through an I/O position-ing device, which moves in response to velocity si~nals and which generates position feedback signals, the controller comprising: a main processor that stores and transmits user-programmable move data including a programmed position, a programmed velocity and a programmed deceleration for each of a plurality of successive moves, and a satellite I/O module coupled to the main processor, and coupled to the I/O position-ing device to read the feedback signals therefrom and to generate velocity output signals thereto, the satellite I/O
module including first memory means for storing move data received from the main processor, an axis processor coupled to the main processor to receive the move data for successive moves, coupled to the first memory means to transfer the move data thereto, and coupled to the I/O positioning device to receive the position feedback s.ignals and to transmit the velocity output signals, and second memory means for storing machine instructions for the axis processor, wherein the axis processor is operable to compute the actual velocity for the present move and to detect a programmed velocity for a next move that is less than the actual velocity of the present move, ana wherein the axis processor is further operable to detect a point of deceleration before reaching the end of the present move and to then apply the programmed deceleration to the actual velocity, so that the next move can be initiated at its programmed velocity.

-7a-~ ccording to a further broad aspect, the present invention provides a programmable controller for controlling machine motion through a plurality of electromechanical I/O
positioning devices, the controller comprising: a plurality of I/O circuits each connectable to a respective I/O position-ing device to generate output drive signals thereto in response to move data, and to transmit a move request signal when data is needed; main processing means for storing and transmitting (i) user-selected parameter data, which includes a pointer to a motion control block of data, (ii) the motion control block of data, which represents manual input motion commands, and (iii) user-selected move data; master I/O pro-cessing means coupled to the main processing means for re-ceiving the parameter data and the move data and for trans-mitting a status block of data, and coupled to the I/O cir-cuits for receiving move request signals, the master I/O
processing means transmitting the status block of data with a pointer to the motion control block of data in the absence of move request signals from the I/O circuits; wherein the main processing means transmits the motion control block of data in response to receiving its corresponding pointer; and wherein the master I/O processing means is responsive to the receipt of the motion control block of data to couple manual input motion co~Ands to the I/O circuits, which execute these commands.
In drawings which illustrate a preferred embodiment of the invention, Fig. 1 is a perspective view of a programmable con-troller of the present invention that is connected to a con-trolled machine;

`r -7b-~2~3~

Fig. 2a is a portion of a typical user control program in ladder diagram format;
Fig. 2b is the portion of the user control program of Fig. 2a as it would be displayed on the screen of a pro-gramming terminal;
Fig. 3 is a block diagram of the I/O interface portion of programmable controller of Fig. l;
Fig. 4 is a plot of closed-loop circuit gain, which is the ratio of servo velocit~ to following error;
Fig. 5 is a block diagram of the organization of data structures that would be used in coupling information between the PC processing unit and the master positioning I/O
module of Fig. 3, when motion is to be coupled along three axes;
Fig. 6 is a block diagram of the organization of data structures that would be used in coupling information between the PC processing unit and the master positioning I/O
module of Fig. 3, when three axes of motion are independent of one another;
Fig. 7 is a block diagram of the organization of data structures that are used in coupling information between the PC processing unit and the master positioning I/O module of Fig. 3, when two axes of motion are coupled and one axis of motion is independent as seen in Fig. l;

7c-3~

Fig. 8 is a map o the main memory in the PC procesqor unit including the data table areas where the user loads data to initialize transfer of the data structures;
Figs. 9a - 9c are selected portions of a user program for initiating communication of the data structures;
Figs. 10 and 11 form an electrical schematic diagram of the master positioning I/0 module of Fig. 3; and Figs. 12-14 form an electrical schematic diagram of one of the satellite I/0 modules seen in Fig. 3.
Fig. 15 (shown with Fig. 4 above) is a diagram illustrat-ing the encoding of feedback position sig~als;
Fig. 16 is a flow chart illustrating operation of a communications processor shown in Fig. 10;
Fig. 17 is a map of a communications scratchpad memory shown in Fig. 10;
Fig. 18 is a map of a common memory for the two proces-sors on the master positioning I/0 module of Figs. 10 and 11;
Fig. 19 is a map of a scratchpad memory in Fig. 11 that is associated with an arithmetic processor;
Fig. 20 is a map o~ a common memory on the satellite I/0 module that is also represented in Fig. 12;
Figs. 21-24 are flow charts illustrating the operation of the arithmetic processor seen in Fig. 11;
Fi~. 25 is a map of an axis cratchpad memory seen in Fig. 12;
Figs. 26-30b are flow charts illustrating the operation of the axis processors, one of which is seen in Fig. 12i and Figs. 31a-31c are velocity vs. time curves for three different examples of controlling acceleration and decelera-tion with t~e satellite I/0 modules o Fig. 3.

~038~i9 1. THE PROGRAMM~BLE CONTROLLER AND ITS CONTROLLED SYSTEM

Referring to Fig. 1, a programmable controller 10 that incorporates the present invention has a PC processor unit 11 and an I/O interface rack 12. In this example, the PC
processor unit hardware is provided by a PLC-2/30TM Proces-sor comercially offered by the Allen-Bradley Company, the assignee of the present invention. This equipment is de-scribed in Struger et al, U.S. Patent No. 4,266,281, issued May 5, 1981. The PC processor unit 11 includes a system power supply 13 in its left one-third portion and three circuit board modules 14-16 in its remaining portion, the power supply 13 and circuit modules 14-16 being housed in an enclosure 17 for the PC processing unit 11. The circuit board modules 14-16 include a memory module 14, a processor control module 15 and a processor interface module 16.
Physically speaXing, the circuit board modules 14-16 are comprised of DIP-packaged integrated circuits (IC's) and other electrical components, which are soldered to circuit boards that have etched circuit paths connecting the inte-grated circuits (IC's) and other components to each other and to edge termination areas. The IC's are commonly called "chips" even though such terminology does not describe the insulating packages that are formed around the silicon wafer chips. The primary functional units formed by the circuit board modules 14-16 are described in U.S. Patent No.
4,266,281, and include a processor of bit~slice architec ture, a main memory for storing user macroinstructions and a microprogram memory for storing microinstruction code. Each macroinstruction is executed by executing a se~uence of microinstructions. The main memory is a read/write memory, _g_ 3~;9 which is formed o~ semiconductor random access memory (RAM) chips. A core-type read/write memory can also be used. The microprogram memory is preferably comprised of programmable read-only memory (PROM) chips.
The main memory stores an image table of input/output (I/O) status data and a control program of user macroinstruc-tions. The I/O status data represents the status of input and output devices on a controlled machine 32 and its associ-ated control panel 33. These user macroinstructions corres-pond to relay-type functions, which have been expressed for many years in the industrial control field in the form of ladder diagrams.
As seen in Fig. 2a, the input devices to be sensed are represented in a sequence caLled a rung, along with output devices which are to be energized or deenergized upon cer-tain conditions for the input devices. In the rung in Fig.
2a, there are the following inputs: a pushbutton 2PB, two normally open sets of relay contacts 6CR and 4CR, a normally open limit switch 3LS and a normally closed set of relay contacts 5CR. The energizing of an output in the form of a relay coil 2CR is dependent upon the energizing of a 5CR
relay coil to open the 5CR contacts and one of the following two combinations: either the pushbutton contacts 2PB and the relay contacts 6CR must be closed to complete a first branch of the rung; or the relay contacts 4CR and the limit switch 3LS contacts must be closed to complete a second branch.
Fig. 2b shows how this ladder diagram would appear on the screen 38 of a programming terminal. These instructions can be translated into coded equivalents by the programming tsrminal and loadsd into the main memory of the P~ processor 38Sgl unit 11. The PC processor unit ll is not directly connected to the I/O devices represented in the ladder diagram, so as the control program is executed, bits are examined and set in the I/O image table of the main memory. The five-place octal numbers are I/O addresses of the input and output devices as seen by the user. These numbers also correspond to memory locations in the I/O image table in the main memory expressed in octal notation. The first user instruc-tion appearing in Fig. 2b may be expressed "~IC 11304" or "examine the data in the data table for an input device ('1') at rack 1 ('1'), slot 3 ('3') bit 4 ('0~') to determine if its contacts are closed." The "XIO 01002" instruction examines status data in the data table for an output device ("O") at rack 1 ("1"), slot O ("O"), bit 2 ("02") to deter-mine if the contacts of the device are open. And, the "OTE
01004" instruction sets a bit ("O") at rack 1 ("1"), slot O
("O"), bit 4 ("04") in the data table to energize an output device when a path of true conditions can be traced between the two vertical portions, which represent power supply lines, at opposite sides of the ladder diagram.
After the I/O image table is examined and manipulated through execution of the control program, the status data is coupled to and from the I/O devices to complete the control circuit. This is accomplished through execution of an I/O
scan routine, which is executed after each cycle of execu-tion of the control program. In other embod ments it would also be feasible to interrupt the control program at speci-~ied time intervals, whether or not a complete cycle of the control program had been executed. During the I/O scan routine, the bit-slice processor reads fresh input status data frc~ any I/O modules that are coupled to input devices 31~6~

on the machine 32 and its associated control panel 33 and writes fresh output data to any I/O modules coupled to output devices on the machine 32. The I/O image table is basically a record of the data transferred during the I/O
scan routine.
Fig. 1 is an e~ample of a local I/O configuration in which I/O modules 18 20 are inserted in the I/O interface rack 12 and positioned no more than fifty feet from the PC
processor unit 11. An I/O interconnect cable 21 couples the PC processing unit modules 14-16 to an I/O adapter module 22 in the leftmost slot of the I/O interface rack 12. Communi~
cation signals are coupled through the I/O interconnect cable 21, and due to the relatively short length of the cable, a parallel data bus is provided by a group of wires within the cable. A power cable 23, also seen in Fig. 1, connects the system power supply 13 to a socket (not shown) on a backplane motherboard 24 that extends across the back of the I/O rack 12. Other racks 12 can be connected to the cable through the lower communication socket ~5 on the adapter module 22, and auxiliary power supplies ~not shown) can be added to the controller system to power these other racks.
The invention can also be employed in a remote I/O
system in which a remote I/O adapter module (not shown) is positioned in the leftmost slot of the I/O interface rack 12 and connected to the PC processor unit 11 through a serial data communication cable. If located further than fifty feet from the PC processor unit 11, such I/O racks 12 would also be powered by auxiliary or remote power supplies.
Although a stand-alone PC processor unit 11 has been selected for the preferred embodiment, the invention also -12~

~;203~

contemplates other system conigurations, including those in which a processor module is supported in the I/0 interface rack 12, as disclosed in Struger, U.S. Patent No. 4,250,563, issued February 10, 1981.
The I/0 interface rack 12 provides a physical frame to support the I/0 modules 18-20, and the backplane motherboard 24, which provides electrical circuit paths to the I/0 modules 18-20 from the adapter module 22. The I/0 modules 18-20 each include at least one printed circuit board on which packaged IC's and other electrical components have been soldered. More than one board can be included within an I/0 module as is the case for the three "double" I/0 modules 18 seen immediately to the right of the adapter I/0 module 22 in Fig. 1. The I/0 modules 18-20 include plastic covers (not shown), however, the edges of the circuit boards project from the modules to slide into guide rails 26 at the top and bottom of the I/0 interface rack 12 and into edge connectors (not shown) on the backplane motherboard 2~.
Front edge connectors are provided by swing arm connectors 27, which carry vertical columns o screw-type wire terminals 28. The swing arm connectors 27 are pivotably connected to a lower support rod (not shown) and the I/0 modules 18-20 are held in place by latches 29 which pivot around an upper support rod 30 mounted transversely between the flanged sidewalls at opposite ends of the rack 12. To the right of the three "double" I/0 modules 18 are single I/0 modules, 19 and 20 only five of which are connected in the present embodiment. Wires 31 which connect the terminals 28 to I/0 devices on a controlled machine 32, are bundled along the lower front edge of the I/0 interface rack 22 and extend -13~

~203~G9 from the I/O rack to the controlled machine 32 and its associated control panel 33.
Programmable controllers were first applied to control-ling single input devices such as relays and solenoids, and to sensing the state of single bit input devices such as relays, pushbuttons and limit switches. Machines such as the automatic drill press 32 in Fig. 1 have typically been controlled ~y numerical controls, which involve a great deal more electrical hardware than that seen in the programmable controller 10 of Fig. 1. It will be apparent from the remainder of the description herein, that the controller of the present invention forms a smaller and more efficient unit for controlling such a machine.
The automatic drill press 32 has a worktable 34 that is movable along an X axis or a Y axis or both, and a drill head 35 which is movable along a Z axis. This presents an example in which point-to-point positioning in the plane of the worktable 34 is resolved into motion along two coupled axes (X and Y) while the motion along the thlrd axis (Z) is the independent of the first two. The coupled axes may start, move, and stop together, however, the path of motion is not controlled to the same extent as in a contouring operation. The control panel 33, which is positioned near the drill press and connected to the programmable controller 10 through the wire bundle 31, provides a number of push-buttons 36 and monitor lights 37. The control panel 33 allows an operator to start and stop the machine or to manually control motion along one or more of the axes by depressing and holding a pushbutton, the latter being re-ferred to as jog operations.

~2~3a~

The double I/0 modules 18 are located in slots 0-2 (octal) and are dedicated to controlling the X, Y and Z
axis, respectively. Physically, the I/0 rack 12 contains eight pairs of I/0 slots and the adapter slot. The user address convention considers two single I/0 modules 19-20 or one double I/0 module 18 to occupy the low byte and high byte portions of a single I/0 slot. Two single I/0 modules 19-2~ are in "slot 3", one of which is a master positioning I/0 module 19 or preprocessing control data that is coupled between the adapter module 22 and the double I/0 modules 18, also referred to as satellite I/0 modules. The I/0 module 20 in the righthand portion of "slot 3" and the remainder of the I/0 modules 20 in the rack are of the conventional type, with input modules connected to eight single-bit input devices and output modules connected to eight single-bit output devices.
Fig. 3 is a generalized schematic view of the program-mable controller 10 of Fig. 1. In most prior systems, the backplane motherboard 24 formed direct connections between the adapter I/0 module 22 and all of the other I/0 modules in the rack 12. In Fig. 3, this arran~ement is employed in part by the connection of the adapter I/0 module 18 to the input and output modules 20 through the primary backplane bus 40. The master positioning I/0 module 19 is coupled to the primary backplane bus 40 as well. Unlike these prior systems, however, the backplane motherboard 24 here àlso orms a secondary backplane bus 41 connecting the master positioning I/0 module 19 to satellite I/0 modules 20 for the X, Y and Z axes.
The adapter I/0 module 22 performs in the conventional manner in this controller. Its function is to multiplex and ~03~

demultiplex data sent through the I/O interconnect cable 21 to and from the various I/O modules l9 and 20, which are connected in parallel to the primary backplane bus 40. The circuit of a suitable adapter module 22 is described in detail in Struger, U.S. Patent No. 4,250,563, issued February 10, 1981.
Through the swing arm connectors 27 seen in Fig. 1, the conventional I/O modules 20 and the satellite I/O modules 18 are connected to I/O devices 39 on the machine 32 and its associated control panel 33. These I/O devices are seen schematically in Fig. 3 on the "machine side" of the I/O
modules 18-20. This is as opposed to the "processor side"
where the backplane connections are made. Note that the master I/O ~odule l9 does not have any connections on the machine side.
Each satellite I/O module 18 connects to a servo-mechanism 45 that provides for closed-loop positioning control of motion along its respective axi 5 . Each servo-mechanism 45 includes a servo motor 42, a shaft encoder 43 for generating position signals and a tachometer 44 for generating rotational velocity signals. A set of ENCODER
INPUT lines carry the encoded signals from each shaft encoder 43 to its associated satellite 18. These encoded signals are decoded by the satellite I/O modules 18 to sense the change of angular position of the shaft in a given time interval. A pair of TACH INPUT lines are connected to each satellite 18 to carry an analog signal from each tachometer 44 that is directly proportional to the rotational velocity of the rotor of the servo motor 42. A SERVO OUTPUT line carries an analog velocity signal from each satellite I/O
module 18 to its associated servo motor 42. To provide a ~2~

lar~er representation of the servomechanism 45 and its components 43-45, only one of the three servomechanisms 45 in the system has been shown in Fig. 3.
The programmable controller 10 performs closed-loop positioning by varying the velocity signal on the SERVQ
OUTPUT line according to a comparison of an incremental portion of the programmed position and the actual position read from the encoder 43. The difference between the incre-mental portion of the programmed position and actual posi-tion is the following error, and the output velocity is a function of this following error. The ratio of velocity output signal to following error input signal is the gain of the system and can be represented graphically as seen in Eig. 4. Parameters typically used for closed-loop control of the servo motor 42 such as SERVO VELOCITY, RAPID RATE, GAIN BREAK VELOCITY, GAIN BREAK POINT and MAXIMUM FOLLOWING
ERROR are represented on this graph. These are also defined later in relation to a PARAMETER BLOCK (A) data structure, or derived from the values in the PARAMETER BLOCK (A). The selected gain function provides the desired response of the servo motor 42 as analyzed with the aid of other mathe-matical models familiar to those skilled in the art of servomechanisms and feedback control circuits. These models are used to analyze the stability of the system and to prevent conditions such as severe or continuing oscillation of the servo motor 42 as it attempts to reduce the following error.

3~
2. DATA STRUCTURES

The pro~rammable controller of Fig. 3 is not limited to controlling only the machine 32 of Fig. 1. It is capable of controlling machines in which three axes of motion are coupled or in which three axes of motion are independent.
This flexibility, which arises from the invention, is best explained with reference to the three cases presented by Figs. 5-7. Each block in Figs. 5-7 represents the transfer of a block of data between the PC processor unit 11 and the master positioning I/O module 19 (as indicated by the upwardly and downwardly pointing arrows). Each block transfer is executed during a modified I/O scan sequence in the manner disclosed in Struger et al, ~.S. Patent No. 4,293,924, issued October 6, 1981. These bloc~s of data have certain information that is identified by its location within the block to form a data structure. These data structures have assigned locations in the main memory da~a table, as seen in Fig. 8, where the storage locations for a STATUS BLOCK (S), a MOTION CONTROL BLOCK (B), a PARAMETER BLOCK (A) and several MOVE SET BLOCKS (C, D and E) are identified.
The PARAMETER BLOCK (A) is mapped in Table 1 below. It is transferred from the PC processor unit 11 to the master positioning I/O module 19 at "power up," or upon a special command. The PARAMETER CONTROL WORD in Table 2 specifies how many axes are controlled on the machine and also speci-fies a mode of axis coupling. Thereafter, two to five address pointers are provided in the first five word~ of the parameter block, its own A POINTER, a pointer for the MOTION

CONTROL BLOCI~ (B POINTER) and pointers for one or more MOVE
SET BLOCKS (C, D and E POINTERS). Each 16-bit pointer is ~4~

broken down into 4-bit segments or "nibbles." Each 4-bit segment represents one digit of a user address. Thereafter follow nineteen words for each axis, each word containing flag bits and/or 4-bit binary-coded digits for the listed parameters. The digits represent either a decimal whole number or a decimal fraction. Decimal whole numbers can be converted to 16-bit binary numbers and decimal fractions can be converted to 16-bit binary fractions to provide 32~bit binary numbers for use by the satellite I/O modules 18.
Words 9, 11, 15 and 16 in Table 1 contain more than one parameter, while two words are re~uired for fully defining the HOME position. With three axes (satellite I/O modules 18) installed, the PARAMETER BLOCK is 63 words long.

~19-:a2()3~69 MAP OF PARAMETER BLOCK (A~
(Each line entry represents a 16-bit word of data.) PARAMETER CONTROL WORD

2. ADDRESS POINTER - BLOCK A
3. ADDRESS POINTER - BLOCK B
4. ADDRESS POINTER - BLOCK C
5. ADDRESS POINTER - BLOCK D
6. ADDRESS POINTER - BLOCK E
7. FEEDBACK RESOLUTION
8. COUNTS PER REVOLUTION (IN xl MODE)
9. FEEDBACK MULTIPLIER/COUNT MULTIPLIER/INITIAL
GAIN
10. GAIN BREAK VELOCITY
11. IN POSITION BAND/GAIN REDUCTION FACTOR
12. RAPID RATE (IPM OR MMPM)
13. JOG RATE HIGH
14. JOG RATE LOW
15. % EXCESS FOLL. ERR./+ D/A VOLTAGE
16. % EXCESS FOLL. ERR./- D/A VOLTAGE
17. HOME POSITION (MOST SIG.~
18. HOME POSITION (LEAST SIG.) 1~. JOG ACCEL/DECEL
20. STEP VELOCITY
21. TRAVEL LIMIT +
22. TRAVEL LIMIT -23. BACKLASH TAKE-UP
24. OFFSET

25. TACH PARAMETERS

~2~3~

TABLE 1 ~Cont.) 26. NINETEEN DATA WORDS (Lines 7-25) ARE
REPEATED FOR EACH ADDITIONAL INDEPENDENT
AXIS. MAXIMUM SIZE OF BLOCK IS 63 WORDS
63.
64. END OF PARAMETER BLOCK

The following are partial definitions for the data items that are provided for each axis in Table 1 above.
FEEDBACK RESOLUTION - the smallest increment of move-ment that can be detected by the shaft encoder as determined by a number of lines used to divide one revolution of the encoder shaft. In the present embodiment this number is expressed in lO 6 inches or lO 5 mm.
COUNTS PER REVOLUTION - the number of lines or incre-ments for one full revolution of the encoder shaft.
FEEDBACK MULTIPLIER - a number for multiplying the number of digital signals generated for each count by a factor of 2 (x2 Mode) or by a factor of 4 (x4 Mode).
COUNT MULTIPLIER - a multiplier of 4 for the COUNTS PER
REVOLUTION.
GAIN - a ratio of output to input with servo velocity as an output and following error as an input. (Following error is calculated from ~ser programmed position minus actual position.) Example: servo velocity of 1 inch/
minute and following error of lO 3 inches produces gain of 1 with a unit designation of IPM/mil.
GAIN BREAK VELOCITY - the velocity at which a GAIN
~EDUCTION FACTOR is applied by a satellite I/O module to reduce the initial GAIN.
IN POSITION BAND - tolerance within which the commanded position of an axis slide is considered to be reached.

~203BB~

GAIN REDUCTION FACTOR ~ a multiplier used to reduce the initial GAIN when the GAIN BREAK POINT is reached.
RAPID RATE - an axis velocity used for open travel, but not for metal-cutting operations; also the highest velocity for the axis.
JOG RATE - a velocity at which a JOG operation is executed; a JOG is a move controlled by an operator through a pushbutton or other control device.
+D/A VOLTAGE - positive and negative scale multipliers for the output voltage to the servo motor when àxis is moving at RAPID RATE.
EXCESS FOLLOWING ERROR - an absolute maximum allowable followin~ error beyond which an emergency stop is executed.
HOME POSITION - absolute position loaded into position register in response to an initialize home position command or a search for home command.
JOG ACCEL/DECEL - an acceleration/deceleration value used during a move if no special value is provided with the move data; this particular value is always used for JOG
moves.
STEP VELOCITY - the lowest allowablej non-zero velocity in manual mode.
TRAVEL LIMITS - absolute position limits beyond which the axis will not move.
BACKLASH TAKE-UP - a distance to be moved in a reverse direction so as to always approach the programmed destina-tion from the same direction.
OFFSET - an additional distance to be added to the posiiion sent to the satellite in the move data.
TACE PARAMETERS - error range data used to detect loss of velocity feedback from the tachometer.

PARAMETER CONTROL WORD

O 1 O O O O O O I I MODE I ~ NO.AXES
I

IDENTIFIER ~INCH/METRICL-NOT
SELECTION USED

The MOTION CONTROL BLOCK (B) seen in Table 3 below is a second type of data structure. It is transferred from the PC processor unit 11 to the master positioning I/O module 19 on a repetitive basis. It may contain from two to twelve words depending upon the mode of axis coupling and the amount of preset data that is selected for transmission.
The first. two words for each axis are MOTION COMMAND WORDS, which provide status bits for user co A~f`~ such as START, STOP, JOG FORWARD, JOG REVERSE and FEEDRATE OVERRIDE, and which are entered through the control panel 33 in Fig. 1.
The definition of the two MOTION COMMAND WORDS can be seen in the following Tables 4 and 5, where the definition of certain bits is determined by bit 7 of the FIRST MOTION
COM~AND WORD. This bit is responsive to a user-selection of a PROGRAM or M~NUAL mode command. In the PROGRAM mode moves are provided with a programmed final position or destination, while in the MANUAL mode, moves are controlled by the user through the set of controls on the instrumentation panel 33 to move along an axis to a selected, but unprogrammed desti nation. Jog moves executed by momentary operation of a pushbutton are an example of operation in the MANUAL mode.
The number of axes selected will determine whether only BLOCK C COMMAND WORDS are transmitted, or whether additional COMMAND, words for BLOCKS D and E are transmitted4 A COMMAND

WORD in one block may be used to control more than one axis where the axes are coupled. Position preset data is entered through thumbwheel switches on the control panel 33 and follows the MOTION COMMAND WORDS for all of the axes that are operational.

MAP OF MOTION CONTROL BLOCK (B) (Each line entry represents a 16-bit word of data.) 1. FIRST MOTION COMMAND WORD BLOCK
2. SECOND MOTION COMMAND WORD AXIS

3. FIRST MOTION COMMAND WORD BLOCK
4. SECOND MOTION COMMAND WORD AXIS

FIRST MOTION COMMAND WORD BLOCK
E

SECOND MOTION COMMAND WORD AXIS

7. POSITION PRESET (MOST SIG.) BLOCK
8. POSITION PRESET (LEAST SIG.) AXIS

9. PQSITION PRESET (MOST SIG.) BLOCK
D

10. POSITION PRESET (LEAST SIG.) AXIS

11. POSITION PRESET (MOST SIG.) BLOCK
12. POSITION PRESET (LEAST SIG.) AXIS

38~

DESCRIPTION OF FIRST MOTION COMMAND WORD

Bit Function __ 17 Block Identlfication 16 Axis Selection Axis Selection 14 Axis Selection 13 Initialize Home Position*
12 New Parameter*
11 Ofset*
Reset*
7 Program/Manual 6 Emergency Stop (E-Stop~
Slide Stop 4 Escape/Go Home*
3 EOM (End-of-Move) Stop/
Search Home 2 Begin/Preset*
l Go/Jog Reverse*
O Next Move~Jog Forward*

*Denotes active when manual mode is selected in bit 7 DESCRIPTION OF SECOND MOTION COMMAND WORD

B Function 17 New Preset 16 Tach Calibrate*
Select Readout*
14 Jog Rate Select*
13 + Limit Override*
12 Return to Position*
11 Program/Rapid Rate Select Feedrate Override Enable 7 Direction of Search Home 6-0 Feedrate Override Value *Denotes active when manual mode is selected in bit 7 of FIRST MOTION COMMAND WORD
The MOVE SET BLOCKS (C, D and E) are a third type of data structure and are arranged as seen in Table 6 below. A
MOVE SET CONTROL WO~D heads the blocks and up io twenty-one MOVES can be included, if only a SINGLE MOVE CONTROL WORD
(SMCW) and two POSITION/ DWELL words, are included. Each MOVE however may be expanded to six words by addition of a RATE word, and two words for ACCELERATION and DECELERATION
data, respectively, sometimes called ACCEL/DECEL data. The PARAMETER BLOCK (A) will contain a default or global values for RATE, ACCELERATION and DECELERATION. These values are included in individual moves to supersede the global values where desired and are therefore referred to as local values.
The MOVE SET CONTROL ~ORD is mapped in Table 7 below. MOVE
O is a special move referred to as an ESCAPE MOVE. Normally, it is skipped, however, upon an ESCAPE COMMAND it is executed to move to the HOME position, provided certain other condi-tions are met. Moves are classified as PROGRAMMED MOVES, DWELL MOVES, FEEDRATE OVERRIDE MOVES or JOG MOVES. A DWELL
is not really a move, but a time delay in which motion is suspended along all of the axes, for a specific purpose such as to allow drill shavings to be evacuated from a drill hole. At the end o the MOVE SET BLOCK is a pointer to a MOVE SET CONTINUATION BLOCK (F) corresponding to MOVE SET
BLOCK (C). This CONTINUATION BLOCK can be used to extend the number of successive moves. MOVE SET CONTINUATION
BLOCKS (G) and (H) can be used where MOVE SET BLOCKS (D) and (E) cannot provide all of the MOVES required for controlling motion along their corresponding axes.
The SINGLE MOVE CONTROL WORD is of special signi~icance in executing the move because it contains control informa-tion seen in Table 8 below, including the number of axes to which the move is applicable as well as the type of move.
Where a move is applicable to three coupled axes, it will contain one SMCW and three sets of POSITION, RATE and ACCEL/
DECEL data. Thus, Move 1 in Table 6 could contain up to 16 ~313~

words and this would decrease the number of non~escape moves available in MOVE SET BLOCK (C) to as few as three (16 words each). Where two axes are coupled, the number of non-escape moves in MOVE SET BLOCK (C) might be limited to five (11 words each). This is not an operating limitation, however, due to the continuing transmission of MOVE SET BLOCKS and MOVE SET CONTINUATION BLOCKS.

MAP OF MOVE SET BLOCK (C) (Each line entry represents a 16-bit word of data except where noted) 1. MOVE SET SET CONTROL WORD

2. SINGLE MOVE CONTROL WORD (SMCW) 3. POS./DWELL TIME (MOST SIG.) 4. POS./DWELL TIME (LEAST SIG.) MOVE O
5. RATE (IPM OR MMPM) 6~ ACCELERATION
7. DECELERATION

(Range) MOVE 1 (3-16 words) 8-39. (Range) MOVE 2 (3-16 words) 11-55. (Range) MOVE 3 (3-16 words) 14-52. (Range) MOVE 4 (3-11 words) 17-62. (Range) MOVE 5 (3-11 words) 20-43. MOVE 6 (3-6 words) 23-49. MOVE 7 (3-6 words~

TABLE 6 (Cont.) 26-55. MOVE 8 (3-6 words) 29-61. MOVE 9 (3-6 words) 32-34 MOVE 10 (3 words) 35-38 MOVE 11 (3 words) 59-61 MOVE 19 (3 words) 62. POINTER TO MOVE SET DATA BLOCK F

64. END OF BLOCK

DESCRIPTION OF MOVE SET CONTROL WORD

Bit(s) Function 17 Not Used 16 Not Used Inch/Metric Select 14 End of Program 13 Escape Move Block I.D.
12 Block ID High Bit 11 Block ID Middle Bit Block ID Low Bit 7 Data Valid 6-0 No. Moves This Set (BCD
Format) -28~

DESCRIPTION OF SINGLE MOVE CONTROL WORD

Bit(s~ Function 17 Std. Positioning/Continuous 16 HALT/RUN Mode Select RATE Select 14 ACCEL/DECEL Select 13-12 ID Bits DWELL Select 7 Feedrate Override Enable 6-4 No. Axes Programmed with this Move 3-0 Not Used Blocks (A)-(H) described above are transmitted from the PC processor unit 11 to the master positioning I/O module
19. The last data structure to be described in detail is transmitted from the master positionin~ I/O module 19 to the PC processor unit 11 and is referred to as a STATUS BLOCK
(S). This block is mapped in Table 9 below and its FIRST
and SECOND STATUS CONTROL WORDS are mapped in Tables 10 and 11 below. The STATUS BLOCK (S) is transferred from the master positioning I/O module 19 to the PC processor unit 11 on a repetitive basis. An address pointer is sent to the PC
processor unit 11 in this block to request the next data structure, whether it is the PARAMETER BLOCK (A), the MOTION
CONTROL BLOCK (B~ or one of the MOVE SET BLOCKS (C)-(E).
Normally the B POINTER will be returned to obtain the MOTION
CONTROL BLOCK. The STATUS BLOCK (S) also contains AXIS
STATUS WORDS and POSITION/FOLLOWING ERROR data arranged according to the mode of axis coupling similar to the MOTION
CONTROL BLOCK (B).

~69 MAP OF AXES STATUS BLOCK(S) (Each line entry represents a 16-bit word of data.) 1. ADDRESS POINTER (BLOCK A, B, C, D, OR E, etc.) 2. FIRST AXIS STATUS WORD
BLOCK
3. SECOND AXIS STATUS WQRD C
AXIS
4. POS./FOLL. ERR. (MOST SIG.) OR
AXES
5. POS./FOLL. ERR. (LEAST SIG.) 6. EIRST AXIS STATUS WORD
7. SECOND AXIS STATUS WORD BLOCK
8. POS./FOLL. ERR. (MOST SIG.) AXIS
9. POS./FOLL. ERR. (LEAST SIG.) 10. FIRST AXIS STATUS WORD
11. SECOND AXIS STATUS WORD BLOCK
12. POS./FOLL. ERR. (MOST SIG.) AXIS
13. POS./FOLL. ERR. (LEAST SIG.) DESCRIPTION OF FIRST AXIS STATUS WORD

Bit Function 17 Excess Error 16 Loss of Feedback Insufficient Data 14 Travel Limit +
13 Travel Limit -12 Feedrate Reduction 11 Hardware Stop Emergency Stop (E-STOP) 7 Program/Manual Mode 6 Home Input No~ 2 (JOG REVERSE) 4 Slide Stop 3 Input No. 1 (JOG FORWARD) 2 Ready 1 Done O In Position : DESCRIPTION OF SECOND AXIS STATUS WORD

Bit Function 17 Offset Taken 16 Preset Taken Position Valid 14 Foll. Error Valid 13 Axis Fault 12-10 3 Bit Move Set Number (BCD
Format~
7 Programming Error 6 Parameter Out of Range 5-0 Move Number in BCD Format ~2~

Having defined the contents of the data structures, the operation of the controller 10 in transferring these blocks of data between the PC processor unit 11 and the master positioning I/O module 19 can be explained with reference to the block diagrams in Figs. 5-7. Beginning with Fig. 5, for the "three coupled axes" mode of operation, each frame represents a bidirectional block transfer or pair of trans-missions. One block of data is transmitted downstream to the master positioning I/O module 19 and another block is returned upstream to the PC processor unit (PCPU) 11. Some of the frames have been split so that only one of the trans-missions is shown. In the downstream transmission of Frame 1, the PARAMETER BLOCK (A) is sent to the master positionin~
I/O module 19 with A, B, and C POINTERS. While two words are reserved in this BLOCK for D and E POINTERS, these words carry zeroes and are not "active". The master positioning I/O module 19 always returns the STATUS BLOCK (S), however, the pointer returned in the STATUS BLOCK (S) varies according to which BLOCK will be requested for the next downstream transmission. Most often, the B POINTER is returned, so that the MOTION CONTROL BLOCK (B) is requested. The MOTION
CONTROL BLOCK (B) might be requested for a number of frames after Frame 1, but to conserve space in Fig. 5, we shall assume that the C POINTER is returned in the STATUS BLOCK
(S) of Frame 2. This event is effectively a request by the master positioning I/O module 19 for "move data", which it receives in a subsequent downstream transmission.
When the move data in MOVE SET BLOCK (C) in Frame 3 has been downloaded to the master positioning I/O module 19, it will select individual moves for transmission to the satellite I/O ~odules 18. Since move data will then be on hand for a ., ~

-~2al3~;9 certain time interval, there will be a number of frames after Fra~e 3 in which the STATUS BLOCK (S) will be returned with the B POINTER. An F POINTER accompanies the data in MOVE SET BLOCK (C) in Frame 3, and in a later Frame, desig-nated M, this F POINTER is returned to the PCPU 11 as a request for a MOVE SET CONTINUATION BLOCK (F). The CONTINUA-TION BLOCK (F) also carries a pointer if still further move data is required. This can ~e a C POINTRR to point back to the C BLOCK or it can be a C' POINTER to a C' BLOCK that is located in a different section of the main memory data table than either the C BLOCK or the E BLOCK. In this way a stream of move data can be transmitted to the master posi-tioning I/O module 1~, so that it can feed individual moves to the satellite I/O tnodules 18 as needed.
Comparing Fig. 5 to Fig. 6, which shows the "three independent axes" mode of operation, several differences will be observed. The A, B, C, D, and E POINTERS are all sent to the master positioning I/O module 19 in the PARAMETER
BLOCK (A) in Frame 1. The STATUS BLOCK (S) is returned in Frame 1 with a B POINTER and the MOTION CONTROL BLOCK (B) is transmitted to the master positioning I/O module in Frame 2.
Unlike the COMMAND WORDS in Fig. 5, however, these COMMAND
WORDS can control motion only along their own respective axes of motion. BLOCK C is sent in Frame 3 in Fig. 6 similar to Fig. 5, except that this MOVE SET BLOCK now contains moves for the X-axis only rather than the X, Y and Z axes.
The sequence in Fig. 6 has been shown wlth the downstream transmission in Frame 3 opposite an upstream transmission in Erame M, which represents a later frame in which the D
POINTER is returned to the PCPU 11 in the STATUS BLOCK ~S~

transmission. The PCPU is responsive to this D POINTER to ~2~3~

send MOVE SET BLOCK (D) with Y-axis move data in a subsequent frame that is designated M+l. Some frames later, in a Frame designated P, the E POINTER is returned to the PCPU 11, and it responds in Frame P+l by transmitting MOVE SET BLOCK (E) with Z-axis move data. If MOVE SET CONTINUATION BLOCKS
(F) - (H) are needed for the respective axes, corresponding pointers are sent with MOVE SET BLOCKS (C) - (E). After the first sequence of MOVE SET BLOCKS (C) ~ (E) is received, the master positioning I/O module 19 starts sending back these pointers beginning with the F POINTER in Frame Q, and the G
POINTER in Frame T. Due to space limitations the return of the H POINTER is not shown. Thus, move data is sent in a 3-block sequence for the three independent axes and continua-tion blocks are sent in a second 3-block sequence. Both sequences may contain intervening transmissions of the MOTION CONTROL BLOCK (B) with command data that must be quickly responded to.
Comparing Fig. 7 for the "two coupled axes, one indepen-dent axis" mode o~ operation, with Fig. 5 and 6, it will be seen that the PARAMETER BLOCK (A) is transmitted with A, B, C and E POINTERS. The MOTION CONTROL BLOCK ~B) is again seen in Frame 2, however, only the X-axis and Y-axis command may affect an additional axis, because they are the two axes which are cGupled. In this mode, MOVE SET BLOCK IC) contains moves for coupled axes X and Y, while MOVE SET
BLOCK IE) contains move data for th~ independent Z-axis.
The second move set pointer returned in this mode, which is seen in Frame M, is the E POINTER. In Frame P the F POINTER
is returned for additional moves for the two coupled axes, and these moves are transmitted in the E BLOCK seen in Frame P~l. The H POINTER is returned in Frame Q to request a CONTINUATION BLOCK (H) with Z-axis move data, and this BLO~K
H is transmitted in Frame Q+1. This mode of operation, with two axes coupled, corresponds to the mode of operation used by the machine in Fig. 1.
The PARAMETER BLOCK (A), MOTION CONTROL BLOCK (B) and MOVE SET BLOCKS (C) and (E) from Fig. 7 are shown in Fig. 8 as they are stored in the main memory of the PCPU 11. The PARAMETER BLOCK (A) is stored in an area beginning at octal address "300". The MOTION CONTROL BLOCK (B) is stored in an area beginning at octal address "260", and the AXES STATUS
BLOCK (S) is stored in an area be~inning in an area beginning at octal address "240". MOVE SET BLOCK (C) is skored in an area beginning at octal address "400", and MOVE SET BLOCK
(E) follows at octal address "500". If necessary, CONTINUA-TION BLOCKS (F) and (H) would follow, to be followed by the CONTROL PROGRAM which in this example is seen at octal address "600". Above these areas is the traditional I/O
image table for inputs and outputs and timer/counter present and accumulated values.
The transmissions of the individual blocks in Figs. 5-7 are executed in the manner disclosed in Stru~er et al, U.S.
Patent No. 4,293,92~, issued October 6, 1981. The I/O
interface rack 12 of Fig. 1 has been designated "Rack 1"
according to the user addressing scheme. The master posi tioning I/O module 19 is in "slot 3" and its user address is there~ore 013(output) and 113(input). At address 013 in the output image t~ble in Fig. 8, an eight-bit control word contains a read flag in bit 7, a write flag in bit 6 and a six-bit block size in bits 0-5. In this instance the bloc~{
size word is zeroed to indicate a deault condition in which the size of the block transfer is controlled by a similar ~3~

control. word returned by the master I/O posit~oning module 19. Up to 64 words of data can be included in each block.
During execution of the I/O scan routine, the control word is transmitted to the master positioning I/O modula 19, and a second control word is received from the module and stored in the input image table. An I.D. signal is returned to the PC processor unit 11 with the second control word, and this causes it to jump to a subroutine to initialize the block transfer. In executing this subroutine, the bit-slice processor looks for the rack/slot address of the master positioning I/O module l9 in the timers/counters area at 040-100 (octal) and then looks at a correspondin~ location in the second timers/ counters area 140-200(octal) for pointers to a block storage area in the data table. Here the matching rack/slot address is stored at "040" and 'rO41".
The address of BLOCK (S) is stored at "140" and a pointer to one of the other data structures is stored at "141". As the bit-slice processor couples blocks of data to and from the data table in Fig. 8, the master positioning I/O module communicates in the manner of the high density I/O module in U.S. Patent No. 4,293,924, cited above, in a bidirectional transfer mode. It should also be noted in Fig.8 that the amount of memory consumed is dependent on the number of MOVE
SET ~LOCK (C)-(E), which in turn, is dependent on the mode of axis coupling.
The location of the master positioning I/O module 19 and the satellite I/O modules 18 are to some extent within the discretion of the user, i.e. the modules can be arranged differently than in Figs. 1 and 3. This requires, however, that the user tell the PC processor unit 11 where these I/O
modules 18 and l9 are located, and where the control d~ta can be found to p rform the type of block transfer described ~2~38~9 in U.S. Patent No. 4,293,924, cited above. This is accom-plished through certain rungs that are added to the user program as seen in Figs. 9a-9c. The execution of the four rungs seen in Fig. 9a sets the read and write flags in the data stored at locations 040 and 041 in the data table and interlocks these locations. The rung in Fig. 9b has six instructions I-VI which perorm the following functions:

I - word 040 specifies rack 1, slot 3, low byte as the I/O
location from which to read a block of data from the master positioning module 19.
II - word 140 contains a pointer to the first location in i the main memory (address 2~0) for storing the first word of an incoming block of status data. The other words in the block are stored in successive locations immediately after location 240.

III - word 041 specifies rack 1, slot 3, low byte an I/O
location to which a block of data is to be written.
IV - word 141 contains a pointer to the location in the main memory of the first word of the parameter block.
V - the read and write bits are set in the control word at location 013 (Fig. 8) for a bidirectional mode (read and write) operation between the processor and the master posi-tioning I/O module 19.
VI - the I/O image byte at location 113 is used to monitor the present block transfer execution by showing either the read flag or the write flag and the number of words being transferred.
VII - a dummy output instruction is used to terminate the rung.
Referring to Fig. 9c, two rungs are shown for ini-tiating the transfer o the PARAMETER BLOCK (A) and readin~
the pointer returned by the first STATUS BLOCK (S). When power is turned on, the PC processor unit 11 examines a ready bit location 24102, which is false, and the PC proces-sor unit 11 therefore transfers the pointer for PARA~IETER
BLOCK (A) from address 300 in the data table to address 141.
The PCPU 11 is programmed by its firmware instructions to transfer the indicated block from this location, so PARAMETER

~;~03~

BLOCK (A) is transerred to the master I/O positioning module 19. The ready bit represents a signal back from the master positioning I/0 module 19 that the parameters have been digested. When this has occurred, the master I/0 module 19 returns a low-true signal at the I/O location 24102. The next instruction in the rung gets the pointer that was returned in the STATUS BLOCK (S) and loads it into pointer location 141 so that the appropriate blocX, e.g. the MOTION CONTROL BLOCK (B) or MOVE SET BLOCK (C), will be the next block transferred to the master positioning I/O module l9. With further Ladder diagram programming, those skilled in the art can load move data into the move data structures, and can load data selecting the mode of axis coupling into the PARAMETER BLOCK ~A) and data selecting the number of axes to be controlled into the MOTION CONTROL BLOCK (B).
The programmable controller 10 also allows the user to select its own operator controls for the control panel 33, and connect them to the I/O interface rack 12 through the swing arm connectors 27. The controller 10 can be "con-iqured" through the user control program so that it will examine input controls of various locations and display data through output devices at various other locations. Operator functions such as START, E-STOP, SLIDE STOP, ESCAPE, JOG
EORWARD, and JGG REVERSE can be entered through pushbuttons.
Preset and tool offset data and feedrate override data can be entered through thumbwheel switches and feed~ack data can be observed through various types of display devices.
Operator co~An~s and preset/offset data are coupled to the data table in the PC processor unit 11 to be includ~d in the MOTION CONTROL BLOCK (B) that is sent to the master position-ing I/O module 19. Position feedback data is coupled back to the PC procsssor unit 11 in the STATUS BLOCK ~S) and then ~38~

~38~

coupled to the control panel display devices. The program-mable controller 10 can thus be marketed apart from the control panel instrumentation which can be installed in the manner desired by the user.

3. MASTER POSITIONING ~/0 MODULE HARDWARE

The manner in which the above-described data structures are processed for use by the satellite I/O modules 18 will be better understood by a more detailed review of the cir-cuitry and operation of the master positioning I/O module 19 and one of the satellite I/O modules 18. Referring to Figs.
10-11, the hardware for the master positioning I/O module 19 is shown in the form of a two-figure block diagram. The module 19 has two microelectronic processors which shall be referred to as a communications processor 50 and an arith-metic processor 51, respectively. The preerred components for these respective processors are the Intel 8039 and 8088 microprocessor chips. A detailed description of the architec-ture and operation of these processors can be obtained in literature which is commercially availa~le from Intel Corpora-tion. With an understanding of the operation described later herein in Figs. 16 and 21-24, these processors can be programmed with the instruction set described in the commer-cial literature to carry out the invention.
The functions performed by the communications processor 50 include the sending and receiving of the various data structures, and checking new MOVE SET DATA BLOCKS (C, D, E, etc.) for data that has changed since the particular MOVE
SET DATA BLOCK was last received by the master positioning I/O module 19. Referring to Figs.-10 and 11 incoming data 3~

is stored in a read/write communications scratchpad memory 52, and when such data has changed, it is loaded into a read/write, master common memory 53. The data in the master common memory 53 is accessible to both processors 50 and 51 in a manner to be explained in more detail below. The arithmetic processor 51 performs conversion of the data between a binary format used by the satellite I/O modules 18 a binary-coded decimal ~BCD) fo~mat for positioning data and user addresses that is used by the PC processor unit 11.
The satellite I/O modules 18 are relieved of this data conversion function, to allow for a better job of closed-loop positioning control. The arithmetic processor 51 also downloads individual moves to the satellite I/O modules 18 for execution. Each satellite I/O module 18 maintains data for only two moves, a current move and a next move, so the master I/O module 19 is responsive to satellite re~uests for new move data.
Referring to Fig. 10 and the circuit aspects of the master positioning I,/O module 19, the communications pro-cessor 50 is interfaced to the primary backplane bus 40 by a control line logic circuit 54 that receives signals on the READ, WRITE, SLOT ENABLE (SEN) and STROBE lines included in the backplane. Outputs to the backplane are made through a MOD ID line to identify the master I/O module 19 as a "high density" communication module. The details of this control line logic circuit 54 have been previously disclosed in U.S.
Patent No. 4,293,924, cited above. This circuit 54 is connected through INT, SYS RD and SYS WR lines to the INT, Tl and TO inputs on the communications processor 50 to generate interrupt signals when the PC processor unit 11 initiates a READ or WRITE block transfer communication. The ~40~

communications processor 50 responds to the interrupt signals by generating interrupt signals back to the PC processor unit 11 through the MOD ID line and by executing interrupt firmware routines that are stored in a nonvolatile communi-cations firmware memory 55.
The communications processor 50 sends and receives data to and from the PC processor unit 11 through a main data bus 56, which is part of the primary backplane bus 40. The main data bus 56 is electrically coupled to the communications processor 50 through a module input latch 57, a bus output latch 58 and a module output latch 59. When data is re-ceived on the main data bus 56, it is clocked into the input latch 57 while an interrupt signal is being generated to the communications processor 50. The data is then available to the processor 50 through its communications data bus 60 (lines CDO-CD7) when it enables the two-way buffers 61 and the input latch 57, through its READ and WRITE control lines. These lines are coupled through a decoding and latching circuit 69 to a BUF EN input on the buffers 61, and the RD line is also coupled to a gate (G) input on the buffers 61. The outputs of the latch 57 are controlled through the RAM I/O and RD lines which are coupled through the low-true OR gate 6~.
When the communications processor 50 is to write a word of data to the main data bus 56, it puts the word of data on a communications multiplex bus 65 (COMM. MPX BUS) and enables the two-way buffers 61, so that eight bits of data are coupled to the bus output latch 58. A clock signal is provided to this latch 58 from signals on the WRITE line and the RAM I/O line, which are coupled through the other low-true OR gate 66. On the next READ interrupt signal from the ~41-~3~36~

PC processor unit 11, the data is clocked into the module output latch 59, which is enabled by a read interrupt through the control line logic circuit 54, so that the word of data is transmitted through the output branch of the main data bus 56. The bus output latch 58 can be cleared through the SYS RESET line, which is controlled by the PC processor unit 11 through the PROC EN line.
The communications processor 50 is responsive to timing signals rom clock crystal 49 to generate address and data signals on the communications multiplex bus (COMM. MPX. BUS) 65 in di~ferent time intervals. The address signals are coupled to an address latch 67 wh.ich is enabled through an address latch enable (ALE) line. From there, the address signals are coupled through lines CRAO-CRA7 o a "CRAM"
address bus 72 to the communications firmware memory 55, or to the communications scratchpad memory 52, or to the common memory 53 in Fig. 11, depending upon which of these memories is enabled by control signals. The communications firmware memory 55 is enabled through a PSEN line from the processor 50. The scratchpad memory 52 is enabled through linas 62 from a decoding circuit 68, which are controlled through the RD and WR lines from the processor 50. And, the common memory 53 in Fig. 11 is enabled through CCS and CWR lines from the decoding circuit 69, when other circuitry in Fig.
11 is enabled through the CRAM CONTROL line originating at terminal P27 on the processor 50. It should be noted that two additional address lines CRA8 and CRA9 connect to the scratchpad memory 52 and the common memory 53 in Fig. 11.
Four additional address lines for the firmware memory 55 are provided ~y control bus 68 in which lines connect terminals P20-P23 on the processor 50 to address inputs A8 All on the 3~

memory 55. The control bus 68 as well as a line from termi-nal P26 on the processor 50 carry control slgnals to the decoding circuit 69.
Besides generating address and control signals to the memories 52, 53 and 55, the communications processor 50 is also connected to two status lines related to the common memory. The CRAM AVAIL line, originating in Fig. 11, is connected to an input terminal P17 and an INCRAM line is controlled through output terminal P26 and the decoding circuit 6~.
The communications processor 50 is connected directly to the firmware memory 55 for reading data through the multiplex bus 65. When reading data from other memories, however, additional buses must be coupled through bus trans-ceivers, referred to simply as buffers 61 and 70 in Fig. 10.
These buffers 61 and 70 are enabled through the BUF EN and T/C RAM lines, respectively, coming from the decoder circuit 69. They are enabled in one direction or the other, depend-ing on the direction of data flow, through the RD line from the processor 50. The first set of buffers 61 couples the multiplex bus 65 to a communications data bus (CDO-CD7) 60, and the second set of buffers 71 further couples this bus 60 to a CRAM data bus (lines CRDO-CRD7) 70 extending into Fig.
11 to the master common memory 53. When communicating with the PC processor unit 11, the processor 50 enables the input and output latches 57 and 58 through the decoding circuit 69 and the RAM I/O line connecting to gates 64 and 66.
Referring to Fig. 11, the arithmetic processor 51 is driven by a clock circuit 75 through CLOCK, READY and RESET
lines going to inputs on the processor 51. The arithmetic processor 51 also multiplexes bytes of address and data ~2~3fl~;~

information on an arithmetic multiplex bus 76 (lines APAD0-APAD7). An upper six bits of address information (AA8-AA14) is coupled through an address latch 79 to an arithmetic address bus 78 ~AA0-AAl4) that receives a lower eight bits through the arithmetic multiplex bus 76. The arithmetic processor 51 enables address latches 77 and 79 through an ALE line, which is included in the control bus 80, and which is coupled through a chip select logic circuit 81 to the two latches 77 and 79. Latch 77 holds signals received for lines AA0-AA7 in a branch bus 8~. This branch bus 82 and lines AA8 and AA9 from the first address latch 77 are coupled to one set of inputs on three multiplexers 83. The multi-plexers 83 have another set of inputs connected to lines CRA0-C~A9 of the CRAM address bus 72 originating in Fig. 10.
Besides selecting one of the address buses 72 or ~2, the multiplexers 83 also select either the CCS and CWR control lines from the decoder circuit 69 in Fig. 10 or the A.P. WR
(write) and A.P. CRS (chip select) control lines from the chip select circuit 81 in Fig. 11, according to the state of the CRAM CONTROL line.
Through the multiplexers 83 and the CRAM control lines discussed in Fig. 10, the communications processor 50 and the arithmetic processor 51 communicate by alternately obtaining access to the master common memory 53. In terms of its internal processing capabilities, the arithmetic processor 51 is a sixteen-bit machine, which gives it an advant~ge over eight-bit machines such as the communications processor 50, in performing arithmetic functions such as addition, subtraction, multiplication and division. The communications processor 50 on the other hand, is well-suited to interrupt-driven I/O communication tasks. The common ~44-3~6~

memory 53 is therefore controlled by allowing the a~ithmetic processor 51 to have access to the common memory 53 for a greater time, and by giving the communications processor 50 a controlled ability to interrupt the arithmetic processor 51 to update the data blocks stored in the common memory 53.
During these interrupt cycles, new MOVE SET BLOCKS(C~-(E) are written into the common memory 53 and new STATUS BLOCKS(S) are read from the common memory 53 for transmission to the PC processor unit 11~
The arlthmetic processor 51 controls the time that such an interrupt cycle can occur by controllin~ the CRAM AV~IL
line through a satellite I/O port 86. This port 86 is enabled throu~h the output port enable (OUT PORT EN) line and data is coupled throu~h an arithmetic data bus 84 (APDO-APD7) to activate the CRAM AVAIL line. Referring to Fi~.
10, the status of the CRAM AVAIL line is sensed by the communications processor 50 at terminal P17 and it responds by activating the INCRAM line throu~h terminal P26. The status of the INCRAM line is sensed by the arithmetic processor 51 through buffers 85, which are enabled through the input port enable (IN PORT EN) line~ The arithmetic processor 51 then knows that the communications processor 50 is about to take control, which it does by selectin~ a state for the CRAM CONTROL line in which the multiple~ers 83 couple addresses to the common memory 53 from the CRAM
address bus 72. In its other state, both before and after such an interrupt cycle, the CRAM CONTROL line sele~ts lines AAO-AA9, so that the arithmetic processor 51 has access to the common memory 53.
So far only the address si~nals to the master common memory 53 ha~e been discussed. Data is coupled to and from ~2(~3~69 the common memory 53 through the CRAM data bus 70 when the communications processor 50 has access. Data is coupled to and from the common memory 53 through the arithmetic multi-plex bus 76, a first set of two-way buffers a7, the arith-metic data bus 84 and a second set of two-way buffers 88, when the arithmetic processor 51 has access. During a read or write cycle, the arithmetic processor 51 puts out address data to the address latch 77 first, and then couples the data through data buses 76 and 84 to the common memory 53.
As the data is coupled, the buffers 87 and 88 are enabled through the chip select logic circuit 81, and through the A.P. DT and A.P. CRAM lines going to their respective enable inputs. A direction control (DT/R) line running ~rom the chip select logic circuit 81 to the inputs on the bufers 87 and 88 controls the direction in which data is transmitted.
Through the chip select logic circuit 81, the arithmetic processor can also enable a nonvolatile, arithmetic firmware memory 89, which stores processor instructions in machine language at processor addresses that are diferent from those where data is stored in the common memory 53. The arithmetic processor 51 can read and write data to and from a read/ write, arithmetic scratchpad memory 90 at another set of addresses. The address signals on lines A10-A14 and the signals through the control bus 80 are decoded by the chip select logic circuit 81 to generate control signals on the H. PROM, L. PROM, A.P. RD, A.P. WR and SCS enable lines.
The H. PROM and L. PROM lines are used to enable high address and low address portions of an arithmetic firmware memory 89. Signals on the A.P. RD and A.P. DT lines allow data to be read through the arithmetic data bus 8~ and the buffers 87. When the arithmetic scratchpad memory 90 is addressed, -~6-3~

a chip select signal is coupled to it through the SCS line, accompanied by either a read signal on the A.P. RD line or a write signal on the A.P. WR line. The buffers 87 and the buses 76 and 84 are also enabled during these cycles. The arithmetic firmware memory 89 stores machine-lan~uage instruc-tions in routines that are executed by the arithmetic proces-sor 51 to carry out the functions to be described. The scratchpad memory 90 provides a means for storing data, for further computation, or prior to transfer to the common memory 53, or prior to transfer to one or more of the satellite I/O modules 18.
When data is coupled to or from one of the satellite I/O modules 18, a set of data port buffers 91 are enabled through a data port enable (DATA PORT EN) line from the chip select logic circuit 81, and the direction of data flow is controlled through the DT/R line connected to a G3 input on the buffers 91. The buffers 91 drive the lines in the arithmetic data bus 84 or lines SDO-SD7 of a satellite multiplex bus 92 according to the direction in which data is being transmitted. As part of the read or write cycle in which data is coupled on the satellite multiplex bus 92, signals are also generated through axis read (AX RD) and axis write (AX WR) control lines. These lines are included in the secondary backplane bus 41 and connected to the satellite I/O port 86. These lines are controlled through the A.P. RD and A.P. WR lines going to the satellite I/O
port 86 from the chip select logic circuit 81. Other lines controlled through the satellite I/O port 86 ar~e the STOP
line, the address strobe (ASTB) line for signalling the identity of information on the satellite multiplex bus 92, the CRAM AVAIL line, and an interrupt (INTR) line goin~ back ~3~691 to the arithmetic processor 51. The satellite I/0 port 86 also includes a timer which i~ set to time out in 2.0 milli-seconds and generate a signal on the AX CLK line. The satellite I/0 port 86 is enabled through the OUT PORT EN line, when one or more of its satellite control lines is to be active.

SATELLITE I/O MODULE HARDWARE

Referring to Fig. 12, each satellite I/0 module 18 has its own axis processor 100. Like the arithmetic processor 51 discussed above, an Intel 8088 16-bit microelectronic processor has been selected for the axis processors 100 of the preferred embodiment. The axis processor 100 communi-cates with the other components on the module 18 through a 16-line (AX0-AX153 axis multiplex bus 101 that caries both address and data signals on its eight lower bit lines AX0-AX7.
The axis processor 100 also transmits signals through a control bus 102 to a control logic circuit 103. Further control signals are derived within this circuit 103 and coupled from its outputs to enable the other components on the module 18 at various times as the axis processor 100 is executing sequences of its machine instructions. The axis processor 100 obtains basic timing signals ~rom a clock circuit 104 through a CLOCK line running to the processor 100 with READY and RESET control lines. From these basic timing si~nals the processor 100 derives output control signals such as read (RD), write (WR~, I/O memory control (I0,/M), address latch enable ~ALE), data transmit/receive (DT/R) and data enable (DE~3. These signals are generated when the processor 100 fetches instructions, or couples other da~a throu~h the network of buses on the module 18.

~2~
The axis processor 100 sequentially reads machine instructions that are organized in program sequences and fixed in a readable, ~ut nonvolatile state in an axis firm-ware memory 105. When the axis processor 100 generates an address on the axis multiplex bus 101, it is clocked into a pair of latches 106 by a control signal received from the control logic circuit 103 on the BALE line. The address is then available to the axis firmware memory 105 through lines AXA0-AXA12 of an axis address bus 107. Lines AX13 and AXl~
of the axis multiplex bus 101 are also coupled through the latches 106, but these lines carry control signals to a decoding circuit 10~. When reading machine instructions from the axis firmware memory 105, the axis processor 100 generates a control signal through the control logic circuit 103 and the BRD line to a control input on the axis ~irmware memory 105. This allows a word of instruction information to be read onto the axis data bus (lines AXD0-AXD7~ 109.
Control signals are also transmitted through the DT/R line and a VEN~I0/M line which are coupled from the control logic circuit 103 to the two-way buffers 110, to activate these buffers 110 when such information is to be read into the axis processor 100 through the buses 101 and 109.
Similarly. the axis processor 100 can read data from or write data into an axis scratchpad memory 111. A control signal for the write operation is received by the scratchpad memory 111 through the BWR line. The DT/R line carries a signal of opposite logic state from that during the read operation, to enable the buffers 110 in an output direction.
The axis processor 100 shares access with the arithme-tic processor 51 to a read/write, master satellite common memory 112. Data is coupled between the common memory 112 38~9 and the axis processor 100 through an axis common memory bus (AX. CR. BUS) 113 which is coupled to the axis data bus 104, through another set of two-way buffers 115. These buf~ers 115 are controlled through the BWR control line and a CSEL/RD/WR control line coming from the control logic circuit 103. The ~WR line enables the buffers 115, while the CSEL/RD/WR line controls the direction in which the buffers 115 are enabled. This last control line is derived in part from a chip select (CSEL) line that is coupled with a memory select (MSEL) line from the decoding circuit 108 to the multiplexers (MUXS) 117, the CSEL line being further coupled to the control logic circuit 103.
The multiplexers 117 have address outputs A0-A7 coupled to corresponding address inputs on the master-satellite common memory 112 and address outputs A8-A10 coupled to enable inputs on that memory 112~ The multiplexers 117 provide two sets o inputs, one for lines controlled by the axis processor 100 and the other for lines controlled by the arithmetic processor 51 in Fig. 11. The axis processor 100 is coupled to these inputs through lines AXA0-AXA7 of the axis address bus 107, the BRD and BWR control lines, and the MSEL line mentioned previously. Address lines from the arithmetic processor Sl originate at the outputs of a memory address generator 118 and a latch 119, which has other outputs connected to inputs on the memory address generator 118.
Two lines in the satellite multiplex bus 92 become bank select lines for selecting four different 64-byte sections of the master-satellite common memory 112. The memory address generator 118 is coupled through six lines 116 to se~uentially address the 64-bytes within the selected area . . .

~203f~6~

of the memory 112. This bank-addressing technique allows the addresses from the arithmetic processor 51 to be coupled through the secondary backplane bus 41 with ~ewer than the eight address lines that are coupled to the memory 112.
Control signals from the arithmetic processor 51 are coupled with signals from the backplane lines, including AX STB, AX
RD, AX WR and AX CLK, by the control logic circuit 103 and by the arithmetic control (ARITH CONTROL) lines (illustrated as a single line) going to the multiplexers 117. A trigger signal for the memory address generator 118 is derived from these backplane signals and coupled through a CLK line to begin the se~uential addressing of a 64-byte section of the master-satellite common memory 112.
When the axis processor 100 has access to the master-satellite common memory 112, the ADR line is at a logic high state and the multiplexers 117 are enabled at their Gl inputs to couple the address and control lines rom the axis processor 100. At the same time the buffers 115 are enabled through the CSEL/RD/WR control line and the direction of data flow through the buffers 115 is controlled through the BWR line extending from the control logic circuit 103 to the G3 input on the buffers 115. The other buffers 110 between the master-satellite common memory 112 and the axis processor 100 are also enabled at that time.
When the arithmetic processor 51 is to interrupt the operation o the axis processor 100, it generates an address for the satellite I/O module 18 on the satellite multiplex bus 92, and also couples the necessar~ control signals on the AX STB, AX RD and AX WR lines to generate a signal on the A control line which clocks the address into the latch 119. Each satellite I/O module 18 has a numerical identity ~03~
that is maintained by three switches 120. These are coupled to three inputs on the memory address generator 118 for comparison to three bits of information coupled from the latch 119. When a match occurs, the state of the ADR line is switched to a logic low and the multiplexers 117 are enabled at the G0 enable input to select the address and control signals from the arithmetic processor 51. The logic low state of the ADR line also enables another set of two-way buffers 121 so that data can be coupled from the satellite multiplex bus 92 through the axis common memory bus 113 to communicate with the master-satellite common memory 112.
The direction in which these buffers 121 are enabled i5 controlled by a D control line, which in turn is controlled by control logic circuit 103 and the secondary bac~plane control lines.
The arithmetic processor 51 interrupts the axis pro-cessor 100 every ~.0 milliseconds by generating a signal on the axis clock (AX CLK) line through the control logic circuit 103. The AX CLK line controls the status of the axis interrupt (AX INTR) line going to an interrupt terminal on the axis processor 100. Thus, the arithmetic processor 51 has the ability to interrupt the axis processor 100 and gain control of buses to couple data to and from the master-satellite common memory 112. When several satellite I/0 modules 18 are included in a system, all are interrupted before data is sent, so that data can be sent to satellites controlling coupled axes of motion. The interrupt terminal on the axis processor 100 is disabled, when necessary to prevent an interrupt from the arithmetic processor 51 that would interfere with initlalization or other routines that should not be interrupted.

~2~)38g~
The a~is processor 100 also controls the digital-to-analog output circuitry and the position monitoring cir-cuitry that is necessary for closed-loop positioning con-trol. Control signals that are required for this function are coupled from the decoding circuit 108 to the circuitry in Fig. 13, these signals being derived rom signals on the axis address bus 107 from the axis processor 100. These signals are coupled on two feedback input enable (FDBKIN0 and F~BKINl) lines, a status input enable (STAT IN) line, a status output enable (STAT OUT) line, and two digital-to-analog clock output (~/A OUT 0-1) lines. The decoding circuit 116 also provides a backplane enable (BP EN) line for reading the STOP signal from the master positioning I/0 module 19 through buffers 114. Digital output data and position input data are coupled to and from this closed loop positioning control circuitry through the axis data bus 109, which extends from Fig. 12 to Figs 13 and 14.
Referring to Fig. 13, the ENCODER INPUTS of Fig. 3 are wired as inputs to terminals 28 on a swing arm connector 27 attached to the front edge of the satellite I/0 module 18.
These inputs more particularly include a pair of CHANNEL A
inputs, ~H and L) a pair of CHANNEL B (H and L) inputs and a pair of MARKER inputs (H and L). An optical encoder, which is suitable for use as the encoder 43 in Fig. 3, generates square wave input signals for CHANNELS A and B that have a 90 phase difference as seen in Fig. 15. The pulses are generated when etched lines on a transparent disc of the encoder are rotated between a light source and one or more photodiodes. The number of square waves generated in each revolution is related to the pattern and number of etched lines on the disc, and is generally in a rang from 50 to ~03~6~
2500 lines. The number of pulses can be multiplied by feedback multipliers of x2 and x4 and the disc count can be multiplied by a factor of 4. These pulses are seen in Fig.
15 with a MARKER pulse that is generated each revolution as a reference marker on the disc passes the detector. The use of two channels allows for encoding the direction of shaft rotation and also allows for pulse multipliers, as each change of state received through C~ANNEL A or CHANNEL B can represent an increment or individual input pulse from the encoder.
Referring again to Fig. 13, the incomin~ CHANNEI. A and CHANNEL B pulses are sensed through comparators and opto-isolating photo-transistors which are connected to form encoder input circuits 122. These circuits 122 also include the necessary biasing networks and switches to accept en-coded waveforms of various voltage levels and scale them to the +5-volt logic level signals that are observed at the CH.
A, CH. B and CH. C outputs going to the inputs of an eight-blt latch 123. The latch 123, a 256-line-by-4-bit program-mable read-only memory (PROM) 124 and four 4-bit binary counters 125 respond to timing and control signals from a Mhz clock circuit 127 and the AX CLK line to decode the encoded position input signals and periodically set up a binary, incremental position number in a 16-bit position register formed by two eight-bit latches 126. The feedback position is periodically read by the arithmetic processor 51, as explained relative to the flow charts herein, by sequentially enabling the eight-bit position register latches 126 through the FDBKIN O and FDBKIN 1 lines and reading the high and low bytes through the axis data bus 109.

~3~

The loading of the position register latches 126 is accomplished as follows. The CH. A and CH. B inputs to the latch 123 are coupled to the "O" and "2" inputs on the decoding PROM 124 and are wrapped around from these connec-tions through the same latch 123 for additional connections to the "1" and "3" inputs of the PROM 124, respectively.
This allows the state of the CH. A and CH. B inputs to be examined at two time inter~als (t) and (t-l) to see which channel has changed from the previous time interval and to combine the CH. A and CH. B signals from these two inter~als to form a four-bit sequence to address the decoding PROM
124. The states of CH. A and CH. B in the (t-l) interval are present at the 3D and 5D inputs on the latch 123 as the (t) interval states are received at the 2D and 4D inputs.
Clock pulses for the latch 123 are generated ak a frequency of 4Mhz by the clock circuit 127. Each clock pulse times a 4-bit pattern at outputs 2Q-5Q, which is coupled to inputs "0-3" in the PROM 124. Additional address bits are provicled by the MARKER (CH. C) input signal, which is coupled through the 6D input and 6Q output on the latch 123 to input "4" on the PROM 124. Two switches 117 are set to select input signals that are coupled to input "5" for an x2 feedback multiplier mode and to input "6" for an xl feedback multiplier mode. Each line in the PROM 124 has fcur bits of data including a count bit, a direction bit, a LOAD control bit and an extra unused bit. Four lines of data provide a first 4-bit sequence of 4 counts going to khe UP/DOWN (G3-G4) count inputs from the Dl output. Logic high counts are used to count up and logic low counts are used to count down. The counters 125 are cascaded with the outputs of khe first three connected to the G5 inputs on the counker 3~6~9 next in order. A second 4-bit sequence is simultaneously coupled from the D2 output in the PROM 124 to form a direc-tion pulse going to the G6 input on the counters 125.
The PROM 124 stores a 4-line sequence for the "up"
count direction and stores a second four-line sequence for the "down" count direction. The number of these sequences is doubled to distinguish events when the marker is detected.
These four sets of 4-line x 4-bit sequences must be further supplemented by four sets for the x2 mode and four sets for the xl mode. In the x2 mode only two count pulses are generated for each ~our-line se~uence read~ from the PROM 124 and in xl mode only one count pulse is generated to the counter for each four-line sequence read from the PROM.
By sampling the incoming pulses from the CHANNEL A and CHANNEL B inputs in the above manner, the phase relationship of the channels is decoded to determine direction and the number of pulses is converted to counts. The accumulated count val~e is loaded into the position register latches 126 when they are clocked by the .5 khz clock signal on the l~X
CLK line, which connects to the 7D input on the latch 123 and is wrapped around through the lD input and lQ output to several gates 139-141 to enable the inputs of the position register latches 126. A feedback data bus (FDBK DATA BUS) 95, which couples the outputs of the counters 125 to the position register latches 126, has sixteen lines. The feedback position data is read eight bits at a time through the axis data bus 109 when the axis processor 100 se~[uentially enables the latches 126 through the FDBKIN O-l lines.
Generally speaking, each time a marker is sensed, the cascaded counters 125 are reset by a signal at their LD/COUNT
~Ml, M2) inputs. This signal is generated by an input ~56~

.

` -~Z~)3~1~9 through the MARKER H and L inputs which are coupled through CH.C to the latch 123, and then to input D4 in the PROM 124.
When the output signal for the marker is transmitted from output D3 in the PROM it is coupled through a low-true NAND
gate 142 and an inverter 143. The PORT RESET line is also coupled through the low-true NAND gate 142 and is controlled by the axis parameter 100 through the control logic circuit 103 to control the times at which the cascaded circuits can be reset to zero.
A marker reset circuit 96 in Fig. 13 provides a circuit for distinguishing the first marker from successi~e markers.
The axis processor 100 provides a reference for detecting the first marker by generating a signal on the MARKER RESET
line to the input on the marker reset circuit 96. The next marker that is detected results in a signal on the MARKER
line from PROM 124 that is coupled to the marker reset circuit 96 to produce a signal on the FIRST MARKER line.
This signal is read through buffers 129 by the axis processor 100 when it reads the hardware I/O port 128.
Also connected to the swing arm 27 in Fig. 13 are user-operable controls (not shown) for JOG FORWARD (JOG F), JOG REVERSE ~JOG R) and HARDWARE STOP ~HDW STOP). These inputs duplicate the functions of several switches on the control panel 33, however, it is preferred to have these inputs also available on the satellite I/O module 18 itself.
A HOME input is provided for a home limit switch ~not shown in Fig. 1) on the machine 32. The terminals 28 for these inputs are connected to hardware input circuits similar to those for the encoder inputs which form a hardware I/O port 128. The input circuits in the hardware I/O port 128 include ~3~

a comparator to sense each input and a photoelectric transis-tor for isolating the electronics on the module 18 from the electrical operating environment outside the controller 10.
~hese hardware inputs are coupled to the axis data bus 109 through the buffers 129 and are read when these buffers 129 are enabled through the STAT IN line.
Fig. 14 shows the electronics for converting digital signals from the axis processor 100 to an analog output signal that controls the velocity of the servo motor 42. A
12-bit representation of the servo motor output velocity is multiplexed through the 8-bit axis data bus 109 and held in three 4-bit latches 130. Two of the latches are clocked through the D/A OUT 0 line to receive the upper eight bits, and the third is clocked through the D/A OUT 1 line to hold the lower four bits. The twelve bits of information are coupled to twelve inputs on a 12-bit digital-to-analog ~/A) converter 131. A feedback compensation circuit 137 is connected to two reference voltage terminals on the D/A
converter 131. The analog output o the D/A converter 131 generates analog signals in the range of ~10 AC volts and is connected to a first, analog input (pin 8) of a D/A sample and hold circuit 132. A D/A HOLD control line is coupled to a second, digital input (pin 3) on the D/A sample and hold circuit 132. When a logic high signal is present on this line, the analog output (pin 5) of the sample and hold circuit 132 follows the signal at its analog input (pin 3).
This is the "sample" mode. When a logic low signal is present at the digital input, the analog output is held, irrespective of a change at the analog input. This is the "hold" mode. The analog output of the D/~ sample and hold circuit 132 is coupled through an operational amplifier 133, 3~6~

that acts as a buffer between the sample and hold circuit 132 and the SERVO OUTPUT line that connects to a terminal 28 on the swing arm connector 27. The D/A sample and hold circuit 132 is switched every 2.0 milliseconds to the sample mode by the axis processor 100 to generate an output velocity signal to the servo motor 42. In between these events, the circuit 132 is retained in the "hold" mode.
The satellite I/O module 18 uses the TACH INPUT signals to detect a loss of feedback. If, for example, the D/A
converter 131 is generating a maximum output voltage, the servo motor 42 should be running at full speed and a compar-able maximum input voltage should be sensed through the TACH
INPUT lines (TACH H and TACH L), which are connected to two terminals 28 on the lower swing arm connector 27. Where the tach input voltage is not in proper proportion to the output voltage to the servo motor 42, the position eedback data from the encoder 43 is not valid. The tachometer input voltage is sensed through a tach input circuit 134 and a comparator 135. The input circuit 134 includes an opera-tional`amplifier and a biasing network that is used to calibrate the level of the tach input voltage to the voltage range of the ~/A converter 131. Because the maximum or full-speed voltage of tachometers may range from three to fifty AC volts, the satellite I/O module 18 must be con-ditioned to equate the maximum feedback voltage for the selected tachometer to the maximum servo velocity output voltage of +10 AC volts. When these two voltages have been "calibrated" the satellite I/O module 18 can sense a loss o~
the feedback when the tach input voltage is disproportional to the servo velocity output voltage by a selected amount 3~
that is speci~ied in the TACH PARAMETER word of the PARAMETER
BLOCK (A).
To test the tach input voltage through the comparator 135, a known signal must be coupled to one input and com-pared with the tach input voltage at another input. The digital output (pin 7) of the tach comparator 134 is read through the axis data bus 109 and the buffers 129 in Fig. 13 when the STAT IN line is enabled. The known signal is generated to the D/A converter 131, which has its analog output coupled to the analog input (pin 3) of a tachometer sample and hold circuit 136. The digital input (pin 8) of the circuit 136 is controlled through the TACH HOLD line.
For feedback calibration a signal proportional to the servo output voltage is coupled to the positive input (pin 3~ on the comparator 135 through the sample and hold circuit 136.
Two potentiometers in the tach input circuit 134 are ad-justed until the comparator 134 switches at its output (pin 7). This is also visually detected by a LED 134a, which is connected to the tach input circuit 134 and to an input of the comparator 135. When the comparator output switches, current is drawn through the LE~ 134a into the negative input (pin 2) of the comparator 134. To check for loss o ~eedback, analog signals are output through the tach sample and hold circuit 136 to one input (pin 3) of the comparator 134 and for each sample, a digital signal is read ~rom the output (pin 7) of the comparator 135 through the TACH COMP
line. By generating re~erence signals at the limits of an acceptable operating range for the tach input voltage, the axis processor 100 can detect whether the voltage received through the input circuit 134 is greater than the minimum acceptable voltage and less than the m~i ml~m acceptable ~Z~13fl69 voltage. If this test produces a negative result, there is a loss of feedback.
Commercially available servomechanisms 45 typically include a DRIVE DISABLE control circuit and this is con-trolled by the satellite I/O module 18 through the DRIVE
DISABLE line. This line is controlled through the axis control latch 138 which is enabled through the STAT OUT
line. The DRIVE DISABLE line is coupled through a drive disable output circuit 144, which provides isolation for the DRIVE DISABLE SIGNAL line and DRIVE DISABLE NEUTRAL lines.
The user supplies power to this circuit through the DRIVE
DISABLE POWER line. Signals for the TACH HOLD and D/A ~OLD
control lines and STROBE 1 and STROBE 2 lines are also coupled through the axis data bus 109, the axis control latch 138 and a low-true NOR gate 145. The STROBE 1 and STROBE 2 lines are used to control certain internal portions of the D/A converter 131 as recommended by the manufacturer of the chip.

5. OPERATION OF THE PROCESSORS ON THE MASTER POSITIONING
I/O MODULE

Referring to Figs. 16-18 and keeping in mind the hard-ware components described in Eigs. 10 and 11, the operation of the communications processor 50 begins when power is turned on, which is represented by start block 146 in Fig.
16. As further represented by process block 147, the proces-sor 50 then executes routines of diagnostic instructions stored in its associated firmware memory 55 to check the operation of its internal registers as well as the operation ~2~3~16~

of the communications scratchpad memory 52. Next, as repre-sented by process block 148 a 10-millisecond timer is started or restarted during the execution of a background loop. During the background loop the communications proces-sor 50 is waiting for an interrupt from the PC processor unit 11, which initiates execution of a read or write block transfer. During the 10-millisecond timed period represented by process block 149 the processor 50 checks for a 250-millisecond communications timeout, and then executes several NOP (no operation) instructions. Decision block 150 repre-sents the execution of an instruction to see if the 10-millisecond timer has timed out. If ten milliseconds pass without an interrupt, the communications processor will loop back to execute blocks 148 and 149. The l'YES'' result leading from block 150 represents the occurrence of an interrupt.
As part of the basic high density transfer disclosed in U.S. Patent No. 4,293,924, a module status word (MSW) (actu-ally a byte here) is received from the PC processor unit 11 and examined by the communications processor 5~ in response to an interrupt to determine whether a read or write block transfer is to be executed, and the determination of the type of block transfer is represented by decision block 151.
A read block transfer, executed through blocks 152-156, transfers data from the communications scratchpad memory 52 in Fig. 10 back to the PC processor unit 11. The status/
position data for a read block transfer is stored as seen in Fig. 17 in one o the two status/position data storage areas, S/P BLOCK O and S/P BLOCK 1. Two storage areas for status position data are needed in the communications scratch pad memory 52, due to the asynchronous nature of communica-tions in which the PC processor unit 11 is communicating ~L2~3l36~

with one of the S/P BLOCKS and the arithmetic processor 51 is communicating with the other.
As shown by process block 152, instructions are executed to initiate communications for a read block transfer and to assure that the communications processor 50 will not disturb any data in the common memory 53 of the master I/O position-ing module 19. Before the read block transfer is completed in I/O block 152, however, the status/position data in the communications scratchpad memory 52 will be updated for remote I/O systems where a ten-millisecond ti~er has timed out. When the I/O system is a "remote" I/O system as opposed to a "local" I/O system, data at the I/O interface might be changing, and yet be held at the I/O interface for longer than 10 milliseconds while awaiting service from the PC
processor unit ll. This is due to the longer propagation times in a remote system and the fact that blocks of data may be transmitted to many I/O modules at various remote locations. A check for the remote system is represented by decision block 153, and a check for the 10-millisecond time period is represented by decision block 154. If these conditions are presented the status/position data in the communications scratchpad memory 5~ will be updated, as represented by process block 155 and this improves the response time of the controller 10.
To update status/position data as represented by process block 155 the processor 50 checks an S/P flag in line 800 ~hexadecimal) of the common memory 53 ~seen in Fig. 18) to determine whether fresh status/position data has been re-ceived from any of the satellite I/O modules 18. If new status/position data is detected, it is moved from the AXES
STATUS BLOCKS(S)s area in Fig. 18 to one of the two status/

3~3~

position data storage areas, S/P BLOCK 0 and S/P BLOCK 1, seen in Eig. 17. In executing block 155, the address pointer to be returned to PC processor unit 11 is retained. Assuming that the status/position data has been updated, and the read block transfer completed through execution of I/O block 156, the communications processor 50 returns to the operations in process block 149 to restart the ten-millisecond timer and wait for another interrupt. Referring again to decision block 150 in Fig. 16, when a write block transfer, represented by I/O block 157 is executed, the various data structures discussed earlier are transferred to the master posltioning I/O module 19, including the PARAMETER BLOCK (A), the MOTION
CONTROL ~LOCK (B), MOVE SET BLOCKS (C) - (E) and MOVE SET
CONTINUATION BLOCKS (F) - (H). When these blocks are received from the PC processor unit 11, they are stored in the ~RITE
DATA AREAS O and 1 in Fig. 17. From there, these blocks are transferred to the common memory 53, to specific locations for each respective BLOCK (A) - (H) that are shown in Fig.
18. When a write transfer represented by I/0 block 161 has been executed, the incoming block of data is transferred from one of the WRITE DATA AREAS 0-1 in the communications scratchpad memory 52 to one of the above-mentioned block storage areas in the common memory 53.
After a write block trans~er to the scratchpad memory 52, the arithmetic processor 51 executes instructions to determine which BLOCK (A) ~ (H) in the common memory 53 is to be updated. The processor 51 receives requests for MOVE
~ET BLOCKS from the satellite I/O modules 18, and when such re~1ests are not pending, the arithmetic processor 51 re-~uests other appropriate data structures such as the MOTION
CONTROL BLOCK ~B) or the PARAMETER BLOCK (A). As shown by ~3~;9 decision block 158a in Fig. 16, if the last block received in the communications scratchpad memory 52 does not corres-pond to the block being requested by the arithmetic processor 51, data is not coupled to the common memory 53, but will remain in the scratchpad memory 52 to be written over.
Where the data block in the scratchpad memory 52 corresponds to the requested data block, the communications processor 50 executes further instructions represented by decision block 158b, to see if the correct number of words have been received for that block. A flag bit is then tested as shown by decision block 158c to determine whether the data received in this write block transfer has changed from the data in the previous write block transfer. The new BLOCK and the previous BLOCK are stored in WRITE DATA AREAS 0 and 1, respectively. Since the MOTION CONTROL BLOCK (B) is fre-quently received with unchanged data, this operation pre-vents the propagation of redundant data throughout the system, thereby conserving processing time for those proces-sors downstream from the communications processor 50. Where the new block examined by the communications processor 50 has been requested by the arithmetic processor 51, and contains new data, the block is loaded into the appropriate location in the common memory 53 as represented by process block 159.
To carry out the block trans~er operations seen in Fig.
16, an ID code for the block of data requested by the arith-metic processor 51 is stored at hexadecimal address C01 in the scratchpad memory 52, and module status words (MSW's) defining the block size o the received block and the requested block are stored in lines C02(hex) and C03(hex~ of the scratchpad memory 52. The block ID bits for the blocks -3~6~

in the WRITE AREAS O and l are stored in the second byte at each block. An address pointer (A POINTER, B POINTER, etc.) for the write block requested by the arithmetic processor 51 is stored in lines 806(hex) and 807(hex) of the master common memory 53. After processing a write block transfer as seen in blocks 157-159 of Fig. 16, the communications processor 50 updates status/ position data for the next read block transfer as seen in blocks 160 and 161 and then returns to execute process block 149 in the background loop routine.
The arithmetic processor 51 of Fig. 11 executes se-quences of instructions stored in its associated firmware memory 89 and represented in Figs. 21-24. A POWER UP RESET
routine in Fig. 21 is executed to start up communication between the master and satellite I/O modules 18 and l9 and to allow the satellite I/O modules 18 to digest the parameters from the PARAMETER BLOCK (A). A MAIN LOOP ROUTINE in Fig.
22 couples data between the common memory 53 (mapped in Fig.
18) and the arithmetic scratchpad memory 90 (mapped in Fig.
19) and also performs conversion of binary-coded decimal ~BCD) data to pure binary data and vice versa. The data in the common memory 53 is in the user format discussed earlier relative to Figs. 2a and 2b. This format uses an octal numbering system, but user data is actually coded for trans~
mission as four-bit BCD data with the BCD codes for numbers "8" and "9" not being used. Parameter and move data in BCD
format are coupled to the arithmetic scratchpad memory 90 and coverted to binary format for transmission to the satel-lite I/O modules 18. Through the execution each 2.0 milli-seconds of an INTERRUPT SERVICE ROUTINE, which is represented in Fig. 23, the arithmetic processor 51 sends parameter, motion control and move data to the satellites 18 and receives status and position data. The binary-coded parameter and move data are coupled to the master-satellite common memory 112 (mapped in Fig. 20).
Referring to Fig. 18, the MOTION CONTROL BLOCK (B) at address 840(hex) in the common memory 53 contains MOTION
COMMAND WORDS for up to three independent axes (see Table 3). The signals in these MOTION COMMAND WORDS are used to form SATELLITE CONTROL WORDS for each satellite I/O module 18. The two 16-bit SATELLITE CONTROL WORDS for the X-AXIS
module 18 are stored in an X-AXIS "SATELLITE FORMAT" DATA
AREA beginning at address 400(hex) in the arithmetic scratch-pad memory 90 (Fig. 19). The Y-AXIS SATELLITE CONTROL WORDS
are stored in a Y-AXIS "SATELLITE FORMAT" DATA AREA begin-ning with address 500(hex) and Z-AXIS control words are stored in a corresponding area beginning at the 700(hex) address. All of the memories used on the module 19 are eight bits wide so each line in the scratchpad memory 90 stores a byte, and two SATELLITE CONTROL WORDS occupy four lines. The SATELLITE CONTROL WORDS are organized as seen in Tables 12 and 13 below. These should be compared with the MOTION C0MMAND WORDS of Tables 4 and 5.

12~;~8~

DESCRIPTION OF FIRST SATELLITE CONTROL WORD

B Function 17 Full/Empty 16 Move Data Program Rate/Rapid Rate 14 Feedrate Override 13 Run/Halt Mode Select 12 Unused 11 Dwell Escape Move 7 Program/Manual*
6 Emergency Stop (E-Stop) Slide Stop 4 Escape/Go ~ome*
3 EOM Stop/Search Home*
2 Begin/Preset*
1 Go/Jog Reverse*
O Load Next Move/Jog Forward*

* Denotes active in manual mode DESCRIPTION OF SECOND SATELLITE CONTROL WORD
B Function 10~16 Feedrate Multiplier 7 Jog Rate Select 6 Direction Search Home Tach Calibrate*
4 Return to Position*
3 Initialize Home Position*
2 Parameter Block*
1 + Limit Override O Reset*

*Denotes active in manual mode Referring again to Fig. 18, the AXES STATUS BLOCK(S~ is seen above the MOTION CONTROL BLOCK (B) and is stored at addresses 806-81F(hex). The AXIS STATUS WORDS (described in Tables 9-10) are updated by the arithmetic processor 51, by examining TWO SATELLITE STATUS WORDS in its scratchpad memory 90. The FI~ST SATELLITE STATUS WORD seen in Table 14 ~2~3~9 corresponds to the FIRST AXIS STATUS WORD, and is coupled from the AXIS "SATELLITE FORMAT" DATA AREAS seen in Fig. 19 to the AXES STATUS BLOCK(S) in Fig. 18. The AXIS "SATELLITE
FORMAT" DATA AREAS include status position data areas, S/P
AREA O and S/P AREA 1, to asynchronously receive SATELLITE
CONTROL WORDS from the satellite 18 while making them avail-able to the arithmetic processor 51. The SECOND SATELLITE
STATUS WORD seen in Table 15 below provides local inputs ~rom the satellite to the arithmetic processor 51 and conse~
ouently it does not correspond to the SECOND AXIS STATUS
WORD.

DESCRIPTION OF FIRST SATELLITE STATUS WORD
Bit Function 17 Excess Error 16 Loss of Feedback Insufficient Data 14 Travel Limit +
13 Travel Limit-12 Feedrate Reduction Request 11 Hardware Stop Emergency Stop (E-Stop) 7 Program/Manual Mode 6 At Home Input No. 2 (JOG REVERSE) 4 Slide Stop 3 Input No. 1 (JOG FORWARD) ' 2 Ready 1 Done O In Position ~3~

TA~LE 15 DESCRIPTION OF SECOND SATELLITE STATUS WORD
Bit Function 17-10 Move Number 7 Not Used 6 Not Used Marker Found 4 Send Next Move 3 Parameter Error 2 Move Data Error 1 Control Word Error o Power Up Referring again to Fig. 18, the PARAMETER BLOCK (A) is stored at addresses 880-8FF(hex), which are seen just below the MOTION CONTROL BLOCK (B). The arithmetic processor 51 converts these parameters to binary format and stores them in the AXIS "SATELLITE FORMAT" DATA AREAS seen in Fig. 19.
As seen in the expanded portion of Fig. 19, the parameter areas in the "SATELLITE FORMAT" DATA AREAS also include an area for non-satellite format parameters that are used by the arithmetic processor 51 during its processing opera-tions. Only the satellite format parameters are transferred to the satellite I/O modules 18.
MOVE SET BLOCKS (C) - (E) and MOVE SET CONTINUATION
BLOCKS (F) - (H) are stored in areas seen below the PARAM-ETER BLOCK (A) in Fig. 18. Move data is selected a move at a time, converted to binary format by the arithmetic proces-sor 51 and stored in the MOVE DATA storage area i~ one or more of the AXIS "SATELLITE FORMAT" DATA AREAS depending on the mode of axis coupling. The storage area ~or the SATELLITE CONTROL WORDS for each axis is seen just above the ~O~E DATA storage area.
In coupling data between the common memory 53 and the scratchpad memory 90, the arithmetic processor 51 utilizes ~70-several control bytes seen in Fig. 18. The control bytes at addresses 802-805 of the common memory are as follows. The byte at 802 includes a 3-bit BLOCK ID number which identi-fies the type of incoming BLOCK (A) - (H) just transferred by the communications processor 50. The byte at 803 con-tains the ID number for the previous BLOCK (A) - (H) trans-ferred to the common memory 53 by the communications proces-sor 50. The byte at 804 contains an ID number or the type of BLOCK ~A) - (H) being requested by the satellite I/O
modules 18 and the byte at 805 contains the block transfer module status word (MSW), which is a byte definin~ the direction of block transfer and the block size.
Referring to Fig. 20, the master-satellite common memory 112 on each satellite I/O module 18 has four banks, BANK O-BANK 3, and these correspond to the.areas within its corresponding AXIS "SATELLIT~: FORMAT" DATA AREA in the scratchpad memory 90 as seen in Fig. 19. Data is trans-ferred from the CONTROL WORD and MOVE DATA storage areas at 400(hex) to BANK O of the master-satellite common memory 112. Data is returned from BANK 1 of the X-AXIS satellite I/O module 18 to one of the S/P AREAS O or l beginning at address 420(hex) in Fig. 19. The satellite format param-eters at address 440(hex) are subdivided into two groups and transferred to BANKS 2 and 3 in Fig. 20.
Besides the AXIS "SATELLITE FORMAT" DATA AREAS at 400(hex), 500(hex) and 700(hex) the arithmetic scratchpad memory 90 in Fig. 19 also has miscellaneous storage araas at 600(hex)-6FF(hex). These include an area for storage of MSW's for the 13LOCK (A) - (H), and an area ~or MOVE COUNTERS
AND SMCW POINTERS. The latter are used for processing individual moves as they are selected from the common memory `~
~25:93~

53, loaded into the AXIS "SATELLITE FORMAT" DATA AREAS in the scratchpad memory 90, and then trans~erred to the satel-lite I/O modules 18. An axis storage area maintains a reference to the number of axes being used and the mode of axis coupling. And, a STORA~E FOR DATA CONVERSIONS area is used for storing data immediately after it has been con-verted from BCD to binary or vice versa. This background of the memory organization shows the source and destination for data that is transferred during execution of the se~uences o~ instructions stored in its firmware memory 89, which will now be described with reference to the flow charts in Figs.
21-24.
Referring to Fig. 21, after power on, represented by start block 162, the arithmetic processor 51 checks the functioning of the common memory 53 and its scratchpad memory 90 and initializes the 2.0 millisecond timer in the satellite I/O port 86 (Fig. 11), as represented by process block 163. The processor 51 then examines the NEW WRITE
flag in line 800(hex) o~ the common memory 53 to see whether a new block of write data has been received in the common memory 53, and if so, it checks the ID bits for this block in line 802 to see whether PARAMETER BLOCK (A) has been received, these decisions being represented by decision block 164. Where the PARAMETER BLOCK (A) has not been received, the processor 51 uses the timer in the satellite I/O port 86 to execute a 10-millisecond delay routine repre-sented by process block 165, and loops back to decision block 164.
When the PARAMETER BLOCK (A) has been received in the storage area beginning at 880~hex) in Fig. 18, the processor 51 converts the parameters to binary format and stores them ~3~16~

in the binary format parameter area within the applicable AXIS "SATELLITE FORMAT" DATA AREAS as represented by process block 166. The 2.0 millisecond timer is then started, as represented by process block 167, and when it times out an interrupt signal will be coupled to the processor 51 through the INTR line (Fig. 11) and the INTERRUPT SERVICE ROUTINE
in Fig. 23 will be executed. After starting the timer, the processor 51 checks to see whether the satellite I/O modules 18 have completed a power-up sequence as shown by decision block 168. The processor 51 remains in a delay loop through process block 169 until all of the satellites 18 signal they are ready for execution of the next block of instructions.
I/0 block 170 represents an interrupt sequence in which the processor 51 transfers the parameters to the satellite I/O
modules 18 by executing the routine of Fig~ 23.
The successful transfer and digestion of the PARAMETER
BLOCK ~A) is checked as shown in decision block 171 by testing the satellite READY flag that returned in the FIRST
SATELLITE STATUS WORD from each satellite I/O module 18.
The READY fla~ is eventually reflected back to the PC
processor unit 11. While waiting for this confirmation, the processor 51 calls and executes the 10-millisecond delay routine represented by block 172, in the manner of blocks 165 and 169. As seen in process block 173, when the satellite READY flags are detected, the arithmetic processor 51 loads the B POINTER into locations 806 and 807~hex), where a BLOCK POINTER is stored for r~turn to the PC
processor unit 11 in the AXES STATUS BLOCK(S). The arith-metic processor 51 then waits for the MOTION CONTROL BLOCK
(B) to be received, by repeatedly checking the ID bits stored at location 802(hex) in Fig. 18 as represented by 3~;9 decision block 174. A 10-millisecond delay routine repre-sented by process block 175 is executed when the MOTION
CONTROL BLOCK (B) is not detected. BLOCK (B) is processed to form the FIRST AND SECOND SATELLITE CONTROL WORDS de-scribed in Tables 12 and 13. As represented by I/O block 176, the processor 51 then sends these CONTROL WORDS to the master-satellite common memory 112 on each satellite I/O
module 18. The processor 51 then executes a shortened version of a SATELLITE CHECK routine represented by process block 177 and shown in more detail in Fig. 24.
Referring to Fig. 24, the SATELLITE CHECK routine is executed by the arithmetic processor 51 to update the status/
position feedback data in the AXES STATUS BLOCK(S) area in the master I~O module common memory 53. The processor 51 first points to an area within BLOCK(S) where status/position data is stored for a particular axis, as represented by process block 181. Then a check is made that no satellite communication error has occurred on initial transmission as represented by process block 182. Next, there is a determi-nation whether feedback is to be reported as an absolute position or as following error (the result of subtracting actual position from comanded position), and this is repre~
sented by process block 183. The feedback data, which has been received in the AXIS "SATELLITE FORMAT" DATA AREAS in Fig. 19 is then converted from binary to BCD format and stored in the AXES STATUS BLOCK(S) AREA in Fig. 18, as represented by process block 184. Then, for the version of the SATELLITE CHECK routine executed during power up or reset conditions, the routine is repeated until all axes have been serviced, as represented by decision block 185 (in phantom). When all axes have been serviced, the processor 51 3a~.

returns from the SATELLITE CHECK routine, as represented by return blocks 186, to block 178 in Fig. 21. Next, in Fig.
21, the arithmetic processor 51 checks bit 5 of the SECOND
SATELLITE STATUS WORD for each satellite I/O module 18 to determine whether markers have been found for the encoders of all the axes. When this marker is found, it provides a position reference to count revolutions and increments of the encoder shaft. The satellite I/O module 18 is then ready to receive move data, and instructions represented by process block 179 are executed to load one of the MOVE SET
POINTERS (C)-(H) to the AXES STATUS BLOCK(S) area in Fig.
18, to be returned to as the PC processor unit 11. A~ter completing this POWER UP RESET routine, the arithmetic processor 51 enters a MAIN LOOP sequence seen in Fig. 22.
Referring to Fig. 22, the MAIN LOOP routine begins with the arithmetic processor 51 executing a sequence of instruc-tions to obtain control of the common memory 53, as repre-sented by process block 188~ The data at location 80Q(hex) is examined for the NEW WRITE FLAG as represented by decision block 189. When this flag is set, a new block of data has been loaded into the common memory 53 by the communications processor 50 and is ready for processing by the arithmetic processor 51. The arithmetic processor 51 executes a BLOCK
SORT sequence represented by process block 190 to determine which of the BLOCKS ~A) - (H) has been received. Assuming that PARAMETER BLOCK (A) has been received, instructions represented by process block 191 are executed to convert the parameters for each axis to a binary format and to load these parameters into the AXIS "SATELLITE FORMAT" DATA AREAS
in Fig. 19. As represented by process block 192 pointers and cour.ters are then initialized in preparation for transfer ~LZ~3~

of the parameters to BANKS 2 and 3 of the master-satellite common memory 112 seen in Fig. 20. As represented by process block 193 the B POINTER is than loaded into the AXES STATUS
BLOCK(S) AREA in Fig. 18 to be returned to the PC processor unit ll.
Referring to process block 194, if a MOTION CONTROL
BLOCK (B) is detected during the BLOCK SORT sequence 190, the MOTION COMMAND WORDS in Tables 4 and 5 are used to form the SATELLITE CONTROL WORDS described in Tables ll and 12.
Where one of the MOVE SET BLOCKS (C) - (E) is detected during the block sort sequence, tha B POINTER is ]~oaded in the AXIS STATUS BLOCK(S) storage area in the common memory 53 as represented by process block 195. Next, as shown by process block 196, a single move control word (SMCW) pointer and a MOVE COUNTER are initialized in preparation for transfer of data for a single move from one of the MOVE SET BLOCK
areas in the common memory 53 to one of the AXIS "SATELLITE
FORMAT" DATA ARE~S in the scratchpad memory 90. Similar operations are carried out for MOVE SET CONTINUATION BLOCICS
(F) - (H) as represented by process blocks 197 and 198.
After one of the BLOCKS (A) - (H) has been processed, the arithmetic processor 51 returns control of the common memory to the communications processor as represented by process block 199. The arithmetic processor 51 then executes the more extensive version of the SATELLITE CHECK ROUTINE of Fig. 24 as represented by process block 200 in Fiq. 22. the SATELLITE CHECK routine is also executed where a block of data is not detected by executing the instructions repre-sented by decision block 189.
In executing the long version of the SATELLITE CHECK
routine, the arithmetic processor 51 also updates the status/

-76~

~203~;9 feedback position data by executing blocks 181-185, which were described previously for the POWER UP RESET routine.
In the MAIN LOOP sequence, however, the arithmetic processor 51 also determines whether one of the satellite I/O modules 18 has requested that move data be sent to it, this request being detected in the SEND NEXT MOVE bit of the SECOND
SATELLITE STATUS WORD of Table 14. The examination of this bit is represented by decision block 202 in Fig. 24. When the next move has been requested, a SEND NEXT MOVE ACKNOWL-EDGE flag, which is stored with the MODULE STATUS WORDS
(MSW'S) in Fig. 19, is checked to see whether the move data has already been sent, and this test is represented by decision block 203. Assuming move data has been requested, but has not been sent, the SEND NEXT MOVE bits for all coupled axes must all be detected before data can be trans-ferred ~o the satellite I/O modules 18 operating in the coupled mode, and this decision is represented by decision block 20~. As represented by decision block 205, a WRITE
DATA FOR SATELLITE X POINTER in line 604(hex) in Fig. 19 is checked to see if data is on hand for the axis requesting a new move. Where the data is on hand, the single move con-trol word (SMCW) for the move data is processed and the move data is loaded in binary format into the X, Y or Z-AXIS
"SATELLITE FORMAT" DATA AREAS in Fig. 19. After processing the move data or deciding it cannot be processed in blocks 203-206, the arithmetic processor 51 completes updating the status/position data by executing process blocks 183 and 184 prior to returning to the main loop for execution of process block 188.
Referring again to decision block 202 in Fig. 24, if a next move has not been requested, instructions are executed ~2~3~

to determine whether a GO command for initiating motion along one or more axes has been requested and this is repre-sented by decision block 207. Analogous to the processing of move data, there is a check to see if all the coupled axes are ready as represented by decision block 208. When this result is positive, the GO command is formulated and sent to the satellite modules 18 as represented by process block 209. The SATELLITE CHECK routine then concludes with the updating of the position feedback data in process blocks 183 and 184.
The routines discussed this far are executed to trans-fer data between the common memory 53 and the arithmetic scratchpad memory 90. To couple data between the arithmetic scratchpad memory 90 and the master-satellite common memory 112 seen in Figs. 12 and 20, the INTERRUPT SERVICE ROUTINE
seen in Fig. 23 is executed every 2.0 milliseconds. The interrupt is represented by start block 210 in Fig. 23. The satellite I/O port 86 includes an interrupt flip-flop which is set and which is checked, when an interrupt occurs, as represented by decision block 211. If the flip-flop is not set, the processor S1 returns from the interrupt through return block 222. If the satellite I/O port flip-flop is set, an interrupt control word at location 600(hex) in the arithmetic scratchpad memory 90 is examined to see whether the transfer is to be a write transfer to a satellite I/O
module 18 or read transfer from a satellite I/O module 18.
This is represented by decision blocX 212. After all of the satellite I/O modules 18 have been written to, or read from, a read/write flag is complemented to transfer data in the other direction for all of the satellite I/O modules 18.
Assuming that data is first read from the satellite I/O

~J3~6~

modules 18, the processor 51 points to BANK 1 of the master-satellite common memory on the satellite I/O module 18 determined by an interrupt mask stored in the I~TERRUPT
FLAGS AND POINTERS area in Fig. 19. This is represented by process block 213. A bit in this mask is rotated to sequen-tially point to the X, Y and Z AXIS I/O modules 18. Address signals, including a signal on the ASTB line in Fig. 12, are generated through the secondary backplane bus 41 to the selected satellite I/O module 18 as represented by process block 214. As represented by process block 215 the proces-sor 51 next points to the S/P AREA 0 or 1 in the AXIS
"SATELLITE FORMAT" DATA AREA in the corresponding satellite I/O module 18. Then, as represented by I/O block 216, twelve bytes of status/position/following error data are coupled from the satellite I/O module 18 to this area. The address signals on the secondary backplane are then termi-nated as represented by process block 217. A check is then made for a checksum error as represented by decision block 218. When an error occurs the status/position/following error data is cleared from its S,/P ARFA as represented by process block 219, otherwise, the location of the S/P AREA 0 or l is saved so that the alternate area can be used on the next transfer from the satellite I/O module 18. This opera-tion is represented by process block 220. The interrupt se~uence is terminated through process block 221 in which the inierrupt mask is rotated to point to the next satellite I/O module 18, the read/write flag is complemented if all of the satellite I/O modules 18 have been serviced for input or output, and a flip-flop in the satellite I/O port 86 is reset. The routine is then exited through return block 222 to return to the MAIN ZOOP routine in Fig. 22.

-79~

\
~2~3~

When a bloc~ of data is to be written to one of the satellite I/O modules 18, as a result of executing decision block 2~2 in Fig. 23, a test instruction is executed to determine if new data is on hand, as represented by decision block 2~3. If so, address signals are generated on the backplane, to a satellite selected through examination of the interrupt mask, and this is represented by process block 224. Decision block 225 represents the execution of instruc-tions to determine whether new data has been received in a PARAMETER BLOCK (A) or in one of the MOVE SET BLOCKS (C) -(H). Where the PARAMETER BLOCK (A) is detected through the execution of block 225, a data transfer is made to BANKS 2 and 3 in the master-satellite common memory 112 as repre-sented by I/O block 226. Move data on the other hand is transferred to BANK 0 as shown by I/O block 227. Address signals on the secondary backplane bus 41 are then termi-nated as shown by process block 228. Block 221 is again executed to rotate the interrupt mask and complement the read/write flag, if necessary, before exitin~ the routine.
This completes the description of the INTERRUPT SERVICE
ROUTINE, the last of the`major sequences to be described for the arithmetic processor 51.

MODULES

The satellite I/O modules 18 seen in Fig. 3 drive the axis servo motors 42 in response to ihe satellite-formatted move data that is received from the master positioning I/O

module 19. The axis processor 100 ~Fig. 12) on each satellite 18 brea~s each move into increments and generates a digital ~2~3~6~

velocity signal to its servo motor 42 each ~.0 milliseconds to move one increment. The digital signal is converted to an analog signal before actually being applied to the servo motor 42. Master-satellite communications and servo I/O
functions are directed by machine instructions organized in an interrupt routine, which is executed in an interrupt interval of 2.0 milliseconds. The axis processor 100 re-ceives an interrupt signal eve~y 2.0 milliseconds on the AX
INTR line in Fig. 12, which is coupled through logic circuit 103 and AX CLK line to the satellite I/O port 86 in Fig. 11.
Upon power up, represented by start block 229 in Fig.
26 the axis processor 100 executes a RESET routine, repre-sented by process block 230, with interrupt terminals dis-abled, to check the operation of the memories on the satellite I/O module 18. The feedback counters 125 are cleared and their value is saved in a FEEDBACK SAVE area listed in Table 17 below. After these operations, the internal interrupt circuitry within in the axis processor 100 is enabled, and an interrupt vector is set up. On the first interrupt signal, the axis processor 100 will jump to a power up loop beginning with process block 231 in Fig. 26.
Generally, the operations provided by execution of the power up loop are as follows. The axis processor 100 will continue to execute instructions in this loop until the first marker is detected. While waiting for this event the axis processor 100 will look for new parameters to be processed for operation of its satellite I/O module 18 and will set a READY flag upon digestion of the new parameters, as discussed in connection with the master positioning I/O
module 19. The axis processor 100 also searches for the home position, which can be determined by the location of a ~2~3a~69 home limit switch, or by a position programmed by the user in the PARAMETER BLOCK (A). When a home limit switch is used, the first marker will be considered to be the first marker detected after the home limit switch is found. After processin~ any new parameters and any manual mode command signals the axis processor 100 creeps at a low rate in response to a hardware or programmed jog command and looks for the first marker on the shaft encoder 43. When the first marker is found any manual mode command will then be executed at its original selected rate, if that rate is higher than the creep rate.
The more detailed description of these operations is as follows. Referring to process block 231 in Fig. 26, the axis processor 100 in Fig. 12 executes instructions from its firmware memory 105 to read the SATELLITE CONTROL WORDS and to verify them by examining a CONTROL WORD CHECKSUM. The location of this checksum is shown in the map of the common memory 112 in Fig. 20. The processor 100 next checks a bit in the FIRST SATELLITE CONTROL WORD (Fig. 20~ to see if new control information is present in those CONTROL WORDS.
During power up this means that new data, such as parameter data or a manual mode command to drive the axis slide to the home position, has probably been received in the master-satellite common memory 112. Therefore, the processor 100 next examines another bit in the FIRST SATELLITE CONTROL
WORD to see whether a manual mode command is present, and this is represented by decision block 233. The axis processor 100 also checks for new parameter data as repre-sented by decision block 23a. If a new parameter from the PARAMETER BLOCK (A) is detected, the parameters are trans-ferred to the PARAMETER TABLE seen in ~i~. 25 and defined in 12~3~6i9 Table 16 below. It will be noticed that Table 16 corresponds to lines 7-25 in Table 1, which defined the parameter for one axis in PARAMETER BLOCK (A).

DESCRIPTION OF PARAMETER TABLE
IN THE AXIS SCRATCHPAD MEMORY

Location~s) Parameter OQEAwOOEB GAIN REDUCTION FACTOR
OOEC-OOEF RAPID RATE

OOR8~00F9 +D/A VOLTAGE
OOFA-OOFB -D/A VOLTAGE
OOFC-OOFD % EX~ESS ERROR

OlOA-OlOD +TRAVEL LIMIT
OlOE-Olll -TRAVEL LIMIT

0116-OllD TACH PARAMETERS

Besides these user-defined parameters, the satellite I/O module 18 uses certain computed parameters. From the parameters INITIAL GAIN, GAIN BREAK VELOCITY, RAPID RATE, GAIN REDUCTION FACTOR, EXCESS ERROR FACTOR, +D/A VOLTAGE and -D/A VOLTAGE, other satellite operating parameters are calculated as follows:

1) FOLL.ERROR GBP = GAIN BREAK VELOCITY/INITIAL GAIN
(16-bit word) 2) REDUCED GAIN = (INITIAL GAIN)(GAIN REDUCTION FACTOR) (16-bit word) ~1`2(~3~69 3) MAX.FQLL.ERR. = RAPID RATE-GAIN BREAK VELOCITY
(32-bit word) REDUCED GAIN
+ FOLL.ERROR GBP

4) EXCESS FOLL.ERROR = (MAX.FOLL.ERR~)(EXCESS ERROR FACTOR) +
~32-bit word) MAX.FOLL.ERROR

5) FEEDRATE SUPPRESSION PT. = (MAX.FOLL.ERR.)(6.25%) +
(32-bit word) MAX.FOLL.ERROR
6) PSCON,NSCON* = 20~7 (+ D/A VOLTAGE) (16-bit words) 7) SCON = (RAPID RATE/INITIAL GAIN) X 1,000 (16-bit word) *POSITIVE AND NEGATIVE VALUES
Eig. 4 illustrates both user-defined parameters, such as INITIAL GAIN and GAIN BREAK VELOCITY, and the computed parameters such as FOLLOWING ERROR at the GAIN BREAK POINT, REDUCED GAIN and MAXIMUM FOLLOWING ERROR. The computed parameters are not stored in the PARAMETER TABLE, but in a WORKING STORAGE AREA in Fig. 25, which also stores other results calculated during positioning control operations.
The WORKING STORAGE AREA is more particularly defined in Table 17 below.

DESCRIPTION OF WORKING STORAGE AREA

Location(s) Operating Parameter 000C-OOOF MANUAL POSITION (MAN POS) 0010-0013 COMMAND POSITION (CPOS) (MAXFERR) 0018-0019 POS. D/A SCALE FACTOR
(PSCON~
001A-001B NEG. D/A SCALE FACTOR
(NSCON) 001C-OOlD OUTPUT SCALE FACTOR (SCON) 001E-OOlF FOLLOWING ERROR AT GAIN
BREAK POINT

(SUPRPT) (CONTROL~

(PT DCEL) 0032-0035 INTEGRAND ~INTGRND) 0036-0039 DESIRED RATE (DRATE) 003D-0041 ACTUAL RATE (ARATE) 0046-0049 ACTUAL POSITIQN (POS) 004A-004D FOLLOWING ERROR (FE) 0050-0051 ACCUMULATOR (ACCUM) (DC RAMP) 0054-0055 FEEDBAC~ SAVE (FDBKSAV) 0056-0057 FEEDBACK INCREMENT ~FDBK) ACCEL/DECEL (ADJ CNT) 005B-0053 FEEDRATE MULTIPLIER (FDR
MULT) The transfer and calculation of parameters in the above Table is represented by process block 235 in Fig. 26. When new parameters are not detected through execution of decision block 235, the READY flag is tested by executing a conditional instruction, which is represented by decision block 236.

The READY flag is set when the parameters are processed in block 235, so that in succeeding cycles through the power up -8~-~2~

loop, the axis processor 100, as well as the arithmetic processor 51 discussed earlier, will know that the parameters have been digested. Where the READY flag is set, the axis processor 100 can then check for the home limit switch. As shown by decision block 237, a SEARCH HOME co~mand bit is examined in a FIRST SATELLITE CONTROL WORD. When this bit is set, a SEARCH HOME sequence represented by process block 238 is executed to examine a bit that is set when the home limit switch is sensed through the hardware I/O port 128 in Fig. 13. Where the home limit switch is not utilized, home position is obtained from the PARAMETER ~LOCK (A). Next, the axis processor 100 looks for any programmed jog commands as represented by decision block 239. After any manual mode commands and parameters have been processed, or the home position has been initialiæed, the SATELLITE CONTROL WORDS
are cleared from the master-satellite common memory 112, as represented by process block 240, to allow a new block of data to be received from the master positioning I/O module 19 .
When the resu].t of decision block 232 is negative, or after exec~lting block 241, the axis processor 100 reads status data from the hardware I/O port 128 as represented by I/O block 2~2. The word of data read from this I/O port is defined in Table 18 below.

3~69 DESCRIPTION OF STATUS WORD READ
FROM HARDWARE I/O PORT

Bit Function 17 Spare 16 Tach Comparator Impact First Marker 14 Successive Marker Inputs 13 Home Limit Switch 12 Jog Reverse 11 Jog Forward Hardware Stop (E Stop) 7 I/O Reset (Slide Stop) 6 Master Stop (Slide Stop) Master in Common Me~ory 4-0 Spare After status data has been read through the hardware I/O port 128, the READY flag is again checked as represented by decision block 243. Where the READY flag has been set, instructions represented by decision block 244 and process block 245 are executed to set up hardware jog actions that are used in directing the servo motor 42 to creep at a low rate until the first marker is detected. Next, as repre-sented by decision block 247, a check is made for the first marker. If the marker has not been detected by reading status data through the hardware I~O port 128 the loop is repeated by returning to process block 231. Where the first marker has been found, instructions are executed to check whether the servo is in motion, as represented by decision block ~48. If the servo is in motion, the jog rate for any pending jog command is loaded in the appropriate storage areas, as represented by process block 249. The axis proces-sor 100 is then ready to re~uest move data, and does so by executing instructions represented by process block 250.

~;2038~

Upon completion of the POWER UP AND RESET ROUTINE the axis processor 100 begins execution of a MAIN LOOP ROUTINE
that is charted in Figs. 27a and 27b. Fig. 27a is generally related to programmed moves, while Fig. 27b is generally related to processing manual mode commands and new parameters similar to the POWER ~P AND RESET ROUTINE.
Ater entering the MAIN LOOP as represented by start block 251, the processor 100 examines the SATELLITE CONTROL
WORD CHECKSUM to assure that a valid transmission has occurred from the master positioning I/O module 19. This is represented by process block 252. Next, a conditional instruction is executed to detect new move data as repre-sented b~ decision block 253. If no new move data is detected, the processor then processes any manual mode commands or program mode commands transmitted through the SATELLITE CONTROL WORDS. As represented ky decision block 254, the processor 100 checks for program mode commands first. These commands include LOAD NEXT MOVE, the GO
command, the EOM (end-of-move) STOP command and the ESCAPE
command. When the controller 10 is in the manual mode, the routine proceeds from decision block 254 in Fig. 27a to decision block 261 in Fig. 27b. From there, the processor 100 processes manual mode commands, new parameters or one of several commands related to establishing a home position.
If program mode commands are processed by virtue of executing instructions represented by process block 255, the axis processor 100 then proceeds to a CLEAR portion of the MAIN
LOOP beginning with process block 266 in Eig. 27b.
Referring again to decision block 253 in Fig. 27a if new move data is detected, a conditional instruction, repre-sented by decision block 256, is executed to see whether the 31~6~

move is the ESCAPE move. When ordinary move data is present, the single move control word (SMCW) is stored in the NEXT
MOVE BUFFER in Fig. 25 and the move request is cleared as represented by process block 257. Next, the move data is loaded into the NEXT MOVE ~U~ in Fig. 25 as represented by process block 257 and a checksum is examined to make sure that no communication errors have occurred in transferring the move data. The ESCAPE move is processed similar to ordinary move data through execution of process blocks 259 and 260 except that a next move request is not cleared for the ESCAPE move. After loading the applicable move data into the NEXT MOVE BUFFER, the processor 100 again proceeds to the CLEAR portion of the sequence beginning with process block 269 in Fig. 27b.
Manual mode commands are processed during the MAIN LOOP
in a similar, but nevertheless slightly different manner than during the POWER UP AND RESET ROUTINE. As illustrated by decision block 261 in Fig. 27b, it must irst be deter-~,ined whether a programmed move is in progress. If the satellite I/O positioning module 18 is doing a programmed move and a manual motion command is received, the manual motion command will be ignored until the programmed move is completed. Programmed and manual moves are executed asyn-chronously on the basis of which is received first. Thus, if a programmed move is in progress, blocks 262-266 are skipped, and the hardware I/O port is read as shown by I/O
block 267.
When a programmed move is not in progress as represented by the "NO" result for decision block 261 in Fig. 27b, a check is made for new parameters as represented by decision block 262. When a new PAR~METER BLOCK (A) has been received, ~89-3~369 the additional parameters are computed and all of the para-meters stored in the axis scratchpad memory lll seen in Fig.
25. If parameters have previously been received, the READY
flag will be set and this will be detected through execution of an instruction represented by decision block 264. ~hen the READY flag is set there is the possibility of executing either an initialize home position sequence, a GO HOME
command or the SEARCH FOR HOME sequence discussed earlier in relation to the home limit switch. In the initialize home sequence, the home value received in the PARAMETER BLOCK (A) becomes the command position and the present position becomes the home position less the following error. Ater processing any of these home position sequences, the axis processor lOO
proceeds to the CLEAR portion of the MAIN LOOP which begins with block 266.
After clearing the SATELLITE CONTROL WORDS, as repre-sented by process block 266, the axis processor 100 reads the hardware I/O port seen in Table 18 above, as represented by I/O block 267. Bit 1~ (octal) is checked, as represented by process block 268, for further markers. Other hardware inputs such as the STOP button on the satellite I/O module 18, and the I/O RESET and MASTER STOP inputs from the master I/O positioning module are also checked and processed, as represented by process block 269. A set of three blocks 270-272 is then executed to load any jog rate needed for execution of a hardware jog command. As represented by decision block 273, if a jog motion is under way, a check is made as to whether processing should be done in preparation for further motion through execution of block 274 or in preparation for terminating motion through setting a flag for decelaration to zero velocity as represented by process ~Z~3~6~

block 275. After any interrupt has been completed, the axis processor lOO returns to the START portion of the MAIN LOOP
in Fig. 27a.
The MAIN LOOP routine in Figs. 27a and 27b is inter-rupted each 2.0 milliseconds and an interrupt routine is executed to control the servomechanism 45 as it moves, or in "real time." Referring to Fig. 28, the interrupt is repre sented by start block 280. The first step in the interrupt routine is represented by decision block 281, where the axis processor checks for overlapping operation with the arith-metic processor 51 relative to their common memory 112. In this event, an instruction represented by process block 282 is executed to signal an E-STOP and through decision block 283 the E-STOP condition will be detected. Process block 284 will then be executed to execute the E-STOP. Where no overlap is detected through execution of decision block 281, the register values and index pointers from the MAIN LOOP
routine are saved, a 2.0 millisecond timer is reset, and a BUSY flag is set as represented by process block 285.
Assuming there is no condition for causing an E-STOP, the processor 100 executes a servo I/O routine represented by process block 286, and described in more detail relative to Fig. 29. During this routine, velocity output signals are transmitted to the servo motor 42 and position feedback is read from the shaft encoder 43. The axis processor 100 then checks for the manual mode of operation in which a SEARCH
HOME, a GO HOME or a JOG move is executed and this sequence is shown in blocks 287-292.
Assuming that no E-STOP or manual mode command is to be executed, the axis processor 100 then proceeds to test for ~203~fi9 the program mode, as shown by decision block 293. A non-emergency stop command referred to as SLIDE STOP is a program mode command that is executed through decision block 294 and process block 295. The SLIDE STOP sequence represented by process block 295 is also important because through this sequence the axis processor 100 calls a LOAD NEXT MOVE
sequence (not represented) to transfer move data from the NE~T MOVE buffer in Fig. 25 to the PRESENT MOVE BUFFER, so that continuous movement can be maintained. To provide for continuous movement, the master I/O positioning module 19 inserts a GO command into the next move data. The axis processor 100 senses this GO command and other condltions and then calls the LO~D NEXT MOVE sequence. Another program mode command is a DWELL. A DWELL is not actually a move but a delay sequence which is programmed with moves and executed through decision block 296 and process block 297.
Programmed moves are divided into increments, each increment being associated with a distance to be moved and a velocity output signal for a 2.0 millisecond interval.
Calculation of these move increments and velocity signals is the function OI the ITERATION sequence represented by process block 298 and seen in more detail in Fig. 30. After perform-ing the calculations to determine the output signals for the next cycle of the servo I/O routines 286, the processor checks to see whether the common memory 112 is available as represented by decision block 299. If so, status, position and following error data are transferred from the a~is scratchpad memory 111 to the common memory 112 as repre-sented by process block 300. ~he contents of the processor registers, including pointers, are then restored as repre~
sented by process block 301 in preparation Ior return from ~Z~3~

the interrupt routine as represented by terminal block 302.
The blocks 299-301 form a STAT LOOP portion of the INTERRUPT
routine.
The SERVO I/O ROUTINE of block ~86 in Fig. 28 is outlined in Fig. 29 and an illustrative example of such a routine is listed in Appendix B. Beginning with start hlock 305 in Fig. 28, the axis processor 100 reads the accumulated posi-tion from the position register latches 126 (Fig. 12), as represented by process block 306. The counters 125 are reset when the first marker is found and upon detection of succeeding markers. When the accumulated count is read through the position register, it represents a partial revolution of the servo output shaft. The previous count or position is referred to in Fig. 29 as FDBKSAV, while the new count or position is referred to as FDBKIN. As represented by decision block 307, FDBKIN is compared to FDBKSAV. If it is greater, the new FDBKSAV equals FDBKIN minus the old FDBKSAV. This calculation is executed and the result saved as represented by process block 308. Where the new FDBKIN
is less than FDBKSAV the shaft has passed the marker. To add an increment of the previous revolution with an increment of the present revolution, the new FDBKSAV is computed by subtracting the old FDBKSAV from the COUNTS/R~VOLUTION and then adding FDBKIN, as shown by process block 309. The new accumulated position is then computed, as seen in process block 310, by adding the new feedback position increment to the old accumulated position. Following error is computed as shown in process block 311 by subtracting the new accumu-lated position ~rom the command position included in the mo~e data being executed.

381~;9 After computing the new position and following error, the axis processor 100 executes instructions represented by blocks 312-318 to determine the region of operation relative to the GAIN BREA~ POINT in Fig. 4. If the following error is in the INITIAL GAIN region (result of decision block ~12 is yes) it is multiplied by scale factors (process block 319) to convert it to a corresponding velocity signal for output to the servo motor 42 (process block 321). If the computed following error is greater than the following error at the GAIN BREAK POINT ~result of decision block 312 is "NO") the following error is adjusted with the GAIN REDUCTION
FACTOR (process block 315) according to the following equa-tion 8) to obtain the proper velocity in the REDUCED GAIN
region in Fig. 4.

8) ADJ. FOLL. ERROR = (NEW FOLL. ERROR - FOLL. ERR.GBp) (GAIN RED. FACTOR) + FOLL. ERR.GBP
Where the following error is ~eyond the FEEDRA'rE SUPPRESSION
POINT (SUPRPT) or the MAX FERR (blocks 316 and 317) it is reduced to the maximum (process block 318). Where the following error is beyond the excess error limit (process block 316) an E-STOP is executed on the next interrupt. The conversion of following error to servo velocity is made with scale factors PSCON, NSCON and SCON, where PSCON and NSCON
are positive and negative values of the respective D/A
VOLTAGE parameters, multiplied by 2047. SCON is the RAPID
RATE x103/INITIAL GAIN. The ser~7o output is calculated as follows:

) SERVO VELOCITY = (ADJ. FOLL. ERR.) (PSCON or NSCON) SCON
As represented by process block 320 a further adjustment is made to account for a remainder that results from the divi-sion irl Equation 9). Each time the computation is made, the remainder from the previous computation is added, and a carry bit is examined, so that the servo velocity will not be diminished by repeated loss of the remainder. As repre-sented by I/O block 321 the digitized velocity signal is then coupled to the D/A converter 131 and the conversion is initiated in response to control signals to the D/A latches 130 and to the D/A sample and hold circuit 132. The end of the SERVO I/O ROUTINE is represented by terminal block 322.
The SERVO I/O ROUTINE of Fig. 29 provides closed-loop positioning control of the servomechanism 45 in response to position commands calculated from the move data through execution of an ITERATION routine represented by block 298 in Fig. 28. This routine is outlined in Figs. 30a and 30b and an illustrative example is listed in detail as a PROGRAM
MOVE COMMAND ROUTINE in Appendix ~. The ITERATION sequence applies to program mode moves as opposed to manual mode moves such as SEARCH FOR HOME (Fig. 28, decision block 288), and GO HOME (Fig. 28, decision block 290) or JOG MOVES (Fig.
28, process block 292). The ITERATION loop is also inapplic-able to SLIDE S~OP commands (Fig. 28, block 294) and DWELL
(zero distance) commands (Fig. 28, block 2963. The program mode includes two sub-modes of operation referred to as the RUN and HALT modes. The invention is illustrated when the controller is operated in the RUN program mode, in which moves are executed continuously after an initial GO command, even though additional GO commands may be formulated by the master I/O positioning module 19. In the HALT mode, a GO
command from the user is required for each move, and each move ends at zero velocity. The ~ALT mode is essentially a single-step mode for stepping ~hrough a program or performing very simple positioning tasks while the RUN mode applies to ~~

1203~3169 more complex operations. Therefore, the ITERATION routine in Fig. 30 will be explained in terms of the RUN mode only.
In calculating the servo velocity, the axis processor 100 looks for a point of deceleration (PT DECEL) at which a user-programmed DECEL number is used to reduce servo velocity (ARATE). Referring to Fig. 31a, where the next move (N+l), is to be executed at a rate (NRATE) greater than the rate (ARATE) of the present move (N), acceleration can await the start of the next move time period. However, in the situa-tion shown in Fig. 31b, deceleration should be started prior to the next move to prevent possible overshoot of the end point for the next move. And in the case of Fig. 31c, where the next move is to be performed in the opposite direction, it is desirable to decelerate to zero by the end of the current move and to accelerate in the reverse direction. To assure that deceleration is applied at the correct point, the axis processor 100 chec~s, at each 2.0 millisecond interval, to see if the velocity (ARATE) should be decreased ~y a deceleration increment (DECEL). Using classical physi-cal formulas for motion, the distance from the present position (CPOS) to the end point for move (FPOS) can be related to steady-state velocity for move N (ARATE), the steady-state velocity ~or move N~l (NRATE) and the decelera-tion parameter (DECEL).
Equation 10) is the classical differential equation relating to a constant average acceleration (a~ to velocity (v) and time (t). Equation 11) is the classical differential equation relating to a constant velocity (v) to distance (~
and time (t).

10) a = dv dt ~~

31~
11) v = dx dt Equation 10) can be rewritten in terms of velocity (v), distance (x) and time (t) as follows:

12) a - ¦dv\~dx~ = fdv~ v ~dx /~dt~ ~dxJ

Equation 12) can be rearranged as seen in Equation 13).

13) dx = 1 v dv a Integrating both sides of equation 13) in terms of FPOS, CPOS, ARATE, NRATE and DECEL produces Equation 14~ and evaluating the integrals produces Equation 15).

FPOS NRATE
1~) dx =- l ~ v dv DECEL J ARATE
J CPOSDECEL
15) FPOS - CPOS = (ARATE) - (NRATE) DECEL 2 x DECEL
When the command position for deceleration (CPOSDEcEL) is reached the DECEL factor should be applied. For purposes of processor calculations, the following mathematical state-ment 16) is used to see if CPOSDEcEL will be reached or passed in the next 2.0 millisecond time interval. The distance to go ~VTG) is defined as the end of move or final position (FPOS) minus the present commanded position tCPOS).

16) NRATE2 _ ARATE2 ~ 3TG - ARATE l2.0 MSEC) x 2 x DECEL

These formulas are applied to live motion by the ITERATION
sequence which begins with start block 325 in Fig. 30a. As shown by process block 326, the axis processor 100 executes instructions to calculate the distance to go (DTG) from the destination position ~FPOS) and the present commanded position (CPOS). As shown by decision block 327, the processor then checks several conditions to determine whether the velocity ~2~3~6~

should be decelerated to zero. One o these conditions is the selection of the HALT or SINGLE STEP mode. Another condition for deceleration to zero occurs when the next move is in the opposite direction of the present move. This condition is illustrated in Fig. 31c. In this case, the ARATE is squared as represented in process block 328 and compared with the remaining portion of Equation 16) as represented by process block 331 and decision block 332. If the point of deceleration will be passed as a result of the comparison in decision block 332, the DECEL factor is applied to the ARATE for the next move increment, as shown by process block 333. Where the point of deceleration is not detected as a result of executing decision bloc~ 332, it may be that the axis processor 100 i5 in the deceleration mode, but that the DECEL factor need not be applied in this increment.
This is checked as shown by decision block 334. If the pxocessor 100 is not in the DECEL mode, then Case 1 shown in Fig. 31a or Case 3 shown in Fig. 31c may be present. In Fig. 31a the ACCEL factor is a positive number for motion in the positive direction. In Fi~. 31c the ACCEL factor for move N+l is in the negative direction. As will be appreci-ated by those skilled in the art, positive and negative numbers might be handled somewhat differently with different processors, however, process block 335 is intended to represent that the magnitude of the ACCEL factor is added to the old ARATE, with a negative sign being applied for acceleration in the negative direction.
The user has the option of programming a FEEDRATE
OVERRIDE velocity, however, this FEEDRATE OVÆRRIDE velocity is limited to a specified percentage of the actual rate (ARATE). Therefore, instructions are executed as represented \
~;Z03869 by decision bloc~ 336 to assure that ARATE is not accelerated beyond a maximum FEEDRATE OVERRIDE velocity that has been designated DRATE. If that would occur in the next increment, the new ARATE is limited to D~ATE as represented by process block 337.
Referring back to decision block 327, if there will not be a deceleration to zero, and if N~ATE for move N+l is less than ARATE for move N, then Case 2 represented by Fig. 31b is presented. In that case the point of deceleration is computed with the operation seen in process blocks 330 and 331. If the point of deceleration has been reached as shown by the "NO" result from decision block 332 then the DECEL
factor is subtracted from ARATE to begin deceleration to NRATE.
After adjusting velocity for the next increment by an ACCEL factor, a DECEL factor or by neither when the point of deceleration has not been reached, the conditions for decel-eration to zero are again checked as represented by decision block 338. Where deceleration to zero will be executed, the positioning system is effectively operated in the HALT mode which, as mentioned above, will not be described in detail.
Where a velocity will be maintained the same, or velocities will be blended, the RUN mode sequence seen in Fig. 30b will be executed.
As seen in Fig. 30b, a check is made as represented by decision block 339 for the direction of travel. In the RUN
mode, the rate for the next increment is integrated over th~
2.0 millisecond time interval to provide a command position increment. This integration is accomplished as represented by process blocks 340 and 341, by adding or subtracting the ARAT~, depending on the direction of travel. ~ver the 2.0 _99_ ~2~3~6~

millisecond time interval the ARATE equals the incremental distance to be moved. The increments are accumulated in a 32-bit INTEGRAND area in the axis scratchpad memory lll.
The INTEGRAND stores a whole number in its upper 16 bits and a fraction in its lower 16 bits. When ARATE is added to INTEGRAND, it provides the new commanded position increment in the upper 16 bits and remainder in the lower 16 bits. By retaining the remainder, a carry is accomplished in the INTEGRAND over two or more move increments, so that position increments are more accurately integrated. To obtain the resultant command position the upper 16 bits of the INT~GRAND
are added to the accumulated command increments which are kept in a storage area that is separate from INTEGRAND.
This operation is represented by process blocks 342 and 343 for the positive and negative directions of travel, respec-tively. A check is then made as represented by decision blocks 344 and 345 to determine whether the distance to go is less than two increments from the move end point (FPOS).
If there are less than two increments left, flags are set as represented by process block 346 to signal that the next output will be the last output and to set a flag for recogni-tion during the slide stop sequence represented by block 295 of Fig. 28. The slide stop flag will cause the processor 100 to examine the next move for a GO command and to load the next move when it is needed for continuous motion. If the distance to go is greater than two increments a further check is made as represented by decision blocks 347 and 348 to see if the distance to go is less than six increments from the end point of the move. In this case an "axis done"
flag is set for return to the master positioning I/O module.
This flag will signal tha master I/O positioning module 19 ~\
3~

to formulate a GO command for a next move if continuous motion is desired upon completion of the RUN mode sequence.
The axis processor then returns to the status loop (STAT
LOOP) seen in Fig. 28, and after completion of blocks 299-301 in Fig. 28, the axis processor 100 returns from its interrupt routine to the MAIN LOOP background sequence of Fig. 27a.
From the above description it should now be apparent how the axis processor 100 controls the servomechanism 45 by reading feedback and generating servo velocity signals each 2.0 milliseconds. The axis processor 100 is responsive to programmed and actual velocities to calculate a point of deceleration and to apply to user-pro~rammed deceleration factor so that moves can be blended without undesirable continuities in servo velocity.
The six sections of this detailed description have shown how various parameters and operating commands are processed as inputs from the control panel 33 and as user data and program instructions from the PC processor unit 11 to control the ser~omechanisms 45 and how status and position data is obtained from the servomechanisms 45 and returned to the PC processor unit 11 or control panel 33. This descrip-tion has been given in great detail. There are of course, many other technical details that have not been included, and these are considered to be within the ordinary skill of hardware and software engineers in this art. The description herein is sufficiently detailed that a preferred embodiment can be made and used by those with skill and information typically possessed by those in the art. Many other embodi-ments might also be made which uses the inventive concepts, and thereore the scope of the inventive contribution has been expressed in the following claims.

` - ~

~2~3~

APPENDIX A - COMPONENTS

Description Reference No. Circuit Element of Components communications processor 8039 microprocessor manu-factured by Intel Corp.
51 arithmetic processor 8088 microprocessor manu-factured by Intel Corp.
52 communications Two SY2114 lk x 4-bit scratchpad memory random access memories manufactured by Signetics Corp.
53 master common memory Two SY2114 lk x 4-bit random access memories manufactured by Signetics Corp.
54 control line logic SN74451 dual 2-input power circuit AND gates, SN74LS27 quad three-input NOR gates, SN74LS04 hex invcrters, two SN74LS08 quad two-input AND gates, two SN74LS74 dual D-type flip-flops, SN74LS02 quad two-input NOR
gates and SN74LSOO quad two-input NAND gates, all manufactured by Texas Instruments, Inc.
communications firmware One 2732 4k x 8-bit eras-memory able, programmable read only memory (EPROM) manu-factured by Intel Corp.
57 input latch SN74LS374 octal D-type flip-flops with input enable, manufactured by Texas Instruments, Inc.
58 bus output latch SN47LS273 octal D-type flip-flop with reset, manufactured by Texas Instruments, Inc.
59 module output latch ~125S533 octal latch with outputs enable manufactuxed by Advanced Micro Devices 61, 71, 87, two-way buffers Six SN74LS245 octal bus 88, 110, 115 transceivers manufactured by Texas Instruments, IIIC~

64, 66 low-true OR gates SN74LS32 quad two-input OR
gates manufactured by Texas Instruments, Inc.

3~

Description Reference No. Circuit Element of Components 67, 77, 79, address latches Five SN74LS373 octal 106 D-type flip-flops manufac-tured by Texas Instruments, Inc.
69 decoding and latching Unused portions of circuit components cited above for control line logic circuit (54), and 74LS244 octal non-inverting 3-state drivers all manufactured by Texas Instruments, Inc.
81 chip select logic SN74LS139 3-to-8 line circuit decoder, SN74LS367 hex bus drivers with non-inverted outputs, SN74LS32 quad two-input OR gates, SN74LS04 hex inverters, SN74LS00 quad 2-input NAND
gates and SN74LS02 quad 2-input NOR gates, all manufactured by Texas Instruments, Inc.
83,117 multiplexers Six SN74I,S157 quad 2-to-1 line multiplexers manufactured by Texas Instruments, Inc.
buffers SN74LS244 octal line driver/
buffers with noninverted outputs 86 Satellite I/O port SN74LS374 octal D-type flip-flops, SN74LS74 dual D-type flip-flop, SN74LS32 quad two-input OR gates, SN74LS367 hex bus drivers, and SN74LS221 multivibrator, all manufactured by Texas Instruments, Inc., and one 8257 triple program timer/
counter manufactured by Intel Corp.
91, 121 two-way buffers Two DP8304 3-state octal bus transceivers manufac-tured by National Semicon-ductor 89 arithmetic firmware Two 2764 8k x 8-bit EPROMs memory manufactured by Intel Corp.
arithmetic scratchpad One HM6116 2k x 8-bit memory random accass memory manu-factured by Mostek 3g~6~

Description Reference No. Circuit Element of Components 100 axis processor 8088 microprocessor manu-factured by Intel Corp.
103 control line logic SN74LSOO quad two-input circuit NAND gatesl SN74LS244 octal buffers/line drivers, SN74LSO4 hex inverters, SN74LS240 octal buffers/
line drivers with inverted outputs, SN74LSl32 quad Schmitt trigger NAND gates and SN74LS08 quad 2-input AND gates 105 axis firmware memory One 2764 and one 2732A 8k x 8-bit EPROM manufactured by Intel Corp.
108 decoding circuit Two SN74LS138 3-to-8 line decoders manufactured by Texas Instruments, Inc.
111 axis scratchpad memory HM6116 2k x 8-bit randomaccess memory manufactured by Hitachi 112 master-satellite common Two AM9111D 256-line x memory 4-bit random access memories manufactured by Advanced Micro Devices 114 buffers SN74LS244 octal buffers/line drivers manufactured by Texas Instruments, IIIC.
118 memory address generator CD4520BE C~IOS dual up co~mters manufactured by RCA and SN74L74 dual D-type flip-flops and SN74LS266 quad two-input XOR gates manufactured by Texas Instruments ! Inc.
119 latch SN74LS174 hex D-type flip-flops with reset manufactured by Texas Instruments, lnc.
122 encoder input circuits Includes SN74LS240 3-state octal buffers/line drivers manufactured by Texas Instruments, Inc.
123, 126 latches Three S~74LS374 octal D-type flip-flops manufac-tured by Texas Instruments, Inc.

- 10~-03~3~9 Description Reference No. Circuit Element of Components 124 decoding PROM SNS287 256-line x 4-bit programmable read-only memory manufactured by Texas Instruments, Inc.
125 counters Four SN74LS669 4-bit up/down counters manufactured by Texas Instruments, Inc.
129 buffers SN74LS244 octal non-invert-ing buffers/line drivers manufactured by Texas Instruments, Inc.
130 latGhes Three SN74LS175 quad D-type flip-flops manufactured by Texas Instruments, Inc.
131 D-to-A converter AD DAC80 12-bit D/A converter manufactured by ~nalog Devices 132, 136 Sample and hold Two LF198 sample and hold circuits circuits manufactured by National Semiconductor 138 axis control latch SN74LS273 octal D-type flip-flops manufactured by Texas Instruments, Inc.
139, 143 inverters SN74LS04 hex inverter manufactured by Texas Instruments, Inc.
140, 142, 145 NAND gates SN74LSOO quad 2-input NAND
gates manufactured by Texas Instruments, Inc.
141 NOR gate SN74LS02 quad 2-input NOR
gates manufactured by l'exas Instruments, Inc.
96 marker reset circuit SN74L500 quad 2-input NAND
gates and SN74LS74 D-type flip-flop manufactured by Texas Instruments, Inc.
ote: In some cases not all of the gates or terminals of the components in the right-hand column are used in forming the circuit elements in the middle column.

S~RVr~ TrllT Rl)llr~l~E
t,SlNTR.l.lS
~:RR 1,11)~: Annn ~ 2 ~3 r~4 llo Il 1 S *~*~*~t~t*~ *~*t~to~t~*~
117 S * SFuvO WSPUT ROUTINE ~ -1 1,1 11~ s llS JTHIS ROUTINE WILL SUBTRACT THE AcTuAL POSITION (SUMMAIlON
116 1nF FEEDgACK INcREMENTs) FROM IHE COMMAND PO~ITION
I 17 s (SUMMATION OF COMMAND INCREMENTS) ~HICH IS THE FnLtlowlNG
11a ~FRROR FnR IHIS INTEQVAL. THE CoRRospoNDING ANA~OG VOt,TAGE
SFOR THJs DIFFERENCE 8ECOMES THE ~/A OUTPUI. IN PqSITlON, 170 ~GAIN sREAK POINT, FEEDRATE SUPPREssION, AND EXCESS ERROR
171 1ARE CHECKED AND THE APPROPRIATE ACIION IS TbKEN, IF LOsS
172 10F FEEDaAcK IS ENAotlED THE T~ D~A OUTPUIS ARE AVERAGED
1'3 70VER THE SET NUMaER OF ITERATIO~S SELECTED UY THE USER, 1 7d 7 ~ ERROR AND tRuOR ~AND ARE ~DDED TO THE AyERAGE AND LOSS
175 50F FE~DBAcK IS TESTED, IF TACH CALIBRATION IS ~NAaLE, 126 7EACH DxA nUTPUT IS SCALED BY THE TACH cnNvERsIoN rAcToR
171 7AND THIS YAtUE IS OUIPUT 10 THE IACH S~H, TUIS VALUE IS
1 7R ~COMPARED TO THE IACHOMEIER INPUT TO THE MoDutlE 50 THAT
129 sCAL,IBRATIoN CAN OCCUR, ALsO DURING SACH CAt,It3RATION THE
1~0 7TACH CALIBRATION LED IS ENABLED. (DURING LO.~S OF FFEDBACK
131 7THE TACH CALIBRAT0N LED IS OISABLED.
13Z s 133 00~3 t~l 00 00 E sEt~vnuT: MoV Ax~EDaKIN 1READ ENCODER INPUT
13q nO~6 qB D8 MoV ~X,AX ~SAvE FD~KIN
135 nQ~8 3D 0 O CMP AX,10 IIS FLaKIN NE5. ?
13fi 00~ tF 09 ~ JG Pos-DIR 7tll 137 OO~D 1C 2C JL NEG_DIR ~Y~ -13~ oo~r ~fi o6 01 00 E TEST8 FD8KSAY~1,980H 7IS FDBKSA~ NEG, ?
o 139 0074 75 2~ JNZ NEG-nIR ~y~
l~n dl 007~5 7P. o6 no 0~ E POS_DIR! .SIJB AX,FDBKS~V ~IEMP 2 FDRKIN - FD~KsA
1~2 007A 11) 36 7GE CALC_POs 7IF RESULT IS POS., THEN INC_FDôK IS OK
1~3 tELSE CHECK FOR WITHIN ERROR BAND
1~4 no7c 3~ 0~ 00 00 E CMP AX,N_ERR 7IS TEMP c NEG, FDBK ERROR BAND ?
145 OOPo 7F 30 7G CA~C_PoS 7Y~
146 rN~
1~7 00~? ~6 06 2 On E TESTB STATllSt2,t2UH 7HAS lST MARKER BEEN FOUND ?
14~ 00~7 74 07 Jz Nn_HARK ~Ns 149 ~y~
lS~ OOP9 ~3 os ~o Oo F ADD AX,CNTPREV ~INC_FDBK = TEMP ~ CnuNTsxREv.
ISt nO~D Eq 22 Oo 7MP CAT,C_POS

153 ooon Al on no F NO_HARK: MOV Ax~I~c-FDôK lSET INC_FD8K = PREVIOUS VALUE
154 ~wHEN FIRSI ~ARKER lS FOUND
1~ noo3 ~n o~ 02 no E ORB STAIIIS~2,520H ~SET MARKER FoUND sIATlJs ELAG
lS~ nnq8 Eq 17 00 JMP CALC_POS
~7 s 158 noq8 2~ o6 ~0 00 E NEG_DI~: SUB AX,EDBKSAV ~TEMP ~ FD~KrN - FDsKsAv 1~9 oosF 7E 11 7LE cA7~c-pns 7IF RESULT IS NEG,, THEN INc-FDB~ IS OK
~n ~E~SE CHECK FOR WITHTN ~RROR BAND
1 31~ ns no 00 E C~P AX,P_~RR ~IS TEMP c POS. FDBK ERROR BAND ?
~S~ oo~ 7C (~ JL CALC_PnS ~Y~
t R 3 If~d nO~ 0~$ n2 00 E TF.S~B s~ATllSi2,120H ~HAS 15T MARKF:R BE;EN F0UND

JiEaY/I lRITPilr q(lllTTt ESINTR.t,lS
~RR L~ Pt 1~ P7 ~4 nnAc 74 E2 JZ Nu_M~Rx ~t Ih~, t~l 1~7 ~o~E 2~ oh oo oo ~ ~IJ~ AX,CNT1REV 1INC_E~K ~ TEMP ~ CnUNTS~R~Y
lfi~ J
hs 00~2 ~ oE ~0 0~ E cAl~c-pnst 110V CX~lNC_~nRK JRCX _ PREVIOUS VA~UF OF INCR. FDBK
~7q on~6 ~9 OF ~0 00 E ~nv 71CH_SAV,CX JSTORE PREvIOUS INCR. FDqK FOR L,O.F. -i7l n~)qA A3 oO oo E ~oV INC_FDBK,AX ~SAVE INCREMEN~AL RE~DBACK
17z OOPI) R~ IE no 00 E MOV FDBKSAv,BX JSAYE NEW EVBKIN FOR NEXT OUIPUS
cwn 17g QOC2 nl ok no on F, ADD POSIT,AX INEW PnSIllON = POSll' ~ FD~K
175 noc~ 11 16 02 00 E ADC POslTt2,DX
17~ nn~ G6 06 no on E MnVPi SI~N,~O
177 ~orF Al 02 oO E MOV AX,C~R12 17~ nOn2 Ri~ Dq MoV DX,hX
non4 Al on no E M~V AX,CAR
IPn nqn7 2P 0~ 00 on E SUB AX,POSIT ~NEW FERR - COMM. PO~ITION -IRI oonq le 16 02 00 E SPB DX,POSII~2 ~ ACTU~ PnSITI~r~
IR2 oqnF A3 oO qo E UoV ~ERR,AX sSTORE NEW FOLL. ERROR
lR3 nOF2 R9 16 02 00 E MnV ~ERRi2,DX
1~4 n~F6 79 OF JNS S_POS ~IF FERR IS NEG. STORE sIGN AND
OnFR C6 o~ no 00 E ~nVR Sl~.N,11 ~INVERT MAGNITUDE
IR6 OOFI) F7 DO NOT AX
lR7 OOEF F7 D2 N~T DX
IR~ noFl S 01 00 ADD AX,1]
IR9 OOF4 R3 ~2 oo ADC DX,~O

lql OOF7 R~ 26 00 00 E ~_PnSs . AN~ STAIIJS,JOF~FEH ICLEAR FLAGS
19Z noF~ R3 F~ 00 CMP DX,SO JIS MSW OF FERR = O ?
~ 193 nlno ~S 14 J~E CK_MAX JNI THEN CHECK GAIN PRKPT S-~
o Iq4 'Y' 195 oln2 3~ q6 oo 00 ~ CMP AX,GAINP IIS FERR c GAIN ~RK, PT. ?
Iq6 oln6 77 OE JA CK_~AX JN2 ~q7 ~Y:
t9R oln~ lB o~ no on E C~P A%,INRAN~ JI~ ~ERR ~ IN13AND 7 lq~ olnC 77 OS JA SHoRT_I IN
2nq 010~ PO oE no 00 E ORB sTAlus~ JYs SEf IN POSITION FLAG2nl nlJ3 F9 hl oo ~H~RT_I: JMP NtlPEO
znz J
203 0116 3~ 1~ 02 00 E CK_HAX: CMP D%,MAXFERR~2 ~IS FERR ~ M~XFERR 7 2n4 nl1 A 72 4q J~ GAIN_AD~ tNs 2~5 nltc 77 0~ JA CK_SUPPR JY
2nh OllE 3P 06 oq oq E CMP A%,M~XFERR
~n7 0172 72 3~ JB GAII~_AnJ
2(7R
~nq nl74 19 !6 02 on E CK_SIJPPR: C11P DX,SlJPPR_Pf~2 ~I5 FERR ~ EEED 5UPP~ESSION 7 21n 012R 72 00 J~ CK_EXERR ~N:
211 nl7~ 72 o~ JA SET_SUPP JY2 212 017C 7~P~ o6 00 00 E C~IP DX~
~13 ~I~o 72 5 JP CK_EXE~R
214 137 RO oF 01 00 E SFT_SUPP: ORB STDTUs+1~4 JSEI FEE~ SUPPRESsIoN FLAG

21~ nl~7 ln 1~ 2 00 E CK-ExERR: C~P DX,EXCESS~2 ~IS FERR ~ EXC~SS ERPOR ?
217 OIlB 72 17 JB SET_MAX Sh5 21B (')13~ 77 Ofi JA SE:T_F:RR ~y 21'~ 013F ~ n~ oo on E CMP AX,EXCES5 720 01~3 72 (!F J~ SET_MAX

slrnv~ TP~lT Pl-llr E5INTR l,~
ER~ E ~nlR nl ~2 ~3 1~4 2~1 ~ld5 ~o oE ql on E .~E~_ERRt nR~StAINS~ lH ~FT F;MEUGENCY 5TOP aND EXCESS
2~2 ~E~ROR 5TAIUS FLAGS
27~ Ol~A Ao or no on ~ Op~n~F., 27~ nl~C ~l~ CO Sll~ PX,AX
275 Olcl ~9 5~ ot~ J~P~llTPl)I
27~ I n2 no F SET_~AX: H~V AX,UAXFERU~2 15ET FERR = MAXFERR
2~7 ~1~7 ~ Dn ~v DX,AX
27B ~ l OQ 00 -F .Mnv AX,MAXFERR
229 l~C ~s lE ~0 on F 5AIN-AnJ: MOV ~X,GAINR
21n nl~o 2~ n6 no 00 E SIJR AX,GAINP
2l1 01~4 ~3 l~A no S~B DX,to 232 n1~7 RB CA ~uV CX,DX
213 01~ F7 E3 ~ilL BX
~4 nt~ C1 ~nV Ax~cx 215 nl~n q~ CA MnY CX,DX
236 01~ ~7 E3 MIIL BX
2~7 n171 3 C' ADD AX,CX ~ICMP r tf FERR - GAINP ~ X 5AINR J
23~q 0173 n3 o6 no Oo C ADD AX,GAINP t ~ GAINP

240 Q177 F6 o6 on 00 E NORED2 TFSTB SI~.N,ll IIS OUTPUT NEG, 241 nl7c 75 IA J~z lJEG_OUT lys 242 ~NJ
2~3 nl7E F7 26 no 00 E MUL PSCONI
244 n1R2 F7 36 no 00 F DIV SCQN2 ~UUIPUJ - t TEMp ~ SCON2 ~ ~ PSCON1 24S Ols6 nl 16 no 00 E ADD ACCUM,nX ~ADD RtMAINDER JO ACCUM
246 OI~A 71 01 JNO CK_PSAT JOVERFLOW FROM ACCUM ?
247 OI~C 4V tNC A% ~y:
~ 24~ ~Ns 249 nl~D 3D FF 07 CK_P~SAT: CMp ~X,~DASAT ~IS DXA OUTPUT > 7FFU ?
250 nlao ~6 lF JBE QUTPllI lN~
251 ~Iq2 ~a FF ~7 MnV AX,2DASAT
2S2 nlqs ~9 19 no JMP OUIPllT
2S~ ' 2~4 ~1~ F1 25 00 00 E NEG-nuT~ Mi)L NscON
255 nloc ~7 36 00 00 E DIV SCDN2 ~OUTPUT ( TEMP / NscoN ) ~ HSCON1 256 QIAO ~9 16 no 00 E 5UB ACCUM,DX ~SUBTR. UEM. FRO~ ACCUM
2S7 nl~4 71 nl JNO CK_NSAT ~OVEU~LOW FROM ACCUM ? i~
2S~ nlA6 40 INC AX ~YI
2Sg ~:
2~0 01A7 3D F' o7 CK_NSAT~ CMP AX,2DASAT ~IS D/A OUTPtlT ~ 7FF~ ?
261 oJ~a 75 n3 JBE SFT_NEG ~N~
262 nlAc ~ EF 07 MOV AX,lDASAT ~Y~
2~3 QlaF ~1 D~ SET_NEG~ NEG AX

265 ~l~l A3 no oo E OUTpuT: MoV DA_OUT,AX :OUIPUT VALUE TO ~AC
2~ IALLOW DAC IO SETTLF
267 t~lR4 ~0 01 no E uoVB AL,CONTRnL~l 268 OIP7 24 En AND~ AL,#OFDH ISEI DA_HOLD TO SAMPLE STATE AND
z~q nlp~ A2 ol oo E HnvB ST~T 013T41,AL IOUTPUT VALUE TO OUTPUT PoRT
27n ~IPC ~C ~ ~R~ ~L,~6 ~FORCE DA_HOLD AND TACH_HOLD TO
271 nlPE ~2 01 ~o ~ M~VR CONIRO1,41,AL IHOLD SIAIE IN INTERNAL MEMOR~
27Z nlcl Eq 2~ nl CALL wAIILnop lALL,Ow S/H IO SEIT~E
273 01C4 A2 D1 oo ~ MnVB SIAI_OIIT41,AL JTHEN SET DA_HOLO TO HLOD STATE

1771-FS P~ttll';PAM ~1111~' RllUTItJF
EsMo~lE3.l~I' APPENDIX C
C,RR l,~tlf: ItDDU Pl tR R3 1~4 ~7 S
* 4 * ~ $ '1~ * ~ * ~
7 t S ~ ~:
îO I ~ PRnGRAM MODE UaUSINE *
~1 S ~ i' 37 S ***~*~*i~i'**~**~ *~*~*
~1 ~
34 :T~IS Is TUE PRaGRAM MnDE ROUSI~E I~ WHICH PRoGRAM
3~ t~OVFS ARE ExECUTEn, TRAVL LI~IT OETECTION wILL 8E
~6 :ENFnRCED 11NLESS TRAYL LIMIT OVERRIPE IS AcTlvE~
~7 ~A PROGhAM MnvE CONSIST nF A POSITION, RATE, ACC~L
3~ ~AND DECEI, VltL11E, THE MOYE WILL PROCEED BY ~A~PING
~TO T~E PEsIRED RATE ~IF pnssIBLÆ~ W~ILE DTECTING
tPT. Oc DECEL FnR A 5~00TH DECEL To THE ~ESIRED END
41 JPOSITIoN, q2 :MOTION CUNT~OL COMHAND~S HANDLED BY ~HIS ROUTINE
43 1 l, PRnGQAM MDVE5 ~BOTH HALT AND RUN HODE~
44 J 2. DwELL M~V5 s 3. P~OGRAM PRESET
~ : 4. LOAD NEXT MOVE
d7 Q~ ~onn ~6 ofi oo 00 E ~CtDE3: S,CSTB ST~TMS,~IOH ~IS SLIDE sTnp ACTIV~ 7 49 oons 74 o3 ,12 CK_D~ELL JNt So oo~7 ~9 A7 no JMP SLIDESTP JYI
~I J
52 n0nA F~ o6 0l 00 F. CK_D4E1,Lt TEST~ pMC~ 2 tIS DWELL BIT SET ?
I 53 nonF 75 74 JNZ DWELL JYs 55 ~011 ~6 0~ no 0~ E SCsTB TLTMTT,tl IIS LI~IT OVERRIDE ACTIVE
S6 0016 74 03 JZ CK_LIMIT JNt ~7 nOtH ~9 D4 n2 JMP INTERP ~Y~
5~ J
so 001~ ~6 o6 no 00 E CK_LIMIT~ TESTa TDECEL,~l tIS DECEL IN PROGRES.c ?
~Q 007n 7d o~ JZ CK_LIMOY ~J1 ~1 007? ~9 CA o2 JMP TNTERP JYS
~7 ~3 nO75 Ro 2~ 01 on ~ CK~ OY: AND~ STAT115fl "OE7H ~REST 2RAvEL LI~I~ S~ATUS FLAGS
~4 002A F6 0~ 03 0~ E SESTB DI~f3,#30H JIs DTG NEG. ?
~5 ~07F 74 2~ JZ CK_PSRAV 1Nt 66 O0~1 ~1 02 no E MnV AX,NTRAVk~2 tYs f~ 00~:~ R~ 1~O ~OY nX,AX
6R 0036 ~1 on no E MOY ax~NlRAvL
n~ 3 c~ oo c~P DX, ~o 70 onlc 7c oQ JNE CK_NLIM
7i no~ ln on no CMP AX,~n JIs NEG. TRAVEL LIMIT - O ?
7? nUal 75 0~ ,lNE CJ(_NLIM
73 (io43 c9 A9 02 ~JOP--l: ,3up Il`lT-Rp SY:

75 nn~s n3 0~ no 00 E CK_IIllM: ~Dn AX,CAR
7k (lo~ R j~ C7 IJr~V ~X,~)X
77 ~O~C 13 06 ~2 00 E ADC AX,CAR~2 ~IS COMM. POSITION > - TRAVEL LIMIT ?
7R n~ 79 F1 J~!S MOP_l ~N:
7n nO~2 R~ OE no o~ E ~P STATI!S,~RIOH sYs sET - TRAVEL LIMIS ARD SLIDESTOP
Pn nn~ F~ 5~ no J~P Sl,JDFSTP ~STATUS ELAGS
Ql 1771-ES~ PPt~q~U ~nF RnuTIr~F
E5~tl~Ll.l-IS
ER~ t.l L PDt~l~ R ~ ,L1 3 ,L~ 4 R2 0~ 1 Q7 no ~ rK_YTRAV: L~V AX,PTRAVl,~2 R3 nO~L Ph Dn ~y ~X,AX
~ ~n~n ~ no ~ l~oy ~,PTR~VI, R5 QOf.3 R 3 ~ 11 no ~p DX, ~n R6 ~O~B 75 0~ J\IE CK_PL,IM
~7 OOkR. ~D on ~o c~p AX~O srs PoS. TRAVEL LIMIT ~ O ?
RR tlO~li 75 03 JNE CK-pBlM IN:
R9 oo~n Fq 7~ n2 J~P INTERP IYt qo 91 OQ7n 7~ 0~ no o~ E C~_PL-I~: SUB AX,C~R
92 no7q q~ C2 U~Y ~X,DX
q3 nn~ ~p o6 02 00 ~ SAB AX,CAPt2 sIS COMM. P05ITIO~ > t TRAVEL LIMIS ?
94 007~ 79 C7 JNS HOP_~ INI
9 nn7C Rl oE 00 on E ~ ST~TllS,~10~0U Sy SFT ~ TRAV~L LIMIT AND SLIDESTOP
~6 Q0~7 Ea 2C ~0 ~lMP SLIDEsTp ~STATU5 FLAG5 _ , o e~

~l7l_r,S ppn~;DAl~ ~on~ unuTIIlE
Es ~o n~ .s ERR DrNE ADnR ~ h2 R3 aR

99 ~ ~*~*****~$~***~*$****~**
tnO t ~ DWEL~ MOYE ROUTINE
****4~*$*~**~t***~*~*$~*~

~n3 o()Rs ~li C~ r~ 511i~ AX,AX
1~ OOP7 Al 00 no E HnV A~ATE,AX JFORCE ARATE = O
1~5 OO~A A3 02 00 F. ~ov AQAlEi2,~X
1~fi OO~D A3 on ~o F ~OV ~NTGPND,AX IFORCE IHfGRAND a O
17 0090 A3 02 00 E ~OV INTGRNO+2,AX
n;~ 0003 U1 2i- 00 00 ~ SUP SIi~Ep~cl ~DECREMENT DWE~ TIMER i3Y 1109 00~ R3 IE 02 00 E 5~ TIMER~2~0 110 in91) 79 OF JNS NOT_~ONE llir COUNT ~ 0~ THEN DWELL IS CO~PLETE
111 OOqF ~R CO SNR AX,AX
It2 OOA1 A? on 00 E MoVH TMnDF.,AL tSET TO NO MODE
113 OOA4 Ro oE 00 00 E nR~ 5JASUs~t2 ~SET l'USER DONE1' S~ATUS ELAG
114 ~OA9 RO 0~ 02 on E OQ~3 STATIJs~2,it40H JSET ~AXIS DONE" STATUS ir~AG
115 OOAE E9 13C 05 ~OS_DONE~ JMP EXIT_~D3 1~6 S -117 J ~****~*~*****4***~*~****
118 1 ~ SLIDE SSOP ROUTINE *
~ *~*$4*~ *~*~***~*4**~
1~0 t 171 00~1 F7 Ofi 00 00 E SiIDFSTPJ TEST PMCW~204H JIS PUES~NT Mov;E A DWE1~L OU PRESES ?
1?2 no~7 74 03 JZ aATi._DEC JNZ
123 jOAq ~9 Cl 00 ZERO_UAT: J~P SEI_ZERO tY
i 1?4 J
125 ~O~C A1 o2 00 E PATE_DEC2 MOV AX,ARATE~2 2~ OO~F QR DO ~OV nX,AX ~b1 1?7 on~l Al oO oo E ~0~ AX,ARATE ~ ~
128 OOC4 F6 0~ n3 00 E TEST~ DTG~3,#i30H IIS DTG NEG. ~ 3 129 OOC9 75 5P JNZ NEG_PATE SY2 r 130 no~ ~P o6 00 00 F SU8 PX,DF.CEL IN~ ARATE ~ ARATE - DEcEL .
t31 OorF 1~ 16 02 00 F Si3P OX,DECEL12 1'32 ~on3 7R ~-4 JS ZERO_RAT tIF 2ESU~T NEG.~ SET AUATE ~ O
~ l~ oons 75 05 JNZ RiT_RATE IIF AUATE ~MS~) > O ,THEN CONTINUE
t34 oon7 3n 00 00 C~P AX,itn tIS ARATE = O ?
~S 000A 74 Dn Ji, ZER0_UAT ~YZ THF.N SLIDE ST0P IS COMP~TE
~l~ JNJ ~~
1~7 no~C A3 00 oo E ~ET_PATE: MOV ~U~IE,AX JSTORE NEW ARATE
139 0qnF 01 0~ 00 0~ E ACD INTGRND,AX JNE~ lNTGUND ~ INTGUND ~ ARATE
.1~9 ~OF3 R~ C2 ~nv AX,DX
1~0 ~DFS ~3 n2 no E ~oV AUATE~2,AX
1~1 nor~ 15 on no A~C AX,10 JUAX = COMM. INCU.
142 ~OF~ qg CwD 5unx = SIGN ~XTENSION
143 n0FC 01 0~ no on E ADD CAR,AX JCOM~ POSITION = CAR ~ cnMM. ~NCR.
14~ O~F~ R~ C7 ~nV AX,DX
145 ~nS2 tl U~ ~2 00 E ADC CAQ~2,AX

1~7 ~nF6 F~ o~ no on E ~STO TSS~,~1 JIs SAT, DOING A HALT ~pVE
34~fl 00F~ ~5 ~5 ,~NZ Nn_RUNMD tYJ
S4q tNs n ~0FI) Fh 0~ ~10 00 E TEST~ T~nuT~l 5IS LAST DUTPUT TEST FLAG SÆT
~S1 nsn~ 74 sF ~z UO_RU~IMD JN:
1~? sY:

1771-~S: pRnG~A~ ~OnE ~nuTI~E
~sMonE~
ERP l.~ E ADnR Rl ~2 ~3 M~
~5~ nln4 F~ o6 no on E rEsT~ ~IMCW,~2 JDOES NEXT MOVÆ HAVE A GO COMMAND 7 IS4 oln~i 74 57 .lZ NO_RIINMD IN:
t~'; IY:
ISR nln8 A1 oO ~n L~ MnV ~X,CAR tRAX = coMMANn ACCUMIlLATED POSITION
~s7 o1n~ o~ oo on F: SUP AX,NPosIT ISll~TRAcT DESIRED EN~ PosITIoN FROU
SR nll2 Al o7 ~o E MOV AX,CAR+2 JcnMHAND POS~TION TO DE~ERMINE IF THE
Is~ 5 18 o~ n~ oo E s8~ AX,NPOSIT+2 JNEXT Mo~E IS IN THE SAME DIRECTION.
I~o nllg 7~ o3 ,1~ SET_SLD JIF RESUIT IS PoS., DO A CONTROLLED
161 JSLIDESTop lfi2 l)llFI E9 AF. OQ IMP LD_NE:XTM
~ 'i .1 S
1~4 nl~E C~ Ufi ~0 on ~ SET_.SLD~ UOYB TS~.IDE,~I ISET TS~IDE = 1 155 nl~3 F9 17 nS JMP EXIT_Mn3 l~h ~67 nl26 n3 06 no 00 E ~EG_RATEs AnD AX,DECEL
t~P Ot7~ 13 16 n2 no E AnC DX,DEC~Di2 IRY nl~E 79 4n JNS SET_ZERo JI~ RESULT Pns.~ SET ARATE ~ O
170 nl~o ~3 on oo E ~nv ARATE,~X )STORE N~W ARATE
171 ~133 Q9 16 ~2 on ~ov ARAT~2,DX
172 nl~7 79 06 no 00 E SU~ JNTGRND,AX ~NEW IN7'GRND ~ INTGR~D - ARATE
171 01~8 ~ 00 00 UOV AX,IlO
174 nl3E IP c2 SB8 AX,nX JRAX = cnMM. INCR.
175 014~ E7 D8 ~3EG AX JNEGATE CO~M. INCR.
17~ nl~2 ~9 CwD ~RnX = SIG~ EXTENSION
177 n1~3 01 nfi Oo nn E ~D CAP,AX ~COMM POSITION ~ CAR t CoMM. INCR.
17R 01~7 RH C~ MOV AX,oX
17~ 01~9 It o~ n2 on E ADC CAR+2,AX
lP~
Iql 0141) ~6 0~ 00 00 E ~ESS8 TSSM,#l 1IS SA~ DOlNG A ~A~T MOYE ?
I t92 0182 75 0~ JNZ NO_RIINMD IYS
1~3 1N~ ~_ IR4 01~4 F6 06 OO OO E TEST8 TLOUT,~l sIs LAST OIITPUT TESS FLAG SET ?
IqS ~1~9 74 o7 JZ No_R11MMD 3Ns I R ~ J Y ~OE!
lq7 01~ E~ o5 00 00 E TEST8 NMCW,~2 1DOES NEXS MOVE ~AVE A GO COMMAND ?
IA~ ol~n 75 ~ JNZ CK4_DIR Jy~
IR9 01~2 ~ DP 04 No_RuN~n~ JUp EXIT_Mn3 JN:

191 nl~5 ~1 on no E CK4_nIR: MOV AX,NPOSIS IRAX = cnMMAND AccuMllLATED POSITION
IQZ nl~d ~ o6 no oo ~ SUB ~X,CA~ SSUBT~PCT CoMMAND Po~ITIoN FRoM DESIR~D
lq3 nl~C ~3 07. no E ~oV AX,NP05IT+2 sEN~ POSITIO~ TO DETFR~lNE IF THE
lq~ E 1~ o6 2 on E SHB PX,CARf2 IUEXT ~oVE I5 IN THE SAME DIRECTION, !~S 0173 7H 57 Jfi l,D_NEXT~ JIF RESU~T NEG., THE~ LOAD NEXT MnVE
196 sEI,sE DO A CONTROLLEn SLIDESTOP THEN
~q7 tPETUR;J Tq THE DFSIPED ENDPOINT
1~ 0175 f~ o6 ~o or E ~nvH TSI,IDE,~l sSET TSLIDE = 1 1O9 nt7A Eq C~ 0~3 JMP EXIT_~D3 2~0 S
2~1 01711 7~ C~ SET_ZERO: SUB PX,AX
202 nl7F ~3 00 00 E ~nv ~RATE,AX ISET ARATF = o 2n3 IP2 A3 o~ 00 ~ E ~oV ARATEt,7,AX
2~4 ~l~S ~ on no F. ~oV INTGRND,AX ISET I~TEPGU~ND = O
~n~ n~Pq ~3 o~ 00 E ~OV INTGRNDt2,AX
2~ Oi~ 'F~ o6 ~o 00 E TFsTH Ssl~IDE "t IIS TSLIDE ~ I 7 2~7 01~1) 74 16 JZ ~ pNXT SIJ
20~ IYs IF SSLIDE WPS SET THEN THE LAST

:
.; 1771-Es: Ph~uAM ~un~ R~IUTIIIE
~ EsMoni:3 . j,r,c ERP ~ nP ~ A3 1~4 i 2~9 ~pRuGRAM POsTTIoN WAS ~ErFR ACHIEVED.
~SO tTHEREFORE THE SERvO EXECUTED A
~) 5CONlf~OLLED SLIOESTOP PAST THE DESIRED
212 1ENDPOINT, STOPPED, AND NOW WILL RETURN
213 JTq IhE ~fSIRED EN~PoINI PEFOf~E EXECUT-~-. 214 JING ANY OTHER CO4MA~D
~ 215 Otq2 F~ 0~ no no F TEsla sTATMs~l IIS SERVO WITHIN IN posITroN 8AND ?
:- 216 Olq7 74 29 JZ NOTrNHND INt THEN WAIT UNTII. 5ERYO STOPS
7 ~Y~
~ 21R nl9q C6 o~ no oo f- l~oVB Tsl~In~o ~SET SS~IDE ~ O AND RE-EXECUTE LAST MOVE
2 219 nt4~ F6 06 oo oO E~ TESTB rLouT~#l ~IS TLOUT ~ 1 ?
:^' 22n nlA3 75 27 ~NZ I-D_NEXTM sY~ THEN EXECUTE THE NEXT MOYE
271 nlAs Eg 98 no JMP FIX_NXT )N:

~ 3 n1~R f~ o6 O0 00 E CK_LDNXT: TfsT8 rlMcw,~1 tlS LOAO NEXT MOVE ACTIVE ?
~ 224 ~1AD 75 16 JNZ CK INPOS IYs 2~5 JN:
276 01~F A2 oo oo E M~VB TMnDE~AL JSET THODE TO NO MODE
'~ 277 nlP2 A2 on no E MoY~ IDf~-cEL~AL JRESET Df.-CEL ELAG
27A nlps A2 00 00 E MnV13 T1nUT~AL
- 279 nlPa C~ o6 O0 on ~ ~nYB TpPGSLD,#I ISET PROGRAM MODE SL~DESroP FLAG
zl~ O~D ~O OF no 00 E OKf3 STATU5,~2 JSET "USER DONE" STATUS FLAG
'. 231 01C2 F9 7~3 04 NnTIN8ND: ,]MP EXIT_MD3 233 ~1CS ~6 n6 no 00 E CK_INPOS: IESTO fiTATUS,~1 ~15 SERVO WITHIN IN POSrTION 8AND ?
234 ~ICA 74 F6 Jz NOIIN8ND ~N~
235 JYs THEN LOAD NEXT MnVE
~ 2~6 J. i~
`:` ~ 217 1 *~**~******~*~**Y~*~*~t~***$~ ' ~: 23~ t ~ LOAD NfXT ~OVE ROUTINE
2~9 s ~4~*****~*~***~*~**~***~*
'~: 2~n 24~ nl-C ~F sn oo E sll~-NExTH: ~Oy SI,~NMCW
242 Ol~f~ PF oo oo E MoV DI,~P~CW
2~1 nln2 us oP oo ~oV Cx~#ogll ITRANSFER NEXT MnyfE~ DATA
244 nlns ~2 f~EP ~TO PRESENT ~OVE 8UFf~ER
~ 2AS ~ln6 ~5 MnYs P~CW,N~CW
.~ 246 ~In7 2h CO SuB AX,AX
2~7 0In9 C5 0~ no oO E MoY8 TSSM,~I
24a nlnfs F6 o6 Ol 00 E T~ST8 PMCW~ 8 tIS NEXT MOVE HALT MnDE ?
- 2~q ~1F3 74 03 JZ REn_NxT Sy5 2~n ~1~5 A~ on no F ~OV~ TSSM,AL tNI
2SI ~IC~ ~0 OF 02 00 E Rt:n_NXT: nP~ STATUSt2~SlOH S~EOUEST NEXT HOVE
.-~ 252 2~3 t~lFIl FS 0~ OS 00 E TEST~ PMCW~ 2 JIS THIS ~ DWELL MnvE ?
.. 7~ OIF2 74 OF lZ CK4PRSEI JN
` 255 OlF4 ~1 00 ~0 E M~y ~X,FPOSIT JY:
2~6 O~F7 ~3 on on MOU T}~EP,AX sSI TIME~ = DWELL T7~E2S7 O~A A] o2 nn ,F. MnV AX,FPOSIT~2 i 25Q nlFD A3 02 no E ~OV TIMER~2~AX
;-' 259 02nn Fg D3 00 ~MP CLP_FL~S
2~
^~, 2$~ n2n3 F~ Ofi no on t- t'~4pPSFT: TEST~ PMCW,~4 JIs NEXT ~OYE A PRESET ?
2~2 ~nq 7~ 36 ~lZ FIX_NXT tMt 2t~3 t2nA ~1 on n~i F Hr~U AX,FPtlSIT lYI
-~ ~.s~ n~n~ q~ oO nt~ rlV CAP,AX sSET CAR = PRESET VAl,lJE
~' :~.

- 177t-~SJ PRn~p~M ~E pDUTlNE
,~ E ~ ~ n r~ s ERR 1,1NE Aor~l? r~1 A7 P3 P~4 - 2~5 n210 2H n~ ~n oo E SIIP AX,FERR
2~r~ ~714 ~3 00 00 ~ E ~nv PD.CIT,~X ISET POSIT ~ PQESEt - FERR
2~7 n717 ~1 o~ no ; ~ov ~X,FPOSIT+2 268 O2~A ~3 02 )o E ~nY CAR~2,~X
~, 2~9 ~2~n 1~ 06 02 o0 E S~R AX,FFPRt2 ;, 27Q ~2?1 ~3 07 no E ~Y pnsIT+?~Ax 271 022q 2~ CO sl)~ AX,AX
272 ~27~ A2 oO no E 40VS T~rlDE,A~ sSEI Tn NO MODE
: 271 02?9 ~2 00 00 E ~OVB TDEC~L,Al, sCl,EAR IEST FL~GS
~ 2~4 n27c ~2 o0 no E ~-)V~ TLnuT~AL
r- 275 022F A2 0~ 00 E u-lv~ TPRGSLO,A~
27S n2~2 h3 2h 00 on E A~D STAIllS,#oE787~ SCLEAR STATUS EDAGS
277 023~ hO nE 02 00 E oRa STATI!S+2,i40H ISET 1'AXIS DONE' STATUS FLAG
; 278 ~2~U E9 Fn Q3 J~p ExIT-Mn3 ; 279 280 n2~0 Al 00 00 E FIX_NXT: MoV AX,FPOSIT
.~ 2P1 ~241 7.P o6 no o0 E SU~ AX,CAR tDTG FPOSIT - CAR
~: 2a2 OZ~7 A3 00 no E Mr~y DTG,AX TSTORE NEW DIG
;:' 2R3 02~A Al 0? ~0 E Mnv AX,FP0SIT+2 ~- 2a4 024D 1B 0~ 02 on E S~B AX,CAR~2 " 2R5 O?S1 A3 02 00 E ~oY DTG+2,AX
:. 2~6 n2s4 ~1 on oo E unv AX,FDR~ LT
. ~ 2a7 0257 h~ De ~ov ~X,AX sR~X ~ FEEDRATE MuLTIpLIER
2P~ 02S9 ~f~ o6 01 00 lrEsTp~ PMCW+l,SlOH tIS OVERRIDE EHAR~LED ?
- 2R9 025E 75 03 ,111Z C~_RRATE IY~
290 02~0 ~a on D~ ~oV BX,#OCa00H INs 100~ FEEDRATE Mu1~TIpLIER
29t ~ J 2q2 n2~3 ~ o6 00 on E CK_RRATEs TESTO TRAPID,~I 1IS RAPID RATE SEL~cTED ?
- ~ 2Y3 07~ 74 ~6 Jz P_RATE sNs ~ ~ 2q4 Sy~
- ' 2qS 02~R Al 02 ~0 E ~OV AX,RApID+2 . ILoAD RAPID RATE
2~ 02RD R~ CR u~ CX,AX SRCX = ~SW
~ 2q7 n?~F ~J 00 nn E ~oV AX,PAPID S~AX = LSW
~ 2q~ 0272 EP C~ ~3 CALL EIX_RATE
- 2qq 02'5 ~1 o2 oo E MoV AX,PAPSD+2 sLOAD RAPID RATE
-- 300 n~7~R RR ~0 ~OV DX,AY sRDX = HSW
-- 3l n27A ~1 oO oo E ~nv AX,RAPID SRAX ~ LSW
~ 3~2 n27D Fy 13 ~D JMP t,A824 : 3n3 : . 3n4 n2ao AI o2 no f P_RATEs MOV AX,PRATE+2 ~LOAD PROGRAM RATE
3~ ~2R3 Rfl CR MnV CX,AX JPDX ~ MSW
; 3~6 ~2~5 ~' 0 ~0 f ~Y AX,PRATf, IR~X ~ LfiW
307 02PH ~H ~s ~3 CA~L FIx-p~ATE
: 3~R 02RB A~ 02 no F ~oV Ax~pRATE~2 3nq 07p~ Rll DO ~nV DX,~X
-~ 3In ~2qn ~I QO oo f~ ~nV AX,PRATE
311 02~3 2~ n8 LAP324~ ~IIB f~X,BX
3 ~ 2 ~2qs 9~l oc no MnV CX,IfOCH
:; 313 nzoR 4~ ADJ_RATE: I~C PX ISHIFI RATE LEFT UUT~L MSB
i~. 315 ozqq n1 E~ SHL ~X,1 IIS SET ANfD 5IOaf- TflE NUH~EP
- 3~ nJ ~2 Rcr~ nx,l Sor SHIFTS
317 ~'lq~ 7() 02 J~ l,Af.17 ~IF nFt~ = 1 THE~ ExIT LOnP
3SP ~24~ r2 ~-7 s,~np A~J_RATE
''''~` 31a ~ 3~n ~2~1 nl E3 nA~7: SHL t3X,I lCnUNI = R8X * Z tMAX, = 24 DEC~
, ,;
., /

177j-E.cs D~GPA~ RnnT~
Es~nnÆ~ LIS
1~
~71 nzA3 ~P C~ MllV CX,BX
372 ~7~ ~IP o~ no ~I)v AX,~0 IR~X = C DEC
373 r2~ 7~l CR sll~ CX,~x )8CX = COU~I - a 3?4 ~2AA ~" ~2 su~ nx~Dx - 3~ ~2AC ~ 00 O0 E M~vB AL,DECEL
37~ ~2~F ~ Fn ~DV~ PH,AL
- .t~7 07~I ~i 01 00 E ~ov AX,DF.CEL+I
3?~ t y n2R4 43 DL)J_RAMP: INC 8X lAnJllsT nEcEL RAUP BY SHIETING
3~0 O2~5 ~t F7 SHI, nX,I JTHE NUM8ER OF TJMES IN COUNT
331 ~2R7 D1 ro PCL ~X,I tn~ UNT~L ~S~ IS SET
33? 02P9 70 o2 ~0 LAP,8 tIF OFL ~ I THEN EXI~ LOOP
333 O2F~ Æ2 F7 L.nop ADJ_RhMp - 3~4 - 3~ ~2~D '~ C3 nl 1,AB8s TESTB BL~ AS COUNT RN EVEN INTEGER
. 33h ~7,--0 74 02 J?. Cl~_RAMP tYs - 3~7 n2-2 nl E~ SH~ AX,I JNS SHIFT RIGHT DEcEL VALUE
3 1 ~R
318 n2c~ ln on no C~RAMP: C~P AX,~0 ~Ifi ADJ. DECEL VALUE e 0 ~ 34 02r7 75 o3 JNE l.t~ RAMP INs 3dl 02C9 ~R 01 qO UQY AX,~I Jyt SET ADJ. DECEL VALIJE ~ I
3~ ~
343 02CC ~3 on no E l,D_RA~P MnV ncRAMp~Ax tSAVE ADJ. DECEL, VALIIE
~ 3~4 02CF nI E~ S~R PX,I tADJU5T COUNT ~ t RBX ~ 2 ~ 305 07nl RB C3 MDV ~X,BX
346 n2n3 A3 00 00 E ~nv ADJ_CN~,AX SAVE COUNS
, 1 347 l ~ 34e 02~8 2P C0 CLP_FLfiSs SU8 AX,AX ~b ~ 34~ nznR ~2 on oo E M~VB TDECEL,AL tCLEAR TESS FLAGS
3sn r~R A7 00 00 E ~nVB TLtlU~,A~
3St 02nE ~7 on oo Æ ~nv9 TPRGSLD,AL
. 3S2 n2~I R I Z6 00 00 Æ dND STATUS,~oE785H ICLEAR STATUS ~LAGS
'~ 3~3 02F, Rn 26 r2 00 ~ AND8 STATUS+2,~0BFH sCLEAP "AXIS DONÆ" STATUS FLAG
~ 3S.1 f)2FC E'J 4F, ~13 J~p EXIT_HD3 ~9 `~:
-,;

. ~
. ~
--'''' : .

.

:l `
~ 7 7 1 _ r ,~ p l~ n (; p d ~ ; u n~ N E
FSHnnt:~ ,I.lS
F:RII LI~IM PUI)R Pl U2 F3 E14 3!i6 3~ *~ t~ 0*~4~$~ o~
3'iR ~ 4 punGpA~ ~OYE; COMfi~AND ~(OUTINE: 13 3C~ f*~ o~l~**~F*~ *~*~*~*~4c~
:. 3f0 S
3~1 n2FF qO 2~ 00 00 r IIJTERP: A~DA Cn~lSROt,,llOF~ sCLEAR "AT Hnl1E" l.ED 13IT
3fi2 t~2F4 Qt) 26 00 on E Awo~ sTATlls~l~nFEH sCLEAR IN POSITION STATUS FLAG
3f~3 ()2F`9 Al no 00 F. 4nv AX,FDOSIT
- 3~4 n2FC ~ n6 no OQ ~: SIJF~ AX,CAR SDTG ~ FPQSIT - CAR
3~5 03nt1 1~3 n~ no E MOV Dl'(~"AX sSTOR NEW l)TG
3f~ o3n3 ~1 0? 00 ~: MOV AX,FPOSITt?
3~7 D3(~ 0~ 02 nn E ~;~B AX,CAR~2 3f~R 0301~ A3 o2 oo r, MnV DTG~2,AX
3f9 ~13nD C~ o6 oo Oo E ~nv8 TREVDIR,#1 ,~-ssET TREVDIR - 1 370 0312 ~ 06 00 00 E SEST8 SSS~ JIS THIS MOlJE HALT UnDE ?
371 n317 75 07 JN7. DIFFSI~N JYs '~ 37? SNS
: 373 n319 ~-6 0~'; 02 00 E TE:iTR S~ATi)S~2,1110H IIS SEND NEXT MOVE SET t 37~ 03SE 74 03 J2 CK_RUNN~ sNs THEN CHECK FOR Bl,ENDING
'- 375 ~3?0 E9 A4 00 DIFFSIGIJ JMP CAI,C_DEC tYs THN NEXT ~tOVE UAS NOT 13E:EN SENT
~: 37~S
`~ 377 t')373 E7 t)6 00 no CK_RUNNDs TEST NMCW~204H sIs NEXT NnllF~ A PRESET OR DWELL
37R 03?9 75 F5 JNZ DIFFSIGIJ JYs ~: 37 JN~
3~0 037P ~'fi C4 SO TF:STB AH"I~OH tIS DTG NEG. ~
3&1 ;~3?F 75 31 Jt,Z NEG_!IOV SYs 3&2 tNs 3R3 n310 ~1 00 00 E MnV AX,CAR SSUBTRACT END POSITInN OF NEXT MOVE
3R4 0333 2r o6 00 00 F: sua AX,NPO.SIT tFRO~ THE PRESE:NT CO~NAND POSITION j~
.~r' t 3RR 03~7 ~1 o2 00 E MOV AX,CAR~2 sTO DETE~UINE IF ~LENDlt~G OF VEL13CITIES
- 3R6 ~3'A ]R o6 02 OQ E S~B Ax,NPo.sITt2 SSHOtJLD ~E CHECKEP.
- 3P7 ~3~E 7g F.O JwS ~IFF5IGN sIF P.ESULT IS PDS., THEN NO ~3LEHDING p~
3Ra ~34n ~ o~ 00 00 E t~nVa TRtVDIR,~o ssET TREvnIR ~ o `'- 3R9 ~3a5 ~ 0~ 00 no ~ TESTB TRAPJh"tl JIS RAPID RATE SELECrED ?
.: 3qn n34A 7S 12 J"Z SE1,~API~ ~y~
391 ~3~C ~1 02 no R ~nv AX,NXT_RATE~2 SNs 3q2 03Lt ~R on t~oV DX,AX
.3 lq3 03CI al 00 no E ~ny AX,NXT_RATE
, 394 ~3c4 7q 0~ 00 00 E St!q ~X,AP.ATE sVEL DIFF - HXT_RATE - ARATE
-- 3qS 03~ 15 02 00 E SBB DX,ARATE~2 ~afi ~3~C 7~ 3' CAI._VDIF sIF VEL DIFF IS NEG., THEN CHECK DECEh 3q7 n3~E Fq 35 ~I SF.LRAPTD: 3~P Nn_DFC
3qft - 39q n7~1 ~l on no E ~IEG_MDV ~nv AX,rJPOSIT SStJ8TRACS COMMANl) P05~SION FROM DE5I17ED
~h(l h3~4 7h 0~ no oo E 5"~ DX,CAR sEND POSITION OF THF NEXT Mr3vE ~0 n~ n3~ ~t 02 no E ~nv A~,NPOSIT~2 SD~TERMI~E It RLENDING Ot VELOCITIES
402 G3~R 11~ o~ 02 00 E S~B AX,CAR~2 sSt.O1JLD BE Ct~ECKED, . 4n3 h3~F 7g S~ J~S C~LC_DEC ~IF RESULT IS POS., THEN N0 BLENDING
-:~ an~ n371 C6 ~)6 00 00 E l~nVR TREVDIR,~o 1SET TREVDIR _ o ~ 4ns ~37h F6 0~ ns oo E TFSTB ~RApI~ SIS RAPID ~ATE SELECTED ?
:, 4n~ 037R 75 ~t ~l~z St.URAYlD ~y ~ 4n7 ~ t7D ~1 1)2 ~o E ~v - A~,ARATE+2 INt -~ an~ n3~Q ~L~ rn l~t V DX,AX
-. 4~ ~3~7 Al no no ~ ~v AX ARATt -, alo n3~s n3 nB no no E ~t)~ ~X NX7,_RA~ sVEL ~IfF - AtlASt - uXS_RATE
~ c, , ---1771-~St PKr~PA~ ~O~E ~nHTl~lE
F:5MnnF3,1,1.~
,, E~R l,lNE ~I)nH .11 h-t ~3 1)4 ~::! 41 I n3riq ~ n2 on ~ A~C DX,NXT_RATEf2 412 n,l~o 7~ CF ,I~c SEI,RAP~D sIF VEI, DIFF ~S Pns., I~E~I NO DECEL
~ 413 -.- 414 Q3~F ~l 02 oo i ~At_YDIFt MnV AX,APATE~2 415 n3Q2 Ra DO MOV DX,AX
41~ n3s4 Al oO no t MoV AX,ARATE
17 n3a7 q~ oE ~U 0~ E ~OV cx~AnJ-cNT
qlR ~3~P F6 C6 R0 TESS~ DH,~8QH IIS A~ATE NEG.
i 41~ r39E 74 oP Jz PDJ_ARAT IN:
420 n3~0 r7 On ~nT AX 5y: NEGATE R4TE V~LuF
42t 03h2 ~7 D2 ~OT DX
,--. 427. 03h4 r)S 01 no ADD AX,~t , 473 ~3h7 r~3 07 00 ADC DX,~n ; 474 i 4~5 ~3~A rl En ADJ_ARAT: SHL AX,l i~ 47R 03AC ~1 D7 RCL DX,l 477 n3hE E2 FA l,ooP ADJ_ARAT

~- 47 3~0 ~P C2 UnV AX,DX
~n n3~2 F7 ~,0 ~ AX ~RAX = ~AD~3. ARASE~2 LSW
' 4~1 n3~4 7p 05 OU 00 E SUP AX,NADJRATE
`., 4~7 03~R A3 ~ 00 E ~OV PTDEC,AX IPTDEC ~ ARATE~2 - Nxs-RATE~y2 `!i 433 n3~ R~ C2 UnV AX,OX
~ 434 n3~ ~n n6 02 00 E SPS AX,I~ADJRATEt2 ':~ 415 n3f1 h3 02 00 E MnV PTDr4Ct2,AX
436 03~4 ~9 2n 00 JMP CK4-nEC
' I 437 t . ~ 4~ 03C7 Al 02 ~o E CALC_DEC: MrlV AX,APATE~2 : ~ 439 ~3rA aP Dn UoV DX,AX
1 440 Q3CC hl on oo E HnV AX,ARhTE
:.S 4al ~3~ OF ~0 00 E ~r~V ~X,AnJ_CuT JVELOCITY ADJusTMENr COU~T
- 467 n3n3 F6 C5 R0 T~ST~ DH,~30H JIS VEL DIFF NEG. ? ~
~: 443 ~3n~ 74 0~ JZ Su~FTL IHt ~n 4~4 n3~8 F7 D~ IJOT PX ~Ys 445 ~3~A F7 D7 NOT DX
` 4ah r~3nC ~S Q1 nn AnD AX,-I
4~7 n3D~ q3 02 0~ ~DC DX,#0 4~8 4a9 n3~z nl ~n SHIFTL: SHL AX,l JsHJFr RATE ~Y ADJIJSTHENT COUNT
~ 4~ ~3F4 nl D7 RCL DX, 1 1~O nl3TAIN THE PT. OF DECEL
~- 451 ~3i6 ~2 ~A LorlP sHrFTL
4S~
s3 n3F8 RP C7 l~nV PX,DX
~-~ 454 n3~A F7 rn MI~L AX sPT. OF DECEL ~ (ADJHSTEO RATE~**2 ~ 455 n3FC ~3 o0 on ~ Mr3V PTnEc~Ax tSTORE PT. OF DECEL
:~ 45h n3FF ~ C2 M~V PX,DX
n3cl D3 02 no E ~oV PTDEC~2,AX
45d -~ 4S~ n3F4 Al n2 ~o E C~4_DC~ ~oV hX,DTGtZ
4~n n3F7 ~p r~P M~?V liX,AX
4f~i Q3F`~ hl on oo E M~IV ~X,DTG JR8X = DTG ~M5~1~
-. 4fi2 n3FC 8-~ Cq 4nV CX,AX 5RCX = DTG ~I,SW) ~3 ~3FE ~1 o2 n~ rlv PX,ARATE+2 R4% z VFL, SIFP
~4 nanl qq rwl) tRDX SJGN FXTENSIO~ OF VEL, STEP
4n2 Ffi C7 R0 TESTP ~H,IPoH ;IS DTG NG, `4~ nqn~NZ ~l-n~c~ SY:
:

: ~
177t--F,~6;5 PFtll(;pl~ t~E IlQllTlNE
ESMODEl.l.l~
- ERR l,{~lf: ~D~R q? ~2 P3 R4 4k7 nao7 7~ ~ Sll~ ~X,AX ~N: TEUP = ( DTG - VFL. STEP ) 4ti~ n4no 1~ tlA SP~ BX,DX
4~q n4~ 7u S~ JS DEC_RA~P ~IF QESULI IS NEG., THEN DECE~
47U n4nD RA C1 MOV AX,CX ;RAX ^ TEMP (LSW), R~X = TEMP ~SW~
471 n4~F 7S 1A JNZ P_DTG JIF MSW NnN Z_RO THE1l NO DECEL
472 Odll ln ~n oo CMP AX,tlO ~I'3 TE~P = O ?
473 04t4 75 15 JNE, P_1)7G ~tJt 474 n4t6 F9 4a 00 JMP DEC_P~Mp 1Y:
~: 475 ~ 47~ nql9 7~ cR N_DECEL: SlM3 CX,AX sIEMP = ( DTG - VEL. STEP ) ~~ 477 041B t~ DA . S~ BX,DX
-. 478 04tD 79 ~2 JN5 DEC_RAMP JIF RESUI,T IS POS., THEN DECEL
; 479 04tF ~R Cl MnV AX,CX
4un ('4'21 F7 0(~ NOT AX
`, 4RI n473 t7 n3 NnT ~X
4~2 n47S ~S 0I no ADD AXi~l sRAX - TEMP tLS~) ~ 483 047~ e3 D3 00 ADC BX,~O JRBX = TEMP ~SW) -. 4e4 047~ nl EO P_DTG: S~L ~X,I f 4~5 ~42D Bl D3 RCL BX,I 7TEMP ~ t DTG - VEL, STEP ~ ~ 2 4q6 t)47F F7 26 00 on _ ~I)L DCRAMp ILSW ~ t ADJ, DECEL 7 ~ 4u7 o4~3 ~H C~ ~oV CX,DX 4~8 0435 ~3 YCHG AX,BX
4~9 04~6 F7 26 no 00 E MUL DC~AMP t~SW-* t ADJ, DECEL ) 490 ~43A 03 ~1 ~D~ AX,CY ~TEMP _ I DTt; - ARATE ~2~DECEL
- 4ql n4~c q3 D2 no ADC nx,~o 1 492 n4~F 75 5~ JNZ No_DE-C sIF ~SW IS NONZERO, THEN NO DECEL
~3 04~ 96 02 0 E CMP AX,PTDEC~2 ~Yt IS TEMP < PT, OF DECE~
~ 4~4 04dS 7~ l~ J5 nEc-RAMp lY2 - ~ 4~5 04~7 7~ 06 JD C~_DEC 7Nt '- 4q6 04d~ 3B IE 00 00 E ~uP ~X,PTDEC . ~
4~7 (~4~17 71i 12 JFI~ 17EC_RA14P ~9 . 4q9 n4dF F6 n~ ~0 on E C~_DEC: TESTB TDECEI"21 sIS DECEL FLAG SET
sno ~4~i~ 74 40 JZ No_DEC tNt Snl 04~;6 dl 0~ 00 E t~nY AX,ARATE+2 tYt - Sn2 O~Q ~ nn u~V nX,~x : sn~ n45~ n no E ~oY ~X,ARATE
. 5~4 n4'iE ~9 AE 00 . Jt~n SAMERATE SDECEL ~ODE~ NO RATE CHANCE
s sns - 5~6 n4~1 C~ 0~ no nn ~ nEC_RA~P: ~nV~ TDECFI"It ~SF.I DECEL FLAG
~ 5~7 ~4~ ~1 07 no E MnV AX,ARATE~
- sn~3 1~4f.9 ~ DO 4nv DX,AX
SP~ ~4~9 ~ I on oo E MDY ~X,ARATE
51~ 04~E F~ 06 n3 00 E TESTB DTG~3,~80~ ~IS DTG HFG, 2 ~ Slt ~473 75 la ~ _nEC s -- St2 n47~ 79 0~ 00 00 E SIIB AX,OECEL sN:
-~ 513 P47q l q 1:6 02 00 E ~u nx,DFCEL~2 JNEW ARATE 5 ARATE - DECEL RA~P
St4 n~70 78 07 JS I-A~_~ tlF RESULT NEG, 5ET ARATE ~ O
5~$ ~7F 75 12 JNZ LAB_lo sIF 2ESULT PoS~TIVE, CHECK DTG
S~S ~ 3r, o~ 00 C~P AX,~O SN: }S RE5ULT = O 2 517 n4R4 7S on JuE LAB_10 S~:
.- 518 n4R~ cg o~ n~ J~p l,D_DTG IYs CLEAR ARATE lMSW
q - 5~ 4~9 3 o~ QO on ~ EG - nFc: ~nD AX,DFCF-L
S~l 04PD 13 1~ 2 on F. ADC DX,DECEL~7 572 ~4l 7Q El .ltlS LAB_2 ., :-.

1771-F.',: PR~lGpt~M ~InDE knilTTNE
EsMO~E.
~R r,l~J~: ~Qn~ P1 ~ P3 ~
n4q3 ~9 7~ no l~q_lnl ~p Cl~_l)T~.

5?5 n~c~ f~ n6 no on E ~1~_PFC5 ~r~V8 TDECFL,~n 576 04q~1 ~l 07 no E MnV AX,DRATE~2 ~ 577 4~E u~ C8 ~oV CX,AX
S~4 04~0 ~1 0~ Oo r,` ~oV AX,DRATE
5~9 04A3 q~ o~ MoV ~X,AX
530 04~5 ~1 02 no ~ MrV Ax~ARATt2 5~1 04A~ UR ~n M~V nX,AX
5~2 04AA A1 00 no Æ F7nV AX,ARATE
; 5~ ~4An F~ 0~ 03 on ~ TESTP DT~+3,~80H )IS SIGN OF DTG NEG. ?
5l~ 04r~2 75 2fi N_DRAIE ~Y~
~ 5~5 04P4 7~ ~ 511~ ~X,AX sNs TE~P - DRArÆ - ARATE
~` Sl6 04r~6 1R CA s~r.~ CX,DX
5-7 o4r~ 7e 3n ,~,c SU~_RAMp ~IF DRATE < ARATE TH~N SUBTR. RAMp -~ 5~R n4~A 75 05 J;lz ADn_RA~P 3IE T~MP pnsITIvE~ T~EN ADD RAMP
s39 04~C ~3 F~ 00 C~P ~X,10 JIS DIFF. ~
540 n4RF 74 4E ~ SAMERATE ~Ys 54t 04ct n3 06 no 00 E ADD_RA~Ps ~DD AX,ACCEL
542 04~5 13 1fi Z 00 ~ ADC DX,ACCEL~2 ~NEW ARATE 8 ARATE ~ ACCE~ RAMP
: 543 04C9 3r~ 16 OZ 00 E CMP Ux~DRATE~2 rls ARATE < DRATÆ
~- 5~4 o4cn 7~ 39 J1, CK_DTG IYs - 5aS 04CF 7F ZF JG ~_DRATE INs 7- 54h 04n! 3~ 06 no 00 ~ C~1P AX,DRATE
547 o4nS 76 3t J8E CX_DrG
s4u 04n7 F9 26 no .lMP Ln_~RATE

~ sso o4nA 7~ I)n N_DqATES Sll~ ~X,AX 3TEMP c DRATE - ARATE
n4nC t~ CA . S~ CX,DX ~
552 n4n~ 7p 0~ .lS SUP_RAMp ~ IF DRATF < ARATE THEN S1)~TR. RAMP q 5~3 Q4F0 75 DF JNZ AD~_r~AMP ~ IF TEMP POSITIVE, THEN APD RAMP
554 04r2 ~3 FP 00 CuP ~X,#n JIs DIFF. ~ O
5~5 04F.5 75 nA ~NE ADn_RA~P J~S ~d~
556 04F7 F9 ZS no .l~P SAMERATE JYs 55R 04EA 7i3 o6 no on E SUA_RA~ps 511B AX,ACCEL ~NEW ARATE ~ ARATE ~ ACCEL RhMP
5~ ~4FE 1R 16 ~2 o~ E SHR DX ACEL~2 ~n n4F2 3A 1~ OZ 00 E CM~ DX DRATEf2 sIS ARATE < DRATE ?
561 ~4F6 7F IR JG CK_DTG tYs 5~2 n4F13 7C n~ JL LD_DRATE INs 5~3 n4FA l~ o~ 00 00 E CHP AX,DRATE
5~4 O~FE 73 OR JAF CK_DTG
5~5 oSRO ~1 0~ 00 E LD_DRATE: ~nV AX,DRATEf2 5~fi ~5~3 ~ ~)o HnY DX,AX
5~7 R5nS ~1 On no ~ MnV AX,nR~T~
5~ aSn8 ~3 oO ~o E C~-DTG: YnV ARAIE,AX sSTaRE ~EW RATE
nsnl~ ~9 1~ 02 00 E uoy ARAT~F,~2,oX
570 ~5~F ~U IE 00 00 E SAHERATE: ~nV B~,DTG
571 n513 Ru OF n2 00 E u~y CX,DT~2 572 05\7 Ff~ llft 00 OR E l`ESTE~ TSSH,~1 /HAllT HOI)E ?
573 051C 7g IlA J~2 RALT_MD JY:
57~ INt 575 051E ~h 0~ no 00 E TESTR TREvDIR~lrl sDIRECTION REYERSAL t S7$ n5~3 7S 03 l~? H~l~T-Mn JY: THEN DECEL TO ZE~O AT END OF MOVE
577 t~S~S ~9 qq ~O ~t~1P PUr~_r~ rl r 57d 771-ES: P~nGvh~ ~n~: Rnl)T~
EsMl~n~ r,I~
- ERR LI~E ~DnR ~1 a~ ~3 ~4 57q 057~ ~ C5 ~0 HALT ~D5 TFSTB CH,~80H sI5 OTG NEG, 7 5q~) nS7~ 75 3~ JNz N~G_DTG IY2 S~1 057U n1 0~ no 00 E ~nn TNTGR~D,AX SN~ N~W INTGRND ~ INTGRND + AUATE
SR2 s~l 9~ C2 Mr~V AX UX
sa3 nS~3 IS on no ~DC AX,sn IRAX = cnMM. I~CR.
Sq~ ~5~h qq CWD tRnx = SJGN EXTENSIL1~
s8~ 0s~7 nl o6 oo n~ E A~0 CAR,AX ICOMH PosIT = CAR ~ COMM, TNCR.
SR6 OSl~ 11 16 02 00 E ADC CAR~2,DX
: 5R7 053F lp C~ ~P CX,DX IIS DIG ~MSW~ 5 0 7 - SPR 0541 75 17 JNE LD-coMM IN:
- 5~ ~5~3 ~ C3 CvP AX,~X IYs IS CnMH. INCR. > DTG
sgn nS~s 72 13 LD-coMM tNs ~41 IY: .
- 5~2 ITHIS IS A SPECIAL TEsT TO GUARANTEE
:- 59~ tTHAT T~E VELOCITY Is ZER0 AT THE END
; 5q4 JOF THE CO~MA~JDED MovE~ IF TH~ VELOCITY
- 595 JIS NOT WITHIN ONE DECEL STEP rRoM ZER0 546 ITHE SERYO WI~L DO A C0NTR0LLED SLIDE
S97 tSTOP PAST THE DESIRFD ENDPOINS. ONCE
S~u ~ sTHE SERVO HOTOR HbS COME TO A C0MPLCTE
-- 549 tSTOP T~E SERVO ~ILL REVERSE OIRECTION
6no ~AND RETU~N TO THE pRnGRAMMED POSITION, 601 0547 ~ 07 no E ~OY AX,DECEL~2 6n2 OS~A 2~ 06 02 00 E SIJH AX,APATE~2 ITEMP ~ DECEL tMsW~ - APATE tMSW) 603 05~E 79 44 JNS LD_DTG sIF THE RESULT OF TEMP IS NFG. THEN
6n4 05~0 Ck 06 00 on E MOVB TSLIDE,~1 )sET TSLIDE z 1 !~ 1 6ns 05~5 ~0 0~ 00 00 E nR~ STATU5,~10H 15ET THE SLJDE STOP rLAG ANP D0 A 5 ~ 6n6 ~coNTRnLLED SLIDE STnP.
6n7 nss~ E9 E0 00 LD_.OHUt JuP EX~T_MD3 6n9 nsso 29 o6 no 00 E NEG_~TG: 51)P ~NTGRND,AX ~NEW I~JTGRNU = INTGQND - ARATE
610 ns~ no oo ~oV AX,~0 611 ns~4 1~ C2 S~ AX,DX ~RAX = cnMM~ I~CR.
hS2 05~6 F7 DP NEG ~X t~EGATE COMM. INC~, 613 0S~8 ~9 CWD ~RDX z SIGN EXTENSION
~t4 0S~9 nt o6 no 00 E ADD C~R,AX ~COM~ POSIT = CAR ~ COMM, INCR, tS 0~D ll lh 2 on E ADC CAR~2,0X
:` 616 nS71 3~ C~ C~P CX~OX IIS DTG (MSW~ ~ O ?
--f,s17 n573 75 E5 JNE LD_C~MM St1~
1--618 0575 l~ Cl CMP AX,BX sY2 IS COMM. INCR. ~ DTG ?
05l7 77 El JA l,D_COMM INS
~7~
~ i ISHIS IS A SPECIAL T~ST TO GUARANTEE
~~s ~77 ITUAT THE vELocITy IS ZER0 AT THE END
73 IOF THE COM~ANDED MOVE, IF TuE VELOCITY
~7q tIS NO~ WltHIN DNE DECEL STEP FROM ZERO
.~75 JTUE SERVO WILL D0 A CnNTR0LLED SLIDE
67~ ISTOP PAST IHt' DESIRED ENDPOINT, ONCE
~677 1THE SFRYO MOTOR HA5 COME T0 A COMPLETE
:~67~ sSTOP 7HE SEPVO WTLL REYERSE DIRECTION
-b7~ SAND RETHRN tU THE PPOGRAMMED POSITION, ns7~ ~t 02 oo F.................. ~nV ~ RATE+2 ~1 057C. 3D FF F~' CMP AX,~0FFFFH tIS ARAIE tMSW) 5 OFFFFH ?
632 ~57F 7q 1~ JE I-D_DTG /Y: THEN LnAD nTC
~33 JN2 THEN DO CHECK
IS~I 03 o~ 02 oo F ADD AX,1)FCEL+Z tTF.MP ~ ARATE t~SW) - DECEL tMSW) , ' 1771-ES~ PRrt5~A~t ~O~E ~tll1~1NF
.1,.' Es~t3rt~
-. ERR ~ n~ ~1 u~ ~3 A4 hlS nS~5 79 nn .1r~S 1D_DTt; ~lF Tbt;~REsuLT or' TEMP lS NEG. THEN
- tz~6 nS~t7 rh 4~ 00 on ~ Ml3VI~ TSI,ID~ Js~T~Tsk~nE - I
617 S~C q~ OF 00 on F: n~B STAT11S,110H tSE'~ TH~,SLlt3E STOP FLAG AND Dt3 A
~, 6~ sC~'lThOL1,E~ SLIDC STnP, ~ c~ nS4~ EC~ A9 no JMP rX1T_MD3 -i- 64t3 641 o5ctq ~1 on on ~ 1,D_DT6 MnV AX,EPOSIT JS~ CAR ~ FPO'SIT
3 642 Q597 ~3 0 no F, MOV CAR,AX
643 nS4A hl 07 ~o r ~ov AX,FPOSlTt2S~4 OB4Lt A3 02 no ~ MnY CARt2,AX
6a5 t'SDO 713 CO SIJB AX,A~
- fi46 tt5h2 ~3 00 no E ~ MoV ARATE,AX t5ET -ARA~ 3 6b7 OSAS A3 02 oo ~ MOV AaATF.~2,AX ~
64~ OS~ ~3 00 no E Moy INTGRND,AX JSE$ IN~ ~ ' ~. 6G4 nsb~ A3 02 no E MoV JNTGRND~2,AX ' ~
~~ 650 O5~E tt2 00 00 E MOVB TD~CEL,AL JR~SET T~S~ FLAGS
-- ~S1 05~1 A2 00 no E - MOVB TMOr)E,AL lSET TO NO ~p~E
~^ 6S2 05~4 tiO OE 00 00 E t'3RR STATUS,~2 ~SET "USER DONEt' FLA~
~- 65l 05~9 80 OF n, OQ E ORB STATUSt2,~40H 5SET "AXIS DONE" STATUS FLAG
hS4 O5qE rs 7c oo .lMP ExJT-Mn3 6~5 s ^~ 656 nSrl F6 CS RO RUN_M~: TESI~ CH,~80H )IS DTG NEG. 7 6S7 05~4 75 46 JN2 N_DTG Jys 5a n5F6 1 0~ 00 on E ADD INTGuND~Ax ~NJ NE~ INTGRND = IN'rGRND ~ ARATE
6~ OSt~A ~ C7 MnY AX,DX
~, t~61) ~5~C t5 on oo - ADC AX,~O JsAX ~ cnMM~ INCR.
6~1 OSCF 49 CWD JRnX = SIGN EXT~NSIO~ bb 62 osno nl o6 00 00 E AnD C~R,AX ~CO~M POSIT = CA~ ~ COMM, INCR.
t.~ OSrl4 11 16 02 on E ADC CA~t2,DX
~: I 5ti4 oSn~ ~1 EO .SHL AX,I ~RAX, RDX 3 2*COM~, INCR.
6~ n5nA nl ~2 RCL OX,1 ;'~ 6hn S~C 7B CP SUB BX,AX 5RBX, Rcx ~ DTG - ~2~COMM. INCR,~
--- 6~7 ~5nE 1~ CA SB9 CX,DX
~ 6~ nSEO 78 1~ US SET_1.OIJT IIF RESU~T 15 NEG., THEN SET TLOUT
~-~ 6~9 05F2 75 OS UNZ C~4_DONE JIF MSW IS NONZERO, THEN NOT LAST OUTPUT
670 05F4 ~3 F~ 00 CMP BX,~n JIS LSW 3 0 t 671 05F7 74 11 JE SET_LOUT JYs '.` 672 JN:
7 673 ~If RESULT IS NEG, THEN THIS IS THE
674 sLAST OUTPUT FOR THE PQESENT MOVE.
- fi7S J Ir THE NEXT ~nVE HAS A Gn CoMvAND~
;` ~7h JTHEN GO AUEAO AND PROCESS IT. ELSE
.- 677 tDO A CON?ROLLED SLInE STOP IO SRING
-~:` 67~ 7THE SERVO To ~ HALT
. 6~ ~
`: 6~R ~S~q ~ EO CK4_00HE SHI, AX,l SRAX, RD% WILL CONTA~N 44COMM, INCR.
hal ~5~4 ~1 D7 PC~ DX,l .sAFTER ~NLTIPLY}NG RAX, RDX SY 2.
6~2 tTHEN CO~PAQE ~DTG - 24CnHM. INCR) TO
ba3 s4~COMM. INCR. To DETERMINE I~ THERE
-~:. 6q4 tARE LESS THAN SlX INTERVALS UNTIL THIS
hRS s~OVE IS COMPLETEn. IF THERE ARE LESS
. ~Rh sTHAN 6 IMTERYAI-S LEFT IN TH PRESENT
.. ~q7 J~ovE~ SET THE "AXIS DONE" El,AG EOR THE
~` 6q~ 5MASTER TO PROCESS A NFW GO COMMAND

.. - 6~ S~ 1 CMP DX,CX JIS 4~CO~M INCP > DTC - 2~COMH. INCR.
;`' ., .

.~- 177t-l~Ss P~n~t~ lnF~ ~nllTIN~: ~
: ~, E5MnDI;:l . LIS
~PP ~ nn~ ul ~7 ~3 ~4 ~1 n~rF 7C 40 JD ExlT-~n3 ~
~2 ~5F1 7f 45 .lfi SFT_POtJE Jy 6~3 oS~ ~U C3 CMP AX,~X
~q4 n~FS 72 4~ JB EXTT_Mn3 ~: 6qS n5~7 ~ 3F no IMP SET_DONE
6 ~
~` 6~7 ns~ ~6 0~ ~0 00 E SET_LOIIT: MoVB ~LOUr,~I JsET LAST OUTPltT TES? FLAG
~ h98 ~F ~0 oF 0~ Oo F ~R~ STATIJS,~IOH 15ET SLIDE STOP STATIIS FLAG
:~ 64R 060q ~0 Ot, ~2 00 ~ ORB STAT115~2,~40H ~SET ~'4XIS OnNE" F~Afi .1 7n~) ~6~9 ~9 3t 00 JMP EXIT_~D3 sAT THTS POINT THE PRESENT MOVE HAS
i~ 7~1 s~EEN COHPLETED AND ~ GO COMMAN~
:.~ 702 ~HAS NOT BEEN RECEIVFD, THE SERVO

- 7n4 ITO ~ERO, ~, 70S
706 nfinc 29 06 00 00 E ~_DTG: SUB INTGRND,AX SNEW INSGRflD = INTGRND ~ ARAS~
7n7 oç10 ~8 Q~ 00 ~OV Ax~#o 7n6 ~6t3 1R C2 SOR . AX,DX ~RAX - COM~. INCR.
7ns ~615 F7 DR N~G AX INESATE CO~M. INCR, ~ 7lo n~l~ qg C~O )RDX ~ STGN EXTENSION
-~- 711 n61q ~i 06 00 00 E ADD CAP,AX SCOMM POSIT = CAR ~ COMM, INCR, 712 061C 1I I~ 02 on E ADC CAR~2,DX
713 ~670 n1 EO SUL AX,I )RAx~ RDX ~ 2~COMM, INCR.
; 714 ~h22 DI D2 RCL DX,I
71$ n6~4 2A Da SIJA ~X,AX IRBX, RC% 2 DTG - 2~cnMM~ INCR, ~~ 716 n626 18 CA sB~ CX,DX
717 0628 79 DO JNS SET_LOUT tIF RESULT IS POS, THEN THIS IS THE
:- ~ 71q ILAsT ~UTpUT FOR THE ~RESENT MOVE, ~ ~ 719 tIF 7HE NEXT M~VR HAs A GO COMMAND, -~ I 770 tIHEN GO AHEAD ~ND pancE5s IT, E~SE
-5 77~ tDO A CDNTROLLE~ sLlnE STOP TO BRING
- 77~ ' iTHE SERVO TO A RALT.
~^ 773 S
1; 774 n67~ nl ~o SHL AX,I ~AX, RDX WIL~ CONTATN 4~COMU INCR
775 D62C nl 02 RCL DX,I JAFTR MIILTIPLYING RAX, RDX Bi 2.
7~6 S~HEN COMPARE tDSG - 2~COMM, INCP~ To-- 7~7 J4*co~M~ INCR. To DETERMINE IF THERE
- 77R JAR~ LESS ~HAN SIX I~ITER~ALS UNTIL THIS
77~ sMOVE IS COMPLETED. IF THERE ARE LESS73n sTHAN 6 INTERVAI~S LEFr rN THE PRESENT
7ll JMovE~ SET THE l'AXIS DONE" FLAG FOR TH
7~2 5~AsTER TO pROCESS A NE~ GO COM~AND
~- 733 s ~- 7~q n67E 3~ DT CMP DX,CX SIS 4~COHH INCR ~ DTG - 2*COMM. INCR, --. 7~ ~63Q 7F OP J~ EXIT_MD3 Stl~
~r~ 7~6 n~2 7G 04 ~H SET_~ONE tY
:3 737 06~4 3A C3 CMP AX~x 7~ ~63~ 77 o5 Jh EXJT~MD3 i 73~
:. 76n n6~ ~0 n~ n2 00 E sEr-DDNEs n~ STATIJS~2,~0H JsET UAXIS DONE" FLAG
., 741 ~ 742 n~31~ F~ an ao F ~XIT_MD32 J~P S~ATLOOP
:~ 7 '.: 7~ ~
7~5 J*~ SUA~OIJTINE To MODIFY EEEDRATE V~LUE ***
.` 76' ~771-F.sl P~fi~ ODE RnllTINE
IJ Esuon~l . DI.s ~i E~ F. ~I~nR ~ 3 ~4 747 t 74ff R640 F7 F3 FIx-RATEt MIIL BX I~ULT~PY BY FEEDRATE MULTIPkTER
749 ~542 ~ Cl MUV ~X,C% JTO GET NE~ FEEDRATE V~LUE
7~n 06~4 ~B CA MnV CX,DX
751 ~6~6 F7 ~3 MIJ~, BX
7S2 064~ n3 Cl ~DD AX,CX
7S3 064A q3 D2 no PDC DX,In ~4 ~64D F6 o6 n3 oo E TESS~ DSfi~3,~ffOH TIS DTG NEG. ?
755 ~hS2 7i OA J~ PnS_RATE JtlS
756 ~65~ F7 DO NOT PX tYt 758 065ff 05 01 no AOD AX,sl 7s~ 06S8 ~3 D2 00 ADC DX,~O
760 n6~E ~3 on oo E POS_RATEt MnV DRATE,AX ISTORE NEW DESIRED RATE
761 ~5~1 P~ C2 MOV AX,DX
762 ~663 ~3 02 00 E MOV DRATE~2,AX
763 06~6 C3 RET
76~ ~

`. .~

`;
ASSE~FLE~ ER~oRs =

,.' ~ ~

'` W O
.''' ' ~
''-'' C~

.
`, ,.~'

Claims (18)

The embodiments in which an exclusive property or privilege is claimed are defined as follows:
1. An electrical controller for controlling machine motion through a plurality of electromechanical I/O position-ing devices, the controller comprising:
a plurality of I/O circuits each connectable to a respective I/O positioning device to generate output drive signals thereto in response to move data, and to transmit a move request signal when move data is needed;
main processing means for storing and transmitting i) user-selectable parameter data, including a user-selected mode of axis coupling designating coupled I/O circuits and independent I/O circuits and ii) user-selectable move data, including coupled move data applicable to coupled I/O cir-cuits and independent move data applicable to independent I/O circuits; and master I/O processing means coupled to the main process-ing means for receiving the parameter data and the move data, and coupled to the I/O circuits for receiving move request signals, the master I/O processing means being responsive to the parameter data from the main processing means and to move request signals from any coupled I/O
circuits to receive coupled move data in a single trans-mission from the main processing means and to distribute portions of the coupled move data to each of the coupled I/O
circuits, the master I/O processing means also being responsive to the parameter data from the main processing means and to move request signals from any independent I/O circuits to receive independent move data in a separate transmission from the main processing means and to couple the independent move data to the independent I/O circuit associated with that separate transmission.
2. The controller of claim 1, wherein two coupled I/O
circuits and one independent I/O circuit are controlled, wherein move data is coupled in two blocks from the main processing means to the master I/O processing means, one block of move data including coupled move data for the two coupled I/O circuits and the other block of move data includ-ing independent move data for the independent I/O circuit, and wherein the master I/O processing means distributes portions of the coupled move data to each of the coupled I/O
circuits and distributes the independent move data to the independent I/O circuit.
3. The controller of claim l, wherein the main pro-cessing means transmits a block of coupled move data that includes data for a plurality of coupled moves that are distributed by the master I/O positioning means to any coupled I/O circuits, and wherein the main processing means transmits a block of independent move data that includes data for a plurality of independent moves that are coupled by the master I/O processing means to any independent I/O
circuit.
4. The controller of claim 3, wherein the block of coupled move data and the block of independent move data each contain a control word directing a plurality of moves to be executed in a continuous sequence, and wherein the master I/O processing means and the I/O circuits are responsive to the control words to execute the move data in a continuous sequence.
5. The controller of claim l, wherein the main process-ing means also stores a motion control block of data repre-senting manual input motion commands and also stores a pointer to the motion control block as part of the parameter data, wherein the master I/O processing means, in absence of move request signals from the I/O circuits, gives priority to the inclusion of the pointer to the motion control block of data within a status block of data that is returned to the main processing means, wherein the main processing means transmits the motion control block of data in response to receiving its corresponding pointer, and wherein the master I/O processing means is responsive to the receipt of the motion control block of data to couple manual input motion command data to the I/O circuits which execute the manual input motion commands.
6. The controller of claim 1, wherein the master I/O
processing means is coupled to the main processing means through an I/O interconnect cable, and wherein the master I/O processing means and the I/O circuits are formed in respective circuit modules that are mounted in a rack and electrically connected through a backplane circuit board.
7. The controller of claim 1, wherein the I/O cir-cuits read position input signals from the I/O positioning devices and generate output drive signals thereto that are responsive to the difference between a command position determined from the move data and an actual position deter-mined from the position input signals, thereby providing closed-loop positioning control of the I/O positioning devices.
8. An electrical controller for controlling machine motion through a plurality of electromechanical I/O position-ing devices, the controller comprising:
a plurality of satellite I/O modules each connectable to a respective I/O positioning device to generate output drive signals thereto in response to move data, wherein each satellite I/O module requests move data, when needed, by transmitting a move request signal;
a main processing unit that transmits parameter data and move data and receives status data during I/O operations, the main processing unit including memory means for storing the parameter data, which includes data indicating the number of satellite I/O
modules, which includes data that selects a mode of axis coupling in which satellite I/O modules are coupled or independent, or a combination of coupled and independent, and which includes data pointers to the locations of the move data, the memory means also storing move data as coupled moves applicable to coupled satellite I/O modules and as individual moves applicable to independent satellite I/O modules, and processing means coupled to the memory means for transmitting the parameter data and for receiving status data including a data pointer, and in response to the status data, for transmitting move data in one transmission for each plurality of coupled satellite I/O modules and-for transmitting move data in a separate transmission for each independent satellite I/O module;
and master I/O processing means electrically coupled to the processing means in the main processing unit to receive the parameter data and electrically coupled to the satellite I/O
modules to receive move request signals, the master I/O
processing means including means responsive to move request signals from each of the coupled I/O satellite modules or from an independent satellite I/O module for transmitting status data to the main processing means that includes a pointer to the move data for the requesting satellite I/O module or modules, and means for receiving the move data in response to the transmission of the status data, and in response to the parameter data received previously, distributing the move data received in coupled moves to each of the respective coupled satellite I/O modules and distributing the move data in independent moves to its associated independent satellite I/O module.
9. The controller of claim 8, wherein one of the modes of axis coupling provides for two coupled satellite I/O modules and one independent satellite I/O module, wherein the move data is stored in two blocks that are coupled through the processing means in the main processing unit to the master I/O processing means, one block of move data including coupled move data for the two coupled satellite I/O modules, and the other block of move data including independent move data for the independent satellite I/O modules, and wherein the master I/O processing means distributes portions of the coupled move data to each of the coupled satellite I/O
modules and distributes the independent move data to the independent satellite I/O module.
10. The controller of claim 8, wherein the processing means in the main processor unit transmits a block of coupled move data that includes data for a plurality of coupled moves that are transmitted by the master I/O
processing means to any coupled satellite I/O modules, and wherein the processing means in the main processor unit transmits a block of independent move data that includes a plurality of independent moves that are transmitted by the master I/O processing means to any independent satellite I/O
modules.
11. The controller of claim 10, wherein any block of coupled move data and any block of independent move data each contain a control word for directing the execution of the moves therein in a continuous sequence, and wherein the master I/O processing means and the satellite I/O modules are responsive to the control words to execute the moves in a continuous sequence.
12. The controller of claim 8, wherein the memory means in the main processing unit also stores a motion control block of data representing manual input motion commands and also stores a pointer to the motion control block of data as part of the parameter data, wherein the master I/O processing means, in the absence of move request signals from the satellite I/O modules, gives priority to the inclusion of the pointer to the motion control block of data within a status block of data that is returned to the processing means in the main processor unit, wherein the processing means in the main processor unit couples the motion control block of data from its associated memory means to the master I/O processing means in response to receiving the pointer for the motion control block of data, wherein the master I/O processing means is responsive to the receipt of the motion control block of data to couple motion command data to the satellite I/O modules, and wherein the satellite I/O modules are responsive to the motion command data to execute the manual input motion commands.
13. The controller of claim 8, wherein the master I/O
processing means is coupled to the main processing unit through an I/O interconnect cable, and wherein the master I/O processing means is formed as a master I/O positioning module, is mounted in a rack with the satellite I/O modules, and is electrically connected to the satellite I/O modules through a backplane circuit board.
14. The controller of claim 8, wherein the satellite I/O modules read position input signals from the I/O position-ing devices and generate output drive signals thereto that are responsive to the difference between a command position determined from the move command data and an actual position determined from the position input signals, thereby providing closed-loop positioning control of the I/O positioning devices.
15. A programmable controller for closed-loop position-ing control of machine motion through an I/O positioning device, which moves in response to velocity signals and which generates position feedback signals, the controller comprising;
a main processor that stores and transmits user-programmable move data including a programmed position, a programmed velocity and a programmed deceleration for each of a plurality of successive moves; and a satellite I/O module coupled to the main processor, and coupled to the I/O positioning device to read the feed-back signals therefrom and to generate velocity output signals thereto, the satellite I/O module including first memory means for storing move data received from the main processor, an axis processor coupled to the main processor to receive the move data for successive moves, coupled to the first memory means to transfer the move data there-to, and coupled to the I/O positioning device to receive the position feedback signals and to transmit the velocity output signals, and second memory means for storing machine instructions for the axis processor, wherein the axis processor is operable to compute the actual velocity for the present move and to detect a programmed velocity for a next move that is less than the actual velocity of the present move, and wherein the axis processor is further operable to detect a point of deceleration before reaching the end of the present move and to then apply the programmed deceleration to the actual velocity, 50 that the next move can be initiated at its programmed velocity.
16. An intelligent positioning I/O module for real-time closed-loop positioning control of one axis of machine motion the I/O module being insertable into a rack structure, the I/O module being connectable for communication with a programmable controller main processor, and the I/O module being connectable to a servomechanism controlling motion along the axis, the I/O module comprising:
memory means for receiving user-selected move data for a present move and user-selected data for a next move from the programmable controller main processor, the user-selected move data for each move including a programmed destination, a programmed velocity and a programmed deceleration;
input circuit means connectable to a position sensing portion of the servomechanism to receive position feedback signals and to convert such signals to position feedback data;
output circuit means connectable to drive a servo motor portion of the servomechanism by coupling servo velocity output signals thereto, the output circuit means converting servo velocity output data to the servo velocity output signals that are coupled to the servo motor portion;
programmed axis processor means coupled to the memory means to obtain the user-selected move data therefrom, coupled to the input circuit means to receive position feedback data and coupled to the output circuit means to generate servo velocity output data thereto to control axis motion;
wherein the programmed axis processor means is operable to compute servo output velocity data for the present move and to detect a programmed velocity for the next move that is less than the servo output velocity of the present move;
and wherein the programmed axis processor means is further operable to detect a point of deceleration before reaching the end of the present move to then apply the programmed deceleration to reduce the servo output velocity data before it is coupled to the output circuit means, so that the next move can be initiated at its programmed velocity.
17. An intelligent positioning I/O module for real-time closed-loop positioning control of one axis of machine motion, the I/O module being insertable into a rack structure, the I/O module being connectable for communication with a programmable controller main processor, and the I/O module being connectable to a servomechanism controlling motion along the axis, the I/O module comprising:
first memory means for receiving user-selected move data for a present move and a next move from the programmable controller main processor, the user-selected move data for each move including a programmed destination, a programmed velocity and a programmed acceleration and deceleration;
input circuit means connectable to a position sensing portion of the servomechanism to receive position feedback signals and to convert such signals to position feedback data;
output circuit means connectable to drive a servo motor portion of the servomechanism by coupling servo velocity output signals thereto, the output circuit means converting servo velocity output data to the servo velocity output signals that are coupled to the servo motor portion;

second memory means for storing a first sequence of axis processor instructions to generate servo velocity output data to the output circuit means to drive the servo-mechanism in response to the difference between an accumula-tion of command position increments, and an accumulation of position feedback data received from the input circuit means, the second memory means also storing a second sequence of axis processor instructions to calculate command position increments for the present move based on the programmed destination to be reached at the end of the present move, the accumulation of position feedback data, the programmed velocity for the next move, and the programmed acceleration or deceleration;
timing means for providing a periodic signal on a preselected time base; and an axis processor coupled to the timing means, coupled to the first and second memory means and coupled to the input circuit means and output circuit means, the axis processor being responsive to each periodic signal from the timing means to read and execute the first and second se-quences of axis processor instructions to generate servo output velocity signals to the servomechanism through the output circuit means and to read position feedback signals from the servomechanism through the input circuit means to provide real-time closed-loop positioning control on the preselected time base, such control including the application of the programmed acceleration or deceleration to change from the velocity of the present move to the programmed velocity of the next move.
18. A programmable controller for controlling machine motion through a plurality of electromechanical I/O
positioning devices, the controller comprising:
a plurality of I/O circuits each connectable to a respective I/O positioning device to generate output drive signals thereto in response to move data, and to transmit a move request signal when data is needed;
main processing means for storing and transmitting (i) user-selected parameter data, which includes a pointer to a motion control block of data, (ii) the motion control block of data, which represents manual input motion commands, and (iii) user-selected move data;
master I/O processing means coupled to the main processing means for receiving the parameter data and the move data and for transmitting a status block of data, and coupled to the I/O circuits for receiving move request signals, the master I/O processing means transmitting the status block of data with a pointer to the motion control block of data in the absence of move request signals from the I/O circuits;
wherein the main processing means transmits the motion control block of data in response to receiving its correspond-ing pointer; and wherein the master I/O processing means is responsive to the receipt of the motion control block of data to couple manual input motion command to the I/O circuits, which execute these commands.
CA000434974A 1982-09-20 1983-08-19 Pc with intelligent positioning i/o modules Expired CA1203869A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US420,561 1982-09-20
US06/420,561 US4510565A (en) 1982-09-20 1982-09-20 Programmable controller with intelligent positioning I/O modules

Publications (1)

Publication Number Publication Date
CA1203869A true CA1203869A (en) 1986-04-29

Family

ID=23666976

Family Applications (1)

Application Number Title Priority Date Filing Date
CA000434974A Expired CA1203869A (en) 1982-09-20 1983-08-19 Pc with intelligent positioning i/o modules

Country Status (2)

Country Link
US (1) US4510565A (en)
CA (1) CA1203869A (en)

Families Citing this family (79)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59107884A (en) * 1982-12-10 1984-06-22 株式会社日立製作所 Control system of robot
US4763117A (en) * 1983-03-23 1988-08-09 Tektronix, Inc. Measurement instruments with multiple operation levels
FR2547075B1 (en) * 1983-06-03 1986-03-28 Telemecanique Electrique METHOD AND DEVICE FOR PROTECTING AND CONTROLLING THE TRANSMISSION OF INFORMATION BETWEEN THE CENTRAL UNIT OF A PROGRAMMABLE CONTROLLER AND THE SENSORS AND / OR ACTUATORS OF THE CONTROLLED PROCESS
JPS6093511A (en) * 1983-10-27 1985-05-25 Fanuc Ltd Format conversion interface device
US4630214A (en) * 1984-04-13 1986-12-16 Moore Special Tool Co., Ltd. Jig grinder with automatic reciprocation and outfeed control
US4695949A (en) * 1984-07-19 1987-09-22 Texas Instruments Incorporated Method for efficient support for reference counting
US4716516A (en) * 1984-09-26 1987-12-29 Dynamics Research Corporation Modular machine tool controller
US4941081A (en) * 1985-06-03 1990-07-10 Microfast Controls Corp. Interrupt zone in rung of ladder program in programmable controller
US4695941A (en) * 1985-07-29 1987-09-22 General Electric Company Loss of electrical feedback detector
US4809217A (en) * 1985-10-31 1989-02-28 Allen-Bradley Company, Inc. Remote I/O port for transfer of I/O data in a programmable controller
US4972365A (en) * 1987-05-01 1990-11-20 Allen-Bradley Company, Inc. Executing downloaded user programs in a programmable controller
US4949299A (en) * 1987-12-04 1990-08-14 Allen-Bradley Company, Inc. Industrial control communication network and method
JPH01152509A (en) * 1987-12-10 1989-06-15 Fanuc Ltd Cnc control system
JP2982010B2 (en) * 1989-06-23 1999-11-22 三菱電機株式会社 Numerical control method and device
US5162986A (en) * 1990-10-19 1992-11-10 Allen-Bradley Company, Inc. Remote downloading and uploading of motion control program information to and from a motion control I/O module in a programmable controller
WO1992009022A1 (en) * 1990-11-08 1992-05-29 Fanuc Ltd Method for controlling servomotor feedforward
US5227965A (en) * 1991-03-06 1993-07-13 Magnetek Controls Fast programmable limit switch
US5479618A (en) * 1991-07-24 1995-12-26 Allen-Bradley Company, Inc. I/O module with reduced isolation circuitry
EP0556412B1 (en) * 1991-09-09 1997-11-19 Fanuc Ltd. Method of controlling feed-forward of servo motor
US5448145A (en) * 1991-09-09 1995-09-05 Fanuc Ltd. Feedforward control method for a servomotor
US5295059A (en) 1992-09-09 1994-03-15 Allen-Bradley Company, Inc. Programmable controller with ladder diagram macro instructions
BE1006610A3 (en) * 1993-09-29 1994-10-25 Philips Electronics Nv Conveyor system
US5548505A (en) * 1994-07-15 1996-08-20 Oktrak Systems, Inc. Scrubber control system
US6009454A (en) * 1994-09-30 1999-12-28 Allen-Bradley Company, Llc Multi-tasking operation system for industrial controller
JP3189937B2 (en) * 1995-06-29 2001-07-16 矢崎総業株式会社 Control specification design management system used for load control equipment
JP3792284B2 (en) * 1995-10-09 2006-07-05 ファナック株式会社 I / O unit for numerical controller and branch board
JPH09258808A (en) * 1996-03-18 1997-10-03 Fanuc Ltd Motion controller programming system
US6889139B2 (en) * 1997-03-07 2005-05-03 Sidewinder Holdings Ltd. System and method for mobile data processing and transmission
US6154684A (en) * 1997-06-14 2000-11-28 Rockwell Technologies, Llc Template language for industrial controller programming
AU2989099A (en) * 1998-03-06 1999-09-20 Mobile Information System, Inc. Mobile data suite and method
US6087952A (en) * 1998-03-06 2000-07-11 Mobile Information Systems, Inc. Remote mobile data suite and method
US6246916B1 (en) 1998-06-24 2001-06-12 Force Control Industries, Inc. Learning programmable limit switch and method providing real-time passive feedback
US6640264B1 (en) * 1998-07-20 2003-10-28 Gary W Moore Incremental state logic methodology and apparatus for logic based program control
JP2001159903A (en) * 1999-12-01 2001-06-12 Yamaha Motor Co Ltd Optimizing device for unit device for combined finished product
US6718227B1 (en) * 1999-12-16 2004-04-06 Texas Instruments Incorporated System and method for determining a position error in a wafer handling device
US6662063B2 (en) * 2000-05-16 2003-12-09 Gsi Lumonics Corporation Method and subsystem for determining a sequence in which microstructures are to be processed at a laser-processing site
US8135567B2 (en) * 2000-09-29 2012-03-13 Ford Global Technologies, Llc Method of emulating machine tool behavior for programmable logic controller logical verification system
US7017373B2 (en) * 2002-09-03 2006-03-28 Owens-Brockway Glass Container Inc. Glassware forming machine control system
US6828522B2 (en) * 2002-10-18 2004-12-07 Tol-O-Matic, Inc. Adaptable servo-control system for force/position actuation
US7120327B2 (en) * 2002-11-27 2006-10-10 International Business Machines Corporation Backplane assembly with board to board optical interconnections
TWI282047B (en) * 2003-07-23 2007-06-01 Murata Machinery Ltd Carrying vehicle system and carrying vehicle
US7246023B2 (en) * 2004-01-26 2007-07-17 Ranko, Llc Flexible process optimizer
TWI290272B (en) * 2004-03-12 2007-11-21 Murata Machinery Ltd Moving body system
DE102004023848A1 (en) * 2004-05-13 2005-12-08 Siemens Ag Data carrier with a control file stored on the data carrier for a control device for a machine and associated method and device
US7346478B2 (en) * 2004-09-21 2008-03-18 Ford Motor Company Method of embedding tooling control data within mechanical fixture design to enable programmable logic control verification simulation
US20070005158A1 (en) * 2005-06-30 2007-01-04 Kabushiki Kaisha Yaskawa Denki Web based controller
JP3119701U (en) * 2005-11-25 2006-03-09 キタムラ機械株式会社 Machine Tools
US7308327B2 (en) * 2006-05-12 2007-12-11 Ford Motor Company Method of application protocol monitoring for programmable logic controllers
WO2008012884A1 (en) * 2006-07-26 2008-01-31 Mitsubishi Electric Corporation Numeric value control device
US7742833B1 (en) 2006-09-28 2010-06-22 Rockwell Automation Technologies, Inc. Auto discovery of embedded historians in network
US7672740B1 (en) 2006-09-28 2010-03-02 Rockwell Automation Technologies, Inc. Conditional download of data from embedded historians
US8181157B2 (en) * 2006-09-29 2012-05-15 Rockwell Automation Technologies, Inc. Custom language support for project documentation and editing
US7913228B2 (en) * 2006-09-29 2011-03-22 Rockwell Automation Technologies, Inc. Translation viewer for project documentation and editing
US7933666B2 (en) * 2006-11-10 2011-04-26 Rockwell Automation Technologies, Inc. Adjustable data collection rate for embedded historians
US7974937B2 (en) * 2007-05-17 2011-07-05 Rockwell Automation Technologies, Inc. Adaptive embedded historians with aggregator component
ES2330909B1 (en) * 2007-05-28 2010-09-21 Airbus Operations, S.L. EXECUTION SYSTEM OF AUTOMATIC DRILLING / RIVING IN AERONAUTICAL MOUNTING PARTS.
EP2031472B2 (en) 2007-08-30 2020-05-06 Robert Bosch GmbH Device for operating a machine
US7930639B2 (en) * 2007-09-26 2011-04-19 Rockwell Automation Technologies, Inc. Contextualization for historians in industrial systems
US7930261B2 (en) 2007-09-26 2011-04-19 Rockwell Automation Technologies, Inc. Historians embedded in industrial units
US7917857B2 (en) 2007-09-26 2011-03-29 Rockwell Automation Technologies, Inc. Direct subscription to intelligent I/O module
US7809656B2 (en) * 2007-09-27 2010-10-05 Rockwell Automation Technologies, Inc. Microhistorians as proxies for data transfer
US7962440B2 (en) 2007-09-27 2011-06-14 Rockwell Automation Technologies, Inc. Adaptive industrial systems via embedded historian data
US7882218B2 (en) * 2007-09-27 2011-02-01 Rockwell Automation Technologies, Inc. Platform independent historian
US20090089671A1 (en) * 2007-09-28 2009-04-02 Rockwell Automation Technologies, Inc. Programmable controller programming with embedded macro capability
US8688258B2 (en) * 2008-09-11 2014-04-01 Rockwell Automation Technologies, Inc. Method of controlling a machine tool
US9377597B2 (en) * 2010-06-02 2016-06-28 Commscope Technologies Llc Aggregator for a switch rack system
DE102011007183A1 (en) * 2011-04-12 2012-10-18 Wafios Ag Method and system for programming the control of a multi-axis forming machine and forming machine
US9334936B2 (en) 2013-04-18 2016-05-10 Tolomatic, Inc. High stiffness thrust component for linear actuator
US9885845B2 (en) 2015-01-15 2018-02-06 Commscope, Inc. Of North Carolina Module and assembly for fiber optic interconnections
JP6309927B2 (en) * 2015-09-16 2018-04-11 ファナック株式会社 Numerical control device with automatic trace function of related signals linked with NC program operation
USD816048S1 (en) 2016-02-05 2018-04-24 Atlas Copco Industrial Technique Ab Tool controller unit
USD826180S1 (en) 2016-02-05 2018-08-21 Atlas Copco Industrial Technique Ab Tool controller unit
USD815051S1 (en) * 2016-02-05 2018-04-10 Atlas Copco Industrial Technique Ab Tool controller unit
USD816047S1 (en) * 2016-02-05 2018-04-24 Atlas Copco Industrial Technique Ab Tool controller unit
USD814425S1 (en) * 2016-02-05 2018-04-03 Atlas Copco Industrial Technique Ab Tool controller unit
US11925996B2 (en) 2018-11-27 2024-03-12 Tolomatic, Inc. Integrated guide linear actuator system
USD924178S1 (en) * 2019-04-05 2021-07-06 Atlas Copco Ias Uk Limited Rivet delivery cube
US11754157B2 (en) 2020-05-20 2023-09-12 Tolomatic, Inc. Integrated motor linear actuator
RU2768807C1 (en) * 2021-05-14 2022-03-24 Федеральное государственное автономное образовательное учреждение высшего образования "Уральский федеральный университет имени первого Президента России Б.Н. Ельцина" Device for counting the movements of the working body of a machine with a drive screw

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3727191A (en) * 1971-03-15 1973-04-10 Giddings & Lewis Acceleration-deceleration for numerical control
IN144765B (en) * 1975-02-12 1978-07-01 Rasmussen O B
US4038533A (en) * 1976-09-29 1977-07-26 Allen-Bradley Company Industrial control processor system
US4228495A (en) * 1978-12-19 1980-10-14 Allen-Bradley Company Multiprocessor numerical control system

Also Published As

Publication number Publication date
US4510565A (en) 1985-04-09

Similar Documents

Publication Publication Date Title
CA1203869A (en) Pc with intelligent positioning i/o modules
CA1102433A (en) Industrial control processor system
CA1099025A (en) Programmer unit for n/c systems
Landers et al. Reconfigurable machine tools
CA1099000A (en) Numerical control system with downloading capability
EP0717866B1 (en) Cnc control system
WO1989009961A1 (en) Network programmable logic controller system
US5563484A (en) Three-dimensional cutter compensation system
Martinov et al. Specialized numerical control system for five-axis planing and milling center
CN106886197B (en) Method for controlling machine to implement machining, device and application thereof
Kovalev et al. Approach to assessing the possibility of functioning of CNC and PAC systems on various software and hardware platforms
CN106886195B (en) Machining control method, device and application thereof
Kim et al. Dependence of machining accuracy on acceleration/deceleration and interpolation methods in CNC machine tools
Yusof et al. Frame work of LV-UTHM: an ISO 14649 based open control system for CNC milling machine
Proctor et al. Open architectures for machine control
CN106886196A (en) With the computer-aided manufacturing method and device and system of digital control system Direct Communication
Limón-Molina et al. Proposes to enable a CNC mill from 3 axes to 5 axes synchronized
Nikishechkin et al. Practical aspects of constructing a specialized control system for compact machines
CN101169659A (en) Control system integrated test set
RU2747243C1 (en) Automatic control system of process units
Weck Development and application of a flexible, modular monitoring and diagnosis system
Zwoll et al. Direct numerical control of machine tools in a nuclear research center by the CAMAC system
Ajit et al. Advanced CNC system using multibus compatible hardware and portable software
Katupitiya et al. Implementation of a PC Based Controller for a PUMA Robot
Wightman Developments in computer control systems for machine tools

Legal Events

Date Code Title Description
MKEX Expiry