WO1991007214A1 - Automatic force generating and control system - Google Patents

Automatic force generating and control system Download PDF

Info

Publication number
WO1991007214A1
WO1991007214A1 PCT/US1990/006481 US9006481W WO9107214A1 WO 1991007214 A1 WO1991007214 A1 WO 1991007214A1 US 9006481 W US9006481 W US 9006481W WO 9107214 A1 WO9107214 A1 WO 9107214A1
Authority
WO
WIPO (PCT)
Prior art keywords
force
control
user
control system
automatic
Prior art date
Application number
PCT/US1990/006481
Other languages
French (fr)
Inventor
Christopher W. Walker
Michael M. Szafranski
Thomas D. Guinther
Lee Hampton
Steven E. Sarns
Steven R. Frank
Steven R. Wheeler
Original Assignee
Walker Fitness Systems, Inc.
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
Priority to US43562789A priority Critical
Priority to US435,627 priority
Application filed by Walker Fitness Systems, Inc. filed Critical Walker Fitness Systems, Inc.
Publication of WO1991007214A1 publication Critical patent/WO1991007214A1/en

Links

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B24/00Electric or electronic controls for exercising apparatus of preceding groups; Controlling or monitoring of exercises, sportive games, training or athletic performances
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B21/00Exercising apparatus for developing or strengthening the muscles or joints of the body by working against a counterforce, with or without measuring devices
    • A63B21/008Exercising apparatus for developing or strengthening the muscles or joints of the body by working against a counterforce, with or without measuring devices using hydraulic or pneumatic force-resisters
    • A63B21/0083Exercising apparatus for developing or strengthening the muscles or joints of the body by working against a counterforce, with or without measuring devices using hydraulic or pneumatic force-resisters of the piston-cylinder type
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B2220/00Measuring of physical parameters relating to sporting activity
    • A63B2220/10Positions
    • A63B2220/13Relative positions
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B2220/00Measuring of physical parameters relating to sporting activity
    • A63B2220/50Force related parameters
    • A63B2220/51Force
    • A63B2220/53Force of an impact, e.g. blow or punch
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B2225/00Other characteristics of sports equipment
    • A63B2225/72Means preventing unauthorised use, e.g. by lowering a tennis net
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B2230/00Measuring physiological parameters of the user
    • A63B2230/01User's weight
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B2230/00Measuring physiological parameters of the user
    • A63B2230/04Measuring physiological parameters of the user heartbeat characteristics, e.g. E.G.C., blood pressure modulations
    • A63B2230/06Measuring physiological parameters of the user heartbeat characteristics, e.g. E.G.C., blood pressure modulations heartbeat rate only
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B2230/00Measuring physiological parameters of the user
    • A63B2230/04Measuring physiological parameters of the user heartbeat characteristics, e.g. E.G.C., blood pressure modulations
    • A63B2230/06Measuring physiological parameters of the user heartbeat characteristics, e.g. E.G.C., blood pressure modulations heartbeat rate only
    • A63B2230/062Measuring physiological parameters of the user heartbeat characteristics, e.g. E.G.C., blood pressure modulations heartbeat rate only used as a control parameter for the apparatus
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63BAPPARATUS FOR PHYSICAL TRAINING, GYMNASTICS, SWIMMING, CLIMBING, OR FENCING; BALL GAMES; TRAINING EQUIPMENT
    • A63B24/00Electric or electronic controls for exercising apparatus of preceding groups; Controlling or monitoring of exercises, sportive games, training or athletic performances
    • A63B24/0075Means for generating exercise programs or schemes, e.g. computerized virtual trainer, e.g. using expert databases

Abstract

An automated force generation and control system (10) that automatically sets force in accordance with user programmed criteria and provides visual and audio feedback, motivation and safety control. The automatic control system (10) also provides a user with a customized force as it has been specified by pre-selected force/position profiles and stored data of a user's past performance.

Description

AUTOMATIC FORCE GENERATING AND CONTROL SYSTEM

BACKGROUND OF THE INVENTION

This invention relates to an automatic force generating and control system and, in particular, an electronic hardware and software control system for an automatic force generating system.

As exercise is becoming an increasingly important part of our daily routine, the demand for quality exercise machinery has become more pronounced. A particular focus for this demand centers on weight lifting machines that enable a user to achieve a total workout in a small amount of space.

Because many users have a limited amount of space in their own homes or apartments or, for that matter, at their exercise facilities, those users must be concerned with locating as much equipment as possible into smaller spaces. The attainment of these objectives poses certain problems when examining currently available exercise devices.

First, the compact designs, such as stacked-weight systems, employ cable connected weights that move along rails or bars. When more than one user is exercising, however, the weights will often drop suddenly causing the device to jerk and move. Those movements in the weights will often disturb the concentration of others, and occasionally result in injuries.

An additional disadvantage of stacked-weight systems is their lack of flexibility. Each station in such a device is primarily restricted to one or possibly two exercises. To work out the entire body, therefore, a user must rotate around to multiple stations. A total workout thus requires between eight to ten changes of location. To pace his/her workout accordingly, the user must be assured that the stations remain free. When the universal machine is crowded with multiple users, such a workout can be dif¬ ficult, if not impossible.

A further problem with stacked-weight systems is the generation of force on the return stroke. Stacked and free weight systems do not allow the return force to be set substantially higher than the force setting for the initial stroke. However, the muscoskeletal system yields more effective results from the point of strength gain when a higher force setting is set on the return stroke. Accordingly, conventional resistance machines using dead weights have an inherent design deficiency from the perspective of exercise efficiency.

A further disadvantage to the present weight lifting systems is their lack of personalized control. With the advent of computers and electronic control systems, there exists a need for a progressive resistance system that can store the force profiles of its users and tailor the exercise routines in accordance with those profiles. Thus, the person who wishes to use a machine for keeping count of his or her repetitions, for calculating a progressively challenging exercise regimen, or for visually and audibly prompting his/her exercises, can be served by a machine that takes advantage of these technologies. An additional need of users of weight lifting systems is motivation. Over the course of a workout, the user needs a way to set exercise goals and receive motivational feedback messages. Goals take the form of allowing the user to set work-out targets that are both short term and long term in nature. Feedback can include visual indications of the workout that allow the user to track his/her range of motion, clock the length of the workout, and provide cumulative ratings of the exercise results. Feedback also can include audio motivation such as counting repetitions, audio precautions, printouts of various exercise related data, and congratulatory statements.

A further disadvantage of the current exercise equipment is their lack of ability to customize the start and finish of an exercise stroke to the physical properties of the user. Specifically, the current machines are designed for one individual of a particular size. Larger individuals may be cramped while smaller individuals may be strained and perhaps totally unable to position themselves properly with respect to the equipment. Further, the start point for each exercise cannot be varied. Thus, each user is required to start the exercise stroke at the same start point regardless of whether this start point is comfortable. This enforced uniformity may injure or unnecessarily tire the user because the user may be required to exercise during some portion of the stroke which is not appropriate for the user's particular physique. Conventional weight machines do not allow the user to configure the machine to his/her individual physique and move the equipment under minor resistance to the start position most comfortable to the user before initiating resistance to movement.

Finally, there is an important need to provide safety for the exerciser. A free weight system relies on an extra person to "spot" the weight lifter. If the user is alone, however, he often risks injury. Thus, a need exists for a system that contains safety features without demanding the presence of an extra person. Moreover, there is a need for a safety device which prevents children or unauthorized people from using the system without permis¬ sion.

SUMMARY AND OBJECTS OF THE INVENTION

In view of the foregoing, it should be apparent that there still exists a need in the art for an automatic force generating and control system comprising a compact, multipurpose design served by an automatic control system that automatically sets exercise forces in accordance with user-preprogrammed criteria, and for providing visual, printed and audio feedback, motivation and safety control during an exercise routine. It is, therefore, a primary object of this invention to provide for an automatic control system that calculates and notifies the user of workout related information and that determines that user's abilities through stored force profiles. The system translates those profiles into force resistance levels in accordance with that user's present exercise goals and past exercise performances.

It is a further object of this invention to provide a compact force generating system that allows a user to perform multiple exercises in a compact area. It is an additional object of this invention to provide a compact force generating system which allows a user to undergo a variety of exercises, including entire body workouts, cardiovascular workouts, strength related workouts, in a single device.

It is yet another object of the invention to provide a force generation and control system where the end users' initial and return strokes can be profiled based upon the users' abilities in order to provide efficient controlled variable resistance in those strokes.

It is yet an additional object of the invention to provide an automatic force generation and control system where the system keeps count of the user's strokes, calculates a progressively challenging regimen and visually and audibly prompts the user during the exercises.

It is still another object of the invention to provide an exercise system that provides the user with motivational feedback. The motivational feedback can take the form of providing the user with programmed goals. Feedback can also take the form of visual and/or audible and printed indications that allows the user to track his or her exercise, clock the length of that exercise and rate the exercise results. Feedback can also include audio mes¬ sages such as counting, providing precautionary messages or congratulatory statements.

It is yet a further object of the invention to provide for a force generating system for use in medical systems, robotics, or weight measurement. It is an additional object of the invention to provide an automatic force generation system where built-in safety features are provided. Those features include safety automated switches which will stop the system during use.

It is a further object of the invention to provide an automatic force generating system that calculates an amount of force corresponding to the level of difficulty selected by the user.

It is still a further object of the invention to provide a force calculating means which varies the force level in correspondence with a force profile selected by the user.

It is an additional object of the invention to provide for a programming device which includes a display for displaying exercise information.

It is yet an additional object of the invention to provide various exercise programs which enable the user to exercise at an aerobic pace; allow a user to develop their strength; allow the user to pre-program a series of routines oriented to develop a balanced workout; or which allow the user to perform exercises in an arbitrary sequence.

It is still an additional object of the invention to provide for a weight stack simulation device which provides visual feedback of the user on the position of the exercise device in relation to the top and bottom of the users' stroke regardless of where the users' stroke begins.

It is yet a further object of the invention to provide an audio output which provides a user with either spoken word or sentence feedback or audio tones during the course of exercise.

These objects are provided for in an automatic force control system which includes a force generating device, an exercise device connected to the force generating device, a program device for setting the amount of force and a control device for automatically controlling the force generating device and exercise device based upon weight and position settings.

These objects are further realized in an automatic weight lifting system which consists of a programming means for selecting a level of difficulty, a calculating means for determining the amount of force corresponding to the level of difficulty and a control means for automatically setting and maintaining the amount of force corresponding to the level of difficulty, so that a user of the force generating system can control the level of difficulty of exercise automatically without physically changing the force level. The calculating means can also determine the amount of force and the positions of exercise bars based on information from the programming means and can then automatically control the amount of weights during the use of the automatic force generating system.

The present invention is further realized in a control system for applying a force on a controlled object according to a force profile. A measurement device is used for measuring an actual position of the controlled object and an actual force is applied to the controlled object. A selector is then used for selecting a requested force from the force profile according to an actual position of the controlled object. A controlling loop is used to calculate a modified gross output value so that when the controlled object is far away from an end position requested, the modified gross value derives the actual force towards the requested force. When the controlled object is near an end position, the modified gross value is then driven to zero. This control system also includes an output device for then applying the force on the controlled object by driving valves according to the modified gross output value.

Finally, the present invention is realized in a control system for applying a force on a controlled object where load cells are used for measuring an actual force on a controlled object, potentiometers measure an actual position of the controlled object, a multiplexer processes actual force and actual position signals from the load cell and potentiometer and an A/D converter then digitizes the actual forces and actual position signals. A microprocessor is used to receive the actual force and actual position signals and select the requested force from a force profile according to the actual position signals. The microprocessor then determines a modified gross output value, whereby digital-to-analog converters then convert the modified gross output value to an analog value. That value is provided to at least one valve driver for applying a force on the controlled object. With these and other objects, advantages and features of the invention that may become hereinafter apparent, the nature of the invention may be more clearly understood by reference to the following detailed description of the invention, the appended claims and to the several drawings attached herein.

BRIEF DESCRIPTION OF THE DRAWINGS

FIGS, la, lb and lc are isometric views of the automatic force generating and control system forming the present invention;

FIG. 2 is a front perspective view of the front control panel for the force generating and control system;

FIG. 3 is a view of the MASTER screen display of the present invention;

FIG. 4 is a view of the SETUP screen display of the present invention;

FIG. 5a is a view of the STRENGTH screen display of the present invention;

FIG. 5b is a view of the CIRCUIT screen display of the present invention;

FIG. 6 is a front view of the AEROBIC screen display of the present invention;

FIG. 7 is a view of the TONING screen display of the present invention; FIG. 8 is a block diagram representing the control hardware configuration of the present invention;

FIG. 9 is a block diagram of the main system control board of the present invention;

FIGS. 10A-10F are circuit schematic diagrams of the main system control board shown in FIG. 9;

FIG. 11 is a block diagram of the hardware and peripheral interface arrangement of the front control panel board for the present invention;

FIG. 12 is an electronic circuit schematic diagram of the first peripheral interface of the front control panel board shown in FIG. 11;

FIGS. 13A-13B are electronic circuit schematic diagrams of the LED matrix arrangement of the front control panel board shown in FIG. 11;

FIG. 14 is an electronic circuit schematic diagram of the second peripheral interface of the front control panel board shown in FIG. 11;

FIG-. 15 is a schematic diagram representing the map for the LED and LCD displays of the front control panel board shown in FIG. 11;

FIG. 16 is a block diagram of the hardware arrangement for the digital speech board of the present invention;

Figure imgf000012_0001
FIGS. 17A-17D are electronic circuit schematic diagrams of the digital speech board shown in FIG. 16;

FIGS. 18A-18D are block diagrams of the hardware arrangement of the hydraulic actuator control board for the present invention;

FIGS. 19A-19B are electronic circuit schematic diagrams of the hydraulic actuator control board shown in FIG. 18A;

FIGS. 20A-20C are electronic circuit schematic diagrams of the hydraulic actuator control board of FIG. 18A;

FIG. 21 is a block diagram of the low voltage power distribution circuit of the present invention;

FIGS. 22A-22B are electronic circuit schematic diagrams of the power distribution system shown in FIG. 21;

FIG. 23 is an electronic circuit schematic diagram of the five (5) volt DC converter circuit of the power distribution system of FIG. 21;

FIG. 24 is an electronic circuit schematic diagram of the of the fifteen (15) volt DC converter of the power distribution circuit of FIG. 21;

FIG. 25 is a block flow diagram illustrating the software arrangement for the present invention;

FIG. 26 is a function block flow diagram of the program for the main system control board of FIG. 9;

