Modbus Motion Interface Architecture

MMI Pages

The MMI design goal was to achieve control functions with the minimum number of transactions for maximum efficiency. Although less important for the TCP/IP version, efficiency is important to the RTU serial port version. Control purpose is generally expressed with where information is written. Control values are expressed by the values written to those locations.

The holding register address range is organized into 256 register pages. The page number is expressed as the top two hex digits in the address. The offset into the page is expressed as the lower two hex digits in the address. Each page has a specific purpose as expressed in the following diagram:

The principle document is the MMI_Const.inc file which declares constants for the pages and the offsets within the pages for various motion operations. The page numbers and offset values may change from one MMI version to the next. To be resilient regarding these changes it is necessary to refer to the constant names rather than explicit numbers.

The constants are used in pairs. The first member of the pair is the page constant which has a trailing underscore. The second member of the pair is the offset value which begins with an underscore and ends in a letter indicating the data type. The two members are added together with the trailing and leading underscores helping to visually confirm completeness. Turning on the yellow status LED on the side of the controller would be done this way:

Modbus.WriteRegister(System_+_TurnYellowLED_w,1);

The trailing "w" in the offset member is a reminder that the word data type API procedure should be used. Data types are clustered in contiguous groups with the same pattern on all the pages. In the MMI_Const.inc file are the following constants which can be used to check the address ranges of provided parameters:

const Minimum_Word_Offset = $01;
const Maximum_Word_Offset = $40;
const Minimum_Single_Offset = $41;
const Maximum_Single_Offset = $7F;
const Minimum_Double_Offset = $81;
const Maximum_Double_Offset = $FD;

It would possible to use these range constants on the host side to insure the constant provided was suitable for the data type:

OffsetValue:=Address and $FF;
if (OffsetValue < Minimum_Word_Offset)
or (OffsetValue > Maximum_Word_Offset) then
Escape(?Address provided to Modbus.WriteRegister is not in range?);

System Page

The System Page contains operations and information that apply to the controller as a whole. Commands invoked from the MMI behave the same as if invoked from blocks or text. Refer to the Command Reference chapter for more information.

Axis and AxisGroup Page

Axis pages are used to direct and control individual motors. AxisGroup pages are used to direct up to 6 motors as a coordinated group supporting vector moves where all axes begin at the same time, have the same accel, slew, and decel times, and arrive together. On Cartesian machines such vector motion produces straight lines.

Axis and AxisGroup pages share the same structure because they share many of the same commands. Differences and relevance are indicated alongside the command names.