The GM215 works as a multiple-axis motion controller when 2 or more drives are connected via its RS-485 interface. When used this way, one GM215 must be named as the X drive (SW3 = ON, SW4 = ON) to make it the master drive. Each of other drives must be set to a unique axis name (Y, Z, or W) using SW3 and SW4.

Once connected and named, the other slaved drives automatically synchronize themselves to the X-drive's microprocessor clock via sync pulse sent over the RS-485 interface. The drives communicate with each other and behave as if they were a single, 4-axis motion controller. All the drive's Flash ROMs are programmed with same user's application program; each drive executes only those commands that match the drive's name. This simplifies programming, editing and program maintenance because the drives are interchangeable. A single .bin file sent from the GeckoMotion application is written to all drives' Flash ROMs simultaneously.

Once a user's program is debugged and flashed to the drives, the drives can be put into RUN mode (SW1 = OFF, SW2 = ON) and the PC interface can be disconnected. The drives will execute the user's program from its non-volatile memory without a PC connection.

The drive's Flash ROM stores up to 65,536 lines of commands and all commands have fixed 2-word (32-bit) length. Appendix A shows how these commands are coded to this 2-word binary format used by the GM215. This is to allow a user to write their own GUI if they wish to do so. The RS-485 uses a standard UART set to 115,200 baud, 8-bit data, no parity and 1 stop bit.

Commands can be entered and debugged while the GM215 is in the EDIT PROGRAM mode (SW1, SW2 OFF). The GM215 must be connected to PC via its RS-485 interface while in the EDIT PROGRAM mode and the PC must be running the GeckoMotion application.

The commands have 3 main groups; Configuration commands, Motion commands and Program Flow commands:


CONFIGURE AXIS        Set the axis motor current and other parameters

ACCELERATION          Set axis rate of acceleration

VELOCITY                      Set axis target velocity

ANALOG INPUTS         Switch the axis between digital and analog inputs

VECTOR AXIS               Combine 2 or more axis for vector motion

MOVING AVERAGE      Filter the axis motion using a moving average filter

LIMIT CW                         Set the axis CW travel limit



MOVE                                Move axis to an absolute or relative destination

HOME                                Home the axis to a hardware switch location

JOG                                    Move the axis using external inputs

SPEED CONTROL          Operate the axis in velocity mode

POSITION ADJUST         Adjust the axis position using external inputs



GOTO                                  Go to a program-line, also Loop (4 nested loops allowed)

CALL                                   Call a subroutine and return (4 nested calls allowed)

IF THEN ELSE                    If a condition is met then go to program-line 'n', else go to next program-line

WAIT                                    Wait a period of time, then go to next program-line



OUTPUT                              Turn a hardware output ON or OFF

COMPARE                          Stores a variable used by the IF-THEN-ELSE command

CHANGE SCALE              Change the motion coordinate scale                                     (future)

ROTATE                               Rotate the axis coordinates by an angular value                   (future)

TANGENT                            Rotate an axis to point in the motion direction                     (future)

MIRROR                               Mirror the axis coordinates vertically or horizontally            (future)

ENCODER                           Axis tracks a quadrature encoder                                           (future)


The GeckoMotion host program uses labels for program flow commands. This greatly eases the burden of writing and debugging the user program:


00068      IF Z INPUT 2 IS OFF GOTO label_1        An IF command tests if the Z axis input 2 is off. If true, the program jumps to 'label_1:'

00069      NEXT COMMAND                                   If false, the program goes to the next command

----           ------

----           ------

----           ------

00234      label_1:

00235      SOME OTHER COMMAND                     Program jumped here because the Z axis input 2 is off.

----           ------