(SAΛJS FIG. 27 is a flow diagram showing the overall flow of the main system control board program of FIG. 26;

FIGS. 28A-28B are flow charts illustrating the status, testing power-up subroutines used in the message handling routine of FIG. 27;

FIGS. 29A-29B are flow charts showing the message cycling and sending subroutines used in the message handling routine of FIG. 27;

FIG. 30 is a flow diagram of the message handling architecture of the present invention;

FIGS. 31A-31D are block flow diagrams of the front control panel program for the front control panel board of FIG. 11;

FIG. 32 is a function block flow diagram of the hydraulic actuator control program for the hydraulic actuator control board of FIG. 18;

FIG. 33 is a functional flow diagram of the hydraulic actuator controller message handling and outer shell blocks shown in FIG. 32;

FIG. 34 is a flow diagram showing the initialization/message handling subroutine used in the hydraulic actuator control program of FIG. 32;

FIG. 35 is a flow diagram illustrating the top level message loop of the hydraulic actuator control program of FIG. 32; FIG. 36 is a flow diagram showing the initialization subroutine of the hydraulic actuator control program of FIG. 32;

FIG. 37 is a flow diagram of the force profiling routine for the hydraulic actuator control subroutine of FIG. 32;

FIG. 38 is a flow diagram of the interpolation subroutine used in the force profiling routine of FIG. 37;

FIG. 39 is a flow diagram of the calculating percentage of stroke subroutine used in the force profiling routine of FIG. 37;

FIG. 40 is a flow diagram illustrating the force profile table generating subroutine for the hydraulic actuator control program of FIG. 32;

FIG. 41 is a flow diagram of the section generating subroutine used in the force profile table subroutine of FIG. 40;

FIG. 42 is a flow diagram illustrating the routine for calculating the current stroke length used in the calculating stroke subroutine for FIG. 39;

FIG. 43 is a flow diagram showing the calculating maximum stroke length subroutine used in the calculating stroke subroutine of FIG. 39; FIG. 44 is a block flow diagram showing the PICD control algorithm for the force and position controls of the hydraulic actuator control program shown in FIG. 32;

FIG. 45 is a block flow diagram of the digital speech control program for the digital speech board shown in FIG. 16;

FIG. 46 is a flow diagram of the digital speech board calling routine used in the digital speech board program of FIG. 45;

FIG. 47 is a flow diagram of the queueing up speech request subroutine used in the calling routine of FIG. 46; and

FIG. 48 is a detailed flow diagram of the interrupt subroutine used in the digital speech board program of FIG 45.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

A. Force Generation Control System Overview 1. Introduction - The Device

Referring now in detail to the drawings wherein like parts are designated by like reference numerals throughout, there is illustrated in FIGS. 1A-1C isometric views of the automatic force generation and control system 10 forming the present invention. As shown in FIG. IA, the parts of the system 10 consist of the five main subassemblies: an exercise bench and seat 12, a leg, abdomen and lower back bar 14 (hereafter "leg bar 14") , an arm bar 16, a monolith 19 and a base 30. As shown in more detail in FIG. IB, the arm bar 16 further includes first portions 16a and 16b and handles 17a and 17b. The present invention is directed to the force generation and control system for these subassemblies. Details regarding the movement of the arm bars 16, the handles 17a, and 17b, the bench 12, and the leg bar 14, are set forth in applicants' co-pending U.S. Patent Application Serial No. 07/839,932, entitled "Automatic Force Generating and Control System", Attorney Docket No. W1055.008, filed on Novembe3, 1989, U.S. Patent Application Serial No. 07/436,191, entitled "Automatic Force Generating and Control System", Attorney Docket No. W1055.009, filed on November 13, 1989, and U.S. Design Patent Application entitled "Automatic Force Generating and Control System", Attorney Docket No. W1055.007, and filed on November 13, 1989, which are incorporated herein by reference. To the extent necessary, those incorporated applications will be referred to in the context of the ensuing description.

Referring now to FIG. IB, a cut-away isometric view of the system 10 is shown along with a control kiosk 28 located near one end of the bench 12 is a control pod 29. The control pod 29 is connected to an electronic control system, housed in box 22. Briefly, the electronic control system 22 consists of three subsystems: a main control computer system (hereafter "SYSCON") , a hydraulic force generation control system (hereafter "HAC") and a digital speech system (hereafter "DSB") . The details of each of these systems, in addition to the control pod 29, form part of the subject matter of this application.

In addition to the control pod 29, the user controls the movements of the arm bar 16 through set/start/ next switches 22a, 22b located respectively on the handles 17a, 17b and solenoid activated mechanical release switches 21a, 21b and 21c. Details regarding switches 21a-21c are provided in applicants' co-pending applications noted above.

Each of the set/start/next switches 22a, 22b are respectively wired to the control system 22 via dashed lines 23a, and 23b. Safety control is available through an emergency stop button 24 provided on the underside of the "T" shaped member 15.

Also, the control pod 29 includes, a front control panel 20 and a printer located adjacent printer door 20a to which the paper slot 26 allows the exit of paper from the printer. A paper advance button 27 is located adjacent the printer.

Located in monolith 19 is the power supply box 25. The box includes all power transformers, batteries for RAM backup and appropriate power converter boards. Those elements in box 25 will be discussed in further detail below. Access to the power supply box 25 and the control system box 22 is obtained by removing a cover panel 19a from the monolith frame 19. The mounting assembly for panel 19a is designed for easy access to the electrical subsystems housed in box 22 and the power supply elements in box 25.

Referring to FIG. IC, the exercise device 10 includes a base 30 and a switch sub-assembly 32 which provides security against unauthorized power-up of the device 10. The switch subassembly is shown in more detail in FIG. IA. The switch includes an on-off toggle switch 33 and a key controlled lock cylinder 34, electrically connected to disable the user interface on control pad 29. The on/off switch 33 contains an internal circuit breaker.

The electronic control system 22 is also connected to several external control devices which will be further described in more detail. These devices include a control kiosk 28 which provides supplemental control and accessories to control system 22. The accessories can include, for example, a home-entertainment system, a time/ billing accounting system, extra printers and medical equipment (e.g. pulse monitors, a smart card reader or a floppy disk drive) . Any other auxiliary equipment can be included depending upon the application that the force control/generating system is used for.

The electronic control system 22 also is linked to a local area network (not shown) and to an external computer. Both the local area network and external computer can be linked to device 10 through the kiosk 28. Details of the external devices are described below in the hardware section.

The following detailed description is organized from the standpoint of the user and the system designer. Accordingly, this description will begin with a description of the user interfaces: the front control panel ("FCP") (FIG. 2) of the control pod 29, the user screen displays (FIGS. 3-7) and print-outs. The next section will describe the hardware arrangement of the present invention (FIGS. 8- 24) and then the software arrangement (FIGS. 25-48) ; the

/US _ description will then conclude with a discussion of the operation of the system.

2. The Front Control Panel

FIG. 2 is a front view of the front control panel 20 of the control pod 29 of FIG. IB. The front control panel 20 is organized into three portions: the screen display area 40, a keyboard area 50 and a stroke force light bar 58.

The screen area 40 consists of an LCD (Liquid Crystal Diode) display. The selected screen must provide easy to read information at a specified distance and within a specified angle to the user. Other types of screens such as LED's (light emitting diodes) , plasma-discharge displays or CRT's (cathode ray tubes) can be used in place of the LCD. Also, if necessary, information can be moved off of the display panel and onto separate LED display elements in order to represent independent functions. For example, timer or user numbers can each be separately displayed adjacent to the screen 40. In addition to the LCD 40, an external CRT or other suitable display device can be used.

The keyboard area of the control panel 50 consists of several groups of LED-lighted keys. The control is constructed of an overlay and as an alternative, can be color-coded. The switches selected for the control panel are moisture, temperature and dust resistant.

The main elements of the control panel 50 include the following buttons: POWER ON/OFF 52, PRINTOUT AT END 53, PAUSE 54, END WORKOUT 56, PROGRAM 60, ROUTINE 70, AUDIO 80, SELECT 90, ENTER 92 and SET START/NEXT 94. As previously described with reference to FIG. 1, the SET/ START/NEXT button 94 also appears on the device 10 at the end of each handle 22a, 22b. All three buttons 22a, 22b and 94 operate identically.

In addition to the buttons, a plurality of Programs, Routines and Audio functions are each represented by lighted LED's. In particular, the Programs include the LED's representing STRENGTH 62, DUAL 64, CIRCUIT 66, AEROBIC 68 and TONING 69 programs, the Routines include the LED's for Routines A 72, B 74, CUSTOM 76, FREESTYLE 77 and CASUAL 78; and the Audio functions are represented by the LED's TOTAL 82, PARTIAL 84, TONES 86, NO AUDIO 87 and VOLUME 88.

All alphanumeric data will be entered into the system through the select keys 90 by use of the up and down keys 91a, 91b. Cursor positions are further controlled by the left and right direction keys 91c and 9Id. The select keys 90 are operated in conjunction with the ENTER button 92 as will be described in more detail later. As an alternative, an external standard-type computer keyboard or any other input device can be used.

Before describing the particular operations of the elements of the FCP 20, a few introductory remarks are necessary. From a software standpoint, the FCP 20 operates in conjunction with the FCP Operating System (OS) and a program called the user interface editor (Editor) . In particular, the system buttons (52, 53, 54, and 56) are monitored by the OS and it is the responsibility of the OS to handle major transitions represented by these functions. The Editor operates in conjunction with the FCP software functions described below. Details regarding the OS and the Editor are provided in the FCP software section (FIGS. 31A-31D) .

A second introductory matter concerns the significant software/hardware phases in which the device 10 operates. The first phase is known as "the A/C power-off" phase. In this phase the system is entirely shut down. The second phase is the "soft power-off" phase. In this phase the system runs in the background while, the user is unaware that the system is activated. The third phase is the "soft power edit" phase. In this third phase, the user is in the edit mode and is entering preliminary information into the system. However, the moveable parts of the system 14 and 16 are not operable. In the fourth phase, the "soft power on exercise" phase, the user is able to use all features of the system including the movable elements.

The power phases operate in conjunction with an automatic "power source" countdown feature. After a prolonged period of inactivity on KEYPAD 50 or exercise bars 14, 16, the machine will power-down to the "soft power off" phase. During the thirty minute inactive period, audio prompting is produced to remind the user that the machine 10 is on, but not being used. Additionally, the PAUSE LED 54a will continually blink. Prompting occurs at five minute intervals until the last 5 minutes (25 minutes elapsed time) . At that point, the audio prompts are provided every minute and then every 2-3 seconds for the last 30 seconds.

Referring to the buttons in FIG. 2, the POWER ON/ OFF button 52 is located in the upper left corner of the keyboard 50 in a position where it will not be accidentally hit when an operator presses the surrounding buttons. The button 52 includes an associated LED element 52a. As an alternative, button 52, as well as any other buttons, can be color-coded to logically match its function.

In operation, the LED 52a remains on when the button 52 is first depressed. If the machine- is not used for 30 minutes, the FCP software, to be described later, will automatically turn the device off. All data for the current exercise session will then automatically be stored in the control system 22 (FIG. 1) when the power is turned off.

The button 52 operates the software so that when it is first depressed, the button seems to cause the system to power up. However, 32 turns on and actual power-up begins when the main power switch 33 is activated. The button 53 therefore operates the "soft power edit" phase of the device 10. In operation, when the "soft power" is turned on, the OS monitors the POWER ON/OFF button 52 waiting for a state change. When the button 52 is first pressed on, therefore, the OS recognizes that the user wishes to use the machine and thus begins the task of re-initializing user interface related data, activating the FCP key pad 50 and the Editor program. Thus, the button 52 seems to turn on the system to the user.

Upon deactivating button 52, a system "soft" shutdown only occurs, turning off those non-OS software elements related to the FCP 20. The PRINTOUT AT END button 53 activates a small printer (not shown) that is formed integrally in the control pod 29. Although any type of printer may be used, the present embodiment envisions a 24-character thermal printer. An external printer also can be attached to the system via a connection to the kiosk 28 (FIG.l). The PRINTOUT AT END button 53 has two states (ON or OFF) , although the button is always active. When turned ON, but¬ ton 53 informs the OS that it must print a report at the end of the exercise session.

Although the printer is activated when the user is finished with his or her session, the user must first depress the END WORKOUT button 56 or the POWER ON/OFF button 52 in order to receive such printout. In operation, if the PRINTOUT AT END button 53 is turned on and the END button 56 has been pressed, then the machine will print information for the current workout session. A printer register is then automatically cleared and the LCD display 40 moves to a setup screen default (see FIG. 3) for the next user. If the PAUSE button 54 is depressed and 30 minutes have elapsed, or if the POWER ON/OFF button 52 is first actuated and the machine is turned off, then the printer will function in a similar manner as above, as long as it has been previously activated.

Additionally, as part of the power off cycle, the printer output will automatically be deactivated once the printout has occurred. The information contained in the printer register will then be erased except for the normal updates for the user's personal record. However, regardless of how the exercise session is terminated, the OS will check a print-at-end flag. If the flag is set by the button 53, the printer task will be started.

Although the printed report can take a variety of forms, it may come in two basic formats: brief and extended. The brief format, provides an overview of the exercise session and provides totals for the most important statistics. In the extended format, a breakdown is provided at each exercise level. Each exercise that is performed is recorded including all of the relevant exer¬ cise data (e.g., force, reps, time). Each exercise is listed in the order that it was performed and includes all performance data related to that particular exercise. All items listed under the brief mode would also be included. The printout report may, for example, consist of the following information, although it is contemplated that any information in any format would be covered by this invention:

General Stats -

User Name, User Number, Date, Time, Elapsed Session Time, Metabolic Equivalent, Calories, Total Power Rating, Total Work Done, Target Pulse Range.

Exercise Stats -

A list of performed exercises, and pertinent exercise related data, will be stored so that a complete session breakdown can be supplied for record keeping purposes. A record will be stored in the list for each set of each exercise. If an exercise is performed more than once, its data will be stored independently of previous data for the same exercise. The list will be maintained in the same order in which the exercises are performed. The data that makes up a record will vary slightly depending on the program mode.

a. The following data items will be saved for each set of an exercise:

1. User (1 or 2), Exercise Number, Set Number, Initial Force, Return Force, Work Done, Power Rating, Target Time, Target Repetitions and Repetitions Completed, Target Pulse Range.

2. Target time only applies to AEROBIC and TONING modes.

3. Target Reps and Reps Complete does not apply to AEROBIC mode.

4. User (1 or 2) is used to distinguish between the first and second user in DUAL mode.

The PAUSE button 54 is operated when the user wishes to temporarily stop his or her exercise routine. The PAUSE button 54 causes the machine 10 to go into a holding pattern for 30 minutes. The whole system 10, however, does not come to a halt when the PAUSE button 54 is activated. Serial communications with the SYSCON continue and the keypad continues to be monitored. Press¬ ing the PAUSE button 54 a second time before the time period has elapsed restores the machine to normal functionality. The user can then engage or disengage the PAUSE period repeatedly. The time period is controlled by a real time clock located in the control system 22. An elapsed timer on the display will reflect the 30 minute countdown clock status. The clock will re-display the time that was on the clock once the exercise session is restarted. If the leg or arm bars 14, 16 have not been moved within the 30-minute PAUSE period, a power down cycle will automatically occur.

In operation, when the PAUSE button 54 is first pressed, the LED 54a immediately begins blinking on and off at a predefined rate and a tone is emitted. In addition, a series of beeps will be emitted at five-minute intervals for the first 25 minutes of the PAUSE period. During the final 5 minutes of the PAUSE period, a series a beeps will be heard every minute as a final notice to the user that the power-down is about to occur. Additionally, a voice message can be heard. Within the 30-minute PAUSE time frame, a user can resume exercising where he/she left off by simply depressing the PAUSE button 54 a second time.

When in the PAUSE mode, only the POWER ON/OFF 52, PAUSE 54 and PRINTOUT AT END 53 buttons will have any effect. By pressing the POWER ON/OFF 52 the system will enter a "soft power" shut down, while pressing the PRINTOUT AT END 53 will cause a printout of information at the lapse of the 30 minute period or if the above power-down occurs. If the PAUSE mode 54 is interrupted, the printout will oc¬ cur at the end of the exercise session. The PAUSE mode 54 also is activated automatically after 5 minutes of no activity on the device 10. The pause button 54 will begin to blink on and off when the automatic pause mode is entered.

As with all the system buttons, the PAUSE button 54 is always active and is constantly monitored by the OS.

The END button 56 is used to represent the end of an exercise routine by returning the system to its soft- edit power-on state. When the END WORKOUT button 56 is depressed, the LED 56a lights and the system immediately stops calculating forces and other information related to the current exercise routine. Upon releasing the button 56, the LED 56a is turned off. If the PRINTOUT AT END button 53 has already been activated, then upon pressing the END WORKOUT button 56, the machine will automatically start printing results. All current data for the exercises of this session will be stored.

The PROGRAM function button 60 controls the selection of five program modes: STRENGTH 62, DUAL 64, CIRCUIT 66, AEROBIC 68, and TONING 69. Before exercising on the device, a user can select one of the five program modes before selecting a particular routine 70. Otherwise, the system will default to STRENGTH 62. Each of the Program modes has an associated LED which is lit to indi¬ cate that the Program has been selected. Activation is governed by the PROGRAM button 60 so that pressing button 60 multiple times cycles through the five Program modes in the stated order above. Only one of the five LED's will be lit at any given time.

The program button 60 is not operative before the system is initialized. All five LED's will thereby be extinguished until several preliminary events occur.

The first preliminary event is the initialization routine. This happens when the user provides certain initial information to the system. This routine known as SETUP will be described in more detail in FIG. 3.

The second preliminary event is an optional mode known as the DEMO mode. The purpose of the DEMO mode is to create an interest in the device 10 and to introduce the non-user to the machine. The DEMO mode may be used to promote the machine in a selling environment (i.e. retail, direct sales, trade shows) . This mode is stopped by pressing the END WORKOUT button 56, or activating the PAUSE button 54.

Although the main purpose of the DEMO mode is for the promotion of a floor model and not actual use, the DEMO mode must be built for usage, since there can be no control over operation of this feature once the machine is shipped. For safety and simplicity, the DEMO mode will be modular. Thus, if a floor model is sold, a DEMO ROM can be removed, and replaced with a normal ROM. Alternatively the DEMO mode can remain resident in the system memory.

The DEMO mode is accessed by entering "0" in the User Number program code field on the SETUP screen (see FIG. 3) and by then pressing the ENTER button 92. At this point, the DEMO mode begins with a voice introduction. The voice will then introduce the Interactive Trainer and give a brief description of the features and benefits of the machine 10. Then the machine, with the guidance of the voice, will move through various mechanical arm/leg motions of the following exercises. An example of this order is as follows:

1. Bench Press

2. Leg Extension,

3. Abdominal Crunch,

4. Lower Back Extension

However, any combination of movements can be used in this mode. Although the machine (bench, seat, arms, handles, leg device) must be positioned correctly before the DEMO mode begins, these exercises require no interference on the part of the demonstrator. The bench remains in a horizontal position. The arm joint remains in one position (NOTE: The Bench Press will end at the 100% point in range of motion to allow for smooth transition into the lower body exercises.)

Each DEMO exercise can, for example, consist of five stroke repetitions. The DEMO prototype will move automatically at a rate of six seconds per stroke; the force on each exercise will be set for safety reasons at 50 lbs. , and the range of motion is set for the average person. There will be a pause between each exercise for the user to change positions. The user must push the ENTER button 92 to allow the machine to move to the next position. A voice also will instruct the user to get off the machine. The arm/leg device will then automatically move to the new position, and the user will be instructed where to sit for the DEMO mode exercise.

After these preliminary events, the STRENGTH LED 62 will begin to blink on and off (following the SETUP screen described in FIG. 3) . When button 60 is pressed for the first time, the LED 62 will stop blinking, and remain on. A new STRENGTH program screen then appears on LCD 40, and an audio tone is generated.

The STRENGTH program button 62 allows a user to work with selected forces for a given group of desired exercises. The purpose of this mode 62 is to allow users to tone muscles, increase physical strength or simply improve physical fitness by predetermining their exercise's forward and reverse force settings for a given number of repetitions. Details regarding the features and operations of STRENGTH program will be described at more length in FIG. 5A.

The DUAL program button 64 is reserved for situations where two individuals want to work out on the exercise device by alternating turns. The DUAL program button 64 is designed to provide the same benefits as the STRENGTH program 62. When the program 64 is selected, two areas of a display screen will be provided for input regarding each user. When a first user completes his or her set target for the current exercise, the machine will rest for a given time prior based on a countdown timer and the computer will then automatically change the display for that exercise for the second user. If the device 10 is in an activated audio mode (described below) , it will also

ISA/US produce a voice or tone indicating that the machine is ready for the second user.

Although users will be allowed to take alternating turns, they will not have to do exactly the same exercise. The user can bypass a turn that he does not wish to perform by pressing the SSN button 90 and letting it time out. Also, the user can change the selected exercise by altering the exercise number on display screen 40 through the arrow keys 90. As a result, two individuals may still exercise together although performing different exercises.

The CIRCUIT program button 66 is designed for users who want to tone muscles, and/or decrease body fat while obtaining beneficial cardiovascular effects. The CIRCUIT program allows a user to work through a circuit of preprogrammed exercises at a 2/4 second initial/return stroke rate for a preset time period with rest periods set to short time frames. In the preferred embodiment, the rest periods are set at 15-30 second intervals between successive exercises. However, any length of time for the rest period is available.

Forces in the CIRCUIT program will default to a range of approximately 40-80% of the force used in the STRENGTH program 62 dependently on the exercise. This range for the circuit force will default to 40-80% of an initial and return force at the 10 repetition point on a force-reps curve (to be described below) . Both initial and return stroke forces will default to the same 40%-80% range. These will then be stored for successive exercise periods. The AEROBIC program button 68 involves an exercise routine that enables a user to work through a selected number of preprogrammed exercises in order to provide a complete cardiovascular workout. As an example, the preferred number of exercises is 4 to 5 with 4 minutes of repetitions per exercise or 6 to 10 exercises with two minutes of exercise time and minimal rest time between exercises. As such, the AEROBIC program causes the user to maintain a heart rate above certain levels.

To compensate for the fast exercise speed, the force levels for both the primary and return strokes will be set at a default level of 40% (at the 10-repetition point) of the same exercise in the STRENGTH program 64. As a result, the user can aerobically work his/her muscles and heart without significant strength building exertions. As in the CIRCUIT mode, the proportion of forces can be individually modified by the user.

As an alternative, the AEROBIC program 68 can interact with pulse monitoring equipment (not shown) to measure the user's pulse rate. Details of the AEROBIC program are further described with reference to FIG. 6.

The TONING program button 69 is designed for beginning, out of shape (fragile health, weak, or obese) , and elderly exercisers. The purpose of this program is to offer a less strenuous level of exercise than is provided in the STRENGTH, CIRCUIT or AEROBIC programs. In the TONING program, the user resists a slowly moving arm or leg bar 14, 16 of the machine if muscle toning is a goal. Additionally, the user can move with the arm or leg for stretching purposes. The resulting change in muscle tone is dependent on the actual resistance provided by the user.

In operation, for example, the TONING program sets the speed of the arm bar 16 or leg bar 14 at 8 seconds per stroke. The speed can be reset by the user by entering a program code adjustment. The force setting will vary depending on the chosen exercise. If the user exceeds the force of the arm or leg bar, the machine's motion will temporarily stop, until the user reduces his force.

As an alternative, the machine can be programmed to provide an isokinetic response. When the user exceeds his resistance, then the machine will impart an increased force response. The range of motion will be set by pushing the SET START/NEXT buttons at the zero point and also at the 100% point of the stroke. The arm 16 or leg 14 bars will then float at a very light force (as close to zero as possible) while the user is setting the range of motion. After the user sets the 100% point of the stroke, the arm 16 or the leg 14 bar will move back to the zero point. When the arm 16 or leg 14 reaches the zero point, the exercise may begin.

As a safety precaution, arm and leg range-of-motion limitations will be built into the machine for each TONING program 69 exercise.

The ROUTINE button 70 controls selection of five separate routines: A 72, B 74, CUSTOM 78, FREESTYLE 76, and CASUAL 77. Each of the routines has a specific implementation for each program mode. Each of the Routines also controls the exercises available in the device 10. Example of those exercises available in the system are listed below:

1. Abdominal Crunch

2. Abduction

3. Adduction

4. Arm Curl

5. Back Extension

6. Bench Press

7. Bench Pulldown

8. Chin-up

9. Dip

10. Heel Raise

11. Incline Press

12. Incline Pulldown

13. Incline Row

14. Leg Curl

15. Leg Extension

16. Leg Press

17. Leg Raise

18. Lunge

19. Modified Dead Lift

20. One Arm Bentover Row

21. One Arm Curl

22. One Arm Shoulder Press

23. Overhead Tricep Press

24. Rear Leg Lifts

25. Reverse Wrist Curl

26. Seated Dip

27. Seated Lap Pull

28. Seated shoulder Press 29 Shoulder Shrug 30. Side Bend

31. Single Leg Extension

32. Squat

33. Standing Leg Curl

34. Toe Press

35. Tricep Pressdown

36. Underhand Pulldown

37. Upright Row

38. Wrist Curl

However, this list is not exclusive and any other available exercise may be included.

The ROUTINE button 70 selects routines in the same manner as PROGRAM button 60. Accordingly, when the button 70 is pressed, an associated LED to a corresponding Routine lights up.

The first two routines buttons, A 72 and B 74, represent preprogrammed exercise regimens that are designed to allow a user to exercise his or her entire body. The exercises are also logically ordered for fluid changes between exercises. The exercises can be grouped to fit specialized needs such as for rehabilitation, specialized training, or for other applications (e.g., weight measuring or grasping by the device) . The exercises are organized such that the user exercises one group of muscles at a time. The design of the A and B routines also maximizes efficiency in order that the user only needs to make a minimum of adjustments to the bars, and to his/her exercise position. The default values for the routines cannot be modified although the user does not have to follow the default sequence. As an example of the operation of Routines A and B in the TONING mode, the following exercises will be available:

Routine A - Leg Press, Abdominal Press, Lower Back Extension, Shoulder Shrug, Bench Press, Lat Pulldown, Shoulder Press, Triceps Pressdown;

Routine B - Leg Curl, Leg Extension, Abdominal Press, Lower Back Extension, Upright Row, Incline Bench Press, Underhand Pulldown and Shoulder Press.

However, any number of different exercise routines can be used.

The CUSTOM routine 76 makes the electronic control system 22 (FIG. 1) available for users to program individualized workouts. A CUSTOM routine is available for each of the five program modes. By activating the CUSTOM routine 78, each user can create a personalized sequence of exercises. For example, in specialized physical therapy or sports medicine settings, a therapist can pre-select custom-designed workouts for patients. Other potential applications include specialized exercise routines for athletes, or personalized routines for commercial weight lifting studios. The data from each exercise, as well as the sequence of exercises, is then stored in the memory for later use.

The FREESTYLE routine button 77 provides a user with the flexibility to select exercises at random as he moves through a workout. When the FREESTYLE button is pressed, the user can key-in the desired exercise number by using SELECT keys 90. Once the exercise session has been completed, the user can press the END button 56 which allows him/her to either continue the exercise session or to end the workout. All exercise sequence data for the FREESTYLE routine 77 is lost each time the session is completed. However, performance data for each FREESTYLE exercise session 77 is stored in the appropriate STRENGTH CIRCUIT, AEROBIC OR TONING storage area for each exercise. Printouts are available, as in other routines.

The CASUAL routine button 78 offers the same features as the FREESTYLE routine 77, except the exercise data is not stored.

The AUDIO button 80 is used in the device 10 for several purposes including instruction, notification, safety, and motivation. There are two major components of AUDIO 80: the TONES button 86 and the VOICE (represented by the PARTIAL button 84 or TOTAL button 82) .

TONES 86 produces multi-frequency tones that are employed primarily for user notification of the beginning of events or sequences, of the end of events or sequences, and/or for user safety. The following events, for example, provoke an audible TONES 86 response:

EVENT RESPONSE

1. Press any overlay button One tone: short, "E" frequency At 0% range of motion One tone: short, low "C" frequency

At 100% range of motion One tone: short, high "C" frequency

Pause mode; Volume Three tones: short, "E" adjustment frequencies

When goal is surpassed Three chords (or arpeggios run closely together) : dotted quarter note- eighth note-quarter note pattern; chords include low "C"-"E"-"G"-high "C"

For safety/malfunctioning Six tones: long, "C"

IIpII_II QII_IIpII notification "c"-"F"

However, other events also may provoke TONES 86. For example, when a new screen appears, or at the end of a set, exercise or routine. Additionally, a variety of tones for safety or malfunctions can be used so that each signifies a particular condition.

The VOICE represented by the PARTIAL button 84, or TOTAL button 82 is used in five ways: (1) to demonstrate the device 10 in the DEMO mode, (2) to instruct the user how to properly perform each exercise, (3) to insure user safety, (4) to notify users of their place in a workout and, (5) to encourage and motivate users. However, any type of audio message can be programmed into the system.

Examples of voice instructions include cautionary instructions during exercises. For example, the hardware activated by the PARTIAL button 84 can be used to remind users to "not arch your back" during each press or pulldown exercise, to "be careful not to overextend your back" during the back extension exercise, to "rest your elbows on your knees" during the wrist and reverse curl exercises, to "keep your lower back locked" during modified deadlift or to "keep your elbows stationary" during the overhead triceps press. The voice also can for example, notify users of their place in the workout, can announce the set number and the beginning of each set or can notify the user where he is with respect to each goal. Finally, the voice can motivate the user by offering encouragement during an exercise and congratulations at completion of that exercise. Praises such as "you're almost there", "you can do it" or "keep it up" are used to provide such motivation. The user also can be congratulated upon completing a goal or can be provided with positive reinforcement if he fails to complete that goal.

Returning now to the AUDIO button 80, that button is used to select which AUDIO mode will be used during the exercise session. Five LED's are associated with the AUDIO button: TOTAL 82, PARTIAL 84, TONES 86, NO AUDIO 87, and VOLUME 88. The currently lit LED reflects which mode is in use. Pressing the AUDIO button cycles through the five audio feature modes, in the order above, with the sequence repeating. Only one of the five LED's will be on at any given time. Depending on the mode selected, one tone is emitted when the AUDIO button 80 is pressed.

The default audio button is TOTAL 82. When a soft- edit start occurs, the TOTAL LED 82 will be lit, and the others extinguished.

The hardware activated by the TOTAL button 82 provides audio verbal instructions on exercise positions and safety reminders, notification of a users' place in a workout, motivational and encouraging phrases, as described above, along with the above-noted tones.

The functions represented by the PARTIAL audio button 84 include critical safety precautions, notification of the halfway point in a set, and counting reps and tones. This mode is similar to TOTAL audio, but with fewer verbal messages.

The TONES mode 86, as previously described uses tones without voice.

The NO AUDIO mode 87 eliminates the use of sound, although the system could override this in an emergency situation.

The VOLUME mode 88 allows the user to set the volume level in each of the aforementioned audio modes, except NO AUDIO 87. The audio value for each exercise in mode 88 also is saved for use in future exercise sessions. To use the VOLUME mode 88, the user presses the Up and Down select keys 91a, 91b to adjust the volume after selection of this mode. As noted, a tone will then be heard about every half second to indicate the current volume level. The user may choose from ten discrete volume levels, the lowest of which should be barely audible. If the user wants no volume, he must select the NO AUDIO mode 87.

When the user selects the VOLUME mode 88, three elements appear on the LCD screen 40, the word "AUDIO", an up arrow and a down arrow. All three elements are initially lit, with both of the arrows blinking. The blinking arrows remind the user which key(s) are used to adjust the volume.

When the volume reaches the lowest setting, the down arrow disappears and the up arrow appears from the LCD 40, indicating that there are no lower volume settings. When the volume reaches the highest setting, the up arrow disappears and the down arrow appears from the LCD, indicating that there are no higher volume settings.

A further option in the AUDIO mode 80 is the Constant Audio setting. This option is activated by set¬ ting a program code digit in the USER NUMBER field (FIG. 3) . The Constant Audio mode allows the user to 'lock in' a specific audio setting and volume. However, other alternatives (e.g. programmed audio messages) are available through the program code.

The AUDIO button is always available, except when the PAUSE button 54 has been pressed to activate the PAUSE mode.

The keyboard also includes the SELECT keys 90, the ENTER button 92 and the SET START/NEXT button 94 which control a variety of keyboard entry and editing functions. Each of these keys is described below.

The SELECT keys 90 enable the user to enter alphabetic, numeric and punctuation information by depressing "up" key 91a, "down" key 91b "left" key 91c and "right" key 9Id. In operation, the use of these keys is interpreted by the User Editor program, and provides the user with a way to manipulate data items. In general, the UP 91a and DOWN 91b keys are used to change the value of a data item, while the LEFT 91c and RIGHT 9Id keys move the cursor left or right within a field. For example, if a user's name is to be entered in the SETUP screen, pressing the UP arrow 9la will cause the alphabet to go from A to Z and the DOWN arrow 91b from Z to A. The LEFT and RIGHT buttons 91c and 9Id are generally used to change the cursor's position in a multi-data item field.

To facilitate faster data input, the four cursor keys 91a-91d use a software technique that provides a gradual increase in the flow of information from the keypad.

An internal mechanism in the keypad 50 device driver filters the number of continuous key presses, eliminating a majority of them. As time passes, the filter begins to allow more key presses to filter through, which translates into data being processed more quickly. Eventually the amount of information coming through reaches a threshold, and remains level. This whole principle is based upon the fact that a continuous stream of the same information is coming from the keypad 50 (i.e. the user is holding down the same key for a period of time. ) The filter also is able to shut down immediately, which is necessary to avoid overrunning the user's chosen data item.

From the user's point of view, holding down a key causes information on the display to change at a slow, steady rate. After a period of time (~2 seconds) , the information begins to change more frequently. After another period of time (~1 second) , the display of information picks up speed. After another 1 second period, the amount of information displays very fast (but still readable) , and remains steady.

The ENTER button 92 permits a user to move across various LCD screen fields and activate those areas that need input since this button concludes the editing operation within a field. Depressing the ENTER button 92 also causes data to be automatically assumed as valid by the system and to be processed in the electronic control system 22.

In operation, the presence of the cursor on a field will cause that field to blink (so as to notify the user of the point of change). By pressing the ENTER button 92, the cursor will then move to the next block requiring informa¬ tion. If the entry in that selection is already correct, or if the user wishes to ignore the requested data, then he/she depresses the ENTER button 92 again to skip over that selection. Also, by pressing the ENTER button 92, the associated LED bar 92a lights up (as long as the button remains depressed) .

The SET START/NEXT buttons 94 and 21a, 21b ("SSN") have different functions depending on the context in which they are used. If the user is not exercising, the SSN buttons are used to set the floor/ceiling for a given exercise (to be described later) . When the user is exercising, the buttons can be used to abort the current set of the current exercise. In effect, this action will act as an emergency stop button. Activation of the SSN buttons also cause an associated LED 94a to light up.

The third area 58 of the FCP 20 constitutes a stroke gauge light bar 58 formed from a single column of 20 LED bars 58a-t. The arrangement of the LED bars 58a-t provides a user with a visual indication of the position of the leg 14 or arm 16 in relation to the top or bottom of the user's stroke.

In operation, regardless of where the user's stroke actually begins, the gauge will move from bottom to top. In effect, the gauge measures the initial stroke from the bottom of the stroke 58t (0%) through the top of the stroke 58a (100%) , and measures the return stroke from top to bottom. The 0% and 100% points are determined for each exercise when the user first moves the leg 14 or arm 16 to a base point and then to a maximum stroke point. The maximum point of the stroke is automatically measured by the control system 22 on the third stroke of the first set of an exercise. The upper four LED's 58d-58a (85-100%) are colored green for motivational purposes.

Four LED's 59a-59d are also used to simulate a weight stack. The lowest LED 59d marks the actual percentage point of each stroke. To be accurate, for every 5% that the weight stack moves beyond the 80% mark, the weight stack is reduced by one LED (i.e. the top LED is pushed off the scale.) As the weight stack begins its descent (return stroke) the top LED will to reappear at every drop of 5%.

In an alternate embodiment, the arm position is displayed in a manner that emulates a thermometer. Specifically, for the initial stroke, all LED's from the 0% point 58t to the current percentage of the stroke are lit. For the return stroke, all LED's from the 100% point 58a to the current percentage stroke are extinguished. The user would thus see a continuous column moving up and down with the motion of the arm. A tone will be emitted each time the 0% and the 100% points are reached.

3. The Screens

FIG. 3 illustrates the MASTER screen 100 which includes all of the elements laid out in the program mode screens corresponding to the afore-described keypad buttons on FCP 20. Since many of the fields on the MASTER screen 100 relate to the functions of other programs, they will be described only in general details. Although the MASTER SCREEN 100 is not actually seen by the user, it shows all of the screen parameters used in all of the programs and thus serves as a place to describe these parameters.

Fields 101 and 102 represent the time setting for minutes and for seconds respectively or for hours and for minutes, depending on the mode selected. Additionally, there is an "A" or "P" option which is lighted to designate the a.m. or p.m. time setting. The time field is mainly used for elapsed time with the exception of the SETUP mode (FIG. 4) . The purpose of the elapsed time is to display an elapsed time for the current exercise session. The format is minutes 101 and seconds 102 with a maximum value of 99:59 before automatic rollover to 00:00. The elapsed time is, for example, used during the PAUSE mode to show the amount of time remaining before automatic soft power shut down.

The date field 103 includes three portions: month 103a, day 103b, and year 103c settings. This field appears in the SETUP screen only (see FIG. 4) , and allows the user to set the date for the system clock. The three date elements 103a-c are separated from one another by annunciators »»-". Although it is possible to use a variety of date formats, the default configuration will be Month- Day-Year. If the first character of the first group is zero, it will not be displayed ( e.g. 07-04-89 displays as 7-04-89.)

The default editing order is from left to right. Movement between groups is accomplished by pressing the left or right cursor keys 91c-91d. If date element 103a is being edited, the left cursor key 91c has no effect. Similarly, if group three is being edited, the right cursor key 91d has no effect. The data within 103 can be modified by pressing the up or down cursor keys 91a, 91b.

The allowable range for month 103b is 1-12. The allowable range for year 103c is 0-99. The lower bound for day 103a is 1, and the maximum bound for a day 103a is specific to the value of the given month (maximum is 31) , taking into account leap years. If the user changes the month 103b, and the current value for the day 103a exceeds the maximum day value for the new month 103b, the value of day 103a will be adjusted to the maximum day value for the new month. Thus, if the date is currently 1-31-90 and the user changes the month 103b from January to February, then the day field 103a will automatically be adjusted to 28, and the display will read 2-28-90.

A year 103c will be considered a leap year if it is evenly divisible by four.

In all other screens (with the exception of SETUP) , field 103 displays the Exercise number of the current exercise. The value in field 103 can be changed by using cursor keys 91a, 91b. The user may change from one sequence of exercise numbers to another by pressing the ROUTINE button 70.

The exercise name field 104 allows the display of up to a 14-character exercise name associated with the value in the exercise number field 103. This field appears on every screen with the exception of SETUP when the field 104 appears in the SETUP screen FIG. 4 as the USER NAME. In that mode, the purpose of this field is to display the USER NAME. Field 104 will be described in more detail with reference to the individual screens.

The USER NO. field 105 appears on the SETUP screen (FIG. 4) and is composed of two groups of alphanumeric data. Group one contains one digit and group two, two digits. The purpose of the USER NO. field 105 is to allow a user to enter his/her number so that the system can access or update the users' personal exercise data, and allow the user to customize or maintain the system. The group one digit is the program code field and is only visible in the SETUP screen. This field allows a range of 0-9 and is programmed by using select keys 91a, 91b (FIG. 2) . The function of this field allows the user (e.g., facility manager) to select a number of extra functions by typing in any of the numbers 0-9. For example, the user may designate a dump of all user numbers by typing in a particular code; a military time option dis¬ play for the time field; a selection of printout type (brief or extended) ; or a user-erase so that a former user can be removed from the software. Appropriate software can be used to restrict access to the program code.

The group two characters represent the desired user number. The allowable range for this field is from 01 to 99. The lower bound is zero if the machine is in the DEMO mode. The default value of this group is 01.

Field 105 can also alternate as the TARGET SETS field or as the TARGET TIME field. For TARGET SETS, which appears on the STRENGTH screen (FIG. 5A) , this field allows the user to enter the number of sets that will be attempted for the current exercise. The allowable range for this field is from 1 to 99 and this field can cycle from 99-1 or from 1-99. In the STRENGTH mode, the system will add a WARM UP set value of 1 to the target value selected.

The TARGET TIME field 105 appears in the CIRCUIT (FIG. 5B) , AEROBIC (FIG. 6) and TONING (FIG. 7) screens. In these programs, the purpose of this field is to allow the user to enter the time goal in minutes for the current exercise. The value for this field is identical to the TARGET SETS. Field 106 can be used alternatively to represent the WEIGHT, AGE or INITIAL FORCE values.

The WEIGHT field 106 appears on the SETUP screen, and allows the user to enter a weight for use in the Calories and the METS calculations (to be described later) . WEIGHT 106 consists of three 7-segment characters, and has an associated annunciator "LBS.". The allowable range for this field is 1 to 999, and this value cycles in both directions (999->l and 999<-l) . A default weight (120 lbs.) will appear in this field until the user changes it. Data in this field may be modified by pressing the up 91a or down 91b cursor keys.

The AGE field 106 appears only in the SETUP screen. This field allows the user to enter his age which is used in the target pulse range calculations. AGE 105 is composed of two 7-segment characters, and has an associated annunciator "YRS". The allowable range for this field is l to 99, and input wraps in both directions (99->l and 99<- 1) . Data in this field may be modified by pressing the up or down cursor keys 91a, 91b. The system also may be programmed to display the age and weight data only pri¬ vately so that those fields are not normally visible unless they are being modified.

The INITIAL FORCE field 106 appears on every screen with the exception of SETUP. It is composed of three 7- segment characters, and has an associated annunciator "LBS". The purpose of this field is to allow the user to set the desired force for the initial exercise stroke. The allowable range of values for this field is dependent on the type of force generating system used in connection with the control system 22. In the preferred embodiment, the minimum force will be 5 lbs. and the maximum between 550 and 600 lbs. However, any minimum or maximum settings are contemplated. The values in this field can be manipulated by using the up and down cursor keys 91a, 91b. Also each value of this field directly affects the value of RETURN FORCE 107, and if the system is in the STRENGTH program mode, the value of TARGET REPS 108, 109. The user cannot edit this field in the TONING program mode.

The calculations for the force for all repetitions after the first stroke are based upon the initial force of the first rep and are calculated automatically based on a force vs. reps relationship which sets a base force equal across all reps. The data from such curves is then placed in the control system memory, preferably in a 10x10 array table. Data from such tables are used to define the actual control forces for the hydraulic force generating system.

The RETURN FORCE field 107 is on every screen except SETUP. The purpose of this field is to allow the user to set the desired return stroke. The allowable range values are the same as INITIAL FORCE 105. The setting for this field is a proportion of the last selected INITIAL FORCE setting 105, or the last historical best score, and the last selected RETURN FORCE 107. Each time the RETURN FORCE 107 is changed, the proportion for that exercise is saved for future use and will be modified automatically to match any changes in the INITIAL FORCE 106. This field cannot be changed in the TONING mode (FIG. 7) , or alternatively, can be changed only through setting the program code. The TARGET PULSE RANGE or TARGET REPS fields 108 and 109 are mutually exclusive display fields available in different programs. The TARGET PULSE RANGE field 108-109 appears on the AEROBIC screen (FIG. 6) and is used for displaying the suggested pulse range (discussed in more detail in FIG. 6). The TARGET REPS field 108, 109 will automatically appear once the initial force field is set. TARGET REPS 108 are derived from the initial force-reps curve of each user for each exercise and allow the user to select the number of repetitions that will be attempted for a current exercise.

The force-reps curve consists of a series of slopes or curves that plot optimal repetition levels for given forces. Forces are plotted either along the X or Y axis and the number of repetitions are plotted either along the X or Y axis. The use of the force-reps curve is to provide automatic target reps or forces based upon the target reps or initial tone values. Should an initial force be set at a given level, the machine will automatically calculate the target reps for that force. The allowable range is from 01 to 99. This field appears in the STRENGTH, CIRCUIT and TONING screens. The details of this field will be described in more detail below.

The PULSE RANGE or REPS COMPLETED fields are located at position 110. The REPS COMPLETED field 110 automatically displays the number of repetitions completed for this exercise. In the appropriate AUDIO mode 80, activation of this field causes the device 10 to count out- loud the total number of reps for each exercise. This field appears on the STRENGTH, CIRCUIT and TONING screens and cannot be edited by the user.

The REAL TIME PULSE field appears on the AEROBIC screen (FIG. 6) . The purpose of this field is to display the user's pulse during, or at the end, of an exercise session. This field is composed of three 7-segment characters.

The WORK DONE field 112 appears in the STRENGTH, CIRCUIT and AEROBIC screens. It cannot be edited by the user. The purpose of this field is to display the amount of work done by the user. This field is updated on each repetition.

WORK DONE 112 is defined as force over a distance.

The distance measured will include the initial stroke and return stroke distances. For convenience, the unit of measurement is in FT-LBS/100.

In operation, the FCP 20 receives a value for WORK DONE at the end of each repetition, and adds this value to a cumulative total. The same value is added to a subtotal for the current exercise. Throughout the exercise session, the cumulative total will be displayed on the LCD 40 and will be included in the printed report.

The POWER RATING field 113 displays the user's power rating in foot-pounds/time, (the amount of work completed divided by the actual time that the exercise device was used) . Time is measured from the first stroke of the first exercise through the end of the session. All delays are included in the computation. The length of each set of each exercise will be measured, in order to provide a POWER RATING for each exercise. Throughout the exercise session, the cumulative total will be displayed on the LCD, and will be included on the printed report. Rest periods and delays are included in the POWER RATING calculations. The POWER RATING is updated at each repetition and the POWER RATING 113 is displayed on the screen continuously during each exercise. This field appears in the STRENGTH, CIRCUIT and AEROBIC screens. POWER RATING differs from the WORK DONE measurement as the time factor can increase or decrease the power rating. Thus, if one person performs an exercise in half the time as another, at the same force his/her POWER RATING will be much higher.

The FORCE PROFILE vector chart 114 displays a force curve that a user may select in performing his/her exercise. This field allows the user to thereby inform the machine how to distribute force over the full range of a repetition (initial and return stroke) . This field appears in the STRENGTH or CIRCUIT screens. The X-axis of the FORCE PROFILE chart 114 represents the bar position as a percentage of maximum attained stroke length, while the Y- axis represents the percentage of force desired based on initial and return force settings. Two types of force profile vectors are available: an easy-to-hard-to-easy setting 114a or a hard-to-easy-to-hard setting 114b. Each setting will have three displayed profiles, each of which is selected by keys 91a, 91b. The current (selected) profile will blink while the other two profiles remain visible. The center profile is the default. The selected curve for each exercise will then be stored to reduce future parameter input time. The WARM-UP field 115 appears on the screen at the beginning of each selected exercise in the STRENGTH exercise mode. The force setting in the WARM-UP is 50% of the initial force for a particular exercise (at the selected rep point on the force curve) . During WARM-UP, the word "WARM-UP" 115 will blink on and off and will then disappear once the WARM-UP set has been completed. If the machine remains motionless for a few seconds, the WARM-UP message 115 also disappears from the screen. Alterna¬ tively, the user can hit one of the SSN buttons and go directly to the actual selected sets.

The VOLUME setting field 116 controls the volume levels for the audio modes. As previously described, the volume level can be automatically adjusted by using the UP/ DOWN select keys 91a, 91b (FIG. 2) .

Referring now to FIG. 4, the SETUP screen 120 appears whenever the system has turned onto the soft power edit stage. The primary purpose of the SETUP screen is to allow the user to input data into the system. The following fields appear on the setup screen, and are edited in the order listed below:

User Number 105, User Name 104, Age and Weight 106, Time 102, and Date 103. The fields Age and Weight are not displayed unless the user is actually editing them. When displayed, they are shown sequentially. Once the user leaves the Age/Weight field 106 that area is blanked (for privacy) .

The default User Number 105 is zero the following buttons are unavailable: PROGRAM, ROUTINE and SET START/ NEXT in this program mode. Each time the USER NUMBER is changed, the SYSCON (FIG. 8) is asked to provide the availability status of that USER NUMBER. If that user record contains valid user data, then the message, "USED" will appear in the user name field; otherwise the message, "OPEN" will appear.

Once a user number has been entered, user statistics must be fetched from SYSCON (Name, Age and Weight) , and the user name displayed. Once the data is retrieved from SYSCON, the STRENGTH LED 62 associated with that data will begin to flash, indicating that the machine is waiting for the user to set a Program mode. The user may wish to edit his or her personal data before pressing the PROGRAM button. Once the user presses the Program button, however, the SETUP mode is complete, and all buttons are available. The SETUP screen is replaced with the screen for the program that has been selected. Once the user data is loaded, it is kept in memory until the system resets, or, the user chooses a new User Number and presses the Enter button. Changing the user number without pressing ENTER does not disturb the currently loaded user data.

The USER NAME field is composed of fourteen (14) characters. The purpose of this field is to display the user's name primarily for verification purposes. This field also is used to indicate the availability of any user number.

Although the physical size of this field is fourteen characters, it has a virtual length of 24. This means that the user is able to enter more information than can be displayed on the screen at one time. This is accomplished by having the information on the screen scroll left and right, as necessary. Movement between characters is accomplished by pressing the Left and Right cursor keys 91c, 9Id. Character data can be modified by pressing the UP and DOWN cursor keys 91a, 91b, as described previously.

When the cursor is at the fourteenth (14) character and the user presses the Right cursor key, the field must scroll that number of characters to the left. If the 24th character currently appears in the fourteenth physical column, then the first fourteen characters of the user's name are re-displayed and the cursor moves to character one. Otherwise, the currently displayed characters move left one column, and the cursor remains in column fourteen. Two examples of the USER NAME operation are shown below:

EXAMPLE 1

Name = ABCDEFGHIJKLMNOPQRSTUVWX (24 characters total) Cursor = 14th Column

Hidden Visible

[ABCDEF] GHIJKLMNOPQRSTUVWX

Pressing the right arrow causes the first fourteen characters to be re-displayed and moves the cursor to column one.

EXAMPLE 2

Name = ABCDEFGHIJKLMNOPQRSTUVWX (24 characters total) Cursor = 14th Column Visible Hidden

ABCDEFGHIJKLMN [OPQRSTUVWX]

Pressing the right arrow causes all visible characters to scroll left one column. The cursor position does not change. The first hidden character becomes visible in column fourteen (14) . The character that was in column one is no longer visible.

Visible Hidden

BCDEFGHIJKLMNO [PQRSTUVWXA]

When the cursor appears in column one, and the user presses the Left cursor key, then the field must scroll one character to the right. The logic used to accomplish this is explained in Ex. 2 (see above) , the only difference being the direction of movement. If the character in column one is the first virtual character, then pressing the Left cursor key has no effect (i.e. do not scroll from the first character to the last.)

The range of values for characters is derived from the following sequence of characters:

"_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789. ,-"

The first character is a space. Pressing the UP or DOWN arrow 91a, 91b will select the succeeding or preceding character from the sequence. The sequence wraps from the last character to the first and visa-versa. When the user exits the program, the USER NAME field 104, and the AGE field 105 will be displayed. When the user exits the AGE field 106, the AGE annunciator and data will be replaced by the WEIGHT annunciator and the user's weight. Upon exiting the WEIGHT field 106, the weight related data will disappear.

Referring to FIG. 5A, the STRENGTH screen display 130 is shown. This screen appears when the current program mode is also in the DUAL mode. The primary purposes of this screen are to allow the program user to enter the desired parameters for the STRENGTH and DUAL mode exercises, and to display the current exercise data as the user proceeds with the exercise session.

The following fields appear on the STRENGTH screen, and are edited in the order listed:

Exercise No. 103 Target Sets 105, Initial Force 106, Return Force 107, Target Reps 109 and Force Profile 114.

Initially all data areas are blank until the user selects an exercise. At this point, the current Exercise No. 103 and Exercise Name 104 must be displayed. The user may now scroll through a list of available exercises. An alternate sequence can be chosen by pressing the Routine button 70, and as each new Exercise Number 103 is displayed, the corresponding Exercise Name 104 will be displayed. Pressing the ENTER button 92 enters the exer¬ cise selection and the user data for that exercise is loaded via SYSCON from the STRENGTH data area. Once the data is loaded, it is displayed on the screen. The following data is then loaded from SYSCON:

Initial Force 106, Return Force 107, Target Reps 109 and Force Profile 114.

If the user modifies the number of Target Sets 105 or the Force Profile 114, the new information is saved via SYSCON.

If the user modifies the Initial Force setting 106, then the Return Force 107 and the Target Reps 109 will change (as explained previously) . If the user modifies the Return Force 107, the new value will be sent to the SYSCON so that it can calculate and save the proportion of Initial Force/Return Force for future use.

If the user modifies the Target Reps field 109 then the Initial Force 106 and Return Force 107 will change. The only exception is when the user sets the Target Reps to zero. This indicates that the user wants the system to count the number of Reps Completed, and change the force vs. reps curve accordingly.

Once the user is satisfied that the parameters are correct, the user will set the arm 16 or leg 14 position and press the SSN 22a, 22b or 94. This signals that the exercise is about to be performed.

Once SYSCON is informed that the SSN buttons have been pressed, the following information appears on the screen: Elapsed Time 101, 102 Reps Completed 110, Work Done 112, Power Rating 113.

Once the user starts exercising, SYSCON will begin sending ACTIVE STATUS and IDLE STATUS messages. From the information contained in these messages, the FCP will update the Work Done 112 Power Rating 113, Reps Completed 110 and the LED Weight Stack 58. The elapsed time is kept internally and updated once per second.

The first set of each exercise available in the STRENGTH program mode is the WARM UP set 115. All other sets will be normal sets.

After all sets are completed, the exercise mode an¬ nunciators will disappear, the next exercise in the sequence will be displayed, and the data areas will be cleared.

If the DUAL program mode 64 is active, then the information for the second user must be inputted before this screen can be edited by either user. After the second user has run through the SETUP 120, the screen 130 will appear so that the first user can select his exercise. Once the first user completes the WARM UP exercise 115, this screen will be regenerated for the second user. This alternating of inputs continues until the session ends.

The Initial Force field 106 is set either from the user's saved data or by the user. A stroke is a motion that begins at the base or zero point of the exercise arm 16 or exercise leg 14 and ends at the maximum travel point in one direction. For example, when a user is performing a bench press, the zero or base point would be down near his/ her chest. The maximum point would be at the full extension of the user's arms. The first stroke upwards is the initial stroke and the force required for that stroke would thus be the Initial Force 106. The return motion is where the arms move back down to his/her chest at the base point. The force for that stroke is the Return Force 107.

A stroke begins on the machine whenever a change in direction is sensed after the arm moves a minimum distance. There is no minimum speed for a stroke and there is no target stroke rate (with the exception of the PACE program and AEROBIC program) . Alternatively, the weight stack could move one LED at a target rate. As a default, the Return Force field 107 will automatically be the same as the initial force setting 106. As with the Initial Force 106, the Return Force segment can be separately set for a desired exercise. The computer also will remember the proportion of the initial force to a return force. Thus, each time after that initial force is changed, the return force figure will also change proportionally and will automatically appear on the screen. When a user changes a suggested return force number, that proportion will change automatically in the system for that exercise only.

The beginning point of any stroke is known as a floor. During exercise, the floor can be set by the user to any point traversed by them. The floor eliminates the need to bring a set of weights into the position required to perform the exercise. The automatic floor also saves the user energy making it possible for those users limited by medical disabilities or limited in strength to perform otherwise impossible exercises, or allows users to lift added force.

For example, when a user sets the Initial Force 106 for exercise 21 at 95 pounds, the Return Force 107 for exercise 21 will default to 95 pounds. However, if the user decides to set the Return Force 107 at 120 pounds, a ratio of 1.26 (120/95 = 1.26) will be retained in the computer. When the user later changes his/her Initial Force field 106 to 110 pounds, the return force 107 will be set at 139 pounds (1.26 x 110 = 139). The Return Force can also be set below the value for the Initial Force 106.

The Target Reps field 109 automatically appears once the Initial Force 106 is set. As previously described, the number for this field is derived from the force vs. reps curve for each user for each exercise. The force-reps curve is computed and stored when a user first uses a machine and performs a selected exercise. Each exercise might have a slightly different force curve. The force vs. reps curve shows a relation between the number of reps a person can complete and a variety of different force settings per exercise. A rep equals one initial force stroke plus one return stroke. A rep is not time- dependent. To complete a rep, the user must come within a preset distance of the base point and the maximum extended point settings.

The Reps Completed field 110 tracks the actual number of reps completed. When the user is halfway to his/ her target reps, Reps Completed counts the number of reps after the halfway point, if the appropriate AUDIO selection 80 is activated. The Work Done field 112 and Power Rating field 113 have previously been described with respect to FIG. 3. Similarly, the Force Profile chart 114 has already been discussed along with the Warm-Up 115 and Volume fields 116.

Referring to FIG. 5B, the CIRCUIT screen 135 is il¬ lustrated. This screen is displayed when the program button 66 is depressed (FIG. 1) . The primary purpose of the CIRCUIT program screen 135 is to allow the user to enter the desired parameters for the CIRCUIT mode exercises, and to display the current exercise data as the user proceeds with the exercise session.

The following fields appear on the CIRCUIT screen, and are edited in the order listed: Exercise No. 103, Target Time 105, Initial Force 106, Return Force 107, Target Reps 108 and Force Profile 114.

The user scrolls through the list of available exercises. An alternate sequence can be chosen by pressing the Routine button 70, as each new exercise number is displayed, the corresponding Exercise Name 104 will be displayed. By pressing the ENTER button 92, the user data for that exercise are selected and loaded via SYSCON from the CIRCUIT data area. Once the data is loaded, it is displayed on the screen as Target Time 105, Initial Force 106, Return Force 107, Target Reps 108 and Force Profile 114.

If any of the above fields are modified by the user, it will be saved, via SYSCON, for future use. In the case of Return Force 107, the SYSCON will calculate and save the proportion between Initial Force 106 and Return Force 107. Elapsed Time 101, 102 defines the length (in minutes) for the whole CIRCUIT. Each exercise is performed only once.

Once the user is satisfied that the parameters are correct, the user can then set the arm bar 16 or leg bar 14 position sets the 100% range of motion (FIG. 1) and presses the SET START/NEXT button, as previously described. The SSN signals to SYSCON that the exercise is about to be performed. At this point, the Target Pulse Range field 109 will be displayed, blinking, for three to four seconds, and then will be replaced by the Target Reps field 109.

Once SYSCON is informed that the SET START/NEXT button has been pressed, the following information appears on the screen: Elapsed Time 101,102, Reps Completed 110, Work Done 112 and Power Rating 113.

FIG. 6 illustrates the AEROBIC program screen. The following fields appear on the AEROBIC screen, and are edited in the order listed: Exercise No. 103, Target Time 105, Initial Force 106, Return Force 107 and Target Pulse Range 108, 109.

The Exercise No. 103 is modified as before. The Exercise Name appears automatically as before. Once the data is loaded, it is displayed on the screen. The following data are loaded from SYSCON: Target Time 105, Initial Force 105, and Return Force 107.

The Target Pulse Range fields 108, 109 displays the pulse limits automatically calculated by the computer. The Target Pulse Range 108, 109 for a user is composed of a lower and upper limit and the user's pulse should fall somewhere between these two figures. Assuming that the measurements are accurate, a pulse outside of the target pulse range should be considered unusual. A user's physical condition and normal exercise habits could affect this range. The Target Pulse Range calculation is dependent on the age of the user. The sex (of the user) is irrelevant:

Upper limit = (220 - age) * UConstant Lower limit = (220 - age) * LConstant

UConstant and LConstant vary depending on the user's age as follows:

Figure imgf000066_0001

Once SYSCON is informed that one of the SET START/ NEXT buttons has been pressed, the following information appears on the screen: Elapsed Time 101, 102, Work Done 112, and Power Rating 113.

Following completion of any of the Routines in either the CIRCUIT or AEROBIC programs, a printout is available after pressing the PRINTOUT AT END button 53. In the AEROBIC program, two additional parameters: Calories and Metabolic Equivalents (METS) are provided. The Calories parameter is used to calculate the amount of calories estimated to be burned during an exercise session. The METS parameter is used to identify the oxygen cost of each exercise performed. Calculating the METS parameter involves four stages:

1) ((ft-lbs / min) / 3087.1) = Kcal / min in which 3087.1 ft-lbs/min = 1 Kcal/min

