Manuale Istruzioni Motion Control Omron
Manuale Istruzioni Motion Control Omron
NJ/NX-series
Motion Control
NX701-1£££
NX102-1£££
NX102-90££
NX1P2-1£££££
NX1P2-90££££
NJ501-££££
NJ301-1£££
NJ101-10££
W508-E1-20
NOTE
(1) All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or
transmitted, in any form, or by any means, mechanical, electronic, photocopying, recording, or
otherwise, without the prior written permission of OMRON.
(2) No patent liability is assumed with respect to the use of the information contained herein.
Moreover, because OMRON is constantly striving to improve its high-quality products, the infor-
mation contained in this manual is subject to change without notice.
(3) Every precaution has been taken in the preparation of this manual. Nevertheless, OMRON as-
sumes no responsibility for errors or omissions.
Neither is any liability assumed for damages resulting from the use of the information contained
in this publication.
Trademarks
• Sysmac and SYSMAC are trademarks or registered trademarks of OMRON Corporation in Japan
and other countries for OMRON factory automation products.
• Microsoft, Windows, Excel, and Visual Basic are either registered trademarks or trademarks of Mi-
crosoft Corporation in the United States and other countries.
• EtherCAT® is registered trademark and patented technology, licensed by Beckhoff Automation
GmbH, Germany.
• ODVA, CIP, CompoNet, DeviceNet, and EtherNet/IP are trademarks of ODVA.
Other company names and product names in this document are the trademarks or registered trade-
marks of their respective companies.
Copyrights
• Microsoft product screen shots reprinted with permission from Microsoft Corporation.
• This product incorporates certain third party software. The license and copyright information associ-
ated with this software is available at http://www.fa.omron.co.jp/nj_info_e/.
Introduction
Introduction
Thank you for purchasing an NJ/NX-series CPU Unit.
This manual describes the motion control instructions. Please be sure you sufficiently understand the
operations and handling procedures, and use the Motion Control Function Module (abbreviated as
“MC Function Module”) correctly.
Use this manual together with the user’s manuals for the NJ/NX-series CPU Unit.
When you have finished reading this manual, keep it in a safe location where it will be readily available
for future use.
Intended Audience
This manual is intended for the following personnel, who must also have knowledge of electrical sys-
tems (an electrical engineer or the equivalent).
• Personnel in charge of introducing FA systems.
• Personnel in charge of designing FA systems.
• Personnel in charge of installing and maintaining FA systems.
• Personnel in charge of managing FA systems and facilities.
For programming, this manual is intended for personnel who understand the programming language
specifications in international standard IEC 61131-3 or Japanese standard JIS B 3503.
Applicable Products
This manual covers the following products.
• NX-series CPU Units
• NX701-17££
• NX701-16££
• NX102-12££
• NX102-11££
• NX102-10££
• NX102-90££
• NX1P2-11££££
• NX1P2-11££££1
• NX1P2-10££££
• NX1P2-10££££1
• NX1P2-90££££
• NX1P2-90££££1
Part of the specifications and restrictions for the CPU Units are given in other manuals.
Refer to Relevant Manuals on page 3 and Related Manuals on page 28.
Relevant Manuals
The following table provides the relevant manuals for the NJ/NX-series CPU Units. Read all of the
manuals that are relevant to your system configuration and application before you use the NJ/NX-ser-
ies CPU Unit.
Most operations are performed from the Sysmac Studio Automation Software. Refer to the Sysmac
Studio Version 1 Operation Manual (Cat. No. W504) for information on the Sysmac Studio.
Manual
Basic information
Hardware User’s Manual
NX-series CPU Unit
Hardware User’s Manual
NX-series NX102 CPU Unit
Hardware User’s Manual
NX-series NX1P2 CPU Unit
Hardware User’s Manual
NJ-series CPU Unit
Software User’s Manual
NJ/NX-series CPU Unit
Built-in I/O and Option Board User's Manual
NX-series NX1P2 CPU Unit
Instructions Reference Manual
NJ/NX-series
Motion Control User’s Manual
NJ/NX-series CPU Unit
Motion Control Instructions Reference Manual
NJ/NX-series
Built-in EtherCAT Port User´s Manual
NJ/NX-series CPU Unit
Built-in EtherNet/IP Port User’s Manual
NJ/NX-series CPU Unit
User’s Manual
NJ/NX-series CPU Unit OPC UA
FINS User’s Manual
NX-series CPU Unit
User's Manual
NJ/NX-series Database Connection CPU Units
User's Manual
NJ-series SECS/GEM CPU Units
User's Manual
NJ-series NJ Robotics CPU Unit
User’s Manual
NJ/NY-series NC Integrated Controller
Troubleshooting Manual
NJ/NX-series
Purpose of use
Manual
Basic information
Manual Structure
Page Structure
The following page structure is used in this manual.
Input Variables
Output Variables
Name Meaning Data type Valid range Description
Status Servo ON BOOL TRUE or FALSE TRUE when the device is ready for operation.
Busy Executing BOOL TRUE or FALSE TRUE when the instruction is acknowledged.
Error Error BOOL TRUE or FALSE TRUE while there is an error.
ErrorID Error Code WORD * Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
In-Out Variables
* Specify an Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio. (The default axis variable names
are MC_Axis***.)
Function
• When Enable changes to TRUE, the axis specified by Axis is made ready to operate.
Level-2 section heading
You can control the axis when it is ready to operate.
The level-2 section heading
MC_Power
• When Enable changes to FALSE, the ready status is cleared for the axis specified by Axis.
You cannot control the axis after the ready status is cleared because it will not acknowledge opera-
tion commands. Also, an error occurs if a motion command is executed for an axis for which the
is given.
ready status is cleared. You can execute the MC_Power (Power Servo) and MC_Reset (Reset Axis
Error) instructions even for axes that are not ready.
• You can use this instruction to disable the operation of axes while they are in motion. In this case,
3 Level-1 section number
CommandAborted will change to TRUE. Output of the operation command will stop and the axis will
not longer be ready for operation. The level-1 section number
F u n c t io n
• If home is not defined for a Servomotor with an absolute encoder, compensation is performed using
the absolute encoder home offset to define home when the axis is ready to operate. is given.
For details on the absolute encoder home offset, refer to the NJ-series CPU Unit Motion Control
User’s Manual (Cat. No. W507).
Level-3 section heading
Special information Precautions for Correct Use
• You can use this instruction for servo axes and virtual servo axes. If the instruction is used for The level-3 section heading
encoder axes or virtual encoder axes, an error will occur.
Icons indicate • Executing this Instruction for the Master Axis of Synchronized Control is given.
When master axis operation is disabled for a vertical axis, the position of the master axis may
precautions, additional change rapidly. This may cause the motion of t he slave axis to change rapidly. Take suitable
measures to prevent the slave axis from moving rapidly, such as applying a brake to the mas-
information, or reference ter axis or leaving master axis operation enabled until after synchronized control is completed.
information.
Timing Charts
• When Enable changes to TRUE, Busy (Executing) changes to TRUE to indicate that the instruction
was acknowledged.
• After the axis becomes ready for operation, Status (Servo ON) changes to TRUE.
• When Enable changes to FALSE, Busy (Executing) changes to FALSE. Status (Servo ON) changes
to FALSE when ready status is cleared. Status (Servo ON) outputs the axis ready status regardless
of whether Enable is TRUE or FALSE.
Enable
Status
Busy
Note These pages are for illustrative purposes only. They may not literally appear in this manual.
Special Information
Special information in this manual is classified as follows:
Additional Information
Additional information to read as required.
This information is provided to increase understanding or make operation easier.
Version Information
Information on differences in specifications and functionality for Controller with different unit versions
and for different versions of the Sysmac Studio is given.
Precaution on Terminology
In this manual, "download" refers to transferring data from the Sysmac Studio to the physical Control-
ler and "upload" refers to transferring data from the physical Controller to the Sysmac Studio.
For the Sysmac Studio, "synchronization" is used to both "upload" and "download" data. Here,
"synchronize" means to automatically compare the data for the Sysmac Studio on the computer with
the data in the physical Controller and transfer the data in the direction that is specified by the user.
2
1 Introduction to Motion Control Instructions
3
I
5 Common Command Instructions
A Appendices
I Index
CONTENTS
Introduction .............................................................................................................. 1
Intended Audience...........................................................................................................................................1
Applicable Products .........................................................................................................................................1
Relevant Manuals..................................................................................................... 3
Manual Structure...................................................................................................... 5
Page Structure.................................................................................................................................................5
Special Information ..........................................................................................................................................6
Precaution on Terminology ..............................................................................................................................7
Safety Precautions................................................................................................. 19
Versions .................................................................................................................. 23
Checking Versions .........................................................................................................................................23
Unit Versions of CPU Units and Sysmac Studio Versions .............................................................................27
Related Manuals..................................................................................................... 28
Revision History..................................................................................................... 32
MC_SetPosition..........................................................................................................................3 - 151
Variables .................................................................................................................................................3 - 151
Function ..................................................................................................................................................3 - 152
MC_SetOverride .........................................................................................................................3 - 158
Variables .................................................................................................................................................3 - 158
Function ..................................................................................................................................................3 - 159
MC_ResetFollowingError ..........................................................................................................3 - 164
Variables .................................................................................................................................................3 - 164
Function ..................................................................................................................................................3 - 165
MC_CamIn...................................................................................................................................3 - 171
Variables .................................................................................................................................................3 - 171
Function ..................................................................................................................................................3 - 175
Sample Programming 1 ..........................................................................................................................3 - 198
Sample Programming 2 ..........................................................................................................................3 - 209
MC_CamOut................................................................................................................................3 - 229
Variables .................................................................................................................................................3 - 229
Function ..................................................................................................................................................3 - 230
MC_CamMonitor.........................................................................................................................3 - 234
Variables .................................................................................................................................................3 - 234
Function ..................................................................................................................................................3 - 237
Precautions for Correct Use ...................................................................................................................3 - 242
MC_GearIn ..................................................................................................................................3 - 243
Variables .................................................................................................................................................3 - 243
Function ..................................................................................................................................................3 - 245
Sample Programming .............................................................................................................................3 - 252
MC_GearInPos............................................................................................................................3 - 264
Variables .................................................................................................................................................3 - 264
Function ..................................................................................................................................................3 - 267
Sample Programming .............................................................................................................................3 - 275
MC_GearOut ...............................................................................................................................3 - 287
Variables .................................................................................................................................................3 - 287
Function ..................................................................................................................................................3 - 288
MC_MoveLink .............................................................................................................................3 - 292
Variables .................................................................................................................................................3 - 292
Function ..................................................................................................................................................3 - 295
Sample Programming .............................................................................................................................3 - 305
MC_CombineAxes......................................................................................................................3 - 316
Variables .................................................................................................................................................3 - 316
Function ..................................................................................................................................................3 - 318
MC_Phasing................................................................................................................................3 - 328
Variables .................................................................................................................................................3 - 328
Function ..................................................................................................................................................3 - 330
MC_TorqueControl.....................................................................................................................3 - 335
Variables .................................................................................................................................................3 - 335
Function ..................................................................................................................................................3 - 337
MC_SetTorqueLimit ...................................................................................................................3 - 348
Variables .................................................................................................................................................3 - 348
Function ..................................................................................................................................................3 - 349
MC_ZoneSwitch .........................................................................................................................3 - 355
Variables .................................................................................................................................................3 - 355
Function ..................................................................................................................................................3 - 356
MC_TouchProbe.........................................................................................................................3 - 361
Variables .................................................................................................................................................3 - 361
Function ..................................................................................................................................................3 - 364
Sample Programming .............................................................................................................................3 - 376
MC_AbortTrigger........................................................................................................................3 - 383
Variables ...................................................................................................................................................4 - 45
Function ....................................................................................................................................................4 - 48
Sample Programming ...............................................................................................................................4 - 60
MC_GroupStop.............................................................................................................................4 - 73
Variables ...................................................................................................................................................4 - 73
Function ....................................................................................................................................................4 - 74
MC_GroupImmediateStop ...........................................................................................................4 - 81
Variables ...................................................................................................................................................4 - 81
Function ....................................................................................................................................................4 - 82
MC_GroupSetOverride ................................................................................................................4 - 85
Variables ...................................................................................................................................................4 - 85
Function ....................................................................................................................................................4 - 86
MC_GroupReadPosition..............................................................................................................4 - 90
Variables ...................................................................................................................................................4 - 90
Function ....................................................................................................................................................4 - 91
MC_ChangeAxesInGroup............................................................................................................4 - 94
Variables ...................................................................................................................................................4 - 94
Function ....................................................................................................................................................4 - 95
MC_GroupSyncMoveAbsolute....................................................................................................4 - 98
Variables ...................................................................................................................................................4 - 98
Function ..................................................................................................................................................4 - 100
MC_GroupReset .........................................................................................................................4 - 104
Variables .................................................................................................................................................4 - 104
Function ..................................................................................................................................................4 - 105
Appendices
A-1 Instructions for Which Multi-execution Is Supported ..................................................... A - 2
A-1-1 Axis and Axes Group Status .................................................................................................... A - 2
A-1-2 State Transitions and Instructions for which Multi-execution Is Supported .............................. A - 4
A-2 Version Information .......................................................................................................... A - 11
Index
Warranties
Exclusive Warranty
Omron’s exclusive warranty is that the Products will be free from defects in materials and work-
manship for a period of twelve months from the date of sale by Omron (or such other period ex-
pressed in writing by Omron). Omron disclaims all other warranties, express or implied.
Limitations
OMRON MAKES NO WARRANTY OR REPRESENTATION, EXPRESS OR IMPLIED, ABOUT
NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OF
THE PRODUCTS. BUYER ACKNOWLEDGES THAT IT ALONE HAS DETERMINED THAT THE
PRODUCTS WILL SUITABLY MEET THE REQUIREMENTS OF THEIR INTENDED USE.
Omron further disclaims all warranties and responsibility of any type for claims or expenses based
on infringement by the Products or otherwise of any intellectual property right.
Buyer Remedy
Omron’s sole obligation hereunder shall be, at Omron’s election, to (i) replace (in the form originally
shipped with Buyer responsible for labor charges for removal or replacement thereof) the non-com-
plying Product, (ii) repair the non-complying Product, or (iii) repay or credit Buyer an amount equal
to the purchase price of the non-complying Product; provided that in no event shall Omron be re-
sponsible for warranty, repair, indemnity or any other claims or expenses regarding the Products
unless Omron’s analysis confirms that the Products were properly handled, stored, installed and
maintained and not subject to contamination, abuse, misuse or inappropriate modification. Return
of any Products by Buyer must be approved in writing by Omron before shipment. Omron Compa-
nies shall not be liable for the suitability or unsuitability or the results from the use of Products in
combination with any electrical or electronic components, circuits, system assemblies or any other
materials or substances or environments. Any advice, recommendations or information given orally
or in writing, are not to be construed as an amendment or addition to the above warranty.
WAY CONNECTED WITH THE PRODUCTS, WHETHER SUCH CLAIM IS BASED IN CONTRACT,
WARRANTY, NEGLIGENCE OR STRICT LIABILITY.
Further, in no event shall liability of Omron Companies exceed the individual price of the Product on
which liability is asserted.
Application Considerations
Suitability of Use
Omron Companies shall not be responsible for conformity with any standards, codes or regulations
which apply to the combination of the Product in the Buyer’s application or use of the Product. At Buy-
er’s request, Omron will provide applicable third party certification documents identifying ratings and
limitations of use which apply to the Product. This information by itself is not sufficient for a complete
determination of the suitability of the Product in combination with the end product, machine, system, or
other application or use. Buyer shall be solely responsible for determining appropriateness of the par-
ticular Product with respect to Buyer’s application, product or system. Buyer shall take application re-
sponsibility in all cases.
NEVER USE THE PRODUCT FOR AN APPLICATION INVOLVING SERIOUS RISK TO LIFE OR
PROPERTY OR IN LARGE QUANTITIES WITHOUT ENSURING THAT THE SYSTEM AS A WHOLE
HAS BEEN DESIGNED TO ADDRESS THE RISKS, AND THAT THE OMRON PRODUCT(S) IS
PROPERLY RATED AND INSTALLED FOR THE INTENDED USE WITHIN THE OVERALL EQUIP-
MENT OR SYSTEM.
Programmable Products
Omron Companies shall not be responsible for the user’s programming of a programmable Product, or
any consequence thereof.
Disclaimers
Performance Data
Data presented in Omron Company websites, catalogs and other materials is provided as a guide for
the user in determining suitability and does not constitute a warranty. It may represent the result of
Omron’s test conditions, and the user must correlate it to actual application requirements. Actual per-
formance is subject to the Omron’s Warranty and Limitations of Liability.
Change in Specifications
Product specifications and accessories may be changed at any time based on improvements and oth-
er reasons. It is our practice to change part numbers when published ratings or features are changed,
or when significant construction changes are made. However, some specifications of the Product may
be changed without any notice. When in doubt, special part numbers may be assigned to fix or estab-
lish key specifications for your application. Please consult with your Omron’s representative at any
time to confirm actual specifications of purchased Product.
Safety Precautions
Refer to the following manuals for safety precautions.
• NX-series CPU Unit Hardware User's Manual (Cat. No. W535)
• NX-series NX102 CPU Unit Hardware User's Manual (Cat. No. W593)
• NX-series NX1P2 CPU Unit Hardware User's Manual (Cat. No. W578)
• NJ-series CPU Unit Hardware User’s Manual (Cat No. W500)
Versions
Hardware revisions and unit versions are used to manage the hardware and software in NJ/NX-series
Units and EtherCAT slaves. The hardware revision or unit version is updated each time there is a
change in hardware or software specifications. Even when two Units or EtherCAT slaves have the
same model number, they will have functional or performance differences if they have different hard-
ware revisions or unit versions.
Checking Versions
You can check versions on the ID information indications or with the Sysmac Studio.
For NX701
The ID information on an NX-series NX701-££££ CPU Unit is shown below.
ID information indication
Note The hardware revision is not displayed for the Unit whose hardware revision is blank.
For NX102
The ID information on an NX-series NX102-££££ CPU Unit is shown below.
Note The hardware revision is not displayed for the Unit whose hardware revision is blank.
For NX1P2
The ID information on an NX-series NX1P2-£££££££ CPU Unit is shown below.
MAC address
PORT1 : ££££££££££££
PORT2 : ££££££££££££
Hardware
Unit version Ver.1.££ HW Rev. £ revision
LOT No. DDMYY£ xxxx
ID information indication
Note The hardware revision is not displayed for the Unit that the hardware revision is in blank.
For NJ-series
The ID information on an NJ-series NJ501-££££ CPU Unit is shown below.
ID information indication
Note The hardware revision is not displayed for the Unit that the hardware revision is in blank.
1 Right-click CPU Rack under Configurations and Setup - CPU/Expansion Racks in the Multi-
view Explorer and select Production Information.
The Production Information Dialog Box is displayed.
1 Double-click CPU Rack under Configurations and Setup - CPU/Expansion Racks in the
Multiview Explorer. Or, right-click CPU Rack under Configurations and Setup - CPU/
Expansion Racks in the Multiview Explorer and select Edit from the menu.
The Unit Editor is displayed.
2 Right-click any open space in the Unit Editor and select Production Information.
The Production Information Dialog Box is displayed.
1 Click the Show Detail or Show Outline Button at the lower right of the Production Information
Dialog Box.
The view will change between the production information details and outline.
The information that is displayed is different for the Outline View and Detail View. The Detail
View displays the unit version, hardware revision, and various versions. The Outline View dis-
plays only the unit version.
Note The hardware revision is separated by “/” and displayed on the right of the hardware version. The
hardware revision is not displayed for the Unit that the hardware revision is in blank.
1 Double-click EtherCAT under Configurations and Setup in the Multiview Explorer. Or, right-
click EtherCAT under Configurations and Setup and select Edit from the menu.
The EtherCAT Tab Page is displayed.
2 Right-click the master on the EtherCAT Tab Page and select Display Production Information.
The Production Information Dialog Box is displayed.
The unit version is displayed after “Rev.”
1 Click the Show Detail or Show Outline Button at the lower right of the Production Information
Dialog Box.
The view will change between the production information details and outline.
Related Manuals
The followings are the manuals related to this manual. Use these manuals for reference.
W566 NX-TS££££
NX-HB££££
W523 NX-PD1£££
NX-PF0£££
NX-PC0£££
NX-TBX01
W524 NX-EC0£££
NX-ECS£££
NX-PG0£££
W540 NX-CIF£££
W565 NX-RS££££
W567 NX-ILM£££
Revision History
A manual revision code appears as a suffix to the catalog number on the front and back covers of the
manual.
Revision
Date Revised content
code
01 July 2011 Original production
02 January 2012 • Added the following axes group instructions
• MC_GroupReadPosition (Read Axes Group Position)
• MC_ChangeAxesInGroup (Change Axes in Group)
• MC_GroupSyncMoveAbsolute (Axes Group Cyclic Synchronous Absolute
Positioning)
• Corrected mistakes.
03 May 2012 • Made changes accompanying the upgrade to unit version 1.02 of the CPU
Unit.
• Corrected mistakes.
04 August 2012 Made changes accompanying the upgrade to unit version 1.03 of the CPU Unit.
05 February 2013 Made changes accompanying the upgrade to unit version 1.04 of the CPU Unit.
06 April 2013 • Made changes accompanying the upgrade to unit version 1.05 of the CPU
Unit.
• Corrected mistakes.
07 June 2013 • Made changes accompanying the upgrade to unit version 1.06 of the CPU
Unit.
• Corrected mistakes.
08 December 2013 • Made changes accompanying the upgrade to unit version 1.08 of the CPU
Unit.
• Corrected mistakes.
09 July 2014 • Made changes accompanying the upgrade to unit version 1.09 of the CPU
Unit.
• Corrected mistakes.
10 January 2015 • Made changes accompanying the upgrade to unit version 1.10 of the CPU
Unit.
• Corrected mistakes.
11 April 2015 • Made changes accompanying the addition of NX-series NX701-££££ CPU
Units and NJ-series NJ101-££££ CPU Units.
• Corrected mistakes.
12 April 2016 • Made changes accompanying the upgrade to unit version 1.11 of the CPU
Unit.
• Corrected mistakes.
13 July 2016 • Made changes accompanying the upgrade to unit version 1.12 of the CPU
Unit.
• Corrected mistakes.
Revision
Date Revised content
code
14 October 2016 • Made changes accompanying the addition of NX-series NX1P2 CPU Units.
• Made changes accompanying the upgrade to unit version 1.13 of the CPU
Unit.
• Corrected mistakes.
15 April 2017 Corrected mistakes.
16 October 2017 Corrected mistakes.
17 April 2018 • Made changes accompanying the addition of NX-series NX102 CPU Units.
• Made changes accompanying the transfer of event codes to the NJ/NX-
series Troubleshooting Manual (Cat. No. W503).
• Corrected mistakes.
18 July 2018 Corrected mistakes.
19 January 2019 Corrected mistakes.
20 April 2019 • Made changes accompanying the addition of 1S-series AC Servomotors/
Servo Drives.
• Made changes accompanying the addition of the MC_CamMonitor (Cam
Monitor) instruction and MC_OffsetPosition (Position Offset Compensation)
instruction.
For details on motion control instructions, refer to the NJ/NX-series CPU Unit Motion Control User’s
Manual (Cat. No. W507).
Refer to the NX-series Position Interface Units User’s Manual (Cat. No. W524) for information on us-
ing the NX-series Position Interface Units.
Version Information
A CPU Unit with unit version 1.05 or later and Sysmac Studio version 1.06 or higher are re-
quired to use NX-series Position Interface Units.
Additional Information
PLCopen®
PLCopen® is a promotion body for IEC 61131-3 that has its headquarters in Europe and a
worldwide membership structure.
IEC 61131-3 is an international standard for PLC programming.
PLCopen® Japan is the promotion committee for the Japanese market and consists of mem-
bers that have concerns related to the Japanese market.
• The website of PLCopen® Japan is http://www.plcopen-japan.jp/.
• The website of PLCopen® Europe (headquarters) is http://www.plcopen.org/.
State Transitions
State transitions are defined for axes, axes groups, and instruction execution.
For details on the state and state transitions of the MC Function Module, refer to the NJ/NX-series
CPU Unit Motion Control User’s Manual (Cat. No. W507).
For detailed specifications of the MC Function Module, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
The timing in the timing charts that are given in this manual may not necessarily be the same as
the timing displayed for data traces on the Sysmac Studio.
Refer to the NJ/NX-series CPU Unit Software User's Manual (Cat. No. W501) for details on da-
ta tracing.
Error Processing
You execute motion control instructions to implement motion control with the MC Function Module.
When motion control instructions are executed, input parameters and instruction processing are
checked for errors.
If an error occurs in an instruction, the Error output variable from the instruction changes to TRUE and
an error code is output to ErrorID output variable.
There are two ways that you can use to program processing of errors for motion control instructions.
Pwr1_Err EQ NoAxisErr
EQ
Pwr1_ErrID In1
WORD#16#5460 In2
In3
In4
In5
Checking for Communications Errors between the CPU Unit and Servo Drive
Off EQ ConnectErr
EQ
MC_Axis000.MFaultLvl.Code In1
1
WORD#16#8440 In2
In3
For details on re-execution of MC Function Module instructions, refer to the NJ/NX-series CPU Unit
Motion Control User’s Manual (Cat. No. W507).
In Aborting mode, other motions are aborted and the function block is executed immediately.
In other buffer modes, the next instruction waits until an output variable such as Done or InVelocity
from the currently executed instruction changes to TRUE.
For Buffered mode, the next instruction is executed after the current instruction is executed and Done
changes to TRUE.
For the Blending modes, two instruction motions are executed consecutively without pausing. The
transition velocity between the two motions is selected from four buffer modes.
For details on multi-execution of instructions for the MC Function Module, refer to the NJ/NX-series
CPU Unit Motion Control User’s Manual (Cat. No. W507).
Whether multi-execution of instructions is supported in the MC Function Module depends on the cur-
rent axis status, the current axes group status, and the instruction to execute. Refer to A-1 Instructions
for Which Multi-execution Is Supported on page A - 2 for detailed information.
Data type
Definition
PLCopen® MC Function Module
AXIS_REF _sAXIS_REF This is a structure that contains information on the corre-
sponding axis.
AXES_GROUP_REF _sGROUP_REF This is a structure that contains information on the corre-
sponding axes group.
TRIGGER_REF _sTRIGGER_REF This is a structure that contains information on trigger in-
puts.
• Trigger specifications
• Detection pattern information (positive, negative, both,
edge, level, pattern recognition, etc.)
INPUT_REF --- This is a structure that contains information relating to the
input specifications. It may include virtual data.
This data type is not used by the MC Function Module.
OUTPUT_REF _sOUTPUT_REF This is a structure relating to physical outputs.
A CPU Unit with unit version 1.06 or later and Sysmac
Studio version 1.07 or higher are required to use the MC
Function Module data type.
As shown in the above table, the MC Function Module uses some data types that are defined by
PLCopen® and some that are defined specifically for the MC Function Module.
Refer to the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for definitions of
the data types and structures that are handled by the MC Motion Module.
Version Information
With a CPU Unit with unit version 1.10 or later, the operation of the slave axis does not change
suddenly even if you use the MC_SetPosition (Set Position) instruction to change the command
current position of the master axis or auxiliary axis for a synchronized control instruction.
The following occur if multi-execution of instructions is used for synchronized control instructions
for the slave axis.
• Even if the master or auxiliary axis is in one of the four conditions given above, multi-execution of
instructions is acknowledged normally and the instruction is buffered.
• The motion for the buffered instruction is started as normal if none of the above four conditions
exist.
Additional Information
Control Instructions
Instructions
This section describes basic specifications and restrictions for programming with motion control in-
structions for the MC Function Module built into the NJ/NX-series CPU Unit.
1
For details on motion control instructions, refer to Section 3 Axis Command Instructions on page
3 - 1, Section 4 Axes Group Instructions on page 4 - 1, and Section 5 Common Command In-
Input variables
• The axis variable name of the Servo Drive or other device to control is specified with the in-out vari-
able Axis.
• Motion conditions, such as the target position or target velocity, are specified with input variables.
• The status of the instruction or the status of the Servo Drive is output with output variables.
• If input parameters are omitted, input variables are set to default values.
Task Types
Motion control instructions can be used in the primary periodic task, in a priority-5 periodic task, or in a
priority-16 periodic task. If you use motion control instructions in any other task, an error will occur
when you build the program.
Applica-
Task type Remarks
bility
Primary periodic task Applicable • Common instructions for which an axis or axes group is
not specified.
• Instructions for an axis or axes group assigned to the pri-
mary periodic task
Periodic task (execution priority: 5) Applica- • Common instructions for which an axis or axes group is
ble*1 not specified.
• Instructions for an axis or axes group assigned to a prior-
ity-5 periodic task
Periodic task (execution priority: 16) Applica- • Common instructions for which an axis or axes group is
ble*2 not specified.
• Instructions for an axis or axes group assigned to the pri-
mary periodic task
Control Instructions
Task type Remarks
bility
Periodic task (execution priority: 17) Not Appli-
cable
Periodic task (execution priority: 18) Not Appli-
cable
Event task (execution priority: 8) Not Appli-
cable
1
Event task (execution priority: 48) Not Appli-
cable
Additional Information
Design efficiency is improved through program structuring, and program visibility is improved if
a process with multiple operations is treated as a single function block.
MC
MCR
If a motion control instruction is located in the master control region, and the MC input condition is
FALSE, the following will occur.
• Motion control instructions for which the input variable, Enable or Execute, is connected directly to
the left bus bar are executed with a FALSE value for the input value.
• Inline ST sections are executed normally.
• The values of the output parameters are updated as normal even when the Enable or Execute input
variables to the motion control instructions are FALSE.
G0
MC
PW1 PW1
MC_Power MC_Power
Axis Axis Equivalent Axis Axis
IN G0 IN
Enable Status Status_PW Enable Status Status_PW
Busy Busy_PW Busy Busy_PW
MCR
G0
IN
PW1.Busy_PW
PW1.Status_PW
Servo ON/OFF
G0
MC
Rel1 Rel1
MC_MoveRelative MC_MoveRelative
Axis Axis Equivalent Axis Axis
IN G0 IN
Execute Done Done_1 Execute Done Done_1
Busy Busy_1 Busy Busy_1
Active Active_1 Active Active_1
MCR
IN
Rel1.Execute
Execute-type motion control instructions are executed when G0 changes to TRUE. It is not rec-
ommended to use them in the master control region.
If they must be used, be careful of the operation.
Additional Information
The function of the MC (Master Control Start) instruction is disabled in ST. All instructions in ST
are executed normally.
For details on the MC and MCR instructions, refer to the NJ/NX-series Instructions Reference
Manual (Cat. No. W502).
When the evaluation result for the condition expression of an ST structure instruction is FALSE, the
motion control instructions within the structure are not executed. Also, the values of the output varia-
bles are not updated.
If execution of an execute-type instruction is started and then the evaluation result changes to FALSE,
processing is continued until it is completed. In that case, however, the values of the output variables
are not updated.
The execution status of an execute-type instruction in an ST structure will not be clear if the
evaluation result of the condition expression changes to FALSE during execution of the instruc-
tion. We therefore do not recommend using execution-type instructions in ST structures.
If they must be used, be careful of the operation.
Additional Information
To switch the execution of an execute-type instruction with the condition expression, place only
the Execute input parameter in the ST structure. Place the execute-type instruction itself out-
side of the ST structure.
For details on the ST structure instructions, refer to the NJ/NX-series Instructions Reference
Manual (Cat. No. W502).
• LREAL Data
Number = (-1)s2e-1023(1 + f × 2-52)
The floating-point data format conforms to the IEEE754 standards. The following formats are used.
31 30 23 22 0
Sign Exponent Mantissa
63 62 52 51 0
2 Binary Expression
The number 86.625 is 1010110.101 as a binary number.
Control Instructions
Exponent Expression
From the previous equation, e-127 = 6. Therefore e = 133.
The number 133 is 10000101 as a binary number. This expresses the exponent.
5 Mantissa Expression
Numbers following the decimal point in 1.010110101 are 010110101.
This number is expressed using 23 bits, but here there are insufficient digits. Therefore zeros
are added. The 23-bit figure becomes f.
1
Therefore f = 01011010100000000000000.
31 30 23 22 0
Valid Ranges
The valid ranges of REAL and LREAL are shown in the following table.
−∞ 0 +∞
Special Numbers
Positive infinity, negative infinity, +0, -0, and nonnumeric data are called special numbers.
Nonnumeric data is data that cannot be expressed in floating-point decimal format. They are not
treated as numbers.
Mathematically, +0 and -0 both mean the same as 0, but in data processing it is treated differently.
A detailed explanation is given later.
The sign "s", exponent "e", and mantissa "f" for special numbers take on the following values.
Subnormal Numbers
Numbers that are very close to 0 (with very small absolute values) cannot be expressed using the
floating-point decimal format.
Subnormal numbers were introduced to expand the validity of numbers near 0.
Subnormal numbers can be used to express numbers whose absolute values are smaller than
numbers expressed in the normal data format.
Additional Information
Values expressed in the normal data format are called normalized numbers or normal numbers.
Numbers with exponent e = 0 and mantissa f ≠ 0 are considered subnormal numbers and their val-
ues are expressed in the following manner.
• REAL Data
Number = (-1)s2-126(f × 2-23)
• LREAL Data
Number = (-1)s2-1022(f × 2-52)
2 Binary Expression
The number 0.75 is 0.11 as a binary number.
3 Mantissa Calculation
From (0.11)2 × 2-127 = 2-126(f × 2-23), f = (0.11)2 × 222.
4 Mantissa Expression
From the previous equation, f = 01100000000000000000000.
Control Instructions
REAL data (32 bits) 0 00000000 01100000000000000000000
31 30 23 22 0
Subnormal numbers have fewer effective digits than normalized numbers. Therefore, if the calcula-
tion of a normalized number results in an subnormal number, or if an intermediate result is an sub-
normal number, the number of effective digits of the calculated result may be less than that of the
1
normalized number.
Rounding
If the actual value exceeds the effective digits of the mantissa, the value must be rounded accord-
ing to the following rules.
• Of the values that can be expressed in floating-point decimal format, the value that is closest to
the actual value is taken as the calculation result.
• If there are two values that are equally close to the actual value that can be expressed in float-
ing-point decimal format, the value with the lowest significant 0 bit is taken as the calculation re-
sult.
When there are two values that are equally close to the actual value, the actual value is exactly
in the middle of the two values.
Floating-point decimal (LREAL) variables are used to set electronic gears, target positions, and
other parameters of motion control instructions in the MC Function Module. For this reason, cal-
culation results contain rounding errors.
For example, if the MC_MoveRelative (Relative Positioning) instruction is repeatedly executed,
following error will accumulate.
If the accumulated error becomes a problem, set the command unit to pulses, or specify an ab-
solute position with the MC_MoveAbsolute (Absolute Positioning) instruction.
Bit a
Move1
Axis 1 Axis
Aborting
Move2
Axis 1 Axis
Blending
For details on multi-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
A
MOVE
50 rate
1
MC_SetOverride
C
Axis 1 Axis
rate
If instructions to stop the axis motion, such as MC_Stop or MC_GroupStop, are deleted while
the axis is still moving, the axis may not stop depending on the contents of the user program.
Make sure that it is safe to use the online editing before using it for motion control instructions.
• If saving the cam table is in progress for the Save Cam Table instruction, the save operation contin-
ues.
• If creation of the cam table is in progress for the Generate Cam Table instruction, the creation oper-
ation continues.
• Motion control instructions located in a priority 16 periodic task perform the above process after the
END instruction in the task is executed.
Additional Information
• To enable accessing output variables for motion control instructions even after the operating
mode changes, assign variables that have output parameters with a Retain attribute.
By accessing the assigned output parameter, you can access the output variable immediately
before the operating mode changes.
• The Servo ON/OFF status will continue even if the operating mode is changed.
2-1 Variables
There are two types of variables for the MC Function Module.
The first type is system-defined variables, which you use to monitor axis status and some of the pa-
rameter settings. System-defined variables that are used by the MC Function Module are called sys-
tem-defined variables for motion control.
The second type is variables that are used to input arguments to motion control instructions and to
output execution status from motion control instructions. Some input variables to motion control in-
struction are enumerated variables. With enumerated variables, selections are made from a set of
enumerators.
This section describes the variable types, the valid ranges of motion control instruction input variables,
and the enumerated variables.
For details on system-defined variables for motion control, refer to the NJ/NX-series CPU Unit
Motion Control User’s Manual (Cat. No. W507).
Additional Information
2-1 Variables
Additional Information
2-1 Variables
_MC_AX[*].Status.Standstill (TRUE: standstill).
Disabled BOOL Axis Disabled TRUE while the Servo is OFF for the axis.
The following axis status are mutually exclu-
sive. Only one of them can be TRUE at a time.
Disabled, Standstill, Discrete, Continuous,
Synchronized, Homing, Stopping, ErrorStop, or
2
Coordinated
Standstill BOOL Standstill TRUE while the Servo is ON for the axis.
2-1 Variables
Mode
Cmd _sAXIS_REF_CMD_ Axis Command Value
DATA
Pos LREAL Command Current Contains the current value of the command po-
Position sition. (Unit: command units)
When the Servo is OFF and the mode is not 2
position control mode, this variable contains the
actual current position.*10
2-1 Variables
Per Motor Rotation tor rotation for command positions.*16
Units _eMC_UNITS Unit of Display Contains the display unit for command posi-
tions.
0: _mcPls(pulse)
1: _mcMm(mm)
2: _mcUm(μm) 2
3: _mcNm(nm)
4: _mcDeg(degree)
*11. A CPU Unit with unit version 1.06 or later and Sysmac Studio version 1.07 or higher are required to use this variable.
*12. This variable shows the settings in the Axis Basic Settings.
*13. For an NX-series Position Interface Unit, this is the node address of the EtherCAT Coupler Unit under which the Posi-
tion Interface Unit is mounted.
*14. A CPU Unit with unit version 1.10 or later and Sysmac Studio version 1.12 or higher are required to use this variable.
*15. This variable shows the settings of the electronic gear ratio.
*16. The parameter is disabled if you set to use a reducer in the unit conversion settings, which is the function added for
CPU Units with unit version 1.11 or later. To confirm alternatively enabled parameters, i.e. Work Travel Distance Per
Rotation, Work Gear Ratio, and Motor Gear Ratio, use the MC_ReadAxisParameter (Read Axis Parameters) in-
struction.
*17. If the Count Mode is set to Linear Mode, the position just before an overflow is given. In Rotary Mode, the modulo
maximum position is given.
*18. If the Count Mode is set to Linear Mode, the position just before an underflow is given. In Rotary Mode, the modulo
minimum position is given.
2-1 Variables
MC_GroupStop instruction.
This includes when Execute is TRUE after
the axis stops for an MC_GroupStop instruc-
tion.
Axes group motion instructions are not exe-
cuted while decelerating to a stop. (Comman- 2
dAborted is TRUE)
ErrorStop BOOL Error Deceleration TRUE while the axes group is stopping or
2-1 Variables
*2. This also includes states where processing is performed while in motion at a velocity of 0.
*3. A CPU Unit with unit version 1.10 or later and Sysmac Studio version 1.12 or higher are required to use this variable.
*4. Gives the definition of the kinematic conversions for the axes group.
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALS The instruction is executed when the
E value of this variable changes to
TRUE.
Other input variables are also input
when Execute changes to TRUE.
If input values are changed, they will
be updated when Execute changes
to TRUE again.
The output variables are valid as
long as Execute remains TRUE
even after the instruction is complet-
ed.
Then, all output variables except for
Error and ErrorID are disabled when
Execute changes to FALSE.
If Execute changes to FALSE before
the instruction is completed, output
variables are valid for at least one
period.
Enable Enable BOOL TRUE or FALSE FALS The instruction function is enabled
E when the value of this variable
changes to TRUE and disabled
when it changes to FALSE.
While Enable is TRUE, the other in-
put variables are input every period.
If Enable changes to FALSE, all out-
put variables except for Error and
ErrorID are disabled.
De-
Name Meaning Data type Valid range Description
fault
PositiveEna- Positive Di- BOOL TRUE or FALSE FALS • MC_MoveJog Instruction
ble rection Enable E When this variable changes to
TRUE, the axis starts moving in
the positive direction. When it
changes to FALSE, the axis stops
moving. The Velocity,
Acceleration, and Deceleration in-
put variables to the MC_MoveJog
instruction are read when
PositiveEnable changes to TRUE.
• MC_SetTorqueLimit Instruction
When this variable changes to
TRUE, the positive torque limit is
enabled. When it changes to
FALSE, the positive torque limit is
disabled.
NegativeEn- Negative Di- BOOL TRUE or FALSE FALS • MC_MoveJog Instruction
able rection Enable E When this variable changes to
TRUE, the axis starts moving in
the negative direction. When it
changes to FALSE, the axis stops
moving. The Velocity,
Acceleration, and Deceleration in-
put variables to the MC_MoveJog
instruction are read when
NegativeEnable changes to
TRUE.
• MC_SetTorqueLimit Instruction
When this variable changes to
TRUE, the negative torque limit is
enabled. When it changes to
FALSE, the negative torque limit
is disabled.
BufferMode Buffer Mode _eMC_BUF- 0: _mcAborting 0*1 Specifies the operation when exe-
Selection FER_MODE 1: _mcBuffered cuting more than one motion instruc-
2: _mcBlendingLow tion.
3: _mcBlendingPrevious 0: Aborting
4: _mcBlendingNext 1: Buffered
5: _mcBlendingHigh 2: Blending low
3: Blending previous
4: Blending next
5: Blending high
Velocity Target Veloci- LREAL Positive number*2 0 Specifies the target velocity. *3
ty
Acceleration Acceleration LREAL Non-negative number 0 Specifies the acceleration rate. *4
Rate
Deceleration Deceleration LREAL Non-negative number 0 Specifies the deceleration rate. *4
Rate
Jerk Jerk LREAL Non-negative number 0 Specifies the jerk. *5
De-
Name Meaning Data type Valid range Description
fault
Distance Travel Dis- LREAL Negative number, posi- 0 Specifies the travel distance from
tance tive number, or 0 the command current position.
ARRAY [0..3] Negative number, posi- 0 Specifies the target position for line-
OF LREAL tive number, or 0 ar interpolation. *6
2-1 Variables
Position Target Posi- LREAL Negative number, posi- 0 Specifies the absolute target posi-
tion tive number, or 0 tion. *6
ARRAY [0..3] Negative number, posi- 0 Specifies the target position for line-
OF LREAL tive number, or 0 ar interpolation. *6
VelFactor Velocity Over- LREAL 0 to 500 100 Specifies the velocity override factor. 2
ride Factor The valid range of the override fac-
tors is between 0.01 and 500.00.
De-
Name Meaning Data type Valid range Description
fault
StartPosition Cam Table LREAL Negative number, posi- 0 Specifies the starting point of the
Start Position tive number, or 0 cam table (0 phase) as an absolute
position of the master axis.
MasterStart Master Fol- LREAL Negative number, posi- 0 Specifies the position of the master
Distance lowing Dis- tive number, or 0 axis when the following axis starts
tance the cam motion.
If you specify Absolute Positioning
for StartMode, specify the absolute
position of the master axis. If you
specify Relative Positioning, speci-
fy the relative position of the master
axis from StartPosition (Cam Table
Start Position).
MasterScal- Master Coeffi- LREAL Positive value (> 0.0) 1.0 The master axis phase is extended
ing cient or contracted using the specified
scale.
SlaveScaling Slave Axis LREAL Positive value (> 0.0) 1.0 The slave axis displacement is ex-
Coefficient tended or contracted using the
specified scale.
MasterOffset Master Offset LREAL Negative number, posi- 0 The phase of the master axis is shift-
tive number, or 0 ed using the specified offset value.
SlaveOffset Slave Offset LREAL Negative number, posi- 0 The displacement of the slave axis is
tive number, or 0 shifted using the specified offset val-
ue.
CamTransi- Cam Transi- _eMC_CAM_ 0: _mcCTNone 0*1 (Reserved)
tion tion Selection TRANSITION
(Reserved)
OutMode Sync End _eMC_OUT_ 0: _mcStop 0*1 (Reserved)
(Reserved) Mode Selec- MODE
tion
CamMonitor- Cam Monitor _eMC_CAM_ 0: _mcCalcCamDistance- 0 *1 Specifies information on the cam op-
Mode *9 Mode Selec- MONI- Diff eration to be monitored.
tion TOR_MODE 0: Displacement following error cal-
culation
Direction Direction _eMC_DI- 0: _mcPositiveDirection 4/0 *1 Specifies the travel direction.
RECTION 1: _mcShortestWay 0: Positive direction
2: _mcNegativeDirection 1: Shortest way
3: _mcCurrentDirection 2: Negative direction
4: _mcNoDirection 3: Current direction
4: No direction specified
Continuous Continuation BOOL TRUE or FALSE FALS (Reserved)
(Reserved) Mode Selec- E
tion
RatioNumer- Gear Ratio DINT*10 Positive or negative num- 10,00 Specifies the electronic gear ratio
ator Numerator ber*10 0 numerator between the master and
slave axes.
RatioDeno- Gear Ratio UDINT*11 Positive number 10,00 Specifies the electronic gear ratio
minator Denominator 0 denominator between the master
and slave axes.
MasterSync Master Sync LREAL Negative number, posi- 0 Specifies the absolute master sync
Position Position tive number, or 0 position.
De-
Name Meaning Data type Valid range Description
fault
SlaveSync- Slave Sync LREAL Negative number, posi- 0 Specifies the absolute slave sync
Position Position tive number, or 0 position.
SlaveDis- Slave Axis LREAL Negative number, posi- 0 Specifies the travel distance for the
tance Travel Dis- tive number, or 0 slave axis.
2-1 Variables
tance
MasterDis- Master Axis LREAL Non-negative number 0 Specifies the travel distance of the
tance Travel Dis- master axis.
tance
MasterDis- Master Dis- LREAL Non-negative number 0 Specifies the travel distance of the
tanceInACC tance in Ac- master axis while the slave axis is 2
celeration accelerating.
MasterDis- Master Dis- LREAL Non-negative number 0 Specifies the travel distance of the
De-
Name Meaning Data type Valid range Description
fault
PhaseShift Phase Shift LREAL Negative number, posi- 0 Specifies the master phase shift
Amount tive number, or 0 amount. *6
Torque Target Torque LREAL 0 to 1000.0 300.0 Specify the target torque to output to
the Servo Drive in increments of
0.1%.
The target torque is specified as a
percentage of the rated torque. The
unit is %.
TorqueRamp Torque Ramp LREAL Non-negative number 0 Specifies the rate of change in the
torque from the current value to the
target torque.
The unit is %/s.
PositiveVal- Positive Tor- LREAL 0.1 to 1000.0 or 0.0 300.0 Specifies the torque limit in the posi-
ue que Limit tive direction in increments of 0.1%.
If a value that exceeds the
Maximum Positive Torque Limit
axis parameter, the positive torque
will be the Maximum Positive
Torque Limit.
The value will be 0 if 0 or a negative
value is specified.
NegativeVal- Negative Tor- LREAL 0.1 to 1000.0 or 0.0 300.0 Specifies the torque limit in the neg-
ue que Limit ative direction in increments of 0.1%.
If a value that exceeds the
Maximum Negative Torque Limit
axis parameter, the negative torque
will be the Maximum Negative
Torque Limit.
The value will be 0 if 0 or a negative
value is specified.
WindowOnly Window Only BOOL TRUE or FALSE FALS Specify whether to enable or disable
E the window mask.
FirstPosition First Position LREAL Negative number, posi- 0 Specify the first position.
tive number, or 0
LastPosition Last Position LREAL Negative number, posi- 0 Specify the last position.
tive number, or 0
StopMode Stopping _eMC_STOP 1: _mcImmediateStop 4*1 Specifies the stopping method.
Mode Selec- _MODE 2: _mcImmediateStop- 1: Perform an immediate stop
tion FEReset 2: Perform an immediate stop and
3: _mcFreeRunStop reset the following error counter
4: _mcNonStop 3: Perform an immediate stop and
turn OFF the Servo
4: Do not stop
Relative Relative Posi- BOOL TRUE or FALSE FALS (Reserved)
(Reserved) tion Selection E
Execution- Execution _eMC_EXE- 0: _mcImmediately 0*1 (Reserved)
Mode Mode CU-
(Reserved) TION_MODE
Permitted- Permitted Fol- LREAL Non-negative number 0 Specifies the permitted maximum
Deviation lowing Error value for the following error between
the master and slave axes.
De-
Name Meaning Data type Valid range Description
fault
CmdPos- Command _eMC_CMDP 0: _mcCount 0*1 0: Use the actual current position
Mode Current Posi- OS_MODE and update the command current
tion Count Se- position.
lection Home remains defined.
2-1 Variables
CoordSys- Coordinate _eMC_CO- 0: _mcACS 0*1 Specifies the coordinate system.
tem System ORD_SYS- 0: Axis coordinate system (ACS)
TEM
Transition- Transition _eMC_TRAN- 0: _mcTMNone 0*1 Specifies the path of motion.
Mode Mode SI- 10: _mcTMCornerSuper- 0: Transition disabled
TION_MODE imposed 10: Superimpose corners 2
MoveMode Travel Mode _eMC_MOVE 0: _mcAbsolute 0*1 Selects the travel method.
_MODE 1: _mcRelative 0: Absolute positioning
De-
Name Meaning Data type Valid range Description
fault
Homi- Homing Meth- _eMC_HOM- 0: _mcHomeSwTurnHo- 0*1 Specify the new setting of the
ngMode*15 od ING_MODE meSwOff Homing Method.
1: _mcHomeSwTurnHo- 0: Proximity reverse turn/home prox-
meSwOn imity input OFF
4: _mcHomeSwOff 1: Proximity reverse turn/home prox-
5: _mcHomeSwOn imity input ON
8: _mcLimitInputOff 4: Home proximity input OFF
9: _mcHomeSwTurnHo- 5: Home proximity input ON
meMask 8: Limit input OFF
11: _mcLimitInputOnly 9: Proximity reverse turn/home input
12: _mcHomeSwTurn- mask distance
HoldingTime 11: Limit inputs only
13: _mcNoHomeSwHol- 12: Proximity reverse turn/holding
dingHomeInput time
14: _mcHomePreset 13: No home proximity input/holding
home input
14: Zero position preset
AxisUse*16 Axis Use _eMC_AX- 1: _mcUnusedAxis 1*1 Specifies a used axis or an unused
IS_USE 2: _mcUsedAxis axis.
1: Unused axis
2: Used axis
Enable- Enable Tracks WORD 16#0000 to FFFF 0 Specifies whether to enable or disa-
Mask*17 ble each track. There are a maxi-
mum of 16 tracks. Specify enable or
disable for track 0 with bit 0 and
track 15 with bit 15.
0: Disabled, 1: Enable
ValueSource Input Informa- _sMC_SOUR --- --- (Reserved)
(Reserved) tion CE
Time- Time Stamp ULINT Non-negative number 0 Specifies the time stamp for which to
Stamp*17 calculate the position.
A time stamp that is based on the
time in a Digital Input Unit, Encoder
Input Unit, or OMRON 1S-series
Servo Drive with built-in EtherCAT
communications that supports time
stamp refreshing is specified. The
unit is nanoseconds.
ExecID*18 Execution ID UINT 2 2 Specifies the ID of the task with
which the variable is synchronized.
2: Priority-5 periodic task
OffsetPosi- Position Off- LREAL Negative number, posi- 0 Specifies the position offset to add to
tion*14 set tive number, or 0 the command current position. *6
*1. The default value for an enumeration variable is actually not the number, but the enumerator.
*2. You can use instructions, such as the MC_MoveJog or MC_MoveVelocity instruction, to set the velocity to 0.
*3. The unit is command units/s. The command unit is millimeters, micrometers, nanometers, degrees, inches, or pulses.
*4. The unit is command units/s2.
*5. The unit is command units/s3.
*6. This unit is command units.
*7. To use _mcLatestCommand, the following condition must be met for the master and slave axes.
The axis number set for the master axis in the system-defined variable for motion control must be lower than the axis
number set for the slave axis in the system-defined variable for motion control.
*8. The task period is the primary period if the task is the primary periodic task and the task period of the priority-5 periodic
task if the task is the priority-5 periodic task.
*9. If you use an NX102 CPU Unit, the CPU Unit with unit version 1.32 or later and Sysmac Studio version 1.28 or higher
are required to use this variable.
If you use an NX1P2 CPU Unit or NJ-series CPU Unit, the CPU Unit with unit version 1.21 or later and Sysmac Studio
version 1.28 or higher are required to use this variable.
2-1 Variables
*10. A CPU Unit with unit version 1.02 or later and Sysmac Studio version 1.03 or higher are required to use this data type.
For any previous version combinations, the data type is UINT and the valid range is positive numbers.
*11. A CPU Unit with unit version 1.02 or later and Sysmac Studio version 1.03 or higher are required to use this data type.
For any previous version combinations, the data type is UINT.
*12. This parameter is enabled only for torque control.
*13. A CPU Unit with unit version 1.01 or later and Sysmac Studio version 1.02 or higher are required to use this variable.
*14. A CPU Unit with unit version 1.10 or later and Sysmac Studio version 1.12 or higher are required to use this variable. 2
*15. A CPU Unit with unit version 1.03 or later and Sysmac Studio version 1.04 or higher are required to use this variable.
*16. A CPU Unit with unit version 1.04 or later and Sysmac Studio version 1.05 or higher are required to use this variable.
− 0 +
2-1 Variables
acceleration jerk application time*13 or the
application time*13 or the Interpolation deceleration
Interpolation jerk application time*13 is
deceleration jerk greater than 250 s, it will al-
application time*13 is less ways be 250 s.
than 125 μs, it will always Error when negative num- 2
be 125 μs. ber.
*1. The maximum value that you can set is as follows when the value is converted to pulses:
Enumerations
This ENUM data is used by input variables to motion control instructions.
An enumeration input variable is not actually set to the number, but to the enumerator.
Corresponding instruc-
Data type Valid range Description tion variable
(Meaning)
_eMC_BUF- 0: _mcAborting Specifies the operation for multi-exe- BufferMode
FER_MODE 1: _mcBuffered cution of motion control instructions. (Buffer Mode Selection)
2: _mcBlendingLow 0: Aborting
3: _mcBlendingPrevious 1: Buffered
4: _mcBlendingNext 2: Blending low
5: _mcBlendingHigh 3: Blending previous
4: Blending next
5: Blending high
_eMC_CIRC_MOD 0: _mcBorder Specifies the method for circular in- CircMode
E 1: _mcCenter terpolation. (Circular Interpolation
2: _mcRadius 0: Border point Mode)
1: Center
2: Radius
_eMC_CAM_TRAN 0: _mcCTNone Specifies the slave axis command CamTransition
SITION value output method when the cam is (Cam Transition Selec-
restarted. tion)
0: No limit or correction
_eMC_CIRC_PAT 0: _mcCW Specifies the path direction. PathChoice
HCHOICE 1: _mcCCW 0: CW (Path Choice)
1: CCW
_eMC_COM- 0: _mcAddAxes Specifies the combining method. CombineMode
BINE_MODE 1: _mcSubAxes 0: Addition (Combine Mode)
1: Subtraction
_eMC_CO- 0: _mcACS Specifies the coordinate system. CoordSystem
ORD_SYSTEM 0: Axis coordinate system (ACS) (Coordinate System)
_eMC_DIRECTION 0: _mcPositiveDirection Specifies the direction of motion. Direction
1: _mcShortestWay 0: Positive direction
2: _mcNegativeDirection 1: Shortest way
3: _mcCurrentDirection 2: Negative direction
4: _mcNoDirection 3: Current direction
4: No direction specified
_eMC_EXECU- 0: _mcImmediately (Reserved) ExecutionMode
TION_MODE (Execution Mode)
_eMC_LINKOP- 0: _mcCommandExecution Specifies the condition for the slave LinkOption
TION 1: _mcTriggerDetection axis to synchronize with the master (Synchronization Start
2: _mcMasterReach axis. Condition)
0: Start of instruction
1: When trigger is detected
2: When the master axis reaches the
master following distance
_eMC_MOVE_MO 0: _mcAbsolute Selects the travel method. MoveMode
DE 1: _mcRelative 0: Absolute positioning (Travel Mode)
2: _mcVelocity 1: Relative positioning
2: Velocity control
_eMC 0: _mcStop Specifies the mode to disable the OutMode
_OUT_MODE synchronized control instruction. (Sync End Mode Selec-
0: Deceleration stop tion)
(Reserved)
Corresponding instruc-
Data type Valid range Description tion variable
(Meaning)
_eMC_PARAME- 0: _mcChkVel Specifies the parameter to write. ParameterNumber
TER_NUMBER 1: _mcChkAcc 0: Velocity Warning Value/Interpola- (Parameter Number)
2: _mcChkDec tion Velocity Warning Value
2-1 Variables
3: _mcPosiChkTrq*1 1: Acceleration Warning Value/Inter-
polation Acceleration Warning Value
4: _mcNegaChkTrq*1
2: Deceleration Warning Value/Inter-
5: _mcFELmt
polation Deceleration Warning Value
6: _mcChkFELmt
3: Positive Torque Warning Value
7: _mcSwLmtMode
8: _mcPosiSwLmt
4: Negative Torque Warning Value 2
5: Following Error Over Value
9: _mcNegaSwLmt
6: Following Error Warning Value
10: _mcInPosTime
Corresponding instruc-
Data type Valid range Description tion variable
(Meaning)
_eMC_TRIG- 0: _mcLatch1 Specifies which of the two latch func- LatchID
GER_LATCH_ID 1: _mcLatch2 tions to use.
0: Latch 1
1: Latch 2
_eMC_CMDPOS_ 0: _mcCount 0: Use the actual current position and CmdPosMode
MODE update the command current posi- (Command Current Posi-
tion. tion Count Selection)
Home remains defined.
_eMC_TRANSI- 0: _mcTMNone Specifies the path of motion. TransitionMode
TION_MODE 10: _mcTMCornerSuperimposed 0: Transition disabled (Transition Mode)
10: Superimpose corners
_eMC_TRIG- 0: _mcDrive Specifies the trigger mode. Mode
GER_MODE 1: _mcController 0: Drive Mode
1: Controller Mode
_eMC_TRIG- 0: _mcEncoderMark Specifies the trigger signal in Drive InputDrive
GER_IN- 1: _mcEXT Mode. (Trigger Input Signal)
PUT_DRIVE 0: Z-phase signal
1: External input
_eMC_HOM- 0: _mcHomeSwTurnHomeSwOff Specify the new setting of the ---
ING_MODE*6 1: _mcHomeSwTurnHomeSwOn Homing Method.
4: _mcHomeSwOff 0: Proximity reverse turn/home prox-
5: _mcHomeSwOn imity input OFF
8: _mcLimitInputOff 1: Proximity reverse turn/home prox-
9: _mcHomeSwTurnHomeMask imity input ON
11: _mcLimitInputOnly 4: Home proximity input OFF
12: _mcHomeSwTurnHolding- 5: Home proximity input ON
Time 8: Limit input OFF
13: _mcNoHomeSwHoldingHo- 9: Proximity reverse turn/home input
meInput mask distance
14: _mcHomePreset 11: Limit inputs only
12: Proximity reverse turn/holding
time
13: No home proximity input/holding
home input
14: Zero position preset
_eMC_HOME_IN- 0: _mcZPhase Select the input to use for the home ---
PUT*6 1: _mcExternalSignal input signal.
0: Use Z-phase input as home.
1: Use external home input.
_eMC_LIMIT_RE- 0: _mcErrorStop Sets the stopping method when the ---
VERSE_MODE*6 1: _mcRevImmediateStop limit input turns ON during homing.
2: _mcRevDecelerationStop 0: No reverse turn/minor fault stop
(Stop according to Limit Input Stop
Method parameter.)
1: Reverse turn/immediate stop
2: Reverse turn/deceleration stop
Corresponding instruc-
Data type Valid range Description tion variable
(Meaning)
_eMC_CAM_CUR 0: _mcConstantLine Specifies the shape of the cam curve Curve
VE*7 1: _mcStraightLine to the node point. (Curve Shape)
2: _mcParabolic 0: Constant
2-1 Variables
3: _mcModifiedConstantVel 1: Straight line
4: _mcModifiedTrapezoid 2: Parabolic
5: _mcModifiedSine 3: Modified constant velocity
6: _mcCycloidal 4: Modified trapezoid
7: _mcTrapecloid 5: Modified sine
8: _mcReverseTrapecloid 6: Cycloidal 2
9: _mcSimpleHarmonic 7: Trapecloid
10: _mcDoubleHarmonic 8: Reverse trapecloid
*2. A CPU Unit with unit version 1.01 or later and Sysmac Studio version 1.02 or higher are required to use this setting.
*3. A CPU Unit with unit version 1.10 or later and Sysmac Studio version 1.12 or higher are required to use this setting.
*4. To use _mcLatestCommand, the following condition must be met for the master and slave axes.
When you use mcLatestCommand, the axis number set for the master axis in the system-defined variable for motion
control must be lower than the axis number set for the slave axis in the system-defined variable for motion control.
*5. The task period is the primary period if the task is the primary periodic task and the task period of the priority-5 periodic
task if the task is the priority-5 periodic task.
*6. A CPU Unit with unit version 1.03 or later and Sysmac Studio version 1.04 or higher are required to use this variable.
*7. A CPU Unit with unit version 1.08 or later and Sysmac Studio version 1.09 or higher are required to use this variable.
*8. For a CPU Unit with unit version 1.10 or later, blending is not changed to Buffered. For details, refer to the NJ/NX-
series CPU Unit Motion Control User’s Manual (Cat. No. W507).
*9. For a CPU Unit with unit version 1.10 or later, the axis does not stop with an error and operation continues if blending
operation is used. For details, refer to the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507).
*10. If you use an NX102 CPU Unit, the CPU Unit with unit version 1.32 or later and Sysmac Studio version 1.28 or higher
are required to use this variable.
If you use an NX1P2 CPU Unit or NJ-series CPU Unit, the CPU Unit with unit version 1.21 or later and Sysmac Studio
version 1.28 or higher are required to use this variable.
Valid
Name Meaning Data type Description
range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE At this time, output variables Active, Error, and
CommandAborted are FALSE.
Done will be TRUE for at least one period if the input
variable Execute is FALSE when the instruction is
completed.
If Execute is TRUE, Done remains TRUE until
Execute changes to FALSE.
Busy Executing BOOL TRUE or Changes to TRUE when an instruction is acknowl-
FALSE edged.
Active Controlling BOOL TRUE or Changes to TRUE when the instruction is executed.
FALSE This variable is TRUE while the instruction is actually
controlling an axis or axes group. At this time, output
variables Done, Error, and CommandAborted are
FALSE.
Enabled Enabled BOOL TRUE or Changes to TRUE when busy.
FALSE
Valid
Name Meaning Data type Description
range
CommandAborted Instruction BOOL TRUE or TRUE when an instruction could not be executed or
Aborted FALSE when it was aborted during execution.
The instruction is not executed if there is an error
with the target axis or axes group. Similarly, the in-
2-1 Variables
struction is not executed while the target axis or axes
group is decelerating to a stop.
The instruction is aborted when another instruction is
executed, or if an error other than for this instruction
occurs.
At this time, output variables Done, Active, and Error 2
change to FALSE. If the instruction is aborted while
the input variable Execute is FALSE,
Valid
Name Meaning Data type Description
range
InVelocity Target Veloc- BOOL TRUE or TRUE when the target velocity is reached.
ity Reached FALSE
InSync In Sync BOOL TRUE or TRUE when slave axis is synchronized to the master
FALSE axis, or when the slave axis reaches the slave sync
position.
InGear Gear Ratio BOOL TRUE or TRUE when the slave axis reaches the target veloci-
Achieved FALSE ty.
InCombination Axes Com- BOOL TRUE or TRUE when axes are combined.
bined FALSE
InCam Cam Motion BOOL TRUE or TRUE when the cam table start point is executed.
FALSE
InTorque Target Tor- BOOL TRUE or TRUE when the target torque is reached.
que FALSE
Reached
InFeed Feeding BOOL TRUE or TRUE while feeding after receiving a latch input.
FALSE
InZone In Zone BOOL TRUE or TRUE when the axes position is within the zone
FALSE range.
Valid*4 Enabled BOOL TRUE or TRUE when the axes group is being controlled.
FALSE
CommandPosi- Command ARRAY [0..3] Negative Contains the current value of the command position.
tion*4 Current Posi- OF LREAL number, *3
tion positive
number, or
0
ActualPosition*4 Actual Cur- ARRAY [0..3] Negative Contains the actual current position. *3
rent Position OF LREAL number,
positive
number, or
0
InPosition*4 In Position BOOL TRUE or TRUE when the actual current positions for all com-
FALSE position axes are within the in-position range of their
target positions.
InOperation*5 In Operation BOOL TRUE or TRUE when the operation for the instruction is in
FALSE progress.
CalcPosition*5 Calculated LREAL Negative Contains the position for the specified time stamp. *3
Position number,
positive
number, or
0
ErrorParameter- Parameter WORD *2 Contains the attached information for some error co-
Code*6 Detail Code des.
If the information is saved, the detail code of the pa-
rameter for which the error occurred is output.
ErrorNodePointIn- Node Point UINT *2 Contains the attached information for some error co-
dex*6 Element des.
Number If the information is saved, the element number of the
node point for which the error occurred is output.
Valid
Name Meaning Data type Description
range
OutputtedOffset- Position Off- LREAL Negative Contains the position offset that was added to the
Position *7 set Output number, command current position.
Value positive The value is updated when Active is TRUE.
number, or Updating is stopped and the value is retained when
2-1 Variables
0 CommandAborted or Error is TRUE.
*1. Error is not reset to FALSE until you execute one of the following instructions: MC_Reset, MC_GroupReset, or Re-
setMCError.
This behavior is different from the PLCopen® specifications. With PLCopen® specifications, it changes to FALSE when
Execute changes to FALSE.
When Error is TRUE, the motion control instruction is not executed. Instructions are not executed after an error is 2
cleared even if Execute is TRUE. The value of this variable must change from FALSE to TRUE to execute the instruc-
tion. Enable-type motion control instructions are executed whenever their Enable variable is TRUE.
Additional Information
To enable accessing output variables for motion control instructions even after the operating
mode is changed, assign variables that have output parameters with a retain attribute.
By accessing the assigned output parameter, you can access the output variable immediately
before the operating mode changed.
*8. If you use an NX102 CPU Unit, the CPU Unit with unit version 1.32 or later and Sysmac Studio version 1.28 or higher
are required to use this variable.
If you use an NX1P2 CPU Unit or NJ-series CPU Unit, the CPU Unit with unit version 1.21 or later and Sysmac Studio
version 1.28 or higher are required to use this variable.
*9. Information on the cam operation to be monitored is specified by CamMonitorMode (Cam Monitor Mode Selection).
2-1 Variables
2
2-2 Instructions
There are three types of motion control instructions. They are given in the following table.
Type Outline
Common commands Common instructions for the MC Function Module
Axis commands Instructions for MC Function Module to perform single-axis control
Axes group commands Instructions for MC Function Module to perform multi-axes coordinated control
For details on common commands, refer to Section 5 Common Command Instructions on page
5 - 1. For axis commands, refer to Section 3 Axis Command Instructions on page 3 - 1. For axes
groups, refer to Section 4 Axes Group Instructions on page 4 - 1.
With the NX-series Position Interface Units, some motion control instructions are subject to functional
restrictions and some motion control instructions cannot be used. Refer to the NX-series Position
Interface Units User’s Manual (Cat. No. W524) for details.
Instruction Single-
Instruction Outline Classification
name axis*1
MC_SetCamTable- Set Cam Table The end point index of the cam table that is Administration O
Property Properties specified in the input parameter is changed.
MC_SaveCamTable Save Cam Table Saves the cam table specified with the input pa- Administration O
rameter.
MC_Write Write MC Setting Writes part of the parameter settings for motion Administration O ¡
control.
MC_GenerateCamT- Generate Cam Creates a cam table for the cam properties and Administration O
able*2 Table cam nodes specified in the I/O variables.
MC_WriteAxisPara- Write Axis Pa- Writes the settings of the axis parameters in the Administration O ¡
meter*2 rameters motion control parameters.
MC_ReadAxisPara- Read Axis Pa- Reads the settings of the axis parameters from Administration O ¡
meter*2 rameters the motion control parameters.
*1. Instructions usable with single-axis position control axis are marked with ¡.
*2. A CPU Unit with unit version 1.08 or later and Sysmac Studio version 1.09 or higher are required.
For details on the axis states due to instruction execution, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
2-2 Instructions
instructions.
The symbols have the following meanings.
Sin-
2
Classifica- gle-
Instruction Instruction name Outline
axis
MC_Power Power Servo Makes the Servo Drive ready to operate. Adminis- P ¡
tration
MC_MoveJog Jog Performs jogging according to the specified target ve- Motion O ¡
locity.
MC_Home Home Operates the motor to determine home using the limit Motion P ¡
signals, home proximity signal, and home signal.
MC_HomeWith- Home with Param- Sets the homing parameter and operates the motor Motion O ¡
Parameter *2 eters to determine home. It uses the limit signals, home
proximity signal, and home signal.
MC_Move Positioning Performs absolute positioning or relative positioning. Motion O ¡
MC_MoveAbsolute Absolute Position- Performs positioning for the specified absolute target Motion P ¡
ing position.
MC_MoveRelative Relative Position- Performs positioning for the specified travel distance Motion P ¡
ing from the command current position.
MC_MoveVelocity Velocity Control Performs velocity control with the Position Control Motion P ¡
Mode of the Servo Drive.
MC_MoveZeroPosi- High-speed Home Performs positioning with an absolute position of 0 as Motion O ¡
tion the target position to return to home.
MC_MoveFeed Interrupt Feeding Positioning is performed for the specified travel dis- Motion O ¡
tance from the position where an external device trig-
gers an interrupt input.
MC_Stop Stop Decelerates an axis to a stop. Motion P ¡
MC_ImmediateStop Immediate Stop Stops an axis according to the stopping mode that is Motion O ¡
set with the StopMode (Stopping Mode Selection) in-
put variable regardless of the status of the axis.
MC_SetPosition Set Position Changes the command current position or the actual Adminis- P ¡
current position as required for an axis. tration
MC_SetOverride Set Override Fac- Changes the target velocity for an axis. Adminis- P ¡
tors tration
MC_ResetFollowin- Reset Following Resets the following error between the command po- Motion O ¡
gError Error Counter sition and the actual position.
MC_CamIn Start Cam Opera- Starts cam operation with a specified cam table. Motion P
tion
MC_CamOut End Cam Opera- Ends cam operation for the axis specified with the in- Motion P
tion put parameter.
MC_CamMonitor *3 Cam Monitor Monitors information on the cam operation. Motion O
Sin-
Classifica- gle-
Instruction Instruction name Outline
tion axis
*1
MC_GearIn Start Gear Opera- Specifies the gear ratio between the master axis and Motion P
tion the slave axis and starts gear operation.
MC_GearInPos Positioning Gear Specifies the gear ratio between the master axis and Motion P
Operation the slave axis and starts electronic gear operation.
Specifies the positions of the master axis and slave
axis to start synchronization.
MC_GearOut End Gear Opera- Cancels MC_GearIn and MC_GearInPos instruc- Motion P
tion tions.
MC_MoveLink Synchronous Posi- Performs positioning in sync with the specified mas- Motion O
tioning ter axis.
MC_CombineAxes Combine Axes Outputs the sum or difference of the command posi- Motion O
tions of two axes as the command position.
MC_Phasing Shift Master Axis Shifts the phase of the master axis currently in Motion P
Phase synchronized control.
MC_TorqueControl Torque Control Uses the Torque Control Mode of the Servo Drive to Motion P
control the torque.
MC_SetTorqueLimit Set Torque Limit Limits the torque output from the Servo Drive through Adminis- O ¡
the torque limit function of the Servo Drive. tration
MC_ZoneSwitch Zone Monitor Determines if the command position or actual current Adminis- O ¡
position of an axis is within a specified zone. tration
MC_TouchProbe Enable External Records the position of an axis when a trigger signal Adminis- P ¡
Latch occurs. tration
MC_AbortTrigger Disable External Disables the current latch. Adminis- P ¡
Latch tration
MC_AxesObserve Monitor Axis Fol- Monitors the deviation between the command posi- Adminis- O ¡
lowing Error tions or actual positions for the specified two axes to tration
see if it exceeds the allowed value.
MC_SyncMoveVe- Cyclic Synchro- Outputs the value set for the target velocity every Motion O
locity nous Velocity Con- *4
task period to the Servo Drive in Cyclic Synchro-
trol nous Velocity Mode (CSV).
MC_SyncMoveAb- Cyclic Synchro- Cyclically outputs the specified target positions for Motion O ¡
solute *2 nous Absolute Po- the axes.
sitioning
MC_Reset Reset Axis Error Clears an axis error. Adminis- P ¡
tration
MC_ChangeAxi- Change Axis Use Temporarily changes the Axis Use axis parameter. Adminis- P ¡
sUse *5 tration
MC_DigitalCamS- Enable Digital Cam Turns a digital output ON or OFF according to the ax- Adminis- P ¡
witch *6 Switch is position. tration
MC_TimeStampTo- Time Stamp to Axis Calculates the position of the axis for the specified Adminis- O ¡
Pos *6 Position Calcula- time stamp. tration
tion
MC_PeriodicSync- Periodic Axis Varia- Periodically synchronizes Axes Variables between Adminis- O
Variables *7 ble Synchroniza- tasks. tration
tion between Tasks
Sin-
Classifica- gle-
Instruction Instruction name Outline
tion axis
*1
MC_SyncOffsetPo- Cyclic Synchro- Cyclically adds the specified position offset to the Motion O
2-2 Instructions
sition*8 nous Position Off- command current position of the slave axis in
set Compensation synchronized control, and outputs the result.
MC_OffsetPosition Position Offset Adds the specified position offset to the command Motion O
*3 Compensation current position of the slave axis in synchronized con-
trol with an acceleration/deceleration curve applied,
and outputs the result.
*1. Instructions usable with single-axis position control axis are marked with ¡. 2
*2. A CPU Unit with unit version 1.03 or later and Sysmac Studio version 1.04 or higher are required to use this instruc-
tion.
For details on the axis states due to instruction execution, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
Refer to the compliance list for items that conform to PLCopen® technical specifications.
The compliance list can be accessed on the PLCopen® website.
For details on the axes group states due to instruction execution, refer to the NJ/NX-series CPU Unit
Motion Control User’s Manual (Cat. No. W507).
Refer to the compliance list for items that conform to PLCopen® technical specifications.
The compliance list can be accessed on the PLCopen® website.
RxPDO: 261th Controlword (6040 hex), Target Position (607A hex), Target Velocity (60FF hex), Target
2
Receive PDO Torque (6071 hex), Modes of Operation (6060 hex), Touch Probe Function (60B8 hex),
Mapping (1704 Max Profile Velocity (607F hex), Positive Torque Limit Value (60E0 hex), and Negative Tor-
Additional Information
For details on setting the PDO map, refer to the NJ/NX-series CPU Unit Motion Control User’s Manual
(Cat. No. W507).
Refer to I/O Entry Mappings in the NX-series Position Interface Units User’s Manual (Cat. No. W524)
for information on using the NX-series Position Interface Units.
Servo Axes
The following objects must be set to use motion control instructions for a Servo axis.
Version Information
• If you are using a CPU Unit with unit version 1.10 or later, operation is as described in the
following table depending on whether Modes of Operation (6060 hex) and Modes of
Operation Display (6061 hex) are mapped.
• If you are using a CPU Unit with unit version 1.09 or earlier and you are not using an OM-
RON 1S-series Servo Drive with built-in EtherCAT communications or G5-series Servo Drive
with built-in EtherCAT communications for the servo axis, Modes of Operation (6060 hex) and
Modes of Operation Display (6061 hex) are required.
Encoder Axes
The following object must be set to use motion control instructions for an encoder axis.
Servo Axes
There are objects that you must set to use specific instructions for Servo axes.
Output Settings
Input Settings
Function
Torque Modes of
actual operation Touch probe pos1 Touch probe
Instruction Touch probe status
value display pos value pos2 pos value
(60B9 hex)
(6077 (6061 (60BA hex) (60BC hex)
hex) hex)*1
MC_Home Conditionally re-
Conditionally required*2
quired*2
MC_HomeWithPara- Conditionally re-
meter Conditionally required*2
quired*2
MC_MoveFeed Conditionally re- Conditionally re-
Conditionally required*4
quired*3 quired*5
Function
Torque Modes of
actual operation Touch probe pos1 Touch probe
Instruction Touch probe status
value display pos value pos2 pos value
(60B9 hex)
(6077 (6061 (60BA hex) (60BC hex)
hex) hex)*1
MC_MoveLink Conditionally re- Conditionally re-
Conditionally required*7
quired*6 quired*8
MC_TorqueControl Required Required
MC_TouchProbe Conditionally re- Conditionally re-
Conditionally required*4
quired*3 quired*5
MC_SyncMoveVelocity Required
*1. If you set Modes of Operation Display (6061 hex), also set Modes of Operation (6060 hex). Normal operation is not
possible if only one of these objects is set.
*2. Setting is not required for Homing Operation Modes 11, 12, and 14.
*3. Setting is required when Mode is set to Drive Mode.
*4. Setting is required when Mode is set to Drive Mode and LatchID is set to _mcLatch1 (Latch 1).
*5. Setting is required when Mode is set to Drive Mode and LatchID is set to _mcLatch2 (Latch 2).
*6. Setting is required when LinkOption (Synchronization Start Condition) is set to _mcTriggerDetection and Mode is set
to Drive Mode.
*7. Setting is required when LinkOption (Synchronization Start Condition) is set to _mcTriggerDetection, Mode is set to
Drive Mode, and LatchID is set to _mcLatch1 (Latch 1).
*8. Setting is required when LinkOption (Synchronization Start Condition) is set to _mcTriggerDetection, Mode is set to
Drive Mode, and LatchID is set to _mcLatch2 (Latch 2).
Encoder Axes
There are objects that you must set to use specific instructions for encoder axes.
Refer to the following tables and set the required objects.
There are no additional object settings required for encoder axis operation for any instructions that are
not listed in the following table.
Output Settings
Function
Instruction Touch probe function Software Switch of Encoder's Input Slave
(4020 hex) (4020 hex)
MC_TouchProbe Conditionally required*1 Conditionally required*2
*1. Setting is required when Mode is set to Drive Mode.
*2. Setting is required when an OMRON GX-series encoder slave is used and Mode is set to Drive Mode.
Input Settings
Function
Touch probe sta- Touch probe Touch probe Status of Encod-
Instruction
tus pos1 pos value pos2 pos value er's Input Slave
(4030 hex) (4012 hex) (4013 hex) (4030 hex)
MC_TouchProbe Conditionally re- Conditionally re- Conditionally re- Conditionally re-
quired*1 quired*2 quired*3 quired*4
*1. Setting is required when Mode is set to Drive Mode.
*2. Setting is required when Mode is set to Drive Mode and LatchID is set to _mcLatch1 (Latch 1).
*3. Setting is required when Mode is set to Drive Mode and LatchID is set to _mcLatch2 (Latch 2).
*4. Setting is required when an OMRON GX-series encoder slave is used and Mode is set to Drive Mode.
MC_Power ............................................................................................................... 3 - 3
MC_MoveJog .......................................................................................................... 3 - 8
MC_Home .............................................................................................................. 3 - 17
MC_HomeWithParameter..................................................................................... 3 - 40
MC_Move............................................................................................................... 3 - 46
MC_MoveAbsolute ............................................................................................... 3 - 51
MC_MoveRelative ................................................................................................. 3 - 78
MC_MoveVelocity ................................................................................................. 3 - 86
MC_MoveZeroPosition....................................................................................... 3 - 102
MC_MoveFeed .................................................................................................... 3 - 109
MC_Stop .............................................................................................................. 3 - 138
MC_ImmediateStop ............................................................................................ 3 - 147
MC_SetPosition .................................................................................................. 3 - 151
MC_SetOverride ................................................................................................. 3 - 158
MC_ResetFollowingError................................................................................... 3 - 164
MC_CamIn ........................................................................................................... 3 - 171
MC_CamOut ........................................................................................................ 3 - 229
MC_CamMonitor ................................................................................................. 3 - 234
MC_GearIn .......................................................................................................... 3 - 243
MC_GearInPos .................................................................................................... 3 - 264
MC_GearOut........................................................................................................ 3 - 287
MC_MoveLink ..................................................................................................... 3 - 292
MC_CombineAxes .............................................................................................. 3 - 316
MC_Phasing ........................................................................................................ 3 - 328
MC_TorqueControl ............................................................................................. 3 - 335
MC_SetTorqueLimit............................................................................................ 3 - 348
MC_ZoneSwitch.................................................................................................. 3 - 355
MC_TouchProbe ................................................................................................. 3 - 361
MC_AbortTrigger ................................................................................................ 3 - 383
MC_AxesObserve ............................................................................................... 3 - 387
MC_SyncMoveVelocity ...................................................................................... 3 - 393
MC_SyncMoveAbsolute..................................................................................... 3 - 403
MC_Reset ............................................................................................................ 3 - 410
MC_ChangeAxisUse .......................................................................................... 3 - 414
MC_DigitalCamSwitch........................................................................................ 3 - 420
MC_TimeStampToPos........................................................................................ 3 - 440
MC_PeriodicSyncVariables ............................................................................... 3 - 452
MC_SyncOffsetPosition..................................................................................... 3 - 460
MC_OffsetPosition ............................................................................................. 3 - 470
MC_Power
The MC_Power instruction makes a Servo Drive ready to operate.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_Power Power Servo FB MC_Power_instance MC_Power_instance (
MC_Power Axis :=parameter,
MC_Power
Axis Axis Enable :=parameter,
Enable Status Status =>parameter,
Busy Busy =>parameter,
Error
Error =>parameter,
ErrorID
ErrorID =>parameter
); 3
Variables
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Enable Enable BOOL TRUE or FALSE The device is ready for operation when the
FALSE value of this variable is TRUE, and not
ready when it is FALSE.
Output Variables
Data Valid
Name Meaning Description
type range
Status Servo ON BOOL TRUE or TRUE when the device is ready for operation.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specifies the axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• When Enable changes to TRUE, the axis specified by Axis is made ready to operate.
You can control the axis when it is ready to operate.
• When Enable changes to FALSE, the ready status is cleared for the axis specified by Axis.
You cannot control the axis after the ready status is cleared because it will not acknowledge opera-
tion commands. Also, an error occurs if a motion command is executed for an axis for which the
ready status is cleared. You can execute the MC_Power (Power Servo) and MC_Reset (Reset Axis
Error) instructions even for axes that are not ready.
• You can use this instruction to disable the operation of axes while they are in motion. In this case,
CommandAborted will change to TRUE. Output of the operation command will stop and the axis will
not longer be ready for operation.
• If home is not defined for a Servomotor with an absolute encoder, compensation is performed using
the absolute encoder home offset to define home when the axis is ready to operate.
For a CPU Unit with unit version 1.10 or later, home is also defined when EtherCAT process data
communications change from a non-established to an established state.
For details on the absolute encoder home offset, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
• You can use this instruction for servo axes and virtual servo axes. If the instruction is used for
encoder axes or virtual encoder axes, an error will occur.
• This instruction provides different functions when it is executed for an NX-series Pulse Output
Unit. Refer to the NX-series Position Interface Units User’s Manual (Cat. No. W524) for de-
tails.
• Executing this Instruction for the Master Axis of Synchronized Control
When master axis operation is disabled for a vertical axis, the position of the master axis may
change rapidly. This may cause the motion of the slave axis to change rapidly.
Take suitable measures to prevent the slave axis from moving rapidly, such as applying a
brake to the master axis or leaving master axis operation enabled until after synchronized
control is completed.
Additional Information
Execution of an execute-type motion control instruction is started when the power flow that is
connected to the Execute input changes to TRUE, and continues until the control operation for
the instruction is completed. Even if master control is reset after execution of the instruction is
started, execution of the instruction is continued until the control operation for the instruction is
completed.
To interlock an execute-type motion control instruction, place the MC_Power (Power Servo) in-
struction inside the master control region, as shown in the following figure. That will ensure that
the Servo is turned OFF when MC_On changes to FALSE.
MC_Power
Master control started.
MC_On MC
In
0 MCNo
3
Servo turned ON.
PWR1
Function
MC_Power
Pwr1_En MC_Axis000 Axis Axis Pwr1_Status
Enable Status
Busy Pwr1_Bsy
Error Pwr1_Err
ErrorID Pwr1_ErrID
Timing Charts
• When Enable changes to TRUE, Busy (Executing) changes to TRUE to indicate that the instruction
was acknowledged.
• After the axis becomes ready for operation, Status (Servo ON) changes to TRUE.
• When Enable changes to FALSE, Busy (Executing) changes to FALSE. Status (Servo ON) changes
to FALSE when ready status is cleared. Status (Servo ON) outputs the axis ready status regardless
of whether Enable is TRUE or FALSE.
Enable
Status
Busy
• Status (Servo ON) will not change to TRUE until Enable changes to TRUE and the process-
ing is finished at the axis. Make sure that Status (Servo ON) changes to TRUE before moving
the axis.
• Write the user program to confirm that EtherCAT communications are established before you
execute motion control instructions. This is particularly important when starting axis operation
immediately after you turn ON the power supply to the Controller. Also, include interlocks in
the user program that detect errors in EtherCAT communications during operation.
Do not execute the MC_Power (Power Servo) instruction for an axis that is already enabled for
another instance of the MC_Power (Power Servo) instruction. Normally, use only one MC_Pow-
er (Power Servo) instruction for each axis.
If another MC_Power (Power Servo) instruction is executed for the same axis, the last instruction
takes priority.
Power A
MC_Power
A Axis1 Axis Axis
Enable Status
Busy
Error
Multiple MC_Power instructions ErrorID
executed for the same axis
Power B
MC_Power
B Axis1 Axis Axis
Enable Status
Busy
Error
ErrorID
Power A
Enable
Status
Busy
Power B
Enable
Status
MC_Power
Busy
Error
ErrorID 0 3
Function
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_MoveJog
The MC_MoveJog instruction jogs an axis according to the specified target velocity.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_MoveJog Jog FB MC_MoveJog_instance MC_MoveJog_instance (
MC_MoveJog Axis :=parameter,
Axis Axis PositiveEnable :=parameter,
PositiveEnable Busy NegativeEnable :=parameter,
NegativeEnable CommandAborted Velocity :=parameter,
Velocity Error
Acceleration :=parameter,
Acceleration ErrorID
Deceleration :=parameter,
Deceleration
Busy =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
Data
Name Meaning Valid range Default Description
type
PositiveEnable Positive Direc- BOOL TRUE or FALSE When this variable changes to TRUE, the axis
tion Enable FALSE starts moving in the positive direction.
When it changes to FALSE, the axis stops mov-
ing.
NegativeEnable Negative Direc- BOOL TRUE or FALSE When this variable changes to TRUE, the axis
tion Enable FALSE starts moving in the negative direction.
When it changes to FALSE, the axis stops mov-
ing.
Velocity Target Velocity LREAL Non-negative 0 Specify the target velocity.
number The unit is command units/s.*1
Acceleration Acceleration LREAL Non-negative 0 Specify the acceleration rate.
Rate number The unit is command units/s2.*1
Deceleration Deceleration LREAL Non-negative 0 Specify the deceleration rate.
Rate number The unit is command units/s2.*1
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
Output Variables
Data Valid
Name Meaning Description
type range
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Data Valid
Name Meaning Description
type range
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
MC_MoveJog
Manual (Cat. No. W503) for the event codes.
Function
CommandAborted • When this instruction is aborted because an- • When PositiveEnable is TRUE and changes to
other motion control instruction was executed FALSE.
with the Buffer Mode set to Aborting. • When NegativeEnable is TRUE and changes
• When this instruction is canceled due to an er- to FALSE.
ror. • After one period when PositiveEnable and
• When this instruction is executed while there NegativeEnable are FALSE.
is an error.
• When you start this instruction during
MC_Stop instruction execution.
Error When there is an error in the execution condi- When the error is cleared.
tions or input parameters for the instruction.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specifies the axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• The MC_MoveJog (Jog) instruction performs jogging according to the specified Velocity (Target Ve-
locity).
• To jog in the positive direction, change PositiveEnable (Positive Direction Enable) to TRUE. To jog in
the negative direction, change NegativeEnable (Negative Direction Enable) to TRUE.
• If PositiveEnable (Positive Direction Enable) and NegativeEnable (Negative Direction Enable) are
changed to TRUE at the same time, PositiveEnable (Positive Direction Enable) takes priority. As a
result, the axis will jog in the positive direction.
• If the command velocity of the MC_MoveJog (Jog) instruction exceeds the Maximum Jog Velocity
value that is set in the axis parameters, the Maximum Jog Velocity value is used.
• When creating a ladder diagram program, you must connect the PositiveEnable (Positive Di-
rection Enable) input variable to the left bus bar and specify a variable for the NegativeEnable
(Negative Direction Enable) input variable as shown below.
MC_MoveJog_instance
MC_MoveJog
POS_EN MC_Axis000 Axis Axis J_DONE
PositiveEnable Busy
NEGA_EN NegativeEnable CommandAborted J_CA
VEL Velocity Error J_ERR
ACC Acceleration ErrorID J_ERRID
DEC Deceleration
To use the master control instructions (MC and MCR) for the MC_MoveJog (Jog) instruction,
do not program the instructions as shown below. If you do, master control is applied only to
PositiveEnable (Positive Direction Enable), i.e., it is not applied to NegativeEnable (Negative
Direction Enable).
Master control started.
MC_On MC
In
0 MCNo
MC_MoveJog Instruction
MC_MoveJog_instance
MC_MoveJog
POS_EN MC_Axis000 Axis Axis J_DONE
PositiveEnable Busy
NEGA_EN NegativeEnable CommandAborted J_CA
VEL Velocity Error J_ERR
ACC Acceleration ErrorID J_ERRID
DEC Deceleration
Always use the master control instructions for the MC_Power instruction.
Master control started.
MC_On MC
In
0 MCNo
MC_MoveJog
Master control ended.
MCR
In
0 MCNo
3
MC_MoveJog Instruction
MC_MoveJog_instance
Function
MC_MoveJog
POS_EN MC_Axis000 Axis Axis J_DONE
PositiveEnable Busy
NEGA_EN NegativeEnable CommandAborted J_CA
VEL Velocity Error J_ERR
ACC Acceleration ErrorID J_ERRID
DEC Deceleration
Timing Charts
• Busy (Executing) changes to TRUE as soon as PositiveEnable (Positive Direction Enable) or
NegativeEnable (Negative Direction Enable) changes to TRUE.
• The axis starts deceleration as soon as PositiveEnable (Positive Direction Enable) or
NegativeEnable (Negative Direction Enable) changes to FALSE. Busy (Executing) changes to
FALSE when the axis stops completely.
• If another instruction aborts this instruction, CommandAborted changes to TRUE and Busy (Execut-
ing) changes to FALSE.
PositiveEnable
NegativeEnable
Busy
CommandAborted
Error
ErrorID 16#0000
Velocity
Target velocity
Acceleration
Deceleration
Time
Decelerates to a stop
when another instruction
causes an error.
You can specify the Velocity (Target Velocity), Acceleration (Acceleration Rate), and Deceleration (De-
celeration Rate) as input variables.
Input variables Velocity (Target Velocity), Acceleration (Acceleration Rate), and Deceleration (Deceler-
ation Rate) are updated in the motion only when PositiveEnable (Positive Direction Enable) or
NegativeEnable (Negative Direction Enable) changes to TRUE. Therefore, the axis velocity will not
change even if Velocity (Target Velocity) changes while PositiveEnable (Positive Direction Enable) or
NegativeEnable (Negative Direction Enable) remains TRUE.
PositiveEnable
NegativeEnable
Velocity 0
Busy
CommandAborted
Error
MC_MoveJog
ErrorID 16#0000
Velocity
Time
Function
Timing Chart When Acceleration/Deceleration Rate Is 0
When the Acceleration (Acceleration Rate) or Deceleration (Deceleration Rate) is 0 and you start jog-
ging the axis, the axis will reach the target velocity without accelerating or decelerating.
The timing chart below shows an example when the Acceleration (Acceleration Rate) and
Deceleration (Deceleration Rate) are 0.
PositiveEnable
NegativeEnable
Busy
CommandAborted
Error
ErrorID 16#0000
Velocity
Time
The following example shows operation when PositiveEnable (Positive Direction Enable) changes to
TRUE during deceleration.
PositiveEnable
NegativeEnable
Busy
CommandAborted
Error
ErrorID 16#0000
Velocity Velocity2
Velocity1
Time
The deceleration rate when the axis direction is reversed and the acceleration rate after it is reversed
follow the input variables for when NegativeEnable (Negative Direction Enable) changes to TRUE, re-
gardless of the Operation Selection at Reversing axis parameter.
When NegativeEnable (Negative Direction Enable) is TRUE and the axis is jogging in the negative di-
rection, the same operation occurs when PositiveEnable (Positive Direction Enable) changes to
TRUE.
If NegativeEnable (Negative Direction Enable) changes to TRUE while PositiveEnable (Positive Direc-
tion Enable) is TRUE, the axis starts jogging in the negative direction. In this case, the axis will not jog
in the positive direction even if NegativeEnable (Negative Direction Enable) changes to FALSE.
To jog the axis in the positive direction, change PositiveEnable (Positive Direction Enable) to FALSE,
and then back to TRUE again.
The same operation applies to the opposite case.
The following example shows an operation example when NegativeEnable (Negative Direction Ena-
ble) changes to TRUE after PositiveEnable (Positive Direction Enable) changes to TRUE.
MC_MoveJog
PositiveEnable
NegativeEnable
Busy
3
CommandAborted
Function
Error
ErrorID 16#0000
Velocity
Time
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axes will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
PositiveEnable
NegativeEnable
Busy
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_Home
The MC_Home instruction operates the motor to determine home. It uses the limit signals, home prox-
imity signal, and home signal.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_Home Home FB MC_Home_instance MC_Home_instance (
MC_Home
MC_Home Axis :=parameter,
Axis Axis Execute :=parameter,
Execute Done Done =>parameter,
Busy Busy =>parameter,
CommandAborted
CommandAborted =>parameter,
Error
Error =>parameter,
3
ErrorID
ErrorID =>parameter
);
Variables
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Execute Execute BOOL TRUE or FALSE The instruction is executed when the value
FALSE of this variable changes to TRUE.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specifies the axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• Homing starts when Execute changes to TRUE for the axis specified in Axis.
• Set the parameters used by the MC_Home instruction in the axis parameters.
• There are 10 Homing Operation Modes for the MC_Home instruction.
Set the desired method in axis parameter Homing Method in the Sysmac Studio.
Refer to 1-1-3 Precautions for Master and Auxiliary Axes in Synchronized Control on page 1 - 6
for precautions on the master axis.
If even one of the required objects is not set, a Process Data Object Setting Missing error (error code
3461 hex) occurs.
For details on mapping data objects, refer to 2-3 PDO Mapping on page 2 - 39 and to the NJ/NX-
series CPU Unit Motion Control User’s Manual (Cat. No. W507).
Refer to I/O Entry Mappings in the NX-series Position Interface Units User’s Manual (Cat. No. W524)
for information on using the NX-series Position Interface Units.
For details on how to set the input signals, refer to Connecting the Servo Drive in the NJ/NX-series
MC_Home
CPU Unit Motion Control User’s Manual (Cat. No. W507), and to General-purpose Input Signals in the
AC Servomotors/Servo Drives 1S-series with Built-in EtherCAT Communications User’s Manual (Cat.
No. I586) or AC Servomotors/Servo Drives 1S-series with Built-in EtherCAT Communications and
Safety Functionality User’s Manual (Cat. No. I621).
3
Function
Set the input signals, such as the home proximity signal, that are used by the MC_Home instruction in
the OMRON G5-series Servo Drive.
For details on how to set the input signals, refer to Connecting to the Servo Drive in the NJ/NX-series
CPU Unit Motion Control User’s Manual (Cat. No. W507), and Sequence I/O Signals in the AC
Servomotors/Servo Drives G5-series with Built-in EtherCAT Communications User’s Manual (Cat. No.
I576) or the AC Servomotors/Servo Drives G5-series with Built-in EtherCAT Communications Linear
Motor Type User’s Manual (Cat. No. I577).
The following tables shows the homing parameters that are used for each Homing Operation Mode.
Homing parameters
Homing Velocity
Homing Acceleration
Homing Deceleration
Homing Jerk
Home Offset
Refer to Homing Definition Operation on page 3 - 23 for details on operation in the Homing Modes.
Additional Information
If you use NX-series Position Interface Units, do not select holding for the Homing Operation
Mode. Refer to the NX-series Position Interface Units User’s Manual (Cat. No. W524) for de-
tails.
ON
Home proximity input signal
OFF
Limit in direction opposite ON
to detection direction OFF
ON
Limit in detection direction
OFF
MC_Home instruction Homing velocity
Homing approach velocity
Start Stops.
MC_Home
• An error occurs and the axis stops if the axis is set to Reverse turn for the limit input operation in
both directions and home cannot be detected after moving from the limit input opposite to the home
input detection direction to the other limit input.
Function
to detection direction OFF
ON
Limit in detection direction
OFF
MC_Home instruction Homing velocity
Homing approach velocity
Start Stops.
There are four Homing Operation Modes that include reversal operation for a reverse turn. These are
listed below.
• 0: Proximity Reverse Turn/Home Proximity Input OFF
• 1: Proximity Reverse Turn/Home Proximity Input ON
• 9: Proximity Reverse Turn/Home Input Mask Distance
• 12: Proximity Reverse Turn/Holding Time
(1), (3) : The home proximity signal is OFF, so the axis starts moving in the homing start direction.
(2) : The home proximity signal is ON, so the axis starts moving in the direction opposite to the home
input detection direction.
(2)
Operation command Start Start
Negative direction Positive direction
(1) Start (3)
(1), (3) : The home proximity signal is OFF, so the axis starts moving in the homing start direction.
(2) : The home proximity signal is ON, so the axis starts moving in the direction opposite to the home
input detection direction.
ON
Home proximity input signal
OFF
ON
Home input signal
OFF
Homing velocity
Homing approach velocity
Operation command
Negative direction Positive direction
Start Stops.
The following timing chart shows the operation when the home input detection direction is TRUE (neg-
ative direction).
ON
Home proximity input signal
OFF
ON
Home input signal
OFF
Homing velocity
Operation command
Stops.
Negative direction Positive direction
Start
MC_Home
Set the homing compensation value that is applied after the home is detected.
Set the travel velocity in the Homing Compensation Velocity parameter.
For details on the operation, refer to Homing Compensation on page 3 - 34.
3
Home Position Offset
Function
The Home Position Offset is used to preset the actual position after homing is completed.
The current position is specified with the value set for Home Position Offset.
Homing Velocity
This is the high velocity during homing.
1 The axis starts at the homing velocity. When the home proximity input signal turns ON, the axis
starts decelerating to the homing approach velocity.
2 After the axis reaches the homing approach velocity, the axis stops at the first home input signal
after the home proximity input signal turns OFF. This defines home.
ON
Home proximity input signal
OFF
ON
Home input signal
OFF
Homing velocity
Homing approach velocity
Command output
Negative direction Positive direction
Start Stops
Homing velocity
• If you start homing while the home proximity input signal is ON, the operation will start at the
homing velocity in the direction opposite to the home input detection direction. After the home
proximity input turns OFF, the homing operation will start at the homing velocity in the home in-
put detection direction.
• Homing is started and home is defined when the home input signal turns ON after the home
proximity input signal turns ON and OFF while the velocity is below the homing approach veloci-
ty.
1 The axis starts at the homing velocity. When the home proximity input signal turns ON, the axis
starts decelerating to the homing approach velocity.
2 After the axis reaches the homing approach velocity, the axis stops at the first home input signal.
This defines home.
After the home proximity input signal turns ON, its status does not affect operation.
ON
Home proximity input signal
OFF
ON
Home input signal
OFF
Homing velocity
Homing approach velocity
Stops.
Negative direction Positive direction
Start
Command output
Homing velocity
• If you start homing while the home proximity input signal is ON, the operation will start at the
homing velocity in the direction opposite to the home input detection direction. After the home
proximity input turns OFF, the homing operation will start at the homing velocity in the home in-
put detection direction.
• Homing is started and home is defined when the home input signal turns ON after the home
proximity input signal turns ON while the velocity is below the homing approach velocity.
1 When the home proximity input signal turns ON, the axis starts decelerating to the homing ap-
proach velocity.
2 After the axis reaches the homing approach velocity, the axis stops at the first home input signal
after the home proximity input signal turns OFF. This defines home.
ON
Negative limit input signal
OFF
ON
MC_Home
Home proximity input signal
OFF
ON
Home input signal
OFF
Homing velocity
Homing approach velocity 3
Negative direction Positive direction
Start Stops.
Function
Homing start direction
Homing approach velocity
Homing velocity
• If you start homing while the home proximity input signal is ON, the axis performs the following
operation depending on the setting of the homing start direction.
• Homing is started and home is defined when the home input signal turns ON after the home
proximity input signal turns ON and OFF while the velocity is below the homing approach veloci-
ty.
1 When the home proximity input signal turns ON, the axis starts decelerating to the homing ap-
proach velocity.
2 After the axis reaches the homing approach velocity, the axis stops at the first home input signal.
This defines home.
After the home proximity input signal turns ON, its status does not affect operation.
ON
Negative limit input signal
OFF
ON
Positive limit input signal
OFF
ON
Home proximity input signal
OFF
ON
Home input signal
OFF
Homing velocity
Homing approach velocity
Homing velocity
Homing start direction Homing approach velocity
Homing velocity
• If you start homing while the home proximity input signal is ON, the axis performs the following
operation depending on the setting of the homing start direction.
• Homing is started and home is defined when the home input signal turns ON after the home
proximity input signal turns ON while the velocity is below the homing approach velocity.
1 The axis starts at the homing velocity. When the limit signal in the direction opposite to the home
input detection direction turns ON, the axis starts decelerating to the homing approach velocity.
2 After the axis reaches the homing approach velocity, the axis stops at the first home input signal
after the limit signal turns OFF. This defines home.
ON
Negative limit input signal
OFF
ON
Home input signal
OFF
Homing velocity
Homing approach velocity
Command output
Negative direction Positive direction
Start Stops.
Homing approach velocity
MC_Home
Negative direction Positive direction
Start Stops.
• If you perform homing while the limit input on the opposite side of the home input detection di-
rection is ON, the homing operation starts at the home approach velocity in the home input de- 3
tection direction.
• Homing is started and home is defined when the home input signal turns ON after the limit sig-
Function
nal in the direction opposite to the home input detection direction turns ON and OFF again while
the velocity is below the homing approach velocity.
1 The axis starts at the homing velocity. When the home proximity input signal turns ON, the axis
starts decelerating to the homing approach velocity.
2 The axis moves by the home input mask distance after the home proximity input signal turns ON
and stops at the first home input signal. This defines home.
After the home proximity input signal turns ON, its status does not affect operation.
If the specified travel distance is too short and travel would be completed before the axis deceler-
ates to the homing approach velocity, an Invalid Home Input Mask Distance error (error code:
742B hex) occurs when you start homing.
ON
Home proximity input signal
OFF
ON
Home input signal
OFF
Homing velocity
Homing approach velocity
Command output
Negative direction Positive direction
Start Stops.
After the proximity input, motion is
according to the home input mask distance.
• If you start homing while the home proximity input signal is ON, the operation will start at the
homing velocity in the direction opposite to the home input detection direction. After the home
proximity input signal turns OFF, the homing operation will start at the homing approach velocity
in the home input detection direction.
• Homing is started and home is defined when the home input signal turns ON after the axis trav-
els the home input mask distance after the home proximity input signal turns ON while the
velocity is below the homing approach velocity.
1 The axis starts at the homing velocity. When the limit signal in the direction opposite to the home
input detection direction turns OFF, the axis decelerates to a stop.
2 After the axis stops, the axis moves in the other direction at the homing velocity and decelerates
to a stop when the limit signal turns ON.
3 After the axis stops, the axis moves in the other direction at the homing approach velocity. The
position where the limit signal turns OFF is defined as home and an immediate stop is performed
(i.e., a stop using remaining pulses). The axis does not return to the home position.
ON
Negative limit input signal
OFF
ON
Positive limit input signal
OFF
Homing velocity
Homing approach velocity
Negative direction Positive direction
Start Home Stops using
remaining pulses.
• If you use only the limit signals to perform homing, the point at which the limit signal turns OFF
during operation in the home input detection direction is set as the home detection position.
• If you start homing while the limit signal in the home input detection direction is ON, the opera-
tion will start at the homing velocity in the direction opposite to the home input detection direc-
tion. When the limit signal in the direction opposite to the home input detection direction turns
ON, the axis decelerates to a stop.
• Even if the limit signal turns OFF before the axis decelerates to a stop after the limit signal is
detected, home is not defined and the axis continues to decelerate. In this case, no error will
occur.
• Home is defined if the limit signal turns OFF before the homing approach velocity is reached
after the axis reverses or after starting while the limit signal is input.
Differences between Homing Operation Mode 11 and Other Homing Operation Modes
For Homing Operation Mode 11, the MC Function Module detects when the limit signal turns OFF
to define home. It differs from a Homing Operation Mode that uses the home input as an external
latch signal in the following ways.
Make sure that you understand these differences with other Homing Operation Modes before you
use Homing Operation Mode 11.
• The MC Function Module detects the limit input without an external latch function, such as one
provided by a Servo Drive. MC Function Module processing is the processing performed at the
primary period interval for the primary periodic task and at the task period of the priority-5 peri-
odic task for the priority-5 periodic task. Therefore, the precision of the home definition will de-
MC_Home
pend on the homing approach velocity and the control period of the primary periodic task or pri-
ority-5 periodic task.
• The axis does not return to the home position. If the homing compensation value is 0, process-
ing for homing will end with the axis at a different position (i.e., not at home).
• Homing compensation is not performed if the homing compensation value is set to 0. If the 3
homing compensation value is 0, processing for homing ends with the axis at a different position
(i.e., not at home), as explained above. If the homing compensation value is not 0, then homing
Function
compensation is performed with the homing compensation value as a relative position from
home in the same way as for other homing operation modes.
• The home offset is used to change the position of home. If the stop position is offset from home
by distance D, as shown in the following figure, the position after the completion of processing
for homing will be L + D if the home offset is L and the homing compensation value is 0.
• After the OFF limit signal is detected, the limit signal in the opposite direction from the home
input detection direction is ignored while stopping for the remaining pulses until homing com-
pensation is started.
• If the homing compensation value is 0 and the limit input signal in the home input detection
direction turns ON immediately after home is defined, set a homing compensation value to
return past the limit signal input position.
Operating direction
1 The axis starts at the homing velocity. When the home proximity input signal turns ON, the axis
starts decelerating to the homing approach velocity.
Decelerating the axis and monitoring time are started at the same time.
The torque limit at the start of holding differs between OMRON 1S-series as well as G5-series
Servo Drives and other Servo Drives as shown below.
Refer to Holding Operation for OMRON 1S-series Servo Drives on page 3 - 35 or Holding Opera-
tion for OMRON G5-series Servo Drives on page 3 - 36 for information on the holding operation.
ON
Home proximity input signal
OFF
Home is defined upon elapse of the set time.
Homing velocity
Homing approach velocity
Command output
Negative direction Positive direction
Start Stops.
MC_Home
Homing velocity
Homing approach velocity
Homing velocity
3
Torque limit
Torque limit is continued even after the set time elapses.
Function
Command torque from previous operation
• If you start homing while the home proximity input signal is ON, the operation will start at the
homing velocity in the direction opposite to the home input detection direction. After the home
proximity input signal turns OFF, the homing operation will start at the homing approach velocity
in the home input detection direction.
• Releasing the torque limit also differs between OMRON 1S-series as well as G5-series Servo
Drives and other Servo Drives.
• An error will not occur and home is defined even if the holding time elapses after the home
proximity input signal is detected and before velocity reaches the homing approach velocity.
• Home is also defined if the holding time elapses after the home proximity input signal turns ON
before the homing approach velocity is reached.
Refer to Holding Operation for OMRON 1S-series Servo Drives on page 3 - 35 or Holding Opera-
tion for OMRON G5-series Servo Drives on page 3 - 36 for information on the holding operation.
ON
Home input signal
OFF
• Releasing the torque limit also differs between OMRON 1S-series as well as G5-series Servo
Drives and other Servo Drives.
• Home is also defined if the home input signal turns ON before the homing approach velocity is
reached after homing starts.
For an OMRON G5-series Linear Motor Type Servo Drive with built-in EtherCAT communica-
tions, the Z-phase input cannot be mapped to a PDO. Therefore, if you use Homing Operation
Mode 13: No Home Proximity Input/Holding Home Input, which can use a Z-phase input
mapped to a PDO, do not select the Z-phase input for the home input signal.
Execute
Done
Busy
CommandAborted
Error
ErrorID 16#0000
MC_Home
Homing
Function
Instruction Details
This section describes the instruction in detail.
1 The actual position where the home input signal was detected is latched and the axis stops imme-
diately.
2 After the immediate stop, the axis moves with absolute travel in the reverse direction to the posi-
tion that was latched in step 1.
Home proximity ON
input signal OFF
Home input ON
signal OFF
Velocity
Homing velocity
Actual position latch
Immediate stop Homing
compensation
Homing approach velocity velocity
Stops. Homing
compensation value
Start
Absolute travel to position where In-position check applied.
home input signal was detected
• Waiting for the in-position state is always performed for this instruction regardless of the setting
of the In-position Check Time axis parameter.
Be particularly careful when performing absolute travel to the home input signal detection posi-
tion if the In-position Check Time is set to 0 because the instruction will continue waiting for the
in-position status. Make sure that the signal is received within the in-position range.
In-position waiting is not performed for the homing compensation value operation even if the in-
position check time is set to 0.
The status of in-position waiting can be checked with the InPosWaiting (In-position Waiting) sys-
tem-defined variable for motion control.
Homing Compensation
When you set a homing compensation value, the axis will move by the homing compensation value
after the home input is detected to define home.
Adjusting the workpiece is sometimes difficult after home has been defined in the mechanical system.
You can use the homing compensation to fine-tune the position of home after it is defined.
The travel velocity at this time is the homing compensation velocity. The axis starts moving 500 ms
after it stopped when the home input was detected.
The sign of the homing compensation value indicates the direction relative to the coordinate axis. If it
is negative, the axis moves in the negative direction.
Home proximity ON
input signal OFF
Home input ON
signal
OFF
Velocity
Homing
Homing velocity compensation
velocity
Overrides
Overrides are disabled for this instruction.
During the homing operation, torque limits are released for operation in the direction opposite to the
home input detection direction.
For example, if the reversal operation direction at a limit input is in the direction opposite to the home
input detection direction, the torque limit is released when the reversal operation is completed.
If the operation direction reverses again and becomes the home input detection direction, the torque
limit will be enabled again.
The automatic torque limit function of the MC_Home instruction is not used for servo drives
from other manufacturers.
Use the MC_SetTorqueLimit instruction, SDO communications, or support software to set suita-
MC_Home
ble values.
Additional Information
• The torque limits are continued even after a normal completion of homing. 3
• The torque limits are automatically released when an instruction that moves the axis in the
opposite direction is executed.
Function
Settings for OMRON 1S-series Servo Drives
To use the holding operation, you must set the Torque Limit - Switch Selection (3330-01 hex) for the
1S-series Servo Drive with the Sysmac Studio.
• Set the Torque Limit - Switch Selection to 2 to apply a torque limit in the home input detection direc-
tion during the holding operation for homing and to use the torque limit directions and values that
are set with the MC_SetTorqueLimit instruction for other operations.
In that case, the values of the input variables to the MC_SetTorqueLimit instruction are ignored dur-
ing the holding operation for homing.
• If the Torque Limit - Switch Selection is set to 0, the values of the input variables to the MC_SetTor-
queLimit instruction are always used. You must set torque limits that are suitable both for the holding
operation during homing and for other operations.
The automatic torque limit function of the MC_Home instruction is not used for servo drives
from other manufacturers.
Use the MC_SetTorqueLimit instruction, SDO communications, or support software to set suita-
ble values.
Additional Information
• The torque limits are continued even after a normal completion of homing.
• The torque limits are automatically released when an instruction that moves the axis in the
opposite direction is executed.
For details on monitoring the following error, refer to the NJ/NX-series CPU Unit Motion Control User’s
Manual (Cat. No. W507).
Timing Charts
The following charts show the timing of homing.
No Homing Compensation
MC_Home
Execute
Done
Busy
3
CommandAborted
Function
Error
ErrorID 16#0000
Homing
Velocity
Time
Execute
Done
Busy
CommandAborted
Error
ErrorID 16#0000
Homing
Homed(Home Defined)
Velocity
Time
Execute
Done
Busy
CommandAborted
Error
ErrorID 16#0000
Homing
Velocity
Time
Done
Busy
CommandAborted
Error
MC_Home
ErrorID 16#0000 Error code
Homing
3
Homed (Home Defined)
Velocity
Function
Time
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_HomeWithParameter
The MC_HomeWithParameter instruction sets the homing parameter and operates the motor to deter-
mine home. It uses the limit signals, home proximity signal, and home signal.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_Home- Home with FB MC_HomeWithParameter_instance MC_HomeWithParameter_in-
WithParame- Parameters MC_HomeWithParameter stance (
ter Axis Axis Axis :=parameter,
HomingParameter HomingParameter HomingParameter :=parameter,
Execute Done Execute :=parameter,
Busy
Done =>parameter,
CommandAborted
Busy =>parameter,
Error
ErrorID CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Version Information
A CPU Unit with unit version 1.03 or later and Sysmac Studio version 1.04 or higher are re-
quired to use this instruction.
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Execute Execute BOOL TRUE or FALSE The instruction is executed when the value
FALSE of this variable changes to TRUE.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
MC_HomeWithParameter
Busy When Execute changes to TRUE. • When Done changes to TRUE.
• When Error changes to TRUE.
• When CommandAborted changes to TRUE.
CommandAborted • When this instruction is aborted because anoth- • When Execute is TRUE and changes to
er motion control instruction was executed with FALSE.
the Buffer Mode set to Aborting. • After one period when Execute is FALSE.
• When this instruction is canceled due to an error.
• When this instruction is executed while there is
an error.
• When you start this instruction during MC_Stop
3
instruction execution.
Error When there is an error in the execution conditions When the error is cleared.
Variables
or input parameters for the instruction.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specify the axis. *1
HomingParameter Homing Parame- _sHOM- --- Set the homing parameter. *2
ter ING_REF
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*] or _MC2_AX[*]).
*2. Define a user-defined variable with a data type of _sHOMING_REF.
_sHOMING_REF
Name Meaning Data type Valid range Function
HomingMode Homing _eMC_HOM- 0: _mcHomeSwTurnHo- Specify the new setting of the Homing Meth-
Method ING_MODE meSwOff od.
1: _mcHomeSwTurnHo- 0: Proximity reverse turn/home proximity in-
meSwOn put OFF
4: _mcHomeSwOff 1: Proximity reverse turn/home proximity in-
5: _mcHomeSwOn put ON
8: _mcLimitInputOff 4: Home proximity input OFF
9: _mcHomeSwTurnHo- 5: Home proximity input ON
meMask 8: Limit input OFF
11: _mcLimitInputOnly 9: Proximity reverse turn/home input mask
12: _mcHomeSwTurnHol- distance
dingTime 11: Limit inputs only
13: _mcNoHomeSwHol- 12: Proximity reverse turn/holding time
dingHomeInput 13: No home proximity input/holding home
14: _mcHomePreset input
14: Zero position preset
MC_HomeWithParameter
Offset Home Offset LREAL Negative number, positive Preset the actual position for the value that
number, or 0 is set after homing.
In Rotary Mode, set the Home Offset param-
eter so that it is greater than or equal to the
modulo minimum position and less than the
modulo maximum position. Also set the val-
ue to within the range of 40-bit data for puls-
es.
The unit is command units. *2 3
PushTime Homing UINT 0 to 10,000 Set the holding time when you set the Hom-
Holding Time ing Operation Mode to Proximity Reverse
Function
Turn/Holding Time.
The unit is milliseconds.
Compensa- Homing LREAL Negative number, positive Set the homing compensation value that is
tion Compensa- number, or 0 applied after the home is defined.
tion Value In Rotary Mode, set the homing compensa-
tion value so that the absolute value of the
homing compensation value is less than the
absolute value of the difference between the
modulo maximum position and modulo mini-
mum position. Also set the value to within
the range of 40-bit data for pulses.
The unit is command units. *2
Compensa- Homing LREAL Positive number Set the velocity to use for homing compen-
tionVel Compensa- sation.
tion Velocity Set the value to less than the maximum ve-
locity.
The unit is command units/s. *2
*1. This setting can be used for an OMRON 1S-series Servo Drive and G5-series Servo Drive. The input allocated to latch
1 for the Servo Drive is used as the external home input. In the default setting of the OMRON 1S-series Servo Drives
and G5-series Servo Drives, the external latch input 1 is allocated to latch 1.
For details, refer to the AC Servomotors/Servo Drives 1S-series with Built-in EtherCAT Communications User’s Manual
(Cat. No. I586), AC Servomotors/Servo Drives 1S-series with Built-in EtherCAT Communications and Safety
Functionality User’s Manual (Cat. No. I621), AC Servomotors/Servo Drives G5-series with Built-in EtherCAT
Communications User’s Manual (Cat. No. I576) or the AC Servomotors/Servo Drives G5-series with Built-in EtherCAT
Communications Linear Motor Type User’s Manual (Cat. No. I577).
*2. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
Function
• Homing starts when Execute changes to TRUE for the axis specified in Axis.
• Set the parameters used by the MC_HomeWithParameter instruction in the HomingParameter in-
out variable.
• The axis parameters are not changed when this instruction is executed.
• The only difference between this instruction and the MC_Home instruction is how the parameters
are set. For this instruction, the parameters are set in the HomingParameter in-out variable. For the
MC_Home instruction, the parameters are set in the Homing Method of the axis parameters in the
Sysmac Studio.
Refer to MC_Home on page 3 - 17 for all instruction specifications except for how to set the parame-
ters.
The homing parameters that are set in this instruction are valid only when this instruction is exe-
cuted. If you execute the MC_Home instruction after this instruction, operation will be based on
the homing parameters that are set in the axis parameters.
The following table shows the homing parameters that are used for each homing method.
Homing parameter
Home Input Signal
Homing Velocity
Homing Acceleration
Homing Deceleration
Homing Jerk
Home Offset
Homing method
Proximity reverse turn/home
¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ --- ¡ --- ¡ ¡
proximity input OFF
Proximity reverse turn/home
¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ --- ¡ --- ¡ ¡
proximity input ON
Home proximity input OFF ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ --- ¡ --- ¡ ¡
Home proximity input ON ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ --- ¡ --- ¡ ¡
Limit input OFF ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ --- ¡ --- ¡ ¡
Proximity reverse turn/home in-
¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ --- ¡ ¡
put mask distance
Limit inputs only --- ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ --- ¡ --- ¡ ¡
Proximity reverse turn/holding
--- ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ --- ¡ ¡ ¡ ¡
time
Homing parameter
Homing Velocity
Homing Acceleration
Homing Deceleration
Homing Jerk
Home Offset
MC_HomeWithParameter
Homing method
3
No home proximity input/holding
¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ --- ¡ --- ¡ ¡
home input
Function
Zero position preset --- --- --- --- --- --- --- --- --- --- --- ¡ --- --- ---
Additional Information
If you use NX-series Position Interface Units, do not select holding for the Homing Operation
Mode. Refer to the NX-series Position Interface Units User’s Manual (Cat. No. W524) for de-
tails.
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_Move
The MC_Move instruction performs absolute positioning or relative positioning.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_Move Positioning FB MC_Move_instance MC_Move_instance (
MC_Move Axis :=parameter,
Axis Axis Execute :=parameter,
Execute Done Position :=parameter,
Position Busy Velocity :=parameter,
Velocity Active
Acceleration :=parameter,
Acceleration Command Aborted
Deceleration :=parameter,
Deceleration Error
Jerk ErrorID Jerk :=parameter,
Direction Direction :=parameter,
BufferMode BufferMode :=parameter,
MoveMode MoveMode :=parameter,
Done =>parameter,
Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALSE The instruction is executed when
the value of this variable changes
to TRUE.
Position Target Posi- LREAL Negative number, posi- 0 Specify the target position in ab-
tion tive number, or 0 solute coordinates when you
specify absolute positioning as
the Travel Mode.
Specify the relative position when
you specify relative positioning as
the Travel Mode.
The unit is command units.*1
Velocity Target Ve- LREAL Positive number 0 Specify the target velocity.*2
locity
The unit is command units/s.*1
Acceleration Accelera- LREAL Non-negative number 0 Specify the acceleration rate.
tion Rate The unit is command units/s2.*1
Deceleration Decelera- LREAL Non-negative number 0 Specify the deceleration rate.
tion Rate The unit is command units/s2.*1
De-
Name Meaning Data type Valid range Description
fault
Jerk Jerk LREAL Non-negative number 0 Specify the jerk.
The unit is command units/s3.*1
Direction Direction _eMC_DIREC- 0: _mcPositiveDirection 0 *3 Specify the direction of rotation
TION 1: _mcShortestWay when MoveMode is set to 0:
2: _mcNegativeDirec- Absolute positioning*4 and
tion when the Count Mode is Rotary
3: _mcCurrentDirection Mode.
4: _mcNoDirection 0: Positive direction
MC_Move
1: Shortest way
2: Negative direction
3: Current direction
4: No direction specified
BufferMode Buffer Mode _eMC_BUF- 0: _mcAborting 0 *3 Specify the operation when exe- 3
Selection FER_MODE 1: _mcBuffered cuting more than one motion in-
2: _mcBlendingLow struction.
Variables
3: _mcBlendingPrevi- 0: Aborting
ous 1: Buffered
4: _mcBlendingNext 2: Blending low
5: _mcBlendingHigh 3: Blending previous
4: Blending next
5: Blending high
MoveMode Travel _eMC_MOVE_M 0: _mcAbsolute 0 *3 Select the travel method.
Mode ODE 1: _mcRelative 0: Absolute positioning
1: Relative positioning
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
*2. Always set the target velocity. A Target Velocity Setting Out of Range error (error code: 5422 hex) occurs when the
instruction is executed if the target velocity is not set.
*3. The default value for an enumeration variable is actually not the number, but the enumerator.
*4. When MoveMode is set to 1: Relative positioning, the travel direction is determined by the sign of the position.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE when the axis is being controlled.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specifies the axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• You can use the MC_Move instruction to perform absolute positioning or relative positioning.
• If you specify Absolute positioning for MoveMode (Travel Mode), the operation is the same as for
the MC_MoveAbsolute (Absolute Positioning) instruction.
If you specify Relative positioning, the operation is the same as the MC_MoveRelative (Relative
Positioning) instruction.
• If relative positioning is used, Direction is not used.
Instruction Details
This section describes the instruction in detail.
When you perform absolute positioning, set the target position so that the settings of the
Modulo Maximum Position Setting Value and Modulo Minimum Position Setting Value ax-
is parameters are not exceeded.
If the target position is set outside of the settings of the Modulo Maximum Position Setting
Value and Modulo Minimum Position Setting Value axis parameters, a Target Position Set-
ting Out of Range error (error code 5478 hex) will occur.
In-position Check
MC_Move
An in-position check is performed for this instruction according to the settings in In-position Range
and In-position Check Time axis parameters.
You can change the operation of the instruction if you change an input variable during positioning and
Function
change Execute to TRUE again.
Input variables Position (Target Position), Velocity (Target Velocity), Acceleration (Acceleration Rate),
and Deceleration (Deceleration Rate) can be changed by re-executing the motion control instruction.
For details on re-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
For details on BufferMode (Buffer Mode Selection), refer to the NJ/NX-series CPU Unit Motion Control
User’s Manual (Cat. No. W507).
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axes will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
Done
Busy
Active
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_MoveAbsolute
The MC_MoveAbsolute instruction moves the axis to a specified absolute target position.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_MoveAbsolute
MC_MoveAbso- Absolute Po- FB MC_MoveAbsolute_instance MC_MoveAbsolute_instance (
lute sitioning MC_MoveAbsolute Axis :=parameter,
Axis Axis Execute :=parameter,
Execute Done Position :=parameter,
Position Busy Velocity :=parameter,
Velocity Active
Acceleration :=parameter,
Acceleration CommandAborted
Deceleration :=parameter,
Deceleration Error
Jerk :=parameter, 3
Jerk ErrorID
Direction Direction :=parameter,
BufferMode BufferMode :=parameter,
Variables
Done =>parameter,
Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALSE The instruction is executed when
the value of this variable changes
to TRUE.
Position Target Posi- LREAL Negative number, posi- 0 Specify the absolute target posi-
tion tive number, or 0 tion.
The unit is command units.*1
Velocity Target Ve- LREAL Positive number 0 Specify the target velocity.*2
locity
The unit is command units/s.*1
Acceleration Acceleration LREAL Non-negative number 0 Specify the acceleration rate.
Rate The unit is command units/s2.*1
Deceleration Decelera- LREAL Non-negative number 0 Specify the deceleration rate.
tion Rate The unit is command units/s2.*1
Jerk Jerk LREAL Non-negative number 0 Specify the jerk.
The unit is command units/s3.*1
De-
Name Meaning Data type Valid range Description
fault
Direction Direction _eMC_DIREC- 0: _mcPositiveDirection 0*3 Specify the direction of rotation
TION 1: _mcShortestWay when the Count Mode is Rotary
2: _mcNegativeDirection Mode.
3: _mcCurrentDirection 0: Positive direction
4: _mcNoDirection 1: Shortest way
2: Negative direction
3: Current direction
4: No direction specified
BufferMode Buffer Mode _eMC_BUF- 0: _mcAborting 0*3 Specify the behavior when execut-
Selection FER_MODE 1: _mcBuffered ing more than one motion instruc-
2: _mcBlendingLow tion.
3: _mcBlendingPrevious 0: Aborting
4: _mcBlendingNext 1: Buffered
5: _mcBlendingHigh 2: Blending low
3: Blending previous
4: Blending next
5: Blending high
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
*2. Always set the target velocity. If the axis is moved without setting a target velocity, an error will occur.
*3. The default value for an enumeration variable is actually not the number, but the enumerator.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE when the axis is being controlled.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
MC_MoveAbsolute
ror.
• When this instruction is executed while there
is an error.
• When you start this instruction during
MC_Stop instruction execution.
Error When there is an error in the execution condi- When the error is cleared.
tions or input parameters for the instruction.
3
Function
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specifies the axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• The absolute target position is specified to perform positioning.
• Absolute positioning starts when Execute changes to TRUE.
• You can execute this instruction even if home is not defined.
• You can specify the Velocity (Target Velocity), Acceleration (Acceleration Rate), Deceleration (De-
celeration Rate), and Jerk as input variables.
Velocity
Target
velocity Acceleration Deceleration
Time
0 Command current Target distance
position
When the Acceleration (Acceleration Rate) or Deceleration (Deceleration Rate) is 0 and the instruction
is executed, the axis will reach the target velocity without accelerating or decelerating.
The following chart shows an operation example of when the Acceleration (Acceleration Rate) is 0.
Velocity
Target
velocity Deceleration
Time
0 Command current Target position
position
Velocity
Target
velocity
Time
0 Command current Target position
position
For details on Jerk, refer to the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No.
W507).
When the positioning is started with Position (Target Position) set to the command current position, the
axis will not move but Done will change to TRUE.
Instruction Details
This section describes the instruction in detail.
Direction
Direction specifies the direction for starting positioning when the Count Mode is Rotary Mode.
Direction is not used if the Count Mode is Linear Mode.
Positioning starts in the positive direction towards the target position when 0: _mcPositiveDirection
(Positive direction) is specified for Direction.
The following chart shows an operation example when positioning starts with a command position of
50 and moves toward -20.
Modulo maximum
position setting Command current
value: 100 position: 50
MC_MoveAbsolute
Modulo minimum
position setting
value: -70 Moves in positive direction.
Positioning starts in the negative direction towards the target position when 2: _mcNegativeDirection
3
(Negative direction) is specified for Direction.
The following chart shows an operation example when positioning starts with a command position of
Function
50 and moves toward -20.
Modulo maximum
position setting
Command current
value: 100
position: 50
Modulo minimum
position setting
value: -70 Moves in negative direction.
Positioning starts towards the target position within the ring counter range when 4: _mcNoDirection
(No direction specified) is specified for Direction. Therefore, the size relationship between the com-
mand current position and the target position determines the direction of travel.
The following chart shows an operation example when positioning starts with a command position of
50 and moves toward -20.
Modulo maximum
position setting
Command current
value: 100
position: 50
Modulo minimum
position setting
Moves towards the ring
value: -70
counter range.
When 4: _mcNoDirection (No direction specified) is specified for Direction, you can specify a Position
(Target Position) outside the range specified by the modulo maximum position and modulo minimum
position setting values.
When Position (Target Position) is outside the range specified by the modulo maximum position and
modulo minimum position setting values, positioning is performed using the travel distance exceeding
the modulo maximum position setting value as a relative distance. This allows positioning of multiple
ring rotations.
Positioning is the same when Position (Target Position) is below the modulo minimum position setting
value as well.
The following chart shows an operation example for when the command current position is -20 and
Position (Target Position) is 290.
Modulo maximum
position setting
value: 100
Modulo minimum
position setting
value: -70
190
Performs relative positioning with the target distance as
(290 (Target position) - 100 (Upper limit)) = 190.
When 1: _mcShortestWay (Shortest way) is specified for Direction, positioning starts in the direction
with the shortest distance between the command current position and the target position.
The following chart shows an operation example when positioning starts with a command position of
50 and moves toward -20.
Modulo maximum
position setting
Command current
value: 100
position: 50
Modulo minimum
position setting
value: -70 Moves in the direction with
the shortest travel distance.
Movement is in the same direction as 3: _mcCurrentDirection (Current direction) if the travel dis-
tance is the same in the positive and the negative direction.
• When you perform absolute positioning, set the target position so that it is less than the
Modulo Maximum Position Setting Value axis parameter and greater than or equal to the
Modulo Minimum Position Setting Value axis parameter.
If the target position is greater than or equal to the setting of the Modulo Maximum Position
Setting Value axis parameter or less than the setting of the Modulo Minimum Position
Setting Value axis parameter, a Target Position Setting Out of Range error (error code 5478
hex) will occur.
MC_MoveAbsolute
However, when 4: _mcNoDirection (No direction specified) is specified for Direction, you
can specify a Position (Target Position) outside the range specified by the modulo maximum
position and modulo minimum position setting values.
• If 3: _mcCurrentDirection (Current direction) is specified for Direction, operation is in the
same command direction as the previous motion. Therefore, depending on the instructions
that are used together, the direction may not be the same as the direction that was specified
with the input to the motion control instruction for the previous motion.
When you specify 3: _mcCurrentDirection, check the current direction with Dir.Posi (Posi- 3
tive Direction) and Dir.Nega (Negative Direction) in the Axis Variable.
Function
In-position Check
An in-position check is performed for this instruction according to the settings in In-position Range
and In-position Check Time axis parameters.
Timing Charts
• Busy (Executing) changes to TRUE at the same time as Execute changes to TRUE. Active (Control-
ling) changes to TRUE in the next period.
• Done changes to TRUE when Position (Target Position) is reached and positioning is completed.
• If another instruction aborts this instruction, CommandAborted changes to TRUE and Busy (Execut-
ing) and Active (Controlling) change to FALSE.
Execute
Done
Busy
Active
CommandAborted
Error
ErrorID 16#0000
Velocity Multi-execution of
another instruction
Time
For details on re-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
For details on BufferMode (Buffer Mode Selection), refer to the NJ/NX-series CPU Unit Motion Control
User’s Manual (Cat. No. W507).
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axis will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
MC_MoveAbsolute
Execute
Done
Busy
Active
CommandAborted 3
Error
Sample Programming 1
ErrorID 16#0000 Error code
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
Sample Programming 1
This section shows sample programming for positioning by periodic multi-execution of instructions.
Parameter Settings
The minimum settings required for this sample programming are given below.
Count Mode
Unit of Display
Operation Example
In this sample, BufferMode (Buffer Mode Selection) is set to Buffered for MC_MoveAbsolute (Abso-
lute Positioning) instructions and the axis is moved to the final target position by executing multiple in-
structions.
When the axis reaches the final target position, it is returned to home with the MC_ZeroPosition (High-
speed Home) instruction.
Multi-execution of instructions is performed when the Active (Controlling) output variable from the pre-
vious instruction is TRUE. For single-axis operation, multi-execution is possible for only one instruc-
tion.
Operation Pattern
Multi-execution of Multi-execution of Multi-execution of
instructions instructions instructions
Operation started. Operation started. Operation started. Operation started.
Velocity (mm/s)
30.00
20.00
10.00
(3)
(2)
(1)
Positive direction
0
50.00 100.00 200.00 Axis 1 (mm)
(4)
250.00
MC_MoveZeroPosition (High-speed Home)
instruction executed.
Ladder Diagram
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for axis 1.
MC_Axis000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 1.
MC_Axis000.Details.Homed BOOL FALSE TRUE when home is defined for axis 1.
MC_MoveAbsolute
Timing Chart
Pwr_Status
Hm_D
Hm_Bsy
3
Mv_Abs1_D
Mv_Abs1_Bsy
Sample Programming 1
Mv_Abs1_Act
Mv_Abs2_D
Mv_Abs2_Bsy
Mv_Abs2_Act
Mv_Abs3_D
Mv_Abs3_Bsy
Mv_Abs3_Act
Mv_Zero_D
Mv_Zero_Bsy
Mv_Zero_Act
Sample Programming
If StartPg is TRUE, check that the Servo Drive is ready.
StartPg MC_Axis000.DrvStatus.ServoReady Lock1
If a minor fault level error occurs for axis 1, the error handler for the device (FaultHandler) is executed.
Program the FaultHandler according to the device.
MC_Axis000.MFaultLvl.Active FaultHandler
EN FaultHandler
If the Servo is ON and home is not defined, the Home instruction is executed.
HM
MC_Home
Pwr_Status MC_Axis000.Details.Homed MC_Axis000 Axis Axis Hm_D
Execute Done
Busy Hm_Bsy
CommandAborted Hm_Ca
Error Hm_Err
ErrorID Hm_ErrID
After absolute positioning 1 is started, absolute positioning 2 is started with multi-execution of instructions.
MV_ABS2
MC_MoveAbsolute
Mv_Abs1_Act MC_Axis000 Axis Axis Mv_Abs2_D
Execute Done
LREAL#100.0 Position Busy Mv_Abs2_Bsy
LREAL#20.0 Velocity Active Mv_Abs2_Act
LREAL#1000.0 Acceleration CommandAborted Mv_Abs2_Ca
LREAL#1000.0 Deceleration Error Mv_Abs2_Err
Jerk ErrorID Mv_Abs2_ErrID
_eMC_DIRECTION#_mcNoDirection Direction
_eMC_BUFFER_MODE#_mcBuffered BufferMode
After absolute positioning 2 is started, absolute positioning 3 is started with multi-execution of instructions.
MV_ABS3
MC_MoveAbsolute
Mv_Abs2_Act MC_Axis000 Axis Axis Mv_Abs3_D
Execute Done
LREAL#200.0 Position Busy Mv_Abs3_Bsy
LREAL#30.0 Velocity Active Mv_Abs3_Act
LREAL#1000.0 Acceleration CommandAborted Mv_Abs3_Ca
LREAL#1000.0 Deceleration Error Mv_Abs3_Err
MC_MoveAbsolute
Jerk ErrorID Mv_Abs3_ErrID
_eMC_DIRECTION#_mcNoDirection Direction
_eMC_BUFFER_MODE#_mcBuffered BufferMode
After absolute positioning 3 is started, the MC_MoveZeroPosition (High-speed Home) instruction is executed.
MV_ZERO
MC_MoveZeroPosition
3
Mv_Abs3_Act MC_Axis000 Axis Axis Mv_Zero_D
Execute Done
Sample Programming 1
LREAL#250.0 Velocity Busy Mv_Zero_Bsy
LREAL#1000.0 Acceleration Active Mv_Zero_Act
LREAL#1000.0 Deceleration CommandAborted Mv_Zero_Ca
Jerk Error Mv_Zero_Err
_eMC_BUFFER_MODE#_mcBuffered BufferMode ErrorID Mv_Zero_ErrID
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for axis 1.
MC_Axis000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 1.
MC_Axis000.Details.Homed BOOL FALSE TRUE when home is defined for axis 1.
Pwr_Status BOOL FALSE This variable is assigned to the Status output
variable from the PWR instance of the MC_Pow-
er instruction. This variable changes to TRUE
when the Servo is turned ON.
StartPg BOOL FALSE The Servo is turned ON if this variable is TRUE
and EtherCAT process data communications are
established.
Hm_Ex BOOL FALSE The HM instance of MC_Home is executed
when this variable changes to TRUE.
Mv_Abs1_Ex BOOL FALSE The MV_ABS1 instance of MC_MoveAbsolute is
executed when this variable changes to TRUE.
Mv_Abs2_Ex BOOL FALSE The MV_ABS2 instance of MC_MoveAbsolute is
executed when this variable changes to TRUE.
Mv_Abs3_Ex BOOL FALSE The MV_ABS3 instance of MC_MoveAbsolute is
executed when this variable changes to TRUE.
Mv_Zero_Ex BOOL FALSE The MV_ZERO instance of MC_MoveZeroPosi-
tion is executed when this variable changes to
TRUE.
Timing Chart
Pwr_Status
Hm_Ex
Hm_D
Hm_Bsy
Mv_Abs1_Ex
Mv_Abs1_D
Mv_Abs1_Bsy
Mv_Abs1_Act
Mv_Abs2_Ex
Mv_Abs2_D
Mv_Abs2_Bsy
Mv_Abs2_Act
Mv_Abs3_Ex
Mv_Abs3_D
Mv_Abs3_Bsy
Mv_Abs3_Act
Mv_Zero_Ex
Mv_Zero_D
Mv_Zero_Bsy
Mv_Zero_Act
Sample Programming
// Processing when input parameters are not set
IF InitFlag = FALSE THEN
// MV_ABS1 parameters
Mv_Abs1_Pos := LREAL#50.0;
Mv_Abs1_Vel := LREAL#10.0;
Mv_Abs1_Acc := LREAL#1000.0;
Mv_Abs1_Dec := LREAL#1000.0;
Mv_Abs1_Dir :=_eMC_DIRECTION#_mcNoDirection;
// MV_ABS2 parameters
Mv_Abs2_Pos := LREAL#100.0;
Mv_Abs2_Vel := LREAL#20.0;
Mv_Abs2_Acc := LREAL#1000.0;
Mv_Abs2_Dec := LREAL#1000.0;
Mv_Abs2_Dir :=_eMC_DIRECTION#_mcNoDirection;
Mv_Abs2_Bm :=_eMC_BUFFER_MODE#_mcBuffered;
// MV_ABS3 parameters
Mv_Abs3_Pos := LREAL#200.0;
MC_MoveAbsolute
Mv_Abs3_Vel := LREAL#30.0;
Mv_Abs3_Acc := LREAL#1000.0;
Mv_Abs3_Dec := LREAL#1000.0;
Mv_Abs3_Dir :=_eMC_DIRECTION#_mcNoDirection;
Mv_Abs3_Bm :=_eMC_BUFFER_MODE#_mcBuffered;
// MV_ZERO parameters 3
Mv_Zero_Vel := LREAL#250;
Mv_Zero_Acc := LREAL#1000.0;
Sample Programming 1
Mv_Zero_Dec := LREAL#1000.0;
Mv_Zero_Bm :=_eMC_BUFFER_MODE#_mcBuffered;
END_IF;
// If StartPg is TRUE and the Servo Drive is ready, the Servo is turned ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis000.DrvStatus.Ready=TRUE) THEN
Pwr_En:=TRUE;
ELSE
Pwr_En:=FALSE;
END_IF;
// If the Servo is ON and home is not defined, the Home instruction is executed.
IF (Pwr_Status=TRUE) AND (MC_Axis000.Details.Homed=FALSE) THEN
Hm_Ex:=TRUE;
END_IF;
END_IF;
// MC_Power
PWR(
Axis := MC_Axis000,
Enable := Pwr_En,
Status => Pwr_Status,
Busy => Pwr_Bsy,
Error => Pwr_Err,
ErrorID => Pwr_ErrID
);
// MC_Home
HM(
Axis := MC_Axis000,
Execute := Hm_Ex,
Done => Hm_D,
Busy => Hm_Bsy,
CommandAborted => Hm_Ca,
Error => Hm_Err,
ErrorID => Hm_ErrID
);
// MC_MoveAbsolute
MV_ABS1(
Axis := MC_Axis000,
Execute := Mv_Abs1_Ex,
Position := Mv_Abs1_Pos,
Velocity := Mv_Abs1_Vel,
Acceleration := Mv_Abs1_Acc,
Deceleration := Mv_Abs1_Dec,
Direction := Mv_Abs1_Dir,
Done => Mv_Abs1_D,
Busy => Mv_Abs1_Bsy,
Active => Mv_Abs1_Act,
CommandAborted => Mv_Abs1_Ca,
MC_MoveAbsolute
Error => Mv_Abs1_Err,
ErrorID => Mv_Abs1_ErrID
);
MV_ABS2(
Axis := MC_Axis000,
Execute := Mv_Abs2_Ex, 3
Position := Mv_Abs2_Pos,
Velocity := Mv_Abs2_Vel,
Sample Programming 1
Acceleration := Mv_Abs2_Acc,
Deceleration := Mv_Abs2_Dec,
Direction := Mv_Abs2_Dir,
BufferMode := Mv_Abs2_Bm,
Done => Mv_Abs2_D,
Busy => Mv_Abs2_Bsy,
Active => Mv_Abs2_Act,
CommandAborted => Mv_Abs2_Ca,
Error => Mv_Abs2_Err,
ErrorID => Mv_Abs2_ErrID
);
MV_ABS3(
Axis := MC_Axis000,
Execute := Mv_Abs3_Ex,
Position := Mv_Abs3_Pos,
Velocity := Mv_Abs3_Vel,
Acceleration := Mv_Abs3_Acc,
Deceleration := Mv_Abs3_Dec,
Direction := Mv_Abs3_Dir,
BufferMode := Mv_Abs3_Bm,
Done => Mv_Abs3_D,
Busy => Mv_Abs3_Bsy,
Active => Mv_Abs3_Act,
CommandAborted => Mv_Abs3_Ca,
Error => Mv_Abs3_Err,
ErrorID => Mv_Abs3_ErrID
);
// MC_MoveZeroPosition
MV_ZERO(
Axis := MC_Axis000,
Execute := Mv_Zero_Ex,
Velocity := Mv_Zero_Vel,
Acceleration := Mv_Zero_Acc,
Deceleration := Mv_Zero_Dec,
BufferMode := Mv_Zero_Bm,
Done => Mv_Zero_D,
Busy => Mv_Zero_Bsy,
Active => Mv_Zero_Act,
CommandAborted => Mv_Zero_Ca,
Error => Mv_Zero_Err,
ErrorID => Mv_Zero_ErrID
);
Sample Programming 2
In this sample, when the Count Mode is set to Rotary Mode and positioning is performed toward the
target position, the shortest direction, clockwise or counterclockwise, is automatically determined and
positioning is performed.
This section shows sample programming for shortest-way control of the rotation direction of a tool
changer.
Parameter Settings
The minimum settings required for this sample programming are given below.
Count Mode
Ring Counter
Modulo Modulo
Axis maximum minimum
position position
Axis 1 360 0
Unit of Display
Operation Example
In this sample, multi-execution of absolute positioning instructions is used to position in a range of 0°
to 360°. The actual position returns to 0° once it exceeds the range of 0° to 360°.
Multi-execution of instructions is performed when the Active (Controlling) output variable from the pre-
vious instruction is TRUE. For single-axis operation, multi-execution is possible for only one instruc-
tion.
MC_MoveAbsolute
In this sample, multi-execution of instructions is executed with BufferMode (Buffer Mode Selection) set
to Buffered.
0°
360°
290° 300°
90°
3
Sample Programming 2
120°
180°
Shortest-way positioning is performed.
If you specify 0° (home), 90°, 120°, or 290°, the axis will move to that position.
The rotation direction in this instance is in the shorter rotation direction. The travel velocity is 250°/s.
The sample programming performs positioning with a shortest way specification from 290° to 90° to
120° and then to home (0°).
Ladder Diagram
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for axis 1.
MC_Axis000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 1.
MC_Axis000.Details.Homed BOOL FALSE TRUE when home is defined for axis 1.
Pwr_Status BOOL FALSE This variable is assigned to the Status output
variable from the PWR instance of the MC_Pow-
er instruction. This variable changes to TRUE
when the Servo is turned ON.
StartPg BOOL FALSE The Servo is turned ON if this variable is TRUE
and EtherCAT process data communications are
established.
Timing Chart
Pwr_Status
Hm_D
Hm_Bsy
Mv_Abs1_D
Mv_Abs1_Bsy
Mv_Abs1_Act
Mv_Abs2_D
Mv_Abs2_Bsy
Mv_Abs2_Act
Mv_Abs3_D
Mv_Abs3_Bsy
Mv_Abs3_Act
Mv_Abs4_D
Mv_Abs4_Bsy
Mv_Abs4_Act
Command velocity
MC_Axis000
Time
Sample Programming
If StartPg is TRUE, check that the Servo Drive is ready.
StartPg MC_Axis000.DrvStatus.Ready Lock1
If a minor fault level error occurs for axis 1, the error handler for the device (FaultHandler) is executed.
Program the FaultHandler according to the device.
MC_Axis000.MFaultLvl.Active FaultHandler
EN FaultHandler
If the Servo is ON and home is not defined, the Home instruction is executed.
HM
MC_Home
Pwr_Status MC_Axis000.Details.Homed MC_Axis000 Axis Axis Hm_D
Execute Done
Busy Hm_Bsy
CommandAborted Hm_Ca
Error Hm_Err
ErrorID Hm_ErrID
MC_MoveAbsolute
After home is defined, absolute positioning 1 is executed to move to 290.0°.
The shortest way is specified for the motion direction.
MV_ABS1
MC_MoveAbsolute
Hm_D MC_Axis000 Axis Axis Mv_Abs1_D
Execute Done 3
LREAL#290.0 Position Busy Mv_Abs1_Bsy
LREAL#250.0 Velocity Active Mv_Abs1_Act
Sample Programming 2
LREAL#1000.0 Acceleration CommandAborted Mv_Abs1_Ca
LREAL#1000.0 Deceleration Error Mv_Abs1_Err
Jerk ErrorID Mv_Abs1_ErrID
_eMC_DIRECTION#_mcShortestWay Direction
BufferMode
Absolute positioning 2 is executed with multi-execution of instructions to move from 290.0° to 90.0°.
The shortest way is used for the motion direction.
MV_ABS2
MC_MoveAbsolute
Mv_Abs1_Act MC_Axis000 Axis Axis Mv_Abs2_D
Execute Done
LREAL#90.0 Position Busy Mv_Abs2_Bsy
LREAL#250.0 Velocity Active Mv_Abs2_Act
LREAL#1000.0 Acceleration CommandAborted Mv_Abs2_Ca
LREAL#1000.0 Deceleration Error Mv_Abs2_Err
Jerk ErrorID Mv_Abs2_ErrID
_eMC_DIRECTION#_mcShortestWay Direction
_eMC_BUFFER_MODE#_mcBuffered BufferMode
Absolute positioning 3 is executed with multi-execution of instructions to move from 90.0° to 120.0°.
The shortest way is used for the motion direction.
MV_ABS3
MC_MoveAbsolute
Mv_Abs2_Act MC_Axis000 Axis Axis Mv_Abs3_D
Execute Done
LREAL#120.0 Position Busy Mv_Abs3_Bsy
LREAL#250.0 Velocity Active Mv_Abs3_Act
LREAL#1000.0 Acceleration CommandAborted Mv_Abs3_Ca
LREAL#1000.0 Deceleration Error Mv_Abs3_Err
Jerk ErrorID Mv_Abs3_ErrID
_eMC_DIRECTION#_mcShortestWay Direction
_eMC_BUFFER_MODE#_mcBuffered BufferMode
Absolute positioning 4 is executed with multi-execution of instructions to move from 120.0° to 0.0°.
The shortest way is used for the motion direction.
MV_ABS4
MC_MoveAbsolute
Mv_Abs3_Act MC_Axis000 Axis Axis Mv_Abs4_D
Execute Done
LREAL#0.0 Position Busy Mv_Abs4_Bsy
LREAL#250.0 Velocity Active Mv_Abs4_Act
LREAL#1000.0 Acceleration CommandAborted Mv_Abs4_Ca
LREAL#1000.0 Deceleration Error Mv_Abs4_Err
Jerk ErrorID Mv_Abs4_ErrID
_eMC_DIRECTION#_mcShortestWay Direction
_eMC_BUFFER_MODE#_mcBuffered BufferMode
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for axis 1.
MC_Axis000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 1.
MC_Axis000.Details.Homed BOOL FALSE TRUE when home is defined for axis 1.
Pwr_Status BOOL FALSE This variable is assigned to the Status output
variable from the PWR instance of the MC_Pow-
er instruction. This variable changes to TRUE
when the Servo is turned ON.
StartPg BOOL FALSE The Servo is turned ON if this variable is TRUE
and EtherCAT process data communications are
established.
Hm_Ex BOOL FALSE The HM instance of MC_Home is executed
when this variable changes to TRUE.
Mv_Abs1_Ex BOOL FALSE The MV_ABS1 instance of MC_MoveAbsolute is
executed when this variable changes to TRUE.
Mv_Abs2_Ex BOOL FALSE The MV_ABS2 instance of MC_MoveAbsolute is
executed when this variable changes to TRUE.
Mv_Abs3_Ex BOOL FALSE The MV_ABS3 instance of MC_MoveAbsolute is
executed when this variable changes to TRUE.
Mv_Abs4_Ex BOOL FALSE The MV_ABS4 instance of MC_MoveAbsolute is
executed when this variable changes to TRUE.
InitFlag BOOL FALSE This variable indicates if it is necessary to set
the input parameters.
Input parameters are set when this variable is
FALSE. When setting the input parameters is
completed, this variable changes to TRUE.
Timing Chart
Pwr_Status
Hm_Ex
Hm_D
Hm_Bsy
Mv_Abs1_Ex
MC_MoveAbsolute
Mv_Abs1_D
Mv_Abs1_Bsy
Mv_Abs1_Act
Mv_Abs2_Ex
Mv_Abs2_D
Mv_Abs2_Bsy 3
Mv_Abs2_Act
Sample Programming 2
Mv_Abs3_Ex
Mv_Abs3_D
Mv_Abs3_Bsy
Mv_Abs3_Act
Mv_Abs4_Ex
Mv_Abs4_D
Mv_Abs4_Bsy
Mv_Abs4_Act
Command velocity
MC_Axis000
Time
Sample Programming
// Processing when input parameters are not set
IF InitFlag = FALSE THEN
// MV_ABS1 parameters
Mv_Abs1_Pos := LREAL#290.0;
Mv_Abs1_Vel := LREAL#250.0;
Mv_Abs1_Acc := LREAL#1000.0;
Mv_Abs1_Dec := LREAL#1000.0;
Mv_Abs1_Dir := _eMC_DIRECTION#_mcShortestWay;
// MV_ABS2 parameters
Mv_Abs2_Pos := LREAL#90.0;
Mv_Abs2_Vel := LREAL#250.0;
Mv_Abs2_Acc := LREAL#1000.0;
Mv_Abs2_Dec := LREAL#1000.0;
Mv_Abs2_Dir := _eMC_DIRECTION#_mcShortestWay;
Mv_Abs2_Bm := _eMC_BUFFER_MODE#_mcBuffered;
// MV_ABS3 parameters
Mv_Abs3_Pos := LREAL#120.0;
Mv_Abs3_Vel := LREAL#250.0;
Mv_Abs3_Acc := LREAL#1000.0;
Mv_Abs3_Dec := LREAL#1000.0;
Mv_Abs3_Dir := _eMC_DIRECTION#_mcShortestWay;
Mv_Abs3_Bm := _eMC_BUFFER_MODE#_mcBuffered;
// MV_ABS4 parameters
Mv_Abs4_Pos := LREAL#0.0;
Mv_Abs4_Vel := LREAL#250.0;
Mv_Abs4_Acc := LREAL#1000.0;
Mv_Abs4_Dec := LREAL#1000.0;
Mv_Abs4_Dir := _eMC_DIRECTION#_mcShortestWay;
Mv_Abs4_Bm := _eMC_BUFFER_MODE#_mcBuffered;
END_IF;
// If StartPg is TRUE and the Servo Drive is ready, the Servo is turned ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis000.DrvStatus.Ready=TRUE) THEN
Pwr_En:=TRUE;
ELSE
Pwr_En:=FALSE;
END_IF;
// If the Servo is ON and home is not defined, the Home instruction is executed.
IF (Pwr_Status=TRUE) AND (MC_Axis000.Details.Homed=FALSE) THEN
Hm_Ex:=TRUE;
END_IF;
IF Hm_D=TRUE THEN
Mv_Abs1_Ex:=TRUE;
END_IF;
MC_MoveAbsolute
Mv_Abs2_Ex:=TRUE;
END_IF;
Sample Programming 2
// After MV_ABS3 is started, MV_ABS4 is executed with multi-execution of instructio
ns.
IF Mv_Abs3_Act=TRUE THEN
Mv_Abs4_Ex:=TRUE;
END_IF;
// MC_Power
PWR(
Axis := MC_Axis000,
Enable := Pwr_En,
Status => Pwr_Status,
Busy => Pwr_Bsy,
Error => Pwr_Err,
ErrorID => Pwr_ErrID
);
// MC_Home
HM(
Axis := MC_Axis000,
Execute := Hm_Ex,
Done => Hm_D,
Busy => Hm_Bsy,
CommandAborted => Hm_Ca,
Error => Hm_Err,
ErrorID => Hm_ErrID
);
Position := Mv_Abs1_Pos,
Velocity := Mv_Abs1_Vel,
Acceleration := Mv_Abs1_Acc,
Deceleration := Mv_Abs1_Dec,
Direction := Mv_Abs1_Dir,
Done => Mv_Abs1_D,
Busy => Mv_Abs1_Bsy,
Active => Mv_Abs1_Act,
CommandAborted => Mv_Abs1_Ca,
Error => Mv_Abs1_Err,
ErrorID => Mv_Abs1_ErrID
);
);
MC_MoveAbsolute
Velocity := Mv_Abs4_Vel,
Acceleration := Mv_Abs4_Acc,
Deceleration := Mv_Abs4_Dec,
Direction := Mv_Abs4_Dir,
BufferMode := Mv_Abs4_Bm,
Done => Mv_Abs4_D,
Busy => Mv_Abs4_Bsy, 3
Active => Mv_Abs4_Act,
CommandAborted => Mv_Abs4_Ca,
Sample Programming 2
Error => Mv_Abs4_Err,
ErrorID => Mv_Abs4_ErrID
);
MC_MoveRelative
The MC_MoveRelative instruction moves the axis the specified travel distance from the command cur-
rent position.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_MoveRela- Relative Posi- FB MC_MoveRelative_instance MC_MoveRelative_instance (
tive tioning MC_MoveRelative Axis :=parameter,
Axis Axis Execute :=parameter,
Execute Done Distance :=parameter,
Distance Busy Velocity :=parameter,
Velocity Active
Acceleration :=parameter,
Acceleration CommandAborted
Deceleration :=parameter,
Deceleration Error
Jerk ErrorID Jerk :=parameter,
BufferMode BufferMode :=parameter,
Done =>parameter,
Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Execute Execute BOOL TRUE or FALSE FALSE The instruction is executed when the
value of this variable changes to
TRUE.
Distance Travel Dis- LREAL Negative number, posi- 0 Specify the travel distance from the
tance tive number, or 0 command current position.
The unit is command units.*1
Velocity Target Ve- LREAL Positive number 0 Specify the target velocity.*2
locity
The unit is command units/s.*1
Acceleration Acceleration LREAL Non-negative number 0 Specify the acceleration rate.
Rate The unit is command units/s2.*1
Deceleration Decelera- LREAL Non-negative number 0 Specify the deceleration rate.
tion Rate The unit is command units/s2.*1
Jerk Jerk LREAL Non-negative number 0 Specify the jerk.
The unit is command units/s3.*1
MC_MoveRelative
5: Blending high
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
*2. Always set the target velocity. If the axis is moved without setting a target velocity, an error will occur.
*3. The default value for an enumeration variable is actually not the number, but the enumerator.
3
Output Variables
Data Valid
Variables
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE when the axis is being controlled.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specifies the axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• The travel distance from the command current position is specified to perform positioning.
• Relative positioning starts when Execute changes to TRUE.
• You can specify the Velocity (Target Velocity), Acceleration (Acceleration Rate), Deceleration (De-
celeration Rate), and Jerk as input variables.
Velocity
Target
velocity Acceleration Deceleration
Time
0 Command current position
Travel distance
When the Acceleration (Acceleration Rate) or Deceleration (Deceleration Rate) is 0 and the instruction
is executed, it will reach the target velocity without accelerating or decelerating.
The following chart shows an operation example of when the Deceleration (Deceleration Rate) is 0.
Velocity
Target
velocity Acceleration
Time
0 Command current position
MC_MoveRelative
Travel distance
Velocity
3
Target
velocity
Function
Time
0 Command current position
Travel distance
For details on Jerk, refer to the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No.
W507).
Instruction Details
When the Count Mode is Rotary Mode you can specify a Distance (Travel Distance) that exceeds the
relative distance range from the Modulo Minimum Position Setting Value axis parameter to the
Modulo Maximum Position Setting Value axis parameter so that you can perform multiple ring rota-
tion positioning.
The following chart shows an operation example when the command current position is -20 and
Distance (Travel Distance) is 300.
Modulo maximum
position setting
value: 100
Command
current Position after
position: −20 positioning: −60
0
Modulo minimum
position setting
value: −70
300
Performs relative positioning with travel distance of 300.
When Distance (Travel Distance) is 0 and the instruction is executed, the axis will not move, but Done
will change to TRUE.
Observe the following precautions if you re-execute relative positioning just before the comple-
tion of positioning.
If positioning is completed before the MC Function Module re-executes the instruction, normal
instruction execution is performed.
• For normal instruction execution, positioning is performed to the relative value that is based
on the position of the axis when the instruction is executed.
• For re-execution of an instruction, positioning is performed to the relative value that is based
on the position of the axis when original instruction was executed.
Time Time
Relative position Relative position Relative position specified
specified for specified for
for re-execution of instruction
original instruction instruction
In-position Check
An in-position check is performed for this instruction according to the settings in In-position Range
and In-position Check Time axis parameters.
Timing Charts
• Busy (Executing) changes to TRUE at the same time as Execute changes to TRUE. Active (Control-
ling) changes to TRUE in the next period.
• Done changes to TRUE when Distance (Target Distance) is reached and positioning is completed.
• If another instruction aborts this instruction, CommandAborted changes to TRUE and Busy (Execut-
ing) and Active (Controlling) change to FALSE.
Execute
Done
Busy
Active
CommandAborted
MC_MoveRelative
Error
ErrorID 16#0000
Multi-execution of
Velocity
instructions
Function
Time
Velocity
Instruction re-executed.
Instruction re-executed.
Time
0 Command current position
First travel
distance
Second travel
distance
Third travel
distance
To change any input parameter other than Distance (Travel Distance), re-execute the instruction
with Distance (Travel Distance) assigned to the same value as the original instruction.
For example, if Distance (Travel Distance) is changed to 0 when the instruction is re-executed,
the re-executed instruction will use a Distance (Travel Distance) of 0 from the first time it is exe-
cuted. This will cause the axis to return to the original first position, as shown below.
Instruction re-executed.
Velocity
Changed target velocity
First position
of original
instruction Target position
Time
For details on re-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
MC_MoveRelative
is used as the transit velocity.
For details on BufferMode (Buffer Mode Selection), refer to the NJ/NX-series CPU Unit Motion Control
User’s Manual (Cat. No. W507).
Function
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axis will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
Done
Busy
Active
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_MoveVelocity
The MC_MoveVelocity instruction performs velocity control with the Position Control Mode of the Ser-
vo Drive.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_MoveVelocity Velocity Con- FB MC_MoveVelocity_instance MC_MoveVelocity_instance (
trol MC_MoveVelocity Axis :=parameter,
Axis Axis Execute :=parameter,
Execute InVelocity Velocity :=parameter,
Velocity Busy Acceleration :=parameter,
Acceleration Active
Deceleration :=parameter,
Deceleration CommandAborted
Jerk :=parameter,
Jerk Error
Direction ErrorID Direction :=parameter,
Continuous Continuous :=parameter,
BufferMode BufferMode :=parameter,
InVelocity =>parameter,
Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALSE The instruction is executed
when the value of this variable
changes to TRUE.
Velocity Target Ve- LREAL Non-negative number 0 Set the target velocity.
locity The unit is command units/s.*1
Acceleration Accelera- LREAL Non-negative number 0 Specify the acceleration rate.
tion Rate The unit is command units/s2.*1
Deceleration Decelera- LREAL Non-negative number 0 Specify the deceleration rate.
tion Rate The unit is command units/s2.*1
Jerk Jerk LREAL Non-negative number 0 Specify the jerk.
The unit is command units/s3.*1
Direction Direction _eMC_DIREC- 0: _mcPositiveDirection 0 *2 Specify the rotation direction.
TION 2: _mcNegativeDirection 0: Positive direction
3: _mcCurrentDirection 2: Negative direction
3: Current direction
De-
Name Meaning Data type Valid range Description
fault
BufferMode Buffer Mode _eMC_BUF- 0: _mcAborting 0 *2 Specify the behavior when exe-
Selection FER_MODE 1: _mcBuffered cuting more than one motion in-
struction.
0: Aborting
1: Buffered
Continuous Continua- BOOL TRUE or FALSE FALSE (Reserved)
MC_MoveVelocity
(Reserved) tion Mode
Selection
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
*2. The default value for an enumeration variable is actually not the number, but the enumerator.
3
Output Variables
Data Valid
Variables
Name Meaning Description
type range
InVelocity Target Velocity BOOL TRUE or TRUE when the target velocity is reached.
Reached FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE when the axis is being controlled.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs. A value of
16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specifies the axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• Pseudo velocity control is performed with position control.
• The velocity control operation starts when Execute changes to TRUE.
Instruction Details
This section describes the instruction in detail.
Direction
• Specify the travel direction with Direction.
• When Direction specifies 0: _mcPositiveDirection (Positive direction), the axis moves in the posi-
tive direction. When it specifies 2: _mcNegativeDirection (Negative direction), the axis moves in
the negative direction.
• When Direction specifies 3: _mcCurrentDirection (Current direction), the axis motion depends on
whether the axis is stopped or not. If the axis is stopped, it will move in the direction in which it was
traveling previously. If the power is turned ON or after restarting, the axis moves in the positive di-
rection.
If you execute this instruction during multi-execution of motion control instructions for the axis, the
axis will move in the direction that it is currently traveling.
MC_MoveVelocity
Timing Charts
• Busy (Executing) changes to TRUE at the same time as Execute changes to TRUE. Active (Control-
ling) changes to TRUE in the next period.
• InVelocity (Target Velocity Reached) changes to TRUE when Velocity (Target Velocity) is reached.
3
• If another instruction aborts this instruction, CommandAborted changes to TRUE and Busy (Execut-
ing), Active (Controlling), and InVelocity (Target Velocity Reached) change to FALSE.
Function
Execute
InVelocity
Busy
Active
CommandAborted
Error
ErrorID 16#0000
Decelerates to a stop
Velocity when another instruction
causes an error.
Target velocity
Time
The InVelocity (Target Velocity Reached) output variable indicates when the velocity has reached the
same velocity for this instruction and the re-executed motion control instruction. Therefore, after
InVelocity (Target Velocity Reached) changes to TRUE, even if the velocity is changed by the override
factor, InVelocity (Target Velocity Reached) will not change to FALSE.
If the override factor changes before InVelocity (Target Velocity Reached) changes to TRUE,
InVelocity (Target Velocity Reached) will change to TRUE when the new target velocity is reached.
You can specify Acceleration (Acceleration Rate), Deceleration (Deceleration Rate) and Jerk as input
variables.
When the Velocity (Target Velocity) is 0 and the instruction is executed, the axis will enter continuous
operation without motion.
The following chart shows an operation example of when Velocity (Target Velocity) is 0.
Execute
InVelocity
Busy
Active
CommandAborted
Error
ErrorID 16#0000
Velocity
Target velocity
Time
When the Acceleration (Acceleration Rate) or Deceleration (Deceleration Rate) is 0 and the instruction
is executed, the axis will reach the target velocity without accelerating or decelerating.
The following chart shows an operation example of when the Acceleration (Acceleration Rate) is 0.
Velocity
Target
velocity
Time
0
Velocity
Target
velocity
Time
0
For details on Jerk, refer to the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No.
W507).
When Velocity (Target Velocity) is changed by re-executing a motion control instruction, InVelocity
(Target Velocity Reached) operates for the new target velocity that was set at re-execution.
For details on re-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
MC_MoveVelocity
For details on multi-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
Function
Specify the operation of this instruction using BufferMode (Buffer Mode Selection) for multi-execution
of instructions.
For details on BufferMode (Buffer Mode Selection), refer to the NJ/NX-series CPU Unit Motion Control
User’s Manual (Cat. No. W507).
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axis will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
InVelocity
Busy
Active
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
Sample Programming
This section shows sample programming for velocity control, such as for a spinner or centrifuge.
Parameter Settings
The minimum settings required for this sample programming are given below.
Operation Example
Sensor 1
Operation Pattern
Velocity
Second velocity
Third velocity
MC_MoveVelocity
First velocity
Time
Sensor2
Sensor3
3
Stop command
Sample Programming
1 Starting Velocity Control
Sensor 1 detects the insertion of liquid chemical. When it turns ON, velocity control starts for axis
1.
Ladder Diagram
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for axis 1.
MC_Axis000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 1.
MC_Axis000.Details.Homed BOOL FALSE TRUE when home is defined for axis 1.
Pwr_Status BOOL FALSE This variable is assigned to the Status output
variable from the PWR instance of the
MC_Power instruction. This variable changes to
TRUE when the Servo is turned ON.
Timing Chart
Pwr_Status
Sensor1
Vel_Bsy
Vel_Act
Set_Ov_Bsy
Set_Ov_End
Sensor2
Sensor3
StopTrig
Stp_D
Stp_Act
Command velocity
MC_Axis000
Time
Sample Programming
If StartPg is TRUE, check that the Servo Drive is ready.
StartPg MC_Axis000.DrvStatus.Ready Lock1
MC_MoveVelocity
PWR
MC_Power
Lock1 MC_Axis000 Axis Axis Pwr_Status
Enable Status
Busy Pwr_Bsy
Error Pwr_Err
ErrorID Pwr_ErrID
3
If a minor fault level error occurs for axis 1, the error handler for the device (FaultHandler) is executed.
Sample Programming
Program the FaultHandler according to the device.
MC_Axis000.MFaultLvl.Active FaultHandler
EN FaultHandler
When Sensor1 changes to TRUE, the MC_MoveVelocity (Velocity Control) instruction is executed.
VEL
MC_MoveVelocity
Pwr_Status Sensor1 MC_Axis000 Axis Axis Vel_InVel
Execute InVelocity
LREAL#1048576.0 Velocity Busy Vel_Bsy
LREAL#1048576.0 Acceleration Active Vel_Act
LREAL#1048576.0 Deceleration CommandAborted Vel_Ca
Jerk Error Vel_Err
_eMC_DIRECTION#_mcPositiveDirection Direction ErrorID Vel_ErrID
Continuous
BufferMode
During execution of the MC_MoveVelocity (Velocity Control) instruction, the override factor is changed
according to the status of the Sensor2 and Sensor3 bits.
Vel_Act
The MC_SetOverride (Set Override Factors) instruction is executed during execution of the
MC_MoveVelocity (Velocity Control) instruction.
SET_OV
MC_SetOverride
Vel_Act MC_Axis000 Axis Axis Set_Ov_End
Enable Enabled
Set_Ov_Velfct VelFactor Busy Set_Ov_Bsy
AccFactor Error Set_Ov_Err
JerkFactor ErrorID Set_Ov_ErrID
When the stop command (StopTrig) changes to TRUE, the MC_Stop instruction is executed.
STP
MC_Stop
StopTrig MC_Axis000 Axis Axis Stp_D
Execute Done
LREAL#524288.0 Deceleration Busy Stp_Bsy
Jerk Active Stp_Act
BufferMode CommandAborted Stp_Ca
Error Stp_Err
ErrorID Stp_ErrID
Contents of Inline ST
IF (Sensor2=FALSE) AND (Sensor3=FALSE) THEN
Set_Ov_Velfct := LREAL#100.0;
ELSIF (Sensor2=TRUE) AND (Sensor3=FALSE) THEN
Set_Ov_Velfct := LREAL#500.0;
ELSIF (Sensor2=FALSE) AND (Sensor3=TRUE) THEN
Set_Ov_Velfct := LREAL#200.0;
ELSE
Set_Ov_Velfct := LREAL#200.0;
END_IF;
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for axis 1.
MC_Axis000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 1.
MC_Axis000.Details.Homed BOOL FALSE TRUE when home is defined for axis 1.
Pwr_Status BOOL FALSE This variable is assigned to the Status output
variable from the PWR instance of the
MC_Power instruction. This variable changes to
TRUE when the Servo is turned ON.
StartPg BOOL FALSE The Servo is turned ON if this variable is TRUE
and EtherCAT process data communications
are established.
MC_MoveVelocity
Sensor1 BOOL FALSE TRUE when chemical solution supply is detect-
ed.
If the Servo is ON for axis 1, the MC_MoveVe-
locity (Velocity Control) instruction is executed.
Sensor2 BOOL FALSE If this variable is TRUE, the override factor is
set to 500%. After this variable changes to
TRUE, it remains TRUE until Sensor3 changes 3
to TRUE, at which time it changes to FALSE.
Sensor3 BOOL FALSE If this variable is TRUE, the override factor is
Sample Programming
set to 200%. After this variable changes to
TRUE, it remains TRUE.
Vel_Ex BOOL FALSE The VEL instance of MC_MoveVelocity is exe-
cuted when this variable changes to TRUE.
Set_Ov_En BOOL FALSE The SET_OV instance of MC_SetOverride is
executed while this variable is TRUE.
Stp_Ex BOOL FALSE The STP instance of MC_Stop is executed
when this variable changes to TRUE.
InitFlag BOOL FALSE This variable indicates if it is necessary to set
the input parameters.
Input parameters are set when this variable is
FALSE. When setting the input parameters is
completed, this variable changes to TRUE.
Timing Chart
Pwr_Status
Sensor1
Vel_Ex
Vel_Act
Set_Ov_En
Set_Ov_End
Sensor2
Sensor3
StopTrig
Stp_Ex
Stp_D
Stp_Act
Command velocity
MC_Axis000
Time
Sample Programming
// Processing when input parameters are not set
IF InitFlag = FALSE THEN
// MC_MoveVelocity parameters
Vel_Vel := LREAL#1048576.0;
Vel_Acc := LREAL#1048576.0;
Vel_Dec := LREAL#1048576.0;
Vel_Dir :=_eMC_DIRECTION#_mcPositiveDirection;
// MC_SetOverride parameters
Set_Ov_Velfct := LREAL#100.0;
// MC_Stop parameters
Stp_Dec := LREAL#524288.0;
END_IF;
// If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 1 is turned
ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
// If a minor fault level error occurs for axis 1, the error handler for the device
MC_MoveVelocity
(FaultHandler) is executed.
// Program the FaultHandler according to the device.
IF MC_Axis000.MFaultLvl.Active=TRUE THEN
FaultHandler();
END_IF;
// If the Servo is ON for axis 1 and the Sensor1 bit is TRUE, the MC_MoveVelocity i 3
nstruction is executed.
IF (Pwr_Status=TRUE) AND (Sensor1=TRUE) THEN
Sample Programming
Vel_Ex := TRUE;
END_IF;
// The MC_SetOverride instruction is executed during velocity control for the MC_Mo
veVelocity instruction.
IF Vel_Act=TRUE THEN
Set_Ov_En := TRUE;
END_IF;
// MC_Power
PWR(
Axis := MC_Axis000,
Enable := Pwr_En,
Status => Pwr_Status,
Busy => Pwr_Bsy,
Error => Pwr_Err,
ErrorID => Pwr_ErrID
);
// MC_MoveVelocity
VEL(
Axis := MC_Axis000,
Execute := Vel_Ex,
Velocity := Vel_Vel,
Acceleration := Vel_Acc,
Deceleration := Vel_Dec,
Direction := Vel_Dir,
InVelocity => Vel_Invel,
Busy => Vel_Bsy,
Active => Vel_Act,
CommandAborted => Vel_Ca,
Error => Vel_Err,
ErrorID => Vel_ErrID
);
// MC_SetOverride
SET_OV(
Axis := MC_Axis000,
Enable := Set_Ov_En,
VelFactor := Set_Ov_Velfct,
AccFactor := Set_Ov_Accfct,
JerkFactor := Set_Ov_Jfct,
Busy => Set_Ov_Bsy,
Enabled => Set_Ov_End,
Error => Set_Ov_Err,
ErrorID => Set_Ov_ErrID
);
// MC_Stop
STP(
Axis := MC_Axis000,
Execute := Stp_Ex,
Deceleration := Stp_Dec,
Done => Stp_D,
Busy => Stp_Bsy,
Active => Stp_Act,
CommandAborted => Stp_Ca,
Error => Stp_Err,
MC_MoveVelocity
3
Sample Programming
MC_MoveZeroPosition
The MC_MoveZeroPosition instruction performs positioning with an absolute position of 0 as the target
position to return to home.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_MoveZero- High-speed FB MC_MoveZeroPosition_instance MC_MoveZeroPosition_instance (
Position Home MC_MoveZeroPosition Axis :=parameter,
Axis Axis Execute :=parameter,
Execute Done Velocity :=parameter,
Velocity Busy Acceleration :=parameter,
Acceleration Active
Deceleration :=parameter,
Deceleration CommandAborted
Jerk :=parameter,
Jerk Error
BufferMode ErrorID BufferMode :=parameter,
Done =>parameter,
Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALSE The instruction is executed when
the value of this variable changes
to TRUE.
Velocity Target Ve- LREAL Positive number 0 Specify the target velocity.*1
locity
The unit is command units/s.*2
Acceleration Accelera- LREAL Non-negative number 0 Specify the acceleration rate.
tion Rate The unit is command units/s2.*2
Deceleration Decelera- LREAL Non-negative number 0 Specify the deceleration rate.
tion Rate The unit is command units/s2.*2
Jerk Jerk LREAL Non-negative number 0 Specify the jerk.
The unit is command units/s3.*2
BufferMode Buffer Mode _eMC_BUF- 0: _mcAborting 0*3 Specify the behavior when exe-
Selection FER_MODE 1: _mcBuffered cuting more than one motion in-
struction.
0: Aborting
1: Buffered
*1. Always set the target velocity. If the axis is moved without setting a target velocity, an error will occur.
*2. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
*3. The default value for an enumeration variable is actually not the number, but the enumerator.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
MC_MoveZeroPosition
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE when the axis is being controlled.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
3
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
Variables
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specifies the axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• The axis moves to home.
• You can specify the Velocity (Target Velocity), Acceleration (Acceleration Rate), Deceleration (De-
celeration Rate), and Jerk as input variables.
Execute the MC_MoveZeroPosition (High-speed Home) instruction only after defining home. If
home is not defined, an Instruction Execution Error with Undefined Home (error code: 5466
hex) occurs.
Instruction Details
This section describes the instruction in detail.
Direction Designation
When the Count Mode is set to Rotary Mode, positioning is performed in the direction with the short-
est distance to home (shortest-way positioning).
The following chart shows an operation example of this instruction according to the command current
position.
Command Home: 0
current
0
position: −30
0
Modulo minimum
position setting
value: −50
If this instruction is executed when home is outside of the settings of the Modulo Maximum
Position Setting Value and Modulo Minimum Position Setting Value axis parameters, a Tar-
get Position Ring Counter Out of Range error (error code: 549C hex) will occur.
Override Factors
Override factors are enabled for this instruction.
In-position Check
An in-position check is performed for this instruction according to the settings in In-position Range
and In-position Check Time axis parameters.
Operation Example
Velocity
Target velocity
Acceleration Deceleration
MC_MoveZeroPosition
Time
Command current position 0
When the Acceleration (Acceleration Rate) or Deceleration (Deceleration Rate) is 0 and the instruction
is executed, it will reach the target velocity without accelerating or decelerating.
The following chart shows an operation example of when the Acceleration (Acceleration Rate) is 0.
3
Velocity
Function
Target velocity
Deceleration
Time
Command current position 0
Velocity
Target velocity
Time
Command current position 0
For details on Jerk, refer to the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No.
W507).
Timing Charts
A timing chart for execution of the MC_MoveZeroPosition (High-speed Home) instruction is shown be-
low.
Execute
Done
Busy
Active
CommandAborted
Error
ErrorID 16#0000
Velocity
Time
For details on re-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
MC_MoveZeroPosition
For details on BufferMode (Buffer Mode Selection), refer to the NJ/NX-series CPU Unit Motion Control
User’s Manual (Cat. No. W507).
Function
Home becomes undefined for the MC_SetPosition instruction. Therefore an error will occur if you at-
tempt to execute it during execution of this instruction, and it will not be executed.
If attempting to execute the MC_SetPosition instruction causes an error, the current instruction decel-
erates the axis to a stop and CommandAborted changes to TRUE.
In this case, the output variable Error changes to TRUE for the MC_SetPosition instruction.
Execute
Done
Busy
Active
CommandAborted
Error
ErrorID 16#0000
Execution of MC_Set Position
Velocity
Time
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axis will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
Done
Busy
Active
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_MoveFeed
The MC_MoveFeed instruction performs positioning for the specified travel distance from the position
where an external device triggers an interrupt input.
Interrupt feeding is possible for absolute positioning, relative positioning, and velocity control.
FB/
MC_MoveFeed
Instruction Name Graphic expression ST expression
FUN
MC_MoveFeed Interrupt FB MC_MoveFeed_instance MC_MoveFeed_instance (
Feeding MC_MoveFeed Axis :=parameter,
Axis Axis TriggerInput :=parameter,
TriggerInput TriggerInput TriggerVariable :=parameter,
TriggerVariable TriggerVariable
Execute Done
Execute :=parameter, 3
WindowOnly :=parameter,
WindowOnly InFeed
FirstPosition :=parameter,
FirstPosition Busy
LastPosition :=parameter,
Variables
LastPosition Active
ReferenceType CommandAborted ReferenceType :=parameter,
Position Error Position :=parameter,
Velocity ErrorID Velocity :=parameter,
Acceleration Acceleration :=parameter,
Deceleration
Deceleration :=parameter,
Jerk
Jerk :=parameter,
Direction
MoveMode
Direction :=parameter,
FeedDistance MoveMode :=parameter,
FeedVelocity FeedDistance :=parameter,
BufferMode FeedVelocity :=parameter,
ErrorDetect BufferMode :=parameter,
ErrorDetect :=parameter,
Done =>parameter,
InFeed =>parameter,
Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALSE The instruction is executed when
the value of this variable
changes to TRUE.
WindowOnly Window BOOL TRUE or FALSE FALSE Specify whether to enable or dis-
Only able the window.
De-
Name Meaning Data type Valid range Description
fault
FirstPosition First Posi- LREAL Negative number, positive 0 Specify the position where latch-
tion number, or 0 ing is enabled.
The unit is command units. *1
LastPosition Last Posi- LREAL Negative number, positive 0 Specify the position where latch-
tion number, or 0 ing is disabled.
The unit is command units. *1
Reference- Position _eMC_REFER- 1: _mcFeedback 1*2 Specify the position type.
Type Type Se- ENCE_TYPE 1: Actual position (value ob-
lection tained in the same task period*3)
Position Target Po- LREAL Negative number, positive 0 If MoveMode is set to 0:
sition number, or 0 Absolute positioning, specify
the absolute target positions on
the absolute coordinate.
If MoveMode is set to 1:
Relative positioning, specify
the travel distance.
If MoveMode is set to 2:
Velocity control, specification is
not necessary.
The unit is command units. *1
Velocity Target Ve- LREAL Positive number*4 0 Specify the target velocity.
locity The unit is command units/s. *1
Acceleration Accelera- LREAL Non-negative number 0 Specify the acceleration rate.
tion Rate The unit is command units/s2. *1
Deceleration Decelera- LREAL Non-negative number 0 Specify the deceleration rate.
tion Rate The unit is command units/s2. *1
Jerk Jerk LREAL Non-negative number 0 Specify the jerk.
The unit is command units/s3. *1
Direction Direction _eMC_DIREC- 0: _mcPositiveDirection 0*2 Specify the direction of rotation
TION 1: _mcShortestWay when MoveMode is set to 0:
2: _mcNegativeDirection Absolute positioning*5 and
3: _mcCurrentDirection when the Count Mode is Rotary
4: _mcNoDirection Mode.
0: Positive direction
1: Shortest way
2: Negative direction
3: Current direction
4: No direction specified
MoveMode Travel _eMC_MOVE_ 0: _mcAbsolute 0*2 Select the travel method.
Mode MODE 1: _mcRelative 0: Absolute positioning
2: _mcVelocity 1: Relative positioning
2:Velocity control
De-
Name Meaning Data type Valid range Description
fault
FeedDistance Feed Dis- LREAL Negative number, positive 0 Specify the travel distance after
tance number, or 0 the interrupt feed input.
Specify a positive value to feed
in the same direction as the axis
was moving before the interrupt
input and specify a negative val-
ue to feed in the opposite direc-
MC_MoveFeed
tion.
The unit is command units. *1
FeedVelocity Feed Ve- LREAL Positive number 0 Specify the target travel velocity
locity after the interrupt feed input.
The unit is command units/s. *1
BufferMode Buffer _eMC_BUF- 0: _mcAborting 0*2 Specify the behavior when exe- 3
Mode Se- FER_MODE 1: _mcBuffered cuting more than one motion in-
lection struction.
Variables
0: Aborting
1: Buffered
ErrorDetect Error De- BOOL TRUE or FALSE FALSE Specify whether to detect an er-
tection Se- ror when there is no interrupt
lection feed input.
TRUE: Detect errors.
FALSE: Do not detect errors.
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
*2. The default value for an enumeration variable is actually not the number, but the enumerator.
*3. The task period is the primary period if the task is the primary periodic task and the task period of the priority-5 periodic
task if the task is the priority-5 periodic task.
*4. A value of 0 can be set if MoveMode is set to 2: Velocity control.
*5. The axis moves to the specified position when MoveMode is set to 0: Absolute positioning and when the Count
Mode is Linear Mode.
When MoveMode is set to 1: Relative positioning, the travel direction is determined by the sign of the position.
1: Shortest way and 4: No direction specified cannot be selected when MoveMode is set to 2: Velocity control,
regardless of the Counter Mode.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
InFeed Feeding BOOL TRUE or TRUE while feeding after receiving a latch input.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE when the axis is being controlled.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
Data Valid
Name Meaning Description
type range
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specify the axis. *1
TriggerInput Trigger Input Con- _sTRIG- --- Set the trigger condition. *2
dition GER_REF
TriggerVariable Trigger Variable BOOL TRUE or Specify a trigger input variable when the Control-
FALSE ler Mode is specified for the trigger mode.
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
*2. Define a user-defined variable with a data type of _sTRIGGER_REF.
_sTRIGGER_REF
Name Meaning Data type Valid range Function
Mode Mode _eMC_TRIG- 0: _mcDrive Specify the trigger mode.
GER_MODE 1: _mcController 0: Drive Mode
1: Controller Mode
LatchID Latch ID Se- _eMC_TRIG- 0: _mcLatch1 Specify which of the two latch functions to use in
lection GER_LATCH 1: _mcLatch2 Drive Mode.
_ID 0: Latch 1
MC_MoveFeed
1: Latch 2
InputDrive Trigger Input _eMC_TRIG- 0: _mcEncoderMark Specify the Servo Drive trigger signal to use in
Signal GER_IN- 1: _mcEXT Drive Mode.
PUT_DRIVE 0: Z-phase signal
1: External input
3
Function
Function
• When Execute changes to TRUE, the axis travels with absolute travel, relative travel, or velocity
control depending on the MoveMode setting.
• The target position is set in Position (Target Position) for absolute travel. The target distance is set in
Position (Target Distance) for relative travel.
Both travel methods use Velocity (Target Velocity) for travel operation.
• Relative positioning is performed with FeedVelocity from the actual position where the external input
turned ON during travel for the feed distance that is specified with FeedDistance.
• If no interrupt signal is input before the axis reaches the default target position during interrupt feed-
ing in absolute or relative travel mode, the axis stops at the target position.
You can specify whether there is an error output when the axis stops for ErrorDetect (i.e., when
there is no interrupt input.) If you specify an error output, CommandAborted changes to TRUE, and
Busy (Executing) and Active (Controlling) change to FALSE.
• To use interrupt masks, change WindowOnly to TRUE, then specify FirstPosition and LastPosition.
Interrupt feeding is performed for the first interrupt signal generated by the actual position between
the FirstPosition and the LastPosition.
• Feeding after the interrupt is performed as a relative movement for the distance that is speci-
fied with FeedDistance. If a positive value is specified for FeedDistance, feeding is performed
in the same direction as before the interrupt input, and if a negative value is specified, feeding
is performed in the opposite direction.
• The setting of the Operation Selection at Reversing axis parameter is used for the acceler-
ation and deceleration rates when reversing to feed.
• If an underflow or overflow would occur for the position after interrupt feeding, an error occurs
when the interrupt input is received. If an interrupt input is received after there is an overflow
or underflow, an axis error will still occur.
Additional Information
If even one of the required objects is not set, a Process Data Object Setting Missing error (error code:
3461 hex) occurs.
For details on mapping data objects, refer to 2-3 PDO Mapping on page 2 - 39 and to the NJ/NX-
series CPU Unit Motion Control User’s Manual (Cat. No. W507).
Refer to I/O Entry Mappings in the NX-series Position Interface Units User’s Manual (Cat. No. W524)
for information on using the NX-series Position Interface Units.
Instruction Details
This section describes the instruction in detail.
Specifying Axis
• Specify the axis for which to latch the position to Axis.
Mode
• The Mode can be set to Drive Mode to specify a signal from the Servo Drive or NX-series Pulse
Output Unit as the trigger, or to Controller Mode to specify a trigger with TriggerVariable.
• The trigger occurs on the rising edge of the trigger signal. The axis position is latched on the first
trigger (FALSE to TRUE) after the MC_TouchProbe instruction is executed.
• While this instruction is Busy (Executing), a change in TriggerVariable is taken as a trigger even if
Execute is FALSE.
Drive Mode
For trigger detection and latching of the actual position, the latched actual position is more precise in
Drive Mode (which is a Servo Drive function) than it is in Controller Mode.
Trigger detection
MC_MoveFeed
Time
• When using Drive Mode, make sure that you connect the latch signal to the LatchID that you
are going to use.
• The width of the latch signal depends on the performance of the Servo Drive or NX-series 3
Pulse Output Unit and other factors.
• You must map the following object data when the MC_MoveFeed (Interrupt Feeding) instruc-
Function
tion is executed with InputDrive set to Drive Mode.
Touch probe function (60B8 hex), Touch probe status (60B9 hex), Touch probe pos1 pos val-
ue (60BA hex), and Touch probe pos2 pos value (60BC hex)
If even one of the required objects is not set, a Process Data Object Setting Missing error
(error code: 3461 hex) occurs.
For details on mapping object data, refer to 2-3 PDO Mapping on page 2 - 39 and to the
NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507).
Controller Mode
• You can specify a BOOL variable in the Controller Mode.
• Use TriggerVariable to specify the BOOL variable that you want to use as a trigger.
• The Controller Mode causes a longer delay compared to the Drive Mode. This is due to the I/O
refresh delay that occurs when the trigger input signal is updated in the BOOL variable.
Time
If you use Controller Mode, the latch is performed each task period. Therefore, the trigger vari-
able must remain TRUE for at least one task period.
Also, one task period is required between when the trigger variable changes to TRUE and the
MC Function Module processes the latch.
Here, the task period is the primary period if the task is the primary periodic task and the task
period of the priority-5 periodic task if the task is the priority-5 periodic task.
LatchID
• Specify which of the two to use with LatchID. You can use only one of the latches with any one axis.
• LatchID indicates latch circuit 1 and latch circuit 2 in the Servo Drive or NX-series Pulse Output Unit.
For information on LatchID, refer to the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat.
No. W507).
InputDrive
• You can select _mcEncoderMark (Z phase) or _mcEXT (External Input) as triggers.
• Select _mcEncoderMark (Z phase) to use the Z phase of the Servo Drive or NX-series Pulse Output
Unit as the trigger.
Select _mcEXT (external input) to use the external trigger signal of the Servo Drive or NX-series
Pulse Output Unit as the trigger.
• For an OMRON 1S-series Servo Drive, there are two options for _mcEXT: Ext1, and Ext2. For an
OMRON G5-series Servo Drive, there are three options for _mcEXT: Ext1, Ext2, and Ext3. Use Sys-
mac Studio to make the setting.
The two triggers set in the Servo Drive can have the same setting.
• Refer to the NX-series Position Interface Units User’s Manual (Cat. No. W524) for information on
using the NX-series Pulse Output Unit.
WindowOnly
• WindowOnly specifies whether the window is enabled or disabled.
• If you specify Disable, triggers are detected for all axis positions.
• If you specify Enable, triggers are detected only when the axis position is within the range specified
by FirstPosition and LastPosition.
The following timing chart shows the difference in operation depending on the WindowOnly setting.
TriggerInput
Execute
WindowOnly
Done
Busy
MC_MoveFeed
RecordedPosition 0 Position
CommandAborted
Error
ErrorID 16#0000
3
Axis position
Function
LastPosition
FirstPosition
Position
TriggerInput
Execute
WindowOnly
Done
Busy
RecordedPosition 0 Position
CommandAborted
Error
ErrorID 16#0000
Axis position
LastPosition
Position
FirstPosition
• Latching is not possible at the moment that WindowOnly changes to TRUE and until the latch
function is activated.
• Time is needed until the latch function is activated. If the effective range for WindowOnly is
too small, latching is not possible. The range in which latching is possible depends on the
performance of the Servo Drive, Encoder Input Terminal, or Position Interface Unit, and on
EtherCAT communications.
The range that is defined by FirstPosition and LastPosition depends on the Count Mode, as given be-
low.
Linear Mode
• FirstPosition must be less than or equal to the window range and the window range must be less
than or equal to LastPosition.
• An error will occur if the FirstPosition is greater than the LastPosition.
• An error will also occur if a position beyond the position range of Linear Mode is specified.
• FirstPosition and LastPosition are LREAL variables. Do not set them to the same values.
Refer to Treatment of REAL and LREAL Data on page 1 - 14 for information on LREAL data.
FirstPosition LastPosition
0x8000000000 0x7fffffffff
Window
Window only range
Note The window only range can include the FirstPosition and LastPosition.
Rotary Mode
• The FirstPosition can be less than, equal to, or greater than the LastPosition.
• If the FirstPosition is greater than the LastPosition, the setting range includes the modulo maximum
position and modulo minimum position setting values.
• An error will occur if you specify a value beyond the modulo maximum position and modulo mini-
mum position setting values.
< LastPosition
FirstPosition =
− + − +
LastPosition 0 LastPosition 0
FirstPosition
Window only range
: The positions indicated with
filled dots are included.
FirstPosition
MC_MoveFeed
Window only range
Function
Here, the task period is the primary period if the task is the primary periodic task and the task period
of the priority-5 periodic task if the task is the priority-5 periodic task.
FeedDistance
Specify a positive value for FeedDistance to perform feed in the same direction as the motion before
the interrupt input. Specify a negative value for FeedDistance to perform feed in the opposite direction
as the motion before the interrupt input.
For example, if you specify a positive value for FeedDistance when the motion was in the negative
direction before the interrupt input, feeding is performed in the negative direction. If you specify a neg-
ative value for FeedDistance, feeding is performed in the positive direction.
Timing Charts
• Busy (Executing) changes to TRUE at the same time as Execute changes to TRUE. Active (Control-
ling) changes to TRUE in the next period.
• After an interrupt input, InFeed changes to TRUE and when FeedDistance is reached and position-
ing is completed, Done changes to TRUE.
• If another instruction aborts this instruction, CommandAborted changes to TRUE and Busy (Execut-
ing) and Active (Controlling) change to FALSE.
Execute
Done
InFeed
Busy
Active
CommandAborted
Error
ErrorID 16#0000
Interrupt input*1
Velocity
Time
*1. There may be a delay of up to several control periods from when the interrupt input turns ON until InFeed
changes to TRUE.
Additional Information
Execute
Done
InFeed
Busy
MC_MoveFeed
Active
CommandAborted
Error
ErrorID 16#0000
3
Interrupt input
Function
Velocity
Time
Execute
Done
InFeed
Busy
Active
CommandAborted
Error
ErrorID 16#0000
Interrupt input
Velocity
Time
Additional Information
The deceleration rate when the axis reverses after an interrupt input follows the Deceleration
(Deceleration Rate) input variable.
Execute
Done
InFeed
Busy
Active
CommandAborted
Error
ErrorID 16#0000
Interrupt input
Velocity
Time
When MoveMode (Travel Mode) is _mcAbsolute and an Interrupt Input Is Not Re-
ceived
When ErrorDetect (Error Detection Selection) Is FALSE
Execute
Done
InFeed
MC_MoveFeed
Busy
Active
CommandAborted
Error 3
ErrorID 16#0000
Function
Interrupt input
Velocity
Time
Execute
Done
InFeed
Busy
Active
CommandAborted
Error
ErrorID 16#0000
Interrupt input
Velocity
Time
Execute
Done
InFeed
Busy
Active
CommandAborted
Error
ErrorID 16#0000
Interrupt input
Position
LastPosition
FirstPosition
Time
Velocity
Time
For details on BufferMode (Buffer Mode Selection), refer to the NJ/NX-series CPU Unit Motion Control
MC_MoveFeed
User’s Manual (Cat. No. W507).
Sample Programming
• Error changes to TRUE in the other instruction. A Motion Control Instruction Multi-execution Disa-
bled error (error code: 543C hex) is output to ErrorID (Error Code).
• The MC_MoveFeed instruction is aborted and CommandAborted changes to TRUE.
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axis will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
Done
Busy
Active
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
Sample Programming
This section shows sample programming where control changes from velocity control to interrupt feed-
ing.
Parameter Settings
The minimum settings required for this sample programming are given below.
Count Modes
Ring Counters
Modulo Modulo
Axis maximum minimum
position position
Axis 1 360 0
Units of Display
Operation Example
Axis 2
Sensor 1
Axis 1
Operation Pattern
Velocity control Position control
Velocity
Time
MC_MoveFeed
Sensor operation
Stamp
1 Conveyor Operation
3
Axis 1, which moves the conveyer belt, performs velocity control before interrupt feeding.
Sample Programming
Feeding
Sensor 1 is connected to latch 1.
When Sensor1 turns ON, operation changes to feeding and the axis stops at the specified posi-
tion.
Ladder Diagram
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for axis 1.
MC_Axis000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 1.
MC_Axis000.Details.Homed BOOL FALSE TRUE when home is defined for axis 1.
MC_Axis001 _sAXIS_REF --- Axis Variable for axis 2.
MC_Axis001.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 2.
MC_Axis001.Details.Homed BOOL FALSE TRUE when home is defined for axis 2.
Timing Chart
Sensor 1
Hm1_D
Hm2_D
Mv_Feed_D
Mv_Feed_InFeed
Mv_Feed_Bsy
Mv_Feed_Act
Mv_Abs_D
Mv_Abs_Bsy
Mv_Abs_Act
Mv_Zero_D
Mv_Zero_Bsy
Mv_Zero_Act
Velocity
MC_Axis000
command current velocity
Velocity Time
MC_Axis001
command current velocity
Time
Sample Programming
If StartPg is TRUE, check that the Servo Drives for each axis are ready.
StartPg MC_Axis000.DrvStatus.Ready Lock1
MC_Axis001.DrvStatus.Ready Lock2
MC_MoveFeed
If the Servo Drives are ready, the Servos are turned ON for each axis.
PWR1
MC_Power
Lock1 MC_Axis000 Axis Axis Pwr1_Status
Enable Status
Busy Pwr1_Bsy
Error
ErrorID
Pwr1_Err
Pwr1_ErrID
3
Sample Programming
PWR2
MC_Power
Lock2 MC_Axis001 Axis Axis Pwr2_Status
Enable Status
Busy Pwr2_Bsy
Error Pwr2_Err
ErrorID Pwr2_ErrID
If a minor fault level error occurs for the axis composition, the error handler for the device (FaultHandler) is
executed.
Program the FaultHandler according to the device.
MC_Axis000.MFaultLvl.Active FaultHandler
EN FaultHandler
MC_Axis001.MFaultLvl.Active
If the Servo is ON for axis 1 and home is not defined, the Home instruction is executed.
HM1
MC_Home
Pwr1_Status MC_Axis000.Details.Homed MC_Axis000 Axis Axis Hm1_D
Execute Done
Busy Hm1_Bsy
CommandAborted Hm1_Ca
Error Hm1_Err
ErrorID Hm1_ErrID
If the Servo is ON for axis 2 and home is not defined, the Home instruction is executed.
HM2
MC_Home
Pwr2_Status MC_Axis001.Details.Homed MC_Axis001 Axis Axis Hm2_D
Execute Done
Busy Hm2_Bsy
CommandAborted Hm2_Ca
Error Hm2_Err
ErrorID Hm2_ErrID
The parameters are set for interrupt feeding, absolute positioning, and high-speed homing.
InitFlag
If home is defined for axis 2 and interrupt feeding is completed for axis 1, absolute positioning is performed for
axis 2.
MV_ABS
MC_MoveAbsolute
MC_Axis001.Details.Homed Mv_Feed_D MC_Axis001 Axis Axis Mv_Abs_D
Execute Done
Mv_Abs_Pos Position Busy Mv_Abs_Bsy
Mv_Abs_Vel Velocity Active Mv_Abs_Act
Mv_Abs_Acc Acceleration CommandAborted Mv_Abs_Ca
Mv_Abs_Dec Deceleration Error Mv_Abs_Err
Mv_Abs_Jrk Jerk ErrorID Mv_Abs_ErrID
Direction
BufferMode
After absolute positioning is completed, the MC_MoveZeroPosition (High-speed Home) instruction is executed
to move to home.
MV_ZERO
MC_MoveZeroPosition
Mv_Abs_Act MC_Axis001 Axis Axis Mv_Zero_D
Execute Done
Mv_Zero_Vel Velocity Busy Mv_Zero_Bsy
Mv_Zero_Acc Acceleration Active Mv_Zero_Act
Mv_Zero_Dec Deceleration CommandAborted Mv_Zero_Ca
Mv_Zero_Jrk Jerk Error Mv_Zero_Err
Mv_Zero_Bm BufferMode ErrorID Mv_Zero_ErrID
MC_MoveFeed
Contents of Inline ST
// MV_FEED parameters
Mv_Feed_TrigRef.Mode := _eMC_TRIGGER_MODE#_mcDrive;
Mv_Feed_TrigRef.LatchID := _eMC_TRIGGER_LATCH_ID#_mcLatch1;
3
Mv_Feed_TrigRef.InputDrive := _eMC_TRIGGER_INPUT_DRIVE#_mcEXT;
Sample Programming
Mv_Feed_TrigVar := FALSE;
Mv_Feed_Pos := LREAL#2000.0;
Mv_Feed_Vel := LREAL#1000.0;
Mv_Feed_Acc := LREAL#10000.0;
Mv_Feed_Dec := LREAL#10000.0;
Mv_Feed_Mm := _eMC_MOVE_MODE#_mcVelocity;
Mv_Feed_FeedDis := LREAL#500.0;
Mv_Feed_FeedVel := LREAL#500.0;
// MV_ABS parameters
Mv_Abs_Pos := LREAL#1000.0;
Mv_Abs_Vel := LREAL#500.0;
Mv_Abs_Acc := LREAL#10000.0;
Mv_Abs_Dec := LREAL#10000.0;
Mv_Abs_Jrk := LREAL#10000.0;
// MV_ZERO parameters
Mv_Zero_Vel := LREAL#500.0;
Mv_Zero_Acc := LREAL#10000.0;
Mv_Zero_Dec := LREAL#10000.0;
Mv_Zero_Jrk := LREAL#10000.0;
Mv_Zero_Bm := _eMC_BUFFER_MODE#_mcBuffered;
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for axis 1.
MC_Axis000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 1.
MC_Axis000.Details.Homed BOOL FALSE TRUE when home is defined for axis 1.
MC_Axis001 _sAXIS_REF --- Axis Variable for axis 2.
MC_Axis001.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 2.
MC_Axis001.Details.Homed BOOL FALSE TRUE when home is defined for axis 2.
TrigRef _sTRIG- --- This is the specified variable for the interrupt in-
GER_REF put.
Latch 1 of the Servo Drive is used in this sam-
ple. When the rising edge of the external input
for sensor 1 is detected, interrupt feeding is
executed.
StartPg BOOL FALSE The Servo is turned ON if this variable is TRUE
and EtherCAT process data communications
are established.
InitFlag BOOL FALSE This variable indicates if it is necessary to set
the input parameters.
Input parameters are set when this variable is
FALSE. When setting the input parameters is
completed, this variable changes to TRUE.
Hm1_Ex BOOL FALSE The HM1 instance of MC_Home is executed
when this variable changes to TRUE.
Hm2_Ex BOOL FALSE The HM2 instance of MC_Home is executed
when this variable changes to TRUE.
Mv_Feed_Ex BOOL FALSE The MV_FEED instance of MC_MoveFeed is
executed when this variable changes to TRUE.
Mv_Abs_Ex BOOL FALSE The MV_ABS instance of MC_MoveAbsolute is
executed when this variable changes to TRUE.
Mv_Zero_Ex BOOL FALSE The MV_ZERO instance of MC_MoveZeroPosi-
tion is executed when this variable changes to
TRUE.
Timing Chart
Sensor 1
Hm1_D
Hm2_D
Mv_Feed_Ex
Mv_Feed_D
Mv_Feed_InFeed
MC_MoveFeed
Mv_Feed_Bsy
Mv_Feed_Act
Mv_Abs_Ex
Mv_Abs_D
Mv_Abs_Bsy 3
Mv_Abs_Act
Sample Programming
Mv_Zero_Ex
Mv_Zero_D
Mv_Zero_Bsy
Mv_Zero_Act
Velocity
MC_Axis000
command current velocity
Velocity Time
MC_Axis001
command current velocity
Time
Sample Programming
// Processing when input parameters are not set
IF InitFlag=FALSE THEN
// MV_FEED parameters
Mv_Feed_TrigRef.Mode :=_eMC_TRIGGER_MODE#_mcDrive;
Mv_Feed_TrigRef.LatchID :=_eMC_TRIGGER_LATCH_ID#_mcLatch1;
Mv_Feed_TrigRef.InputDrive :=_eMC_TRIGGER_INPUT_DRIVE#_mcEXT;
Mv_Feed_TrigVar := FALSE;
Mv_Feed_Pos := LREAL#2000.0;
Mv_Feed_Vel := LREAL#1000.0;
Mv_Feed_Acc := LREAL#10000.0;
Mv_Feed_Dec := LREAL#10000.0;
Mv_Feed_Mm := _eMC_MOVE_MODE#_mcVelocity;
Mv_Feed_FeedDis := LREAL#500.0;
Mv_Feed_FeedVel := LREAL#500.0;
// MV_ABS parameters
Mv_Abs_Pos := LREAL#1000.0;
Mv_Abs_Vel := LREAL#500.0;
Mv_Abs_Acc := LREAL#10000.0;
Mv_Abs_Dec := LREAL#10000.0;
Mv_Abs_Jrk := LREAL#10000.0;
// MV_ZERO parameters
Mv_Zero_Vel := LREAL#500.0;
Mv_Zero_Acc := LREAL#10000.0;
Mv_Zero_Dec := LREAL#10000.0;
Mv_Zero_Jrk := LREAL#10000.0;
Mv_Zero_Bm := _eMC_BUFFER_MODE#_mcBuffered;
END_IF;
// If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 1 is turned
ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis000.DrvStatus.Ready=TRUE) THEN
Pwr1_En:=TRUE; // Turn ON the Servo.
ELSE
Pwr1_En:=FALSE; // Turn OFF the Servo.
END_IF;
// If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 2 is turned
ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis001.DrvStatus.Ready=TRUE) THEN
Pwr2_En:=TRUE; // Turn ON the Servo for axis 2.
ELSE
Pwr2_En:=FALSE; // Turn OFF the Servo for axis 2.
END_IF;
// If the Servo is ON for axis 1 and home is not defined, the Home instruction is e
// If the Servo is ON for axis 2 and home is not defined, the Home instruction is e
xecuted for axis 2.
IF (Pwr2_Status=TRUE) AND (MC_Axis001.Details.Homed=FALSE) THEN
MC_MoveFeed
Hm2_Ex:=TRUE;
END_IF;
Sample Programming
// If home is defined for axis 2 and interrupt feeding is completed for axis 1, abs
olute positioning is performed for axis 2.
IF (MC_Axis001.Details.Homed=TRUE) AND (Mv_Feed_D=TRUE) THEN
Mv_Abs_Ex := TRUE;
END_IF;
// MC_MoveFeed
MV_FEED(
Axis := MC_Axis000,
TriggerInput := Mv_Feed_TrigRef,
TriggerVariable := Mv_Feed_TrigVar,
Execute := Mv_Feed_Ex,
Position := Mv_Feed_Pos,
Velocity := Mv_Feed_Vel,
Acceleration := Mv_Feed_Acc,
Deceleration := Mv_Feed_Dec,
MoveMode := Mv_Feed_Mm,
FeedDistance := Mv_Feed_FeedDis,
FeedVelocity := Mv_Feed_FeedVel,
Done => Mv_Feed_D,
InFeed => Mv_Feed_InFeed,
Busy => Mv_Feed_Bsy,
Active => Mv_Feed_Act,
CommandAborted => Mv_Feed_Ca,
Error => Mv_Feed_Err,
ErrorID => Mv_Feed_ErrID
);
// MC_MoveAbsolute
MV_ABS(
Axis := MC_Axis001,
Execute := Mv_Abs_Ex,
Position := Mv_Abs_Pos,
Velocity := Mv_Abs_Vel,
Acceleration := Mv_Abs_Acc,
Deceleration := Mv_Abs_Dec,
Jerk := Mv_Abs_Jrk,
Done => Mv_Abs_D,
MC_MoveFeed
Busy => Mv_Abs_Bsy,
Active => Mv_Abs_Act,
CommandAborted => Mv_Abs_Ca,
Error => Mv_Abs_Err,
ErrorID => Mv_Abs_ErrID
); 3
// MC_MoveZeroPosition
Sample Programming
MV_ZERO(
Axis := MC_Axis001,
Execute := Mv_Zero_Ex,
Velocity := Mv_Zero_Vel,
Acceleration := Mv_Zero_Acc,
Deceleration := Mv_Zero_Dec,
Jerk := Mv_Zero_Jrk,
BufferMode := Mv_Zero_Bm,
Done => Mv_Zero_D,
Busy => Mv_Zero_Bsy,
Active => Mv_Zero_Act,
CommandAborted => Mv_Zero_Ca,
Error => Mv_Zero_Err,
ErrorID => Mv_Zero_ErrID
);
MC_Stop
The MC_Stop instruction decelerates an axis to a stop.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_Stop Stop FB MC_Stop_instance MC_Stop_instance (
MC_Stop Axis :=parameter,
Axis Axis Execute :=parameter,
Execute Done Deceleration :=parameter,
Deceleration Busy Jerk :=parameter,
Jerk Active
BufferMode :=parameter,
BufferMode CommandAborted
Done =>parameter,
Error
ErrorID Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALS The instruction is executed when
E the value of this variable changes
to TRUE.
Deceleration Decelera- LREAL Non-negative number 0 Specify the deceleration rate.
tion Rate The unit is command units/s2.*1
Jerk Jerk LREAL Non-negative number 0 Specify the jerk.
The unit is command units/s3.*1
BufferMode Buffer _eMC_BUF- 0: _mcAborting 0*2 Specify the behavior when execut-
Mode Se- FER_MODE ing more than one motion instruc-
lection tion.
0: Aborting
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
*2. The default value for an enumeration variable is actually not the number, but the enumerator.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Data Valid
Name Meaning Description
type range
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE when the axis is being controlled.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
MC_Stop
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
3
Output Variable Update Timing
Function
Name Timing for changing to TRUE Timing for changing to FALSE
Done When the axis decelerates to a stop and the ve- • When Execute is TRUE and changes to
locity reaches 0. FALSE.
• After one period when Execute is FALSE.
Busy When Execute changes to TRUE. • When Done changes to TRUE.
• When Error changes to TRUE.
• When CommandAborted changes to TRUE.
Active When the instruction is started. • When Done changes to TRUE.
• When Error changes to TRUE.
• When CommandAborted changes to TRUE.
CommandAborted • When this instruction is aborted because an- • When Execute is TRUE and changes to
other MC_Stop instruction was executed with FALSE.
the Buffer Mode set to Aborting. • After one period when Execute is FALSE.
• When this instruction is canceled due to an er-
ror.
• When this instruction is executed while there is
an error.
Error When there is an error in the execution condi- When the error is cleared.
tions or input parameters for the instruction.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specifies the axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• The MC_Stop instruction decelerates an axis from the current velocity to a velocity of 0.
• The deceleration stop operation starts when Execute changes to TRUE.
• CommandAborted for the instruction that is currently in operation will change to TRUE when
MC_Stop is executed.
You cannot execute this instruction if the Status.ErrorStop (Error Deceleration Stopping) varia-
ble that gives the status of this axis is TRUE.
Use the MC_ImmediateStop instruction to stop the motion of an axis that is decelerating to a
stop for an error.
Instruction Details
This section describes the instruction in detail.
Jerk Set to 0
The command value for the velocity is created with deceleration rate Dt.
Velocity
Vt
Velocity Time
Decelera- Time
tion rate
-Dt
Jt = 0
Jerk Time
Vt: Velocity when deceleration starts, Dt: Specified deceleration rate, Jt: Specified jerk
Velocity
Vt
Velocity Time
MC_Stop
Deceleration rate Time
-Dt
Jt
Jerk Time
-Jt 3
Vt: Velocity when deceleration starts, Dt: Specified deceleration rate, Jt: Specified jerk
Function
Additional Information
If you set the Deceleration to 0, an Immediate Stop instruction is executed. This will stop the
axis immediately without decelerating.
An immediate stop occurs regardless of the setting of the Acceleration/Deceleration Over ax-
is parameter only when the Deceleration is set to 0.
For details on BufferMode (Buffer Mode Selection), refer to the NJ/NX-series CPU Unit Motion Control
User’s Manual (Cat. No. W507).
In-position Check
An in-position check is not performed when stopping for this instruction.
Timing Charts
• Busy (Executing) changes to TRUE at the same time as Execute changes to TRUE. Active (Control-
ling) changes to TRUE in the next period.
• Done changes to TRUE when a velocity of 0 is reached.
• If another instruction aborts this instruction, CommandAborted changes to TRUE and Busy (Execut-
ing) and Active (Controlling) change to FALSE.
Execute
Done
Busy
Active
CommandAborted
Error
ErrorID 16#0000
Execute
Done
Busy
Active
CommandAborted
Error
ErrorID 16#0000
Velocity
Time
Velocity
Executed.
Vt Re-executed.
Velocity Time
MC_Stop
Deceleration rate Time
-Dt2
-Dt1
Jt
Jerk Time
-Jt
3
Vt: Velocity when deceleration starts, Dt: Specified deceleration rate, Jt: Specified jerk
Function
Multi-execution of Motion Control Instructions
For details on multi-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
• Operation is as follows for an axis for which Status.Stopping (Deceleration Stopping) is TRUE.
a) If single-axis positioning, continuous positioning, synchronized operation, or manual operation is
performed, CommandAborted from the instruction changes to TRUE.
b) If the MC_ResetFollowingError (Reset Following Error Counter) instruction is executed during
MC_Stop instruction execution, Done from the MC_Stop instruction changes to TRUE and the
MC_ResetFollowingError instruction is executed.
c) Multi-execution of more than one MC_Stop Instruction is possible. Done from the first MC_Stop
instruction changes to TRUE.
• Done of the MC_Stop instruction changes to TRUE when one of the following conditions is met after
the MC_Stop instruction is executed.
a) When the Enable input variable for the MC_Power instruction changes to FALSE (when the Ser-
vo is turned OFF)
b) When 1: _mcImmediateStop is selected for the StopMode input variable to the MC_TouchP-
robe (Enable External Latch) instruction, the trigger condition is met, and the OMRON 1S-series
Servo Drive or G5-series Servo Drive stops immediately
Errors
Operation will stop if an error (e.g., axis error) occurs during instruction execution.
Specify the stopping method in the axis parameters. The stopping method can be immediate stop, de-
celeration stop, or Servo OFF.
If you specify a deceleration stop, the axis will continue decelerating until it stops.
For details on setting the Stop Mode in the axis parameters, refer to the NJ/NX-series CPU Unit
Motion Control User’s Manual (Cat. No. W507).
MC_MoveVelocity
Execute
Busy
Active
CommandAborted
Error
MC_Stop
ErrorID 16#0000
MC_Stop
Execute 3
Done
Function
Busy
Active
CommandAborted
Error
Velocity
The current instruction is stopped for an
error if an axis error occurs.
Time
Version Information
Operation when an error is reset depends on the unit version of the CPU Unit as follows:
Note that you must reset errors only after the axis has stopped. Do not reset errors during axis
motion.
• A CPU Unit with unit version 1.10 or later:
If you clear the error for this instruction, the instruction will not start until Execute changes to
TRUE again.
Ver. 1.10 or Later
Execute
Done
Busy
Active
CommandAborted
Error reset.
Error
Execute
Done
Busy
Active
CommandAborted
Error
Error reset.
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_ImmediateStop
The MC_ImmediateStop instruction stops an axis according to the stopping mode that is set with the
StopMode (Stopping Mode Selection) input variable regardless of the status of the axis.
FB/
MC_ImmediateStop
Instruction Name Graphic expression ST expression
FUN
MC_Immediate- Immediate FB MC_ImmediateStop_instance MC_ImmediateStop_instance (
Stop Stop MC_ImmediateStop Axis :=parameter,
Axis Axis Execute :=parameter,
Execute Done StopMode :=parameter,
StopMode Busy Done =>parameter,
CommandAborted
Busy =>parameter,
Error
CommandAborted =>parameter,
3
ErrorID
Error =>parameter,
ErrorID =>parameter
Variables
);
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALS The instruction is executed when
E the value of this variable changes
to TRUE.
StopMode Stopping _eMC_STOP 1: _mcImmediateStop 1 *1 Select the stopping mode.
Mode Selec- _MODE 2: _mcImmediateStopFEReset 1: Perform an immediate stop.
tion 3: _mcFreeRunStop 2: Perform an immediate stop
and reset the following error
counter.
3: Perform an immediate stop
and turn OFF the Servo.
*1. The default value for an enumeration variable is actually not the number, but the enumerator.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
Data Valid
Name Meaning Description
type range
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specifies the axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• You can execute the MC_ImmediateStop instruction under any conditions.
For example, you can use this instruction to stop an axis immediately even if it is decelerating to a
stop for an error.
You cannot execute the MC_Stop instruction while Status.ErrorStop (Error Deceleration Stopping) is
TRUE, but you can execute the MC_ImmediateStop instruction.
• When this instruction is executed, the axis stops immediately according to StopMode (Stopping
Mode Selection). CommandAborted changes to TRUE for the instruction that is currently in opera-
tion.
• Status.ErrorStop (Error Deceleration Stopping) in the axis status changes to TRUE when this in-
struction is executed and an Immediate Stop Instruction Executed error (error code: 5485 hex) oc-
curs.
Refer to 1-1-3 Precautions for Master and Auxiliary Axes in Synchronized Control on page 1 - 6
for precautions on the master axis.
Timing Charts
• Busy (Executing) changes to TRUE when Execute changes to TRUE.
• Done changes to TRUE when processing of the Immediate Stop instruction is completed.
MC_Move Instruction
Execute
MC_ImmediateStop
Done
Busy
Active
CommandAborted
3
Error
Function
ErrorID 16#0000
MC_ImmediateStop Instruction
Execute
Done
Busy
CommandAborted
Error
ErrorID 16#0000
Velocity
Time
You can execute this instruction for an axis for which Status.Stopping (Deceleration Stopping) is
TRUE.
When this instruction is executed, CommandAborted from the following instructions changes to TRUE.
• MC_Stop instruction
• MC_ResetFollowingError (Reset Following Error Counter) instruction
• MC_TouchProbe (Enable External Latch) instruction (during the immediate stop)
Error
The axis will stop immediately even if an error (e.g., axis error) occurs during instruction execution.
For details on setting the Stop Mode in the axis parameters, refer to the NJ/NX-series CPU Unit
Motion Control User’s Manual (Cat. No. W507).
Execute
Done
Busy
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_SetPosition
The MC_SetPosition instruction changes the command current position or the actual current position
of an axis as required.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_SetPosition
MC_SetPosition Set Position FB MC_SetPosition_instance MC_SetPosition_instance (
MC_SetPosition Axis :=parameter,
Axis Axis Execute :=parameter,
Execute Done Position :=parameter,
Position Busy ReferenceType :=parameter,
ReferenceType CommandAborted
Relative :=parameter,
Relative Error
ExcutionMode :=parameter,
3
ExecutionMode ErrorID
Done =>parameter,
Busy =>parameter,
Variables
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALS The instruction is executed when
E the value of this variable changes
to TRUE.
Position Target Posi- LREAL Negative number, 0 Specify the absolute target posi-
tion positive number, or 0 tion.
The unit is command units. *1
ReferenceType Position _eMC_REFER- 0: _mcCommand 0 *2 Specifies the position type.
Type Selec- ENCE_TYPE 1: _mcFeedback 0: Command position (servo axis
tion or virtual servo axis)
1: Actual position (encoder axis or
virtual encoder axis)
Relative Relative BOOL TRUE or FALSE FALS (Reserved)
(Reserved) Position Se- E
lection
Execution- Execution _eMC_EXECU- 0: _mcImmediately 0 *2 (Reserved)
Mode Mode TION_MODE
(Reserved)
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
*2. The default value for an enumeration variable is actually not the number, but the enumerator.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specifies the axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• This instruction changes the command current position of the Servo axis to the specified target posi-
tion.
If you execute this instruction on an encoder axis, the actual current position will change to the
specified target position.
• Specify the target position in absolute coordinates.
• The actual current position changes at the same time as the command current position changes.
The following error is kept the same before and after the change. If you execute this instruction on a
command servo axis, the difference between the actual position and the actual current position will
remain the same before and after the change.
Because of this, after you execute this instruction, the actual current position of the axis takes the
value calculated by the following equation.
Actual current position after change = Target position - Following error before change
MC_SetPosition
• If you specify the actual position for a servo axis or the command position for an encoder axis, a
position type error will occur.
• When the Count Mode is set to Rotary Mode, set the target position to a value that is equal to or
greater than the Modulo minimum position and less than the Modulo maximum position. A ring
counter error will occur if the target position is outside this range.
• When the Count Mode is set to Linear Mode, you can set the target position to a value outside the 3
range defined by the software limits.
• You can use this instruction for an axis that is stopped or in motion.
Function
Precautions for Correct Use
Home is undefined for the specified axis after this instruction ends.
Because of this, you cannot execute following functions or instructions after this instruction
ends.
• Software limits
• MC_MoveZeroPosition (High-speed Home) instruction
• Multi-axes coordinated control instructions (linear or circular interpolation)
ReferenceType
Axis Type
_mcCommand _mcFeedback
Servo axis OK No
Encoder axis No *1 OK
Virtual servo axis OK No
Virtual encoder axis No *1 OK
*1. A Position Type Selection Out of Range error (error code: 5430 hex) occurs when the instruction is execut-
ed.
Timing Charts
Execute
Done
Busy
As an example, the axis operation and timing chart are shown below for a situation where the actual
position is changed from 200 mm to 800 mm while the axis is moved to 400 mm for an MC_MoveAb-
solute (Absolute Positioning) instruction.
The axis will move in the negative direction because the actual value is 800 mm and the target value
is 400 mm.
As shown in the following figure, even if the actual position is changed, the MC_MoveAbsolute (Abso-
lute Positioning) instruction will move the axis from the new actual position to the specified target posi-
tion. When the specified target position is reached, Done changes to TRUE.
Execute
Done
Busy
Active
MC_SetPosition
CommandAborted
Error
ErrorID 16#0000
Function
Done
Busy
The actual position changes to
Velocity 800 mm and reverse operation
is performed to move to a
position of 400 mm.
Time
Additional Information
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axis will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Additional Information
If you execute this instruction while the axis is in motion, the instruction of the axis currently in
motion will be restarted and the data required for positioning will be recalculated.
If an error occurs, it will be for the instruction of the axis currently in motion rather than for this
instruction.
MC_SetPosition
Execute
Busy
Error
Function
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_SetOverride
The MC_SetOverride instruction changes the target velocity for an axis.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_SetOverride Set Override FB MC_SetOverride_instance MC_SetOverride_instance (
Factors MC_SetOverride Axis :=parameter,
Axis Axis Enable :=parameter,
Enable Enabled VelFactor :=parameter,
VelFactor Busy AccFactor :=parameter,
AccFactor Error
JerkFactor :=parameter,
JerkFactor ErrorID
Enabled =>parameter,
Busy =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
Data Valid De-
Name Meaning Description
type range fault
Enable Enable BOOL TRUE or FALSE The override factors are enabled when the value of this
FALSE variable is TRUE.
The override factors return to 100% when the value of
this variable changes to FALSE.
VelFactor Velocity Override LREAL 0 to 500 100 Specify the velocity override factor.
Factor The valid range of the override factors is between 0.01
and 500.00.
Values above 500.00 are treated as 500 and values
less then 0.01 (including negative values) are treated
as 0.01.
The override factor will be 0 only when 0 is specified.
The unit is %.
AccFactor Acceleration/ LREAL 0 to 500 100 (Reserved)
(Reserved) Deceleration
Override Factor
JerkFactor Jerk Override LREAL 0 to 500 100 (Reserved)
(Reserved) Factor
Output Variables
Data Valid
Name Meaning Description
type range
Enabled Enabled BOOL TRUE or TRUE when the axis is being controlled.
FALSE
Data Valid
Name Meaning Description
type range
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
MC_SetOverride
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
Function
• When Error changes to TRUE.
Error When there is an error in the execution condi- When the error is cleared.
tions or input parameters for the instruction.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specifies the axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• The MC_SetOverride instruction changes override factors related to the target velocity of the axis.
Changes the target velocity of the axes in operation by changing the override.
• The override factors apply only to the following instructions.
The target velocity after the change = Target velocity of the current instruction × Override factor
If you want to pause the axis motion while maintaining the operation status, set the override factor to
0.
Status.Discrete and Status.Continuous in the Axis Variable do not change at this time.
• The override factors are always updated when the instruction is executed as long as Enable re-
mains TRUE.
• The override factors apply to operation commands for new target velocities, e.g., when you start a
stopped axis, re-execute a motion instruction, or perform multi-execution of motion control instruc-
tions.
• The override factors will return to 100% when Enable changes to FALSE.
• If an axis error occurs during MC_SetOverride instruction execution, the value of Enabled for the
MC_SetOverride instruction remains TRUE.
When Enable to this instruction changes to FALSE, Enabled and Busy from this instruction
change to FALSE.
The axis will accelerate or decelerate to a velocity with a 100% override factor.
Additional Information
Timing Charts
Done
Busy
Active
MC_SetOverride
CommandAborted
Current Instruction
Enable
Function
Busy
Velocity
Override factor: 200%
Time
If the MC_SetOverride instruction is disabled, the target velocity returns to an override factor of 100%.
Execute
InVelocity
Busy
Active
Current Instruction
Enable
Enabled
Busy
Velocity
Override factor: 200%
Time
Errors
If an error occurs during instruction execution, Error will change to TRUE. If a minor fault occurs, the
axis will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Enable
VelFactor 200
Enabled
MC_SetOverride
Busy
Error
Velocity 3
Override factor: 200%
Function
Override factor: 100%
Time
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_ResetFollowingError
The MC_ResetFollowingError instruction resets the following error between the command current po-
sition and the actual current position.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_ResetFollowingError Reset FB MC_ResetFollowingError_instance MC_ResetFollowingError_in-
Fol- MC_ResetFollowingError stance (
lowing Axis Axis Axis :=parameter,
Error Execute Done Execute :=parameter,
Coun- BufferMode Busy BufferMode :=parameter,
Active
ter Done =>parameter,
CommandAborted
Busy =>parameter,
Error
ErrorID Active =>parameter,,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALS The instruction is executed when
E the value of this variable changes
to TRUE.
BufferMode Buffer _eMC_BUF- 0: _mcAborting 0*1 Specify the behavior when execut-
Mode Se- FER_MODE ing more than one motion instruc-
lection tion.
0: Aborting
*1. The default value for an enumeration variable is actually not the number, but the enumerator.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE when the axis is being controlled.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Data Valid
Name Meaning Description
type range
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
MC_ResetFollowingError
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
Function
• When CommandAborted changes to TRUE.
Active When the instruction is started. • When Done changes to TRUE.
• When Error changes to TRUE.
• When CommandAborted changes to TRUE.
CommandAborted • When the MC_ResetFollowingError instruction • When Execute is TRUE and changes to
is aborted because another motion control in- FALSE.
struction was executed with the Buffer Mode • After one period when Execute is FALSE.
set to Aborting.
• When this instruction is canceled due to an er-
ror.
• When this instruction is executed while there
is an error.
Error When there is an error in the execution condi- When the error is cleared.
tions or input parameters for the instruction.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specifies the axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• The MC_ResetFollowingError instruction resets the following error between the command current
position and the actual current position in the MC Function Module to 0 in Cyclic Synchronous Posi-
tion (CSP) Control Mode.
• When Execute changes to TRUE, the actual current position at that point is used as the command
position (i.e., the target position).
For example, when a following error occurs in the holding operation shown below, you can execute
this instruction to implement a position command in the reverse direction and therefore set the fol-
lowing error to 0.
CommandAborted for the instruction for which the following error occurred changes to TRUE and
instruction execution is aborted.
Position
Command position
Target position in the holding
direction
(position command value)
Holding stop position
Actual position
(actual position of motor)
Velocity Time
Command
Target velocity in the holding velocity
direction
(velocity command value)
Time
Start Holding Reset Following
Error Counter executed.
• When the following error is set to 0, the Maximum Velocity value that is set in the axis parameters
is used to implement a position command. Maximum Acceleration and Maximum Deceleration
are not used.
• When the command to the new target position is completed, the Done output variable changed to
TRUE.
• This instruction implements a command position in the reverse direction to the direction in which the
following error occurred, but the Operation Selection at Reversing axis parameter is not used.
Instruction Details
This section describes the instruction in detail.
MC_ResetFollowingError
• An error occurs if the instruction is executed for an encoder or virtual encoder axis.
Function
on the unit version of the CPU Unit as described below.
Refer to MC_TorqueControl on page 3 - 335 and MC_SyncMoveVelocity on page 3 - 393 for details on
changing the control mode.
Timing Charts
Timing charts for when this instruction is executed during holding status for the MC_MoveAbsolute
(Absolute Positioning) instruction are given below.
MC_MoveAbsolute instruction
Execute
Done
Busy
Active
CommandAborted
Error
ErrorID 16#0000
MC_ResetFollowingError instruction
Execute
Done
Busy
Active
CommandAborted
Error
ErrorID 16#0000
Position
Command position
Actual position
Time
Velocity Holding status
Command velocity
Actual velocity
Time
MC_ResetFollowingError
Execution during Execution of Other Instructions
You can switch to this instruction or buffer this instruction if you execute it during execution of another
instruction.
You can buffer one instruction per axis.
Specify the operation of this instruction by using BufferMode (Buffer Mode Selection) for multi-execu-
tion of instructions.
Function
User’s Manual (Cat. No. W507).
Errors
If an error occurs during instruction execution, an immediate stop is performed and CommandAborted
changes to TRUE. Also, if an error occurs when this instruction is executed, Error will change to
TRUE.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Timing charts for when the MC_MoveAbsolute (Absolute Positioning) instruction is executed and an
error occurs when the MC_ResetFollowing Error is executed during holding status are given below.
MC_MoveAbsolute instruction
Execute
Done
Busy
Active
CommandAborted
Error
ErrorID 16#0000
MC_ResetFollowingError Instruction
Execute
Done
Busy
Active
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_CamIn
The MC_CamIn instruction starts a cam operation by using a specified cam table.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_CamIn Start Cam FB MC_CamIn_instance MC_CamIn_instance (
Operation MC_CamIn Master :=parameter,
MC_CamIn
Master Master Slave :=parameter,
Slave Slave CamTable :=parameter,
CamTable CamTable Execute :=parameter,
Execute InCam
Periodic :=parameter,
Periodic InSync
StartMode :=parameter,
StartMode EndOfProfile
StartPosition :=parameter, 3
StartPosition Index
MasterStartDistance Busy MasterStartDistance :=parameter,
MasterScaling Active MasterScaling :=parameter,
Variables
SlaveScaling CommandAborted SlaveScaling :=parameter,
MasterOffset Error MasterOffset :=parameter,
SlaveOffset ErrorID
SlaveOffset :=parameter,
ReferenceType
ReferenceType :=parameter,
Direction
CamTransition
Direction :=parameter,
BufferMode CamTransition :=parameter,
BufferMode :=parameter,
InCam =>parameter,
InSync =>parameter,
EndOfProfile =>parameter,
Index =>parameter,
Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALS The instruction is executed when
E the value of this variable changes
to TRUE.
Periodic Periodic BOOL TRUE or FALSE FALS Specify whether to execute the
Mode E specified cam table periodically or
only once.
TRUE: Periodic
FALSE: Non-periodic
De-
Name Meaning Data type Valid range Description
fault
StartMode Start Mode _eMC_START_MO 0: _mcAbsolutePosi- 0*1 Specify the coordinates used by
DE tion MasterStartDistance.
1: _mcRelativePosi- 0: Absolute position
tion 1: Relative position
StartPosition Cam Table LREAL Negative number, 0 Specify the starting point of the
Start Posi- positive number, or 0 cam table (0 phase) as an absolute
tion position of the master axis.
The unit is command units. *2
MasterStart Master Fol- LREAL Negative number, 0 Specify the position of the master
Distance lowing Dis- positive number, or 0 axis when the slave axis starts the
tance cam motion.
When 0: _mcAbsolutePosition is
specified with StartMode, specify
the absolute position of the master
axis. When 1:
_mcRelativePosition is specified,
specify a relative distance from the
StartPosition (Cam Table Start Po-
sition).
The unit is command units. *2
MasterScaling Master Co- LREAL Positive value (> 0.0) 1.0 The phase of the master axis is ex-
efficient tended or contracted by using the
specified scale.
SlaveScaling Slave Axis LREAL Positive value (> 0.0) 1.0 The displacement of the slave axis
Coefficient is extended or contracted by using
the specified scale.
MasterOffset Master Off- LREAL Negative number, 0 The phase of the master axis is
set positive number, or 0 shifted by using the specified offset
value.
SlaveOffset Slave Off- LREAL Negative number, 0 The displacement of the slave axis
set positive number, or 0 is shifted by using the specified off-
set value.
ReferecneType Position _eMC_REFER- 0: _mcCommand 0 *1 Specify the position type of the
Type Selec- ENCE_TYPE 1: _mcFeedback master axis.
tion 2: _mcLatestCom- 0: Command position (value calcu-
mand lated in the previous task period*3)
1: Actual position (value obtained
in the same task period*3)
2: Command position (value calcu-
lated in the same task period*3)
Direction Direction _eMC_DIRECTION 0: _mcPositiveDirec- 4*1 The slave axis cam moves when
tion the master axis moves in the
2: _mcNegativeDirec- specified direction only. If the mas-
tion ter axis is moving opposite to the
4: _mcNoDirection direction specified, the slave axis
cam is stopped.
0: Positive direction
2: Negative direction
4: No direction specified
De-
Name Meaning Data type Valid range Description
fault
CamTransition Cam Tran- _eMC_CAM_TRAN 0: _mcCTNone 0*1 (Reserved)
(Reserved) sition Se- SITION
lection
BufferMode Buffer _eMC_BUF- 0: _mcAborting 0*1 Specify the behavior when execut-
Mode Se- FER_MODE 1: _mcBuffered ing more than one motion instruc-
lection 2: _mcBlendingLow*4 tion.
3: _mcBlendingPrevi- 0: Aborting
1: Buffered
ous*4
MC_CamIn
2: Blending low
4: _mcBlending-
3: Blending previous
Next*4
4: Blending next
5: _mcBlending-
5: Blending high
High*4
*1. The default value for an enumeration variable is actually not the number, but the enumerator. 3
*2. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
Variables
*3. The task period is the primary period if the task is the primary periodic task and the task period of the priority-5 periodic
task if the task is the priority-5 periodic task.
*4. A CPU Unit with unit version 1.06 or later and Sysmac Studio version 1.07 or higher are required for these settings.
The operation is the same regardless of which of the four types of blending is specified.
Output Variables
Valid
Name Meaning Data type Unit Description
range
InCam Cam Motion BOOL TRUE or --- TRUE when the cam table start point is executed.
FALSE
InSync In Sync BOOL TRUE or --- TRUE when the cam is in operation.
FALSE
EndOfProfile End of Cam BOOL TRUE or --- TRUE when the cam table end point is executed.
Cycle FALSE
Index Index UINT Nonnega- --- Contains the cam data index number. *1
tive value
Busy Executing BOOL TRUE or --- TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or --- TRUE when the axis is being controlled.
FALSE
CommandA- Command BOOL TRUE or --- TRUE when the instruction is aborted.
borted Aborted FALSE
Error Error BOOL TRUE or --- TRUE while there is an error.
FALSE
ErrorID Error Code WORD *2 --- Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The value is 0 while InCam (Cam Motion) is FALSE.
*2. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Master Master Axis _sAXIS_REF --- Specify the master axis. *1
Slave Slave Axis _sAXIS_REF --- Specify the slave axis. *1
CamTable Cam Table ARRAY[0..N] OF --- Specify the cam data structure _sMC_CAM_REF array
_sMC_CAM_REF variable as the cam table. *2
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
*2. "N" in the array variable is set automatically by the Sysmac Studio. Specify a cam data variable that was created on
Cam Editor of the Sysmac Studio.
If you specify the same axis for the master axis and slave axis, a Master and Slave Defined as
Same Axis minor fault (error code 5436 hex) will occur.
Function
• The MC_CamIn instruction executes a cam motion that synchronizes the master axis phase and
slave axis displacement according to a cam table.
MC_CamIn
• You must create the cam table specified for this instruction by using the Cam Editor and download it
to the Controller in advance.
• This instruction is executed when Execute changes to TRUE.
Function
Additional Information
Use the Synchronize Menu of the Sysmac Studio to download the project.
For details on cam tables, refer to the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No.
W507).
Specify the phases and displacements in the cam table as relative quantities from a start point of 0.0.
Cam Table
Phase Displacement
Start
point 0 0 Index = 0
Cam data 60 200 1
120 100 2
180 300 3
240 100 4
300 200 5
End point 360 0 6
The command positions for the master and slave axes are linear interpolations between two cam data
where the slave axis displacement corresponding to the master axis phase is calculated.
If there are only a few cam data, the intervals between phases are large and cam operation will not be
very precise. If there are many cam data, the intervals between phases are small and cam operation
will be very precise.
Displace-
200
ment 150
100
50
0
0 60 120 180 240 300 360
Phase
• Do not execute the MC_SetPosition instruction for the Master (Master Axis) if you use this
instruction on a CPU Unit with unit version 1.09 or earlier. If the MC_SetPosition instruction is
executed for the Master (Master Axis), the Slave (Slave Axis) may follow the master axis
quickly.
If you want to use the MC_SetPosition instruction for the Master (Master Axis), disable the
relationship between the Master (Master Axis) and Slave (Slave Axis) before executing the
instruction.
Refer to 1-1-3 Precautions for Master and Auxiliary Axes in Synchronized Control on page
1 - 6 for precautions on the master axis.
• When executed, this instruction checks if the phases are in ascending order. If they are not in
ascending order, an error occurs.
When you change cam data, execute the MC_SetCamTableProperty (Set Cam Table Proper-
ties) instruction to make sure that the phases are in ascending order.
Make sure that the phases will be in ascending order before you change the phases during a
cam motion. The cam motion may stop if the phases are not in ascending order.
• Cam data variables are global variables. You can therefore access or change the values of
cam data variables from more than one task. If you change the values of cam data variables
from more than one task, program the changes so that there is no competition in writing the
value from more than one task.
• If you use exclusive control of global variables between tasks for a cam data variable, do not
use the cam data variable for motion control instructions while exclusive control is in effect for
the cam data variable. An Incorrect Cam Table Specification error (error code: 5439 hex) will
occur.
Instruction Details
This section describes the instruction in detail.
Software Limits
If the slave axis exceeds the software limit during cam operation, an error occurs.
TYPE
(*Cam data structure*)
_sMC_CAM_REF :
STRUCT
Phase : REAL; (*Phase*)
Distance : REAL; (*Displacement*)
MC_CamIn
END_STRUCT;
END_TYPE
Function
VAR
(*Cam table*)
MyCam1: ARRAY [0..999] OF _sMC_CAM_REF;
END_VAR
The following notation is used to specify MyCam1 for this instruction. In this example, the master axis
is Axis1 and the slave axis is Axis2.
MC_CamIn_instance
MC_CamIn
Axis1 Master Master Axis1
Axis2 Slave Slave Axis2
MyCam1 CamTable CamTable MyCam1
An error will occur if the specified cam table does not exist in the Controller. You can also specify the
same cam table for more than one axis.
The values in cam data variables can be written from the user program. However, any changes to the
values are lost when the power supply to the Controller is turned OFF or the cam data variables are
downloaded from the Sysmac Studio.
The values that are downloaded from the Sysmac Studio are always used when the power supply to
the Controller is turned ON or after the cam data variables are downloaded. To save any changes, ex-
ecute the MC_SaveCamTable instruction.
Changes to the cam data variables are retained when the operating mode of the CPU Unit is changed.
Additional Information
When the MasterStartDistance (Master Following Distance) is then passed, the cam operation of the
slave axis starts and the InSync output variable changes to TRUE.
The MasterStartDistance (Master Following Distance) is specified either as an absolute position, or as
a relative distance from the StartPosition (Cam Table Start Position). Set whether to specify using an
absolute position or relative position with StartMode.
The conditions for starting cam operation are given in the following table.
For condition 1, the InCam (Cam Motion) and InSync output variables both change to TRUE and the
slave axis starts cam operation when the master axis passes 0°.
For condition 2, the InCam (Cam Motion) changes to TRUE when the master axis passes 0°. Then,
the InSync output variable changes to TRUE and the slave axis starts cam operation when the master
axis passes 80° *1. For condition 2, cam operation starts in the middle of the cam table, so the slave
axis will accelerate rapidly.
*1. Because StartMode is set to _mcRelativePosition, the cam operation starts at StartPosition +
MasterStartDistance, or 80°.
MC_CamIn
Master axis
command position
360°
Function
80°
Time
0°
Slave axis
command position
Operation for Condition 1
Time
0
InCam
InSync
Slave axis
command position
Operation for Condition 2
Time
0
InCam
InSync
Additional Information
For condition 2, the slave axis will accelerate rapidly if SlaveOffset is set to 0.
Slave axis
command Operation for Condition 2
position
Time
0
InCam
InSync
If SlaveOffset is set to -80, the slave axis starts synchronization from a displacement of
MasterStartDistance (Master Following Distance) and rapid acceleration is prevented.
Slave axis
command Operation for Condition 2
position
Time
0
InCam
InSync
For condition 1, the InCam (Cam Motion) and InSync output variables both change to TRUE and the
slave axis starts cam operation when the master axis passes 0°.
For condition 2, the InCam (Cam Motion) and InSync output variables both change to TRUE and the
slave axis starts cam operation when the master axis passes 40° (the value that is specified for
StartPosition (Cam Table Start Position)).
For condition 3, the InCam (Cam Motion) changes to TRUE when the master axis passes 40°. Then,
the InSync output variable changes to TRUE and the slave axis starts cam operation when the master
axis passes 120° *1.
*1. Because StartMode is set to _mcRelativePosition, the cam operation starts at StartPosition +
MasterStartDistance, or 120°.
Master axis
command position
360°
MC_CamIn
120°
40°
3
Time
0°
Function
Slave axis
command position Operation for Condition 1
Time
0
InCam
InSync
Slave axis
command position
Operation for Condition 2
Time
0
InCam
InSync
Slave axis
command position Operation for Condition 3
Time
0
InCam
InSync
Example 3: Differences in Starting Cam Operation of the Slave Axis for Differences in
StartMode
You can use StartMode to specify whether the value that is specified for MasterStartDistance (Master
Following Distance) is treated as an absolute value or a relative value.
This example describes the differences in starting cam operation of the slave axis for differences in
StartMode. The cam table settings are the same as in the previous example.
The conditions for starting cam operation are given in the following table.
For both conditions 1 and 2, the InCam (Cam Motion) output variable changes to TRUE when the
master axis passes 40°. For condition 1, StartMode is set to _mcAbsolutePosition (absolute position),
so the InSync output variable changes to TRUE and the slave axis starts cam operation when the
master axis passes 80°.
For condition 2, StartMode is set to _mcRelativePosition (relative position), so the InSync output varia-
ble changes to TRUE and the slave axis starts cam operation when the master axis passes 120°(= 40°
+ 80°).
Master axis
command position
360°
120°
80°
40° Time
0°
MC_CamIn
Slave axis
command position Operation for Condition 1
Time
Function
0
InCam
InSync
Slave axis
command position
Operation for Condition 2
Time
0
InCam
InSync
To perform a cam motion, use the Cam Editor in the Sysmac Studio to create a cam profile and
then download the cam profile to the CPU Unit.
Use the Synchronize Menu of the Sysmac Studio to download the project.
Displace-
ment
Starting
position
Displace-
ment
Starting
position
Scaling Factor
You can specify a scaling factor to scale up or scale down the master axis phase and slave axis dis-
placement of a specified cam table.
You can apply separate factors to the master and slave axes.
Slave scaling
2.0
1.0
1.0 2.0
Master scaling
MC_CamIn
Offset
You can shift the phase and displacement by an offset from the specified cam table.
You can specify separate offsets for the master axis phase and slave axis displacement. 3
MasterOffset > 0
Function
Displacement
One period
MasterOffset = 100
MasterOffset < 0
Displacement
MasterOffset = -100
SlaveOffset > 0
Displacement
SlaveOffset = 50
SlaveOffset < 0
Displacement
Phase
SlaveOffset = −50
Here, the task period is the primary period if the task is the primary periodic task and the task
period of the priority-5 periodic task if the task is the priority-5 periodic task. In the same way,
the periodic task is the primary periodic task or the priority-5 periodic task.
Additional Information
The command position that is calculated in the same task period enables greater precision in
synchronization than the command position that was calculated in the previous task period.
However, the axis number set for the Master (Master Axis) in the system-defined variable for
MC_CamIn
motion control must be lower than the axis number set for the Slave (Slave Axis) in the system-
defined variable for motion control.
Function
ReferenceType
Axis Type
_mcCommand or _mcLatestCommand _mcFeedback
Servo axis OK OK
Encoder axis No *1 OK
Virtual servo axis OK OK
Virtual encoder No *1 OK
axis
*1. A Position Type Selection Out of Range error (error code: 5430 hex) occurs when the instruction is execut-
ed.
Direction
You can start cam operation for the slave axis only if the travel direction of the master axis matches
the setting in Direction.
Direction is valid only while InSync is TRUE.
Slave
position
Time
Master
position
Time
_mcPositiveDirection
Cam operation starts when the master axis is moving in the positive direction.
Slave
position
Time
Master
position
Time
_mcNegativeDirection
Cam operation starts when the master axis is moving in the negative direction.
Slave
position
Time
Master
position
Time
Version Information
If MasterStartDistance (Master Following Distance) is exceeded while the master axis is moving
in the opposite direction from Direction (Direction) and InSync (In Sync) changes to TRUE, the
operation depends on the unit version of the CPU Unit as follows:
• CPU Units with Unit Version 1.10 or Later
When InSync (In Sync) changes to TRUE, the slave axis moves to the displacement accord-
ing to the phase in the cam table. If the master axis then moves in the direction specified in
Direction (Direction), the slave axis starts cam operation.
• CPU Units with Unit Version 1.09 or Earlier
MC_CamIn
If the master axis moves in the direction specified in Direction (Direction) after InSync (In
Sync) changes to TRUE, the slave axis starts cam operation.
An example is given below. The cam table settings are the same as in the previous example.
The conditions for starting cam operation are given in the following table.
3
Input variable Condition
StartMode (Start Mode) _mcAbsolutePosition (Absolute Position)
Function
Direction (Direction) _mcPositiveDirection (Positive Direction)
StartPosition (Cam Table Start Position) 0
MasterStartDistance (Master Following Distance) 80
Master axis
command position
360°
80°
Time
0°
Slave axis
command position
Ver. 1.10 or Later
Time
0
InCam
InSync
Slave axis
command position
Ver. 1.09 or Earlier
Time
0
InCam
InSync
For details on BufferMode (Buffer Mode Selection), refer to the NJ/NX-series CPU Unit Motion Control
User’s Manual (Cat. No. W507).
StartPosition
MC_CamIn1
Active
MC_CamIn
InCam
InSync
EndOfProfile 3
MC_CamIn2
Function
Execute
Busy
Active
InCam
InSync
EndOfProfile
StartPosition
MC_CamIn1
Active
InCam
InSync
EndOfProfile
MC_CamIn2
Execute
Busy
Active
InCam
InSync
EndOfProfile
Index
Of the two cam data used to find the command positions of the master and slave axes, the one with
the smaller cam data index number is output to the Index output variable.
Use this value for fine-tuning the cam data with the Cam Editor or with the user program.
In-position Check
An in-position check is not performed for this instruction.
Override Factors
You cannot set override factors with the MC_SetOverride (Set Override Factors) instruction for this in-
struction.
Timing Charts
Non-periodic Operation
The following timing chart shows the operation when Periodic (Periodic Mode) is FALSE (non-periodic)
for the MC_CamIn (Start Cam Operation) instruction.
MasterStartDistance
StartPosition
MC_CamIn
Execute
InCam
3
InSync
EndOfProfile
Function
Busy
Active
Periodic Operation
The cam motion is repeatedly executed.
The slave axis decelerates to 0 when the cam operation is ended with the MC_CamOut (End Cam
Operation) instruction.
The operation of the master axis is not affected.
The following timing chart shows the operation when Periodic (Periodic Mode) is TRUE (periodic) for
the MC_CamIn (Start Cam Operation) instruction and then the MC_CamOut (End Cam Operation) in-
struction is executed.
MasterStartDistance
StartPosition
MC_CamIn
Execute
InCam
InSync
EndOfProfile
Busy
Active
MC_CamOut
Execute
Done
Busy
MC_Stop Instruction
If the MC_Stop instruction is executed for the master axis during cam operation, the sync between the
master axis and slave axis is maintained.
If the MC_Stop instruction is executed for the slave axis during cam operation, the sync between the
master axis and slave axis ends.
The following timing chart displays the operation when Periodic (Periodic Mode) is TRUE (periodic) for
the MC_CamIn (Start Cam Operation) instruction and then the MC_Stop instruction is executed for the
slave axis.
MasterStartDistance
StartPosition
Deceleration stopping
MC_CamIn
Execute
MC_CamIn
InCam
InSync
EndOfProfile 3
Busy
Function
Active
MC_Stop
Execute
Done
Busy
Active
MasterStartDistance
StartPosition
Execute
InCam
InSync
Busy
Active
CommandAborted
If a cam table is switched by re-executing the instruction during a cam motion, the velocity or
acceleration of the slave axis may change rapidly before or after the re-execution.
Be careful when re-executing the instruction because the mechanical composition may be af-
fected.
For details on re-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
Re-execution Procedure
For the procedure to re-execute this instruction, refer to Sample Programming 1 on page 3 - 198 and
Sample Programming 2 on page 3 - 209.
MC_CamIn
• When another instruction is executed with the Buffer Mode set to Buffered, the command position
of the next operation is output when EndOfProfile (End of Cam Cycle) changes to TRUE.
Function
• Specify the same values for Master (Master Axis) and ReferenceType (Position Type Selection) as
those specified in the instruction that is currently in operation. If you specify different values, a Mo-
tion Control Instruction Multi-execution Disabled error will occur.
• The InSync output variable from the buffered instruction changes to TRUE in the period in which the
current instruction is completed normally, and cam operation starts without the slave axis ever stop-
ping.
• Even if StartPosition (Cam Table Start Position) and MasterStartDistance (Master Following Dis-
tance) are specified, the slave axis starts cam operation as soon as instruction execution starts re-
gardless of the values that are specified. The starting point in the cam table is the final position for
the current instruction. The operation is the same regardless of which of the four types of blending is
specified.
Compensations Instruction
Master axis compensations MC_Phasing (Shift Master Axis Phase)
Slave axis compensations MC_SyncOffsetPosition (Cyclic Synchronous Position Offset Compensation)
MC_OffsetPosition (Position Offset Compensation)
If multi-execution of instructions causes any synchronized control instruction other than the MC_Ca-
mIn (Start Cam Operation) instruction to be aborted (i.e., if the CommandAborted output variable
changes to TRUE), any instructions that shift the phase are also aborted as CommandAborted
changes to TRUE.
If blending is used for multi-execution of two MC_CamIn (Start Cam Operation) instructions, the in-
structions that shift the phase are not aborted as CommandAborted does not change to TRUE, and
processing is continued.
Errors
If an error occurs during instruction execution, Error will change to TRUE.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
InCam
InSync
Busy
Active
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
Sample Programming 1
This sample programming shows cam operation when periodic operation is specified.
In this example, the master axis is axis 1 and the slave axis is axis 2.
Additional Information
You can specify only the initial values for input variables that are reserved.
In this sample, variables with initial values are defined for the instructions, but you do not need
to assign variables and parameters when you program them.
Parameter Settings
The minimum settings required for this sample programming are given below.
Count Modes
MC_CamIn
Axis 1 Rotary Mode
Axis 2 Linear Mode
Ring Counter
Modulo Modulo 3
Axis maximum minimum
position position
Sample Programming 1
Axis 1 360 0
Units of Display
Operation Example
Operation Pattern
Master axis command position
360°
60°
Time
Slave axis command position MC_CamOut executed.
1000
0 Time
If the cam table start point position (zero phase position) is 20°, the slave axis starts operation
when the master axis reaches a position where the relative angle from that point is 40°. Cam
operation operates in a periodic motion.
If Periodic is TRUE, periodic operation is performed.
Ladder Diagram
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for the master axis, axis 1.
MC_Axis000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level
error for axis 1.
MC_Axis000.Details.Homed BOOL FALSE TRUE when home is defined for axis 1.
MC_Axis001 _sAXIS_REF --- Axis Variable for the slave axis, axis 2.
MC_Axis001.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level
error for axis 2.
MC_Axis001.Details.Homed BOOL FALSE TRUE when home is defined for axis 2.
Pwr1_S BOOL FALSE This variable is assigned to the Status
output variable from the PWR1 instance
of the MC_Power instruction. This varia-
ble changes to TRUE when the Servo is
turned ON.
Pwr2_S BOOL FALSE This variable is assigned to the Status
output variable from the PWR2 instance
of the MC_Power instruction. This varia-
ble changes to TRUE when the Servo is
turned ON.
CamProfile0 ARRAY[0..360] OF --- This is the cam data variable.
_sMC_CAM_REF The array elements ARRAY[0..N] are set
with the Cam Editor. In this sample, 0 to
360 are used, but the number of array el-
ements depends on the settings that you
make with the Cam Editor.
DecRate2 LREAL 10000.0 This variable sets the deceleration rate
for execution of MC_CamOut.
Vel_InVel BOOL FALSE This variable is assigned to the InVelocity
output variable from the VEL instance of
the MC_MoveVelocity instruction. It is
TRUE when the target velocity is
reached.
Camin_InCam0 BOOL FALSE This variable is assigned to the InCam
output variable from the CAMIN instance
of the MC_CamIn instruction. It is TRUE
during cam operation.
Timing Chart
Master axis
MC_CamIn
MC_Axis000.Cmd.Pos
Slave axis
3
MC_Axis001.Cmd.Pos
Sample Programming 1
MC_MoveVelocity Instruction
Vel_InVel
MC_CamIn Instruction
Camin_InCam0
Camin_InSync
Camin_EOP
Camin_Index
Camin_Bsy
Camin_Act
Camin_Ca
MC_CamOut Instruction
Camout_Ex
Camout_D
Camout_Bsy
Sample Programming
If StartPg is TRUE, check that the Servo Drive for axis 1 is ready.
StartPg MC_Axis000.DrvStatus.Ready Lock1
If StartPg is TRUE, check that the Servo Drive for axis 2 is ready.
StartPg MC_Axis001.DrvStatus.Ready Lock2
If the Servo Drive for axis 1 is ready, the Servo is turned ON.
PWR1
MC_Power
Lock1 MC_Axis000 Axis Axis Pwr1_S
Enable Status
Busy Pwr1_Bsy
Error Pwr1_Err
ErrorID Pwr1_ErrID
If the Servo Drive for axis 2 is ready, the Servo is turned ON.
PWR2
MC_Power
Lock2 MC_Axis001 Axis Axis Pwr2_S
Enable Status
Busy Pwr2_Bsy
Error Pwr2_Err
ErrorID Pwr2_ErrID
If a minor fault level error occurs for the axis composition, the error handler for the device (FaultHandler) is
executed.
Program the FaultHandler according to the device.
MC_Axis000.MFaultLvl.Active FaultHandler
EN FaultHandler
MC_Axis001.MFaultLvl.Active
If the Servo is ON for axis 1 and home is not defined, the Home instruction is executed to define home.
HM1
MC_Home
Pwr1_S MC_Axis000.Details.Homed MC_Axis000 Axis Axis Hm1_D
Execute Done
Busy Hm1_Bsy
CommandAborted Hm1_Ca
Error Hm1_Err
ErrorID Hm1_ErrID
If the Servo is ON for axis 2 and home is not defined, the Home instruction is executed to define home.
HM2
MC_Home
Pwr2_S MC_Axis001.Details.Homed MC_Axis001 Axis Axis Hm2_D
Execute Done
Busy Hm2_Bsy
CommandAborted Hm2_Ca
Error Hm2_Err
ErrorID Hm2_ErrID
The MC_MoveVelocity (Velocity Control) instruction is executed after homing is completed for axis 1.
VEL
MC_MoveVelocity
Hm1_D MC_Axis000 Axis Axis Vel_InVel
Execute InVelocity
LREAL#1000.0 Velocity Busy Vel_Bsy
LREAL#100000.0 Acceleration Active Vel_Act
LREAL#100000.0 Deceleration CommandAborted Vel_Ca
Jerk Error Vel_Err
_eMC_DIRECTION#_mcPositiveDirection Direction ErrorID Vel_EIrrD
Continuous
MC_CamIn
BufferMode
The MC_CamIn (Start Cam Operation) instruction is executed if Vel_InVel is TRUE for the MC_MoveVelocity
(Velocity Control) instruction.
CAMIN 3
MC_CamIn
MC_Axis000 Master Master
Sample Programming 1
MC_Axis001 Slave Slave
Vel_InVel CamProfile0 CamTable CamTable Camin_InCam0
Execute InCam
BOOL#TRUE Periodic InSync Camin_InSync
_eMC_START_MODE#_mcRelativePosition StartMode EndOfProfile Camin_EOP
LREAL#20.0 StartPosition Index Camin_Index
LREAL#40.0 MasterStartDistance Busy Camin_Bsy
LREAL#1.0 MasterScaling Active Camin_Act
LREAL#1.0 SlaveScaling CommandAborted Camin_Ca
LREAL#0.0 MasterOffset Error Camin_Err
LREAL#0.0 SlaveOffset ErrorID Camin_ErrID
_eMC_REFERENCE_TYPE#_mcCommand ReferenceType
_eMC_DIRECTION#_mcNoDirection Direction
CamTransition
BufferMode
The MC_CamOut (End Cam Operation) instruction is executed when Camout_Ex changes to TRUE.
The deceleration rate is specified by DecRate2.
CAMOUT
MC_CamOut
Camout_Ex MC_Axis001 Slave Slave Camout_D
Execute Done
DecRate2 Deceleration Busy Camout_Bsy
Jerk CommandAborted Camout_Ca
OutMode Error Camout_Err
ErrorID Camout_ErrID
Contents of Inline ST
IF MC_Axis001.Act.Pos>LREAL#1000.0 THEN
Camout_Ex := TRUE;
END_IF;
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for the master axis, axis 1.
MC_Axis000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level
error for axis 1.
MC_Axis000.Details.Homed BOOL FALSE TRUE when home is defined for axis 1.
MC_Axis001 _sAXIS_REF --- Axis Variable for the slave axis, axis 2.
MC_Axis001.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level
error for axis 2.
MC_Axis001.Details.Homed BOOL FALSE TRUE when home is defined for axis 2.
Pwr1_S BOOL FALSE This variable is assigned to the Status
output variable from the PWR1 instance
of the MC_Power instruction. This varia-
ble changes to TRUE when the Servo is
turned ON.
Pwr2_S BOOL FALSE This variable is assigned to the Status
output variable from the PWR2 instance
of the MC_Power instruction. This varia-
ble changes to TRUE when the Servo is
turned ON.
CamProfile0 ARRAY[0..360] OF --- This is the cam data variable.
_sMC_CAM_REF The array elements ARRAY[0..N] are set
with the Cam Editor. In this sample, 0 to
360 are used, but the number of array
elements depends on the settings that
you make with the Cam Editor.
DecRate2 LREAL 10000.0 This variable sets the deceleration rate
for execution of MC_CamOut.
Vel_InVel BOOL FALSE This variable is assigned to the
InVelocity output variable from the VEL
instance of the MC_MoveVelocity in-
struction. It is TRUE when the target ve-
locity is reached.
Camin_InCam0 BOOL FALSE This variable is assigned to the InCam
output variable from the CAMIN instance
of the MC_CamIn instruction. It is TRUE
during cam operation.
Camout_Ex BOOL FALSE The CAMOUT instance of MC_CamOut
is executed while this variable is TRUE.
StartPg BOOL FALSE The Servo is turned ON if this variable is
TRUE and EtherCAT process data com-
munications are established.
MC_CamIn
changes to TRUE.
Timing Chart
Master axis
3
MC_Axis000.Cmd.Pos
Sample Programming 1
Slave axis
MC_Axis001.Cmd.Pos
MC_MoveVelocity Instruction
Vel_InVel
MC_CamIn Instruction
Camin_Ex
Camin_InCam0
Camin_InSync
Camin_EOP
Camin_Index
Camin_Bsy
Camin_Act
Camin_Ca
MC_CamOut Instruction
Camout_Ex
Camout_D
Camout_Bsy
Sample Programming
// Processing when input parameters are not set
IF InitFlag=FALSE THEN
// MC_CamIn parameters
// MC_MoveVelocity parameters
Vel_Vel := LREAL#1000.0;
Vel_Acc := LREAL#100000.0;
Vel_Dec := LREAL#100000.0;
Vel_Dir :=_eMC_DIRECTION#_mcPositiveDirection;
// MC_CamOut parameters
Camout_Dec := DecRate2;
END_IF;
// If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 1 is turned
ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis000.DrvStatus.Ready=TRUE) THEN
Pwr1_En:=TRUE;
ELSE
Pwr1_En:=FALSE;
END_IF;
// If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 2 is turned
ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis001.DrvStatus.Ready=TRUE) THEN
Pwr2_En:=TRUE;
ELSE
Pwr2_En:=FALSE;
END_IF;
// If a minor fault level error occurs for axis 1 or axis 2, the error handler for
the device is executed.
// If the Servo is ON for axis 1 and home is not defined, the Home instruction is e
xecuted for axis 1.
IF (Pwr1_S=TRUE)
MC_CamIn
AND (MC_Axis000.Details.Homed=FALSE) THEN
Hm1_Ex:=TRUE;
END_IF;
// If the Servo is ON for axis 2 and home is not defined, the Home instruction is e 3
xecuted for axis 2.
IF (Pwr2_S=TRUE)
Sample Programming 1
AND (MC_Axis001.Details.Homed=FALSE) THEN
Hm2_Ex:=TRUE;
END_IF;
// MC_MoveVelocity
VEL(
Axis := MC_Axis000,
Execute := Vel_Ex,
Velocity := Vel_Vel,
Acceleration := Vel_Acc,
Deceleration := Vel_Dec,
Direction := Vel_Dir,
InVelocity => Vel_InVel,
Busy => Vel_Bsy,
Active => Vel_Act,
CommandAborted => Vel_Ca,
Error => Vel_Err,
ErrorID => Vel_ErrID
);
// MC_CamIn
CAMIN(
Master := MC_Axis000,
Slave := MC_Axis001,
CamTable := CamProfile0,
Execute := Camin_Ex,
Periodic := Camin_EM,
StartMode := Camin_StMode,
MC_CamIn
StartPosition := Camin_StPos,
MasterStartDistance := Camin_MStDis,
MasterScaling := Camin_MSc,
SlaveScaling := Camin_SSc,
MasterOffset := Camin_MO, 3
SlaveOffset := Camin_SO,
ReferenceType := Camin_RT,
Sample Programming 2
Direction := Camin_Dir,
CamTransition := Camin_CT,
BufferMode := Camin_BM,
InCam => Camin_InCam0,
InSync => Camin_InSync,
EndOfProfile => Camin_EOP,
Index => Camin_Index,
Busy => Camin_Bsy,
Active => Camin_Act,
CommandAborted => Camin_Ca,
Error => Camin_Err,
ErrorID => Camin_ErrID
);
// MC_CamOut
CAMOUT(
Slave := MC_Axis001,
Execute := Camout_Ex,
Deceleration := Camout_Dec,
Done => Camout_D,
Busy => Camout_Bsy,
CommandAborted => Camout_Ca,
Error => Camout_Err,
ErrorID => Camout_ErrID
);
Sample Programming 2
This sample programming shows cam operation for a liquid filler.
Additional Information
You can specify only the initial values for input variables that are reserved.
Parameters are not specified in this sample.
Parameter Settings
The minimum settings required for this sample programming are given below.
Count Modes
Ring Counters
Modulo Modulo
Axis maximum minimum
position position
Axis 1 360 0
Axis 2 360 0
Axis 3 360 0
Axis 4 360 0
Axis 5 360 0
Units of Display
Operation Example
MC_CamIn
Axis 2 Axis 3 Axis 4 Axis 5
Sample Programming 2
Synchronized master axis Axis 1
Operation Pattern
Axis 1
Axis 2
MasterOffset = 30
Axis 3
MasterOffset = 80
Axis 4
MasterOffset = 130
Axis 5
MasterOffset = 180
2 Periodic Operation
Ladder Diagram
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for the master axis, axis 1.
MC_Axis001 _sAXIS_REF --- Axis Variable for the slave axis, axis 2.
MC_Axis002 _sAXIS_REF --- Axis Variable for the slave axis, axis 3.
MC_Axis003 _sAXIS_REF --- Axis Variable for the slave axis, axis 4.
MC_Axis004 _sAXIS_REF --- Axis Variable for the slave axis, axis 5.
StartPg BOOL FALSE The Servo is turned ON if this variable is TRUE and
EtherCAT process data communications are establish-
ed.
Vel_InVel BOOL FALSE This variable is assigned to the InVelocity output varia-
ble from the VEL instance of the MC_MoveVelocity in-
struction. It is TRUE when the target velocity is
reached.
CamProfile0 ARRAY[0..360] OF --- This is the cam data variable.
_sMC_CAM_REF This variable is assigned to the CamTable input varia-
bles from the CAMIN1 to CAMIN4 instances of the
MC_CamIn instruction.
The array elements ARRAY[0..N] are set with the Cam
Editor.
Timing Chart
Axis 1
MC_Axis000.Cmd.Pos
Axis 2
MC_Axis001.Cmd.Pos
Axis 3
MC_CamIn
MC_Axis002.Cmd.Pos
Axis 4
MC_Axis003.Cmd.Pos
Axis 5
MC_Axis004.Cmd.Pos 3
MC_MoveVelocity Instruction
Sample Programming 2
Vel_InVel
MC_CamIn Instruction
InCam *1
InSync *2
Busy *3
Active *4
Camin1_Eop
Camin2_Eop
Camin3_Eop
Camin4_Eop
*1. The timing is the same for the following: Camin1_InCam, Camin2_InCam, Camin3_InCam, and Camin4_In-
Cam.
*2. The timing is the same for the following: Camin1_InSync, Camin2_InSync, Camin3_InSync, and Camin4_In-
Sync.
In this sample, MasterStartDistance is 0, so InSync changes to TRUE from when the master axis is 0°.
*3. The timing is the same for the following: Camin1_Bsy, Camin2_Bsy, Camin3_Bsy, and Camin4_Bsy.
*4. The timing is the same for the following: Camin1_Act, Camin2_Act, Camin3_Act, and Camin4_Act.
Sample Programming
If StartPg is TRUE, check that the Servo Drives for each axis are ready.
StartPg MC_Axis000.DrvStatus.Ready Lock1
If the Servo Drives are ready, the Servos are turned ON for each axis.
PWR1
MC_Power
Lock1 MC_Axis000 Axis Axis Pwr1_Status
Enable Status
Busy Pwr1_Bsy
Error Pwr1_Err
ErrorID Pwr1_ErrID
PWR2
MC_Power
Lock2 MC_Axis001 Axis Axis Pwr2_Status
Enable Status
Busy Pwr2_Bsy
Error Pwr2_Err
ErrorID Pwr2_ErrID
PWR3
MC_Power
Lock3 MC_Axis002 Axis Axis Pwr3_Status
Enable Status
Busy Pwr3_Bsy
Error Pwr3_Err
ErrorID Pwr3_ErrID
PWR4
MC_Power
Lock4 MC_Axis003 Axis Axis Pwr4_Status
Enable Status
Busy Pwr4_Bsy
Error Pwr4_Err
ErrorID Pwr4_ErrID
PWR5
MC_Power
Lock5 MC_Axis004 Axis Axis Pwr5_Status
Enable Status
Busy Pwr5_Bsy
Error Pwr5_Err
ErrorID Pwr5_ErrID
If a minor fault level error occurs for the axis composition, the error handler for the device (FaultHandler) is
executed.
MC_CamIn
Program the FaultHandler according to the device.
MC_Axis000.MFaultLvl.Active FaultHandler
EN FaultHandler
MC_Axis001.MFaultLvl.Active
MC_Axis002.MFaultLvl.Active
3
MC_Axis003.MFaultLvl.Active
Sample Programming 2
MC_Axis004.MFaultLvl.Active
If the Servo is ON for axis 1 to axis 5 and the Home instruction is executed for each axis if home is not
defined.
HM1
MC_Home
Pwr1_Status MC_Axis000.Details.Homed MC_Axis000 Axis Axis Hm1_D
Execute Done
Busy Hm1_Bsy
CommandAborted Hm1_Ca
Error Hm1_Err
ErrorID Hm1_ErrID
HM2
MC_Home
Pwr2_Status MC_Axis001.Details.Homed MC_Axis001 Axis Axis Hm2_D
Execute Done
Busy Hm2_Bsy
CommandAborted Hm2_Ca
Error Hm2_Err
ErrorID Hm2_ErrID
HM3
MC_Home
Pwr3_Status MC_Axis002.Details.Homed MC_Axis002 Axis Axis Hm3_D
Execute Done
Busy Hm3_Bsy
CommandAborted Hm3_Ca
Error Hm3_Err
ErrorID Hm3_ErrID
HM4
MC_Home
Pwr4_Status MC_Axis003.Details.Homed MC_Axis003 Axis Axis Hm4_D
Execute Done
Busy Hm4_Bsy
CommandAborted Hm4_Ca
Error Hm4_Err
ErrorID Hm4_ErrID
HM5
MC_Home
Pwr5_Status MC_Axis004.Details.Homed MC_Axis004 Axis Axis Hm5_D
Execute Done
Busy Hm5_Bsy
CommandAborted Hm5_Ca
Error Hm5_Err
ErrorID Hm5_ErrID
The MC_MoveVelocity (Velocity Control) instruction is executed after homing is completed for axis 1.
VEL
MC_MoveVelocity
Hm1_D MC_Axis000 Axis Axis Vel_InVel
Execute InVelocity
LREAL#1000.0 Velocity Busy Vel_Bsy
LREAL#0.0 Acceleration Active Vel_Act
LREAL#0.0 Deceleration CommandAborted Vel_Ca
Jerk Error Vel_Err
_eMC_DIRECTION#_mcPositiveDirection Direction ErrorID Vel_ErrID
Continuous
BufferMode
The MC_CamIn (Start Cam Operation) instruction is executed for axis 2 (slave axis) if Vel_InVel is TRUE for
the MC_MoveVelocity (Velocity Control) instruction and homing is completed for axis 2.
CAMIN1
MC_CamIn
MC_Axis000 Master Master
MC_Axis001 Slave Slave
Vel_InVel MC_Axis001.Details.Homed CamProfile0 CamTable CamTable Camin1_InCam
Execute InCam
BOOL#FALSE Periodic InSync Camin1_InSync
_eMC_START_MODE#_mcAbsolutePosition StartMode EndOfProfile Camin1_Eop
LREAL#0.0 StartPosition Index Camin1_Index
LREAL#0.0 MasterStartDistance Busy Camin1_Bsy
LREAL#1.0 MasterScaling Active Camin1_Act
LREAL#1.0 SlaveScaling CommandAborted Camin1_Ca
LREAL#30.0 MasterOffset Error Camin1_Err
LREAL#0.0 SlaveOffset ErrorID Camin1_ErrID
_eMC_REFERENCE_TYPE#_mcCommand ReferenceType
_eMC_DIRECTION#_mcNoDirection Direction
CamTransition
BufferMode
The MC_CamIn (Start Cam Operation) instruction is executed for axis 3 (slave axis) if Vel_InVel is TRUE for
the MC_MoveVelocity (Velocity Control) instruction and homing is completed for axis 3.
CAMIN2
MC_CamIn
MC_Axis000 Master Master
MC_Axis002 Slave Slave
Vel_InVel MC_Axis002.Details.Homed CamProfile0 CamTable CamTable Camin2_InCam
Execute InCam
BOOL#FALSE Periodic InSync Camin2_InSync
_eMC_START_MODE#_mcAbsolutePosition StartMode EndOfProfile Camin2_Eop
LREAL#0.0 StartPosition Index Camin2_Index
LREAL#0.0 MasterStartDistance Busy Camin2_Bsy
MC_CamIn
LREAL#1.0 MasterScaling Active Camin2_Act
LREAL#1.0 SlaveScaling CommandAborted Camin2_Ca
LREAL#80.0 MasterOffset Error Camin2_Err
LREAL#0.0 SlaveOffset ErrorID Camin2_ErrID
_eMC_REFERENCE_TYPE#_mcCommand ReferenceType
_eMC_DIRECTION#_mcNoDirection Direction 3
CamTransition
BufferMode
Sample Programming 2
The MC_CamIn (Start Cam Operation) instruction is executed for axis 4 (slave axis) if Vel_InVel is TRUE for
the MC_MoveVelocity (Velocity Control) instruction and homing is completed for axis 4.
CAMIN3
MC_CamIn
MC_Axis000 Master Master
MC_Axis003 Slave Slave
Vel_InVel MC_Axis003.Details.Homed CamProfile0 CamTable CamTable Camin3_InCam
Execute InCam
BOOL#FALSE Periodic InSync Camin3_InSync
_eMC_START_MODE#_mcAbsolutePosition StartMode EndOfProfile Camin3_Eop
LREAL#0.0 StartPosition Index Camin3_Index
LREAL#0.0 MasterStartDistance Busy Camin3_Bsy
LREAL#1.0 MasterScaling Active Camin3_Act
LREAL#1.0 SlaveScaling CommandAborted Camin3_Ca
LREAL#130.0 MasterOffset Error Camin3_Err
LREAL#0.0 SlaveOffset ErrorID Camin3_ErrID
_eMC_REFERENCE_TYPE#_mcCommand ReferenceType
_eMC_DIRECTION#_mcNoDirection Direction
CamTransition
BufferMode
The MC_CamIn (Start Cam Operation) instruction is executed for axis 5 (slave axis) if Vel_InVel is TRUE for
the MC_MoveVelocity (Velocity Control) instruction and homing is completed for axis 5.
CAMIN4
MC_CamIn
MC_Axis000 Master Master
MC_Axis004 Slave Slave
Vel_InVel MC_Axis004.Details.Homed CamProfile0 CamTable CamTable Camin4_InCam
Execute InCam
BOOL#FALSE Periodic InSync Camin4_InSync
_eMC_START_MODE#_mcAbsolutePosition StartMode EndOfProfile Camin4_Eop
LREAL#0.0 StartPosition Index Camin4_Index
LREAL#0.0 MasterStartDistance Busy Camin4_Bsy
LREAL#1.0 MasterScaling Active Camin4_Act
LREAL#1.0 SlaveScaling CommandAborted Camin4_Ca
LREAL#180.0 MasterOffset Error Camin4_Err
LREAL#0.0 SlaveOffset ErrorID Camin4_ErrID
_eMC_REFERENCE_TYPE#_mcCommand ReferenceType
_eMC_DIRECTION#_mcNoDirection Direction
CamTransition
BufferMode
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for the master axis, axis 1.
MC_Axis001 _sAXIS_REF --- Axis Variable for the slave axis, axis 2.
MC_Axis002 _sAXIS_REF --- Axis Variable for the slave axis, axis 3.
MC_Axis003 _sAXIS_REF --- Axis Variable for the slave axis, axis 4.
MC_Axis004 _sAXIS_REF --- Axis Variable for the slave axis, axis 5.
StartPg BOOL FALSE The Servo is turned ON if this variable is TRUE and
EtherCAT process data communications are establish-
ed.
Vel_InVel BOOL FALSE This variable is assigned to the InVelocity output varia-
ble from the VEL instance of the MC_MoveVelocity in-
struction. It is TRUE when the target velocity is
reached.
CamProfile0 ARRAY[0..360] OF --- This is the cam data variable. This variable is as-
_sMC_CAM_REF signed to the CamTable input variables from the CA-
MIN1 to CAMIN4 instances of the MC_CamIn instruc-
tion.
The array elements ARRAY[0..N] are set with the Cam
Editor.
Camin1_Ex BOOL FALSE The CAMIN1 to CAMIN4 instances of MC_CamIn are
Camin2_Ex BOOL FALSE executed when this variable changes to TRUE.
Camin3_Ex BOOL FALSE
Camin4_Ex BOOL FALSE
Timing Chart
Master axis
MC_CamIn
MC_Axis000.Cmd.Pos
Slave axis 1
MC_Axis001.Cmd.Pos
3
Slave axis 2
Sample Programming 2
MC_Axis002.Cmd.Pos
Slave axis 3
MC_Axis003.Cmd.Pos
Slave axis 4
MC_Axis004.Cmd.Pos
MC_MoveVelocity Instruction
Vel_InVel
MC_CamIn Instruction
Ex *1
InCam *2
InSync *3
Busy *4
Active *5
Camin1_Eop
Camin2_Eop
Camin3_Eop
Camin4_Eop
*1. The timing is the same for the following: Camin1_InCam, Camin2_InCam, Camin3_InCam, and Camin4_In-
Cam.
*2. The timing is the same for the following: Camin1_InSync, Camin2_InSync, Camin3_InSync, and Camin4_In-
Sync.
In this sample, MasterStartDistance is 0, so InSync changes to TRUE from when the master axis is 0°.
*3. The timing is the same for the following: Camin1_Bsy, Camin2_Bsy, Camin3_Bsy, and Camin4_Bsy.
*4. The timing is the same for the following: Camin1_Act, Camin2_Act, Camin3_Act, and Camin4_Act.
Sample Programming
// Processing when input parameters are not set
IF InitFlag=FALSE THEN
Camin2_Em := TRUE;
Camin2_Sm :=_eMC_START_MODE#_mcAbsolutePosition;
Camin2_Sp := LREAL#0.0;
Camin2_Msd := LREAL#0.0;
Camin2_Ms := LREAL#1.0;
Camin2_Ss := LREAL#1.0;
Camin2_Mo := LREAL#80.0;
Camin2_So := LREAL#0.0;
Camin2_Rt := _eMC_REFERENCE_TYPE#_mcCommand;
Camin2_Dir := _eMC_DIRECTION#_mcNoDirection;
Camin3_Em := TRUE;
Camin3_Sm :=_eMC_START_MODE#_mcAbsolutePosition;
Camin3_Sp := LREAL#0.0;
Camin3_Msd := LREAL#0.0;
Camin3_Ms := LREAL#1.0;
Camin3_Ss := LREAL#1.0;
Camin3_Mo := LREAL#130.0;
Camin3_So := LREAL#0.0;
Camin3_Rt := _eMC_REFERENCE_TYPE#_mcCommand;
Camin3_Dir := _eMC_DIRECTION#_mcNoDirection;
Camin4_Em := TRUE;
Camin4_Sm :=_eMC_START_MODE#_mcAbsolutePosition;
Camin4_Sp := LREAL#0.0;
Camin4_Msd := LREAL#0.0;
Camin4_Ms := LREAL#1.0;
Camin4_Ss := LREAL#1.0;
Camin4_Mo := LREAL#180.0;
Camin4_So := LREAL#0.0;
Camin4_Rt := _eMC_REFERENCE_TYPE#_mcCommand;
Camin4_Dir := _eMC_DIRECTION#_mcNoDirection;
END_IF;
MC_CamIn
// If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 1 is turned
ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis000.DrvStatus.Ready=TRUE) THEN 3
Pwr1_En:=TRUE;
ELSE
Sample Programming 2
Pwr1_En:=FALSE;
END_IF;
// If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 2 is turned
ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis001.DrvStatus.Ready=TRUE) THEN
Pwr2_En:=TRUE;
ELSE
Pwr2_En:=FALSE;
END_IF;
// If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 3 is turned
ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis002.DrvStatus.Ready=TRUE) THEN
Pwr3_En:=TRUE;
ELSE
Pwr3_En:=FALSE;
END_IF;
// If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 4 is turned
ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis003.DrvStatus.Ready=TRUE) THEN
Pwr4_En:=TRUE;
ELSE
Pwr4_En:=FALSE;
END_IF;
// If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 5 is turned
ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis004.DrvStatus.Ready=TRUE) THEN
Pwr5_En:=TRUE;
ELSE
Pwr5_En:=FALSE;
END_IF;
// If a minor fault level error occurs for axis 1 to axis 5, the error handler for
the device (FaultHandler) is executed.
// Program the FaultHandler according to the device.
IF (MC_Axis000.MFaultLvl.Active=TRUE)
OR (MC_Axis001.MFaultLvl.Active=TRUE)
OR (MC_Axis002.MFaultLvl.Active=TRUE)
OR (MC_Axis003.MFaultLvl.Active=TRUE)
OR (MC_Axis004.MFaultLvl.Active=TRUE) THEN
FaultHandler();
END_IF;
// If the Servo is ON for axis 1 and home is not defined, the Home instruction is e
xecuted for axis 1.
IF (Pwr1_Status=TRUE) AND (MC_Axis000.Details.Homed=FALSE) THEN
Hm1_Ex:=TRUE;
END_IF;
// If the Servo is ON for axis 2 and home is not defined, the Home instruction is e
xecuted for axis 2.
IF (Pwr2_Status=TRUE) AND (MC_Axis001.Details.Homed=FALSE) THEN
Hm2_Ex:=TRUE;
END_IF;
// If the Servo is ON for axis 3 and home is not defined, the Home instruction is e
xecuted for axis 3.
IF (Pwr3_Status=TRUE) AND (MC_Axis002.Details.Homed=FALSE) THEN
Hm3_Ex:=TRUE;
END_IF;
// If the Servo is ON for axis 4 and home is not defined, the Home instruction is e
xecuted for axis 4.
IF (Pwr4_Status=TRUE) AND (MC_Axis003.Details.Homed=FALSE) THEN
Hm4_Ex:=TRUE;
END_IF;
// If the Servo is ON for axis 5 and home is not defined, the Home instruction is e
xecuted for axis 5.
IF (Pwr5_Status=TRUE) AND (MC_Axis004.Details.Homed=FALSE) THEN
Hm5_Ex:=TRUE;
END_IF;
MC_CamIn
END_IF;
// If home is defined for axis 2 and Vel_InVel of MC_MoveVelocity is TRUE, the MC_C
amIn instruction for axis 2 (slave axis) is executed.
IF (Vel_InVel=TRUE) AND (MC_Axis001.Details.Homed=TRUE) THEN 3
Camin1_Ex := TRUE;
END_IF;
Sample Programming 2
// If home is defined for axis 3 and Vel_InVel of MC_MoveVelocity is TRUE, the MC_C
amIn instruction for axis 3 (slave axis) is executed.
IF (Vel_InVel=TRUE) AND (MC_Axis002.Details.Homed=TRUE) THEN
Camin2_Ex := TRUE;
END_IF;
// If home is defined for axis 4 and Vel_InVel of MC_MoveVelocity is TRUE, the MC_C
amIn instruction for axis 4 (slave axis) is executed.
IF (Vel_InVel=TRUE) AND (MC_Axis003.Details.Homed=TRUE) THEN
Camin3_Ex := TRUE;
END_IF;
// If home is defined for axis 5 and Vel_InVel of MC_MoveVelocity is TRUE, the MC_C
amIn instruction for axis 5 (slave axis) is executed.
IF (Vel_InVel=TRUE) AND (MC_Axis004.Details.Homed=TRUE) THEN
Camin4_Ex := TRUE;
END_IF;
Axis := MC_Axis001,
Enable := Pwr2_En,
Status => Pwr2_Status,
Busy => Pwr2_Bsy,
Error => Pwr2_Err,
ErrorID => Pwr2_ErrID
);
);
MC_CamIn
Error => Hm2_Err,
ErrorID => Hm2_ErrID
);
Sample Programming 2
Execute := Hm3_Ex,
Done => Hm3_D,
Busy => Hm3_Bsy,
CommandAborted => Hm3_Ca,
Error => Hm3_Err,
ErrorID => Hm3_ErrID
);
// MC_MoveVelocity
VEL(
Axis := MC_Axis000,
Execute := Vel_Ex,
Velocity := Vel_Vel,
Acceleration := Vel_Acc,
Deceleration := Vel_Dec,
Direction := Vel_Dir,
InVelocity => Vel_InVel,
Busy => Vel_Bsy,
Active => Vel_Act,
CommandAborted => Vel_Ca,
Error => Vel_Err,
ErrorID => Vel_ErrID
);
// MC_CamIn
CAMIN1(
Master := MC_Axis000,
Slave := MC_Axis001,
CamTable := CamProfile0,
Execute := Camin1_Ex,
Periodic := Camin1_Em,
StartMode := Camin1_Sm,
StartPosition := Camin1_Sp,
MasterStartDistance := Camin1_Msd,
MasterScaling := Camin1_Ms,
SlaveScaling := Camin1_Ss,
MasterOffset := Camin1_Mo,
SlaveOffset := Camin1_So,
ReferenceType := Camin1_Rt,
Direction := Camin1_Dir,
InCam => Camin1_InCam,
InSync => Camin1_InSync,
EndOfProfile => Camin1_Eop,
Index => Camin1_Index,
Busy => Camin1_Bsy,
Active => Camin1_Act,
CommandAborted => Camin1_Ca,
Error => Camin1_Err,
ErrorID => Camin1_ErrID
);
CAMIN2(
Master := MC_Axis000,
Slave := MC_Axis002,
CamTable := CamProfile0,
Execute := Camin2_Ex,
Periodic := Camin2_Em,
StartMode := Camin2_Sm,
StartPosition := Camin2_Sp,
MasterStartDistance := Camin2_Msd,
MasterScaling := Camin2_Ms,
SlaveScaling := Camin2_Ss,
MasterOffset := Camin2_Mo,
SlaveOffset := Camin2_So,
ReferenceType := Camin2_Rt,
MC_CamIn
Direction := Camin2_Dir,
InCam => Camin2_InCam,
InSync => Camin2_InSync,
EndOfProfile => Camin2_Eop,
Index => Camin2_Index, 3
Busy => Camin2_Bsy,
Active => Camin2_Act,
Sample Programming 2
CommandAborted => Camin2_Ca,
Error => Camin2_Err,
ErrorID => Camin2_ErrID
);
CAMIN3(
Master := MC_Axis000,
Slave := MC_Axis003,
CamTable := CamProfile0,
Execute := Camin3_Ex,
Periodic := Camin3_Em,
StartMode := Camin3_Sm,
StartPosition := Camin3_Sp,
MasterStartDistance := Camin3_Msd,
MasterScaling := Camin3_Ms,
SlaveScaling := Camin3_Ss,
MasterOffset := Camin3_Mo,
SlaveOffset := Camin3_So,
ReferenceType := Camin3_Rt,
Direction := Camin3_Dir,
InCam => Camin3_InCam,
InSync => Camin3_InSync,
EndOfProfile => Camin3_Eop,
Index => Camin3_Index,
Busy => Camin3_Bsy,
Active => Camin3_Act,
CommandAborted => Camin3_Ca,
Error => Camin3_Err,
ErrorID => Camin3_ErrID
);
CAMIN4(
Master := MC_Axis000,
Slave := MC_Axis004,
CamTable := CamProfile0,
Execute := Camin4_Ex,
Periodic := Camin4_Em,
StartMode := Camin4_Sm,
StartPosition := Camin4_Sp,
MasterStartDistance := Camin4_Msd,
MasterScaling := Camin4_Ms,
SlaveScaling := Camin4_Ss,
MasterOffset := Camin4_Mo,
SlaveOffset := Camin4_So,
ReferenceType := Camin4_Rt,
Direction := Camin4_Dir,
InCam => Camin4_InCam,
InSync => Camin4_InSync,
EndOfProfile => Camin4_Eop,
Index => Camin4_Index,
Busy => Camin4_Bsy,
Active => Camin4_Act,
CommandAborted => Camin4_Ca,
Error => Camin4_Err,
ErrorID => Camin4_ErrID
);
MC_CamOut
The MC_CamOut instruction ends cam operation for the axis specified with the input parameter.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_CamOut End Cam Op- FB MC_CamOut_instance MC_CamOut_instance (
eration Slave :=parameter,
MC_CamOut
MC_CamOut
Slave Slave Execute :=parameter,
Execute Done Deceleration :=parameter,
Deceleration Busy Jerk :=parameter,
Jerk CommandAborted
OutMode :=parameter,
OutMode Error
Done =>parameter,
ErrorID
Busy =>parameter, 3
CommandAborted =>parameter,
Error =>parameter,
Variables
ErrorID =>parameter
);
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALSE The instruction is executed when this vari-
able changes to TRUE.
Deceleration Decelera- LREAL Non-negative 0 Specify the deceleration rate.
tion Rate number The unit is command units/s2.*1
Jerk Jerk LREAL 0 0 (Reserved)
(Reserved)
OutMode Sync End _eMC_OUT_MO 0: _mcStop 0*2 (Reserved)
(Reserved) Mode Se- DE
lection
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507).
*2. The default value for an enumeration variable is actually not the number, but the enumerator.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Data Valid
Name Meaning Description
type range
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Slave Slave Axis _sAXIS_REF --- Specify the slave axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• The MC_CamOut instruction disables cam operation of the slave axis.
• When Execute changes to TRUE, the axis starts decelerating towards 0 velocity at the deceleration
rate specified with Deceleration (Deceleration Rate).
• When the command velocity reaches 0, the instruction is completed.
• If you execute this instruction on an axis that is not in cam operation, an error will occur.
• Cam data variables are global variables. You can therefore access or change the values of
cam data variables from more than one task. If you change the values of cam data variables
from more than one task, program the changes so that there is no competition in writing the
value from more than one task.
• If you use exclusive control of global variables between tasks for a cam data variable, do not
use the cam data variable for motion control instructions in a task that does not control the
variable. An Incorrect Cam Table Specification error (error code: 5439 hex) will occur.
MC_CamOut
Timing Charts
Master axis position
MasterStartDistance
StartPosition 3
Function
Synchronized control
Deceleration stopping
InCam
InSync
EndOfProfile
Busy
Active
MC_CamOut
Execute
Done
Busy
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for information on axis errors.
InCam
InSync
Busy
Active
MC_CamOut
Execute
Done
Busy
CommandAborted
Errors
If an error occurs during instruction execution, Error will change to TRUE.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
MC_CamOut
MasterStartDistance
StartPosition
3
Deceleration stopping
MC_CamIn
Execute
Function
InCam
InSync
Busy
Active
MC_CamOut
Execute
Done
Busy
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_CamMonitor
The MC_CamMonitor instruction monitors information on the cam operation.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_CamMonitor Cam Monitor FB MC_CamMonitor_instance MC_CamMonitor_instance(
MC_CamMonitor Axis :=parameter ,
Axis Axis CamTable :=parameter,
CamTable CamTable CamMonitorValue :=parameter,
CamMonitorValue CamMonitorValue
Enable :=parameter,
Enable Enabled
MasterScaling :=parameter,
MasterScaling Valid
SlaveScaling Busy
SlaveScaling :=parameter,
CamMonitorMode Error CamMonitorMode :=parameter,
ErrorID Enabled =>parameter,
Valid =>parameter,
Busy =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Version Information
A CPU Unit with the following unit version and Sysmac Studio version 1.28 or higher are re-
quired to use this instruction.
Variables
Input Variables
Output Variables
MC_CamMonitor
Error Error BOOL TRUE or FALSE TRUE while there is an error.
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
3
Output Variable Update Timing
Variables
Name Timing for changing to TRUE Timing for changing to FALSE
Enabled When Enable changes to TRUE. • After one period when Enable is FALSE.
• When Error changes to TRUE.
Valid When the value output to CamMonitorValue (Cam • After one period when Enable is FALSE.
Monitor Values) is valid. • When Error changes to TRUE.
• When any of the conditions for changing Valid to
FALSE is satisfied. *1
Busy When Enable changes to TRUE. • When Enable changes to FALSE.
• When Error changes to TRUE.
Error When there is an error in the execution conditions or When the error is cleared.
input parameters for the instruction.
*1. Refer to Precautions for Correct Use on page 3 - 242 for the conditions for changing Valid to FALSE.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specifies the axis. *1
CamTable Cam Table ARRAY[0..N] --- Specifies the cam data structure
OF_sMC_CAM_REF _sMC_CAM_REF array variable as the cam
table. *2
CamMonitorValue Cam Monitor _sMC_CAM_MONI- --- Outputs information on the cam operation. *3
Values TOR_DISTANCE-
DIFF
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
*2. "N" in the array variable is set automatically by the Sysmac Studio. Specify a cam data variable that was created on
Cam Editor of the Sysmac Studio.
*3. Information on the cam operation to be monitored is specified by CamMonitorMode (Cam Monitor Mode Selection).
The relationships among the displacement following error, master axis reference position, and slave
axis reference position are shown below.
*1
Master axis
position
Time
MasterReferencePosition Current position of master axis
(Master Axis Reference
Position)
Slave axis command
position
Current position of DistanceDiff
slave axis (Displacement Following Error)
SlaveReferencePosition
(Slave Axis Reference
Position)
Time
Also, the relationship between the master axis phase and the slave axis displacement is shown below.
Cam table
displacement
Distance (Slave
Axis Displacement)
Phase (Master
Axis Phase)
MC_CamMonitor
Phase
Function
The MC_CamMonitor (Cam Monitor) instruction monitors information on the cam operation that is
specified with CamTable (Cam Table) and CamMonitorMode (Cam Monitor Mode Selection).
3
Based on the phase of the master axis in the MC_CamIn (Start Cam Operation) instruction that is exe-
Function
cuted immediately before this instruction, the cam operation information specified with CamTable
(Cam Table) and CamMonitorMode (Cam Monitor Mode Selection) is output to CamMonitorValue
(Cam Monitor Values).
When InSync (In Sync) for the MC_CamIn (Start Cam Operation) instruction changes to TRUE after
the execution of the MC_CamIn (Start Cam Operation) instruction, Valid (Cam Monitor Values Valid)
changes to TRUE and CamMonitorValue (Cam Monitor Values) is updated.
After the MC_CamIn (Start Cam Operation) instruction is aborted, this instruction can be executed
even if CommandAborted (Command Aborted) for the MC_CamIn instruction changes to TRUE.
The MC_CamIn (Start Cam Operation) instruction can be executed in the middle of the cam table by
setting MasterOffset (Master Offset) and SlaveOffset (Slave Offset).
Based on Phase (Master Axis Phase) and Distance (Slave Axis Displacement) that are monitored by
this instruction, set each offset for the MC_CamIn (Start Cam Operation) instruction to be executed
later.
Refer to MC_CamIn on page 3 - 171 for details on how to set the offsets.
Obtain a value by eliminating influence of scaling from the obtained phase, and output the value to
CamMonitorValue (Cam Monitor Values) as the phase.
Phase
180 270 360
Phase
135 180 360
*3 *4
Current phase
Phase = x End point of the phase of the cam table in CamTable
End point of the phase of
the cam table currently in use
270
= x 180
360
= 135
Phase (Master Axis Phase) of the cam profile curve calculated from the position of the master axis,
Distance (Slave Axis Displacement) obtained from Phase, and DistanceDiff (Displacement Following
Error) of the command position of the slave axis are monitored.
Time
MC_CamMonitor
Cam table
displacement
Distance (Slave Axis
Displacement)
Slave axis 3
command position DistanceDiff
(Displacement
Following Error)
Function
Time
The command current position of the slave axis can be moved onto the cam profile curve by using the
monitored DistanceDiff (Displacement Following Error).
Moreover, if you reverse the positive or negative sign of the values of Phase (Master Phase) and
Distance (Slave Axis Displacement) and assign the values to MasterOffset (Master Offset) and
SlaveOffset (Slave Offset) for the MC_CamIn (Start Cam Operation) instruction, the cam motion of the
salve axis can be activated again in the middle of the cam profile curve by executing the MC_CamIn
instruction.
The following shows the timing chart for an application example in which the MC_CamMonitor (Cam
Monitor) instruction is executed while the MC_CamIn (Start Cam Operation) instruction is executed,
and then the MC_CamIn (Start Cam Operation) is aborted.
Time
MC_CamIn instruction
Execute
InCam
InSync
Busy
Active
CommandAborted
MC_CamMonitor instruction
Enable
Enabled
Valid
Busy
MC_CamMonitor
EndOfProfile EndOfProfile
*3
*4
3
*5
Function
*1. Cam table currently in use
*2. Command current position for slave axis
*3. Displacement following error to be calculated
*4. Cam table specified in CamTable (Cam Table)
*5. Position in which the cam operation starts
In the calculation of the displacement following error, the phase to be monitored is calculated
based on the phase shift amount calculated in the preceding period.
Accordingly, while the MC_Phasing instruction is in execution, the calculation is based on the
phase shift amount for the control period immediately before the current one, and therefore the
calculation result does not match a value calculated by the MC_CamIn (Start Cam Operation)
instruction.
Errors
If an error occurs during instruction execution, Error will change to TRUE.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Enable
Busy
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_GearIn
Specifies the gear ratio between the master axis and the slave axis and starts gear operation.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_GearIn Start Gear FB MC_GearIn_instance MC_GearIn_instance (
Operation MC_GearIn Master :=parameter,
MC_GearIn
Master Master Slave :=parameter,
Slave Slave Execute :=parameter,
Execute InGear RatioNumerator :=parameter,
RatioNumerator Busy
RatioDenominator :=parameter,
RatioDenominator Active
ReferenceType :=parameter,
ReferenceType CommandAborted
Acceleration :=parameter, 3
Acceleration Error
Deceleration ErrorID Deceleration :=parameter,
Jerk Jerk :=parameter,
Variables
BufferMode BufferMode :=parameter,
InGear =>parameter,
Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALSE The instruction is executed when the
value of this variable changes to TRUE.
RatioNumera- Gear Ratio DINT*1 Positive or negative 10,000 Specify the numerator of the electronic
tor Numerator number*1 gear ratio between the master and
slave axes.
RatioDenomi- Gear Ratio UDINT*2 Positive number 10,000 Specify the denominator of the electron-
nator Denomina- ic gear ratio between the master and
tor slave axes.
Reference- Position _eMC_REF 0: _mcCommand 0*4 Specify the position type.
Type*3 Type Se- ERENCE_T 1: _mcFeedback 0: Command position (value calculated
lection YPE 2: _mcLatestCommand in the previous task period*5)
1: Actual position (value obtained in the
same task period*5)
2: Command position (value calculated
in the same task period*5)
Acceleration Accelera- LREAL Non-negative number 0 Specify the acceleration rate.
tion Rate The unit is command units/s2. *6
De-
Name Meaning Data type Valid range Description
fault
Deceleration Decelera- LREAL Non-negative number 0 Specify the deceleration rate.
tion Rate The unit is command units/s2. *6
Jerk Jerk LREAL 0 0 (Reserved)
(Reserved)
BufferMode Buffer _eMC_BUF 0: _mcAborting 0*4 Specify the behavior when executing
Mode Se- FER_MOD 1: _mcBuffered more than one motion instruction.
lection E 0: Aborting
1: Buffered
*1. A CPU Unit with unit version 1.02 or later and Sysmac Studio version 1.03 or higher are required to use this variable.
For any previous version combinations, the data type is UINT and the valid range is positive numbers.
*2. A CPU Unit with unit version 1.02 or later and Sysmac Studio version 1.03 or higher are required to use this variable.
For any previous version combinations, the data type is UINT.
*3. To use _mcLatestCommand, the following condition must be met for the master and slave axes.
When you use this variable, the axis number set for the Master (Master Axis) in the system-defined variable for motion
control must be lower than the axis number set for the Slave (Slave Axis) in the system-defined variable for motion
control.
*4. The default value for an enumeration variable is actually not the number, but the enumerator.
*5. The task period is the primary period if the task is the primary periodic task and the task period of the priority-5 periodic
task if the task is the priority-5 periodic task.
*6. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
Output Variables
Data Valid
Name Meaning Description
type range
InGear Gear Ratio BOOL TRUE or TRUE when the slave axis reaches the target velocity.
Achieved FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE when the axis is being controlled.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
MC_GearIn
• When this instruction is executed while there
is an error.
• When you start this instruction during
MC_Stop instruction execution.
• When the MC_GearOut instruction is execut-
3
ed.
Error When there is an error in the execution condi- When the error is cleared.
Function
tions or input parameters for the instruction.
In-Out Variables
Valid
Name Meaning Data type Description
range
Master Master Axis _sAXIS_REF --- Specify the master axis. *1
Slave Slave Axis _sAXIS_REF --- Specify the slave axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
If you specify the same axis for the master axis and slave axis, a Master and Slave Defined as
Same Axis minor fault (error code 5436 hex) will occur.
Function
• The MC_GearIn instruction performs gear operation for the slave axis specified with Slave (Slave
Axis). The following parameters are also specified: RatioNumerator (Gear Ratio Numerator),
RatioDenominator (Gear Ratio Denominator), ReferenceType (Position Type), Acceleration (Accel-
eration Rate), and Deceleration (Deceleration Rate).
• For Master (Master Axis), you can specify the command position, actual position, or most recent
command position.
Specified with
ReferenceType. Gear function
Numerator
Actual position Command position
Denominator
Remainder
Command position
Most recent
command position
• After operation starts, Slave (Slave Axis) uses the velocity of Master (Master Axis) multiplied by the
gear ratio for its target velocity, and accelerates/decelerates accordingly.
• The catching phase exists until the target velocity is reached. The InGear phase exists after that.
• If the gear ratio is positive, Slave (Slave Axis) and Master (Master Axis) move in the same direction.
Position
Catching phase InGear phase
Master
Slave
Execute Time
• If the gear ratio is negative, Slave (Slave Axis) and Master (Master Axis) move in the opposite direc-
tions.
Position
Catching Phase InGear phase
Master
MC_GearIn
Slave 3
Execute Time
Function
• Electronic gear operation starts when Execute changes to TRUE.
Do not execute the MC_SetPosition instruction for the Master (Master Axis) if you use this in-
struction on a CPU Unit with unit version 1.09 or earlier. If the MC_SetPosition instruction is
executed for the Master (Master Axis), the Slave (Slave Axis) may follow the master axis quick-
ly.
If you want to use the MC_SetPosition instruction for the the Master (Master Axis), disable the
relationship between the Master (Master Axis) and Slave (Slave Axis) before executing the in-
struction.
Refer to 1-1-3 Precautions for Master and Auxiliary Axes in Synchronized Control on page 1 - 6
for precautions on the master axis.
Here, the task period is the primary period if the task is the primary periodic task and the task
period of the priority-5 periodic task if the task is the priority-5 periodic task. In the same way,
the periodic task is the primary periodic task or the priority-5 periodic task.
Additional Information
The command position that is calculated in the same task period enables greater precision in
synchronization than the command position that was calculated in the previous task period.
However, the axis number set for the Master (Master Axis) in the system-defined variable for
motion control must be lower than the axis number set for the Slave (Slave Axis) in the system-
defined variable for motion control.
ReferenceType
Axis Type
_mcCommand or _mcLatestCommand _mcFeedback
Servo axis OK OK
Encoder axis No *1 OK
Virtual servo axis OK OK
Virtual encoder No *1 OK
axis
*1. A Position Type Selection Out of Range error (error code: 5430 hex) occurs when the instruction is execut-
ed.
Timing Charts
• Busy (Executing) changes to TRUE at the same time as Execute changes to TRUE. Active (Control-
ling) changes to TRUE in the next period.
• InGear (Gear Ratio Reached) changes to TRUE when the target velocity is reached.
• If another instruction aborts this instruction, CommandAborted changes to TRUE and Busy (Execut-
ing), Active (Controlling), and InGear (Gear Ratio Reached) change to FALSE.
• Use the MC_GearOut (End Gear Operation) or MC_Stop instruction to stop electronic gear opera-
tion before it is completed.
Execute
InGear
Busy
Active
CommandAborted
Error
MC_GearIn
ErrorID 16#0000
InGearPhase Multi-execution of
Velocity another instruction
3
Function
MC_GearIn executed. Time
You can specify the Acceleration (Acceleration Rate) and Deceleration (Deceleration Rate) as input
variables.
Velocity Velocity
When the Acceleration (Acceleration Rate) or Deceleration (Deceleration Rate) is 0 and you execute
this instruction, the axis will reach the target velocity without accelerating or decelerating.
Velocity Velocity
Time Time
Input variables RatioNumerator (Gear Ratio Numerator), RatioDenominator (Gear Ratio Denominator),
Acceleration (Acceleration Rate), and Deceleration (Deceleration Rate) can be changed by re-
executing the motion control instruction.
For details on re-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
The following timing chart shows when the instruction is re-executed during the Catching phase to
change the Acceleration (Acceleration Rate).
Execute
InGear
Busy
Active
CommandAborted
Error
ErrorID 16#0000
Velocity
Master axis velocity
MC_GearIn
re-executed.
Time
The following timing chart shows when the instruction is re-executed during the InGear phase to
change the RatioNumerator (Gear Ratio Numerator) and RatioDenominator (Gear Ratio Denomina-
tor).
The motion is the same as when Acceleration (Acceleration Rate) and Deceleration (Deceleration
Rate) are both set to 0.
Execute
InGear
Busy
Active
CommandAborted
Error
MC_GearIn
ErrorID 16#0000
Velocity
MC_GearIn re-executed.
Master axis velocity
3
Function
Time
For details on BufferMode (Buffer Mode Selection), refer to the NJ/NX-series CPU Unit Motion Control
User’s Manual (Cat. No. W507).
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axis will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
InGear
Busy
Active
CommandAborted
Error
Additional Information
• The slave axis is not affected by the error status of the master axis during synchronized con-
trol. The error status of the master axis is cleared and the slave axis continues electronic
gear operation after the master axis operates normally.
• The master axis is not affected if an error occurs for the slave axis during startup or execution
of this instruction.
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
Sample Programming
This section shows sample programming for operation proportional to a gear ratio.
Additional Information
You can specify only the initial values for input variables that are reserved.
Parameters are not specified in this sample.
Parameter Settings
The minimum settings required for this sample programming are given below.
Count Modes
Ring Counter
Modulo Modulo
Axis maximum minimum
MC_GearIn
position position
Axis 1 360 0
Axis 2 360 0
Axis 3 360 0
3
Units of Display
Sample Programming
Axis 1 mm
Axis 2 mm
Axis 3 mm
Operation Example
Axis 1
1:2 2:3
Axis 2 Axis 3
Ladder Diagram
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for the master axis, axis 1.
MC_Axis000.Act.Pos LREAL --- This variable gives the actual current position of axis
1.
MC_Axis001 _sAXIS_REF --- Axis Variable for the slave axis, axis 2.
MC_Axis002 _sAXIS_REF --- Axis Variable for the slave axis, axis 3.
Pwr1_Status BOOL FALSE This variable is assigned to the Status output varia-
ble from the PWR1 instance of the MC_Power in-
struction. This variable changes to TRUE when the
Servo is turned ON.
Pwr2_Status BOOL FALSE This variable is assigned to the Status output varia-
ble from the PWR2 instance of the MC_Power in-
struction. This variable changes to TRUE when the
Servo is turned ON.
Pwr3_Status BOOL FALSE This variable is assigned to the Status output varia-
ble from the PWR3 instance of the MC_Power in-
struction. This variable changes to TRUE when the
Servo is turned ON.
StartPg BOOL FALSE The Servo is turned ON if this variable is TRUE and
EtherCAT process data communications are estab-
lished.
Vel_InVel BOOL FALSE This variable is assigned to the InVelocity output var-
iable from the VEL instance of the MC_MoveVelocity
instruction. It is TRUE when the target velocity is
reached.
Gearin1_Act BOOL FALSE This variable is assigned to the Active output varia-
ble from the GEARIN1 instance of the MC_GearIn
instruction. It is TRUE during control operations for
GEARIN1.
Gearout_Ex BOOL FALSE The GEAROUT instance of MC_GearOut is execut-
ed when this variable changes to TRUE.
Timing Chart
Pwr1_Status
Pwr2_Status
Pwr3_Status
Vel_InVel
Vel_Bsy
Vel_Act
MC_GearIn
Gearin1_InGear
Gearin1_Bsy
Gearin1_Act
Gearin1_Ca
Gearin2_InGear 3
Gearin2_Bsy
Sample Programming
Gearin2_Act
Gearout_Bsy
Gearout_D
Axis 1
Command position
1000
Actual position
Command velocity
Axis 2
Command velocity
Axis 3
Command velocity
Sample Programming
If StartPg is TRUE, check that the Servo Drives for each axis are ready.
StartPg MC_Axis000.DrvStatus.Ready Lock1
MC_Axis001.DrvStatus.Ready Lock2
MC_Axis002.DrvStatus.Ready Lock3
If the Servo Drives are ready, the Servos are turned ON for each axis.
PWR1
MC_Power
Lock1 MC_Axis000 Axis Axis Pwr1_Status
Enable Status
Busy Pwr1_Bsy
Error Pwr1_Err
ErrorID Pwr1_ErrID
PWR2
MC_Power
Lock2 MC_Axis001 Axis Axis Pwr2_Status
Enable Status
Busy Pwr2_Bsy
Error Pwr2_Err
ErrorID Pwr2_ErrID
PWR3
MC_Power
Lock3 MC_Axis002 Axis Axis Pwr3_Status
Enable Status
Busy Pwr3_Bsy
Error Pwr3_Err
ErrorID Pwr3_ErrID
If a minor fault level error occurs for the axis composition, the error handler for the device (FaultHandler) is
executed.
Program the FaultHandler according to the device.
MC_Axis000.MFaultLvl.Active FaultHandler
EN FaultHandler
MC_Axis001.MFaultLvl.Active
MC_Axis002.MFaultLvl.Active
The MC_MoveVelocity (Velocity Control) instruction is executed after the Servo is turned ON for the master
axis (axis 1).
VEL
MC_MoveVelocity
Pwr1_Status MC_Axis000 Axis Axis Vel_InVel
Execute InVelocity
LREAL#2000.0 Velocity Busy Vel_Bsy
LREAL#2000.0 Acceleration Active Vel_Act
LREAL#2000.0 Deceleration CommandAborted Vel_Ca
Jerk Error Vel_Err
_eMC_DIRECTION#_mcPositiveDirection Direction ErrorID Vel_ErrID
Continuous
BufferMode
When the actual velocity for the master axis (axis 1) reaches the target velocity, gear operation is performed
so that the gear ratio of axis 2 (slave axis) is 1:2 and axis 3 (slave axis) is 2:3.
GEARIN1
MC_GearIn
MC_Axis000 Master Master
Vel_InVel Pwr2_Status MC_Axis001 Slave Slave Gearin1_InGear
Execute InGear
UINT#1 RatioNumerator Busy Gearin1_Bsy
UINT#2 RatioDenominator Active Gearin1_Act
_eMC_REFERENCE_TYPE#_mcFeedback ReferenceType CommandAborted Gearin1_Ca
LREAL#4000.0 Acceleration Error Gearin1_Err
LREAL#4000.0 Deceleration ErrorID Gearin1_ErrID
MC_GearIn
Jerk
BufferMode
GEARIN2
MC_GearIn
MC_Axis000 Master Master 3
Pwr3_Status MC_Axis002 Slave Slave Gearin2_InGear
Execute InGear
Sample Programming
UINT#2 RatioNumerator Busy Gearin2_Bsy
UINT#3 RatioDenominator Active Gearin2_Act
_eMC_REFERENCE_TYPE#_mcFeedback ReferenceType CommandAborted Gearin2_Ca
LREAL#4000.0 Acceleration Error Gearin2_Err
LREAL#4000.0 Deceleration ErrorID Gearin2_ErrID
Jerk
BufferMode
When the actual position of the master axis is 1000.0 or higher during gear operation of axis 2 (slave axis),
Gearout_Ex changes to TRUE.
When Gearout_Ex changes to TRUE, gear operation is stopped for the axis 2 (slave axis).
The axis decelerates to a stop.
GEAROUT
MC_GearOut
Gearout_Ex MC_Axis001 Slave Slave Gearout_D
Execute Done
DecRate Deceleration Busy Gearout_Bsy
Jerk CommandAborted Gearout_Ca
OutMode Error Gearout_Err
ErrorID Gearout_ErrID
Contents of Inline ST
IF (Gearin1_Act=TRUE) AND (MC_Axis000.Act.Pos>=LREAL#1000.0) THEN
Gearout_Ex := TRUE;
END_IF;
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for the master axis, axis 1.
MC_Axis000.Act.Pos LREAL --- This variable gives the actual current position of
axis 1.
MC_Axis001 _sAXIS_REF --- Axis Variable for the slave axis, axis 2.
MC_Axis002 _sAXIS_REF --- Axis Variable for the slave axis, axis 3.
Pwr1_Status BOOL FALSE This variable is assigned to the Status output
variable from the PWR1 instance of the
MC_Power instruction. This variable changes to
TRUE when the Servo is turned ON.
Pwr2_Status BOOL FALSE This variable is assigned to the Status output
variable from the PWR2 instance of the
MC_Power instruction. This variable changes to
TRUE when the Servo is turned ON.
Pwr3_Status BOOL FALSE This variable is assigned to the Status output
variable from the PWR3 instance of the
MC_Power instruction. This variable changes to
TRUE when the Servo is turned ON.
StartPg BOOL FALSE The Servo is turned ON if this variable is TRUE
and EtherCAT process data communications
are established.
Vel_InVel BOOL FALSE This variable is assigned to the InVelocity out-
put variable from the VEL instance of the
MC_MoveVelocity instruction. It is TRUE when
the target velocity is reached.
Gearin1_Act BOOL FALSE This variable is assigned to the Active output
variable from the GEARIN1 instance of the
MC_GearIn instruction. It is TRUE during con-
trol operations for GEARIN1.
Gearout_Ex BOOL FALSE The GEAROUT instance of MC_GearOut is
executed when this variable changes to TRUE.
Vel_Ex BOOL FALSE The VEL instance of MC_MoveVelocity is exe-
cuted when this variable changes to TRUE.
Gearin1_Ex BOOL FALSE The GEARIN1 instance of MC_GearIn is exe-
cuted when this variable changes to TRUE.
Gearin2_Ex BOOL FALSE The GEARIN2 instance of MC_GearIn is exe-
cuted when this variable changes to TRUE.
InitFlag BOOL FALSE This variable indicates if it is necessary to set
the input parameters.
Input parameters are set when this variable is
FALSE. When setting the input parameters is
completed, this variable changes to TRUE.
Timing Chart
Pwr1_Status
Pwr2_Status
Pwr3_Status
Vel_Ex
Vel_InVel
Vel_Bsy
MC_GearIn
Vel_Act
Gearin1_Ex
Gearin1_InGear
Gearin1_Bsy
Gearin1_Act 3
Gearin1_Ca
Sample Programming
Gearin2_Ex
Gearin2_InGear
Gearin2_Bsy
Gearin2_Act
Gearout_Ex
Gearout_Bsy
Gearout_D
Axis 1
Command position
1000
Actual position
Command velocity
Axis 2
Command velocity
Axis 3
Command velocity
Sample Programming
// Processing when input parameters are not set
IF InitFlag = FALSE THEN
// MC_MoveVelocity parameters
Vel_Vel := LREAL#2000.0;
Vel_Acc := LREAL#2000.0;
Vel_Dec := LREAL#2000.0;
Vel_Dir :=_eMC_DIRECTION#_mcPositiveDirection;
// MC_GearIn1 parameters
Gearin1_Rn := UINT#1;
Gearin1_Rd := UINT#2;
Gearin1_Rt :=_eMC_REFERENCE_TYPE#_mcFeedback;
Gearin1_Acc := LREAL#4000.0;
Gearin1_Dec := LREAL#4000.0;
// MC_GearIn2 parameters
Gearin2_Rn := UINT#2;
Gearin2_Rd := UINT#3;
Gearin2_Rt :=_eMC_REFERENCE_TYPE#_mcFeedback;
Gearin2_Acc := LREAL#4000.0;
Gearin2_Dec := LREAL#4000.0;
// MC_GearOut parameters
DecRate := LREAL#200.0;
Gearout_Dec := DecRate;
END_IF;
// If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 1 is turned
ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis000.DrvStatus.Ready=TRUE) THEN
Pwr1_En:=TRUE;
ELSE
Pwr1_En:=FALSE;
END_IF;
// If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 2 is turned
ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis001.DrvStatus.Ready=TRUE) THEN
Pwr2_En:=TRUE;
ELSE
Pwr2_En:=FALSE;
END_IF;
// If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 3 is turned
ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis002.DrvStatus.Ready=TRUE) THEN
Pwr3_En:=TRUE;
ELSE
Pwr3_En:=FALSE;
END_IF;
MC_GearIn
// If a minor fault level error occurs for axis 1 to axis 3, the error handler for
the device (FaultHandler) is executed.
// Program the FaultHandler according to the device.
IF (MC_Axis000.MFaultLvl.Active=TRUE) OR (MC_Axis001.MFaultLvl.Active=TRUE)
OR (MC_Axis002.MFaultLvl.Active=TRUE) THEN 3
FaultHandler();
END_IF;
Sample Programming
// If the Servo is ON for axis 1, the MC_MoveVelocity instruction is executed.
IF Pwr1_Status=TRUE THEN
Vel_Ex := TRUE;
END_IF;
// If InVelocity of MC_MoveVelocity is TRUE and the Servo for axis 2 is ON, MC_Gear
In is executed with axis 1 as the master axis and axis 2 as the slave axis.
IF (Vel_InVel=TRUE) AND (Pwr2_Status=TRUE) THEN
Gearin1_Ex := TRUE;
END_IF;
// If InVelocity of MC_MoveVelocity is TRUE and the Servo for axis 3 is ON, MC_Gear
In is executed with axis 1 as the master axis and axis 3 as the slave axis.
IF (Vel_InVel=TRUE) AND (Pwr3_Status=TRUE) THEN
Gearin2_Ex := TRUE;
END_IF;
// If the actual position of axis 1 is 1000.0 or higher during gear operation for a
xis 2, the GearOut instruction for axis 2 (slave axis) is executed.
IF (Gearin1_Act=TRUE) AND (MC_Axis000.Act.Pos>=LREAL#1000.0) THEN
Gearout_Ex := TRUE;
END_IF;
// MC_MoveVelocity
VEL(
Axis := MC_Axis000,
Execute := Vel_Ex,
Velocity := Vel_Vel,
Acceleration := Vel_Acc,
Deceleration := Vel_Dec,
Direction := Vel_Dir,
InVelocity => Vel_InVel,
Busy => Vel_Bsy,
Active => Vel_Act,
CommandAborted => Vel_Ca,
Error => Vel_Err,
ErrorID => Vel_ErrID
);
Acceleration := Gearin1_Acc,
Deceleration := Gearin1_Dec,
InGear => Gearin1_InGear,
Busy => Gearin1_Bsy,
Active => Gearin1_Act,
CommandAborted => Gearin1_CA,
Error => Gearin1_Err,
ErrorID => Gearin1_ErrID
);
MC_GearIn
// MC_GearIn with axis 1 as master axis and axis 3 as slave axis
GEARIN2(
Master := MC_Axis000,
Slave := MC_Axis002, 3
Execute := Gearin2_Ex,
RatioNumerator := Gearin2_Rn,
Sample Programming
RatioDenominator := Gearin2_Rd,
ReferenceType := Gearin2_Rt,
Acceleration := Gearin2_Acc,
Deceleration := Gearin2_Dec,
InGear => Gearin2_InGear,
Busy => Gearin2_Bsy,
Active => Gearin2_Act,
CommandAborted => Gearin2_CA,
Error => Gearin2_Err,
ErrorID => Gearin2_ErrID
);
// MC_GearOut
GEAROUT(
Slave := MC_Axis001,
Execute := Gearout_Ex,
Deceleration := Gearout_Dec,
Done => Gearout_D,
Busy => Gearout_Bsy,
CommandAborted => Gearout_CA,
Error => Gearout_Err,
ErrorID => Gearout_ErrID
);
MC_GearInPos
The MC_GearInPos instruction performs electronic gear operation for the specified gear ratio between
the master axis and the slave axis.
The positions at which to start synchronizing the master axis and slave axis are specified.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_GearInPos Positioning FB MC_GearInPos_instance MC_GearInPos_instance (
Gear Opera- MC_GearInPos Master :=parameter,
tion Master Master Slave :=parameter,
Slave Slave Execute :=parameter,
Execute StartSync RatioNumerator :=parameter,
RatioNumerator InSync
RatioDenominator :=parameter,
RatioDenominator Busy
ReferenceType :=parameter,
ReferenceType Active
MasterSyncPosition CommandAborted MasterSyncPosition :=parameter,
SlaveSyncPosition Error SlaveSyncPosition :=parameter,
Velocity ErrorID Velocity :=parameter,
Acceleration Acceleration :=parameter,
Deceleration Deceleration :=parameter,
Jerk
Jerk :=parameter,
BufferMode
BufferMode :=parameter,
StartSync =>parameter,
InSync =>parameter,
Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALSE The instruction is executed when
this variable changes to TRUE.
RatioNumera- Gear Ratio DINT *1 Positive or negative num- 10,000 Specify the numerator of the elec-
tor Numerator ber *1 tronic gear ratio between the mas-
ter and slave axes.
RatioDenomi- Gear Ratio UDINT *2 Positive number 10,000 Specify the denominator of the
nator Denomina- electronic gear ratio between the
tor master and slave axes.
De-
Name Meaning Data type Valid range Description
fault
ReferenceType Position _eMC_REF- 0: _mcCommand 0 *4 Specify the position type.
*3 Type Selec- ERENCE_TYP 1: _mcFeedback 0: Command position (value calcu-
tion E 2: _mcLatestCommand lated in the previous task period*5)
1: Actual position (value obtained
in the same task period*5)
2: Command position (value calcu-
lated in the same task period*5)
MC_GearInPos
MasterSync Master LREAL Negative number, posi- 0 Specify the absolute master sync
Position Sync Posi- tive number, or 0 position.
tion The unit is command units. *6
SlaveSyncPo- Slave Sync LREAL Negative number, posi- 0 Specify the absolute slave sync po-
sition Position tive number, or 0 sition.
The unit is command units. *6
3
Velocity Target ve- LREAL Positive number 0 Specify the target velocity. Always
locity set the target velocity. If the axis is
Variables
moved without setting a target ve-
locity, an error will occur.
The unit is command units/s. *6
Acceleration Accelera- LREAL Non-negative number 0 Specify the acceleration rate.
tion Rate The unit is command units/s2. *6
Deceleration Decelera- LREAL Non-negative number 0 Specify the deceleration rate.
tion Rate The unit is command units/s2. *6
Jerk Jerk LREAL 0 0 (Reserved)
(Reserved)
BufferMode Buffer _eMC_BUF- 0: _mcAborting 0 *4 (Reserved)
(Reserved) Mode Se- FER_MODE
lection
*1. A CPU Unit with unit version 1.02 or later and Sysmac Studio 1.03 or higher are required to use this parameter. For
any previous version combinations, the data type is UINT and the valid range is positive numbers.
*2. A CPU Unit with unit version 1.02 or later and Sysmac Studio 1.03 or higher are required to use this parameter. For
any previous version combinations, the data type is UINT.
*3. To use _mcLatestCommand, the following condition must be met for the master and slave axes.
The axis number set for the Master (Master Axis) in the system-defined variable for motion control must be lower than
the axis number set for Slave (Slave Axis) in the system-defined variable for motion control.
*4. The default value for an enumeration variable is actually not the number, but the enumerator.
*5. The task period is the primary period if the task is the primary periodic task and the task period of the priority-5 periodic
task if the task is the priority-5 periodic task.
*6. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
Output Variables
Data Valid
Name Meaning Description
type range
StartSync Following BOOL TRUE or TRUE when acceleration/deceleration is started for syn-
FALSE chronization.
InSync In Sync BOOL TRUE or TRUE when the slave axis reaches the slave sync posi-
FALSE tion.
Data Valid
Name Meaning Description
type range
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE while the axis is being controlled.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Master Master Axis _sAXIS_REF --- Specify the master axis. *1
Slave Slave Axis _sAXIS_REF --- Specify the slave axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
If you specify the same axis for the master axis and slave axis, a Master and Slave Defined as
Same Axis minor fault (error code 5436 hex) will occur.
Function
• The MC_GearInPos instruction performs gear operation for the slave axis specified with Slave
MC_GearInPos
(Slave Axis). The following parameters are also specified: RatioNumerator (Gear Ratio Numerator),
RatioDenominator (Gear Ratio Denominator), ReferenceType (Position Type), Acceleration (Accel-
eration Rate), and Deceleration (Deceleration Rate).
• For Master (Master Axis), you can specify the command position, actual position, or most recent
command position.
3
Specified with
ReferenceType.
Gear function
Function
Numerator
Actual position Command position
Denominator
Remainder
Command position
Most recent
command position
• After operation starts, the Slave (Slave Axis) accelerates and decelerates in sync with the Master
(Master Axis) in the catching operation.
• The slave axis is in the catching phase until it reaches the slave sync position. The slave axis enters
the InSync phase after it reaches the slave sync position. For either, the position is synchronized
with the master axis.
• The Velocity (Target Velocity) input variable is the target velocity for the catching phase.
• The slave axis moves in the same direction as the master axis when operation is started.
An error occurs if the master axis velocity is 0 when started.
If the master axis is moving in the positive direction and SlaveSyncPosition (Slave Sync Position) is
smaller than the position of the slave axis when the instruction was executed, the slave axis will re-
verse direction.
If the master axis is moving in the negative direction and SlaveSyncPosition (Slave Sync Position) is
larger than the position of the slave axis when the instruction was executed, the slave axis will also
reverse direction.
• If the master axis velocity changes significantly between periods, the slave axis velocity will not be
constant.
• If the gear ratio is positive, the Slave (Slave Axis) and the Master (Master Axis) move in the same
direction.
MasterSyncPosition
SlaveSyncPosition
StartSync
InSync
Busy
Active
• If the gear ratio is negative, the Slave (Slave Axis) and the Master (Master Axis) move in the oppo-
site directions.
MasterSyncPosition
SlaveSyncPosition
Do not execute the MC_SetPosition instruction for the Master (Master Axis) if you use this in-
struction on a CPU Unit with unit version 1.09 or earlier. If the MC_SetPosition instruction is
executed for the Master (Master Axis), the Slave (Slave Axis) may follow the master axis quick-
ly.
If you want to use the MC_SetPosition instruction for the Master (Master Axis), disable the rela-
tionship between the Master (Master Axis) and Slave (Slave Axis) before executing the instruc-
tion.
• The MC Function Module calculates the velocity profile for linear acceleration and deceleration with
the following three velocities using the Acceleration (Acceleration Rate) and Deceleration (Decelera-
tion Rate).
a) The velocity of the Slave (Slave Axis) when an instruction is executed is the initial velocity.
b) The velocity of the Master (Master Axis) when an instruction is executed multiplied by the gear
ratio is the final velocity.
c) The Velocity (Target Velocity) is the target velocity.
If the travel distance during the catching phase is too short, the target velocity will not be reached.
Catching Time
phase InGear phase
Slave axis velocity
Velocity
MC_GearInPos
Vm(T1) × Gear ratio
T1 Time
3
For the Slave (Slave Axis) to catch up with the Master (Master Axis) for the MasterSyncPosition
(Master Sync Position) and SlaveSyncPosition (Slave Sync Position), the following condition must
Function
be met for the Velocity (Target Velocity).
The information that is used as the master axis velocity depends on the setting of ReferenceType
(Position Type Selection).
If the Slave (Slave Axis) cannot catch up with the Master (Master Axis) for the MasterSyncPosition
(Master Sync Position) and SlaveSyncPosition (Slave Sync Position), a Positioning Gear Operation
Insufficient Target Velocity error (error code 5447 hex) will occur.
• When the Count Mode is set to Rotary Mode, the operation is different for different unit versions of
the CPU Unit as described below.
a) CPU Units with Unit Version 1.10 or Later
When the Count Mode of the master axis is Rotary Mode, you can specify a
MasterSyncPosition (Master Sync Position) outside the range specified by the modulo maximum
position and modulo minimum position setting values. If you do, the relationship between the
master axis current position and the master axis sync position will be the same as when
_mcNoDirection (No direction) is specified for Direction in the MC_MoveAbsolute (Absolute Po-
sitioning) instruction. Refer to MC_MoveAbsolute on page 3 - 51 for information on the
MC_MoveAbsolute (Absolute Positioning) instruction.
In the same way, when the Count Mode of the slave axis is Rotary Mode, you can specify a
SlaveSyncPosition (Slave Sync Position) outside the range specified by the modulo maximum
position and modulo minimum position setting values.
b) CPU Units with Unit Version 1.09 or Earlier
If you set the Count Mode to Rotary Mode, make sure that the synchronous operation starts
within one cycle of the ring counter.
Refer to 1-1-3 Precautions for Master and Auxiliary Axes in Synchronized Control on page 1 - 6
for precautions on the master axis.
Here, the task period is the primary period if the task is the primary periodic task and the task
period of the priority-5 periodic task if the task is the priority-5 periodic task. In the same way,
the periodic task is the primary periodic task or the priority-5 periodic task.
Additional Information
The command position that is calculated in the same task period enables greater precision in
synchronization than the command position that was calculated in the previous task period.
However, the axis number set for the Master (Master Axis) in the system-defined variable for
motion control must be lower than the axis number set for the Slave (Slave Axis) in the system-
defined variable for motion control.
ReferenceType
Axis Type
_mcCommand or _mcLatestCommand _mcFeedback
Servo axis OK OK
Encoder axis No *1 OK
Virtual servo axis OK OK
Virtual encoder No *1 OK
axis
*1. A Position Type Selection Out of Range error (error code: 5430 hex) occurs when the instruction is execut-
ed.
Timing Charts
• Electronic gear operation starts when Execute changes to TRUE.
• Busy (Executing) changes to TRUE when Execute changes to TRUE. After the operation is started,
Active (Controlling) and StartSync (Following) change to TRUE and the Slave (Slave Axis) starts the
gear operation.
• When the MasterSyncPosition (Master Sync Position) and SlaveSyncPosition (Slave Sync Position)
are reached, InSync changes to TRUE.
MC_GearInPos
• If another instruction aborts this instruction, CommandAborted changes to TRUE, and Busy (Execut-
ing), Active (Controlling), StartSync (Following), and InSync change to FALSE.
Execute
StartSync
3
InSync
Function
Busy
Active
CommandAborted
Error
ErrorID 16#0000
Velocity
InSyncPhase
CatchingPhase
Time
The operation when this instruction is aborted by another instruction is shown below.
Execute
StartSync
InSync
Busy
Active
CommandAborted
Error
ErrorID 16#0000
InSyncPhase Multi-execution of
Velocity
another instruction
CatchingPhase
Time
Depending on the setting of the SlaveSyncPosition, the axis may not reach the target velocity. An ex-
ample of this is shown below.
Execute
StartSync
InSync
Busy
Active
CommandAborted
Error
ErrorID 16#0000
Velocity
InSyncPhase
CatchingPhase
Time
The slave axis follows the master axis position before the InSync phase as well. An example of this is
shown below.
Execute
StartSync
InSync
Busy
Active
MC_GearInPos
CommandAborted
Error
ErrorID 16#0000
Velocity 3
Master axis
Function
InSyncPhase
Time
You can specify the Acceleration (Acceleration Rate) and Deceleration (Deceleration Rate) as input
variables. The following figures show operation examples of the electronic gear.
Velocity Velocity
Time Time
For details on BufferMode (Buffer Mode Selection), refer to the NJ/NX-series CPU Unit Motion Control
User’s Manual (Cat. No. W507).
If another instruction is executed with BufferMode (Buffer Mode Selection) set to anything other
than Aborting, an error will occur in the other instruction.
Errors
If an error occurs during instruction execution, Error will change to TRUE.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
StartSync
InSync
Busy
Active
CommandAborted
Error
The slave axis is not affected by the error status of the master axis during synchronized control. After
the error status of the master axis is cleared, the slave axis continues electronic gear operation when
the master axis operates.
The master axis is not affected if an error occurs for the slave axis during startup or execution of this
instruction.
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
Sample Programming
This section describes sample programming where the sync position for the master axis is Pos1 and
the sync position for the slave axis Pos2.
Parameter Settings
The minimum settings required for this sample programming are given below.
MC_GearInPos
Setting Axis Parameters
Axis Types
Sample Programming
Count Modes
Ring Counters
Modulo Modulo
Axis maximum minimum
position position
Axis 1 360 0
Axis 2 360 0
Units of Display
Operation Example
Axis 1
1:2
Axis 2
Operation Pattern
Axis 1 position
Pos1
Time
Vel_InVel
Axis 2 position
Pos2
Time
Ladder Diagram
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for the master axis, axis 1.
MC_Axis000.Details.Homed BOOL FALSE TRUE when home is defined for axis 1.
MC_Axis000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 1.
MC_Axis001 _sAXIS_REF --- Axis Variable for the slave axis, axis 2.
MC_Axis001.Details.Homed BOOL FALSE TRUE when home is defined for axis 2.
MC_Axis001.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 2.
MC_GearInPos
Hm1_D BOOL FALSE This variable is assigned to the Done output
variable from the HM1 instance of the
MC_Home instruction.
Hm2_D BOOL FALSE This variable is assigned to the Done output
variable from the HM2 instance of the
MC_Home instruction.
3
Vel_InVel BOOL FALSE This variable is assigned to the InVelocity out-
put variable from the VEL instance of the
Sample Programming
MC_MoveVelocity instruction. It is TRUE when
the target velocity is reached.
Pos1 LREAL --- This variable gives the master sync position.
Pos2 LREAL --- This variable gives the slave sync position.
StartPg BOOL FALSE The Servo is turned ON if this variable is TRUE
and EtherCAT process data communications
are established.
Timing Chart
Pwr1_Status
Pwr2_Status
Hm1_D
Hm1_Bsy
Hm2_D
Hm2_Bsy
Vel_InVel
Vel_Bsy
Vel_Act
Gearinpos_StSync
Gearinpos_InSync
Gearinpos_Bsy
Gearinpos_Act
Axis 1
Command position
Actual position
Command velocity
Actual velocity
Axis 2
Command position
Command velocity
Sample Programming
If StartPg is TRUE, check that the Servo Drives for each axis are ready.
StartPg MC_Axis000.DrvStatus.Ready Lock1
MC_Axis001.DrvStatus.Ready Lock2
If the Servo Drives are ready, the Servos are turned ON for each axis.
PWR1
MC_Power
Lock1 MC_Axis000 Axis Axis Pwr1_Status
Enable Status
Busy Pwr1_Bsy
Error Pwr1_Err
ErrorID Pwr1_ErrID
MC_GearInPos
PWR2
MC_Power
Lock2 MC_Axis001 Axis Axis Pwr2_Status
Enable Status
Busy Pwr2_Bsy
Error Pwr2_Err
ErrorID Pwr2_ErrID 3
Sample Programming
If a minor fault level error occurs for the axis composition, the error handler for the device (FaultHandler) is
executed.
Program the FaultHandler according to the device.
MC_Axis000.MFaultLvl.Active FaultHandler
EN FaultHandler
MC_Axis001.MFaultLvl.Active
If the Servo is ON for the master axis (axis 1) and home is not defined, the Home instruction is executed to
define home.
HM1
MC_Home
Pwr1_Status MC_Axis000.Details.Homed MC_Axis000 Axis Axis Hm1_D
Execute Done
Busy Hm1_Bsy
CommandAborted Hm1_Ca
Error Hm1_Err
ErrorID Hm1_ErrID
If the Servo is ON for the slave axis (axis 2) and home is not defined, the Home instruction is executed to
define home.
HM2
MC_Home
Pwr2_Status MC_Axis001.Details.Homed MC_Axis001 Axis Axis Hm2_D
Execute Done
Busy Hm2_Bsy
CommandAborted Hm2_Ca
Error Hm2_Err
ErrorID Hm2_ErrID
The MC_MoveVelocity (Velocity Control) instruction is executed after homing is completed for the master axis
(axis 1).
VEL
MC_MoveVelocity
Hm1_D MC_Axis000 Axis Axis Vel_InVel
Execute InVelocity
LREAL#90.0 Velocity Busy Vel_Bsy
LREAL#90.0 Acceleration Active Vel_Act
LREAL#90.0 Deceleration CommandAborted Vel_Ca
LREAL#0.0 Jerk Error Vel_Err
_eMC_DIRECTION#_mcPositiveDirection Direction ErrorID Vel_ErrID
Continuous
BufferMode
After homing is completed for axis 2 (slave axis), MC_GearInPos (Positioning Gear Operation) is executed to
start gear operation if Vel_InVel of MC_MoveVelocity is TRUE.
GEARINPOS
MC_GearInPos
MC_Axis000 Master Master
MC_Axis001.Details.Homed Vel_InVel MC_Axis001 Slave Slave Gearinpos_StSync
Execute StartSync
UINT#1 RatioNumerator InSync Gearinpos_InSync
UINT#2 RatioDenominator Busy Gearinpos_Bsy
_eMC_REFERENCE_TYPE#_mcFeedback ReferenceType Active Gearinpos_Act
Pos1 MasterSyncPosition CommandAborted Gearinpos_Ca
Pos2 SlaveSyncPosition Error Gearinpos_Err
LREAL#180.0 Velocity ErrorID Gearinpos_ErrID
LREAL#180.0 Acceleration
LREAL#180.0 Deceleration
Jerk
BufferMode
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for the master axis, axis 1.
MC_Axis000.Details.Homed BOOL FALSE TRUE when home is defined for axis 1.
MC_Axis000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 1.
MC_Axis001 _sAXIS_REF --- Axis Variable for the slave axis, axis 2.
MC_Axis001.Details.Homed BOOL FALSE TRUE when home is defined for axis 2.
MC_Axis001.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 2.
Pwr1_Status BOOL FALSE This variable is assigned to the Status output
variable from the PWR1 instance of the
MC_Power instruction. This variable changes to
TRUE when the Servo is turned ON.
MC_GearInPos
variable from the HM2 instance of the
MC_Home instruction.
Vel_InVel BOOL FALSE This variable is assigned to the InVelocity out-
put variable from the VEL instance of the
MC_MoveVelocity instruction. It is TRUE when
the target velocity is reached.
3
Pos1 LREAL --- This variable gives the master sync position.
Pos2 LREAL --- This variable gives the slave sync position.
Sample Programming
StartPg BOOL FALSE The Servo is turned ON if this variable is TRUE
and EtherCAT process data communications
are established.
Gearinpos_Ex BOOL FALSE The GEARIN1 instance of MC_GearInPos is
executed when this variable changes to TRUE.
Vel_Ex BOOL FALSE The VEL instance of MC_MoveVelocity is exe-
cuted when this variable changes to TRUE.
InitFlag BOOL FALSE This variable indicates if it is necessary to set
the input parameters.
Input parameters are set when this variable is
FALSE. When setting the input parameters is
completed, this variable changes to TRUE.
Timing Chart
Pwr1_Status
Pwr2_Status
Hm1_Ex
Hm1_D
Hm1_Bsy
Hm2_Ex
Hm2_D
Hm2_Bsy
Vel_Ex
Vel_InVel
Vel_Bsy
Vel_Act
Gearinpos_Ex
Gearinpos_StSync
Gearinpos_InSync
Gearinpos_Bsy
Gearinpos_Act
Axis 1
Command position
Actual position
Command velocity
Actual velocity
Axis 2
Command position
Command velocity
Sample Programming
// Processing when input parameters are not set
IF InitFlag = FALSE THEN
// MC_MoveVelocity parameters
Vel_Vel := LREAL#90.0;
Vel_Acc := LREAL#90.0;
Vel_Dec := LREAL#90.0;
Vel_Dir :=_eMC_DIRECTION#_mcPositiveDirection;
// MC_GearInPos parameters
Pos1 := LREAL#300.0;
Pos2 := LREAL#200.0;
Gearinpos_Rn := UINT#1;
Gearinpos_Rd := UINT#2;
Gearinpos_Rt :=_eMC_REFERENCE_TYPE#_mcFeedback;
MC_GearInPos
Gearinpos_Mtpos := Pos1;
Gearinpos_Svpos := Pos2;
Gearinpos_Vel := LREAL#180.0;
Gearinpos_Acc := LREAL#180.0;
Gearinpos_Dec := LREAL#180.0;
3
// Change InitFlag to TRUE after setting the input parameters.
InitFlag:=TRUE;
Sample Programming
END_IF;
// If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 1 is turned
ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis000.DrvStatus.Ready=TRUE) THEN
Pwr1_En:=TRUE;
ELSE
Pwr1_En:=FALSE;
END_IF;
// If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 2 is turned
ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis001.DrvStatus.Ready=TRUE) THEN
Pwr2_En:=TRUE;
ELSE
Pwr2_En:=FALSE;
END_IF;
// If a minor fault level error occurs for axis 1 or axis 2, the error handler for
the device (FaultHandler) is executed.
// Program the FaultHandler according to the device.
IF (MC_Axis000.MFaultLvl.Active=TRUE) OR (MC_Axis001.MFaultLvl.Active=TRUE)THEN
FaultHandler();
END_IF;
// If the Servo is ON for axis 1 and home is not defined, the Home instruction is e
xecuted.
IF (Pwr1_Status=TRUE) AND (MC_Axis000.Details.Homed=FALSE) THEN
Hm1_Ex:=TRUE;
END_IF;
// If the Servo is ON for axis 2 and home is not defined, the Home instruction is e
xecuted.
IF (Pwr2_Status=TRUE) AND (MC_Axis001.Details.Homed=FALSE) THEN
Hm2_Ex:=TRUE;
END_IF;
MC_GearInPos
Axis := MC_Axis001,
Execute := Hm2_Ex,
Done => Hm2_D,
Busy => Hm2_Bsy,
CommandAborted => Hm2_Ca,
Error => Hm2_Err, 3
ErrorID => Hm2_ErrID
);
Sample Programming
//MC_MoveVelocity
VEL(
Axis := MC_Axis000,
Execute := Vel_Ex,
Velocity := Vel_Vel,
Acceleration := Vel_Acc,
Deceleration := Vel_Dec,
Direction := Vel_Dir,
InVelocity => Vel_InVel,
Busy => Vel_Bsy,
Active => Vel_Act,
CommandAborted => Vel_Ca,
Error => Vel_Err,
ErrorID => Vel_ErrID
);
//MC_GearInPos
GEARINPOS(
Master := MC_Axis000,
Slave := MC_Axis001,
Execute := Gearinpos_Ex,
RatioNumerator := Gearinpos_Rn,
RatioDenominator := Gearinpos_Rd,
ReferenceType := Gearinpos_Rt,
MasterSyncPosition := Gearinpos_Mtpos,
SlaveSyncPosition := Gearinpos_Svpos,
Velocity := Gearinpos_Vel,
Acceleration := Gearinpos_Acc,
Deceleration := Gearinpos_Dec,
StartSync => Gearinpos_StSync,
MC_GearOut
The MC_GearOut instruction stops operation for the MC_GearIn (Start Gear Operation) instruction or
MC_GearInPos (Positioning Gear Operation) instruction.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_GearOut
MC_GearOut End Gear FB MC_GearOut_instance MC_GearOut_instance (
Operation MC_GearOut Slave :=parameter,
Slave Slave Execute :=parameter,
Execute Done Deceleration :=parameter,
Deceleration Busy Jerk :=parameter,
Jerk CommandAborted
OutMode :=parameter,
OutMode Error
Done =>parameter,
3
ErrorID
Busy =>parameter,
CommandAborted =>parameter,
Variables
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALS The instruction is executed when
E the value of this variable changes
to TRUE.
Deceleration Decelera- LREAL Non-negative number 0 Specify the deceleration rate.
tion Rate The unit is command units/s2. *1
Jerk Jerk LREAL 0 0 (Reserved)
(Reserved)
OutMode Sync End _eMC_OUT_MODE 0: _mcStop 0 *2 (Reserved)
(Reserved) Mode Se-
lection
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
*2. The default value for an enumeration variable is actually not the number, but the enumerator.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Data Valid
Name Meaning Description
type range
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Slave Slave Axis _sAXIS_REF --- Specify the slave axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• The MC_GearOut instruction stops the operation of the MC_GearIn (Start Gear Operation) or
MC_GearInPos (Positioning Gear Operation) instruction for the operation axis specified with Slave
and at the specified Deceleration (Deceleration Rate).
• This instruction does not affect the MC_GearIn (Start Gear Operation) or MC_GearInPos (Position-
ing Gear Operation) operation of the master axis.
Timing Charts
• Busy (Executing) changes to TRUE when Execute changes to TRUE.
• Done changes to TRUE when the target velocity is reached.
• If another instruction aborts this instruction, CommandAborted changes to TRUE and Busy (Execut-
ing) changes to FALSE.
Execute
MC_GearOut
Done
Busy
CommandAborted
Error 3
ErrorID 16#0000
Function
Velocity
Master axis velocity
Time
Execute
Done
Busy
CommandAborted
Error
ErrorID 16#0000
Velocity
Master axis velocity
Multi-execution of
another instruction
Time
Velocity
MC_GearOut executed.
Time
Errors
If an error occurs during instruction execution, Error will change to TRUE.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
Done
Busy
CommandAborted
Error
MC_GearOut
ErrorID 16#0000 Error code
Velocity
Function
Time
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_MoveLink
Positioning is performed in sync with the specified master axis.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_MoveLink Synchronous FB MC_MoveLink_instance MC_MoveLink_instance (
Positioning MC_MoveLink Master :=parameter,
Master Master Slave :=parameter,
Slave Slave TriggerInput :=parameter,
TriggerInput TriggerInput TriggerVariable :=parameter,
TriggerVariable TriggerVariable
Execute :=parameter,
Execute Done
ReferenceType :=parameter,
ReferenceType InSync
SlaveDistance Busy SlaveDistance :=parameter,
MasterDistance Active MasterDistance :=parameter,
MasterDistanceInACC CommandAborted MasterDistanceI-
MasterDistanceInDEC Error nACC :=parameter,
LinkOption ErrorID MasterDistanceIn-
MasterStartDistance
DEC :=parameter,
BufferMode
LinkOption :=parameter,
MasterStartDistance :=parameter,
BufferMode :=parameter,
Done =>parameter,
InSync =>parameter,
Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Execute Execute BOOL TRUE or FALSE FALSE The instruction is executed
when the value of this variable
changes to TRUE.
Reference- Position _eMC_REFER- 0: _mcCommand 0 *2 Specify the position type.
Type *1 Type Selec- ENCE_TYPE 1: _mcFeedback 0: Command position (value
tion 2: _mcLatestCommand calculated in the previous task
period *3)
1: Actual position (value ob-
tained in the same task period
*3)
MC_MoveLink
The unit is command units. *4
MasterDistan- Master Dis- LREAL Non-negative number 0 Specify the travel distance of
ceInACC tance in Ac- the master axis while the slave
celeration axis is accelerating. Specify the
unsigned absolute value. The
value is valid for both positive 3
and negative travel of the mas-
ter axis.
Variables
The unit is command units. *4
MasterDistan- Master Dis- LREAL Non-negative number 0 Specify the travel distance of
ceInDEC tance in De- the master axis while the slave
celeration axis is decelerating. Specify the
unsigned absolute value. The
value is valid for both positive
and negative travel of the mas-
ter axis.
The unit is command units. *4
LinkOption Synchroni- _eMC_LINKOP- 0: _mcCommandExecution 0 *2 Specify the condition for the
zation Start TION 1: _mcTriggerDetection slave axis to synchronize with
Condition 2: _mcMasterReach the master axis.
0: When instruction execution
starts
1: When trigger is detected
2: When the master axis reach-
es the master following dis-
tance.
MasterStart Master Fol- LREAL Negative number, positive 0 Specify the absolute position of
Distance lowing Dis- number, or 0 the master axis when the slave
tance axis starts following the master
axis.
The unit is command units. *4
BufferMode Buffer Mode _eMC_BUF- 0: _mcAborting 0 *2 Specify the behavior when exe-
Selection FER_MODE 1: _mcBuffered cuting more than one motion in-
struction.
0: Aborting
1: Buffered
*1. To use _mcLatestCommand, the following condition must be met for the master and slave axes.
When you use this variable, the axis number set for the Master (Master Axis) in the system-defined variable for motion
control must be lower than the axis number set for the Slave (Slave Axis) in the system-defined variable for motion
control.
*2. The default value for an enumeration variable is actually not the number, but the enumerator.
*3. The task period is the primary period if the task is the primary periodic task and the task period of the priority-5 periodic
task if the task is the priority-5 periodic task.
*4. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
InSync In Sync BOOL TRUE or TRUE when synchronization is started.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE when the axis is being controlled.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Master Master Axis _sAXIS_REF --- Specify the master axis. *1
Slave Slave Axis _sAXIS_REF --- Specify the slave axis. *1
TriggerInput Trigger Input Con- _sTRIG- --- Set the trigger condition. *2
dition GER_REF
MC_MoveLink
TriggerVariable Trigger Variable BOOL TRUE or Specify the input variable to function as the trig-
FALSE ger to specify the controller mode with a trigger
condition.
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
*2. Define a user-defined variable with a data type of _sTRIGGER_REF. 3
_sTRIGGER_REF
Function
Name Meaning Data type Valid range Function
Mode Mode _eMC_TRIG- 0: _mcDrive Specify the trigger mode.
GER_MODE 1: _mcController 0: Drive Mode
1: Controller Mode
LatchID Latch ID Se- _eMC_TRIG- 0: _mcLatch1 Specify which of the two latch functions to use in
lection GER_LATCH 1: _mcLatch2 Drive Mode.
_ID 0: Latch 1
1: Latch 2
InputDrive Trigger Input _eMC_TRIG- 0: _mcEncoderMark Specify the Servo Drive trigger signal to use in
Signal GER_IN- 1: _mcEXT Drive Mode.
PUT_DRIVE 0: Z-phase signal
1: External input
Function
• The MC_MoveLink instruction moves a slave axis in synchronization with a specified master axis.
• A type of electronic cam operation is performed, but synchronous positioning is performed between
the slave axis and the master axis.
• Use MC_Stop to stop the axis during motion for this instruction.
Do not execute the MC_SetPosition instruction for the Master (Master Axis) if you use this in-
struction on a CPU Unit with unit version 1.09 or earlier.
If the MC_SetPosition instruction is executed for the Master (Master Axis), the Slave (Slave Ax-
is) may follow the master axis quickly.
If you want to use the MC_SetPosition instruction for the Master (Master Axis), disable the rela-
tionship between the Master (Master Axis) and Slave (Slave Axis) before executing the instruc-
tion.
Refer to 1-1-3 Precautions for Master and Auxiliary Axes in Synchronized Control on page 1 - 6
for precautions on the master axis.
If even one of the required objects is not set, a Process Data Object Setting Missing error (error code
3461 hex) occurs.
For details on mapping data objects, refer to 2-3 PDO Mapping on page 2 - 39 and to the NJ/NX-
series CPU Unit Motion Control User’s Manual (Cat. No. W507).
Refer to I/O Entry Mappings in the NX-series Position Interface Units User’s Manual (Cat. No. W524)
for information on using the NX-series Position Interface Units.
Instruction Details
This section describes the instruction in detail.
The actual position of the master axis that was obtained in the same task period is used.
• _mcLatestCommand: Command position (value calculated in the same task period)
The command position of the master axis that was calculated in the same task period is used.
This enables the use of information that is more recent than for _mcCommand. However, the axis
number of the master axis must be set lower than the axis number of the slave axis.
If the axis number of the slave axis is lower than the axis number of the master axis, Error will
change to TRUE. A Master/Slave Axis Numbers Not in Ascending Order error (error code: 5438
hex) will be output to ErrorID.
MC_MoveLink
Precautions for Correct Use
Here, the task period is the primary period if the task is the primary periodic task and the task
period of the priority-5 periodic task if the task is the priority-5 periodic task. In the same way,
the periodic task is the primary periodic task or the priority-5 periodic task.
3
Additional Information
Function
The command position that is calculated in the same task period enables greater precision in
synchronization than the command position that was calculated in the previous task period.
However, the axis number set for the Master (Master Axis) in the system-defined variable for
motion control must be lower than the axis number set for the Slave (Slave Axis) in the system-
defined variable for motion control.
ReferenceType
Axis Type
_mcCommand or _mcLatestCommand _mcFeedback
Servo axis OK OK
Encoder axis No *1 OK
Virtual servo axis OK OK
Virtual encoder No *1 OK
axis
*1. A Position Type Selection Out of Range error (error code: 5430 hex) occurs when the instruction is execut-
ed.
MasterDistanceInDEC
MasterDistance
MasterDistanceInACC
Master
following
distance
Time
Slave axis position
SlaveDistance
Time
Slave axis velocity
Time
Master
following MasterDistanceInACC
distance
MasterDistance
MasterDistanceInDEC
Time
Slave axis position
SlaveDistance
Time
Slave axis velocity
Time
The relationship between the travel distance of the master axis and the travel distance of the slave
axis is shown in the following table.
Sec-
Relationship between the master axis and slave axis travel distances
tion
Accel- Mas- Master Distance in Acceleration
era- ter ax-
tion is
Slave Master distance in acceleration
Slave axis 2
axis travel ×
Master distance (Master axis travel distance - Master distance in Master distance
distance in acceleration + acceleration - Master distance in deceleration) + in deceleration
2 2
MC_MoveLink
Con- Mas- Master axis travel distance - Master distance in acceleration - Master distance in deceleration
stant ter ax-
veloc- is
ity Slave Slave axis travel distance - Slave axis travel distance at the acceleration rate above - Slave
axis axis travel distance at the deceleration rate below
De- Mas- Master Distance in Deceleration 3
cele- ter ax-
ration is
Function
Slave Master distance in deceleration
Slave axis 2
axis travel ×
distance Master distance (Master axis travel distance - Master distance in Master distance
in acceleration + acceleration - Master distance in deceleration) + in deceleration
2 2
When the constant velocity section of the master axis is negative, a constant velocity travel distance
error occurs and the axis stops.
If you want to feed the slave axis at the same velocity as the master axis, set the following value as
the travel distance of the slave axis.
If the counter mode for the master axis is Rotary Mode, specify a value that is within one ring
counter cycle for MasterDistance (Master Axis Travel Distance).
You must map object data when LinkOption (Synchronization Start Condition) is set to
_mcTriggerDetection and Mode is set to Drive Mode.
Set the following objects.
• Touch probe function (60B8 hex)
• Touch probe status (60B9 hex)
• Touch probe pos1 pos value (60BA hex)
• Touch probe pos2 pos value (60BC hex)
If even one of the required objects is not set, a Process Data Object Setting Missing error (error
code 3461 hex) occurs.
For details on mapping data objects, refer to 2-3 PDO Mapping on page 2 - 39 and to the
NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507).
For details on BufferMode (Buffer Mode Selection), refer to the NJ/NX-series CPU Unit Motion Control
User’s Manual (Cat. No. W507).
In-position Check
An in-position check is performed when the slave axis ends operation.
An in-position check is performed for this instruction according to the settings in In-position Range
and In-position Check Time axis parameters.
Timing Charts
Executing MC_MoveLink
LinkOption (Synchronization Start Condition) Set to 0: _mcCommandExecution
Execute
Done
MC_MoveLink
InSync
Busy
Active
Master axis
Function
Slave axis
Time
Slave axis
velocity
Time
Execute
TriggerInput
Done
InSync
Busy
Active
Master axis
Slave axis
Time
Execute
Done
InSync
Busy
Active
MC_MoveLink
Master axis
Master
following
distance
Slave axis
3
Function
Slave Time
axis
velocity
Time
As shown in the following chart, the velocity of the slave axis becomes discontinuous when this
instruction is started.
Done
Busy
Active
CommandAborted
Current Instruction
Execute
Done
InSync
Busy
Active
CommandAborted
Time
Execute
Done
InSync
Busy
Active
MC_MoveLink
CommandAborted
Error
Sample Programming
Time
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axis will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Refer to Re-execution of Motion Control Instructions on page 3 - 304 for the timing chart after an error
occurs.
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
Sample Programming
This sample programming shows the control of a cutter.
Parameter Settings
The minimum settings required for this sample programming are given below.
Count Modes
Ring Counter
Modulo Modulo
Axis maximum minimum
position position
Axis 1 360 0
Units of Display
Operation Example
Axis 2
Servo axis Pneumatic actuator
Axis 1
Servo axis
Operation Patterns
Axis 1 position
M_DEC
M_Dist
MC_MoveLink
M_ACC
M_StartPos
Time
3
Axis 2 position
Sample Programming
Synchronization S_Dist
started.
Time
Ladder Diagram
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for the master axis, axis 1.
MC_Axis000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 1.
MC_Axis000.Details.Homed BOOL FALSE TRUE when home is defined for axis 1.
MC_Axis001 _sAXIS_REF --- Axis Variable for the slave axis, axis 2.
MC_Axis001.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 2.
MC_Axis001.Details.Homed BOOL FALSE TRUE when home is defined for axis 2.
Timing Chart
MC_Axis001.DrvStatus.Latch1
Mv_Link_D
Mv_Link_InSync
Mv_Link_Bsy
MC_Axis001.Cmd.Vel
Time
Sample Programming
If StartPg is TRUE, check that the Servo Drives for each axis are ready.
StartPg MC_Axis000.DrvStatus.Ready Lock1
MC_Axis001.DrvStatus.Ready Lock2
If the Servo Drives are ready, the Servos are turned ON for each axis.
PWR1
MC_Power
Lock1 MC_Axis000 Axis Axis Pwr1_Status
Enable Status
Busy Pwr1_Bsy
Error Pwr1_Err
ErrorID Pwr1_ErrID
MC_MoveLink
PWR2
MC_Power
Lock2 MC_Axis001 Axis Axis Pwr2_Status
Enable Status
Busy Pwr2_Bsy
Error Pwr2_Err
ErrorID Pwr2_ErrID 3
Sample Programming
If a minor fault level error occurs for the axis composition, the error handler for the device (FaultHandler) is
executed.
Program the FaultHandler according to the device.
MC_Axis000.MFaultLvl.Active FaultHandler
EN FaultHandler
MC_Axis001.MFaultLvl.Active
If the Servo is ON for axis 1 and home is not defined, the Home instruction is executed to define home.
HM1
MC_Home
Pwr1_Status MC_Axis000.Details.Homed MC_Axis000 Axis Axis Hm1_D
Execute Done
Busy Hm1_Bsy
CommandAborted Hm1_Ca
Error Hm1_Err
ErrorID Hm1_ErrID
If the Servo is ON for axis 2 and home is not defined, the Home instruction is executed to define home.
HM2
MC_Home
Pwr2_Status MC_Axis001.Details.Homed MC_Axis001 Axis Axis Hm2_D
Execute Done
Busy Hm2_Bsy
CommandAborted Hm2_Ca
Error Hm2_Err
ErrorID Hm2_ErrID
The parameters are set for the MC_MoveVelocity (Velocity Control) and MC_MoveLink (Synchronous
Positioning) instructions.
InitFlag
The MC_MoveVelocity (Velocity Control) instruction is executed if home is defined for axis 1.
VEL
MC_MoveVelocity
MC_Axis000.Details.Homed MC_Axis000 Axis Axis Vel_InVel
Execute InVelocity
Vel_Vel Velocity Busy Vel_Bsy
Vel_Acc Acceleration Active Vel_Act
Vel_Dec Deceleration CommandAborted Vel_Ca
Jerk Error Vel_Err
Direction ErrorID Vel_EIrrD
Continuous
BufferMode
The MC_MoveLink (Synchronous Positioning) instruction is executed if home is defined for axis 2 (slave axis).
MV_LINK
MC_MoveLink
MC_Axis000 Master Master
MC_Axis001 Slave Slave
Mv_Link_TrigRef TriggerInput TriggerInput
MC_Axis001.Details.Homed Vel_InVel Mv_Link_TrigVar TriggerVariable TriggerVariable Mv_Link_D
Execute Done
ReferenceType InSync Mv_Link_InSync
Mv_Link_SlvDis SlaveDistance Busy Mv_Link_Bsy
Mv_Link_MasDis MasterDistance Active Mv_Link_Act
Mv_Link_MasDisInAcc MasterDistanceInACC CommandAborted Mv_Link_Ca
Mv_Link_MasDisInDec MasterDistanceInDEC Error Mv_Link_Err
Mv_Link_LnkOpt LinkOption ErrorID Mv_Link_ErrID
MasterStartDistance
BufferMode
Contents of Inline ST
// MC_MoveVelocity parameters
Vel_Vel := LREAL#1000.0;
Vel_Acc := LREAL#0.0;
Vel_Dec := LREAL#0.0;
// MC_MoveLink parameters
Mv_Link_TrigRef.Mode := _eMC_TRIGGER_MODE#_mcDrive;
Mv_Link_TrigRef.LatchID := _eMC_TRIGGER_LATCH_ID#_mcLatch1;
Mv_Link_TrigRef.InputDrive := _eMC_TRIGGER_INPUT_DRIVE#_mcEXT;
Mv_Link_TrigVar := FALSE;
Mv_Link_SlvDis := LREAL#1000.0;
Mv_Link_MasDis := LREAL#1000.0;
Mv_Link_MasDisInAcc := LREAL#100.0;
Mv_Link_MasDisInDec := LREAL#100.0;
Mv_Link_LnkOpt := _eMC_LINKOPTION#_mcTriggerDetection;
MC_MoveLink
// Change InitFlag to TRUE after setting the input parameters.
InitFlag := TRUE;
Main Variables
Sample Programming
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for the master axis, axis 1.
MC_Axis000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 1.
MC_Axis000.Details.Homed BOOL FALSE TRUE when home is defined for axis 1.
MC_Axis001 _sAXIS_REF --- Axis Variable for the slave axis, axis 2.
MC_Axis001.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 2.
MC_Axis001.Details.Homed BOOL FALSE TRUE when home is defined for axis 2.
Pwr1_Status BOOL FALSE This variable is assigned to the Status output
variable from the PWR1 instance of the
MC_Power instruction. This variable changes to
TRUE when the Servo is turned ON.
Pwr2_Status BOOL FALSE This variable is assigned to the Status output
variable from the PWR2 instance of the
MC_Power instruction. This variable changes to
TRUE when the Servo is turned ON.
StartPg BOOL FALSE The Servo is turned ON if this variable is TRUE
and EtherCAT process data communications
are established.
Actuator BOOL FALSE TRUE when axis 1 and axis 2 are synchronized.
While Actuator is TRUE, the cutter moves down
vertically.
InitFlag BOOL FALSE This variable indicates if it is necessary to set
the input parameters.
Input parameters are set when this variable is
FALSE. When setting the input parameters is
completed, this variable changes to TRUE.
Timing Chart
MC_Axis001.DrvStatus.Latch1
Mv_Link_Ex
Mv_Link_D
Mv_Link_InSync
Mv_Link_Bsy
MC_Axis001.Cmd.Vel
Time
Sample Programming
// Processing when input parameters are not set
IF InitFlag=FALSE THEN
// MC_MoveVelocity parameters
Vel_Vel := LREAL#1000.0;
Vel_Acc := LREAL#0.0;
Vel_Dec := LREAL#0.0;
// MC_MoveLink parameters
Mv_Link_TrigRef.Mode :=_eMC_TRIGGER_MODE#_mcDrive;
Mv_Link_TrigRef.LatchID :=_eMC_TRIGGER_LATCH_ID#_mcLatch1;
Mv_Link_TrigRef.InputDrive :=_eMC_TRIGGER_INPUT_DRIVE#_mcEXT;
Mv_Link_TrigVar := FALSE;
Mv_Link_SlvDis := LREAL#1000.0;
Mv_Link_MasDis := LREAL#1000.0;
Mv_Link_MasDisInAcc := LREAL#100.0;
Mv_Link_MasDisInDec := LREAL#100.0;
Mv_Link_LnkOpt :=_eMC_LINKOPTION#_mcTriggerDetection;
END_IF;
// If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 1 is turned
ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
// If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 2 is turned
ON.
MC_MoveLink
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis001.DrvStatus.Ready=TRUE) THEN
Pwr2_En:=TRUE; // Turn ON the Servo for axis 2.
ELSE
Pwr2_En:=FALSE; // Turn OFF the Servo for axis 2. 3
END_IF;
Sample Programming
// Processing for a minor fault level error
// Program the FaultHandler according to the device.
IF (MC_Axis000.MFaultLvl.Active=TRUE) OR (MC_Axis001.MFaultLvl.Active=TRUE) THEN
FaultHandler();
END_IF;
// If the Servo is ON for axis 1 and home is not defined, the Home instruction is e
xecuted.
IF (Pwr1_Status=TRUE) AND (MC_Axis000.Details.Homed=FALSE) THEN
Hm1_Ex:=TRUE;
END_IF;
// If the Servo is ON for axis 2 and home is not defined, the Home instruction is e
xecuted.
IF (Pwr2_Status=TRUE) AND (MC_Axis001.Details.Homed=FALSE) THEN
Hm2_Ex:=TRUE;
END_IF;
// MC_MoveLink is executed for axis 2 if home is defined for axis 2 and the target
velocity was reached for axis 1.
IF (MC_Axis001.Details.Homed=TRUE) AND (Vel_InVel=TRUE) THEN
Mv_Link_Ex:=TRUE;
END_IF;
Actuator:=TRUE;
ELSE
Actuator:=FALSE;
END_IF;
// MC_Power1
PWR1(
Axis := MC_Axis000,
Enable := Pwr1_En,
Status => Pwr1_Status,
Busy => Pwr1_Bsy,
Error => Pwr1_Err,
ErrorID => Pwr1_ErrID
);
// MC_Power2
PWR2(
Axis := MC_Axis001,
Enable := Pwr2_En,
Status => Pwr2_Status,
Busy => Pwr2_Bsy,
Error => Pwr2_Err,
ErrorID => Pwr2_ErrID
);
// MC_Home1
HM1(
Axis := MC_Axis000,
Execute := Hm1_Ex,
Done => Hm1_D,
Busy => Hm1_Bsy,
CommandAborted => Hm1_Ca,
Error => Hm1_Err,
ErrorID => Hm1_ErrID
);
// MC_Home2
HM2(
Axis := MC_Axis001,
Execute := Hm2_Ex,
Done => Hm2_D,
Busy => Hm2_Bsy,
CommandAborted => Hm2_Ca,
Error => Hm2_Err,
ErrorID => Hm2_ErrID
);
// MC_MoveVelocity
VEL(
Axis := MC_Axis000,
Execute := Vel_Ex,
Velocity := Vel_Vel,
Acceleration := Vel_Acc,
Deceleration := Vel_Dec,
InVelocity => Vel_InVel,
MC_MoveLink
Busy => Vel_Bsy,
Active => Vel_Act,
CommandAborted => Vel_Ca,
Error => Vel_Err,
ErrorID => Vel_ErrID
); 3
// MC_MoveLink
Sample Programming
MV_LINK(
Master := MC_Axis000,
Slave := MC_Axis001,
TriggerInput := Mv_Link_TrigRef,
TriggerVariable := Mv_Link_TrigVar,
Execute := Mv_Link_Ex,
SlaveDistance := Mv_Link_SlvDis,
MasterDistance := Mv_Link_MasDis,
MasterDistanceInAcc := Mv_Link_MasDisInAcc,
MasterDistanceInDec := Mv_Link_MasDisInDec,
LinkOption := Mv_Link_LnkOpt,
Done => Mv_Link_D,
InSync => Mv_Link_InSync,
Busy => Mv_Link_Bsy,
Active => Mv_Link_Act,
CommandAborted => Mv_Link_Ca,
Error => Mv_Link_Err,
ErrorID => Mv_Link_ErrID
);
MC_CombineAxes
The MC_CombineAxes instruction outputs the sum or difference of the command positions of two ax-
es as the command position.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_CombineAx- Combine FB MC_CombineAxes_instance MC_CombineAxes_instance (
es Axes MC_CombineAxes Master :=parameter,
Master Master Auxiliary :=parameter,
Auxiliary Auxiliary Slave :=parameter,
Slave Slave Execute :=parameter,
Execute InCombination
CombineMode :=parameter,
CombineMode Busy
RatioNumeratorMaster :=parameter,
RatioNumeratorMaster Active
RatioDenominatorMaster CommandAborted RatioDenominatorMaster :=parameter,
RatioNumeratorAuxiliary Error RatioNumeratorAuxiliary :=parameter,
RatioDenominatorAuxiliary ErrorID RatioDenominatorAuxili-
ReferenceTypeMaster ary :=parameter,
ReferenceTypeAuxiliary ReferenceTypeMaster :=parameter,
BufferMode
ReferenceTypeAuxiliary :=parameter,
BufferMode :=parameter,
InCombination =>parameter,
Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALS The instruction is executed when
E the value of this variable changes
to TRUE.
CombineMode Combine _eMC_COM- 0: _mcAddAxes 0*1 Specify the combining method.
Mode BINE_MODE 1: _mcSubAxes 0: Addition
1: Subtraction
RatioNumera- Master Axis DINT*2 Positive or negative 10000 (Reserved)
torMaster Gear Ratio number*2
(Reserved) Numerator
RatioDenomi- Master Axis UDINT*3 Positive number 10000 (Reserved)
natorMaster Gear Ratio
(Reserved) Denomina-
tor
De-
Name Meaning Data type Valid range Description
fault
RatioNumera- Auxiliary DINT*2 Positive or negative 10000 (Reserved)
torAuxiliary Axis Gear number*2
(Reserved) Ratio Nu-
merator
RatioDenomi- Auxiliary UDINT*3 Positive number 10000 (Reserved)
natorAuxiliary Axis Gear
MC_CombineAxes
(Reserved) Ratio De-
nominator
ReferenceTy- Master Axis _eMC_REFER- 1: _mcFeedback 2*1 Specify the position type of the
peMaster Position ENCE_TYPE 2: _mcLatestCom- master axis.
Type Selec- mand 1: Actual position (value obtained
tion in the same task period*4)
2: Command position (value calcu-
3
lated in the same task period*4)
ReferenceTy- Auxiliary _eMC_REFER- 1: _mcFeedback 2*1 Specify the position type of the
Variables
peAuxiliary Axis Posi- ENCE_TYPE 2: _mcLatestCom- auxiliary axis.
tion Type mand 1: Actual position (value obtained
Seleciton in the same task period*4)
2: Command position (value calcu-
lated in the same task period*4)
BufferMode Buffer _eMC_BUF- 0: _mcAborting 0*1 Specify the behavior when execut-
Mode Se- FER_MODE ing more than one motion instruc-
lection tion.
0: Aborting
*1. The default value for an enumeration variable is actually not the number, but the enumerator.
*2. A CPU Unit with unit version 1.02 or later and Sysmac Studio version 1.03 or higher are required to use this variable.
For any previous version combinations, the data type is UINT and the valid range is positive numbers.
*3. A CPU Unit with unit version 1.02 or later and Sysmac Studio version 1.03 or higher are required to use this variable.
For any previous version combinations, the data type is UINT.
*4. The task period is the primary period if the task is the primary periodic task and the task period of the priority-5 periodic
task if the task is the priority-5 periodic task.
Output Variables
Data Valid
Name Meaning Description
type range
InCombination Axes Combined BOOL TRUE or TRUE when axes are combined.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE when the axis is being controlled.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
Data Valid
Name Meaning Description
type range
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Master Master Axis _sAXIS_REF --- Specify the master axis. *1
Auxiliary Auxiliary Axis _sAXIS_REF --- Specify the auxiliary axis. *1
Slave Slave Axis _sAXIS_REF --- Specify the slave axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
One of the following minor faults will occur if the different axes are not used for the master,
slave, and auxiliary axes.
• Master and Slave Defined as Same Axis (error code 5436 hex)
• Master and Auxiliary Defined as Same Axis (error code 5437 hex)
• Auxiliary and Slave Defined as Same Axis (error code 548E hex)
Function
• The MC_CombineAxes instruction starts combining axes when Execute changes to TRUE.
Do not execute the MC_SetPosition instruction for the Master (Master Axis) if you use this in-
struction on a CPU Unit with unit version 1.09 or earlier. If the MC_SetPosition instruction is
executed for the Master (Master Axis), the Slave (Slave Axis) may follow the master axis quick-
ly.
If you want to use the MC_SetPosition instruction for the Master (Master Axis), disable the rela-
tionship between the Master (Master Axis) and Slave (Slave Axis) before executing the instruc-
tion.
MC_CombineAxes
Refer to 1-1-3 Precautions for Master and Auxiliary Axes in Synchronized Control on page 1 - 6
for precautions on the master axis.
This precaution also applies to Auxiliary (Auxiliary Axis) in the same way as for Master (Master
Axis).
Instruction Details 3
From the starting point, the relative value of the Auxiliary (Auxiliary Axis) position is added to or sub-
Function
tracted from the relative value of the Master (Master Axis) position and is output as a relative value for
the Slave (Slave Axis) command position.
• Adding or subtracting the position is performed as numerical operations without considering the Unit
of Display for the axis in the axis parameters.
• Execute the MC_Stop instruction to end this instruction.
Depending on the values for the Master (Master Axis) and Auxiliary (Auxiliary Axis), the travel
distance, velocity, and acceleration of the Slave (Slave Axis) can change rapidly.
Use this setting with care.
Master
Execute of
Velocity
MC_CombineAxes
changes to TRUE
Slave
Execute of
Time MC_CombineAxes
Velocity changes to TRUE
Position: 200 Position: 600
+
Auxiliary
Time
Position: 100 Position: 200
Master Execute of
Velocity MC_CombineAxes
changes to TRUE
Slave Execute of
Time Velocity MC_CombineAxes
Position: 200 Position: 600 changes to TRUE
-
Auxiliary
Execute of Time
Velocity MC_CombineAxes
changes to TRUE Position: 0 Position: 390
Time
Position: 100 Position: 110
In-position Check
An in-position check is not performed for this instruction.
Override Factors
You cannot set override factors with the MC_SetOverride (Set Override Factors) instruction for this in-
struction.
MC_CombineAxes
• _mcFeedback: Value obtained in the same task period
The actual position of the master axis that was obtained in the same task period is used.
• _mcLatestCommand: Command position (value calculated in the same task period)
The command position of the master axis that was calculated in the same task period is used.
However, if _mcLatestCommand is selected, the axis numbers of the master axis and auxiliary axis
must be set lower than the axis number of the slave axis.
If the axis number of the slave axis is lower than the axis numbers of the master axis or auxiliary 3
axis, Error will change to TRUE. A Master/Slave Axis Numbers Not in Ascending Order error (error
code: 5438 hex) will be output to ErrorID.
Function
There are no restrictions in the relationship of the axis numbers between the master axis and the
auxiliary axis.
Here, the task period is the primary period if the task is the primary periodic task and the task
period of the priority-5 periodic task if the task is the priority-5 periodic task. In the same way,
the periodic task is the primary periodic task or the priority-5 periodic task.
ReferenceType
Axis Type
_mcFeedback _mcLatestCommand
Servo axis OK OK
Encoder axis OK No*1
Virtual servo axis OK OK
Virtual encoder OK No*1
axis
*1. A Position Type Selection Out of Range error (error code: 5430 hex) occurs when the instruction is execut-
ed.
Timing Charts
• Busy (Executing) changes to TRUE at the same time as Execute changes to TRUE. Active (Control-
ling) changes to TRUE in the next period.
• InCombination (Axes Combined) changes to TRUE in the period where the combined output starts.
• If another instruction aborts this instruction, CommandAborted changes to TRUE and Busy (Execut-
ing), Active (Controlling), and InCombination (Axes Combined) change to FALSE.
Execute
InCombination
Busy
Active
Command Aborted
Error
ErrorID 16#0000
Time
Execute
InCombination
Busy
Active
MC_CombineAxes
Command Aborted
Error
ErrorID 16#0000
Function
Auxiliary axis position Time
Time
Execute
InCombination
Busy
Active
Command Aborted
Error
ErrorID 16#0000
Time
Slave axis position Multi-execution of
another instruction Operation for multi-
execution of instructions
Time
Errors
MC_CombineAxes
Execute
InCombination
Busy
Active
3
Command Aborted
Function
Error
Time
Additional Information
• This instruction is not affected by errors in the Master (Master Axis) or the Auxiliary (Auxiliary
Axis).
• After the error is cleared and the Master (Master Axis) or the Auxiliary (Auxiliary Axis) is in
motion, the Slave (Slave Axis) will resume the combined positioning operation. The Master
(Master Axis) and the Auxiliary (Auxiliary Axis) are not affected if an error occurs for the slave
axis during startup or execution of this instruction, but this instruction is aborted.
If a minor fault level error occurs during instruction execution, CommandAborted will change to TRUE
and the axis will stop.
The axis decelerates to a stop at Maximum Deceleration that is set in the axis parameters.
You can find out the cause of the error by referring to the value output to the MFalutLvl.Code Axis Vari-
able for the Slave (Slave Axis).
Execute
InCombination
Busy
Active
Command Aborted
Error
ErrorID 16#0000
Time
Slave axis position
Error occurs.
Time
If you clear the error for this instruction, the instruction will not start until Execute changes to TRUE
again.
Execute
InCombination
Busy
Active
Command Aborted
MC_CombineAxes
Error reset.
Error
3
Auxiliary axis position
Time
Function
Slave axis position
Time
Time
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_Phasing
The MC_Phasing instruction shifts the phase of the master axis currently in synchronized control.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_Phasing Shift Master FB MC_Phasing_instance MC_Phasing_instance (
Axis Phase MC_Phasing Master :=parameter,
Master Master Slave :=parameter,
Slave Slave Execute :=parameter,
Execute Done PhaseShift :=parameter,
PhaseShift Busy
Velocity :=parameter,
Velocity Active
Acceleration :=parameter,
Acceleration CommandAborted
Deceleration Error Deceleration :=parameter,
Jerk ErrorID Jerk :=parameter,
BufferMode BufferMode :=parameter,
Done =>parameter,
Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALS The instruction is executed when
E this variable changes to TRUE.
PhaseShift Phase shift LREAL Negative number, 0 Specify the master axis phase shift
amount positive number, or 0 amount.
The unit is command units. *1
Velocity Target Ve- LREAL Positive number 0 Specify the target velocity for the
locity shift amount. *2
The unit is command units/s. *1
Acceleration Accelera- LREAL Non-negative number 0 Specify the acceleration rate.
tion Rate The unit is command units/s2. *1
Deceleration Decelera- LREAL Non-negative number 0 Specify the deceleration rate.
tion Rate The unit is command units/s2. *1
Jerk Jerk LREAL Non-negative number 0 Specify the jerk.
The unit is command units/s3. *1
De-
Name Meaning Data type Valid range Description
fault
BufferMode Buffer _eMC_BUF- 0: _mcAborting 0*3 Specify the behavior when execut-
Mode Se- FER_MODE ing more than one motion instruc-
lection tion.
0: Aborting
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507).
*2. Always set the target velocity. A Target Velocity Setting Out of Range error (error code: 5422 hex) occurs when the
instruction is executed if the target velocity is not set.
*3. The default value for an enumeration variable is actually not the number, but the enumerator.
MC_Phasing
Output Variables
Data Valid
Name Meaning
type range
Description 3
Done Done BOOL TRUE or TRUE when the instruction is completed.
Variables
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE when the axis is being controlled.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Master Master Axis _sAXIS_REF --- Specify the master axis. *1
Slave Slave Axis _sAXIS_REF --- Specify the slave axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
If you specify the same axis for the master axis and slave axis, a Master and Slave Defined as
Same Axis minor fault (error code 5436 hex) will occur.
Function
• Except during execution of the MC_CombineAxes instruction, if the MC_Phasing instruction is exe-
cuted when single-axis synchronized control is in progress, the phase of the master axis is shifted
according to the settings of PhaseShift (Phase Shift Amount), Velocity (Target Velocity),
Acceleration (Acceleration Rate), and Deceleration (Deceleration Rate).
• The command current position and actual current position of the master axis do not change, and the
relative shift between the command current position and actual current position of the master axis is
taken as the phase of the master axis.
The slave axis is synchronized to the shifted master axis phase.
• Done changes to TRUE when the PhaseShift (Phase Shift Amount) is reached.
• Shifting is ended when execution of the synchronized control instruction is completed. If a synchron-
ized control instruction is executed again, the previous amount of shift is not affected.
• You can shift the phase of the master axis for the following synchronized control instructions:
MC_CamIn (Start Cam Operation), MC_GearIn (Start Gear Operation), MC_GearInPos (Positioning
Gear Operation), and MC_MoveLink (Synchronous Positioning).
• In the user program, place the MC_Phasing instruction after synchronized control instructions as
shown below.
GEARIN
MC_GearIn
MC_Axis000 Master Master
StartGear MC_Axis001 Slave Slave InG
Execute InGear
G_Num RatioNumerator Busy G_Bsy
G_Den RatioDenominator Active G_Act
_eMC_REFERENCE_TYPE#_mcCommand ReferenceType CommandAborted G_Ca
G_Acc Acceleration Error G_Err
G_Dec Deceleration ErrorID G_ErrID
G_Jerk Jerk
MC_Phasing
BufferMode
PHASING
MC_Phasing
MC_Axis000 Master Master
G_Bsy StartPhase MC_Axis001 Slave Slave P_D 3
Execute Done
P_Shift PhaseShift Busy P_Bsy
Function
P_Vel Velocity Active P_Act
P_Acc Acceleration CommandAborted P_Ca
P_Dec Deceleration Error P_Err
P_Jerk Jerk ErrorID P_ErrID
BufferMode
Refer to 1-1-3 Precautions for Master and Auxiliary Axes in Synchronized Control on page 1 - 6
for precautions on the master axis.
Instruction Details
This section describes the instruction in detail.
The target velocity (shift velocity) of the Master (Master Axis) as viewed from the Slave (Slave Axis) is
shown below as specified by the phase shift amount, acceleration rate, deceleration rate, and jerk.
Execute
Done
Busy
Active
Command Aborted
Error
ErrorID 16#0000
Time
Slave axis position
Slave axis position
when phase offset is 0
Time
• If you set the phase shift amount to 0, the phase shift amount of the Master (Master Axis) will be 0
and the instruction ends normally.
• If you set the target velocity (shift velocity) to 0, a Slave (Slave Axis) error will occur because the
value is out of range.
• The sum of the specified target velocity (shift velocity) and the Master (Master Axis) velocity can ex-
ceed the maximum velocity of the Master (Master Axis).
Additional Information
Error detection for the results of the MC_Phasing instruction is performed for the operation of
the synchronized Slave (Slave Axis).
Therefore, error detection is not performed for the settings of the Velocity (Target Velocity),
Acceleration (Acceleration Rate), and Deceleration (Deceleration Rate) variables when the
MC_Phasing instruction is executed.
For details on BufferMode (Buffer Mode Selection), refer to the NJ/NX-series CPU Unit Motion Control
User’s Manual (Cat. No. W507).
MC_Phasing
In-position Check
When the phase shift operation is completed, phase shift output is ended and an in-position check is
not performed.
3
Function
If you re-execute the instruction during instruction execution, you can change the PhaseShift (Phase
Shift Amount), Velocity (Target Velocity), Acceleration (Acceleration Rate), and Deceleration (Deceler-
ation Rate).
They are changed in the same way as for relative positioning.
Error
If an error occurs during instruction execution, Error will change to TRUE and the slave axis will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
CommandAborted of the MC_Phasing (Shift Master Axis Phase) instruction changes to TRUE when
the Slave (Slave Axis) is released from synchronization due to an error.
The error state of the master axis does not affect the operation of this instruction.
Execute
Busy
Active
CommandAborted
Error
ErrorID 16#0000
Done
Busy
Active
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_TorqueControl
The MC_TorqueControl instruction uses the Torque Control Mode of the Servo Drive to control the tor-
que.
FB/
MC_TorqueControl
Instruction Name Graphic expression ST expression
FUN
MC_TorqueCon- Torque Con- FB MC_TorqueControl_instance MC_TorqueControl_instance (
trol trol MC_TorqueControl Axis :=parameter,
Axis Axis Execute :=parameter,
Execute InTorque Torque :=parameter,
Torque Busy TorqueRamp :=parameter,
TorqueRamp Active
Velocity :=parameter,
Velocity CommandAborted
Direction :=parameter,
3
Direction Error
BufferMode ErrorID BufferMode :=parameter,
InTorque =>parameter,
Variables
Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
You cannot use this instruction for an NX-series Pulse Output Unit.
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALS The instruction is executed when
E the value of this variable changes
to TRUE.
Torque Target Tor- LREAL 0 to 1000.0 300.0 Specify the target torque to output
que to the Servo Drive in increments of
0.1%.
Specify a percentage of the rated
torque, i.e., the rated torque is
100.0%. *1
The unit is %.
TorqueRamp Torque LREAL Non-negative number 0 Specify the change rate of torque
Ramp from the current value to the target
torque.
The unit is %/s.
Velocity Velocity LREAL Non-negative number 0 Specify the target velocity. The unit
Limit is command units/s. *2
De-
Name Meaning Data type Valid range Description
fault
Direction Direction _eMC_DIREC- 0: _mcPositiveDirection 0*3 Specify the direction of the target
TION 2: _mcNegativeDirection torque.
0: Positive direction
2: Negative direction
BufferMode Buffer _eMC_BUF- 0: _mcAborting 0*3 Specify the behavior when execut-
Mode Se- FER_MODE 1: _mcBuffered ing more than one motion instruc-
lection tion.
0: Aborting
1: Buffered
*1. If a value that is higher than 1,000.0% is specified, it will be treated as 1,000.0%. If a negative value is specified, it will
be treated as 0.0%.
*2. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
*3. The default value for an enumeration variable is actually not the number, but the enumerator.
Output Variables
Data Valid
Name Meaning Description
type range
InTorque Target Torque BOOL TRUE or TRUE when the target torque is reached.
Reached FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE when the axis is being controlled.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
MC_TorqueControl
• When you start this instruction during
MC_Stop instruction execution.
Error When there is an error in the execution condi- When the error is cleared.
tions or input parameters for the instruction.
In-Out Variables 3
Valid
Name Meaning Data type Description
range
Function
Axis Axis _sAXIS_REF --- Specifies the axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• The MC_TorqueControl instruction controls the output torque of the Servomotor by directly specify-
ing the torque command value.
• Set the target torque in increments of 0.1%. If the second decimal place is specified, it will be round-
ed off.
• Use the MC_Stop instruction to stop the execution of this instruction.
• The Torque Control Mode of the Servo Drive is used to perform torque control.
• The previous Control Mode is maintained until it is changed.
Example:
Changing from position control to torque control: Position control is performed until the Servo Drive
changes to torque control.
Changing from torque control to position control: Torque control is performed until the Servo Drive
changes to position control.
If even one of the required objects is not set, a Process Data Object Setting Missing error (error code
3461 hex) occurs.
For details on mapping data objects, refer to 2-3 PDO Mapping on page 2 - 39 and to the NJ/NX-
series CPU Unit Motion Control User’s Manual (Cat. No. W507).
Instruction Details
This section describes the instruction in detail.
Specifying Axis
Axis specifies the axis for torque control.
TorqueRamp
Specify the slope from the currently specified command torque until the target torque is output.
Torque
Torque
TorqueRamp
Time
Torque
Time
TorqueRamp
Torque
Set the target torque so that the maximum torque of the motor is not exceeded.
The operation that is performed when the maximum torque of the motor is exceeded depends
on the Servo Drive.
For details, refer to information on the torque control function in the user manual for the Servo Drive.
• The axis velocity increases faster during torque control. Make sure that you set Velocity (ve-
locity limit) for safety.
• When you use an OMRON G5-series Servo Drive, set the Velocity Limit Selection (3317 hex)
of the Servo Drive to 1 (velocity limit value via EtherCAT communications).
Otherwise, the velocity limit is not affected. Also, the axis does not stop even if the limit input
signal turns ON.
• Process data 607F hex is used for the velocity limit value.
MC_TorqueControl
When you use an OMRON 1S-series Servo Drive or G5-series Servo Drive, set the Detailed
Settings in the Axis Parameter Settings of the Sysmac Studio to use the Velocity Limit Value
(607F hex).
To use a velocity limit with a servo drive from another manufacturer, refer to the manual for
the servo drive.
Direction 3
This variable specifies the direction to output the target torque.
If you want to output torque in the positive direction of the axis, set the positive direction. If you want to
Function
output torque to the negative direction of the axis, set the negative direction.
For details on BufferMode (Buffer Mode Selection), refer to the NJ/NX-series CPU Unit Motion Control
User’s Manual (Cat. No. W507).
Actual current position : Contains the value returned by the Servo Drive multiplied by the gear ratio.
Command current position : Contains the actual current position from the previous period.
• A virtual servo axis will acknowledge this instruction at any time. However, processing to switch the
Control Mode of the Servo Drive is not performed.
• An error occurs if the instruction is executed for an encoder or virtual encoder axis.
Home Status
Home remains defined.
Software Limits
Software Limits are enabled for this instruction.
They are enabled even for the following axis parameter settings.
• Enabled for command position. Deceleration stop.
• Enabled for command position. Stop using remaining pulses.
Timing Charts
Starting and Stopping the Instruction
Execute
InTorque
MC_TorqueControl
Busy
CommandAborted
Function
Time
Torque control Position control
Torque
Command torque
Torque Torque control for the velocity
limit of the Servo Drive
Current torque
Time
Execute
Done
Busy
Active
CommandAborted
Execute
InTorque
Busy
Active
CommandAborted
Velocity
Axis current
velocity When the axis is held
against the workpiece
Time
Position control Torque control
Torque
Current torque
Command torque
Torque
Time
Done
Busy
Active
MC_TorqueControl
CommandAborted
Execute
InTorque
Busy
3
Active
Function
CommandAborted
Velocity
Axis current
velocity
When the axis is held
against the workpiece
Time
Position control Torque control
Torque
Current torque
Command torque
Torque
Time
With a servo drive from another manufacturer, the Control Mode of the Servo Drive changes from CST
to CSP Mode and the Servo is turned ON at the actual current position when the mode changes.
Here, the periodic task is the primary periodic task or the priority-5 periodic task.
If the criteria for changing is not met within 10 seconds after the Velocity Limit Value is set to 0, the
Servo is turned OFF in the same was as given above.
An error will occur in some Servo Drives if the Control Mode in the Servo Drive changes during
axis motion.
MC_TorqueControl executed.
Current velocity
Position control Torque control
Current velocity
Command velocity
MC_TorqueControl
instruction is maintained until
torque control is started.
Torque Time
Function
instruction is executed is the current torque.
Torque Time
Torque control Position control
Command torque
Torque
Current torque
Current torque
Time
The command torque when the
position control instruction is
executed is used until position
control is started.
When the motion control instruction is re-executed to change Torque (Target Torque), InTorque (Target
Torque Reached) operates for the new target torque that was set at re-execution.
For details on re-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
For details on BufferMode (Buffer Mode Selection), refer to the NJ/NX-series CPU Unit Motion Control
User’s Manual (Cat. No. W507).
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axis will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
InTorque
Busy
Active
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_TorqueControl
3
Function
MC_SetTorqueLimit
The MC_SetTorqueLimit instruction limits the torque output from the Servo Drive through the torque
limit function of the Servo Drive.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_SetTorqueLi- Set Torque FB MC_SetTorqueLimit_instance MC_SetTorqueLimit_instance (
mit Limit MC_SetTorqueLimit Axis :=parameter,
Axis Axis Enable :=parameter,
Enable Enabled PositiveEnable :=parameter,
PositiveEnable Busy PositiveValue :=parameter,
PositiveValue Error
NegativeEnable :=parameter,
NegativeEnable ErrorID
NegativeValue :=parameter,
NegativeValue
Enabled =>parameter,
Busy =>parameter,
Error =>parameter,
ErrorID =>parameter
);
You cannot use this instruction for an NX-series Pulse Output Unit.
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Enable Enable BOOL TRUE or FALSE FALSE The instruction is executed while this varia-
ble is TRUE.
PositiveEnable Positive Di- BOOL TRUE or FALSE FALSE TRUE: Enables the positive torque limit.
rection Ena- FALSE: Disables the positive torque limit.
ble
PositiveValue Positive Tor- LREAL 0.1 to 1,000.0, 300.0 Set the torque limit in the positive direction
que Limit or 0.0 in increments of 0.1%.
If a value that exceeds the Maximum
Positive Torque Limit axis parameter is in-
put, the positive torque will be the
Maximum Positive Torque Limit.
The value will be 0 if 0 or a negative value is
specified.
NegativeEnable Negative Di- BOOL TRUE or FALSE FALSE TRUE: Enables the negative torque limit.
rection Ena- FALSE: Disables the negative torque limit.
ble
MC_SetTorqueLimit
specified.
Output Variables
Data Valid
Name Meaning Description
type range
3
Enabled Enable BOOL TRUE or TRUE when control is in progress. *1
FALSE
Function
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *2 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. Enabled indicates the status of the instruction. It does not indicate the status of torque control by the Servo Drive.
*2. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specifies the axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• The MC_SetTorqueLimit instruction sets the torque limits that are used by the Servo Drive.
• When Enable is TRUE and PositiveEnable (Positive Direction Enable) changes to TRUE, control is
performed with PositiveValue (Positive Torque Limit).
When Enable is TRUE and NegativeEnable (Negative Direction Enable) changes to TRUE, control
is performed with NegativeValue (Negative Torque Limit).
• When PositiveEnable (Positive Direction Enable) changes to FALSE, the value of the Maximum
Positive Torque Limit is set in the Servo Drive.
When NegativeEnable (Negative Direction Enable) changes to FALSE, the value of the Maximum
Negative Torque Limit is set in the Servo Drive.
• When Enable to this instruction changes to FALSE, the values of the Maximum Positive Torque
Limit and Maximum Negative Torque Limit are set in the Servo Drive. At the same time, Busy
(Executing) and Enabled change to FALSE.
• The torque limits are set as a percentage of the motor torque in 0.1% increments. If the second dec-
imal place is specified, it will be rounded off to one decimal place.
Set the Maximum Positive Torque Limit and Maximum Negative Torque Limit axis parame-
ters to the upper limits of torque control for your Servo Drive.
If even one of the required objects is not set, a Process Data Object Setting Missing error (error code
3461 hex) occurs.
• If you use a servo drive from a different manufacturer, set the servo drive so that the positive
torque limit value (PDO 60E0 hex) and the negative torque limit value (PDO 60E1 hex) are
used as the torque limits.
Refer to the manual for your servo drive for the setting procedure.
• This instruction cannot be used for servo drives from other manufacturers unless the positive
torque limit value and the negative torque limit value can be mapped to PDOs.
If they cannot be set to PDOs, use the support software of the manufacturer or SDO commu-
nications to set the torque limits.
For details on mapping data objects, refer to 2-3 PDO Mapping on page 2 - 39 and to the NJ/NX-
series CPU Unit Motion Control User’s Manual (Cat. No. W507).
MC_SetTorqueLimit
The automatic torque limit function of the MC_Home or MC_HomeWithParameter instruction is
not used for servo drives from other manufacturers.
Use the MC_SetTorqueLimit instruction, SDO communications, or the Support Software for the
Servo Drive to set suitable values.
Additional Information
• The torque limits are continued even after a normal completion of homing.
3
• The torque limits are automatically released when an instruction that moves the axis in the
opposite direction is executed.
Function
For details on homing, refer to MC_Home on page 3 - 17 and MC_HomeWithParameter on
page 3 - 40.
For details, refer to the AC Servomotors/Servo Drives 1S-series with Built-in EtherCAT
Communications User’s Manual (Cat. No. I586) or AC Servomotors/Servo Drives 1S-series with
Built-in EtherCAT Communications and Safety Functionality User’s Manual (Cat. No. I621).
For details, refer to the AC Servomotors/Servo Drives G5-series with Built-in EtherCAT
Communications User’s Manual (Cat. No. I576) or AC Servomotors/Servo Drives G5-series with
Built-in EtherCAT Communications Linear Motor Type User’s Manual (Cat. No. I577).
• This instruction is acknowledged for a virtual servo axis, but torque is not limited.
• An error occurs if the instruction is executed for an encoder or virtual encoder axis.
MC_SetTorqueLimit
Axis Variable Status (Servo Drive Status)
When the internal limit function in the Servo Drive is in operation, ILA (Drive Internal Limiting) in
DrvStatus (Servo Drive Status) in the Axis Variable is TRUE.
This variable gives an OR of the following four: torque limits, velocity limit, drive prohibit inputs, and
software limits.
3
Timing Chart
Function
The following chart shows the timing of the torque limits.
Enable
PositiveEnable
NegativeEnable
Busy
Enabled
Error
ErrorID 16#0000
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axis will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
PositiveEnable
NegativeEnable
Busy
Enabled
Error
MC_Reset Instruction
Execute
Done
Busy
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_ZoneSwitch
The MC_ZoneSwitch instruction determines if the command current position or actual current position
of an axis is within a specified zone.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_ZoneSwitch
MC_ZoneSwitch Zone Monitor FB MC_ZoneSwitch_instance MC_ZoneSwitch_instance (
MC_ZoneSwitch Axis :=parameter,
Axis Axis Enable :=parameter,
Enable Enabled FirstPosition :=parameter,
FirstPosition InZone LastPosition :=parameter,
LastPosition Busy
ReferenceType :=parameter,
ReferenceType Error
Enabled =>parameter,
3
ErrorID
InZone =>parameter,
Busy =>parameter,
Variables
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Enable Enable BOOL TRUE or FALSE FALSE The instruction is executed while the
value of this variable is TRUE.
FirstPosition First Position LREAL Negative number, 0 Specify the first position of the zone
positive number, range. *1
or 0
The unit is command units. *2
LastPosition Last Position LREAL Negative number, 0 Specify the last position of the zone
positive number, range. *3
or 0
The unit is command units. *2
ReferenceType Position Type _eMC_REFER- 0: _mcCommand 0*4 Specify the axis information to monitor.
Selection ENCE_TYPE 1: _mcFeedback 0: Command position (value calculated
in the previous task period*5)
1: Actual position (value obtained in
the same task period*5)
*1. Set a value that is smaller than the last position.
*2. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
*3. Set a value that is larger than the first position.
*4. The default value for an enumeration variable is actually not the number, but the enumerator.
*5. The task period is the primary period if the task is the primary periodic task and the task period of the priority-5 periodic
task if the task is the priority-5 periodic task.
Output Variables
Data Valid
Name Meaning Description
type range
Enabled Enable BOOL TRUE or TRUE while the axis is being controlled.
FALSE
InZone In Zone BOOL TRUE or TRUE when the axes position is within the zone.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specifies the axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• If the axis command position or actual current position is above the FirstPosition and below the
LastPosition (i.e., if it is in the specified zone) when Enable of this instruction is TRUE, the output
variable InZone will change to TRUE.
You can use ReferenceType (Position Type Selection) to set either the command position or actual
position as the axis information to monitor.
• You can perform zone monitoring for any axis type.
• If FirstPosition or LastPosition is changed while Enable is TRUE, the new value is applied in the pe-
riod in which it is changed.
• You can set multiple zones for one axis, and these zones can overlap. You can also set zones out-
side the software limits.
Instruction Details
Set the FirstPosition and LastPosition so that the following relationships are established for the Coun-
MC_ZoneSwitch
ter Mode. An error occurs if the relationship is not established.
Linear Mode
Set FirstPosition to the same value or a smaller value than LastPosition.
FirstPosition LastPosition 3
Function
- 0 +
InZone
Zone
Rotary Mode
In Rotary Mode, there is a difference depending on whether the modulo maximum position and modu-
lo minimum position setting values are included.
Modulo Maximum
Position
LastPosition
FirstPosition
Modulo Minimum
Position
InZone
Zone Zone Zone
− +
LastPosition = 330° 0
Zone
: The positions indicated with
filled dots are included.
FirstPosition = 210°
Modulo Maximum
Position
FirstPosition
LastPosition
Modulo Minimum
Position
InZone
Zone Zone
- +
FirstPosition = 330° 0
Zone
LastPosition = 210°
Here, the task period is the primary period if the task is the primary periodic task and the task
period of the priority-5 periodic task if the task is the priority-5 periodic task. In the same way,
the periodic task is the primary periodic task or the priority-5 periodic task.
ReferenceType
Axis Type
_mcCommand _mcFeedback
Servo axis OK OK
Encoder axis No*1 OK
Virtual servo axis OK OK
Virtual encoder axis No*1 OK
*1. A Position Type Selection Out of Range error (error code: 5430 hex) occurs when the instruction is execut-
ed.
Timing Charts
When the Zone Is Entered during Operation or When Enable Changes to FALSE
Within the Zone
Enable
Enabled
MC_ZoneSwitch
InZone
Busy
3
When Inside the Zone before the Instruction Is Executed and Then the Zone Is
Exited
Function
Enable
Enabled
InZone
Exits zone.
Busy
For details on multi-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
Errors
If this instruction cannot be executed, an error occurs and Error of this instruction changes to TRUE.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Enable
Enabled
InZone
Busy
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_TouchProbe
The MC_TouchProbe instruction records the position of an axis when a trigger signal occurs.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_TouchProbe
MC_TouchProbe Enable Exter- FB MC_TouchProbe_instance MC_TouchProbe_instance (
nal Latch MC_TouchProbe Axis :=parameter,
Axis Axis TriggerInput :=parameter,
TriggerInput TriggerInput TriggerVariable :=parameter,
TriggerVariable TriggerVariable Execute :=parameter,
Execute Done
WindowOnly :=parameter,
WindowOnly Busy
FirstPosition :=parameter,
FirstPosition RecordedPosition
LastPosition :=parameter, 3
LastPosition CommandAborted
ReferenceType Error ReferenceType :=parameter,
StopMode ErrorID StopMode :=parameter,
Variables
Done =>parameter,
Busy =>parameter,
RecordedPosition =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALS The instruction is executed when
E the value of this variable changes
to TRUE.
WindowOnly Window BOOL TRUE or FALSE FALS Specify whether to enable or disa-
Only E ble the window mask.
FirstPosition First Posi- LREAL Negative number, 0 Specify the position to start accept-
tion positive number, or 0 ing the trigger. Use the type of po-
sition that is specified in
ReferenceType (Position Type Se-
lection). *1
The unit is command units. *2
LastPosition Last Posi- LREAL Negative number, 0 Specify the position to stop accept-
tion positive number, or 0 ing the trigger. Use the type of po-
sition that is specified in
ReferenceType (Position Type Se-
lection).*1
The unit is command units.*2
De-
Name Meaning Data type Valid range Description
fault
ReferenceType Position _eMC_REFER- 1: _mcFeedback 1*3 (Reserved)
(Reserved) Type Selec- ENCE_TYPE
tion
StopMode Stopping _eMC_STOP_MOD 1: _mcImmediate- 4*3 Specify the stopping method.
Mode Se- E Stop 1: Perform an immediate stop
lection 4: _mcNonStop 4: Do not stop
*1. Refer to WindowOnly on page 3 - 367 for details.
*2. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
*3. The default value for an enumeration variable is actually not the number, but the enumerator.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
RecordedPosition Latched Posi- LREAL Negative Contains the latched position.
tion number, The unit is in command units. *1
positive
number, or
0
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *2 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
*2. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
MC_TouchProbe
CSP Mode during execution.*1
• When the slave is disconnected.
• When a slave communications error occurs
(except during process data communications).
• When the MC_AbortTrigger instruction is exe-
cuted.
Error When there is an error in the execution condi- When the error is cleared.
3
tions or input parameters for the instruction.
*1. If you use an NX-series CPU Unit, there are no restrictions in the control mode. Therefore, CommandAborted does not
Variables
change to TRUE even in modes other than CSP Mode.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specify the axis. *1
TriggerInput Trigger Input Con- _sTRIG- --- Set the trigger condition. *2
dition GER_REF
TriggerVariable Trigger Variable BOOL TRUE or Specify a trigger input variable when the Control-
FALSE ler Mode is specified for the trigger mode.
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
*2. Define a user-defined variable with a data type of _sTRIGGER_REF.
_sTRIGGER_REF
Name Meaning Data type Valid range Function
Mode Mode _eMC_TRIG- 0: _mcDrive Specify the trigger mode.
GER_MODE 1: _mcController 0: Drive Mode
1: Controller Mode
LatchID Latch ID Se- _eMC_TRIG- 0: _mcLatch1 Specify which of the two latch functions to use in
lection GER_LATCH 1: _mcLatch2 Drive Mode.
_ID 0: Latch 1
1: Latch 2
InputDrive Trigger Input _eMC_TRIG- 0: _mcEncoderMark Specify the Servo Drive trigger signal to use in
Signal GER_IN- 1: _mcEXT Drive Mode.
PUT_DRIVE 0: Z-phase signal
1: External input
Function
• Latching is used to control positioning based on the point where a trigger signal occurs, such as a
signal from a sensor input. The position of the axis is recorded (i.e., latched) when the trigger signal
occurs.
• The position of the axis that is specified with Axis is output to RecordedPosition (Latched Position)
according to the trigger settings.
As trigger settings, you can specify TriggerInput (Trigger Input Condition), WindowOnly,
FirstPosition, LastPosition, and StopMode.
• The output value of RecordedPosition (Latched Position) is held until the axis position is recorded
again by the same MC_TouchProbe (Enable External Latch) instance.
If even one of the required objects is not set, a Process Data Object Setting Missing error (error code
3461 hex) occurs.
For details on mapping data objects, refer to 2-3 PDO Mapping on page 2 - 39 and to the NJ/NX-
series CPU Unit Motion Control User’s Manual (Cat. No. W507).
Refer to I/O Entry Mappings in the NX-series Position Interface Units User’s Manual (Cat. No. W524)
for information on using the NX-series Position Interface Units.
Refer to Fixed PDO Mapping in the GX-series EtherCAT Slave Units User’s Manual (Cat. No. W488)
for information on using encoder input slaves.
Instruction Details
This section describes the instruction in detail.
Specifying Axis
• Specify the axis for which to latch the position to Axis.
• If the specified Axis is enabled by the MC_GroupEnable (Enable Axes Group) instruction, the
MC_TouchProbe (Enable External Latch) instruction causes an error and is not executed.
• For each axis, you can specify LatchID to execute up to two MC_TouchProbe (Enable External
Latch) instructions at the same time.
• LatchID is also used to specify the latch to abort for the MC_AbortTrigger (Disable External Latch)
instruction.
Additional Information
MC_TouchProbe
• Latching a position is also possible if an encoder axis that is connected to an OMRON GX-
series GX-EC02££ EtherCAT Encoder Input Slave is used.
• If you use an NX-series Pulse Output Unit, you can also perform latching with this instruction.
Refer to the NX-series Position Interface Units User’s Manual (Cat. No. W524) for details.
Function
ditions) variable.
Mode
• Mode can be set to Drive Mode to specify a signal from the Servo Drive or other device as the trig-
ger, or to Controller Mode to specify a trigger with TriggerVariable.
• The trigger occurs on the rising edge of the trigger signal. The axis position is latched on the first
trigger (FALSE to TRUE) after the MC_TouchProbe instruction is executed.
• While this instruction is Busy (Executing), a change in TriggerVariable is taken as a trigger even if
Execute is FALSE.
Additional Information
Set Mode to _mcDrive (Servo Drive Mode) if you use an OMRON GX-series GX-EC02££
EtherCAT Encoder Input Slave.
Drive Mode
For trigger detection and latching of the actual position, the latched actual position is more precise in
Drive Mode (which is a function of the Servo Drive or other device) than it is in Controller Mode.
Trigger detection
Time
• When using Drive Mode, make sure that you connect the latch signal to the LatchID that you
are going to use.
• The width of the latch signal depends on the performance of the Servo Drive or other device
and other factors.
Additional Information
Set InputDrive to _mcEXT (External Input) if you use an OMRON GX-series GX-EC02££
EtherCAT Encoder Input Slave.
The OMRON GX-series GX-EC02££ EtherCAT Encoder Input Slaves cannot latch on the Z
phase. If you specify _mcEncoderMark (Z phase), an error occurs when the instruction is exe-
cuted. Error changes to TRUE and a Process Data Object Setting Missing error (error code:
3461 hex) is output to ErrorID when the instruction is executed.
Controller Mode
• You can specify a BOOL variable as the trigger in Controller Mode.
• Specify the BOOL variable that you want to use as a trigger for TriggerVariable.
• The Controller Mode causes a longer delay compared to the Drive Mode. This is due to the I/O
refresh delay that occurs when the trigger input signal is updated in the BOOL variable.
Time
If you use Controller Mode, the latch is performed each task period interval. Therefore, the
trigger variable must remain TRUE for at least one task period interval.
Also, one task period is required between when the trigger variable changes to TRUE and the
MC Function Module processes the latch.
Here, the task period is the primary period if the task is the primary periodic task and the task
period of the priority-5 periodic task if the task is the priority-5 periodic task.
LatchID
• You can execute up to two MC_TouchProbe instructions per axis.
Use LatchID to specify which of the two latches to use.
• If a LatchID specified for the same axis is already being executed, only the last instruction is valid.
CommandAborted of the previous instruction will change to TRUE.
• LatchID indicates latch circuit 1 and latch circuit 2 in the Servo Drive or other device.
For information on LatchID, refer to the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat.
No. W507).
Additional Information
The enumerators correspond to the signal names of the OMRON GX-series GX-EC02££
EtherCAT Encoder Input Slave as shown below.
MC_TouchProbe
InputDrive
• You can select _mcEncoderMark (Z phase) or _mcEXT (External Input) as the trigger.
• Select _mcEncoderMark (Z phase) to use the Z phase of the Servo Drive or other device as the trig-
ger.
Select _mcEXT to use an external signal input to the Servo Drive as the trigger.
3
• For an OMRON 1S-series Servo Drive, there are two options for _mcEXT: Ext1, and Ext2. For an
OMRON G5-series Servo Drive, there are three options for _mcEXT: Ext1, Ext2, and Ext3. Use the
Function
Sysmac Studio to make the setting.
You can use the same setting for two triggers in the Servo Drive.
WindowOnly
• WindowOnly specifies whether the window is enabled or disabled.
• When WindowOnly is FALSE, triggers are detected for all axis positions.
• When WindowOnly is TRUE, triggers are detected only when the axis position is within the range
specified by FirstPosition and LastPosition.
The following timing chart shows the difference in operation depending on the WindowOnly setting.
TriggerInput
Execute
WindowOnly
Done
Busy
RecordedPosition 0 Position
CommandAborted
Error
ErrorID 16#0000
Axis position
LastPosition
FirstPosition
Position
Trigger enabled
TriggerInput
Execute
WindowOnly
Done
Busy
RecordedPosition 0 Position
CommandAborted
Error
ErrorID 16#0000
Axis position
LastPosition
Position
FirstPosition
• Latching is not possible immediately after WindowOnly changes to TRUE and until the latch
function is activated.
• Time is needed until the latch function is activated. If the effective range for WindowOnly is
too small, latching is not possible. The range in which latching is possible depends on the
performance of the Servo Drive, Encoder Input Terminal, or Position Interface Unit, and on
EtherCAT communications.
MC_TouchProbe
The range that is defined by FirstPosition and LastPosition depends on the Count Mode, as given be-
low.
Linear Mode
• The valid range of the window is as follows:
FirstPosition must be less than or equal to the window range and the window range must be less
3
than or equal to LastPosition.
Function
• An error will also occur if a position beyond the position range of Linear Mode is specified.
• FirstPosition and LastPosition are LREAL variables. Do not set them to the same values.
Refer to Treatment of REAL and LREAL Data on page 1 - 14 for information on LREAL data.
FirstPosition LastPosition
0x80000000 0x7fffffff
Window
Window only range
Note The window only range can include the FirstPosition and LastPosition.
Rotary Mode
• The FirstPosition can be less than, equal to, or greater than the LastPosition.
• If the FirstPosition is greater than the LastPosition, the setting range includes the modulo maximum
position and modulo minimum position setting values.
• An error will occur if you specify a value beyond the modulo maximum position and modulo mini-
mum position setting values.
FirstPosition ≤ LastPosition
− + − +
LastPosition 0 LastPosition 0
FirstPosition
Window only range
: The positions indicated with
filled dots are included.
FirstPosition
StopMode
• You can specify the StopMode for the specified Axis when a trigger occurs.
• If _mcNonStop is specified, the axis will not stop even if a trigger occurs.
• If _mcImmediateStop is specified, the axis stops at the latched position when a trigger occurs.
CommandAborted of the instruction that was moving the axis changes to TRUE due to this stop.
• For _mcImmediateStop, Done changes to TRUE as soon as the axis command stops. Busy is
TRUE until the axis stops at the latched position.
• An in-position check is not performed when stopping for _mcImmediateStop.
Additional Information
• When an OMRON 1S-series Servo Drive is used, the operation will be the same as those de-
scribed in below for CPU Units with unit version 1.10 or later, regardless of actual unit version
of the CPU Unit that you use.
• When an OMRON G5-series Servo Drive is used, the operation will differ depending on the
unit version of the CPU Unit that you use, as described in below.
Trigger occurs.
Time
Decelerating to a stop for the error
• The MC Function Module performs stop processing for _mcImmediateStop (Immediate Stop).
The axis will stop beyond the latched position, and the axis will then return to the latched po-
sition for a command from the Controller.
• If you use _mcImmediateStop (Immediate Stop) with a high command velocity, the distance
to return to the latched position will be long. Make sure that the command velocity is not too
high.
• Specify _mcNonStop (No Stop) for an encoder axis. If _mcImmediateStop (Immediate Stop)
MC_TouchProbe
is specified, Error will change to TRUE when the instruction is executed. At the same time, an
Enable External Latch Instruction Execution Disabled error (error code: 5492 hex) is output to
ErrorID.
Function
• When the MC Function Module detects that the OMRON G5-series Servo Drive has stopped, it
stops the motor immediately. The dotted line in the following figure shows the target path when a
trigger does not occur.
Trigger occurs.
Time
Decelerating to a stop for an error
MC_TouchProbe Instruction
TriggerInput
Execute
WindowOnly
Done
MC_TouchProbe
Busy
RecordedPosition 0
CommandAborted
Error
ErrorID
3
16#0000
Function
MC_AbortTrigger Instruction
Execute
Done
Busy
CommandAborted
Error
ErrorID 16#0000
An error occurs if Execute changes to TRUE again before the MC_TouchProbe instance completes
reading RecordedPosition (Latched Position).
TriggerInput
Execute
WindowOnly
Done
Busy
RecordedPosition 0
CommandAborted
Error
MC_TouchProbe A
*1
TriggerInput
Execute
WindowOnly
Done
MC_TouchProbe
Busy
RecordedPosition 0
CommandAborted
Error
ErrorID
3
16#0000
Function
MC_TouchProbe B
Execute
Done
Busy
CommandAborted
Error
ErrorID 16#0000
*1. Here, the trigger input signal of the Servo Drive or other device is used.
Additional Information
Error
If an error occurs during execution of the MC_TouchProbe instruction, Error will change to TRUE.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
Done
Busy
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
Sample Programming
This section shows sample programming for position latching control by an external sensor.
Parameter Settings
The minimum settings required for this sample programming are given below.
Axis Parameters
Axis Type
Count Mode
Ring Counter
Modulo Modulo
Axis maximum minimum
position position
Axis 1 360 0
Unit of Display
Operation Example
Sensor 1
MC_TouchProbe
Servo axis
Axis 1
Operation Pattern
3
Axis 1 position
Sample Programming
Pos2
Latched position
Pos1
Time
Sensor 1 status
Time
2 Detecting Workpiece
Sensor 1 detects the workpiece.
Ladder Diagram
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- This is the Axis Variable for axis 1.
MC_Axis000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 1.
MC_Axis000.Details.Homed BOOL FALSE TRUE when home is defined for axis 1.
Sample Programming
If StartPg is TRUE, check that the Servo Drive is ready.
StartPg MC_Axis000.DrvStatus.Ready Lock1
If the Servo Drive for axis 1 is ready, the Servo is turned ON.
PWR
MC_Power
Lock1 MC_Axis000 Axis Axis Pwr_Status
Enable Status
Busy Pwr_Bsy
Error Pwr_Err
ErrorID Pwr_ErrID
If a minor fault level error occurs for axis 1, the error handler for the device (FaultHandler) is executed.
Program the FaultHandler according to the device.
MC_Axis000.MFaultLvl.Active FaultHandler
EN FaultHandler
If the Servo is ON and home is not defined, the Home instruction is executed.
HM
MC_Home
Pwr_Status MC_Axis000.Details.Homed MC_Axis000 Axis Axis Hm_D
Execute Done
Busy Hm_Bsy
CommandAborted Hm_Ca
Error Hm_Err
ErrorID Hm_ErrID
The parameters are set for the MC_MoveVelocity (Velocity Control) and MC_TouchProbe (Enable External
Latch) instructions.
InitFlag
MC_TouchProbe
The MC_MoveVelocity (Velocity Control) instruction is executed if home is defined for axis 1.
VEL
MC_MoveVelocity
MC_Axis000.Details.Homed MC_Axis000 Axis Axis Vel_InVel
Execute InVelocity
Vel_Vel Velocity Busy Vel_Bsy 3
Vel_Acc Acceleration Active Vel_Act
Vel_Dec Deceleration CommandAborted Vel_Ca
Vel_Jrk Jerk Error Vel_Err
Sample Programming
Direction ErrorID Vel_EIrrD
Continuous
BufferMode
Latch processing is executed after the MC_MoveVelocity (Velocity Control) instruction is started.
T_PROBE
MC_TouchProbe
MC_Axis000 Axis Axis
T_Probe_TrigRef TriggerInput TriggerInput
Vel_Act T_Probe_TrigVar TriggerVariable TriggerVariable T_Probe_D
Execute Done
T_Probe_Wo WindowOnly Busy T_Probe_Bsy
T_Probe_FstPos FirstPosition RecordedPosition T_Probe_RecPos
T_Probe_LstPos LastPosition CommandAborted T_Probe_Ca
ReferenceType Error T_Probe_Err
StopMode ErrorID T_Probe_ErrID
Contents of Inline ST
// MC_MoveVelocity parameters
Vel_Vel := LREAL#1000.0;
Vel_Acc := LREAL#1000.0;
Vel_Dec := LREAL#1000.0;
Vel_Jrk := LREAL#1000.0;
// MC_TouchProbe parameters
T_Probe_TrigRef.Mode :=_eMC_TRIGGER_MODE#_mcDrive;
T_Probe_TrigRef.LatchID :=_eMC_TRIGGER_LATCH_ID#_mcLatch1;
T_Probe_TrigRef.InputDrive :=_eMC_TRIGGER_INPUT_DRIVE#_mcEXT;
T_Probe_TrigVar := FALSE;
T_Probe_Wo := TRUE;
T_Probe_FstPos := LREAL#1000.0;
T_Probe_LstPos := LREAL#2000.0;
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- This is the Axis Variable for axis 1.
MC_Axis000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 1.
MC_Axis000.Details.Homed BOOL FALSE TRUE when home is defined for axis 1.
Pwr_Status BOOL FALSE This variable is assigned to the Status output
variable from the PWR instance of the
MC_Power instruction. This variable changes to
TRUE when the Servo is turned ON.
Pos1 LREAL --- This variable specifies the first position of the
window.
Pos2 LREAL --- This variable specifies the last position of the
window.
StartPg BOOL FALSE The Servo is turned ON if this variable is TRUE
and EtherCAT process data communications
are established.
InitFlag BOOL FALSE This variable indicates if it is necessary to set
the input parameters.
Input parameters are set when this variable is
FALSE. When setting the input parameters is
completed, this variable changes to TRUE.
Sample Programming
// Processing when input parameters are not set
IF InitFlag=FALSE THEN
// MC_MoveVelocity parameters
Vel_Vel := LREAL#1000.0;
Vel_Acc := LREAL#1000.0;
Vel_Dec := LREAL#1000.0;
Vel_Jrk := LREAL#1000.0;
// MC_TouchProbe parameters
T_Probe_TrigRef.Mode :=_eMC_TRIGGER_MODE#_mcDrive;
T_Probe_TrigRef.LatchID :=_eMC_TRIGGER_LATCH_ID#_mcLatch1;
T_Probe_TrigRef.InputDrive :=_eMC_TRIGGER_INPUT_DRIVE#_mcEXT;
T_Probe_TrigVar := FALSE;
T_Probe_Wo := TRUE;
T_Probe_FstPos := LREAL#1000.0;
T_Probe_LstPos := LREAL#2000.0;
END_IF;
// If StartPg is TRUE and the Servo Drive is ready, the Servo is turned ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
MC_TouchProbe
AND (MC_Axis000.DrvStatus.Ready=TRUE) THEN
Pwr_En:=TRUE;
ELSE
Pwr_En:=FALSE;
END_IF;
3
// Processing for a minor fault level error
// Program the FaultHandler according to the device.
Sample Programming
IF MC_Axis000.MFaultLvl.Active=TRUE THEN
FaultHandler();
END_IF;
// If the Servo is ON and home is not defined, the Home instruction is executed.
IF (Pwr_Status=TRUE) AND (MC_Axis000.Details.Homed=FALSE) THEN
Hm_Ex:=TRUE;
END_IF;
// MC_Power
PWR(
Axis := MC_Axis000,
Enable := Pwr_En,
Status => Pwr_Status,
Busy => Pwr_Bsy,
Error => Pwr_Err,
ErrorID => Pwr_ErrID
);
// MC_Home
HM(
Axis := MC_Axis000,
Execute := Hm_Ex,
Done => Hm_D,
Busy => Hm_Bsy,
CommandAborted => Hm_Ca,
Error => Hm_Err,
ErrorID => Hm_ErrID
);
// MC_MoveVelocity
VEL(
Axis := MC_Axis000,
Execute := Vel_Ex,
Velocity := Vel_Vel,
Acceleration := Vel_Acc,
Deceleration := Vel_Dec,
Jerk := Vel_Jrk,
InVelocity => Vel_InVel,
Busy => Vel_Bsy,
Active => Vel_Act,
CommandAborted => Vel_Ca,
Error => Vel_Err,
ErrorID => Vel_ErrID
);
// MC_TouchProbe
T_PROBE(
Axis := MC_Axis000,
TriggerInput := T_Probe_TrigRef,
TriggerVariable := T_Probe_TrigVar,
Execute := T_Probe_Ex,
WindowOnly := T_Probe_Wo,
FirstPosition := T_Probe_FstPos,
LastPosition := T_Probe_LstPos,
Done => T_Probe_D,
Busy => T_Probe_Bsy,
RecordedPosition => T_Probe_RecPos,
CommandAborted => T_Probe_Ca,
Error => T_Probe_Err,
ErrorID => T_Probe_ErrID
);
MC_AbortTrigger
The MC_AbortTrigger instruction aborts a current latch operation.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_AbortTrigger
MC_AbortTrigger Disable Ex- FB MC_AbortTrigger_instance MC_AbortTrigger_instance (
ternal Latch MC_AbortTrigger Axis :=parameter,
Axis Axis TriggerInput :=parameter,
TriggerInput TriggerInput Execute :=parameter,
Execute Done Done =>parameter,
Busy
Busy =>parameter,
CommandAborted
CommandAborted =>parameter,
Error
Error =>parameter, 3
ErrorID
ErrorID =>parameter
);
Variables
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Execute Execute BOOL TRUE or FALSE The instruction is executed when the value
FALSE of this variable changes to TRUE.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specify the target axis for latching. *1
TriggerInput Trigger Input Con- _sTRIG- --- Use this variable to select the trigger condition. *2
dition GER_REF
*1. Specify a user defied Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
*2. Create a user-defined variable with a data type of _sTRIGGER_REF.
_sTRIGGER_REF
Name Meaning Data type Valid range Function
Mode Mode _eMC_TRIG- 0: _mcDrive Specify the trigger mode.
GER_MODE 1: _mcController 0: Drive Mode
1: Controller Mode
LatchID Latch ID Se- _eMC_TRIG- 0: _mcLatch1 Specify which of the two latch functions to use in
lection GER_LATCH 1: _mcLatch2 Drive Mode.
_ID 0: Latch 1
1: Latch 2
InputDrive Trigger Input _eMC_TRIG- 0: _mcEncoderMark Specify the Servo Drive trigger signal to use in
Signal GER_IN- 1: _mcEXT Drive Mode.
PUT_DRIVE 0: Z-phase signal
1: External input
Function
• The MC_AbortTrigger cancels a latch operation.
• You can specify the latch operation to abort by specifying the Axis and LatchID for the MC_Abort-
Trigger (Disable External Latch) instruction.
• If you execute MC_AbortTrigger (Disable External Latch) for a trigger for which there is no latch re-
quest, MC_AbortTrigger does nothing and ends normally.
This is the same when MC_AbortTrigger (Disable External Latch) is executed for a MC_TouchProbe
(Enable External Latch) instruction for which Done is TRUE.
• If the MC_GroupEnable (Enable Axes Group) instruction was executed for the Axis that is
specified for the MC_AbortTrigger (Disable External Latch) instruction, an error occurs for the
MC_AbortTrigger instruction and it is not executed.
• An error occurs for this instruction if the MC_AbortTrigger (Disable External Latch) instruction
is executed during execution of the MC_Home, MC_HomeWithParameter, MC_MoveFeed
(Interrupt Feeding), or MC_MoveLink (Synchronous Positioning) instruction.
MC_AbortTrigger
Timing Chart
• Done for the MC_AbortTrigger (Disable External Latch) instruction changes to TRUE one period af-
ter Execute changes to TRUE.
MC_TouchProbe 3
TriggerInput
Function
Execute
Done
Busy
CommandAborted
Error
ErrorID 16#0000
MC_AbortTrigger
Execute
Done
Busy
CommandAborted
Error
ErrorID 16#0000
Errors
If an error occurs during execution of the MC_AbortTrigger (Disable) instruction, Error will change to
TRUE.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
MC_AbortTrigger
Execute
Done
Busy
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_AxesObserve
The MC_AxesObserve instruction monitors the deviation between the command positions or the ac-
tual positions for the specified axes to see if it exceeds the allowed value.
FB/
Instruction Name Graphic expression ST expression
MC_AxesObserve
FUN
MC_AxesObserve Monitor Axis FB MC_AxesObserve_instance MC_AxesObserve_instance (
Following Er- MC_AxesObserve Master :=parameter,
ror Master Master Slave :=parameter,
Slave Slave Enable :=parameter,
Enable Enabled ReferenceType :=parameter,
ReferenceType Invalid
PermittedDeviation :=parameter,
PermittedDeviation Busy
Enabled =>parameter,
3
DeviatedValue
Error Invalid =>parameter,
Busy =>parameter,
Variables
ErrorID
DeviatedValue =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Enable Enable BOOL TRUE or FALSE FALS The instruction is executed when
E the value of this variable is TRUE.
ReferenceType Position _eMC_RERER- 0: _mcCommand 0*1 Specify the position type.
Type Selec- ENCE_TYPE 1: _mcFeedback 0: Command position (value calcu-
tion lated in the previous task period*2)
1: Actual position (value obtained
in the same task period*2)
PermittedDevi- Permitted LREAL Non-negative number 0 Specify the permitted maximum
ation Following value of the following error be-
Error tween the master and slave axes.
The unit is command units. *3
*1. The default value for an enumeration variable is actually not the number, but the enumerator.
*2. The task period is the primary period if the task is the primary periodic task and the task period of the priority-5 periodic
task if the task is the priority-5 periodic task.
*3. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
Output Variables
Data Valid
Name Meaning Description
type range
Enabled Enable BOOL TRUE or TRUE when the axis is being controlled.
FALSE
Invalid Excessive Fol- BOOL TRUE or TRUE when the permitted following error between axes
lowing Error be- FALSE is exceeded.
tween Axes
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
DeviatedValue Following Error LREAL Negative Contains the difference between the specified master
between Axes number, and slave axes.
positive The unit is command units. *1
number, or
0
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *2 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
*2. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Master Master Axis _sAXIS_REF --- Specify the master axis. *1
Slave Slave Axis _sAXIS_REF --- Specify the slave axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Assign the master axis and slave axis to the same task. If you specify an axis that is in a differ-
ent task as the master axis, an Illegal Master Axis Specification error (error code 5462 hex) oc-
curs.
Additional Information
MC_AxesObserve
You can also set axes that belong to groups.
Function
• If the difference between the command positions or the actual positions of the specified Master
(Master Axis) and Slave (Slave Axis) exceeds the permitted following error, Invalid (Excessive Fol-
lowing Error between Axes) changes to TRUE. 3
Invalid (Excessive Following Error between Axes) changes to TRUE when the following conditions
are met.
Function
When |DeviatedValue (Following Error between Axes)| > PermittedDeviation (Permitted Following
Error)
Position
Master axis
Slave axis
0 Time
• Use the same Count Mode for the Master (Master Axis) and Slave (Slave Axis).
If a different mode is set, the axes will be compared in Linear Mode.
Even if both axes are in Rotary Mode, comparisons are made in Linear Mode if the ranges
set for the ring counters are not the same.
• If PermittedDeviation (Permitted Following Error) contains a non-terminating decimal number,
e.g., resulting from division, error may cause unexpected processing results.
• With an NX-series CPU Unit, assign Master (Master Axis) and Slave (Slave Axis) to the same
task. If you assign them to different tasks, an Illegal Master Axis Specification error (error
code 5462 hex) occurs for Slave (Slave Axis).
• This function is not effective for monitoring an NX-series Pulse Output Unit because the com-
mand position equals the actual current position.
Instruction Details
This section describes the instruction in detail.
Here, the task period is the primary period if the task is the primary periodic task and the task
period of the priority-5 periodic task if the task is the priority-5 periodic task. In the same way,
the periodic task is the primary periodic task or the priority-5 periodic task.
ReferenceType
Axis Type
_mcCommand _mcFeedback
Servo axis OK OK
Encoder axis No*1 OK
Virtual servo axis OK OK
Virtual encoder axis No*1 OK
*1. A Position Type Selection Out of Range error (error code: 5430 hex) occurs when the instruction is execut-
ed.
Linear Mode
ReferenceType (Position Type Selection) Set to _mcCommand
DeviatedValue (Following Error between Axes) = Command current position of Master (Master Ax-
is) - Command current position of Slave (Slave Axis)
Rotary Mode
ReferenceType (Position Type Selection) Set to _mcCommand
The DeviatedValue (Following Error between Axes) is the shorter distance between the command
current position of the Master (Master Axis) and the command current position of the Slave (Slave
Axis) in the range of the ring counter.
The sign of the DeviatedValue (Following Error between Axes) is the sign for the shorter direction,
as given below.
• If the command current position of the Master (Master Axis) is greater than or equal to the com-
mand current position of the Slave (Slave Axis), the value is positive.
MC_AxesObserve
• If the command current position of the Master (Master Axis) is less than the command current
position of the Slave (Slave Axis), the value is negative.
Function
• If the actual current position of the Master (Master Axis) is greater than or equal to the actual
current position of the Slave (Slave Axis), the value is positive.
• If the actual current position of the Master (Master Axis) is less than the actual current position of
the Slave (Slave Axis), the value is negative.
DeviatedValue (Following Error between Axes) Calculation Example in Rotary Mode when
ReferenceType (Position Type Selection) Is Set to _mcCommand
Modulo maximum
position setting value:
100
Master command current position: 50
Slave command current position: −20 Slave command current position: −20
0
Modulo minimum
position setting value:
−70
70 100
|DeviatedValue| is 70 (because 70 is less than 100).
The sign is positive because the command current position of
the Master is greater than or equal to the command current
position of the Slave, so the DeviatedValue is +70.
If ReferenceType (Position Type Selection) is _mcFeedback in Rotary Mode, the "command current
position" in the above diagram would be the "actual current position".
Timing Charts
An error for this instruction does not affect the operation of the axis or axes group.
A timing chart is given below for when PermittedDeviation (Permitted Following Error) is 10.0.
Enable
Enabled
Invalid
Busy
Error
Error ID 0
Deviated Value 0 0 0 10 12 -2 3 5 21 20 0 0 0 0 0 0 0
Master axis
command position 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52
Slave axis 21 20 24 16 16 32 29 29 15 18 40 42 23 25 28 30 31
command position
For details on multi-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
Errors
• If an error occurs during instruction execution, Error will change to TRUE.
• You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
• Error information for this instruction is output to Minor Fault in the MC Common motion variable.
Enable
Enabled
InValid
Busy
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_SyncMoveVelocity
The MC_SyncMoveVelocity instruction outputs the value set for the target velocity every task period to
the Servo Drive in Cyclic Synchronous Velocity Mode.
MC_SyncMoveVelocity
FB/
Instruction Name Graphic expression ST expression
FUN
MC_SyncMove- Cyclic Syn- FB MC_SyncMoveVelocity_instance MC_SyncMoveVelocity_instance (
Velocity chronous Ve- MC_SyncMoveVelocity Axis :=parameter,
locity Control Axis Axis Execute :=parameter,
Execute InVelocity Velocity :=parameter,
Velocity Busy CmdPosMode :=parameter,
CmdPosMode Active
BufferMode :=parameter,
BufferMode CommandAborted
InVelocity =>parameter,
3
Error
ErrorID Busy =>parameter,
Active =>parameter,
Variables
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
• You cannot use this instruction for an NX-series Pulse Output Unit.
• Here, the task period is the primary period if the task is the primary periodic task and the task
period of the priority-5 periodic task if the task is the priority-5 periodic task.
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALS The instruction is executed when
E the value of this variable changes
to TRUE.
Velocity Target Ve- LREAL Negative number, 0 Set the target velocity.
locity positive number, or 0 0: Set the velocity command value
to 0.
Positive value: Move in the positive
direction.
Negative value: Move in the nega-
tive direction.
The unit is command units/s. *1
CmdPosMode Command _eMC_CMDPOS_ 0: _mcCount 0*2 0: Use the actual current position
Current Po- MODE and update the command current
sition Count position.
Selection Home remains defined.
De-
Name Meaning Data type Valid range Description
fault
BufferMode Buffer _eMC_BUF- 0: _mcAborting 0*2 Specify the behavior when execut-
Mode Se- FER_MODE 1: _mcBuffered ing more than one motion instruc-
lection tion.
0: Aborting
1: Buffered
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
*2. The default value for an enumeration variable is actually not the number, but the enumerator.
Output Variables
Data Valid
Name Meaning Description
type range
InVelocity Target Velocity BOOL TRUE or TRUE when the target velocity is reached.
Reached FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE when the axis is being controlled.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs. A value of
16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specifies the axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
MC_SyncMoveVelocity
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• The MC_SyncMoveVelocity instruction outputs the target velocity from the user program every task
period to the Servo Drive in Cyclic Synchronous Velocity (CSV) Control Mode.
• When Execute changes to TRUE, the Control Mode of the Servo Drive is changed and a command
velocity is output. 3
• If this instruction is executed in the primary periodic task or a priority-5 periodic task, the target ve-
locity is reached in the next task period.
Function
The following timing charts show an example of the operation for when this instruction is executed in
the primary periodic task. The same information applies when it is used in a priority-5 periodic task.
Time
Primary period
• If this instruction is executed in the priority-16 periodic task, the target velocity is reached in the next
task period.
Task period
Refer to 1-1-3 Precautions for Master and Auxiliary Axes in Synchronized Control on page 1 - 6
for precautions on using this instruction for the master axis of synchronized control.
Additional Information
The MC_SetOverride (Set Override Factors) instruction is not effective for the MC_SyncMove-
Velocity (Cyclic Synchronous Velocity Control) instruction.
If even one of the required objects is not set, a Process Data Object Setting Missing error (error code:
3461 hex) occurs.
For details on mapping data objects, refer to 2-3 PDO Mapping on page 2 - 39 and to the NJ/NX-
series CPU Unit Motion Control User’s Manual (Cat. No. W507).
Instruction Details
This section describes the instruction in detail.
• When you set the target velocity, make sure that an excessive load is not placed on the me-
chanical composition of the system for the change in velocity.
• If the axis that you use in this instruction is the master axis for synchronized control, setting
the target velocity of the master axis may cause the slave axis to move suddenly.
• When the Control Mode is changed, the command current position may change suddenly.
MC_SyncMoveVelocity
Time
CSP CSV Changing CSP
the Control
Mode
Function
Reference Position (3010-87 hex) to process data.
Map the CSP Reference Position (3010-87 hex) to process data in the PDO Edit Tab Page of the Sys-
mac Studio. Then map the CSP Change Reference Position in the MC Function Module and the CSP
Reference Position (3010-87 hex) in the Detailed Settings Area of the Axis Basic Settings Display.
If the CSP Reference Position (4020 hex) is mapped to a PDO, set the primary period or the
task period of the priority-5 periodic task to 1 ms or longer.
If the primary period or task period is less than 1 ms, an error will occur in the G5-series Servo
Drive.
Refer to the AC Servomotors/Servo Drives G5-series with Built-in EtherCAT Communications
User’s Manual (Cat. No. I576) for details.
Additional Information
Of the OMRON G5-series Servo Drives, those for Linear Motors do not support the CSP Refer-
ence Position (4020 hex).
When Using a Servo Drive Other Than an OMRON 1S-series Servo Drive or G5-
series Servo Drive
An error may occur in processing to switch the Control Mode for some Servo Drives when this instruc-
tion is executed or when an instruction that uses CSP Mode is executed during execution of this in-
struction.
If that occurs, stop the axis (velocity of 0) and then execute this instruction or use multi-execution of
instructions that use the CSP Mode.
Stop Processing
The Control Mode and command velocities that are used to stop axis motion are described below.
For a deceleration stop, the target velocity of this instruction is used as the initial velocity and the axis
is decelerated to a stop with the deceleration rate for the specified Stop Mode.
Stopping for a Major Fault Level Error or a Partial Fault Level Error
The command velocity is changed to 0. The Control Mode is changed to CSP Mode when the change
criterion that is given below is satisfied.
However, depending on the error level, it may not be possible to switch the Control Mode normally,
and the axis may stop in CSV Mode.
Stopping When the Operating Mode of the CPU Unit Changes to PROGRAM Mode
The command velocity is changed to 0 with the specified method. The Control Mode is changed to
CSP Mode when the change criterion that is given below is satisfied.
Change Criterion
Whether it is possible to change the Control Mode depends on Servo Drive specifications.
To ensure that the Control Mode is switched to CSP Mode during stop processing for stop instructions
or errors, it is necessary to sufficiently decelerate the Servomotor first.
The Control Mode is changed to CSP Mode when the following criterion is met for three consecutive
periodic tasks after the command velocity changes to 0.
Here, the periodic task is the primary periodic task or the priority-5 periodic task.
Therefore, processing to change to CSP Mode is performed when the Status output variable from the
MC_Power (Power Servo) instruction changes to FALSE.
MC_SyncMoveVelocity
7439 hex) occurs.
Also, if the switching criterion is not met within 10 seconds after the command velocity is changed to 0
for a Control Mode switching command to the Servo Drive, an Error in Changing Servo Drive Control
Mode (error code: 7439 hex) occurs.
When an Error in Changing Servo Drive Control Mode (error code: 7439 hex) occurs, the command
velocity is changed to 0 and the Servo is turned OFF (free-run stop).
For details on the Error in Changing Servo Drive Control Mode (error code: 7439 hex), refer to the 3
NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507).
Function
Applicable Axes and Execution Condition
• You can use this instruction for a servo axis.
To use this instruction, change Enable for the MC_Power instruction to TRUE (Servo ON).
• A virtual servo axis will acknowledge this instruction at any time.
However, processing to switch the Control Mode of the Servo Drive is not performed.
• An error occurs if the instruction is executed for an encoder or virtual encoder axis.
Data
Name Meaning Description
type
CSP BOOL Cyclic Synchronous Position (CSP) Control TRUE when the Servo is ON and the Servo
Mode Drive is in CSP Mode.
CSV BOOL Cyclic Synchronous Velocity (CSV) Control TRUE when the Servo is ON and the Servo
Mode Drive is in CSV Mode.
CST BOOL Cyclic Synchronous Torque (CST) Control TRUE when the Servo is ON and the Servo
Mode Drive is in CST Mode.
Home Status
If CmdPosMode (Command Current Position Count Selection) is set to _mcCount, the home will re-
main defined.
Overrides
Overrides are disabled for this instruction.
Software Limits
Software Limits are enabled for this instruction.
They are enabled even for the following axis parameter settings.
• Enabled for command position. Deceleration stop.
• Enabled for command position. Stop using remaining pulses.
Timing Charts
• Busy (Executing) changes to TRUE at the same time as Execute changes to TRUE. Active (Control-
ling) changes to TRUE in the next period.
• InVelocity (Target Velocity Reached) changes to TRUE when the command velocity reaches
Velocity (Target Velocity).
• If another instruction aborts this instruction, CommandAborted changes to TRUE and Busy (Execut-
ing), Active (Controlling), and InVelocity (Target Velocity Reached) change to FALSE.
• The MC_Stop instruction is used to stop this instruction.
The following timing charts show operation for when this instruction is used in the primary periodic
task.
MC_SyncMoveVelocity Instruction
Execute
InVelocity
Busy
MC_SyncMoveVelocity
Active
CommandAborted
Error
ErrorID 16#0000
MC_Stop Instruction 3
Execute
Function
Done
Busy
Active
Velocity Decelerates to a
stop when MC_Stop
is executed.
Target velocity
Time
Target velocity is The target
changed each velocity does
primary period. not change.
Control Mode
CSP CSV CSP CSV
Additional Information
The MC Function Module sends a command to the Servo Drive to change the Control Mode as
shown in the above timing chart. The timing of implementing the change in the Servo Drive de-
pends on Servo Drive specifications.
For details on BufferMode (Buffer Mode Selection), refer to the NJ/NX-series CPU Unit Motion Control
User’s Manual (Cat. No. W507).
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axis will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
InVelocity
Busy
Active
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_SyncMoveAbsolute
The MC_SyncMoveAbsolute instruction cyclically outputs the specified target position for the axis.
MC_SyncMoveAbsolute
FB/
Instruction Name FU Graphic expression ST expression
N
MC_SyncMoveAbso- Cyclic FB MC_SyncMoveAbsolute_instance MC_SyncMoveAbsolute_instance
lute Synchro- MC_SyncMoveAbsolute (
nous Ab- Axis Axis Axis :=parameter,
solute Po- Execute InPosition Execute :=parameter,
sitioning Position Busy Position :=parameter,
Direction Active
Direction :=parameter,
BufferMode CommandAborted
BufferMode :=parameter, 3
Error
ErrorID InPosition =>parameter,
Busy =>parameter,
Variables
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Version Information
A CPU Unit with unit version 1.03 or later and Sysmac Studio version 1.04 or higher are re-
quired to use this instruction.
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALS The instruction is executed when
E the value of this variable changes
to TRUE.
Position Target Posi- LREAL Negative number, 0 Specify the absolute target posi-
tion positive number, or 0 tion.
The unit is command units. *1
Direction Direction _eMC_DIRECTION 0: _mcPositiveDirec- 1*2 Specify the direction of rotation
tion when the Count Mode is Rotary
1: _mcShortestWay Mode. *3
2: _mcNegativeDirec- 0: Positive direction
tion 1: Shortest way
3: _mcCurrentDirec- 2: Negative direction
tion 3: Current direction
4: _mcNoDirection 4: No direction specified
De-
Name Meaning Data type Valid range Description
fault
BufferMode Buffer _eMC_BUF- 0: _mcAborting 0*2 Specify the behavior when execut-
Mode Se- FER_MODE ing more than one motion instruc-
lection tion.
0: Aborting
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
*2. The default value for an enumeration variable is actually not the number, but the enumerator.
*3. Refer to Direction on page 3 - 54 for the MC_MoveAbsolute instruction for how to specify the direction of rotation.
Output Variables
Data Valid
Name Meaning Description
type range
InPosition In Position BOOL TRUE or TRUE when the actual current position is within the in-
FALSE position range of the target position.
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE when control is in progress.
FALSE
CommandAborted Instruction BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
MC_SyncMoveAbsolute
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specifies the axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function 3
• The MC_SyncMoveAbsolute instruction outputs the target position from the user program every task
period to the Servo Drive or other device in Cyclic Synchronous Position (CSP) Control Mode. The
Function
target position is given as an absolute position.
• The upper limit of the velocity is the value that is set in the Maximum Velocity axis parameter.
Maximum Acceleration and Maximum Deceleration are not used.
• If this instruction is executed in the primary periodic task or priority-5 periodic task, the target posi-
tion that is specified in the input parameters is output to the Servo Drive in the next task period.
The following timing charts show an example of the operation for when this instruction is executed in
the primary periodic task. The same information applies when it is used in a priority-5 periodic task.
Time
Primary period
• If this instruction is executed in the priority-16 periodic task, the target position that is specified in the
input parameters is output to the Servo Drive in the next periodic task.
Task period
Specify the target position so that the travel distance to the target position does not cause the
velocity to exceed the value that is specified in the Maximum Velocity axis parameter. If a tar-
get position is specified that cause the Maximum Velocity to be exceeded, the command ve-
locity will become saturated and the travel distance will be output so that the Maximum
Velocity is not exceeded. If this occurs, any insufficient travel distance to the target position is
output in the next period or later.
Details.VelLimit (Command Velocity Saturation) in the axis control status changes to TRUE at
this time.
Instruction Details
This section describes the instruction in detail.
In-position Check
If Position (Target Position) is not changed, InPosition changes to TRUE when the difference between
the target position and the actual position is within the range that is set for the In-position Range axis
parameter.
Even if the target position is changed while InPosition is TRUE, it will remain TRUE for the remainder
of the period and change to FALSE the next period.
The setting of the In-position Check Time axis parameter is disabled.
Stop Processing
This section describes the methods that are used to stop axis operations.
Use the MC_Stop or MC_ImmediateStop instruction to stop operation. If one of these instructions is
executed, CommandAborted for this instruction will change to TRUE.
Applicable Axes
• You can use this instruction for a servo axis.
To use this instruction, change Enable for the MC_Power instruction to TRUE (Servo ON).
• A virtual servo axis will acknowledge this instruction at any time.
• An error occurs if the instruction is executed for an encoder or virtual encoder axis.
Overrides
Overrides are disabled for this instruction.
MC_SyncMoveAbsolute
Changing the Actual Position
When the actual position is changed with the MC_SetPosition instruction, the travel distance from the
new actual position to the target position that is specified for Position (Target Position) is output.
If InPosition is TRUE before the actual position is changed, it will change to FALSE the next period
after it is changed.
Timing Charts 3
• Busy (Executing) changes to TRUE at the same time as Execute changes to TRUE. Active (Control-
Function
ling) changes to TRUE in the next period.
• InPosition changes to TRUE when the actual current position is within the in-position range from
Position (Target Position).
• If another instruction aborts this instruction, CommandAborted changes to TRUE and Busy (Execut-
ing), Active (Controlling), and InPosition change to FALSE.
• The MC_Stop instruction is used to stop this instruction.
The following timing charts show operation for when this instruction is executed in the primary periodic
task.
MC_SyncMoveAbsolute instruction
Execute
Position 20 30 40 50 60 40
InPosition
Busy
Active
CommandAborted
Error
ErrorID 16#0000
MC_Stop Instruction
Execute
Busy
Active
Done
Command position
60
50
40
30
20
0
Time
Additional Information
The MC Function Module sends a command to the Servo Drive to change the Control Mode as
shown in the above timing chart. The timing of implementing the change in the Servo Drive de-
pends on Servo Drive specifications.
MC_SyncMoveAbsolute
Buffer Mode Selec-
Description
tion
Aborting Aborts the instruction being executed and switches to this instruction.
If the direction of axis motion is reversed by switching instructions, the motion will be re-
versed according to the Operation Selection at Reversing axis parameter.
For details on BufferMode (Buffer Mode Selection), refer to the NJ/NX-series CPU Unit Motion Control
User’s Manual (Cat. No. W507). 3
Function
If you execute another instruction during execution of this instruction, you can specify only Aborting.
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axis will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
InPosition
Busy
Active
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_Reset
The MC_Reset instruction clears axis errors.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_Reset Reset Axis FB MC_Reset_instance MC_Reset_instance (
Error MC_Reset Axis :=parameter,
Axis Axis Execute :=parameter,
Execute Done Done =>parameter,
Busy Busy =>parameter,
Failure
Failure =>parameter,
Error
Error =>parameter,
ErrorID
ErrorID =>parameter
);
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Execute Execute BOOL TRUE or FALSE The instruction is executed when the value
FALSE of this variable changes to TRUE.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Failure Failure End BOOL TRUE or TRUE when the instruction is not executed normally.
FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
MC_Reset
In-Out Variables
Function
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• The MC_Reset instruction starts error clear processing for the axis specified by Axis when Execute
changes to TRUE.
The error processing resets axis errors and, if errors have occurred in the Servo Drive, drive errors.
Error clear processing is performed regardless of whether the Servo is ON or OFF for the axes.
• You can use this instruction for any axis type.
• Error clear processing is executed only for axes with errors.
• If there is a drive error for an axis, the drive error is cleared first. Error clear processing is then per-
formed.
Reset processing for the drive error is continued until the drive error is cleared or continues for the
Drive Error Reset Monitoring Time in the axis parameters.
• If this instruction is executed while the axis is decelerating to a stop for an error, the instruction is not
executed and Failure will change to TRUE. This is to ensure that the error is not reset before the
axis stops.
Failure will also change to TRUE if an axis error that results from an MC common error cannot be
cleared by this instruction.
MC Common errors include MC Common Partial Faults and MC Common Minor Faults.
• Only errors that exist when Execute changes to TRUE are cleared. Errors that occur while clearing
errors are not cleared.
• The error clear processing that is performed by this instruction sometimes requires more than
one control period.
• If an MC Common Partial Fault or MC Common Minor Fault occurs or the axis is in motion,
Failure (Failure End) from the instruction will change to TRUE. Remove the cause of the er-
ror, and then retry the process until Done changes to TRUE.
• After you remove the cause of the error, execute the instruction only after you confirm that the
axes have stopped completely.
Act.Vel (Actual Current Velocity) in the Axis Variable is 0 if the axis is completely stopped.
Use this to confirm when the axis is completely stopped.
• If you use this instruction for an OMRON G5-series Servo Drive, perform exclusive control of
instructions so that the ResetECError (Reset EtherCAT Error) instruction is not executed at
the same time.
• If this instruction is used for an NX-series Pulse Output Unit, the error in the Servo Drive that
is connected to the Pulse Output Unit is not reset. Refer to the NX-series Position Interface
Units User’s Manual (Cat. No. W524) for details.
Additional Information
Timing Charts
Execute
Done
Busy
Failure
Error
Execute
Done
Busy
Failure
Error
MC_Reset
Error
3
Error Codes
Function
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_ChangeAxisUse
The MC_ChangeAxisUse instruction temporarily changes the Axis Use axis parameter.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_ChangeAxi- Change Axis FB MC_ChangeAxisUse_instance MC_ChangeAxisUse_instance (
sUse Use MC_ChangeAxisUse Axis :=parameter,
Axis Axis Execute :=parameter,
Execute Done AxisUse :=parameter,
AxisUse Busy Done =>parameter,
CommandAborted
Busy =>parameter,
Error
CommandAborted =>parameter,
ErrorID
Error =>parameter,
ErrorID =>parameter
);
The values that are written by this instruction are not saved in non-volatile memory in the CPU
Unit. Any values that are written are lost when the power supply to the Controller is turned OFF,
when settings are downloaded, or when the MC Function Module is restarted. They return to
the values that were set from the Sysmac Studio.
Use the Sysmac Studio and transfer the parameters to save them to non-volatile memory.
Additional Information
• Use the Synchronize Menu of the Sysmac Studio to download the project.
• Refer to the NJ/NX-series CPU Unit Software User's Manual (Cat. No. W501) for an applica-
tion example that uses this instruction.
Version Information
A CPU Unit with unit version 1.04 or later and Sysmac Studio version 1.05 or higher are re-
quired to use this instruction.
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Execute Execute BOOL TRUE or FALSE FALSE The instruction is executed
when the value of this variable
changes to TRUE.
AxisUse Axis Use _eMC_AXIS_USE 1: _mcUnusedAxis 1 *1 Specify a used axis or an un-
2: _mcUsedAxis used axis.
1: Unused axis
2: Used axis
*1. The default value for an enumeration variable is actually not the number, but the enumerator.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
MC_ChangeAxisUse
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
3
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
Function
Output Variable Update Timing
Name Timing for changing to TRUE Timing for changing to FALSE
Done When the instruction is completed. • When Execute is TRUE and changes to
FALSE.
• After one period when Execute is FALSE.
Busy When Execute changes to TRUE. • When Done changes to TRUE.
• When Error changes to TRUE.
• When CommandAborted changes to TRUE.
CommandAborted When this instruction is canceled due to an error • When Execute is TRUE and changes to
in another instruction. FALSE.
• After one period when Execute is FALSE.
Error When there is an error in the execution condi- When the error is cleared.
tions or input parameters for the instruction.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specifies the axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• When Execute changes to TRUE, the MC_ChangeAxisUse instruction temporarily changes the axis
status to the setting specified by the AxisUse axis parameter.
• When execution of the instruction is completed, _MC_AX[*].Cfg.AxEnable (Axis Use) in the Axis
Variable changes to the specified setting.
• You can change the setting only for axes that have the Axis Use axis parameter set to Unused axis
(changeable to used axis) or Used axis. You cannot change the setting of the Axis Use axis pa-
rameter to Used axis if that axis is set to Unused axis (unchangeable to used axis).
• You can execute this instruction when home is defined or when home is not defined. If home is de-
fined and the axis setting is changed to Unused axis, the home definition is lost.
• If you change the setting of an axis that uses an absolute encoder from Used axis to Unused axis,
the absolute encoder home offset (which is saved to the battery-backup memory in the CPU Unit
when the power supply to the Controller is turned OFF) will be the value from just before the axis
was changed to Unused axis.
• You cannot change an axis to a used axis if the axis number exceeds the highest axis num-
ber that can be controlled by the CPU Unit. The number of real axes that you can change to
used axes is the maximum number of used real axes.
MC_ChangeAxisUse
Maximum number of used real axes 256 axes 128 axes
Function
Item NX1P2-11££ NX1P2-10££ NX1P2-90££
Settable axis numbers 0 to 11 0 to 9 0 to 3
Maximum number of used real axes 8 axes 6 axes 4 axes
Used motion control servo axes 4 axes 2 axes ---
Used single-axis position control servo axes 4 axes 4 axes 4 axes
NJ501-
Item
£5££ £4££ £3££
Settable axis numbers 0 to 63 0 to 31 0 to 15
Maximum number of used real ax- 64 axes 32 axes 16 axes
es
Additional Information
For an NX-series CPU Unit, a variable name that starts with _MC_AX[*] may start with
_MC1_AX[*] or _MC2_AX[*] instead.
Timing Charts
MC_ChangeAxisUse Instruction
Execute
Done
Busy
CommandAborted
Error
ErrorID 16#0000
Errors
If an error occurs during instruction execution, Error will change to TRUE and the setting of the Axis
Use axis parameter will not change.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
Done
Busy
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
If an error occurs in executing this instruction for a used axis, an axis error will occur. If an error
occurs in executing this instruction for an unused axis, an MC common error will occur.
MC_ChangeAxisUse
3
Function
MC_DigitalCamSwitch
The MC_DigitalCamSwitch instruction turns a digital output ON or OFF according to the axis position.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_DigitalCamS- Enable Digital FB MC_DigitalCamSwitch_instance MC_DigitalCamSwitch_instance (
witch Cam Switch MC_DigitalCamSwitch Axis :=parameter,
Axis Axis Switches :=parameter,
Switches Switches Outputs :=parameter,
Outputs Outputs TrackOptions :=parameter,
TrackOptions TrackOptions
Enable :=parameter,
Enable InOperation
EnableMask :=parameter,
EnableMask Busy
ValueSource Error ValueSource :=parameter,
ErrorID InOperation =>parameter,
Busy =>parameter,
Error =>parameter,
ErrorID =>parameter
);
• Always use the axis at a constant velocity for the MC_DigitalCamSwitch (Enable Digital Cam
Switch) instruction.
• Use the NX_AryDOutTimeStamp (Write Digital Output Array with Specified Time Stamp) in-
struction only after you confirm that InOperation from the MC_DigitalCamSwitch (Enable Digi-
tal Cam Switch) instruction is TRUE.
Version Information
A CPU Unit with unit version 1.06 or later and Sysmac Studio version 1.07 or higher are re-
quired to use this instruction.
Variables
Input Variables
Data
Name Meaning Valid range Default Description
type
MC_DigitalCamSwitch
Enable Enable BOOL TRUE or FALSE The instruction is executed while the value
FALSE of this variable is TRUE. The values in
Outputs will not change while the value of
this variable is FALSE. *1
EnableMask Enable Tracks WORD 16#0000 to 16#0000 Specify whether to enable or disable each
FFFF track. There are a maximum of 16 tracks.
Specify enable or disable for track 0 with bit
00 and track 15 with bit 15. 3
0:Disable*2
1: Enable
Variables
ValueSource Input Informa- _sMC_S --- --- (Reserved)
(Reserved) tion OURCE
*1. The values in Outputs (Output Signals) are retained while Enable is FALSE. When Enable in the NX_AryDOutTimeS-
tamp instruction is FALSE, the digital output from the Digital Output Unit goes OFF.
*2. When the value of a bit for a track number in EnableMask is 0, the elements for that track number in Outputs (Output
Signals) will be OFF.
Output Variables
Data
Name Meaning Valid range Description
type
InOperation In Operation BOOL TRUE or TRUE while there are enabled output signals.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specify the axis for which to access the position.
*1
Function
• The MC_DigitalCamSwitch instruction outputs the times when the actual position of an axis will
reach positions that are set in Switches as the times for turning a digital output ON and OFF.
• Always use this instruction together with the NX_AryDOutTimeStamp instruction and with a Digital
Output Unit that supports time stamp refreshing.
• The NX_AryDOutTimeStamp instruction turns the specified digital output ON or OFF at the specified
time stamp. If you use time stamp refreshing, you can turn digital output signals ON and OFF at the
required time without being affected by the timing of control processing.
• This instruction is not sufficient to actually turn digital outputs ON and OFF.
• If you use an NX-series Encoder Input Unit, this instruction requires that time stamping is op-
erating.
Time stamping is not possible in the following cases.
a) An Encoder Input Unit or Servo Drive that does not support time stamping is used.
b) Object 6010 hex (Time Stamp) in the NX-series Encoder Input Unit is not assigned to a
MC_DigitalCamSwitch
PDO.
c) The Enable Distributed Clock in the EtherCAT Coupler Unit is Disabled (FreeRun).
• If you use an OMRON 1S-series Servo Drive with built-in EtherCAT communications, this in-
struction is not possible in the following cases.
a) Object 3211-83 hex (Present Position Time Stamp) in the OMRON 1S-series Servo Drive
with built-in EtherCAT communications is not assigned to a PDO.
b) The Enable Distributed Clock in the OMRON 1S-series Servo Drive with built-in Ether-
CAT communications is Disabled (FreeRun).
• An error does not occur for this instruction even if the time stamp is not updated. The 3
ON/OFF time will be calculated, but the result will not be the intended value.
Use this instruction only after you confirm in the MC Monitor Table or Watch Tab Page of the
Function
Sysmac Studio that the TimeStamp member of the Axis Variable is being updated.
• If you use this instruction together with the NX_AryDOutTimeStamp instruction and with a
Digital Output Unit that supports time stamp refreshing, the minimum ON/OFF range will be
proportional to the value of the task period and the value of the rotation rate.
For example, the minimum ON/OFF range would be 5° if one rotation of the rotary table is
360°, the rotation rate is 800 r/min, and the task period is 500 µs. The minimum ON/OFF
range would become 10° if the task period was increased to 1,000 µs.
• Set the values of the FirstOnPosition, LastOnPosition, and Duration in the switch structure
variable so that the ON/OFF range of the digital output is larger than the minimum ON/OFF
range. If it is smaller than the minimum ON/OFF range, the actual digital output may not turn
ON or OFF.
• This instruction calculates the time stamp for when the specified position is reached based on
both the current position and current velocity of the axis. The accuracy of the calculated
stamp times is influenced by the encoder resolution and the rotation rate of the axis. The er-
ror will increase if the encoder resolution is low or the rotation rate of the axis is slow. You can
calculate a guideline for the maximum error with the following formula.
Maximum error in time stamp (s) = 180/(Encoder resolution (pulses/rotation) × rotation rate(r/
min))
Some examples of the maximum error in time stamps for the encoder resolution and rotation
rate are given in the following table.
If the axis accelerates or decelerates quickly, the calculation error may increase. Use this in-
struction when the axis is at a constant velocity.
Verify operation sufficiently to confirm safety.
• If you specify an unused axis or if the MC Test Run is in progress, Busy will change to TRUE
and InOperation and Error will change to FALSE when Enable changes to TRUE.
• Do not create two instances with the same instance name. If you do, unintentional outputs
may occur.
Additional Information
Instruction Details
You can use this instruction to implement a mechanical cam switch that controls a sensor output signal
according to cam rotation angles in a program in the Controller. One track corresponds to one cam.
Track 2
Track 1
Track 0
Track 0
ON start position ON start position ON start position ON start position ON start position
ON end position ON end position ON end position ON end position ON end position
Track 1
ON start position
ON end position
Track 2
ON start position ON start position ON start position
ON end position ON end position ON end position
Position
TrackNumber corresponds to the cam number. The values of the FirstOnPosition (ON Start Position)
and LastOnPosition (ON End Position) correspond to the shape of the cam.
The MC_DigitalCamSwitch instruction calculates the OnTime (ON Time) and OffTime (OFF Time) to
reach the specified ON start position and ON end position and stores them in the parameter that is
specified for Outputs (Output Signals).
Outputs[0]
OnTime[0] OffTime[0] OnTime[1] OffTime[1] OnTime[2] OffTime[2] OnTime[3] OffTime[3] OnTime[4] OffTime[4]
Outputs[1]
OnTime[0] OffTime[0]
Outputs[2]
OnTime[0] OffTime[0] OnTime[1] OffTime[1] OnTime[2] OffTime[2]
Time
The NX_AryDOutTimeStamp instruction turns the actual digital outputs ON or OFF according to
OnTime (ON Time) and OffTime (OFF Time) in the parameter that is specified for SetDOut (Output
Pulses).
For SetDOut (Output Pulses), specify the elements of the array variable that is specified for the param-
eter for Outputs (Output Signals) in the MC_DigitalCamSwitch instruction.
For DOut (DOut Unit Output Bit), specify as the actual digital output, the device variable that is as-
signed to the output bit of the Digital Output Unit that supports time stamp refreshing.
instMC_DigitalCamSwitch
MC_DigitalCamSwitch
MC_DigitalCamSwitch
MC_Axis001 Axis Axis MC_Axis001
Switches Switches Switches Switches
Outputs Outputs Outputs Outputs
Vel.Act TrackOptions TrackOptions TrackOptions TrackOptions InOperation
Enable InOperation
EnableMask EnableMask Busy DCS_Busy
ValueSource Error DCS_Error
ErrorID DCS_ErrID
3
inst_NX_AryDOutTimeStamp1
Function
InOperation NX_AryDOutTimeStamp
Enable ENO
Outputs[0] SetDOut SetDOut Outputs[0]
E001_Time_Stamp_of_Synchronous_Output SyncOutTime
N3_Output_Bit_00 DOut DOut N3_Output_Bit_00
N3_Output_Bit_00_Time_Stamp TimeStamp TimeStamp N3_Output_Bit_00_Time_Stamp
Enable
• The instruction is executed while Enable is TRUE. The values in Outputs will not change while the
variable is FALSE.
Setting Example
The operation is as shown below when the axis continuously rotates in the positive direction. Here, the
Count Mode is set to Rotary Mode and the ring counter range is set to 0 to 5000 in the axis
parameters.
MC_DigitalCamSwitch
1,350 ms
Track 1 Switch 3
Position
The operation is as shown below when the axis continuously rotates in the negative direction. The axis 3
parameter settings are the same as those that are given above.
Function
Switch 1
Track 0 Switch 2 Switch 2
1,350 ms
Track 1 Switch 3
Position
OnCompensation (ON Time Compensation) and OffCompensation (OFF Time Compensation) are
used to correct minor machine operation delays and offsets.
Always use the axis at a constant velocity for the MC_DigitalCamSwitch instruction.
If you set the Count Mode to Rotary Mode, the following operation will occur if you use
OnCompensation or OffCompensation and the axis velocity changes abruptly.
• If the value of OnCompensation or OffCompensation is equivalent to the time for half a rota-
tion or more, InOperation will be FALSE.
• If the value of OnCompensation results in exceeding LastOnPosition, the output timing will be
MC_DigitalCamSwitch
unstable.
FirstOnPosition LastOnPosition
OnCompensation
FirstOnPosition after compensation
3
• If the value of OffCompensation results in exceeding FirstOnPosition, the output timing will be
unstable.
Function
FirstOnPosition LastOnPosition
OffCompensation
LastOnPosition after compensation
If you set the Count Mode to Rotary Mode and use OnCompensation or OffCompensation, set
the parameters so that the relationship between FirstOnPosition and LastOnPosition is not re-
versed.
The output timing will be unstable.
Refer to "Precautions for Safe Use", above, for operation information.
Version Information
If the Count Mode is set to Rotary Mode, the following restrictions exist depending on the unit
version of the CPU Unit.
The valid range is different for a CPU Unit with unit version 1.09 or later and a CPU Unit with
unit version 1.08 or earlier. Check the valid range if you upgrade to a CPU Unit with unit version
1.09 or later.
CPU Unit with Unit Version 1.09 or Later
The valid range is T#-1s to T#1s, but the following restrictions also apply to the setting.
• Set the value within a range that does not exceed the time for half a rotation of the axis.
For example, for rotation at 500 r/min, the time for one rotation is 120 ms. The time is for half
a rotation, so set OnCompensation (ON Time Compensation) and OffCompensation (OFF
Time Compensation) to between −60 and 60 ms.
• If a value is set that exceeds the time for half a rotation of the axis, InOperation will be FALSE
and EnableOut will be FALSE. Always check the status of InOperation during application.
• If a value within the correct range is restored when InOperation is FALSE, InOperation will
change to TRUE.
CPU Unit with Unit Version 1.08 or Earlier
• The valid range is T#-1s to T#0s.
The following figure shows the operation when OnCompensation (ON Time Compensation) is set to
T#5ms and OffCompensation (OFF Time Compensation) is set to T#10ms for the Setting Example
given on page 3 - 426.
Switch 0
5 ms 10 ms
Position
Timing Charts
A timing chart for execution of the MC_DigitalCamSwitch (Enable Digital Cam Switch) instruction is
shown below.
Enable
InOperation
Busy
Error
ErrorID 16#0000
The following timing chart is for when an unused axis is specified or when an MC Test Run is in prog-
ress.
For a CPU Unit with unit version 1.09 or later, the timing chart will be the same if the Count Mode is
Rotary Mode and OnCompensation (ON Time Compensation) or OffCompensation (OFF Time Com-
pensation) is set to a time that exceeds half a rotation of the axis.
Enable
InOperation
Busy
Error
ErrorID 16#0000
MC_DigitalCamSwitch
Multi-execution of Motion Control Instructions
This instruction is executed independently from other instructions. The restrictions for multi-execution
of motion instructions do not apply.
For details on multi-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
3
Errors
Sample Programming
If this instruction cannot be executed, an error occurs and Error of this instruction changes to TRUE.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Enable
InOperation
Busy
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
Sample Programming
This section provides sample programming for the example that is given in Setting Example on page
3 - 426.
Configuration Devices
The following devices are used in this sample programming.
Parameter Settings
The minimum settings required for this sample programming are given below.
Axis Parameters
Axis Types
Count Modes
Ring Counters
Modulo Modulo
Axis maximum minimum
position position
Axis 1 5000 0
Axis 2 5000 0
Unit of Display
Ladder Diagram
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for axis 1.
MC_Axis001 _sAXIS_REF --- Axis Variable for axis 2.
E001_Time_Stamp_of_Synchronous_Output ULINT --- Device variable *1
N3_Output_Bit_00 BOOL --- Device variable
N3_Output_Bit_00_Time_Stamp ULINT --- Device variable
N3_Output_Bit_01 BOOL --- Device variable
MC_DigitalCamSwitch
_sOUTPUT_REF out variable.
The element numbers corre-
spond to the track numbers.
TrackOptions ARRAY[0..1] OF --- Input parameter for TrackOptions
_sTRACK_REF in-out variable.
The element numbers corre-
spond to the track numbers.
EnableMask WORD 16#0003 Input parameter for EnableMask 3
input variable.
Tracks 0 and 1 are enabled.
Sample Programming
*1. You must add 0x200A:02 (Time Stamp of Synchronous Output) to the I/O entries for the EtherCAT Coupler Unit.
Sample Programming
If StartPg is TRUE, check that the Servo Drive for axis 1 is ready.
StartPg MC_Axis000.DrvStatus.Ready Lock1
If the Servo Drive for axis 1 is ready, the Servo is turned ON.
PWR
MC_Power
Lock1 MC_Axis000 Axis Axis MC_Axis000 Pwr_Status
Enable Status
Busy Pwr_Bsy
Error Pwr_Err
ErrorID Pwr_ErrID
If a minor fault level error occurs for the axis composition, the error handler for the device (FaultHandler) is
executed.
Program the FaultHandler according to the device.
MC_Axis000.MFaultLvl.Active FaultHandler
EN FaultHandler
If the Servo is ON for axis 1 and home is not defined, the Home instruction is executed to define home.
HM
MC_Home
Pwr_Status MC_Axis000 Axis Axis MC_Axis000 Hm_D
Execute Done
Busy Hm_Bsy
CommandAborted Hm_Ca
Error Hm_Err
ErrorID Hm_ErrID
The parameters are set for the MC_MoveVelocity (Velocity Control) instruction and for the Switches variables
for the MC_DigitalCamSwitch (Enable Digital Cam Switch) instruction.
InitFlag
The MC_MoveVelocity (Velocity Control) instruction is executed if home is defined for axis 1.
VEL
MC_MoveVelocity
MC_Axis000.Details.Homed Hm_D MC_Axis000 Axis Axis MC_Axis000 Vel_InVel
Execute InVelocity
Vel_Vel Velocity Busy Vel_Bsy
Vel_Acc Acceleration Active Vel_Act
Vel_Dec Deceleration CommandAborted Vel_Ca
Vel_Jrk Jerk Error Vel_Err
Direction ErrorID Vel_ErrID
Continuous
BufferMode
After the MC_MoveVelocity (Velocity Control) instruction is executed for axis 1, the MC_DigitalCamSwitch
(Enable Digital Cam Switch) instruction is executed for axis 2.
instMC_DigitalCamSwitch
MC_DigitalCamSwitch
MC_Axis001 Axis Axis MC_Axis001
Switches Switches Switches Switches
Outputs Outputs Outputs Outputs
Vel.Act TrackOptions TrackOptions TrackOptions TrackOptions InOperation
Enable InOperation
EnableMask EnableMask Busy DCS_Busy
ValueSource Error DCS_Error
ErrorID DCS_ErrID
After the MC_DigitalCamSwitch (Enable Digital Cam Switch) instruction for axis 2 starts operating, the
NX_AryDOutTimeStamp (Write Digital Output Array with Specified Time Stamps) instruction is executed.
inst_NX_AryDOutTimeStamp1
InOperation NX_AryDOutTimeStamp
Enable ENO
Outputs[0] SetDOut SetDOut Outputs[0]
E001_Time_Stamp_of_Synchronous_Output SyncOutTime
N3_Output_Bit_00 DOut DOut N3_Output_Bit_00
N3_Output_Bit_00_Time_Stamp TimeStamp TimeStamp N3_Output_Bit_00_Time_Stamp
inst_NX_AryDOutTimeStamp2
InOperation NX_AryDOutTimeStamp
Enable ENO
Outputs[1] SetDOut SetDOut Outputs[1]
E001_Time_Stamp_of_Synchronous_Output SyncOutTime
N3_Output_Bit_01 DOut DOut N3_Output_Bit_01
N3_Output_Bit_01_Time_Stamp TimeStamp TimeStamp N3_Output_Bit_01_Time_Stamp
Contents of Inline ST
//MC_MoveVelocity parameters
Vel_Vel := LREAL#1000.0;
Vel_Acc := LREAL#0.0;
Vel_Dec := LREAL#0.0;
Vel_Jrk := LREAL#1000.0;
MC_DigitalCamSwitch
InitFlag := BOOL#TRUE;
//MC_DigitalCamSwitch parameters
Switches[0].TrackNumber := UINT#0;
Switches[0].FirstOnPosition := LREAL#2000.0;
Switches[0].LastOnPosition := LREAL#3000.0;
Switches[0].AxisDirection := _eMC_DIRECTION#_mcPositiveDirection;
Switches[0].CamSwitchMode := _eMC_SWITCH_MODE#_mcPositionBased; 3
Switches[1].TrackNumber := UINT#0;
Sample Programming
Switches[1].FirstOnPosition := LREAL#2500.0;
Switches[1].LastOnPosition := LREAL#3000.0;
Switches[1].AxisDirection := _eMC_DIRECTION#_mcNegativeDirection;
Switches[1].CamSwitchMode := _eMC_SWITCH_MODE#_mcPositionBased;
Switches[2].TrackNumber := UINT#0;
Switches[2].FirstOnPosition := LREAL#4000.0;
Switches[2].LastOnPosition := LREAL#1000.0;
Switches[2].AxisDirection := _eMC_DIRECTION#_mcNoDirection;
Switches[2].CamSwitchMode := _eMC_SWITCH_MODE#_mcPositionBased;
Switches[3].TrackNumber := UINT#1;
Switches[3].FirstOnPosition := LREAL#3000.0;
Switches[3].Duration := T#1350ms;
Switches[3].AxisDirection := _eMC_DIRECTION#_mcNoDirection;
Switches[3].CamSwitchMode := _eMC_SWITCH_MODE#_mcTimeBased;
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for axis 1.
MC_Axis001 _sAXIS_REF --- Axis Variable for axis 2.
E001_Time_Stamp_of_Synchronous_Output ULINT --- Device variable *1
N3_Output_Bit_00 BOOL --- Device variable
N3_Output_Bit_00_Time_Stamp ULINT --- Device variable
N3_Output_Bit_01 BOOL --- Device variable
N3_Output_Bit_01_Time_Stamp ULINT --- Device variable
Sample Programming
//Processing when input parameters are not set
IF InitFlag=FALSE THEN
//MC_MoveVelocity parameters
Vel_Vel := LREAL#1000.0;
Vel_Acc := LREAL#0.0;
Vel_Dec := LREAL#0.0;
Vel_Jrk := LREAL#1000.0;
//MC_DigitalCamSwitch parameters
Switches[0].TrackNumber := UINT#0;
Switches[0].FirstOnPosition := LREAL#2000.0;
Switches[0].LastOnPosition := LREAL#3000.0;
Switches[0].AxisDirection :=_eMC_DIRECTION#_mcPositiveDirection;
Switches[0].CamSwitchMode :=_eMC_SWITCH_MODE#_mcPositionBased;
Switches[1].TrackNumber := UINT#0;
Switches[1].FirstOnPosition := LREAL#2500.0;
Switches[1].LastOnPosition := LREAL#3000.0;
Switches[1].AxisDirection :=_eMC_DIRECTION#_mcNegativeDirection;
Switches[1].CamSwitchMode :=_eMC_SWITCH_MODE#_mcPositionBased;
Switches[2].TrackNumber := UINT#0;
Switches[2].FirstOnPosition := LREAL#4000.0;
Switches[2].LastOnPosition := LREAL#1000.0;
Switches[2].AxisDirection :=_eMC_DIRECTION#_mcNoDirection;
Switches[2].CamSwitchMode :=_eMC_SWITCH_MODE#_mcPositionBased;
MC_DigitalCamSwitch
Switches[3].TrackNumber := UINT#1;
Switches[3].FirstOnPosition := LREAL#3000.0;
Switches[3].Duration := T#1350ms;
Switches[3].AxisDirection :=_eMC_DIRECTION#_mcNoDirection;
Switches[3].CamSwitchMode :=_eMC_SWITCH_MODE#_mcTimeBased;
END_IF;
Sample Programming
//If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 1 is turned O
N.
//If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis000.DrvStatus.Ready=TRUE) THEN
Pwr_En:=TRUE;
ELSE
Pwr_En:=FALSE;
END_IF;
//If a minor fault level error occurs for axis 1, the error handler for the device
(FaultHandler) is executed.
//Program the FaultHandler according to the device.
IF MC_Axis000.MFaultLvl.Active=TRUE THEN
FaultHandler();
END_IF;
//If the Servo is ON and home is not defined, the Home instruction is executed.
IF (Pwr_Status=TRUE) THEN
Hm_Ex:=TRUE;
END_IF;
//MC_Power
PWR(
Axis := MC_Axis000,
Enable := Pwr_En,
Status => Pwr_Status,
Busy => Pwr_Bsy,
Error => Pwr_Err,
ErrorID => Pwr_ErrID
);
//MC_Home
HM(
Axis := MC_Axis000,
Execute := Hm_Ex,
Done => Hm_D,
Busy => Hm_Bsy,
CommandAborted => Hm_Ca,
Error => Hm_Err,
ErrorID => Hm_ErrID
);
//MC_MoveVelocity
VEL(
Axis := MC_Axis000,
Execute := Vel_Ex,
Velocity := Vel_Vel,
Acceleration := Vel_Acc,
Deceleration := Vel_Dec,
Jerk := Vel_Jrk,
InVelocity => Vel_InVel,
Busy => Vel_Bsy,
Active => Vel_Act,
CommandAborted => Vel_Ca,
Error => Vel_Err,
ErrorID => Vel_ErrID
);
//MC_DigitalCamSwitch
instMC_DigitalCamSwitch(
Axis := MC_Axis001,
Switches := Switches,
Outputs := Outputs,
TrackOptions := TrackOptions,
Enable := Vel_Act,
EnableMask := EnableMask,
InOperation => InOperation,
Busy => DCS_Busy,
Error => DCS_Error,
ErrorID => DCS_ErrorID );
inst_NX_AryDOutTimeStamp1(
Enable := Vel_Act,
SetDOut := Outputs[0],
SyncOutTime :=E001_Time_Stamp_of_Synchronous_Output,
DOut := N3_Output_Bit_00,
TimeStamp := N3_Output_Bit_00_Time_Stamp);
MC_DigitalCamSwitch
inst_NX_AryDOutTimeStamp2(
Enable := Vel_Act,
SetDOut := Outputs[1],
SyncOutTime :=E001_Time_Stamp_of_Synchronous_Output,
DOut := N3_Output_Bit_01,
TimeStamp := N3_Output_Bit_01_Time_Stamp);
3
Sample Programming
MC_TimeStampToPos
The MC_TimeStampToPos instruction calculates the position of the axis for the specified time stamp.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_TimeStamp- Time Stamp FB MC_TimestampToPos_instance MC_TimeStampToPos_instance (
ToPos to Axis Posi- MC_TimestampToPos Axis :=parameter,
tion Calcula- Axis Axis Enable :=parameter,
tion Enable Enabled TimeStamp :=parameter,
Timestamp Busy ValueSource :=parameter,
ValueSource CalcPosition
Enabled =>parameter,
Error
Busy =>parameter,
ErrorID
CalcPosition =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Version Information
A CPU Unit with unit version 1.06 or later and Sysmac Studio version 1.07 or higher are re-
quired to use this instruction.
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Enable Enable BOOL TRUE or FALSE FALSE The instruction is executed while the
value of this variable is TRUE.
TimeStamp Time Stamp ULINT Non-negative number 0 Specifies the time stamp for which to
calculate the position.
A time stamp that is based on the time
in a Digital Input Unit, Encoder Input
Unit, or OMRON 1S-series Servo
Drive with built-in EtherCAT communi-
cations that supports time stamp re-
freshing is specified. The unit is nano-
seconds.
Output Variables
MC_TimeStampToPos
Name Meaning Data type Valid range Description
Enabled Enable BOOL TRUE or FALSE TRUE when the axis is being controlled.
Busy Executing BOOL TRUE or FALSE TRUE when the instruction is acknowledged.
CalcPosition Calculated LREAL Negative number, Contains the position for the specified time stamp.
Position positive number, or The unit is command units. *1
0
Error Error BOOL TRUE or FALSE TRUE while there is an error.
ErrorID Error Code WORD *2 Contains the error code when an error occurs. 3
A value of 16#0000 indicates normal execution.
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
Function
information on command units.
*2. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specify the axis. *1*2
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
*2. Specify the encoder axis that is assigned to the NX-series Encoder Input Unit or the axis for the OMRON 1S-series
Servo Drive with built-in EtherCAT communications.
Function
• The MC_TimestampToPos instruction calculates the actual current position at the time stamp that is
specified by the input variable based on the actual current position and time stamp of the axis.
• For the axis, specify an NX-series Encoder Input Unit.
• If the Count Mode is set to Linear Mode in the axis parameters and an overflow or underflow occurs
in the calculated position, the calculated value will be the underflow value or the overflow value. In
this case, no error will occur.
Position
Current position
Calculated position
• If you use an NX-series Encoder Input Unit, this instruction requires that time stamping is op-
erating.
Time stamping is not possible in the following cases.
a) An Encoder Input Unit or Servo Drive that does not support time stamping is used.
b) Object 6010 hex (Time Stamp) in the NX-series Encoder Input Unit is not assigned to a
PDO.
c) The Enable Distributed Clock in the EtherCAT Coupler Unit is Disabled (FreeRun).
• If you use an OMRON 1S-series Servo Drive with built-in EtherCAT communications, this in-
struction is not possible in the following cases.
a) Object 3211-83 hex (Present Position Time Stamp) in the OMRON 1S-series Servo Drive
with built-in EtherCAT communications is not assigned to a PDO.
b) The Enable Distributed Clock in the OMRON 1S-series Servo Drive with built-in Ether-
CAT communications is Disabled (FreeRun).
• An error does not occur for this instruction even if the time stamp is not updated. The position
will be calculated, but the result will not be the position for the specified time stamp.
Use this instruction only after you confirm in the MC Monitor Table or Watch Tab Page of the
Sysmac Studio that the TimeStamp member of the Axis Variable is being updated.
• This instruction calculates the position for the specified time stamp based on both the current
position and current velocity of the axis. If the axis accelerates or decelerates quickly, the cal-
culation error may increase. Use this instruction when the axis is at a constant velocity.
Verify operation sufficiently to confirm safety.
• If you specify an unused axis or if the MC Test Run is in progress, Busy will change to TRUE
and Enabled and Error will change to FALSE when Enable changes to TRUE.
• Do not create two instances with the same instance name. If you do, unintentional outputs
may occur.
Timing Charts
A timing chart for execution of the MC_TimestampToPos instruction is shown below.
Enable
Enabled
Busy
Error
ErrorID 16#0000
The following timing chart is for when an unused axis is specified or when an MC Test Run in prog-
ress.
Enable
Enabled
Busy
CalcPosition Undefined.
MC_TimeStampToPos
Error
ErrorID 16#0000
Function
Multi-execution of Motion Control Instructions
This instruction is executed independently from other instructions. The restrictions for multi-execution
of motion instructions do not apply.
For details on multi-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
Errors
If this instruction cannot be executed, an error occurs and Error of this instruction changes to TRUE.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Enable
Enabled
Busy
CalcPosition Undefined.
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
Sample Programming
This section shows sample programming that measures the distances between workpieces that move
on a conveyor belt.
Configuration Devices
The following devices are used in this sample programming.
Parameter Settings
The minimum settings required for this sample programming are given below.
Axis Parameters
Axis Types
Count Modes
Ring Counters
Modulo Modulo
Axis maximum minimum
position position
Axis 1 360 0
Axis 2 360 0
Unit of Display
Operation Example
The sensor output turns ON when the sensor detects a workpiece. When the workpiece passes, the
sensor output turns OFF. When the sensor detects the next workpiece, the sensor output turns ON
again.
The position of the encoder input is calculated based on the time stamp when the sensor output turns
MC_TimeStampToPos
ON. The difference between two positions is the distance between the workpieces.
Sample Programming
Ladder Diagram
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for axis 1.
MC_Axis001 _sAXIS_REF --- Axis Variable for axis 2.
N3_Input_Bit_00 BOOL --- Device variable
N3_Input_Bit_00_Time_Stamp ULINT --- Device variable
Position ARRAY[0..1] OF --- Stores the calculated positions.
LREAL
Count ARRAY[0..1] OF --- Stores the number of rotations.
ULINT
FirstPoint UINT --- A variable that is used for proc-
essing.
LastPoint UINT --- A variable that is used for proc-
essing.
Distance LREAL --- The distance between workpieces.
Sample Programming
If StartPg is TRUE, check that the Servo Drive for axis 1 is ready.
StartPg MC_Axis000.DrvStatus.Ready Lock1
If the Servo Drive for axis 1 is ready, the Servo is turned ON.
PWR
MC_Power
Lock1 MC_Axis000 Axis Axis MC_Axis000 Pwr_Status
Enable Status
Busy Pwr_Bsy
Error Pwr_Err
ErrorID Pwr_ErrID
If a minor fault level error occurs for the axis composition, the error handler for the device (FaultHandler) is
executed.
Program the FaultHandler according to the device.
MC_Axis000.MFaultLvl.Active FaultHandler
EN FaultHandler
If the Servo is ON for axis 1 and home is not defined, the Home instruction is executed to define home.
HM
MC_Home
Pwr_Status MC_Axis000 Axis Axis MC_Axis000 Hm_D
Execute Done
Busy Hm_Bsy
CommandAborted Hm_Ca
Error Hm_Err
ErrorID Hm_ErrID
The parameters are set for the MC_MoveVelocity (Velocity Control) instruction.
InitFlag
The MC_MoveVelocity (Velocity Control) instruction is executed if home is defined for axis 1.
VEL
MC_MoveVelocity
MC_Axis000.Details.Homed Hm_D MC_Axis000 Axis Axis MC_Axis000 Vel_InVel
Execute InVelocity
Vel_Vel Velocity Busy Vel_Bsy
Vel_Acc Acceleration Active Vel_Act
Vel_Dec Deceleration CommandAborted Vel_Ca
Vel_Jrk Jerk Error Vel_Err
Direction ErrorID Vel_ErrID
Continuous
BufferMode
After the MC_MoveVelocity (Velocity Control) instruction is executed for axis 1, the MC_TimeStampToPos
(Time Stamp to Axis Position Calculation) instruction is executed for axis 2.
instMC_TimeStampToPos
MC_TimeStampToPos
Vel.Act MC_Axis001 Axis Axis MC_Axis001 inst_Enabled
Enable Enabled
N3_Input_Bit_00_Time_Stamp TimeStamp Busy TTP_Busy
ValueSource CalcPosition CalcPosition
MC_TimeStampToPos
Error TTP_Err
ErrorID TTP_ErrID
The number of rotations of the encoder axis is counted. (If the current value is less than the previous value, it
is assumed that the modulo maximum position has been exceeded.)
Sample Programming
CalcPosition (calculated position) is obtained when the sensor output turns ON. (The position is saved
alternately in Position[0] and Position[1].)
inst_Enabled N3_Input_Bit_00
After two workpieces are detected, the distance between the workpieces is calculated.
Finish
Contents of Inline ST 1
//MC_MoveVelocity parameters
Vel_Vel := LREAL#1000.0;
Vel_Acc := LREAL#0.0;
Vel_Dec := LREAL#0.0;
Vel_Jrk := LREAL#1000.0;
InitFlag := BOOL#TRUE;
Contents of Inline ST 2
IF MC_Axis001.Act.Pos < PreAxis001ActPos THEN
Inc(RotaryCount);
END_IF;
PreAxis001ActPos := MC_Axis001.Act.Pos;
Contents of Inline ST 3
IF Index < UINT#2 THEN
Position[Index] := CalcPosition;
Count[Index] := RotaryCount;
Index := Index + UINT#1;
END_IF;
Contents of Inline ST 4
//First comparison: Workpiece 1=Position[0] and workpiece 2=Position[1]
//Second comparison: Workpiece 2=Position[1] and workpiece 3=Position[0]
//Third comparison: Workpiece 3=Position[0] and workpiece 4=Position[1]
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for axis 1.
MC_Axis001 _sAXIS_REF --- Axis Variable for axis 2.
N3_Input_Bit_00 BOOL --- Device variable
N3_Input_Bit_00_Time_Stamp ULINT --- Device variable
Hm_Ex BOOL FALSE The HM instance of MC_Home is
executed when this variable
changes to TRUE.
Vel_Ex BOOL FALSE The VEL instance of MC_Move-
Velocity is executed when this
variable changes to TRUE.
PreN3InputBit00 BOOL --- The previous value of the N3_In-
put_Bit_00 device variable.
Position ARRAY[0..1] OF --- Stores the calculated positions.
LREAL
Count ARRAY[0..1] OF --- Stores the number of rotations.
ULINT
FirstPoint UINT --- A variable that is used for proc-
essing.
LastPoint UINT --- A variable that is used for proc-
essing.
Distance LREAL --- The distance between workpie-
ces.
Sample Programming
//Processing when input parameters are not set
IF InitFlag=FALSE THEN
//MC_MoveVelocity parameters
Vel_Vel := LREAL#1000.0;
Vel_Acc := LREAL#0.0;
Vel_Dec := LREAL#0.0;
Vel_Jrk := LREAL#1000.0;
MC_TimeStampToPos
//InitFlag is changed to TRUE after input parameters are set.
InitFlag:=TRUE;
END_IF;
//If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 1 is turned O
N.
//If the Servo Drive is not ready, the Servo is turned OFF. 3
IF (StartPg=TRUE)
AND (MC_Axis000.DrvStatus.Ready=TRUE) THEN
Sample Programming
Pwr_En:=TRUE;
ELSE
Pwr_En:=FALSE;
END_IF;
//If a minor fault level error occurs for axis 1, the error handler for the device
(FaultHandler) is executed.
//Program the FaultHandler according to the device.
IF MC_Axis000.MFaultLvl.Active=TRUE THEN
FaultHandler();
END_IF;
//If the Servo is ON and home is not defined, the Home instruction is executed.
IF (Pwr_Status=TRUE) THEN
Hm_Ex:=TRUE;
END_IF;
//MC_TimeStampToPos
instMC_TimeStampToPos(
Axis := MC_Axis001,
Enable := Vel_Ex,
TimeStamp := TimeStamp,
Enabled => inst_Enabled,
Busy => TSTP_Busy,
CalcPosition => CalcPosition,
Error => TSTP_Error,
ErrorID => TSTP_ErrorID );
//CalcPosition (calculated position) is obtained when the sensor output turns ON.
//(The position is saved alternately in Position[0] and Position[1].
IF inst_Enabled THEN
IF PreN3InputBit00=FALSE AND N3_Input_Bit_00=TRUE THEN
IF Index < UINT#2 THEN
Position[Index] := CalcPosition;
Count[Index] := RotaryCount;
Index := Index + UINT#1;
END_IF;
IF Index >= UINT#2 THEN
Finish := BOOL#TRUE;
Index := UINT#0;
END_IF;
END_IF;
END_IF;
PreN3InputBit00 := N3_Input_Bit_00;
//After two workpieces are detected, the distance between the workpieces is calcula
ted.
//First comparison: Workpiece 1=Position[0] and workpiece 2=Position[1]
//Second comparison: Workpiece 2=Position[1] and workpiece 3=Position[0]
//Third comparison: Workpiece 3=Position[0] and workpiece 4=Position[1]
//...
IF Finish THEN
FirstPoint := (Index+UINT#1) MOD UINT#2;
LastPoint :=Index;
DiffCount := Count[1] - Count[0];
Distance := (ABS( DiffCount) -LINT#1)* 360.0 +
(360.0 + Position[FirstPoint] -Position[LastPoint]);
END_IF;
//MC_Power
PWR(
Axis := MC_Axis000,
Enable := Pwr_En,
Status => Pwr_Status,
Busy => Pwr_Bsy,
//MC_Home
HM(
MC_TimeStampToPos
Axis := MC_Axis000,
Execute := Hm_Ex,
Done => Hm_D,
Busy => Hm_Bsy,
CommandAborted => Hm_Ca,
Error => Hm_Err,
ErrorID => Hm_ErrID
); 3
//MC_MoveVelocity
Sample Programming
VEL(
Axis := MC_Axis000,
Execute := Vel_Ex,
Velocity := Vel_Vel,
Acceleration := Vel_Acc,
Deceleration := Vel_Dec,
Jerk := Vel_Jrk,
InVelocity => Vel_InVel,
Busy => Vel_Bsy,
Active => Vel_Act,
CommandAborted => Vel_Ca,
Error => Vel_Err,
ErrorID => Vel_ErrID
);
MC_PeriodicSyncVariables
The MC_PeriodicSyncVariables instruction periodically synchronizes Axes Variables between tasks.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_Periodic- Periodic Axis FB MC_PeriodicSyncVariables_instance MC_PeriodicSyncVariables_in-
SyncVariables Variable Syn- MC_PeriodicSyncVariables stance (
chronization Axis Axis Axis :=parameter,
between Enable Enabled Enable :=parameter,
ExecID Busy
Tasks ExecID :=parameter,
Error
Enabled =>parameter,
ErrorID
Busy =>parameter,
Error =>parameter,
ErrorID =>parameter
);
You cannot use this instruction in an NX102 CPU Unit, NX1P2 CPU Unit, and an NJ-series
CPU Unit.
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Enable Enable BOOL TRUE or FALSE FALSE The instruction is executed when the
value of this variable changes to TRUE.
ExecID Execution UINT 2 2 Gives the ID of the task with which the
ID value of the variable is synchronized.
2: Priority-5 periodic task
Output Variables
Data Valid
Name Meaning Description
type range
Enabled Enabled BOOL TRUE or TRUE when the axis is being controlled.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
MC_PeriodicSyncVariables
Busy When Enable changes to TRUE.
• When Error changes to TRUE.
Error When there is an error in the execution condi- When the error is cleared.
tions or input parameters for the instruction.
In-Out Variables
Valid
Name Meaning Data type Description
range
3
Axis Axis _sAXIS_REF --- Specifies the axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
Function
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
• While Enable is TRUE, an Axis Variable is periodically synchronized between the primary periodic
task and a priority-5 periodic task.
• The synchronized Axis Variable is output to the Axis Variable system-defined variable in the speci-
fied task.
• This instruction supports variable synchronization only from the primary periodic task to the
priority-5 periodic task.
• Even if the value of ExecID (Execution ID) specifies the task where that axis is assigned, an
error does not occur and Busy remains TRUE.
Additional Information
If you declare an external variable in the user program for an Axis Variable of an axis that is
controlled in a different task, you cannot be sure of the update timing of the accessed Axis Vari-
able, which will depend on when execution of the user program started.
Always use the MC_PeriodicSyncVariables (Periodic Axis Variable Synchronization between
Tasks) instruction when controls are performed in different tasks for applications that have mas-
ter-slave relationships between the controlled axes, such as those for electronic cams.
Instruction Details
This section describes the instruction in detail.
Timing of Synchronization
You can access values in the Axis Variable of an axis that is controlled in the user program for the
primary periodic task from the user program for the priority-5 periodic task.
Values are never written to the Axis Variable of an axis in the primary periodic task while the program
for the priority-5 periodic task is being executed.
The user program for the priority-5 periodic task uses the execution results from the primary periodic
task from just prior to when the start of the primary periodic task and the start of the priority-5 periodic
task coincided.
The following figure shows the timing of applying the values in an Axis Variable in the primary periodic
task to the priority-5 periodic task.
Servo
Execution
Primary period (t) command
Primary
MC
MC
MC
MC
MC
IO UPG IO UPG IO UPG IO UPG IO UPG
periodic task
Abbrevia-
Description
tion
(A) Axis Variable updated.
Regardless of where the user program execution for the priority-5 periodic task starts, the execu-
tion results from the primary periodic task from just prior to when the start of the task periods coin-
cided are used.
(B) The values in the Axis Variable will not be overwritten during the user program execution.
Servo Execution
Primary period (t) command
Primary
MC
MC
MC
MC
MC
MC
MC
MC
MC
Additional Information
If a task period is exceeded, the execution results from just prior to when the start of the task
periods coincided are not used, rather, the execution results from the period before that period
are used.
MC_PeriodicSyncVariables
Primary period (t) Task period exceeded.
Primary
MC
MC
IO UPG IO IO IO UPG
periodic task
MC
Task period (t×2)
Priority-5
IO UPG MC IO UPG MC
periodic task
(A)
(B)
3
Ab-
brevi- Description
ation
Function
(A) Axis Variable updated.
If the task period is exceeded, the values from one more period before that period are applied.
(B) The values in the Axis Variable will not be overwritten during the user program execution.
For example, if the Motion Control axis parameters are set as shown below, the Axis Variable sys-
tem-defined variables shown in the following figure are updated.
Note The parameters that are labeled Reserved will have the default settings except for the basic settings.
If you set Axis to axis 1 and ExecID (Execution ID) to 10#2 and execute the MC_PeriodicSyncVaria-
bles (Periodic Axis Variable Synchronization between Tasks) instruction, the area for _MC2_Ax[1] is
updated.
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axis parameters are
not written. The value before the instruction was executed will be held.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Enable
Busy
Enabled
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
Sample Programming
In this sample, axis 1 is the master axis. Axis 2 is a slave axis that requires high-speed, high-precision
control. It is assigned to the primary periodic task. Axis 3 is a slave axis that does not require preci-
sion. It is assigned to a priority-5 periodic task. The master axis (axis 1) is assigned to the primary
MC_PeriodicSyncVariables
periodic task.
Axis 1
1:2 2:3
Sample Programming
Axis 2 Axis 3
Axis 1:
Master axis
1:2
Axis 2:
Slave axis Primary periodic task
Target
Calculations position given Axis 4: 2:3
Master axis position to virtual axis. Virtual axis
Master axis velocity
Axis 3:
Slave axis
Programming is placed in both the primary periodic task and priority-5 periodic task to achieve the op-
eration for the above application.
Ladder Diagram
The ladder diagram programming in the primary periodic task is given below.
MC_PeriodicSyncVariables
struction.
PhaseShift LREAL Phase shift amount
VirtualMasterAxisTargetPosition LREAL Target position of the virtual master axis for each task
period
SyncExecute BOOL Synchronized control start signal for slave axis
*1. In this sample, the Primary_MasterAxis internal variable is defined with the same name as the master ax-
is in the primary periodic task.
Ladder Diagram
3
The ladder diagram programming in the priority-5 periodic task is given below.
The current position and phase shift amount (PhaseShift) of Primary_MasterAxis are added to obtain the
Sample Programming
command position (VirtualMasterAxisTargetPosition) for Secondary_VirtualMasterAxis.
The MC_SyncMoveAbsolute (Cyclic Synchronous Absolute Positioning) instruction is used so that
Secondary_VirtualMasterAxis always follows Primary_MasterAxis.
P_On P_First_RunMode ADD
EN ENO
Primary_MasterAxis.Act.Pos In1 VirtualMasterAxisTargetPosition
PhaseShift In2
SyncMoveAbs
MC_SyncMoveAbsolute
Secondary_VirtualMasterAxis Axis Axis Secondary_VirtualMaster
Axis
Execute InPosition
VirtualMasterAxisTargetPosition Position Busy
Direction Active
BufferMode CommandAborted
Error
ErrorID
MC_SyncOffsetPosition
The MC_SyncOffsetPosition cyclically adds the specified position offset to the command current posi-
tion of the slave axis in synchronized control, and outputs the result.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_SyncOffset- Cyclic Syn- FB MC_SyncOffsetPosition_instance MC_SyncOffsetPosition_instance
Position chronous Po- MC_SyncOffsetPosition (
sition Offset Axis Axis Axis :=parameter,
Compensa- Execute OutputtedOffsetPosition Execute :=parameter,
tion OffsetPosition Busy OffsetPosition :=parameter,
BufferMode Active
BufferMode :=parameter,
MoveMode CommandAborted
MoveMode :=parameter,
Error
ErrorID OutputtedOffsetPosition
=>parameter,
Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Version Information
A CPU Unit with unit version 1.10 or later and Sysmac Studio version 1.12 or higher are re-
quired to use this instruction.
Variables
Input Variables
Data
Name Meaning Valid range Default Description
type
Execute Execute BOOL TRUE or FALSE FALSE The instruction is executed when the
value of this variable changes to
TRUE.
OffsetPosition Position Offset LREAL Negative number, 0 Specify the position offset to add to
positive number, or 0 the command current position.
The unit is command units. *1
BufferMode Buffer Mode Se- _eMC_B 0: _mcAborting 0*2 Specify the behavior when executing
lection UF- more than one motion instruction.
FER_MO 0: Aborting
DE
MoveMode Travel Mode _eMC_M 1: _mcRelative 0*2 Select the travel method.
OVE_MO 1: Relative positioning
DE
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
*2. The default value for an enumeration variable is actually not the number, but the enumerator.
Output Variables
Data
Name Meaning Valid range Description
type
OutputtedOffset- Position Off- LREAL Negative number, Contains the position offset that was added to the
Position set Output positive number, command current position.
MC_SyncOffsetPosition
Value or 0 The value is updated when Active is TRUE.
Updating is stopped and the value is retained when
CommandAborted or Error is TRUE.
Busy Executing BOOL TRUE or FALSE TRUE when the instruction is acknowledged.
Active Controlling BOOL TRUE or FALSE TRUE while the axis is being controlled.
CommandAbort- Instruction BOOL TRUE or FALSE TRUE when the instruction is aborted.
ed Aborted
Error Error BOOL TRUE or FALSE TRUE while there is an error.
3
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
Variables
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specify the axis. *1*2
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
*2. Specify the encoder axis that is assigned to the NX-series Encoder Input Unit or the axis for the OMRON 1S-series
Servo Drive with built-in EtherCAT communications.
Function
• The MC_SyncOffsetPosition instruction adds an offset that is calculated based on the value of the
OffsetPosition (Position Offset) input variable to the command current position and outputs the result
to the Servo Drive.
• You can change the value of the OffsetPosition (Position Offset) input variable while the Active
(Controlling) output variable is TRUE.
• The starting point for this instruction is used as the starting point for OffsetPosition (Position Offset)
as long as Active (Controlling) of this instruction is TRUE. Refer to Repeatedly Starting and Stop-
ping this Instruction on page 3 - 463 for details.
First position
Command position
before addition of offset + Servo Drive
Target position Motion instruction
+ (CSP)
MC_SyncOffsetPosition instruction
-
+
Position offset
0
Switch 2
a) Switch 1 is turned ON only once when Execute of the motion instruction is changed to TRUE.
b) Switch 2 is ON while Active (Controlling) of the MC_SyncOffsetPosition instruction is TRUE.
c) When switch 2 is OFF, the offset that is added to the command position is 0.
• You can execute this instruction only for a slave axis that is currently in synchronized control.
• After execution of this instruction is started, CommandAborted (Instruction Aborted) changes to
TRUE after Done, CommandAborted (Instruction Aborted), or Error of the target synchronized con-
trol instruction changes to TRUE.
• If CommandAborted (Instruction Aborted) or Error of this instruction changes to TRUE, the offset
that was previously added to the command position is retained.
• The following timing chart shows execution of this instruction while execution of the MC_GearIn
(Start Gear Operation) instruction is in progress in the primary periodic task and then
CommandAborted (Instruction Aborted) of the MC_GearIn (Start Gear Operation) instruction
changes to TRUE.
MC_GearIn Instruction
Execute
Active
CommandAborted
MC_SyncOffsetPosition
MC_GearOut Instruction
Execute
Done
MC_SyncOffsetPosition Instruction
Execute
3
OffsetPosition 0 -10 0 10 20
Active
Function
CommandAborted
OutputtedOffsetPosition 0 -10 0 10 20
Offset 0 -10 0 10 0 10 0
+10
+10
-10
-10
-10
Time
Execute
OffsetPosition 0 20 40 60 0
Active
CommandAborted
OutputtedOffsetPosition 0 20 40 60 0
Offset 0 20 0 20 0 20 0
Command position
(increased or decreased by offset)
+60
+40
+20
Time
If you want to use the same starting point when you re-execute a previously aborted instruction, use
OutputtedOffsetPosition (Position Offset Output Value).
As shown in this programming sample, OutputtedOffsetPosition (Position Offset Output Value) is used
to access the position offset when execution was aborted and it is subtracted from the variable for the
input parameter specified for this instruction.
OffsetResetFlag MOVE
EN ENO
0 In Out PreviousOffsetPos
Execute SUB
EN ENO
InputOffsetPos In1 OffsetPosition
Busy PreviousOffsetPos In2
SyncOffsetPos
MC_SyncOffsetPosition
Execute MC_Axis000 Axis Axis MC_Axis000
Execute OutputtedOffsetPosition OutputtedOffsetPos Busy
OffsetPosition OffsetPosition Busy
BufferMode Active
MoveMode CommandAborted CA
Error Error
ErrorID
CA ADD
EN ENO
OutputtedOffsetPos In1 PreviousOffsetPos
Error PreviousOffsetPos In2
MC_SyncOffsetPosition
InputOffsetPosition 0 20 40 60
PreviousOffsetPos 0 60
MC_SyncOffsetPosition Instruction
Execute
OffsetPosition 0 20 40 60 0
3
Active
Function
CommandAborted
OutputtedOffsetPosition 0 20 40 60 0
Offset 0 20 0 20 0 20 0
Command position
(increased or decreased by offset)
+60
+40
+20
Time
Timing Charts
The following timing charts show when the position offset is applied when this instruction is executed.
When this Instruction Is Executed in the Primary Periodic Task or Priority-5 Peri-
odic Task
The position offset that is specified for the input is output to the Servo Drive during the next task peri-
od.
The following timing chart shows an example of the operation for when this instruction is executed in
the primary periodic task.
The same information applies when it is used in a priority-5 periodic task.
MC_SyncOffsetPosition Instruction
Execute
Active
OffsetPosition 10 20
+20
+10
Time
MC_SyncOffsetPosition Instruction
Execute
Active
OffsetPosition 10 20
MC_SyncOffsetPosition
Command position Solid line: After position offset is added
Primary period Task period +20
3
Time
Function
Re-execution of Motion Control Instructions
This instruction cannot be re-executed.
A Motion Control Instruction Re-execution Disabled error (error code: 543B hex) occurs if re-execution
is attempted.
MC_GearIn Instruction 1
Execute
Active
CommandAborted
MC_GearIn Instruction 2
Execute
Done
MC_SyncOffsetPosition Instruction
Execute
Active
CommandAborted
OffsetPosition 0 10
Time
MC_SyncOffsetPosition Instruction 1
Execute
OffsetPosition 0 10
Active
MC_SyncOffsetPosition
CommandAborted
MC_SyncOffsetPosition Instruction 2
Execute
OffsetPosition 0 20 30
Active
3
Command position Solid line: After position offset is added
Function
+30
+30 Dash-dot line: Starting point for
Primary period multi-execution of instructions
+30
+10
+20 +10 Dotted line: Before position
+20 +10 offset is added
+20 +10
+10
+10
+10
+10 After multi-execution of instructions
+10
Time
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axes will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
Busy
Active
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_OffsetPosition
The MC_OffsetPosition instruction adds the specified position offset to the command current position
of the slave axis in synchronized control with an acceleration/deceleration curve applied, and outputs
the result.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_OffsetPosi- Position Off- FB MC_OffsetPosition_instance MC_OffsetPosition_instance(
tion set Compen- MC_OffsetPosition Axis :=parameter ,
sation Axis Axis Execute :=parameter,
Execute Done OffsetPosition :=parameter,
OffsetPosition OutputtedOffsetPosition
Velocity :=parameter,
Velocity Busy
Acceleration :=parameter,
Acceleration Active
Deceleration CommandAborted
Deceleration :=parameter,
Jerk Error Jerk :=parameter,
BufferMode ErrorID BufferMode :=parameter,
MoveMode MoveMode :=parameter,
Done =>parameter,
OutputtedOffsetPosition
=>parameter,
Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Version Information
A CPU Unit with the following unit version and Sysmac Studio version 1.28 or higher are re-
quired to use this instruction.
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Execute Execute BOOL TRUE or FALSE FALSE The instruction is executed when the
value of this variable changes to
TRUE.
OffsetPosition Position Off- LREAL Negative number, 0 Specifies the position offset to add to
set positive number, or the command current position.
0 The unit is command units. *1
MC_OffsetPosition
Jerk Jerk LREAL 0 0 Specifies the jerk.
(Reserved) The unit is command units/s3. *1
BufferMode Buffer Mode _eMC_BUF- 0: _mcAborting 0 *3 Specifies the behavior when execut-
(Reserved) Selection FER_MODE ing more than one motion instruction.
0: Aborting
MoveMode Travel Mode _eMC_MOV 1: _mcRelative 1 *3 Selects the travel method.
E_MODE 1: Relative positioning 3
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
Variables
*2. Always set the target velocity. If the axis is moved without setting a target velocity, an error will occur.
*3. The default value for an enumeration variable is actually not the number, but the enumerator.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
OutputtedOffsetPo- Position Offset LREAL Negative Contains the position offset that was added to the com-
sition Output Value number, mand current position.
positive The value is updated when Active is TRUE.
number, or Updating is stopped and the value is retained when
0 CommandAborted or Error is TRUE.
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE when control is in progress.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specifies the axis. *1
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio (default: MC_Ax-
is*) or a system-defined axis variable name (_MC_AX[*], _MC1_AX[*], or _MC2_AX[*]).
Function
The MC_OffsetPosition instruction adds an offset specified with OffsetPosition (Position Offset),
Velocity (Target Velocity), Acceleration (Acceleration), and Deceleration (Deceleration) to the com-
mand current position of the slave axis in synchronized control, and outputs the result to the Servo
Drive.
The following shows the timing chart for an example in which this instruction is executed during execu-
tion of the MC_GearIn instruction and then is completed.
*1
Command
velocity
*2
Time
MC_OffsetPosition instruction
Execute
MC_OffsetPosition
Done
Busy
Active
MC_GearIn instruction
3
Execute
Function
Active
The following shows the timing chart for an example in which this instruction is executed during execu-
tion of the MC_GearIn (Start Gear Operation) instruction, and then is stopped as CommandAborted
(Instruction Aborted) for the MC_GearIn instruction changes to TRUE.
*1
Command
velocity
*2
Time
MC_OffsetPosition instruction
Execute
Busy
Active
CommandAborted
MC_GearIn instruction
Execute
Active
CommandAborted
Axis Limit
The axis limit functions for the command position to which the position offset is added.
The specifications of the axis limit depend on the specifications of the synchronized control instruction
currently in operation.
The related axis limit values are listed as follows.
• Operation Settings Values
a) Maximum velocity
b) Maximum acceleration/Maximum deceleration
c) Velocity warning value
d) Acceleration warning value/Deceleration warning value
• Limit Settings Values
a) Following error over value
b) Following error warning value
c) Software limit values
• Command Position Overflow/Command Position Underflow
• In-position Check
For details on re-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
Errors
If an error occurs during instruction execution, Error will change to TRUE.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Busy
Active
MC_OffsetPosition
CommandAborted
Error
ErrorID 16#0000
MC_OffsetPosition instruction
Execute 3
Done
Function
Busy
Active
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_GroupEnable ................................................................................................... 4 - 2
MC_GroupDisable .................................................................................................. 4 - 6
MC_MoveLinear .................................................................................................... 4 - 10
MC_MoveLinearAbsolute..................................................................................... 4 - 39
MC_MoveLinearRelative ...................................................................................... 4 - 42
MC_MoveCircular2D ............................................................................................ 4 - 45
MC_GroupStop ..................................................................................................... 4 - 73
MC_GroupImmediateStop ................................................................................... 4 - 81
MC_GroupSetOverride......................................................................................... 4 - 85
MC_GroupReadPosition ...................................................................................... 4 - 90
MC_ChangeAxesInGroup .................................................................................... 4 - 94
MC_GroupSyncMoveAbsolute ............................................................................ 4 - 98
MC_GroupReset ................................................................................................. 4 - 104
MC_GroupEnable
The MC_GroupEnable instruction enables an axes group.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_GroupEnable Enable Axes FB MC_GroupEnable_instance MC_GroupEnable_instance (
Group MC_GroupEnable AxesGroup :=parameter,
AxesGroup AxesGroup Execute :=parameter,
Execute Done Done =>parameter,
Busy Busy =>parameter,
CommandAborted
CommandAborted =>parameter,
Error
Error =>parameter,
ErrorID
ErrorID =>parameter
);
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Execute Execute BOOL TRUE or FALSE The instruction is executed when the value
FALSE of this variable changes to TRUE.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
MC_GroupEnable
In-Out Variables
Valid
Name Meaning Data type Description
range
AxesGroup Axes Group _sGROUP_R --- Specify the axes group. *1
EF
*1. Specify a user-defined Axes Group Variable that was created in the Axes Group Basic Settings of the Sysmac Studio
4
(default: MC_Group*) or a system-defined axes group variable name (_MC_GRP[*], _MC1_GRP[*], or _MC2_GRP[*]).
Function
Function
Before describing the function of this instruction, the different states of axes groups are explained.
• Axes groups have two states, the GroupEnable and GroupDisable states.
State Description
GroupEnable Multi-axes coordinated control is enabled.
You can execute any multi-axes coordinated control instructions except for the
MC_ChangeAxesInGroup (Change Axes In Group) instruction.
GroupDisable Multi-axes coordinated control is disabled.
You can execute only the following multi-axes coordinated control instructions.
• MC_GroupEnable (Enable Axes Group) instruction
• MC_GroupDisable (Disable Axes Group) instruction
• MC_GroupReset (Group Reset) instruction
• MC_GroupSetOverride (Set Group Overrides) instruction
• MC_GroupReadPosition (Read Axes Group Position) instruction
• MC_ChangeAxesInGroup (Change Axes in Group) instruction
You can monitor the Axes Group Variables in the system-defined variables for motion control to see if
axes groups are enabled or disabled.
Here, the Axes Group Variables are described using _MC_GRP[*] as an example.
The same information applies to _MC1_GRP[*] and _MC2_GRP[*].
Note * in _MC_GRP*. is replaced by a number between 0 and 63 for NX701 CPU Units, a number between 0 and 7 for
NX102 and NX1P2 CPU Units, and a number between 0 and 31 for NJ-series CPU Units.
Basic Function
• The MC_GroupEnable (Enable Axes Group) instruction places the axes group specified by
AxesGroup into the GroupEnable state.
• When an axes group is in the GroupEnable state, you can execute any multi-axes coordinated con-
trol instructions for the axes group.
• You can set only Servo Axis and Virtual Servo Axis in an axes group. An error will occur if you
include other axis types.
• All axes that belong to an axes group must be in a stopped state to enable the group.
An axis is stopped if the Status.Disabled (Axis Disabled) or Status.Standstill (Standstill) in the Axis
Variable is TRUE.
• If there are axes that already belong to another axes group and the other axes group is enabled, the
MC_GroupEnable instruction is not executed and an error will occur if you attempt to execute it.
• When an axes group is enabled, the axes in the axes group change to Coordinated Motion status.
Status.Coordinated (Coordinated Motion) in the Axis Variable changes to TRUE.
• An axes group is disabled if the MC_GroupDisable (Disable Axes Group) instruction is executed, if
operation is stopped by changing to PROGRAM mode, or if a MC Test Run is started.
• To use an axes group, create an axes group on the Sysmac Studio and download the set-
tings to the CPU Unit. You cannot change the axes in an axes group from the user program.
For a CPU Unit with unit version 1.01 or later and Sysmac Studio version 1.02 or higher, you
can use the MC_ChangeAxesInGroup (Change Axes in Group) instruction to temporarily
change axes groups.
• Use the Synchronize Menu of the Sysmac Studio to download the project.
Timing Charts
Execute
Done
Busy
CommandAborted
Error
ErrorID 16#0000
Errors
If an error occurs during execution of the MC_GroupEnable instruction, Error will change to TRUE.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
Done
Busy
CommandAborted
Error
MC_GroupEnable
Additional Information
Errors do not occur for individual axes in an axes group even if an error occurs for the axes
group.
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
4
Function
MC_GroupDisable
The MC_GroupDisable instruction disables an axes group.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_GroupDisa- Disable Axes FB MC_GroupDisable_instance MC_GroupDisable_instance (
ble Group MC_GroupDisable AxesGroup :=parameter,
AxesGroup AxesGroup Execute :=parameter,
Execute Done Done =>parameter,
Busy Busy =>parameter,
CommandAborted
CommandAborted =>parameter,
Error
Error =>parameter,
ErrorID
ErrorID =>parameter
);
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Execute Execute BOOL TRUE or FALSE The instruction is executed when the value
FALSE of this variable changes to TRUE.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
MC_GroupDisable
In-Out Variables
Valid
Name Meaning Data type Description
range
AxesGroup Axes Group _sGROUP_R --- Specify the axes group. *1
EF
*1. Specify a user-defined Axes Group Variable that was created in the Axes Group Basic Settings of the Sysmac Studio
4
(default: MC_Group*) or a system-defined axes group variable name (_MC_GRP[*], _MC1_GRP[*], or _MC2_GRP[*]).
Function
Function
• The MC_GroupDisable instruction disables an axes group.
For details on the axes group states, refer to Function on page 4 - 3.
• The MC_GroupDisable (Disable Axes Group) instruction places the axes group specified by
AxesGroup into the GroupDisable state.
When an axes group is in the GroupDisable state, the axes group stops acknowledging multi-axes
coordinated control instructions.
• Any buffered instruction of the specified AxesGroup is cleared when the axes group state changes
to GroupDisable.
• The axes group is disabled even while operation is stopped.
When an axes group is disabled, the status of the axes in the axes group changes from TRUE for
Status.Coordinated (Coordinated Motion) to the status of each axis.
Use Status (Axis Status) in the Axis Variable to determine the status of each axis.
Timing Charts
Execute
Done
Busy
CommandAborted
Error
ErrorID 16#0000
If you execute the MC_GroupDisable instruction for an AxisGroup that is under multi-axes coordinated
control, CommandAborted of multi-axes coordinated control instruction will change to TRUE.
CommandAborted of any buffered multi-axes coordinated control instruction will also change to TRUE.
If the axes are moving, they will decelerate to a stop at the maximum deceleration rate for each axis.
Execute
Done
Busy
Active
CommandAborted
Error
ErrorID 16#0000
Execute
Done
Busy
Active
CommandAborted
Error
ErrorID 16#0000
MC_GroupDisable
Execute
Done
Busy
CommandAborted
Error
ErrorID 16#0000
Errors
If an error occurs during execution of the MC_GroupDisable instruction, Error will change to TRUE.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
Done
Busy
Error
MC_GroupDisable
ErrorID Error code
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
4
Function
MC_MoveLinear
The MC_MoveLinear instruction performs linear interpolation.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_MoveLinear Linear Inter- FB MC_MoveLinear_instance MC_MoveLinear_instance (
polation MC_MoveLinear AxesGroup :=parameter,
AxesGroup AxesGroup Execute :=parameter,
Execute Done Position :=parameter,
Position Busy Velocity :=parameter,
Velocity Active
Acceleration :=parameter,
Acceleration CommandAborted
Deceleration :=parameter,
Deceleration Error
Jerk ErrorID Jerk :=parameter,
CoordSystem CoordSystem :=parameter,
BufferMode BufferMode :=parameter,
TransitionMode TransitionMode :=parameter,
MoveMode MoveMode :=parameter,
Done =>parameter,
Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALS The instruction is executed
E when the value of this variable
changes to TRUE.
Position Target Posi- ARRAY[0..3] Negative number, positive 0 Specify the target position for
tion OF LREAL number, or 0 linear interpolation.
The unit is command units. *1
Velocity*2 Target Ve- LREAL Positive number 0 Specify the target velocity.
locity The unit is command units/s. *1
Acceleration Acceleration LREAL Non-negative number 0 Specify the acceleration rate.
Rate The unit is command units/s2.
*1
De-
Name Meaning Data type Valid range Description
fault
Jerk Jerk LREAL Non-negative number 0 Specify the jerk.
The unit is command units/s3.
*1
MC_MoveLinear
4: _mcBlendingNext 1: Buffered
5: _mcBlendingHigh 2: Blending low
3: Blending previous
4: Blending next
5: Blending high
Transition- Transition _eMC_TRAN- 0: _mcTMNone 0*3 Specify the path of motion.
Mode Mode SI- 10: _mcTMCornerSuperim- 0: Transition disabled
4
TION_MODE posed 10: Superimpose corners
MoveMode Travel Mode _eMC_MOVE 0: _mcAbsolute 0*3 Select the travel method.
Variables
_MODE 1: _mcRelative 0: Absolute positioning
1: Relative positioning
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
*2. Always set the target velocity. If the axes are moved without setting a target velocity, an error will occur.
*3. The default value for an enumeration variable is actually not the number, but the enumerator.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE when the axis is being controlled.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
AxesGroup Axes Group _sGROUP_R --- Specify the axes group. *1
EF
*1. Specify a user-defined Axes Group Variable that was created in the Axes Group Basic Settings of the Sysmac Studio
(default: MC_Group*) or a system-defined axes group variable name (_MC_GRP[*], _MC1_GRP[*], or _MC2_GRP[*]).
Function
• The MC_MoveLiner instruction performs linear interpolation for 2 to 4 axes.
• An Instruction Execution Error with Undefined Home (error code: 5466 hex) occurs if home is
undefined for any of the composition axes in the axes group.
• You cannot execute an instruction to perform linear interpolation if a limit input is ON for any
of the logical axes that belong to the axes group.
Instruction Details
This section describes the instruction in detail.
MC_MoveLinear
• The axis number is specified as follows according to the model or series.
Function
For the details of the axis numbers, refer to the NJ/NX-series CPU Unit Motion Control User’s
Manual (Cat. No. W507).
• In the Axes Group Basic Settings of the Sysmac Studio, select the axis composition to use for
Composition and assign an axis number to the logical axis. The following example shows a 3-
axis axes group that is called MC_Group000 with the following axes registered in it:
MC_Axis000, MC_Axis001, and MC_Axis002.
An Instruction Not Allowed for Encoder Axis Type error (543D hex) will occur and operation will
end if an encoder axis or virtual encoder axis is included in the axes group.
Make sure that you select only Servo Axes or Virtual Servo Axes.
• Turn ON the Servo for the composition axes of the axes group, and then define home for each
of the composition axes.
• Execute the MC_GroupEnable instruction to enable the registered axes group.
The following example shows assigning the target positions to Pos1 with inline ST.
In the figure, target positions (1000.0, 2000.0, 3000.0) are assigned to axes A0 to A2.
EnterVariable
1 Pos1[0] : =LREAL#1000.0; (* A0 *)
2 Pos1[1] : =LREAL#2000.0; (* A1 *)
3 Pos1[2] : =LREAL#3000.0; (* A2 *)
• If an axis with the Count Mode set to Rotary Mode is set as an interpolation axis and you specify
absolute position, the target value will be the same as if Direction was set to No direction
specified.
For details, refer to Direction on page 3 - 54.
As an example, the following figure shows linear interpolation of 2 axes from point A to point B.
MC_MoveLinear
La1
Td
L
Fa1 F
4
Function
Ta
A
La0
X
Axis A0 motion
Ta Td
For linear interpolation of four axes, the interpolation velocity and travel distance of each axis deter-
mine the target velocities as shown below.
F: Specified interpolation feeding velocity
Fa0: Interpolation feeding velocity based on expansion of F to axis A0
Fa1: Interpolation feeding velocity based on expansion of F to axis A1
Fa2: Interpolation feeding velocity based on expansion of F to axis A2
Fa3: Interpolation feeding velocity based on expansion of F to axis A3
Ta: Interpolation acceleration time
Td: Interpolation deceleration time
L: Travel distance on the specified path
La0, La1, La2, and La3: Travel distances of axis A0, axis A1, axis A2, and axis A3.
L, Fa0, Fa1, Fa2, and Fa3 can be expressed with the following formulas.
La0
Fa0 = F × L
La1
Fa1 = F × L
La2
Fa2 = F ×
L
La3
Fa3 = F ×
L
2 2 2 2
L= La0 + La1 + La2 + La3
Jerk
The relationships between Acceleration (Acceleration Rate), Deceleration (Deceleration Rate), and
Velocity (Target Velocity) when Jerk is set to 0 and when it is set to any other value are shown below.
• Jerk Set to 0
The command value for the velocity is created with acceleration rate At and deceleration rate Dt.
Interpolation velocity
Vt
Time
Acceleration rate At
Time
Deceleration rate -Dt
Vt: Specified interpolation velocity, At: Specified acceleration rate, Dt: Specified deceleration rate.
Interpolation velocity
Vt
Time
Acceleration rate At
MC_MoveLinear
Time
Deceleration rate -Dt
Vt: Specified interpolation velocity, At: Specified acceleration rate, Dt: Specified deceleration rate.
Function
Time
Acceleration rate At
Time
Deceleration rate -Dt
Jt
Jerk
Time
-Jt
Vt: Specified interpolation velocity, At: Specified acceleration rate, Dt: Specified deceleration rate, Jt:
Specified jerk
Interpolation velocity
Vt
Time
Acceleration rate At
Time
Deceleration rate -Dt
Jt
Jerk
Time
-Jt
Vt: Specified interpolation velocity, At: Specified acceleration rate, Dt: Specified deceleration rate, Jt:
Specified jerk
Additional Information
• If 0 is specified for Acceleration (Acceleration Rate), the specified Velocity (Target Velocity) is
used immediately.
• If 0 is specified for Deceleration (Deceleration Rate), the axis stops immediately. However, if
the Buffer Mode is set to a blending mode, axis operation will change to the target velocity
specified by the next operation without stopping.
For details, refer to BufferMode (Buffer Mode Selection) on page 4 - 18.
• When the Acceleration (Acceleration Rate) or Deceleration (Deceleration Rate) is 0, the Jerk
setting is disabled.
MC_MoveLinear
Blending high The higher of the target velocities of the current instruction and the buffered instruction
is used as the transit velocity.
For details on BufferMode (Buffer Mode Selection), refer to the NJ/NX-series CPU Unit Motion Control
User’s Manual (Cat. No. W507).
4
TransitionMode
• This variable specifies how to combine the paths created by the previous interpolation operation and
Function
the next interpolation operation.
• Set the TransitionMode to either _mcTMNone (Transition Disabled) or _mcTMCornerSuperimposed
(Superimpose Corners).
• TransitionMode is enabled when Blending is specified for BufferMode.
• An error will occur if you do not set TransitionMode to _mcTMNone (Transition Disabled) when
Blending is not used.
Transition Disabled
The path is given priority when creating the velocity command value, so velocity command values of
the axes may change rapidly when switching from one operation to the next.
Operation Example
The Velocity (Target Velocity), BufferMode, and TransitionMode when transitioning from P1 to P2, and
from P2 to P3 are shown below.
• Motion from P1 to P2: Velocity = F, BufferMode = Aborting, TransitionMode = _mcTMNone (Transi-
tion Disabled)
• Motion from P2 to P3: Velocity = F, BufferMode = Blending with next, TransitionMode = _mcTMNone
(Transition Disabled)
• The motion starts from position P1 and goes through position P2. Linear interpolation is performed
to position P3.
• The linear interpolation velocity F is maintained when passing position P2. Because of this, the ve-
locity is discontinuous at position P2 as shown in the following figure.
A1
P3
Interpolation
velocity F
The velocity is
discontinuous.
P1 P2 The velocity is
discontinuous.
A0
Velocity of axis A1
Velocity of axis A0
Superimpose Corners
Use the superimpose corners specification when you want make the axes command velocities contin-
uous.
Operation Example
Velocity (Target Velocity), BufferMode, and TransitionMode when transitioning from P1 to P2, and from
P2 to P3 are shown below.
• Motion from P1 to P2: Velocity = F, BufferMode = Aborting, TransitionMode = _mcTMNone (Transi-
tion Disabled)
• Motion from P2 to P3: Velocity = F, BufferMode = Blending with next, TransitionMode = _mcTMCor-
nerSuperimposed (Superimpose Corners)
• The motion starts from position P1 and passes near position P2. Linear interpolation is performed to
position P3.
• To make the axes command velocities continuous, the deceleration range of the previous motion
and the acceleration range of the current motion are combined to create the command velocity. For
this reason, the acceleration time of the current motion is the same as the deceleration time of the
previous motion.
A1
P3
The velocity is
continuous.
MC_MoveLinear
range of the previous
motion and the acceleration
P1
range of the current motion.
P2
A0
Velocity of axis A1
Velocity of axis A0 4
Function
The combined path passes near P2.
The distance from P2 to the path is as below:
• It is longer when the interpolation velocity is faster or the deceleration rate of the previous instruction
is smaller.
• It is shorter when the interpolation velocity is slower or the deceleration rate of the previous instruc-
tion is larger.
Additional Information
The Jerk settings are disabled in the region with superimposed corners.
Execute
Done
Busy
Active
CommandAborted
Error
Interpolation velocity
Time
For details on multi-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axes will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
Done
Busy
Active
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
Sample Programming
This section shows sample programming for linear interpolation with periodic multi-execution of in-
structions.
Parameter Settings
The minimum settings required for this sample programming are given below.
MC_MoveLinear
Axis Types
Count Modes
4
Axis Count Mode
Axis 1 Linear Mode
Sample Programming
Axis 2 Linear Mode
Units of Display
Axis Selection
Axis 1 and axis 2 are set.
Operation Example
The following is an example of operation that performs linear interpolation automatically and then re-
turns to home and stops.
Linear interpolations (2) to (7) are executed with multi-execution of instructions while linear interpola-
tion (1) is being executed. Set the Buffer Mode Selection to Buffered.
In this sample, multi-execution of instructions is performed for (2) to (7) if the Active (Controlling) out-
put variable from linear interpolation (1) is TRUE. For multi-axes coordinated operation, multi-execu-
tion is possible for up to seven instructions.
Operation Pattern
Axis 2 (mm)
Positive direction
25.00
(5)
20.00
(4)
15.00
(3)
(6)
10.00
(2)
5.00
(1)
Positive direction
0.00 (7) 50.00 Axis 1 (mm)
Positioning is performed using linear interpolations in the order (Axis1, Axis2) = (50.00 mm, 5.00 mm)
→ (0.00 mm, 10.00 mm) → (50.00 mm, 15.00 mm) → (0.00 mm, 20.00 mm) → (50.00 mm, 25.00 mm)
→ (50.00 mm, 0.00 mm) → (0.00 mm, 0.00 mm), then stop.
Ladder Diagram
Main Variables
Name Data type Default Comment
MC_Group000 _sGROUP_R --- This is the Axes Group Variable for axes group
EF 0.
MC_Group000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error
for axes group 0.
MC_Group000.Status.Disabled BOOL FALSE The value is TRUE when axes group 0 is disa-
bled.
MC_Axis000 _sAXIS_REF --- This is the Axis Variable for axis 1.
MC_Axis000.Details.Homed BOOL FALSE TRUE when home is defined for axis 1.
MC_Axis000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error
for axis 1.
MC_Axis001 _sAXIS_REF --- This is the Axis Variable for axis 2.
MC_Axis001.Details.Homed BOOL FALSE TRUE when home is defined for axis 2.
MC_Axis001.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error
for axis 2.
Pwr1_Status BOOL FALSE This variable is assigned to the Status output
variable from the PWR1 instance of the
MC_Power instruction. This variable changes
to TRUE when the Servo is turned ON.
Pwr2_Status BOOL FALSE This variable is assigned to the Status output
variable from the PWR2 instance of the
MC_Power instruction. This variable changes
to TRUE when the Servo is turned ON.
Sample Programming
MC_MoveLinear
If StartPg is TRUE, check that the Servo Drives for each axis are ready.
StartPg MC_Axis000.DrvStatus.Ready Lock1
MC_Axis001.DrvStatus.Ready Lock2
If the Servo Drives are ready, the Servos are turned ON for each axis.
Sample Programming
PWR1
MC_Power
Lock1 MC_Axis000 Axis Axis Pwr1_Status
Enable Status
Busy Pwr1_Bsy
Error Pwr1_Err
ErrorID Pwr1_ErrID
PWR2
MC_Power
Lock2 MC_Axis001 Axis Axis Pwr2_Status
Enable Status
Busy Pwr2_Bsy
Error Pwr2_Err
ErrorID Pwr2_ErrID
If a minor fault level error occurs for the axis composition, the error handler for the device (FaultHandler) is
executed.
Program the FaultHandler according to the device.
MC_Axis000.MFaultLvl.Active FaultHandler
EN FaultHandler
MC_Axis001.MFaultLvl.Active
MC_Group000.MFaultLvl.Active
If the Servo is ON for axis 1 and home is not defined, the Home instruction is executed to define home.
HM1
MC_Home
Pwr1_Status MC_Axis000.Details.Homed MC_Axis000 Axis Axis Hm1_D
Execute Done
Busy Hm1_Bsy
CommandAborted Hm1_Ca
Error Hm1_Err
ErrorID Hm1_ErrID
If the Servo is ON for axis 2 and home is not defined, the Home instruction is executed to define home.
HM2
MC_Home
Pwr2_Status MC_Axis001.Details.Homed MC_Axis001 Axis Axis Hm2_D
Execute Done
Busy Hm2_Bsy
CommandAborted Hm2_Ca
Error Hm2_Err
ErrorID Hm2_ErrID
After home is defined for axis 1 and axis 2, the axes group is enabled.
GRP_EN
MC_GroupEnable
Hm1_D Hm2_D MC_Group000.Status.Disabled MC_Group000 AxesGroup AxesGroup Grp_En_D
Execute Done
Busy Grp_En_Bsy
CommandAborted Grp_En_Ca
Error Grp_En_Err
ErrorID Grp_En_ErrID
MC_MoveLinear
Linear interpolation (2) is executed with multi-execution of instructions after linear interpolation (1) is started.
MV_LIN2
MC_MoveLinear
MC_Group000 AxesGroup AxesGroup Mv_Lin2_D
Mv_Lin1_Act
Execute Done 4
Mv_Lin2_Pos Position Busy Mv_Lin2_Bsy
Mv_Lin2_Vel Velocity Active Mv_Lin2_Act
Sample Programming
Mv_Lin2_Acc Acceleration CommandAborted Mv_Lin2_Ca
Mv_Lin2_Dec Deceleration Error Mv_Lin2_Err
Jerk ErrorID Mv_Lin2_ErrID
CoordSystem
Mv_Lin2_Bm BufferMode
TransitionMode
Mv_Lin2_Mm MoveMode
Linear interpolation (3) is executed with multi-execution of instructions after linear interpolation (1) is started.
MV_LIN3
MC_MoveLinear
Mv_Lin1_Act MC_Group000 AxesGroup AxesGroup Mv_Lin3_D
Execute Done
Mv_Lin3_Pos Position Busy Mv_Lin3_Bsy
Mv_Lin3_Vel Velocity Active Mv_Lin3_Act
Mv_Lin3_Acc Acceleration CommandAborted Mv_Lin3_Ca
Mv_Lin3_Dec Deceleration Error Mv_Lin3_Err
Jerk ErrorID Mv_Lin3_ErrID
CoordSystem
Mv_Lin3_Bm BufferMode
TransitionMode
Mv_Lin3_Mm MoveMode
Linear interpolation (4) is executed with multi-execution of instructions after linear interpolation (1) is started.
MV_LIN4
MC_MoveLinear
Mv_Lin1_Act MC_Group000 AxesGroup AxesGroup Mv_Lin4_D
Execute Done
Mv_Lin4_Pos Position Busy Mv_Lin4_Bsy
Mv_Lin4_Vel Velocity Active Mv_Lin4_Act
Mv_Lin4_Acc Acceleration CommandAborted Mv_Lin4_Ca
Mv_Lin4_Dec Deceleration Error Mv_Lin4_Err
Jerk ErrorID Mv_Lin4_ErrID
CoordSystem
Mv_Lin4_Bm BufferMode
TransitionMode
Mv_Lin4_Mm MoveMode
Linear interpolation (5) is executed with multi-execution of instructions after linear interpolation (1) is started.
MV_LIN5
MC_MoveLinear
Mv_Lin1_Act MC_Group000 AxesGroup AxesGroup Mv_Lin5_D
Execute Done
Mv_Lin5_Pos Position Busy Mv_Lin5_Bsy
Mv_Lin5_Vel Velocity Active Mv_Lin5_Act
Mv_Lin5_Acc Acceleration CommandAborted Mv_Lin5_Ca
Mv_Lin5_Dec Deceleration Error Mv_Lin5_Err
Jerk ErrorID Mv_Lin5_ErrID
CoordSystem
Mv_Lin5_Bm BufferMode
TransitionMode
Mv_Lin5_Mm MoveMode
Linear interpolation (6) is executed with multi-execution of instructions after linear interpolation (1) is started.
MV_LIN6
MC_MoveLinear
Mv_Lin1_Act MC_Group000 AxesGroup AxesGroup Mv_Lin6_D
Execute Done
Mv_Lin6_Pos Position Busy Mv_Lin6_Bsy
Mv_Lin6_Vel Velocity Active Mv_Lin6_Act
Mv_Lin6_Acc Acceleration CommandAborted Mv_Lin6_Ca
Mv_Lin6_Dec Deceleration Error Mv_Lin6_Err
Jerk ErrorID Mv_Lin6_ErrID
CoordSystem
Mv_Lin6_Bm BufferMode
TransitionMode
Mv_Lin6_Mm MoveMode
Linear interpolation (7) is executed with multi-execution of instructions after linear interpolation (1) is started.
MV_LIN7
MC_MoveLinear
Mv_Lin1_Act MC_Group000 AxesGroup AxesGroup Mv_Lin7_D
Execute Done
Mv_Lin7_Pos Position Busy Mv_Lin7_Bsy
Mv_Lin7_Vel Velocity Active Mv_Lin7_Act
Mv_Lin7_Acc Acceleration CommandAborted Mv_Lin7_Ca
Mv_Lin7_Dec Deceleration Error Mv_Lin7_Err
Jerk ErrorID Mv_Lin7_ErrID
CoordSystem
Mv_Lin7_Bm BufferMode
TransitionMode
Mv_Lin7_Mm MoveMode
MC_MoveLinear
Contents of Inline ST
// MV_LIN1 parameters
Mv_Lin1_Pos[0] := LREAL#50.0;
Mv_Lin1_Pos[1] := LREAL#5.0; 4
Mv_Lin1_Vel := LREAL#100.0;
Mv_Lin1_Acc := LREAL#100.0;
Sample Programming
Mv_Lin1_Dec := LREAL#100.0;
Mv_Lin1_Mm := _eMC_MOVE_MODE#_mcAbsolute;
// MV_LIN2 parameters
Mv_Lin2_Pos[0] := LREAL#0.0;
Mv_Lin2_Pos[1] := LREAL#10.0;
Mv_Lin2_Vel := LREAL#100.0;
Mv_Lin2_Acc := LREAL#100.0;
Mv_Lin2_Dec := LREAL#100.0;
Mv_Lin2_Bm := _eMC_BUFFER_MODE#_mcBuffered;
Mv_Lin2_Mm := _eMC_MOVE_MODE#_mcAbsolute;
// MV_LIN3 parameters
Mv_Lin3_Pos[0] := LREAL#50.0;
Mv_Lin3_Pos[1] := LREAL#15.0;
Mv_Lin3_Vel := LREAL#100.0;
Mv_Lin3_Acc := LREAL#100.0;
Mv_Lin3_Dec := LREAL#100.0;
Mv_Lin3_Bm := _eMC_BUFFER_MODE#_mcBuffered;
Mv_Lin3_Mm := _eMC_MOVE_MODE#_mcAbsolute;
// MV_LIN4 parameters
Mv_Lin4_Pos[0] := LREAL#0.0;
Mv_Lin4_Pos[1] := LREAL#20.0;
Mv_Lin4_Vel := LREAL#100.0;
Mv_Lin4_Acc := LREAL#100.0;
Mv_Lin4_Dec := LREAL#100.0;
Mv_Lin4_Bm := _eMC_BUFFER_MODE#_mcBuffered;
Mv_Lin4_Mm := _eMC_MOVE_MODE#_mcAbsolute;
// MV_LIN5 parameters
Mv_Lin5_Pos[0] := LREAL#50.0;
Mv_Lin5_Pos[1] := LREAL#25.0;
Mv_Lin5_Vel := LREAL#100.0;
Mv_Lin5_Acc := LREAL#100.0;
Mv_Lin5_Dec := LREAL#100.0;
Mv_Lin5_Bm := _eMC_BUFFER_MODE#_mcBuffered;
Mv_Lin5_Mm := _eMC_MOVE_MODE#_mcAbsolute;
// MV_LIN6 parameters
Mv_Lin6_Pos[0] := LREAL#50.0;
Mv_Lin6_Pos[1] := LREAL#0.0;
Mv_Lin6_Vel := LREAL#100.0;
Mv_Lin6_Acc := LREAL#100.0;
Mv_Lin6_Dec := LREAL#100.0;
Mv_Lin6_Bm := _eMC_BUFFER_MODE#_mcBuffered;
Mv_Lin6_Mm := _eMC_MOVE_MODE#_mcAbsolute;
// MV_LIN7 parameters
Mv_Lin7_Pos[0] := LREAL#0.0;
Mv_Lin7_Pos[1] := LREAL#0.0;
Mv_Lin7_Vel := LREAL#100.0;
Mv_Lin7_Acc := LREAL#100.0;
Mv_Lin7_Dec := LREAL#100.0;
Mv_Lin7_Bm := _eMC_BUFFER_MODE#_mcBuffered;
Mv_Lin7_Mm := _eMC_MOVE_MODE#_mcAbsolute;
Main Variables
Name Data type Default Comment
MC_Group000 _sGROUP_R --- This is the Axes Group Variable for axes group
EF 0.
MC_Group000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axes group 0.
MC_Group000.Status.Disabled BOOL FALSE The value is TRUE when axes group 0 is disa-
bled.
MC_Axis000 _sAXIS_REF --- This is the Axis Variable for axis 1.
MC_Axis000.Details.Homed BOOL FALSE TRUE when home is defined for axis 1.
MC_Axis000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 1.
MC_MoveLinear
TRUE when the Servo is turned ON.
StartPg BOOL FALSE The Servos for the axes in the axes group are
turned ON if this variable is TRUE and Ether-
CAT process data communications are estab-
lished.
InitFlag BOOL FALSE This variable indicates if it is necessary to set
the input parameters.
4
Input parameters are set when this variable is
FALSE. When setting the input parameters is
Sample Programming
completed, this variable changes to TRUE.
Sample Programming
// Processing when input parameters are not set
IF InitFlag=FALSE THEN
// MV_LIN1 parameters
Mv_Lin1_Pos[0] := LREAL#50.0;
Mv_Lin1_Pos[1] := LREAL#5.0;
Mv_Lin1_Vel := LREAL#100.0;
Mv_Lin1_Acc := LREAL#100.0;
Mv_Lin1_Dec := LREAL#100.0;
Mv_Lin1_Mm := _eMC_MOVE_MODE#_mcAbsolute;
// MV_LIN2 parameters
Mv_Lin2_Pos[0] := LREAL#0.0;
Mv_Lin2_Pos[1] := LREAL#10.0;
Mv_Lin2_Vel := LREAL#100.0;
Mv_Lin2_Acc := LREAL#100.0;
Mv_Lin2_Dec := LREAL#100.0;
Mv_Lin2_Bm := _eMC_BUFFER_MODE#_mcBuffered;
Mv_Lin2_Mm := _eMC_MOVE_MODE#_mcAbsolute;
// MV_LIN3 parameters
Mv_Lin3_Pos[0] := LREAL#50.0;
Mv_Lin3_Pos[1] := LREAL#15.0;
Mv_Lin3_Vel := LREAL#100.0;
Mv_Lin3_Acc := LREAL#100.0;
Mv_Lin3_Dec := LREAL#100.0;
Mv_Lin3_Bm := _eMC_BUFFER_MODE#_mcBuffered;
Mv_Lin3_Mm := _eMC_MOVE_MODE#_mcAbsolute;
// MV_LIN4 parameters
Mv_Lin4_Pos[0] := LREAL#0.0;
Mv_Lin4_Pos[1] := LREAL#20.0;
Mv_Lin4_Vel := LREAL#100.0;
Mv_Lin4_Acc := LREAL#100.0;
Mv_Lin4_Dec := LREAL#100.0;
Mv_Lin4_Bm := _eMC_BUFFER_MODE#_mcBuffered;
Mv_Lin4_Mm := _eMC_MOVE_MODE#_mcAbsolute;
// MV_LIN5 parameters
Mv_Lin5_Pos[0] := LREAL#50.0;
Mv_Lin5_Pos[1] := LREAL#25.0;
Mv_Lin5_Vel := LREAL#100.0;
Mv_Lin5_Acc := LREAL#100.0;
Mv_Lin5_Dec := LREAL#100.0;
Mv_Lin5_Bm := _eMC_BUFFER_MODE#_mcBuffered;
Mv_Lin5_Mm := _eMC_MOVE_MODE#_mcAbsolute;
// MV_LIN6 parameters
Mv_Lin6_Pos[0] := LREAL#50.0;
Mv_Lin6_Pos[1] := LREAL#0.0;
Mv_Lin6_Vel := LREAL#100.0;
Mv_Lin6_Acc := LREAL#100.0;
Mv_Lin6_Dec := LREAL#100.0;
Mv_Lin6_Bm := _eMC_BUFFER_MODE#_mcBuffered;
Mv_Lin6_Mm := _eMC_MOVE_MODE#_mcAbsolute;
// MV_LIN7 parameters
Mv_Lin7_Pos[0] := LREAL#0.0;
Mv_Lin7_Pos[1] := LREAL#0.0;
Mv_Lin7_Vel := LREAL#100.0;
Mv_Lin7_Acc := LREAL#100.0;
Mv_Lin7_Dec := LREAL#100.0;
Mv_Lin7_Bm := _eMC_BUFFER_MODE#_mcBuffered;
Mv_Lin7_Mm := _eMC_MOVE_MODE#_mcAbsolute;
END_IF;
// If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 1 is turned
ON.
// If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 2 is turned
ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
MC_MoveLinear
IF (StartPg=TRUE)
AND (MC_Axis001.DrvStatus.Ready=TRUE) THEN
Pwr2_En:=TRUE; // Turn ON the Servo for axis 2.
ELSE
Pwr2_En:=FALSE; // Turn OFF the Servo for axis 2.
END_IF; 4
Sample Programming
// Program the FaultHandler according to the device.
IF (MC_Axis000.MFaultLvl.Active=TRUE) OR (MC_Axis001.MFaultLvl.Active=TRUE)
OR (MC_Group000.MFaultLvl.Active=TRUE) THEN
FaultHandler();
END_IF;
// If the Servo is ON for axis 1 and home is not defined, the Home instruction is e
xecuted.
IF (Pwr1_Status=TRUE) AND (MC_Axis000.Details.Homed=FALSE) THEN
Hm1_Ex:=TRUE;
END_IF;
// If the Servo is ON for axis 2 and home is not defined, the Home instruction is e
xecuted.
IF (Pwr2_Status=TRUE) AND (MC_Axis001.Details.Homed=FALSE) THEN
Hm2_Ex:=TRUE;
END_IF;
// If axes group 0 is disabled while home is defined for axis 1 and axis 2, it is e
nabled.
IF (Hm1_D=TRUE) AND (Hm2_D=TRUE) AND (MC_Group000.Status.Disabled=TRUE) THEN
Grp_En_Ex:= TRUE;
END_IF;
END_IF;
Execute := Hm2_Ex,
Done => Hm2_D,
Busy => Hm2_Bsy,
CommandAborted => Hm2_Ca,
Error => Hm2_Err,
ErrorID => Hm2_ErrID
);
MC_MoveLinear
Execute := Grp_En_Ex,
Done => Grp_En_D,
Busy => Grp_En_Bsy,
CommandAborted => Grp_En_Ca,
Error => Grp_En_Err,
ErrorID => Grp_En_ErrID 4
);
Sample Programming
// Linear interpolation (1)
MV_LIN1(
AxesGroup := MC_Group000,
Execute := Mv_Lin1_Ex,
Position := Mv_Lin1_Pos,
Velocity := Mv_Lin1_Vel,
Acceleration := Mv_Lin1_Acc,
Deceleration := Mv_Lin1_Dec,
MoveMode := Mv_Lin1_Mm,
Done => Mv_Lin1_D,
Busy => Mv_Lin1_Bsy,
Active => Mv_Lin1_Act,
CommandAborted => Mv_Lin1_Ca,
Error => Mv_Lin1_Err,
ErrorID => Mv_Lin1_ErrID
);
Position := Mv_Lin5_Pos,
Velocity := Mv_Lin5_Vel,
Acceleration := Mv_Lin5_Acc,
Deceleration := Mv_Lin5_Dec,
BufferMode := Mv_Lin5_Bm,
MoveMode := Mv_Lin5_Mm,
Done => Mv_Lin5_D,
Busy => Mv_Lin5_Bsy,
Active => Mv_Lin5_Act,
CommandAborted => Mv_Lin5_Ca,
Error => Mv_Lin5_Err,
MC_MoveLinear
ErrorID => Mv_Lin5_ErrID
);
Sample Programming
Velocity := Mv_Lin6_Vel,
Acceleration := Mv_Lin6_Acc,
Deceleration := Mv_Lin6_Dec,
BufferMode := Mv_Lin6_Bm,
MoveMode := Mv_Lin6_Mm,
Done => Mv_Lin6_D,
Busy => Mv_Lin6_Bsy,
Active => Mv_Lin6_Act,
CommandAborted => Mv_Lin6_Ca,
Error => Mv_Lin6_Err,
ErrorID => Mv_Lin6_ErrID
);
MC_MoveLinearAbsolute
The MC_MoveLinearAbsolute instruction performs linear interpolation for a specified absolute position.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_MoveLinearAbso- Abso- FB MC_MoveLinearAbsolute_instance MC_MoveLinearAbsolute_in-
MC_MoveLinearAbsolute
lute lute MC_MoveLinearAbsolute stance (
Linear AxesGroup AxesGroup AxesGroup :=parameter,
Interpo- Execute Done Execute :=parameter,
lation Position Busy Position :=parameter,
Velocity Active
Velocity :=parameter,
Acceleration CommandAborted
Acceleration :=parameter,
Deceleration Error
Jerk ErrorID Deceleration :=parameter,
CoordSystem Jerk :=parameter,
BufferMode CoordSystem :=parameter,
TransitionMode BufferMode :=parameter, 4
TransitionMode :=parameter,
Done =>parameter,
Variables
Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Execute Execute BOOL TRUE or FALSE FALSE The instruction is executed
when the value of this varia-
ble changes to TRUE.
Position Target Posi- ARRAY [0..3] Negative number, positive 0 Specify the target position for
tion OF LREAL number, or 0 linear interpolation.
The unit is command units. *1
Velocity*2 Target Ve- LREAL Positive number 0 Specify the target velocity.
locity The unit is command units/s.
*1
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE when the axis is being controlled.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
MC_MoveLinearAbsolute
• When this instruction is executed while there is
an error.
• When you start this instruction during
MC_GroupStop instruction execution.
Error When there is an error in the execution condi- When the error is cleared.
tions or input parameters for the instruction.
In-Out Variables 4
Valid
Name Meaning Data type Description
range
Function
AxesGroup Axes Group _sGROUP_R --- Specify the axes group. *1
EF
*1. Specify a user-defined Axes Group Variable that was created in the Axes Group Basic Settings of the Sysmac Studio
(default: MC_Group*) or a system-defined axes group variable name (_MC_GRP[*], _MC1_GRP[*], or _MC2_GRP[*]).
Function
• The MC_MoveLinearAbsolute instruction performs linear interpolation for 2 to 4 axes.
• The target position is specified as an absolute position.
Other specifications are the same as those for the MC_MoveLinear (Linear Interpolation) instruction.
For details, refer to Function on page 4 - 12 for MC_MoveLinear (Linear Interpolation) instruction.
• An Instruction Execution Error with Undefined Home (error code: 5466 hex) occurs if home is
undefined for any of the composition axes in the axes group.
• You cannot execute an instruction to perform linear interpolation if a limit input is ON for any
of the logical axes that belong to the axes group.
MC_MoveLinearRelative
The MC_MoveLinearRelative instruction performs linear interpolation for a specified relative position.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_MoveLinear- Relative Line- FB MC_MoveLinearRelative_instance MC_MoveLinearRelative_instance
Relative ar Interpola- MC_MoveLinearRelative (
tion AxesGroup AxesGroup AxesGroup :=parameter,
Execute Done Execute :=parameter,
Distance Busy Distance :=parameter,
Velocity Active
Velocity :=parameter,
Acceleration CommandAborted
Acceleration :=parameter,
Deceleration Error
Jerk ErrorID Deceleration :=parameter,
CoordSystem Jerk :=parameter,
BufferMode CoordSystem :=parameter,
TransitionMode BufferMode :=parameter,
TransitionMode :=parameter,
Done =>parameter,
Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALSE The instruction is executed
when the value of this varia-
ble changes to TRUE.
Distance Travel Dis- ARRAY [0..3] Negative number, positive num- 0 Specify the target position
tance OF LREAL ber, or 0 for linear interpolation.
The unit is command units.
*1
Velocity*2 Target Ve- LREAL Positive number 0 Specify the target velocity.
locity The unit is command units/s.
*1
De-
Name Meaning Data type Valid range Description
fault
Deceleration Deceleration LREAL Non-negative number 0 Specify the deceleration
Rate rate.
The unit is command
units/s2. *1
Jerk Jerk LREAL Non-negative number 0 Specify the jerk.
The unit is command
units/s3. *1
MC_MoveLinearRelative
CoordSystem Coordinate _eMC_CO- 0: _mcACS 0*3 Specify the coordinate sys-
System ORD_SYS- tem.
TEM 0: Axis coordinate system
(ACS)
BufferMode Buffer Mode _eMC_BUF- 0: _mcAborting 0*3 Specify the behavior when
Selection FER_MODE 1: _mcBuffered executing more than one
2: _mcBlendingLow motion instruction.
3: _mcBlendingPrevious 0: Aborting
4: _mcBlendingNext 1: Buffered
5: _mcBlendingHigh 2: Blending low
4
3: Blending previous
4: Blending next
Variables
5: Blending high
Transition- Transition _eMC_TRAN- 0: _mcTMNone 0*3 Specify the path of motion.
Mode Mode SI- 10: _mcTMCornerSuperim- 0: Transition disabled
TION_MODE posed 10: Superimpose corners
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
*2. Always set the target velocity. If the axes are moved without setting a target velocity, an error will occur.
*3. The default value for an enumeration variable is actually not the number, but the enumerator.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE when the axis is being controlled.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
AxesGroup Axes Group _sGROUP_R --- Specify the axes group. *1
EF
*1. Specify a user-defined Axes Group Variable that was created in the Axes Group Basic Settings of the Sysmac Studio
(default: MC_Group*) or a system-defined axes group variable name (_MC_GRP[*], _MC1_GRP[*], or _MC2_GRP[*]).
Function
• The MC_MoveLinearRelative instruction performs linear interpolation for 2 to 4 axes.
• The target position is specified as a relative position.
Other specifications are the same as those for the MC_MoveLinear (Linear Interpolation) instruction.
For details, refer to Function on page 4 - 12 for MC_MoveLinear (Linear Interpolation) instruction.
• An Instruction Execution Error with Undefined Home (error code: 5466 hex) occurs if home is
undefined for any of the composition axes in the axes group.
• You cannot execute an instruction to perform linear interpolation if a limit input is ON for any
of the logical axes that belong to the axes group.
MC_MoveCircular2D
The MC_MoveCircular2D instruction performs circular interpolation for two axes.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_MoveCircu- Circular 2D FB MC_MoveCircular2D_instance MC_MoveCircular2D_instance (
lar2D Interpolation MC_MoveCircular2D AxesGroup :=parameter,
AxesGroup AxesGroup Execute :=parameter,
MC_MoveCircular2D
Execute Done CircAxes :=parameter,
CircAxes Busy CircMode :=parameter,
CircMode Active
AuxPoint :=parameter,
AuxPoint CommandAborted
EndPoint :=parameter,
EndPoint Error
PathChoice ErrorID PathChoice :=parameter,
Velocity Velocity :=parameter,
Acceleration Acceleration :=parameter,
Deceleration Deceleration :=parameter, 4
Jerk Jerk :=parameter,
CoordSystem
CoordSystem :=parameter,
BufferMode
Variables
BufferMode :=parameter,
TransitionMode
MoveMode
TransitionMode :=parameter,
MoveMode :=parameter,
Done =>parameter,
Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALS The instruction is executed
E when the value of this variable
changes to TRUE.
CircAxes Circular Ax- ARRAY [0,1] OF 0 to 3 0 Specify the axes for circular
es UINT interpolation.
0: Axis A0
1: Axis A1
2: Axis A2
3: Axis A3
CircMode Circular In- _eMC_CIRC_M 0: _mcBorder 0*1 Specify the method for circu-
terpolation ODE 1: _mcCenter lar interpolation.
Mode 2: _mcRadius 0: Border point
1: Center
2: Radius
De-
Name Meaning Data type Valid range Description
fault
AuxPoint Auxiliary ARRAY [0,1] OF Negative number, positive 0 Specify the border point, cen-
Point LREAL number, or 0 ter, or radius.
The unit is command units. *2
EndPoint End Point ARRAY [0,1] OF Negative number, positive 0 Specify the target position.
LREAL number, or 0 The unit is command units. *2
PathChoice Path Choice _eMC_CIRC_PA 0: _mcCW 0*1 Specify the path direction.
THCHOICE 1: _mcCCW 0: CW
1: CCW
Velocity*3 Target Ve- LREAL Positive number 0 Specify the target velocity.
locity The unit is command units/s.
*2
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE when the axis is being controlled.
FALSE
MC_MoveCircular2D
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes. 4
Variables
Name Timing for changing to TRUE Timing for changing to FALSE
Done When positioning is completed. • When Execute is TRUE and changes to
FALSE.
• After one period when Execute is FALSE.
Busy When Execute changes to TRUE. • When Done changes to TRUE.
• When Error changes to TRUE.
• When CommandAborted changes to TRUE.
Active When the axes move. • When Done changes to TRUE.
• When Error changes to TRUE.
• When CommandAborted changes to TRUE.
CommandAborted • When this instruction is aborted because an- • When Execute is TRUE and changes to
other motion control instruction was executed FALSE.
with the Buffer Mode set to Aborting. • After one period when Execute is FALSE.
• When this instruction is canceled due to an er-
ror.
• When this instruction is executed while there is
an error.
• When you start this instruction during
MC_GroupStop instruction execution.
Error When there is an error in the execution condi- When the error is cleared.
tions or input parameters for the instruction.
In-Out Variables
Valid
Name Meaning Data type Description
range
AxesGroup Axes Group _sGROUP_R --- Specify the axes group. *1
EF
*1. Specify a user-defined Axes Group Variable that was created in the Axes Group Basic Settings of the Sysmac Studio
(default: MC_Group*) or a system-defined axes group variable name (_MC_GRP[*], _MC1_GRP[*], or _MC2_GRP[*]).
Function
• The MC_MoveCircular2D instruction performs 2D circular interpolation for two axes.
• An Instruction Execution Error with Undefined Home (error code: 5466 hex) occurs if home is
undefined for any of the composition axes in the axes group.
• You cannot execute an instruction to perform circular 2D interpolation if a limit input is ON for
any of the logical axes that belong to the axes group.
Instruction Details
This section describes the instruction in detail.
Example: The following specifications are used to specify axis numbers 0 and 1 for axes A0 and
A1 with a 2-axis composition.
An Instruction Not Allowed for Encoder Axis Type error (543D hex) will occur and operation will
end if an encoder axis or virtual encoder axis is included in the axes group.
Make sure that you select only Servo Axis or Virtual Servo Axis.
Additional Information
For the details of the axis numbers, refer to the NJ/NX-series CPU Unit Motion Control User’s
Manual (Cat. No. W507).
MC_MoveCircular2D
Using the Circular Interpolation instruction is now enabled.
Function
CCW
CW
CW: Clockwise rotation
CCW: Counterclockwise rotation
Specify the axes to use as the X axis and Y axis with CircAxes (Circular Axes).
Use logical axes (axis A0 to A3) for the axes, and not axis numbers.
Specify the Count Mode to Linear Mode for the axes that you use for the X axis and Y axis.
If you specify Rotary Mode, an Instruction Execution Error Caused by Count Mode Setting (er-
ror code: 544A hex) will occur at execution.
MoveMode Description
Absolute positioning The border point and end point for a border point specification or the center point and
end point for a center point specification are specified as absolute positions from home
in the axis coordinate system.
Relative positioning The border point and end point for a border point specification or the center point and
end point for a center point specification are specified as relative positions from the
start point.
The difference between Absolute positioning and Relative positioning using a border point is de-
scribed below as an example.
Circular Interpolation Method: Border Point Specification Circular Interpolation Method: Border Point Specification
with Absolute Positioning with Relative Positioning
Y Y
AuxPoint(X, Y) AuxPoint(X, Y)
EndPoint(X, Y) EndPoint(X, Y)
X X
The following sections describe the operation assuming that Absolute positioning has been specified
as the MoveMode (Travel Mode).
Border point
The current position is the starting point. Circular interpolation is performed through the border point
AuxPoint(X,Y) to the end point EndPoint(X,Y).
Y
AuxPoint(X, Y)
EndPoint(X, Y)
Start point
If the start point, border point, and end point are along the same line, if the border point and the end
point are at the same point, or if the start point and the border point are the same point, linear interpo-
lation is performed from the start point to the end point.
EndPoint(X, Y)
AuxPoint(X, Y)
Start point
MC_MoveCircular2D
Precautions for Correct Use
• The points are considered to be on a straight line if the distance between the border point
and the line that connects the start and end point is less than one pulse for both the X and Y
coordinates.
• An error occurs if the start point, border point, and end point are the same point.
The start point, border point, and end point are considered to be the same point if the com- 4
mand positions are the same for the command unit.
If the command positions in the command unit are different, the points are not considered to
be the same point and an error does not occur even if the positions are the same when they
Function
are converted to pulses.
If the start point and the end point are the same point, a complete circle is drawn with the start point
and the border point as the diameter. PathChoice is specified as the circular interpolation direction.
Y
AuxPoint(X, Y)
Center
The current position is the starting point. Circular interpolation is performed for circle specified by the
center point AuxPoint(X,Y) to the end point EndPoint(X,Y).
PathChoice is used to specify the circular interpolation direction.
A complete circle is drawn when the start point and end point are at the same point.
If the radius from the specified center to the start point is different to the radius to the end point, the
average of the two radiuses is used to perform circular interpolation. In this case, the center is calcu-
lated in the same way as specifying the radius, and the calculated radius and center are used.
AuxPoint(X, Y)
EndPoint(X, Y)
Start point
If the Correction Allowance Ratio axes group parameter is set to any value other than 0 and
the specified center point exceeds the circle that is calculated with the following formula, a Cir-
cular Interpolation Center Specification Position Out of Range error (error code: 5449 hex) will
occur.
• The radius of the circle in which the center point must be positioned is the calculated radius
multiplied by the percentage that is set for the center point specification check method divid-
ed by 100. (The radius calculated from the corrected center point is taken as 100%.)
Radius
The current position is the starting point. Circular interpolation is performed for the circle specified by
the radius AuxPoint(X,Y) to the end point EndPoint(X,Y).
The radius is specified by the first element in AuxPoint(X,Y). The second element is not used.
For example, for a radius of 100, set AuxPoint(X,Y) to AuxPoint(100,0).
If the sign of the radius is negative, a circle with a long arc will be drawn. If the sign is positive, a circle
with a short arc will be drawn.
PathChoice is used to specify the circular interpolation direction.
Y
Negative radius
EndPoint(X, Y)
Positive radius
Start point
• If the start point and the end point are the same, a same circular interpolation start and end
point error will occur and operation will stop for all axes in the group.
• If the specified radius is less than half the length of the distance between the start point and
end point, a circle is impossible and an error will occur.
If only one axis exceeds the : This axis moves at the maximum velocity and the interpolation velocity is
MC_MoveCircular2D
maximum velocity adjusted accordingly.
If both axes exceed the maxi- : The interpolation velocity is automatically adjusted so that the axes move
mum velocity at the maximum velocity of the two axes that is slower.
Jerk
The relationships between Acceleration (Acceleration Rate), Deceleration (Deceleration Rate), and
Velocity (Target Velocity) when Jerk is set to 0 and when it is set to any other value are shown below.
4
• Jerk Set to 0
The command value for the velocity is created with acceleration rate At and deceleration rate Dt.
Function
Interpolation velocity
Vt
Time
Acceleration rate At
Time
Deceleration rate -Dt
Vt: Specified interpolation velocity, At: Specified acceleration rate, Dt: Specified deceleration rate.
Interpolation velocity
Vt
Time
Acceleration rate At
Time
Deceleration rate -Dt
Vt: Specified interpolation velocity, At: Specified acceleration rate, Dt: Specified deceleration rate.
Interpolation velocity
Vt
Time
Acceleration rate At
Time
Deceleration rate -Dt
Jt
Jerk
Time
-Jt
Vt: Specified interpolation velocity, At: Specified acceleration rate, Dt: Specified deceleration rate, Jt:
Specified jerk
Interpolation velocity
Vt
MC_MoveCircular2D
Time
Acceleration rate At
Time
Deceleration rate -Dt
Jt
Jerk
Time 4
-Jt
Function
Vt: Specified interpolation velocity, At: Specified acceleration rate, Dt: Specified deceleration rate, Jt:
Specified jerk
Additional Information
For details on BufferMode (Buffer Mode Selection), refer to the NJ/NX-series CPU Unit Motion Control
User’s Manual (Cat. No. W507).
TransitionMode
• This variable specifies how to combine the paths created by the previous interpolation operation and
the next interpolation operation.
• Set the TransitionMode to either _mcTMNone (Transition Disabled) or _mcTMCornerSuperimposed
(Superimpose Corners).
• TransitionMode is enabled when Blending is specified for BufferMode.
• An error will occur if you do not set TransitionMode to _mcTMNone (Transition Disabled) when
Blending is not used.
Transition Disabled
The path is given priority when creating the velocity command value, so velocity command values of
the axes may change rapidly when switching from one operation to the next.
Operation Example
The Velocity (Target Velocity), BufferMode, and TransitionMode when transitioning from P1 to P2, and
from P2 to P3 are shown below.
• Motion from P1 to P2: Velocity = F, BufferMode = Aborting, TransitionMode = _mcTMNone (Transi-
tion Disabled)
• Motion from P2 to P3: Velocity = F, BufferMode = Blending with next, TransitionMode = _mcTMNone
(Transition Disabled)
• The motion starts from position P1 and goes through position P2. Linear interpolation is performed
to position P3.
• The linear interpolation velocity F is maintained when passing position P2. Because of this, the ve-
locity is discontinuous at position P2 as shown in the following figure.
A1
P3
Interpolation
velocity F
The velocity is
discontinuous.
MC_MoveCircular2D
P1 P2 The velocity is
discontinuous.
A0
Velocity of axis A1
Velocity of axis A0 4
Superimpose Corners
Function
Use the superimpose corners specification when you want make the axes command velocities contin-
uous.
Operation Example
Velocity (Target Velocity), BufferMode, and TransitionMode when transitioning from P1 to P2, and from
P2 to P3 are shown below.
• Motion from P1 to P2: Velocity = F, BufferMode = Aborting, TransitionMode = _mcTMNone (Transi-
tion Disabled)
• Motion from P2 to P3: Velocity = F, BufferMode = Blending with next, TransitionMode = _mcTMCor-
nerSuperimposed (Superimpose Corners)
• The motion starts from position P1 and passes near position P2. Linear interpolation is performed to
position P3.
• To make the axes command velocities continuous, the deceleration range of the previous motion
and the acceleration range of the current motion are combined to create the command velocity. For
this reason, the acceleration time of the current motion is the same as the deceleration time of the
previous motion.
A1
P3
The velocity is
continuous.
Velocity of axis A0
Additional Information
The Jerk settings are disabled in the region with superimposed corners.
Execute
Done
Busy
Active
CommandAborted
Error
MC_MoveCircular2D
ErrorID 16#0000 Error code
Interpolation velocity
4
Time
Function
Multi-execution of Motion Control Instructions
A restriction applies to the instructions that can be used while this instruction is in execution.
For details on multi-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axis will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
Done
Busy
Active
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
Sample Programming
This section shows sample programming for circular interpolation with multi-execution of instructions.
Parameter Settings
The minimum settings required for this sample programming are given below.
Count Modes
Units of Display
Axis Selection
Axis 1 and axis 2 are set.
Operation Example
The following is an example of operation where the axes automatically perform positioning by using
linear interpolation and circular interpolation.
The axes move to the final target position(20.00 mm, 20.00 mm) using linear interpolation and circular
interpolation.
The Buffer Mode is set to Buffered and multi-execution of instructions is used.
In this sample, multi-execution of instructions is performed for (2) to (4) if the Active output variable
from linear interpolation (1) is TRUE. For multi-axes coordinated operation, multi-execution is possible
for up to seven instructions.
Operation Pattern
Axis 2 (mm)
(4)
20.00
15.00
MC_MoveCircular2D
(3)
10.00
(2)
5.00
(1)
0
Axis 1 (mm) 4
10.00 15.00 20.00
Sample Programming
1 Execution
When you turn ON the operation start switch at home, the axes move to the point (10.00 mm, 5.00
mm) via linear interpolation.
2 Continuous Motion
The axes continue to move to the point (15.00 mm, 10.00 mm) via circular interpolation, to the
point (15.00 mm, 15.00 mm) via linear interpolation, and to the point (20.00 mm, 20.00 mm) via
circular interpolation.
Here, the velocity is 10.00 mm/s.
Ladder Diagram
Main Variables
Name Data type Default Comment
MC_Group000 _sGROUP_R --- This is the Axes Group Variable for axes group
EF 0.
MC_Group000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axes group 0.
MC_Group000.Status.Disabled BOOL FALSE The value is TRUE when axes group 0 is disa-
bled.
MC_Axis000 _sAXIS_REF --- This is the Axis Variable for axis 1.
MC_Axis000.Details.Homed BOOL FALSE TRUE when home is defined for axis 1.
MC_Axis000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 1.
MC_Axis001 _sAXIS_REF --- This is the Axis Variable for axis 2.
MC_Axis001.Details.Homed BOOL FALSE TRUE when home is defined for axis 2.
Sample Programming
If StartPg is TRUE, check that the Servo Drives for each axis are ready.
StartPg MC_Axis000.DrvStatus.Ready Lock1
MC_Axis001.DrvStatus.Ready Lock2
PWR2
MC_Power
Lock2 MC_Axis001 Axis Axis Pwr2_Status
Enable Status
Busy Pwr2_Bsy
Error Pwr2_Err
ErrorID Pwr2_ErrID
If a minor fault level error occurs for the axis composition, the error handler for the device (FaultHandler) is
executed.
Program the FaultHandler according to the device.
MC_Axis000.MFaultLvl.Active FaultHandler
EN FaultHandler
MC_Axis001.MFaultLvl.Active
MC_Group000.MFaultLvl.Active
If the Servo is ON for axis 1 and home is not defined, the Home instruction is executed.
MC_MoveCircular2D
HM1
MC_Home
Pwr1_Status MC_Axis000.Details.Homed MC_Axis000 Axis Axis Hm1_D
Execute Done
Busy Hm1_Bsy
CommandAborted Hm1_Ca
Error Hm1_Err
ErrorID Hm1_ErrID
4
If the Servo is ON for axis 2 and home is not defined, the Home instruction is executed.
Sample Programming
HM2
MC_Home
Pwr2_Status MC_Axis001.Details.Homed MC_Axis001 Axis Axis Hm2_D
Execute Done
Busy Hm2_Bsy
CommandAborted Hm2_Ca
Error Hm2_Err
ErrorID Hm2_ErrID
After home is defined for axis 1 and axis 2, the axes group is enabled.
GRP_EN
MC_GroupEnable
Hm1_D Hm2_D MC_Group000 AxesGroup AxesGroup Grp_En_D
Execute Done
MC_Group000.Status.Disabled Busy Grp_En_Bsy
CommandAborted Grp_En_Ca
Error Grp_En_Err
ErrorID Grp_En_ErrID
The parameters are set for linear interpolation and circular interpolation.
InitFlag
Circular interpolation (2) is executed with multi-execution of instructions after linear interpolation (1) is started.
MV_CIRC1
MC_MoveCircular2D
Mv_Lin1_Act MC_Group000 AxesGroup AxesGroup Mv_Circ1_D
Execute Done
Mv_Circ1_CircAxes CircAxes Busy Mv_Circ1_Bsy
Mv_Circ1_CircMode CircMode Active Mv_Circ1_Act
Mv_Circ1_AuxPoint AuxPoint CommandAborted Mv_Circ1_Ca
Mv_Circ1_EndPoint EndPoint Error Mv_Circ1_Err
Mv_Circ1_Pc PathChoice ErrorID Mv_Circ1_ErrID
Mv_Circ1_Vel Velocity
Mv_Circ1_Acc Acceleration
Mv_Circ1_Dec Deceleration
Jerk
CoordSystem
Mv_Circ1_Bm BufferMode
TransitionMode
Mv_Circ1_Mm MoveMode
Linear interpolation (3) is executed with multi-execution of instructions after linear interpolation (1) is started.
MV_LIN2
MC_MoveLinear
Mv_Lin1_Act MC_Group000 AxesGroup AxesGroup Mv_Lin2_D
Execute Done
Mv_Lin2_Pos Position Busy Mv_Lin2_Bsy
Mv_Lin2_Vel Velocity Active Mv_Lin2_Act
Mv_Lin2_Acc Acceleration CommandAborted Mv_Lin2_Ca
Mv_Lin2_Dec Deceleration Error Mv_Lin2_Err
Jerk ErrorID Mv_Lin2_ErrID
CoordSystem
Mv_Lin2_Bm BufferMode
TransitionMode
Mv_Lin2_Mm MoveMode
Circular interpolation (4) is executed with multi-execution of instructions after linear interpolation (1) is started.
MV_CIRC2
MC_MoveCircular2D
Mv_Lin1_Act MC_Group000 AxesGroup AxesGroup Mv_Circ2_D
Execute Done
Mv_Circ2_CircAxes CircAxes Busy Mv_Circ2_Bsy
Mv_Circ2_CircMode CircMode Active Mv_Circ2_Act
Mv_Circ2_AuxPoint AuxPoint CommandAborted Mv_Circ2_Ca
Mv_Circ2_EndPoint EndPoint Error Mv_Circ2_Err
Mv_Circ2_Pc PathChoice ErrorID Mv_Circ2_ErrID
Mv_Circ2_Vel Velocity
Mv_Circ2_Acc Acceleration
MC_MoveCircular2D
Mv_Circ2_Dec Deceleration
Jerk
CoordSystem
Mv_Circ2_Bm BufferMode
TransitionMode
Mv_Circ2_Mm MoveMode
Contents of Inline ST 4
// MV_CIRC1 parameters
Mv_Circ1_CircAxes[0] := UINT#0;
Sample Programming
Mv_Circ1_CircAxes[1] := UINT#1;
Mv_Circ1_CircMode := _eMC_CIRC_MODE#_mcRadius;
Mv_Circ1_AuxPoint[0] := LREAL#5.0;
Mv_Circ1_AuxPoint[1] := LREAL#0.0;
Mv_Circ1_EndPoint[0] := LREAL#15.0;
Mv_Circ1_EndPoint[1] := LREAL#10.0;
Mv_Circ1_Pc := _eMC_CIRC_PATHCHOICE#_mcCCW;
Mv_Circ1_Vel := LREAL#100.0;
Mv_Circ1_Acc := LREAL#20.0;
Mv_Circ1_Dec := LREAL#20.0;
Mv_Circ1_Bm := _eMC_BUFFER_MODE#_mcBuffered;
Mv_Circ1_Mm := _eMC_MOVE_MODE#_mcAbsolute;
// MV_CIRC2 parameters
Mv_Circ2_CircAxes[0] := UINT#0;
Mv_Circ2_CircAxes[1] := UINT#1;
Mv_Circ2_CircMode := _eMC_CIRC_MODE#_mcCenter;
Mv_Circ2_AuxPoint[0] := LREAL#15.0;
Mv_Circ2_AuxPoint[1] := LREAL#20.0;
Mv_Circ2_EndPoint[0] := LREAL#20.0;
Mv_Circ2_EndPoint[1] := LREAL#20.0;
Mv_Circ2_Pc := _eMC_CIRC_PATHCHOICE#_mcCW;
Mv_Circ2_Vel := LREAL#100.0;
Mv_Circ2_Acc := LREAL#20.0;
Mv_Circ2_Dec := LREAL#20.0;
Mv_Circ2_Bm := _eMC_BUFFER_MODE#_mcBuffered;
Mv_Circ2_Mm := _eMC_MOVE_MODE#_mcAbsolute;
// MV_LIN1 parameters
Mv_Lin1_Pos[0] := LREAL#10.0;
Mv_Lin1_Pos[1] := LREAL#5.0;
Mv_Lin1_Vel := LREAL#100.0;
Mv_Lin1_Acc := LREAL#20.0;
Mv_Lin1_Dec := LREAL#20.0;
Mv_Lin1_Mm := _eMC_MOVE_MODE#_mcAbsolute;
// MV_LIN2 parameters
Mv_Lin2_Pos[0] := LREAL#15.0;
Mv_Lin2_Pos[1] := LREAL#15.0;
Mv_Lin2_Vel := LREAL#100.0;
Mv_Lin2_Acc := LREAL#20.0;
Mv_Lin2_Dec := LREAL#20.0;
Mv_Lin2_Bm := _eMC_BUFFER_MODE#_mcBuffered;
Mv_Lin2_Mm := _eMC_MOVE_MODE#_mcAbsolute;
Main Variables
Name Data type Default Comment
MC_Group000 _sGROUP_R --- This is the Axes Group Variable for axes group
EF 0.
MC_Group000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axes group 0.
MC_Group000.Status.Disabled BOOL FALSE The value is TRUE when axes group 0 is disa-
bled.
MC_Axis000 _sAXIS_REF --- This is the Axis Variable for axis 1.
MC_Axis000.Details.Homed BOOL FALSE TRUE when home is defined for axis 1.
MC_Axis000.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 1.
MC_Axis001 _sAXIS_REF --- This is the Axis Variable for axis 2.
MC_Axis001.Details.Homed BOOL FALSE TRUE when home is defined for axis 2.
MC_Axis001.MFaultLvl.Active BOOL FALSE TRUE while there is a minor fault level error for
axis 2.
Pwr1_Status BOOL FALSE This variable is assigned to the Status output
variable from the PWR1 instance of the
MC_Power instruction. This variable changes to
TRUE when the Servo is turned ON.
Pwr2_Status BOOL FALSE This variable is assigned to the Status output
variable from the PWR2 instance of the
MC_Power instruction. This variable changes to
TRUE when the Servo is turned ON.
MC_MoveCircular2D
when this variable changes to TRUE.
Hm2_Ex BOOL FALSE The HM2 instance of MC_Home is executed
when this variable changes to TRUE.
Grp_En_Ex BOOL FALSE The GRP_EN instance of MC_GroupEnable is
executed when this variable changes to TRUE.
Mv_Lin1_Ex BOOL FALSE The MV_LIN1 instance of MC_MoveLinear is
executed when this variable changes to TRUE.
Mv_Lin2_Ex BOOL FALSE The MV_LIN2 instance of MC_MoveLinear is
4
executed when this variable changes to TRUE.
Mv_Circ1_Ex BOOL FALSE The MV_CIRC1 instance of MC_MoveCircular
Sample Programming
is executed when this variable changes to
TRUE.
Mv_Circ2_Ex BOOL FALSE The MV_CIRC2 instance of MC_MoveCircular
is executed when this variable changes to
TRUE.
Sample Programming
// Processing when input parameters are not set
IF InitFlag=FALSE THEN
//MV_CIRC1 parameters
Mv_Circ1_CircAxes[0] := UINT#0;
Mv_Circ1_CircAxes[1] := UINT#1;
Mv_Circ1_CircMode :=_eMC_CIRC_MODE#_mcRadius;
Mv_Circ1_AuxPoint[0] := LREAL#5.0;
Mv_Circ1_AuxPoint[1] := LREAL#0.0;
Mv_Circ1_EndPoint[0] := LREAL#15.0;
Mv_Circ1_EndPoint[1] := LREAL#10.0;
Mv_Circ1_Pc := _eMC_CIRC_PATHCHOICE#_mcCCW;
Mv_Circ1_Vel := LREAL#100.0;
Mv_Circ1_Acc := LREAL#20.0;
Mv_Circ1_Dec := LREAL#20.0;
Mv_Circ1_Bm := _eMC_BUFFER_MODE#_mcBuffered;
Mv_Circ1_Mm := _eMC_MOVE_MODE#_mcAbsolute;
//MV_CIRC2 parameters
Mv_Circ2_CircAxes[0] := UINT#0;
Mv_Circ2_CircAxes[1] := UINT#1;
Mv_Circ2_CircMode :=_eMC_CIRC_MODE#_mcCenter;
Mv_Circ2_AuxPoint[0] := LREAL#15.0;
Mv_Circ2_AuxPoint[1] := LREAL#20.0;
Mv_Circ2_EndPoint[0] := LREAL#20.0;
Mv_Circ2_EndPoint[1] := LREAL#20.0;
Mv_Circ2_Pc := _eMC_CIRC_PATHCHOICE#_mcCW;
Mv_Circ2_Vel := LREAL#100.0;
Mv_Circ2_Acc := LREAL#20.0;
Mv_Circ2_Dec := LREAL#20.0;
Mv_Circ2_Bm := _eMC_BUFFER_MODE#_mcBuffered;
Mv_Circ2_Mm := _eMC_MOVE_MODE#_mcAbsolute;
//MV_LIN1 parameters
Mv_Lin1_Pos[0] := LREAL#10.0;
Mv_Lin1_Pos[1] := LREAL#5.0;
Mv_Lin1_Vel := LREAL#100.0;
Mv_Lin1_Acc := LREAL#20.0;
Mv_Lin1_Dec := LREAL#20.0;
Mv_Lin1_Mm := _eMC_MOVE_MODE#_mcAbsolute;
//MV_LIN2 parameters
Mv_Lin2_Pos[0] := LREAL#15.0;
Mv_Lin2_Pos[1] := LREAL#15.0;
Mv_Lin2_Vel := LREAL#100.0;
Mv_Lin2_Acc := LREAL#20.0;
Mv_Lin2_Dec := LREAL#20.0;
Mv_Lin2_Bm := _eMC_BUFFER_MODE#_mcBuffered;
Mv_Lin2_Mm := _eMC_MOVE_MODE#_mcAbsolute;
END_IF;
// If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 1 is turned
ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis000.DrvStatus.Ready=TRUE) THEN
Pwr1_En:=TRUE; // Turn ON the Servo for axis 1.
ELSE
Pwr1_En:=FALSE; // Turn OFF the Servo for axis 1.
END_IF;
// If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 2 is turned
ON.
// If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis001.DrvStatus.Ready=TRUE) THEN
Pwr2_En:=TRUE; // Turn ON the Servo for axis 2.
ELSE
Pwr2_En:=FALSE; // Turn OFF the Servo for axis 2.
END_IF;
MC_MoveCircular2D
OR (MC_Group000.MFaultLvl.Active=TRUE) THEN
FaultHandler();
END_IF;
// If the Servo is ON for axis 1 and home is not defined, the Home instruction is e
xecuted.
IF (Pwr1_Status=TRUE) AND (MC_Axis000.Details.Homed=FALSE) THEN 4
Hm1_Ex:=TRUE;
END_IF;
Sample Programming
// If the Servo is ON for axis 2 and home is not defined, the Home instruction is e
xecuted.
IF (Pwr2_Status=TRUE) AND (MC_Axis001.Details.Homed=FALSE) THEN
Hm2_Ex:=TRUE;
END_IF;
// If axes group 0 is disabled after homing is completed for axis 1 and axis 2, it
is enabled.
IF (Hm1_D=TRUE) AND (Hm2_D=TRUE) AND (MC_Group000.Status.Disabled=TRUE)THEN
Grp_En_Ex:= TRUE;
END_IF;
Axis := MC_Axis000,
Enable := Pwr1_En,
Status => Pwr1_Status,
Busy => Pwr1_Bsy,
Error => Pwr1_Err,
ErrorID => Pwr1_ErrID
);
MC_MoveCircular2D
Acceleration := Mv_Lin1_Acc,
Deceleration := Mv_Lin1_Dec,
MoveMode := Mv_Lin1_Mm,
Done => Mv_Lin1_D,
Busy => Mv_Lin1_Bsy,
Active => Mv_Lin1_Act,
CommandAborted => Mv_Lin1_Ca, 4
Error => Mv_Lin1_Err,
ErrorID => Mv_Lin1_ErrID
Sample Programming
);
Position := Mv_Lin2_Pos,
Velocity := Mv_Lin2_Vel,
Acceleration := Mv_Lin2_Acc,
Deceleration := Mv_Lin2_Dec,
BufferMode := Mv_Lin2_Bm,
MoveMode := Mv_Lin2_Mm,
Done => Mv_Lin2_D,
Busy => Mv_Lin2_Bsy,
Active => Mv_Lin2_Act,
CommandAborted => Mv_Lin2_Ca,
Error => Mv_Lin2_Err,
ErrorID => Mv_Lin2_ErrID
);
MC_GroupStop
The MC_GroupStop instruction decelerates all of the axes in an interpolated motion to a stop.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_GroupStop Group Stop FB MC_GroupStop_instance MC_GroupStop_instance (
MC_GroupStop AxesGroup :=parameter,
AxesGroup AxesGroup Execute :=parameter,
Execute Done Deceleration :=parameter,
MC_GroupStop
Deceleration Busy Jerk :=parameter,
Jerk Active
BufferMode :=parameter,
BufferMode CommandAborted
Done =>parameter,
Error
ErrorID Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter, 4
ErrorID =>parameter
);
Variables
Variables
Input Variables
De-
Name Meaning Data type Valid range Description
fault
Execute Execute BOOL TRUE or FALSE FALS The instruction is executed when the
E value of this variable changes to TRUE.
Deceleration Decelera- LREAL Non-negative num- 0 Specify the deceleration rate.
tion Rate ber The unit is command units/s2. *1
Jerk Jerk LREAL Non-negative num- 0 Specify the jerk.
ber The unit is command units/s3. *1
BufferMode Buffer _eMC_BUF- 0: _mcAborting 0*2 Specify the behavior when executing
Mode Se- FER_MODE more than one motion instruction.
lection 0: Aborting
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
*2. The default value for an enumeration variable is actually not the number, but the enumerator.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Data Valid
Name Meaning Description
type range
Active Controlling BOOL TRUE or TRUE when the axis is being controlled.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
AxesGroup Axes Group _sGROUP_R --- Specify the axes group. *1
EF
*1. Specify a user-defined Axes Group Variable that was created in the Axes Group Basic Settings of the Sysmac Studio
(default: MC_Group*) or a system-defined axes group variable name (_MC_GRP[*], _MC1_GRP[*], or _MC2_GRP[*]).
Function
• This instruction stops all of the axes that are in motion for an axes group instruction (i.e., all of the
axes in the axes group that is specified with AxesGroup), and then disables the axes group instruc-
tion.
The following instructions use Deceleration (Deceleration Rate) to decelerate the axis to a stop:
MC_MoveLinear (Linear Interpolation), MC_MoveLinearAbsolute (Absolute Linear Interpolation),
MC_MoveLinearRelative (Relative Linear Interpolation), and MC_MoveCircular2D (Circular 2D Inter-
polation).
The MC_GroupSyncMoveAbsolute (Axes Group Cyclic Synchronous Absolute Positioning) instruc-
tion uses an immediate stop to stop the axis. It is not affected by Deceleration (Deceleration Rate).
• CommandAborted for the interpolation instruction that is currently in operation will change to TRUE
when this instruction is executed.
• If you execute this instruction while an interpolation instruction is in execution, the axes will deceler-
ate to a stop along the linear interpolation or circular interpolation path.
• The deceleration stop operation starts when Execute changes to TRUE.
MC_GroupStop
Precautions for Correct Use
This instruction is not executed if Status.ErrorStop (Error Deceleration Stopping) in the Axes
Group Variable is TRUE.
Use the MC_GroupImmediateStop instruction to stop the motion of an axes group that is decel-
erating to a stop for an error. 4
Function
Instruction Details
This section describes the instruction in detail.
Jerk
The relationships between the deceleration rate and interpolation velocity when Jerk is set to 0 and
when it is set to any other value are shown below.
• Jerk Set to 0
The command value for the velocity is created with deceleration rate Dt.
Interpolation velocity
Vt
Time
Time
Deceleration rate -Dt
Interpolation velocity
Vt
Time
Time
Deceleration rate -Dt
Jt
Jerk Time
-Jt
Vt: Velocity when deceleration starts, Dt: Specified deceleration rate, Jt: Specified jerk
Additional Information
• If 0 is specified for Deceleration (Deceleration Rate), an immediate stop is performed and the
axis stops immediately.
• An immediate stop occurs regardless of the setting of the Acceleration/Deceleration Over
axis parameter only when Deceleration (Deceleration Rate) is set to 0.
For details on BufferMode (Buffer Mode Selection), refer to the NJ/NX-series CPU Unit Motion Control
User’s Manual (Cat. No. W507).
In-position Check
An in-position check is not performed when stopping for this instruction.
Timing Charts
• Busy (Executing) changes to TRUE at the same time as Execute changes to TRUE. Active (Control-
ling) changes to TRUE in the next period.
• Done changes to TRUE when a velocity of 0 is reached.
• If another instruction aborts this instruction, CommandAborted changes to TRUE and Busy (Execut-
ing) and Active (Controlling) change to FALSE.
Execute
Done
Busy
Active
MC_GroupStop
CommandAborted
Current Instruction
Execute
Done
4
Busy
Function
Active
CommandAborted
Interpolation velocity
Previous operation
Time
Interpolation velocity
Execute
Vt
Re-execute
Time
Vt: Velocity when deceleration starts, Dt: Specified deceleration rate, Jt: Specified jerk
For details on multi-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
When the Status.Stopping (Deceleration Stopping) in the Axes Group Variable Is TRUE
Status.Stopping (Deceleration Stopping) in the Axis Variable changes to TRUE in the following cases.
• While the axes group is decelerating for the MC_GroupStop Instruction
• While Execute is TRUE for one or more MC_GroupStop instructions
If you execute one of the following instructions for an axes group that is decelerating to a stop,
CommandAborted of the executed instruction changes to TRUE.
• MC_MoveLinear (Linear Interpolation) instruction
• MC_MoveLinearAbsolute (Absolute Linear Interpolation) instruction
• MC_MoveLinearRelative (Relative Linear Interpolation) instruction
• MC_MoveCircular2D (Circular 2D Interpolation) instruction
When the MC_GroupStop instruction is in execution, you can execute another MC_GroupStop instruc-
tion with multi-execution of instructions. Done from the MC_GroupStop instruction that is in execution
changes to TRUE.
When the Status.ErrorStop (Error Deceleration Stopping) in the Axes Group Variable Is TRUE
Status.ErrorStop (Error Deceleration Stopping) in the axes group status is TRUE while there is an er-
ror for the axes group.
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axes will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
MC_GroupStop
Execute
Done
Busy
Active
CommandAborted
4
Function
Current Instruction
Execute
Done
Busy
Active
Error
Interpolation velocity
Previous operation
Time
Version Information
Operation when an error is reset depends on the unit version of the CPU Unit as follows:
Note that you must reset errors only after the axis has stopped. Do not reset errors during axis
motion.
• A CPU Unit with unit version 1.10 or later:
If you clear the error for this instruction, the instruction will not start until Execute changes to
TRUE again.
Ver. 1.10 or Later
Execute
Done
Busy
Active
CommandAborted
Error reset.
Error
Execute
Done
Busy
Active
CommandAborted
Error
Error reset.
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_GroupImmediateStop
The MC_GroupImmediateStop instruction stops all axes in an interpolated motion.
If the specified axes group is enabled, all of the composition axes are stopped according to the stop
mode that is specified in the Immediate Stop Input Stop Method axis parameter regardless of the
current status of the axes.
MC_GroupImmediateStop
FB/
Instruction Name FU Graphic expression ST expression
N
MC_GroupImmediate- Axes FB MC_GroupImmediateStop_instance MC_GroupImmediateStop_instance
Stop Group MC_GroupImmediateStop (
Immedi- AxesGroup AxesGroup AxesGroup :=parameter,
ate Stop Execute Done Execute :=parameter,
Busy Done =>parameter,
CommandAborted
Busy =>parameter,
Error
CommandAborted =>parameter, 4
ErrorID
Error =>parameter,
ErrorID =>parameter
Variables
);
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Execute Execute BOOL TRUE or FALSE The instruction is executed when the value
FALSE of this variable changes to TRUE.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
AxesGroup Axes Group _sGROUP_R --- Specify the axes group. *1
EF
*1. Specify a user-defined Axes Group Variable that was created in the Axes Group Basic Settings of the Sysmac Studio
(default: MC_Group*) or a system-defined axes group variable name (_MC_GRP[*], _MC1_GRP[*], or _MC2_GRP[*]).
Function
• You can execute the MC_GroupImmediateStop instruction for an entire axes group that is in motion
for an axes group instruction (i.e., the axes in the axes group that is specified with AxesGroup) or for
an axes group that is stopping for the MC_GroupStop instruction or error.
• When this instruction is executed, the axis stops immediately according to the setting of the
Immediate Stop Input Stop Method axis parameter. CommandAborted changes to TRUE for the
instruction that is currently in operation.
• When the instruction is executed, Status.ErrorStop (Error Deceleration Stopping) in the axis status
changes to TRUE and an Axes Group Immediate Stop Instruction Executed error (error code: 5486
hex) occurs when the instruction is executed.
For details on the Axes Group Immediate Stop Instruction Executed error (error code: 5486 hex),
refer to the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507).
Timing Charts
• Busy (Executing) changes to TRUE when Execute changes to TRUE.
• Done changes to TRUE when processing of this instruction is completed.
MC_MoveLiner Instruction
Execute
Done
Busy
Active
CommandAborted
MC_GroupImmediateStop
Error
ErrorID 16#0000
MC_GroupImmediateStop Instruction
Execute
Done 4
Busy
Function
CommandAborted
Error
ErrorID 16#0000
Interpolation velocity
Time
When the Status.Stopping (Deceleration Stopping) in the Axes Group Variable Is TRUE
Status.Stopping (Deceleration Stopping) in the Axes Group Variable changes to TRUE in the following
cases.
• While the axis is decelerating for the MC_GroupStop Instruction
• While Execute is TRUE for one or more MC_GroupStop instructions
You can execute this instruction for an axes group that is currently decelerating to a stop.
When this instruction is executed, CommandAborted for the MC_GroupStop instruction that is in oper-
ation will change to TRUE.
When the Status.ErrorStop (Error Deceleration Stopping) in the Axes Group Variable Is TRUE
Status.ErrorStop (Error Deceleration Stopping) in the axes group status is TRUE while there is an er-
ror for the axes group.
You can also execute this instruction for an axes group that is decelerating to a stop for an error.
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axis will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_GroupSetOverride
The MC_GroupSetOverride instruction changes the combined target velocity during an interpolated
motion.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_GroupSetOverr- Set Group FB MC_GroupSetOverride_instance MC_GroupSetOverride_in-
MC_GroupSetOverride
ide Overrides MC_GroupSetOverride stance (
AxesGroup AxesGroup AxesGroup :=parameter,
Enable Enabled Enable :=parameter,
VelFactor Busy VelFactor :=parameter,
AccFactor Error
AccFactor :=parameter,
JerkFactor ErrorID
JerkFactor :=parameter,
Enabled =>parameter,
Busy =>parameter,
Error =>parameter, 4
ErrorID =>parameter
);
Variables
Variables
Input Variables
Data De-
Name Meaning Valid range Description
type fault
Enable Enable BOOL TRUE or FALS The override factors are enabled when the value
FALSE E of this variable is TRUE.
The override factors return to 100% when the val-
ue of this variable changes to FALSE.
VelFactor Velocity Override LREAL 0 to 500 100 Specify the velocity override factor.
Factor The valid range of the override factor is between
0.01 and 500.00.
Values above 500.00 are treated as 500 and val-
ues less than 0.01 (including negative values) are
treated as 0.01.
The override factor will be 0 only when 0 is speci-
fied.
The unit is %.
AccFactor Acceleration/ LREAL 0 to 500 100 (Reserved)
(Reserved) Deceleration
Override Factor
JerkFactor Jerk Override LREAL 0 to 500 100 (Reserved)
(Reserved) Factor
Output Variables
Data Valid
Name Meaning Description
type range
Enabled Enabled BOOL TRUE or TRUE when the axis is being controlled.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
AxesGroup Axes Group _sGROUP_R --- Specify the axes group. *1
EF
*1. Specify a user-defined Axes Group Variable that was created in the Axes Group Basic Settings of the Sysmac Studio
(default: MC_Group*) or a system-defined axes group variable name (_MC_GRP[*], _MC1_GRP[*], or _MC2_GRP[*]).
Function
• This instruction changes the override factors related to the interpolation target velocity for the group
controlled by the next instruction.
Changes the target velocity of the axes in operation by changing the override factors.
The override factors apply to the following instructions.
• If the interpolation velocity that results from the override exceeds the maximum interpolation velocity
set in the Axes Group Variables, the maximum interpolation velocity is used.
• The axis will accelerate or decelerate to the interpolation velocity that results from the override.
• If the velocity override factor is set to 0, the target velocity will be 0. Axes group operation will decel-
erate to a velocity of 0, and operation will continue. Status.Moving in the Axes Group Variable is
TRUE during axes group motion.
If you want to pause the axis motion while keeping the operation status, set the override factor to 0.
• The override factors will return to 100% when Enable changes to FALSE.
• If an axes group error occurs during MC_GroupSetOverride execution, the value of Enabled for
MC_GroupSetOverride
MC_GroupSetOverride is maintained.
When Enable to this instruction changes to FALSE, Enabled and Busy from this instruction
change to FALSE.
The axis will accelerate or decelerate to a velocity with a 100% override factor.
Additional Information 4
Influence on Other Instructions
Function
Use this instruction to temporarily change the target velocities of other instructions.
This instruction does nothing for instructions to which a target velocity is not input.
However, Enabled remains TRUE even if the MC_GroupSetOverride instruction is executed for
an instruction to which it does not apply.
Timing Charts
Execute
Done
Busy
Active
CommandAborted
Current Instruction
Enable
Enabled
Busy
Time
Errors
If an error occurs during instruction execution, Error will change to TRUE. If an axes group minor fault
occurs, the axes group will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Enable
VelFactor 200
MC_GroupSetOverride
Enabled
Busy
Error
Function
Override factor: 100%
Time
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_GroupReadPosition
The MC_GroupReadPosition instruction gets the command current positions and the actual current
positions of an axes group.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_GroupRead- Read Axes FB MC_GroupReadPosition_instance MC_GroupReadPosition_instance
Position Group Posi- MC_GroupReadPosition (
tion AxesGroup AxesGroup AxesGroup :=parameter,
Enable Valid Enable :=parameter,
CoordSystem Busy CoordSystem :=parameter,
Error
Valid =>parameter,
ErrorID
Busy =>parameter,
CommandPosition
ActualPosition Error =>parameter,
ErrorID =>parameter,
CommandPosition =>parameter,
ActualPosition =>parameter
);
Version Information
A CPU Unit with unit version 1.01 or later and Sysmac Studio version 1.02 or higher are re-
quired to use this instruction.
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Enable Enable BOOL TRUE or FALSE FALSE The instruction is executed when the
value of this variable changes to
TRUE.
CoordSystem Coordinate _eMC_CO- 0: _mcACS 0 *1 Specify the coordinate system.
System ORD_SYS- 0: Axis coordinate system (ACS)
TEM
*1. The default value for an enumeration variable is actually not the number, but the enumerator.
Output Variables
Name Meaning Data type Valid range Description
Valid Enabled BOOL TRUE or TRUE when the axis group is being controlled.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
MC_GroupReadPosition
number, or 0
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
*2. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
Note 1. When the axis composition of the axes group contains two or three axes, the values in CommandPosition (Com-
mand Current Position) and ActualPosition (Actual Current Position) for the composition axes that are not used are
not defined.
Note 2. When Enable changes to FALSE, the values in CommandPosition (Command Current Position) and ActualPosition
(Actual Current Position) are not defined.
4
Function
Output Variable Update Timing
Name Timing for changing to TRUE Timing for changing to FALSE
Valid When Enable changes to TRUE. • When Enable changes to FALSE.
• When Error changes to TRUE.
Busy When Enable changes to TRUE. When Error changes to TRUE.
Error When there is an error in the execution condi- When the error is cleared.
tions or input parameters for the instruction.
In-Out Variables
Valid
Name Meaning Data type Description
range
AxesGroup Axes Group _sGROUP_R --- Specify the axes group. *1
EF
*1. Specify a user-defined Axes Group Variable that was created in the Axes Group Basic Settings of the Sysmac Studio
(default: MC_Group*) or a system-defined axes group variable name (_MC_GRP[*], _MC1_GRP[*], or _MC2_GRP[*]).
Function
• While Valid (Enabled) is TRUE, the MC_GroupReadPosition instruction gets the command current
positions and the actual current positions of the composition axes in the axes group each control
period.
• The following table lists the position types that can be used for each axis type.
Types of positions
Axis type
Command current position Actual current position
Servo axis Applicable Applicable
Virtual servo axis Applicable Applicable*1
Encoder axis Not applicable Applicable
Types of positions
Axis type
Command current position Actual current position
Virtual encoder axis Not applicable Applicable
*1. For a virtual servo axis, the actual position is the same as the command position.
However, there is sometimes calculation error because processing is performed with long reals in the MC
Function Module.
Before you use this instruction in a task to which the axes group is not assigned, declare Axis
Variables as external variables for the configuration axes that are specified in Axes (Axes
Group Composition Axes) in the task.
Timing Charts
• When Enable changes to TRUE, Busy (Executing) and Valid (Enabled) change to TRUE.
• When Enable changes to FALSE, Busy (Executing) and Valid (Enabled) change to FALSE.
MC_GroupReadPosition
Enable
Valid
Busy
Error
Error ID 16#0000
For details on multi-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
Errors
If an error occurs during instruction execution, Error will change to TRUE.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
MC_GroupReadPosition
Enable
Valid
MC_GroupReadPosition
Busy
Error
Error Codes 4
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
Function
MC_ChangeAxesInGroup
The MC_ChangeAxesInGroup instruction temporarily changes the Composition Axes axes group pa-
rameter.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_ChangeAx- Change Ax- FB MC_ChangeAxesInGroup_instance MC_ChangeAxesInGroup_instance (
esInGroup es in Group MC_ChangeAxesInGroup AxesGroup :=parameter,
AxesGroup AxesGroup Axes :=parameter,
Axes Axes Execute :=parameter,
Execute Done Done =>parameter,
Busy
Busy =>parameter,
CommandAborted
CommandAborted =>parameter,
Error
ErrorID Error =>parameter,
ErrorID =>parameter
);
The values that are written by this instruction are not saved in non-volatile memory in the CPU
Unit. Any values that are written are lost when the power supply to the Controller is turned OFF,
when settings are downloaded, or when the MC Function Module is restarted. They return to
the values that were set from the Sysmac Studio.
Use the Sysmac Studio and transfer the parameters to save them to non-volatile memory.
Additional Information
Use the Synchronize Menu of the Sysmac Studio to download the project.
Version Information
A CPU Unit with unit version 1.01 or later and Sysmac Studio version 1.02 or higher are re-
quired to use this instruction.
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Execute Execute BOOL TRUE or FALSE The instruction is executed when the value
FALSE of this variable changes to TRUE.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Data Valid
Name Meaning Description
type range
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
MC_ChangeAxesInGroup
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
Function
• When Error changes to TRUE.
• When CommandAborted changes to TRUE.
CommandAborted When this instruction is canceled due to an error • When Execute is TRUE and changes to
in another instruction. FALSE.
• After one period when Execute is FALSE.
Error When there is an error in the execution condi- When the error is cleared.
tions or input parameters for the instruction.
In-Out Variables
Valid
Name Meaning Data type Description
range
AxesGroup Axes Group _sGROUP_R --- Specify the axes group for which to change the
EF axes. *1
Axes Axes Group Com- ARRAY [0..3] --- Specify the axis numbers of the new composition
position Axes OF UINT axes. *2
*1. Specify a user-defined Axes Group Variable that was created in the Axes Group Basic Settings of the Sysmac Studio
(default: MC_Group*) or a system-defined axes group variable name (_MC_GRP[*], _MC1_GRP[*], or _MC2_GRP[*]).
*2. Set only servo axes or virtual servo axes as the composition axes. Specify the same number of composition axes as
the number before the composition axes are changed.
Function
• When Execute changes to TRUE, the MC_ChangeAxesInGroup instruction writes the composition
axes that are specified in Axes (Axes Group Composition Axes) to the Axes Group parameter for
the axes group that is specified in AxesGroup (Axes Group).
• When execution of the instruction is completed, Axis[ ] in the Kinematics (Kinematics Transformation
Settings) axes group variable will indicate the specified composition axes.
• You cannot use this instruction to change the axis composition (i.e., the number of axes). For exam-
ple, if you execute this instruction for an axes group with an axis composition of three axes, the axis
composition will still contain three axes.
• The operation for changing the axes numbers of the composition axes from 0, 1, 2, and 3 to 7, 6, 5,
and 4 is illustrated below.
Execute
Axes[0] UINT#7
Axes[1] UINT#6
Axes[2] UINT#5
Axes[3] UINT#4
Done
• The values that are written by this instruction are not saved in non-volatile memory in the
CPU Unit. Any values that are written are lost when the power supply to the Controller is
turned OFF, when settings are downloaded, or when the MC Function Module is restarted.
They return to the values that were set from the Sysmac Studio.
Use the Sysmac Studio and transfer the parameters to save them to non-volatile memory.
• If you use an NX-series CPU Unit, you must assign all of the composition axes specified in
Axes (Axes Group Composition Axes) to the same task as the Axes Group for which to exe-
cute the instruction. If you specify an axis that is assigned to a different task, an Axes Group
Composition Axis Setting Out of Range error (error code 549D hex) occurs.
Timing Charts
• When Execute changes to TRUE, Busy (Executing) changes to TRUE.
• Done changes to TRUE when changing the composition axes is completed.
MC_ChangeAxesInGroup Instruction
Execute
Done
Busy
CommandAborted
Error
ErrorID 16#0000
MC_ChangeAxesInGroup
For details on multi-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
Errors
If an error occurs during instruction execution, Error will change to TRUE and parameters are not writ-
ten. The value before the instruction was executed will be held.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code). 4
Function
Timing Chart When Error Occurs
Execute
Done
Busy
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_GroupSyncMoveAbsolute
The MC_GroupSyncMoveAbsolute instruction cyclically outputs the specified target positions for the
axes.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_GroupSync- Axes Group FB MC_GroupSyncMoveAbsolute_instance MC_GroupSyncMoveAbsolute_in-
MoveAbsolute Cyclic Syn- MC_GroupSyncMoveAbsolute stance (
chronous Ab- AxesGroup AxesGroup AxesGroup :=parameter,
solute Posi- Execute InPosition Execute :=parameter,
tioning Position Busy Position :=parameter,
CoordSystem Active
CoordSystem :=parameter,
BufferMode CommandAborted
BufferMode :=parameter,
Error
ErrorID InPosition =>parameter,
Busy =>parameter,
Active =>parameter,
CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Version Information
A CPU Unit with unit version 1.01 or later and Sysmac Studio version 1.02 or higher are re-
quired to use this instruction.
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Execute Execute BOOL TRUE or FALSE FALSE The instruction is executed when the
value of this variable changes to
TRUE.
Position Target Position ARRAY [0..3] OF Negative num- 0 Specify the absolute target positions.
LREAL ber, positive The unit is command units. *1
number, or 0
CoordSystem Coordinate _eMC_CO- 0: _mcACS 0*2 Specify the coordinate system.
System ORD_SYSTEM 0: Axis coordinate system (ACS)
BufferMode Buffer Mode _eMC_BUF- 0: _mcAborting 0*2 Specify the behavior when executing
Selection FER_MODE more than one motion instruction.
0: Aborting
*1. Refer to Unit Conversion Settings in the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507) for
information on command units.
*2. The default value for an enumeration variable is actually not the number, but the enumerator.
Output Variables
Data Valid
Name Meaning Description
type range
InPosition In Position BOOL TRUE or TRUE when the actual current positions for all composi-
FALSE tion axes are within the in-position range of their target
positions.
MC_GroupSyncMoveAbsolute
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Active Controlling BOOL TRUE or TRUE when the axis is being controlled.
FALSE
CommandAborted Instruction BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting 4
Manual (Cat. No. W503) for the event codes.
Variables
Output Variable Update Timing
Name Timing for changing to TRUE Timing for changing to FALSE
InPosition When the actual current positions for all compo- • When an actual current position is outside of
sition axes are within the in-position range of the in-position range.
their target positions. • When Error changes to TRUE.
• When CommandAborted changes to TRUE.
Busy When Execute changes to TRUE. • When Error changes to TRUE.
• When CommandAborted changes to TRUE.
Active When the instruction is started. • When Error changes to TRUE.
• When CommandAborted changes to TRUE.
CommandAborted • When this instruction is aborted because an- • When Execute is TRUE and changes to
other motion control instruction was executed FALSE.
with the Buffer Mode set to Aborting. • After one period when Execute is FALSE.
• When this instruction is canceled due to an
error in another instruction.
• When this instruction is executed while there
is an axis error.
• When you start this instruction during
MC_GroupStop instruction execution.
Error When there is an error in the execution condi- When the error is cleared.
tions or input parameters for the instruction.
In-Out Variables
Valid
Name Meaning Data type Description
range
AxesGroup Axes Group _sGROUP_R --- Specify the axes group. *1
EF
*1. Specify a user-defined Axes Group Variable that was created in the Axes Group Basic Settings of the Sysmac Studio
(default: MC_Group*) or a system-defined axes group variable name (_MC_GRP[*], _MC1_GRP[*], or _MC2_GRP[*]).
Function
• The MC_GroupSyncMoveAbsolute instruction outputs the target position from the user program ev-
ery task period to the Servo Drive or other device in Cyclic Synchronous Position (CSP) Control
Mode. The target positions are given as absolute positions.
• The upper limit of the velocity is the value that is set in the Maximum Velocity axis parameter. The
Maximum Acceleration and Maximum Deceleration are not used.
• If this instruction is executed in the primary periodic task or priority-5 periodic task, the target posi-
tion that is specified in the input parameters is output to the Servo Drive in the next task period.
The following timing charts show an example of the operation for when this instruction is executed in
the primary periodic task.
The same information applies when it is used in a priority-5 periodic task.
MC_GroupSyncMoveAbsolute Executed
in Primary Periodic Task
Position Command position Command Servo Drive
Target positions (black positions
dots) specified with the M
input parameters
Time
Primary period
• If this instruction is executed in the priority-16 periodic task, the target positions that are specified in
the input parameters are output to the Servo Drive in the next periodic task.
MC_GroupSyncMoveAbsolute Executed
in Priority-16 Periodic Task
Position Command position Command Servo Drive
positions
Target positions (black
dots) specified with the M
input parameters
Task period
• An Instruction Execution Error with Undefined Home (error code: 5466 hex) occurs if home is
undefined for any of the composition axes in the axes group.
• Specify the target positions so that the travel distances to the target positions do not cause
the velocity to exceed the value that is specified in the Maximum Velocity axis parameter. If
target positions are specified that cause the Maximum Velocity to be exceeded, the com-
mand velocity will become saturated and the travel distances will be output so that the
Maximum Velocity is not exceeded. If this occurs, any insufficient travel distances to the tar-
get positions are output in the next period or later.
Details.VelLimit (Command Velocity Saturation) in the axis control status changes to TRUE at
this time.
Instruction Details
This section describes the instruction in detail.
In-position Check
If Position (Target Position) is not changed, InPosition changes to TRUE when the difference between
the target position and the actual position is within the range that is set for the In-position Range axis
MC_GroupSyncMoveAbsolute
parameter.
Even if the target position is changed while InPosition is TRUE, it will remain TRUE for the remainder
of the period and change to FALSE the next period.
The setting of the In-position Check Time axis parameter is disabled.
Stop Processing
This section describes the methods that are used to stop axes group operations.
Use the MC_GroupStop instruction or the MC_GroupImmediateStop instruction to stop axes group op-
eration. If one of these instructions is executed, CommandAborted for this instruction will change to 4
TRUE.
Function
Stopping with the MC_GroupStop Instruction
An immediate stop is performed.
Applicable Axes
• You can use this instruction for a servo axis.
To use this instruction, change Enable for the MC_Power instruction to TRUE (Servo ON).
• A virtual servo axis will acknowledge this instruction at any time.
Start Condition
• Set the Count Mode axis parameters to Linear Mode.
• Define home for all of the composition axes.
• Execute the MC_GroupEnable instruction to enable the axes group.
Overrides
Overrides are disabled for this instruction.
Timing Charts
• Busy (Executing) changes to TRUE at the same time as Execute changes to TRUE. Active (Control-
ling) changes to TRUE in the next period.
• InPosition changes to TRUE when the actual current positions for all composition axes are within
the in-position range from Position (Target Positions).
• If another instruction aborts this instruction, CommandAborted changes to TRUE and Busy (Execut-
ing), Active (Controlling), and InPosition change to FALSE.
• The MC_GroupStop instruction is used to stop this instruction.
The following timing charts show operation for when this instruction is executed in the primary periodic
task.
MC_GroupSyncMoveAbsolute Instruction
Execute
Position 20 30 40 50 60 40
InPosition
Busy
Active
CommandAborted
Error
ErrorID 16#0000
MC_GroupStop Instruction
Execute
Done
Busy
Active
Command position
60
50
40
30
20
0
Time
Additional Information
The MC Function Module sends a command to the Servo Drive to change the Control Mode as
shown in the above timing chart. The timing of implementing the change in the Servo Drive de-
pends on Servo Drive specifications.
MC_GroupSyncMoveAbsolute
This instruction cannot be re-executed.
A Motion Control Instruction Re-execution Disabled error (error code: 543B hex) occurs if re-execution
is attempted.
Function
BufferMode can be set only to Aborting for this instruction.
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axis will stop.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
InPosition
Busy
Active
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_GroupReset
The MC_GroupReset instruction clears axes group errors and axis errors.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_GroupReset Group Reset FB MC_GroupReset_instance MC_GroupReset_instance (
MC_GroupReset AxesGroup :=parameter,
AxesGroup AxesGroup Execute :=parameter,
Execute Done Done =>parameter,
Busy Busy =>parameter,
Failure
Failure =>parameter,
Error
Error =>parameter,
ErrorID
ErrorID =>parameter
);
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Execute Execute BOOL TRUE or FALSE The instruction is executed when the value
FALSE of this variable changes to TRUE.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
Failure Failure End BOOL TRUE or TRUE when the instruction is not executed normally.
FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
MC_GroupReset
In-Out Variables
Valid
Name Meaning Data type Description
range
AxesGroup Axes Group _sGROUP_R ---
4
Specify the axes group. *1
EF
*1. Specify a user-defined Axes Group Variable that was created in the Axes Group Basic Settings of the Sysmac Studio
Function
(default: MC_Group*) or a system-defined axes group variable name (_MC_GRP[*], _MC1_GRP[*], or _MC2_GRP[*]).
Function
• When Execute changes to TRUE, the error of the axes group specified by AxesGroup in the
GroupEnable state and axis errors of axes belonging to the axes group are cleared.
The following are reset: minor faults or observations that occur for axes or axes groups and drive
errors.
• Error clear processing is performed regardless of whether the Servo is ON or OFF for the axes.
• If there is a drive error for an axis, the drive error is cleared first. Error clear processing is then per-
formed.
• Reset processing for the drive error is continued until the drive error is cleared or continues for the
Drive Error Reset Monitoring Time in the axis parameters. The drive error reset process is execut-
ed for all axes belonging to the axes group at the same time.
• Only errors that existed when Execute changed to TRUE are reset. Errors that occur while clearing
errors are not cleared.
• If this instruction is executed while the axes group is decelerating to a stop for an axes group error
and the instruction is not executed, Failure will change to TRUE. This is so that the error cannot be
reset before the axis stops.
Failure will also change to TRUE if an axis error that results from an axis common error cannot be
cleared by this instruction.
• The error clear processing that is performed by this instruction sometimes requires more than
one control period.
• The Failure output variable from the instruction will change to TRUE if the axis is in motion.
Remove the cause of the error, and then retry the process until Done changes to TRUE.
• After you remove the cause of the error, execute the instruction only after you confirm that the
axes have stopped completely.
• If you use this instruction for an OMRON G5-series Servo Drive, perform exclusive control of
instructions so that the ResetECError (Reset EtherCAT Error) instruction is not executed at
the same time.
• If this instruction is used for an NX-series Pulse Output Unit, the error in the Servo Drive that
is connected to the Pulse Output Unit is not reset. Refer to the NX-series Position Interface
Units User’s Manual (Cat. No. W524) for details.
Additional Information
• You can clear axis errors only when the axes group is enabled.
• The following errors cannot be cleared with this instruction.
All axis common errors
To clear axis common errors, execute the ResetMcError (Reset All Errors) instruction sepa-
rately.
• If you execute this instruction on an axes group for which there is no error, the instruction is
completed normally and the current status is continued.
Timing Charts
Execute
Done
Busy
Failure
Busy
Active
Error
Execute
Done
Busy
Failure
MC_GroupReset
nored and error clear processing is continued.
Execute
Done
Busy
4
Failure
Function
The command from re-executing the instruction is not
acknowledged and the current processing is continued.
Reset A
MC_GroupReset
A AxesGroup1 AxesGroup AxesGroup
Execute Done
Busy
Failure
Error
Executes multiple ErrorID
MC_GroupReset instructions
for the same axes group.
Reset B
MC_GroupReset
B AxesGroup1 AxesGroup AxesGroup
Execute Done
Busy
Failure
Error
ErrorID
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_SetCamTableProperty..................................................................................... 5 - 2
MC_SaveCamTable................................................................................................. 5 - 8 5
MC_Write ............................................................................................................... 5 - 13
MC_GenerateCamTable ....................................................................................... 5 - 18
MC_WriteAxisParameter...................................................................................... 5 - 48
MC_ReadAxisParameter ...................................................................................... 5 - 63
MC_SetCamTableProperty
The MC_SetCamTableProperty instruction changes the end point index of the cam table that is speci-
fied in an in-out parameter.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_SetCamTableProp- Set Cam FB MC_SetCamTableProperty_instance MC_SetCamTableProperty_in-
erty Table Prop- MC_SetCamTableProperty stance (
erties CamTable CamTable CamTable :=parameter,
Execute Done Execute :=parameter,
EndPointIndex Done =>parameter,
MaxDataNumber
EndPointIndex =>parameter,
Busy
MaxDataNumber =>parameter,
CommandAborted
Error Busy =>parameter,
ErrorID CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
);
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Execute Execute BOOL TRUE or FALSE The instruction is executed when the value
FALSE of this variable changes to TRUE.
Output Variables
Data
Name Meaning Valid range Description
type
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
EndPointIndex End Point In- UINT Non-negative Contains the cam table end point index.
dex number
MaxDataNumber Maximum UINT Positive num- Contains the maximum number of cam data.
Number of ber
Cam Data
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
Data
Name Meaning Valid range Description
type
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
MC_SetCamTableProperty
• After one period when Execute is FALSE.
Busy When Execute changes to TRUE. • When Done changes to TRUE.
• When Error changes to TRUE.
• When CommandAborted changes to TRUE.
CommandAborted When there is a reason to abort this instruction. • When Execute is TRUE and changes to
FALSE.
• After one period when Execute is FALSE.
Error When there is an error in the execution condi- When the error is cleared.
tions or input parameters for the instruction.
5
In-Out Variables
Function
Name Meaning Data type Valid range Description
CamTable Cam Table ARRAY[0..N] OF --- Specify the cam data structure _sMC_CAM_REF
_sMC_CAM_REF array variable as the cam table. *1
*1. N in the array variable is set automatically by the Sysmac Studio. Specify a cam data variable that was created on
Cam Editor of the Sysmac Studio.
Function
• The MC_SetCamTableProperty instruction changes the end point index of the cam table that is
specified in an in-out parameter.
• The end point is the data located one cam data before the first cam data with a phase of 0 after the
start point in the cam table.
• The array number of the end point is output to EndPointIndex.
• Any data that is detected after the 0 phase is detected is treated as invalid cam data, and the phase/
displacement values are ignored.
• The maximum number of cam data represents the maximum number of elements in an array of cam
data structures.
The maximum number of cam data is specified when the structure array is declared with the Sys-
mac Studio.
• When the user program changes the cam data end point index, the end point must be updated. Use
this instruction to update the number of valid cam data.
For details on cam tables, refer to the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No.
W507).
• When searching the cam table, an error will occur if the phases are not in ascending order
before the 0 phase is found.
• You cannot change the maximum number of cam data from the user program.
• Execute this instruction after changing the end point in the cam data or overwriting values in
the cam data.
If the end point index is changed or the phases are not in ascending order, the cam operation
and the operation of the EndOfProfile (End of Cam Cycle) of the MC_CamIn (Start Cam Op-
eration) instruction may not be as expected.
• If the cam table is changed while this instruction is being processed, the update process will
not be performed correctly. Wait for execution of this instruction to be completed before you
change the cam data from the user program.
• Cam data variables are global variables. You can therefore access or change the values of
cam data variables from more than one task. If you change the values of cam data variables
from more than one task, program the changes so that there is no competition in writing the
value from more than one task.
• If you use exclusive control of global variables between tasks for a cam data variable, do not
use the cam data variable for motion control instructions while exclusive control is in effect for
the cam data variable. An Incorrect Cam Table Specification error (error code: 5439 hex) will
occur.
Instruction Details
For example, refer to the following cam table. The EndPointIndex is 999 and the MaxDataNumber
(Maximum Number of Cam Data) is 5,000.
The following tables show the relationship between overwriting of the cam data and the
EndPointIndex.
If this instruction is executed with a cam table in which the phases for MyCam1[1000] on are 0,
EndPointIndex will be 999.
If this instruction is executed for a cam table after the phase for MyCam1[997] is changed to 0,
EndPointIndex will be 996.
MC_SetCamTableProperty
. . . . .
. . . . .
MyCam1 [4999] 0 0 0 0
If this instruction is executed for a cam table after the phases for MyCam1[1000] to MyCam1[4997] are
changed to anything other than 0, EndPointIndex will be 4997.
Function
. . . . .
MyCam1 [998] 359.9 1 100.3 20.3
MyCam1 [999] 360.0 0 End point 100.4 20.4
MyCam1 [1000] 0 0 100.5 20.5
. . . . .
. . . . .
. . . . .
Invalid
MyCam1 [4996] 0 0 359.99 0.01
data
MyCam1 [4997] 0 0 360.00 0.0 End point
MyCam1 [4998] 0 0 0 0
Invalid data
MyCam1 [4999] 0 0 0 0
If this instruction is not executed even though the phases for MyCam1[1000] to MyCam1[4997] were
overwritten to values other than 0, cam operation will be executed between MyCam1[0] to My-
Cam1[999].
The cam table is overwritten, but the EndPointIndex does not change.
For information on the cam table data structure, refer to MC_CamIn on page 3 - 171.
Timing Charts
The following chart shows two ways to execute the instruction. A normal end is indicated for either
method.
The first time, Execute is changed to TRUE and then it is changed to FALSE before execution of the
instruction is completed.
The second time, the value of Execute is held.
Execute
Done
Busy
CommandAborted
Error
ErrorID 16#0000
Errors
If an error occurs during instruction execution, Error will change to TRUE.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
Done
Busy
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_SetCamTableProperty
5
Function
MC_SaveCamTable
The MC_SaveCamTable instruction saves the cam table specified with the input parameter to non-vol-
atile memory.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_SaveCamTa- Save Cam FB MC_SaveCamTable_instance MC_SaveCamTable_instance (
ble Table MC_SaveCamTable CamTable :=parameter,
CamTable CamTable Execute :=parameter,
Execute Done Done =>parameter,
Busy Busy =>parameter,
CommandAborted
CommandAborted =>parameter,
Error
Error =>parameter,
ErrorID
ErrorID =>parameter
);
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Execute Execute BOOL TRUE or FALSE The instruction is executed when the value
FALSE of this variable changes to TRUE.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Name Meaning Data type Valid range Description
MC_SaveCamTable
CamTable Cam Table ARRAY[0..N] OF --- Specify the cam data structure _sMC_CAM_REF
_sMC_CAM_REF array variable as the cam table. *1
*1. N in the array variable is set automatically by the Sysmac Studio. Specify a cam data variable that was created on
Cam Editor of the Sysmac Studio.
Function
5
• The MC_SaveCamTable instruction saves the cam table specified with the in-out variable to non-
volatile memory.
Function
• _MC_COM.Status.CamTableBusy (Cam Table File Save Busy) in the system-defined variables for
motion control is TRUE while the cam table is saved.
For information on the cam table data, refer to MC_CamIn on page 3 - 171.
• Use this instruction to save the cam data after it is overwritten before you turn OFF the Con-
troller. If you turn OFF the Controller without saving the cam data, the overwritten data will be
lost.
• If the cam table is changed while this instruction is being processed, the update process will
not be performed correctly. Do not write to the cam table while this instruction is being proc-
essed when changing the cam table from the user program.
• This instruction has a considerably longer processing time compared with other instructions.
The processing time is greatly affected by the processing load on the CPU Unit. If the next
instruction is executed taking the completion of this instruction as a trigger, take care with the
timing of execution of the next instruction.
• Do not turn OFF the Controller while this instruction is being processed. The data is not
saved correctly if the Controller is turned OFF. The cam data in non-volatile memory may be-
come corrupted.
• You cannot upload cam data, download cam data, start online operation, perform online edit-
ing, or start data traces during execution of this instruction.
If this instruction is executed during a cam data upload, cam data download, or online editing,
a Cannot Execute Save Cam Table Instruction error (error code: 743C hex) occurs. Perform
retry processing until the cam data is saved normally.
Use the Synchronize Menu of the Sysmac Studio to upload and download the data.
• There is a limit to the number of times that you can write non-volatile memory. The life of the
non-volatile memory will expire faster if this instruction is executed frequently. Do not execute
it any more than is necessary.
• Cam data variables are global variables. You can therefore access or change the values of
cam data variables from more than one task. If you change the values of cam data variables
from more than one task, program the changes so that there is no competition in writing the
value from more than one task.
• If you use exclusive control of global variables between tasks for a cam data variable, do not
use the cam data variable for motion control instructions while exclusive control is in effect for
the cam data variable. An Incorrect Cam Table Specification error (error code: 5439 hex) will
occur.
• Do not execute this instruction while online edits are being saved. Otherwise the online edits
may not be saved correctly.
Saving of online edits refers to the following conditions.
a) For a combination of a CPU Unit with unit version 1.04 or later and Sysmac Studio ver-
sion 1.05 or higher, saving of online edits continues until the dialog box that indicates sav-
ing data to built-in non-volatile memory closes.
b) For a combination of a CPU Unit with unit version 1.03 or before and Sysmac Studio ver-
sion 1.04 or lower, online edits are saved from when you click the Yes Button in the confir-
mation dialog box until the dialog box closes.
Timing Charts
The following chart shows two ways to execute the instruction. A normal end is indicated for either
method.
The first time, Execute is changed to TRUE and then it is changed to FALSE before execution of the
instruction is completed.
The second time, the value of Execute is held.
Execute
Done
Busy
MC_SaveCamTable
CommandAborted
Error
ErrorID 16#0000
Function
A Motion Control Instruction Re-execution Disabled error (error code: 543B hex) occurs if re-execution
is attempted.
Errors
If an error occurs during instruction execution, Error will change to TRUE.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
Done
Busy
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_Write
The MC_Write instruction writes parts of the motion control parameters in the MC Function Module.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_Write Write MC FB MC_Write_instance MC_Write_instance (
Setting MC_Write Target :=parameter,
Target Target SettingValue :=parameter,
SettingValue SettingValue Execute :=parameter,
Execute Done ParameterNumber :=parameter,
ParameterNumber Busy
Done =>parameter,
CommandAborted
Busy =>parameter,
Error
ErrorID CommandAborted =>parameter,
Error =>parameter,
ErrorID =>parameter
MC_Write
);
The values that are written by this instruction are not saved in non-volatile memory in the CPU 5
Unit. Any values that are written are lost when the power supply to the Controller is turned OFF,
when settings are downloaded, or when the MC Function Module is restarted. They return to
Variables
the values that were set from the Sysmac Studio.
Use the Sysmac Studio and transfer the parameters to save them to non-volatile memory.
Additional Information
Use the Synchronize Menu of the Sysmac Studio to download the project.
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Execute Execute BOOL TRUE or FALSE FALSE The instruction is executed when the
value of this variable changes to TRUE.
5 Following Error Over Value LREAL Positive number The unit is command units. *2
6 Following Error Warning Value LREAL Positive number Set a value that is less than the value
of the Following Error Over Value.
The unit is command units. *2
7 Software Limits _eMC_SWL 0: _mcNonSwLmt 0: Disabled
MT_MODE 1: _mcCmdDeceleration- 1: Deceleration stopping enabled for
Stop command position
2: _mcCmdImmediateStop 2: Immediate stopping enabled for
3: _mcActDecelerationStop command position (stop using re-
4: _mcActImmediateStop maining pulses)
3: Deceleration stopping enabled for
actual position
4: Immediate stopping enabled for
actual position (stop using remaining
pulses)
Output Variables
Data Valid
Name Meaning Description
MC_Write
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE 5
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Variables
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Target Write Target _sAXIS_REF --- Specify the axis or axes group for which to write a
or parameter. *1
_sGROUP_R
EF
SettingValue Setting Value Depends on --- Specify the value to write.
the data type The valid range follows the motion control param-
of the speci- eter that is specified by ParameterNumber. De-
fied variable. fault: 0
*2
*1. Specify a user-defined Axis Variable that was created in the Axis Basic Settings of the Sysmac Studio or a user-de-
fined Axes Group Variable that was created in the Axes Group Basic Settings of the Sysmac Studio. (The default axis
variable names are MC_Axis*. The default axes group variable names are MC_Group*.) You can also specify the sys-
tem-defined variables for any of these: _MC_AX[*], _MC1_AX[*], _MC2_AX[*], _MC_GRP[*], _MC1_GRP[*], or
_MC2_GRP[*].
*2. For details on the data types of variables, refer to Parameter Number Data Types and Valid Ranges on page 5 - 14.
Function
• The MC_Write instruction writes the SettingValue to the system-defined variable for motion control
specified by Target (Write Target) and ParameterNumber when Execute changes to TRUE.
• The parameters that are specified with the input variables are used if motion starts when
Status.Standby in the Axes Group Variable or Status.Standstill in the Axis Variable is TRUE, and for
multi-execution of instructions when the Buffer Mode is set to Aborting.
Therefore these parameters are not applied when operation is continued after restarting or for multi-
execution of instructions with Buffer Mode set to any value other than Aborting.
The values that are written by this instruction are not saved in non-volatile memory in the CPU
Unit. Any values that are written are lost when the power supply to the Controller is turned OFF,
when settings are downloaded, or when the MC Function Module is restarted. They return to
the values that were set from the Sysmac Studio.
Use the Sysmac Studio and transfer the parameters to save them to non-volatile memory.
Timing Charts
The following timing chart shows the operation for when 20 is written to _mcChkDec (Deceleration
Warning Value) in the axis parameter settings.
Execute
Done
Busy
CommandAborted
Error
ErrorID 16#0000
Value of _mcChkDec 1 20
MC_Write
tion is re-executed. When that happens, the instruction overwrites the previous values of the Target
(Write Target), ParameterNumber, and SettingValue with the values that are specified when Execute
changes to TRUE.
5
Multi-execution of Motion Control Instructions
Function
For details on multi-execution of motion control instructions, refer to the NJ/NX-series CPU Unit Motion
Control User’s Manual (Cat. No. W507).
Errors
If an error occurs during instruction execution, Error will change to TRUE and parameters are not writ-
ten. The value before the instruction was executed will be held.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
Done
Busy
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_GenerateCamTable
The MC_GenerateCamTable instruction creates a cam table for the CamProperty (Cam Properties)
and CamNodes (Cam Nodes) specified in the I/O variables.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_Generate- Generate FB MC_GenerateCamTable_instance MC_GenerateCamTable_instance
CamTable Cam Table MC_GenerateCamTable (
CamTable CamTable CamTable :=parameter,
CamProperty CamProperty CamProperty :=parameter,
CamNodes CamNodes CamNodes :=parameter,
Execute Done
Execute :=parameter,
EndPointIndex
Done =>parameter,
Busy
CommandAborted EndPointIndex =>parameter,
Error Busy =>parameter,
ErrorID CommandAborted =>parameter,
ErrorParameterCode Error =>parameter,
ErrorNodePointIndex ErrorID =>parameter,
ErrorParameterCode
=>parameter,
ErrorNodePointIndex
=>parameter
);
You must create the cam table specified for this instruction with the Cam Editor on the Sysmac
Studio and download it to the CPU Unit in advance.
Use the Synchronize Menu of the Sysmac Studio to download the project.
Version Information
A CPU Unit with unit version 1.08 or later and Sysmac Studio version 1.09 or higher are re-
quired to use this instruction.
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Execute Execute BOOL TRUE or FALSE The instruction is executed when the value
FALSE of this variable changes to TRUE.
Output Variables
Data
Name Meaning Valid range Description
type
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
EndPointIndex End Point In- UINT Non-negative Contains the cam table end point index after the instruc-
dex number tion is executed.
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
MC_GenerateCamTable
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
ErrorParameter- Parameter WORD *1 Contains the attached information for some error codes.
Code Detail Code If the information is saved, the detail code of the parame-
ter for which the error occurred is output.
ErrorNodePointIn- Node Point UINT *1 Contains the attached information for some error codes.
dex Element If the information is saved, the element number of the 5
Number node point for which the error occurred is output.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Variables
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
CamTable Cam Table ARRAY[0..N] OF --- Specify an array variable of _sMC_CAM_REF
_sMC_CAM_REF cam data structure as the cam table. *1
Specify a cam data variable that was created on
the Cam Editor of the Sysmac Studio.
Valid
Name Meaning Data type Description
range
CamProperty Cam Properties _sMC_CAM_PRO --- Specify a variable of _sMC_CAM_PROPERTY
PERTY cam property structures.
Specify a user-defined variable with a data type
of _sMC_CAM_PROPERTY or a cam property
variable created on the Sysmac Studio.
CamNodes Cam Nodes ARRAY[0..N] OF --- Specify an array variable of _sMC_CAM_NODE
_sMC_CAM_NOD cam node structures.
E Specify a user-defined variable with a data type
of _sMC_CAM_NODE or a cam node variable
created on the Sysmac Studio. *2
*1. N in the array variable is set automatically by the Sysmac Studio.
*2. If you use a user-defined variable, create an array variable with a starting element number of 0 and a maximum of 358
array elements N.
Function
• The MC_GenerateCamTable instruction calculates cam data based on CamProperty (Cam Proper-
ties) and CamNodes (Cam Nodes) that are specified for the in-out variables when Execute changes
to TRUE.
• The calculated cam data values are written to CamTable specified for the in-out variable.
• The items in CamProperty (Cam Properties) and CamNodes correspond to the items that are set
with the Cam Editor of the Sysmac Studio.
• When writing the cam table is completed, the end point index of the cam table is updated and the
number of the last cam element is output to EndPointIndex.
It is not necessary to execute the MC_SetCamTableProperty (Set Cam Table Properties) instruction
after completion of the MC_GenerateCamTable instruction.
• While the cam table creation process is in progress, _MC_COM.Status.GenerateCamBusy (Cam
Table Creation Busy) in the MC Common variable of the motion control system variables will be
TRUE.
Cam table before instruction execution Cam table after instruction execution
Element No. Phase Displacement The cam data is Element No. Phase Displacement
0 0.0 0.0 calculated and written 0 0.0 0.0
to the table when the
1 0.0 0.0 instruction is executed. 1 1.0 1.0
... ... ... ... ... ...
179 0.0 0.0 179 179.0 199.0
180 0.0 0.0 Cam end point 180 180.0 200.0
181 0.0 0.0 181 0.0 0.0
... ... ... ... ... ...
MC_GenerateCamTable_instance
MC_GenerateCamTable
MC_GenerateCamTable
CamTable CamTable
Cam table properties CamProperty CamProperty
Cam nodes (Curve definitions) CamNodes CamNodes
Execute Done
EndPointIndex “180” is output after instruction execution.
Busy
CommandAborted
Error
ErrorID
ErrorParameterCode
ErrorNodePointIndex
5
Function
• Set the maximum number of cam data to a value that is equal to or higher than the number of
data in the cam table that will be created by the instruction.
• Although you can specify a free curve as the curve shape on the Cam Editor of the Sysmac
Studio, you cannot specify a free curve with this instruction.
• This instruction has a considerably longer processing time compared with other instructions.
The processing time is greatly affected by the processing load on the CPU Unit. If the next
instruction is executed taking the completion of this instruction as a trigger, take care with the
timing of execution of the next instruction.
• Even if the same setting items are set for the Cam Editor of the Sysmac Studio and this in-
struction, differences in internal processing may create differences in the values of the cam
data that is created.
• Cam data variables are global variables. You can therefore access or change the values of
cam data variables from more than one task. If you change the values of cam data variables
from more than one task, program the changes so that there is no competition in writing the
value from more than one task.
• If you use exclusive control of global variables between tasks for a cam data variable, do not
use the cam data variable for motion control instructions while exclusive control is in effect for
the cam data variable. An Incorrect Cam Table Specification error (error code: 5439 hex) will
occur.
• If you create the variables that you specify for CamProperty (Cam Properties) and
CamNodes as user-defined variables, set the Retain attributes of the variables not to retain
their initial values. If you change the values of the variables and use them again after chang-
ing the mode to PROGRAM mode or cycling the power supply, set the Retain attributes of the
variables to retain their values.
The Retain attributes of Cam Properties variables and Cam Nodes variables created on the
Sysmac Studio are always set to retain the values of the variables.
• The cam data variables that are created with this instruction are not saved in the non-volatile
memory of the CPU Unit. To save them in non-volatile memory, execute the MC_SaveCamT-
able instruction.
• Do not change the values in the array variable that is specified for CamNodes during execu-
tion of the instruction. The instruction may cause unintended operation.
• If the CamNodes array is large, the instruction execution time increases and the task period
may be exceeded. If the task period is exceeded, a Task Period Exceeded error (error code:
6001 hex) will occur. Adjust the array size or change the task period.
• The creation process for the cam table continues even if the operating mode is changed from
RUN mode to PROGRAM mode during execution of the instruction. If you then change back
to RUN mode and execute the instruction for the same cam table, a Motion Control Instruc-
tion Multi-execution Disabled error (error code: 543C hex) will occur.
Additional Information
• You can check the maximum number of cam data in the cam table with the data type of the
global variable on the Sysmac Studio or by executing the SizeOfAry (Get Number of Array
Elements) instruction in the user program.
• You can calculate the number of cam data in the cam table that is created by this instruction
with the following formula.
n-1 Mk - Mk-1
Tcd = Ʃ (
k=0 Pk )+1
MC_GenerateCamTable
However, Phase (Master Axis Phase) of Mk-1 is taken as 0.
Pk : PhasePitch (Phase Pitch) of element number k in cam node array variable
n : Number of node points
Note If Phase (Master Axis Phase) cannot be divided evenly by PhasePitch, the value is rounded up at
the first decimal place.
• Do not use this instruction to create a cam table with more than 65,535 cam data.
• You can check the number of cam data in the created cam table with EndPointIndex. You can
use an HMI to display the value of EndPointIndex to improve the resolution of the cam table, 5
add node points, or make other adjustments.
• Refer to information on MC_CamIn on page 3 - 171 for details on the cam data in cam tables.
• Refer to information on MC_SetCamTableProperty on page 5 - 2 for information on the end
Function
point index.
• Refer to the Sysmac Studio Version 1 Operation Manual (Cat. No. W504) for information on
the setting items for CamProperty (Cam Properties) and CamNodes.
• Refer to the Sysmac Studio Version 1 Operation Manual (Cat. No. W504) for information on
the relationship between curve shapes, connecting velocities, and connecting accelerations.
Instruction Details
This section describes the instruction in detail.
Start node
CamNodes[0] Cam nodes
CamNodes[1]
This cam node structure is used for the CamNodes in-out variable that is specified for this instruction.
An element in the cam node array variable is called a node point. The number of elements in the array
variable must be equal to or greater than the number of node points that is set.
The node point that is the start point of the cam profile curve (phase = 0, displacement = 0) is called
the start node. Except for the start node, the node points in the array variable are in the order of the
element numbers.
If you specify a positive number that is 0.001 or higher for Phase (Master Axis Phase), the node is
valid. If you specify 0, that node and all following nodes are invalid. However, if you set Phase (Master
Axis Phase) for element number 0 to 0, an error occurs.
The following example shows five valid nodes and 10 elements in an array variable.
Specify the values of Phase (Master Axis Phase) so that they increase in the order of the array ele-
ment numbers. (The previous value must be less than the current value.)
MC_GenerateCamTable
The following table shows the members of the cam node structure.
Function
3: _mcModifiedConstantVel 1: Straight line
4: _mcModifiedTrapezoid 2: Parabolic
5: _mcModifiedSine 3: Modified constant velocity
6: _mcCycloidal 4: Modified trapezoid
7: _mcTrapecloid 5: Modified sine
8: _mcReverseTrapecloid 6: Cycloidal
9: _mcSimpleHarmonic 7: Trapecloid
10: _mcDoubleHarmonic 8: Reverse trapecloid
11: _mcReverseDoubleHar- 9: Simple harmonic
monic 10: Double harmonic
12: _mcNC2Curve 11: Reverse double harmonic
13: _mcPolynomic3 12: NC2 curve
14: _mcPolynomic5 13: Polynomic 3
14: Polynomic 5
ConnectingVe- Connecting BOOL TRUE or FALSE Set to TRUE to enable the specified con-
lEnable Velocity Ena- necting velocity when the specified curve
ble shape is polynomic 3 or polynomic 5.
Set to FALSE to disable the connecting
velocity.
ConnectingVel Connecting REAL Negative number*1, positive If the specified curve shape is polynomic
Velocity 3 or polynomic 5, you can specify the ve-
number*1, or 0
locity of the connecting section to the next
curve.
Use this setting for smooth connections
between curves.
The unit is command units/s.
Phase Distance
Element number in Curve PhasePitch
(Master Axis (Slave Axis Displace-
CamNodes array variable (Curve Shape) (Phase Pitch)
Phase) ment)
0 180.000 180.000 _mcStraightLine 0.100
1 360.000 0.000 _mcStraightLine 0.100
2 0.00 --- --- ---
3 --- --- --- ---
This example uses a cam data variable with 4,000 elements that was created in advance with the
Cam Editor of the Sysmac Studio. All phases and displacements are set to “undefined.”
The cam data variable for the cam table is as shown in the following table before the instruction is exe-
cuted.
Next, we describe the sequence of changes that occur in the cam data variable as the instruction is
executed. The locations that changed are showed by filled backgrounds.
When the MC_GenerateCamTable instruction is executed, 0 is written to the phase and displacement
MC_GenerateCamTable
of element 0 of the cam data variable.
Function
3599 (Undefined) (Undefined)
3600 (Undefined) (Undefined)
3601 (Undefined) (Undefined)
...
3999 (Undefined) (Undefined)
Next, the number of cam data and the phase and displacement for each cam data are calculated from
the start node to the node point according to the specified values for element 0 in CamNodes. The
number of cam data calculates as 1,800, so the phases and displacements of element 1 to 1800 are
written to the cam data variable.
In the same way, the number of cam data and the phase and displacement for each cam data are cal-
culated between node points according to the specified values for element 1 in CamNodes. The
number of cam data calculates as 1,800, so the phases and displacements of element 1801 to 3600
are written to the cam data variable.
Next, calculations are ended because element 2 in CamNodes has an invalid node. The cam data in
elements 3601 and higher in the cam data variable are invalid, so 0 is written as the phases.
However, if there were only 3601 elements in the cam data variable that was created with the Cam
Editor of the Sysmac Studio, no invalid cam data would exist, so 0 would not be written as the value of
the phase of element 3601.
The number of the last element in the cam data variable that was written is output to the
EndPointIndex output variable of the instruction as the end point index. In this example, 3600 would
be output.
MC_GenerateCamTable
nomic 3 or polynomic 5. If this error occurs, refer to the following calculation methods for displace-
ments for polynomic 3 or polynomic 5 and correct the values in the CamProperty (Cam Properties)
and CamNodes in-out variables.
Function
Also, Phase of element m is set to the final value Pfinal of the master axis phase. In the same way,
Distance for element m is set to the final value dfinal of the slave axis displacement.
d(n) is calculated as shown below when d(n) is Distance (Slave Axis Displacement) of the nth cam
data from dinit.
When 0 ≤ n < N,
3 pitch i
d(n) = dinit + (dfinal - dinit) · Ʃ ai · ( (P - P )
· n)
i=f final init
When n = N,
d(n) = dfinal
Pfinal - Pphase
N=
pitch
Pfinal - Pphase
N = floor ( )+ 1
pitch
Vinit · T
a1 =
(dfinal - dinit)
T
a2 = 3 - (2 · Vinit + Vfin) ·
(dfinal - dinit)
T
a3 = (Vinit + Vfin) · -2
(dfinal - dinit)
(Pfinal - Pinit)
T = CycleTime ·
Pmax
However, when m = 0,
When m ≥ 1 and Curve (Curve Shape) of element m-1 in CamNodes is a straight line (_mcStraight-
Line),
When m ≥ 1 and Curve (Curve Shape) of element m-1 in CamNodes is polynomic 3 or polynomic 5,
• ConnectingVelEnable (Connecting Velocity Enable) of element m-1 in CamNodes is TRUE
Vinit = 0
Vinit = 0
• Curve (Curve Shape) of element m+1 in CamNodes is not a straight line (_mcStraightLine)
Vfin = 0
When 0 ≤ n < N,
MC_GenerateCamTable
5 pitch i
d(n) = dinit + (dfinal - dinit) · Ʃ ai · ( (P - Pinit)
· n)
i=f final
When n = N,
d(n) = dfinal
Function
N=
pitch
Pfinal - Pphase
N = floor ( )+ 1
pitch
Vinit · T
a1 =
(dfinal - dinit)
Ainit · T2
a2 =
2 · (dfinal - dinit)
T2 T
a3 =
-( (3Ainit - Afin) ·
(dfinal - dinit)
+ (8Vfin + 12Vinit) ·
(dfinal - dinit)
- 20
)
2
T2 T
(
a4 = (1.5Ainit - Afin) ·
(dfinal - dinit)
+ (7Vfin + 8Vinit) ·
(dfinal - dinit)
- 15 )
T2 T
a5 =
- ( (A init - Afin) ·
(dfinal - dinit)
+ (6Vfin + 6Vinit) ·
(dfinal - dinit)
- 12
)
2
(Pfinal - Pinit)
T = CycleTime ·
Pmax
However, when m = 0,
Ainit = 0
When m ≥ 1 and Curve (Curve Shape) of element m-1 in CamNodes is not polynomic 5,
Ainit = 0
Afin = 0
Refer to Displacement Calculation Method for Polynomic 3 on page 5 - 29 for information on Vinit (ini-
tial velocity of cam profile curve [command units/s]) and Vfin (final velocity of cam curve [command
units/s]).
Timing Charts
Busy (Executing) changes to TRUE at the same time as Execute changes to TRUE. _MC_COM.Sta-
tus.GenerateCamBusy (Cam Table Creation Busy) changes to TRUE in the next period.
Execute
Done
Busy
CommandAborted
Error
ErrorID 16#0000
_MC_COM.Status.GenerateCamBusy
MC_GenerateCamTable
Re-execution of Motion Control Instructions
This instruction cannot be re-executed.
A Motion Control Instruction Re-execution Disabled error (error code: 543B hex) occurs if re-execution
is attempted. However, creation of the cam table will continue.
5
Multi-execution of Motion Control Instructions
Function
Execution during Execution of Other Instructions
Multi-execution of instructions cannot be used for this instruction if the cam table specified by
CamTable is used by another instruction, such as MC_CamIn, MC_SaveCamTable, or MC_SetCam-
TableProperty.
Errors
If an error occurs during instruction execution, Error will change to TRUE.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
Done
Busy
CommandAborted
Error
Even if an error occurs during execution of the instruction, the cam data variable that is specified for
CamTable retains the values from before execution of the instruction.
However, the values in the cam data variable are not retained in the following cases.
• When the parameter specified for CamNodes is changed after Execute changes to TRUE.
• The value of a cam data Distance (Slave Axis Displacement) calculated by this instruction exceeds
the valid range of REAL data.
If the values in the cam data variable are not retained, the cam table will be in an illegal state. An error
will occur if you specify a cam table that is an illegal state for the MC_CamIn, MC_SaveCamTable, or
MC_SetCamTableProperty instruction.
To recover a cam table from an illegal state, reset the error that occurred for the instruction and then
perform one of the following actions.
• Execute this instruction for the cam table that is in an illegal state again and complete creation of the
cam table.
• Download the cam table from the Sysmac Studio.
• Cycle the power supply to the Controller.
An error code is not output to ErrorID (Error Code) if an error occurs for this instruction in PROGRAM
mode or during an MC Test Run. If that occurs, check the cause of the error in the event log or in the
_MC_COM.MFaultLvl.Code (MC Common Minor Fault Code) system-defined variables for motion con-
trol.
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
Sample Programming
This sample programming writes data to a cam data variable in the cam table that was created on
Cam Editor of the Sysmac Studio.
Parameter Settings
The minimum settings required for this sample programming are given below.
Axis Parameters
Axis Type
Count Modes
MC_GenerateCamTable
Axis Count mode
Axis 1 Rotary Mode
Axis 2 Rotary Mode
Ring Counter
Modulo Modulo
Axis maximum minimum
position position 5
Axis 1 360 0
Axis 2 360 0
Sample Programming
Unit of Display
Cam Properties
The initial values of the cam property variable are given in the following table.
Cam Nodes
The initial values of the cam node variable are given in the following table.
Connec-
Distance Connecting- Connec- tingAc-
Ele- Phase Connectin- Phase-
(Slave VelEnable tingVel cEnable
me (Master Curve gAcc Pitch
Axis Dis- (Connecting (Connect- (Connect-
nt Axis (Curve Shape) (Connecting (Phase
place- Velocity Ena- ing Veloc- ing Accel-
No. Phase) Acceleration) Pitch)
ment) ble) ity) eration
Enable)
0 180.000 -100.000 _mcModifiedSine FALSE 0.000 FALSE 0.000 0.010
1 360.000 0.000 _mcPolynomic5 FALSE 0.000 FALSE 0.000 0.010
2 0.0 0.0 _mcConstantLine FALSE 0.000 FALSE 0.0 0.0
3 0.0 0.0 _mcConstantLine FALSE 0.000 FALSE 0.0 0.0
The sample programming changes the curve shape for element 0 and adds a node point to element 1.
Connec-
Distance Connecting- Connec- tingAc-
Ele- Phase Connectin- Phase-
(Slave VelEnable tingVel cEnable
me (Master Curve gAcc Pitch
Axis Dis- (Connecting (Connect- (Connect-
nt Axis (Curve Shape) (Connecting (Phase
place- Velocity Ena- ing Veloc- ing Accel-
No. Phase) Acceleration) Pitch)
ment) ble) ity) eration
Enable)
0 180.000 -100.000 _mcPolynomic5 FALSE 0.000 FALSE 0.000 0.010
1 200.000 -102.000 _mcStraight- FALSE 0.000 FALSE 0.000 0.010
Line
2 360.000 0.000 _mcPolynomic5 FALSE 0.000 FALSE 0.000 0.010
3 0.0 0.0 _mcConstantLine FALSE 0.000 FALSE 0.0 0.0
Ladder Diagram
Main Variables
Name Data type Default Comment
MC_Axis000 _sAXIS_REF --- Axis Variable for the master axis,
axis 1.
MC_Axis001 _sAXIS_REF --- Axis Variable for the slave axis,
axis 2.
CamProfile0 ARRAY[0..36000] OF --- This is the cam data variable.
_sMC_CAM_REF The cam data variable is created
in advance on the Cam Editor of
the Sysmac Studio.
Pwr1_Status BOOL --- This variable is assigned to the
Status output variable from the
PWR1 instance of the MC_Power
instruction. This variable changes
to TRUE when the Servo is
turned ON.
MC_GenerateCamTable
are written when this variable is
TRUE.
CamProperty0 _sMC_CAM_PROP- --- This is the cam property variable.
ERTY
CamNode0 ARRAY[0..3] OF --- This is the cam node variable.
_sMC_CAM_NODE
_MC_COM.Status.GenerateCamBusy BOOL --- This is a system-defined variable
for motion control. It is TRUE
while the cam table creation is in 5
progress.
Sample Programming
Timing Charts
WriteCamDefinition
WriteCamDefinitionDone
_MC_COM.Status.GenerateCamBusy
Gene_D
Gene_EPI 0 36000
Gene_Bsy
Gene_Ca
Gene_Err
CamIn_InCam
CamIn_Bsy
CamIn_Act
CamIn_Ca
CamIn_Err
Sample Programming
If StartPg is TRUE, check that the Servo Drives for each axis are ready.
StartPg MC_Axis000.DrvStatus.Ready Lock1
MC_Axis001.DrvStatus.Ready Lock2
If the Servo Drives are ready, the Servos are turned ON for each axis.
PWR1
MC_Power
Lock1 MC_Axis000 Axis Axis Pwr1_Status
Enable Status
Busy Pwr1_Bsy
Error Pwr1_Err
ErrorID Pwr1_ErrID
PWR2
MC_Power
Lock2 MC_Axis001 Axis Axis Pwr2_Status
Enable Status
Busy Pwr2_Bsy
Error Pwr2_Err
ErrorID Pwr2_ErrID
If a minor fault level error occurs in the MC Common Error Status variable or for any of the axes, the error
handler for the device (FaultHandler) is executed.
The FaultHandler is programmed according to the device.
MC_Axis000.MFaultLvl.Active FaultHandler
EN FaultHandler
MC_GenerateCamTable
MC_Axis001.MFaultLvl.Active
_MC_COM.MFaultLvl.Active
If the Servo is ON for the master axis (axis 1) and home is not defined, the Home instruction is executed to
define home.
HM1
Sample Programming
CommandAborted Hm1_Ca
Error Hm1_Err
ErrorID Hm1_ErrID
If the Servo is ON for the slave axis (axis 2) and home is not defined, the Home instruction is executed to
define home.
HM2
MC_Home
Pwr2_Status MC_Axis001.Details.Homed MC_Axis001 Axis Axis Hm2_D
Execute Done
Busy Hm2_Bsy
CommandAborted Hm2_Ca
Error Hm2_Err
ErrorID Hm2_ErrID
After homing is completed for the master axis (axis 1), the MC_MoveVelocity (Velocity Control) instruction is
executed.
VEL
MC_MoveVelocity
Hm1_D MC_Axis000 Axis Axis Vel_InVel
Execute InVelocity
LREAL#90.0 Velocity Busy Vel_Bsy
LREAL#90.0 Acceleration Active Vel_Act
LREAL#90.0 Deceleration CommandAborted Vel_Ca
LREAL#0.0 Jerk Error Vel_Err
_eMC_DIRECTION#_mcPositiveDirection Direction ErrorID Vel_ErrID
Continuous
BufferMode
If WriteCamDefinition is TRUE and the MC_GenerateCamTable (Generate Cam Table) instruction is not yet
executed, the cam properties and cam nodes are written.
After the data is written, WriteCamDefinitionDone is changed to TRUE.
WriteCamDefinition
If cam table creation processing is completed and the master axis (axis 1) has reached the target velocity,
the MC_CamIn (Start Cam Operation) instruction is executed.
CAM_IN
MC_CamIn
MC_Axis000 Master Master
_MC_COM.Status.GenerateCamBusy MC_Axis001 Slave Slave
Gene_D Vel_InVel CamProfile0 CamTable CamTable CamIn_InCam
Execute InCam
_MC_COM BOOL#TRUE Periodic InSync Camin_InSync
_eMC_START_MODE#_mcRelativePosition StartMode EndOfProfile Camin_Eop
LREAL#0.0 StartPosition Index Camin_Index
LREAL#0.0 MasterStartDistance Busy Camin_Bsy
LREAL#1.0 MasterScaling Active Camin_Act
LREAL#1.0 SlaveScaling CommandAborted Camin_Ca
LREAL#0.0 MasterOffset Error Camin_Err
LREAL#0.0 SlaveOffset ErrorID Camin_ErrID
_eMC_REFERENCE_TYPE#_mcCommand ReferenceType
_eMC_DIRECTION#_mcNoDirection Direction
CamTransition
BufferMode
Contents of Inline ST
CamProperty0.CycleTime := REAL#0.800;
CamNode0[0].Curve := _eMC_CAM_CURVE#_mcPolynomic5;
CamNode0[0].ConnectingVelEnable := FALSE;
CamNode0[0].ConnectingVel := REAL#0.000;
CamNode0[0].ConnectingAccEnable := FALSE;
CamNode0[0].ConnectingAcc := REAL#0.000;
CamNode0[1].Phase := REAL#200.000;
CamNode0[1].Distance := REAL#-102.000;
CamNode0[1].Curve := _eMC_CAM_CURVE#_mcStraightLine;
CamNode0[1].ConnectingVelEnable := FALSE;
CamNode0[1].ConnectingVel := REAL#0.000;
CamNode0[1].ConnectingAccEnable := FALSE;
CamNode0[1].ConnectingAcc := REAL#0.000;
CamNode0[2].Phase := REAL#360.000;
CamNode0[2].Distance := REAL#0.000;
CamNode0[2].Curve := _eMC_CAM_CURVE#_mcPolynomic5;
CamNode0[2].ConnectingVelEnable := FALSE;
CamNode0[2].ConnectingVel := REAL#0.000;
CamNode0[2].ConnectingAccEnable := FALSE;
CamNode0[2].ConnectingAcc := REAL#0.000;
MC_GenerateCamTable
CamNode0[2].PhasePitch := REAL#0.010;
CamNode0[3].Phase := REAL#0.000;
WriteCamDefinitionDone := TRUE;
Main Variables 5
Name Data type Default Comment
Sample Programming
MC_Axis000 _sAXIS_REF --- Axis Variable for the master axis,
axis 1.
MC_Axis001 _sAXIS_REF --- Axis Variable for the slave axis,
axis 2.
CamProfile0 ARRAY[0..36000] OF --- This is the cam data variable.
_sMC_CAM_REF The cam profile curve is created
in advance on the Cam Editor of
the Sysmac Studio.
Pwr1_Status BOOL --- This variable is assigned to the
Status output variable from the
PWR1 instance of the MC_Power
instruction. This variable changes
to TRUE when the Servo is
turned ON.
Pwr2_Status BOOL --- This variable is assigned to the
Status output variable from the
PWR2 instance of the MC_Power
instruction. This variable changes
to TRUE when the Servo is
turned ON.
StartPg BOOL --- The Servo is turned ON if this
variable is TRUE and EtherCAT
process data communications are
established.
WriteCamDefinition BOOL --- The values in the cam property
variable and cam node variable
are written when this variable is
TRUE.
Timing Charts
WriteCamDefinition
WriteCamDefinitionDone
_MC_COM.Status.GenerateCamBusy
Gene_Exe
Gene_D
Gene_EPI 0 36000
Gene_Bsy
Gene_Ca
Gene_Err
CamIn_Exe
CamIn_InCam
CamIn_Bsy
CamIn_Act
CamIn_Ca
CamIn_Err
Sample Programming
//If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 1 is turned O
N.
//If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis000.DrvStatus.Ready=TRUE) THEN
Pwr1_En:=TRUE;
ELSE
Pwr1_En:=FALSE;
END_IF;
//If StartPg is TRUE and the Servo Drive is ready, the Servo for axis 2 is turned O
N.
//If the Servo Drive is not ready, the Servo is turned OFF.
IF (StartPg=TRUE)
AND (MC_Axis001.DrvStatus.Ready=TRUE) THEN
Pwr2_En:=TRUE;
ELSE
Pwr2_En:=FALSE;
MC_GenerateCamTable
END_IF;
//If a minor fault level error occurs in the MC Common Error Status variable or for
any of the axes, the error handler for the device (FaultHandler) is executed.
//The FaultHandler is programmed according to the device.
IF (MC_Axis000.MFaultLvl.Active=TRUE)
OR (MC_Axis001.MFaultLvl.Active=TRUE)
OR (_MC_COM.MFaultLvl.Active=TRUE) THEN 5
FaultHandler();
END_IF;
Sample Programming
//If the Servo is ON for axis 1 and home is not defined, the Home instruction is ex
ecuted.
IF (Pwr1_Status=TRUE) AND (MC_Axis000.Details.Homed=FALSE) THEN
Hm1_Ex:=TRUE;
END_IF;
//If the Servo is ON for axis 2 and home is not defined, the Home instruction is ex
ecuted.
IF (Pwr2_Status=TRUE) AND (MC_Axis001.Details.Homed=FALSE) THEN
Hm2_Ex:=TRUE;
END_IF;
//If WriteCamDefinitionDone is TRUE and cam table creation processing is not in pro
gress, the MC_GenerateCamTable (Generate Cam Table) instruction is executed.
IF(WriteCamDefinitionDone = TRUE)
AND(_MC_COM.Status.GenerateCamBusy = FALSE) THEN
Gene_Exe := TRUE;
END_IF;
//If cam table creation processing is completed and the master axis (axis 1) has re
ached the target velocity, the MC_CamIn (Start Cam Operation) instruction is execut
ed.
IF (Gene_D=TRUE)
AND(_MC_COM.Status.GenerateCamBusy = FALSE)
AND (Vel_InVel=TRUE) THEN
Camin_Ex := TRUE;
END_IF;
// MC_GenerateCamTable
GENE_CAM(
CamTable := CamProfile0,
CamProperty := CamProperty0,
CamNodes := CamNode0,
execute := Gene_Exe,
Done => Gene_D,
EndPointIndex => Gene_EPI,
Busy => Gene_Bsy,
CommandAborted => Gene_CA,
Error => Gene_Err,
ErrorID => Gene_ErrID,
ErrorParameterCode => Gene_ErrPC,
ErrorNodePointIndex => Gene_ErrNPI
);
MC_GenerateCamTable
// MC_Power for master axis (axis 1)
PWR1(
Axis := MC_Axis000,
Enable := Pwr1_En,
Status => Pwr1_Status,
Busy => Pwr1_Bsy,
Error => Pwr1_Err, 5
ErrorID => Pwr1_ErrID
);
Sample Programming
// MC_Power for slave axis (axis 2)
PWR2(
Axis := MC_Axis001,
Enable := Pwr2_En,
Status => Pwr2_Status,
Busy => Pwr2_Bsy,
Error => Pwr2_Err,
ErrorID => Pwr2_ErrID
);
Execute := Hm2_Ex,
Done => Hm2_D,
Busy => Hm2_Bsy,
CommandAborted => Hm2_Ca,
Error => Hm2_Err,
ErrorID => Hm2_ErrID
);
//MC_MoveVelocity
VEL(
Axis := MC_Axis000,
Execute := Vel_Ex,
Velocity := Vel_Vel,
Acceleration := Vel_Acc,
Deceleration := Vel_Dec,
Direction := Vel_Dir,
InVelocity => Vel_InVel,
Busy => Vel_Bsy,
Active => Vel_Act,
CommandAborted => Vel_Ca,
Error => Vel_Err,
ErrorID => Vel_ErrID
);
//MC_CamIn
CAM_IN(
Master := MC_Axis000,
Slave := MC_Axis001,
CamTable := CamProfile0,
Execute := Camin_Ex,
Periodic := Camin_P,
StartMode := Camin_Sm,
StartPosition := Camin_Sp,
MasterStartDistance := Camin_Msd,
MasterScaling := Camin_Ms,
SlaveScaling := Camin_Ss,
MasterOffset := Camin_Mo,
SlaveOffset := Camin_So,
ReferenceType := Camin_Rt,
Direction := Camin_Dir,
InCam => Camin_InCam,
InSync => Camin_InSync,
EndOfProfile => Camin_Eop,
Index => Camin_Index,
Busy => Camin_Bsy,
Active => Camin_Act,
CommandAborted => Camin_Ca,
MC_GenerateCamTable
5
Sample Programming
MC_WriteAxisParameter
The MC_WriteAxisParameter instruction writes axis parameters in the MC Function Module.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_WriteAxis- Write Axis FB MC_WriteAxisParameter_instance MC_WriteAxisParameter_instance
Parameter Parameters MC_WriteAxisParameter (
Axis Axis Axis :=parameter,
AxisParameter AxisParameter AxisParameter :=parameter,
Execute Done Execute :=parameter,
Busy
Done =>parameter,
CommandAborted
Busy =>parameter,
Error
ErrorID CommandAborted =>parameter,
ErrorParameterCode Error =>parameter,
ErrorID =>parameter,
ErrorParameterCode
=>parameter,
);
Version Information
A CPU Unit with unit version 1.08 or later and Sysmac Studio version 1.09 or higher are re-
quired to use this instruction.
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Execute Execute BOOL TRUE or FALSE The instruction is executed when the value
FALSE of this variable changes to TRUE.
Output Variables
Data
Name Meaning Valid range Description
type
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
Data
Name Meaning Valid range Description
type
ErrorParameterCode Parameter WORD *1 Contains the attached information for some error co-
Detail Code des. If the information is saved, the detail code of the
parameter for which the error occurred is output.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
MC_WriteAxisParameter
• After one period when Execute is FALSE.
Busy When Execute changes to TRUE. • When Done changes to TRUE.
• When Error changes to TRUE.
• When CommandAborted changes to TRUE.
CommandAborted When this instruction is canceled due to an error. • When Execute is TRUE and changes to
FALSE.
• After one period when Execute is FALSE.
Error When there is an error in the execution condi- When the error is cleared.
tions or input parameters for the instruction. 5
Function
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specify the axis for which to write the parameters.
*1
Function
• When Execute changes to TRUE, the MC_WriteAxisParameter instruction writes the values speci-
fied in AxisParameter (Axis Parameters) to the axis parameters for the axis specified with Axis.
• You can write data only when the specified axis is an unused axis. If the instruction is executed for
any other condition, an execution error occurs and the axis parameters are not written. The values
before the instruction was executed will be held.
• If you execute this instruction after you change axis usage with the MC_ChangeAxisUse instruction,
make sure that the Done output variable from the MC_ChangeAxisUse instruction is TRUE before
you execute this instruction.
• If there is an illegal value in AxisParameter (Axis Parameters) or if there is an inconsistency within
the axis parameters, an execution error occurs and the axis parameters are not written. The values
before the instruction was executed will be held.
For information on the setting ranges of the axis parameters or the consistency check within the axis
parameters, refer to the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507).
• The values that are written by this instruction are not saved in non-volatile memory in the
CPU Unit. Any values that are written are lost when the power supply to the Controller is
turned OFF, when settings are downloaded, or when the MC Function Module is restarted.
They return to the values that were set from the Sysmac Studio.
• You cannot upload the values that are written with this instruction to the Sysmac Studio.
• You must set all of the axis parameters for the axis that you are writing, not just the axis pa-
rameters that you want to change with this instruction. Refer to Axis Parameters That Are
Written and Read on page 5 - 59 for the applicable parameters. For axis parameters that do
not need to be changed, set the same values as those that were set from the Sysmac Studio
or the values that are read by the MC_ReadAxisParameter (Read Axis Parameters) instruc-
tion.
• An illustration of combining this instruction with the MC_ReadAxisParameter (Read Axis Pa-
MC_WriteAxisParameter
rameters) instruction is provided below.
axisParam.xxx.yyy :=(Write_value_1);
MC_ReadAxisParameter axisParam.xxx.zzz :=(Write_value_2);
Overwrite the values of axis
Axis parameters that you need to
change in the axis parameters
AxisParamter
that were read.
Execute Done
MC_WriteAxisParameter
Function
Axis
AxisParamter
Execute Done
Detect when Done from MC_ReadAxisParameter
changes to TRUE and then execute
MC_WriteAxisParameter.
• An example that uses this instruction with the MC_ChangeAxisUse (Change Axis Use) in-
struction is given. Execute this instruction only after confirming that Done from the
MC_ChangeAxisUse (Change Axis Use) instruction changes to TRUE.
MC_WriteAxisParameter
MC_ChangeAxisUse
Axis
Axis AxisParameter
Execute Done Execute Done
• If you use this instruction to change the Unit Conversion Settings or Position Count
Settings for an axis whose encoder type is set to Absolute encoder (ABS), the relationship
between the physical position of the machine and the axis position in the MC Function Mod-
ule will change. In this case, use the MC_ChangeAxisUse (Change Axis Use) instruction to
change the axis to an used axis, and then execute the Home instruction to define the home
again.
• If an Absolute Encoder Current Position Calculation Failed (error code: 6458 hex) occurred
after the axis was changed to an used axis, clear the axis error and then execute the Home
instruction to define the home again.
• Do not set the reserved parameters in the axis parameters to any value other than 0.
Instruction Details
This section describes the instruction in detail.
_sAXIS_PARAM
The _sAXIS_PARAM data type is used to specify the values of axis parameter. The axis parameters
are configured in members with a structure data type for each type of axis parameters.
This data type is used for the variable that is specified for the AxisParameter (Axis Parameters) in-out
variable.
Each member is described in the following table.
Parameter
Member Data type Description
name
UnitConversion Unit Conver- _sAXIS_UNIT_CONVERSION_SETTINGS Specify the values to write for the
sion Settings member variables for the unit conver-
sion settings.
Operation Operation Set- _sAXIS_OPERATION_SETTINGS Specify the values to write for the
tings member variables for the operation
settings.
OtherOperation Other Opera- _sAXIS_OTHER_OPERATION_SETTINGS Specify the values to write for the
tion Settings member variables for the other opera-
tion settings.
Limit Limit Settings _sAXIS_LIMIT_SETTINGS Specify the values to write for the
member variables for the limit settings.
PosCount Position Count _sAXIS_POSITION_COUNT_SETTINGS Specify the values to write for the
Settings member variables for the position
count settings.
Homing Homing Set- _sAXIS_HOMING_SETTINGS Specify the values to write for the
tings member variables for the homing set-
tings.
(Reserved) (Reserved ARRAY[0..255] OF BYTE ---
area)
Parameter
Member Data type Valid range Description
name
UnitDisplay Unit of Display _eMC_UNI 0: _mcPls Sets the unit for command positions.
TS 1: _mcMm 0: pulse
2: _mcUm 1: mm
3: _mcNm 2: μm
4: _mcDeg 3: nm
5: _mcInch 4: degree
5: inch
Parameter
Member Data type Valid range Description
name
CmdPlsCountPer- Command UDINT 1 to 4,294,967,295 Set the number of pulses per motor ro-
MotorRotation Pulse Count tation for command positions according
Per Motor Ro- to the encoder resolution.
tation The command value is converted to the
equivalent number of pulses based on
the electronic gear ratio.
WorkTravelDis- Work Travel LREAL 0.000000001 to Set the workpiece travel distance per
tancePerMotor- Distance Per 4,294,967,295 motor rotation for command positions.
Rotation Motor Rotation
ReducerUse *1 Reducer Use BOOL TRUE or FALSE Specify whether to use the reducer set-
ting or not.
MC_WriteAxisParameter
TRUE: Use.
FALSE: Do not use.
WorkTravelDis- Work Travel LREAL Positive long reals Set the work travel distance per rota-
tancePerWorkSi- Distance Per tion.
deRotation *1 *2 *3 Rotation
WorkSideGear- Work Gear Ra- UDINT 1 to 4,294,967,295 Set the gear ratio for the workpiece.
Ratio *1 *2 tio
MotorSideGear- Motor Gear UDINT 1 to 4,294,967,295 Set the gear ratio of the motor.
Ratio *1 *2 Ratio 5
(Reserved) (Reserved ARRAY --- ---
area) [0..7] OF
Function
BYTE *4
*1. A CPU Unit with unit version 1.11 or later and Sysmac Studio version 1.15 or higher are required to use this parameter.
*2. This parameter is enabled when you set Reducer Use to TRUE.
*3. The setting is possible only when the Count Mode is Linear Mode. When the Count Mode is Rotary Mode, the param-
eter value is calculated from the modulo maximum position setting value and modulo minimum position setting value.
*4. For a CPU Unit with unit version 1.10 earlier, the data type is ARRAY [0..31] OF BYTE.
Parameter
Member Data type Valid range Description
name
MaxVel Maximum Ve- LREAL Positive long reals Set the maximum velocity for each
locity axis.
Do not set a value that exceeds the
maximum speed of the motor that
you are using.
StartVel Start Velocity LREAL 0.0 to Upper limit of positive Set the start velocity for the axis.
long reals Set a value that does not exceed the
maximum velocity.
MaxJogVel Maximum Jog LREAL Positive long reals Set the maximum jog velocity for the
Velocity axis.
Set a value that does not exceed the
maximum velocity.
Parameter
Member Data type Valid range Description
name
MaxAcc Maximum Ac- LREAL Non-negative long reals Set the maximum acceleration rate
celeration for an axis operation command.
There will be no limit to the accelera-
tion rate if 0 is set.
MaxDec Maximum De- LREAL Non-negative long reals Set the maximum deceleration rate
celeration for an axis operation command.
There will be no limit to the decelera-
tion rate if 0 is set.
AccDecOver Acceleration/ _eMC_AC- 0: _mcAccDecOverBuffer Set the operation for when the maxi-
Deceleration CDECOV- 1: _mcAccDecOverRapid mum acceleration/deceleration rate
Over ER 2: _mcAccDecOverError- would be exceeded after excessive
Stop acceleration/deceleration during ac-
celeration/deceleration control of the
axis because stopping at the target
position is given priority.
0: Use rapid acceleration/decelera-
tion. (Blending is changed to Buf-
fered.)*1
1: Use rapid acceleration/decelera-
tion.
2: Minor fault stop*2
ReverseMode Operation Se- _eMC_RE- 0: _mcReverseModeDece- Specify the operation for reversing
lection at Re- VERSE_M lerationStop rotation for multi-execution of instruc-
versing ODE 1: _mcReverseModeImme- tions, re-execution of instructions,
diateStop and interrupt feeding.
0: Deceleration stop
1: Immediate stop
VelWarningVal Velocity Warn- UINT 0 or 1 to 100 Set the percentage of the maximum
ing Value velocity at which to output a velocity
warning for the axis.
No velocity warning is output if 0 is
set.
AccWarningVal Acceleration UINT 0 or 1 to 100 Set the percentage of the maximum
Warning Value acceleration rate at which to output
an acceleration warning for the axis.
No acceleration warning is output if 0
is set.
DecWarningVal Deceleration UINT 0 or 1 to 100 Set the percentage of the maximum
Warning Value deceleration rate at which to output a
deceleration warning for the axis.
No deceleration warning is output if 0
is set.
PosiTrqWarningVal Positive Torque UINT 0 or 1 to 1,000 Set the torque command value at
*3 Warning Value which to output a positive torque
warning.
No positive torque warning is output if
0 is set.
NegaTrqWarningV- Negative Tor- UINT 0 or 1 to 1,000 Set the torque command value at
al *3 que Warning which to output a negative torque
Value warning.
No negative torque warning is output
if 0 is set.
Parameter
Member Data type Valid range Description
name
InPosRange In-position LREAL Non-negative long reals Set the in-position width.
Range
InPosCheckTime In-position UINT 0 or 1 to 10,000 Set the in-position check time in milli-
Check Time seconds.
Set 0 to check for the end of position-
ing only when you define the home
position during homing. No check is
made for the end of positioning at
other times.
ActVelFilterTime- Actual Velocity UINT 0 or 1 to 100 Set the time period to calculate the
Constant Filter Time Con- average travel of the actual velocity
MC_WriteAxisParameter
stant in milliseconds.
The average travel is not calculated if
0 is set.
ZeroPosRange Zero Position LREAL Non-negative long reals Set the home position detection
Range width.
(Reserved) (Reserved AR- --- ---
area) RAY[0..31]
OF BYTE
*1. For a CPU Unit with unit version 1.10 or later, Blending is not changed to Buffered. 5
For details, refer to the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507).
*2. For a CPU Unit with unit version 1.10 or later, the axis does not stop with an error and operation continues if blending
Function
operation is used.
For details, refer to the NJ/NX-series CPU Unit Motion Control User’s Manual (Cat. No. W507).
*3. This parameter is enabled only for torque control.
Parameter
Member Data type Valid range Description
name
ImmediateStopIn- Immediate Stop _eMC_ST 1: _mcImmediateStop Set the stopping method in the MC
putStopMode Input Stop OP_MOD 2: _mcImmediateStopFERe- Function Module when the immediate
Method E set stop input is enabled.
3: _mcFreeRunStop 1: Immediate stop
2: Immediate stop and error reset
3: Immediate stop and Servo OFF
LimitInputStop- Limit Input Stop _eMC_ST 0: _mcDeccelerationStop Set the stopping method in the MC
Mode Method OP_MOD 1: _mcImmediateStop Function Module when the positive limit
E 2: _mcImmediateStopFERe- input or negative limit input is enabled.
set 0: Deceleration stop
3: _mcFreeRunStop 1: Immediate stop
2: Immediate stop and error reset
3: Immediate stop and Servo OFF
DriveErrorReset- Drive Error Re- UINT 1 to 1,000 Set the monitor time for a drive error re-
MonitoringTime set Monitoring set. (Unit: ms)
Time After the monitor time has elapsed, re-
set processing will end even if the drive
error is not yet reset.
Parameter
Member Data type Valid range Description
name
MaxPosiTrqLimit Maximum Posi- LREAL 0.0 to 1,000.0 Set the maximum value of the positive
tive Torque Limit torque limit.
MaxNegaTrqLimit Maximum Neg- LREAL 0.0 to 1,000.0 Set the maximum value of the negative
ative Torque torque limit.
Limit
ImmediateStopIn- Immediate Stop BOOL TRUE or FALSE Set whether to reverse the logic of the
putLogicInversion Input Logic In- immediate stop input signal.
version TRUE: Reverse turn.
FALSE: No reverse turn.
PosiLimitInputLo- Positive Limit BOOL TRUE or FALSE Set whether to reverse the logic of the
gicInversion Input Logic In- positive limit input signal.
version TRUE: Reverse turn.
FALSE: No reverse turn.
NegaLimitInput- Negative Limit BOOL TRUE or FALSE Set whether to reverse the logic of the
LogicInversion Input Logic In- negative limit input signal.
version TRUE: Reverse turn.
FALSE: No reverse turn.
HomeProximityIn- Home Proximity BOOL TRUE or FALSE Set whether to reverse the logic of the
putLogicInversion Input Logic In- home proximity input signal.
version TRUE: Reverse turn.
FALSE: No reverse turn.
(Reserved) (Reserved area) AR- --- ---
RAY[0..31
] OF
BYTE
Parameter
Member Data type Valid range Description
name
SwLimitMode Software Limits _eMC_SW 0: _mcNonSwLmt Select the software limit function.
LMT_MOD 1: _mcCmdDeceleration- 0: Disabled
E Stop 1: Deceleration stop for command posi-
2: _mcCmdImmediateStop tion
3: _mcActDecelerationStop 2: Immediate stop for command posi-
4: _mcActImmediateStop tion
3: Deceleration stop for actual position
4: Immediate stop for actual position
PosiSwLimit Positive Soft- LREAL Long reals Set the software limit in the positive di-
ware Limit rection.
NegaSwLimit Negative Soft- LREAL Long reals Set the software limit in the negative di-
ware Limit rection.
FollowingErrorO- Following Error LREAL Non-negative long reals Set the excessive following error check
verVal Over Value value.
Set 0 to disable the excessive following
error check.
Parameter
Member Data type Valid range Description
name
FollowingError- Following Error LREAL Non-negative long reals Set the following error warning check
WarningVal Warning Value value.
Set 0 to disable the following error
warning check.
(Reserved) (Reserved AR- --- ---
area) RAY[0..31]
OF BYTE
MC_WriteAxisParameter
position count settings in the axis parameters.
Each member is described in the following table.
Parameter
Member Data type Valid range Description
name
CountMode Count Mode _eMC_CO 0: _mcCountModeLinear Set the count mode for the position.
UNT_MOD 1: _mcCountModeRotary 0: Linear Mode (finite length)
E 1: Rotary Mode (infinite length)
ModuloMax- Modulo Maxi- LREAL Long reals Set the modulo maximum position when
5
PosVal mum Position the Count Mode is set to Rotary Mode.
Setting Value
Function
ModuloMin- Modulo Mini- LREAL Long reals Set the modulo minimum position when
PosVal mum Position the Count Mode is set to Rotary Mode.
Setting Value
(Reserved) (Reserved area) AR- --- ---
RAY[0..31]
OF BYTE
Parameter
Member Data type Valid range Description
name
Mode Homing Method _eMC_HO 0: _mcHomeSwTurnHo- Set the homing operation.
MING_MO meSwOff 0: Proximity reverse turn/home proximi-
DE 1: _mcHomeSwTurnHo- ty input OFF
meSwOn 1: Proximity reverse turn/home proximi-
4: _mcHomeSwOff ty input ON
5: _mcHomeSwOn 4: Home proximity input OFF
8: _mcLimitInputOff 5: Home proximity input ON
9: _mcHomeSwTurnHome- 8: Limit input OFF
Mask 9: Proximity reverse turn/home input
11: _mcLimitInputOnly mask distance
12: _mcHomeSwTurnHol- 11: Limit inputs only
dingTime 12: Proximity reverse turn/holding time
13: _mcNoHomeSwHol- 13: No home proximity input/holding
dingHomeInput home input
14: _mcHomePreset 14: Zero position preset
Parameter
Member Data type Valid range Description
name
HomeInputSignal Home Input _eMC_HO 0: _mcZPhase Select the input to use for the home in-
Signal ME_INPUT 1: _mcExternalSignal put signal.
0: Use Z-phase input as home
1: Use external home input
StartDirection Homing Start _eMC_DI- 0: _mcPositiveDirection Set the start direction for when homing
Direction RECTION 2: _mcNegativeDirection is started.
0: Positive direction
2: Negative direction
HomeInputDetec- Home Input De- _eMC_DI- 0: _mcPositiveDirection Set the home input detection direction
tionDirection tection Direc- RECTION 2: _mcNegativeDirection for homing.
tion 0: Positive direction
2: Negative direction
PosiLimitInput- Operation Se- _eMC_LIM- 0: _mcErrorStop Set the stopping method when the pos-
Mode lection at Posi- IT_RE- 1: _mcRevImmediateStop itive limit input turns ON during homing.
tive Limit Input VERSE_M 2: _mcRevDeceleration- 0: No reverse turn/minor fault stop
ODE Stop (Stop according to Limit Input Stop
Method parameter.)
1: Reverse turn/immediate stop
2: Reverse turn/deceleration stop
NegaLimitInput- Operation Se- _eMC_LIM- 0: _mcErrorStop Set the stopping method when the neg-
Mode lection at Nega- IT_RE- 1: _mcRevImmediateStop ative limit input turns ON during hom-
tive Limit Input VERSE_M 2: _mcRevDeceleration- ing.
ODE Stop 0: No reverse turn/minor fault stop
(Stop according to Limit Input Stop
Method parameter.)
1: Reverse turn/immediate stop
2: Reverse turn/deceleration stop
Vel Homing Veloci- LREAL Positive long reals Set the homing velocity.
ty
ApproachVel Homing Ap- LREAL Positive long reals Set the velocity to use after the home
proach Velocity proximity input turns ON.
Acc Homing Accel- LREAL Non-negative long reals Set the acceleration rate for homing.
eration If the homing acceleration is set to 0,
the homing velocity or other target ve-
locity is used without any acceleration.
Dec Homing Decel- LREAL Non-negative long reals Set the deceleration rate for homing.
eration If the homing deceleration is set to 0,
the homing approach velocity or other
target velocity is used without any de-
celeration.
Jerk Homing Jerk LREAL Non-negative long reals Set the jerk for homing.
Set 0 for no jerk.
HomeInputMask- Home Input LREAL Non-negative long reals Set the home input mask distance
Distance Mask Distance when you set the Homing Operation
Mode to the proximity reverse turn/
home input mask distance.
HomeOffset Home Offset LREAL Long reals Preset the actual position for the value
that is set after homing.
Parameter
Member Data type Valid range Description
name
HoldingTime Homing Hold- UINT 0 to 10,000 Set the holding time in milliseconds
ing Time when you set the Homing Operation
Mode to the proximity reverse turn/
holding time.
CompensationVal Homing Com- LREAL Long reals Set the homing compensation value
pensation Value that is applied after the home is de-
fined.
CompensationVel Homing Com- LREAL Positive long reals Set the velocity to use for homing com-
pensation Ve- pensation.
locity
(Reserved) (Reserved AR- --- ---
MC_WriteAxisParameter
area) RAY[0..31]
OF BYTE
Function
---: Cannot be read and written.
Axis Basic Settings Axis Number ---
Motion Control*1 ---
Axis Use ---
Axis Type ---
Control Function*2 ---
Input Device/Output Device ---
Unit Conversion Settings Unit of Display OK
Command Pulse Count Per Motor Rotation OK
Work Travel Distance Per Motor Rotation OK
Reducer Use*3 OK
MC_WriteAxisParameter
mum position. If Reducer Use of an axis for which to read a parameter is set to TRUE and the Count Mode
of the axis is Rotary Mode, the value obtained by subtracting the modulo minimum position from the modu-
lo maximum position is read as Work Travel Distance Per Rotation.
*5. If Axis Type of the axis specified for writing is an Encoder axis or a Virtual encoder axis, the axis parame-
ters are not written. Also, if Axis Type of the axis specified for reading is an Encoder axis or a Virtual
encoder axis, the default values of the axis parameters are read.
For the default values of the axis parameters, refer to the NJ/NX-series CPU Unit Motion Control User’s
Manual (Cat. No. W507).
*6. This parameter is enabled only for torque control.
*7. A CPU Unit with unit version 1.10 or later and Sysmac Studio version 1.12 or higher are required to use this 5
parameter.
Function
Timing Charts
A timing chart for execution of the MC_WriteAxisParameter (Write Axis Parameters) instruction is
shown below.
Execute
Done
Busy
CommandAborted
Error
ErrorID 16#0000
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axis parameters are
not written. The values before the instruction was executed will be held.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code). De-
pending on ErrorID (Error Code), attached information is output to ErrorParameterCode (Parameter
Detail Code).
Execute
Done
Busy
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
MC_ReadAxisParameter
The MC_ReadAxisParameter instruction reads axis parameters in the MC Function Module.
FB/
Instruction Name Graphic expression ST expression
FUN
MC_ReadAxis- Read Axis FB MC_ReadAxisParameter_instance MC_ReadAxisParameter (
Parameter Parameters MC_ReadAxisParameter Axis :=parameter,
Axis Axis AxisParameter :=parameter,
AxisParameter AxisParameter Execute :=parameter,
Execute Done Done =>parameter,
MC_ReadAxisParameter
Busy
Busy =>parameter,
CommandAborted
CommandAborted =>parameter,
Error
ErrorID Error =>parameter,
ErrorID =>parameter
);
Version Information
A CPU Unit with unit version 1.08 or later and Sysmac Studio version 1.09 or higher are re-
quired to use this instruction. 5
Variables
Variables
Input Variables
Name Meaning Data type Valid range Default Description
Execute Execute BOOL TRUE or FALSE The instruction is executed when the value
FALSE of this variable changes to TRUE.
Output Variables
Data Valid
Name Meaning Description
type range
Done Done BOOL TRUE or TRUE when the instruction is completed.
FALSE
Busy Executing BOOL TRUE or TRUE when the instruction is acknowledged.
FALSE
CommandAborted Command BOOL TRUE or TRUE when the instruction is aborted.
Aborted FALSE
Error Error BOOL TRUE or TRUE while there is an error.
FALSE
ErrorID Error Code WORD *1 Contains the error code when an error occurs.
A value of 16#0000 indicates normal execution.
*1. The upper four digits of the event code give the error code for ErrorID. Refer to the NJ/NX-series Troubleshooting
Manual (Cat. No. W503) for the event codes.
In-Out Variables
Valid
Name Meaning Data type Description
range
Axis Axis _sAXIS_REF --- Specify the axis for which to read the parameters.
*1
_sAXIS_PARAM
Parameter
Member Data type *1 Function
name
UnitConversion Unit Conver- _sAXIS_UNIT_CONVERSION_SETTINGS The values that are read for the unit
sion Settings conversion settings are stored in the
member variables.
Operation Operation Set- _sAXIS_OPERATION_SETTINGS The values that are read for the op-
tings eration settings are stored in the
member variables.
OtherOperation Other Opera- _sAXIS_OTHER_OPERATION_SETTINGS The values that are read for the oth-
tion Settings er operation settings are stored in
the member variables.
Limit Limit Settings _sAXIS_LIMIT_SETTINGS The values that are read for the limit
settings are stored in the member
variables.
PosCount Position Count _sAXIS_POSITION_COUNT_SETTINGS The values that are read for the posi-
Settings tion count settings are stored in the
member variables.
Homing Homing Set- _sAXIS_HOMING_SETTINGS The values that are read for the
tings homing settings are stored in the
member variables.
Parameter
Member Data type *1 Function
name
(Reserved) (Reserved ARRAY[0..255] OF BYTE ---
area)
*1. Refer to _sAXIS_PARAM on page 5 - 52 for details on the data types.
Function
• When Execute changes to TRUE, the MC_ReadAxisParameter instruction reads the axis parame-
ters of the axis specified with Axis and outputs them to AxisParameter (Axis Parameters).
• You can use this instruction to read the axis parameters regardless of the status of the
Cfg.AxEnable (Axis Use) axis variable.
MC_ReadAxisParameter
Precautions for Correct Use
• This instruction reads the values of the axis parameters that are valid when the instruction is
executed, and not the values that are saved in the non-volatile memory of the CPU Unit.
For example, if you write the axis parameters with the MC_Write (Write MC Setting) instruc-
tion, the written axis parameters are read.
• If you use this instruction together with the MC_WriteAxisParameter (Write Axis Parameters)
instruction, check Done from the MC_WriteAxisParameter (Write Axis Parameters) before
you read the axis parameters. 5
• The values of the axis parameters are output to AxisParameter (Axis Parameters) only at the
completion of instruction execution. They are not written to AxisParameter (Axis Parameters)
after that. Therefore, if you write values to AxisParameter (Axis Parameters), the previous
Function
values are overwritten.
Timing Charts
A timing chart for execution of the MC_ReadAxisParameter (Read Axis Parameters) instruction is
shown below.
Execute
Done
Busy
CommandAborted
Error
ErrorID 16#0000
Errors
If an error occurs during instruction execution, Error will change to TRUE and the axis parameters are
not read.
You can find out the cause of the error by referring to the value output by ErrorID (Error Code).
Execute
Done
Busy
CommandAborted
Error
Error Codes
Refer to the NJ/NX-series Troubleshooting Manual (Cat. No. W503) for instruction errors.
• Only one instruction is buffered for each single axis. If you attempt to perform multi-execution
for two or more instructions, an instruction error will occur.
• Up to seven instructions can be buffered at the same time for a single axes group. If you at-
tempt to perform multi-execution for eight or more instructions, an instruction error will occur.
• Multi-execution of instructions cannot be used to execute an axes group command instruction
for an axis that is operating for an axis command instruction. Multi-execution of instructions
cannot be used to execute an axis command instruction for an axis that is operating for an
axes group command instruction. An instruction error will occur if these rules are broken.
Each letter code in the table shows the status to which the axis or axes group changes.
Axis Status
A : Disabled
B : Standstill
C : Discrete
D : Continuous
E : Synchronized
F : Homing
G : Stopping
H : ErrorStop
I : Coordinated
a : Disabled
b : Standby
c : Moving
d : Stopping
e : ErrorStop
Standstill
Discrete Motion
Continuous Motion
Synchronized Motion
Homing
Deceleration Stopping
Coordinated Motion
Standstill
Moving
Deceleration Stopping
Axis Disabled
Standstill
Discrete Motion
Continuous Motion
Synchronized Motion
Homing
Deceleration Stopping
Coordinated Motion
Standstill
Moving
Deceleration Stopping
MC_AxesObserve A B C D E F G H I a b c d e
MC_SyncMoveVelocity H D D D D H G H I a e e e e
MC_SyncMoveVelocity*6 H H H H --- H G H --- --- --- --- --- ---
MC_SyncMoveAbsolute H C C C C H G H I a e e e e
MC_Reset A B C D E F G *11 I a b c d e
MC_ChangeAxisUse A --- --- --- --- --- --- --- --- --- --- --- --- ---
(Change unused axis to
used axis)
MC_ChangeAxisUse --- *12 H H H H H H H a b c d e
(Change used axis to un-
used axis)
MC_DigitalCamSwitch A B C D E F G H I a b c d e
MC_TimeStampToPos A B C D E F G H I a b c d e
MC_PeriodicSyncVariables A B C D E F G H I a b c d e
MC_SyncOffsetPosition H H H H E H G H I a e e e e
MC_OffsetPosition H H H H E H G H I a e e e e
*1. If Execute for the MC_Stop instruction is FALSE, the status will change to Standstill (B). If the value of
this variable is TRUE, the status will change to Deceleration Stopping (G).
*2. The status will change to Standstill (b) or Deceleration Stopping (d) depending on the maximum deceler-
ation rate.
*3. If a target position is set, the status will change to Discrete Motion (C). Otherwise, the status will change
to Continuous Motion (D).
*4. If the MC_MoveZeroPosition instruction is being executed, an error will occur and the status will change
to Error Deceleration Stopping (H).
*5. If the MC_TorqueControl instruction or the MC_SyncMoveVelocity instruction is being executed, an error
will occur and the status will change to Error Deceleration Stopping (H).
*6. The axis function control is set to 1: single-axis control/motion profile command control (command
position output only) enabled.
*7. If the MC_CamIn instruction is not being executed, an error will occur and the status will change to Error
Deceleration Stopping (H).
*8. If the MC_GearIn instruction or the MC_GearInPos instruction is not being executed, an error will occur
and the status will change to Error Deceleration Stopping (H).
*9. If the MC_CombineAxes instruction is being executed, an error will occur and the status will change to
Error Deceleration Stopping (H).
For an NX-series CPU Unit, a variable name that starts with _MC_AX[*] may start with
_MC1_AX[*] or _MC2_AX[*] instead.
A
Axes Group Instructions
Axes group status be-
Standstill
Discrete Motion
Continuous Motion
Synchronized Motion
Homing
Deceleration Stopping
Coordinated Motion
Standstill
Moving
Deceleration Stopping
MC_GroupEnable I I C D E F G H I b b c d e*1
MC_GroupDisable A B C D E F G H *2 a a a a e
MC_MoveLinear A B C D E F G H I e c c d e
MC_MoveLinearAblolute A B C D E F G H I e c c d e
MC_MoveLinearRelative A B C D E F G H I e c c d e
MC_MoveCircular2D A B C D E F G H I e c c d e
MC_GroupStop A B C D E F G H I e d d d e
MC_GroupImmediateStop A B C D E F G H I e e e e e
MC_GroupSetOverride A B C D E F G H I a b c d e
MC_GroupReadPosition A B C D E F G H I a b c d e
MC_ChangeAxesInGroup A B C D E F G H I a*3 e e e e*4
Axis Disabled
Standstill
Discrete Motion
Continuous Motion
Synchronized Motion
Homing
Deceleration Stopping
Coordinated Motion
Standstill
Moving
Deceleration Stopping
MC_GroupSyncMoveAb- A B C D E F G H I e c c d e
solute
MC_GroupReset A B C D E F G H I a b c d *5
The color of the cell in the table tells you if multi-execution of the instruction is supported.
Each letter code in the table shows the status to which the axis changes.
Axis Status
A : Disabled
Version
New/
Type Instruction Name Sysmac Page
Changed CPU Unit
Studio
Version
New/
Type Instruction Name Sysmac Page
Changed CPU Unit
Studio
MC_HomeWithPara-
Home with Parameters New Ver.1.03 Ver.1.04 page 3 - 40
meter
MC_SyncMoveAbso- Cyclic Synchronous Ab- page
New Ver.1.03 Ver.1.04
lute solute Positioning 3 - 403
page
MC_ChangeAxisUse Change Axis Use New Ver.1.04 Ver.1.05
3 - 414
Enable Digital Cam New Ver.1.06 Ver.1.07 page
MC_DigitalCamSwitch
Switch Changed Ver.1.09 Ver.1.10 3 - 420
Time Stamp to Axis Po- page
MC_TimeStampToPos New Ver.1.06 Ver.1.07
sition Calculation 3 - 440
Periodic Axis Variable
MC_PeriodicSyncVaria- page
Synchronization between New Ver.1.10 Ver.1.13
bles 3 - 452
Tasks
Cyclic Synchronous Po-
page
MC_SyncOffsetPosition sition Offset Compensa- New Ver.1.10 Ver.1.12
3 - 460
tion
MC_OffsetPosition Position Offset Compen- New Ver.1.21/ Ver.1.28 page
sation Ver.1.32 3 - 470
Index
A L
Absolute Linear Interpolation.........................................4 - 39 Linear Interpolation................................... 4 - 10,4 - 39,4 - 42
Absolute Positioning...................................................... 3 - 51
Axes Group Cyclic Synchronous Absolute Positioning. 4 - 98 M
Axes Group Immediate Stop......................................... 4 - 81
MC_AbortTrigger (Disable External Latch)..................3 - 383
C MC_AxesObserve (Monitor Axis Following Error)....... 3 - 387
MC_CamIn (Start Cam Operation).............................. 3 - 171
Cam Monitor................................................................ 3 - 234 MC_CamMonitor (Cam Monitor)................................. 3 - 234
Change Axes in Group.................................................. 4 - 94 MC_CamOut (End Cam Operation)............................ 3 - 229
Change Axis Use.........................................................3 - 414 MC_ChangeAxesInGroup (Change Axes in Group)......4 - 94
Circular 2D Interpolation................................................4 - 45 MC_ChangeAxisUse (Change Axis Use).................... 3 - 414
circular interpolation...................................................... 4 - 45 MC_CombineAxes (Combine Axes)............................3 - 316
Combine Axes............................................................. 3 - 316 MC_DigitalCamSwitch (Enable Digital Cam Switch)... 3 - 420
Cyclic Synchronous Absolute Positioning................... 3 - 403 MC_GearIn (Start Gear Operation)............................. 3 - 243
Cyclic Synchronous Position Offset Compensation.... 3 - 460 MC_GearInPos (Positioning Gear Operation)............. 3 - 264
Cyclic Synchronous Velocity Control........................... 3 - 393 MC_GearOut (End Gear Operation)............................3 - 287
MC_GenerateCamTable (Generate Cam Table)........... 5 - 18
D MC_GroupDisable (Disable Axes Group)........................4 - 6
MC_GroupEnable (Enable Axes Group)......................... 4 - 2
Disable Axes Group.........................................................4 - 6 MC_GroupImmediateStop (Axes Group Immediate Stop).....
Disable External Latch.................................................3 - 383 ................................................................................... 4 - 81
MC_GroupReadPosition (Read Axes Group Position)..4 - 90
E MC_GroupReset (Group Reset)..................................4 - 104
MC_GroupSetOverride (Set Group Overrides)............. 4 - 85
electronic gear............................................................. 3 - 264 MC_GroupStop (Group Stop)........................................4 - 73
Enable Axes Group......................................................... 4 - 2 MC_GroupSyncMoveAbsolute (Axes Group Cyclic Synchro-
Enable Digital Cam Switch.......................................... 3 - 420 nous Absolute Positioning)........................................ 4 - 98
Enable External Latch................................................. 3 - 361 MC_Home (Home)........................................................ 3 - 17
End Cam Operation.....................................................3 - 229 MC_HomeWithParameter (Home with Parameters)..... 3 - 40
End Gear Operation.................................................... 3 - 287 MC_ImmediateStop (Immediate Stop)........................ 3 - 147
Error Reset...................................................... 3 - 410,4 - 104 MC_Move (Positioning)................................................. 3 - 46
Execution ID.................................................................. 2 - 12 MC_MoveAbsolute (Absolute Positioning).................... 3 - 51
MC_MoveCircular2D (Circular 2D Interpolation)........... 4 - 45
G MC_MoveFeed (Interrupt Feeding)............................. 3 - 109
MC_MoveJog (Jog)......................................................... 3 - 8
gear operation............................................................. 3 - 264
MC_MoveLinear (Linear Interpolation).......................... 4 - 10
Generate Cam Table..................................................... 5 - 18
MC_MoveLinearAbsolute (Absolute Linear Interpolation)......
Group Reset................................................................ 4 - 104
................................................................................... 4 - 39
Group Stop.................................................................... 4 - 73
MC_MoveLinearRelative (Relative Linear Interpolation)........
................................................................................... 4 - 42
H MC_MoveLink (Synchronous Positioning)...................3 - 292
High-speed Home........................................................3 - 102 MC_MoveRelative (Relative Positioning)...................... 3 - 78
Home............................................................................. 3 - 17 MC_MoveVelocity (Velocity Control)............................. 3 - 86
Home with Parameters.................................................. 3 - 40 MC_MoveZeroPosition (High-speed Home)................3 - 102
MC_OffsetPosition (Position Offset Compensation) ...3 - 470
I MC_PeriodicSyncVariables (Periodic Axis Variable Synchro-
nization between Tasks)...........................................3 - 452
Immediate Stop........................................................... 3 - 147 MC_Phasing (Shift Master Axis Phase)...................... 3 - 328
Interrupt Feeding......................................................... 3 - 109 MC_Power (Power Servo)...............................................3 - 3
MC_ReadAxisParameter (Read Axis Parameters)....... 5 - 63
J MC_Reset (Reset Axis Error)...................................... 3 - 410
MC_ResetFollowingError (Reset Following Error Counter)....
Jog...................................................................................3 - 8 ................................................................................. 3 - 164
P
Periodic Axis Variable Synchronization between Tasks..........
................................................................................. 3 - 452
phase shift................................................................... 3 - 328
Position Offset Compensation..................................... 3 - 470
Positioning ................................... 3 - 46,3 - 51,3 - 78,3 - 109
Positioning Gear Operation......................................... 3 - 264
Power Servo.................................................................... 3 - 3
Production Information........................................................25
R I
Read Axes Group Position............................................ 4 - 90
Read Axis Parameters...................................................5 - 63
Relative Linear Interpolation..........................................4 - 42
Relative Positioning....................................................... 3 - 78
Reset Axis Error.......................................................... 3 - 410
Reset Following Error Counter.................................... 3 - 164
S
Save Cam Table.............................................................. 5 - 8
Set Cam Table Properties................................................5 - 2
Set Group Overrides......................................................4 - 85
Set Override Factors......................................... 3 - 158,4 - 85
Set Position................................................................. 3 - 151
Set Torque Limit...........................................................3 - 348
Shift Master Axis Phase.............................................. 3 - 328
Start Cam Operation....................................................3 - 171
Start Gear Operation................................................... 3 - 243
Stop................................................................... 3 - 138,4 - 73
Synchronous Positioning............................................. 3 - 292
T
Time Stamp to Axis Position Calculation..................... 3 - 440
Torque Control............................................................. 3 - 335
OMRON ASIA PACIFIC PTE. LTD. OMRON (CHINA) CO., LTD. © OMRON Corporation 2011-2019 All Rights Reserved.
No. 438A Alexandra Road # 05-05/08 (Lobby 2), Room 2211, Bank of China Tower, In the interest of product improvement,
Alexandra Technopark, 200 Yin Cheng Zhong Road, specifications are subject to change without notice.
Singapore 119967 PuDong New Area, Shanghai, 200120, China
Tel: (65) 6835-3011/Fax: (65) 6835-2711 Tel: (86) 21-5037-2222/Fax: (86) 21-5037-2200 Cat. No. W508-E1-20 0419