2) ((Kcal / Min) (1000)) / 5.05) = ml of oxygen/ min in which 5.05 Kcal/min = 1000 ml of oxygen / min

3) (ml of oxygen / min) / kg = ml of oxygen/kg/ min in which kg = person's body weight in kilograms in which kg = (person's body weight in pounds) / 2.205

4) (ml of oxygen/kg/min) /3.5 = MET in which 3.5 ml of oxygen/kg/min = 1 MET.

FIG. 7 illustrates the TONING screen 150. This screen appears when the current program mode TONING 69 is lit. The primary purposes of this screen are to allow the user to enter the desired parameters for the TONING mode exercises, and to display the current exercise data as the user proceeds with the exercise session.

The following fields appear on the TONING screen 150, and are edited in the order listed: Exercise No. 103, Target Time 105, Initial Force 106, Return Force 107 and Target Reps 108.

Once an exercise has been selected, data is loaded from SYSCON. Target Time 101, 102 or Target Reps 108 are modified by the user and will be saved, via SYSCON, for future use. Target Time 101, 102 defines the length of each exercise (in minutes) for the current exercise. Each exercise is performed only once. Target Reps 108 is a function of Target Time ( in toning mode, the arm/leg device moves at a constant speed.) If one changes so does the other.

Once the user is satisfied that the parameters are correct, the user will set the arm 16 or leg position 14 to the maximum point and press one of the SET START/NEXT buttons. This signals that the exercise is about to be performed. The user also sets the 100% range at the beginning offset by pressing the SSN twice.

Once SYSCON is informed that the SET START/NEXT button has been pressed, the following information then appears on the screen: Elapsed Time 101, 102, and Reps Completed 110.

After the exercise is complete, the exercise mode annunciators disappear, the next exercise in the sequence is displayed and the data areas are cleared.

B. Electronic Control Hardware:

As previously described, the electronic control system 22 is used to run the force generation system 10, and provide information to and respond to data from the FCP 20.

The overall arrangement of the control system 22 is shown in FIG. 8. The system is interconnected by means of a plurality of serial links 212 a-g. The serial communications uses RS-485 serial links in a multi-drop protocol. The communications on the RS-485 network are half- duplex so that only one station can transmit at any given time. If two or more stations attempt to transmit simultaneously, data on the lines 212a-212f will be destroyed. Given such a constraint, a single master station 210 initiates all the communications to the other stations on the links.

In order to reduce the overhead required in the slave stations for processing messages, the network is set up in a multi-drop configuration. In the multi-drop mode of operation, two types of characters are sent: address characters and data characters. The receivers on all the slave stations are partially disabled in order that they only can respond to address characters. The corresponding data characters are ignored.

In operation, when an address character is received, the receiving station will check to see if its own address has just been received. If so, the receiving station turns on the receiver fully so that the data following the address are properly received. If the message is not addressed to that station, then the receiver is left in its current mode and the station does not receive the remainder of the message.

The main hardware blocks of the system consist of the main control board 210 ("SYSCON") , the front control panel 215 ("FCP"), the digital speech board ("DSB") 220 and the hydraulic actuator controller ("HAC") 225.

Additional hardware used in the system includes an external computer 228, an external printer 229 and a local area network 224. A system database 226 also forms part of the SYSCON 210 and serves as the main memory for the exercise device 10.

The peripheral control boards 215, 220 and 225 pass information to one another through the SYSCON 210. As such, all local area networks will have access to all of the information that is used in the system. Any information appearing along the local area network 224 will be available to any part of the control system 22.

The serial links 212a-f are readily expandable such that any new peripheral board added to the system 22 is given a new multi-drop address. All messages can be sent and received using the assigned address. Local intelligence at each of the peripheral boards keeps message-passing required for control to a minimum. The response time for information queries is thereby optimized. A description of each of the boards, as well as the power distribution for these boards, is provided below.

Referring to FIG. 9, a detailed block diagram of the elements of the SYSCON board 210 is illustrated. There are five main elements in the SYSCON control board 210: a microprocessor 232, a real-time clock 236, a watch-dog timer 252, a serial-communications function block 238 and relay drivers 239.

The microprocessor 232 is preferably a Motorola 68000 microprocessor circuit having a random access memory (RAM) 234 and read-only memory (ROM) 233. All BIOS and application programs are located in the ROM 233. The ROM 233 and RAM 234 each respectively contain 128k-bytes of IC memory. In addition, 256K bytes of battery backed RAM 242 is available for long term data storage. A disk drive 234 also is available for additional storage. The RAM employs, for example, 2-AA lithium cell batteries. Those batteries are rated at 3300 mah. The length of time that data is retained in those batteries is from 34-172 days.

The microprocessor 232 is connected to a real-time clock 236 which shares the same battery backup with the memory 242. Real-time clock chips provide time and date information to SYSCON 210. The SYSCON shares the clock with the FCP board 215 (FIG. 8) . The real-time clock 236 is serviced through the front control panel.

A watch-dog timer 252 also is connected to the microprocessor 232 along line 237. This timer 252 monitors the 5 VDC power supply line 246 that supplies operating power to the SYSCON 210. If the power level on line 246 goes beyond tolerance, the watch dog timer 252 will then automatically stop the microprocessor 232 and hold it reset until 50 s. after the power comes back within range. The watch-dog timer 252 also is reset automatically by the microprocessor 232 through signal line 237 at least once every 60 ms. If a reset signal is not received during that time frame, the watch-dog timer 252 will presume that the microprocessor is lost and will automatically reset it.

The serial communications are handled by a dual channel high speed universal asynchronous receiver transmitter (DUART) 238. The SYSCON 210 uses two serial channels 247 and 248. One channel is an RS-232-formatted serial communications bus 247 and the other is a RS-485- formatted serial communications bus 248. The RS-232 bus 247 is used to talk to a local terminal for diagnostic and service-related questions. The RS-485 bus 248 is used to talk to the local area network 224 or boards in the system, as described previously with respect to FIG. 8. Both channels have their protocols and baud rates configurable by means of software.

The dual relay driver 239 enables or disables power to the hydraulic systems and pumps via HAC cutout line 249. In the event of system failure, information from the relay driver 239 can shut down the pump automatically.

FIGS. 10A-10F are schematic electronic circuit diagrams of the SYSCON control board 210 shown in FIG. 9. The basic components of the board include the Motorola 68000 microprocessor chip 232, ROM 233, RAM 234, real time clock 236, watch-dog timer 252, the DUART chip 238 and the relay driver 239. In addition, the board includes a program logic array 257, a wait state generator chip 258 and buffers connected to the microprocessor 259.

Referring now to FIG. 11, the FCP hardware 300 is illustrated. The FCP board 300 is powered by its own 5 vdc power converter 304 and communicates with SYSCON 210 via serial link 308.

Control of the I/O devices on this board is accomplished by means of the micro-88 circuitry 306. The micro-88 circuit 306 is a single board computer device based on the Intel 8088 microprocessor. However, any microprocessor design can be used. The micro-88 includes a ROM space, RAM space, DUART capability, a watch dog timer, and 34 pin dual row header connections. The micro-88 is PC compatible and supports BIOS interrupts.

The micro-88 circuitry 306 is connected to a pair of peripheral interfaces 310 and 320. These peripheral interfaces are designed to expand the I/O of the micro-88 306 in order to communicate with the LED matrix 314 and LCD display 40. The first peripheral interface 310 is connected to switch matrix 316. Information is sent through line 319a to the matrix and received through line 319b. The first peripheral interface also connects to printer 318. it is contemplated that the micro-88 circuitry could later be replaced by faster circuitry.

The interface 310 also connects to LED matrix driver 312. The LED matrix driver 312 is a constant current matrix oriented programmable LED driver. The driver handles data and control words in an 8-byte format and multiplexes that information into an array comprising 64 LED's. However, other formats are contemplated.

The switch matrix 316 handles row and column data directly from the first peripheral interface 310. The switches 316, which are located on the FCP pod 20, are normally read by the micro-88 306 which, in turn, controls the machine by requests sent to the SYSCON 210 through link 308. The micro-88 also communicates directly to the printer via the first peripheral interface 310. All information including print characters, line feeds and car¬ riage returns, are directly communicated through the interface 310. The second peripheral interface 320 is used to exclusively control the LCD display 40. The control device 320 connects the three NEC 7225 serial driver devices 322a, 322b and 322c. The three drivers control the LCD display 40.

The FCP hardware is initialized as follows. During a cold start, the peripheral interface 320 must be initialized so that the system can communicate with the drivers 312 and 322a-c. Once the interface has been initialized, each driver must be initialized. Initializing the driver chips involves setting the time shares, bias method and frame frequency. This is followed by setting the transfer type (synchronized vs. unsynchronized) , clearing normal and blinking display memories, and turning the display on. Once all this is accomplished, the display is blank and ready to be written to. The LCD device driver software also may have internal data areas that need to be initialized to default values, and if so, software initialization would occur after all chips are initialized.

With regard to driver 312, the LED contains an 8- byte (64 bits) data file that is referred to as the LED bitmap. Each individual LED is controlled by 1 bit in the map. When a cold start occurs, all LED's in matrix 314 should be off, so that each bit in the LED bitmap is initialized to zero (0). The peripheral interface 310, therefore, must be initialized and then, the LED bitmap must be written to the interface 310, to insure that all LED's are off.

The KEYPAD 316 operates from the same interface 310 as the LED's. Once the LED driver has been initialized, the hardware initialization for the KEYPAD 316 is complete. The KEYPAD device driver contains internal data that needs to be initialized prior to use. Since the OS will directly access the device driver 312 prior to the "soft start edit" phase defined previously, this needs to be done during the "hardware start" phase (phase one) . Also, once the LED driver has been initialized, the hardware initialization for the PRINTER is also complete. The PRINTER device driver may contain data that needs to be initialized prior to use, and if so, this would occur during the "soft start" phase.

The piezo-electric speaker or tone generation chips operate off of the same 8255 control chip as the LED's. The speaker must be initialized to a known state (off) during the "hard start" phase.

The AUDIO device driver may require that internal data be initialized prior to the "soft start" phase, and if so, would occur during the "hard start" phase.

FIGS. 12, 13A, 13B, 14 and 15 each show electronic circuit schematic diagrams of the front control panel hardware of FIG. 11. In particular, FIG. 12 is a schematic diagram of the first peripheral interface chip 310 and its connections to the micro-88 circuitry 306 (not shown) , the printer 318 and the LED driver 312.

FIGS. 13A-13B are schematic diagrams showing the LED matrix driver 312, the row control lines 326, column control lines 328, and the LED matrix 314. FIG. 14 illustrates a block diagram of the peripheral interface 320, the LCD pin connector board 330 and the I/O connections 332 for the micro-88 306 (not shown) . Finally, FIG. 15 is a map array diagram of the LED matrix 314.

Referring now to FIG. 16, a block diagram of the DSB speech board 220 is shown. The function of the DSB speech board 220 is to provide automated prompts, warnings, commands and suggestions to the user during his/her exercise routine. The speech generated from the DSB speech board 220 is in the form of words and sentences. The pitch, volume and speed of the produced speech resembles that of natural speech. Terms used in speech produced by DSB board 220 derive from a large library of encoded words and phrases resident on the speech set EPROM 350. Terms stored in the EPROM 350 library can be strung together in sentences by the micro-88 352 (or can be stored as phrases) to enable the device to talk intelligently to the user. A 300 to 800 word and phrases vocabulary is stored in the EPROM 350 library.

The DSB speech board 220 ties in with other aspects of the hardware in order to produce audio messages at appropriate times during exercise. Audio prompts can also take advantage of past performances by a given user to determine appropriate times to encourage the user to do more or to congratulate him when a new goal is reached. The volume settings for the audio hardware can be automatically adjusted based upon the exercise being performed once the user sets the volume for that exercise. If the exercise brings the user closer to the speakers, the volume will automatically be reduced. If the user is farther away from the audio hardware, the volume will be raised.

The speech set EPROM 350 stores the word library for the DSB. The types of EPROMs available range from a model no. 2764 to model no. 27512 allowing a capacity from 1 to 8 minutes of stored words and phrases.

The EPROM 350 is connected via line 351 to the micro-88 circuitry 352. The micro-88 352 communicates with the SYSCON 210 via the serial link 212f. The serial link consists of an RS-485 communications bus controlled locally by the SYSCON 210.

The micro-88 352 circuitry also reads bytes of speech information from the EPROM chip 350, processes that information with software designed to concatenate words from the EPROM, and then provides that data via line 353 to the speech synthesizer 354.

The speech synthesizer 354 consists of a PCF 8200 speech synthesizer chip manufactured by Philips Components Laboratory, Eindhoven, The Netherlands. The synthesizer 354 reconstructs the audio output from line 353 using a linear predictive coding algorithm ("LPC" which is described below) .

The LPC employs periodic pulse data (for voice signals) and a generator (for non-voice sounds) as excitation sources for a cascade of five second-order filter sections (not shown) , each of which define one vocal track resonance. Each second order filter section uses a three multiplier model so that the format frequency and bandwidth for each filter can be looked up in separate quantization tables. The output of the speech synthesizer is then provided via line 361 to a series of programmable filters 360.

The filters 360 can comprise an LCP 1060 chip controlled by means of programmable timebase 357. The LCP 1060 filter is a DUAL-switched capacitor type filter whose placements are proportional to the received clock frequencies. The programmable timebase 357 operates to divide the clock rate to place the two filter poles. The timebase is, in turn, controlled by the micro-88 352.

The filters 360 are jumper selectable and can be hardware configured for band-pass, low-pass and notch modes. Placement of a corner or center frequency for each filter is accomplished by the clock rate set from the programmable timebase 357. In the present embodiment, there are two filters and two independently programmable clock rates. However, any number of filters and clock rates can be used.

The function of the filters 360 is to clean up background noise and buzzing produced by the reconstruction of the speech. The placement of filters is largely dependent upon the pitch of the speech. The filter operation is controlled in real-time by filter placement software. The need for filters 360 results from the strength of the fundamental excitation frequencies used to drive the format filters in the speech synthesizer 354. As this excitation level is high, a noticeable amount of unwanted harmonic energy is produced. The filters are placed on two of the harmonics of the pitch by the speech control and status software (to be described later) . They are jumpered in a notch mode to exhibit only slight notching characteristics (-3db) in order to only reduce harmonics without affecting the actual speech itself.

The filtered audio signal is passed along line 363 to a volume control circuit 362. The volume controller 362 consists of a digital-to-analog converter which acts as a volume control device by proportioning the output amplitude. In operation, the micro-88 352 puts a number between zero and 255 into the volume control 362. The volume control 362 then proportions the output amplitude and the proportioned signal is then presented to power amplifier 364 across line 365. The amplifier is designed to provide up to four (4) watts through an eight (8) ohm speaker 366 with less than one percent distortion.

FIGS. 17A-17D illustrate schematic circuit diagrams of the digital speech board 220. Like reference numbers refer to like elements described in FIG. 16.

Referring now to FIG. 18A, the HAC board 225 and related circuitry is illustrated. The purpose of the HAC board 225 is to control all hydraulic hardware, communicate with the SYSCON 210, analyze feedback information from the load cells on the force generating system and provide safety control. The specific details regarding the hydraulic and mechanical features of this invention are disclosed in the above-mentioned co-pending U.S. Patent Ap¬ plications which are incorporated herein by reference.

FIGS. 18A and 18B are block diagrams of the alternate embodiment of the hydraulic actuator controller 225. The first embodiment is directed to a system employing an AC-motor to operate the hydraulic system, while the embodiment in FIG. 18B uses a DC-motor to control the hydraulic system.

Referring now to FIG. 18A, the HAC control 225 employs the micro-88 circuitry 400. The microprocessor 400 acts to control communications with SYSCON 210 through an RS-485 serial communications bus 212. The micro-88 400 also reads analog signal feedback, directs the hydraulic system's proportional valve drivers, and also controls various relay drivers.

The analog signal inputs are characterized by two types of signals: load related feedback signals from load cells 398a and 398b, and potentiometer settings from potentiometers 401a and 401b that are connected to the movable bars of the device 10.

The load cell feedback input is fed to respective instrumentation amplifiers 396a and 396b for strain gauge amplification of the load cell signal. Each load cell 398a, 398b is connected to an arm bar hydraulic cylinder and leg bar hydraulic cylinder. The instrumentation amplifiers 396a, 396b provide a gain of approximately 500 v/v (volts/volt) to the load cell signals 397a, 397b. The amplifiers are designed to operate over a wide range of temperatures with relatively low drift.

The second analog signal is provided from the potentiometers 401a and 401b each of which are connected to the arm, leg bars in a manner described in applicants previously described co-pending application. The outputs from the potentiometers are provided to amplifiers 399a and 399b. The potentiometer amplifiers 399a, 399b translate a zero-to-ten volt signal from each of the potentiometers into a zero-to-five volt signal range for appropriate digitization. The amplifiers are designed to provide signal conditioning in order to reduce the amount of noise across the inputs.

The amplifiers are connected via lines 395 to a ulti-plexer 394. The multiplexer 394 is designed to route the amplifier signals, one at a time, to line 393 connected to the analog-to-digital converter 392 (A/D converter) . The particular signal to be routed to the A/D converter 392 is selected by the micro-88 controller 400. As a result, input signal analysis is entirely controlled by the micro- 88 400. The A/D converter 392 digitizes the signal and provides it along path 392 to the micro-88 controller 400.

The second function controlled by the micro-88 is the hydraulic proportional valve drivers 405a, 405b. Control consists of dividing signals along control lines 402a and 402b and converting the signal from digital to analog form at the D/A converters 403a and 403b. The D/A converters respectively provide zero-to-ten volt output signals along control lines 404a and 404b to two associated valve drivers 405a and 405b. The valve drivers, in turn, are powered by 24 vdc power lines (see FIG. 21) in order to control opening and closing of the hydraulic valves of the automatic force control system.

The third function of the micro-88 400 is to provide control signals along line 407 to the relay drivers 406. The control signals are then sent on lines 408, 409 and 410 to respective control relay circuits 411, 412 and 413. The relay drivers 406 and control relays 411-413 provide a means for the micro-88 400 to control designated relay-driven functions of the system. Details regarding that hydraulic system are set forth in applicant's pre¬ viously mentioned co-pending patent applications which are incorporated by reference.

FIG. 18B is a block diagram of the second embodiment of the hardware control circuit 225 for the hydraulic force generating system which has a DC-motor to drive the system's pump 420. The processor controls a pair of selector valves 435 to energize either the leg cylinder or the arm cylinder. The HAC system hardware includes a microprocessor I/O Board 400, which includes the identical micro-88 and signal I/O components 392, 394, 396, 399 and 403 shown in FIG. 18A. The microprocessor 400 connects to a servo control board which provides signal conditioning for the bridge amplifier board 430 and the DC motor 432. Feedback signals are provided as inputs from load cells 398a, 398b and potentiometers 401a and 401b in the same manner described in FIG. 18A.

FIG. 18C illustrates the hardware control loop for a bidirectional motor. All elements in this figure are labelled with appropriate logic symbols. The pump speed is controlled to match the bar speed and what is required through the P generating element. The P generating element is controlled to produce the desired force at the end of the exercise bar. All loops are closed through the microprocessor which uses a PICD control algorithm. In operation, the microprocessor 400 of FIG. 18B provides an analog motor current command signal algorithm or direction signal on lines 422, 423. The servo control

421 converts the motor command 422 to a pulse-width modulated (PWM) signal 427. The PWM conversion includes current feedback 429 from the motor 426. Details of the control loop in the servo control are provided in FIG. 18D. The direction signal 428 is not effected by the servo control board. The PWM signal is then fed to the power amplifier board 430 which then drives the motor 432. The motor, in turn, drives the bi-directional pump 434.

Referring now to FIG. 18D the HAC hardware control loop is illustrated for a unidirectional motor. The force and position control loop in microprocessor 400 is shown and described in more detail with regard to FIG. 44. The motor command output from this PICD loop is converted at the D/A converter 403 and provided in the form of signal

422 to the servo-control board 421.

Referring now to FIGS. 19A, 19B and 20A-20C, the electronic circuit schematic diagrams for the HAC board 225 of FIG. 18A are shown. The circuit elements include the same reference numbers as the corresponding elements shown in FIG. 18A.

Referring now to FIG. 21, the voltage power distribution system 450 is shown. More particularly, the power distribution system 450 consists of source lines 454 and 456 providing 115/230 volts at 50/60 hz. to transformer 458. The transformer 458, in turn, provides a distributed 18 VAC power across lines 462 and 464 which is then converted locally by the boards. The chassis ground line 452 also is provided.

The power distribution arrangement of this invention addresses the problem of distributing power evenly throughout the entire system without suffering voltage dropout or cross-talk. As the power supply to digital boards 210, 220, 215 and 225 must operate on voltages ranging between 4.75 and 5.25 volts, there is relatively little voltage drop that can be tolerated. Accordingly, cabling 462 and 464 and the connectors can contribute noticeably to the drop of the voltage as well as to reducing noises generated by one board from interfering with another. As to the 15-volt supply for pumps, and other hydraulic equipment in HAC 225, it is also desirable to have relatively little drop as the circuitry can cause an obscuring of the control signals on the HAC board 225 and/or can be heard on the digital speech board 220.

To solve this problem, each board includes its own DC converter. Those 5V or 15V converters 466, 468, 470, 472, 474 and 476 are respectively connected to their respective boards 210, 220, 215 and 225 in order to allow the boards to increase tolerance to voltage changes on lines 462 and 464. Since only one board is powered by each converter, the noise generated by that board will have far less affect than any of the other boards.

The choice of an 18 VAC line is based on the fact that a voltage needs to be low enough to be considered a low voltage for regulatory purposes. In addition, an 18 VAC level can be crudely rectified and filtered to provide the 24 VDC power needed to control the proportional valves and relay amps in the HAC. The power distribution board 403 is shown by the dotted-line box.

FIGS. 22A-22C are schematic diagrams showing the interconnections of the power distribution board of 403. Additional features shown in this diagram include a double pole, double throw power on/off circuit breaker switch 480, a motor panel 485 connected to the HAC board, a valve controller arrangement 486 connected to the HAC through valve control lines 488 and 489, an AC voltage source 490, a kill-switch 492 connected to the HAC 225 and SYSCON 210, motor power lines 483 and 487 and valve control lines 488 and 489. The power connection shown in FIG. 22 is directed to the HAC shown in FIG. 18A (AC-motor version) . In the DC-motor HAC (18B-18C) the motor is powered by the amplifier which gets power from a 48 vdc supply.

FIG. 23 is an electronic circuit schematic diagram of the AC-DC 5-volt converters 466, 468, 472 and 474 as shown in FIG. 21. FIG. 24 is a schematic diagram of the 15- volt AC-DC converter 470 as shown in FIG. 21.

C. The Force Generating and Control Software

FIG. 25 provides an overall functional view 500 of the relationship and flow of data through the major software elements of the system. The system software 500 consists of essentially five (5) basic programs: the SYSCON control program 502, the FCP program 504, the HAC program 506, the DSB program 508 and miscellaneous programs 510. The four (4) control programs 502, 504, 506 and 508 respectively communicate with the SYSCON control program through lines 503 for the FCP 504, line 505 for the HAC 506, and line 507 for the DSB. To control, coordinate and respond to messages from the SYSCON program 502, each system also includes respective message handling software 504a, 506a, 508a and 510a. The function of the message handling programs will be described in further detail below.

Referring now to the main elements of each program, the FCP software 504 consists of two main blocks: the main FCP control 516 and the I/O subroutines 520. As will be described in further detail, the main FCP control program is adapted to receive information from the user via the front control panel buttons (see description of FIG. 2) . By depressing the appropriate FCP buttons, the main FCP control software 516 causes information to be sent to SYSCON via control line 511 and through the message handling subroutine 504a.

The HAC program 506 is organized into three basic groups, the message handling subroutines 506a, the outer shell routines 518 and the control kernel routines 522. Details of each of these routines will be set forth more clearly with reference to FIGS. 31-43.

With regard to the DSB program 508, two main functional blocks exist. The first 508a, involves a message-hand.ling block for controlling information flow to and from the DSB board 220 and the SYSCON program 502. Each of these routines will be discussed in further detail with respect to FIGS. 44-47.

FIG. 26 illustrates the main SYSCON control program 502. As previously described, the SYSCON program consists essentially of a main control block 501. The control block interacts through lines 525, 529 and 531 with a variety of subroutines directed to specific I/O, memory and message handling functions. These programs include optional disk drive and disk server subroutines 534 and 536. The disk drive and server will enable the user to interact with the device 10 in a variety of different ways. For example, the disk drive 534 can receive a floppy disk and/or a smart card memory device. As a result, each user can download exercise statistics onto the disk. The floppy disk or card can then be used on this or another device in another facility. In addition to exercise statistics, the floppy disks or cards can be programmed to contain user authorization codes, billing data or long term distorical exercise data for each user. As a result, the card or disk can serve as a means for gaining access to the device 10.

External disks also can be used for non-exercise data, such as storing medical data for occupational therapists or doctors or force generator data for sophisticated electronic scales.

A database 528 is connected via line 527 to the database server program 526. The database serves the main SYSCON control via data-access line 525. The main database 528 includes user performance information as well as all information relating to programs hosted by SYSCON. Any use of the information in database 528 to build commands, for example, or to respond to peripheral queries, is handled by the main SYSCON control software 501 through the database server program 526. A real-time clock control program 530 is also maintained by the main SYSCON control software 501. The real-time clock program 530 provides time and date information to the peripherals in the system through line 529 connected to the main SYSCON control board 501.

Finally, a power kill routine for the HAC program 532 is connected via line 531 to the SYSCON control program 501. This software will not allow power to the hydraulic pump motor until it is satisfied that this system is totally operational and safe.

The main SYSCON control program 501 acts as the holder of all system information in real-time as well as for archived data. It also serves to pass various messages between parties on the network. In addition, the SYSCON routine 502 is responsible for interpreting and executing requests from all of the peripheral controllers. The details of the SYSCON control routine are illustrated in FIG. 27.

In FIG. 27, the SYSCON control routine enters with a power-up step 562 when power is supplied. A voltage level is then set for the hardware, and the software immediately moves 562 to the power-up initialization and related checks subroutine 563. Subroutine 563 functions to call, initialize and check the related status of all the interfaces connected to the main system.

The power-up routine 564 is called and will not return to the SYSCON level 560 until it is satisfied at 565 that the HAC 225, the FCP 300 and the DSB 220 are operating correctly. Upon returning to the SYSCON level 566, the cycle message subroutine 567 is called. This subroutine sends a message to and receives a message from each board in the system. When all boards respond to the message, the system cycles back to the starting point 568 in order to continue monitoring. The power-up testing subroutine 565 is further described in FIGS. 28A and 28B and the message cycle routines are shown in more detail in FIGS. 29A and 29B.

Referring now to FIG. 28A, the power-up testing subroutine involves first sending a power-up message containing the status of each board in the system. The status is initially set up at the SYSCON level to a "no communication since power-up" status. Since the SYSCON will not return from this routine until both the FCP and the HAC are communicating, and each have no fatal error status, the other boards can then use this status to locally determine the status of the entire network. For example, if the FCP sends appropriate responses to SYSCON, but never sees the FCP status change to "communicating", then it knows that either it is unable to transmit properly, or SYSCON is unable to receive messages.

The power-up routine 565 begins at step 570 where the routine is called from the main line routine 560. Immediately upon entry, all board statuses are set to a "no contact since power-up" status at 572. At step 573, the SYSCON sends a power-up message to the FCP board and waits a specific time for a response. If a response is received at step 574, then the FCP status is changed by the SYSCON to "communicating with the error status as returned". However, if no response is received 575, then the SYSCON sends a power-up message to the HAC board at step 577 and waits a specific time for the timed response. The response is tested at step 578. If the response is affirmative, then the HAC status is set to "communicating". At 581, the SYSCON sends a message to the DSB board 506 and waits a specific time for a timed response. The same sequence is repeated in steps 583 through 586.

Referring to FIG. 28B at step 587, the power-up testing routine does a final test to see if the FCP and HAC boards are communicating. If the answer is no, then at step 588 the cycle loops all the way back to step 573. If, however, the boards are communicating, then the subroutine is exited at step 589.

FIG. 29A illustrates the subroutine for cycling through the other boards with messages 567 called by the main SYSCON program of FIG. 27. This subroutine automatically sends and retrieves messages from the FCP, HAC and DSB boards.

The subroutine is entered in step 591. The board address is then set to the FCP address at 592. At step 593, the message and timed wait for response subroutine is called. Upon completion of the message sending and response receiving subroutine 593, the board is then set to the HAC address. The same sequence is repeated at step 596 for the DSB-board and the subroutine is exited at step 598. The subroutine 593 is called in this Figure is shown in more detail with reference to FIG. 29B.

In FIG. 29B, the send message and check for response subroutine are used when the SYSCON has a message waiting to be sent to another board. If no other message is waiting to be sent, a null query message will be sent, which means, "I have no information to send to you, do you have anything for me?". Once the message is sent, SYSCON will wait a predetermined amount of time for the response to be sent back. If the response is not received within the predetermined time period, SYSCON will assume that it is not going to arrive and it will move on to communicating with the next board. Code at a higher level in the SYSCON will determine when the number of failed messages for a given board constitutes a system failure.

Referring more specifically to the diagram, the subroutine, called at steps 593, 595 and/or 597 in Fig. 29a, is entered at step 601 where the SYSCON message handling buffers are tested to see if any output messages are queued. If the answer is yes at step 605, then the sending address is loaded at step 606 and sent at 607. If, however, no message is queued at step 603, then the buffer is set to a null query message at step 604. The message is sent at step 607 and a timed wait for response loop occurs at 608. If no message arrives, the system tests the end of the time period to see whether a message was received at step 609. Otherwise, if all of the characters of an incoming message are received, SYSCON will exist the routine. If no message was received at 610, an error count for the board is incremented at step 611 and the routine ends. If, however, a message is received at 612, the response is parsed and a reply will be queued at step 613. The subroutine exits at step 614.

FIG. 30 illustrates the SYSCON message handling organization 550. SYSCON includes a message handler 552. The message handler uses the multi-drop 553 to send messages to other boards and receive messages. By knowing from which board a message originates, the message handler 552 is able to select one of the parsing tables 554, 555 and 556 to decipher the message. Each of these parsing tables points to the individual message handlers 557 located in each of the respective control boards for the particular message type. The message handlers 557 are, in turn, responsible for extracting the appropriate information from the incoming messages and transferring control to the appropriate routine for a response.

Referring now to FIGS. 31A-31D, the front control panel program 700 is shown. As shown in FIG. 31A, the software routine 700 is primarily responsible for controlling information flow to/from the front control panel 20 (FIG. 2) . One of its main responsibilities is also handling messages to and from the SYSCON program, as indicated by block 702. The information handling is critical for soliciting all of the user information from the SYSCON as well as for providing to SYSCON all user requests. The messages are assembled and formatted according to RS-485 protocol for line 212a (FIG. 8) .

Block 702 also is responsible for checking all information received from the SYSCON and interpreting that information before the information is made available to the peripheral device driver modules 715, 716 and 718.

Another responsibility of the FCP software 700 is interpreting user requests from the keypad 50 (FIG. 2) and then deciding what messages are to be presented to the SYSCON based on its interpretation. The user input is handled through the subroutine 714 and is sent at 712 to the user input monitor routine 710. The routine 710 then sends reflex action information to an LED handler routine 715 at 711 and also provides the user input data at 707 to the main FCP control routine 706. The control routine 706, in turn, interprets the user-provided input and passes that information to the message handling software 702.

The FCP software handles three peripheral devices: the LED 715, the printer 716, the LCD 718 and the keypad 715.

In particular, the LED handler 715 builds an array in the LED driver 312 (see FIG. 11) of the individual LED states. These states represent either an "on" or "off" condition. The LED driver 312 then multiplexes the LED array to light the appropriate LED 314 (FIG. 11) . The LED handler 715 also interrogates the front panel switches on a timed basis looking for a key element that has been actuated. Upon detecting a key closure, the LED handler 715 sends the location of the pressed key to the user input monitor 710. The input monitor then requests the appropri¬ ate LED associated with the selected user function to change data accordingly. The key press information is then sent to the main FCP control program 706 for processing and transfer to SYSCON via the message handler software 702.

The printer handler routine 716 is responsible for formatting and outputting information obtained during the exercise session to the printer device located in the FCP module 20 (FIG. 1) . The printer handler works by receiving information from the main FCP control routine 706 along line 713. The FCP control software formats the information so that it is presented in a manner that the microprocessor printer can use.

The LCD handler 718 is a peripheral driver subroutine that addresses the segments of the LCD 40 (FIG. 11) in order to generate the information requested by the main FCP control routine 706. The information required involves data for mapping the actual layout of the LCD glass (see FIG. 15) and communicating that mapping in accordance with the protocol used by the LCD controllers 322a, 322b and 322c (FIG. 11) .

Referring now to FIG. 3IB, a function block flow diagram of the software components for the FCP is shown in more detail. The main FCP control block 706 includes Editor block 701 and the OS block 750. The Editor block 701 receives and controls interactions between the OS block 750 (see FIG. 31C) and the LCD, keypad, and audio functions.

The Editor is responsible for providing information to the LCD display 40 (see FIG. 2) . That LCD update information is handled by the LCD handler 718 in order to write the data to display on the LCD 40. The Editor routine 701 also receives all keys pressed on the keypad 50 (Fig. 2) . The keypad handler routine 715, in turn, queries the keypad matrix for updates. That same routine 715 also updates the LED display so that it can write the LED bitmap onto the LED bitmap hardware.

Editor 701 also provides control information to the audio routine 719. The audio routine 719, in turn, operates and generates tones from the hardware. Additionally, commands are then routed to the OS by the audio routine 719. Those commands are requests for speech from the digital speech board.

The OS 750 interacts with editor 701 in a number of ways. First, it receives commands for operating the printer routine 716. Those commands are interpreted by the OS and received by the printer routine in order to control the printer hardware. Second, all commands that relate to the SYSCON are communicated between the Editor and the OS 750. The data sent and received is handled by a serial communications program 702.

Referring now to FIG. 31C, a block-flow diagram overview of the FCP software and operating system is shown. In particular, the operating system 750 ("OS") interacts with the aforedescribed handler routines 715-717, message input routines 702, 714 and control software 706. The FCP control software includes an operating system boot task program 753, a time and scheduling program 751 and a plurality of specific tasks 755 driven by the functions described in conjunction with the FCP. The OS 750 com¬ municates with the main control SYSCON through the message input and output routines 702 and 757. The messages communicated are as follows:

° SYSTEM STATUS

This message is used to establish (or re-establish) communications between the OS 750 and SYSCON 501. This would be the initial message sent from SYSCON 501, and would be repeated until SYSCON got a valid response. If, for some reason, the OS 750 did not

ISA/US receive this message, or SYSCON 501 did not receive the OS's response, then the system would be shut down until proper communications were restored.

BUTTON STATUS

This message is used to transfer information about the following buttons to SYSCON:

POWER ON/OFF 52, PAUSE 54, END WORKOUT 55, PRINT AT END 53, SET START/NEXT 22, 94, KEYLOCK 34.

When the state of one of the above buttons changes, the OS 750 will inform SYSCON 501. SYSCON 501 is primarily concerned with POWER ON/OFF 52, PAUSE 54 and SET START/NEXT 94. END WORKOUT 55 and PRINT AT END 53 are for FCP internal use, but are included for completeness.

SESSION COMPLETE

This message is used to inform SYSCON 501 that an exercise session has been completed, and would normally be sent during the "Warm start" phase.

NULL QUERY

This message is an empty message, and is used to say, "I don't have anything for you, do you have anything for me?".

ERROR REPORT This message is used to report specific error conditions.

With respect to FIG. 3ID, a flow-chart of the internal make-up of the FCP OS 750 is illustrated. The FCP OS 750 consists of seven modules which interact in a manner that is conventional for operating systems. Functions performed by OS 750 include the Coordinator Task Service routines 752, a Memory Allocation service 754, Timer Service routines 756, Schedule Interface routines 758, Device Driver Service routines 760, a General Service routine 762 and Intertask Communication services 764.

Referring now to FIG. 32, an organization flow chart 800 for the HAC board is shown. The HAC program 800 consists of three major blocks: the message handling block 810, the outer shell block 820, and the control kernel 830. These three blocks are designed to run concurrently on computer 400 (see FIG. 18) .

More particularly, the message handling block 810 is responsible for receiving and parsing messages received from SYSCON, and for building and sending reply messages. For incoming messages, the routine 810 extracts pertinent data and passes it to the outer shell 820. Replies are built with information obtained from the outer shell. The control for the message handling software is shown in Fig. 35.

The outer shell block 820 of the HAC software 800 is responsible for handling the overhead associated with the safe operation of the system. More particularly, the

ISA/US outer shell has the responsibility for generating force profiles, counting the repetitions for each particular exercise, and monitoring various safety requirements for the system.

The force profiling is normally selected by the user at the FCP 20 (FIG. 20) . In operation, the desired profile selection is passed down to the HAC outer shell 820 from the SYSCON. The force profiles are then scaled based on the Initial and Return Force settings and an actual stroke position as well as table force values are then subsequently calculated. With each stroke that the user accomplishes, the outer shell 820 calculates the work done and maintains an ongoing count. As previously noted, the work done is an integration of the actual force applied over the actual distance travelled by the exercise bar. Both the actual force and the distance measurements are made available on a real-time basis to the outer shell by means of the control kernel 830.

Additionally, the outer shell software monitors many vital parameters of the hydraulic unit and bar movement. It uses the information received from the hydraulic and bar movements in order to analyze the actual operation of the mechanics with respect to a matrix of safety criteria. If an error is detected, an appropriate action will be taken and the error code will be stored in nonvolatile memory (to eventually aid the service operator) . The specific description of the errors, detection algorithms and system responses to the error messages are provided below in TABLES I, II and III:

TABLE I - SUMMARY OF HAC ERRORS AND SYMPTOMS NO. Type Of Error Symptom

1. Velocity velocity too high or too low

2. Force force too high or too low

3. Instabilities oscillations of force or position

4. Position out of range or incorrect position

5. Data questionable values from the A/

D converter

6. Cylinder switching unable to switch hydraulic cylinders

7. Set position incorrect range for exercise

8. Communication message problems from SYSCON

9. Power-up checks early failure detection

TABLE II - ERRORS AND HAC CONTROL ACTIONS

1) Velocity errors

Force Mode: Probable cause is the operator exceeding the pump capacity.

Condition: Velocity actual > Velocity maximum of system.

Action: Case 1

The overspeed is in the direction of the applied force.

*Set Flag 1. Case 2

The overspeed is in a direction opposed to the applied force. *Set Flag 2.

Reset: When bar speed returns to normal,

Toning Mode: Probable cause is the operator helping or resisting too much.

Condition: The velocity actual is different from the Velocity request by a small amount.

Action: Case 1

The velocity is too low.

*Set Flag 3.

Case 2

The velocity is too high.

*Set Flag 4.

Reset: When speed returns to normal,

Condition: The Velocity is inappropriately zero.

Action: *Set Flag 5,

Reset: When bar speed returns to normal

2) Force errors Force Mode: Probable causes are pump stoppage, valve problems, velocity too great.

Condition: Force actual > limit.

Action: *Stop the pump.

Reset: Toggle Power.

Condition: Force act - Force req out of tolerance.

Action: *Set Flag 6.

Reset: Force error returns to allowable range.

Condition: Force act « Force req and no velocity error.

Action: *Stop the pump.

Reset: Toggle the power.

3) Instability errors

Force Mode: Probable cause is slop in system or operator induced oscillations.

Condition: Oscillations > limit value. Action: *Take servo stabilizing action. *Set Flag 7.

Reset: End of exercise.

4) Position errors

Position Mode: Probable cause is pump stoppage, stuck valve, force capacity exceeded.

Condition: Unable to maintain position within tolerance.

Action: Case 1

Force actual is at limit.

*Stop the pump.

*Set Flag 8.

Reset: Toggle Power.

Case 2

No force is detected. *Stop the pump. *Set Flag 9.

Reset: Toggle Power

Force Mode: Probable cause is to exceed range of machine.

Condition: Position outside of limit range. Action: *None

Reset: None

5) Data errors

Any Mode: Probable cause is faulty analog input path.

Condition: A/D value is < 10 or > 1014

Action: Case 1

Occasional intermittent problem.

*Reject Data Point.

*Increment tally of occurrences.

Reset: Reset tally at end of work-out session.

Case 2

Reoccurring or Catastrophic,

*Stop the pump.

*Set flag for service.

Reset: Toggle Power.

6) Cylinder Switching

Any Mode: Probable cause is faulty 4-way valve. Condition: Movement of forces applied to incorrect bar.

Action: *Cancel output to bar. *Put up message "Exercise unavailable"

Reset: Toggle Power or selecting an exercise with the bar that can be controlled.

7) Set position error

Any Mode: Probable cause is operator confusion.

Condition: Set is to near end of travel to allow exercise.

Action: *None.

Reset: Appropriate set position chosen.

8) Communication error

Any Mode: Probable cause is interference on serial link.

Condition: Invalid Checksum or invalid message type. Action: *Ignore message and don't respond. *Increment error count. *When error count is too high re¬ initialize DUART.

Reset: None required; handled on a case by case basis.

Condition: HAC has not received a message in too long a period of time (time out) .

Action: *Stop the pump.

Reset: Toggle Power.

Condition: Invalid data values,

Action: *Send message to SYSCON stating "bad data"

Reset: None required: handled on a case by case basis.

9) Power up checks

Mode: Verification of system basic operation before the program is begun. Condition: Check pump, load cells and potentiometers.

Action: ♦Terminal Error for failures.

Reset: Toggle Power.

TABLE III - HAC ERROR HANDLING SUMMARY

PUMP

ERROR ACTION FLAG OTHER

RESET

V(act) > V(max) force mode Bar speed rtns in dir. of force to normal

V(act) > V(max) force mode Bar speed rtns against force to normal

V(act) too low mode spd —> normal

V(act) too hi mode spd —> normal

V(act) = zero mode spd —> normal

Force > limit stop Toggle power

Force out of force mode force rtns to tolerance allowable range Force too low & no Vel. error stop force mode Toggle power

Oscillations stblize servo end of exercise

Out of Pos. & force @ limit stop Toggle power

Out of Pos. & force = 0 stop 9 Toggle power

Pos. out of limit range no action none required

Bad A/D value reject data occasional increment tally

Bad A/D value stop 10 reoccurring Toggle power

Force applied cancel output Toggle power or to wrong bar to bar; select o.k. error message exercise

Set pos. error none none

invalid chksum ignore; inc. for count< count > limit invalid message count limit init. duart Time out 2 stop Toggle power

Invalid data inform syscon none

Power-up veri¬ fication failure 2 stop Toggle power

Finally, the control kernel program 830 provides control loop information in order to properly operate the hydraulic system. The control loop, which will be described in greater detail in FIG. 44, operates in a force mode, a position mode and a velocity mode.

Briefly, control in the force modes are accomplished by using a proportional-integral-calculated- differential (PICD) control algorithm. The PICD control loop utilizes a calculated variable gain, a decision block and a conditional integrator. The motor control signals are then accordingly derived from the force and position loops to effect control of the hydraulic system.

FIG. 33 illustrates a functional organization of the HAC software 800. More particularly, the organization and description of FIG. 33 is directed to showing how information .in the system is prioritized. The highest priority for the HAC software is the safety code 822 which forms part of the outer shell 820. Of second importance is the hydraulic control 824 which performs the control kernel routines 830 of FIG. 32. Finally, the message handling routine 810 is of the lowest priority. The message handler includes two sections, the message parser and responder 811 and the multi-drop reception and transmission routines 812.

Referring now to FIG. 34, the HAC start-up loop 840 is shown. The loop is located in the message handling program 810. The loop is initiated at step 841 where a variety of buffers and registers are first initialized at step 842. The message handling loop then waits for the SYSCON wake-up message 843, previously described in FIG. 27. Once a wake-up message is received at step 846, the loop is programmed to respond with a current status at step 847. If, however, the wake-up message is not received, the program loops back at step 845 until the wake-up message is finally perceived by the system. Upon responding with a current status, the HAC loop will fire-up other tasks 848. The software that has control at start-up will then pause 849 while those other tasks run the HAC. Once they have been completed, the routine will then exit.

The main HAC loop 840 works in close conjunction with the top level message loop 860 shown in FIG. 35. As shown in Fig. 35, the top level message loop 860 is an endless loop which waits for a message to come in and allows other tasks on the HAC to run. The loop is entered at point 861 where it will then initialize a communications channel at step 862. The loop will then await for an incoming message at step 863, and upon receipt, will respond to the message at step 864. If there have been too many communication errors, then the loop will return at step 866 to the beginning and reinitialize the com¬ munications channel at step 862. If there have not been too many errors, the loop will return to the incoming message waiting point 863. Initializing the communications channel 862 of FIG. 35 is described in more detail with reference to FIG. 36. The initialization routine is entered at step 870 where the dual-UART control registers 238 (FIG. 9) are initialized. The initialization function involves setting the baud rate, the stop signal, and the number of data bits in a character at step 872.

A multi-drop message mode is then set using an unused station number at step 873. This step involves setting an unused station number in the system to ensure that no messages are received while the initializing routine 862 is in progress. Any incoming characters are then removed at step 874 by initializing the pointers used by the communications channels. Step 875 sets the multi¬ drop mode with a correct station number so that the system is ready to receive messages. The software then returns to wait for the incoming message at step 863 (FIG. 35) .

The force profiling aspects of the outer shell are shown in more detail with reference to FIGS. 37-43. These routines are used to calculate a profile force, calculate a percentage of stroke, generate force profile tables and calculate a maximum stroke for a given exercise.

Force profiling begins with routine 880 which takes as an input a current position in the stroke. The stroke information is, in turn, profiled based on information about the current stroke determined by routines shown in FIGS. 42 and 43. Once this current position in the stroke is obtained, one of the two tables are used (depending on the stroke direction) to respectively give the desired force for each percentage position for bar motion in the initial stroke direction and then in the return stroke direction. Interpolation occurs at the end of the stroke in order to provide a smooth transition in those cases where the primary and return forces are different.

To calculate a force profile, the routine 880 is entered at step 881 where a subroutine 882 is immediately called in order to calculate the stroke as a percentage of the maximum stroke. This subroutine is described in detail in FIG. 39. Once that percentage of maximum stroke has been determined, the control kernel system is queried at 883 to determine if the user is on the return or initial strokes. If the return stroke is found at 884, the system is then asked whether the user is within ten percent of the end of the stroke at step 885. If the answer is yes, then the equipment automatically interpolates between the initial and return forces for the stroke position at 887. The interpolation subroutine 887 is shown in more detail with reference to FIG. 38.

If it is determined that the user is on an initial stroke at step 889, then the system returns to a table of initial forces 891 (the description of which is provided in FIG. 40) . If, however, on the return stroke the user is not within 10% of the end of the stroke at step 92, then the table of return forces 893 is referred to. After referring to the force table(s), the force profile is indexed into the selected table by the percentage of stroke and the value from that table is retrieved at step 894. The profiled force value is then returned to the control kernel at step 895. The interpolation routine 887 is shown in more detail in FIG. 38. This routine 887 performs the interpolation between the primary and the return forces at the end of respective primary and return strokes. The interpolation routine is based on the assumption that primary and return forces are generally different. When the bar motion is in the return stroke direction, and when the bar position is within 10% of either end of the stroke, the profile force which is returned is not taken directly from the return force table. Instead, the force is ramped between primary and return table entries in order that a smooth transition between the primary and return forces is imparted to the bar.

The interpolation routine 887 is entered at step 900. At step 902 the initial and return force table entries are selected by a percentage of the actual stroke position. Interpolation involves multiplying the difference at step 903 between the return and initial forces by the difference between the percentage of stroke and the nearest end of the stroke position. The resulting delta force value is then added to the initial force value at step 904 in order to achieve an interpolated force value. That interpolated force value is then returned to the system at step 905.

Calculating the percentage stroke of step 882 of FIG. 37 is, in turn, shown in more detail in FIG. 39. The routine 882 provides the current bar position as a percentage of the maximum stroke for a given exercise. A default value must be used for the maximum stroke length during the first stroke of an exercise. The calculated percentage of stroke routine is entered at step 910 where it is first determined if this is the first repetition. If the answer is yes 913, then the system assumes a default value for the maximum stroke length at step 914. If, however, this is not the first repetition 915, then the maximum length value is determined. The current stroke variable is then retrieved at step 917. The current stroke value is calculated in the subroutine illustrated in detail in FIG. 42. The routine for calculating the maximum stroke values is illustrated in more detail in FIG. 43.

Once that current stroke variable is attained, the percentage stroke of the variable is calculated in step 918 by multiplying 100 by the current stroke variable divided by the maximum stroke variable. The derived percentage of stroke value is then provided back to the system at step 905.

Calculating the profile force, as previously mentioned, depends upon retrieving profile table values at steps 891 and 893 as described in (FIG. 37) . These tables are separately calculated by the force profile table generating routine 920 of FIG. 40. The force tables are critical in order that the execution speed at any given point of the stroke is not calculated "on the fly" but rather is looked up in a system of precalculated values. In order to save time, the profiles are defined by tables using X and Y data pairs. The X axis represents a percentage of the stroke while the Y axis represents a percentage of base power. These variables together define the shape of the profile. The X and Y pairs are also used to create tables with 101 entries each, in order that, for any bar position (expressed as a percentage of the stroke) , it is relatively simple to obtain a corresponding force value from the Y axis.

Selection of the profile data table occurs in routine 920 at step 921. From the selected table and the initial and return forces, the profile table is generated. A loop value is then set at step 923 and that loop is iterated at step 924. Each section of the profile table is generated through the loop at step 926. Generation of sections of the profile table forms a separate subroutine shown in FIG. 41.

Once the section is generated, the loop is incremented at step 927 and returns to the top of the loop at 928. Once the iteration count reaches its' limit, the routine 920 returns to its call at 930.

The subroutine for generating one section of the force profile table 926 is shown in FIG. 41. This routine is entered at step 931 where the starting and ending X and Y values are expressed in percentage of stroke terms (X) and in percentage of force terms (Y) . The X value is then scaled at step 933 by the base force so that it is converted to the actual force to be used. At step 934, for each X value in the section, a Y value is calculated, as follows: the starting X position is multiplied by the base force and the values are calculated up to the ending X position multiplied by the base force. The pointers to X and Y values are then incremented by one position and the routine returns to the generating force profile table routine 920 at step 937. As previously mentioned, current and maximum stroke length variables are needed in order to define a percentage of stroke at step 882 of FIG. 37. The current stroke length subroutine 917 shown in FIG. 42, calculates the current bar position which is expressed as a distance from a reference position for the exercise. As shown in FIG. 42, the routine 917 is entered at step 940 where the current bar position is retrieved through the control kernel which, in turn, retrieves it from the potentiometer (FIGS. 18A, 18B) located on the exercise machine 10 (FIG. 1) . The current stroke length is then calculated as a dif¬ ference between the current bar position and the floor position for that exercise. A typical stroke length is normally less than the total travel of which the bar is physically capable of moving. A floor position, therefore, is set for each exercise in advance. The current stroke length is then returned at loop 944 back to step 917.

The maximum stroke length variable 916 is calculated in FIG. 43. The routine is entered at step 945 where the variable is tested to see if the current stroke is greater than the current maximum stroke for the current exercise. If the answer is yes at 948, then the variable is set equal to the current stroke length at 949. If, on the other hand, the variable is not greater than the maximum stroke, the current maximum stroke is maintained at step 950, or if the value has been set at step 949, then that current stroke is tested to see if it is greater than the overall maximum stroke at step 951. If the answer is yes, the overall maximum stroke is set to the current stroke length in step 953. If, on the other hand, the answer is not 954, then the routine is returned at step 955. Referring now to FIG. 44, the HAC control loop is set forth in more detail. More particularly, the HAC control loop 960 consists of two modes of operation: the first mode is the force control mode and the second, the position control mode.

The force control mode consists of a proportional 972, integral, 973 and differential 974 control algorithm. The algorithm includes a calculated contribution 992 to the output 978 and 980 based on the force requested 970 and a model of the basic open loop system performance. The force loop calculation step 992 is intended to yield an output value close to that which is required such that the amount of gain necessary in the PID portion of the loop is reduced. The calculated term permits reduced gain and still allows a better response time with more stability, while maintaining desired accuracy. High accuracy and good response time are crucial for a realistic feel for the exercise bar.

More particularly, the PID portion of the algorithm refers to standard control systems practice. It operates on the difference between the requested force 970 and the actual force 968 provided by a difference point 969. The actual force is read from the load cell 967 and has appropriate gain provided by the PID elements 972 (P) 973, 975 (I) and 974, 976 (D) . The PID contributions are then provided to summing point 977 along with the aforementioned calculated value 992(C). Thus, a PICD control contribution is calculated. The PICD output value is then passed to a conditional modifier 979 where a flooring algorithm can af¬ fect the output value. A detailed discussion of element 979 is provided below.

The modified gross output value then passes through a summing point 980 and into software buffer 987. The software buffer applies a transformation to the PICD value in order to account for the non-linearity of the hydraulic system. The net value of the output variable is limited by the buffer to what the hardware is capable of taking. That value is then provided as output to a digital-to-analog converter/amplifier which then applies the value to drive one or more proportional valves 963, as discussed previ¬ ously with reference to FIGS. 18A-C. The valves control the amount of fluid pressure to the cylinder 964. The load cell then weighs the cylinder force which is read by an internally located analog to digital converter (not shown) . The resulting digital value is then scaled and an offset applied to it. This scaled digital value represents the actual force value 968.

The second mode of operation for the HAC algorithm is the position control loop whose output is provided from the final scale and position value 991 to the decision block 979. The position control loop is used to simulate a floor upon which simulated weights can rest. The floor exists simply as a point beyond which the bar will not go. In order for the user to lift weights off of the floor, the floor is selected by the user for that exercise. The floor is designed to work in either positive or negative directions. For example, if the floor is set for an exercise where the user is pushing up, a force up is required in order to lift the bar up from the floor. In an exercise where the user must push down, the floor is set above the exercise, a force down is required in order to lower the bar from the floor. In either case, the force that the user must use is a direction opposite to returning the bar to the floor. The floor position control loop assures that when the bar has reached the floor, the position control mode takes effect and limits any further travel.

The position control loop uses a PICD control algorithm utilizing a calculated variable gain 993, the decision block 979, and a conditional integrator 988. The control loop begins with an end position or floor position request 983, as compared with the actual position 996 in the summing block 982. The outcome of this operation is the position error signal P 984. The error value 984 is then applied to the proportional 985, the integral 987, 990 and 988 and the differential 986, 989 legs of the respective control loop. The outputs are then summed at summing point 995 in a standard fashion.

The integrator arrangement 987, 988 and 990 forms a conditional integrator as it is not allowed to integrate a value unless the bar is within one inch of the set floor of 988. This step is included in the control loop in order to prevent an integrator wrap-up when the error is very high. This is because the PICD position loop is only used at the end of the exercise stroke. As such, it is important not to fill the integrator with data from outside its own working range. In this situation, significant delays will not result in a delay of the response time during a critical period of the exercise stroke. Conversely, it is important for the differential term to be influenced by the velocity of the bar when approaching the one inch zone so that the counter-force can contribute appropriately to that value. Although the positional error P has no knowledge of the applied force, that applied force must be taken into account. This is done by means of the calculated scale 993 which acts as a modifier on the position signal. The scale factor used in the calculate-scale step 993 is determined from the force request signal 970 which is used as a final multiplier for the position control signal from the position control loop at summing point 995.

The position input is received from the bar 965 which can include a position sensor for an attachment to the exercise bar. The scaled position loop output 991 is received by the decision block 979 along with the PICD force loop variable. This block takes the position output signal and the force output signal and compares their polarity. If signals A and B (respectively force and position) are of opposite polarity, then the bar is near or at the floor. The C signal then becomes equal to A - B, which makes the output of the summing point 980 (2 x A - B) . By doing so, the B signal (position output) is allowed to drive the A signal (force output) to zero, effectively stopping the bar at the floor.

If, on the other hand, the signals A and B are of the same polarity, then that represents the bar being pulled away from the floor. In this situation, the C signal becomes A + B and the output of summing point 485 is equal to (2 x A + B) . The decision function 979 therefore represents a function whose only discontinuity is at zero where it cannot be seen. This function thus appears to act continuously, imitating the effect of positive and negative gravity on the bar.

Referring now to FIG. 45, the software for the digital speech board 1000 is illustrated. As previously described with respect to the FCP, the digital speech board includes a message handling routine for handling all incoming and outgoing messages from the SYSCON. The purpose of the digital speech board software 1000 is to perform three major functions: communication with SYSCON, sentence forming, and audio conditioning.

The message handling with the SYSCON consists primarily of receiving requests for spoken phrases at the message handling block 1002. The status of the phrase in process and the volume control also is available to SYSCON through the communications handling software 1002.

The sentence forming routine 1008 acts to concatenate speech data from the speech EPROM 350 (FIG. 16) in order to form sentences requested by the speech control and status block 1004. Pauses between words are interspersed into the sentence by means of block 1006 in order to form natural sounding speech.

The volume for the digital speech board software is ultimately controlled by the user from control knob 88 on the front control panel 20 (FIG. 2). The DSB 1000 (FIG. 16) , however, will modify the volume based upon the type of message and the exercise in process. As such, the volume is reduced for exercises where the user is located near the speaker and increases for those exercises where he or she is relatively far away.

The speech processor uses real-time filter placement software 1014 controls the placement of formant filters 1014 and 1016. Because of the strength of the fundamental excitation frequency used to drive the formant filters of the LPC filter chain (see description of FIG. 16) , there is a noticeable amount of unwanted harmonic energy produced. The filters are thus placed on two of the harmonics of the pitch by the speech control status software 1004.

FIG. 46 shows the top level DSB program 1020. The program is entered at the start position 1022 and immediately initializes the buffers and registers in the digital speech board at step 1024. The routine then goes into a loop at step 1026 waiting for a message from SYSCON. Once the message has been received and processed, the speech is queued-up by calling the subroutine at 1028. The loop then returns at step 1025 to wait for the next message from the SYSCON.

The queue speech subroutine 1028 is shown in further detail in FIG. 47. This routine responds to a request for a specific verbal message. The routine operates on the DSB software to queue up speech request numbers. An interrupt routine 1060, described below, determines which speech files are required for the request. The actual output of the speech is data which is put together by the interrupt routine. There are two priorities which operate on the DSB: "speak in turn", and "drop everything else and say this". If a speech request comes in under the "drop everything" priority, then any speech which is queued up in this routine is immediately stopped. Block 1040 contains a description of the request routine 1028. A test to see if the request is high priority occurs at step 1044. If it is determined that the request is high priority 1045, then a flag to kill the current speech and anything else in the queue is set at step 1046. The interrupt routine 1060 (described below) performs the actual kill. If, however, the request is low priority 1047, then the pointers are set to the queued phrase and the speech request routine 1028 returns at step 1049.

Handling of the speech request occurs through a timer interrupt routine 1060, illustrated in FIG. 48. The interrupt procedure outputs speech data to the speech synthesizer chip 354 (FIG. 18) . If a high priority speech request comes in, as previously described with reference to FIG. 47, the code terminates any current speech request. In order to avoid a loss of synchronization with the speech chip, a stop command can be given only between 5-byte speech frames. The routine is entered at step 1061 where an "any utterance requested" test occurs at step 1062. If an utterance has been requested at 1063, then the routine tests whether this is a new request or one that is already in progress 1064. If it is determined that it is a new request 1065, then the pointers on the speech file are initialized at step 1066 and they list the pointers into the speech file. If, however, this request is already in progress 1067, then the system tests whether a kill request (from a high priority request) has been received. If a kill request or high priority request has been received at 1069, the system tests whether the condition is okay for a kill 1070. If the correct conditions for a kill are found 1071, then the data pointers are set to stop the command 1072 at the end of a speech file.

If, on the other hand, the correct conditions are not established for a kill 1073, then the routine returns to test whether the DSB speech circuit is ready for the next request at 1074. If the DSB is ready 1075, then it retrieves the byte 1076, increments the queue pointers, and sends the byte to the speech chip. If the speech chip is not ready 1070, then the system returns to the end of speech file 1078. Moreover, if it is determined that the end-of-speech file exists at 1079, then a kill request is tested at 1080. If there is no kill request 1081, then the routine tests if it is the end of speech file list 1082. If the answer is no, the routine increments to the next speech file 1084 in the list and sets up pointers. If however, the kill is requested, 1085 then it will mark the kill as completed 1086, and if it finds that it is at the end of speech file 1087, then all of the pointers are then cleared at step 1088. The routine exits at step 1090. If no utterance is requested at step 1060, then the program immediately loops at step 1092 to exit at 1090.

D. Operation of the System

As the user interface, hardware and software elements have been described in preceding sections A-C, a description of the operation of the system from the user's perspective will now be provided. When the user first approaches the device 10, a quick glance at the FCP 20 will indicate the current status of the machine. The user will then press the POWER ON/OFF button 52 which will turn the system on. When the user is ready to proceed with any exercise, he will then perform the following steps:

1. Adjust the bench 12.

2. Adjust the main arm 16 and handles 17 or the leg bar 14.

3. Move into the proper exercise position.

4. Adjust the arm bar 16 and/or leg bar 14 to the proper starting position.

5. Press the SSN buttons 94 or 22a, 22b (FIGS. 1 and 2)

Once in position, the user grasps the handles and moves the bar into position. At this point the leg bar 14 or the arm bar 16 is free floating (i.e., it requires an insignificant amount of force to move) and should be positioned a few inches above the users' beginning point. Once the user is comfortable with the position of the arm bar 16 or leg bar 14, he will then press the SSN buttons 94, 22a, 22b to inform the system that the current position of the bar is to be used as an "artificial floor" and that he is ready to begin exercising.

Upon pressing the SSN buttons 94, 22a-b, the user will notice a variety of changes taking place in the screen LCD 40 and will then hear audio tones signifying that the system is ready to begin the exercise. If, for example, the user is performing a bench press on arm bar 16 and the audio tone is TOTAL 82, the user will hear the system voice say "please begin the exercise". Once the exercise is begun, the elapse timer 101, 102 on the display starts tracking the elapsed session time once the arm 16 or leg 14 bars begin to move. The LED weight stack 58 on the FCP 20 locates this point at the 0% stroke.

If the user is in the STRENGTH Program mode (FIG. 5A) , the most prominent item on the LCD display will be the large blinking words "WARMUP" 115. This indicates that the current exercise set will be a Warm-Up set. The user may then perform the number of repetitions he feels are adequate before beginning the first regular set. The user then begins the exercise by moving the arm bar 16 or leg bar 14.

If, for example, the user is performing a bench press, the user begins his initial stroke by pushing the arm bar 16 away from his chest (towards the ceiling) and then completes one repetition by performing the return stroke (moving the arm bar 16 from the ceiling from the 100% point back to the 0% point) . A tone sounds when the arm reaches the 100% point and when it returns to the 0% point. The values for the Work Done 112 and the Power Rating 113 fields are updated and displayed upon the completion of each repetition. These values are cumulative for the entire session.

Although the user is free to do as many repetitions as he wishes, if he completes the suggested Target Reps No. 109, then tones will sound to indicate this accomplishment.

When the user is satisfied with the number of repetitions completed, he will stop moving the arm bar 16 and press the SSN buttons 94, 22a-b, to signal that he has completed his set and is ready to move on to the next set. Alternatively, the user could let the arm bar 16 remain motionless for 15 seconds so the system would automatically end the current set.

When the set is finished, the number of Target Sets 105 is displayed on the LCD 40 and that number is reduced by 1. When all the Target Sets 105 for the bench press have been completed, the system automatically moves to the next exercise in the routine sequence.

Alternatively, if the user decides that he does not wish to perform a certain exercise, he can change the current exercise selection via the UP/DOWN selector keys 91a, 91b when the cursor is in the Exercise No. field 103.

When the user has completed an exercise session, he presses the END WORKOUT 56 or simply turns the machine off by pressing the POWER ON/OFF button 52. By pressing the END WORKOUT button 56, the user returns to the SETUP screen (FIG. 4) and the next user may then begin an exercise session. If requested, the system will then provide a detailed summary of that user's exercise session. This option is activated by pressing the PRINTOUT AT END button 53 at any point during the workout. When the user completes this session, the print system will generate the printed report. Regardless of how the session is terminated (END, POWER ON/OFF, PAUSE, TIMEOUT) , the system will generate the report if the PRINTOUT AT END button 53 has been activated. If the user decides that he does not want a printed report, he will simply press the PRINTOUT AT END button 53 a second time and the LED above the PRINTOUT AT END button will turn off.

While the invention has been described in detail with respect to specific embodiments, it will be apparent to one skilled in the art that various changes and modifications can be made without departing the spirit and scope thereof.. For example, a pneumatic system can be employed in place of the hydraulic system. The present invention also can be used in a number of different applications which take advantage of the force generation and control features described herein. For example, the device can be used in a medical, or physical therapy or sports medicine application. For those users who are overcoming specific injuries or disabilities, the force generation system can be utilized to provide physical therapy in accordance with pre-programmed instructions. Moreover, the workout-related data can be analyzed by the occupational therapist or physician, and used to tailor further therapy.

Another example of an application for this system is robotics. In other words, the force generation and control system can be used to control robotics tasks. Thus, the gripping function performed by robotic devices can be controlled through the present force generation device, and position interpolation, necessary in certain robotics environments (e.g., milling, cutting or welding), can be implemented by the control system of this invention. Further applications for the system also include weight measurement and hydraulic control. However, the present system is not restricted only to these applications, but is generally applicable to any force generation application. What is claimed is:

Claims

1. An automatic force generating system, comprising:
programming means for providing a level of resistance to said force generating system;
calculating means for determining an amount of force corresponding to said level of resistance; and
control means for automatically setting and maintaining said amount of force corresponding to said selected level of resistance.
2. The automatic force generating system of claim 1, further comprising varying means wherein said amount of force varies in correspondence to a level of resistance.
3. The automatic force generating system of claim 1, wherein said varying means comprises force calculating means whereby said variation in force level corresponds to a force profile calculation.
4. The automatic force generating system as in claim 3, wherein said profiled force is calculated based on a current position in an exercise stroke such that said current position is calculated as a percentage of a maximum stroke and said profiled force is determined by indexing into a selected profile force table by said percentage of said maximum stroke.
5. The automatic force generating system of claim 4, wherein said selected force table comprises initial force values.
6. The automatic force generating system as in claim 5, wherein said selected force table comprises return force values.
7. The automatic force generating system of claim 6, wherein when said return stroke is within 10% of either end of said stroke, said stroke force profile is interpolated between initial and return forces for determining said force value.
8. The automatic force generating system of claim 7, wherein said interpolated force value is determined by:
inputting means for obtaining said initial and return force table entries selected by said percentage of stroke;
first difference means for obtaining a difference between said return and initial forces;
second difference means for determining a difference between said percentage of stroke and a nearest end of stroke position;
multiplying means for multiplying said first difference and second difference to obtain a delta force value; and adding means for adding said delta force value to said initial force value to obtain said interpolated force value.
9. The automatic force generating system as in claim 8, wherein said percentage of maximum stroke is determined by:
first means for obtaining a maximum stroke length;
second means for obtaining a current stroke length; and
stroke calculating means for obtaining a percentage of maximum stroke by multiplying 100 by said current stroke length divided by said maximum stroke length.
10. The automatic force generating system of claim 9, wherein said maximum stroke length value is obtained from a default value when an exercise is at a first repetition.
11. The automatic force generating system of claim 9, wherein said maximum stroke length value is obtained from a maximum stroke length variable from said automatic force generating system control means.
12. The automatic force generating system of claim 9, wherein said maximum stroke length is determined when said current stroke length is greater than a previous maximum stroke length. -IS O-
IS. The automatic force generating system of claim 9, wherein said current stroke length is the difference between a current stroke position and a preset floor position.
14. The automatic force generating system as in claim 4, wherein said profile force table is defined by X and Y data pairs, wherein X represents a percentage of stroke and Y represents a percentage of base power, where the Y value equals X plus the base force value.
15. The automatic force generating system of claim 1, wherein said control means comprises a system control means.
16. The automatic force generating system of claim 15, wherein said system control means comprises:
a processor for processing all operating systems and operating calculations for said force generation system;
a timer for coordinating timing of said force generating system;
a communications device for controlling the communications between elements of said force generating systems;
a memory for storing all data related to said force generating system; and an enabling/disabling device for controlling system failure and system shutdown.
17. The automatic force generating system of claim 16 wherein said control means further comprises a control panel.
18. The apparatus of claim 17, wherein said control panel comprises a plurality of keypad buttons, and several displays and system editor software whereby the user can interact with the force generating system through said front control panel such that information is processed by said front control panel hardware and software in order to communicate with said system control means and said force generating system.
19. The apparatus according to claim 1, wherein said control means further comprises digital speech control means.
20. The apparatus according to claim 19, wherein said digital speech control means provides synthesized speech and tones that prompt the user with appropriate voice and tone messages during use.
21. The apparatus according to claim 1, wherein said control means further comprises a hydraulic actuator control means for controlling and communicating feedback and control information to appropriate force generation devices.
22. An automatic force control system, comprising: programming means for selecting an exercise and level of force for an exercise;
calculating means for determining said amount of force and positions based on information from said programming means; and
force and position control means for automatically varying said amount of force during exercise.
23. The automatic force control system as in claim
22, wherein said force is provided by hydraulic pistons having proportional valves whereby pressures in said pistons are varied by said proportional valves in order to correspond to said selected level of force.
24. The automatic force control system as in claim 23, wherein variations in amount of force are calculated by said calculating means to produce a requested force setting for said hydraulic pistons and to produce a position for setting position control signals for said force setting.
25. The automatic force control system as in claim
23, wherein a negative feedback force setting control signal is calculated in a proportional-integral-calculated- differential (PICD) control loop.
26. The automatic force control system of claim 23, wherein said negative force setting is accomplished by:
difference means which determines the difference between actual and requested forces; proportional-integral-difference (PID) means which operates on said difference to provide an output control signal;
first summing means for summing said PID force values in order to provide a gross output force value;
conditioning means wherein said gross output force value is conditioned based on a position output value;
summing means to produce a modified gross output value;
transformation means for transforming said modified gross output value to a non-linear control valve; and
conversion means for converting said transformed value to an analog force control signal in order to drive said proportional valves of said force control system.
27. The automatic fore control system of claim 26, wherein said transformed value is substantially between 0 and 255.
28. An automatic force control system comprising:
a force generator; a lifting device connected to said force generating means;
a program device for setting an amount of force; and
a controller for automatically controlling said force generator and lifting device based on weight and position settings.
29. The automatic force control system of claim 28, wherein said program device provides visual, audio and printed outputs to a user.
30. The automatic force control system as in claim 28, wherein said program device further comprises a front control panel located on said force control system to receive inputs for said force control system and to provide output to a user of said force control system.
31. The automatic force control system as in claim 28, wherein said front control panel comprises:
an LCD display for displaying information;
an LED display for indicating exercise stroke positions;
an audio device for providing audio prompts to such user;
a keyboard for inputting information; and a printer for providing exercise data.
32. The automatic force control system of claim
31, wherein said keyboard allows a user to select multiple exercise programs that are pre-programmed in said automatic force control system.
33. The automatic force control system of claim
32, wherein said programs include setup, strength, dual circuit, aerobic and toning programs.
34. The automatic force control system of claim
33, wherein said LCD display is adapted to display informa¬ tion relating to each of said programmed modes.
35. The automatic force control system according to claim 33, wherein said aerobic program enables such user to exercise at an aerobic pace at a specified rate through a series of pre-selected force control exercises.
36. The automatic force control system according to claim 35, wherein said aerobic program uses an amount of weight set at 40% of said amount of weight in said strength.
37. The automatic force control system according to claim 36, wherein a user selects on said LCD display a total amount of time he/she wishes to exercise, the total pounds of force desired and a target number of repetitions desired.
38. The automatic force control system according to claim 37, wherein said aerobic program will automatically calculate such users' pulse limits where an upper pulse limit and a lower pulse limit are based on (220 - Age) + Constant.
39. The automatic force control system according to claim 38, wherein such user's control pulse rate is displayed on said LCD screen through a sensing means located in said automatic force control system.
40. The automatic force control system according to claim 39, wherein a work load number will be displayed for each completed exercise, said work load number will be measured in foot-pounds based on calculating force over a set stroke distance.
41. The automatic force control system according to claim 40, wherein said aerobic program provides a power rating representing the work completed divided by the actual time said lifting means was working.
42. The automatic force control system of claim 41, wherein said aerobic program provides a force profile curve representing a graphical profile of the. amount of force desired for a given exercise.
43. The automatic force control system according to claim 42, wherein said force profile curve can be programmed from hard-to-easy-to-hard or from easy-to-hard- to-easy levels.
44. The automatic force control system according to claim 43, wherein a user can select between three different profile levels of difficulty.
45. The automatic force control system according to claim 43, wherein said strength program allows a user to work with preset forces correlated to a target number of repetitions.
46. The automatic force control system according to claim 33, wherein said circuit program allows a user to work through a circuit of pre-programmed exercises in a shortest time with preset rest periods between said exercises and wherein a force setting will be between 40% to 80% of the force value for the same exercises in said strength program.
47. The automatic force control system according to claim 43, wherein said toning program automatically moves said resistance means wherein such user will attempt to move along with said motion or will resist said motion.
48. The automatic force control system according to claim 47, wherein if such user should stop the resistance of said lifting means will automatically stop.
49. The automatic force control system according to claim 43, wherein said programming means includes routine A, routine B, custom, freestyle and casual routines.
50. The automatic force control system according to claim 49, wherein said routine A and routine B routines comprise pre-programmed exercise sets enabling a user to exercise his/her entire body in a logical order in each of said programs.
51. The automatic force control system according to claim 49, wherein said custom routine allows a user to store his/her exercise sequence in memory for repeated use in a selected program mode.
52. The automatic force control system according to claim 49, wherein said dual routine enables two users to call exercises at random.
53. The automatic force control system according to claim 49, wherein said casual routine allows a user to not retain such user's exercise data.
54. The automatic force control system according to claim 43, further comprising a select/enter key which allows the user to delete or add exercises to a chosen routine.
55. The automatic force control system according to claim 43, further comprising a demo mode which will activate an automated pre-programmed demonstration of said force control system.
56. The automatic force control system according to claim 28, further comprising an audio output means to provide audio prompts to a user.
57. The automatic force control system according to claim 56, wherein said audio output means operates in four modes: total, partial, tones, and no audio.
58. The automatic force control system according to claim 57, wherein said total audio or partial modes will enable said automatic force control system to communicate expressions to such user.
59. The automatic force control system according to claim 28, wherein said programming means includes select arrow keys and pause keys allowing an operator to change settings on said LCD screen.
60. An automatic force generation and control system, comprising:
force generating means;
resistance means connected to said force generating means;
programming means for setting a force level and position for said lifting means;
calculating means for determining said force level and said position; and
control means for automatically controlling said force generating means and said resistance means.
61. The automatic force generating and control system according to claim 60, wherein said control means comprises:
system control means; front panel control means;
digital speech control means;
hydraulic actuator control means; and
serial link means for connecting said system control means to said front panel control means, said digital speech control means and said hydraulic actuator control means.
62. The automatic force generating and control system according to claim 61, wherein said control system further comprises a kiosk control means physically separated from said automatic force control system and connected by said serial link such that said kiosk control means provides additional control functions for said system.
63. The automatic force generating and control system according to claim 62, wherein said system control means is connected to an external computer such that data from said automatic force generating and control system is processed through said external computer.
64. The automatic force generating and control system according to claim 63, wherein said system control means is connected to a local area network to enable communications between multiple automatic force generating and control systems on said local area network.
65. A method for controlling a force on a controlled object so that the force follows a force profile, comprising the steps of:
measuring an actual position of said controlled object and an actual force applied to said controlled object;
selecting a requested force from the force profile according to said actual position of said controlled object;
determining a gross force output value by applying the difference between said actual and said requested force values to a PID control and by applying a required force to a model of an open loop system;
determining a scaled position output value by applying a difference between said actual position and a position requested from said PID control, and scaling the output from said PID control by a factor determined from said requested force; modifying said gross force output value according to said scaled position output value, so that when the controlled object moves near the end position, a modified gross output value is driven to zero, and when the controlled object is far from the end position requested, the modified gross output value is determined to correct the difference between the actual and requested forces;
transforming the modified gross output value to ac¬ count for non-linearities; and applying a force on the controlled object by driving valves according to the modified gross output value.
66. The method as defined by claim 65, where the method controls a force asserted on a weight-lifting bar.
67. The method as defined by claim 65, wherein said selecting step, said determining a gross force step, said determining a scaled position step and said modifying step are performed by a microprocessor.
68. The method as defined by claim 67, further including the step where the modified gross output value is converted from a digital signal to an analog signal before deriving said values.
69. The method as defined by claim 67, where the actual position of said controlled object and said actual force applied to said controlled object are measured respectively by a potentiometer and load cell.
70. The method as defined by claim 68, further including the step of converting from analog to digital said actual position and said actual force.
71. A control system for applying a force on a controlled object according to a force profile, comprising:
a measurement device for measuring an actual position of said controlled object and an actual force applied to said controlled object; a selecting device for selecting a requested force from said force profile according to said actual position of said controlled object;
a control loop for calculating a modified gross output value so that when said controlled object is far from an end position requested, said modified gross output value derives said actual force towards said requested force, and when the controlled object is near an end position requested, the modified gross output value is driven to zero; and
an output device for applying a force on said controlled object by driving valves according to said modified gross output value.
72. The control system according to claim 71, wherein said control loop is accomplished by:
a force difference device which determines the difference between said actual and said requested forces;
a force proportional-integral-derivative (PID) device which operates on said force difference to provide a force output value;
an open loop model for applying a required force value to a system model;
a force summer for summing said force output value and said open loop model contribution to obtain a gross force output value; a sealer for scaling said position output value according to said required output value;
conditioner means wherein said gross output value is determined on a scaled position output value; and
a totalizer to produce said modified gross output value.
73. The control system according to claim 71, wherein said controlled object moves back and forth within two end positions requested.
74. The control system according to claim 73, wherein said controlled object moves back and forth within two end position requested, and said requested force is selected from primary and return force profiles.
75. The control system according to claim 74, wherein when said actual position is within 10% of either said end positions requested, and said requested force is interpolated based on a return force profile.
76. The control system according to claim 71, wherein a user can select a base force value on which said force profile is based.
77. The control system according to claim 76, wherein a user can select a downward or upward sloping force profile.
78. The control system according to claim 77, wherein a user can select between three different sloped profiles.
79. A control system for applying a force on a controlled object according to a force profile, comprising:
load cells for measuring actual forces on a controlled object wherein one load cell is associated with one cylinder valve;
potentiometers for measuring actual positions of said controlled objects;
a multiplexer for routing said actual forces and said actual positions signals from said load cells and potentiometers;
an A/D converter for digitizing said actual forces and said actual positions signals;
a microprocessor which receives said actual forces and said actual positions signals, selects a requested force from a force profile according to an actual position signal, and determines a modified gross output value;
D/A converters for converting the modified gross output value to an analog value; and
a valve driver for applying a force on the controlled object by driving said valve according to the modified gross output value.
80. The control system according to claim 79, further comprising a software buffer for transforming the modified gross output value to account for non-linearities in the valve driver.
81. The control system according to claim 79, where in said modified gross output value is determined by a PID control loop so that when the controlled object is near the end position requested, a modified gross output value is driven to zero, and when the controlled object is far from the end position requested, the modified gross output value is determined to correct the difference between the actual and requested forces.
82. The control system according to claim 79, wherein said controlled object moves back and forth within two end positions requested.
83. The control system according to claim 82, wherein said controlled object moves back and forth within two end positions requested, the requested force is selected from primary and return force profiles.
84. The control system according to claim 74, wherein the actual position is within 10% of either end position requested, the requested force is interpolated on the return force profile.
85. . A method for generating forces having a force generating system comprising the steps of:
programming a level of difficulty to said force generating system; calculating an amount of force corresponding to said level of difficulty;
setting said amount of force corresponding to said level of difficulty in said force generating system such that a user of said system controls the level of difficulty of such users exercises automatically, without physically changing the force level.
86. The method according to claim 85 further comprising the step of varying said level of force in correspondence to said level of difficulty.
87. A method of lifting weights using an automatic weight lifting system, comprising the steps of:
selecting an exercise and level of weight force at exercise;
calculating set amount of weights and positions of weights based on information from said selection step; and
automatically varying said amount of weight during use of said automatic weight lifting system.
88. A method for force generation and control utilizing an automatic force generation and control system comprising the steps of:
programming a setting force level and position for said automatic force generation and control system; -re¬
calculating said force level and said position based upon said settings; and
automatically controlling said force generation means.
89. The method of claim 88, wherein said force generation and control method is employed in a weight lifting system.
90. The method of claim 88, wherein said force generation and control method is employed in medical diagnostics.
91. The method of claim 88, wherein said force generation an control method is employed in occupational therapy.
92. The method of claim 88, wherein said force generation and control method is employed in a robotics system.
93. The method of claim 88, wherein said force generation and control method is employed in a weight measuring system.
PCT/US1990/006481 1989-11-13 1990-11-13 Automatic force generating and control system WO1991007214A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US43562789A true 1989-11-13 1989-11-13
US435,627 1989-11-13

Publications (1)

Publication Number Publication Date
WO1991007214A1 true WO1991007214A1 (en) 1991-05-30

Family

ID=23729156

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1990/006481 WO1991007214A1 (en) 1989-11-13 1990-11-13 Automatic force generating and control system

Country Status (2)

Country Link
AU (1) AU7169091A (en)
WO (1) WO1991007214A1 (en)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0655264A1 (en) * 1993-11-30 1995-05-31 Fritz Gegauf Ag Bernina-Nähmaschinenfabrik Force resp. muscle exercise machine
NL1006270C2 (en) * 1996-06-12 1999-06-23 Technogym Srl Exercise machine with variable configuration.
EP1239390A1 (en) * 2001-03-08 2002-09-11 Combi Corporation Physical training machine operation system and method
US7704195B2 (en) 2005-11-25 2010-04-27 Technogym S.P.A. Gymnastic machine
ITRA20080044A1 (en) * 2008-11-10 2010-05-11 Technogym Spa exercise machine
US8690735B2 (en) 1999-07-08 2014-04-08 Icon Health & Fitness, Inc. Systems for interaction with exercise device
US8968155B2 (en) 2012-07-31 2015-03-03 John M. Bird Resistance apparatus, system, and method
US9028368B2 (en) 1999-07-08 2015-05-12 Icon Health & Fitness, Inc. Systems, methods, and devices for simulating real world terrain on an exercise device

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2086738A (en) * 1980-11-04 1982-05-19 Ariel Gideon Bruce Programmable exercising device
US4765613A (en) * 1987-01-22 1988-08-23 Paramount Fitness Equipment Corporation Progressive resistance exercise device
US4838257A (en) * 1987-07-17 1989-06-13 Hatch Guy M Ventilator
US4865315A (en) * 1986-01-27 1989-09-12 Universal Gym Equipment, Inc. Dedicated microprocessor controlled exercise resistance machine
US4869497A (en) * 1987-01-20 1989-09-26 Universal Gym Equipment, Inc. Computer controlled exercise machine
US4934694A (en) * 1985-12-06 1990-06-19 Mcintosh James L Computer controlled exercise system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2086738A (en) * 1980-11-04 1982-05-19 Ariel Gideon Bruce Programmable exercising device
US4934694A (en) * 1985-12-06 1990-06-19 Mcintosh James L Computer controlled exercise system
US4865315A (en) * 1986-01-27 1989-09-12 Universal Gym Equipment, Inc. Dedicated microprocessor controlled exercise resistance machine
US4869497A (en) * 1987-01-20 1989-09-26 Universal Gym Equipment, Inc. Computer controlled exercise machine
US4765613A (en) * 1987-01-22 1988-08-23 Paramount Fitness Equipment Corporation Progressive resistance exercise device
US4838257A (en) * 1987-07-17 1989-06-13 Hatch Guy M Ventilator

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5588938A (en) * 1993-11-30 1996-12-31 Fritz Gegauf Ag Bernina Nahmaschinenfabrik Strength of a muscle training apparatus
EP0655264A1 (en) * 1993-11-30 1995-05-31 Fritz Gegauf Ag Bernina-Nähmaschinenfabrik Force resp. muscle exercise machine
US6409631B1 (en) 1996-06-11 2002-06-25 Technogym S.R.L. Variable configuration exercise machine
NL1006270C2 (en) * 1996-06-12 1999-06-23 Technogym Srl Exercise machine with variable configuration.
US8690735B2 (en) 1999-07-08 2014-04-08 Icon Health & Fitness, Inc. Systems for interaction with exercise device
US9028368B2 (en) 1999-07-08 2015-05-12 Icon Health & Fitness, Inc. Systems, methods, and devices for simulating real world terrain on an exercise device
EP1239390A1 (en) * 2001-03-08 2002-09-11 Combi Corporation Physical training machine operation system and method
US7063643B2 (en) 2001-03-08 2006-06-20 Combi Corporation Physical training machine operation system and method
US7704195B2 (en) 2005-11-25 2010-04-27 Technogym S.P.A. Gymnastic machine
ITRA20080044A1 (en) * 2008-11-10 2010-05-11 Technogym Spa exercise machine
EP2184088A1 (en) * 2008-11-10 2010-05-12 TECHNOGYM S.p.A. Gymnastic machine
US8968155B2 (en) 2012-07-31 2015-03-03 John M. Bird Resistance apparatus, system, and method
US9717952B2 (en) 2012-07-31 2017-08-01 John M. Bird Resistance apparatus, system, and method
US10159870B2 (en) 2012-07-31 2018-12-25 John M. Bird Resistance apparatus, system, and method
US10159869B2 (en) 2012-07-31 2018-12-25 John M. Bird Resistance apparatus, system and method

Also Published As

Publication number Publication date
AU7169091A (en) 1991-06-13

Similar Documents

Publication Publication Date Title
Matarić et al. Socially assistive robotics for post-stroke rehabilitation
US7758469B2 (en) Exercise device visual representation
US5890997A (en) Computerized system for the design, execution, and tracking of exercise programs
US7618346B2 (en) System and method for controlling an exercise apparatus
US6702719B1 (en) Exercise machine
EP1993681B1 (en) Method and system for controlling training
EP0255621B1 (en) Training device and method of using same for rehabilitation
US6595901B2 (en) Method and apparatus for isometric exercise
US8066514B2 (en) Automated processing of training data
US6358187B1 (en) Apparatus for monitoring and displaying exertion data
US6921351B1 (en) Method and apparatus for remote interactive exercise and health equipment
EP1530986B1 (en) Apparatus and method for providing a user with a personal exercise program
US8012107B2 (en) Methods and apparatus for rehabilitation and training
US6746371B1 (en) Managing fitness activity across diverse exercise machines utilizing a portable computer system
US9378657B1 (en) Mobile computing weight, diet, nutrition, and exercise management system with enhanced feedback and goal achieving functionality
US5598849A (en) Interactive exercise monitoring system and method
US8721503B2 (en) Training method and device
JP6454304B2 (en) Fitness monitoring method, system, program product and application thereof
US7780574B2 (en) Systems and methods for administering an exercise program
US20090023553A1 (en) Exercise systems in local or global network
US20030088196A1 (en) Customized physiological monitor
US8747282B2 (en) Process and apparatus for exercising an operator
US5931763A (en) System for programming training on exercise apparatus or machines and related method
US5569120A (en) Method of using and apparatus for use with exercise machines to achieve programmable variable resistance
US6436058B1 (en) System and method for implementing rehabilitation protocols for an orthopedic restraining device

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AT AU BB BG BR CA CH DE DK ES FI GB HU JP KP KR LK LU MC MG MW NL NO RO SD SE SU

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE BF BJ CF CG CH CM DE DK ES FR GA GB GR IT LU ML MR NL SE SN TD TG

COP Corrected version of pamphlet

Free format text: PAGES 3/59,38/59,41/59,45/59 AND 59/59,DRAWINGS,REPLACED BY NEW PAGES BEARING THE SAME NUMBER;DUE TO LATE TRANSMITTAL BY THE RECEIVING OFFICE

NENP Non-entry into the national phase in:

Ref country code: CA